@intuitionrobotics/file-upload 0.47.59 → 1.0.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/LICENSE +3 -0
- package/dist/app-backend/api/_upload.d.ts +4 -0
- package/dist/app-backend/api/_upload.d.ts.map +1 -0
- package/dist/app-backend/api/_upload.js +3 -0
- package/{app-backend → dist/app-backend}/api/_upload.js.map +1 -1
- package/dist/app-backend/api/v1/upload/get-url-with-bucket-name.d.ts +10 -0
- package/dist/app-backend/api/v1/upload/get-url-with-bucket-name.d.ts.map +1 -0
- package/dist/app-backend/api/v1/upload/get-url-with-bucket-name.js +14 -0
- package/dist/app-backend/api/v1/upload/get-url-with-bucket-name.js.map +1 -0
- package/dist/app-backend/api/v1/upload/get-url.d.ts +10 -0
- package/dist/app-backend/api/v1/upload/get-url.d.ts.map +1 -0
- package/dist/app-backend/api/v1/upload/get-url.js +14 -0
- package/dist/app-backend/api/v1/upload/get-url.js.map +1 -0
- package/dist/app-backend/core/module-pack.d.ts +2 -0
- package/dist/app-backend/core/module-pack.d.ts.map +1 -0
- package/dist/app-backend/core/module-pack.js +13 -0
- package/dist/app-backend/core/module-pack.js.map +1 -0
- package/{app-backend → dist/app-backend}/modules/BucketListener.d.ts +1 -0
- package/dist/app-backend/modules/BucketListener.d.ts.map +1 -0
- package/dist/app-backend/modules/BucketListener.js +21 -0
- package/dist/app-backend/modules/BucketListener.js.map +1 -0
- package/{app-backend → dist/app-backend}/modules/ServerUploaderModule.d.ts +5 -4
- package/dist/app-backend/modules/ServerUploaderModule.d.ts.map +1 -0
- package/dist/app-backend/modules/ServerUploaderModule.js +21 -0
- package/dist/app-backend/modules/ServerUploaderModule.js.map +1 -0
- package/{app-backend → dist/app-backend}/modules/UploaderModule.d.ts +3 -2
- package/dist/app-backend/modules/UploaderModule.d.ts.map +1 -0
- package/dist/app-backend/modules/UploaderModule.js +102 -0
- package/dist/app-backend/modules/UploaderModule.js.map +1 -0
- package/{app-backend → dist/app-backend}/modules/UploaderTempFileModule.d.ts +4 -3
- package/dist/app-backend/modules/UploaderTempFileModule.d.ts.map +1 -0
- package/dist/app-backend/modules/UploaderTempFileModule.js +28 -0
- package/dist/app-backend/modules/UploaderTempFileModule.js.map +1 -0
- package/dist/app-frontend/core/module-pack.d.ts +2 -0
- package/dist/app-frontend/core/module-pack.d.ts.map +1 -0
- package/dist/app-frontend/core/module-pack.js +7 -0
- package/dist/app-frontend/core/module-pack.js.map +1 -0
- package/{app-frontend → dist/app-frontend}/modules/UploaderModule.d.ts +3 -2
- package/dist/app-frontend/modules/UploaderModule.d.ts.map +1 -0
- package/dist/app-frontend/modules/UploaderModule.js +43 -0
- package/dist/app-frontend/modules/UploaderModule.js.map +1 -0
- package/dist/backend.d.ts +6 -0
- package/dist/backend.d.ts.map +1 -0
- package/dist/backend.js +6 -0
- package/dist/backend.js.map +1 -0
- package/dist/frontend.d.ts +3 -0
- package/dist/frontend.d.ts.map +1 -0
- package/dist/frontend.js +6 -0
- package/dist/frontend.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/{shared → dist/shared}/modules/BaseUploaderModule.d.ts +2 -1
- package/dist/shared/modules/BaseUploaderModule.d.ts.map +1 -0
- package/dist/shared/modules/BaseUploaderModule.js +147 -0
- package/dist/shared/modules/BaseUploaderModule.js.map +1 -0
- package/{shared → dist/shared}/types.d.ts +5 -4
- package/dist/shared/types.d.ts.map +1 -0
- package/dist/shared/types.js +11 -0
- package/dist/shared/types.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +63 -17
- package/app-backend/api/_upload.d.ts +0 -1
- package/app-backend/api/_upload.js +0 -5
- package/app-backend/api/v1/upload/get-url-with-bucket-name.d.ts +0 -1
- package/app-backend/api/v1/upload/get-url-with-bucket-name.js +0 -25
- package/app-backend/api/v1/upload/get-url-with-bucket-name.js.map +0 -1
- package/app-backend/api/v1/upload/get-url.d.ts +0 -1
- package/app-backend/api/v1/upload/get-url.js +0 -25
- package/app-backend/api/v1/upload/get-url.js.map +0 -1
- package/app-backend/core/module-pack.d.ts +0 -1
- package/app-backend/core/module-pack.js +0 -16
- package/app-backend/core/module-pack.js.map +0 -1
- package/app-backend/modules/BucketListener.js +0 -37
- package/app-backend/modules/BucketListener.js.map +0 -1
- package/app-backend/modules/ServerUploaderModule.js +0 -35
- package/app-backend/modules/ServerUploaderModule.js.map +0 -1
- package/app-backend/modules/UploaderModule.js +0 -116
- package/app-backend/modules/UploaderModule.js.map +0 -1
- package/app-backend/modules/UploaderTempFileModule.js +0 -30
- package/app-backend/modules/UploaderTempFileModule.js.map +0 -1
- package/app-frontend/core/module-pack.d.ts +0 -1
- package/app-frontend/core/module-pack.js +0 -10
- package/app-frontend/core/module-pack.js.map +0 -1
- package/app-frontend/modules/UploaderModule.js +0 -58
- package/app-frontend/modules/UploaderModule.js.map +0 -1
- package/backend.d.ts +0 -5
- package/backend.js +0 -22
- package/backend.js.map +0 -1
- package/frontend.d.ts +0 -2
- package/frontend.js +0 -19
- package/frontend.js.map +0 -1
- package/index.d.ts +0 -1
- package/index.js +0 -18
- package/index.js.map +0 -1
- package/shared/modules/BaseUploaderModule.js +0 -158
- package/shared/modules/BaseUploaderModule.js.map +0 -1
- package/shared/types.js +0 -10
- package/shared/types.js.map +0 -1
package/LICENSE
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_upload.d.ts","sourceRoot":"","sources":["../../../src/main/app-backend/api/_upload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,yCAAyC,CAAC;;AAEtE,wBAAkD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_upload.js","sourceRoot":"","sources":["../../../src/main/app-backend/api/_upload.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"_upload.js","sourceRoot":"","sources":["../../../src/main/app-backend/api/_upload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,yCAAyC,CAAC;AAEtE,eAAe,IAAI,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ApiResponse, type ExpressRequest, ServerApi_Post } from "@intuitionrobotics/thunderstorm/backend";
|
|
2
|
+
import { type Api_GetUploadUrlWithBucketName, type Body_GetUploadUrlWithBucketName } from "../../../../shared/types.js";
|
|
3
|
+
import { type QueryParams } from "@intuitionrobotics/thunderstorm";
|
|
4
|
+
declare class ServerApi_GetUploadUrlWithBucketName extends ServerApi_Post<Api_GetUploadUrlWithBucketName> {
|
|
5
|
+
constructor();
|
|
6
|
+
protected process(request: ExpressRequest, response: ApiResponse, queryParams: QueryParams, body: Body_GetUploadUrlWithBucketName): Promise<import("../../../../shared/types.js").TempSecureUrl[]>;
|
|
7
|
+
}
|
|
8
|
+
declare const _default: ServerApi_GetUploadUrlWithBucketName;
|
|
9
|
+
export default _default;
|
|
10
|
+
//# sourceMappingURL=get-url-with-bucket-name.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-url-with-bucket-name.d.ts","sourceRoot":"","sources":["../../../../../src/main/app-backend/api/v1/upload/get-url-with-bucket-name.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAE,KAAK,cAAc,EAAE,cAAc,EAAC,MAAM,yCAAyC,CAAC;AACzG,OAAO,EAAC,KAAK,8BAA8B,EAAE,KAAK,+BAA+B,EAAC,MAAM,6BAA6B,CAAC;AACtH,OAAO,EAAC,KAAK,WAAW,EAAC,MAAM,iCAAiC,CAAC;AAIjE,cAAM,oCACL,SAAQ,cAAc,CAAC,8BAA8B,CAAC;;cAKtC,OAAO,CAAC,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,+BAA+B;CAGvI;;AAED,wBAA0D"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ApiResponse, ServerApi_Post } from "@intuitionrobotics/thunderstorm/backend";
|
|
2
|
+
import {} from "../../../../shared/types.js";
|
|
3
|
+
import {} from "@intuitionrobotics/thunderstorm";
|
|
4
|
+
import { UploaderModule } from "../../../modules/UploaderModule.js";
|
|
5
|
+
class ServerApi_GetUploadUrlWithBucketName extends ServerApi_Post {
|
|
6
|
+
constructor() {
|
|
7
|
+
super('get-url-with-bucket-name');
|
|
8
|
+
}
|
|
9
|
+
async process(request, response, queryParams, body) {
|
|
10
|
+
return UploaderModule.getUrl(body.files, body.pathPrefix, body.bucketName);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export default new ServerApi_GetUploadUrlWithBucketName();
|
|
14
|
+
//# sourceMappingURL=get-url-with-bucket-name.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-url-with-bucket-name.js","sourceRoot":"","sources":["../../../../../src/main/app-backend/api/v1/upload/get-url-with-bucket-name.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAuB,cAAc,EAAC,MAAM,yCAAyC,CAAC;AACzG,OAAO,EAA2E,MAAM,6BAA6B,CAAC;AACtH,OAAO,EAAkB,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAC,cAAc,EAAC,MAAM,oCAAoC,CAAC;AAGlE,MAAM,oCACL,SAAQ,cAA8C;IACtD;QACC,KAAK,CAAC,0BAA0B,CAAC,CAAA;IAClC,CAAC;IAES,KAAK,CAAC,OAAO,CAAC,OAAuB,EAAE,QAAqB,EAAE,WAAwB,EAAE,IAAqC;QACtI,OAAO,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAC5E,CAAC;CACD;AAED,eAAe,IAAI,oCAAoC,EAAE,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ApiResponse, type ExpressRequest, ServerApi_Post } from "@intuitionrobotics/thunderstorm/backend";
|
|
2
|
+
import { type Api_GetUploadUrl, type BaseUploaderFile } from "../../../../shared/types.js";
|
|
3
|
+
import { type QueryParams } from "@intuitionrobotics/thunderstorm";
|
|
4
|
+
declare class ServerApi_GetUploadUrl extends ServerApi_Post<Api_GetUploadUrl> {
|
|
5
|
+
constructor();
|
|
6
|
+
protected process(request: ExpressRequest, response: ApiResponse, queryParams: QueryParams, body: BaseUploaderFile[]): Promise<import("../../../../shared/types.js").TempSecureUrl[]>;
|
|
7
|
+
}
|
|
8
|
+
declare const _default: ServerApi_GetUploadUrl;
|
|
9
|
+
export default _default;
|
|
10
|
+
//# sourceMappingURL=get-url.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-url.d.ts","sourceRoot":"","sources":["../../../../../src/main/app-backend/api/v1/upload/get-url.ts"],"names":[],"mappings":"AACA,OAAO,EACN,WAAW,EACX,KAAK,cAAc,EACnB,cAAc,EACd,MAAM,yCAAyC,CAAC;AACjD,OAAO,EACN,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAC,KAAK,WAAW,EAAC,MAAM,iCAAiC,CAAC;AAIjE,cAAM,sBACL,SAAQ,cAAc,CAAC,gBAAgB,CAAC;;cAKxB,OAAO,CAAC,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,EAAE;CAG1H;;AAED,wBAA4C"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ApiResponse, ServerApi_Post } from "@intuitionrobotics/thunderstorm/backend";
|
|
2
|
+
import {} from "../../../../shared/types.js";
|
|
3
|
+
import {} from "@intuitionrobotics/thunderstorm";
|
|
4
|
+
import { UploaderModule } from "../../../modules/UploaderModule.js";
|
|
5
|
+
class ServerApi_GetUploadUrl extends ServerApi_Post {
|
|
6
|
+
constructor() {
|
|
7
|
+
super('get-url');
|
|
8
|
+
}
|
|
9
|
+
async process(request, response, queryParams, body) {
|
|
10
|
+
return UploaderModule.getUrl(body);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export default new ServerApi_GetUploadUrl();
|
|
14
|
+
//# sourceMappingURL=get-url.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-url.js","sourceRoot":"","sources":["../../../../../src/main/app-backend/api/v1/upload/get-url.ts"],"names":[],"mappings":"AACA,OAAO,EACN,WAAW,EAEX,cAAc,EACd,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAGN,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAkB,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAC,cAAc,EAAC,MAAM,oCAAoC,CAAC;AAGlE,MAAM,sBACL,SAAQ,cAAgC;IACxC;QACC,KAAK,CAAC,SAAS,CAAC,CAAA;IACjB,CAAC;IAES,KAAK,CAAC,OAAO,CAAC,OAAuB,EAAE,QAAqB,EAAE,WAAwB,EAAE,IAAwB;QACzH,OAAO,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;CACD;AAED,eAAe,IAAI,sBAAsB,EAAE,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export declare const Backend_ModulePack_Uploader: (import("../modules/UploaderTempFileModule.js").UploaderTempFileModule_Class | import("../modules/BucketListener.js").BucketListener_Class | import("../modules/UploaderModule.js").UploaderModule_Class | import("@intuitionrobotics/push-pub-sub/backend").PushPubSubModule_Class | import("../modules/ServerUploaderModule.js").ServerUploaderModule_Class | import("@intuitionrobotics/push-pub-sub/backend").ScheduledCleanup_Class)[];
|
|
2
|
+
//# sourceMappingURL=module-pack.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module-pack.d.ts","sourceRoot":"","sources":["../../../src/main/app-backend/core/module-pack.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,2BAA2B,6aAMvC,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { UploaderModule } from "../modules/UploaderModule.js";
|
|
2
|
+
import { UploaderTempFileModule } from "../modules/UploaderTempFileModule.js";
|
|
3
|
+
import { BucketListener } from "../modules/BucketListener.js";
|
|
4
|
+
import { Backend_ModulePack_PushPubSub } from "@intuitionrobotics/push-pub-sub/backend";
|
|
5
|
+
import { ServerUploaderModule } from "../modules/ServerUploaderModule.js";
|
|
6
|
+
export const Backend_ModulePack_Uploader = [
|
|
7
|
+
...Backend_ModulePack_PushPubSub,
|
|
8
|
+
ServerUploaderModule,
|
|
9
|
+
UploaderModule,
|
|
10
|
+
UploaderTempFileModule,
|
|
11
|
+
BucketListener
|
|
12
|
+
];
|
|
13
|
+
//# sourceMappingURL=module-pack.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module-pack.js","sourceRoot":"","sources":["../../../src/main/app-backend/core/module-pack.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,cAAc,EAAC,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAC,sBAAsB,EAAC,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EAAC,cAAc,EAAC,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAC,6BAA6B,EAAC,MAAM,yCAAyC,CAAC;AACtF,OAAO,EAAC,oBAAoB,EAAC,MAAM,oCAAoC,CAAC;AAExE,MAAM,CAAC,MAAM,2BAA2B,GAAG;IAC1C,GAAG,6BAA6B;IAChC,oBAAoB;IACpB,cAAc;IACd,sBAAsB;IACtB,cAAc;CACd,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BucketListener.d.ts","sourceRoot":"","sources":["../../../src/main/app-backend/modules/BucketListener.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,wBAAwB,EAAC,MAAM,+CAA+C,CAAC;AAGvF,MAAM,WAAW,cAAc;IAC9B,gBAAgB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1C;AAKD,qBAAa,oBACZ,SAAQ,wBAAwB;;IAMhC,IAAI;IAME,UAAU,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;CAOzD;AAED,eAAO,MAAM,cAAc,sBAA6B,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Firebase_StorageFunction } from "@intuitionrobotics/firebase/backend-functions";
|
|
2
|
+
import { Dispatcher } from "@intuitionrobotics/ts-common";
|
|
3
|
+
const dispatcher_onFileUploaded = new Dispatcher("__onFileUploaded");
|
|
4
|
+
export class BucketListener_Class extends Firebase_StorageFunction {
|
|
5
|
+
constructor() {
|
|
6
|
+
super("BucketListener");
|
|
7
|
+
}
|
|
8
|
+
init() {
|
|
9
|
+
super.init();
|
|
10
|
+
this.logInfo("Bucket Listener config", this.config);
|
|
11
|
+
this.logInfo("bucketName", this.config.bucketName);
|
|
12
|
+
}
|
|
13
|
+
async onFinalize(object, context) {
|
|
14
|
+
const filePath = object.name;
|
|
15
|
+
await dispatcher_onFileUploaded.dispatchModuleAsync(filePath);
|
|
16
|
+
this.logInfo("Object is ", object);
|
|
17
|
+
this.logInfo("Context is ", context);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
export const BucketListener = new BucketListener_Class();
|
|
21
|
+
//# sourceMappingURL=BucketListener.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BucketListener.js","sourceRoot":"","sources":["../../../src/main/app-backend/modules/BucketListener.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,wBAAwB,EAAC,MAAM,+CAA+C,CAAC;AACvF,OAAO,EAAC,UAAU,EAAC,MAAM,8BAA8B,CAAC;AAMxD,MAAM,yBAAyB,GAAG,IAAI,UAAU,CAAqC,kBAAkB,CAAC,CAAC;AAGzG,MAAM,OAAO,oBACZ,SAAQ,wBAAwB;IAChC;QACC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IACzB,CAAC;IAGD,IAAI;QACH,KAAK,CAAC,IAAI,EAAE,CAAC;QACb,IAAI,CAAC,OAAO,CAAC,wBAAwB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;QACnD,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAW,EAAE,OAAY;QACzC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC;QAC7B,MAAM,yBAAyB,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAC9D,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QACnC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC;CAED;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,oBAAoB,EAAE,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { BaseUploaderFile, TempSecureUrl, Request_Uploader } from "../../shared/types";
|
|
2
|
-
import { BaseUploaderModule_Class, FileStatus } from "../../shared/modules/BaseUploaderModule";
|
|
3
|
-
import { Axios_RequestConfig, AxiosHttpModule_Class } from "@intuitionrobotics/thunderstorm/backend";
|
|
1
|
+
import { type BaseUploaderFile, type TempSecureUrl, type Request_Uploader } from "../../shared/types.js";
|
|
2
|
+
import { BaseUploaderModule_Class, FileStatus } from "../../shared/modules/BaseUploaderModule.js";
|
|
3
|
+
import { type Axios_RequestConfig, AxiosHttpModule_Class } from "@intuitionrobotics/thunderstorm/backend";
|
|
4
4
|
export type ServerFilesToUpload = Request_Uploader & {
|
|
5
5
|
file: Buffer;
|
|
6
6
|
onFileStatusChanged: (feId: string, status: FileStatus) => void;
|
|
@@ -11,6 +11,7 @@ export declare class ServerUploaderModule_Class extends BaseUploaderModule_Class
|
|
|
11
11
|
constructor();
|
|
12
12
|
init(): void;
|
|
13
13
|
upload(files: ServerFilesToUpload[]): BaseUploaderFile[];
|
|
14
|
-
protected subscribeToPush(
|
|
14
|
+
protected subscribeToPush(_toSubscribe: TempSecureUrl[]): Promise<void>;
|
|
15
15
|
}
|
|
16
16
|
export declare const ServerUploaderModule: ServerUploaderModule_Class;
|
|
17
|
+
//# sourceMappingURL=ServerUploaderModule.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ServerUploaderModule.d.ts","sourceRoot":"","sources":["../../../src/main/app-backend/modules/ServerUploaderModule.ts"],"names":[],"mappings":"AACA,OAAO,EACN,KAAK,gBAAgB,EACrB,KAAK,aAAa,EACf,KAAK,gBAAgB,EACxB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACN,wBAAwB,EAAE,UAAU,EACpC,MAAM,4CAA4C,CAAC;AACpD,OAAO,EACN,KAAK,mBAAmB,EAExB,qBAAqB,EACrB,MAAM,yCAAyC,CAAC;AAEjD,MAAM,MAAM,mBAAmB,GAAG,gBAAgB,GAAG;IACpD,IAAI,EAAE,MAAM,CAAA;IACZ,mBAAmB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,KAAK,IAAI,CAAA;CAC/D,CAAA;AAED,qBAAa,0BACZ,SAAQ,wBAAwB,CAAC,qBAAqB,EAAE;IAAE,aAAa,EAAE,mBAAmB,CAAA;CAAE,CAAC;;IAM/F,IAAI;IAKJ,MAAM,CAAC,KAAK,EAAE,mBAAmB,EAAE,GAAG,gBAAgB,EAAE;cAIxC,eAAe,CAAC,YAAY,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAI7E;AAED,eAAO,MAAM,oBAAoB,4BAAmC,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import {} from "../../shared/types.js";
|
|
2
|
+
import { BaseUploaderModule_Class, FileStatus, } from "../../shared/modules/BaseUploaderModule.js";
|
|
3
|
+
import { AxiosHttpModule, AxiosHttpModule_Class } from "@intuitionrobotics/thunderstorm/backend";
|
|
4
|
+
export class ServerUploaderModule_Class extends BaseUploaderModule_Class {
|
|
5
|
+
constructor() {
|
|
6
|
+
super(AxiosHttpModule, "ServerUploaderModule");
|
|
7
|
+
}
|
|
8
|
+
init() {
|
|
9
|
+
super.init();
|
|
10
|
+
AxiosHttpModule.setRequestOption(this.config.requestConfig);
|
|
11
|
+
}
|
|
12
|
+
upload(files) {
|
|
13
|
+
return this.uploadImpl(files);
|
|
14
|
+
}
|
|
15
|
+
async subscribeToPush(_toSubscribe) {
|
|
16
|
+
// Not sure now
|
|
17
|
+
// We said timeout
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
export const ServerUploaderModule = new ServerUploaderModule_Class();
|
|
21
|
+
//# sourceMappingURL=ServerUploaderModule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ServerUploaderModule.js","sourceRoot":"","sources":["../../../src/main/app-backend/modules/ServerUploaderModule.ts"],"names":[],"mappings":"AACA,OAAO,EAIN,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACN,wBAAwB,EAAE,UAAU,GACpC,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAEN,eAAe,EACf,qBAAqB,EACrB,MAAM,yCAAyC,CAAC;AAOjD,MAAM,OAAO,0BACZ,SAAQ,wBAAuF;IAE/F;QACC,KAAK,CAAC,eAAe,EAAE,sBAAsB,CAAC,CAAC;IAChD,CAAC;IAED,IAAI;QACH,KAAK,CAAC,IAAI,EAAE,CAAC;QACb,eAAe,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,CAAC,KAA4B;QAClC,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAES,KAAK,CAAC,eAAe,CAAC,YAA6B;QAC5D,eAAe;QACf,kBAAkB;IACnB,CAAC;CACD;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,0BAA0B,EAAE,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Module } from "@intuitionrobotics/ts-common";
|
|
2
2
|
import { FileWrapper } from "@intuitionrobotics/firebase/backend";
|
|
3
|
-
import { BaseUploaderFile, DB_Temp_File, TempSecureUrl } from "../../shared/types";
|
|
4
|
-
import { OnFileUploaded } from "./BucketListener";
|
|
3
|
+
import { type BaseUploaderFile, type DB_Temp_File, type TempSecureUrl } from "../../shared/types.js";
|
|
4
|
+
import { type OnFileUploaded } from "./BucketListener.js";
|
|
5
5
|
export declare const Temp_Path = "files-temp";
|
|
6
6
|
type Config = {
|
|
7
7
|
bucketName?: string;
|
|
@@ -24,3 +24,4 @@ export declare class UploaderModule_Class extends Module<Config> implements OnFi
|
|
|
24
24
|
}
|
|
25
25
|
export declare const UploaderModule: UploaderModule_Class;
|
|
26
26
|
export {};
|
|
27
|
+
//# sourceMappingURL=UploaderModule.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UploaderModule.d.ts","sourceRoot":"","sources":["../../../src/main/app-backend/modules/UploaderModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAKN,MAAM,EAEN,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACN,WAAW,EAGX,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACN,KAAK,gBAAgB,EACrB,KAAK,YAAY,EAGjB,KAAK,aAAa,EAElB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAC,KAAK,cAAc,EAAC,MAAM,qBAAqB,CAAC;AAExD,eAAO,MAAM,SAAS,eAAe,CAAC;AAEtC,KAAK,MAAM,GAAG;IACb,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC1B,CAAA;AAED,MAAM,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAEpF,qBAAa,oBACZ,SAAQ,MAAM,CAAC,MAAM,CACrB,YAAW,cAAc;;IAMzB,OAAO,CAAC,OAAO,CAAkB;IAEjC,OAAO,CAAC,aAAa,CAAkC;IAEjD,gBAAgB,CAAC,QAAQ,CAAC,EAAE,MAAM;IAIxC,gBAAgB,GAAI,WAAW;QAAE,CAAC,CAAC,EAAE,MAAM,GAAG,aAAa,CAAA;KAAE,UAE3D;IAEK,YAAY,GAAI,GAAG,MAAM,mBAM9B;IAEF,IAAI;IAOE,MAAM,CAAC,IAAI,EAAE,gBAAgB,EAAE,EAAE,UAAU,GAAE,MAAkB,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAoCtH,YAAY,GAAU,WAAW,MAAM,mBAkCrC;IAEF,OAAO,CAAC,cAAc,CAIpB;CAEF;AAED,eAAO,MAAM,cAAc,sBAA6B,CAAC"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { auditBy, generateHex, Hour, ImplementationMissingException, Module, ThisShouldNotHappenException } from "@intuitionrobotics/ts-common";
|
|
2
|
+
import { FileWrapper, FirebaseModule, StorageWrapper } from "@intuitionrobotics/firebase/backend";
|
|
3
|
+
import { fileUploadedKey, UploadResult } from "../../shared/types.js";
|
|
4
|
+
import { UploaderTempFileModule } from "./UploaderTempFileModule.js";
|
|
5
|
+
import { PushPubSubModule } from "@intuitionrobotics/push-pub-sub/backend";
|
|
6
|
+
import {} from "./BucketListener.js";
|
|
7
|
+
export const Temp_Path = "files-temp";
|
|
8
|
+
export class UploaderModule_Class extends Module {
|
|
9
|
+
constructor() {
|
|
10
|
+
super("UploaderModule");
|
|
11
|
+
}
|
|
12
|
+
storage;
|
|
13
|
+
postProcessor;
|
|
14
|
+
async __onFileUploaded(filePath) {
|
|
15
|
+
await this.fileUploaded(filePath);
|
|
16
|
+
}
|
|
17
|
+
setPostProcessor = (validator) => {
|
|
18
|
+
this.postProcessor = validator;
|
|
19
|
+
};
|
|
20
|
+
getProcessor = (k) => {
|
|
21
|
+
const postProcessorElement = this.postProcessor[k];
|
|
22
|
+
if (!postProcessorElement)
|
|
23
|
+
throw new ImplementationMissingException(`Missing validator for type ${k}`);
|
|
24
|
+
return postProcessorElement;
|
|
25
|
+
};
|
|
26
|
+
init() {
|
|
27
|
+
if (!this.postProcessor)
|
|
28
|
+
throw new ImplementationMissingException("You must set a postProcessor for the UploaderModule");
|
|
29
|
+
this.storage = FirebaseModule.createAdminSession(this.config.uploaderProjectId).getStorage();
|
|
30
|
+
}
|
|
31
|
+
async getUrl(body, pathPrefix = Temp_Path, _bucketName) {
|
|
32
|
+
const bucketName = _bucketName || this.config?.bucketName;
|
|
33
|
+
const bucket = await this.storage.getOrCreateBucket(bucketName);
|
|
34
|
+
return Promise.all(body.map(async (_file) => {
|
|
35
|
+
const key = _file.key || _file.mimeType;
|
|
36
|
+
this.getProcessor(key);
|
|
37
|
+
const _id = generateHex(32);
|
|
38
|
+
const path = `${pathPrefix}/${_id}`;
|
|
39
|
+
const instance = {
|
|
40
|
+
_id,
|
|
41
|
+
feId: _file.feId,
|
|
42
|
+
name: _file.name,
|
|
43
|
+
mimeType: _file.mimeType,
|
|
44
|
+
key,
|
|
45
|
+
path,
|
|
46
|
+
_audit: auditBy("be-stub"),
|
|
47
|
+
bucketName: bucket.bucketName
|
|
48
|
+
};
|
|
49
|
+
if (_file.public)
|
|
50
|
+
instance.public = _file.public;
|
|
51
|
+
if (_file.metadata)
|
|
52
|
+
instance.metadata = _file.metadata;
|
|
53
|
+
const temp = await UploaderTempFileModule.upsert(instance);
|
|
54
|
+
const file = await bucket.getFile(temp.path);
|
|
55
|
+
const url = await file.getWriteSecuredUrl(_file.mimeType, Hour);
|
|
56
|
+
return {
|
|
57
|
+
secureUrl: url.securedUrl,
|
|
58
|
+
tempDoc: temp
|
|
59
|
+
};
|
|
60
|
+
}));
|
|
61
|
+
}
|
|
62
|
+
fileUploaded = async (filePath) => {
|
|
63
|
+
if (!filePath)
|
|
64
|
+
throw new ThisShouldNotHappenException("Missing file path");
|
|
65
|
+
this.logInfo(`Looking for file with path ${filePath}`);
|
|
66
|
+
// I use collection and not the module directly since I want to handle failure my way
|
|
67
|
+
const tempMeta = await UploaderTempFileModule.collection.queryUnique({ where: { path: filePath } });
|
|
68
|
+
if (!tempMeta)
|
|
69
|
+
return this.logInfo(`File with path: ${filePath}, not found in temp collection db`);
|
|
70
|
+
this.logInfo(`Found temp meta with _id: ${tempMeta._id}`, tempMeta);
|
|
71
|
+
const val = this.postProcessor[tempMeta.key];
|
|
72
|
+
this.logInfo(`Found a validator ${!!val}`);
|
|
73
|
+
if (!val)
|
|
74
|
+
return this.notifyFrontend(tempMeta.feId, UploadResult.Failure, `Missing a validator for ${tempMeta.key} for file: ${tempMeta.name}`);
|
|
75
|
+
const bucket = await this.storage.getOrCreateBucket(tempMeta.bucketName);
|
|
76
|
+
const file = await bucket.getFile(tempMeta.path);
|
|
77
|
+
if (tempMeta.public) {
|
|
78
|
+
try {
|
|
79
|
+
await file.makePublic();
|
|
80
|
+
}
|
|
81
|
+
catch (e) {
|
|
82
|
+
await this.notifyFrontend(tempMeta.feId, UploadResult.Failure, `Failed to make the file public: ${tempMeta.name}`, e);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
try {
|
|
86
|
+
await val(file, tempMeta);
|
|
87
|
+
}
|
|
88
|
+
catch (e) {
|
|
89
|
+
//TODO delete the file and the temp doc
|
|
90
|
+
return await this.notifyFrontend(tempMeta.feId, UploadResult.Failure, `Post-processing failed for file: ${tempMeta.name}`, e);
|
|
91
|
+
}
|
|
92
|
+
return this.notifyFrontend(tempMeta.feId, UploadResult.Success, `Successfully parsed and processed file ${tempMeta.name}`);
|
|
93
|
+
};
|
|
94
|
+
notifyFrontend = async (feId, result, message, cause) => {
|
|
95
|
+
if (cause)
|
|
96
|
+
this.logWarning(cause);
|
|
97
|
+
const data = { message, result, cause };
|
|
98
|
+
await PushPubSubModule.pushToKey(fileUploadedKey, { feId }, data);
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
export const UploaderModule = new UploaderModule_Class();
|
|
102
|
+
//# sourceMappingURL=UploaderModule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UploaderModule.js","sourceRoot":"","sources":["../../../src/main/app-backend/modules/UploaderModule.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,OAAO,EACP,WAAW,EACX,IAAI,EACJ,8BAA8B,EAC9B,MAAM,EACN,4BAA4B,EAC5B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACN,WAAW,EACX,cAAc,EACd,cAAc,EACd,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAGN,eAAe,EAGf,YAAY,EACZ,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAC,sBAAsB,EAAC,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAC,gBAAgB,EAAC,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAqB,MAAM,qBAAqB,CAAC;AAExD,MAAM,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC;AAStC,MAAM,OAAO,oBACZ,SAAQ,MAAc;IAGtB;QACC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IACzB,CAAC;IAEO,OAAO,CAAkB;IAEzB,aAAa,CAAkC;IAEvD,KAAK,CAAC,gBAAgB,CAAC,QAAiB;QACvC,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IACnC,CAAC;IAED,gBAAgB,GAAG,CAAC,SAAyC,EAAE,EAAE;QAChE,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;IAChC,CAAC,CAAC;IAEK,YAAY,GAAG,CAAC,CAAS,EAAE,EAAE;QACnC,MAAM,oBAAoB,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QACnD,IAAI,CAAC,oBAAoB;YACxB,MAAM,IAAI,8BAA8B,CAAC,8BAA8B,CAAC,EAAE,CAAC,CAAC;QAE7E,OAAO,oBAAoB,CAAC;IAC7B,CAAC,CAAC;IAEF,IAAI;QACH,IAAI,CAAC,IAAI,CAAC,aAAa;YACtB,MAAM,IAAI,8BAA8B,CAAC,qDAAqD,CAAC,CAAC;QAEjG,IAAI,CAAC,OAAO,GAAG,cAAc,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,UAAU,EAAE,CAAC;IAC9F,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAwB,EAAE,aAAqB,SAAS,EAAE,WAAoB;QAC1F,MAAM,UAAU,GAAG,WAAW,IAAI,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC;QAC1D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAChE,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAC,KAAK,EAAC,EAAE;YACzC,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC;YACxC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YAEvB,MAAM,GAAG,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;YAC5B,MAAM,IAAI,GAAG,GAAG,UAAU,IAAI,GAAG,EAAE,CAAC;YACpC,MAAM,QAAQ,GAAiB;gBAC9B,GAAG;gBACH,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,GAAG;gBACH,IAAI;gBACJ,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC;gBAC1B,UAAU,EAAE,MAAM,CAAC,UAAU;aAC7B,CAAC;YAEF,IAAI,KAAK,CAAC,MAAM;gBACf,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;YAEhC,IAAI,KAAK,CAAC,QAAQ;gBACjB,QAAQ,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;YAEpC,MAAM,IAAI,GAAG,MAAM,sBAAsB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC3D,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAChE,OAAO;gBACN,SAAS,EAAE,GAAG,CAAC,UAAU;gBACzB,OAAO,EAAE,IAAI;aACb,CAAC;QACH,CAAC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,YAAY,GAAG,KAAK,EAAE,QAAiB,EAAE,EAAE;QAC1C,IAAI,CAAC,QAAQ;YACZ,MAAM,IAAI,4BAA4B,CAAC,mBAAmB,CAAC,CAAC;QAE7D,IAAI,CAAC,OAAO,CAAC,8BAA8B,QAAQ,EAAE,CAAC,CAAC;QAEvD,qFAAqF;QACrF,MAAM,QAAQ,GAAG,MAAM,sBAAsB,CAAC,UAAU,CAAC,WAAW,CAAC,EAAC,KAAK,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,EAAC,CAAC,CAAC;QAChG,IAAI,CAAC,QAAQ;YACZ,OAAO,IAAI,CAAC,OAAO,CAAC,mBAAmB,QAAQ,mCAAmC,CAAC,CAAC;QAErF,IAAI,CAAC,OAAO,CAAC,6BAA6B,QAAQ,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;QACpE,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QAC3C,IAAI,CAAC,GAAG;YACP,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,OAAO,EAAE,2BAA2B,QAAQ,CAAC,GAAG,cAAc,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QAEvI,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QACzE,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;YACrB,IAAI,CAAC;gBACJ,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;YACzB,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACZ,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,OAAO,EAAE,mCAAmC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;YACvH,CAAC;QACF,CAAC;QAED,IAAI,CAAC;YACJ,MAAM,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC3B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACZ,uCAAuC;YACvC,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,OAAO,EAAE,oCAAoC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;QAC/H,CAAC;QACD,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,OAAO,EAAE,0CAA0C,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5H,CAAC,CAAC;IAEM,cAAc,GAAG,KAAK,EAAE,IAAY,EAAE,MAAoB,EAAE,OAAe,EAAE,KAAW,EAAE,EAAE;QACnG,IAAI,KAAK;YAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,IAAI,GAAG,EAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAC,CAAC;QACtC,MAAM,gBAAgB,CAAC,SAAS,CAAoB,eAAe,EAAE,EAAC,IAAI,EAAC,EAAE,IAAI,CAAC,CAAC;IACpF,CAAC,CAAC;CAEF;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,oBAAoB,EAAE,CAAC"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import { TypeValidator } from "@intuitionrobotics/ts-common";
|
|
1
|
+
import { type TypeValidator } from "@intuitionrobotics/ts-common";
|
|
2
2
|
import { ServerApi } from "@intuitionrobotics/thunderstorm/backend";
|
|
3
3
|
import { BaseDB_ApiGenerator } from "@intuitionrobotics/db-api-generator/backend";
|
|
4
|
-
import { DB_Temp_File } from "../../shared/types";
|
|
4
|
+
import { type DB_Temp_File } from "../../shared/types.js";
|
|
5
5
|
export declare const TEMP_COLLECTION = "temp-files-upload";
|
|
6
6
|
export declare const validateName: import("@intuitionrobotics/ts-common").Validator<string>;
|
|
7
7
|
export declare class UploaderTempFileModule_Class extends BaseDB_ApiGenerator<DB_Temp_File> {
|
|
8
8
|
static _validator: TypeValidator<DB_Temp_File>;
|
|
9
9
|
constructor();
|
|
10
|
-
apis(
|
|
10
|
+
apis(_pathPart?: string): ServerApi<any>[];
|
|
11
11
|
}
|
|
12
12
|
export declare const UploaderTempFileModule: UploaderTempFileModule_Class;
|
|
13
|
+
//# sourceMappingURL=UploaderTempFileModule.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UploaderTempFileModule.d.ts","sourceRoot":"","sources":["../../../src/main/app-backend/modules/UploaderTempFileModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,KAAK,aAAa,EAGlB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAC,SAAS,EAAC,MAAM,yCAAyC,CAAC;AAClE,OAAO,EACN,mBAAmB,EAEnB,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAAC,KAAK,YAAY,EAAC,MAAM,uBAAuB,CAAC;AAExD,eAAO,MAAM,eAAe,sBAAsB,CAAC;AAEnD,eAAO,MAAM,YAAY,0DAA4B,CAAC;AAEtD,qBAAa,4BACZ,SAAQ,mBAAmB,CAAC,YAAY,CAAC;IACzC,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,YAAY,CAAC,CAW5C;;IAMF,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE;CAG1C;AAED,eAAO,MAAM,sBAAsB,8BAAqC,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { auditValidator, validateExists, validateRegexp } from "@intuitionrobotics/ts-common";
|
|
2
|
+
import { ServerApi } from "@intuitionrobotics/thunderstorm/backend";
|
|
3
|
+
import { BaseDB_ApiGenerator, validateUniqueId } from "@intuitionrobotics/db-api-generator/backend";
|
|
4
|
+
import {} from "../../shared/types.js";
|
|
5
|
+
export const TEMP_COLLECTION = "temp-files-upload";
|
|
6
|
+
export const validateName = validateRegexp(/^.{3,}$/);
|
|
7
|
+
export class UploaderTempFileModule_Class extends BaseDB_ApiGenerator {
|
|
8
|
+
static _validator = {
|
|
9
|
+
_id: validateUniqueId,
|
|
10
|
+
name: validateName,
|
|
11
|
+
feId: validateExists(true),
|
|
12
|
+
mimeType: validateExists(true),
|
|
13
|
+
key: validateExists(true),
|
|
14
|
+
path: validateExists(true),
|
|
15
|
+
_audit: auditValidator(),
|
|
16
|
+
bucketName: validateExists(true),
|
|
17
|
+
public: undefined,
|
|
18
|
+
metadata: undefined
|
|
19
|
+
};
|
|
20
|
+
constructor() {
|
|
21
|
+
super(TEMP_COLLECTION, UploaderTempFileModule_Class._validator, "temp-files", "UploaderTempFileModule");
|
|
22
|
+
}
|
|
23
|
+
apis(_pathPart) {
|
|
24
|
+
return [];
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
export const UploaderTempFileModule = new UploaderTempFileModule_Class();
|
|
28
|
+
//# sourceMappingURL=UploaderTempFileModule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UploaderTempFileModule.js","sourceRoot":"","sources":["../../../src/main/app-backend/modules/UploaderTempFileModule.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,cAAc,EAEd,cAAc,EACd,cAAc,EACd,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAC,SAAS,EAAC,MAAM,yCAAyC,CAAC;AAClE,OAAO,EACN,mBAAmB,EACnB,gBAAgB,EAChB,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAAmB,MAAM,uBAAuB,CAAC;AAExD,MAAM,CAAC,MAAM,eAAe,GAAG,mBAAmB,CAAC;AAEnD,MAAM,CAAC,MAAM,YAAY,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;AAEtD,MAAM,OAAO,4BACZ,SAAQ,mBAAiC;IACzC,MAAM,CAAC,UAAU,GAAgC;QAChD,GAAG,EAAE,gBAAgB;QACrB,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC;QAC1B,QAAQ,EAAE,cAAc,CAAC,IAAI,CAAC;QAC9B,GAAG,EAAE,cAAc,CAAC,IAAI,CAAC;QACzB,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC;QAC1B,MAAM,EAAE,cAAc,EAAE;QACxB,UAAU,EAAE,cAAc,CAAC,IAAI,CAAC;QAChC,MAAM,EAAE,SAAS;QACjB,QAAQ,EAAE,SAAS;KACnB,CAAC;IAEF;QACC,KAAK,CAAC,eAAe,EAAE,4BAA4B,CAAC,UAAU,EAAE,YAAY,EAAE,wBAAwB,CAAC,CAAC;IACzG,CAAC;IAED,IAAI,CAAC,SAAkB;QACtB,OAAO,EAAE,CAAC;IACX,CAAC;;AAGF,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,4BAA4B,EAAE,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export declare const Frontend_ModulePack_Uploader: (import("../modules/UploaderModule.js").UploaderModule_Class | import("@intuitionrobotics/push-pub-sub/frontend").PushPubSubModule_Class | import("@intuitionrobotics/push-pub-sub/frontend").NotificationsModule_Class | import("@intuitionrobotics/firebase/app-frontend/FirebaseModule").FirebaseModule_Class)[];
|
|
2
|
+
//# sourceMappingURL=module-pack.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module-pack.d.ts","sourceRoot":"","sources":["../../../src/main/app-frontend/core/module-pack.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,4BAA4B,qTAGxC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { UploaderModule } from "../modules/UploaderModule.js";
|
|
2
|
+
import { Frontend_ModulePack_PushPubSub } from "@intuitionrobotics/push-pub-sub/frontend";
|
|
3
|
+
export const Frontend_ModulePack_Uploader = [
|
|
4
|
+
...Frontend_ModulePack_PushPubSub,
|
|
5
|
+
UploaderModule
|
|
6
|
+
];
|
|
7
|
+
//# sourceMappingURL=module-pack.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module-pack.js","sourceRoot":"","sources":["../../../src/main/app-frontend/core/module-pack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAC,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAC,8BAA8B,EAAC,MAAM,0CAA0C,CAAC;AAExF,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC3C,GAAG,8BAA8B;IACjC,cAAc;CACd,CAAC"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { XhrHttpModule_Class } from "@intuitionrobotics/thunderstorm/frontend";
|
|
2
|
-
import { BaseUploaderFile, TempSecureUrl } from "../../shared/types";
|
|
3
|
-
import { BaseUploaderModule_Class, FileStatus } from "../../shared/modules/BaseUploaderModule";
|
|
2
|
+
import { type BaseUploaderFile, type TempSecureUrl } from "../../shared/types.js";
|
|
3
|
+
import { BaseUploaderModule_Class, FileStatus } from "../../shared/modules/BaseUploaderModule.js";
|
|
4
4
|
export declare class UploaderModule_Class extends BaseUploaderModule_Class<XhrHttpModule_Class> {
|
|
5
5
|
constructor();
|
|
6
6
|
upload(files: File[], onFileStatusChanged: (feId: string, status: FileStatus) => void, key?: string, _public?: boolean, _bucketName?: string, _pathPrefix?: string): BaseUploaderFile[];
|
|
7
7
|
protected subscribeToPush(toSubscribe: TempSecureUrl[]): Promise<void>;
|
|
8
8
|
}
|
|
9
9
|
export declare const UploaderModule: UploaderModule_Class;
|
|
10
|
+
//# sourceMappingURL=UploaderModule.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UploaderModule.d.ts","sourceRoot":"","sources":["../../../src/main/app-frontend/modules/UploaderModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,mBAAmB,EAAC,MAAM,0CAA0C,CAAC;AAC5F,OAAO,EAAC,KAAK,gBAAgB,EAA8C,KAAK,aAAa,EAAe,MAAM,uBAAuB,CAAC;AAE1I,OAAO,EAAC,wBAAwB,EAAE,UAAU,EAAC,MAAM,4CAA4C,CAAC;AAGhG,qBAAa,oBACT,SAAQ,wBAAwB,CAAC,mBAAmB,CAAC;;IAKrD,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,mBAAmB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,gBAAgB,EAAE;cAavK,eAAe,CAAC,WAAW,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAmB/E;AAED,eAAO,MAAM,cAAc,sBAA6B,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { XhrHttpModule, XhrHttpModule_Class } from "@intuitionrobotics/thunderstorm/frontend";
|
|
2
|
+
import { fileUploadedKey, UploadResult } from "../../shared/types.js";
|
|
3
|
+
import { PushPubSubModule } from "@intuitionrobotics/push-pub-sub/frontend";
|
|
4
|
+
import { BaseUploaderModule_Class, FileStatus } from "../../shared/modules/BaseUploaderModule.js";
|
|
5
|
+
import { Second, timeout } from "@intuitionrobotics/ts-common";
|
|
6
|
+
export class UploaderModule_Class extends BaseUploaderModule_Class {
|
|
7
|
+
constructor() {
|
|
8
|
+
super(XhrHttpModule, 'UploaderModule');
|
|
9
|
+
}
|
|
10
|
+
upload(files, onFileStatusChanged, key, _public, _bucketName, _pathPrefix) {
|
|
11
|
+
return this.uploadImpl(files.map((file => {
|
|
12
|
+
return {
|
|
13
|
+
name: file.name,
|
|
14
|
+
mimeType: file.type,
|
|
15
|
+
key,
|
|
16
|
+
file,
|
|
17
|
+
public: _public,
|
|
18
|
+
onFileStatusChanged
|
|
19
|
+
};
|
|
20
|
+
})), _bucketName, _pathPrefix);
|
|
21
|
+
}
|
|
22
|
+
async subscribeToPush(toSubscribe) {
|
|
23
|
+
PushPubSubModule.subscribeMulti(toSubscribe.map(r => {
|
|
24
|
+
const props = { feId: r.tempDoc.feId };
|
|
25
|
+
const callBack = (data) => {
|
|
26
|
+
this.logInfo("Message received from service worker", fileUploadedKey, props, data);
|
|
27
|
+
switch (data.result) {
|
|
28
|
+
case UploadResult.Success:
|
|
29
|
+
this.setFileInfo(props?.feId, "status", FileStatus.Completed);
|
|
30
|
+
break;
|
|
31
|
+
case UploadResult.Failure:
|
|
32
|
+
this.setFileInfo(props?.feId, "status", FileStatus.Error);
|
|
33
|
+
break;
|
|
34
|
+
}
|
|
35
|
+
PushPubSubModule.unsubscribe({ pushKey: fileUploadedKey, props });
|
|
36
|
+
};
|
|
37
|
+
return ({ pushKey: fileUploadedKey, props: props, callBack });
|
|
38
|
+
}));
|
|
39
|
+
await timeout(Second);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
export const UploaderModule = new UploaderModule_Class();
|
|
43
|
+
//# sourceMappingURL=UploaderModule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UploaderModule.js","sourceRoot":"","sources":["../../../src/main/app-frontend/modules/UploaderModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAE,mBAAmB,EAAC,MAAM,0CAA0C,CAAC;AAC5F,OAAO,EAAwB,eAAe,EAAiD,YAAY,EAAC,MAAM,uBAAuB,CAAC;AAC1I,OAAO,EAAC,gBAAgB,EAAC,MAAM,0CAA0C,CAAC;AAC1E,OAAO,EAAC,wBAAwB,EAAE,UAAU,EAAC,MAAM,4CAA4C,CAAC;AAChG,OAAO,EAAC,MAAM,EAAE,OAAO,EAAC,MAAM,8BAA8B,CAAC;AAE7D,MAAM,OAAO,oBACT,SAAQ,wBAA6C;IAErD;QACI,KAAK,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC;IAC3C,CAAC;IACD,MAAM,CAAC,KAAa,EAAE,mBAA+D,EAAE,GAAY,EAAE,OAAiB,EAAE,WAAoB,EAAE,WAAoB;QAC9J,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE;YACrC,OAAO;gBACH,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,QAAQ,EAAE,IAAI,CAAC,IAAI;gBACnB,GAAG;gBACH,IAAI;gBACJ,MAAM,EAAE,OAAO;gBACf,mBAAmB;aACtB,CAAC;QACN,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;IACnC,CAAC;IAES,KAAK,CAAC,eAAe,CAAC,WAA4B;QACxD,gBAAgB,CAAC,cAAc,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YAChD,MAAM,KAAK,GAAG,EAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAC,CAAC;YACrC,MAAM,QAAQ,GAAG,CAAC,IAA0B,EAAE,EAAE;gBAC5C,IAAI,CAAC,OAAO,CAAC,sCAAsC,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;gBACnF,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;oBAClB,KAAK,YAAY,CAAC,OAAO;wBACrB,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;wBAC9D,MAAM;oBACV,KAAK,YAAY,CAAC,OAAO;wBACrB,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;wBAC1D,MAAM;gBACd,CAAC;gBACD,gBAAgB,CAAC,WAAW,CAAC,EAAC,OAAO,EAAE,eAAe,EAAE,KAAK,EAAC,CAAC,CAAC;YACpE,CAAC,CAAC;YACF,OAAO,CAAC,EAAC,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAC,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC,CAAC;QACJ,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;CACJ;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,oBAAoB,EAAE,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export * from "./app-backend/core/module-pack.js";
|
|
2
|
+
export * from "./app-backend/modules/UploaderModule.js";
|
|
3
|
+
export * from "./app-backend/modules/BucketListener.js";
|
|
4
|
+
export * from "./app-backend/modules/UploaderTempFileModule.js";
|
|
5
|
+
export * from "./app-backend/modules/ServerUploaderModule.js";
|
|
6
|
+
//# sourceMappingURL=backend.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../src/main/backend.ts"],"names":[],"mappings":"AACA,cAAc,mCAAmC,CAAC;AAElD,cAAc,yCAAyC,CAAC;AACxD,cAAc,yCAAyC,CAAC;AACxD,cAAc,iDAAiD,CAAC;AAChE,cAAc,+CAA+C,CAAC"}
|
package/dist/backend.js
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export * from "./app-backend/core/module-pack.js";
|
|
2
|
+
export * from "./app-backend/modules/UploaderModule.js";
|
|
3
|
+
export * from "./app-backend/modules/BucketListener.js";
|
|
4
|
+
export * from "./app-backend/modules/UploaderTempFileModule.js";
|
|
5
|
+
export * from "./app-backend/modules/ServerUploaderModule.js";
|
|
6
|
+
//# sourceMappingURL=backend.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backend.js","sourceRoot":"","sources":["../src/main/backend.ts"],"names":[],"mappings":"AACA,cAAc,mCAAmC,CAAC;AAElD,cAAc,yCAAyC,CAAC;AACxD,cAAc,yCAAyC,CAAC;AACxD,cAAc,iDAAiD,CAAC;AAChE,cAAc,+CAA+C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frontend.d.ts","sourceRoot":"","sources":["../src/main/frontend.ts"],"names":[],"mappings":"AAGA,cAAc,oCAAoC,CAAC;AACnD,cAAc,0CAA0C,CAAC"}
|
package/dist/frontend.js
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
// Already lean: module pack + the singleton UploaderModule. UploaderModule
|
|
2
|
+
// reaches PushPubSub via the push-pub-sub barrel, which itself no longer
|
|
3
|
+
// drags the full firebase SDK transitively (see firebase/frontend.ts).
|
|
4
|
+
export * from "./app-frontend/core/module-pack.js";
|
|
5
|
+
export * from "./app-frontend/modules/UploaderModule.js";
|
|
6
|
+
//# sourceMappingURL=frontend.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frontend.js","sourceRoot":"","sources":["../src/main/frontend.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,yEAAyE;AACzE,uEAAuE;AACvE,cAAc,oCAAoC,CAAC;AACnD,cAAc,0CAA0C,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/main/index.ts"],"names":[],"mappings":"AACA,cAAc,mBAAmB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/main/index.ts"],"names":[],"mappings":"AACA,cAAc,mBAAmB,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Module } from "@intuitionrobotics/ts-common";
|
|
2
2
|
import { BaseHttpModule_Class, BaseHttpRequest } from "@intuitionrobotics/thunderstorm";
|
|
3
|
-
import { BaseUploaderFile, DB_Temp_File, Request_Uploader, TempSecureUrl } from "../../shared/types";
|
|
3
|
+
import { type BaseUploaderFile, type DB_Temp_File, type Request_Uploader, type TempSecureUrl } from "../../shared/types.js";
|
|
4
4
|
export declare enum FileStatus {
|
|
5
5
|
ObtainingUrl = "ObtainingUrl",
|
|
6
6
|
UrlObtained = "UrlObtained",
|
|
@@ -46,3 +46,4 @@ export declare abstract class BaseUploaderModule_Class<HttpModule extends BaseHt
|
|
|
46
46
|
private uploadFile;
|
|
47
47
|
}
|
|
48
48
|
export {};
|
|
49
|
+
//# sourceMappingURL=BaseUploaderModule.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseUploaderModule.d.ts","sourceRoot":"","sources":["../../../src/main/shared/modules/BaseUploaderModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAKH,MAAM,EAET,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACH,oBAAoB,EACpB,eAAe,EAIlB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAEH,KAAK,gBAAgB,EAErB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EACrB,MAAM,uBAAuB,CAAC;AAK/B,oBAAY,UAAU;IAClB,YAAY,iBAAiB;IAC7B,WAAW,gBAAgB;IAC3B,aAAa,kBAAkB;IAG/B,cAAc,mBAAmB;IACjC,SAAS,cAAc;IACvB,KAAK,UAAU;CAClB;AAED,MAAM,MAAM,QAAQ,GAAG;IACnB,MAAM,EAAE,UAAU,CAAA;IAClB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,eAAe,CAAC,GAAG,CAAC,CAAA;IAC9B,IAAI,CAAC,EAAE,GAAG,CAAA;IACV,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,YAAY,CAAA;IACtB,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,KAAK,IAAI,CAAA;CAC7D,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,gBAAgB,GAAG;IAE3C,IAAI,EAAE,GAAG,CAAA;IACT,mBAAmB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,KAAK,IAAI,CAAA;CAClE,CAAA;AAED,KAAK,MAAM,GAAG;IACV,wBAAwB,CAAC,EAAE,MAAM,CAAA;CACpC,CAAA;AAED,8BAAsB,wBAAwB,CAAC,UAAU,SAAS,oBAAoB,EAAE,YAAY,SAAS,MAAM,GAAG,EAAE,CACpH,SAAQ,MAAM,CAAC,MAAM,GAAG,YAAY,CAAC;IACrC,SAAS,CAAC,KAAK,EAAE;QAAE,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,CAAA;KAAE,CAAM;IACjD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAyD;IACrF,OAAO,CAAC,UAAU,CAAa;IAE/B,SAAS,aAAa,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM;IAKhE,IAAI;IAKJ,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,WAAW,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAE/E,WAAW,CAAC,CAAC,SAAS,MAAM,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS;IAIlF,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAIjD,SAAS,CAAC,WAAW,CAAC,CAAC,SAAS,MAAM,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;IAQtF,UAAU,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,gBAAgB,EAAE;IAiClG,OAAO,CAAC,cAAc;IAsBtB,OAAO,CAAC,4BAA4B;IAsBpC,OAAO,CAAC,WAAW,CAkBjB;IAEF,OAAO,CAAC,UAAU,CAsBhB;CACL"}
|