Skip to content

Commit 1e4e326

Browse files
authored
Support promise style async and use region instead zone (#430)
1 parent f60fecd commit 1e4e326

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

68 files changed

+7465
-4884
lines changed

.github/workflows/ci-test.yml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
name: NodeJS CI with NPM
22

3-
on: [push]
3+
on: [push, pull_request]
44

55
jobs:
66
build:
77
strategy:
88
fail-fast: false
9-
max-parallel: 1
109
matrix:
11-
node_version: ['6', '8', '10', '12', '14', '16']
10+
node_version: ['6', '8', '10', '12', '14', '16', '18', '20']
1211
runs-on: ubuntu-latest
1312
steps:
1413
- name: Checkout
@@ -20,15 +19,16 @@ jobs:
2019
- name: Setup dependencies
2120
run: |
2221
npm install
23-
npm install -g codecov@3.8.1
24-
npm install -g istanbul
22+
# nyc@14 support nodejs >= 6
23+
npm install -g nyc@14
2524
- name: Run cases
2625
run: |
27-
npm test
28-
istanbul cover ./node_modules/mocha/bin/_mocha --reporter test -- -R spec
29-
codecov
26+
npm run check-type
27+
nyc --reporter=lcov npm test
3028
env:
3129
QINIU_ACCESS_KEY: ${{ secrets.QINIU_ACCESS_KEY }}
3230
QINIU_SECRET_KEY: ${{ secrets.QINIU_SECRET_KEY }}
3331
QINIU_TEST_BUCKET: ${{ secrets.QINIU_TEST_BUCKET }}
3432
QINIU_TEST_DOMAIN: ${{ secrets.QINIU_TEST_DOMAIN }}
33+
- name: Upload coverage reports
34+
uses: codecov/codecov-action@v4

CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,12 @@
11
## CHANGE LOG
2+
3+
## 7.12.0
4+
- 对象存储,新增支持 Promise 风格异步
5+
- 对象存储,修复分片上传 v1 在特定条件可能无法从断点继续上传
6+
- 对象存储,新增支持新的区域对象 Region
7+
- 对象存储,管理接口支持双活
8+
- 对象存储,修复缺失的部分类型声明,新增响应的类型声明
9+
210
## 7.11.1
311
- 对象存储,上传策略移除严格模式,支持任意策略选项
412

StorageResponseInterface.d.ts

Lines changed: 239 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,239 @@
1+
/** 文件元信息 */
2+
export interface StatObjectResult {
3+
[k: string]: any;
4+
/** 对象大小,单位为字节 */
5+
fsize?: number;
6+
/** 对象哈希值 */
7+
hash: string;
8+
/** 对象 MIME 类型 */
9+
mimeType: string;
10+
/** 对象存储类型,`0` 表示普通存储,`1` 表示低频存储,`2` 表示归档存储 */
11+
type: number;
12+
/** 文件上传时间,UNIX 时间戳格式,单位为 100 纳秒 */
13+
putTime: number;
14+
/** 资源内容的唯一属主标识 */
15+
endUser?: string;
16+
/** 归档存储文件的解冻状态,`2` 表示解冻完成,`1` 表示解冻中;归档文件冻结时,不返回该字段 */
17+
restoreStatus?: number;
18+
/** 文件状态。`1` 表示禁用;只有禁用状态的文件才会返回该字段 */
19+
status?: number;
20+
/** 对象 MD5 值,只有通过直传文件和追加文件 API 上传的文件,服务端确保有该字段返回 */
21+
md5?: string;
22+
/** 文件过期删除日期,UNIX 时间戳格式,文件在设置过期时间后才会返回该字段 */
23+
expiration?: number;
24+
/** 文件生命周期中转为低频存储的日期,UNIX 时间戳格式,文件在设置转低频后才会返回该字段 */
25+
transitionToIA?: number;
26+
/** 文件生命周期中转为归档存储的日期,UNIX 时间戳格式,文件在设置转归档后才会返回该字段 */
27+
transitionToARCHIVE?: number;
28+
/** 文件生命周期中转为深度归档存储的日期,UNIX 时间戳格式,文件在设置转归档后才会返回该字段 */
29+
transitionToDeepArchive?: number;
30+
/** 文件生命周期中转为归档直读存储的日期,UNIX 时间戳格式,文件在设置转归档直读后才会返回该字段 */
31+
transitionToArchiveIR?: number;
32+
/** 对象存储元信息 */
33+
'x-qn-meta'?: Record<string, string>;
34+
/** 每个分片的大小,如没有指定 need_parts 参数则不返回 */
35+
parts?: number[];
36+
}
37+
38+
/** 对象条目,包含对象的元信息 */
39+
interface ListedObjectEntry {
40+
[k: string]: any;
41+
/** 对象名称 */
42+
key: string;
43+
/** 文件上传时间,UNIX 时间戳格式,单位为 100 纳秒 */
44+
putTime: number;
45+
/** 文件的哈希值 */
46+
hash: string;
47+
/** 对象大小,单位为字节 */
48+
fsize?: number;
49+
/** 对象 MIME 类型 */
50+
mimeType: string;
51+
/** 对象存储类型,`0` 表示普通存储,`1` 表示低频存储,`2` 表示归档存储 */
52+
type?: number;
53+
/** 资源内容的唯一属主标识 */
54+
endUser?: string;
55+
/** 文件的存储状态,即禁用状态和启用状态间的的互相转换,`0` 表示启用,`1`表示禁用 */
56+
status?: number;
57+
/** 对象 MD5 值,只有通过直传文件和追加文件 API 上传的文件,服务端确保有该字段返回 */
58+
md5?: string;
59+
/** 每个分片的大小,如没有指定 need_parts 参数则不返回 */
60+
parts?: number[];
61+
}
62+
63+
/** 本次列举的对象条目信息 */
64+
export interface GetObjectsResult {
65+
[k: string]: any;
66+
/** 有剩余条目则返回非空字符串,作为下一次列举的参数传入,如果没有剩余条目则返回空字符串 */
67+
marker?: string;
68+
/** 公共前缀的数组,如没有指定 delimiter 参数则不返回 */
69+
commonPrefixes?: string[];
70+
/** 条目的数组,不能用来判断是否还有剩余条目 */
71+
items: ListedObjectEntry[];
72+
}
73+
74+
/** 存储空间列表 */
75+
export type GetBucketsResult = string[];
76+
77+
/** 空间规则 */
78+
interface BucketRule {
79+
[k: string]: any;
80+
/** 空间规则名称 */
81+
name: string;
82+
/** 匹配的对象名称前缀 */
83+
prefix: string;
84+
/** 上传文件多少天后删除 */
85+
delete_after_days?: number;
86+
/** 文件上传多少天后转低频存储 */
87+
to_line_after_days?: number;
88+
/** 文件上传多少天后转归档存储 */
89+
to_archive_after_days?: number;
90+
/** 文件上传多少天后转深度归档存储 */
91+
to_deep_archive_after_days?: number;
92+
/** 文件上传多少天后转归档直读存储 */
93+
to_archive_ir_after_days?: number;
94+
/** 规则创建时间 */
95+
ctime: string;
96+
}
97+
98+
/** 空间规则列表 */
99+
export type GetBucketRulesResult = BucketRule[];
100+
101+
/** 跨域规则 */
102+
interface CorsRule {
103+
[k: string]: any;
104+
/** 允许的域名。必填;支持通配符 * ;*表示全部匹配;只有第一个 * 生效;需要设置 "Scheme";大小写敏感 */
105+
allowed_origin: string[];
106+
/** 允许的方法。必填;不支持通配符;大小写不敏感; */
107+
allowed_method: string[];
108+
allowed_header?: string[];
109+
/** 选填;不支持通配符;X-Log, X-Reqid 是默认会暴露的两个 header;其他的 header 如果没有设置,则不会暴露;大小写不敏感; */
110+
exposed_header?: string[];
111+
/** 结果可以缓存的时间。选填;空则不缓存 */
112+
max_age?: number;
113+
}
114+
115+
/** 跨域规则列表 */
116+
export type GetBucketCorsRulesResult = CorsRule[];
117+
118+
/** 抓取到的文件元信息 */
119+
export interface FetchObjectResult {
120+
[k: string]: any;
121+
/** 抓取的对象内容的 Etag 值 */
122+
hash: string;
123+
/** 抓取后保存的对象名称 */
124+
key: string;
125+
/** 对象大小,单位为字节 */
126+
fsize?: number;
127+
/** 对象 MIME 类型 */
128+
mimeType: string;
129+
}
130+
131+
/** 管理指令的响应数据 */
132+
interface OperationResponseData {
133+
[k: string]: any;
134+
/** 管理指令的错误信息,仅在发生错误时才返回 */
135+
error?: string;
136+
/** 对象大小,单位为字节,仅对 stat 指令才有效 */
137+
fsize?: number;
138+
/** 对象哈希值,仅对 stat 指令才有效 */
139+
hash?: string;
140+
/** 对象 MIME 类型,仅对 stat 指令才有效 */
141+
mimeType?: string;
142+
/** 对象存储类型,`0` 表示普通存储,`1` 表示低频存储,`2` 表示归档存储,仅对 stat 指令才有效 */
143+
type?: number;
144+
/** 文件上传时间,UNIX 时间戳格式,单位为 100 纳秒,仅对 stat 指令才有效 */
145+
putTime?: number;
146+
/** 资源内容的唯一属主标识 */
147+
endUser?: string;
148+
/** 归档存储文件的解冻状态,`2` 表示解冻完成,`1` 表示解冻中;归档文件冻结时,不返回该字段,仅对 stat 指令才有效 */
149+
restoreStatus?: number;
150+
/** 文件状态。`1` 表示禁用;只有禁用状态的文件才会返回该字段,仅对 stat 指令才有效 */
151+
status?: number;
152+
/** 对象 MD5 值,只有通过直传文件和追加文件 API 上传的文件,服务端确保有该字段返回,仅对 stat 指令才有效 */
153+
md5?: string;
154+
/** 文件过期删除日期,UNIX 时间戳格式,文件在设置过期时间后才会返回该字段,仅对 stat 指令才有效 */
155+
expiration?: number;
156+
/** 文件生命周期中转为低频存储的日期,UNIX 时间戳格式,文件在设置转低频后才会返回该字段,仅对 stat 指令才有效 */
157+
transitionToIA?: number;
158+
/** 文件生命周期中转为归档存储的日期,UNIX 时间戳格式,文件在设置转归档后才会返回该字段,仅对 stat 指令才有效 */
159+
transitionToARCHIVE?: number;
160+
/** 文件生命周期中转为深度归档存储的日期,UNIX 时间戳格式,文件在设置转归档后才会返回该字段,仅对 stat 指令才有效 */
161+
transitionToDeepArchive?: number;
162+
/** 文件生命周期中转为归档直读存储的日期,UNIX 时间戳格式,文件在设置转归档直读后才会返回该字段,仅对 stat 指令才有效 */
163+
transitionToArchiveIR?: number;
164+
}
165+
166+
/** 每个管理指令的响应信息 */
167+
interface OperationResponse {
168+
[k: string]: any;
169+
/** 响应状态码 */
170+
code: number;
171+
/** 响应数据 */
172+
data?: OperationResponseData;
173+
}
174+
175+
/** 所有管理指令的响应信息 */
176+
export type BatchOpsResult = OperationResponse[];
177+
178+
interface BucketEvent {
179+
[k: string]: any;
180+
name: string;
181+
prefix: string;
182+
suffix: string;
183+
events: string[];
184+
callback_urls: string[];
185+
access_key?: string;
186+
host?: string;
187+
ctime: string;
188+
}
189+
190+
export type GetBucketEventsResult = BucketEvent[];
191+
192+
interface AntiLeech {
193+
[k: string]: any;
194+
no_refer: boolean;
195+
anti_leech_mode: number;
196+
anti_leech_used: boolean;
197+
source_enabled: boolean;
198+
}
199+
200+
interface BucketDomainV3 {
201+
[k: string]: any;
202+
domain: string;
203+
tbl: string;
204+
owner: number;
205+
ctime: number;
206+
utime: number;
207+
antileech: AntiLeech;
208+
domainType?: number;
209+
}
210+
211+
export type GetBucketDomainsV3Result = BucketDomainV3[];
212+
213+
export interface GetBucketInfoV2Result {
214+
[k: string]: any;
215+
source: string;
216+
host: string;
217+
protected: number;
218+
private: number;
219+
no_index_page: number;
220+
max_age: number;
221+
separator: string;
222+
styles: Record<string, string>;
223+
anti_leech_mode: number;
224+
token_anti_leech: number;
225+
refer_wl: string[];
226+
refer_bl: string[];
227+
source_enabled: boolean;
228+
no_refer: boolean;
229+
mac_key: string;
230+
mac_key2: string;
231+
remark: string;
232+
ctime: string;
233+
}
234+
235+
export interface GetBucketQuotaResult {
236+
[k: string]: any;
237+
size: number;
238+
count: number;
239+
}

0 commit comments

Comments
 (0)