@lark-apaas/dataloom 0.1.4-alpha.7 → 0.1.4-alpha.9

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 (68) hide show
  1. package/README.md +24 -32
  2. package/lib/DataloomClient.d.ts +7 -7
  3. package/lib/DataloomClient.d.ts.map +1 -1
  4. package/lib/DataloomClient.js +6 -15
  5. package/lib/index.d.ts +5 -1
  6. package/lib/index.d.ts.map +1 -1
  7. package/lib/index.js +1 -1
  8. package/lib/service/index.d.ts +26 -5
  9. package/lib/service/index.d.ts.map +1 -1
  10. package/lib/service/index.js +3 -6
  11. package/lib/service/types.d.ts +113 -0
  12. package/lib/service/types.d.ts.map +1 -0
  13. package/lib/storage/StorageClient.d.ts +1 -3
  14. package/lib/storage/StorageClient.d.ts.map +1 -1
  15. package/lib/storage/StorageClient.js +6 -4
  16. package/lib/storage/libs/fetch.d.ts +6 -0
  17. package/lib/storage/libs/fetch.d.ts.map +1 -1
  18. package/lib/storage/libs/fetch.js +11 -1
  19. package/lib/storage/libs/helpers.d.ts +14 -0
  20. package/lib/storage/libs/helpers.d.ts.map +1 -1
  21. package/lib/storage/libs/helpers.js +28 -18
  22. package/lib/storage/libs/types.d.ts +5 -6
  23. package/lib/storage/libs/types.d.ts.map +1 -1
  24. package/lib/storage/packages/StorageFileApi.d.ts +4 -0
  25. package/lib/storage/packages/StorageFileApi.d.ts.map +1 -1
  26. package/lib/storage/packages/StorageFileApi.js +35 -46
  27. package/lib/storage/utils/csrf.d.ts +11 -0
  28. package/lib/storage/utils/csrf.d.ts.map +1 -0
  29. package/lib/storage/utils/csrf.js +10 -0
  30. package/lib/utils/fetch.d.ts +8 -1
  31. package/lib/utils/fetch.d.ts.map +1 -1
  32. package/lib/utils/fetch.js +3 -8
  33. package/lib/utils/helpers.d.ts +0 -1
  34. package/lib/utils/helpers.d.ts.map +1 -1
  35. package/lib/utils/helpers.js +1 -4
  36. package/lib/utils/types.d.ts +10 -0
  37. package/lib/utils/types.d.ts.map +1 -1
  38. package/package.json +1 -1
  39. package/lib/service/services/DataloomServiceBase.d.ts +0 -17
  40. package/lib/service/services/DataloomServiceBase.d.ts.map +0 -1
  41. package/lib/service/services/DataloomServiceBase.js +0 -126
  42. package/lib/service/services/session-service/index.d.ts +0 -45
  43. package/lib/service/services/session-service/index.d.ts.map +0 -1
  44. package/lib/service/services/session-service/index.js +0 -137
  45. package/lib/service/services/session-service/types.d.ts +0 -34
  46. package/lib/service/services/session-service/types.d.ts.map +0 -1
  47. package/lib/service/services/types.d.ts +0 -12
  48. package/lib/service/services/types.d.ts.map +0 -1
  49. package/lib/service/services/types.js +0 -14
  50. package/lib/service/services/user-service/index.d.ts +0 -9
  51. package/lib/service/services/user-service/index.d.ts.map +0 -1
  52. package/lib/service/services/user-service/index.js +0 -62
  53. package/lib/service/services/user-service/types.d.ts +0 -57
  54. package/lib/service/services/user-service/types.d.ts.map +0 -1
  55. package/lib/service/services/user-service/types.js +0 -0
  56. package/lib/service/utils/helpers.d.ts +0 -8
  57. package/lib/service/utils/helpers.d.ts.map +0 -1
  58. package/lib/service/utils/helpers.js +0 -18
  59. package/lib/service/utils/logger.d.ts +0 -15
  60. package/lib/service/utils/logger.d.ts.map +0 -1
  61. package/lib/service/utils/logger.js +0 -18
  62. package/lib/service/utils/trace-id.d.ts +0 -45
  63. package/lib/service/utils/trace-id.d.ts.map +0 -1
  64. package/lib/service/utils/trace-id.js +0 -20
  65. package/lib/service/utils/types.d.ts +0 -49
  66. package/lib/service/utils/types.d.ts.map +0 -1
  67. package/lib/service/utils/types.js +0 -7
  68. /package/lib/service/{services/session-service/types.js → types.js} +0 -0
package/README.md CHANGED
@@ -47,18 +47,17 @@ import { createClient } from '@lark-apaas/dataloom';
47
47
  ```ts
48
48
  import { createClient } from '@lark-apaas/dataloom';
49
49
 
50
- const client = createClient(
51
- 'https://example.com',
52
- 'dataloom-key',
53
- {
54
- global: {
55
- brandName: 'miaoda',
56
- appId: 'app_xxx',
57
- },
50
+ const client = createClient({
51
+ global: {
52
+ brandName: 'miaoda',
53
+ appId: 'app_xxx',
58
54
  },
59
- );
55
+ });
60
56
  ```
61
57
 
58
+ > storage 走 cookie session 鉴权(runtime endpoint 自动携带 cookie),不再需要传入
59
+ > `dataloomUrl` / `dataloomKey`;appId 通过 `options.global.appId` 传入即可。
60
+
62
61
  创建完成后,可以通过以下入口访问能力:
63
62
 
64
63
  - `client.service.user`
@@ -70,21 +69,18 @@ const client = createClient(
70
69
  ### `createClient(...)`
71
70
 
72
71
  ```ts
73
- createClient(
74
- dataloomUrl: string,
75
- dataloomKey: string,
76
- options?: DataloomClientOptions,
77
- )
72
+ createClient(options?: DataloomClientOptions)
78
73
  ```
79
74
 
80
75
  #### 入参
81
76
 
82
77
  | 参数 | 类型 | 必填 | 说明 |
83
78
  | --- | --- | --- | --- |
84
- | `dataloomUrl` | `string` | 是 | Dataloom 服务地址 |
85
- | `dataloomKey` | `string` | 是 | 访问 Dataloom 的 key |
86
79
  | `options` | `DataloomClientOptions` | 否 | 初始化配置 |
87
80
 
81
+ > storage 走 cookie session 鉴权,不再需要 `dataloomUrl` / `dataloomKey`;
82
+ > appId 通过 `options.global.appId` 传入。
83
+
88
84
  #### 返回
89
85
 
90
86
  | 返回值 | 类型 | 说明 |
@@ -124,24 +120,20 @@ type DataloomClientOptions = {
124
120
  完整示例:
125
121
 
126
122
  ```ts
127
- const client = createClient(
128
- 'https://example.com',
129
- 'dataloom-key',
130
- {
131
- global: {
132
- brandName: 'miaoda',
133
- appId: 'app_xxx',
134
- headers: {
135
- 'x-custom-header': 'demo',
136
- },
137
- enableDataloomLog: false,
138
- requestRateLimit: 5,
139
- onError(error, instance) {
140
- console.error('[dataloom error]', error, instance);
141
- },
123
+ const client = createClient({
124
+ global: {
125
+ brandName: 'miaoda',
126
+ appId: 'app_xxx',
127
+ headers: {
128
+ 'x-custom-header': 'demo',
129
+ },
130
+ enableDataloomLog: false,
131
+ requestRateLimit: 5,
132
+ onError(error, instance) {
133
+ console.error('[dataloom error]', error, instance);
142
134
  },
143
135
  },
144
- );
136
+ });
145
137
  ```
146
138
 
147
139
  ## Service API
@@ -2,29 +2,29 @@ import RateLimiter from './RateLimiter';
2
2
  import DataloomService from './service';
3
3
  import { StorageClient } from './storage';
4
4
  import type { DataloomClientOptions, Fetch } from './utils/types';
5
- import type { OnRequestErrorType } from './service/utils/types';
5
+ import type { OnRequestErrorType } from './storage/libs/types';
6
6
  /**
7
7
  * Dataloom Client.
8
8
  *
9
9
  * An isomorphic Javascript client for interacting with Dataloom service and storage.
10
10
  */
11
11
  export default class DataloomClient {
12
- protected dataloomUrl: string;
13
- protected dataloomKey: string;
14
12
  service: DataloomService;
15
13
  storage: StorageClient;
16
- protected storageUrl: string;
17
14
  protected fetch?: Fetch;
18
15
  protected rateLimiter?: RateLimiter;
19
16
  protected onRequestError: (error: OnRequestErrorType) => void;
20
17
  protected headers: Record<string, string>;
21
18
  /**
22
19
  * Create a new client for use in the browser.
23
- * @param dataloomUrl The unique Dataloom URL which is supplied when you create a new project.
24
- * @param dataloomKey The unique Dataloom Key which is supplied when you create a new project.
20
+ *
21
+ * Storage requests target the `/app/:appId/__runtime__/api/v1/storage`
22
+ * runtime endpoints and rely on cookie session authentication.
23
+ *
24
+ * @param options.global.appId The appId used to build the storage runtime path.
25
25
  * @param options.global.fetch A custom fetch implementation.
26
26
  * @param options.global.headers Any additional headers to send with each network request.
27
27
  */
28
- constructor(dataloomUrl: string, dataloomKey: string, options?: DataloomClientOptions);
28
+ constructor(options?: DataloomClientOptions);
29
29
  }
30
30
  //# sourceMappingURL=DataloomClient.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DataloomClient.d.ts","sourceRoot":"","sources":["../src/DataloomClient.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,eAAe,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAK1C,OAAO,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAEhE;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,cAAc;IAmB/B,SAAS,CAAC,WAAW,EAAE,MAAM;IAC7B,SAAS,CAAC,WAAW,EAAE,MAAM;IAnB/B,OAAO,EAAE,eAAe,CAAC;IACzB,OAAO,EAAE,aAAa,CAAC;IAEvB,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC;IAC7B,SAAS,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;IACxB,SAAS,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;IACpC,SAAS,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAE9D,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE1C;;;;;;OAMG;gBAES,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EAC7B,OAAO,CAAC,EAAE,qBAAqB;CA0DlC"}
1
+ {"version":3,"file":"DataloomClient.d.ts","sourceRoot":"","sources":["../src/DataloomClient.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,eAAe,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAK1C,OAAO,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,cAAc;IACjC,OAAO,EAAE,eAAe,CAAC;IACzB,OAAO,EAAE,aAAa,CAAC;IAEvB,SAAS,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;IACxB,SAAS,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;IACpC,SAAS,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAE9D,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE1C;;;;;;;;;OASG;gBACS,OAAO,CAAC,EAAE,qBAAqB;CAuC5C"}
@@ -2,15 +2,11 @@ import RateLimiter from "./RateLimiter.js";
2
2
  import service from "./service/index.js";
3
3
  import { StorageClient } from "./storage/index.js";
4
4
  import { DEFAULT_GLOBAL_OPTIONS } from "./utils/constants.js";
5
- import { fetchWithAuth } from "./utils/fetch.js";
6
- import { applySettingDefaults, stripTrailingSlash } from "./utils/helpers.js";
5
+ import { createRateLimitedFetch } from "./utils/fetch.js";
6
+ import { applySettingDefaults } from "./utils/helpers.js";
7
7
  import { reportDataloomException } from "./utils/slardar.js";
8
8
  class DataloomClient {
9
- constructor(dataloomUrl, dataloomKey, options){
10
- this.dataloomUrl = dataloomUrl;
11
- this.dataloomKey = dataloomKey;
12
- const normalizedDataloomUrl = stripTrailingSlash(dataloomUrl);
13
- this.storageUrl = `${normalizedDataloomUrl}/storage`;
9
+ constructor(options){
14
10
  const DEFAULTS = {
15
11
  global: DEFAULT_GLOBAL_OPTIONS
16
12
  };
@@ -25,16 +21,11 @@ class DataloomClient {
25
21
  if (settings.global.onError) settings.global.onError(error, this);
26
22
  };
27
23
  if (settings.global.requestRateLimit && settings.global.requestRateLimit > 0) this.rateLimiter = new RateLimiter(settings.global.requestRateLimit);
28
- this.fetch = fetchWithAuth(dataloomKey, this.rateLimiter, settings.global.fetch);
24
+ this.fetch = createRateLimitedFetch(this.rateLimiter, settings.global.fetch);
29
25
  this.service = new service({
30
- headers: this.headers,
31
- fetch: this.fetch,
32
- logger: settings.global.enableDataloomLog,
33
- brandName: settings.global.brandName,
34
- appId: settings.global.appId,
35
- onRequestError: this.onRequestError
26
+ accountServices: settings.global.accountServices
36
27
  });
37
- this.storage = new StorageClient(this.storageUrl, this.headers, this.fetch, {
28
+ this.storage = new StorageClient(this.headers, this.fetch, {
38
29
  enableLogger: settings.global.enableDataloomLog,
39
30
  onRequestError: this.onRequestError,
40
31
  appId: settings.global.appId
package/lib/index.d.ts CHANGED
@@ -4,6 +4,10 @@ export { default as DataloomClient } from './DataloomClient';
4
4
  export type { DataloomClientOptions } from './utils/types';
5
5
  /**
6
6
  * Creates a new Dataloom Client.
7
+ *
8
+ * Storage requests are authenticated via cookie session against the
9
+ * `/app/:appId/__runtime__/api/v1/storage` runtime endpoints, so no
10
+ * dataloom url / key needs to be supplied any more.
7
11
  */
8
- export declare const createClient: (dataloomUrl: string, dataloomKey: string, options?: DataloomClientOptions) => DataloomClient;
12
+ export declare const createClient: (options?: DataloomClientOptions) => DataloomClient;
9
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAE3D,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,YAAY,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAE3D;;GAEG;AACH,eAAO,MAAM,YAAY,GACvB,aAAa,MAAM,EACnB,aAAa,MAAM,EACnB,UAAU,qBAAqB,KAC9B,cAEF,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAE3D,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,YAAY,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAE3D;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,GACvB,UAAU,qBAAqB,KAC9B,cAEF,CAAC"}
package/lib/index.js CHANGED
@@ -1,3 +1,3 @@
1
1
  import DataloomClient from "./DataloomClient.js";
2
- const createClient = (dataloomUrl, dataloomKey, options)=>new DataloomClient(dataloomUrl, dataloomKey, options);
2
+ const createClient = (options)=>new DataloomClient(options);
3
3
  export { DataloomClient, createClient };
@@ -1,9 +1,30 @@
1
- import { default as SessionService } from './services/session-service';
2
- import { default as UserService } from './services/user-service';
3
- import type { DataloomServiceOptions } from './utils/types';
1
+ import type { AccountServicesInjection, SessionServiceShape, UserServiceShape } from './types';
2
+ export interface DataloomServiceOptions {
3
+ accountServices?: AccountServicesInjection;
4
+ }
5
+ /**
6
+ * DataloomService —— 账号相关服务(user / session)的承载壳。
7
+ *
8
+ * 历史背景:
9
+ * - 早期 user/session 的实现内置在 dataloom 内部;后续抽离到 `@lark-apaas/auth-sdk`,
10
+ * dataloom 不再持有具体实现,只通过依赖注入(DI)拿到 authClient.user / authClient.session。
11
+ *
12
+ * 注入路径:
13
+ * client-toolkit / client-toolkit-lite
14
+ * → createClient({ global: { accountServices: { user, session } } })
15
+ * → new DataloomClient(...)
16
+ * → new DataloomService({ accountServices })
17
+ *
18
+ * 设计要点:
19
+ * - 依赖方向单向:dataloom 不 import auth-sdk,只声明 `*ServiceShape` 形状契约。
20
+ * - 未注入时不抛错:把字段降级为空对象占位,让存在性检查(如 `if (service.user)`)
21
+ * 与对象探测保持中性;具体方法是否可用由调用方在使用点感知(拿到 undefined / TypeError)。
22
+ * - 仅作"中转字段",不做任何运行时逻辑封装。
23
+ */
4
24
  export default class DataloomService {
5
- user: UserService;
6
- session: SessionService;
25
+ readonly user: UserServiceShape;
26
+ readonly session: SessionServiceShape;
7
27
  constructor(options: DataloomServiceOptions);
8
28
  }
29
+ export type { AccountServicesInjection, SessionServiceShape, UserServiceShape };
9
30
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/service/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEjE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAE5D,MAAM,CAAC,OAAO,OAAO,eAAe;IAClC,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,cAAc,CAAC;gBAEZ,OAAO,EAAE,sBAAsB;CAK5C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/service/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EACxB,mBAAmB,EACnB,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAEjB,MAAM,WAAW,sBAAsB;IACrC,eAAe,CAAC,EAAE,wBAAwB,CAAC;CAC5C;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,OAAO,OAAO,eAAe;IAClC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAC;gBAE1B,OAAO,EAAE,sBAAsB;CAM5C;AAED,YAAY,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,CAAC"}
@@ -1,11 +1,8 @@
1
- import session_service from "./services/session-service/index.js";
2
- import user_service from "./services/user-service/index.js";
3
- import { isBrowser } from "./utils/helpers.js";
4
1
  class DataloomService {
5
2
  constructor(options){
6
- const baseUrl = isBrowser() ? window.location.origin : '';
7
- this.user = new user_service(baseUrl, options);
8
- this.session = new session_service(baseUrl, options);
3
+ const injected = options.accountServices;
4
+ this.user = injected?.user ?? {};
5
+ this.session = injected?.session ?? {};
9
6
  }
10
7
  }
11
8
  export { DataloomService as default };
@@ -0,0 +1,113 @@
1
+ /**
2
+ * Account services 形状契约。
3
+ *
4
+ * dataloom 自身不持有 user/session 实现(已迁出至 @lark-apaas/auth-sdk),
5
+ * 但仍需要类型上的"形状契约"以保证:
6
+ * 1. DataloomService.user/session 字段对老调用方有完整类型提示;
7
+ * 2. client-toolkit 注入 authClient.user/session 时编译期可结构性校验。
8
+ *
9
+ * 此处类型镜像自 auth-sdk 的 public 类型(保持结构一致),
10
+ * 但**不 import auth-sdk**,避免 dataloom → auth-sdk 的反向依赖。
11
+ *
12
+ * @see packages/client/auth-sdk/src/account/services/user-service/types.ts
13
+ * @see packages/client/auth-sdk/src/account/services/session-service/types.ts
14
+ */
15
+ export interface AccountServiceError {
16
+ code: number;
17
+ details: string;
18
+ hint: string | null;
19
+ message: string;
20
+ }
21
+ interface AccountServiceBase {
22
+ status: number;
23
+ statusText: string;
24
+ }
25
+ export interface AccountServiceSuccess<T> extends AccountServiceBase {
26
+ error: null;
27
+ data: T;
28
+ }
29
+ export interface AccountServiceFailure extends AccountServiceBase {
30
+ error: AccountServiceError;
31
+ data: null;
32
+ }
33
+ export type AccountServiceResponse<T> = AccountServiceSuccess<T> | AccountServiceFailure;
34
+ /** 与 auth-sdk UserStatus 对齐:1 = active / 2 = inactive */
35
+ export type UserStatus = 1 | 2;
36
+ export interface User {
37
+ user_id: string;
38
+ email: string;
39
+ name: string;
40
+ avatar: string;
41
+ status: UserStatus;
42
+ }
43
+ export interface SearchParams {
44
+ name: string;
45
+ pageSize?: number;
46
+ }
47
+ export interface UserResponse {
48
+ user_list: User[];
49
+ }
50
+ /**
51
+ * 用户服务形状契约(与 auth-sdk `UserService` public 方法对齐)。
52
+ */
53
+ export interface UserServiceShape {
54
+ search(params: SearchParams): Promise<AccountServiceResponse<UserResponse>>;
55
+ getByIds(ids: string[] | number[]): Promise<AccountServiceResponse<UserResponse>>;
56
+ }
57
+ export interface I18n {
58
+ language_code: number;
59
+ text: string;
60
+ }
61
+ export type I18ns = I18n[];
62
+ export interface Avatar {
63
+ source?: string;
64
+ image?: {
65
+ large?: string;
66
+ };
67
+ color?: string;
68
+ }
69
+ export interface UserBaseInfo {
70
+ user_id?: number;
71
+ name?: I18ns;
72
+ avatar?: Avatar;
73
+ email?: string;
74
+ phone_number?: string;
75
+ tenant_name?: string;
76
+ }
77
+ export interface UserInfoResponse {
78
+ user_info?: UserBaseInfo;
79
+ }
80
+ export interface SignInRedirectionOptions {
81
+ /** The URL to redirect to after a successful login. Defaults to the current URL. */
82
+ returnUrl?: string;
83
+ /** Whether to open the login page in a new tab. Defaults to `false`. */
84
+ newTab?: boolean;
85
+ }
86
+ export interface NavigateToUserProfileOptions {
87
+ newTab?: boolean;
88
+ }
89
+ /**
90
+ * 会话服务形状契约(与 auth-sdk `SessionService` public 方法对齐)。
91
+ *
92
+ * 注意:`redirectToLogin` / `navigateToUserProfile` 的成功分支在 auth-sdk
93
+ * 实现中返回 `data: 'success'`;但其中 `navigateToUserProfile` 未显式标注
94
+ * 返回类型,TS 会把字面量推断为 `string`。为了让 auth-sdk 的实例可结构性
95
+ * 赋值到本契约,这里成功分支用 `string` 而非 `'success'` 字面量。
96
+ */
97
+ export interface SessionServiceShape {
98
+ redirectToLogin(options?: SignInRedirectionOptions): AccountServiceResponse<string>;
99
+ signOut(): Promise<AccountServiceResponse<null>>;
100
+ getUrlWithBizSource(): string;
101
+ getUserInfo(): Promise<AccountServiceResponse<UserInfoResponse>>;
102
+ navigateToUserProfile(options?: NavigateToUserProfileOptions): AccountServiceResponse<string>;
103
+ }
104
+ /**
105
+ * 注入到 DataloomService 的 account services 引用。
106
+ * 由 client-toolkit 在创建 DataloomClient 时通过 options.global.accountServices 注入。
107
+ */
108
+ export interface AccountServicesInjection {
109
+ user: UserServiceShape;
110
+ session: SessionServiceShape;
111
+ }
112
+ export {};
113
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/service/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,kBAAkB;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB,CAAC,CAAC,CAAE,SAAQ,kBAAkB;IAClE,KAAK,EAAE,IAAI,CAAC;IACZ,IAAI,EAAE,CAAC,CAAC;CACT;AAED,MAAM,WAAW,qBAAsB,SAAQ,kBAAkB;IAC/D,KAAK,EAAE,mBAAmB,CAAC;IAC3B,IAAI,EAAE,IAAI,CAAC;CACZ;AAED,MAAM,MAAM,sBAAsB,CAAC,CAAC,IAChC,qBAAqB,CAAC,CAAC,CAAC,GACxB,qBAAqB,CAAC;AAI1B,yDAAyD;AACzD,MAAM,MAAM,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC;AAE/B,MAAM,WAAW,IAAI;IACnB,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;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,IAAI,EAAE,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAC,CAAC;IAC5E,QAAQ,CACN,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,GACvB,OAAO,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAC,CAAC;CAClD;AAID,MAAM,WAAW,IAAI;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,MAAM,KAAK,GAAG,IAAI,EAAE,CAAC;AAE3B,MAAM,WAAW,MAAM;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE;QACN,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,KAAK,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,YAAY,CAAC;CAC1B;AAED,MAAM,WAAW,wBAAwB;IACvC,oFAAoF;IACpF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,4BAA4B;IAC3C,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,mBAAmB;IAClC,eAAe,CACb,OAAO,CAAC,EAAE,wBAAwB,GACjC,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAClC,OAAO,IAAI,OAAO,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC;IACjD,mBAAmB,IAAI,MAAM,CAAC;IAC9B,WAAW,IAAI,OAAO,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,CAAC,CAAC;IACjE,qBAAqB,CACnB,OAAO,CAAC,EAAE,4BAA4B,GACrC,sBAAsB,CAAC,MAAM,CAAC,CAAC;CACnC;AAID;;;GAGG;AACH,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,gBAAgB,CAAC;IACvB,OAAO,EAAE,mBAAmB,CAAC;CAC9B"}
@@ -2,13 +2,11 @@ import type { Fetch } from './libs/fetch';
2
2
  import type { OnRequestErrorType } from './libs/types';
3
3
  import StorageFileApi from './packages/StorageFileApi';
4
4
  export interface StorageClientOptions {
5
- useNewHostname?: boolean;
6
5
  enableLogger?: boolean;
7
6
  appId?: string;
8
7
  onRequestError: (error: OnRequestErrorType) => void;
9
8
  }
10
9
  export declare class StorageClient {
11
- protected url: string;
12
10
  protected headers: {
13
11
  [key: string]: string;
14
12
  };
@@ -16,7 +14,7 @@ export declare class StorageClient {
16
14
  protected fetch: Fetch;
17
15
  protected loggerEnabled?: boolean;
18
16
  protected onRequestError?: (error: OnRequestErrorType) => void;
19
- constructor(url: string, headers?: {
17
+ constructor(headers?: {
20
18
  [key: string]: string;
21
19
  }, fetch?: Fetch, opts?: StorageClientOptions);
22
20
  /**
@@ -1 +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;AAG1C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACvD,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,aAAa;IACxB,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,OAAO,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IAC7C,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC;IACvB,SAAS,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IAClC,SAAS,CAAC,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;gBAG7D,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;IAa7B;;;;OAIG;IACH,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,cAAc;CAWjC"}
1
+ {"version":3,"file":"StorageClient.d.ts","sourceRoot":"","sources":["../../src/storage/StorageClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAI1C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,cAAc,MAAM,2BAA2B,CAAC;AAEvD,MAAM,WAAW,oBAAoB;IACnC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;CACrD;AAED,qBAAa,aAAa;IACxB,SAAS,CAAC,OAAO,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IAC7C,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC;IACvB,SAAS,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IAClC,SAAS,CAAC,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;gBAG7D,OAAO,GAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAO,EACvC,KAAK,CAAC,EAAE,KAAK,EACb,IAAI,CAAC,EAAE,oBAAoB;IAY7B;;;;OAIG;IACH,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,cAAc;CAkBjC"}
@@ -1,9 +1,9 @@
1
1
  import { DEFAULT_HEADERS } from "./libs/constants.js";
2
- import { resolveFetch } from "./libs/helpers.js";
2
+ import { StorageError } from "./libs/errors.js";
3
+ import { getStorageBaseUrl, resolveFetch } from "./libs/helpers.js";
3
4
  import StorageFileApi from "./packages/StorageFileApi.js";
4
5
  class StorageClient {
5
- constructor(url, headers = {}, fetch, opts){
6
- this.url = url;
6
+ constructor(headers = {}, fetch, opts){
7
7
  this.headers = {
8
8
  ...DEFAULT_HEADERS,
9
9
  ...headers
@@ -14,7 +14,9 @@ class StorageClient {
14
14
  if (opts?.enableLogger) this.loggerEnabled = true;
15
15
  }
16
16
  from(id) {
17
- return new StorageFileApi(this.url, this.headers, id, this.appId, this.fetch, this.loggerEnabled, this.onRequestError);
17
+ if (!this.appId) throw new StorageError('appId is required');
18
+ const url = getStorageBaseUrl(this.appId);
19
+ return new StorageFileApi(url, this.headers, id, this.appId, this.fetch, this.loggerEnabled, this.onRequestError);
18
20
  }
19
21
  }
20
22
  export { StorageClient };
@@ -7,6 +7,12 @@ export interface FetchOptions {
7
7
  duplex?: string;
8
8
  noResolveJson?: boolean;
9
9
  logFetch?: boolean;
10
+ /**
11
+ * Skip attaching `credentials: 'include'`. Used for the external TOS PUT
12
+ * step, which targets a cross-origin presigned URL and must not send our
13
+ * session cookies.
14
+ */
15
+ noCredentials?: boolean;
10
16
  onRequestError?: (error: OnRequestErrorType) => void;
11
17
  }
12
18
  export interface ExtraInfo {
@@ -1 +1 @@
1
- {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../../src/storage/libs/fetch.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAEnE,MAAM,MAAM,KAAK,GAAG,CAAC,KAAK,EAAE,WAAW,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAExF,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;AAsO3E,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,OAAO,CAAC,CAUlB;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,OAAO,CAAC,CAUlB;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,OAAO,CAAC,CAElB;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,OAAO,CAAC,CAYlB;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,OAAO,CAAC,CAUlB"}
1
+ {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../../src/storage/libs/fetch.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAEnE,MAAM,MAAM,KAAK,GAAG,CAAC,KAAK,EAAE,WAAW,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAExF,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;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,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;AAuP3E,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,OAAO,CAAC,CAUlB;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,OAAO,CAAC,CAUlB;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,OAAO,CAAC,CAElB;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,OAAO,CAAC,CAYlB;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,OAAO,CAAC,CAUlB"}
@@ -1,5 +1,6 @@
1
1
  import { logRequest, logResponse } from "../utils/logger.js";
2
2
  import { traceIdGenerator } from "../utils/trace-id.js";
3
+ import { getCsrfToken } from "../utils/csrf.js";
3
4
  import { reportDataloomException } from "../../utils/slardar.js";
4
5
  import { StorageApiError, StorageUnknownError, isSdkRateLimited, isServerCustomError } from "./errors.js";
5
6
  import { isPlainObject, resolveResponse } from "./helpers.js";
@@ -56,14 +57,23 @@ const handleError = async (error, reject, options)=>{
56
57
  }
57
58
  };
58
59
  const _getRequestParams = (method, options, parameters, body)=>{
60
+ const csrfToken = options?.noCredentials ? '' : getCsrfToken();
61
+ const csrfHeaders = csrfToken ? {
62
+ 'X-Suda-Csrf-Token': csrfToken
63
+ } : {};
59
64
  const params = {
60
65
  method,
61
- headers: options?.headers || {}
66
+ headers: {
67
+ ...csrfHeaders,
68
+ ...options?.headers
69
+ }
62
70
  };
71
+ if (!options?.noCredentials) params.credentials = 'include';
63
72
  if ('GET' === method || !body) return params;
64
73
  if (isPlainObject(body)) {
65
74
  params.headers = {
66
75
  'Content-Type': 'application/json',
76
+ ...csrfHeaders,
67
77
  ...options?.headers
68
78
  };
69
79
  params.body = JSON.stringify(body);
@@ -1,6 +1,20 @@
1
1
  import type { FileBody, FileObject } from './types';
2
2
  type Fetch = (input: RequestInfo | URL, init?: RequestInit) => Promise<Response>;
3
3
  export declare const resolveFetch: (customFetch?: Fetch) => Fetch;
4
+ /**
5
+ * Resolve the current origin at runtime.
6
+ *
7
+ * In a browser this is `window.location.origin`; in node/SSR there is no
8
+ * window so we fall back to an empty string, which yields a relative URL that
9
+ * the host fetch implementation resolves against its own base.
10
+ */
11
+ export declare const getOrigin: () => string;
12
+ /**
13
+ * Build the storage runtime base url that all storage requests are issued
14
+ * against. Storage is authenticated via cookie session at
15
+ * `${origin}/app/${appId}/__runtime__/api/v1/storage`.
16
+ */
17
+ export declare const getStorageBaseUrl: (appId?: string) => string;
4
18
  export declare const resolveResponse: () => Promise<typeof Response>;
5
19
  export declare const recursiveToCamel: (item: Record<string, unknown>) => unknown;
6
20
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/storage/libs/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAIpD,KAAK,KAAK,GAAG,CAAC,KAAK,EAAE,WAAW,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAEjF,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,OAAO,CAAC,KAAG,OAmBhE,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,GAC/B,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,KAC9C,UA8BH,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,UAAU,MAAM,WAMhD,CAAC;AAKF,eAAO,MAAM,oBAAoB,GAAI,KAAK,MAAM,YAE/C,CAAC"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/storage/libs/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAIpD,KAAK,KAAK,GAAG,CAAC,KAAK,EAAE,WAAW,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAEjF,eAAO,MAAM,YAAY,GAAI,cAAc,KAAK,KAAG,KAQlD,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,QAAO,MAK5B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,GAAI,QAAQ,MAAM,KAAG,MAElD,CAAC;AAEF,eAAO,MAAM,eAAe,QAAa,OAAO,CAAC,OAAO,QAAQ,CAE/D,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,OAmBhE,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,GAC/B,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,KAC9C,UA6CH,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,UAAU,MAAM,WAMhD,CAAC;AAKF,eAAO,MAAM,oBAAoB,GAAI,KAAK,MAAM,YAE/C,CAAC"}
@@ -4,6 +4,11 @@ const resolveFetch = (customFetch)=>{
4
4
  _fetch = customFetch ? customFetch : fetch;
5
5
  return (input, init)=>_fetch(input, init);
6
6
  };
7
+ const getOrigin = ()=>{
8
+ if ('undefined' != typeof window && window.location?.origin) return window.location.origin;
9
+ return '';
10
+ };
11
+ const getStorageBaseUrl = (appId)=>`${getOrigin()}/app/${appId ?? ''}/__runtime__/api/v1/storage`;
7
12
  const resolveResponse = async ()=>Response;
8
13
  const recursiveToCamel = (item)=>{
9
14
  if (Array.isArray(item)) return item.map((el)=>recursiveToCamel(el));
@@ -36,28 +41,33 @@ const toValidExpiresIn = (expiresIn)=>{
36
41
  };
37
42
  const transformFilePayload = (file)=>{
38
43
  const safeFile = file ?? {};
39
- const buckets = safeFile.buckets;
44
+ const createdBy = safeFile.createdBy;
45
+ const updatedBy = safeFile.updatedBy;
46
+ const pickUserName = (u)=>{
47
+ if ('string' == typeof u) return u;
48
+ return u?.name ?? u?.userID ?? '';
49
+ };
40
50
  return {
41
51
  name: safeFile.name ?? '',
42
- bucket_id: safeFile.bucket_id ?? '',
43
- owner: safeFile.owner ?? '',
52
+ bucket_id: safeFile.bucketID ?? '',
53
+ owner: pickUserName(createdBy),
44
54
  id: safeFile.id ?? '',
45
- updated_at: safeFile.updated_at ?? '',
46
- created_at: safeFile.created_at ?? '',
47
- created_by: safeFile.created_by ?? '',
48
- updated_by: safeFile.updated_by ?? '',
49
- last_accessed_at: safeFile.last_accessed_at,
55
+ updated_at: safeFile.updatedAt ?? '',
56
+ created_at: safeFile.createdAt ?? '',
57
+ created_by: pickUserName(createdBy),
58
+ updated_by: pickUserName(updatedBy),
59
+ last_accessed_at: safeFile.lastAccessedAt,
50
60
  metadata: safeFile.metadata ?? {},
51
61
  buckets: {
52
- allowed_mime_types: buckets?.allowed_mime_types ?? [],
53
- created_at: buckets?.created_at ?? '',
54
- file_size_limit: buckets?.file_size_limit ?? 0,
55
- id: buckets?.id ?? '',
56
- name: buckets?.name ?? '',
57
- public: buckets?.public ?? false,
58
- updated_at: buckets?.updated_at ?? '',
59
- updated_by: buckets?.updated_by ?? '',
60
- owner: buckets?.created_by ?? ''
62
+ allowed_mime_types: [],
63
+ created_at: '',
64
+ file_size_limit: 0,
65
+ id: safeFile.bucketID ?? '',
66
+ name: '',
67
+ public: false,
68
+ updated_at: '',
69
+ updated_by: '',
70
+ owner: ''
61
71
  }
62
72
  };
63
73
  };
@@ -67,4 +77,4 @@ const sanitizeFileName = (fileName)=>{
67
77
  };
68
78
  const VOLC_ENGINE_URL_REGEX = /^https:\/\/[\w-]+\.tos-cn-beijing\.volces\.com\/.+/;
69
79
  const checkIsVolcEngineUrl = (url)=>VOLC_ENGINE_URL_REGEX.test(url);
70
- export { checkIsVolcEngineUrl, getUpdateFileSize, isPlainObject, recursiveToCamel, resolveFetch, resolveResponse, sanitizeFileName, toValidExpiresIn, transformFilePayload };
80
+ export { checkIsVolcEngineUrl, getOrigin, getStorageBaseUrl, getUpdateFileSize, isPlainObject, recursiveToCamel, resolveFetch, resolveResponse, sanitizeFileName, toValidExpiresIn, transformFilePayload };
@@ -115,13 +115,12 @@ export interface FileOptionsV2 {
115
115
  contentDisposition?: string;
116
116
  }
117
117
  export interface PreUploadBody {
118
- bucket_id: string;
119
- file_size: string;
118
+ fileSize: string;
120
119
  upsert?: boolean;
121
- file_path?: string;
122
- content_disposition?: string;
123
- content_type?: string;
124
- file_name?: string;
120
+ filePath?: string;
121
+ contentDisposition?: string;
122
+ contentType?: string;
123
+ fileName?: string;
125
124
  }
126
125
  export interface DestinationOptions {
127
126
  destinationBucket?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/storage/libs/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/storage/libs/types.ts"],"names":[],"mappings":"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"}