@nu-art/file-upload-shared 0.401.9 → 0.500.0
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/assets/apis.d.ts +13 -17
- package/assets/apis.js +4 -8
- package/assets/db-def.d.ts +5 -5
- package/assets/db-def.js +17 -25
- package/assets/index.d.ts +1 -0
- package/assets/messages.d.ts +1 -1
- package/assets/types.d.ts +34 -9
- package/assets/types.js +3 -0
- package/index.d.ts +1 -0
- package/index.js +1 -0
- package/modules/ModuleBase_AssetUploader.d.ts +17 -5
- package/modules/ModuleBase_AssetUploader.js +4 -9
- package/package.json +9 -9
- package/assets/types1.d.ts +0 -33
- package/assets/types1.js +0 -19
package/assets/apis.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { ApiDef, ApiDefResolver, BodyApi, HttpMethod, QueryApi } from '@nu-art/
|
|
2
|
-
import { DB_Asset } from './
|
|
1
|
+
import { ApiDef, ApiDefResolver, BodyApi, HttpMethod, QueryApi } from '@nu-art/api-types';
|
|
2
|
+
import { DB_Asset } from './types.js';
|
|
3
3
|
import { DB_BaseObject } from '@nu-art/ts-common';
|
|
4
4
|
import { UI_Asset } from './types.js';
|
|
5
|
-
import { ResponseError } from '@nu-art/
|
|
5
|
+
import type { ResponseError } from '@nu-art/api-types';
|
|
6
6
|
import { FileStatus } from '../types.js';
|
|
7
7
|
export type SignedUrl = {
|
|
8
8
|
signedUrl: string;
|
|
@@ -10,24 +10,20 @@ export type SignedUrl = {
|
|
|
10
10
|
export type TempSignedUrl = SignedUrl & {
|
|
11
11
|
asset: DB_Asset;
|
|
12
12
|
};
|
|
13
|
-
export type
|
|
14
|
-
|
|
15
|
-
getReadSignedUrl: BodyApi<SignedUrl, DB_BaseObject>;
|
|
16
|
-
};
|
|
13
|
+
export type API_Assets = {
|
|
14
|
+
getReadSignedUrl: BodyApi<SignedUrl, DB_BaseObject>;
|
|
17
15
|
};
|
|
18
|
-
export declare const ApiDef_Assets: ApiDefResolver<
|
|
16
|
+
export declare const ApiDef_Assets: ApiDefResolver<API_Assets>;
|
|
19
17
|
export type FileUploadResult = {
|
|
20
18
|
status: FileStatus;
|
|
21
19
|
asset: DB_Asset;
|
|
22
20
|
};
|
|
23
|
-
export type Api_UploadFile = BodyApi<FileUploadResult, any,
|
|
21
|
+
export type Api_UploadFile = BodyApi<FileUploadResult, any, ResponseError, HttpMethod.PUT>;
|
|
24
22
|
export declare const ApiDef_UploadFile: ApiDef<Api_UploadFile>;
|
|
25
|
-
export type
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
}>;
|
|
31
|
-
};
|
|
23
|
+
export type API_AssetUploader = {
|
|
24
|
+
getUploadUrl: BodyApi<TempSignedUrl[], UI_Asset[]>;
|
|
25
|
+
processAssetManually: QueryApi<void[], {
|
|
26
|
+
feId?: string;
|
|
27
|
+
}>;
|
|
32
28
|
};
|
|
33
|
-
export declare const ApiDef_AssetUploader: ApiDefResolver<
|
|
29
|
+
export declare const ApiDef_AssetUploader: ApiDefResolver<API_AssetUploader>;
|
package/assets/apis.js
CHANGED
|
@@ -1,13 +1,9 @@
|
|
|
1
|
-
import { HttpMethod } from '@nu-art/
|
|
1
|
+
import { HttpMethod } from '@nu-art/api-types';
|
|
2
2
|
export const ApiDef_Assets = {
|
|
3
|
-
|
|
4
|
-
getReadSignedUrl: { method: HttpMethod.POST, path: 'v1/assets/get-read-signed-url' },
|
|
5
|
-
}
|
|
3
|
+
getReadSignedUrl: { method: HttpMethod.POST, path: 'v1/assets/get-read-signed-url' },
|
|
6
4
|
};
|
|
7
5
|
export const ApiDef_UploadFile = { method: HttpMethod.PUT, path: '' };
|
|
8
6
|
export const ApiDef_AssetUploader = {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
processAssetManually: { method: HttpMethod.GET, path: 'v1/upload/process-asset-manually' },
|
|
12
|
-
}
|
|
7
|
+
getUploadUrl: { method: HttpMethod.POST, path: 'v1/upload/get-url' },
|
|
8
|
+
processAssetManually: { method: HttpMethod.GET, path: 'v1/upload/process-asset-manually' },
|
|
13
9
|
};
|
package/assets/db-def.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
export declare const DBDef_Assets:
|
|
4
|
-
export declare const DBDef_TempAssets:
|
|
5
|
-
export declare const DBDef_TempDeleted:
|
|
1
|
+
import { Database } from '@nu-art/db-api-shared';
|
|
2
|
+
import { DatabaseDef_Assets, DatabaseDef_AssetsDeleted, DatabaseDef_AssetsTemp } from './types.js';
|
|
3
|
+
export declare const DBDef_Assets: Database<DatabaseDef_Assets>;
|
|
4
|
+
export declare const DBDef_TempAssets: Database<DatabaseDef_AssetsTemp>;
|
|
5
|
+
export declare const DBDef_TempDeleted: Database<DatabaseDef_AssetsDeleted>;
|
package/assets/db-def.js
CHANGED
|
@@ -19,41 +19,33 @@ const Validator_GeneratedProps = {
|
|
|
19
19
|
validUntil: tsValidateNumber()
|
|
20
20
|
})
|
|
21
21
|
};
|
|
22
|
-
|
|
22
|
+
const AssetVersions = ['1.0.2', '1.0.1', '1.0.0'];
|
|
23
|
+
const GeneratedProps = ['signedUrl', 'timestamp', 'md5Hash', 'path', 'bucketName', 'public', 'metadata'];
|
|
24
|
+
const BaseDef = {
|
|
23
25
|
modifiablePropsValidator: Validator_ModifiableProps,
|
|
24
26
|
generatedPropsValidator: Validator_GeneratedProps,
|
|
25
|
-
|
|
27
|
+
generatedProps: GeneratedProps,
|
|
28
|
+
versions: AssetVersions,
|
|
29
|
+
frontend: { group: AssetDBGroup, name: 'asset' },
|
|
30
|
+
backend: { name: 'assets' },
|
|
31
|
+
};
|
|
32
|
+
export const DBDef_Assets = {
|
|
33
|
+
...BaseDef,
|
|
26
34
|
dbKey: 'assets',
|
|
27
35
|
entityName: convertUpperCamelCase('Assets', '-').toLowerCase(),
|
|
28
|
-
|
|
29
|
-
group: AssetDBGroup,
|
|
30
|
-
name: 'asset'
|
|
31
|
-
},
|
|
32
|
-
backend: {
|
|
33
|
-
name: 'assets',
|
|
34
|
-
}
|
|
36
|
+
backend: { name: 'assets' },
|
|
35
37
|
};
|
|
36
38
|
export const DBDef_TempAssets = {
|
|
37
|
-
...
|
|
39
|
+
...BaseDef,
|
|
38
40
|
dbKey: 'assets-temp',
|
|
39
41
|
entityName: 'assets-temp',
|
|
40
|
-
frontend: {
|
|
41
|
-
|
|
42
|
-
name: 'temp'
|
|
43
|
-
},
|
|
44
|
-
backend: {
|
|
45
|
-
name: 'assets-temp',
|
|
46
|
-
}
|
|
42
|
+
frontend: { group: AssetDBGroup, name: 'temp' },
|
|
43
|
+
backend: { name: 'assets-temp' },
|
|
47
44
|
};
|
|
48
45
|
export const DBDef_TempDeleted = {
|
|
49
|
-
...
|
|
46
|
+
...BaseDef,
|
|
50
47
|
dbKey: 'assets-deleted',
|
|
51
48
|
entityName: 'assets-deleted',
|
|
52
|
-
frontend: {
|
|
53
|
-
|
|
54
|
-
name: 'deleted'
|
|
55
|
-
},
|
|
56
|
-
backend: {
|
|
57
|
-
name: 'assets-deleted',
|
|
58
|
-
}
|
|
49
|
+
frontend: { group: AssetDBGroup, name: 'deleted' },
|
|
50
|
+
backend: { name: 'assets-deleted' },
|
|
59
51
|
};
|
package/assets/index.d.ts
CHANGED
package/assets/messages.d.ts
CHANGED
package/assets/types.d.ts
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
|
-
import { DB_Object,
|
|
1
|
+
import { DB_Object, DB_ProtoSeed, DB_Prototype, VersionsDeclaration } from '@nu-art/db-api-shared';
|
|
2
|
+
import { TS_Object } from '@nu-art/ts-common';
|
|
2
3
|
export declare const AssetDBGroup = "asset";
|
|
4
|
+
declare const Assets_DbKey = "assets";
|
|
5
|
+
declare const AssetsTemp_DbKey = "assets-temp";
|
|
6
|
+
declare const AssetsDeleted_DbKey = "assets-deleted";
|
|
3
7
|
type VersionTypes_Asset = {
|
|
4
8
|
'1.0.0': DB_Asset;
|
|
5
9
|
'1.0.1': DB_Asset;
|
|
@@ -9,14 +13,8 @@ type Versions = VersionsDeclaration<['1.0.2', '1.0.1', '1.0.0'], VersionTypes_As
|
|
|
9
13
|
type Dependencies = {};
|
|
10
14
|
type UniqueKeys = '_id';
|
|
11
15
|
type GeneratedKeys = 'signedUrl' | 'timestamp' | 'md5Hash' | 'path' | 'bucketName' | 'public' | 'metadata';
|
|
12
|
-
|
|
13
|
-
export type
|
|
14
|
-
type ProtoAssetsTemp = Proto_DB_Object<DB_Asset, 'assets-temp', GeneratedKeys, Versions, UniqueKeys, Dependencies>;
|
|
15
|
-
export type DBProto_AssetsTemp = DBProto<ProtoAssetsTemp>;
|
|
16
|
-
type ProtoAssetsDeleted = Proto_DB_Object<DB_Asset, 'assets-deleted', GeneratedKeys, Versions, UniqueKeys, Dependencies>;
|
|
17
|
-
export type DBProto_AssetsDeleted = DBProto<ProtoAssetsDeleted>;
|
|
18
|
-
export type UI_Asset = DBProto_Assets['uiType'];
|
|
19
|
-
export type DB_Asset = DB_Object & {
|
|
16
|
+
/** Shared entity fields for assets (all three collections). */
|
|
17
|
+
export type AssetData = {
|
|
20
18
|
key: string;
|
|
21
19
|
name: string;
|
|
22
20
|
feId: string;
|
|
@@ -33,4 +31,31 @@ export type DB_Asset = DB_Object & {
|
|
|
33
31
|
validUntil: number;
|
|
34
32
|
};
|
|
35
33
|
};
|
|
34
|
+
export type DB_Asset = DB_Object<typeof Assets_DbKey> & AssetData;
|
|
35
|
+
export type DB_AssetTemp = DB_Object<typeof AssetsTemp_DbKey> & AssetData;
|
|
36
|
+
export type DB_AssetDeleted = DB_Object<typeof AssetsDeleted_DbKey> & AssetData;
|
|
37
|
+
export type DatabaseDef_Assets = DB_Prototype<DB_ProtoSeed<DB_Asset, typeof Assets_DbKey, GeneratedKeys, Versions, UniqueKeys, Dependencies>>;
|
|
38
|
+
export type DatabaseDef_AssetsTemp = DB_Prototype<DB_ProtoSeed<DB_AssetTemp, typeof AssetsTemp_DbKey, GeneratedKeys, Versions, UniqueKeys, Dependencies>>;
|
|
39
|
+
export type DatabaseDef_AssetsDeleted = DB_Prototype<DB_ProtoSeed<DB_AssetDeleted, typeof AssetsDeleted_DbKey, GeneratedKeys, Versions, UniqueKeys, Dependencies>>;
|
|
40
|
+
export type UI_Asset = DatabaseDef_Assets['uiType'];
|
|
41
|
+
/** Request shape for upload (name, mimeType, key?, public?, metadata?). */
|
|
42
|
+
export type Request_Uploader = {
|
|
43
|
+
name: string;
|
|
44
|
+
mimeType: string;
|
|
45
|
+
key?: string;
|
|
46
|
+
public?: boolean;
|
|
47
|
+
metadata?: TS_Object;
|
|
48
|
+
};
|
|
49
|
+
export type BaseUploaderFile = Request_Uploader & {
|
|
50
|
+
feId: string;
|
|
51
|
+
};
|
|
52
|
+
/** Minimal progress event for upload requests. */
|
|
53
|
+
export type UploadProgressEvent = {
|
|
54
|
+
loaded: number;
|
|
55
|
+
total?: number;
|
|
56
|
+
};
|
|
57
|
+
/** Minimal request handle for upload progress. */
|
|
58
|
+
export type ProgressableRequest = {
|
|
59
|
+
setOnProgressListener?(cb: (ev: UploadProgressEvent) => void): void;
|
|
60
|
+
};
|
|
36
61
|
export {};
|
package/assets/types.js
CHANGED
package/index.d.ts
CHANGED
package/index.js
CHANGED
|
@@ -1,11 +1,23 @@
|
|
|
1
1
|
import { Dispatcher, Module } from '@nu-art/ts-common';
|
|
2
|
-
import { ApiDef,
|
|
2
|
+
import { ApiDef, TypedApi } from '@nu-art/api-types';
|
|
3
|
+
import type { ApiDefCaller } from '@nu-art/api-types';
|
|
3
4
|
import { OnPushMessageReceived } from '@nu-art/push-pub-sub-shared';
|
|
4
5
|
import { PushMessage_Payload } from '@nu-art/push-pub-sub-shared';
|
|
5
6
|
import { FileStatus, PushMessage_FileUploaded } from '../assets/messages.js';
|
|
6
7
|
import { DB_Asset, UI_Asset } from '../assets/types.js';
|
|
7
|
-
import {
|
|
8
|
+
import { API_AssetUploader, TempSignedUrl } from '../assets/apis.js';
|
|
9
|
+
import type { ProgressableRequest, UploadProgressEvent } from '../assets/types.js';
|
|
8
10
|
import { OnFileStatusChanged } from '../types.js';
|
|
11
|
+
/** Request handle for upload: used by createRequest and FileInfo.request. Replaces BaseHttpRequest in shared. */
|
|
12
|
+
export interface IAssetUploadRequest<API> {
|
|
13
|
+
setUrl(url: string): this;
|
|
14
|
+
setHeader(key: string, value: string): this;
|
|
15
|
+
setTimeout(ms: number): this;
|
|
16
|
+
setBody(body: unknown): this;
|
|
17
|
+
setOnProgressListener(cb: (ev: UploadProgressEvent) => void): this;
|
|
18
|
+
executeSync(): Promise<unknown>;
|
|
19
|
+
execute(cb: (response: unknown) => void): void;
|
|
20
|
+
}
|
|
9
21
|
export type FilesToUpload = UI_Asset & {
|
|
10
22
|
file: any;
|
|
11
23
|
};
|
|
@@ -14,7 +26,7 @@ export type FileInfo = {
|
|
|
14
26
|
messageStatus?: string;
|
|
15
27
|
progress?: number;
|
|
16
28
|
name: string;
|
|
17
|
-
request?:
|
|
29
|
+
request?: ProgressableRequest;
|
|
18
30
|
file?: any;
|
|
19
31
|
asset?: DB_Asset;
|
|
20
32
|
};
|
|
@@ -23,7 +35,7 @@ export type UploaderConfig = {
|
|
|
23
35
|
uploadQueueParallelCount?: number;
|
|
24
36
|
};
|
|
25
37
|
export declare abstract class ModuleBase_AssetUploader<Config extends UploaderConfig = UploaderConfig> extends Module<Config> implements OnPushMessageReceived<PushMessage_FileUploaded> {
|
|
26
|
-
protected vv1: ApiDefCaller<
|
|
38
|
+
protected vv1: ApiDefCaller<API_AssetUploader>;
|
|
27
39
|
protected files: {
|
|
28
40
|
[id: string]: FileInfo;
|
|
29
41
|
};
|
|
@@ -41,5 +53,5 @@ export declare abstract class ModuleBase_AssetUploader<Config extends UploaderCo
|
|
|
41
53
|
private uploadFiles;
|
|
42
54
|
private uploadFile;
|
|
43
55
|
processAssetManually: (feId?: string) => void;
|
|
44
|
-
protected abstract createRequest<API extends TypedApi<any, any, any, any>>(uploadFile: ApiDef<API>):
|
|
56
|
+
protected abstract createRequest<API extends TypedApi<any, any, any, any>>(uploadFile: ApiDef<API>): IAssetUploadRequest<API>;
|
|
45
57
|
}
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
* limitations under the License.
|
|
18
18
|
*/
|
|
19
19
|
import { __stringify, _keys, BadImplementationException, Dispatcher, Minute, Module, Queue } from '@nu-art/ts-common';
|
|
20
|
-
import { HeaderKey_ContentType } from '@nu-art/
|
|
20
|
+
import { HeaderKey_ContentType } from '@nu-art/api-types';
|
|
21
21
|
import { FileStatus, PushKey_FileUploaded } from '../assets/messages.js';
|
|
22
22
|
import { ApiDef_UploadFile } from '../assets/apis.js';
|
|
23
23
|
export class ModuleBase_AssetUploader extends Module {
|
|
@@ -73,12 +73,11 @@ export class ModuleBase_AssetUploader extends Module {
|
|
|
73
73
|
return fileInfo;
|
|
74
74
|
});
|
|
75
75
|
this.vv1.getUploadUrl?.(body)
|
|
76
|
-
|
|
76
|
+
?.execute((response) => {
|
|
77
77
|
body.forEach(f => this.setFileInfo(f.feId, { status: FileStatus.UrlObtained }));
|
|
78
78
|
if (!response)
|
|
79
79
|
return;
|
|
80
|
-
|
|
81
|
-
await this.uploadFiles(response);
|
|
80
|
+
void this.uploadFiles(response);
|
|
82
81
|
});
|
|
83
82
|
return body;
|
|
84
83
|
}
|
|
@@ -119,7 +118,7 @@ export class ModuleBase_AssetUploader extends Module {
|
|
|
119
118
|
.setTimeout(20 * Minute)
|
|
120
119
|
.setBody(fileInfo.file)
|
|
121
120
|
.setOnProgressListener((ev) => {
|
|
122
|
-
this.setFileInfo(feId, { progress: ev.loaded / ev.total });
|
|
121
|
+
this.setFileInfo(feId, { progress: ev.total ? ev.loaded / ev.total : 0 });
|
|
123
122
|
});
|
|
124
123
|
fileInfo.request = request;
|
|
125
124
|
await request.executeSync();
|
|
@@ -131,10 +130,6 @@ export class ModuleBase_AssetUploader extends Module {
|
|
|
131
130
|
};
|
|
132
131
|
processAssetManually = (feId) => {
|
|
133
132
|
const request = this.vv1.processAssetManually({ feId });
|
|
134
|
-
// const request = this
|
|
135
|
-
// .httpModule
|
|
136
|
-
// .createRequest<Api_ProcessAssetManually>(HttpMethod.GET, RequestKey_ProcessAssetManually, feId)
|
|
137
|
-
// .setRelativeUrl('v1/upload/process-asset-manually');
|
|
138
133
|
if (feId)
|
|
139
134
|
request.setUrlParam('feId', feId);
|
|
140
135
|
request.execute();
|
package/package.json
CHANGED
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nu-art/file-upload-shared",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.500.0",
|
|
4
4
|
"description": "File Uploader - Express & Typescript based backend framework Shared",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"TacB0sS",
|
|
7
7
|
"infra",
|
|
8
8
|
"nu-art",
|
|
9
9
|
"storm",
|
|
10
|
-
"thunderstorm",
|
|
11
10
|
"typescript"
|
|
12
11
|
],
|
|
13
12
|
"homepage": "https://github.com/nu-art-js/file-upload",
|
|
@@ -31,13 +30,14 @@
|
|
|
31
30
|
"build": "tsc"
|
|
32
31
|
},
|
|
33
32
|
"dependencies": {
|
|
34
|
-
"@nu-art/firebase-shared": "0.
|
|
35
|
-
"@nu-art/ts-styles": "0.
|
|
36
|
-
"@nu-art/push-pub-sub-shared": "0.
|
|
37
|
-
"@nu-art/permissions-shared": "0.
|
|
38
|
-
"@nu-art/user-account-shared": "0.
|
|
39
|
-
"@nu-art/
|
|
40
|
-
"@nu-art/
|
|
33
|
+
"@nu-art/firebase-shared": "0.500.0",
|
|
34
|
+
"@nu-art/ts-styles": "0.500.0",
|
|
35
|
+
"@nu-art/push-pub-sub-shared": "0.500.0",
|
|
36
|
+
"@nu-art/permissions-shared": "0.500.0",
|
|
37
|
+
"@nu-art/user-account-shared": "0.500.0",
|
|
38
|
+
"@nu-art/api-types": "{{THUNDERSTORM_VERSION}}",
|
|
39
|
+
"@nu-art/db-api-shared": "0.500.0",
|
|
40
|
+
"@nu-art/ts-common": "0.500.0",
|
|
41
41
|
"@google-cloud/common": "^5.0.2",
|
|
42
42
|
"@google-cloud/storage": "^7.15.0",
|
|
43
43
|
"@google-cloud/firestore": "^7.11.0",
|
package/assets/types1.d.ts
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { BaseHttpRequest } from '@nu-art/thunderstorm-shared';
|
|
2
|
-
import { Auditable, DB_Object, TS_Object } from '@nu-art/ts-common';
|
|
3
|
-
import { FileStatus } from '../types.js';
|
|
4
|
-
export type Request_Uploader = {
|
|
5
|
-
name: string;
|
|
6
|
-
mimeType: string;
|
|
7
|
-
key?: string;
|
|
8
|
-
public?: boolean;
|
|
9
|
-
metadata?: TS_Object;
|
|
10
|
-
};
|
|
11
|
-
export type BaseUploaderFile = Request_Uploader & {
|
|
12
|
-
feId: string;
|
|
13
|
-
};
|
|
14
|
-
export type DB_Asset = DB_Object & BaseUploaderFile & Auditable & Required<Pick<BaseUploaderFile, 'key'>> & {
|
|
15
|
-
timestamp: number;
|
|
16
|
-
ext: string;
|
|
17
|
-
md5Hash?: string;
|
|
18
|
-
path: string;
|
|
19
|
-
bucketName: string;
|
|
20
|
-
signedUrl?: {
|
|
21
|
-
url: string;
|
|
22
|
-
validUntil: number;
|
|
23
|
-
};
|
|
24
|
-
};
|
|
25
|
-
export type FileInfo = {
|
|
26
|
-
status: FileStatus;
|
|
27
|
-
messageStatus?: string;
|
|
28
|
-
progress?: number;
|
|
29
|
-
name: string;
|
|
30
|
-
request?: BaseHttpRequest<any>;
|
|
31
|
-
file?: any;
|
|
32
|
-
asset?: DB_Asset;
|
|
33
|
-
};
|
package/assets/types1.js
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Permissions management system, define access level for each of
|
|
3
|
-
* your server apis, and restrict users by giving them access levels
|
|
4
|
-
*
|
|
5
|
-
* Copyright (C) 2020 Adam van der Kruk aka TacB0sS
|
|
6
|
-
*
|
|
7
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
8
|
-
* you may not use this file except in compliance with the License.
|
|
9
|
-
* You may obtain a copy of the License at
|
|
10
|
-
*
|
|
11
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
-
*
|
|
13
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
14
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
-
* See the License for the specific language governing permissions and
|
|
17
|
-
* limitations under the License.
|
|
18
|
-
*/
|
|
19
|
-
export {};
|