@blocklet/did-space-js 0.5.58
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 +77 -0
- package/dist/client/index.d.ts +40 -0
- package/dist/client/index.js +110 -0
- package/dist/commands/backup/backup-blocklet.d.ts +14 -0
- package/dist/commands/backup/backup-blocklet.js +83 -0
- package/dist/commands/backup/index.d.ts +3 -0
- package/dist/commands/backup/index.js +19 -0
- package/dist/commands/backup/post-app-backup.d.ts +9 -0
- package/dist/commands/backup/post-app-backup.js +49 -0
- package/dist/commands/backup/put-app-backup.d.ts +9 -0
- package/dist/commands/backup/put-app-backup.js +49 -0
- package/dist/commands/base.d.ts +21 -0
- package/dist/commands/base.js +47 -0
- package/dist/commands/incremental-backup/backup-blocklet.d.ts +14 -0
- package/dist/commands/incremental-backup/backup-blocklet.js +90 -0
- package/dist/commands/incremental-backup/index.d.ts +1 -0
- package/dist/commands/incremental-backup/index.js +17 -0
- package/dist/commands/incremental-sync/index.d.ts +2 -0
- package/dist/commands/incremental-sync/index.js +18 -0
- package/dist/commands/incremental-sync/sync-base.d.ts +76 -0
- package/dist/commands/incremental-sync/sync-base.js +236 -0
- package/dist/commands/incremental-sync/sync-push.d.ts +30 -0
- package/dist/commands/incremental-sync/sync-push.js +202 -0
- package/dist/commands/index.d.ts +9 -0
- package/dist/commands/index.js +25 -0
- package/dist/commands/nft/index.d.ts +1 -0
- package/dist/commands/nft/index.js +17 -0
- package/dist/commands/nft/put-nft-object.d.ts +20 -0
- package/dist/commands/nft/put-nft-object.js +143 -0
- package/dist/commands/object/delete-object.d.ts +7 -0
- package/dist/commands/object/delete-object.js +38 -0
- package/dist/commands/object/get-object.d.ts +7 -0
- package/dist/commands/object/get-object.js +43 -0
- package/dist/commands/object/index.d.ts +5 -0
- package/dist/commands/object/index.js +21 -0
- package/dist/commands/object/list-object.d.ts +7 -0
- package/dist/commands/object/list-object.js +31 -0
- package/dist/commands/object/list-objects.d.ts +7 -0
- package/dist/commands/object/list-objects.js +44 -0
- package/dist/commands/object/put-object.d.ts +7 -0
- package/dist/commands/object/put-object.js +61 -0
- package/dist/commands/restore/index.d.ts +3 -0
- package/dist/commands/restore/index.js +19 -0
- package/dist/commands/restore/post-app-restore.d.ts +7 -0
- package/dist/commands/restore/post-app-restore.js +45 -0
- package/dist/commands/restore/put-app-restore.d.ts +9 -0
- package/dist/commands/restore/put-app-restore.js +49 -0
- package/dist/commands/restore/restore-blocklet.d.ts +14 -0
- package/dist/commands/restore/restore-blocklet.js +80 -0
- package/dist/commands/space/head.d.ts +8 -0
- package/dist/commands/space/head.js +52 -0
- package/dist/commands/space/index.d.ts +1 -0
- package/dist/commands/space/index.js +17 -0
- package/dist/commands/sync/index.d.ts +3 -0
- package/dist/commands/sync/index.js +19 -0
- package/dist/commands/sync/sync-folder-base.d.ts +105 -0
- package/dist/commands/sync/sync-folder-base.js +319 -0
- package/dist/commands/sync/sync-folder-pull.d.ts +13 -0
- package/dist/commands/sync/sync-folder-pull.js +151 -0
- package/dist/commands/sync/sync-folder-push.d.ts +20 -0
- package/dist/commands/sync/sync-folder-push.js +166 -0
- package/dist/did-document/did-document.d.ts +29 -0
- package/dist/did-document/did-document.js +2 -0
- package/dist/did-document/index.d.ts +3 -0
- package/dist/did-document/index.js +19 -0
- package/dist/did-document/sign-document.d.ts +3 -0
- package/dist/did-document/sign-document.js +13 -0
- package/dist/did-document/verify-document.d.ts +10 -0
- package/dist/did-document/verify-document.js +35 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +23 -0
- package/dist/libs/api.d.ts +3 -0
- package/dist/libs/api.js +65 -0
- package/dist/libs/did.d.ts +9 -0
- package/dist/libs/did.js +34 -0
- package/dist/libs/encoding.d.ts +7 -0
- package/dist/libs/encoding.js +17 -0
- package/dist/libs/error.d.ts +4 -0
- package/dist/libs/error.js +27 -0
- package/dist/libs/hash.d.ts +1 -0
- package/dist/libs/hash.js +5 -0
- package/dist/libs/index.d.ts +11 -0
- package/dist/libs/index.js +27 -0
- package/dist/libs/logger.d.ts +2 -0
- package/dist/libs/logger.js +12 -0
- package/dist/libs/object-integrality.d.ts +1 -0
- package/dist/libs/object-integrality.js +13 -0
- package/dist/libs/performance.d.ts +7 -0
- package/dist/libs/performance.js +13 -0
- package/dist/libs/sleep.d.ts +1 -0
- package/dist/libs/sleep.js +9 -0
- package/dist/libs/space.d.ts +16 -0
- package/dist/libs/space.js +56 -0
- package/dist/libs/stream.d.ts +3 -0
- package/dist/libs/stream.js +10 -0
- package/dist/meta/backup/backup-blocklet-command.d.ts +50 -0
- package/dist/meta/backup/backup-blocklet-command.js +2 -0
- package/dist/meta/backup/index.d.ts +3 -0
- package/dist/meta/backup/index.js +19 -0
- package/dist/meta/backup/post-app-backup-command.d.ts +8 -0
- package/dist/meta/backup/post-app-backup-command.js +16 -0
- package/dist/meta/backup/put-app-backup-command.d.ts +7 -0
- package/dist/meta/backup/put-app-backup-command.js +18 -0
- package/dist/meta/incremental-backup/backup-blocklet-command.d.ts +50 -0
- package/dist/meta/incremental-backup/backup-blocklet-command.js +2 -0
- package/dist/meta/incremental-backup/index.d.ts +1 -0
- package/dist/meta/incremental-backup/index.js +17 -0
- package/dist/meta/index.d.ts +7 -0
- package/dist/meta/index.js +23 -0
- package/dist/meta/nft/index.d.ts +1 -0
- package/dist/meta/nft/index.js +17 -0
- package/dist/meta/nft/put-nft-object-command.d.ts +51 -0
- package/dist/meta/nft/put-nft-object-command.js +2 -0
- package/dist/meta/object/delete-object-command.d.ts +6 -0
- package/dist/meta/object/delete-object-command.js +2 -0
- package/dist/meta/object/get-object-command.d.ts +10 -0
- package/dist/meta/object/get-object-command.js +2 -0
- package/dist/meta/object/head-object-command.d.ts +13 -0
- package/dist/meta/object/head-object-command.js +2 -0
- package/dist/meta/object/index.d.ts +5 -0
- package/dist/meta/object/index.js +21 -0
- package/dist/meta/object/list-object-command.d.ts +6 -0
- package/dist/meta/object/list-object-command.js +2 -0
- package/dist/meta/object/list-objects-command.d.ts +8 -0
- package/dist/meta/object/list-objects-command.js +2 -0
- package/dist/meta/object/put-object-command.d.ts +29 -0
- package/dist/meta/object/put-object-command.js +2 -0
- package/dist/meta/restore/index.d.ts +3 -0
- package/dist/meta/restore/index.js +19 -0
- package/dist/meta/restore/post-app-restore-command.d.ts +8 -0
- package/dist/meta/restore/post-app-restore-command.js +13 -0
- package/dist/meta/restore/put-app-restore-command.d.ts +7 -0
- package/dist/meta/restore/put-app-restore-command.js +18 -0
- package/dist/meta/restore/restore-blocklet-command.d.ts +28 -0
- package/dist/meta/restore/restore-blocklet-command.js +2 -0
- package/dist/meta/spaces-client-options.d.ts +5 -0
- package/dist/meta/spaces-client-options.js +2 -0
- package/dist/meta/sync/incremental-sync-base-command.d.ts +7 -0
- package/dist/meta/sync/incremental-sync-base-command.js +2 -0
- package/dist/meta/sync/incremental-sync-push-command.d.ts +8 -0
- package/dist/meta/sync/incremental-sync-push-command.js +2 -0
- package/dist/meta/sync/index.d.ts +6 -0
- package/dist/meta/sync/index.js +22 -0
- package/dist/meta/sync/sync-base-command.d.ts +121 -0
- package/dist/meta/sync/sync-base-command.js +2 -0
- package/dist/meta/sync/sync-folder-base-command.d.ts +12 -0
- package/dist/meta/sync/sync-folder-base-command.js +2 -0
- package/dist/meta/sync/sync-folder-pull-command.d.ts +5 -0
- package/dist/meta/sync/sync-folder-pull-command.js +2 -0
- package/dist/meta/sync/sync-folder-push-command.d.ts +7 -0
- package/dist/meta/sync/sync-folder-push-command.js +2 -0
- package/dist/protocol/command.protocol.d.ts +68 -0
- package/dist/protocol/command.protocol.js +2 -0
- package/dist/protocol/index.d.ts +1 -0
- package/dist/protocol/index.js +17 -0
- package/dist/security/index.d.ts +1 -0
- package/dist/security/index.js +17 -0
- package/dist/security/request-signature.d.ts +32 -0
- package/dist/security/request-signature.js +140 -0
- package/package.json +78 -0
package/README.md
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# @did-client
|
|
2
|
+
|
|
3
|
+
# Install
|
|
4
|
+
|
|
5
|
+
```
|
|
6
|
+
npm install @blocklet/did-space-js
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
# Usage
|
|
10
|
+
|
|
11
|
+
## PutNftObjectCommand
|
|
12
|
+
|
|
13
|
+
You can persist NFTs to Spaces using `PutNftObjectCommand`
|
|
14
|
+
|
|
15
|
+
```typescript
|
|
16
|
+
import { SpaceClient, PutNftObjectCommand } from '@blocklet/did-space-js';
|
|
17
|
+
|
|
18
|
+
const spaceClient = new SpaceClient({
|
|
19
|
+
endpoint:
|
|
20
|
+
'https://cedcaa27-znkomkclejcfbjaxw9knzzebmzmqrxjnn9bb.did.abtnet.io/api/space/z3T6EHN7sLhH5cty1PshDeSipeG7JNxEVaRFS/app/zNKabhhwdvVmXjtRTtSHk2YQz4pdDPStV289/object/',
|
|
21
|
+
wallet,
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
await spaceClient.send(
|
|
25
|
+
new PutNftObjectCommand({
|
|
26
|
+
did: 'zjduEsT5qiQr72tVtevGG3GwKjV6J4yHR9fy',
|
|
27
|
+
controller: wallet,
|
|
28
|
+
chainHost: 'https://beta.abtnetwork.io/explorer',
|
|
29
|
+
display: {
|
|
30
|
+
key: 'logo.jpg',
|
|
31
|
+
data: fs.createReadStream('logo.jpg'),
|
|
32
|
+
},
|
|
33
|
+
})
|
|
34
|
+
);
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## SyncFolderPushCommand
|
|
38
|
+
|
|
39
|
+
You can use `SyncFolderPushCommand` to sync a local folder to a folder on Spaces
|
|
40
|
+
|
|
41
|
+
```typescript
|
|
42
|
+
import { SpaceClient, SyncFolderPushCommand } from '@blocklet/did-space-js';
|
|
43
|
+
|
|
44
|
+
const spaceClient = new SpaceClient({
|
|
45
|
+
endpoint:
|
|
46
|
+
'https://cedcaa27-znkomkclejcfbjaxw9knzzebmzmqrxjnn9bb.did.abtnet.io/api/space/z3T6EHN7sLhH5cty1PshDeSipeG7JNxEVaRFS/app/zNKabhhwdvVmXjtRTtSHk2YQz4pdDPStV289/object/',
|
|
47
|
+
wallet,
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
await spaceClient.send(
|
|
51
|
+
new SyncFolderPushCommand({
|
|
52
|
+
source: 'local-folder/',
|
|
53
|
+
target: 'spaces-folder/',
|
|
54
|
+
})
|
|
55
|
+
);
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## SyncFolderPullCommand
|
|
59
|
+
|
|
60
|
+
You can use `SyncFolderPullCommand` to sync folders on Spaces to local folders
|
|
61
|
+
|
|
62
|
+
```typescript
|
|
63
|
+
import { SpaceClient, SyncFolderPullCommand } from '@blocklet/did-space-js';
|
|
64
|
+
|
|
65
|
+
const spaceClient = new SpaceClient({
|
|
66
|
+
endpoint:
|
|
67
|
+
'https://cedcaa27-znkomkclejcfbjaxw9knzzebmzmqrxjnn9bb.did.abtnet.io/api/space/z3T6EHN7sLhH5cty1PshDeSipeG7JNxEVaRFS/app/zNKabhhwdvVmXjtRTtSHk2YQz4pdDPStV289/object/',
|
|
68
|
+
wallet,
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
await spaceClient.send(
|
|
72
|
+
new SyncFolderPullCommand({
|
|
73
|
+
source: 'spaces-folder/',
|
|
74
|
+
target: 'local-folder/',
|
|
75
|
+
})
|
|
76
|
+
);
|
|
77
|
+
```
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { PutNftObjectCommand } from '../commands';
|
|
2
|
+
import { type PutNftObjectCommandOutput, type SpaceEndpointContext } from '../meta';
|
|
3
|
+
import { CommandProtocol, type CommandInput, type CommandOutput, type SpaceClientOptions } from '../protocol';
|
|
4
|
+
export declare class SpaceClient {
|
|
5
|
+
readonly options: SpaceClientOptions;
|
|
6
|
+
constructor(options: SpaceClientOptions);
|
|
7
|
+
/**
|
|
8
|
+
*
|
|
9
|
+
* @deprecated Please use `spaceClient.send(new PutNftObjectCommand(...))`
|
|
10
|
+
* @see https://github.com/blocklet/nft-maker/issues/110
|
|
11
|
+
* @description PUT 一个 nft object 到 did space
|
|
12
|
+
* @param {PutNftObjectCommand} command
|
|
13
|
+
* @return {*} {Promise<void>}
|
|
14
|
+
* @memberof SpaceClient
|
|
15
|
+
*/
|
|
16
|
+
putNftObject(command: PutNftObjectCommand): Promise<PutNftObjectCommandOutput>;
|
|
17
|
+
send<Input extends CommandInput, Output extends CommandOutput>(command: CommandProtocol<Input, Output>): Promise<Output>;
|
|
18
|
+
/**
|
|
19
|
+
*
|
|
20
|
+
*
|
|
21
|
+
* @private
|
|
22
|
+
* @param {string} endpoint => https://73aa3e87-znkjt5vbgnezh4p6v4dsaye61e7pxxn3vk4j.did.abtnet.io/app/api/space/z3T6WZD3dBtaVUgwb3rtBey8BartrJDTLrmQr/app/zNKsSUmUVJntiVdAPpg8vYtEgnFvSppYLf4F/object/
|
|
23
|
+
* @return {*} {string} https://73aa3e87-znkjt5vbgnezh4p6v4dsaye61e7pxxn3vk4j.did.abtnet.io/app/api/space/z3T6WZD3dBtaVUgwb3rtBey8BartrJDTLrmQr/app/zNKsSUmUVJntiVdAPpg8vYtEgnFvSppYLf4F/
|
|
24
|
+
* @memberof SpaceClient
|
|
25
|
+
*/
|
|
26
|
+
private normalizeEndpoint;
|
|
27
|
+
/**
|
|
28
|
+
*
|
|
29
|
+
* @description 获取 endpoint 的 base url
|
|
30
|
+
* @input (endpoint: https://73aa3e87-znkjt5vbgnezh4p6v4dsaye61e7pxxn3vk4j.did.abtnet.io/app/api/space/z3T6WZD3dBtaVUgwb3rtBey8BartrJDTLrmQr/app/zNKsSUmUVJntiVdAPpg8vYtEgnFvSppYLf4F/object/)
|
|
31
|
+
* @output https://73aa3e87-znkjt5vbgnezh4p6v4dsaye61e7pxxn3vk4j.did.abtnet.io/app/api/space/z3T6WZD3dBtaVUgwb3rtBey8BartrJDTLrmQr/app
|
|
32
|
+
* @static
|
|
33
|
+
* @param {string} endpoint
|
|
34
|
+
* @return {*} {Promise<string>}
|
|
35
|
+
* @memberof SpaceClient
|
|
36
|
+
*/
|
|
37
|
+
static getBaseUrl(endpoint: string): Promise<string>;
|
|
38
|
+
static getDisplayUrl(endpoint: string, did?: string): Promise<string>;
|
|
39
|
+
static getSpaceEndpointContext(endpoint: string): Promise<SpaceEndpointContext>;
|
|
40
|
+
}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.SpaceClient = void 0;
|
|
7
|
+
const is_url_1 = __importDefault(require("is-url"));
|
|
8
|
+
const ufo_1 = require("ufo");
|
|
9
|
+
const debug_1 = __importDefault(require("debug"));
|
|
10
|
+
const error_1 = require("../libs/error");
|
|
11
|
+
const space_1 = require("../libs/space");
|
|
12
|
+
const { name, version } = require('../../package.json');
|
|
13
|
+
const debug = (0, debug_1.default)(`${name}@${version}:SpaceClient`);
|
|
14
|
+
class SpaceClient {
|
|
15
|
+
options;
|
|
16
|
+
constructor(options) {
|
|
17
|
+
this.options = options;
|
|
18
|
+
this.options.endpoint = this.normalizeEndpoint(this.options.endpoint);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
*
|
|
22
|
+
* @deprecated Please use `spaceClient.send(new PutNftObjectCommand(...))`
|
|
23
|
+
* @see https://github.com/blocklet/nft-maker/issues/110
|
|
24
|
+
* @description PUT 一个 nft object 到 did space
|
|
25
|
+
* @param {PutNftObjectCommand} command
|
|
26
|
+
* @return {*} {Promise<void>}
|
|
27
|
+
* @memberof SpaceClient
|
|
28
|
+
*/
|
|
29
|
+
async putNftObject(command) {
|
|
30
|
+
try {
|
|
31
|
+
command.context = this.options;
|
|
32
|
+
return await command.request();
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
debug(error);
|
|
36
|
+
const message = (0, error_1.getErrorMessage)(error);
|
|
37
|
+
throw new Error(`SpaceClient has encountered an error: ${message}`);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
async send(command) {
|
|
41
|
+
try {
|
|
42
|
+
command.context = {
|
|
43
|
+
...command.context,
|
|
44
|
+
...this.options,
|
|
45
|
+
};
|
|
46
|
+
return await command.request();
|
|
47
|
+
}
|
|
48
|
+
catch (err) {
|
|
49
|
+
debug(err);
|
|
50
|
+
const error = err;
|
|
51
|
+
const statusCode = (0, error_1.getErrorStatusCode)(error) || error.code || 500;
|
|
52
|
+
const statusMessage = (0, error_1.getErrorMessage)(error);
|
|
53
|
+
return {
|
|
54
|
+
statusCode,
|
|
55
|
+
statusMessage,
|
|
56
|
+
stack: error.stack,
|
|
57
|
+
data: undefined,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
*
|
|
63
|
+
*
|
|
64
|
+
* @private
|
|
65
|
+
* @param {string} endpoint => https://73aa3e87-znkjt5vbgnezh4p6v4dsaye61e7pxxn3vk4j.did.abtnet.io/app/api/space/z3T6WZD3dBtaVUgwb3rtBey8BartrJDTLrmQr/app/zNKsSUmUVJntiVdAPpg8vYtEgnFvSppYLf4F/object/
|
|
66
|
+
* @return {*} {string} https://73aa3e87-znkjt5vbgnezh4p6v4dsaye61e7pxxn3vk4j.did.abtnet.io/app/api/space/z3T6WZD3dBtaVUgwb3rtBey8BartrJDTLrmQr/app/zNKsSUmUVJntiVdAPpg8vYtEgnFvSppYLf4F/
|
|
67
|
+
* @memberof SpaceClient
|
|
68
|
+
*/
|
|
69
|
+
normalizeEndpoint(endpoint) {
|
|
70
|
+
return (0, space_1.normalizeEndpoint)(endpoint);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
*
|
|
74
|
+
* @description 获取 endpoint 的 base url
|
|
75
|
+
* @input (endpoint: https://73aa3e87-znkjt5vbgnezh4p6v4dsaye61e7pxxn3vk4j.did.abtnet.io/app/api/space/z3T6WZD3dBtaVUgwb3rtBey8BartrJDTLrmQr/app/zNKsSUmUVJntiVdAPpg8vYtEgnFvSppYLf4F/object/)
|
|
76
|
+
* @output https://73aa3e87-znkjt5vbgnezh4p6v4dsaye61e7pxxn3vk4j.did.abtnet.io/app/api/space/z3T6WZD3dBtaVUgwb3rtBey8BartrJDTLrmQr/app
|
|
77
|
+
* @static
|
|
78
|
+
* @param {string} endpoint
|
|
79
|
+
* @return {*} {Promise<string>}
|
|
80
|
+
* @memberof SpaceClient
|
|
81
|
+
*/
|
|
82
|
+
static getBaseUrl(endpoint) {
|
|
83
|
+
if (!(0, is_url_1.default)(endpoint)) {
|
|
84
|
+
throw new Error(`endpoint(${endpoint}) is not a valid http url or https url`);
|
|
85
|
+
}
|
|
86
|
+
// @ts-expect-error
|
|
87
|
+
return endpoint.replace(/\/api\/space.*/, '');
|
|
88
|
+
}
|
|
89
|
+
static async getDisplayUrl(endpoint, did = '') {
|
|
90
|
+
if (!(0, is_url_1.default)(endpoint)) {
|
|
91
|
+
throw new Error(`endpoint(${endpoint}) is not a valid http url or https url`);
|
|
92
|
+
}
|
|
93
|
+
return (0, ufo_1.joinURL)(await this.getBaseUrl(endpoint), 'resolve', did, 'display');
|
|
94
|
+
}
|
|
95
|
+
static async getSpaceEndpointContext(endpoint) {
|
|
96
|
+
if (!(0, is_url_1.default)(endpoint)) {
|
|
97
|
+
throw new Error(`endpoint(${endpoint}) is not a valid http url or https url`);
|
|
98
|
+
}
|
|
99
|
+
const baseUrl = await this.getBaseUrl(endpoint);
|
|
100
|
+
const strArray = endpoint.replace(/\/$/, '').split('/');
|
|
101
|
+
const spaceDid = strArray.at(-4);
|
|
102
|
+
const appDid = strArray.at(-2);
|
|
103
|
+
return {
|
|
104
|
+
baseUrl,
|
|
105
|
+
spaceDid,
|
|
106
|
+
appDid,
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
exports.SpaceClient = SpaceClient;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { AxiosRequestConfig } from 'axios';
|
|
2
|
+
import { BackupBlockletCommandInput, BackupBlockletCommandOutput } from '../../meta';
|
|
3
|
+
import { BaseCommand } from '../base';
|
|
4
|
+
/**
|
|
5
|
+
*
|
|
6
|
+
* FIXME: @yejianchao 优化点,需要支持 joi 校验
|
|
7
|
+
* @export
|
|
8
|
+
* @class BackupBlockletCommand
|
|
9
|
+
* @extends {BaseCommand<BackupBlockletCommandInput, BackupBlockletCommandOutput>}
|
|
10
|
+
*/
|
|
11
|
+
export declare class BackupBlockletCommand extends BaseCommand<BackupBlockletCommandInput, BackupBlockletCommandOutput> {
|
|
12
|
+
getAxiosRequestConfig(): Promise<AxiosRequestConfig<any>>;
|
|
13
|
+
resolveMiddleware(): Promise<BackupBlockletCommandOutput>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BackupBlockletCommand = void 0;
|
|
4
|
+
const path_1 = require("path");
|
|
5
|
+
const core_1 = require("@did-space/core");
|
|
6
|
+
const base_1 = require("../base");
|
|
7
|
+
const sync_1 = require("../sync");
|
|
8
|
+
const post_app_backup_1 = require("./post-app-backup");
|
|
9
|
+
const put_app_backup_1 = require("./put-app-backup");
|
|
10
|
+
const libs_1 = require("../../libs");
|
|
11
|
+
const space_1 = require("../../libs/space");
|
|
12
|
+
/**
|
|
13
|
+
*
|
|
14
|
+
* FIXME: @yejianchao 优化点,需要支持 joi 校验
|
|
15
|
+
* @export
|
|
16
|
+
* @class BackupBlockletCommand
|
|
17
|
+
* @extends {BaseCommand<BackupBlockletCommandInput, BackupBlockletCommandOutput>}
|
|
18
|
+
*/
|
|
19
|
+
class BackupBlockletCommand extends base_1.BaseCommand {
|
|
20
|
+
getAxiosRequestConfig() {
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
async resolveMiddleware() {
|
|
24
|
+
let appBackup;
|
|
25
|
+
try {
|
|
26
|
+
// @note: 备份还原的时候我们希望使用 service url 来完成,不希望走 CDN
|
|
27
|
+
this.context.endpoint = await (0, space_1.getSpaceServiceEndpoint)(this.context.endpoint);
|
|
28
|
+
appBackup = (await new post_app_backup_1.PostAppBackupCommand({
|
|
29
|
+
userDid: this.input.userDid,
|
|
30
|
+
referrer: this.input.referrer,
|
|
31
|
+
appName: this.input.appName,
|
|
32
|
+
appDescription: this.input.appDescription,
|
|
33
|
+
serverDid: this.input.serverDid,
|
|
34
|
+
signerDid: this.input.signerDid,
|
|
35
|
+
}, this.context).request()).data;
|
|
36
|
+
const res = await new sync_1.SyncFolderPushCommand({
|
|
37
|
+
target: (0, path_1.join)('.did-objects', this.input.appDid, '/'),
|
|
38
|
+
...this.input,
|
|
39
|
+
}, this.context).request();
|
|
40
|
+
if (res.data.errorCount !== 0) {
|
|
41
|
+
await new put_app_backup_1.PutAppBackupCommand({
|
|
42
|
+
id: appBackup.id,
|
|
43
|
+
status: core_1.APP_BACKUP_STATUS.FAILED,
|
|
44
|
+
message: res?.statusMessage,
|
|
45
|
+
}, this.context)
|
|
46
|
+
.request()
|
|
47
|
+
.catch(console.error);
|
|
48
|
+
return res;
|
|
49
|
+
}
|
|
50
|
+
// 仅仅是触发一下接口,更新一下 updateAt
|
|
51
|
+
await new put_app_backup_1.PutAppBackupCommand({
|
|
52
|
+
id: appBackup.id,
|
|
53
|
+
status: core_1.APP_BACKUP_STATUS.SUCCEEDED,
|
|
54
|
+
}, this.context).request();
|
|
55
|
+
return res;
|
|
56
|
+
}
|
|
57
|
+
catch (err) {
|
|
58
|
+
console.error(err);
|
|
59
|
+
const error = err;
|
|
60
|
+
const message = (0, libs_1.getErrorMessage)(error);
|
|
61
|
+
if (appBackup) {
|
|
62
|
+
await new put_app_backup_1.PutAppBackupCommand({
|
|
63
|
+
id: appBackup.id,
|
|
64
|
+
status: core_1.APP_BACKUP_STATUS.FAILED,
|
|
65
|
+
message,
|
|
66
|
+
}, this.context)
|
|
67
|
+
.request()
|
|
68
|
+
.catch(console.error);
|
|
69
|
+
}
|
|
70
|
+
return {
|
|
71
|
+
statusCode: (0, libs_1.getErrorStatusCode)(error),
|
|
72
|
+
statusMessage: message,
|
|
73
|
+
stack: error.stack,
|
|
74
|
+
data: {
|
|
75
|
+
errorCount: -1,
|
|
76
|
+
count: -1,
|
|
77
|
+
duration: -1,
|
|
78
|
+
},
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
exports.BackupBlockletCommand = BackupBlockletCommand;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./backup-blocklet"), exports);
|
|
18
|
+
__exportStar(require("./post-app-backup"), exports);
|
|
19
|
+
__exportStar(require("./put-app-backup"), exports);
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { AxiosRequestConfig } from 'axios';
|
|
2
|
+
import { PostAppBackupCommandInput, PostAppBackupCommandOutput } from '../../meta/backup';
|
|
3
|
+
import { BaseCommand } from '../base';
|
|
4
|
+
import type { SpaceClientOptions } from '../../protocol';
|
|
5
|
+
export declare class PostAppBackupCommand extends BaseCommand<PostAppBackupCommandInput, PostAppBackupCommandOutput> {
|
|
6
|
+
constructor(input: PostAppBackupCommandInput, context?: SpaceClientOptions);
|
|
7
|
+
getAxiosRequestConfig(): Promise<AxiosRequestConfig<any>>;
|
|
8
|
+
resolveMiddleware(): Promise<PostAppBackupCommandOutput>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PostAppBackupCommand = void 0;
|
|
4
|
+
const ufo_1 = require("ufo");
|
|
5
|
+
const libs_1 = require("../../libs");
|
|
6
|
+
const backup_1 = require("../../meta/backup");
|
|
7
|
+
const security_1 = require("../../security");
|
|
8
|
+
const base_1 = require("../base");
|
|
9
|
+
class PostAppBackupCommand extends base_1.BaseCommand {
|
|
10
|
+
constructor(input, context) {
|
|
11
|
+
super(input, context);
|
|
12
|
+
const { error, value } = backup_1.PostAppBackupCommandInputSchema.validate(input);
|
|
13
|
+
if (error) {
|
|
14
|
+
throw error;
|
|
15
|
+
}
|
|
16
|
+
this.input = value;
|
|
17
|
+
}
|
|
18
|
+
getAxiosRequestConfig() {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
async resolveMiddleware() {
|
|
22
|
+
const url = (0, ufo_1.joinURL)(this.context.endpoint, 'backup');
|
|
23
|
+
const data = this.input;
|
|
24
|
+
const method = 'POST';
|
|
25
|
+
const { headers } = (0, security_1.signRequest)({
|
|
26
|
+
url,
|
|
27
|
+
method,
|
|
28
|
+
data,
|
|
29
|
+
headers: {},
|
|
30
|
+
wallet: this.context.wallet,
|
|
31
|
+
delegation: this.context.delegation,
|
|
32
|
+
});
|
|
33
|
+
const response = await (0, libs_1.gotApi)({
|
|
34
|
+
url,
|
|
35
|
+
method,
|
|
36
|
+
json: data,
|
|
37
|
+
responseType: 'json',
|
|
38
|
+
headers: {
|
|
39
|
+
...headers,
|
|
40
|
+
},
|
|
41
|
+
});
|
|
42
|
+
return {
|
|
43
|
+
statusCode: response.statusCode,
|
|
44
|
+
statusMessage: response.statusMessage,
|
|
45
|
+
data: response.body,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
exports.PostAppBackupCommand = PostAppBackupCommand;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { AxiosRequestConfig } from 'axios';
|
|
2
|
+
import { PutAppBackupCommandInput, PutAppBackupCommandOutput } from '../../meta';
|
|
3
|
+
import { BaseCommand } from '../base';
|
|
4
|
+
import type { SpaceClientOptions } from '../../protocol';
|
|
5
|
+
export declare class PutAppBackupCommand extends BaseCommand<PutAppBackupCommandInput, PutAppBackupCommandOutput> {
|
|
6
|
+
constructor(input: PutAppBackupCommandInput, context?: SpaceClientOptions);
|
|
7
|
+
getAxiosRequestConfig(): Promise<AxiosRequestConfig<any>>;
|
|
8
|
+
resolveMiddleware(): Promise<PutAppBackupCommandOutput>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PutAppBackupCommand = void 0;
|
|
4
|
+
const ufo_1 = require("ufo");
|
|
5
|
+
const libs_1 = require("../../libs");
|
|
6
|
+
const meta_1 = require("../../meta");
|
|
7
|
+
const security_1 = require("../../security");
|
|
8
|
+
const base_1 = require("../base");
|
|
9
|
+
class PutAppBackupCommand extends base_1.BaseCommand {
|
|
10
|
+
constructor(input, context) {
|
|
11
|
+
super(input, context);
|
|
12
|
+
const { error, value } = meta_1.PutAppBackupCommandInputSchema.validate(input);
|
|
13
|
+
if (error) {
|
|
14
|
+
throw error;
|
|
15
|
+
}
|
|
16
|
+
this.input = value;
|
|
17
|
+
}
|
|
18
|
+
getAxiosRequestConfig() {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
async resolveMiddleware() {
|
|
22
|
+
const url = (0, ufo_1.joinURL)(this.context.endpoint, 'backup');
|
|
23
|
+
const data = this.input;
|
|
24
|
+
const method = 'PUT';
|
|
25
|
+
const { headers } = (0, security_1.signRequest)({
|
|
26
|
+
url,
|
|
27
|
+
method,
|
|
28
|
+
data,
|
|
29
|
+
headers: {},
|
|
30
|
+
wallet: this.context.wallet,
|
|
31
|
+
delegation: this.context.delegation,
|
|
32
|
+
});
|
|
33
|
+
const response = await (0, libs_1.gotApi)({
|
|
34
|
+
url,
|
|
35
|
+
method,
|
|
36
|
+
json: data,
|
|
37
|
+
responseType: 'json',
|
|
38
|
+
headers: {
|
|
39
|
+
...headers,
|
|
40
|
+
},
|
|
41
|
+
});
|
|
42
|
+
return {
|
|
43
|
+
statusCode: response.statusCode,
|
|
44
|
+
statusMessage: response.statusMessage,
|
|
45
|
+
data: response.body,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
exports.PutAppBackupCommand = PutAppBackupCommand;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { AxiosRequestConfig, AxiosResponse } from 'axios';
|
|
3
|
+
import { EventEmitter } from 'stream';
|
|
4
|
+
import { CommandProtocol, type CommandInput, type CommandOutput, type SpaceClientOptions } from '../protocol';
|
|
5
|
+
export interface GetKeyOptions {
|
|
6
|
+
/**
|
|
7
|
+
* @description 当你使用一个文件的路径的时候,那么它通常需要设置 encode 为 true
|
|
8
|
+
* @type {(false | true)}
|
|
9
|
+
* @memberof GetUrlOptions
|
|
10
|
+
*/
|
|
11
|
+
encode?: true | false;
|
|
12
|
+
}
|
|
13
|
+
export declare abstract class BaseCommand<BaseCommandInput extends CommandInput, BaseCommandOutput extends CommandOutput> extends EventEmitter implements CommandProtocol<BaseCommandInput, BaseCommandOutput> {
|
|
14
|
+
input: BaseCommandInput;
|
|
15
|
+
context: SpaceClientOptions;
|
|
16
|
+
constructor(input: BaseCommandInput, context?: SpaceClientOptions);
|
|
17
|
+
abstract getAxiosRequestConfig(): Promise<AxiosRequestConfig>;
|
|
18
|
+
getKey(key: string, options?: GetKeyOptions): string;
|
|
19
|
+
request(): Promise<BaseCommandOutput>;
|
|
20
|
+
resolveMiddleware(res?: AxiosResponse<BaseCommandOutput['data'], any>): Promise<BaseCommandOutput>;
|
|
21
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.BaseCommand = void 0;
|
|
7
|
+
const isEmpty_1 = __importDefault(require("lodash/isEmpty"));
|
|
8
|
+
const ufo_1 = require("ufo");
|
|
9
|
+
const did_1 = require("@arcblock/did");
|
|
10
|
+
const core_1 = require("@did-space/core");
|
|
11
|
+
const stream_1 = require("stream");
|
|
12
|
+
const libs_1 = require("../libs");
|
|
13
|
+
class BaseCommand extends stream_1.EventEmitter {
|
|
14
|
+
input;
|
|
15
|
+
context;
|
|
16
|
+
constructor(input, context = {}) {
|
|
17
|
+
super();
|
|
18
|
+
this.input = input;
|
|
19
|
+
this.context = context;
|
|
20
|
+
if ((0, did_1.isValid)(process.env.BLOCKLET_COMPONENT_DID)) {
|
|
21
|
+
this.context.componentDid = process.env.BLOCKLET_COMPONENT_DID;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
getKey(key, options = { encode: true }) {
|
|
25
|
+
const path = (0, isEmpty_1.default)(this.context.componentDid)
|
|
26
|
+
? key
|
|
27
|
+
: (0, ufo_1.joinURL)(core_1.APP.COMPONENT.FOLDER_PREFIX, this.context.componentDid, key);
|
|
28
|
+
return options.encode ? (0, libs_1.encode)(path) : path;
|
|
29
|
+
}
|
|
30
|
+
async request() {
|
|
31
|
+
const axiosRequestConfig = await this.getAxiosRequestConfig();
|
|
32
|
+
if (!axiosRequestConfig) {
|
|
33
|
+
return this.resolveMiddleware();
|
|
34
|
+
}
|
|
35
|
+
// TODO: axios 会导致严重的内存泄漏, 之后可以考虑切换到 got, @see: https://github.com/axios/axios/issues/4763#issuecomment-1334953446
|
|
36
|
+
const res = await (0, libs_1.api)(axiosRequestConfig);
|
|
37
|
+
return this.resolveMiddleware(res);
|
|
38
|
+
}
|
|
39
|
+
resolveMiddleware(res) {
|
|
40
|
+
// @ts-expect-error
|
|
41
|
+
return Promise.resolve({
|
|
42
|
+
statusCode: res.status,
|
|
43
|
+
data: res.data,
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
exports.BaseCommand = BaseCommand;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { AxiosRequestConfig } from 'axios';
|
|
2
|
+
import { BackupBlockletCommandOutput, IncrementalBackupBlockletCommandInput, IncrementalBackupBlockletCommandOutput } from '../../meta';
|
|
3
|
+
import { BaseCommand } from '../base';
|
|
4
|
+
/**
|
|
5
|
+
*
|
|
6
|
+
* FIXME: @yejianchao 优化点,需要支持 joi 校验
|
|
7
|
+
* @export
|
|
8
|
+
* @class BackupBlockletCommand
|
|
9
|
+
* @extends {BaseCommand<BackupBlockletCommandInput, BackupBlockletCommandOutput>}
|
|
10
|
+
*/
|
|
11
|
+
export declare class IncrementalBackupBlockletCommand extends BaseCommand<IncrementalBackupBlockletCommandInput, IncrementalBackupBlockletCommandOutput> {
|
|
12
|
+
getAxiosRequestConfig(): Promise<AxiosRequestConfig<any>>;
|
|
13
|
+
resolveMiddleware(): Promise<BackupBlockletCommandOutput>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.IncrementalBackupBlockletCommand = void 0;
|
|
4
|
+
const path_1 = require("path");
|
|
5
|
+
const core_1 = require("@did-space/core");
|
|
6
|
+
const base_1 = require("../base");
|
|
7
|
+
const backup_1 = require("../backup");
|
|
8
|
+
const libs_1 = require("../../libs");
|
|
9
|
+
const space_1 = require("../../libs/space");
|
|
10
|
+
const incremental_sync_1 = require("../incremental-sync");
|
|
11
|
+
/**
|
|
12
|
+
*
|
|
13
|
+
* FIXME: @yejianchao 优化点,需要支持 joi 校验
|
|
14
|
+
* @export
|
|
15
|
+
* @class BackupBlockletCommand
|
|
16
|
+
* @extends {BaseCommand<BackupBlockletCommandInput, BackupBlockletCommandOutput>}
|
|
17
|
+
*/
|
|
18
|
+
class IncrementalBackupBlockletCommand extends base_1.BaseCommand {
|
|
19
|
+
getAxiosRequestConfig() {
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
async resolveMiddleware() {
|
|
23
|
+
let appBackup;
|
|
24
|
+
let incrementalSyncPushInstance;
|
|
25
|
+
try {
|
|
26
|
+
// @note: 备份还原的时候我们希望使用 service url 来完成,不希望走 CDN
|
|
27
|
+
this.context.endpoint = await (0, space_1.getSpaceServiceEndpoint)(this.context.endpoint);
|
|
28
|
+
appBackup = (await new backup_1.PostAppBackupCommand({
|
|
29
|
+
userDid: this.input.userDid,
|
|
30
|
+
referrer: this.input.referrer,
|
|
31
|
+
appName: this.input.appName,
|
|
32
|
+
appDescription: this.input.appDescription,
|
|
33
|
+
serverDid: this.input.serverDid,
|
|
34
|
+
signerDid: this.input.signerDid,
|
|
35
|
+
}, this.context).request()).data;
|
|
36
|
+
incrementalSyncPushInstance = new incremental_sync_1.IncrementalSyncPushCommand({
|
|
37
|
+
target: (0, path_1.join)('.did-objects', this.input.appDid, '/'),
|
|
38
|
+
...this.input,
|
|
39
|
+
}, this.context);
|
|
40
|
+
const res = await incrementalSyncPushInstance.request();
|
|
41
|
+
if (res.data.errorCount !== 0) {
|
|
42
|
+
await new backup_1.PutAppBackupCommand({
|
|
43
|
+
id: appBackup.id,
|
|
44
|
+
status: core_1.APP_BACKUP_STATUS.FAILED,
|
|
45
|
+
message: res?.statusMessage,
|
|
46
|
+
}, this.context)
|
|
47
|
+
.request()
|
|
48
|
+
.catch(console.error);
|
|
49
|
+
return res;
|
|
50
|
+
}
|
|
51
|
+
// 仅仅是触发一下接口,更新一下 updateAt
|
|
52
|
+
await new backup_1.PutAppBackupCommand({
|
|
53
|
+
id: appBackup.id,
|
|
54
|
+
status: core_1.APP_BACKUP_STATUS.SUCCEEDED,
|
|
55
|
+
}, this.context).request();
|
|
56
|
+
return res;
|
|
57
|
+
}
|
|
58
|
+
catch (err) {
|
|
59
|
+
console.error(err);
|
|
60
|
+
const error = err;
|
|
61
|
+
const message = (0, libs_1.getErrorMessage)(error);
|
|
62
|
+
if (appBackup) {
|
|
63
|
+
await new backup_1.PutAppBackupCommand({
|
|
64
|
+
id: appBackup.id,
|
|
65
|
+
status: core_1.APP_BACKUP_STATUS.FAILED,
|
|
66
|
+
message,
|
|
67
|
+
}, this.context)
|
|
68
|
+
.request()
|
|
69
|
+
.catch(console.error);
|
|
70
|
+
}
|
|
71
|
+
return {
|
|
72
|
+
statusMessage: message,
|
|
73
|
+
statusCode: (0, libs_1.getErrorStatusCode)(error),
|
|
74
|
+
stack: error.stack,
|
|
75
|
+
data: {
|
|
76
|
+
errorCount: -1,
|
|
77
|
+
count: -1,
|
|
78
|
+
duration: -1,
|
|
79
|
+
},
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
finally {
|
|
83
|
+
// @note: 清空备份所占据的临时空间
|
|
84
|
+
if (incrementalSyncPushInstance?.destroy) {
|
|
85
|
+
await incrementalSyncPushInstance.destroy();
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
exports.IncrementalBackupBlockletCommand = IncrementalBackupBlockletCommand;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './backup-blocklet';
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./backup-blocklet"), exports);
|