@lark-apaas/dataloom 0.1.1-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/README.md +3 -0
  2. package/lib/DataloomClient.d.ts +31 -0
  3. package/lib/DataloomClient.d.ts.map +1 -0
  4. package/lib/DataloomClient.js +39 -0
  5. package/lib/RateLimiter.d.ts +15 -0
  6. package/lib/RateLimiter.d.ts.map +1 -0
  7. package/lib/RateLimiter.js +31 -0
  8. package/lib/index.d.ts +9 -0
  9. package/lib/index.d.ts.map +1 -0
  10. package/lib/index.js +3 -0
  11. package/lib/service/index.d.ts +9 -0
  12. package/lib/service/index.d.ts.map +1 -0
  13. package/lib/service/index.js +11 -0
  14. package/lib/service/services/DataloomServiceBase.d.ts +17 -0
  15. package/lib/service/services/DataloomServiceBase.d.ts.map +1 -0
  16. package/lib/service/services/DataloomServiceBase.js +126 -0
  17. package/lib/service/services/session-service/index.d.ts +45 -0
  18. package/lib/service/services/session-service/index.d.ts.map +1 -0
  19. package/lib/service/services/session-service/index.js +111 -0
  20. package/lib/service/services/session-service/types.d.ts +34 -0
  21. package/lib/service/services/session-service/types.d.ts.map +1 -0
  22. package/lib/service/services/session-service/types.js +0 -0
  23. package/lib/service/services/types.d.ts +12 -0
  24. package/lib/service/services/types.d.ts.map +1 -0
  25. package/lib/service/services/types.js +14 -0
  26. package/lib/service/services/user-service/index.d.ts +9 -0
  27. package/lib/service/services/user-service/index.d.ts.map +1 -0
  28. package/lib/service/services/user-service/index.js +60 -0
  29. package/lib/service/services/user-service/types.d.ts +51 -0
  30. package/lib/service/services/user-service/types.d.ts.map +1 -0
  31. package/lib/service/services/user-service/types.js +0 -0
  32. package/lib/service/utils/helpers.d.ts +8 -0
  33. package/lib/service/utils/helpers.d.ts.map +1 -0
  34. package/lib/service/utils/helpers.js +18 -0
  35. package/lib/service/utils/logger.d.ts +15 -0
  36. package/lib/service/utils/logger.d.ts.map +1 -0
  37. package/lib/service/utils/logger.js +18 -0
  38. package/lib/service/utils/trace-id.d.ts +45 -0
  39. package/lib/service/utils/trace-id.d.ts.map +1 -0
  40. package/lib/service/utils/trace-id.js +20 -0
  41. package/lib/service/utils/types.d.ts +49 -0
  42. package/lib/service/utils/types.d.ts.map +1 -0
  43. package/lib/service/utils/types.js +7 -0
  44. package/lib/storage/StorageClient.d.ts +22 -0
  45. package/lib/storage/StorageClient.d.ts.map +1 -0
  46. package/lib/storage/StorageClient.js +11 -0
  47. package/lib/storage/index.d.ts +4 -0
  48. package/lib/storage/index.d.ts.map +1 -0
  49. package/lib/storage/index.js +4 -0
  50. package/lib/storage/libs/constants.d.ts +4 -0
  51. package/lib/storage/libs/constants.d.ts.map +1 -0
  52. package/lib/storage/libs/constants.js +5 -0
  53. package/lib/storage/libs/errors.d.ts +24 -0
  54. package/lib/storage/libs/errors.d.ts.map +1 -0
  55. package/lib/storage/libs/errors.js +39 -0
  56. package/lib/storage/libs/fetch.d.ts +24 -0
  57. package/lib/storage/libs/fetch.d.ts.map +1 -0
  58. package/lib/storage/libs/fetch.js +139 -0
  59. package/lib/storage/libs/helpers.d.ts +18 -0
  60. package/lib/storage/libs/helpers.d.ts.map +1 -0
  61. package/lib/storage/libs/helpers.js +57 -0
  62. package/lib/storage/libs/index.d.ts +5 -0
  63. package/lib/storage/libs/index.d.ts.map +1 -0
  64. package/lib/storage/libs/index.js +4 -0
  65. package/lib/storage/libs/types.d.ts +205 -0
  66. package/lib/storage/libs/types.d.ts.map +1 -0
  67. package/lib/storage/libs/types.js +0 -0
  68. package/lib/storage/libs/version.d.ts +2 -0
  69. package/lib/storage/libs/version.d.ts.map +1 -0
  70. package/lib/storage/libs/version.js +2 -0
  71. package/lib/storage/packages/StorageBucketApi.d.ts +121 -0
  72. package/lib/storage/packages/StorageBucketApi.d.ts.map +1 -0
  73. package/lib/storage/packages/StorageBucketApi.js +135 -0
  74. package/lib/storage/packages/StorageFileApi.d.ts +190 -0
  75. package/lib/storage/packages/StorageFileApi.d.ts.map +1 -0
  76. package/lib/storage/packages/StorageFileApi.js +378 -0
  77. package/lib/storage/utils/logger.d.ts +15 -0
  78. package/lib/storage/utils/logger.d.ts.map +1 -0
  79. package/lib/storage/utils/logger.js +18 -0
  80. package/lib/storage/utils/trace-id.d.ts +45 -0
  81. package/lib/storage/utils/trace-id.d.ts.map +1 -0
  82. package/lib/storage/utils/trace-id.js +20 -0
  83. package/lib/utils/constants.d.ts +7 -0
  84. package/lib/utils/constants.d.ts.map +1 -0
  85. package/lib/utils/constants.js +33 -0
  86. package/lib/utils/fetch.d.ts +6 -0
  87. package/lib/utils/fetch.d.ts.map +1 -0
  88. package/lib/utils/fetch.js +22 -0
  89. package/lib/utils/helpers.d.ts +5 -0
  90. package/lib/utils/helpers.d.ts.map +1 -0
  91. package/lib/utils/helpers.js +17 -0
  92. package/lib/utils/types.d.ts +34 -0
  93. package/lib/utils/types.d.ts.map +1 -0
  94. package/lib/utils/types.js +0 -0
  95. package/lib/utils/version.d.ts +2 -0
  96. package/lib/utils/version.d.ts.map +1 -0
  97. package/lib/utils/version.js +2 -0
  98. package/package.json +34 -0
@@ -0,0 +1,51 @@
1
+ import type { AccountStatus, UserStatus } from '../types';
2
+ export type I18n = {
3
+ zh_cn: string;
4
+ en_us: string;
5
+ ja_jp: string;
6
+ };
7
+ export type SearchParams = {
8
+ name: string;
9
+ pageSize?: number;
10
+ };
11
+ export type User = {
12
+ user_id: string;
13
+ email: string;
14
+ name: string;
15
+ avatar: string;
16
+ status: UserStatus;
17
+ };
18
+ export type DepartmentEntity = {
19
+ departmentID: string;
20
+ larkDepartmentID: string;
21
+ name: I18n;
22
+ };
23
+ export type SearchUserEntity = {
24
+ userID: string;
25
+ larkUserID: string;
26
+ name: I18n;
27
+ avatar: string;
28
+ userType: string;
29
+ email: string;
30
+ userStatus: AccountStatus;
31
+ department: DepartmentEntity;
32
+ };
33
+ export type GetByIdUserEntity = {
34
+ userID: number;
35
+ larkUserID: number;
36
+ name: I18n;
37
+ avatar: {
38
+ source: string;
39
+ image?: {
40
+ large: string;
41
+ };
42
+ };
43
+ userType: string;
44
+ email: string;
45
+ userStatus: AccountStatus;
46
+ department: DepartmentEntity;
47
+ };
48
+ export type UserResponse = {
49
+ user_list: User[];
50
+ };
51
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/service/services/user-service/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE1D,MAAM,MAAM,IAAI,GAAG;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,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;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,IAAI,EAAE,IAAI,CAAC;CACZ,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,IAAI,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,aAAa,CAAC;IAC1B,UAAU,EAAE,gBAAgB,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,IAAI,CAAC;IACX,MAAM,EAAE;QACN,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE;YACN,KAAK,EAAE,MAAM,CAAC;SACf,CAAC;KACH,CAAC;IACF,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,aAAa,CAAC;IAC1B,UAAU,EAAE,gBAAgB,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,SAAS,EAAE,IAAI,EAAE,CAAC;CACnB,CAAC"}
File without changes
@@ -0,0 +1,8 @@
1
+ import { AccountStatus, UserStatus } from '../services/types';
2
+ import type { I18n } from '../services/user-service/types';
3
+ export declare const isBrowser: () => boolean;
4
+ export declare const serializeSessionBrandId: (brand: string) => string;
5
+ export declare const getCookieByName: (name: string) => string;
6
+ export declare const retrieveNameFromI18n: (i18ns?: I18n) => string;
7
+ export declare const convertUserStatus: (status?: AccountStatus) => UserStatus;
8
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/service/utils/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gCAAgC,CAAC;AAE3D,eAAO,MAAM,SAAS,eAC4C,CAAC;AAEnE,eAAO,MAAM,uBAAuB,GAAI,OAAO,MAAM,KAAG,MAMvD,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,MAAM,MAAM,KAAG,MAW9C,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,QAAQ,IAAI,WAEhD,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,SAAS,aAAa,KAAG,UAY1D,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { AccountStatus, UserStatus } from "../services/types.js";
2
+ const isBrowser = ()=>'undefined' != typeof window && 'undefined' != typeof document;
3
+ const serializeSessionBrandId = (brand)=>{
4
+ if ('miaoda' === brand) return '1';
5
+ return '0';
6
+ };
7
+ const getCookieByName = (name)=>{
8
+ if (!isBrowser()) return '';
9
+ const cookies = document.cookie.split(';');
10
+ return cookies.find((cookie)=>cookie.trim().startsWith(`${name}=`))?.split('=')[1] ?? '';
11
+ };
12
+ const retrieveNameFromI18n = (i18ns)=>i18ns?.zh_cn || i18ns?.en_us || i18ns?.ja_jp || '';
13
+ const convertUserStatus = (status)=>{
14
+ if (status === AccountStatus.Active || status === AccountStatus.Inactive) return UserStatus.active;
15
+ if (status === AccountStatus.Disabled || status === AccountStatus.Terminated) return UserStatus.inactive;
16
+ return UserStatus.active;
17
+ };
18
+ export { convertUserStatus, getCookieByName, isBrowser, retrieveNameFromI18n, serializeSessionBrandId };
@@ -0,0 +1,15 @@
1
+ import type { FetchMethod } from './types';
2
+ type LogParams = {
3
+ traceId: number;
4
+ url: string;
5
+ method: FetchMethod;
6
+ body?: unknown;
7
+ };
8
+ export declare const logRequest: (params: LogParams, psmName?: string) => void;
9
+ export declare const logResponse: (traceId: number, response: {
10
+ data: any;
11
+ error: any;
12
+ status: number;
13
+ }, psmName?: string) => void;
14
+ export {};
15
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/service/utils/logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C,KAAK,SAAS,GAAG;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,WAAW,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,QAAQ,SAAS,EAAE,UAAS,MAAkB,SAwBxE,CAAC;AAEF,eAAO,MAAM,WAAW,GACtB,SAAS,MAAM,EAEf,UAAU;IAAE,IAAI,EAAE,GAAG,CAAC;IAAC,KAAK,EAAE,GAAG,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EACnD,UAAS,MAAkB,SA0B5B,CAAC"}
@@ -0,0 +1,18 @@
1
+ const logRequest = (params, psmName = 'Service')=>{
2
+ const { traceId, url, method, body } = params;
3
+ const decodedParams = Array.from(new URL(url, 'http://temp.invalid').searchParams.entries()).filter(([key])=>![
4
+ 'count',
5
+ 'tx',
6
+ 'missing',
7
+ 'resolution',
8
+ 'column'
9
+ ].includes(key)).map(([key, value])=>`${key}=${value}`);
10
+ console.log(`[Dataloom][${psmName}][Request]`, 'trace id:', traceId, 'method:', method, 'params:', decodedParams.join(','), 'body:', body);
11
+ };
12
+ const logResponse = (traceId, response, psmName = 'Service')=>{
13
+ const { data, error, status } = response;
14
+ const hasError = !!error;
15
+ if (hasError) console.error(`[Dataloom][${psmName}][Response Failed]`, 'trace id:', traceId, 'statusCode:', status, 'error:', error);
16
+ else console.log(`[Dataloom][${psmName}][Response Success]`, 'trace id:', traceId, 'statusCode:', status, 'data:', data);
17
+ };
18
+ export { logRequest, logResponse };
@@ -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/service/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,20 @@
1
+ class TraceIdGenerator {
2
+ constructor(){
3
+ this.counter = 1;
4
+ }
5
+ static getInstance() {
6
+ if (!TraceIdGenerator.instance) TraceIdGenerator.instance = new TraceIdGenerator();
7
+ return TraceIdGenerator.instance;
8
+ }
9
+ next() {
10
+ return this.counter++;
11
+ }
12
+ getCurrent() {
13
+ return this.counter;
14
+ }
15
+ reset() {
16
+ this.counter = 1;
17
+ }
18
+ }
19
+ const traceIdGenerator = TraceIdGenerator.getInstance();
20
+ export { TraceIdGenerator, traceIdGenerator };
@@ -0,0 +1,49 @@
1
+ export declare enum ServiceName {
2
+ DEFAULT = "default",
3
+ UserService = "user-service",
4
+ SessionService = "session-service"
5
+ }
6
+ export type Fetch = typeof fetch;
7
+ export type FetchMethod = 'GET' | 'HEAD' | 'POST' | 'PATCH' | 'DELETE';
8
+ export type FetchOptions = {
9
+ method: FetchMethod;
10
+ body?: any;
11
+ };
12
+ export interface ExtraInfo {
13
+ psmName?: string;
14
+ }
15
+ export interface DataloomServiceError {
16
+ code: number;
17
+ details: string;
18
+ hint: string | null;
19
+ message: string;
20
+ }
21
+ export type OnRequestErrorType = DataloomServiceError & {
22
+ status: number;
23
+ statusText: string;
24
+ };
25
+ export type DataloomServiceOptions = {
26
+ headers?: {
27
+ [key: string]: string;
28
+ };
29
+ fetch?: Fetch;
30
+ logger?: boolean;
31
+ brandName: string;
32
+ appId: string;
33
+ onRequestError?: (error: OnRequestErrorType) => void;
34
+ };
35
+ interface DataloomServiceBase {
36
+ status: number;
37
+ statusText: string;
38
+ }
39
+ export interface DataloomServiceSuccess<T> extends DataloomServiceBase {
40
+ error: null;
41
+ data: T;
42
+ }
43
+ export interface DataloomServiceFailure extends DataloomServiceBase {
44
+ error: DataloomServiceError;
45
+ data: null;
46
+ }
47
+ export type DataloomServiceResponse<T> = DataloomServiceSuccess<T> | DataloomServiceFailure;
48
+ export {};
49
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/service/utils/types.ts"],"names":[],"mappings":"AAAA,oBAAY,WAAW;IACrB,OAAO,YAAY;IACnB,WAAW,iBAAiB;IAC5B,cAAc,oBAAoB;CACnC;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;IAEpB,IAAI,CAAC,EAAE,GAAG,CAAC;CACZ,CAAC;AAEF,MAAM,WAAW,SAAS;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,kBAAkB,GAAG,oBAAoB,GAAG;IACtD,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IAEnC,OAAO,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IAEpC,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;CACtD,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,oBAAoB,CAAC;IAC5B,IAAI,EAAE,IAAI,CAAC;CACZ;AAED,MAAM,MAAM,uBAAuB,CAAC,CAAC,IACjC,sBAAsB,CAAC,CAAC,CAAC,GACzB,sBAAsB,CAAC"}
@@ -0,0 +1,7 @@
1
+ var types_ServiceName = /*#__PURE__*/ function(ServiceName) {
2
+ ServiceName["DEFAULT"] = "default";
3
+ ServiceName["UserService"] = "user-service";
4
+ ServiceName["SessionService"] = "session-service";
5
+ return ServiceName;
6
+ }({});
7
+ export { types_ServiceName as ServiceName };
@@ -0,0 +1,22 @@
1
+ import type { Fetch } from './libs/fetch';
2
+ import type { OnRequestErrorType } from './libs/types';
3
+ import StorageBucketApi from './packages/StorageBucketApi';
4
+ import StorageFileApi from './packages/StorageFileApi';
5
+ export interface StorageClientOptions {
6
+ useNewHostname?: boolean;
7
+ enableLogger?: boolean;
8
+ appId?: string;
9
+ onRequestError: (error: OnRequestErrorType) => void;
10
+ }
11
+ export declare class StorageClient extends StorageBucketApi {
12
+ constructor(url: string, headers?: {
13
+ [key: string]: string;
14
+ }, fetch?: Fetch, opts?: StorageClientOptions);
15
+ /**
16
+ * Perform file operation in a bucket.
17
+ *
18
+ * @param id The bucket id to operate on.
19
+ */
20
+ from(id: string): StorageFileApi;
21
+ }
22
+ //# sourceMappingURL=StorageClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StorageClient.d.ts","sourceRoot":"","sources":["../../src/storage/StorageClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,gBAAgB,MAAM,6BAA6B,CAAC;AAC3D,OAAO,cAAc,MAAM,2BAA2B,CAAC;AAEvD,MAAM,WAAW,oBAAoB;IACnC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;CACrD;AAED,qBAAa,aAAc,SAAQ,gBAAgB;gBAE/C,GAAG,EAAE,MAAM,EACX,OAAO,GAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAO,EACvC,KAAK,CAAC,EAAE,KAAK,EACb,IAAI,CAAC,EAAE,oBAAoB;IAK7B;;;;OAIG;IACH,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,cAAc;CAWjC"}
@@ -0,0 +1,11 @@
1
+ import StorageBucketApi from "./packages/StorageBucketApi.js";
2
+ import StorageFileApi from "./packages/StorageFileApi.js";
3
+ class StorageClient extends StorageBucketApi {
4
+ constructor(url, headers = {}, fetch, opts){
5
+ super(url, headers, fetch, opts);
6
+ }
7
+ from(id) {
8
+ return new StorageFileApi(this.url, this.headers, id, this.appId, this.fetch, this.loggerEnabled, this.onRequestError);
9
+ }
10
+ }
11
+ export { StorageClient };
@@ -0,0 +1,4 @@
1
+ export * from './libs/errors';
2
+ export * from './libs/types';
3
+ export { StorageClient } from './StorageClient';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { StorageClient } from "./StorageClient.js";
2
+ export * from "./libs/errors.js";
3
+ export * from "./libs/types.js";
4
+ export { StorageClient };
@@ -0,0 +1,4 @@
1
+ export declare const DEFAULT_HEADERS: {
2
+ 'X-Client-Info': string;
3
+ };
4
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/storage/libs/constants.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,eAAe;;CAA+C,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { version } from "./version.js";
2
+ const DEFAULT_HEADERS = {
3
+ 'X-Client-Info': `storage-js/${version}`
4
+ };
5
+ export { DEFAULT_HEADERS };
@@ -0,0 +1,24 @@
1
+ export declare class StorageError extends Error {
2
+ protected __isStorageError: boolean;
3
+ constructor(message: string);
4
+ }
5
+ export declare function isStorageError(error: unknown): error is StorageError;
6
+ export declare class StorageApiError extends StorageError {
7
+ status: number;
8
+ statusCode: string;
9
+ constructor(message: string, status: number, statusCode: string);
10
+ toJSON(): {
11
+ name: string;
12
+ message: string;
13
+ status: number;
14
+ statusCode: string;
15
+ };
16
+ }
17
+ export declare class StorageUnknownError extends StorageError {
18
+ originalError: unknown;
19
+ constructor(message: string, originalError: unknown);
20
+ }
21
+ export declare const isServerCustomError: (res: any, noResolveJson?: boolean) => any;
22
+ export declare const isSdkRateLimited: (res: any) => boolean;
23
+ export declare const isCustomError: (res: any) => any;
24
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/storage/libs/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,YAAa,SAAQ,KAAK;IACrC,SAAS,CAAC,gBAAgB,UAAQ;gBAEtB,OAAO,EAAE,MAAM;CAI5B;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAIpE;AAED,qBAAa,eAAgB,SAAQ,YAAY;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;gBAEP,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;IAO/D,MAAM;;;;;;CAQP;AAED,qBAAa,mBAAoB,SAAQ,YAAY;IACnD,aAAa,EAAE,OAAO,CAAC;gBAEX,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO;CAKpD;AAED,eAAO,MAAM,mBAAmB,GAAI,KAAK,GAAG,EAAE,gBAAgB,OAAO,QAMpE,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,KAAK,GAAG,YAExC,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,KAAK,GAAG,QAErC,CAAC"}
@@ -0,0 +1,39 @@
1
+ class StorageError extends Error {
2
+ constructor(message){
3
+ super(message), this.__isStorageError = true;
4
+ this.name = 'StorageError';
5
+ }
6
+ }
7
+ function isStorageError(error) {
8
+ return 'object' == typeof error && null !== error && '__isStorageError' in error;
9
+ }
10
+ class StorageApiError extends StorageError {
11
+ constructor(message, status, statusCode){
12
+ super(message);
13
+ this.name = 'StorageApiError';
14
+ this.status = status;
15
+ this.statusCode = statusCode;
16
+ }
17
+ toJSON() {
18
+ return {
19
+ name: this.name,
20
+ message: this.message,
21
+ status: this.status,
22
+ statusCode: this.statusCode
23
+ };
24
+ }
25
+ }
26
+ class StorageUnknownError extends StorageError {
27
+ constructor(message, originalError){
28
+ super(message);
29
+ this.name = 'StorageUnknownError';
30
+ this.originalError = originalError;
31
+ }
32
+ }
33
+ const isServerCustomError = (res, noResolveJson)=>{
34
+ if (noResolveJson && 'TosServer' !== res.headers.get('server')) return true;
35
+ return res.error_msg;
36
+ };
37
+ const isSdkRateLimited = (res)=>429 === res.status && 'Too Many Requests' === res.statusText;
38
+ const isCustomError = (res)=>isServerCustomError(res) || isSdkRateLimited(res);
39
+ export { StorageApiError, StorageError, StorageUnknownError, isCustomError, isSdkRateLimited, isServerCustomError, isStorageError };
@@ -0,0 +1,24 @@
1
+ import type { FetchParameters, OnRequestErrorType } from './types';
2
+ export type Fetch = typeof fetch;
3
+ export interface FetchOptions {
4
+ headers?: {
5
+ [key: string]: string;
6
+ };
7
+ duplex?: string;
8
+ noResolveJson?: boolean;
9
+ logFetch?: boolean;
10
+ onRequestError?: (error: OnRequestErrorType) => void;
11
+ }
12
+ export interface ExtraInfo {
13
+ /**
14
+ * dataloom PSM name for logging.
15
+ */
16
+ psmName?: string;
17
+ }
18
+ export type RequestMethodType = 'GET' | 'POST' | 'PUT' | 'DELETE' | 'HEAD';
19
+ export declare function get(fetcher: Fetch, url: string, options?: FetchOptions, parameters?: FetchParameters, extras?: ExtraInfo): Promise<any>;
20
+ export declare function post(fetcher: Fetch, url: string, body: object, options?: FetchOptions, parameters?: FetchParameters, extras?: ExtraInfo): Promise<any>;
21
+ export declare function put(fetcher: Fetch, url: string, body: object, options?: FetchOptions, parameters?: FetchParameters, extras?: ExtraInfo): Promise<any>;
22
+ export declare function head(fetcher: Fetch, url: string, options?: FetchOptions, parameters?: FetchParameters, extras?: ExtraInfo): Promise<any>;
23
+ export declare function remove(fetcher: Fetch, url: string, body: object, options?: FetchOptions, parameters?: FetchParameters, extras?: ExtraInfo): Promise<any>;
24
+ //# sourceMappingURL=fetch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../../src/storage/libs/fetch.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAEnE,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC;AAEjC,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE;QACR,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;KACvB,CAAC;IACF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;CACtD;AAED,MAAM,WAAW,SAAS;IACxB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,iBAAiB,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;AA8M3E,wBAAsB,GAAG,CACvB,OAAO,EAAE,KAAK,EACd,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,YAAY,EACtB,UAAU,CAAC,EAAE,eAAe,EAC5B,MAAM,CAAC,EAAE,SAAS,GACjB,OAAO,CAAC,GAAG,CAAC,CAUd;AAED,wBAAsB,IAAI,CACxB,OAAO,EAAE,KAAK,EACd,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,YAAY,EACtB,UAAU,CAAC,EAAE,eAAe,EAC5B,MAAM,CAAC,EAAE,SAAS,GACjB,OAAO,CAAC,GAAG,CAAC,CAUd;AAED,wBAAsB,GAAG,CACvB,OAAO,EAAE,KAAK,EACd,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,YAAY,EACtB,UAAU,CAAC,EAAE,eAAe,EAC5B,MAAM,CAAC,EAAE,SAAS,GACjB,OAAO,CAAC,GAAG,CAAC,CAEd;AAED,wBAAsB,IAAI,CACxB,OAAO,EAAE,KAAK,EACd,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,YAAY,EACtB,UAAU,CAAC,EAAE,eAAe,EAC5B,MAAM,CAAC,EAAE,SAAS,GACjB,OAAO,CAAC,GAAG,CAAC,CAYd;AAED,wBAAsB,MAAM,CAC1B,OAAO,EAAE,KAAK,EACd,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,YAAY,EACtB,UAAU,CAAC,EAAE,eAAe,EAC5B,MAAM,CAAC,EAAE,SAAS,GACjB,OAAO,CAAC,GAAG,CAAC,CAUd"}
@@ -0,0 +1,139 @@
1
+ import { logRequest, logResponse } from "../utils/logger.js";
2
+ import { traceIdGenerator } from "../utils/trace-id.js";
3
+ import { StorageApiError, StorageUnknownError, isSdkRateLimited, isServerCustomError } from "./errors.js";
4
+ import { isPlainObject, resolveResponse } from "./helpers.js";
5
+ const _getErrorMessage = (err)=>err.msg || err.message || err.error_description || err.error || JSON.stringify(err);
6
+ const handleError = async (error, reject, options)=>{
7
+ const Res = await resolveResponse();
8
+ if (isSdkRateLimited(error)) {
9
+ const rateLimitedError = {
10
+ code: 429,
11
+ message: 'Too many requests received within 5 seconds.',
12
+ details: '',
13
+ hint: 'Retry after 5 seconds.'
14
+ };
15
+ options?.onRequestError?.({
16
+ status: 429,
17
+ statusText: 'Too Many Requests',
18
+ ...rateLimitedError
19
+ });
20
+ return reject(rateLimitedError);
21
+ }
22
+ if (error instanceof Res && !options?.noResolveJson) error.json().then((err)=>{
23
+ const status = error.status || 500;
24
+ const statusCode = err?.statusCode || `${status}`;
25
+ options?.onRequestError?.({
26
+ status,
27
+ statusText: statusCode,
28
+ code: err?.status_code || status,
29
+ message: err?.error_msg || '',
30
+ details: '',
31
+ hint: ''
32
+ });
33
+ reject(new StorageApiError(_getErrorMessage(err), status, statusCode));
34
+ }).catch((err)=>{
35
+ reject(new StorageUnknownError(_getErrorMessage(err), err));
36
+ });
37
+ else reject(new StorageUnknownError(_getErrorMessage(error), error));
38
+ };
39
+ const _getRequestParams = (method, options, parameters, body)=>{
40
+ const params = {
41
+ method,
42
+ headers: options?.headers || {}
43
+ };
44
+ if ('GET' === method || !body) return params;
45
+ if (isPlainObject(body)) {
46
+ params.headers = {
47
+ 'Content-Type': 'application/json',
48
+ ...options?.headers
49
+ };
50
+ params.body = JSON.stringify(body);
51
+ } else params.body = body;
52
+ if (options?.duplex) params.duplex = options.duplex;
53
+ return {
54
+ ...params,
55
+ ...parameters
56
+ };
57
+ };
58
+ async function _handleRequest(fetcher, method, url, options, parameters, body, extras) {
59
+ let traceId = -1;
60
+ let res_status = 200;
61
+ const psmName = extras?.psmName;
62
+ if (options?.logFetch) {
63
+ traceId = traceIdGenerator.next();
64
+ logRequest({
65
+ traceId,
66
+ url,
67
+ method,
68
+ body
69
+ }, psmName);
70
+ }
71
+ return new Promise((resolve, reject)=>{
72
+ fetcher(url, _getRequestParams(method, options, parameters, body)).then((result)=>{
73
+ res_status = result.status;
74
+ if (!result.ok) throw result;
75
+ if (options?.noResolveJson) return result;
76
+ return result.json();
77
+ }).then(async (data)=>{
78
+ if (isServerCustomError(data)) {
79
+ options?.onRequestError?.({
80
+ status: 200,
81
+ statusText: '',
82
+ code: data?.status_code || 200,
83
+ message: data?.error_msg || '',
84
+ details: '',
85
+ hint: ''
86
+ });
87
+ if (options?.logFetch) logResponse(traceId, {
88
+ data: null,
89
+ error: data,
90
+ status: res_status
91
+ }, psmName);
92
+ return reject(data);
93
+ }
94
+ if (options?.logFetch) {
95
+ let parsedData = null;
96
+ let error = null;
97
+ if (options?.noResolveJson) try {
98
+ if ('TosServer' === data.headers.get('server') || data.headers.get('etag')) parsedData = await data.clone().text();
99
+ else error = await data.clone().json();
100
+ } catch (e) {
101
+ error = _getErrorMessage(e);
102
+ }
103
+ else parsedData = data;
104
+ logResponse(traceId, {
105
+ data: parsedData,
106
+ error,
107
+ status: res_status
108
+ }, psmName);
109
+ }
110
+ return resolve(data);
111
+ }).catch((error)=>{
112
+ if (options?.logFetch) logResponse(traceId, {
113
+ data: null,
114
+ error: _getErrorMessage(error),
115
+ status: error?.status
116
+ }, psmName);
117
+ handleError(error, reject, options);
118
+ });
119
+ });
120
+ }
121
+ async function get(fetcher, url, options, parameters, extras) {
122
+ return _handleRequest(fetcher, 'GET', url, options, parameters, void 0, extras);
123
+ }
124
+ async function post(fetcher, url, body, options, parameters, extras) {
125
+ return _handleRequest(fetcher, 'POST', url, options, parameters, body, extras);
126
+ }
127
+ async function put(fetcher, url, body, options, parameters, extras) {
128
+ return _handleRequest(fetcher, 'PUT', url, options, parameters, body, extras);
129
+ }
130
+ async function head(fetcher, url, options, parameters, extras) {
131
+ return _handleRequest(fetcher, 'HEAD', url, {
132
+ ...options,
133
+ noResolveJson: true
134
+ }, parameters, extras);
135
+ }
136
+ async function remove(fetcher, url, body, options, parameters, extras) {
137
+ return _handleRequest(fetcher, 'DELETE', url, options, parameters, body, extras);
138
+ }
139
+ export { get, head, post, put, remove };
@@ -0,0 +1,18 @@
1
+ import type { FileBody } from './types';
2
+ type Fetch = typeof fetch;
3
+ export declare const resolveFetch: (customFetch?: Fetch) => Fetch;
4
+ export declare const resolveResponse: () => Promise<typeof Response>;
5
+ export declare const recursiveToCamel: (item: Record<string, any>) => unknown;
6
+ /**
7
+ * Determine if input is a plain object
8
+ * An object is plain if it's created by either {}, new Object(), or Object.create(null)
9
+ * source: https://github.com/sindresorhus/is-plain-obj
10
+ */
11
+ export declare const isPlainObject: (value: object) => boolean;
12
+ export declare const getUpdateFileSize: (file: FileBody) => string;
13
+ export declare const toValidExpiresIn: (expiresIn: number) => number;
14
+ export declare const transformFilePayload: (file: any) => any;
15
+ export declare const sanitizeFileName: (fileName: string) => string;
16
+ export declare const checkIsVolcEngineUrl: (url: string) => boolean;
17
+ export {};
18
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/storage/libs/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAIxC,KAAK,KAAK,GAAG,OAAO,KAAK,CAAC;AAE1B,eAAO,MAAM,YAAY,GAAI,cAAc,KAAK,KAAG,KAQlD,CAAC;AAEF,eAAO,MAAM,eAAe,QAAa,OAAO,CAAC,OAAO,QAAQ,CAE/D,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,MAAM,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAG,OAgB5D,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAI,OAAO,MAAM,KAAG,OAa7C,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,MAAM,QAAQ,KAAG,MAqBlD,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,WAAW,MAAM,WAQjD,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,MAAM,GAAG,QAe7C,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,UAAU,MAAM,WAMhD,CAAC;AAKF,eAAO,MAAM,oBAAoB,GAAI,KAAK,MAAM,YAE/C,CAAC"}