@data-loom/service-js 0.1.0-alpha.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 (59) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +8 -0
  3. package/dist/main/index.d.ts +10 -0
  4. package/dist/main/index.d.ts.map +1 -0
  5. package/dist/main/index.js +13 -0
  6. package/dist/main/index.js.map +1 -0
  7. package/dist/main/services/DataloomServiceBase.d.ts +13 -0
  8. package/dist/main/services/DataloomServiceBase.d.ts.map +1 -0
  9. package/dist/main/services/DataloomServiceBase.js +130 -0
  10. package/dist/main/services/DataloomServiceBase.js.map +1 -0
  11. package/dist/main/services/user-service/index.d.ts +9 -0
  12. package/dist/main/services/user-service/index.d.ts.map +1 -0
  13. package/dist/main/services/user-service/index.js +33 -0
  14. package/dist/main/services/user-service/index.js.map +1 -0
  15. package/dist/main/services/user-service/types.d.ts +17 -0
  16. package/dist/main/services/user-service/types.d.ts.map +1 -0
  17. package/dist/main/services/user-service/types.js +8 -0
  18. package/dist/main/services/user-service/types.js.map +1 -0
  19. package/dist/main/utils/logger.d.ts +16 -0
  20. package/dist/main/utils/logger.d.ts.map +1 -0
  21. package/dist/main/utils/logger.js +17 -0
  22. package/dist/main/utils/logger.js.map +1 -0
  23. package/dist/main/utils/trace-id.d.ts +45 -0
  24. package/dist/main/utils/trace-id.d.ts.map +1 -0
  25. package/dist/main/utils/trace-id.js +57 -0
  26. package/dist/main/utils/trace-id.js.map +1 -0
  27. package/dist/main/utils/types.d.ts +37 -0
  28. package/dist/main/utils/types.d.ts.map +1 -0
  29. package/dist/main/utils/types.js +9 -0
  30. package/dist/main/utils/types.js.map +1 -0
  31. package/dist/module/index.d.ts +10 -0
  32. package/dist/module/index.d.ts.map +1 -0
  33. package/dist/module/index.js +7 -0
  34. package/dist/module/index.js.map +1 -0
  35. package/dist/module/services/DataloomServiceBase.d.ts +13 -0
  36. package/dist/module/services/DataloomServiceBase.d.ts.map +1 -0
  37. package/dist/module/services/DataloomServiceBase.js +124 -0
  38. package/dist/module/services/DataloomServiceBase.js.map +1 -0
  39. package/dist/module/services/user-service/index.d.ts +9 -0
  40. package/dist/module/services/user-service/index.d.ts.map +1 -0
  41. package/dist/module/services/user-service/index.js +27 -0
  42. package/dist/module/services/user-service/index.js.map +1 -0
  43. package/dist/module/services/user-service/types.d.ts +17 -0
  44. package/dist/module/services/user-service/types.d.ts.map +1 -0
  45. package/dist/module/services/user-service/types.js +7 -0
  46. package/dist/module/services/user-service/types.js.map +1 -0
  47. package/dist/module/utils/logger.d.ts +16 -0
  48. package/dist/module/utils/logger.d.ts.map +1 -0
  49. package/dist/module/utils/logger.js +12 -0
  50. package/dist/module/utils/logger.js.map +1 -0
  51. package/dist/module/utils/trace-id.d.ts +45 -0
  52. package/dist/module/utils/trace-id.d.ts.map +1 -0
  53. package/dist/module/utils/trace-id.js +53 -0
  54. package/dist/module/utils/trace-id.js.map +1 -0
  55. package/dist/module/utils/types.d.ts +37 -0
  56. package/dist/module/utils/types.d.ts.map +1 -0
  57. package/dist/module/utils/types.js +6 -0
  58. package/dist/module/utils/types.js.map +1 -0
  59. package/package.json +56 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Dataloom
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,8 @@
1
+
2
+ ## Quick start
3
+
4
+ Install
5
+
6
+ ```bash
7
+ npm install --save @data-loom/service-js
8
+ ```
@@ -0,0 +1,10 @@
1
+ import { default as UserService } from './services/user-service';
2
+ export default class DataloomService {
3
+ user: UserService;
4
+ constructor(baseUrl: string, options: {
5
+ headers: Record<string, string>;
6
+ fetch: typeof fetch;
7
+ logger?: boolean;
8
+ });
9
+ }
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEjE,MAAM,CAAC,OAAO,OAAO,eAAe;IAClC,IAAI,EAAE,WAAW,CAAC;gBAGhB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;QACP,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAChC,KAAK,EAAE,OAAO,KAAK,CAAC;QACpB,MAAM,CAAC,EAAE,OAAO,CAAC;KAClB;CAIJ"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const user_service_1 = __importDefault(require("./services/user-service"));
7
+ class DataloomService {
8
+ constructor(baseUrl, options) {
9
+ this.user = new user_service_1.default(baseUrl, options);
10
+ }
11
+ }
12
+ exports.default = DataloomService;
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;AAAA,2EAAiE;AAEjE,MAAqB,eAAe;IAGlC,YACE,OAAe,EACf,OAIC;QAED,IAAI,CAAC,IAAI,GAAG,IAAI,sBAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC;CACF;AAbD,kCAaC"}
@@ -0,0 +1,13 @@
1
+ import { DataloomServiceOptions, Fetch, FetchOptions, ServiceName, DataloomServiceResponse } from '../utils/types';
2
+ export default abstract class DataloomServiceBase {
3
+ protected baseUrl: string;
4
+ protected headers: {
5
+ [key: string]: string;
6
+ };
7
+ protected fetch: Fetch;
8
+ protected logger: boolean;
9
+ protected serviceName: ServiceName;
10
+ constructor(baseUrl: string, options: DataloomServiceOptions);
11
+ fetchData<T>(url: string, options: FetchOptions): Promise<DataloomServiceResponse<T>>;
12
+ }
13
+ //# sourceMappingURL=DataloomServiceBase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataloomServiceBase.d.ts","sourceRoot":"","sources":["../../../src/services/DataloomServiceBase.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,sBAAsB,EACtB,KAAK,EACL,YAAY,EACZ,WAAW,EACX,uBAAuB,EACxB,MAAM,gBAAgB,CAAC;AAExB,MAAM,CAAC,OAAO,CAAC,QAAQ,OAAO,mBAAmB;IAC/C,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,OAAO,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IAC7C,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC;IACvB,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC;IAC1B,SAAS,CAAC,WAAW,EAAE,WAAW,CAAC;gBAEvB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB;IAetD,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC;CAwG5F"}
@@ -0,0 +1,130 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ // @ts-ignore
7
+ const node_fetch_1 = __importDefault(require("@data-loom/node-fetch"));
8
+ const trace_id_1 = require("../utils/trace-id");
9
+ const logger_1 = require("../utils/logger");
10
+ const types_1 = require("../utils/types");
11
+ class DataloomServiceBase {
12
+ constructor(baseUrl, options) {
13
+ var _a;
14
+ this.baseUrl = baseUrl;
15
+ this.headers = options.headers;
16
+ this.logger = (_a = options.logger) !== null && _a !== void 0 ? _a : false;
17
+ this.serviceName = types_1.ServiceName.DEFAULT;
18
+ if (options.fetch) {
19
+ this.fetch = options.fetch;
20
+ }
21
+ else if (typeof fetch === 'undefined') {
22
+ this.fetch = node_fetch_1.default;
23
+ }
24
+ else {
25
+ this.fetch = fetch;
26
+ }
27
+ }
28
+ async fetchData(url, options) {
29
+ const fetchUrl = `${this.baseUrl.toString()}${url}`;
30
+ let traceId = -1;
31
+ if (this.logger) {
32
+ traceId = trace_id_1.traceIdGenerator.next();
33
+ (0, logger_1.logRequest)({
34
+ traceId,
35
+ serviceName: this.serviceName,
36
+ url: fetchUrl,
37
+ method: options.method,
38
+ body: options.body,
39
+ });
40
+ }
41
+ try {
42
+ const res = await this.fetch(fetchUrl, {
43
+ method: options.method,
44
+ mode: 'cors',
45
+ redirect: 'manual',
46
+ credentials: 'include',
47
+ headers: this.headers,
48
+ body: JSON.stringify(options.body),
49
+ });
50
+ let error = null;
51
+ let data = null;
52
+ const status = res.status;
53
+ const statusText = res.statusText;
54
+ if (res.ok) {
55
+ const body = await res.text();
56
+ const parsedBody = JSON.parse(body);
57
+ // 判断code = 200 是后端接口返回的错误吗
58
+ if (parsedBody.status_code && parsedBody.error_msg) {
59
+ data = null;
60
+ error = {
61
+ code: parsedBody.status_code,
62
+ details: '',
63
+ hint: null,
64
+ message: parsedBody.error_msg,
65
+ };
66
+ }
67
+ else {
68
+ data = parsedBody.data;
69
+ error = null;
70
+ }
71
+ }
72
+ else {
73
+ // statuscode >= 400
74
+ const body = await res.text();
75
+ try {
76
+ // 优先判断是否是429 rate limiter 拦截
77
+ if (res.status === 429) {
78
+ error = {
79
+ code: 429,
80
+ message: 'Too many requests received within 5 seconds.',
81
+ details: '',
82
+ hint: 'Retry after 5 seconds.',
83
+ };
84
+ }
85
+ else {
86
+ error = {
87
+ code: res.status,
88
+ message: body,
89
+ details: '',
90
+ hint: null,
91
+ };
92
+ }
93
+ }
94
+ catch (e) {
95
+ error = {
96
+ code: res.status,
97
+ message: body,
98
+ details: '',
99
+ hint: null,
100
+ };
101
+ }
102
+ }
103
+ const serviceResponse = {
104
+ data,
105
+ error,
106
+ status,
107
+ statusText,
108
+ };
109
+ if (this.logger) {
110
+ (0, logger_1.logResponse)(traceId, serviceResponse);
111
+ }
112
+ return serviceResponse;
113
+ }
114
+ catch (e) {
115
+ return {
116
+ data: null,
117
+ error: {
118
+ code: 500,
119
+ message: e === null || e === void 0 ? void 0 : e.message,
120
+ details: '',
121
+ hint: null,
122
+ },
123
+ status: 500,
124
+ statusText: 'Internal Server Error',
125
+ };
126
+ }
127
+ }
128
+ }
129
+ exports.default = DataloomServiceBase;
130
+ //# sourceMappingURL=DataloomServiceBase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataloomServiceBase.js","sourceRoot":"","sources":["../../../src/services/DataloomServiceBase.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import DataloomServiceBase from '../DataloomServiceBase';
2
+ import { ServiceName } from '../../utils/types';
3
+ import type { SearchParams, User } from './types';
4
+ export default class UserService extends DataloomServiceBase {
5
+ serviceName: ServiceName;
6
+ search(params: SearchParams): Promise<import("../../utils/types").DataloomServiceResponse<User[]>>;
7
+ getByIds(ids: number[]): Promise<import("../../utils/types").DataloomServiceResponse<User[]>>;
8
+ }
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/services/user-service/index.ts"],"names":[],"mappings":"AAAA,OAAO,mBAAmB,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAElD,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,mBAAmB;IACjD,WAAW,cAA2B;IAE/C,MAAM,CAAC,MAAM,EAAE,YAAY;IAY3B,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE;CAQvB"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const DataloomServiceBase_1 = __importDefault(require("../DataloomServiceBase"));
7
+ const types_1 = require("../../utils/types");
8
+ class UserService extends DataloomServiceBase_1.default {
9
+ constructor() {
10
+ super(...arguments);
11
+ this.serviceName = types_1.ServiceName.UserService;
12
+ }
13
+ search(params) {
14
+ const { name, pageSize } = params;
15
+ return this.fetchData(`/users/search`, {
16
+ method: 'POST',
17
+ body: {
18
+ query: name,
19
+ page_size: pageSize,
20
+ },
21
+ });
22
+ }
23
+ getByIds(ids) {
24
+ return this.fetchData(`/users/list_by_id`, {
25
+ method: 'POST',
26
+ body: {
27
+ user_ids: ids,
28
+ },
29
+ });
30
+ }
31
+ }
32
+ exports.default = UserService;
33
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/services/user-service/index.ts"],"names":[],"mappings":";;;;;AAAA,iFAAyD;AACzD,6CAAgD;AAGhD,MAAqB,WAAY,SAAQ,6BAAmB;IAA5D;;QACW,gBAAW,GAAG,mBAAW,CAAC,WAAW,CAAC;IAsBjD,CAAC;IApBC,MAAM,CAAC,MAAoB;QACzB,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;QAElC,OAAO,IAAI,CAAC,SAAS,CAAS,eAAe,EAAE;YAC7C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE;gBACJ,KAAK,EAAE,IAAI;gBACX,SAAS,EAAE,QAAQ;aACpB;SACF,CAAC,CAAC;IACL,CAAC;IAED,QAAQ,CAAC,GAAa;QACpB,OAAO,IAAI,CAAC,SAAS,CAAS,mBAAmB,EAAE;YACjD,MAAM,EAAE,MAAM;YACd,IAAI,EAAE;gBACJ,QAAQ,EAAE,GAAG;aACd;SACF,CAAC,CAAC;IACL,CAAC;CACF;AAvBD,8BAuBC"}
@@ -0,0 +1,17 @@
1
+ export type SearchParams = {
2
+ name: string;
3
+ pageSize?: number;
4
+ };
5
+ declare enum UserStatus {
6
+ active = 1,
7
+ inactive = 2
8
+ }
9
+ export type User = {
10
+ user_id: string;
11
+ email: string;
12
+ name: string;
13
+ avatar: string;
14
+ status: UserStatus;
15
+ };
16
+ export {};
17
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/services/user-service/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,aAAK,UAAU;IACb,MAAM,IAAI;IACV,QAAQ,IAAA;CACT;AAED,MAAM,MAAM,IAAI,GAAG;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,UAAU,CAAC;CACpB,CAAC"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var UserStatus;
4
+ (function (UserStatus) {
5
+ UserStatus[UserStatus["active"] = 1] = "active";
6
+ UserStatus[UserStatus["inactive"] = 2] = "inactive";
7
+ })(UserStatus || (UserStatus = {}));
8
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/services/user-service/types.ts"],"names":[],"mappings":";;AAKA,IAAK,UAGJ;AAHD,WAAK,UAAU;IACb,+CAAU,CAAA;IACV,mDAAQ,CAAA;AACV,CAAC,EAHI,UAAU,KAAV,UAAU,QAGd"}
@@ -0,0 +1,16 @@
1
+ import { FetchMethod, ServiceName } from './types';
2
+ type LogParams = {
3
+ traceId: number;
4
+ serviceName: ServiceName;
5
+ url: string;
6
+ method: FetchMethod;
7
+ body?: unknown;
8
+ };
9
+ export declare const logRequest: (params: LogParams) => void;
10
+ export declare const logResponse: <T>(traceId: number, response: {
11
+ data: any;
12
+ error: any;
13
+ status: number;
14
+ }) => void;
15
+ export {};
16
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEnD,KAAK,SAAS,GAAG;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,WAAW,CAAC;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,WAAW,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,UAAU,WAAY,SAAS,SAmB3C,CAAC;AAEF,eAAO,MAAM,WAAW,eACb,MAAM,YACL;IAAE,IAAI,EAAE,GAAG,CAAC;IAAC,KAAK,EAAE,GAAG,CAAC;IAAC,QAAQ,MAAM,CAAA;CAAE,SAepD,CAAC"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.logResponse = exports.logRequest = void 0;
4
+ const logRequest = (params) => {
5
+ const { traceId, serviceName, url, method, body } = params;
6
+ const decodedParams = Array.from(new URL(url).searchParams.entries())
7
+ .filter(([key]) => !['count', 'tx', 'missing', 'resolution', 'column'].includes(key))
8
+ .map(([key, value]) => `${key}=${value}`);
9
+ console.log('[Dataloom] [Request]', 'trace id:', traceId, 'service name:', serviceName, 'method:', method, 'params:', decodedParams.join(','), 'body:', body);
10
+ };
11
+ exports.logRequest = logRequest;
12
+ const logResponse = (traceId, response) => {
13
+ const { data, error, status } = response;
14
+ console.log(`[Dataloom] [Response ${error ? 'Failed' : 'Success'}]`, 'trace id:', traceId, 'statusCode:', status, 'data:', data, 'error:', error);
15
+ };
16
+ exports.logResponse = logResponse;
17
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/utils/logger.ts"],"names":[],"mappings":";;;AAUO,MAAM,UAAU,GAAG,CAAC,MAAiB,EAAE,EAAE;IAC9C,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;IAC3D,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;SAClE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;SACpF,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC;IAE5C,OAAO,CAAC,GAAG,CACT,sBAAsB,EACtB,WAAW,EACX,OAAO,EACP,eAAe,EACf,WAAW,EACX,SAAS,EACT,MAAM,EACN,SAAS,EACT,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,EACvB,OAAO,EACP,IAAI,CACL,CAAC;AACJ,CAAC,CAAC;AAnBW,QAAA,UAAU,cAmBrB;AAEK,MAAM,WAAW,GAAG,CACzB,OAAe,EACf,QAAmD,EACnD,EAAE;IACF,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC;IAEzC,OAAO,CAAC,GAAG,CACT,wBAAwB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,GAAG,EACvD,WAAW,EACX,OAAO,EACP,aAAa,EACb,MAAM,EACN,OAAO,EACP,IAAI,EACJ,QAAQ,EACR,KAAK,CACN,CAAC;AACJ,CAAC,CAAC;AAjBW,QAAA,WAAW,eAiBtB"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * TraceIdGenerator
3
+ *
4
+ * A singleton class for generating auto-incrementing trace IDs within a process.
5
+ * Each call to next() returns a unique, incremented number.
6
+ *
7
+ * @example
8
+ * const traceId = traceIdGenerator.next();
9
+ */
10
+ declare class TraceIdGenerator {
11
+ /**
12
+ * The singleton instance of TraceIdGenerator.
13
+ */
14
+ private static instance;
15
+ /**
16
+ * The current trace id value.
17
+ */
18
+ private counter;
19
+ private constructor();
20
+ /**
21
+ * Get the singleton instance of TraceIdGenerator.
22
+ * @returns {TraceIdGenerator}
23
+ */
24
+ static getInstance(): TraceIdGenerator;
25
+ /**
26
+ * Get the next trace id (auto-increment).
27
+ * @returns {number} The next trace id.
28
+ */
29
+ next(): number;
30
+ /**
31
+ * Get the current trace id (without increment).
32
+ * @returns {number} The current trace id.
33
+ */
34
+ getCurrent(): number;
35
+ /**
36
+ * Reset the trace id counter to 1. (For testing or special use only)
37
+ */
38
+ reset(): void;
39
+ }
40
+ /**
41
+ * The singleton instance for trace id generation.
42
+ */
43
+ declare const traceIdGenerator: TraceIdGenerator;
44
+ export { TraceIdGenerator, traceIdGenerator };
45
+ //# sourceMappingURL=trace-id.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trace-id.d.ts","sourceRoot":"","sources":["../../../src/utils/trace-id.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,cAAM,gBAAgB;IACpB;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAmB;IAE1C;;OAEG;IACH,OAAO,CAAC,OAAO,CAAa;IAE5B,OAAO;IAEP;;;OAGG;WACW,WAAW,IAAI,gBAAgB;IAO7C;;;OAGG;IACI,IAAI,IAAI,MAAM;IAIrB;;;OAGG;IACI,UAAU,IAAI,MAAM;IAI3B;;OAEG;IACI,KAAK,IAAI,IAAI;CAGrB;AAED;;GAEG;AACH,QAAA,MAAM,gBAAgB,kBAAiC,CAAC;AAExD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,CAAC"}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.traceIdGenerator = exports.TraceIdGenerator = void 0;
4
+ /**
5
+ * TraceIdGenerator
6
+ *
7
+ * A singleton class for generating auto-incrementing trace IDs within a process.
8
+ * Each call to next() returns a unique, incremented number.
9
+ *
10
+ * @example
11
+ * const traceId = traceIdGenerator.next();
12
+ */
13
+ class TraceIdGenerator {
14
+ constructor() {
15
+ /**
16
+ * The current trace id value.
17
+ */
18
+ this.counter = 1;
19
+ }
20
+ /**
21
+ * Get the singleton instance of TraceIdGenerator.
22
+ * @returns {TraceIdGenerator}
23
+ */
24
+ static getInstance() {
25
+ if (!TraceIdGenerator.instance) {
26
+ TraceIdGenerator.instance = new TraceIdGenerator();
27
+ }
28
+ return TraceIdGenerator.instance;
29
+ }
30
+ /**
31
+ * Get the next trace id (auto-increment).
32
+ * @returns {number} The next trace id.
33
+ */
34
+ next() {
35
+ return this.counter++;
36
+ }
37
+ /**
38
+ * Get the current trace id (without increment).
39
+ * @returns {number} The current trace id.
40
+ */
41
+ getCurrent() {
42
+ return this.counter;
43
+ }
44
+ /**
45
+ * Reset the trace id counter to 1. (For testing or special use only)
46
+ */
47
+ reset() {
48
+ this.counter = 1;
49
+ }
50
+ }
51
+ exports.TraceIdGenerator = TraceIdGenerator;
52
+ /**
53
+ * The singleton instance for trace id generation.
54
+ */
55
+ const traceIdGenerator = TraceIdGenerator.getInstance();
56
+ exports.traceIdGenerator = traceIdGenerator;
57
+ //# sourceMappingURL=trace-id.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trace-id.js","sourceRoot":"","sources":["../../../src/utils/trace-id.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;GAQG;AACH,MAAM,gBAAgB;IAWpB;QALA;;WAEG;QACK,YAAO,GAAW,CAAC,CAAC;IAEL,CAAC;IAExB;;;OAGG;IACI,MAAM,CAAC,WAAW;QACvB,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE;YAC9B,gBAAgB,CAAC,QAAQ,GAAG,IAAI,gBAAgB,EAAE,CAAC;SACpD;QACD,OAAO,gBAAgB,CAAC,QAAQ,CAAC;IACnC,CAAC;IAED;;;OAGG;IACI,IAAI;QACT,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IAED;;;OAGG;IACI,UAAU;QACf,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;OAEG;IACI,KAAK;QACV,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;IACnB,CAAC;CACF;AAOQ,4CAAgB;AALzB;;GAEG;AACH,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,WAAW,EAAE,CAAC;AAE7B,4CAAgB"}
@@ -0,0 +1,37 @@
1
+ export declare enum ServiceName {
2
+ DEFAULT = "default",
3
+ UserService = "user-service"
4
+ }
5
+ export type Fetch = typeof fetch;
6
+ export type FetchMethod = 'GET' | 'HEAD' | 'POST' | 'PATCH' | 'DELETE';
7
+ export type FetchOptions = {
8
+ method: FetchMethod;
9
+ body?: any;
10
+ };
11
+ export type DataloomServiceOptions = {
12
+ headers: {
13
+ [key: string]: string;
14
+ };
15
+ fetch: Fetch;
16
+ logger?: boolean;
17
+ };
18
+ interface DataloomServiceBase {
19
+ status: number;
20
+ statusText: string;
21
+ }
22
+ export interface DataloomServiceSuccess<T> extends DataloomServiceBase {
23
+ error: null;
24
+ data: T;
25
+ }
26
+ export interface DataloomServiceFailure extends DataloomServiceBase {
27
+ error: {
28
+ code: number;
29
+ details: string;
30
+ hint: string | null;
31
+ message: string;
32
+ };
33
+ data: null;
34
+ }
35
+ export type DataloomServiceResponse<T> = DataloomServiceSuccess<T> | DataloomServiceFailure;
36
+ export {};
37
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/utils/types.ts"],"names":[],"mappings":"AAAA,oBAAY,WAAW;IACrB,OAAO,YAAY;IACnB,WAAW,iBAAiB;CAC7B;AAED,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC;AAEjC,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEvE,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,EAAE,WAAW,CAAC;IACpB,IAAI,CAAC,EAAE,GAAG,CAAC;CACZ,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IAEnC,OAAO,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IAEnC,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,UAAU,mBAAmB;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AACD,MAAM,WAAW,sBAAsB,CAAC,CAAC,CAAE,SAAQ,mBAAmB;IACpE,KAAK,EAAE,IAAI,CAAC;IACZ,IAAI,EAAE,CAAC,CAAC;CACT;AACD,MAAM,WAAW,sBAAuB,SAAQ,mBAAmB;IACjE,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,IAAI,EAAE,IAAI,CAAC;CACZ;AAED,MAAM,MAAM,uBAAuB,CAAC,CAAC,IAAI,sBAAsB,CAAC,CAAC,CAAC,GAAG,sBAAsB,CAAC"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ServiceName = void 0;
4
+ var ServiceName;
5
+ (function (ServiceName) {
6
+ ServiceName["DEFAULT"] = "default";
7
+ ServiceName["UserService"] = "user-service";
8
+ })(ServiceName = exports.ServiceName || (exports.ServiceName = {}));
9
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/utils/types.ts"],"names":[],"mappings":";;;AAAA,IAAY,WAGX;AAHD,WAAY,WAAW;IACrB,kCAAmB,CAAA;IACnB,2CAA4B,CAAA;AAC9B,CAAC,EAHW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAGtB"}
@@ -0,0 +1,10 @@
1
+ import { default as UserService } from './services/user-service';
2
+ export default class DataloomService {
3
+ user: UserService;
4
+ constructor(baseUrl: string, options: {
5
+ headers: Record<string, string>;
6
+ fetch: typeof fetch;
7
+ logger?: boolean;
8
+ });
9
+ }
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEjE,MAAM,CAAC,OAAO,OAAO,eAAe;IAClC,IAAI,EAAE,WAAW,CAAC;gBAGhB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;QACP,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAChC,KAAK,EAAE,OAAO,KAAK,CAAC;QACpB,MAAM,CAAC,EAAE,OAAO,CAAC;KAClB;CAIJ"}
@@ -0,0 +1,7 @@
1
+ import { default as UserService } from './services/user-service';
2
+ export default class DataloomService {
3
+ constructor(baseUrl, options) {
4
+ this.user = new UserService(baseUrl, options);
5
+ }
6
+ }
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEjE,MAAM,CAAC,OAAO,OAAO,eAAe;IAGlC,YACE,OAAe,EACf,OAIC;QAED,IAAI,CAAC,IAAI,GAAG,IAAI,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC;CACF"}
@@ -0,0 +1,13 @@
1
+ import { DataloomServiceOptions, Fetch, FetchOptions, ServiceName, DataloomServiceResponse } from '../utils/types';
2
+ export default abstract class DataloomServiceBase {
3
+ protected baseUrl: string;
4
+ protected headers: {
5
+ [key: string]: string;
6
+ };
7
+ protected fetch: Fetch;
8
+ protected logger: boolean;
9
+ protected serviceName: ServiceName;
10
+ constructor(baseUrl: string, options: DataloomServiceOptions);
11
+ fetchData<T>(url: string, options: FetchOptions): Promise<DataloomServiceResponse<T>>;
12
+ }
13
+ //# sourceMappingURL=DataloomServiceBase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataloomServiceBase.d.ts","sourceRoot":"","sources":["../../../src/services/DataloomServiceBase.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,sBAAsB,EACtB,KAAK,EACL,YAAY,EACZ,WAAW,EACX,uBAAuB,EACxB,MAAM,gBAAgB,CAAC;AAExB,MAAM,CAAC,OAAO,CAAC,QAAQ,OAAO,mBAAmB;IAC/C,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,OAAO,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IAC7C,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC;IACvB,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC;IAC1B,SAAS,CAAC,WAAW,EAAE,WAAW,CAAC;gBAEvB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB;IAetD,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC;CAwG5F"}
@@ -0,0 +1,124 @@
1
+ // @ts-ignore
2
+ import nodeFetch from '@data-loom/node-fetch';
3
+ import { traceIdGenerator } from '../utils/trace-id';
4
+ import { logRequest, logResponse } from '../utils/logger';
5
+ import { ServiceName, } from '../utils/types';
6
+ export default class DataloomServiceBase {
7
+ constructor(baseUrl, options) {
8
+ var _a;
9
+ this.baseUrl = baseUrl;
10
+ this.headers = options.headers;
11
+ this.logger = (_a = options.logger) !== null && _a !== void 0 ? _a : false;
12
+ this.serviceName = ServiceName.DEFAULT;
13
+ if (options.fetch) {
14
+ this.fetch = options.fetch;
15
+ }
16
+ else if (typeof fetch === 'undefined') {
17
+ this.fetch = nodeFetch;
18
+ }
19
+ else {
20
+ this.fetch = fetch;
21
+ }
22
+ }
23
+ async fetchData(url, options) {
24
+ const fetchUrl = `${this.baseUrl.toString()}${url}`;
25
+ let traceId = -1;
26
+ if (this.logger) {
27
+ traceId = traceIdGenerator.next();
28
+ logRequest({
29
+ traceId,
30
+ serviceName: this.serviceName,
31
+ url: fetchUrl,
32
+ method: options.method,
33
+ body: options.body,
34
+ });
35
+ }
36
+ try {
37
+ const res = await this.fetch(fetchUrl, {
38
+ method: options.method,
39
+ mode: 'cors',
40
+ redirect: 'manual',
41
+ credentials: 'include',
42
+ headers: this.headers,
43
+ body: JSON.stringify(options.body),
44
+ });
45
+ let error = null;
46
+ let data = null;
47
+ const status = res.status;
48
+ const statusText = res.statusText;
49
+ if (res.ok) {
50
+ const body = await res.text();
51
+ const parsedBody = JSON.parse(body);
52
+ // 判断code = 200 是后端接口返回的错误吗
53
+ if (parsedBody.status_code && parsedBody.error_msg) {
54
+ data = null;
55
+ error = {
56
+ code: parsedBody.status_code,
57
+ details: '',
58
+ hint: null,
59
+ message: parsedBody.error_msg,
60
+ };
61
+ }
62
+ else {
63
+ data = parsedBody.data;
64
+ error = null;
65
+ }
66
+ }
67
+ else {
68
+ // statuscode >= 400
69
+ const body = await res.text();
70
+ try {
71
+ // 优先判断是否是429 rate limiter 拦截
72
+ if (res.status === 429) {
73
+ error = {
74
+ code: 429,
75
+ message: 'Too many requests received within 5 seconds.',
76
+ details: '',
77
+ hint: 'Retry after 5 seconds.',
78
+ };
79
+ }
80
+ else {
81
+ error = {
82
+ code: res.status,
83
+ message: body,
84
+ details: '',
85
+ hint: null,
86
+ };
87
+ }
88
+ }
89
+ catch (e) {
90
+ error = {
91
+ code: res.status,
92
+ message: body,
93
+ details: '',
94
+ hint: null,
95
+ };
96
+ }
97
+ }
98
+ const serviceResponse = {
99
+ data,
100
+ error,
101
+ status,
102
+ statusText,
103
+ };
104
+ if (this.logger) {
105
+ logResponse(traceId, serviceResponse);
106
+ }
107
+ return serviceResponse;
108
+ }
109
+ catch (e) {
110
+ return {
111
+ data: null,
112
+ error: {
113
+ code: 500,
114
+ message: e === null || e === void 0 ? void 0 : e.message,
115
+ details: '',
116
+ hint: null,
117
+ },
118
+ status: 500,
119
+ statusText: 'Internal Server Error',
120
+ };
121
+ }
122
+ }
123
+ }
124
+ //# sourceMappingURL=DataloomServiceBase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataloomServiceBase.js","sourceRoot":"","sources":["../../../src/services/DataloomServiceBase.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import DataloomServiceBase from '../DataloomServiceBase';
2
+ import { ServiceName } from '../../utils/types';
3
+ import type { SearchParams, User } from './types';
4
+ export default class UserService extends DataloomServiceBase {
5
+ serviceName: ServiceName;
6
+ search(params: SearchParams): Promise<import("../../utils/types").DataloomServiceResponse<User[]>>;
7
+ getByIds(ids: number[]): Promise<import("../../utils/types").DataloomServiceResponse<User[]>>;
8
+ }
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/services/user-service/index.ts"],"names":[],"mappings":"AAAA,OAAO,mBAAmB,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAElD,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,mBAAmB;IACjD,WAAW,cAA2B;IAE/C,MAAM,CAAC,MAAM,EAAE,YAAY;IAY3B,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE;CAQvB"}
@@ -0,0 +1,27 @@
1
+ import DataloomServiceBase from '../DataloomServiceBase';
2
+ import { ServiceName } from '../../utils/types';
3
+ export default class UserService extends DataloomServiceBase {
4
+ constructor() {
5
+ super(...arguments);
6
+ this.serviceName = ServiceName.UserService;
7
+ }
8
+ search(params) {
9
+ const { name, pageSize } = params;
10
+ return this.fetchData(`/users/search`, {
11
+ method: 'POST',
12
+ body: {
13
+ query: name,
14
+ page_size: pageSize,
15
+ },
16
+ });
17
+ }
18
+ getByIds(ids) {
19
+ return this.fetchData(`/users/list_by_id`, {
20
+ method: 'POST',
21
+ body: {
22
+ user_ids: ids,
23
+ },
24
+ });
25
+ }
26
+ }
27
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/services/user-service/index.ts"],"names":[],"mappings":"AAAA,OAAO,mBAAmB,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,mBAAmB;IAA5D;;QACW,gBAAW,GAAG,WAAW,CAAC,WAAW,CAAC;IAsBjD,CAAC;IApBC,MAAM,CAAC,MAAoB;QACzB,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;QAElC,OAAO,IAAI,CAAC,SAAS,CAAS,eAAe,EAAE;YAC7C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE;gBACJ,KAAK,EAAE,IAAI;gBACX,SAAS,EAAE,QAAQ;aACpB;SACF,CAAC,CAAC;IACL,CAAC;IAED,QAAQ,CAAC,GAAa;QACpB,OAAO,IAAI,CAAC,SAAS,CAAS,mBAAmB,EAAE;YACjD,MAAM,EAAE,MAAM;YACd,IAAI,EAAE;gBACJ,QAAQ,EAAE,GAAG;aACd;SACF,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -0,0 +1,17 @@
1
+ export type SearchParams = {
2
+ name: string;
3
+ pageSize?: number;
4
+ };
5
+ declare enum UserStatus {
6
+ active = 1,
7
+ inactive = 2
8
+ }
9
+ export type User = {
10
+ user_id: string;
11
+ email: string;
12
+ name: string;
13
+ avatar: string;
14
+ status: UserStatus;
15
+ };
16
+ export {};
17
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/services/user-service/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,aAAK,UAAU;IACb,MAAM,IAAI;IACV,QAAQ,IAAA;CACT;AAED,MAAM,MAAM,IAAI,GAAG;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,UAAU,CAAC;CACpB,CAAC"}
@@ -0,0 +1,7 @@
1
+ var UserStatus;
2
+ (function (UserStatus) {
3
+ UserStatus[UserStatus["active"] = 1] = "active";
4
+ UserStatus[UserStatus["inactive"] = 2] = "inactive";
5
+ })(UserStatus || (UserStatus = {}));
6
+ export {};
7
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/services/user-service/types.ts"],"names":[],"mappings":"AAKA,IAAK,UAGJ;AAHD,WAAK,UAAU;IACb,+CAAU,CAAA;IACV,mDAAQ,CAAA;AACV,CAAC,EAHI,UAAU,KAAV,UAAU,QAGd"}
@@ -0,0 +1,16 @@
1
+ import { FetchMethod, ServiceName } from './types';
2
+ type LogParams = {
3
+ traceId: number;
4
+ serviceName: ServiceName;
5
+ url: string;
6
+ method: FetchMethod;
7
+ body?: unknown;
8
+ };
9
+ export declare const logRequest: (params: LogParams) => void;
10
+ export declare const logResponse: <T>(traceId: number, response: {
11
+ data: any;
12
+ error: any;
13
+ status: number;
14
+ }) => void;
15
+ export {};
16
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEnD,KAAK,SAAS,GAAG;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,WAAW,CAAC;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,WAAW,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,UAAU,WAAY,SAAS,SAmB3C,CAAC;AAEF,eAAO,MAAM,WAAW,eACb,MAAM,YACL;IAAE,IAAI,EAAE,GAAG,CAAC;IAAC,KAAK,EAAE,GAAG,CAAC;IAAC,QAAQ,MAAM,CAAA;CAAE,SAepD,CAAC"}
@@ -0,0 +1,12 @@
1
+ export const logRequest = (params) => {
2
+ const { traceId, serviceName, url, method, body } = params;
3
+ const decodedParams = Array.from(new URL(url).searchParams.entries())
4
+ .filter(([key]) => !['count', 'tx', 'missing', 'resolution', 'column'].includes(key))
5
+ .map(([key, value]) => `${key}=${value}`);
6
+ console.log('[Dataloom] [Request]', 'trace id:', traceId, 'service name:', serviceName, 'method:', method, 'params:', decodedParams.join(','), 'body:', body);
7
+ };
8
+ export const logResponse = (traceId, response) => {
9
+ const { data, error, status } = response;
10
+ console.log(`[Dataloom] [Response ${error ? 'Failed' : 'Success'}]`, 'trace id:', traceId, 'statusCode:', status, 'data:', data, 'error:', error);
11
+ };
12
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/utils/logger.ts"],"names":[],"mappings":"AAUA,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,MAAiB,EAAE,EAAE;IAC9C,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;IAC3D,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;SAClE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;SACpF,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC;IAE5C,OAAO,CAAC,GAAG,CACT,sBAAsB,EACtB,WAAW,EACX,OAAO,EACP,eAAe,EACf,WAAW,EACX,SAAS,EACT,MAAM,EACN,SAAS,EACT,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,EACvB,OAAO,EACP,IAAI,CACL,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,OAAe,EACf,QAAmD,EACnD,EAAE;IACF,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC;IAEzC,OAAO,CAAC,GAAG,CACT,wBAAwB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,GAAG,EACvD,WAAW,EACX,OAAO,EACP,aAAa,EACb,MAAM,EACN,OAAO,EACP,IAAI,EACJ,QAAQ,EACR,KAAK,CACN,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * TraceIdGenerator
3
+ *
4
+ * A singleton class for generating auto-incrementing trace IDs within a process.
5
+ * Each call to next() returns a unique, incremented number.
6
+ *
7
+ * @example
8
+ * const traceId = traceIdGenerator.next();
9
+ */
10
+ declare class TraceIdGenerator {
11
+ /**
12
+ * The singleton instance of TraceIdGenerator.
13
+ */
14
+ private static instance;
15
+ /**
16
+ * The current trace id value.
17
+ */
18
+ private counter;
19
+ private constructor();
20
+ /**
21
+ * Get the singleton instance of TraceIdGenerator.
22
+ * @returns {TraceIdGenerator}
23
+ */
24
+ static getInstance(): TraceIdGenerator;
25
+ /**
26
+ * Get the next trace id (auto-increment).
27
+ * @returns {number} The next trace id.
28
+ */
29
+ next(): number;
30
+ /**
31
+ * Get the current trace id (without increment).
32
+ * @returns {number} The current trace id.
33
+ */
34
+ getCurrent(): number;
35
+ /**
36
+ * Reset the trace id counter to 1. (For testing or special use only)
37
+ */
38
+ reset(): void;
39
+ }
40
+ /**
41
+ * The singleton instance for trace id generation.
42
+ */
43
+ declare const traceIdGenerator: TraceIdGenerator;
44
+ export { TraceIdGenerator, traceIdGenerator };
45
+ //# sourceMappingURL=trace-id.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trace-id.d.ts","sourceRoot":"","sources":["../../../src/utils/trace-id.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,cAAM,gBAAgB;IACpB;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAmB;IAE1C;;OAEG;IACH,OAAO,CAAC,OAAO,CAAa;IAE5B,OAAO;IAEP;;;OAGG;WACW,WAAW,IAAI,gBAAgB;IAO7C;;;OAGG;IACI,IAAI,IAAI,MAAM;IAIrB;;;OAGG;IACI,UAAU,IAAI,MAAM;IAI3B;;OAEG;IACI,KAAK,IAAI,IAAI;CAGrB;AAED;;GAEG;AACH,QAAA,MAAM,gBAAgB,kBAAiC,CAAC;AAExD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,CAAC"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * TraceIdGenerator
3
+ *
4
+ * A singleton class for generating auto-incrementing trace IDs within a process.
5
+ * Each call to next() returns a unique, incremented number.
6
+ *
7
+ * @example
8
+ * const traceId = traceIdGenerator.next();
9
+ */
10
+ class TraceIdGenerator {
11
+ constructor() {
12
+ /**
13
+ * The current trace id value.
14
+ */
15
+ this.counter = 1;
16
+ }
17
+ /**
18
+ * Get the singleton instance of TraceIdGenerator.
19
+ * @returns {TraceIdGenerator}
20
+ */
21
+ static getInstance() {
22
+ if (!TraceIdGenerator.instance) {
23
+ TraceIdGenerator.instance = new TraceIdGenerator();
24
+ }
25
+ return TraceIdGenerator.instance;
26
+ }
27
+ /**
28
+ * Get the next trace id (auto-increment).
29
+ * @returns {number} The next trace id.
30
+ */
31
+ next() {
32
+ return this.counter++;
33
+ }
34
+ /**
35
+ * Get the current trace id (without increment).
36
+ * @returns {number} The current trace id.
37
+ */
38
+ getCurrent() {
39
+ return this.counter;
40
+ }
41
+ /**
42
+ * Reset the trace id counter to 1. (For testing or special use only)
43
+ */
44
+ reset() {
45
+ this.counter = 1;
46
+ }
47
+ }
48
+ /**
49
+ * The singleton instance for trace id generation.
50
+ */
51
+ const traceIdGenerator = TraceIdGenerator.getInstance();
52
+ export { TraceIdGenerator, traceIdGenerator };
53
+ //# sourceMappingURL=trace-id.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trace-id.js","sourceRoot":"","sources":["../../../src/utils/trace-id.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,gBAAgB;IAWpB;QALA;;WAEG;QACK,YAAO,GAAW,CAAC,CAAC;IAEL,CAAC;IAExB;;;OAGG;IACI,MAAM,CAAC,WAAW;QACvB,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE;YAC9B,gBAAgB,CAAC,QAAQ,GAAG,IAAI,gBAAgB,EAAE,CAAC;SACpD;QACD,OAAO,gBAAgB,CAAC,QAAQ,CAAC;IACnC,CAAC;IAED;;;OAGG;IACI,IAAI;QACT,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IAED;;;OAGG;IACI,UAAU;QACf,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;OAEG;IACI,KAAK;QACV,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;IACnB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,WAAW,EAAE,CAAC;AAExD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,CAAC"}
@@ -0,0 +1,37 @@
1
+ export declare enum ServiceName {
2
+ DEFAULT = "default",
3
+ UserService = "user-service"
4
+ }
5
+ export type Fetch = typeof fetch;
6
+ export type FetchMethod = 'GET' | 'HEAD' | 'POST' | 'PATCH' | 'DELETE';
7
+ export type FetchOptions = {
8
+ method: FetchMethod;
9
+ body?: any;
10
+ };
11
+ export type DataloomServiceOptions = {
12
+ headers: {
13
+ [key: string]: string;
14
+ };
15
+ fetch: Fetch;
16
+ logger?: boolean;
17
+ };
18
+ interface DataloomServiceBase {
19
+ status: number;
20
+ statusText: string;
21
+ }
22
+ export interface DataloomServiceSuccess<T> extends DataloomServiceBase {
23
+ error: null;
24
+ data: T;
25
+ }
26
+ export interface DataloomServiceFailure extends DataloomServiceBase {
27
+ error: {
28
+ code: number;
29
+ details: string;
30
+ hint: string | null;
31
+ message: string;
32
+ };
33
+ data: null;
34
+ }
35
+ export type DataloomServiceResponse<T> = DataloomServiceSuccess<T> | DataloomServiceFailure;
36
+ export {};
37
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/utils/types.ts"],"names":[],"mappings":"AAAA,oBAAY,WAAW;IACrB,OAAO,YAAY;IACnB,WAAW,iBAAiB;CAC7B;AAED,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC;AAEjC,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEvE,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,EAAE,WAAW,CAAC;IACpB,IAAI,CAAC,EAAE,GAAG,CAAC;CACZ,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IAEnC,OAAO,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IAEnC,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,UAAU,mBAAmB;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AACD,MAAM,WAAW,sBAAsB,CAAC,CAAC,CAAE,SAAQ,mBAAmB;IACpE,KAAK,EAAE,IAAI,CAAC;IACZ,IAAI,EAAE,CAAC,CAAC;CACT;AACD,MAAM,WAAW,sBAAuB,SAAQ,mBAAmB;IACjE,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,IAAI,EAAE,IAAI,CAAC;CACZ;AAED,MAAM,MAAM,uBAAuB,CAAC,CAAC,IAAI,sBAAsB,CAAC,CAAC,CAAC,GAAG,sBAAsB,CAAC"}
@@ -0,0 +1,6 @@
1
+ export var ServiceName;
2
+ (function (ServiceName) {
3
+ ServiceName["DEFAULT"] = "default";
4
+ ServiceName["UserService"] = "user-service";
5
+ })(ServiceName || (ServiceName = {}));
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/utils/types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,WAGX;AAHD,WAAY,WAAW;IACrB,kCAAmB,CAAA;IACnB,2CAA4B,CAAA;AAC9B,CAAC,EAHW,WAAW,KAAX,WAAW,QAGtB"}
package/package.json ADDED
@@ -0,0 +1,56 @@
1
+ {
2
+ "name": "@data-loom/service-js",
3
+ "version": "0.1.0-alpha.1",
4
+ "description": "Dataloom service",
5
+ "keywords": [
6
+ "service",
7
+ "dataloom"
8
+ ],
9
+ "license": "MIT",
10
+ "author": "Dataloom",
11
+ "files": [
12
+ "dist"
13
+ ],
14
+ "main": "dist/main/index.js",
15
+ "module": "dist/module/index.js",
16
+ "types": "dist/module/index.d.ts",
17
+ "scripts": {
18
+ "clean": "rimraf dist docs/v2",
19
+ "format": "prettier --write \"{src,test}/**/**/*.ts\"",
20
+ "format:check": "prettier --check \"{src,test}/**/**/*.ts\"",
21
+ "build": "run-s clean format build:*",
22
+ "build:main": "npx tsc -p tsconfig.json",
23
+ "build:module": "npx tsc -p tsconfig.module.json",
24
+ "test": "run-s test:types test:run",
25
+ "test:run": "jest --runInBand",
26
+ "test:coverage": "jest --runInBand --coverage",
27
+ "test:db": "cd infra/db && docker-compose down && docker-compose up -d && sleep 5",
28
+ "test:watch": "jest --watch --verbose false --silent false",
29
+ "test:clean": "cd infra/db && docker-compose down",
30
+ "test:types": "run-s build:module && tsd --files test/*.test-d.ts",
31
+ "test:cov": "exit 0",
32
+ "lint": "exit 0",
33
+ "test:types:watch": "run-s build && tsd --files 'test/**/*.test-d.ts' --watch"
34
+ },
35
+ "dependencies": {
36
+ "@data-loom/node-fetch": "0.1.0-alpha.1"
37
+ },
38
+ "devDependencies": {
39
+ "@types/jest": "~29.2.4",
40
+ "cpy-cli": "^5.0.0",
41
+ "jest": "^29.6.1",
42
+ "node-abort-controller": "^3.0.1",
43
+ "npm-run-all": "^4.1.5",
44
+ "prettier": "^2",
45
+ "rimraf": "^3.0.0",
46
+ "semantic-release-plugin-update-version-in-files": "^1.1.0",
47
+ "ts-expect": "^1.3.0",
48
+ "ts-jest": "^28.0.7",
49
+ "tsd": "^0.31.2",
50
+ "type-fest": "^4.18.2",
51
+ "typedoc": "~0.23.24",
52
+ "typescript": "^4",
53
+ "wait-for-localhost-cli": "^3.0.0",
54
+ "eslint": "^8"
55
+ }
56
+ }