@did-space/core 0.5.78 → 0.5.80

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (201) hide show
  1. package/dist/{constants → cjs/constants}/index.d.ts +0 -6
  2. package/dist/{constants → cjs/constants}/index.js +1 -9
  3. package/dist/{meta → cjs/meta}/template/app.d.ts +0 -8
  4. package/dist/cjs/meta/template/index.d.ts +2 -0
  5. package/dist/cjs/meta/template/index.js +18 -0
  6. package/dist/{model → cjs/model}/app-space-apply.d.ts +1 -1
  7. package/dist/cjs/model/audit-log.d.ts +527 -0
  8. package/dist/cjs/model/audit-log.js +72 -0
  9. package/dist/{model → cjs/model}/did-object-mapping.d.ts +1 -1
  10. package/dist/{model → cjs/model}/index.d.ts +1 -0
  11. package/dist/{model → cjs/model}/index.js +1 -0
  12. package/dist/{model → cjs/model}/object-collection.d.ts +1 -1
  13. package/dist/{model → cjs/model}/object.d.ts +1 -1
  14. package/dist/{model → cjs/model}/space.d.ts +1 -1
  15. package/dist/{model → cjs/model}/tree.d.ts +2 -2
  16. package/dist/cjs/model/tree.js +9 -0
  17. package/dist/cjs/protocols/driver.js +2 -0
  18. package/dist/cjs/protocols/space-config.js +2 -0
  19. package/dist/cjs/protocols/space-operator.js +2 -0
  20. package/dist/cjs/protocols/space-owner-operator.js +2 -0
  21. package/dist/cjs/protocols/space.js +2 -0
  22. package/dist/es/configuration/index.d.ts +1 -0
  23. package/dist/es/configuration/index.js +1 -0
  24. package/dist/es/configuration/space-config.d.ts +23 -0
  25. package/dist/es/configuration/space-config.js +5 -0
  26. package/dist/es/constants/index.d.ts +30 -0
  27. package/dist/es/constants/index.js +35 -0
  28. package/dist/es/drivers/base.d.ts +40 -0
  29. package/dist/es/drivers/base.js +113 -0
  30. package/dist/es/drivers/index.d.ts +1 -0
  31. package/dist/es/drivers/index.js +1 -0
  32. package/dist/es/index.d.ts +9 -0
  33. package/dist/es/index.js +9 -0
  34. package/dist/es/meta/data.d.ts +4 -0
  35. package/dist/es/meta/data.js +1 -0
  36. package/dist/es/meta/index.d.ts +3 -0
  37. package/dist/es/meta/index.js +3 -0
  38. package/dist/es/meta/object.d.ts +70 -0
  39. package/dist/es/meta/object.js +1 -0
  40. package/dist/es/meta/template/app.d.ts +27 -0
  41. package/dist/es/meta/template/app.js +1 -0
  42. package/dist/es/meta/template/index.d.ts +2 -0
  43. package/dist/es/meta/template/index.js +2 -0
  44. package/dist/es/meta/template/preview/base.d.ts +13 -0
  45. package/dist/es/meta/template/preview/base.js +12 -0
  46. package/dist/es/meta/template/preview/default.d.ts +75 -0
  47. package/dist/es/meta/template/preview/default.js +9 -0
  48. package/dist/es/meta/template/preview/index.d.ts +5 -0
  49. package/dist/es/meta/template/preview/index.js +5 -0
  50. package/dist/es/meta/template/preview/nft.d.ts +23 -0
  51. package/dist/es/meta/template/preview/nft.js +8 -0
  52. package/dist/es/meta/template/preview/passport.d.ts +35 -0
  53. package/dist/es/meta/template/preview/passport.js +19 -0
  54. package/dist/es/meta/template/preview/profile.d.ts +23 -0
  55. package/dist/es/meta/template/preview/profile.js +8 -0
  56. package/dist/es/model/app-space-apply.d.ts +75 -0
  57. package/dist/es/model/app-space-apply.js +1 -0
  58. package/dist/es/model/audit-log.d.ts +527 -0
  59. package/dist/es/model/audit-log.js +69 -0
  60. package/dist/es/model/did-object-mapping.d.ts +8 -0
  61. package/dist/es/model/did-object-mapping.js +1 -0
  62. package/dist/es/model/index.d.ts +5 -0
  63. package/dist/es/model/index.js +5 -0
  64. package/dist/es/model/object-collection.d.ts +42 -0
  65. package/dist/es/model/object-collection.js +1 -0
  66. package/dist/es/model/object.d.ts +59 -0
  67. package/dist/es/model/object.js +1 -0
  68. package/dist/es/model/space.d.ts +21 -0
  69. package/dist/es/model/space.js +1 -0
  70. package/dist/es/model/tree.d.ts +96 -0
  71. package/dist/es/model/tree.js +6 -0
  72. package/dist/es/protocols/base-space.d.ts +4 -0
  73. package/dist/es/protocols/base-space.js +1 -0
  74. package/dist/es/protocols/driver.d.ts +7 -0
  75. package/dist/es/protocols/driver.js +1 -0
  76. package/dist/es/protocols/index.d.ts +5 -0
  77. package/dist/es/protocols/index.js +5 -0
  78. package/dist/es/protocols/space-config.d.ts +17 -0
  79. package/dist/es/protocols/space-config.js +1 -0
  80. package/dist/es/protocols/space-operator.d.ts +63 -0
  81. package/dist/es/protocols/space-operator.js +1 -0
  82. package/dist/es/protocols/space-owner-operator.d.ts +43 -0
  83. package/dist/es/protocols/space-owner-operator.js +1 -0
  84. package/dist/es/protocols/space.d.ts +7 -0
  85. package/dist/es/protocols/space.js +1 -0
  86. package/dist/es/schemas/global-space.d.ts +2 -0
  87. package/dist/es/schemas/global-space.js +19 -0
  88. package/dist/es/schemas/index.d.ts +3 -0
  89. package/dist/es/schemas/index.js +3 -0
  90. package/dist/es/schemas/object-space.d.ts +6 -0
  91. package/dist/es/schemas/object-space.js +44 -0
  92. package/dist/es/schemas/space-configuration.d.ts +4 -0
  93. package/dist/es/schemas/space-configuration.js +22 -0
  94. package/dist/es/schemas/space-options.d.ts +1 -0
  95. package/dist/es/schemas/space-options.js +4 -0
  96. package/dist/es/space/global-space.d.ts +43 -0
  97. package/dist/es/space/global-space.js +169 -0
  98. package/dist/es/space/index.d.ts +3 -0
  99. package/dist/es/space/index.js +3 -0
  100. package/dist/es/space/object-space.d.ts +123 -0
  101. package/dist/es/space/object-space.js +684 -0
  102. package/dist/es/space/space.d.ts +47 -0
  103. package/dist/es/space/space.js +172 -0
  104. package/dist/es/utils/common.d.ts +5 -0
  105. package/dist/es/utils/common.js +38 -0
  106. package/dist/es/utils/hash.d.ts +31 -0
  107. package/dist/es/utils/hash.js +64 -0
  108. package/dist/es/utils/index.d.ts +4 -0
  109. package/dist/es/utils/index.js +4 -0
  110. package/dist/es/utils/logger.d.ts +2 -0
  111. package/dist/es/utils/logger.js +2 -0
  112. package/dist/es/utils/stream.d.ts +11 -0
  113. package/dist/es/utils/stream.js +18 -0
  114. package/package.json +98 -9
  115. package/dist/meta/template/app-backup.d.ts +0 -55
  116. package/dist/meta/template/app-backup.js +0 -4
  117. package/dist/meta/template/app-connected.d.ts +0 -49
  118. package/dist/meta/template/app-connected.js +0 -4
  119. package/dist/meta/template/app-disconnected.d.ts +0 -20
  120. package/dist/meta/template/app-disconnected.js +0 -4
  121. package/dist/meta/template/app-restore.d.ts +0 -40
  122. package/dist/meta/template/app-restore.js +0 -4
  123. package/dist/meta/template/index.d.ts +0 -6
  124. package/dist/meta/template/index.js +0 -22
  125. package/dist/model/app-space-apply.js +0 -7
  126. package/dist/model/did-object-mapping.js +0 -8
  127. package/dist/model/object-collection.js +0 -7
  128. package/dist/model/object.js +0 -7
  129. package/dist/model/space.js +0 -7
  130. package/dist/model/tree.js +0 -18
  131. /package/dist/{configuration → cjs/configuration}/index.d.ts +0 -0
  132. /package/dist/{configuration → cjs/configuration}/index.js +0 -0
  133. /package/dist/{configuration → cjs/configuration}/space-config.d.ts +0 -0
  134. /package/dist/{configuration → cjs/configuration}/space-config.js +0 -0
  135. /package/dist/{drivers → cjs/drivers}/base.d.ts +0 -0
  136. /package/dist/{drivers → cjs/drivers}/base.js +0 -0
  137. /package/dist/{drivers → cjs/drivers}/index.d.ts +0 -0
  138. /package/dist/{drivers → cjs/drivers}/index.js +0 -0
  139. /package/dist/{index.d.ts → cjs/index.d.ts} +0 -0
  140. /package/dist/{index.js → cjs/index.js} +0 -0
  141. /package/dist/{meta → cjs/meta}/data.d.ts +0 -0
  142. /package/dist/{meta → cjs/meta}/data.js +0 -0
  143. /package/dist/{meta → cjs/meta}/index.d.ts +0 -0
  144. /package/dist/{meta → cjs/meta}/index.js +0 -0
  145. /package/dist/{meta → cjs/meta}/object.d.ts +0 -0
  146. /package/dist/{meta → cjs/meta}/object.js +0 -0
  147. /package/dist/{meta → cjs/meta}/template/app.js +0 -0
  148. /package/dist/{meta → cjs/meta}/template/preview/base.d.ts +0 -0
  149. /package/dist/{meta → cjs/meta}/template/preview/base.js +0 -0
  150. /package/dist/{meta → cjs/meta}/template/preview/default.d.ts +0 -0
  151. /package/dist/{meta → cjs/meta}/template/preview/default.js +0 -0
  152. /package/dist/{meta → cjs/meta}/template/preview/index.d.ts +0 -0
  153. /package/dist/{meta → cjs/meta}/template/preview/index.js +0 -0
  154. /package/dist/{meta → cjs/meta}/template/preview/nft.d.ts +0 -0
  155. /package/dist/{meta → cjs/meta}/template/preview/nft.js +0 -0
  156. /package/dist/{meta → cjs/meta}/template/preview/passport.d.ts +0 -0
  157. /package/dist/{meta → cjs/meta}/template/preview/passport.js +0 -0
  158. /package/dist/{meta → cjs/meta}/template/preview/profile.d.ts +0 -0
  159. /package/dist/{meta → cjs/meta}/template/preview/profile.js +0 -0
  160. /package/dist/{protocols/base-space.js → cjs/model/app-space-apply.js} +0 -0
  161. /package/dist/{protocols/driver.js → cjs/model/did-object-mapping.js} +0 -0
  162. /package/dist/{protocols/space-config.js → cjs/model/object-collection.js} +0 -0
  163. /package/dist/{protocols/space-operator.js → cjs/model/object.js} +0 -0
  164. /package/dist/{protocols → cjs/model}/space.js +0 -0
  165. /package/dist/{protocols → cjs/protocols}/base-space.d.ts +0 -0
  166. /package/dist/{protocols/space-owner-operator.js → cjs/protocols/base-space.js} +0 -0
  167. /package/dist/{protocols → cjs/protocols}/driver.d.ts +0 -0
  168. /package/dist/{protocols → cjs/protocols}/index.d.ts +0 -0
  169. /package/dist/{protocols → cjs/protocols}/index.js +0 -0
  170. /package/dist/{protocols → cjs/protocols}/space-config.d.ts +0 -0
  171. /package/dist/{protocols → cjs/protocols}/space-operator.d.ts +0 -0
  172. /package/dist/{protocols → cjs/protocols}/space-owner-operator.d.ts +0 -0
  173. /package/dist/{protocols → cjs/protocols}/space.d.ts +0 -0
  174. /package/dist/{schemas → cjs/schemas}/global-space.d.ts +0 -0
  175. /package/dist/{schemas → cjs/schemas}/global-space.js +0 -0
  176. /package/dist/{schemas → cjs/schemas}/index.d.ts +0 -0
  177. /package/dist/{schemas → cjs/schemas}/index.js +0 -0
  178. /package/dist/{schemas → cjs/schemas}/object-space.d.ts +0 -0
  179. /package/dist/{schemas → cjs/schemas}/object-space.js +0 -0
  180. /package/dist/{schemas → cjs/schemas}/space-configuration.d.ts +0 -0
  181. /package/dist/{schemas → cjs/schemas}/space-configuration.js +0 -0
  182. /package/dist/{schemas → cjs/schemas}/space-options.d.ts +0 -0
  183. /package/dist/{schemas → cjs/schemas}/space-options.js +0 -0
  184. /package/dist/{space → cjs/space}/global-space.d.ts +0 -0
  185. /package/dist/{space → cjs/space}/global-space.js +0 -0
  186. /package/dist/{space → cjs/space}/index.d.ts +0 -0
  187. /package/dist/{space → cjs/space}/index.js +0 -0
  188. /package/dist/{space → cjs/space}/object-space.d.ts +0 -0
  189. /package/dist/{space → cjs/space}/object-space.js +0 -0
  190. /package/dist/{space → cjs/space}/space.d.ts +0 -0
  191. /package/dist/{space → cjs/space}/space.js +0 -0
  192. /package/dist/{utils → cjs/utils}/common.d.ts +0 -0
  193. /package/dist/{utils → cjs/utils}/common.js +0 -0
  194. /package/dist/{utils → cjs/utils}/hash.d.ts +0 -0
  195. /package/dist/{utils → cjs/utils}/hash.js +0 -0
  196. /package/dist/{utils → cjs/utils}/index.d.ts +0 -0
  197. /package/dist/{utils → cjs/utils}/index.js +0 -0
  198. /package/dist/{utils → cjs/utils}/logger.d.ts +0 -0
  199. /package/dist/{utils → cjs/utils}/logger.js +0 -0
  200. /package/dist/{utils → cjs/utils}/stream.d.ts +0 -0
  201. /package/dist/{utils → cjs/utils}/stream.js +0 -0
@@ -0,0 +1,69 @@
1
+ import { z } from 'zod';
2
+ export var AuditLogStatus;
3
+ (function (AuditLogStatus) {
4
+ AuditLogStatus["DEFAULT"] = "default";
5
+ AuditLogStatus["SUCCEEDED"] = "succeeded";
6
+ AuditLogStatus["FAILED"] = "failed";
7
+ AuditLogStatus["PENDING"] = "pending";
8
+ })(AuditLogStatus || (AuditLogStatus = {}));
9
+ export var AuditLogAction;
10
+ (function (AuditLogAction) {
11
+ AuditLogAction["APP_DISCONNECTED"] = "app-disconnected";
12
+ AuditLogAction["APP_RESTORE"] = "app-restore";
13
+ AuditLogAction["APP_BACKUP"] = "app-backup";
14
+ AuditLogAction["APP_CONNECTED"] = "app-connected";
15
+ })(AuditLogAction || (AuditLogAction = {}));
16
+ export const AppConnectedSchema = z.object({
17
+ spaceDid: z.string().min(1),
18
+ appDid: z.string().min(1),
19
+ appName: z.string().min(1),
20
+ appDescription: z.string(),
21
+ scopes: z.string().min(1),
22
+ /** 注意,有了 appUrl,只要使用它的 __blocklet__.js?type=json api就能获取 blocklet的 logo,描述,等信息 */
23
+ appUrl: z.string(),
24
+ /** 授权的时候用户当时在哪个网址?比如在 server 的 blocklet 的备份页面进行授权的,在blocklet 的授权页面进行授权的 */
25
+ referrer: z.string(),
26
+ });
27
+ export const AppDisconnectedSchema = z.object({
28
+ spaceDid: z.string().min(1),
29
+ appDid: z.string().min(1),
30
+ appName: z.string().min(1),
31
+ });
32
+ export const AppBackupSchema = z.object({
33
+ /** 指向 server 的 did 地址 */
34
+ serverDid: z.string().min(1),
35
+ /** 本质上是始终指向最新的 appDid,目前主要是 rotate 的 blocklet 在还原的时候会用到这个参数 */
36
+ signerDid: z.string().min(1),
37
+ appName: z.string().min(1),
38
+ appDescription: z.string(),
39
+ /** 授权的时候用户当时在哪个网址?比如在 server 的 blocklet 的备份页面进行授权的,在blocklet 的授权页面进行授权的 */
40
+ referrer: z.string(),
41
+ });
42
+ export const AppRestoreSchema = z.object({
43
+ /** 指向 server 的 did 地址 */
44
+ serverDid: z.string().min(1),
45
+ appName: z.string().min(1),
46
+ appDescription: z.string(),
47
+ referrer: z.string(),
48
+ });
49
+ export const AuditLogSchema = z.object({
50
+ id: z.string(),
51
+ actionType: z.nativeEnum(AuditLogAction),
52
+ entityId: z.string().min(1),
53
+ entityName: z.string().optional().default(''),
54
+ userId: z.string().min(1),
55
+ username: z.string().optional().default(''),
56
+ data: z.union([AppConnectedSchema, AppDisconnectedSchema, AppBackupSchema, AppRestoreSchema]),
57
+ status: z.nativeEnum(AuditLogStatus).optional().default(AuditLogStatus.SUCCEEDED),
58
+ reason: z.string().optional().default(''),
59
+ env: z.record(z.any()).optional().default({}),
60
+ createdAt: z
61
+ .string()
62
+ .optional()
63
+ .default(() => new Date().toISOString()),
64
+ updatedAt: z
65
+ .string()
66
+ .optional()
67
+ .default(() => new Date().toISOString()),
68
+ });
69
+ export const CreationAuditLogSchema = AuditLogSchema.extend({ id: AuditLogSchema.shape.id.optional() });
@@ -0,0 +1,8 @@
1
+ import type { Model, InferAttributes } from 'sequelize';
2
+ export declare class DidObjectMappingRepository extends Model<InferAttributes<DidObjectMappingRepository>, InferAttributes<DidObjectMappingRepository>> {
3
+ did: string;
4
+ spaceDid: string;
5
+ appDid: string;
6
+ key: string;
7
+ metadata: Record<string, string>;
8
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,5 @@
1
+ export * from './app-space-apply';
2
+ export * from './object-collection';
3
+ export * from './object';
4
+ export * from './tree';
5
+ export * from './audit-log';
@@ -0,0 +1,5 @@
1
+ export * from './app-space-apply';
2
+ export * from './object-collection';
3
+ export * from './object';
4
+ export * from './tree';
5
+ export * from './audit-log';
@@ -0,0 +1,42 @@
1
+ import type { Model } from 'sequelize';
2
+ /**
3
+ * @description 存储的是对象的信息,不保存结构,创建之初就确定了,只能增加,删除
4
+ * @export
5
+ * @interface ObjectModel
6
+ */
7
+ export interface ObjectCollectionModel {
8
+ /**
9
+ * @primaryKey
10
+ * @description 对象的唯一标识,格式是 ipfs cid v1
11
+ * @type {string}
12
+ * @column {DataTypes.CHAR(64)}
13
+ * @memberof ObjectCollectionModel
14
+ */
15
+ id: string;
16
+ /**
17
+ * @description 对象的创建时间
18
+ * @type {string}
19
+ * @column {DataTypes.DATE}
20
+ * @memberof ObjectCollectionModel
21
+ */
22
+ createdAt: string;
23
+ }
24
+ export type ObjectCollectionModelCreation = Pick<ObjectCollectionModel, 'id'>;
25
+ export declare class ObjectCollectionRepositoryClass extends Model<ObjectCollectionModel, ObjectCollectionModelCreation> {
26
+ /**
27
+ * @primaryKey
28
+ * @description 对象的唯一标识,格式是 ipfs cid v1
29
+ * @type {string}
30
+ * @column {DataTypes.CHAR(64)}
31
+ * @memberof ObjectCollectionModel
32
+ */
33
+ id: string;
34
+ /**
35
+ * @description 对象的创建时间
36
+ * @type {string}
37
+ * @column {DataTypes.DATE}
38
+ * @memberof ObjectCollectionModel
39
+ */
40
+ createdAt: string;
41
+ }
42
+ export type ObjectCollectionRepository = typeof ObjectCollectionRepositoryClass;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,59 @@
1
+ import type { Model, CreationOptional } from 'sequelize';
2
+ /**
3
+ * @description 存储的是对象的信息,不保存结构,创建之初就确定了,只能增加,删除
4
+ * @export
5
+ * @interface ObjectModel
6
+ */
7
+ export interface ObjectModel {
8
+ /**
9
+ * @primaryKey
10
+ * @description 对象的唯一标识,格式是 ipfs cid v1
11
+ * @type {string}
12
+ * @column {DataTypes.STRING(59)}
13
+ * @memberof ObjectModel
14
+ */
15
+ id: string;
16
+ /**
17
+ * @description 对象的大小
18
+ * @type {number}
19
+ * @column {DataTypes.BIGINT.UNSIGNED}
20
+ * @memberof ObjectModel
21
+ */
22
+ size: number;
23
+ /**
24
+ * @description 存储对象的元数据
25
+ * @type {ObjectModelMeta}
26
+ * @column {DataTypes.JSON}
27
+ * @memberof ObjectModel
28
+ */
29
+ meta: ObjectModelMeta;
30
+ /**
31
+ * @description 对象的创建时间
32
+ * @type {string}
33
+ * @column {DataTypes.DATE}
34
+ * @memberof ObjectModel
35
+ */
36
+ createdAt?: CreationOptional<string>;
37
+ }
38
+ export interface ObjectModelMeta {
39
+ /**
40
+ *
41
+ * @description 对象的 hash,如果对象是文件夹则为 null,否则必须有值
42
+ * @type {string}
43
+ * @memberof ObjectModelMeta
44
+ */
45
+ mimeType: string | null;
46
+ /**
47
+ * @description 保存这个对象第一次出现的文件名
48
+ * @type {string}
49
+ * @memberof ObjectModelMeta
50
+ */
51
+ key: string;
52
+ }
53
+ export declare class ObjectRepositoryClass extends Model<ObjectModel> implements ObjectModel {
54
+ id: string;
55
+ size: number;
56
+ meta: ObjectModelMeta;
57
+ createdAt?: CreationOptional<string>;
58
+ }
59
+ export type ObjectRepository = typeof ObjectRepositoryClass;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,21 @@
1
+ import type { Model } from 'sequelize';
2
+ import type { LiteralUnion } from 'type-fest';
3
+ export declare class SpaceRepositoryClass extends Model<SpaceRepositoryClass, SpaceRepositoryClass> {
4
+ id: string;
5
+ drive: string;
6
+ did: string;
7
+ type: LiteralUnion<'default' | 'buy', string>;
8
+ name: string;
9
+ description: string;
10
+ size: number;
11
+ assetDid: string;
12
+ metadata: {
13
+ usageReportId?: string;
14
+ usedUnit?: number;
15
+ };
16
+ createAt: Date;
17
+ updateAt: Date | string;
18
+ expireAt: Date;
19
+ ownerDid: string;
20
+ }
21
+ export type SpaceRepository = typeof SpaceRepositoryClass;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,96 @@
1
+ import type { Model } from 'sequelize';
2
+ import type { ObjectModel } from './object';
3
+ export interface TreeModel {
4
+ /**
5
+ * @description uuidv4
6
+ * @type {string}
7
+ * @column {DataTypes.BIGINT.UNSIGNED}
8
+ * @memberof Tree
9
+ */
10
+ id: string;
11
+ /**
12
+ * @description Space 的 DID
13
+ * @type {string}
14
+ * @column {DataTypes.STRING(40)}
15
+ * @memberof Tree
16
+ */
17
+ spaceDid: string;
18
+ /**
19
+ * @description 当且仅当,指向文件夹的时候才为空
20
+ * @column {DataTypes.CHAR(64)}
21
+ * @memberof Tree
22
+ */
23
+ objectId: null | string;
24
+ /**
25
+ * @description 绑定对象的上一级目录的 id
26
+ * @example /abc/
27
+ * @column {DataTypes.BIGINT.UNSIGNED}
28
+ * @memberof Tree
29
+ */
30
+ parentId: null | string;
31
+ /**
32
+ * @description 等价于文件夹和文件的路径,注意不包含 SpaceDid
33
+ * @example /app 或 /app/objects
34
+ * @type {string}
35
+ * @column {DataTypes.STRING(1024)}
36
+ * @memberof Tree
37
+ */
38
+ key: string;
39
+ /**
40
+ * @description folder or file
41
+ * @type {number}
42
+ * @column {DataTypes.TINYINT.UNSIGNED({ length: 1 })}
43
+ * @memberof Tree
44
+ */
45
+ type: number;
46
+ /**
47
+ *
48
+ * @description
49
+ * @default {{}}
50
+ * @type {TreeMeta}
51
+ * @column {DataTypes.JSON}
52
+ * @memberof Tree
53
+ */
54
+ meta: TreeModelMeta;
55
+ /**
56
+ * @description
57
+ * @type {string}
58
+ * @column {DataTypes.DATE}
59
+ * @memberof Tree
60
+ */
61
+ createdAt: Date | string;
62
+ /**
63
+ * @description
64
+ * @type {string}
65
+ * @column {DataTypes.DATE}
66
+ * @memberof Tree
67
+ */
68
+ updatedAt: Date | string;
69
+ size?: number;
70
+ count?: number;
71
+ }
72
+ export interface TreeModelMeta {
73
+ }
74
+ export type CreationTreeModel = Omit<TreeModel, 'id' | 'createdAt' | 'updatedAt' | 'meta'>;
75
+ export declare class TreeRepositoryClass extends Model<TreeModel, CreationTreeModel> implements TreeModel {
76
+ id: string;
77
+ spaceDid: string;
78
+ objectId: string;
79
+ parentId: string;
80
+ key: string;
81
+ type: number;
82
+ meta: TreeModelMeta;
83
+ createdAt: Date;
84
+ updatedAt: Date;
85
+ size: number;
86
+ count: number;
87
+ Object: ObjectModel;
88
+ static deepCreate(_data: CreationTreeModel): Promise<TreeModel>;
89
+ [key: string]: any;
90
+ }
91
+ export type TreeRepository = typeof TreeRepositoryClass;
92
+ export declare enum TreeModelType {
93
+ FOLDER = 0,
94
+ FILE = 1
95
+ }
96
+ export declare const TreeModelDefaultMeta: {};
@@ -0,0 +1,6 @@
1
+ export var TreeModelType;
2
+ (function (TreeModelType) {
3
+ TreeModelType[TreeModelType["FOLDER"] = 0] = "FOLDER";
4
+ TreeModelType[TreeModelType["FILE"] = 1] = "FILE";
5
+ })(TreeModelType || (TreeModelType = {}));
6
+ export const TreeModelDefaultMeta = {};
@@ -0,0 +1,4 @@
1
+ import { SpaceConfigProtocol } from './space-config';
2
+ import { SpaceOperatorProtocol } from './space-operator';
3
+ export interface BaseSpaceProtocol extends SpaceOperatorProtocol, SpaceConfigProtocol {
4
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,7 @@
1
+ import { BaseSpaceProtocol } from './base-space';
2
+ export interface DriverOptions {
3
+ root: string;
4
+ }
5
+ export interface DriverProtocol extends BaseSpaceProtocol {
6
+ readonly options: DriverOptions;
7
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,5 @@
1
+ export * from './driver';
2
+ export * from './space';
3
+ export * from './space-config';
4
+ export * from './space-operator';
5
+ export * from './space-owner-operator';
@@ -0,0 +1,5 @@
1
+ export * from './driver';
2
+ export * from './space';
3
+ export * from './space-config';
4
+ export * from './space-operator';
5
+ export * from './space-owner-operator';
@@ -0,0 +1,17 @@
1
+ import { SpaceConfig } from '../configuration';
2
+ export interface PermissionOptions {
3
+ fromAppDid: string;
4
+ toAppDid: string;
5
+ }
6
+ export interface SpaceConfigProtocol {
7
+ createConfig(spaceConfig: SpaceConfig): Promise<void>;
8
+ destroyConfig(): Promise<void>;
9
+ set<T = any>(key: string, value: T): Promise<void>;
10
+ get<T = any>(key: string): Promise<T>;
11
+ setListable(options: PermissionOptions, value: boolean): Promise<void>;
12
+ setReadable(options: PermissionOptions, value: boolean): Promise<void>;
13
+ setWritable(options: PermissionOptions, value: boolean): Promise<void>;
14
+ isListable(options: PermissionOptions): Promise<boolean>;
15
+ isReadable(options: PermissionOptions): Promise<boolean>;
16
+ isWritable(options: PermissionOptions): Promise<boolean>;
17
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,63 @@
1
+ /// <reference types="node" />
2
+ import { Stream } from 'stream';
3
+ import { SpaceConfig } from '../configuration';
4
+ import { Data, Object } from '../meta';
5
+ import { SpaceOwnerOperatorProtocol, type ObjectMetadata } from './space-owner-operator';
6
+ export interface AppSpaceOptions {
7
+ appDid: string;
8
+ }
9
+ export interface WriteOptions extends AppSpaceOptions {
10
+ key: string;
11
+ data: Data;
12
+ hash?: string;
13
+ size?: number;
14
+ metadata?: ObjectMetadata;
15
+ }
16
+ export interface DeleteOptions extends AppSpaceOptions {
17
+ key: string;
18
+ }
19
+ export interface ReadOptions extends AppSpaceOptions {
20
+ key: string;
21
+ }
22
+ export interface GetHashOptions extends AppSpaceOptions {
23
+ key: string;
24
+ }
25
+ export interface ListOptions {
26
+ key: string;
27
+ useGlobal?: false | true;
28
+ }
29
+ export interface ListsOptions {
30
+ key: string;
31
+ /**
32
+ *
33
+ * @description 递归的列出文件吗?
34
+ * @default false
35
+ * @type {boolean}
36
+ * @memberof ListsOptions
37
+ */
38
+ recursive?: boolean;
39
+ /**
40
+ * @description 需要显示目录吗?默认显示
41
+ * @default false
42
+ * @type {boolean}
43
+ * @memberof ListOptions
44
+ */
45
+ ignoreDirectories?: boolean;
46
+ useGlobal?: false | true;
47
+ }
48
+ export interface SpaceOperatorProtocol extends SpaceOwnerOperatorProtocol {
49
+ createSpace(spaceConfig: SpaceConfig): Promise<void>;
50
+ isSpaceCreated(): Promise<boolean>;
51
+ destroySpace(): Promise<void>;
52
+ getSpaceSize(): Promise<number>;
53
+ createAppSpace(options: AppSpaceOptions): Promise<void>;
54
+ destroyAppSpace(options: AppSpaceOptions): Promise<void>;
55
+ getAppSpacePath(options: AppSpaceOptions): Promise<string>;
56
+ write(options: WriteOptions): Promise<void>;
57
+ delete(options: DeleteOptions): Promise<void>;
58
+ read(options: ReadOptions): Promise<Stream>;
59
+ getHash(options: GetHashOptions): Promise<string>;
60
+ exists(options: ReadOptions): Promise<boolean>;
61
+ lists(options: ListsOptions): Promise<Object[]>;
62
+ list(options: ListOptions): Promise<Object | null>;
63
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,43 @@
1
+ /// <reference types="node" />
2
+ import { Stream } from 'stream';
3
+ import { Data } from '../meta';
4
+ export type KeyStatus = {
5
+ /**
6
+ * @description 文件夹已存储的对象个数
7
+ * @type {number}
8
+ */
9
+ objects: number;
10
+ /**
11
+ * @description 文件夹的最新修改时间
12
+ * @type {number}
13
+ */
14
+ lastModified: number;
15
+ /**
16
+ * @description 文件夹的总大小
17
+ * @type {number}
18
+ */
19
+ size: number;
20
+ };
21
+ export type ObjectMetadata = Record<string, any>;
22
+ export type WriteAsOwnerOptions = {
23
+ hash: string | null;
24
+ size: number;
25
+ useGlobal?: false | true;
26
+ metadata?: ObjectMetadata;
27
+ };
28
+ export type ReadAsOwnerOptions = {
29
+ useGlobal?: false | true;
30
+ };
31
+ export type DeleteAsOwnerOptions = {
32
+ useGlobal?: false | true;
33
+ };
34
+ export type ExistsAsOwnerOptions = {
35
+ useGlobal?: false | true;
36
+ };
37
+ export interface SpaceOwnerOperatorProtocol {
38
+ writeAsOwner(key: string, data: Data, options?: WriteAsOwnerOptions): Promise<void>;
39
+ deleteAsOwner(key: string, options?: DeleteAsOwnerOptions): Promise<void>;
40
+ readAsOwner(key: string, options?: ReadAsOwnerOptions): Promise<Stream>;
41
+ existsAsOwner(key: string, options?: ExistsAsOwnerOptions): Promise<boolean>;
42
+ getStatusAsOwner(key: string): Promise<KeyStatus>;
43
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,7 @@
1
+ /// <reference types="node" />
2
+ import type EventEmitter from 'events';
3
+ import { BaseSpaceProtocol } from './base-space';
4
+ import { DriverProtocol } from './driver';
5
+ export interface SpaceProtocol extends BaseSpaceProtocol, EventEmitter {
6
+ readonly driver: DriverProtocol;
7
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,2 @@
1
+ export declare const GlobalSpaceOptionsSchema: import("joi").ObjectSchema<any>;
2
+ export declare const HashSchema: import("joi").StringSchema<string>;
@@ -0,0 +1,19 @@
1
+ import { Joi } from '@arcblock/validator';
2
+ import { isCidV1 } from '../utils';
3
+ export const GlobalSpaceOptionsSchema = Joi.object({
4
+ driver: Joi.any().required(),
5
+ treeRepository: Joi.any().required(),
6
+ objectRepository: Joi.any().required(),
7
+ objectCollectionRepository: Joi.any().required(),
8
+ gcMaxCount: Joi.number().integer().optional().default(100),
9
+ gcMaxConcurrency: Joi.number().integer().optional().default(8),
10
+ });
11
+ export const HashSchema = Joi.string()
12
+ .custom((value, helper) => {
13
+ // @NOTE: 不是一个 ipfs cid,且不是一个 sha256 hash,才会报错
14
+ if (!isCidV1(value) && value.length !== 64) {
15
+ return helper.error(`Invalid hash(${value})`);
16
+ }
17
+ return value;
18
+ })
19
+ .required();
@@ -0,0 +1,3 @@
1
+ export * from './space-options';
2
+ export * from './space-configuration';
3
+ export * from './object-space';
@@ -0,0 +1,3 @@
1
+ export * from './space-options';
2
+ export * from './space-configuration';
3
+ export * from './object-space';
@@ -0,0 +1,6 @@
1
+ export declare const OwnerOperatorKeySchema: import("joi").StringSchema<string>;
2
+ export declare const WriteAsOwnerOptionsSchema: import("joi").ObjectSchema<any>;
3
+ export declare const ObjectSpaceOptionsSchema: import("joi").ObjectSchema<any>;
4
+ export declare const DeleteAsOwnerOptionsSchema: import("joi").ObjectSchema<any>;
5
+ export declare const WriteOptionsSchema: import("joi").ObjectSchema<any>;
6
+ export declare const GetHashOptionsSchema: import("joi").ObjectSchema<any>;
@@ -0,0 +1,44 @@
1
+ import { Joi } from '@arcblock/validator';
2
+ import { GLOBAL_SPACE_ROOT } from '../constants';
3
+ export const OwnerOperatorKeySchema = Joi.string().regex(/^\//).required();
4
+ const WriteAsOwnerOptionsByFolderSchema = {
5
+ is: Joi.string().regex(/\/$/),
6
+ then: Joi.optional().default(''),
7
+ otherwise: Joi.required(),
8
+ };
9
+ const MetadataSchema = {
10
+ is: Joi.object(),
11
+ then: Joi.optional().default(''),
12
+ otherwise: Joi.required(),
13
+ };
14
+ export const WriteAsOwnerOptionsSchema = Joi.object({
15
+ key: OwnerOperatorKeySchema,
16
+ data: Joi.any().when('key', WriteAsOwnerOptionsByFolderSchema).when('metadata', MetadataSchema),
17
+ // @FIXME: 当 key 是文件夹 或者 data 不是一个 stream 的时候,hash, size 是可选的,现在的规则尝试之后没能做到这么精细化(使用 when 无法满足要求) @jianchao
18
+ hash: Joi.string().optional().allow(null).default(null),
19
+ size: Joi.number().integer().optional().allow(null).default(null),
20
+ useGlobal: Joi.boolean().optional().default(false),
21
+ metadata: Joi.object().optional().default({}),
22
+ });
23
+ export const ObjectSpaceOptionsSchema = Joi.object({
24
+ driver: Joi.any().required(),
25
+ spaceDid: Joi.alternatives().try(Joi.DID(), Joi.string().valid(GLOBAL_SPACE_ROOT)).required(),
26
+ treeRepository: Joi.any().required(),
27
+ objectRepository: Joi.any().required(),
28
+ objectCollectionRepository: Joi.any().required(),
29
+ });
30
+ export const DeleteAsOwnerOptionsSchema = Joi.object({
31
+ key: OwnerOperatorKeySchema,
32
+ });
33
+ export const WriteOptionsSchema = Joi.object({
34
+ appDid: Joi.DID().required(),
35
+ key: Joi.string().required(),
36
+ data: Joi.any().when('key', WriteAsOwnerOptionsByFolderSchema).when('metadata', MetadataSchema),
37
+ hash: Joi.string().optional().allow(null).default(null),
38
+ size: Joi.number().integer().optional().allow(null).default(null),
39
+ metadata: Joi.object().optional().default({}),
40
+ });
41
+ export const GetHashOptionsSchema = Joi.object({
42
+ appDid: Joi.DID().required(),
43
+ key: Joi.string().required(),
44
+ });
@@ -0,0 +1,4 @@
1
+ /**
2
+ * @see {SpaceConfig}
3
+ */
4
+ export declare const SpaceConfigSchema: import("joi").ObjectSchema<any>;
@@ -0,0 +1,22 @@
1
+ import xbytes from 'xbytes';
2
+ import { Joi } from '@arcblock/validator';
3
+ /**
4
+ * @see {SpaceConfig}
5
+ */
6
+ export const SpaceConfigSchema = Joi.object({
7
+ did: Joi.DID(),
8
+ // 标识这个驱动是什么,默认取值为 fs, 表示文件存储到了本地的文件系统
9
+ drive: Joi.string().valid('fs', 's3').optional().allow('').default('fs'),
10
+ // type: 'buy | 'default'
11
+ type: Joi.string().optional().allow('buy', 'default').default('buy'),
12
+ name: Joi.string().required(),
13
+ // @see: https://github.com/sideway/joi/blob/master/API.md#string
14
+ description: Joi.string().required().allow('').default(''),
15
+ // 字节数,默认给个1GiB, size 为 0 表示空间无限制
16
+ size: Joi.number().required().default(xbytes.parseSize('1GiB')),
17
+ assetDid: Joi.DID(),
18
+ createAt: Joi.string().required(),
19
+ updateAt: Joi.string().required(),
20
+ expireAt: Joi.string().required(),
21
+ ownerDid: Joi.DID(),
22
+ });
@@ -0,0 +1 @@
1
+ export declare const SpaceOptionsSchema: import("joi").ObjectSchema<any>;
@@ -0,0 +1,4 @@
1
+ import { Joi } from '@arcblock/validator';
2
+ export const SpaceOptionsSchema = Joi.object({
3
+ root: Joi.string().required(),
4
+ });