@lakutata/nats 2.3.0 → 3.0.0-beta.1

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 (121) hide show
  1. package/LICENSE +23 -0
  2. package/README.md +288 -25
  3. package/dist/cjs/codecs/JSONCodec.d.ts +32 -0
  4. package/dist/cjs/codecs/JSONCodec.js +44 -0
  5. package/dist/cjs/codecs/MessagePackCodec.d.ts +22 -0
  6. package/dist/cjs/codecs/MessagePackCodec.js +35 -0
  7. package/dist/cjs/components/NATS.d.ts +376 -0
  8. package/dist/cjs/components/NATS.js +772 -0
  9. package/dist/cjs/entrypoints/NatsServiceEntrypoint.d.ts +102 -0
  10. package/dist/cjs/entrypoints/NatsServiceEntrypoint.js +127 -0
  11. package/dist/cjs/exceptions/NatsBadRequestException.d.ts +11 -0
  12. package/dist/cjs/exceptions/NatsBadRequestException.js +18 -0
  13. package/dist/cjs/exceptions/NatsBulkException.d.ts +19 -0
  14. package/dist/cjs/exceptions/NatsBulkException.js +26 -0
  15. package/dist/cjs/exceptions/NatsForbiddenException.d.ts +11 -0
  16. package/dist/cjs/exceptions/NatsForbiddenException.js +18 -0
  17. package/dist/cjs/exceptions/NatsInternalServerException.d.ts +12 -0
  18. package/dist/cjs/exceptions/NatsInternalServerException.js +19 -0
  19. package/dist/cjs/exceptions/NatsNoRespondersAvailableException.d.ts +12 -0
  20. package/dist/cjs/exceptions/NatsNoRespondersAvailableException.js +19 -0
  21. package/dist/cjs/exceptions/NatsNotFoundException.d.ts +11 -0
  22. package/dist/cjs/exceptions/NatsNotFoundException.js +18 -0
  23. package/dist/cjs/exceptions/NatsRequestTimeoutException.d.ts +11 -0
  24. package/dist/cjs/exceptions/NatsRequestTimeoutException.js +18 -0
  25. package/dist/cjs/exports/Nats.d.ts +18 -0
  26. package/dist/cjs/exports/Nats.js +39 -0
  27. package/dist/cjs/interfaces/NatsClientOptions.d.ts +106 -0
  28. package/dist/{lib → cjs/lib}/ServiceEventCodec.d.ts +0 -1
  29. package/dist/{lib → cjs/lib}/ServiceEventCodec.js +19 -9
  30. package/dist/cjs/package.json +1 -0
  31. package/dist/cjs/providers/ServiceProxy.d.ts +210 -0
  32. package/dist/cjs/providers/ServiceProxy.js +274 -0
  33. package/dist/cjs/types/SubscribeOptions.d.ts +33 -0
  34. package/dist/esm/codecs/JSONCodec.js +41 -0
  35. package/dist/esm/codecs/MessagePackCodec.js +32 -0
  36. package/dist/esm/components/NATS.js +767 -0
  37. package/dist/esm/entrypoints/NatsServiceEntrypoint.js +123 -0
  38. package/dist/esm/exceptions/NatsBadRequestException.js +14 -0
  39. package/dist/esm/exceptions/NatsBulkException.js +22 -0
  40. package/dist/esm/exceptions/NatsForbiddenException.js +14 -0
  41. package/dist/esm/exceptions/NatsInternalServerException.js +15 -0
  42. package/dist/esm/exceptions/NatsNoRespondersAvailableException.js +15 -0
  43. package/dist/esm/exceptions/NatsNotFoundException.js +14 -0
  44. package/dist/esm/exceptions/NatsRequestTimeoutException.js +14 -0
  45. package/dist/esm/exports/Nats.js +15 -0
  46. package/dist/esm/interfaces/NatsClientOptions.js +1 -0
  47. package/dist/esm/lib/ServiceEventCodec.js +21 -0
  48. package/dist/esm/providers/ServiceProxy.js +270 -0
  49. package/dist/esm/types/SubscribeOptions.js +1 -0
  50. package/dist/types/codecs/JSONCodec.d.ts +32 -0
  51. package/dist/types/codecs/MessagePackCodec.d.ts +22 -0
  52. package/dist/types/components/NATS.d.ts +376 -0
  53. package/dist/types/entrypoints/NatsServiceEntrypoint.d.ts +102 -0
  54. package/dist/types/exceptions/NatsBadRequestException.d.ts +11 -0
  55. package/dist/types/exceptions/NatsBulkException.d.ts +19 -0
  56. package/dist/types/exceptions/NatsForbiddenException.d.ts +11 -0
  57. package/dist/types/exceptions/NatsInternalServerException.d.ts +12 -0
  58. package/dist/types/exceptions/NatsNoRespondersAvailableException.d.ts +12 -0
  59. package/dist/types/exceptions/NatsNotFoundException.d.ts +11 -0
  60. package/dist/types/exceptions/NatsRequestTimeoutException.d.ts +11 -0
  61. package/dist/types/exports/Nats.d.ts +18 -0
  62. package/dist/types/interfaces/NatsClientOptions.d.ts +106 -0
  63. package/dist/types/lib/ServiceEventCodec.d.ts +9 -0
  64. package/dist/types/providers/ServiceProxy.d.ts +210 -0
  65. package/dist/types/types/SubscribeOptions.d.ts +33 -0
  66. package/package.json +42 -33
  67. package/CHANGELOG.md +0 -288
  68. package/dist/CommonExports.d.ts +0 -19
  69. package/dist/CommonExports.d.ts.map +0 -1
  70. package/dist/CommonExports.js +0 -35
  71. package/dist/codecs/JSONCodec.d.ts +0 -3
  72. package/dist/codecs/JSONCodec.d.ts.map +0 -1
  73. package/dist/codecs/JSONCodec.js +0 -15
  74. package/dist/codecs/MessagePackCodec.d.ts +0 -3
  75. package/dist/codecs/MessagePackCodec.d.ts.map +0 -1
  76. package/dist/codecs/MessagePackCodec.js +0 -16
  77. package/dist/components/NATS.d.ts +0 -252
  78. package/dist/components/NATS.d.ts.map +0 -1
  79. package/dist/components/NATS.js +0 -564
  80. package/dist/entrypoints/SetupNatsServiceEntrypoint.d.ts +0 -8
  81. package/dist/entrypoints/SetupNatsServiceEntrypoint.d.ts.map +0 -1
  82. package/dist/entrypoints/SetupNatsServiceEntrypoint.js +0 -41
  83. package/dist/exceptions/NatsBadRequestException.d.ts +0 -7
  84. package/dist/exceptions/NatsBadRequestException.d.ts.map +0 -1
  85. package/dist/exceptions/NatsBadRequestException.js +0 -13
  86. package/dist/exceptions/NatsBulkException.d.ts +0 -11
  87. package/dist/exceptions/NatsBulkException.d.ts.map +0 -1
  88. package/dist/exceptions/NatsBulkException.js +0 -17
  89. package/dist/exceptions/NatsForbiddenException.d.ts +0 -7
  90. package/dist/exceptions/NatsForbiddenException.d.ts.map +0 -1
  91. package/dist/exceptions/NatsForbiddenException.js +0 -13
  92. package/dist/exceptions/NatsInternalServerException.d.ts +0 -7
  93. package/dist/exceptions/NatsInternalServerException.d.ts.map +0 -1
  94. package/dist/exceptions/NatsInternalServerException.js +0 -13
  95. package/dist/exceptions/NatsNoRespondersAvailableException.d.ts +0 -7
  96. package/dist/exceptions/NatsNoRespondersAvailableException.d.ts.map +0 -1
  97. package/dist/exceptions/NatsNoRespondersAvailableException.js +0 -13
  98. package/dist/exceptions/NatsNotFoundException.d.ts +0 -7
  99. package/dist/exceptions/NatsNotFoundException.d.ts.map +0 -1
  100. package/dist/exceptions/NatsNotFoundException.js +0 -13
  101. package/dist/exceptions/NatsRequestTimeoutException.d.ts +0 -7
  102. package/dist/exceptions/NatsRequestTimeoutException.d.ts.map +0 -1
  103. package/dist/exceptions/NatsRequestTimeoutException.js +0 -13
  104. package/dist/exceptions/ServiceInvokeException.d.ts +0 -6
  105. package/dist/exceptions/ServiceInvokeException.d.ts.map +0 -1
  106. package/dist/exceptions/ServiceInvokeException.js +0 -11
  107. package/dist/interfaces/NatsClientOptions.d.ts +0 -26
  108. package/dist/interfaces/NatsClientOptions.d.ts.map +0 -1
  109. package/dist/lib/ServiceEventCodec.d.ts.map +0 -1
  110. package/dist/lib/ServiceResponseCodec.d.ts +0 -22
  111. package/dist/lib/ServiceResponseCodec.d.ts.map +0 -1
  112. package/dist/lib/ServiceResponseCodec.js +0 -50
  113. package/dist/providers/ServiceProxy.d.ts +0 -85
  114. package/dist/providers/ServiceProxy.d.ts.map +0 -1
  115. package/dist/providers/ServiceProxy.js +0 -124
  116. package/dist/types/SubscribeOptions.d.ts +0 -12
  117. package/dist/types/SubscribeOptions.d.ts.map +0 -1
  118. package/docs/large-payload-design.md +0 -199
  119. package/tsconfig.json +0 -8
  120. /package/dist/{interfaces → cjs/interfaces}/NatsClientOptions.js +0 -0
  121. /package/dist/{types → cjs/types}/SubscribeOptions.js +0 -0
@@ -1,7 +0,0 @@
1
- import { Exception } from 'lakutata';
2
- export declare class NatsForbiddenException extends Exception {
3
- errno: string | number;
4
- message: string;
5
- statusCode: number;
6
- }
7
- //# sourceMappingURL=NatsForbiddenException.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NatsForbiddenException.d.ts","sourceRoot":"","sources":["../../src/exceptions/NatsForbiddenException.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,UAAU,CAAA;AAElC,qBAAa,sBAAuB,SAAQ,SAAS;IAC1C,KAAK,EAAE,MAAM,GAAG,MAAM,CAAqB;IAC3C,OAAO,EAAE,MAAM,CAAc;IAC7B,UAAU,EAAE,MAAM,CAAM;CAClC"}
@@ -1,13 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.NatsForbiddenException = void 0;
4
- const lakutata_1 = require("lakutata");
5
- class NatsForbiddenException extends lakutata_1.Exception {
6
- constructor() {
7
- super(...arguments);
8
- this.errno = 'E_NATS_FORBIDDEN';
9
- this.message = 'Forbidden';
10
- this.statusCode = 403;
11
- }
12
- }
13
- exports.NatsForbiddenException = NatsForbiddenException;
@@ -1,7 +0,0 @@
1
- import { Exception } from 'lakutata';
2
- export declare class NatsInternalServerException extends Exception {
3
- errno: string | number;
4
- message: string;
5
- statusCode: number;
6
- }
7
- //# sourceMappingURL=NatsInternalServerException.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NatsInternalServerException.d.ts","sourceRoot":"","sources":["../../src/exceptions/NatsInternalServerException.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,UAAU,CAAA;AAElC,qBAAa,2BAA4B,SAAQ,SAAS;IAC/C,KAAK,EAAE,MAAM,GAAG,MAAM,CAA2B;IACjD,OAAO,EAAE,MAAM,CAA0B;IACzC,UAAU,EAAE,MAAM,CAAM;CAClC"}
@@ -1,13 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.NatsInternalServerException = void 0;
4
- const lakutata_1 = require("lakutata");
5
- class NatsInternalServerException extends lakutata_1.Exception {
6
- constructor() {
7
- super(...arguments);
8
- this.errno = 'E_NATS_INTERNAL_SERVER';
9
- this.message = 'Internal Server Error';
10
- this.statusCode = 500;
11
- }
12
- }
13
- exports.NatsInternalServerException = NatsInternalServerException;
@@ -1,7 +0,0 @@
1
- import { Exception } from 'lakutata';
2
- export declare class NatsNoRespondersAvailableException extends Exception {
3
- errno: string | number;
4
- message: string;
5
- statusCode: number;
6
- }
7
- //# sourceMappingURL=NatsNoRespondersAvailableException.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NatsNoRespondersAvailableException.d.ts","sourceRoot":"","sources":["../../src/exceptions/NatsNoRespondersAvailableException.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,UAAU,CAAA;AAElC,qBAAa,kCAAmC,SAAQ,SAAS;IACtD,KAAK,EAAE,MAAM,GAAG,MAAM,CAAmC;IACzD,OAAO,EAAE,MAAM,CAA4B;IAC3C,UAAU,EAAE,MAAM,CAAM;CAClC"}
@@ -1,13 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.NatsNoRespondersAvailableException = void 0;
4
- const lakutata_1 = require("lakutata");
5
- class NatsNoRespondersAvailableException extends lakutata_1.Exception {
6
- constructor() {
7
- super(...arguments);
8
- this.errno = 'E_NATS_NO_RESPONDERS_AVAILABLE';
9
- this.message = 'No Responders Available';
10
- this.statusCode = 503;
11
- }
12
- }
13
- exports.NatsNoRespondersAvailableException = NatsNoRespondersAvailableException;
@@ -1,7 +0,0 @@
1
- import { Exception } from 'lakutata';
2
- export declare class NatsNotFoundException extends Exception {
3
- errno: string | number;
4
- message: string;
5
- statusCode: number;
6
- }
7
- //# sourceMappingURL=NatsNotFoundException.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NatsNotFoundException.d.ts","sourceRoot":"","sources":["../../src/exceptions/NatsNotFoundException.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,UAAU,CAAA;AAElC,qBAAa,qBAAsB,SAAQ,SAAS;IACzC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAqB;IAC3C,OAAO,EAAE,MAAM,CAAsB;IACrC,UAAU,EAAE,MAAM,CAAM;CAClC"}
@@ -1,13 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.NatsNotFoundException = void 0;
4
- const lakutata_1 = require("lakutata");
5
- class NatsNotFoundException extends lakutata_1.Exception {
6
- constructor() {
7
- super(...arguments);
8
- this.errno = 'E_NATS_NOT_FOUND';
9
- this.message = 'Subject Not Found';
10
- this.statusCode = 404;
11
- }
12
- }
13
- exports.NatsNotFoundException = NatsNotFoundException;
@@ -1,7 +0,0 @@
1
- import { Exception } from 'lakutata';
2
- export declare class NatsRequestTimeoutException extends Exception {
3
- errno: string | number;
4
- message: string;
5
- statusCode: number;
6
- }
7
- //# sourceMappingURL=NatsRequestTimeoutException.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NatsRequestTimeoutException.d.ts","sourceRoot":"","sources":["../../src/exceptions/NatsRequestTimeoutException.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,UAAU,CAAA;AAElC,qBAAa,2BAA4B,SAAQ,SAAS;IAC/C,KAAK,EAAE,MAAM,GAAG,MAAM,CAA2B;IACjD,OAAO,EAAE,MAAM,CAAoB;IACnC,UAAU,EAAE,MAAM,CAAM;CAClC"}
@@ -1,13 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.NatsRequestTimeoutException = void 0;
4
- const lakutata_1 = require("lakutata");
5
- class NatsRequestTimeoutException extends lakutata_1.Exception {
6
- constructor() {
7
- super(...arguments);
8
- this.errno = 'E_NATS_REQUEST_TIMEOUT';
9
- this.message = 'Request Timeout';
10
- this.statusCode = 408;
11
- }
12
- }
13
- exports.NatsRequestTimeoutException = NatsRequestTimeoutException;
@@ -1,6 +0,0 @@
1
- import { Exception } from 'lakutata';
2
- export declare class ServiceInvokeException extends Exception {
3
- errno: string | number;
4
- service?: string;
5
- }
6
- //# sourceMappingURL=ServiceInvokeException.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ServiceInvokeException.d.ts","sourceRoot":"","sources":["../../src/exceptions/ServiceInvokeException.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,UAAU,CAAA;AAElC,qBAAa,sBAAuB,SAAQ,SAAS;IAC1C,KAAK,EAAE,MAAM,GAAG,MAAM,CAAqB;IAE3C,OAAO,CAAC,EAAC,MAAM,CAAA;CACzB"}
@@ -1,11 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ServiceInvokeException = void 0;
4
- const lakutata_1 = require("lakutata");
5
- class ServiceInvokeException extends lakutata_1.Exception {
6
- constructor() {
7
- super(...arguments);
8
- this.errno = 'E_SERVICE_INVOKE';
9
- }
10
- }
11
- exports.ServiceInvokeException = ServiceInvokeException;
@@ -1,26 +0,0 @@
1
- import { Codec } from 'nats';
2
- export interface NatsClientOptions {
3
- servers: string | string[];
4
- codec?: Codec<unknown>;
5
- timeout?: number;
6
- token?: string;
7
- user?: string;
8
- pass?: string;
9
- debug?: boolean;
10
- maxPingOut?: number;
11
- maxReconnectAttempts?: number;
12
- name?: string;
13
- noEcho?: boolean;
14
- noRandomize?: boolean;
15
- pingInterval?: number;
16
- reconnect?: boolean;
17
- /** 是否启用 bulk 大数据旁路(启动建第二条连接 + Object Store),默认 true */
18
- bulk?: boolean;
19
- /** bulk Object Store bucket 名,默认 lkt-bulk-${name} */
20
- bulkBucket?: string;
21
- /** bulk 对象 TTL(毫秒),默认 5 分钟 */
22
- bulkTTL?: number;
23
- /** bulk bucket 副本数,默认 1(中转数据用完即弃) */
24
- bulkReplicas?: number;
25
- }
26
- //# sourceMappingURL=NatsClientOptions.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NatsClientOptions.d.ts","sourceRoot":"","sources":["../../src/interfaces/NatsClientOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,MAAM,CAAA;AAE1B,MAAM,WAAW,iBAAiB;IAC9B,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IAC1B,KAAK,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;IACtB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,uDAAuD;IACvD,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,qDAAqD;IACrD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,8BAA8B;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,qCAAqC;IACrC,YAAY,CAAC,EAAE,MAAM,CAAA;CACxB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ServiceEventCodec.d.ts","sourceRoot":"","sources":["../../src/lib/ServiceEventCodec.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,CAAA;CACvB;AAED,qBAAa,iBAAiB;IAC1B,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;WAO9D,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,gBAAgB;WAMrC,MAAM,CAAC,SAAS,EAAE,gBAAgB,GAAG,GAAG,EAAE;WAI1C,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;CAG5E"}
@@ -1,22 +0,0 @@
1
- import { Exception } from 'lakutata';
2
- interface ServiceResponse {
3
- readonly success: boolean;
4
- readonly error: Error | Exception | null;
5
- readonly payload: any | null;
6
- }
7
- export declare class ServiceResponseCodec {
8
- /**
9
- * Encode service response
10
- * @param data
11
- * @param isError
12
- */
13
- static encode(data: any, isError: boolean): ServiceResponse;
14
- /**
15
- * Decode service response
16
- * @param response
17
- * @param serviceId
18
- */
19
- static decode(response: ServiceResponse, serviceId?: string): any;
20
- }
21
- export {};
22
- //# sourceMappingURL=ServiceResponseCodec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ServiceResponseCodec.d.ts","sourceRoot":"","sources":["../../src/lib/ServiceResponseCodec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,UAAU,CAAA;AAGlC,UAAU,eAAe;IACrB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,GAAG,IAAI,CAAA;IACxC,QAAQ,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI,CAAA;CAC/B;AAED,qBAAa,oBAAoB;IAC7B;;;;OAIG;WACW,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,GAAG,eAAe;IAYlE;;;;OAIG;WACW,MAAM,CAAC,QAAQ,EAAE,eAAe,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,GAAG;CAoB3E"}
@@ -1,50 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ServiceResponseCodec = void 0;
4
- const ServiceInvokeException_1 = require("../exceptions/ServiceInvokeException");
5
- class ServiceResponseCodec {
6
- /**
7
- * Encode service response
8
- * @param data
9
- * @param isError
10
- */
11
- static encode(data, isError) {
12
- return isError ? {
13
- success: false,
14
- error: data,
15
- payload: null
16
- } : {
17
- success: true,
18
- error: null,
19
- payload: data
20
- };
21
- }
22
- /**
23
- * Decode service response
24
- * @param response
25
- * @param serviceId
26
- */
27
- static decode(response, serviceId) {
28
- if (!response.success) {
29
- const remoteError = response.error;
30
- const serviceInvokeException = new ServiceInvokeException_1.ServiceInvokeException(remoteError?.message || 'Unknown Error');
31
- if (serviceId)
32
- serviceInvokeException.service = serviceId;
33
- // 安全拷贝远端错误的自有属性:逐个赋值并跳过只读属性(如 NatsError 的 name),
34
- // 避免 Object.assign 碰到只读属性时整体抛 TypeError。
35
- if (remoteError && typeof remoteError === 'object') {
36
- for (const key of Object.keys(remoteError)) {
37
- try {
38
- serviceInvokeException[key] = remoteError[key];
39
- }
40
- catch {
41
- // 只读属性,跳过
42
- }
43
- }
44
- }
45
- throw serviceInvokeException;
46
- }
47
- return response.payload;
48
- }
49
- }
50
- exports.ServiceResponseCodec = ServiceResponseCodec;
@@ -1,85 +0,0 @@
1
- import { ActionPattern, Application, Provider, ProviderOptionsBuilder } from 'lakutata';
2
- import { NATS } from '../components/NATS';
3
- /**
4
- * Build service proxy options
5
- */
6
- export type BuildServiceProxyOptions = {
7
- readonly natsComponentName: string;
8
- readonly serviceId: string;
9
- /** 仅对 NoResponders(对侧确定没处理)自动重试的次数,默认 3;超时/业务异常不重试 */
10
- readonly maxRetries?: number;
11
- /** 每次重试前等待的毫秒,默认 100 */
12
- readonly retryDelay?: number;
13
- };
14
- /**
15
- * Build service proxy
16
- * @param options
17
- * @constructor
18
- */
19
- export declare const BuildServiceProxy: ProviderOptionsBuilder<BuildServiceProxyOptions>;
20
- /**
21
- * Service proxy provider
22
- */
23
- export declare class ServiceProxy extends Provider {
24
- /**
25
- * Inject application instance
26
- * @protected
27
- */
28
- protected readonly app: Application;
29
- /**
30
- * NATS registered component name
31
- * @protected
32
- */
33
- protected readonly natsComponentName: string;
34
- /**
35
- * Service ID
36
- * @protected
37
- */
38
- protected readonly serviceId: string;
39
- /**
40
- * 仅对 NoResponders(对侧确定没处理)自动重试的次数;超时/业务异常不重试。
41
- * @protected
42
- */
43
- protected readonly maxRetries: number;
44
- /**
45
- * 每次重试前等待的毫秒。
46
- * @protected
47
- */
48
- protected readonly retryDelay: number;
49
- /**
50
- * NATS component instance
51
- * @protected
52
- */
53
- protected nats: NATS;
54
- /**
55
- * Initializer
56
- * @protected
57
- */
58
- protected init(): Promise<void>;
59
- /**
60
- * Invoke service registered method by pattern
61
- * @param input
62
- * @param timeout 默认 10 分钟。服务不存在/无响应者由 NoResponders 立即失败,此超时仅兜底"已被接收但处理太慢"的情况;已知的慢操作可显式传更长值。
63
- */
64
- invoke<T extends Record<string, any>>(input: ActionPattern<T>, timeout?: number): Promise<any>;
65
- /**
66
- * On service event
67
- * @param eventName
68
- * @param listener
69
- * @param onlySingleClientReceived
70
- */
71
- on(eventName: string, listener: (...args: any[]) => void, onlySingleClientReceived?: boolean): this;
72
- /**
73
- * Once service event
74
- * @param eventName
75
- * @param listener
76
- */
77
- once(eventName: string, listener: (...args: any[]) => void): this;
78
- /**
79
- * Off service events
80
- * @param eventName
81
- * @param listener
82
- */
83
- off(eventName: string, listener?: (...args: any[]) => void): this;
84
- }
85
- //# sourceMappingURL=ServiceProxy.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ServiceProxy.d.ts","sourceRoot":"","sources":["../../src/providers/ServiceProxy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAE,WAAW,EAAO,QAAQ,EAAE,sBAAsB,EAAC,MAAM,UAAU,CAAA;AAG1F,OAAO,EAAC,IAAI,EAAC,MAAM,oBAAoB,CAAA;AAIvC;;GAEG;AACH,MAAM,MAAM,wBAAwB,GAAG;IACnC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAA;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,sDAAsD;IACtD,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,wBAAwB;IACxB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAC/B,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,sBAAsB,CAAC,wBAAwB,CAQ9E,CAAA;AAED;;GAEG;AACH,qBACa,YAAa,SAAQ,QAAQ;IACtC;;;OAGG;IAEH,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAA;IAEnC;;;OAGG;IAEH,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAA;IAE5C;;;OAGG;IAEH,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAEpC;;;OAGG;IAEH,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAErC;;;OAGG;IAEH,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAErC;;;OAGG;IACH,SAAS,CAAC,IAAI,EAAE,IAAI,CAAA;IAEpB;;;OAGG;cACa,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrC;;;;OAIG;IACU,MAAM,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,OAAO,GAAE,MAAuB,GAAG,OAAO,CAAC,GAAG,CAAC;IAkB3H;;;;;OAKG;IACI,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,EAAE,wBAAwB,GAAE,OAAe,GAAG,IAAI;IAKjH;;;;OAIG;IACI,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI;IAKxE;;;;OAIG;IACI,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI;CAI3E"}
@@ -1,124 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- 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;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.ServiceProxy = exports.BuildServiceProxy = void 0;
13
- const lakutata_1 = require("lakutata");
14
- const di_1 = require("lakutata/decorator/di");
15
- const helper_1 = require("lakutata/helper");
16
- const ServiceResponseCodec_1 = require("../lib/ServiceResponseCodec");
17
- const NatsNoRespondersAvailableException_1 = require("../exceptions/NatsNoRespondersAvailableException");
18
- /**
19
- * Build service proxy
20
- * @param options
21
- * @constructor
22
- */
23
- const BuildServiceProxy = (options) => {
24
- return {
25
- class: ServiceProxy,
26
- natsComponentName: options.natsComponentName,
27
- serviceId: options.serviceId,
28
- maxRetries: options.maxRetries,
29
- retryDelay: options.retryDelay
30
- };
31
- };
32
- exports.BuildServiceProxy = BuildServiceProxy;
33
- /**
34
- * Service proxy provider
35
- */
36
- let ServiceProxy = class ServiceProxy extends lakutata_1.Provider {
37
- /**
38
- * Initializer
39
- * @protected
40
- */
41
- async init() {
42
- this.nats = await this.app.getObject(this.natsComponentName);
43
- }
44
- /**
45
- * Invoke service registered method by pattern
46
- * @param input
47
- * @param timeout 默认 10 分钟。服务不存在/无响应者由 NoResponders 立即失败,此超时仅兜底"已被接收但处理太慢"的情况;已知的慢操作可显式传更长值。
48
- */
49
- async invoke(input, timeout = 10 * 60 * 1000) {
50
- // 安全重试红线:只对 NoResponders 重试 —— NATS 明确告知"当时没人订阅",对侧【确定没处理】,
51
- // 重试到其他副本是首次处理,不会重复。超时(可能已处理但响应丢失)、业务异常(对侧已处理并返回)
52
- // 都【不】重试,直接抛给调用方,避免重复执行非幂等操作。
53
- for (let attempt = 0;; attempt++) {
54
- try {
55
- const response = await this.nats.request(this.serviceId, input, timeout);
56
- return ServiceResponseCodec_1.ServiceResponseCodec.decode(response, this.serviceId);
57
- }
58
- catch (e) {
59
- if (e instanceof NatsNoRespondersAvailableException_1.NatsNoRespondersAvailableException && attempt < this.maxRetries) {
60
- await (0, helper_1.Delay)(this.retryDelay);
61
- continue;
62
- }
63
- throw e;
64
- }
65
- }
66
- }
67
- /**
68
- * On service event
69
- * @param eventName
70
- * @param listener
71
- * @param onlySingleClientReceived
72
- */
73
- on(eventName, listener, onlySingleClientReceived = false) {
74
- this.nats.onServiceEvent(this.serviceId, eventName, listener, onlySingleClientReceived);
75
- return this;
76
- }
77
- /**
78
- * Once service event
79
- * @param eventName
80
- * @param listener
81
- */
82
- once(eventName, listener) {
83
- this.nats.onceServiceEvent(this.serviceId, eventName, listener);
84
- return this;
85
- }
86
- /**
87
- * Off service events
88
- * @param eventName
89
- * @param listener
90
- */
91
- off(eventName, listener) {
92
- this.nats.offServiceEvent(this.serviceId, eventName, listener);
93
- return this;
94
- }
95
- };
96
- exports.ServiceProxy = ServiceProxy;
97
- __decorate([
98
- (0, di_1.Inject)(lakutata_1.Application),
99
- __metadata("design:type", lakutata_1.Application
100
- /**
101
- * NATS registered component name
102
- * @protected
103
- */
104
- )
105
- ], ServiceProxy.prototype, "app", void 0);
106
- __decorate([
107
- (0, di_1.Configurable)(lakutata_1.DTO.String().required()),
108
- __metadata("design:type", String)
109
- ], ServiceProxy.prototype, "natsComponentName", void 0);
110
- __decorate([
111
- (0, di_1.Configurable)(lakutata_1.DTO.String().required()),
112
- __metadata("design:type", String)
113
- ], ServiceProxy.prototype, "serviceId", void 0);
114
- __decorate([
115
- (0, di_1.Configurable)(lakutata_1.DTO.Number().integer().optional().default(3)),
116
- __metadata("design:type", Number)
117
- ], ServiceProxy.prototype, "maxRetries", void 0);
118
- __decorate([
119
- (0, di_1.Configurable)(lakutata_1.DTO.Number().integer().optional().default(100)),
120
- __metadata("design:type", Number)
121
- ], ServiceProxy.prototype, "retryDelay", void 0);
122
- exports.ServiceProxy = ServiceProxy = __decorate([
123
- (0, di_1.Singleton)()
124
- ], ServiceProxy);
@@ -1,12 +0,0 @@
1
- export type SubscribeOptions = {
2
- queue?: string;
3
- max?: number;
4
- iterator?: boolean;
5
- /**
6
- * 当消息处理出错且该消息是请求(带 reply 地址)时,用此工厂生成回传给请求方的 payload。
7
- * subscribe 会用当前 codec 编码它并 respond;返回 undefined 则不回响应(请求方靠超时感知)。
8
- * 用于让上层(如服务入口)注入自己的错误响应协议,而不让通用 subscribe 依赖该协议。
9
- */
10
- errorResponse?: (error: any) => any;
11
- };
12
- //# sourceMappingURL=SubscribeOptions.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SubscribeOptions.d.ts","sourceRoot":"","sources":["../../src/types/SubscribeOptions.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;;;OAIG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,GAAG,CAAA;CACtC,CAAA"}