@dereekb/firebase-server 12.4.4 → 12.5.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/CHANGELOG.md +13 -0
- package/mailgun/package.json +1 -1
- package/model/package.json +1 -1
- package/model/src/lib/index.d.ts +1 -0
- package/model/src/lib/index.js +1 -0
- package/model/src/lib/index.js.map +1 -1
- package/model/src/lib/notification/notification.action.server.d.ts +2 -2
- package/model/src/lib/notification/notification.action.server.js +142 -93
- package/model/src/lib/notification/notification.action.server.js.map +1 -1
- package/model/src/lib/notification/notification.task.service.d.ts +1 -1
- package/model/src/lib/notification/notification.task.service.handler.d.ts +5 -1
- package/model/src/lib/notification/notification.task.service.handler.js +5 -1
- package/model/src/lib/notification/notification.task.service.handler.js.map +1 -1
- package/model/src/lib/notification/notification.task.service.util.d.ts +9 -0
- package/model/src/lib/notification/notification.task.service.util.js +27 -0
- package/model/src/lib/notification/notification.task.service.util.js.map +1 -0
- package/model/src/lib/storagefile/index.d.ts +7 -0
- package/model/src/lib/storagefile/index.js +11 -0
- package/model/src/lib/storagefile/index.js.map +1 -0
- package/model/src/lib/storagefile/storagefile.action.server.d.ts +41 -0
- package/model/src/lib/storagefile/storagefile.action.server.js +392 -0
- package/model/src/lib/storagefile/storagefile.action.server.js.map +1 -0
- package/model/src/lib/storagefile/storagefile.error.d.ts +11 -0
- package/model/src/lib/storagefile/storagefile.error.js +78 -0
- package/model/src/lib/storagefile/storagefile.error.js.map +1 -0
- package/model/src/lib/storagefile/storagefile.module.d.ts +30 -0
- package/model/src/lib/storagefile/storagefile.module.js +50 -0
- package/model/src/lib/storagefile/storagefile.module.js.map +1 -0
- package/model/src/lib/storagefile/storagefile.task.service.handler.d.ts +163 -0
- package/model/src/lib/storagefile/storagefile.task.service.handler.js +286 -0
- package/model/src/lib/storagefile/storagefile.task.service.handler.js.map +1 -0
- package/model/src/lib/storagefile/storagefile.upload.service.d.ts +57 -0
- package/model/src/lib/storagefile/storagefile.upload.service.initializer.d.ts +105 -0
- package/model/src/lib/storagefile/storagefile.upload.service.initializer.js +143 -0
- package/model/src/lib/storagefile/storagefile.upload.service.initializer.js.map +1 -0
- package/model/src/lib/storagefile/storagefile.upload.service.js +10 -0
- package/model/src/lib/storagefile/storagefile.upload.service.js.map +1 -0
- package/model/src/lib/storagefile/storagefile.util.d.ts +37 -0
- package/model/src/lib/storagefile/storagefile.util.js +54 -0
- package/model/src/lib/storagefile/storagefile.util.js.map +1 -0
- package/package.json +1 -1
- package/src/lib/storage/driver.accessor.d.ts +3 -3
- package/src/lib/storage/driver.accessor.js +111 -18
- package/src/lib/storage/driver.accessor.js.map +1 -1
- package/test/package.json +1 -1
- package/zoho/package.json +1 -1
|
@@ -13,7 +13,7 @@ function notificationTaskService(config) {
|
|
|
13
13
|
handlers[type] = handlerForConfig(handlerConfig);
|
|
14
14
|
});
|
|
15
15
|
function handlerForConfig(handlerConfig) {
|
|
16
|
-
const { flow: inputFlows } = handlerConfig;
|
|
16
|
+
const { flow: inputFlows, allowRunMultipleParts } = handlerConfig;
|
|
17
17
|
const { included: checkpointFlows, excluded: nonCheckpointFlows } = (0, util_1.separateValues)(inputFlows, (x) => x.checkpoint != null);
|
|
18
18
|
if (inputFlows.length === 0) {
|
|
19
19
|
throw new Error('notificationTaskService(): NotificationTaskServiceTaskHandlerConfig must have at least one flow entry.');
|
|
@@ -41,6 +41,10 @@ function notificationTaskService(config) {
|
|
|
41
41
|
let result;
|
|
42
42
|
if (fn) {
|
|
43
43
|
result = await fn(notificationTask);
|
|
44
|
+
// if allowRunMultipleParts is true, and the result doesn't have a canRunNextCheckpoint value, then set it to true.
|
|
45
|
+
if (allowRunMultipleParts && result.canRunNextCheckpoint == null) {
|
|
46
|
+
result.canRunNextCheckpoint = true;
|
|
47
|
+
}
|
|
44
48
|
}
|
|
45
49
|
else {
|
|
46
50
|
result = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notification.task.service.handler.js","sourceRoot":"","sources":["../../../../../../../packages/firebase-server/model/src/lib/notification/notification.task.service.handler.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"notification.task.service.handler.js","sourceRoot":"","sources":["../../../../../../../packages/firebase-server/model/src/lib/notification/notification.task.service.handler.ts"],"names":[],"mappings":";;AA8CA,0DAiEC;AA7GD,wCAA6D;AAyC7D;;GAEG;AACH,SAAgB,uBAAuB,CAAC,MAAqC;IAC3E,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC;IAE3C,MAAM,QAAQ,GAAqE,EAAE,CAAC;IAEtF,aAAa,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,EAAE;QACtC,MAAM,EAAE,IAAI,EAAE,GAAG,aAAa,CAAC;QAC/B,QAAQ,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,aAAa,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,SAAS,gBAAgB,CAAC,aAAiE;QACzF,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,qBAAqB,EAAE,GAAG,aAAa,CAAC;QAClE,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,QAAQ,EAAE,kBAAkB,EAAE,GAAG,IAAA,qBAAc,EAAC,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC;QAE5H,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,wGAAwG,CAAC,CAAC;QAC5H,CAAC;aAAM,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CAAC,sHAAsH,CAAC,CAAC;QAC1I,CAAC;QAED,OAAO;YACL,sBAAsB,EAAE,KAAK,EAAE,gBAAkC,EAAE,EAAE;gBACnE,MAAM,EAAE,WAAW,EAAE,oBAAoB,EAAE,GAAG,gBAAgB,CAAC;gBAC/D,IAAI,EAA0D,CAAC;gBAE/D,QAAQ,oBAAoB,CAAC,MAAM,EAAE,CAAC;oBACpC,KAAK,CAAC;wBACJ,EAAE,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;wBACvD,MAAM;oBACR;wBACE,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC,oBAAoB,CAAC,CAAC;wBAC9D;;2BAEG;wBACH,MAAM,cAAc,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC,UAAoB,CAAC,CAAC,CAAC;wBACzG,EAAE,GAAG,cAAc,EAAE,EAAE,CAAC;wBACxB,MAAM;gBACV,CAAC;gBAED,IAAI,MAA2D,CAAC;gBAEhE,IAAI,EAAE,EAAE,CAAC;oBACP,MAAM,GAAG,MAAM,EAAE,CAAC,gBAAgB,CAAC,CAAC;oBAEpC,mHAAmH;oBACnH,IAAI,qBAAqB,IAAI,MAAM,CAAC,oBAAoB,IAAI,IAAI,EAAE,CAAC;wBAChE,MAAsC,CAAC,oBAAoB,GAAG,IAAI,CAAC;oBACtE,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,MAAM,GAAG;wBACP,UAAU,EAAE,IAAI,CAAC,iEAAiE;qBACnF,CAAC;gBACJ,CAAC;gBAED,OAAO,MAAM,CAAC;YAChB,CAAC;SACF,CAAC;IACJ,CAAC;IAED,OAAO;QACL,2BAA2B,EAAE,CAAC,oBAA0C,EAAE,EAAE;YAC1E,OAAO,QAAQ,CAAC,oBAAoB,CAAC,KAAK,SAAS,CAAC;QACtD,CAAC;QACD,kCAAkC,EAAE,CAAC,oBAA0C,EAAE,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;KACnH,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { NotificationTaskCheckpointString, NotificationTaskServiceHandleNotificationTaskResult } from '@dereekb/firebase';
|
|
2
|
+
/**
|
|
3
|
+
* Removes the completed checkpoints from the inputCompletions array based on the handleTaskResult.
|
|
4
|
+
*
|
|
5
|
+
* @param inputCompletions
|
|
6
|
+
* @param handleTaskResult
|
|
7
|
+
* @returns
|
|
8
|
+
*/
|
|
9
|
+
export declare function removeFromCompletionsArrayWithTaskResult<S extends NotificationTaskCheckpointString = NotificationTaskCheckpointString>(inputCompletions: S[], handleTaskResult: Pick<NotificationTaskServiceHandleNotificationTaskResult<any, S>, 'removeAllCompletedCheckpoints' | 'removeFromCompletedCheckpoints'>): S[];
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.removeFromCompletionsArrayWithTaskResult = removeFromCompletionsArrayWithTaskResult;
|
|
4
|
+
const util_1 = require("@dereekb/util");
|
|
5
|
+
/**
|
|
6
|
+
* Removes the completed checkpoints from the inputCompletions array based on the handleTaskResult.
|
|
7
|
+
*
|
|
8
|
+
* @param inputCompletions
|
|
9
|
+
* @param handleTaskResult
|
|
10
|
+
* @returns
|
|
11
|
+
*/
|
|
12
|
+
function removeFromCompletionsArrayWithTaskResult(inputCompletions, handleTaskResult) {
|
|
13
|
+
const { removeAllCompletedCheckpoints, removeFromCompletedCheckpoints } = handleTaskResult;
|
|
14
|
+
let result;
|
|
15
|
+
if (removeAllCompletedCheckpoints) {
|
|
16
|
+
result = [];
|
|
17
|
+
}
|
|
18
|
+
else if (removeFromCompletedCheckpoints != null) {
|
|
19
|
+
const removeFromCompletionsSet = new Set((0, util_1.asArray)(removeFromCompletedCheckpoints));
|
|
20
|
+
result = inputCompletions.filter((x) => !removeFromCompletionsSet.has(x));
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
result = inputCompletions;
|
|
24
|
+
}
|
|
25
|
+
return result;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=notification.task.service.util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notification.task.service.util.js","sourceRoot":"","sources":["../../../../../../../packages/firebase-server/model/src/lib/notification/notification.task.service.util.ts"],"names":[],"mappings":";;AAUA,4FAeC;AAxBD,wCAAwC;AAExC;;;;;;GAMG;AACH,SAAgB,wCAAwC,CAAgF,gBAAqB,EAAE,gBAAuJ;IACpT,MAAM,EAAE,6BAA6B,EAAE,8BAA8B,EAAE,GAAG,gBAAgB,CAAC;IAE3F,IAAI,MAAW,CAAC;IAEhB,IAAI,6BAA6B,EAAE,CAAC;QAClC,MAAM,GAAG,EAAE,CAAC;IACd,CAAC;SAAM,IAAI,8BAA8B,IAAI,IAAI,EAAE,CAAC;QAClD,MAAM,wBAAwB,GAAG,IAAI,GAAG,CAAC,IAAA,cAAO,EAAC,8BAA8B,CAAC,CAAC,CAAC;QAClF,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5E,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,gBAAgB,CAAC;IAC5B,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export * from './storagefile.action.server';
|
|
2
|
+
export * from './storagefile.error';
|
|
3
|
+
export * from './storagefile.module';
|
|
4
|
+
export * from './storagefile.task.service.handler';
|
|
5
|
+
export * from './storagefile.upload.service';
|
|
6
|
+
export * from './storagefile.upload.service.initializer';
|
|
7
|
+
export * from './storagefile.util';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
tslib_1.__exportStar(require("./storagefile.action.server"), exports);
|
|
5
|
+
tslib_1.__exportStar(require("./storagefile.error"), exports);
|
|
6
|
+
tslib_1.__exportStar(require("./storagefile.module"), exports);
|
|
7
|
+
tslib_1.__exportStar(require("./storagefile.task.service.handler"), exports);
|
|
8
|
+
tslib_1.__exportStar(require("./storagefile.upload.service"), exports);
|
|
9
|
+
tslib_1.__exportStar(require("./storagefile.upload.service.initializer"), exports);
|
|
10
|
+
tslib_1.__exportStar(require("./storagefile.util"), exports);
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../packages/firebase-server/model/src/lib/storagefile/index.ts"],"names":[],"mappings":";;;AAAA,sEAA4C;AAC5C,8DAAoC;AACpC,+DAAqC;AACrC,6EAAmD;AACnD,uEAA6C;AAC7C,mFAAyD;AACzD,6DAAmC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { type FirestoreContextReference, InitializeStorageFileFromUploadParams, AsyncStorageFileCreateAction, StorageFileFirestoreCollections, ProcessStorageFileParams, StorageFileDocument, ProcessStorageFileResult, CreateStorageFileParams, AsyncStorageFileUpdateAction, UpdateStorageFileParams, NotificationFirestoreCollections, FirebaseStorageAccessorFile, InitializeAllStorageFilesFromUploadsResult, InitializeAllStorageFilesFromUploadsParams, ProcessAllQueuedStorageFilesParams, ProcessAllQueuedStorageFilesResult, DeleteAllQueuedStorageFilesParams, DeleteAllQueuedStorageFilesResult, DeleteStorageFileParams, AsyncStorageFileDeleteAction } from '@dereekb/firebase';
|
|
2
|
+
import { FirebaseServerStorageServiceRef, type FirebaseServerActionsContext, type FirebaseServerAuthServiceRef } from '@dereekb/firebase-server';
|
|
3
|
+
import { type TransformAndValidateFunctionResult } from '@dereekb/model';
|
|
4
|
+
import { type InjectionToken } from '@nestjs/common';
|
|
5
|
+
import { NotificationExpediteServiceRef } from '../notification';
|
|
6
|
+
import { StorageFileInitializeFromUploadServiceRef } from './storagefile.upload.service';
|
|
7
|
+
/**
|
|
8
|
+
* Injection token for the BaseStorageFileServerActionsContext
|
|
9
|
+
*/
|
|
10
|
+
export declare const BASE_STORAGE_FILE_SERVER_ACTION_CONTEXT_TOKEN: InjectionToken;
|
|
11
|
+
/**
|
|
12
|
+
* Injection token for the StorageFileServerActionsContext
|
|
13
|
+
*/
|
|
14
|
+
export declare const STORAGE_FILE_SERVER_ACTION_CONTEXT_TOKEN: InjectionToken;
|
|
15
|
+
export interface BaseStorageFileServerActionsContext extends FirebaseServerActionsContext, NotificationFirestoreCollections, NotificationExpediteServiceRef, StorageFileFirestoreCollections, FirebaseServerAuthServiceRef, FirebaseServerStorageServiceRef, FirestoreContextReference {
|
|
16
|
+
}
|
|
17
|
+
export interface StorageFileServerActionsContext extends BaseStorageFileServerActionsContext, StorageFileInitializeFromUploadServiceRef {
|
|
18
|
+
}
|
|
19
|
+
export declare abstract class StorageFileServerActions {
|
|
20
|
+
abstract createStorageFile(params: CreateStorageFileParams): AsyncStorageFileCreateAction<CreateStorageFileParams>;
|
|
21
|
+
abstract initializeAllStorageFilesFromUploads(params: InitializeAllStorageFilesFromUploadsParams): Promise<TransformAndValidateFunctionResult<InitializeAllStorageFilesFromUploadsParams, () => Promise<InitializeAllStorageFilesFromUploadsResult>>>;
|
|
22
|
+
abstract initializeStorageFileFromUpload(params: InitializeStorageFileFromUploadParams): AsyncStorageFileCreateAction<InitializeStorageFileFromUploadParams>;
|
|
23
|
+
abstract updateStorageFile(params: UpdateStorageFileParams): AsyncStorageFileUpdateAction<UpdateStorageFileParams>;
|
|
24
|
+
abstract processAllQueuedStorageFiles(params: ProcessAllQueuedStorageFilesParams): Promise<TransformAndValidateFunctionResult<ProcessAllQueuedStorageFilesParams, () => Promise<ProcessAllQueuedStorageFilesResult>>>;
|
|
25
|
+
abstract processStorageFile(params: ProcessStorageFileParams): Promise<TransformAndValidateFunctionResult<ProcessStorageFileParams, (storageFileDocument: StorageFileDocument) => Promise<ProcessStorageFileResult>>>;
|
|
26
|
+
abstract deleteAllQueuedStorageFiles(params: DeleteAllQueuedStorageFilesParams): Promise<TransformAndValidateFunctionResult<DeleteAllQueuedStorageFilesParams, () => Promise<DeleteAllQueuedStorageFilesResult>>>;
|
|
27
|
+
abstract deleteStorageFile(params: DeleteStorageFileParams): AsyncStorageFileDeleteAction<DeleteStorageFileParams>;
|
|
28
|
+
}
|
|
29
|
+
export declare function storageFileServerActions(context: StorageFileServerActionsContext): StorageFileServerActions;
|
|
30
|
+
export declare function createStorageFileFactory(context: BaseStorageFileServerActionsContext): import("@dereekb/model").TransformAndValidateFunctionResultFunction<CreateStorageFileParams, () => Promise<any>, object, unknown>;
|
|
31
|
+
export declare function initializeAllStorageFilesFromUploadsFactory(context: StorageFileServerActionsContext): import("@dereekb/model").TransformAndValidateFunctionResultFunction<InitializeAllStorageFilesFromUploadsParams, () => Promise<InitializeAllStorageFilesFromUploadsResult>, object, unknown>;
|
|
32
|
+
export interface InitializeStorageFileFromUploadFileInput {
|
|
33
|
+
readonly file: FirebaseStorageAccessorFile;
|
|
34
|
+
}
|
|
35
|
+
export declare function _initializeStorageFileFromUploadFileFactory(context: StorageFileServerActionsContext): (input: InitializeStorageFileFromUploadFileInput) => Promise<StorageFileDocument>;
|
|
36
|
+
export declare function initializeStorageFileFromUploadFactory(context: StorageFileServerActionsContext): import("@dereekb/model").TransformAndValidateFunctionResultFunction<InitializeStorageFileFromUploadParams, () => Promise<StorageFileDocument>, object, unknown>;
|
|
37
|
+
export declare function updateStorageFileFactory(context: BaseStorageFileServerActionsContext): import("@dereekb/model").TransformAndValidateFunctionResultFunction<UpdateStorageFileParams, (storageFileDocument: StorageFileDocument) => Promise<StorageFileDocument>, object, unknown>;
|
|
38
|
+
export declare function processAllQueuedStorageFilesFactory(context: StorageFileServerActionsContext): import("@dereekb/model").TransformAndValidateFunctionResultFunction<ProcessAllQueuedStorageFilesParams, () => Promise<ProcessAllQueuedStorageFilesResult>, object, unknown>;
|
|
39
|
+
export declare function processStorageFileFactory(context: StorageFileServerActionsContext): import("@dereekb/model").TransformAndValidateFunctionResultFunction<ProcessStorageFileParams, (storageFileDocument: StorageFileDocument) => Promise<ProcessStorageFileResult>, object, unknown>;
|
|
40
|
+
export declare function deleteAllQueuedStorageFilesFactory(context: StorageFileServerActionsContext): import("@dereekb/model").TransformAndValidateFunctionResultFunction<DeleteAllQueuedStorageFilesParams, () => Promise<DeleteAllQueuedStorageFilesResult>, object, unknown>;
|
|
41
|
+
export declare function deleteStorageFileFactory(context: StorageFileServerActionsContext): import("@dereekb/model").TransformAndValidateFunctionResultFunction<DeleteStorageFileParams, (inputStorageFileDocument: StorageFileDocument) => Promise<void>, object, unknown>;
|
|
@@ -0,0 +1,392 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StorageFileServerActions = exports.STORAGE_FILE_SERVER_ACTION_CONTEXT_TOKEN = exports.BASE_STORAGE_FILE_SERVER_ACTION_CONTEXT_TOKEN = void 0;
|
|
4
|
+
exports.storageFileServerActions = storageFileServerActions;
|
|
5
|
+
exports.createStorageFileFactory = createStorageFileFactory;
|
|
6
|
+
exports.initializeAllStorageFilesFromUploadsFactory = initializeAllStorageFilesFromUploadsFactory;
|
|
7
|
+
exports._initializeStorageFileFromUploadFileFactory = _initializeStorageFileFromUploadFileFactory;
|
|
8
|
+
exports.initializeStorageFileFromUploadFactory = initializeStorageFileFromUploadFactory;
|
|
9
|
+
exports.updateStorageFileFactory = updateStorageFileFactory;
|
|
10
|
+
exports.processAllQueuedStorageFilesFactory = processAllQueuedStorageFilesFactory;
|
|
11
|
+
exports.processStorageFileFactory = processStorageFileFactory;
|
|
12
|
+
exports.deleteAllQueuedStorageFilesFactory = deleteAllQueuedStorageFilesFactory;
|
|
13
|
+
exports.deleteStorageFileFactory = deleteStorageFileFactory;
|
|
14
|
+
const firebase_1 = require("@dereekb/firebase");
|
|
15
|
+
const firebase_server_1 = require("@dereekb/firebase-server");
|
|
16
|
+
const storagefile_error_1 = require("./storagefile.error");
|
|
17
|
+
const util_1 = require("@dereekb/util");
|
|
18
|
+
/**
|
|
19
|
+
* Injection token for the BaseStorageFileServerActionsContext
|
|
20
|
+
*/
|
|
21
|
+
exports.BASE_STORAGE_FILE_SERVER_ACTION_CONTEXT_TOKEN = 'BASE_STORAGE_FILE_SERVER_ACTION_CONTEXT';
|
|
22
|
+
/**
|
|
23
|
+
* Injection token for the StorageFileServerActionsContext
|
|
24
|
+
*/
|
|
25
|
+
exports.STORAGE_FILE_SERVER_ACTION_CONTEXT_TOKEN = 'STORAGE_FILE_SERVER_ACTION_CONTEXT';
|
|
26
|
+
class StorageFileServerActions {
|
|
27
|
+
}
|
|
28
|
+
exports.StorageFileServerActions = StorageFileServerActions;
|
|
29
|
+
function storageFileServerActions(context) {
|
|
30
|
+
return {
|
|
31
|
+
createStorageFile: createStorageFileFactory(context),
|
|
32
|
+
initializeAllStorageFilesFromUploads: initializeAllStorageFilesFromUploadsFactory(context),
|
|
33
|
+
initializeStorageFileFromUpload: initializeStorageFileFromUploadFactory(context),
|
|
34
|
+
updateStorageFile: updateStorageFileFactory(context),
|
|
35
|
+
processAllQueuedStorageFiles: processAllQueuedStorageFilesFactory(context),
|
|
36
|
+
processStorageFile: processStorageFileFactory(context),
|
|
37
|
+
deleteAllQueuedStorageFiles: deleteAllQueuedStorageFilesFactory(context),
|
|
38
|
+
deleteStorageFile: deleteStorageFileFactory(context)
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
// MARK: Actions
|
|
42
|
+
function createStorageFileFactory(context) {
|
|
43
|
+
const { storageFileCollection, firestoreContext, firebaseServerActionTransformFunctionFactory } = context;
|
|
44
|
+
return firebaseServerActionTransformFunctionFactory(firebase_1.CreateStorageFileParams, async (params) => {
|
|
45
|
+
const {} = params;
|
|
46
|
+
return async () => {
|
|
47
|
+
const storageFileDocument = null;
|
|
48
|
+
// TODO: check the file exists, and pull the metadata, and create the document
|
|
49
|
+
return storageFileDocument;
|
|
50
|
+
};
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
function initializeAllStorageFilesFromUploadsFactory(context) {
|
|
54
|
+
const { storageService, firebaseServerActionTransformFunctionFactory } = context;
|
|
55
|
+
const _initializeStorageFileFromUploadFile = _initializeStorageFileFromUploadFileFactory(context);
|
|
56
|
+
return firebaseServerActionTransformFunctionFactory(firebase_1.InitializeAllStorageFilesFromUploadsParams, async (params) => {
|
|
57
|
+
const { folderPath, maxFilesToInitialize, overrideUploadsFolderPath } = params;
|
|
58
|
+
const fullPath = (0, util_1.mergeSlashPaths)([overrideUploadsFolderPath ?? firebase_1.UPLOADS_FOLDER_PATH, folderPath]); // only targets the uploads folder
|
|
59
|
+
return async () => {
|
|
60
|
+
const folder = storageService.folder(fullPath);
|
|
61
|
+
const modelKeys = [];
|
|
62
|
+
let filesVisited = 0;
|
|
63
|
+
let initializationsSuccessCount = 0;
|
|
64
|
+
let initializationsFailureCount = 0;
|
|
65
|
+
await (0, firebase_1.iterateStorageListFilesByEachFile)({
|
|
66
|
+
folder,
|
|
67
|
+
includeNestedResults: true,
|
|
68
|
+
readItemsFromPageResult: (results) => results.result.files(),
|
|
69
|
+
iterateEachPageItem: async (file) => {
|
|
70
|
+
const fileInstance = file.file();
|
|
71
|
+
const initializeResult = await _initializeStorageFileFromUploadFile({ file: fileInstance }).catch(() => null);
|
|
72
|
+
filesVisited++;
|
|
73
|
+
if (initializeResult) {
|
|
74
|
+
initializationsSuccessCount++;
|
|
75
|
+
modelKeys.push(initializeResult.key);
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
initializationsFailureCount++;
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
/**
|
|
82
|
+
* The maximum number of files to initialize at once.
|
|
83
|
+
*/
|
|
84
|
+
iterateItemsLimit: maxFilesToInitialize ?? 1000,
|
|
85
|
+
/**
|
|
86
|
+
* Iterate four separate pages at a time
|
|
87
|
+
*/
|
|
88
|
+
maxParallelPages: 4
|
|
89
|
+
});
|
|
90
|
+
const result = {
|
|
91
|
+
modelKeys,
|
|
92
|
+
filesVisited,
|
|
93
|
+
initializationsSuccessCount,
|
|
94
|
+
initializationsFailureCount
|
|
95
|
+
};
|
|
96
|
+
return result;
|
|
97
|
+
};
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
function _initializeStorageFileFromUploadFileFactory(context) {
|
|
101
|
+
const { storageFileInitializeFromUploadService } = context;
|
|
102
|
+
return async (input) => {
|
|
103
|
+
const { file } = input;
|
|
104
|
+
const { bucketId, pathString } = file.storagePath;
|
|
105
|
+
// file must exist
|
|
106
|
+
const exists = await file.exists();
|
|
107
|
+
if (!exists) {
|
|
108
|
+
throw (0, storagefile_error_1.uploadedFileDoesNotExistError)();
|
|
109
|
+
}
|
|
110
|
+
// file must be allowed to be initialized
|
|
111
|
+
const isAllowedToBeInitialized = await storageFileInitializeFromUploadService.checkFileIsAllowedToBeInitialized(file);
|
|
112
|
+
if (!isAllowedToBeInitialized) {
|
|
113
|
+
throw (0, storagefile_error_1.uploadedFileIsNotAllowedToBeInitializedError)();
|
|
114
|
+
}
|
|
115
|
+
let storageFileDocument;
|
|
116
|
+
let initializationResult;
|
|
117
|
+
let httpsError;
|
|
118
|
+
try {
|
|
119
|
+
initializationResult = await storageFileInitializeFromUploadService.initializeFromUpload({
|
|
120
|
+
file
|
|
121
|
+
});
|
|
122
|
+
async function deleteFile() {
|
|
123
|
+
try {
|
|
124
|
+
// can now delete the uploaded file
|
|
125
|
+
await file.delete();
|
|
126
|
+
}
|
|
127
|
+
catch (e) {
|
|
128
|
+
// log errors here, but do nothing.
|
|
129
|
+
console.error(`initializeStorageFileFromUpload(): Error deleting uploaded file (${bucketId}/${pathString})`, e);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
switch (initializationResult.resultType) {
|
|
133
|
+
case 'success':
|
|
134
|
+
await deleteFile();
|
|
135
|
+
if (initializationResult.storageFileDocument) {
|
|
136
|
+
storageFileDocument = initializationResult.storageFileDocument;
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
httpsError = (0, storagefile_error_1.uploadedFileInitializationDiscardedError)();
|
|
140
|
+
}
|
|
141
|
+
break;
|
|
142
|
+
case 'initializer_error':
|
|
143
|
+
if (initializationResult.initializationError) {
|
|
144
|
+
throw initializationResult.initializationError; // re-throw the encountered error
|
|
145
|
+
}
|
|
146
|
+
break;
|
|
147
|
+
case 'permanent_initializer_failure':
|
|
148
|
+
// log the error
|
|
149
|
+
if (initializationResult.initializationError) {
|
|
150
|
+
console.warn(`initializeStorageFileFromUpload(): Permanent initializer failure for file (${bucketId}/${pathString})`, initializationResult.initializationError);
|
|
151
|
+
}
|
|
152
|
+
// delete the file
|
|
153
|
+
await deleteFile();
|
|
154
|
+
// return the error
|
|
155
|
+
httpsError = (0, storagefile_error_1.uploadedFileInitializationFailedError)({
|
|
156
|
+
resultType: initializationResult.resultType,
|
|
157
|
+
fileDeleted: true
|
|
158
|
+
});
|
|
159
|
+
break;
|
|
160
|
+
case 'no_determiner_match':
|
|
161
|
+
case 'no_initializer_configured':
|
|
162
|
+
default:
|
|
163
|
+
httpsError = (0, storagefile_error_1.uploadedFileInitializationFailedError)({
|
|
164
|
+
resultType: initializationResult.resultType
|
|
165
|
+
});
|
|
166
|
+
console.error(`initializeStorageFileFromUpload(): Unknown file type (${initializationResult.resultType}) encountered for storage file "${bucketId}/${pathString}".`);
|
|
167
|
+
break;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
catch (e) {
|
|
171
|
+
console.error(`initializeStorageFileFromUpload(): Error while initializing storage file (${bucketId}/${pathString}) from upload`, e);
|
|
172
|
+
httpsError = (0, storagefile_error_1.uploadedFileInitializationFailedError)({ resultType: 'initializer_error' });
|
|
173
|
+
}
|
|
174
|
+
if (httpsError) {
|
|
175
|
+
throw httpsError;
|
|
176
|
+
}
|
|
177
|
+
else if (!storageFileDocument) {
|
|
178
|
+
throw (0, storagefile_error_1.uploadedFileInitializationDiscardedError)(); // throw again for redundancy
|
|
179
|
+
}
|
|
180
|
+
return storageFileDocument;
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
function initializeStorageFileFromUploadFactory(context) {
|
|
184
|
+
const { storageService, firebaseServerActionTransformFunctionFactory } = context;
|
|
185
|
+
const _initializeStorageFileFromUploadFile = _initializeStorageFileFromUploadFileFactory(context);
|
|
186
|
+
return firebaseServerActionTransformFunctionFactory(firebase_1.InitializeStorageFileFromUploadParams, async (params) => {
|
|
187
|
+
const { bucketId, pathString } = params;
|
|
188
|
+
return async () => {
|
|
189
|
+
const file = storageService.file(bucketId == null ? pathString : { bucketId, pathString });
|
|
190
|
+
return _initializeStorageFileFromUploadFile({ file });
|
|
191
|
+
};
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
function updateStorageFileFactory(context) {
|
|
195
|
+
const { storageFileCollection, firestoreContext, firebaseServerActionTransformFunctionFactory } = context;
|
|
196
|
+
return firebaseServerActionTransformFunctionFactory(firebase_1.UpdateStorageFileParams, async (params) => {
|
|
197
|
+
const { sdat } = params;
|
|
198
|
+
return async (storageFileDocument) => {
|
|
199
|
+
const updateTemplate = {
|
|
200
|
+
sdat
|
|
201
|
+
};
|
|
202
|
+
await storageFileDocument.update(updateTemplate);
|
|
203
|
+
return storageFileDocument;
|
|
204
|
+
};
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
function processAllQueuedStorageFilesFactory(context) {
|
|
208
|
+
const { storageFileCollection, firebaseServerActionTransformFunctionFactory } = context;
|
|
209
|
+
const processStorageFile = processStorageFileFactory(context);
|
|
210
|
+
return firebaseServerActionTransformFunctionFactory(firebase_1.ProcessAllQueuedStorageFilesParams, async (params) => {
|
|
211
|
+
return async () => {
|
|
212
|
+
let storageFilesVisited = 0;
|
|
213
|
+
let storageFilesProcessStarted = 0;
|
|
214
|
+
let storageFilesFailedStarting = 0;
|
|
215
|
+
await (0, firebase_1.iterateFirestoreDocumentSnapshotPairs)({
|
|
216
|
+
documentAccessor: storageFileCollection.documentAccessor(),
|
|
217
|
+
iterateSnapshotPair: async (snapshotPair) => {
|
|
218
|
+
storageFilesVisited++;
|
|
219
|
+
const processStorageFileResult = await processStorageFile(snapshotPair.document).catch(() => null);
|
|
220
|
+
if (processStorageFileResult) {
|
|
221
|
+
storageFilesProcessStarted++;
|
|
222
|
+
}
|
|
223
|
+
else {
|
|
224
|
+
storageFilesFailedStarting++;
|
|
225
|
+
}
|
|
226
|
+
},
|
|
227
|
+
constraintsFactory: () => (0, firebase_1.storageFilesQueuedForProcessingQuery)(),
|
|
228
|
+
queryFactory: storageFileCollection,
|
|
229
|
+
batchSize: undefined,
|
|
230
|
+
performTasksConfig: {
|
|
231
|
+
maxParallelTasks: 10
|
|
232
|
+
}
|
|
233
|
+
});
|
|
234
|
+
const result = {
|
|
235
|
+
storageFilesVisited,
|
|
236
|
+
storageFilesProcessStarted,
|
|
237
|
+
storageFilesFailedStarting
|
|
238
|
+
};
|
|
239
|
+
return result;
|
|
240
|
+
};
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
function processStorageFileFactory(context) {
|
|
244
|
+
const { storageFileCollection, notificationCollectionGroup, firestoreContext, notificationExpediteService, firebaseServerActionTransformFunctionFactory } = context;
|
|
245
|
+
return firebaseServerActionTransformFunctionFactory(firebase_1.ProcessStorageFileParams, async (params) => {
|
|
246
|
+
const { runImmediately, checkRetryProcessing, forceRestartProcessing } = params;
|
|
247
|
+
return async (storageFileDocument) => {
|
|
248
|
+
const result = {};
|
|
249
|
+
const expediteInstance = notificationExpediteService.expediteInstance();
|
|
250
|
+
await firestoreContext.runTransaction(async (transaction) => {
|
|
251
|
+
expediteInstance.initialize();
|
|
252
|
+
const storageFileDocumentInTransaction = await storageFileCollection.documentAccessorForTransaction(transaction).loadDocumentFrom(storageFileDocument);
|
|
253
|
+
const storageFile = await (0, firebase_server_1.assertSnapshotData)(storageFileDocumentInTransaction);
|
|
254
|
+
async function beginProcessing(overrideExistingTask) {
|
|
255
|
+
const state = storageFile.fs;
|
|
256
|
+
// check the storageFile is in the OK state
|
|
257
|
+
if (state !== firebase_1.StorageFileState.OK) {
|
|
258
|
+
throw (0, storagefile_error_1.storageFileProcessingNotAllowedForInvalidStateError)();
|
|
259
|
+
}
|
|
260
|
+
const createNotificationTaskResult = await (0, firebase_1.createNotificationDocument)({
|
|
261
|
+
context,
|
|
262
|
+
transaction,
|
|
263
|
+
template: (0, firebase_1.storageFileProcessingNotificationTaskTemplate)({
|
|
264
|
+
storageFileDocument,
|
|
265
|
+
overrideExistingTask
|
|
266
|
+
})
|
|
267
|
+
});
|
|
268
|
+
await storageFileDocumentInTransaction.update({
|
|
269
|
+
ps: firebase_1.StorageFileProcessingState.PROCESSING,
|
|
270
|
+
pat: new Date(), // set new processing start date
|
|
271
|
+
pcat: null, // clear processing completion date
|
|
272
|
+
pn: createNotificationTaskResult.notificationDocument.key
|
|
273
|
+
});
|
|
274
|
+
expediteInstance.enqueueCreateResult(createNotificationTaskResult);
|
|
275
|
+
}
|
|
276
|
+
switch (storageFile.ps) {
|
|
277
|
+
case firebase_1.StorageFileProcessingState.INIT_OR_NONE:
|
|
278
|
+
// queue up for processing, unless it has no purpose
|
|
279
|
+
if (!storageFile.p) {
|
|
280
|
+
throw (0, storagefile_error_1.storageFileProcessingNotAvailableForTypeError)();
|
|
281
|
+
}
|
|
282
|
+
else {
|
|
283
|
+
await beginProcessing(false);
|
|
284
|
+
}
|
|
285
|
+
break;
|
|
286
|
+
case firebase_1.StorageFileProcessingState.QUEUED_FOR_PROCESSING:
|
|
287
|
+
// begin processing
|
|
288
|
+
await beginProcessing(false);
|
|
289
|
+
break;
|
|
290
|
+
case firebase_1.StorageFileProcessingState.PROCESSING:
|
|
291
|
+
// check if the processing task is still running
|
|
292
|
+
const shouldCheckProcessing = !(0, util_1.isThrottled)(firebase_1.STORAGE_FILE_PROCESSING_STUCK_THROTTLE_CHECK_MS, storageFile.pat);
|
|
293
|
+
if (!storageFile.pn) {
|
|
294
|
+
await beginProcessing(true); // if no processing task is set, restart processing to recover from the broken state
|
|
295
|
+
}
|
|
296
|
+
else if (checkRetryProcessing || shouldCheckProcessing) {
|
|
297
|
+
const { pn } = storageFile;
|
|
298
|
+
const notificationDocument = notificationCollectionGroup.documentAccessorForTransaction(transaction).loadDocumentForKey(pn);
|
|
299
|
+
const notification = await notificationDocument.snapshotData();
|
|
300
|
+
if (!notification) {
|
|
301
|
+
// the notification document is missing. Re-begin processing
|
|
302
|
+
await beginProcessing(true);
|
|
303
|
+
}
|
|
304
|
+
else if (notification.d || forceRestartProcessing) {
|
|
305
|
+
// if the notification is somehow in the done state but the StorageFile never got notified in the same transaction, requeue.
|
|
306
|
+
await beginProcessing(true);
|
|
307
|
+
}
|
|
308
|
+
// NOTE: We could look at the state of the notification task more, but at this point the task is probably still valid and still running,
|
|
309
|
+
// so we can only wait on it. In general if the task still exists and is not yet done, then we should wait on it as the
|
|
310
|
+
// task running system should complete eventually by design.
|
|
311
|
+
}
|
|
312
|
+
break;
|
|
313
|
+
case firebase_1.StorageFileProcessingState.DO_NOT_PROCESS:
|
|
314
|
+
throw (0, storagefile_error_1.storageFileProcessingNotQueuedForProcessingError)();
|
|
315
|
+
case firebase_1.StorageFileProcessingState.SUCCESS:
|
|
316
|
+
throw (0, storagefile_error_1.storageFileAlreadySuccessfullyProcessedError)();
|
|
317
|
+
}
|
|
318
|
+
});
|
|
319
|
+
// expedite the task if requested
|
|
320
|
+
if (runImmediately) {
|
|
321
|
+
await expediteInstance.send();
|
|
322
|
+
}
|
|
323
|
+
return result;
|
|
324
|
+
};
|
|
325
|
+
});
|
|
326
|
+
}
|
|
327
|
+
function deleteAllQueuedStorageFilesFactory(context) {
|
|
328
|
+
const { storageFileCollection, firebaseServerActionTransformFunctionFactory } = context;
|
|
329
|
+
const deleteStorageFile = deleteStorageFileFactory(context);
|
|
330
|
+
return firebaseServerActionTransformFunctionFactory(firebase_1.DeleteAllQueuedStorageFilesParams, async (params) => {
|
|
331
|
+
return async () => {
|
|
332
|
+
let storageFilesVisited = 0;
|
|
333
|
+
let storageFilesDeleted = 0;
|
|
334
|
+
let storageFilesFailedDeleting = 0;
|
|
335
|
+
const deleteStorageFileInstance = await deleteStorageFile({
|
|
336
|
+
key: (0, firebase_1.firestoreDummyKey)()
|
|
337
|
+
});
|
|
338
|
+
await (0, firebase_1.iterateFirestoreDocumentSnapshotPairs)({
|
|
339
|
+
documentAccessor: storageFileCollection.documentAccessor(),
|
|
340
|
+
iterateSnapshotPair: async (snapshotPair) => {
|
|
341
|
+
const { document: storageFileDocument } = snapshotPair;
|
|
342
|
+
storageFilesVisited++;
|
|
343
|
+
const deleteStorageFileResult = await deleteStorageFileInstance(storageFileDocument)
|
|
344
|
+
.then(() => true)
|
|
345
|
+
.catch(() => false);
|
|
346
|
+
if (deleteStorageFileResult) {
|
|
347
|
+
storageFilesDeleted++;
|
|
348
|
+
}
|
|
349
|
+
else {
|
|
350
|
+
storageFilesFailedDeleting++;
|
|
351
|
+
}
|
|
352
|
+
},
|
|
353
|
+
constraintsFactory: () => (0, firebase_1.storageFilesQueuedForDeleteQuery)(),
|
|
354
|
+
queryFactory: storageFileCollection,
|
|
355
|
+
batchSize: undefined,
|
|
356
|
+
performTasksConfig: {
|
|
357
|
+
maxParallelTasks: 10
|
|
358
|
+
}
|
|
359
|
+
});
|
|
360
|
+
const result = {
|
|
361
|
+
storageFilesDeleted,
|
|
362
|
+
storageFilesFailedDeleting,
|
|
363
|
+
storageFilesVisited
|
|
364
|
+
};
|
|
365
|
+
return result;
|
|
366
|
+
};
|
|
367
|
+
});
|
|
368
|
+
}
|
|
369
|
+
function deleteStorageFileFactory(context) {
|
|
370
|
+
const { storageService, storageFileCollection, firebaseServerActionTransformFunctionFactory } = context;
|
|
371
|
+
return firebaseServerActionTransformFunctionFactory(firebase_1.DeleteStorageFileParams, async (params) => {
|
|
372
|
+
const { force } = params;
|
|
373
|
+
return async (inputStorageFileDocument) => {
|
|
374
|
+
const storageFileDocument = await storageFileCollection.documentAccessor().loadDocumentFrom(inputStorageFileDocument);
|
|
375
|
+
const storageFile = await (0, firebase_server_1.assertSnapshotData)(storageFileDocument);
|
|
376
|
+
const fileAccessor = storageService.file(storageFile);
|
|
377
|
+
if (!force) {
|
|
378
|
+
if (!storageFile.sdat) {
|
|
379
|
+
throw (0, storagefile_error_1.storageFileNotFlaggedForDeletionError)();
|
|
380
|
+
}
|
|
381
|
+
else if (!(0, util_1.isPast)(storageFile.sdat)) {
|
|
382
|
+
throw (0, storagefile_error_1.storageFileCannotBeDeletedYetError)();
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
// delete the file
|
|
386
|
+
await fileAccessor.delete().catch(() => null);
|
|
387
|
+
// delete the document
|
|
388
|
+
await storageFileDocument.accessor.delete();
|
|
389
|
+
};
|
|
390
|
+
});
|
|
391
|
+
}
|
|
392
|
+
//# sourceMappingURL=storagefile.action.server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storagefile.action.server.js","sourceRoot":"","sources":["../../../../../../../packages/firebase-server/model/src/lib/storagefile/storagefile.action.server.ts"],"names":[],"mappings":";;;AAoEA,4DAWC;AAGD,4DAcC;AAED,kGAsDC;AAMD,kGA8FC;AAED,wFAYC;AAED,4DAgBC;AAED,kFAwCC;AAED,8DAgGC;AAED,gFA+CC;AAED,4DA0BC;AArfD,gDAkC2B;AAC3B,8DAAqK;AAKrK,2DAAkd;AACld,wCAA4E;AAG5E;;GAEG;AACU,QAAA,6CAA6C,GAAmB,yCAAyC,CAAC;AAEvH;;GAEG;AACU,QAAA,wCAAwC,GAAmB,oCAAoC,CAAC;AAK7G,MAAsB,wBAAwB;CAS7C;AATD,4DASC;AAED,SAAgB,wBAAwB,CAAC,OAAwC;IAC/E,OAAO;QACL,iBAAiB,EAAE,wBAAwB,CAAC,OAAO,CAAC;QACpD,oCAAoC,EAAE,2CAA2C,CAAC,OAAO,CAAC;QAC1F,+BAA+B,EAAE,sCAAsC,CAAC,OAAO,CAAC;QAChF,iBAAiB,EAAE,wBAAwB,CAAC,OAAO,CAAC;QACpD,4BAA4B,EAAE,mCAAmC,CAAC,OAAO,CAAC;QAC1E,kBAAkB,EAAE,yBAAyB,CAAC,OAAO,CAAC;QACtD,2BAA2B,EAAE,kCAAkC,CAAC,OAAO,CAAC;QACxE,iBAAiB,EAAE,wBAAwB,CAAC,OAAO,CAAC;KACrD,CAAC;AACJ,CAAC;AAED,gBAAgB;AAChB,SAAgB,wBAAwB,CAAC,OAA4C;IACnF,MAAM,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,4CAA4C,EAAE,GAAG,OAAO,CAAC;IAE1G,OAAO,4CAA4C,CAAC,kCAAuB,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAC5F,MAAM,EAAE,GAAG,MAAM,CAAC;QAElB,OAAO,KAAK,IAAI,EAAE;YAChB,MAAM,mBAAmB,GAAG,IAAW,CAAC;YAExC,8EAA8E;YAE9E,OAAO,mBAAmB,CAAC;QAC7B,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,2CAA2C,CAAC,OAAwC;IAClG,MAAM,EAAE,cAAc,EAAE,4CAA4C,EAAE,GAAG,OAAO,CAAC;IACjF,MAAM,oCAAoC,GAAG,2CAA2C,CAAC,OAAO,CAAC,CAAC;IAElG,OAAO,4CAA4C,CAAC,qDAA0C,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAC/G,MAAM,EAAE,UAAU,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,GAAG,MAAM,CAAC;QAC/E,MAAM,QAAQ,GAAG,IAAA,sBAAe,EAAC,CAAC,yBAAyB,IAAI,8BAAmB,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,kCAAkC;QAEpI,OAAO,KAAK,IAAI,EAAE;YAChB,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAE/C,MAAM,SAAS,GAAqB,EAAE,CAAC;YAEvC,IAAI,YAAY,GAAG,CAAC,CAAC;YACrB,IAAI,2BAA2B,GAAG,CAAC,CAAC;YACpC,IAAI,2BAA2B,GAAG,CAAC,CAAC;YAEpC,MAAM,IAAA,4CAAiC,EAAC;gBACtC,MAAM;gBACN,oBAAoB,EAAE,IAAI;gBAC1B,uBAAuB,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE;gBAC5D,mBAAmB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;oBAClC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;oBACjC,MAAM,gBAAgB,GAAG,MAAM,oCAAoC,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;oBAE9G,YAAY,EAAE,CAAC;oBAEf,IAAI,gBAAgB,EAAE,CAAC;wBACrB,2BAA2B,EAAE,CAAC;wBAC9B,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;oBACvC,CAAC;yBAAM,CAAC;wBACN,2BAA2B,EAAE,CAAC;oBAChC,CAAC;gBACH,CAAC;gBACD;;mBAEG;gBACH,iBAAiB,EAAE,oBAAoB,IAAI,IAAI;gBAC/C;;mBAEG;gBACH,gBAAgB,EAAE,CAAC;aACpB,CAAC,CAAC;YAEH,MAAM,MAAM,GAA+C;gBACzD,SAAS;gBACT,YAAY;gBACZ,2BAA2B;gBAC3B,2BAA2B;aAC5B,CAAC;YAEF,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAMD,SAAgB,2CAA2C,CAAC,OAAwC;IAClG,MAAM,EAAE,sCAAsC,EAAE,GAAG,OAAO,CAAC;IAE3D,OAAO,KAAK,EAAE,KAA+C,EAAE,EAAE;QAC/D,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;QACvB,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC;QAElD,kBAAkB;QAClB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QAEnC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAA,iDAA6B,GAAE,CAAC;QACxC,CAAC;QAED,yCAAyC;QACzC,MAAM,wBAAwB,GAAG,MAAM,sCAAsC,CAAC,iCAAiC,CAAC,IAAI,CAAC,CAAC;QAEtH,IAAI,CAAC,wBAAwB,EAAE,CAAC;YAC9B,MAAM,IAAA,gEAA4C,GAAE,CAAC;QACvD,CAAC;QAED,IAAI,mBAAoD,CAAC;QACzD,IAAI,oBAA2D,CAAC;QAEhE,IAAI,UAA6B,CAAC;QAElC,IAAI,CAAC;YACH,oBAAoB,GAAG,MAAM,sCAAsC,CAAC,oBAAoB,CAAC;gBACvF,IAAI;aACL,CAAC,CAAC;YAEH,KAAK,UAAU,UAAU;gBACvB,IAAI,CAAC;oBACH,mCAAmC;oBACnC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;gBACtB,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,mCAAmC;oBACnC,OAAO,CAAC,KAAK,CAAC,oEAAoE,QAAQ,IAAI,UAAU,GAAG,EAAE,CAAC,CAAC,CAAC;gBAClH,CAAC;YACH,CAAC;YAED,QAAQ,oBAAoB,CAAC,UAAU,EAAE,CAAC;gBACxC,KAAK,SAAS;oBACZ,MAAM,UAAU,EAAE,CAAC;oBAEnB,IAAI,oBAAoB,CAAC,mBAAmB,EAAE,CAAC;wBAC7C,mBAAmB,GAAG,oBAAoB,CAAC,mBAAmB,CAAC;oBACjE,CAAC;yBAAM,CAAC;wBACN,UAAU,GAAG,IAAA,4DAAwC,GAAE,CAAC;oBAC1D,CAAC;oBACD,MAAM;gBACR,KAAK,mBAAmB;oBACtB,IAAI,oBAAoB,CAAC,mBAAmB,EAAE,CAAC;wBAC7C,MAAM,oBAAoB,CAAC,mBAAmB,CAAC,CAAC,iCAAiC;oBACnF,CAAC;oBACD,MAAM;gBACR,KAAK,+BAA+B;oBAClC,gBAAgB;oBAChB,IAAI,oBAAoB,CAAC,mBAAmB,EAAE,CAAC;wBAC7C,OAAO,CAAC,IAAI,CAAC,8EAA8E,QAAQ,IAAI,UAAU,GAAG,EAAE,oBAAoB,CAAC,mBAAmB,CAAC,CAAC;oBAClK,CAAC;oBAED,kBAAkB;oBAClB,MAAM,UAAU,EAAE,CAAC;oBAEnB,mBAAmB;oBACnB,UAAU,GAAG,IAAA,yDAAqC,EAAC;wBACjD,UAAU,EAAE,oBAAoB,CAAC,UAAU;wBAC3C,WAAW,EAAE,IAAI;qBAClB,CAAC,CAAC;oBACH,MAAM;gBACR,KAAK,qBAAqB,CAAC;gBAC3B,KAAK,2BAA2B,CAAC;gBACjC;oBACE,UAAU,GAAG,IAAA,yDAAqC,EAAC;wBACjD,UAAU,EAAE,oBAAoB,CAAC,UAAU;qBAC5C,CAAC,CAAC;oBAEH,OAAO,CAAC,KAAK,CAAC,yDAAyD,oBAAoB,CAAC,UAAU,mCAAmC,QAAQ,IAAI,UAAU,IAAI,CAAC,CAAC;oBACrK,MAAM;YACV,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,6EAA6E,QAAQ,IAAI,UAAU,eAAe,EAAE,CAAC,CAAC,CAAC;YACrI,UAAU,GAAG,IAAA,yDAAqC,EAAC,EAAE,UAAU,EAAE,mBAAmB,EAAE,CAAC,CAAC;QAC1F,CAAC;QAED,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,UAAU,CAAC;QACnB,CAAC;aAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAChC,MAAM,IAAA,4DAAwC,GAAE,CAAC,CAAC,6BAA6B;QACjF,CAAC;QAED,OAAO,mBAAmB,CAAC;IAC7B,CAAC,CAAC;AACJ,CAAC;AAED,SAAgB,sCAAsC,CAAC,OAAwC;IAC7F,MAAM,EAAE,cAAc,EAAE,4CAA4C,EAAE,GAAG,OAAO,CAAC;IACjF,MAAM,oCAAoC,GAAG,2CAA2C,CAAC,OAAO,CAAC,CAAC;IAElG,OAAO,4CAA4C,CAAC,gDAAqC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAC1G,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;QAExC,OAAO,KAAK,IAAI,EAAE;YAChB,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC;YAC3F,OAAO,oCAAoC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QACxD,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,wBAAwB,CAAC,OAA4C;IACnF,MAAM,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,4CAA4C,EAAE,GAAG,OAAO,CAAC;IAE1G,OAAO,4CAA4C,CAAC,kCAAuB,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAC5F,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;QAExB,OAAO,KAAK,EAAE,mBAAwC,EAAE,EAAE;YACxD,MAAM,cAAc,GAAyB;gBAC3C,IAAI;aACL,CAAC;YAEF,MAAM,mBAAmB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YAEjD,OAAO,mBAAmB,CAAC;QAC7B,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,mCAAmC,CAAC,OAAwC;IAC1F,MAAM,EAAE,qBAAqB,EAAE,4CAA4C,EAAE,GAAG,OAAO,CAAC;IACxF,MAAM,kBAAkB,GAAG,yBAAyB,CAAC,OAAO,CAAC,CAAC;IAE9D,OAAO,4CAA4C,CAAC,6CAAkC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QACvG,OAAO,KAAK,IAAI,EAAE;YAChB,IAAI,mBAAmB,GAAG,CAAC,CAAC;YAC5B,IAAI,0BAA0B,GAAG,CAAC,CAAC;YACnC,IAAI,0BAA0B,GAAG,CAAC,CAAC;YAEnC,MAAM,IAAA,gDAAqC,EAAC;gBAC1C,gBAAgB,EAAE,qBAAqB,CAAC,gBAAgB,EAAE;gBAC1D,mBAAmB,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE;oBAC1C,mBAAmB,EAAE,CAAC;oBAEtB,MAAM,wBAAwB,GAAG,MAAM,kBAAkB,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;oBAEnG,IAAI,wBAAwB,EAAE,CAAC;wBAC7B,0BAA0B,EAAE,CAAC;oBAC/B,CAAC;yBAAM,CAAC;wBACN,0BAA0B,EAAE,CAAC;oBAC/B,CAAC;gBACH,CAAC;gBACD,kBAAkB,EAAE,GAAG,EAAE,CAAC,IAAA,+CAAoC,GAAE;gBAChE,YAAY,EAAE,qBAAqB;gBACnC,SAAS,EAAE,SAAS;gBACpB,kBAAkB,EAAE;oBAClB,gBAAgB,EAAE,EAAE;iBACrB;aACF,CAAC,CAAC;YAEH,MAAM,MAAM,GAAuC;gBACjD,mBAAmB;gBACnB,0BAA0B;gBAC1B,0BAA0B;aAC3B,CAAC;YAEF,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,yBAAyB,CAAC,OAAwC;IAChF,MAAM,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,gBAAgB,EAAE,2BAA2B,EAAE,4CAA4C,EAAE,GAAG,OAAO,CAAC;IAEpK,OAAO,4CAA4C,CAAC,mCAAwB,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAC7F,MAAM,EAAE,cAAc,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,GAAG,MAAM,CAAC;QAEhF,OAAO,KAAK,EAAE,mBAAwC,EAAE,EAAE;YACxD,MAAM,MAAM,GAA6B,EAAE,CAAC;YAE5C,MAAM,gBAAgB,GAAG,2BAA2B,CAAC,gBAAgB,EAAE,CAAC;YAExE,MAAM,gBAAgB,CAAC,cAAc,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE;gBAC1D,gBAAgB,CAAC,UAAU,EAAE,CAAC;gBAE9B,MAAM,gCAAgC,GAAG,MAAM,qBAAqB,CAAC,8BAA8B,CAAC,WAAW,CAAC,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;gBACvJ,MAAM,WAAW,GAAG,MAAM,IAAA,oCAAkB,EAAC,gCAAgC,CAAC,CAAC;gBAE/E,KAAK,UAAU,eAAe,CAAC,oBAA6B;oBAC1D,MAAM,KAAK,GAAG,WAAW,CAAC,EAAE,CAAC;oBAE7B,2CAA2C;oBAC3C,IAAI,KAAK,KAAK,2BAAgB,CAAC,EAAE,EAAE,CAAC;wBAClC,MAAM,IAAA,uEAAmD,GAAE,CAAC;oBAC9D,CAAC;oBAED,MAAM,4BAA4B,GAAG,MAAM,IAAA,qCAA0B,EAAC;wBACpE,OAAO;wBACP,WAAW;wBACX,QAAQ,EAAE,IAAA,wDAA6C,EAAC;4BACtD,mBAAmB;4BACnB,oBAAoB;yBACrB,CAAC;qBACH,CAAC,CAAC;oBAEH,MAAM,gCAAgC,CAAC,MAAM,CAAC;wBAC5C,EAAE,EAAE,qCAA0B,CAAC,UAAU;wBACzC,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,gCAAgC;wBACjD,IAAI,EAAE,IAAI,EAAE,mCAAmC;wBAC/C,EAAE,EAAE,4BAA4B,CAAC,oBAAoB,CAAC,GAAG;qBAC1D,CAAC,CAAC;oBAEH,gBAAgB,CAAC,mBAAmB,CAAC,4BAA4B,CAAC,CAAC;gBACrE,CAAC;gBAED,QAAQ,WAAW,CAAC,EAAE,EAAE,CAAC;oBACvB,KAAK,qCAA0B,CAAC,YAAY;wBAC1C,oDAAoD;wBACpD,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;4BACnB,MAAM,IAAA,iEAA6C,GAAE,CAAC;wBACxD,CAAC;6BAAM,CAAC;4BACN,MAAM,eAAe,CAAC,KAAK,CAAC,CAAC;wBAC/B,CAAC;wBACD,MAAM;oBACR,KAAK,qCAA0B,CAAC,qBAAqB;wBACnD,mBAAmB;wBACnB,MAAM,eAAe,CAAC,KAAK,CAAC,CAAC;wBAC7B,MAAM;oBACR,KAAK,qCAA0B,CAAC,UAAU;wBACxC,gDAAgD;wBAChD,MAAM,qBAAqB,GAAG,CAAC,IAAA,kBAAW,EAAC,0DAA+C,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;wBAE7G,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC;4BACpB,MAAM,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,oFAAoF;wBACnH,CAAC;6BAAM,IAAI,oBAAoB,IAAI,qBAAqB,EAAE,CAAC;4BACzD,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,CAAC;4BAC3B,MAAM,oBAAoB,GAAG,2BAA2B,CAAC,8BAA8B,CAAC,WAAW,CAAC,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;4BAC5H,MAAM,YAAY,GAAG,MAAM,oBAAoB,CAAC,YAAY,EAAE,CAAC;4BAE/D,IAAI,CAAC,YAAY,EAAE,CAAC;gCAClB,4DAA4D;gCAC5D,MAAM,eAAe,CAAC,IAAI,CAAC,CAAC;4BAC9B,CAAC;iCAAM,IAAI,YAAY,CAAC,CAAC,IAAI,sBAAsB,EAAE,CAAC;gCACpD,4HAA4H;gCAC5H,MAAM,eAAe,CAAC,IAAI,CAAC,CAAC;4BAC9B,CAAC;4BAED,wIAAwI;4BACxI,uHAAuH;4BACvH,4DAA4D;wBAC9D,CAAC;wBACD,MAAM;oBACR,KAAK,qCAA0B,CAAC,cAAc;wBAC5C,MAAM,IAAA,oEAAgD,GAAE,CAAC;oBAC3D,KAAK,qCAA0B,CAAC,OAAO;wBACrC,MAAM,IAAA,gEAA4C,GAAE,CAAC;gBACzD,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,iCAAiC;YACjC,IAAI,cAAc,EAAE,CAAC;gBACnB,MAAM,gBAAgB,CAAC,IAAI,EAAE,CAAC;YAChC,CAAC;YAED,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,kCAAkC,CAAC,OAAwC;IACzF,MAAM,EAAE,qBAAqB,EAAE,4CAA4C,EAAE,GAAG,OAAO,CAAC;IACxF,MAAM,iBAAiB,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAE5D,OAAO,4CAA4C,CAAC,4CAAiC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QACtG,OAAO,KAAK,IAAI,EAAE;YAChB,IAAI,mBAAmB,GAAG,CAAC,CAAC;YAC5B,IAAI,mBAAmB,GAAG,CAAC,CAAC;YAC5B,IAAI,0BAA0B,GAAG,CAAC,CAAC;YAEnC,MAAM,yBAAyB,GAAG,MAAM,iBAAiB,CAAC;gBACxD,GAAG,EAAE,IAAA,4BAAiB,GAAE;aACzB,CAAC,CAAC;YAEH,MAAM,IAAA,gDAAqC,EAAC;gBAC1C,gBAAgB,EAAE,qBAAqB,CAAC,gBAAgB,EAAE;gBAC1D,mBAAmB,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE;oBAC1C,MAAM,EAAE,QAAQ,EAAE,mBAAmB,EAAE,GAAG,YAAY,CAAC;oBACvD,mBAAmB,EAAE,CAAC;oBAEtB,MAAM,uBAAuB,GAAG,MAAM,yBAAyB,CAAC,mBAAmB,CAAC;yBACjF,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;yBAChB,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;oBAEtB,IAAI,uBAAuB,EAAE,CAAC;wBAC5B,mBAAmB,EAAE,CAAC;oBACxB,CAAC;yBAAM,CAAC;wBACN,0BAA0B,EAAE,CAAC;oBAC/B,CAAC;gBACH,CAAC;gBACD,kBAAkB,EAAE,GAAG,EAAE,CAAC,IAAA,2CAAgC,GAAE;gBAC5D,YAAY,EAAE,qBAAqB;gBACnC,SAAS,EAAE,SAAS;gBACpB,kBAAkB,EAAE;oBAClB,gBAAgB,EAAE,EAAE;iBACrB;aACF,CAAC,CAAC;YAEH,MAAM,MAAM,GAAsC;gBAChD,mBAAmB;gBACnB,0BAA0B;gBAC1B,mBAAmB;aACpB,CAAC;YAEF,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,wBAAwB,CAAC,OAAwC;IAC/E,MAAM,EAAE,cAAc,EAAE,qBAAqB,EAAE,4CAA4C,EAAE,GAAG,OAAO,CAAC;IAExG,OAAO,4CAA4C,CAAC,kCAAuB,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAC5F,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;QACzB,OAAO,KAAK,EAAE,wBAA6C,EAAE,EAAE;YAC7D,MAAM,mBAAmB,GAAG,MAAM,qBAAqB,CAAC,gBAAgB,EAAE,CAAC,gBAAgB,CAAC,wBAAwB,CAAC,CAAC;YAEtH,MAAM,WAAW,GAAG,MAAM,IAAA,oCAAkB,EAAC,mBAAmB,CAAC,CAAC;YAClE,MAAM,YAAY,GAAG,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAEtD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;oBACtB,MAAM,IAAA,yDAAqC,GAAE,CAAC;gBAChD,CAAC;qBAAM,IAAI,CAAC,IAAA,aAAM,EAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;oBACrC,MAAM,IAAA,sDAAkC,GAAE,CAAC;gBAC7C,CAAC;YACH,CAAC;YAED,kBAAkB;YAClB,MAAM,YAAY,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;YAE9C,sBAAsB;YACtB,MAAM,mBAAmB,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC9C,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { UploadedFileInitializationFailedErrorData } from '@dereekb/firebase';
|
|
2
|
+
export declare function uploadedFileDoesNotExistError(): import("firebase-functions/https").HttpsError;
|
|
3
|
+
export declare function uploadedFileIsNotAllowedToBeInitializedError(): import("firebase-functions/https").HttpsError;
|
|
4
|
+
export declare function uploadedFileInitializationFailedError(data: UploadedFileInitializationFailedErrorData): import("firebase-functions/https").HttpsError;
|
|
5
|
+
export declare function uploadedFileInitializationDiscardedError(): import("firebase-functions/https").HttpsError;
|
|
6
|
+
export declare function storageFileProcessingNotAllowedForInvalidStateError(): import("firebase-functions/https").HttpsError;
|
|
7
|
+
export declare function storageFileProcessingNotQueuedForProcessingError(): import("firebase-functions/https").HttpsError;
|
|
8
|
+
export declare function storageFileProcessingNotAvailableForTypeError(): import("firebase-functions/https").HttpsError;
|
|
9
|
+
export declare function storageFileAlreadySuccessfullyProcessedError(): import("firebase-functions/https").HttpsError;
|
|
10
|
+
export declare function storageFileNotFlaggedForDeletionError(): import("firebase-functions/https").HttpsError;
|
|
11
|
+
export declare function storageFileCannotBeDeletedYetError(): import("firebase-functions/https").HttpsError;
|