@lark-apaas/dataloom 0.1.3-alpha.10 → 0.1.3-alpha.11
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.
- package/README.md +16 -9
- package/lib/DataloomClient.d.ts +5 -2
- package/lib/DataloomClient.d.ts.map +1 -1
- package/lib/DataloomClient.js +8 -6
- package/lib/index.d.ts +1 -3
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -1
- package/lib/service/index.d.ts +4 -8
- package/lib/service/index.d.ts.map +1 -1
- package/lib/service/index.js +1 -1
- package/lib/service/types.d.ts +105 -5
- package/lib/service/types.d.ts.map +1 -1
- package/lib/storage/StorageClient.d.ts +0 -4
- package/lib/storage/StorageClient.d.ts.map +1 -1
- package/lib/storage/libs/fetch.d.ts +0 -7
- package/lib/storage/libs/fetch.d.ts.map +1 -1
- package/lib/storage/libs/fetch.js +0 -1
- package/lib/storage/libs/helpers.d.ts +1 -1
- package/lib/storage/libs/helpers.d.ts.map +1 -1
- package/lib/storage/libs/helpers.js +24 -40
- package/lib/storage/libs/types.d.ts +6 -8
- package/lib/storage/libs/types.d.ts.map +1 -1
- package/lib/storage/packages/StorageFileApi.d.ts +2 -3
- package/lib/storage/packages/StorageFileApi.d.ts.map +1 -1
- package/lib/storage/packages/StorageFileApi.js +22 -27
- package/lib/storage/utils/logger.d.ts.map +1 -1
- package/lib/storage/utils/logger.js +7 -11
- package/lib/utils/constants.d.ts +0 -4
- package/lib/utils/constants.d.ts.map +1 -1
- package/lib/utils/constants.js +19 -0
- package/lib/utils/fetch.d.ts +1 -7
- package/lib/utils/fetch.d.ts.map +1 -1
- package/lib/utils/fetch.js +5 -4
- package/lib/utils/types.d.ts +2 -5
- package/lib/utils/types.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -47,12 +47,16 @@ import { createClient } from '@lark-apaas/dataloom';
|
|
|
47
47
|
```ts
|
|
48
48
|
import { createClient } from '@lark-apaas/dataloom';
|
|
49
49
|
|
|
50
|
-
const client = createClient(
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
50
|
+
const client = createClient(
|
|
51
|
+
'https://example.com',
|
|
52
|
+
'dataloom-key',
|
|
53
|
+
{
|
|
54
|
+
global: {
|
|
55
|
+
brandName: 'miaoda',
|
|
56
|
+
appId: 'app_xxx',
|
|
57
|
+
},
|
|
54
58
|
},
|
|
55
|
-
|
|
59
|
+
);
|
|
56
60
|
```
|
|
57
61
|
|
|
58
62
|
创建完成后,可以通过以下入口访问能力:
|
|
@@ -66,16 +70,19 @@ const client = createClient({
|
|
|
66
70
|
### `createClient(...)`
|
|
67
71
|
|
|
68
72
|
```ts
|
|
69
|
-
createClient(
|
|
73
|
+
createClient(
|
|
74
|
+
dataloomUrl: string,
|
|
75
|
+
dataloomKey: string,
|
|
76
|
+
options?: DataloomClientOptions,
|
|
77
|
+
)
|
|
70
78
|
```
|
|
71
79
|
|
|
72
|
-
storage 网关前缀由 `options.global.appId` 自动拼接为
|
|
73
|
-
`/app/${appId}/__runtime__/api/v1/storage`,浏览器自动携带 session cookie 完成鉴权。
|
|
74
|
-
|
|
75
80
|
#### 入参
|
|
76
81
|
|
|
77
82
|
| 参数 | 类型 | 必填 | 说明 |
|
|
78
83
|
| --- | --- | --- | --- |
|
|
84
|
+
| `dataloomUrl` | `string` | 是 | Dataloom 服务地址 |
|
|
85
|
+
| `dataloomKey` | `string` | 是 | 访问 Dataloom 的 key |
|
|
79
86
|
| `options` | `DataloomClientOptions` | 否 | 初始化配置 |
|
|
80
87
|
|
|
81
88
|
#### 返回
|
package/lib/DataloomClient.d.ts
CHANGED
|
@@ -9,6 +9,8 @@ import type { OnRequestErrorType } from './storage/libs/types';
|
|
|
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;
|
|
12
14
|
service: DataloomService;
|
|
13
15
|
storage: StorageClient;
|
|
14
16
|
protected storageUrl: string;
|
|
@@ -18,10 +20,11 @@ export default class DataloomClient {
|
|
|
18
20
|
protected headers: Record<string, string>;
|
|
19
21
|
/**
|
|
20
22
|
* Create a new client for use in the browser.
|
|
21
|
-
* @param
|
|
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.
|
|
22
25
|
* @param options.global.fetch A custom fetch implementation.
|
|
23
26
|
* @param options.global.headers Any additional headers to send with each network request.
|
|
24
27
|
*/
|
|
25
|
-
constructor(options?: DataloomClientOptions);
|
|
28
|
+
constructor(dataloomUrl: string, dataloomKey: string, options?: DataloomClientOptions);
|
|
26
29
|
}
|
|
27
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,sBAAsB,CAAC;
|
|
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;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;CAqDlC"}
|
package/lib/DataloomClient.js
CHANGED
|
@@ -2,17 +2,19 @@ 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 {
|
|
6
|
-
import { applySettingDefaults } from "./utils/helpers.js";
|
|
5
|
+
import { fetchWithAuth } from "./utils/fetch.js";
|
|
6
|
+
import { applySettingDefaults, stripTrailingSlash } from "./utils/helpers.js";
|
|
7
7
|
import { reportDataloomException } from "./utils/slardar.js";
|
|
8
|
-
const buildStorageUrl = (appId)=>`/app/${appId}/__runtime__/api/v1/storage`;
|
|
9
8
|
class DataloomClient {
|
|
10
|
-
constructor(options){
|
|
9
|
+
constructor(dataloomUrl, dataloomKey, options){
|
|
10
|
+
this.dataloomUrl = dataloomUrl;
|
|
11
|
+
this.dataloomKey = dataloomKey;
|
|
12
|
+
const normalizedDataloomUrl = stripTrailingSlash(dataloomUrl);
|
|
13
|
+
this.storageUrl = `${normalizedDataloomUrl}/storage`;
|
|
11
14
|
const DEFAULTS = {
|
|
12
15
|
global: DEFAULT_GLOBAL_OPTIONS
|
|
13
16
|
};
|
|
14
17
|
const settings = applySettingDefaults(options ?? {}, DEFAULTS);
|
|
15
|
-
this.storageUrl = buildStorageUrl(settings.global.appId);
|
|
16
18
|
this.headers = settings.global.headers ?? {};
|
|
17
19
|
this.onRequestError = (error)=>{
|
|
18
20
|
reportDataloomException(error, {
|
|
@@ -23,7 +25,7 @@ class DataloomClient {
|
|
|
23
25
|
if (settings.global.onError) settings.global.onError(error, this);
|
|
24
26
|
};
|
|
25
27
|
if (settings.global.requestRateLimit && settings.global.requestRateLimit > 0) this.rateLimiter = new RateLimiter(settings.global.requestRateLimit);
|
|
26
|
-
this.fetch =
|
|
28
|
+
this.fetch = fetchWithAuth(dataloomKey, this.rateLimiter, settings.global.fetch);
|
|
27
29
|
this.service = new service({
|
|
28
30
|
accountServices: settings.global.accountServices
|
|
29
31
|
});
|
package/lib/index.d.ts
CHANGED
|
@@ -4,8 +4,6 @@ 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
|
-
* @param options 客户端配置;`options.global.appId` 决定 storage 网关前缀。
|
|
9
7
|
*/
|
|
10
|
-
export declare const createClient: (options?: DataloomClientOptions) => DataloomClient;
|
|
8
|
+
export declare const createClient: (dataloomUrl: string, dataloomKey: string, options?: DataloomClientOptions) => DataloomClient;
|
|
11
9
|
//# sourceMappingURL=index.d.ts.map
|
package/lib/index.d.ts.map
CHANGED
|
@@ -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
|
|
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"}
|
package/lib/index.js
CHANGED
package/lib/service/index.d.ts
CHANGED
|
@@ -1,18 +1,14 @@
|
|
|
1
|
-
import type { AccountServicesInjection } from './types';
|
|
1
|
+
import type { AccountServicesInjection, SessionServiceShape, UserServiceShape } from './types';
|
|
2
2
|
export interface DataloomServiceOptions {
|
|
3
3
|
accountServices?: AccountServicesInjection;
|
|
4
4
|
}
|
|
5
5
|
/**
|
|
6
6
|
* @deprecated Service 实现已迁移到 @lark-apaas/auth-sdk。
|
|
7
|
-
* dataloom v0.2.x 仅保留壳层做兼容(实例由 client-toolkit 在创建时注入),
|
|
8
|
-
* v0.3.0 计划移除。
|
|
9
7
|
*/
|
|
10
8
|
export default class DataloomService {
|
|
11
|
-
|
|
12
|
-
readonly
|
|
13
|
-
/** @deprecated 见 DataloomService 注释 */
|
|
14
|
-
readonly session: unknown;
|
|
9
|
+
readonly user: UserServiceShape;
|
|
10
|
+
readonly session: SessionServiceShape;
|
|
15
11
|
constructor(options: DataloomServiceOptions);
|
|
16
12
|
}
|
|
17
|
-
export type { AccountServicesInjection };
|
|
13
|
+
export type { AccountServicesInjection, SessionServiceShape, UserServiceShape };
|
|
18
14
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/service/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
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;AAwCD;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,eAAe;IAClC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAC;gBAE1B,OAAO,EAAE,sBAAsB;CAU5C;AAED,YAAY,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,CAAC"}
|
package/lib/service/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const MIGRATION_HINT = "[dataloom] service.user / service.session has moved to @lark-apaas/auth-sdk
|
|
1
|
+
const MIGRATION_HINT = "[dataloom] service.user / service.session has moved to @lark-apaas/auth-sdk\nUse `authClient` from @lark-apaas/client-toolkit/auth (or @lark-apaas/auth-sdk), e.g.:\n import { authClient } from '@lark-apaas/client-toolkit/auth';\n await authClient.user.search({ name: 'zhangsan' });\nIf you really need to keep using dataloom.service.*, ensure client-toolkit injects accountServices when constructing DataloomClient.";
|
|
2
2
|
const ALLOWED_REFLECTION_KEYS = new Set([
|
|
3
3
|
'constructor',
|
|
4
4
|
'then',
|
package/lib/service/types.d.ts
CHANGED
|
@@ -1,13 +1,113 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
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 时编译期可结构性校验。
|
|
3
8
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
9
|
+
* 此处类型镜像自 auth-sdk 的 public 类型(保持结构一致),
|
|
10
|
+
* 但**不 import auth-sdk**,避免 dataloom → auth-sdk 的反向依赖。
|
|
6
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 引用。
|
|
7
106
|
* 由 client-toolkit 在创建 DataloomClient 时通过 options.global.accountServices 注入。
|
|
8
107
|
*/
|
|
9
108
|
export interface AccountServicesInjection {
|
|
10
|
-
user:
|
|
11
|
-
session:
|
|
109
|
+
user: UserServiceShape;
|
|
110
|
+
session: SessionServiceShape;
|
|
12
111
|
}
|
|
112
|
+
export {};
|
|
13
113
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/service/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,WAAW,wBAAwB;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/service/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,10 +8,6 @@ export interface StorageClientOptions {
|
|
|
8
8
|
onRequestError: (error: OnRequestErrorType) => void;
|
|
9
9
|
}
|
|
10
10
|
export declare class StorageClient {
|
|
11
|
-
/**
|
|
12
|
-
* Storage 网关前缀,形如 `/app/${appId}/__runtime__/api/v1/storage`,
|
|
13
|
-
* 浏览器同源 + cookie 鉴权。
|
|
14
|
-
*/
|
|
15
11
|
protected url: string;
|
|
16
12
|
protected headers: {
|
|
17
13
|
[key: string]: string;
|
|
@@ -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
|
|
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"}
|
|
@@ -8,13 +8,6 @@ export interface FetchOptions {
|
|
|
8
8
|
noResolveJson?: boolean;
|
|
9
9
|
logFetch?: boolean;
|
|
10
10
|
onRequestError?: (error: OnRequestErrorType) => void;
|
|
11
|
-
/**
|
|
12
|
-
* 透传到底层 fetch init 的 credentials。
|
|
13
|
-
* 不传时由 `withCredentialsFetch` 兜底为 `'include'`(同源网关请求需要);
|
|
14
|
-
* TOS / CDN 等返回 `Access-Control-Allow-Origin: *` 的跨域第三方 URL 必须显式
|
|
15
|
-
* `'omit'`,否则浏览器会拦截。
|
|
16
|
-
*/
|
|
17
|
-
credentials?: RequestCredentials;
|
|
18
11
|
}
|
|
19
12
|
export interface ExtraInfo {
|
|
20
13
|
/**
|
|
@@ -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;
|
|
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"}
|
|
@@ -60,7 +60,6 @@ const _getRequestParams = (method, options, parameters, body)=>{
|
|
|
60
60
|
method,
|
|
61
61
|
headers: options?.headers || {}
|
|
62
62
|
};
|
|
63
|
-
if (options?.credentials !== void 0) params.credentials = options.credentials;
|
|
64
63
|
if ('GET' === method || !body) return params;
|
|
65
64
|
if (isPlainObject(body)) {
|
|
66
65
|
params.headers = {
|
|
@@ -9,7 +9,7 @@ export declare const recursiveToCamel: (item: Record<string, unknown>) => unknow
|
|
|
9
9
|
* source: https://github.com/sindresorhus/is-plain-obj
|
|
10
10
|
*/
|
|
11
11
|
export declare const isPlainObject: (value: object) => boolean;
|
|
12
|
-
export declare const getUpdateFileSize: (file: FileBody) =>
|
|
12
|
+
export declare const getUpdateFileSize: (file: FileBody) => string;
|
|
13
13
|
export declare const toValidExpiresIn: (expiresIn: number) => number;
|
|
14
14
|
export declare const transformFilePayload: (file: Record<string, unknown> | null | undefined) => FileObject;
|
|
15
15
|
export declare const sanitizeFileName: (fileName: string) => string;
|
|
@@ -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;
|
|
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"}
|
|
@@ -21,59 +21,43 @@ const isPlainObject = (value)=>{
|
|
|
21
21
|
return (null === prototype || prototype === Object.prototype || null === Object.getPrototypeOf(prototype)) && !(Symbol.toStringTag in value) && !(Symbol.iterator in value);
|
|
22
22
|
};
|
|
23
23
|
const getUpdateFileSize = (file)=>{
|
|
24
|
-
if ('undefined' != typeof File && file instanceof File) return file.size;
|
|
25
|
-
if (file instanceof Blob) return file.size;
|
|
26
|
-
if (file instanceof URLSearchParams) return file.size;
|
|
27
|
-
if ('string' == typeof file) return file.length;
|
|
28
|
-
if (ArrayBuffer.isView(file)) return file.byteLength;
|
|
29
|
-
if (file instanceof ArrayBuffer) return file.byteLength;
|
|
30
|
-
return 0;
|
|
24
|
+
if ('undefined' != typeof File && file instanceof File) return file.size.toString();
|
|
25
|
+
if (file instanceof Blob) return file.size.toString();
|
|
26
|
+
if (file instanceof URLSearchParams) return file.size.toString();
|
|
27
|
+
if ('string' == typeof file) return file.length.toString();
|
|
28
|
+
if (ArrayBuffer.isView(file)) return file.byteLength.toString();
|
|
29
|
+
if (file instanceof ArrayBuffer) return file.byteLength.toString();
|
|
30
|
+
return '0';
|
|
31
31
|
};
|
|
32
32
|
const toValidExpiresIn = (expiresIn)=>{
|
|
33
33
|
if (expiresIn < 1) return 1;
|
|
34
34
|
if (expiresIn > THIRTY_DAYS_IN_SECONDS) return THIRTY_DAYS_IN_SECONDS;
|
|
35
35
|
return expiresIn;
|
|
36
36
|
};
|
|
37
|
-
const pickUserId = (user)=>{
|
|
38
|
-
if (!user) return '';
|
|
39
|
-
if ('string' == typeof user) return user;
|
|
40
|
-
if ('object' == typeof user) {
|
|
41
|
-
const u = user;
|
|
42
|
-
return u.userID ?? u.user_id ?? '';
|
|
43
|
-
}
|
|
44
|
-
return '';
|
|
45
|
-
};
|
|
46
37
|
const transformFilePayload = (file)=>{
|
|
47
38
|
const safeFile = file ?? {};
|
|
48
|
-
const
|
|
49
|
-
const createdAt = safeFile.createdAt ?? safeFile.created_at ?? '';
|
|
50
|
-
const updatedAt = safeFile.updatedAt ?? safeFile.updated_at ?? '';
|
|
51
|
-
const lastAccessedAt = safeFile.lastAccessedAt ?? safeFile.last_accessed_at;
|
|
52
|
-
const createdBy = pickUserId(safeFile.createdBy ?? safeFile.created_by);
|
|
53
|
-
const updatedBy = pickUserId(safeFile.updatedBy ?? safeFile.updated_by);
|
|
54
|
-
const owner = createdBy;
|
|
55
|
-
const buckets = safeFile.bucket ?? safeFile.buckets ?? {};
|
|
39
|
+
const buckets = safeFile.buckets;
|
|
56
40
|
return {
|
|
57
41
|
name: safeFile.name ?? '',
|
|
58
|
-
bucket_id:
|
|
59
|
-
owner,
|
|
42
|
+
bucket_id: safeFile.bucket_id ?? '',
|
|
43
|
+
owner: safeFile.owner ?? '',
|
|
60
44
|
id: safeFile.id ?? '',
|
|
61
|
-
updated_at:
|
|
62
|
-
created_at:
|
|
63
|
-
created_by:
|
|
64
|
-
updated_by:
|
|
65
|
-
last_accessed_at:
|
|
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,
|
|
66
50
|
metadata: safeFile.metadata ?? {},
|
|
67
51
|
buckets: {
|
|
68
|
-
allowed_mime_types: buckets
|
|
69
|
-
created_at: buckets
|
|
70
|
-
file_size_limit: buckets
|
|
71
|
-
id: buckets
|
|
72
|
-
name: buckets
|
|
73
|
-
public: buckets
|
|
74
|
-
updated_at: buckets
|
|
75
|
-
updated_by:
|
|
76
|
-
owner:
|
|
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 ?? ''
|
|
77
61
|
}
|
|
78
62
|
};
|
|
79
63
|
};
|
|
@@ -114,16 +114,14 @@ export interface FileOptionsV2 {
|
|
|
114
114
|
*/
|
|
115
115
|
contentDisposition?: string;
|
|
116
116
|
}
|
|
117
|
-
/**
|
|
118
|
-
* pre_upload 请求体(按 §5.1 规范,驼峰)。
|
|
119
|
-
* 注意:bucketId 已在 path 段提供,不重复传;contentDisposition 不在规范字段内。
|
|
120
|
-
*/
|
|
121
117
|
export interface PreUploadBody {
|
|
122
|
-
|
|
118
|
+
bucket_id: string;
|
|
119
|
+
file_size: string;
|
|
123
120
|
upsert?: boolean;
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
121
|
+
file_path?: string;
|
|
122
|
+
content_disposition?: string;
|
|
123
|
+
content_type?: string;
|
|
124
|
+
file_name?: string;
|
|
127
125
|
}
|
|
128
126
|
export interface DestinationOptions {
|
|
129
127
|
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":"AAAA,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,UAAU,GAAG,UAAU,GAAG,WAAW,CAAC;AAElD,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,MAAM;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEnC;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC5B,OAAO,EAAE,UAAU,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IACtC;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,QAAQ,CAAC;CACnB;AAGD,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,KAAK,SAAS,CAAC,CAAC,SAAS,MAAM,IAC7B,CAAC,SAAS,GAAG,MAAM,EAAE,IAAI,MAAM,EAAE,GAAG,MAAM,EAAE,EAAE,GAC1C,GAAG,SAAS,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC,EAAE,GAClD,CAAC,CAAC;AAER,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI;KACvB,CAAC,IAAI,MAAM,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACtD,CAAC;AAEF,MAAM,MAAM,QAAQ,GAChB,WAAW,GACX,eAAe,GACf,IAAI,GACJ,IAAI,GACJ,QAAQ,GACR,cAAc,CAAC,UAAU,CAAC,GAC1B,eAAe,GACf,MAAM,CAAC"}
|
|
@@ -178,9 +178,8 @@ export default class StorageFileApi {
|
|
|
178
178
|
private _isValidDownloadUrl;
|
|
179
179
|
/**
|
|
180
180
|
* Get the filePath from download url with format like
|
|
181
|
-
* /spark/app/app_xxxx/
|
|
182
|
-
* or /app/app_xxxx/
|
|
183
|
-
* (兼容历史 `/runtime/` 形态)
|
|
181
|
+
* /spark/app/app_xxxx/runtime/api/v1/storage/object/bucket_xxx/123%2Fimage.png
|
|
182
|
+
* or /app/app_xxxx/runtime/api/v1/storage/object/bucket_xxx/123%2Fimage.png
|
|
184
183
|
*/
|
|
185
184
|
private _retrieveFilePathFromDownloadUrl;
|
|
186
185
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StorageFileApi.d.ts","sourceRoot":"","sources":["../../../src/storage/packages/StorageFileApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,YAAY,EAEb,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,KAAK,KAAK,EAA0B,MAAM,eAAe,CAAC;AASnE,OAAO,KAAK,EACV,eAAe,EACf,QAAQ,EACR,UAAU,EACV,WAAW,EACX,aAAa,EACb,kBAAkB,EAElB,aAAa,EACb,gBAAgB,EAChB,cAAc,EACf,MAAM,eAAe,CAAC;AAqDvB,MAAM,CAAC,OAAO,OAAO,cAAc;IACjC,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,OAAO,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IAC7C,SAAS,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC5B,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,QAAQ,CAAC,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,KAAK,EACb,aAAa,CAAC,EAAE,OAAO,EACvB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI;IAWtD;;;;;;OAMG;YACW,cAAc;
|
|
1
|
+
{"version":3,"file":"StorageFileApi.d.ts","sourceRoot":"","sources":["../../../src/storage/packages/StorageFileApi.ts"],"names":[],"mappings":"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"}
|
|
@@ -33,13 +33,11 @@ class StorageFileApi {
|
|
|
33
33
|
if (options?.contentDisposition) contentDisposition = options?.contentDisposition;
|
|
34
34
|
else if (fileBody instanceof File) contentDisposition = fileBody?.name;
|
|
35
35
|
const preUploadBody = {
|
|
36
|
-
|
|
36
|
+
bucket_id: this.bucketId ?? '',
|
|
37
|
+
file_size: getUpdateFileSize(fileBody),
|
|
37
38
|
upsert: options.upsert ?? false,
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
...options.contentType ? {
|
|
41
|
-
contentType: options.contentType
|
|
42
|
-
} : {}
|
|
39
|
+
file_path: cleanPath,
|
|
40
|
+
file_name: fileBody instanceof File ? fileBody?.name : ''
|
|
43
41
|
};
|
|
44
42
|
const res = await post(this.fetch, `${this.url}/object/${this.bucketId}/pre_upload`, preUploadBody, {
|
|
45
43
|
headers: this.headers,
|
|
@@ -48,20 +46,19 @@ class StorageFileApi {
|
|
|
48
46
|
}, void 0, {
|
|
49
47
|
psmName: 'Storage.Upload.PreUpload'
|
|
50
48
|
});
|
|
51
|
-
const {
|
|
52
|
-
if (!
|
|
49
|
+
const { upload_id, upload_url } = res?.data ?? {};
|
|
50
|
+
if (!upload_url || !upload_id) return {
|
|
53
51
|
data: null,
|
|
54
|
-
error: new StorageError('
|
|
52
|
+
error: new StorageError('upload_url or upload_id is empty')
|
|
55
53
|
};
|
|
56
54
|
{
|
|
57
55
|
const tosHeaders = {};
|
|
58
56
|
if (contentDisposition) tosHeaders['content-disposition'] = `attachment; filename="${sanitizeFileName(contentDisposition)}"`;
|
|
59
57
|
if (options.cacheControl || 0 === options.cacheControl) tosHeaders['cache-control'] = `max-age=${options.cacheControl}`;
|
|
60
58
|
if (options.contentType) tosHeaders['content-type'] = options.contentType;
|
|
61
|
-
const tosRes = await put(this.fetch,
|
|
59
|
+
const tosRes = await put(this.fetch, upload_url, fileBody, {
|
|
62
60
|
noResolveJson: true,
|
|
63
61
|
headers: tosHeaders,
|
|
64
|
-
credentials: 'omit',
|
|
65
62
|
logFetch: this.loggerEnabled,
|
|
66
63
|
onRequestError: this.onRequestError
|
|
67
64
|
}, void 0, {
|
|
@@ -69,8 +66,9 @@ class StorageFileApi {
|
|
|
69
66
|
});
|
|
70
67
|
const etag = tosRes?.headers?.get('Etag') ?? '';
|
|
71
68
|
const callbackRes = await post(this.fetch, `${this.url}/object/callback`, {
|
|
72
|
-
|
|
73
|
-
|
|
69
|
+
upload_id,
|
|
70
|
+
etag,
|
|
71
|
+
app_id: this.appId
|
|
74
72
|
}, {
|
|
75
73
|
headers: this.headers,
|
|
76
74
|
logFetch: this.loggerEnabled,
|
|
@@ -78,13 +76,12 @@ class StorageFileApi {
|
|
|
78
76
|
}, void 0, {
|
|
79
77
|
psmName: 'Storage.Upload.Callback'
|
|
80
78
|
});
|
|
81
|
-
const vo = callbackRes?.data ?? {};
|
|
82
79
|
return {
|
|
83
|
-
data: {
|
|
84
|
-
id:
|
|
85
|
-
file_path:
|
|
86
|
-
bucket_id:
|
|
87
|
-
download_url:
|
|
80
|
+
data: callbackRes?.data ?? {
|
|
81
|
+
id: '',
|
|
82
|
+
file_path: '',
|
|
83
|
+
bucket_id: '',
|
|
84
|
+
download_url: ''
|
|
88
85
|
},
|
|
89
86
|
error: null
|
|
90
87
|
};
|
|
@@ -116,7 +113,7 @@ class StorageFileApi {
|
|
|
116
113
|
try {
|
|
117
114
|
const _path = this._getFinalPath(path);
|
|
118
115
|
const res = await post(this.fetch, `${this.url}/object/sign/${_path}`, {
|
|
119
|
-
|
|
116
|
+
expires_in: toValidExpiresIn(expiresIn)
|
|
120
117
|
}, {
|
|
121
118
|
headers: this.headers,
|
|
122
119
|
logFetch: this.loggerEnabled,
|
|
@@ -143,7 +140,7 @@ class StorageFileApi {
|
|
|
143
140
|
try {
|
|
144
141
|
const _paths = paths.map((path)=>this._retrieveFilePathFromDownloadUrl(path));
|
|
145
142
|
const res = await post(this.fetch, `${this.url}/object/sign/${this.bucketId}`, {
|
|
146
|
-
|
|
143
|
+
expires_in: toValidExpiresIn(expiresIn),
|
|
147
144
|
paths: _paths
|
|
148
145
|
}, {
|
|
149
146
|
headers: this.headers,
|
|
@@ -264,9 +261,7 @@ class StorageFileApi {
|
|
|
264
261
|
error: null
|
|
265
262
|
};
|
|
266
263
|
}
|
|
267
|
-
const response = await this.fetch(url
|
|
268
|
-
credentials: 'omit'
|
|
269
|
-
});
|
|
264
|
+
const response = await this.fetch(url);
|
|
270
265
|
if (!response.ok) return {
|
|
271
266
|
data: null,
|
|
272
267
|
error: new StorageError(`Failed to download file from URL: ${response.status} ${response.statusText}`)
|
|
@@ -330,7 +325,7 @@ class StorageFileApi {
|
|
|
330
325
|
}
|
|
331
326
|
}
|
|
332
327
|
generateDownloadUrlFromFilePath(filePath) {
|
|
333
|
-
return `/app/${this.appId}/
|
|
328
|
+
return `/app/${this.appId}/runtime/api/v1/storage/object/${this.bucketId}/${encodeURIComponent(this._removeEmptyFolders(filePath))}`;
|
|
334
329
|
}
|
|
335
330
|
encodeMetadata(metadata) {
|
|
336
331
|
return JSON.stringify(metadata);
|
|
@@ -348,7 +343,7 @@ class StorageFileApi {
|
|
|
348
343
|
return path.replace(/^\/|\/$/g, '').replace(/\/+/g, '/');
|
|
349
344
|
}
|
|
350
345
|
_isValidDownloadUrl(url) {
|
|
351
|
-
return /^(\/spark)?\/app\/app_[\w]+\/
|
|
346
|
+
return /^(\/spark)?\/app\/app_[\w]+\/runtime\/api\/v1\/storage\/object\//.test(url);
|
|
352
347
|
}
|
|
353
348
|
_retrieveFilePathFromDownloadUrl(url) {
|
|
354
349
|
if (!this._isValidDownloadUrl(url)) return url;
|
|
@@ -364,7 +359,7 @@ class StorageFileApi {
|
|
|
364
359
|
return '';
|
|
365
360
|
}
|
|
366
361
|
async _copyWithinVolcEngine(url) {
|
|
367
|
-
const res = await post(this.fetch, `${this.url}/object/${this.bucketId}/copy`, {
|
|
362
|
+
const res = await post(this.fetch, `${this.url}/runtime/app/${this.appId}/object/${this.bucketId}/copy`, {
|
|
368
363
|
source: {
|
|
369
364
|
type: 'externalTOS',
|
|
370
365
|
externalURL: url
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/storage/utils/logger.ts"],"names":[],"mappings":"AAAA,KAAK,WAAW,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE9D,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,gBAAmB,
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/storage/utils/logger.ts"],"names":[],"mappings":"AAAA,KAAK,WAAW,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE9D,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,gBAAmB,SAoBhE,CAAC;AAEF,eAAO,MAAM,WAAW,GACtB,SAAS,MAAM,EACf,UAAU;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAC3D,gBAAmB,SA0BpB,CAAC"}
|
|
@@ -1,16 +1,12 @@
|
|
|
1
1
|
const logRequest = (params, psmName = 'Storage')=>{
|
|
2
2
|
const { traceId, url, method, body } = params;
|
|
3
|
-
const
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
'resolution',
|
|
11
|
-
'column'
|
|
12
|
-
].includes(key)).map(([key, value])=>`${key}=${value}`);
|
|
13
|
-
} catch {}
|
|
3
|
+
const decodedParams = Array.from(new URL(url).searchParams.entries()).filter(([key])=>![
|
|
4
|
+
'count',
|
|
5
|
+
'tx',
|
|
6
|
+
'missing',
|
|
7
|
+
'resolution',
|
|
8
|
+
'column'
|
|
9
|
+
].includes(key)).map(([key, value])=>`${key}=${value}`);
|
|
14
10
|
console.log(`[Dataloom][${psmName}][Request]`, 'trace id:', traceId, 'method:', method, 'params:', decodedParams.join(','), 'body:', body);
|
|
15
11
|
};
|
|
16
12
|
const logResponse = (traceId, response, psmName = 'Storage')=>{
|
package/lib/utils/constants.d.ts
CHANGED
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `X-Suda-Csrf-Token`(CSRF 防护)由调用方在初始化 client 时通过
|
|
3
|
-
* `options.global.headers` 注入,避免本包反向依赖上游的 `getCsrfToken`。
|
|
4
|
-
*/
|
|
5
1
|
export declare const DEFAULT_HEADERS: Record<string, string>;
|
|
6
2
|
export declare const DEFAULT_GLOBAL_OPTIONS: {
|
|
7
3
|
headers: Record<string, string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"AAyCA,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAIlD,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;;CAIlC,CAAC"}
|
package/lib/utils/constants.js
CHANGED
|
@@ -2,8 +2,27 @@ import { isBrowser } from "./helpers.js";
|
|
|
2
2
|
import { version } from "./version.js";
|
|
3
3
|
let JS_ENV = '';
|
|
4
4
|
JS_ENV = 'undefined' != typeof Deno ? 'deno' : 'undefined' != typeof document ? 'web' : 'undefined' != typeof navigator && 'ReactNative' === navigator.product ? 'react-native' : 'node';
|
|
5
|
+
const getToken = ()=>{
|
|
6
|
+
if (!isBrowser()) return '';
|
|
7
|
+
const host = window.location.host.replace(/\./g, '-');
|
|
8
|
+
const urlParams = new URLSearchParams(window.location.search);
|
|
9
|
+
const token = urlParams.get('suda_token');
|
|
10
|
+
if (token) {
|
|
11
|
+
localStorage.setItem(`suda_token_${host}`, `${token}`);
|
|
12
|
+
const url = new URL(window.location.href);
|
|
13
|
+
const params = new URLSearchParams(url.search);
|
|
14
|
+
params.delete('suda_token');
|
|
15
|
+
url.search = params.toString();
|
|
16
|
+
history.replaceState(null, '', url.toString());
|
|
17
|
+
return token;
|
|
18
|
+
}
|
|
19
|
+
const localToken = localStorage.getItem(`suda_token_${host}`);
|
|
20
|
+
if (localToken) return localToken;
|
|
21
|
+
return '';
|
|
22
|
+
};
|
|
5
23
|
const DEFAULT_HEADERS = {
|
|
6
24
|
'X-Client-Info': `dataloom-js-${JS_ENV}/${version}`,
|
|
25
|
+
'X-Suda-Token': getToken(),
|
|
7
26
|
'X-Suda-Referer': isBrowser() ? window.location.href : ''
|
|
8
27
|
};
|
|
9
28
|
const DEFAULT_GLOBAL_OPTIONS = {
|
package/lib/utils/fetch.d.ts
CHANGED
|
@@ -1,11 +1,5 @@
|
|
|
1
1
|
import type RateLimiter from '../RateLimiter';
|
|
2
2
|
import type { Fetch } from './types';
|
|
3
3
|
export declare const resolveFetch: (customFetch?: Fetch) => Fetch;
|
|
4
|
-
|
|
5
|
-
* 同源 cookie 鉴权下的 fetch 包装:
|
|
6
|
-
* - 默认注入 `credentials: 'include'`,保证浏览器自动携带 session cookie;
|
|
7
|
-
* 若调用方显式传入 `'omit'` / `'same-origin'`,遵循其值(兜底逻辑只在缺省时生效)。
|
|
8
|
-
* - 保留 RateLimiter 的 429 短路能力。
|
|
9
|
-
*/
|
|
10
|
-
export declare const withCredentialsFetch: (rateLimiter?: RateLimiter, customFetch?: Fetch) => Fetch;
|
|
4
|
+
export declare const fetchWithAuth: (dataloomKey: string, rateLimiter?: RateLimiter, customFetch?: Fetch) => Fetch;
|
|
11
5
|
//# sourceMappingURL=fetch.d.ts.map
|
package/lib/utils/fetch.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../src/utils/fetch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAErC,eAAO,MAAM,YAAY,GAAI,cAAc,KAAK,KAAG,KAQlD,CAAC;AAEF
|
|
1
|
+
{"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../src/utils/fetch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAErC,eAAO,MAAM,YAAY,GAAI,cAAc,KAAK,KAAG,KAQlD,CAAC;AAEF,eAAO,MAAM,aAAa,GACxB,aAAa,MAAM,EACnB,cAAc,WAAW,EACzB,cAAc,KAAK,KAClB,KAqBF,CAAC"}
|
package/lib/utils/fetch.js
CHANGED
|
@@ -3,18 +3,19 @@ const resolveFetch = (customFetch)=>{
|
|
|
3
3
|
_fetch = customFetch ? customFetch : fetch;
|
|
4
4
|
return (input, init)=>_fetch(input, init);
|
|
5
5
|
};
|
|
6
|
-
const
|
|
6
|
+
const fetchWithAuth = (dataloomKey, rateLimiter, customFetch)=>{
|
|
7
7
|
const resolvedFetch = resolveFetch(customFetch);
|
|
8
8
|
return async (input, init)=>{
|
|
9
9
|
if (rateLimiter && !rateLimiter.canRequest()) return Promise.resolve(new Response(`{"limit": ${rateLimiter.maxRequests}}`, {
|
|
10
10
|
status: 429,
|
|
11
11
|
statusText: 'Too Many Requests'
|
|
12
12
|
}));
|
|
13
|
-
const
|
|
13
|
+
const headers = new Headers(init?.headers);
|
|
14
|
+
if (!headers.has('apikey') && dataloomKey) headers.set('apikey', dataloomKey);
|
|
14
15
|
return resolvedFetch(input, {
|
|
15
16
|
...init,
|
|
16
|
-
|
|
17
|
+
headers
|
|
17
18
|
});
|
|
18
19
|
};
|
|
19
20
|
};
|
|
20
|
-
export {
|
|
21
|
+
export { fetchWithAuth, resolveFetch };
|
package/lib/utils/types.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { AccountServicesInjection } from '../service/types';
|
|
1
2
|
export type Fetch = (input: RequestInfo | URL, init?: RequestInit) => Promise<Response>;
|
|
2
3
|
export type OnError = (error: unknown, instance: unknown) => void;
|
|
3
4
|
export type DataloomClientOptions = {
|
|
@@ -32,17 +33,13 @@ export type DataloomClientOptions = {
|
|
|
32
33
|
onError?: OnError;
|
|
33
34
|
/**
|
|
34
35
|
* 由 client-toolkit 注入的 account services 引用(user/session)。
|
|
35
|
-
* dataloom v0.2.0 起,service.user/session 的实现迁出至 @lark-apaas/auth-sdk;
|
|
36
36
|
* 老调用方式 `(await getDataloom()).service.user/session` 仍可用,但底层实例由本字段提供。
|
|
37
37
|
*
|
|
38
38
|
* 直接构造 DataloomClient(不通过 toolkit)时若未传此字段,访问 service.user/session 会抛错并指向迁移文档。
|
|
39
39
|
*
|
|
40
40
|
* @see docs/superpowers/specs/2026-05-13-auth-sdk-account-services-split-design.md §4.4
|
|
41
41
|
*/
|
|
42
|
-
accountServices?:
|
|
43
|
-
user: unknown;
|
|
44
|
-
session: unknown;
|
|
45
|
-
};
|
|
42
|
+
accountServices?: AccountServicesInjection;
|
|
46
43
|
};
|
|
47
44
|
};
|
|
48
45
|
//# sourceMappingURL=types.d.ts.map
|
package/lib/utils/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/utils/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,KAAK,GAAG,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/utils/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAEjE,MAAM,MAAM,KAAK,GAAG,CAClB,KAAK,EAAE,WAAW,GAAG,GAAG,EACxB,IAAI,CAAC,EAAE,WAAW,KACf,OAAO,CAAC,QAAQ,CAAC,CAAC;AAEvB,MAAM,MAAM,OAAO,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;AAElE,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,CAAC,EAAE;QACP;;WAEG;QACH,SAAS,EAAE,MAAM,CAAC;QAClB;;WAEG;QACH,KAAK,EAAE,MAAM,CAAC;QACd;;WAEG;QACH,KAAK,CAAC,EAAE,KAAK,CAAC;QACd;;WAEG;QACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAEjC;;WAEG;QACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;QAE5B;;WAEG;QACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAE1B;;WAEG;QACH,OAAO,CAAC,EAAE,OAAO,CAAC;QAElB;;;;;;;WAOG;QACH,eAAe,CAAC,EAAE,wBAAwB,CAAC;KAC5C,CAAC;CACH,CAAC"}
|