@ones-open/node-sdk 0.0.4-8523.78 → 0.0.4-8530.211

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/dist/index.cjs CHANGED
@@ -1,6 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const _defineProperty = require("@babel/runtime-corejs3/helpers/defineProperty");
4
3
  const lodashEs = require("lodash-es");
5
4
  const Fetch = require("axios");
6
5
  const _sortInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/sort");
@@ -10,10 +9,14 @@ const getONESHostedBaseUrl = () => {
10
9
  const getONESHostedAppID = () => {
11
10
  return process.env.ONES_HOSTED_APP_ID;
12
11
  };
12
+ const getONESHostedToken = () => {
13
+ return process.env.ONES_HOSTED_TOKEN;
14
+ };
13
15
  const index$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
14
16
  __proto__: null,
15
17
  getONESHostedAppID,
16
- getONESHostedBaseUrl
18
+ getONESHostedBaseUrl,
19
+ getONESHostedToken
17
20
  }, Symbol.toStringTag, { value: "Module" }));
18
21
  var EntityWhereConditionEnum = /* @__PURE__ */ ((EntityWhereConditionEnum2) => {
19
22
  EntityWhereConditionEnum2["beginsWith"] = "beginsWith";
@@ -116,7 +119,7 @@ const createErrorResult = (code, message, error) => {
116
119
  };
117
120
  const fetch$1 = Fetch.create();
118
121
  const buildAuthHeaders$1 = () => {
119
- const token = process.env.ONES_HOSTED_TOKEN;
122
+ const token = getONESHostedToken();
120
123
  if (token) {
121
124
  return {
122
125
  Authorization: `Bearer ${token}`
@@ -195,12 +198,12 @@ const defaultEntityQueryIndex = defaultEntityQuery.index;
195
198
  const defaultEntityQueryWhere = defaultEntityQuery.where;
196
199
  class EntityQueryClass {
197
200
  constructor(name) {
198
- _defineProperty(this, "_name", "");
199
- _defineProperty(this, "_cursor", [defaultEntityQueryCursor]);
200
- _defineProperty(this, "_limit", [defaultEntityQueryLimit]);
201
- _defineProperty(this, "_sort", [defaultEntityQuerySort]);
202
- _defineProperty(this, "_index", [defaultEntityQueryIndex]);
203
- _defineProperty(this, "_where", [defaultEntityQueryWhere]);
201
+ this._name = "";
202
+ this._cursor = [defaultEntityQueryCursor];
203
+ this._limit = [defaultEntityQueryLimit];
204
+ this._sort = [defaultEntityQuerySort];
205
+ this._index = [defaultEntityQueryIndex];
206
+ this._where = [defaultEntityQueryWhere];
204
207
  this._name = name;
205
208
  }
206
209
  cursor(cursor) {
@@ -294,7 +297,7 @@ class EntityQueryClass {
294
297
  }
295
298
  class EntityClass {
296
299
  constructor(name) {
297
- _defineProperty(this, "_name", "");
300
+ this._name = "";
298
301
  this._name = name;
299
302
  }
300
303
  async get(key) {
@@ -400,11 +403,8 @@ var ObjectErrorCode = /* @__PURE__ */ ((ObjectErrorCode2) => {
400
403
  return ObjectErrorCode2;
401
404
  })(ObjectErrorCode || {});
402
405
  class ObjectError {
403
- /**
404
- * @description 错误载荷
405
- */
406
406
  constructor(result) {
407
- _defineProperty(this, "err_msg", "");
407
+ this.err_msg = "";
408
408
  this.code = result.code;
409
409
  this.err_msg = result.err_msg;
410
410
  this.err_values = result.err_values;
@@ -412,7 +412,7 @@ class ObjectError {
412
412
  }
413
413
  const fetch = Fetch.create();
414
414
  const buildAuthHeaders = () => {
415
- const token = process.env.ONES_HOSTED_TOKEN;
415
+ const token = getONESHostedToken();
416
416
  if (token) {
417
417
  return {
418
418
  Authorization: `Bearer ${token}`
package/dist/index.js CHANGED
@@ -1,4 +1,3 @@
1
- import _defineProperty from "@babel/runtime-corejs3/helpers/defineProperty";
2
1
  import { isNull, isUndefined, isSymbol, set } from "lodash-es";
3
2
  import Fetch, { AxiosError } from "axios";
4
3
  import _sortInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/sort";
@@ -8,10 +7,14 @@ const getONESHostedBaseUrl = () => {
8
7
  const getONESHostedAppID = () => {
9
8
  return process.env.ONES_HOSTED_APP_ID;
10
9
  };
10
+ const getONESHostedToken = () => {
11
+ return process.env.ONES_HOSTED_TOKEN;
12
+ };
11
13
  const index$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
12
14
  __proto__: null,
13
15
  getONESHostedAppID,
14
- getONESHostedBaseUrl
16
+ getONESHostedBaseUrl,
17
+ getONESHostedToken
15
18
  }, Symbol.toStringTag, { value: "Module" }));
16
19
  var EntityWhereConditionEnum = /* @__PURE__ */ ((EntityWhereConditionEnum2) => {
17
20
  EntityWhereConditionEnum2["beginsWith"] = "beginsWith";
@@ -114,7 +117,7 @@ const createErrorResult = (code, message, error) => {
114
117
  };
115
118
  const fetch$1 = Fetch.create();
116
119
  const buildAuthHeaders$1 = () => {
117
- const token = process.env.ONES_HOSTED_TOKEN;
120
+ const token = getONESHostedToken();
118
121
  if (token) {
119
122
  return {
120
123
  Authorization: `Bearer ${token}`
@@ -193,12 +196,12 @@ const defaultEntityQueryIndex = defaultEntityQuery.index;
193
196
  const defaultEntityQueryWhere = defaultEntityQuery.where;
194
197
  class EntityQueryClass {
195
198
  constructor(name) {
196
- _defineProperty(this, "_name", "");
197
- _defineProperty(this, "_cursor", [defaultEntityQueryCursor]);
198
- _defineProperty(this, "_limit", [defaultEntityQueryLimit]);
199
- _defineProperty(this, "_sort", [defaultEntityQuerySort]);
200
- _defineProperty(this, "_index", [defaultEntityQueryIndex]);
201
- _defineProperty(this, "_where", [defaultEntityQueryWhere]);
199
+ this._name = "";
200
+ this._cursor = [defaultEntityQueryCursor];
201
+ this._limit = [defaultEntityQueryLimit];
202
+ this._sort = [defaultEntityQuerySort];
203
+ this._index = [defaultEntityQueryIndex];
204
+ this._where = [defaultEntityQueryWhere];
202
205
  this._name = name;
203
206
  }
204
207
  cursor(cursor) {
@@ -292,7 +295,7 @@ class EntityQueryClass {
292
295
  }
293
296
  class EntityClass {
294
297
  constructor(name) {
295
- _defineProperty(this, "_name", "");
298
+ this._name = "";
296
299
  this._name = name;
297
300
  }
298
301
  async get(key) {
@@ -398,11 +401,8 @@ var ObjectErrorCode = /* @__PURE__ */ ((ObjectErrorCode2) => {
398
401
  return ObjectErrorCode2;
399
402
  })(ObjectErrorCode || {});
400
403
  class ObjectError {
401
- /**
402
- * @description 错误载荷
403
- */
404
404
  constructor(result) {
405
- _defineProperty(this, "err_msg", "");
405
+ this.err_msg = "";
406
406
  this.code = result.code;
407
407
  this.err_msg = result.err_msg;
408
408
  this.err_values = result.err_values;
@@ -410,7 +410,7 @@ class ObjectError {
410
410
  }
411
411
  const fetch = Fetch.create();
412
412
  const buildAuthHeaders = () => {
413
- const token = process.env.ONES_HOSTED_TOKEN;
413
+ const token = getONESHostedToken();
414
414
  if (token) {
415
415
  return {
416
416
  Authorization: `Bearer ${token}`
@@ -7,55 +7,55 @@ export type BaseIndexesStructValue = null | StringOrNumberOrBoolean[] | [StringO
7
7
  export type BaseIndexesStruct<IndexesStruct> = SetFieldType<IndexesStruct, keyof IndexesStruct, BaseIndexesStructValue>;
8
8
  export type UnionIndexesStruct<IndexesStruct> = BaseIndexesStruct<IndexesStruct> | EmptyObject | null;
9
9
  /**
10
- * @description 实体操作对象
11
- * @typedef EntityStruct 实体数据结构体
12
- * @typedef IndexesStruct 实体索引结构体
10
+ * @description Entity operation object
11
+ * @typedef EntityStruct Entity data structure
12
+ * @typedef IndexesStruct Entity index structure
13
13
  */
14
14
  export interface Entity<EntityStruct extends BaseEntityStruct<EntityStruct>, IndexesStruct extends UnionIndexesStruct<IndexesStruct>> {
15
15
  /**
16
- * @description 获取一条实体数据
17
- * @param key 实体数据 key
18
- * @returns 实体数据 value
16
+ * @description Get one entity record
17
+ * @param key Entity data key
18
+ * @returns Entity data value
19
19
  */
20
20
  get<Key extends string>(key: NotEmptyString<Key>): Promise<EntityStruct | undefined>;
21
21
  /**
22
- * @description 创建或者更新一条实体数据
23
- * @param key 实体数据 key
24
- * @param value 实体数据 value
22
+ * @description Create or update one entity record
23
+ * @param key Entity data key
24
+ * @param value Entity data value
25
25
  */
26
26
  set<Key extends string>(key: NotEmptyString<Key>, value: Partial<EntityStruct>): Promise<void>;
27
27
  /**
28
- * @description 删除一条实体数据
29
- * @param key 实体数据 key
28
+ * @description Delete one entity record
29
+ * @param key Entity data key
30
30
  */
31
31
  delete<Key extends string>(key: NotEmptyString<Key>): Promise<void>;
32
32
  /**
33
- * @description 创建实体查询对象
33
+ * @description Create entity query object
34
34
  * @returns EntityQuery
35
35
  */
36
36
  query(): IfNull<IndexesStruct, BaseEntityQuery<EntityStruct, EmptyObject>, IfEmptyObject<IndexesStruct, InputIndexEntityQuery<EntityStruct, EmptyObject>, InferIndexEntityQuery<EntityStruct, Exclude<IndexesStruct, EmptyObject | null>>>>;
37
37
  /**
38
- * @description 批量创建或者更新实体数据
39
- * @param items 数组
38
+ * @description Batch create or update entity data
39
+ * @param items Array of items
40
40
  */
41
41
  batchSet<Items extends EntityBatchSetItem<EntityStruct>[]>(items: NotEmptyArray<Items>): Promise<void>;
42
42
  /**
43
- * @description 批量删除实体数据
44
- * @param keys 实体数据 key 数组
43
+ * @description Batch delete entity data
44
+ * @param keys Array of entity data keys
45
45
  */
46
46
  batchDelete<Keys extends string[]>(keys: NotEmptyArray<Keys>): Promise<void>;
47
47
  }
48
48
  /**
49
- * @description 批量创建或者更新实体数据的 item
50
- * @typedef EntityStruct 实体数据结构体
49
+ * @description Item for batch create or update entity data
50
+ * @typedef EntityStruct Entity data structure
51
51
  */
52
52
  export interface EntityBatchSetItem<EntityStruct extends BaseEntityStruct<EntityStruct>> {
53
53
  /**
54
- * @description 实体数据 key
54
+ * @description Entity data key
55
55
  */
56
56
  key: string;
57
57
  /**
58
- * @description 实体数据 value
58
+ * @description Entity data value
59
59
  */
60
60
  value: Partial<EntityStruct>;
61
61
  }
@@ -1,126 +1,126 @@
1
1
  /**
2
2
  * @enum EntityErrorCode
3
- * @description 实体错误码枚举
3
+ * @description Entity error code enum
4
4
  */
5
5
  export declare enum EntityErrorCode {
6
6
  /**
7
- * @description 实体名称为空/包含非法字符/超出最大长度限制
7
+ * @description Entity name is empty / contains invalid characters / exceeds max length
8
8
  * @satisfies /^[_a-z0-9]{1,32}$/
9
9
  */
10
10
  EntityNameInvalid = "EntityNameInvalid",
11
11
  /**
12
- * @description 实体名称不存在(配置未定义)
12
+ * @description Entity name does not exist (not defined in config)
13
13
  */
14
14
  EntityNotFound = "EntityNotFound",
15
15
  /**
16
- * @description 实体数据不能为空
16
+ * @description Entity data cannot be empty
17
17
  */
18
18
  EntityDataEmpty = "EntityDataEmpty",
19
19
  /**
20
- * @description 实体数据过多
20
+ * @description Too many entity data items
21
21
  * @satisfies maximum 100 items
22
22
  */
23
23
  EntityDataBatchLimit = "EntityDataBatchLimit",
24
24
  /**
25
- * @description key 为空/包含非法字符/超出最大长度限制
25
+ * @description key is empty / contains invalid characters / exceeds max length
26
26
  * @satisfies /^[_a-z0-9]{1,64}$/
27
27
  */
28
28
  EntityDataKeyInvalid = "EntityDataKeyInvalid",
29
29
  /**
30
- * @description key 重复
30
+ * @description Duplicate key
31
31
  */
32
32
  EntityDataKeyDuplicate = "EntityDataKeyDuplicate",
33
33
  /**
34
- * @description 属性名为空/包含非法字符/超出最大长度限制
34
+ * @description Attribute name is empty / contains invalid characters / exceeds max length
35
35
  * @satisfies /^[_a-z0-9]{1,64}$/
36
36
  */
37
37
  EntityDataValueAttrInvalid = "EntityDataValueAttrInvalid",
38
38
  /**
39
- * @description 属性名不存在(配置未定义)
39
+ * @description Attribute name does not exist (not defined in config)
40
40
  */
41
41
  EntityDataValueAttrNotFound = "EntityDataValueAttrNotFound",
42
42
  /**
43
- * @description 值不能为空
43
+ * @description Value cannot be empty
44
44
  */
45
45
  EntityDataValueEmpty = "EntityDataValueEmpty",
46
46
  /**
47
- * @description 值非法
47
+ * @description Invalid value
48
48
  */
49
49
  EntityDataValueInvalid = "EntityDataValueInvalid",
50
50
  /**
51
- * @description string 类型的属性的值超出最大长度限制
51
+ * @description Value of string attribute exceeds max length
52
52
  */
53
53
  EntityDataStringValueTooLong = "EntityDataStringValueTooLong",
54
54
  /**
55
- * @description text 类型的属性的值超出最大长度限制
55
+ * @description Value of text attribute exceeds max length
56
56
  * @satisfies maximum 32768 characters
57
57
  */
58
58
  EntityDataTextValueTooLong = "EntityDataTextValueTooLong",
59
59
  /**
60
- * @description 缺少必填属性
60
+ * @description Missing required attribute
61
61
  */
62
62
  EntityDataAttrRequired = "EntityDataAttrRequired",
63
63
  /**
64
- * @description 属性值的类型与定义的类型不匹配
64
+ * @description Attribute value type does not match definition
65
65
  */
66
66
  EntityDataValueTypeInvalid = "EntityDataValueTypeInvalid",
67
67
  /**
68
- * @description 索引不能为空
68
+ * @description Index cannot be empty
69
69
  */
70
70
  EntityDataIndexEmpty = "EntityDataIndexEmpty",
71
71
  /**
72
- * @description 索引为空/包含非法字符/超出最大长度限制
72
+ * @description Index is empty / contains invalid characters / exceeds max length
73
73
  * @satisfies /^[_a-z0-9]{1,64}$/
74
74
  */
75
75
  EntityDataIndexNameInvalid = "EntityDataIndexNameInvalid",
76
76
  /**
77
- * @description 索引不存在(配置未定义)
77
+ * @description Index does not exist (not defined in config)
78
78
  */
79
79
  EntityDataIndexNotFound = "EntityDataIndexNotFound",
80
80
  /**
81
- * @description 自定义索引中的属性值为空/非法
81
+ * @description Attribute value in custom index is empty or invalid
82
82
  */
83
83
  EntityDataPartitionValueInvalid = "EntityDataPartitionValueInvalid",
84
84
  /**
85
- * @description 自定义索引中的属性值的类型与定义的类型不匹配
85
+ * @description Attribute value type in custom index does not match definition
86
86
  */
87
87
  EntityDataPartitionValueTypeInvalid = "EntityDataPartitionValueTypeInvalid",
88
88
  /**
89
- * @description 自定义索引中的属性值超出最大长度限制
89
+ * @description Attribute value in custom index exceeds max length
90
90
  */
91
91
  EntityDataPartitionValueTooLong = "EntityDataPartitionValueTooLong",
92
92
  /**
93
- * @description 数据存在唯一性约束错误
93
+ * @description Unique constraint violation
94
94
  */
95
95
  EntityDataUniqueConstraintFailed = "EntityDataUniqueConstraintFailed",
96
96
  /**
97
- * @description 实体查询条件的子句的属性值类型不匹配
97
+ * @description Attribute value type in entity query condition clause does not match
98
98
  */
99
99
  EntityDataWhereConditionValueTypeInvalid = "EntityDataWhereConditionValueTypeInvalid",
100
100
  /**
101
- * @description 实体查询条件的子句的属性值超出最大长度限制
101
+ * @description Attribute value in entity query condition clause exceeds max length
102
102
  */
103
103
  EntityDataWhereConditionValueTooLong = "EntityDataWhereConditionValueTooLong",
104
104
  /**
105
- * @description 实体查询的游标的值非法
105
+ * @description Entity query cursor value is invalid
106
106
  */
107
107
  EntityDataPageCursorInvalid = "EntityDataPageCursorInvalid",
108
108
  /**
109
- * @description 实体查询的排序的值非法
109
+ * @description Entity query sort value is invalid
110
110
  * @satisfies EntitySortEnum
111
111
  */
112
112
  EntityDataSortValueInvalid = "EntityDataSortValueInvalid",
113
113
  /**
114
- * @description 实体查询的分页长度的值非法
114
+ * @description Entity query page limit value is invalid
115
115
  * @satisfies [1, 1000]
116
116
  */
117
117
  EntityDataPageLimitNotInRange = "EntityDataPageLimitNotInRange",
118
118
  /**
119
- * @description 实体操作或者查询超时
119
+ * @description Entity operation or query timeout
120
120
  */
121
121
  EntityDataAPITimeOut = "EntityDataAPITimeOut",
122
122
  /**
123
- * @description JSON 序列化失败
123
+ * @description JSON serialization failed
124
124
  */
125
125
  MalformedJSON = "Malformed.JSON"
126
126
  }
@@ -9,7 +9,7 @@ export type * from './types';
9
9
  /**
10
10
  * @constant entity
11
11
  * @function EntityFactory
12
- * @description 实体
12
+ * @description Entity
13
13
  * @member Sort
14
14
  * @member EntityErrorCode
15
15
  * @member WhereConditions
@@ -7,147 +7,147 @@ import type { BaseEntityStruct, BaseIndexesStruct, BaseIndexesStructValue } from
7
7
  import type { defaultEntityQueryCursor, defaultEntityQueryLimit, defaultEntityQuerySort, defaultEntityQueryIndex, defaultEntityQueryWhere } from './consts';
8
8
  export type LimitNumber = IntClosedRange<1, 998> | 999 | 1000;
9
9
  /**
10
- * @description 实体查询对象
11
- * @typedef EntityStruct 实体数据结构体
12
- * @typedef IndexesStruct 实体索引结构体
10
+ * @description Entity query object
11
+ * @typedef EntityStruct Entity data structure
12
+ * @typedef IndexesStruct Entity index structure
13
13
  */
14
14
  export interface BaseEntityQuery<EntityStruct extends BaseEntityStruct<EntityStruct>, IndexesStruct extends BaseIndexesStruct<IndexesStruct>> {
15
15
  /**
16
- * @description 设置实体查询游标
17
- * @param cursor 游标
16
+ * @description Set entity query cursor
17
+ * @param cursor Cursor
18
18
  * @returns EntityQuery
19
19
  */
20
20
  cursor(cursor: string | typeof defaultEntityQueryCursor): BaseEntityQuery<EntityStruct, IndexesStruct>;
21
21
  /**
22
- * @description 设置实体查询长度
22
+ * @description Set entity query limit
23
23
  * @satisfies [1, 1000]
24
- * @param limit 长度
24
+ * @param limit Limit
25
25
  * @returns EntityQuery
26
26
  */
27
27
  limit(limit: LimitNumber | typeof defaultEntityQueryLimit): BaseEntityQuery<EntityStruct, IndexesStruct>;
28
28
  /**
29
- * @description 设置实体查询排序
30
- * @param sort 排序
29
+ * @description Set entity query sort order
30
+ * @param sort Sort order
31
31
  * @returns EntityQuery
32
32
  */
33
33
  sort(sort: EntitySortEnum | typeof defaultEntityQuerySort): BaseEntityQuery<EntityStruct, IndexesStruct>;
34
34
  /**
35
- * @description 获取一条实体数据
36
- * @returns 实体数据 value
35
+ * @description Get one entity record
36
+ * @returns Entity data value
37
37
  */
38
38
  getOne(): Promise<EntityResultData<EntityStruct> | undefined>;
39
39
  /**
40
- * @description 获取实体数据数组
41
- * @returns 实体数据分页查询结果对象
40
+ * @description Get entity data array
41
+ * @returns Entity data paginated query result object
42
42
  */
43
43
  getMany(): Promise<EntityListResultData<EntityStruct>>;
44
44
  /**
45
- * @description 获取实体数据总数
46
- * @returns 实体数据总数
45
+ * @description Get total count of entity data
46
+ * @returns Total count
47
47
  */
48
48
  count(): Promise<number>;
49
49
  }
50
50
  /**
51
- * @description 实体查询对象
52
- * @typedef EntityStruct 实体数据结构体
53
- * @typedef IndexesStruct 实体索引结构体
51
+ * @description Entity query object
52
+ * @typedef EntityStruct Entity data structure
53
+ * @typedef IndexesStruct Entity index structure
54
54
  */
55
55
  export interface InferIndexEntityQuery<EntityStruct extends BaseEntityStruct<EntityStruct>, IndexesStruct extends BaseIndexesStruct<IndexesStruct>> extends BaseEntityQuery<EntityStruct, IndexesStruct> {
56
56
  cursor: SetReturnType<BaseEntityQuery<EntityStruct, IndexesStruct>['cursor'], InferIndexEntityQuery<EntityStruct, IndexesStruct>>;
57
57
  limit: SetReturnType<BaseEntityQuery<EntityStruct, IndexesStruct>['limit'], InferIndexEntityQuery<EntityStruct, IndexesStruct>>;
58
58
  sort: SetReturnType<BaseEntityQuery<EntityStruct, IndexesStruct>['sort'], InferIndexEntityQuery<EntityStruct, IndexesStruct>>;
59
59
  /**
60
- * @description 设置实体查询索引
61
- * @param index 索引
62
- * @param partitions 索引分区的属性值
60
+ * @description Set entity query index
61
+ * @param index Index
62
+ * @param partitions Partition attribute values of the index
63
63
  * @returns EntityQuery
64
64
  */
65
65
  index<IndexKey extends keyof ConditionalExcept<IndexesStruct, null>>(index: IndexKey, partitions: IndexesStruct[IndexKey]): InferWhereEntityQuery<EntityStruct, IndexesStruct>;
66
66
  /**
67
- * @description 设置实体查询索引
68
- * @param index 索引
67
+ * @description Set entity query index
68
+ * @param index Index
69
69
  * @returns EntityQuery
70
70
  */
71
71
  index<IndexKey extends keyof ConditionalPick<IndexesStruct, null>>(index: IndexKey): InferWhereEntityQuery<EntityStruct, IndexesStruct>;
72
72
  /**
73
- * @description 设置实体查询索引
74
- * @param index 索引
73
+ * @description Set entity query index
74
+ * @param index Index
75
75
  * @returns EntityQuery
76
76
  */
77
77
  index(index: typeof defaultEntityQueryIndex): InferWhereEntityQuery<EntityStruct, IndexesStruct>;
78
78
  }
79
79
  /**
80
- * @description 实体查询对象
81
- * @typedef EntityStruct 实体数据结构体
82
- * @typedef IndexesStruct 实体索引结构体
80
+ * @description Entity query object
81
+ * @typedef EntityStruct Entity data structure
82
+ * @typedef IndexesStruct Entity index structure
83
83
  */
84
84
  export interface InputIndexEntityQuery<EntityStruct extends BaseEntityStruct<EntityStruct>, IndexesStruct extends BaseIndexesStruct<IndexesStruct>> extends BaseEntityQuery<EntityStruct, IndexesStruct> {
85
85
  cursor: SetReturnType<BaseEntityQuery<EntityStruct, IndexesStruct>['cursor'], InputIndexEntityQuery<EntityStruct, IndexesStruct>>;
86
86
  limit: SetReturnType<BaseEntityQuery<EntityStruct, IndexesStruct>['limit'], InputIndexEntityQuery<EntityStruct, IndexesStruct>>;
87
87
  sort: SetReturnType<BaseEntityQuery<EntityStruct, IndexesStruct>['sort'], InputIndexEntityQuery<EntityStruct, IndexesStruct>>;
88
88
  /**
89
- * @description 设置实体查询索引
90
- * @typedef Partitions 索引分区的属性值类型
91
- * @param index 索引
92
- * @param partitions 索引分区的属性值
89
+ * @description Set entity query index
90
+ * @typedef Partitions Partition attribute value type of index
91
+ * @param index Index
92
+ * @param partitions Partition attribute values of the index
93
93
  * @returns EntityQuery
94
94
  */
95
95
  index<Partitions extends BaseIndexesStructValue>(index: string, partitions: Partitions): InputWhereEntityQuery<EntityStruct, IndexesStruct>;
96
96
  /**
97
- * @description 设置实体查询索引
98
- * @param index 索引
97
+ * @description Set entity query index
98
+ * @param index Index
99
99
  * @returns EntityQuery
100
100
  */
101
101
  index(index: string): InputWhereEntityQuery<EntityStruct, IndexesStruct>;
102
102
  /**
103
- * @description 设置实体查询索引
104
- * @param index 索引
103
+ * @description Set entity query index
104
+ * @param index Index
105
105
  * @returns EntityQuery
106
106
  */
107
107
  index(index: typeof defaultEntityQueryIndex): InputWhereEntityQuery<EntityStruct, IndexesStruct>;
108
108
  }
109
109
  /**
110
- * @description 实体查询对象
111
- * @typedef EntityStruct 实体数据结构体
112
- * @typedef IndexesStruct 实体索引结构体
110
+ * @description Entity query object
111
+ * @typedef EntityStruct Entity data structure
112
+ * @typedef IndexesStruct Entity index structure
113
113
  */
114
114
  export interface InferWhereEntityQuery<EntityStruct extends BaseEntityStruct<EntityStruct>, IndexesStruct extends BaseIndexesStruct<IndexesStruct>> extends InferIndexEntityQuery<EntityStruct, IndexesStruct> {
115
115
  cursor: SetReturnType<BaseEntityQuery<EntityStruct, IndexesStruct>['cursor'], InferWhereEntityQuery<EntityStruct, IndexesStruct>>;
116
116
  limit: SetReturnType<BaseEntityQuery<EntityStruct, IndexesStruct>['limit'], InferWhereEntityQuery<EntityStruct, IndexesStruct>>;
117
117
  sort: SetReturnType<BaseEntityQuery<EntityStruct, IndexesStruct>['sort'], InferWhereEntityQuery<EntityStruct, IndexesStruct>>;
118
118
  /**
119
- * @description 设置实体查询条件
120
- * @param condition 条件
119
+ * @description Set entity query condition
120
+ * @param condition Condition
121
121
  * @returns EntityQuery
122
122
  */
123
123
  where(condition: EntityWhereCondition | typeof defaultEntityQueryWhere): InferWhereEntityQuery<EntityStruct, IndexesStruct>;
124
124
  }
125
125
  /**
126
- * @description 实体查询对象
127
- * @typedef EntityStruct 实体数据结构体
128
- * @typedef IndexesStruct 实体索引结构体
126
+ * @description Entity query object
127
+ * @typedef EntityStruct Entity data structure
128
+ * @typedef IndexesStruct Entity index structure
129
129
  */
130
130
  export interface InputWhereEntityQuery<EntityStruct extends BaseEntityStruct<EntityStruct>, IndexesStruct extends BaseIndexesStruct<IndexesStruct>> extends InputIndexEntityQuery<EntityStruct, IndexesStruct> {
131
131
  cursor: SetReturnType<BaseEntityQuery<EntityStruct, IndexesStruct>['cursor'], InputWhereEntityQuery<EntityStruct, IndexesStruct>>;
132
132
  limit: SetReturnType<BaseEntityQuery<EntityStruct, IndexesStruct>['limit'], InputWhereEntityQuery<EntityStruct, IndexesStruct>>;
133
133
  sort: SetReturnType<BaseEntityQuery<EntityStruct, IndexesStruct>['sort'], InputWhereEntityQuery<EntityStruct, IndexesStruct>>;
134
134
  /**
135
- * @description 设置实体查询条件
136
- * @param condition 条件
135
+ * @description Set entity query condition
136
+ * @param condition Condition
137
137
  * @returns EntityQuery
138
138
  */
139
139
  where(condition: EntityWhereCondition | typeof defaultEntityQueryWhere): InputWhereEntityQuery<EntityStruct, IndexesStruct>;
140
140
  }
141
141
  /**
142
- * @description 实体查询对象
143
- * @typedef EntityStruct 实体数据结构体
144
- * @typedef IndexesStruct 实体索引结构体
142
+ * @description Entity query object
143
+ * @typedef EntityStruct Entity data structure
144
+ * @typedef IndexesStruct Entity index structure
145
145
  */
146
146
  export type UnionEntityQuery<EntityStruct extends BaseEntityStruct<EntityStruct>, IndexesStruct extends BaseIndexesStruct<IndexesStruct>> = BaseEntityQuery<EntityStruct, IndexesStruct> | InferIndexEntityQuery<EntityStruct, IndexesStruct> | InputIndexEntityQuery<EntityStruct, IndexesStruct> | InferWhereEntityQuery<EntityStruct, IndexesStruct> | InputWhereEntityQuery<EntityStruct, IndexesStruct>;
147
147
  /**
148
- * @description 实体查询对象
149
- * @typedef EntityStruct 实体数据结构体
150
- * @typedef IndexesStruct 实体索引结构体
148
+ * @description Entity query object
149
+ * @typedef EntityStruct Entity data structure
150
+ * @typedef IndexesStruct Entity index structure
151
151
  */
152
152
  export type EntityQuery<EntityStruct extends BaseEntityStruct<EntityStruct>, IndexesStruct extends BaseIndexesStruct<IndexesStruct>> = UnionToIntersection<UnionEntityQuery<EntityStruct, IndexesStruct>>;
153
153
  export interface DefaultEntityQuery {
@@ -6,48 +6,48 @@ export type EntityCountResult = EntityResult<{
6
6
  }>;
7
7
  export type EntityListResult<EntityStruct> = EntityResult<EntityListResultData<EntityStruct>>;
8
8
  /**
9
- * @description 实体数据查询结果对象
10
- * @typedef EntityStruct 实体数据结构体
9
+ * @description Entity data query result object
10
+ * @typedef EntityStruct Entity data structure
11
11
  */
12
12
  export interface EntityResultData<EntityStruct> {
13
13
  /**
14
- * @description 数据 key
14
+ * @description Data key
15
15
  */
16
16
  key: string;
17
17
  /**
18
- * @description 数据 value
18
+ * @description Data value
19
19
  */
20
20
  value: EntityStruct;
21
21
  }
22
22
  /**
23
- * @description 实体数据分页查询结果对象
24
- * @typedef EntityStruct 实体数据结构体
23
+ * @description Entity data paginated query result object
24
+ * @typedef EntityStruct Entity data structure
25
25
  */
26
26
  export interface EntityListResultData<EntityStruct> {
27
27
  /**
28
- * @description 分页信息
28
+ * @description Pagination info
29
29
  */
30
30
  page_info: {
31
31
  /**
32
- * @description 当前分页数据总数
32
+ * @description Total count of current page
33
33
  */
34
34
  count: number;
35
35
  /**
36
- * @description 是否有更多数据
36
+ * @description Whether there is more data
37
37
  */
38
38
  has_more: boolean;
39
39
  /**
40
- * @description 当前分页末尾数据游标
40
+ * @description Cursor at end of current page
41
41
  */
42
42
  end_cursor: string;
43
43
  };
44
44
  /**
45
- * @description 分页数据数组
45
+ * @description Paginated data array
46
46
  */
47
47
  data: EntityResultData<EntityStruct>[];
48
48
  }
49
49
  /**
50
- * @description 实体查询或者操作错误对象
50
+ * @description Entity query or operation error object
51
51
  */
52
52
  export type EntityError = ErrorResult<never, EntityErrorCode>;
53
53
  //# sourceMappingURL=types.d.ts.map
@@ -1,14 +1,14 @@
1
1
  /**
2
2
  * @enum EntitySortEnum
3
- * @description 实体排序枚举
3
+ * @description Entity sort order enum
4
4
  */
5
5
  export declare enum EntitySortEnum {
6
6
  /**
7
- * @description 正序
7
+ * @description Ascending
8
8
  */
9
9
  ASC = "ASC",
10
10
  /**
11
- * @description 倒序
11
+ * @description Descending
12
12
  */
13
13
  DESC = "DESC"
14
14
  }
@@ -6,40 +6,40 @@ import type { Entity, BaseEntityStruct, BaseIndexesStruct } from './entity';
6
6
  import type { defaultEntityQueryCursor, defaultEntityQueryIndex, defaultEntityQueryLimit, defaultEntityQuerySort, defaultEntityQueryWhere } from './query';
7
7
  export interface EntityStatic {
8
8
  /**
9
- * @description 实体排序枚举
9
+ * @description Entity sort order enum
10
10
  */
11
11
  Sort: typeof EntitySortEnum;
12
12
  /**
13
- * @description 实体错误码枚举
13
+ * @description Entity error code enum
14
14
  */
15
15
  EntityErrorCode: typeof EntityErrorCode;
16
16
  /**
17
- * @description 实体查询条件方法枚举
17
+ * @description Entity query condition method enum
18
18
  */
19
19
  WhereConditions: typeof WhereConditions;
20
20
  /**
21
- * @description 实体查询游标默认值
21
+ * @description Default entity query cursor
22
22
  */
23
23
  defaultEntityQueryCursor: typeof defaultEntityQueryCursor;
24
24
  /**
25
- * @description 实体查询索引默认值
25
+ * @description Default entity query index
26
26
  */
27
27
  defaultEntityQueryIndex: typeof defaultEntityQueryIndex;
28
28
  /**
29
- * @description 实体查询长度默认值
29
+ * @description Default entity query limit
30
30
  */
31
31
  defaultEntityQueryLimit: typeof defaultEntityQueryLimit;
32
32
  /**
33
- * @description 实体查询排序默认值
33
+ * @description Default entity query sort
34
34
  */
35
35
  defaultEntityQuerySort: typeof defaultEntityQuerySort;
36
36
  /**
37
- * @description 实体查询条件默认值
37
+ * @description Default entity query condition
38
38
  */
39
39
  defaultEntityQueryWhere: typeof defaultEntityQueryWhere;
40
40
  }
41
41
  /**
42
- * @description 编译时自动生成
42
+ * @description Auto-generated at compile time
43
43
  * @example
44
44
  * declare global {
45
45
  * var ONESEntities: {
@@ -61,19 +61,19 @@ type PluginEntities = FindGlobalType<'ONESEntities'>;
61
61
  export interface BaseEntityFactory {
62
62
  /**
63
63
  * @function EntityFactory
64
- * @description 创建实体操作对象
65
- * @typedef EntityStruct 实体数据结构体
66
- * @typedef IndexesStruct 实体索引结构体
67
- * @param entityName 实体名称
64
+ * @description Create entity operation object
65
+ * @typedef EntityStruct Entity data structure
66
+ * @typedef IndexesStruct Entity index structure
67
+ * @param entityName Entity name
68
68
  * @returns Entity
69
69
  */
70
70
  <EntityStruct extends BaseEntityStruct<EntityStruct>, IndexesStruct extends BaseIndexesStruct<IndexesStruct>>(entityName: string): Entity<EntityStruct, IndexesStruct>;
71
71
  /**
72
72
  * @function EntityFactory
73
- * @description 创建实体操作对象
74
- * @typedef EntityStruct 实体数据结构体
75
- * @typedef IndexesStruct 实体索引结构体
76
- * @param entityName 实体名称
73
+ * @description Create entity operation object
74
+ * @typedef EntityStruct Entity data structure
75
+ * @typedef IndexesStruct Entity index structure
76
+ * @param entityName Entity name
77
77
  * @returns Entity
78
78
  */
79
79
  <EntityStruct extends BaseEntityStruct<EntityStruct>>(entityName: string): Entity<EntityStruct, EmptyObject>;
@@ -81,28 +81,28 @@ export interface BaseEntityFactory {
81
81
  export interface PluginEntityFactory {
82
82
  /**
83
83
  * @function EntityFactory
84
- * @description 创建实体操作对象
85
- * @typedef EntityStruct 实体数据结构体
86
- * @typedef IndexesStruct 实体索引结构体
87
- * @param entityName 实体名称
84
+ * @description Create entity operation object
85
+ * @typedef EntityStruct Entity data structure
86
+ * @typedef IndexesStruct Entity index structure
87
+ * @param entityName Entity name
88
88
  * @returns Entity
89
89
  */
90
90
  <EntityName extends keyof PluginEntities>(entityName: EntityName): Entity<Get<PluginEntities, Exclude<EntityName, number | symbol>>['attributes'], Get<PluginEntities, Exclude<EntityName, number | symbol>>['indexes']>;
91
91
  /**
92
92
  * @function EntityFactory
93
- * @description 创建实体操作对象
94
- * @typedef EntityStruct 实体数据结构体
95
- * @typedef IndexesStruct 实体索引结构体
96
- * @param entityName 实体名称
93
+ * @description Create entity operation object
94
+ * @typedef EntityStruct Entity data structure
95
+ * @typedef IndexesStruct Entity index structure
96
+ * @param entityName Entity name
97
97
  * @returns Entity
98
98
  */
99
99
  <EntityStruct extends BaseEntityStruct<EntityStruct>, IndexesStruct extends BaseIndexesStruct<IndexesStruct>>(entityName: string): Entity<EntityStruct, IndexesStruct>;
100
100
  /**
101
101
  * @function EntityFactory
102
- * @description 创建实体操作对象
103
- * @typedef EntityStruct 实体数据结构体
104
- * @typedef IndexesStruct 实体索引结构体
105
- * @param entityName 实体名称
102
+ * @description Create entity operation object
103
+ * @typedef EntityStruct Entity data structure
104
+ * @typedef IndexesStruct Entity index structure
105
+ * @param entityName Entity name
106
106
  * @returns Entity
107
107
  */
108
108
  <EntityStruct extends BaseEntityStruct<EntityStruct>>(entityName: string): Entity<EntityStruct, EmptyObject>;
@@ -3,7 +3,7 @@ export * from './consts';
3
3
  export * from './types';
4
4
  /**
5
5
  * @constant WhereConditions
6
- * @description 实体查询条件方法枚举
6
+ * @description Entity query condition method enum
7
7
  */
8
8
  export declare const WhereConditions: {
9
9
  /**
@@ -1,19 +1,19 @@
1
1
  /**
2
2
  * @enum ObjectErrorCode
3
- * @description 对象存储错误码枚举
3
+ * @description Object storage error code enum
4
4
  */
5
5
  export declare enum ObjectErrorCode {
6
6
  /**
7
- * @description 对象存储 key 为空/包含非法字符/超出最大长度限制
7
+ * @description Object storage key is empty / contains invalid characters / exceeds max length
8
8
  * @satisfies /^[0-9a-zA-Z!_.*'()-]{1,128}$/
9
9
  */
10
10
  ObjectKeyInvalid = "ObjectKeyInvalid",
11
11
  /**
12
- * @description 对象存储 key 不存在
12
+ * @description Object storage key does not exist
13
13
  */
14
14
  ObjectKeyNotfound = "ObjectKeyNotfound",
15
15
  /**
16
- * @description 请求超时
16
+ * @description Request timeout
17
17
  */
18
18
  RequestTimeOut = "RequestTimeOut"
19
19
  }
@@ -2,19 +2,19 @@ import type { ObjectErrorResult } from './types';
2
2
  export * from './consts';
3
3
  export * from './types';
4
4
  /**
5
- * @description 对象存储操作错误对象
5
+ * @description Object storage operation error object
6
6
  */
7
7
  export declare class ObjectError implements ObjectErrorResult {
8
8
  /**
9
- * @description 错误码枚举
9
+ * @description Error code enum
10
10
  */
11
11
  code: import("../../..").ErrorCode | import("./consts").ObjectErrorCode;
12
12
  /**
13
- * @description 错误文案
13
+ * @description Error message
14
14
  */
15
15
  err_msg: string;
16
16
  /**
17
- * @description 错误载荷
17
+ * @description Error payload
18
18
  */
19
19
  err_values: Record<string, any> | undefined;
20
20
  constructor(result: ObjectErrorResult);
@@ -5,7 +5,7 @@ export type * from './result';
5
5
  export type * from './types';
6
6
  /**
7
7
  * @constant object
8
- * @description 对象存储
8
+ * @description Object storage
9
9
  * @member ObjectError
10
10
  * @member ObjectErrorCode
11
11
  * @member upload
@@ -15,15 +15,15 @@ export type ObjectDownloadResult = ObjectResult<{
15
15
  }>;
16
16
  export type ObjectDeleteResult = ObjectResult<never>;
17
17
  /**
18
- * @description 对象的元信息的结果对象
18
+ * @description Result object for object metadata
19
19
  */
20
20
  export interface ObjectMetadataResultData {
21
21
  /**
22
- * @description 对象存储 key
22
+ * @description Object storage key
23
23
  */
24
24
  object_key: string;
25
25
  /**
26
- * @description 文件大小,字节
26
+ * @description File size in bytes
27
27
  */
28
28
  size: number;
29
29
  }
@@ -1,64 +1,64 @@
1
1
  import type { ObjectError, ObjectErrorCode } from './error';
2
2
  import type { ObjectResultDataFields, ObjectMetadataResultData } from './result';
3
3
  /**
4
- * @description 获取上传信息的操作对象
4
+ * @description Operation object for getting upload info
5
5
  */
6
6
  export interface ObjectStoreUploadResult {
7
7
  /**
8
- * @description 获取上传地址(需要在插件后端请求)
8
+ * @description Get upload URL (must be requested from plugin backend)
9
9
  */
10
10
  getUrl(): string;
11
11
  /**
12
- * @description 获取上传地址(适合在浏览器中请求)
12
+ * @description Get upload URL (suitable for browser requests)
13
13
  */
14
14
  getWebUrl(): string;
15
15
  /**
16
- * @description 获取请求的 FormData 参数
16
+ * @description Get FormData parameters for the request
17
17
  */
18
18
  getFields(): ObjectResultDataFields;
19
19
  }
20
20
  /**
21
- * @description 获取下载信息的操作对象
21
+ * @description Operation object for getting download info
22
22
  */
23
23
  export interface ObjectStoreDownloadResult {
24
24
  /**
25
- * @description 获取下载地址(需要在插件后端请求)
25
+ * @description Get download URL (must be requested from plugin backend)
26
26
  */
27
27
  getUrl(): string;
28
28
  /**
29
- * @description 获取下载地址(适合在浏览器中请求)
29
+ * @description Get download URL (suitable for browser requests)
30
30
  */
31
31
  getWebUrl(): string;
32
32
  }
33
33
  export interface ObjectStore {
34
34
  /**
35
- * @description 对象存储操作错误对象
35
+ * @description Object storage operation error object
36
36
  */
37
37
  ObjectError: typeof ObjectError;
38
38
  /**
39
- * @description 对象存储错误码枚举
39
+ * @description Object storage error code enum
40
40
  */
41
41
  ObjectErrorCode: typeof ObjectErrorCode;
42
42
  /**
43
- * @description 上传一个对象
44
- * @param key 对象存储 key
43
+ * @description Upload an object
44
+ * @param key Object storage key
45
45
  * @returns ObjectStoreUploadResult
46
46
  */
47
47
  upload(key: string): Promise<ObjectStoreUploadResult | ObjectError>;
48
48
  /**
49
- * @description 下载一个对象
50
- * @param key 对象存储 key
49
+ * @description Download an object
50
+ * @param key Object storage key
51
51
  * @returns ObjectStoreDownloadResult
52
52
  */
53
53
  download(key: string): Promise<ObjectStoreDownloadResult | ObjectError>;
54
54
  /**
55
- * @description 删除一个对象
56
- * @param key 对象存储 key
55
+ * @description Delete an object
56
+ * @param key Object storage key
57
57
  */
58
58
  delete(key: string): Promise<void | ObjectError>;
59
59
  /**
60
- * @description 获取一个对象的元信息
61
- * @param key 对象存储 key
60
+ * @description Get metadata of an object
61
+ * @param key Object storage key
62
62
  * @returns ObjectMetadataResultData
63
63
  */
64
64
  metadata(key: string): Promise<ObjectMetadataResultData | ObjectError>;
@@ -1,13 +1,19 @@
1
1
  /**
2
- * @description 获取开放平台 host
2
+ * @description Get the open platform base URL
3
3
  * @alias getONESHostedBaseUrl
4
- * @returns onesHostedBaseUrl
4
+ * @returns ONES_HOSTED_BASE_URL
5
5
  */
6
6
  export declare const getONESHostedBaseUrl: () => string | undefined;
7
7
  /**
8
- * @description 获取插件实例 ID
8
+ * @description Get the app instance ID
9
9
  * @alias getONESHostedAppID
10
- * @returns onesHostedAppID
10
+ * @returns ONES_HOSTED_APP_ID
11
11
  */
12
12
  export declare const getONESHostedAppID: () => string | undefined;
13
+ /**
14
+ * @description Get the app hosted token
15
+ * @alias getONESHostedToken
16
+ * @returns ONES_HOSTED_TOKEN
17
+ */
18
+ export declare const getONESHostedToken: () => string | undefined;
13
19
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/packages/strict/env/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,0BAEhC,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,0BAE9B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/packages/strict/env/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,0BAEhC,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,0BAE9B,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,0BAE9B,CAAA"}
@@ -1,29 +1,29 @@
1
1
  import type { ErrorCode } from '../../../packages/strict/error';
2
2
  export interface SuccessResult<Data> {
3
3
  /**
4
- * @description 请求成功
4
+ * @description Request succeeded
5
5
  */
6
6
  code: 'OK';
7
7
  /**
8
- * @description 请求响应体
8
+ * @description Response body
9
9
  */
10
10
  data?: Data;
11
11
  }
12
12
  export interface ErrorResult<Data, Code> {
13
13
  /**
14
- * @description 错误码枚举
14
+ * @description Error code enum
15
15
  */
16
16
  code: Code | ErrorCode;
17
17
  /**
18
- * @description 请求响应体
18
+ * @description Response body
19
19
  */
20
20
  data?: Data;
21
21
  /**
22
- * @description 错误文案
22
+ * @description Error message
23
23
  */
24
24
  err_msg: string;
25
25
  /**
26
- * @description 错误载荷
26
+ * @description Error payload
27
27
  */
28
28
  err_values?: Record<string, any>;
29
29
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ones-open/node-sdk",
3
- "version": "0.0.4-8523.78+70dc0f93",
3
+ "version": "0.0.4-8530.211+f415b297",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -50,5 +50,5 @@
50
50
  "devDependencies": {
51
51
  "@types/lodash-es": "^4.17.12"
52
52
  },
53
- "gitHead": "70dc0f93d9bc7dcf008453f7c37d4781df841732"
53
+ "gitHead": "f415b297d6c170b1f8ece7ff00e5f72aa1d952fb"
54
54
  }