quidproquo-actionprocessor-node 0.1.15 → 0.1.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -97
- package/lib/commonjs/actionProcessor/core/dynamicFunctions/getDynamicFunctionsExecuteActionProcessor.d.ts +1 -2
- package/lib/commonjs/actionProcessor/core/dynamicFunctions/getDynamicFunctionsExecuteActionProcessor.js +1 -6
- package/lib/commonjs/actionProcessor/core/dynamicFunctions/getDynamicFunctionsExecuteActionProcessor.js.map +1 -1
- package/lib/commonjs/actionProcessor/core/index.js +1 -1
- package/lib/commonjs/actionProcessor/core/index.js.map +1 -1
- package/lib/commonjs/actionProcessor/core/inlineFunction/getInlineFunctionExecuteActionProcessor.d.ts +1 -2
- package/lib/commonjs/actionProcessor/core/inlineFunction/getInlineFunctionExecuteActionProcessor.js +1 -6
- package/lib/commonjs/actionProcessor/core/inlineFunction/getInlineFunctionExecuteActionProcessor.js.map +1 -1
- package/lib/commonjs/actionProcessor/core/stream/getStreamCloseActionProcessor.d.ts +1 -2
- package/lib/commonjs/actionProcessor/core/stream/getStreamCloseActionProcessor.js +1 -6
- package/lib/commonjs/actionProcessor/core/stream/getStreamCloseActionProcessor.js.map +1 -1
- package/lib/commonjs/actionProcessor/core/stream/getStreamReadActionProcessor.d.ts +1 -2
- package/lib/commonjs/actionProcessor/core/stream/getStreamReadActionProcessor.js +1 -6
- package/lib/commonjs/actionProcessor/core/stream/getStreamReadActionProcessor.js.map +1 -1
- package/lib/commonjs/dynamicActionProcessor/file/getFileDeleteActionProcessor.d.ts +1 -2
- package/lib/commonjs/dynamicActionProcessor/file/getFileDeleteActionProcessor.js +3 -7
- package/lib/commonjs/dynamicActionProcessor/file/getFileDeleteActionProcessor.js.map +1 -1
- package/lib/commonjs/dynamicActionProcessor/file/getFileExistsActionProcessor.d.ts +1 -2
- package/lib/commonjs/dynamicActionProcessor/file/getFileExistsActionProcessor.js +3 -7
- package/lib/commonjs/dynamicActionProcessor/file/getFileExistsActionProcessor.js.map +1 -1
- package/lib/commonjs/dynamicActionProcessor/file/getFileGenerateTemporarySecureUrlActionProcessor.d.ts +1 -2
- package/lib/commonjs/dynamicActionProcessor/file/getFileGenerateTemporarySecureUrlActionProcessor.js +3 -7
- package/lib/commonjs/dynamicActionProcessor/file/getFileGenerateTemporarySecureUrlActionProcessor.js.map +1 -1
- package/lib/commonjs/dynamicActionProcessor/file/getFileGenerateTemporaryUploadSecureUrlActionProcessor.d.ts +1 -2
- package/lib/commonjs/dynamicActionProcessor/file/getFileGenerateTemporaryUploadSecureUrlActionProcessor.js +3 -7
- package/lib/commonjs/dynamicActionProcessor/file/getFileGenerateTemporaryUploadSecureUrlActionProcessor.js.map +1 -1
- package/lib/commonjs/dynamicActionProcessor/file/getFileIsColdStorageActionProcessor.d.ts +1 -2
- package/lib/commonjs/dynamicActionProcessor/file/getFileIsColdStorageActionProcessor.js +1 -5
- package/lib/commonjs/dynamicActionProcessor/file/getFileIsColdStorageActionProcessor.js.map +1 -1
- package/lib/commonjs/dynamicActionProcessor/file/getFileListDirectoryActionProcessor.d.ts +1 -2
- package/lib/commonjs/dynamicActionProcessor/file/getFileListDirectoryActionProcessor.js +5 -9
- package/lib/commonjs/dynamicActionProcessor/file/getFileListDirectoryActionProcessor.js.map +1 -1
- package/lib/commonjs/dynamicActionProcessor/file/getFileReadBinaryContentsActionProcessor.d.ts +1 -2
- package/lib/commonjs/dynamicActionProcessor/file/getFileReadBinaryContentsActionProcessor.js +3 -7
- package/lib/commonjs/dynamicActionProcessor/file/getFileReadBinaryContentsActionProcessor.js.map +1 -1
- package/lib/commonjs/dynamicActionProcessor/file/getFileReadObjectJsonActionProcessor.d.ts +1 -2
- package/lib/commonjs/dynamicActionProcessor/file/getFileReadObjectJsonActionProcessor.js +4 -8
- package/lib/commonjs/dynamicActionProcessor/file/getFileReadObjectJsonActionProcessor.js.map +1 -1
- package/lib/commonjs/dynamicActionProcessor/file/getFileReadTextContentsActionProcessor.d.ts +1 -2
- package/lib/commonjs/dynamicActionProcessor/file/getFileReadTextContentsActionProcessor.js +3 -7
- package/lib/commonjs/dynamicActionProcessor/file/getFileReadTextContentsActionProcessor.js.map +1 -1
- package/lib/commonjs/dynamicActionProcessor/file/getFileStreamOpenActionProcessor.d.ts +1 -2
- package/lib/commonjs/dynamicActionProcessor/file/getFileStreamOpenActionProcessor.js +3 -7
- package/lib/commonjs/dynamicActionProcessor/file/getFileStreamOpenActionProcessor.js.map +1 -1
- package/lib/commonjs/dynamicActionProcessor/file/getFileWriteBinaryContentsActionProcessor.d.ts +1 -2
- package/lib/commonjs/dynamicActionProcessor/file/getFileWriteBinaryContentsActionProcessor.js +3 -7
- package/lib/commonjs/dynamicActionProcessor/file/getFileWriteBinaryContentsActionProcessor.js.map +1 -1
- package/lib/commonjs/dynamicActionProcessor/file/getFileWriteObjectJsonActionProcessor.d.ts +1 -2
- package/lib/commonjs/dynamicActionProcessor/file/getFileWriteObjectJsonActionProcessor.js +3 -7
- package/lib/commonjs/dynamicActionProcessor/file/getFileWriteObjectJsonActionProcessor.js.map +1 -1
- package/lib/commonjs/dynamicActionProcessor/file/getFileWriteTextContentsActionProcessor.d.ts +1 -2
- package/lib/commonjs/dynamicActionProcessor/file/getFileWriteTextContentsActionProcessor.js +3 -7
- package/lib/commonjs/dynamicActionProcessor/file/getFileWriteTextContentsActionProcessor.js.map +1 -1
- package/lib/commonjs/traceStoryExecution/getSystemTraceStoryActionProcessor.js.map +1 -1
- package/lib/esm/actionProcessor/core/dynamicFunctions/getDynamicFunctionsExecuteActionProcessor.d.ts +1 -2
- package/lib/esm/actionProcessor/core/dynamicFunctions/getDynamicFunctionsExecuteActionProcessor.js +2 -4
- package/lib/esm/actionProcessor/core/dynamicFunctions/getDynamicFunctionsExecuteActionProcessor.js.map +1 -1
- package/lib/esm/actionProcessor/core/index.js +1 -1
- package/lib/esm/actionProcessor/core/index.js.map +1 -1
- package/lib/esm/actionProcessor/core/inlineFunction/getInlineFunctionExecuteActionProcessor.d.ts +1 -2
- package/lib/esm/actionProcessor/core/inlineFunction/getInlineFunctionExecuteActionProcessor.js +2 -4
- package/lib/esm/actionProcessor/core/inlineFunction/getInlineFunctionExecuteActionProcessor.js.map +1 -1
- package/lib/esm/actionProcessor/core/stream/getStreamCloseActionProcessor.d.ts +1 -2
- package/lib/esm/actionProcessor/core/stream/getStreamCloseActionProcessor.js +2 -4
- package/lib/esm/actionProcessor/core/stream/getStreamCloseActionProcessor.js.map +1 -1
- package/lib/esm/actionProcessor/core/stream/getStreamReadActionProcessor.d.ts +1 -2
- package/lib/esm/actionProcessor/core/stream/getStreamReadActionProcessor.js +2 -4
- package/lib/esm/actionProcessor/core/stream/getStreamReadActionProcessor.js.map +1 -1
- package/lib/esm/dynamicActionProcessor/file/getFileDeleteActionProcessor.d.ts +1 -2
- package/lib/esm/dynamicActionProcessor/file/getFileDeleteActionProcessor.js +4 -6
- package/lib/esm/dynamicActionProcessor/file/getFileDeleteActionProcessor.js.map +1 -1
- package/lib/esm/dynamicActionProcessor/file/getFileExistsActionProcessor.d.ts +1 -2
- package/lib/esm/dynamicActionProcessor/file/getFileExistsActionProcessor.js +4 -6
- package/lib/esm/dynamicActionProcessor/file/getFileExistsActionProcessor.js.map +1 -1
- package/lib/esm/dynamicActionProcessor/file/getFileGenerateTemporarySecureUrlActionProcessor.d.ts +1 -2
- package/lib/esm/dynamicActionProcessor/file/getFileGenerateTemporarySecureUrlActionProcessor.js +4 -6
- package/lib/esm/dynamicActionProcessor/file/getFileGenerateTemporarySecureUrlActionProcessor.js.map +1 -1
- package/lib/esm/dynamicActionProcessor/file/getFileGenerateTemporaryUploadSecureUrlActionProcessor.d.ts +1 -2
- package/lib/esm/dynamicActionProcessor/file/getFileGenerateTemporaryUploadSecureUrlActionProcessor.js +4 -6
- package/lib/esm/dynamicActionProcessor/file/getFileGenerateTemporaryUploadSecureUrlActionProcessor.js.map +1 -1
- package/lib/esm/dynamicActionProcessor/file/getFileIsColdStorageActionProcessor.d.ts +1 -2
- package/lib/esm/dynamicActionProcessor/file/getFileIsColdStorageActionProcessor.js +2 -4
- package/lib/esm/dynamicActionProcessor/file/getFileIsColdStorageActionProcessor.js.map +1 -1
- package/lib/esm/dynamicActionProcessor/file/getFileListDirectoryActionProcessor.d.ts +1 -2
- package/lib/esm/dynamicActionProcessor/file/getFileListDirectoryActionProcessor.js +6 -8
- package/lib/esm/dynamicActionProcessor/file/getFileListDirectoryActionProcessor.js.map +1 -1
- package/lib/esm/dynamicActionProcessor/file/getFileReadBinaryContentsActionProcessor.d.ts +1 -2
- package/lib/esm/dynamicActionProcessor/file/getFileReadBinaryContentsActionProcessor.js +4 -6
- package/lib/esm/dynamicActionProcessor/file/getFileReadBinaryContentsActionProcessor.js.map +1 -1
- package/lib/esm/dynamicActionProcessor/file/getFileReadObjectJsonActionProcessor.d.ts +1 -2
- package/lib/esm/dynamicActionProcessor/file/getFileReadObjectJsonActionProcessor.js +5 -7
- package/lib/esm/dynamicActionProcessor/file/getFileReadObjectJsonActionProcessor.js.map +1 -1
- package/lib/esm/dynamicActionProcessor/file/getFileReadTextContentsActionProcessor.d.ts +1 -2
- package/lib/esm/dynamicActionProcessor/file/getFileReadTextContentsActionProcessor.js +4 -6
- package/lib/esm/dynamicActionProcessor/file/getFileReadTextContentsActionProcessor.js.map +1 -1
- package/lib/esm/dynamicActionProcessor/file/getFileStreamOpenActionProcessor.d.ts +1 -2
- package/lib/esm/dynamicActionProcessor/file/getFileStreamOpenActionProcessor.js +4 -6
- package/lib/esm/dynamicActionProcessor/file/getFileStreamOpenActionProcessor.js.map +1 -1
- package/lib/esm/dynamicActionProcessor/file/getFileWriteBinaryContentsActionProcessor.d.ts +1 -2
- package/lib/esm/dynamicActionProcessor/file/getFileWriteBinaryContentsActionProcessor.js +4 -6
- package/lib/esm/dynamicActionProcessor/file/getFileWriteBinaryContentsActionProcessor.js.map +1 -1
- package/lib/esm/dynamicActionProcessor/file/getFileWriteObjectJsonActionProcessor.d.ts +1 -2
- package/lib/esm/dynamicActionProcessor/file/getFileWriteObjectJsonActionProcessor.js +4 -6
- package/lib/esm/dynamicActionProcessor/file/getFileWriteObjectJsonActionProcessor.js.map +1 -1
- package/lib/esm/dynamicActionProcessor/file/getFileWriteTextContentsActionProcessor.d.ts +1 -2
- package/lib/esm/dynamicActionProcessor/file/getFileWriteTextContentsActionProcessor.js +4 -6
- package/lib/esm/dynamicActionProcessor/file/getFileWriteTextContentsActionProcessor.js.map +1 -1
- package/lib/esm/traceStoryExecution/getSystemTraceStoryActionProcessor.js.map +1 -1
- package/package.json +11 -9
package/lib/esm/actionProcessor/core/inlineFunction/getInlineFunctionExecuteActionProcessor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getInlineFunctionExecuteActionProcessor.js","sourceRoot":"","sources":["../../../../../src/actionProcessor/core/inlineFunction/getInlineFunctionExecuteActionProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"getInlineFunctionExecuteActionProcessor.js","sourceRoot":"","sources":["../../../../../src/actionProcessor/core/inlineFunction/getInlineFunctionExecuteActionProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,4BAA4B,EAC5B,qBAAqB,EACrB,aAAa,EACb,aAAa,EAGb,YAAY,EACZ,cAAc,GACf,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEpC,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AAElD,MAAM,iBAAiB,GAAG,CAAC,SAAoB,EAAqD,EAAE;IACpG,MAAM,UAAU,GAAG,YAAY,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;IAEpE,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,aAAa,EAAE,mBAAmB,EAAE,cAAc,EAAE,EAAE;QAC9G,MAAM,eAAe,GAAG,YAAY,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC;QACtE,MAAM,cAAc,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;QAE5F,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,OAAO,iBAAiB,CAAC,aAAa,CAAC,QAAQ,EAAE,+BAA+B,OAAO,CAAC,YAAY,GAAG,CAAC,CAAC;QAC3G,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,mBAAmB,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAEhE,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,iBAAiB,CAAC,aAAa,CAAC,QAAQ,EAAE,gDAAgD,OAAO,CAAC,YAAY,GAAG,CAAC,CAAC;QAC5H,CAAC;QAED,MAAM,YAAY,GAAG,aAAa,CAChC,SAAS,EACT;YACE,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,KAAK,EAAE,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC;YAC/B,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;YAC9C,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,wEAAwE;YACxE,uEAAuE;YACvE,sEAAsE;YACtE,eAAe,EAAE,OAAO,CAAC,eAAe;SACzC,EACD,KAAK,IAAI,EAAE,CAAC,gBAAgB,EAC5B,UAAU,EACV,MAAM,EACN,GAAG,UAAU,KAAK,UAAU,EAAE,EAAE,EAChC,cAAc,CAAC,aAAa,EAC5B,mBAAmB,EACnB,cAAc,CAAC,OAAO,EACtB,EAAE,EACF,cAAc,CACf,CAAC;QAEF,MAAM,WAAW,GAAG,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;QAEjE,IAAI,WAAW,CAAC,KAAK,EAAE,CAAC;YACtB,OAAO,iBAAiB,CACtB,WAAW,CAAC,KAAK,CAAC,SAAS,EAC3B,WAAW,CAAC,KAAK,CAAC,SAAS,EAC3B,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,YAAY,QAAQ,WAAW,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CACrH,CAAC;QACJ,CAAC;QAED,OAAO,YAAY,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC1C,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,uCAAuC,GAAG,qBAAqB,CAAC,4BAA4B,EAAE,iBAAiB,CAAC,CAAC","sourcesContent":["import {\n actionResult,\n actionResultError,\n askInlineFunctionExecuteBase,\n createActionProcessor,\n createRuntime,\n ErrorTypeEnum,\n ProcessorFor,\n QPQConfig,\n qpqCoreUtils,\n QpqRuntimeType,\n} from 'quidproquo-core';\n\nimport { randomUUID } from 'crypto';\n\nconst getDateNow = () => new Date().toISOString();\n\nconst getProcessExecute = (qpqConfig: QPQConfig): ProcessorFor<typeof askInlineFunctionExecuteBase> => {\n const moduleName = qpqCoreUtils.getApplicationModuleName(qpqConfig);\n\n return async (payload, session, actionProcessors, logger, updateSession, dynamicModuleLoader, streamRegistry) => {\n const inlineFunctions = qpqCoreUtils.getAllInlineFunctions(qpqConfig);\n const inlineFunction = inlineFunctions.find((f) => f.functionName === payload.functionName);\n\n if (!inlineFunction) {\n return actionResultError(ErrorTypeEnum.NotFound, `Inline function not found: [${payload.functionName}]`);\n }\n\n const story = await dynamicModuleLoader(inlineFunction.runtime);\n\n if (!story) {\n return actionResultError(ErrorTypeEnum.NotFound, `Unable to dynamically load inline function: [${payload.functionName}]`);\n }\n\n const resolveStory = createRuntime(\n qpqConfig,\n {\n context: session.context,\n localContext: session.localContext,\n depth: (session.depth || 0) + 1,\n decodedAccessToken: session.decodedAccessToken,\n correlation: session.correlation,\n // Inline functions run WITHIN the caller's function - carry its globals\n // so stories like the tenant scope resolver can read route config (the\n // runtime merges these under the inline function's own registration).\n functionGlobals: session.functionGlobals,\n },\n async () => actionProcessors,\n getDateNow,\n logger,\n `${moduleName}::${randomUUID()}`,\n QpqRuntimeType.EXECUTE_STORY,\n dynamicModuleLoader,\n inlineFunction.runtime,\n [],\n streamRegistry,\n );\n\n const storyResult = await resolveStory(story, [payload.payload]);\n\n if (storyResult.error) {\n return actionResultError(\n storyResult.error.errorType,\n storyResult.error.errorText,\n storyResult.error.errorStack ? `${payload.functionName} -> [${storyResult.error.errorStack}]` : payload.functionName,\n );\n }\n\n return actionResult(storyResult.result);\n };\n};\n\nexport const getInlineFunctionExecuteActionProcessor = createActionProcessor(askInlineFunctionExecuteBase, getProcessExecute);\n"]}
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const getStreamCloseActionProcessor: ActionProcessorListResolver;
|
|
1
|
+
export declare const getStreamCloseActionProcessor: import("quidproquo-core").ActionProcessorListResolver;
|
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
import { actionResult,
|
|
1
|
+
import { actionResult, askStreamClose, createActionProcessor } from 'quidproquo-core';
|
|
2
2
|
const getProcessStreamClose = (qpqConfig) => {
|
|
3
3
|
return async ({ streamId }, session, actionProcessors, logger, updateSession, dynamicModuleLoader, streamRegistry) => {
|
|
4
4
|
streamRegistry.close(streamId);
|
|
5
5
|
return actionResult(undefined);
|
|
6
6
|
};
|
|
7
7
|
};
|
|
8
|
-
export const getStreamCloseActionProcessor =
|
|
9
|
-
[StreamActionType.Close]: getProcessStreamClose(qpqConfig),
|
|
10
|
-
});
|
|
8
|
+
export const getStreamCloseActionProcessor = createActionProcessor(askStreamClose, getProcessStreamClose);
|
|
11
9
|
//# sourceMappingURL=getStreamCloseActionProcessor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getStreamCloseActionProcessor.js","sourceRoot":"","sources":["../../../../../src/actionProcessor/core/stream/getStreamCloseActionProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"getStreamCloseActionProcessor.js","sourceRoot":"","sources":["../../../../../src/actionProcessor/core/stream/getStreamCloseActionProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,qBAAqB,EAA6C,MAAM,iBAAiB,CAAC;AAEjI,MAAM,qBAAqB,GAAG,CAAC,SAAoB,EAAuC,EAAE;IAC1F,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,aAAa,EAAE,mBAAmB,EAAE,cAAc,EAAE,EAAE;QACnH,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC/B,OAAO,YAAY,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,6BAA6B,GAAG,qBAAqB,CAAC,cAAc,EAAE,qBAAqB,CAAC,CAAC","sourcesContent":["import { actionResult, askStreamClose, createActionProcessor, ProcessorFor, QPQConfig, StreamActionType } from 'quidproquo-core';\n\nconst getProcessStreamClose = (qpqConfig: QPQConfig): ProcessorFor<typeof askStreamClose> => {\n return async ({ streamId }, session, actionProcessors, logger, updateSession, dynamicModuleLoader, streamRegistry) => {\n streamRegistry.close(streamId);\n return actionResult(undefined);\n };\n};\n\nexport const getStreamCloseActionProcessor = createActionProcessor(askStreamClose, getProcessStreamClose);\n"]}
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const getStreamReadActionProcessor: ActionProcessorListResolver;
|
|
1
|
+
export declare const getStreamReadActionProcessor: import("quidproquo-core").ActionProcessorListResolver;
|
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
import { actionResult,
|
|
1
|
+
import { actionResult, askStreamReadBase, createActionProcessor } from 'quidproquo-core';
|
|
2
2
|
const getProcessStreamRead = (qpqConfig) => {
|
|
3
3
|
return async ({ streamId, noWait }, session, actionProcessors, logger, updateSession, dynamicModuleLoader, streamRegistry) => {
|
|
4
4
|
const chunk = await streamRegistry.read(streamId, noWait);
|
|
5
5
|
return actionResult(chunk);
|
|
6
6
|
};
|
|
7
7
|
};
|
|
8
|
-
export const getStreamReadActionProcessor =
|
|
9
|
-
[StreamActionType.Read]: getProcessStreamRead(qpqConfig),
|
|
10
|
-
});
|
|
8
|
+
export const getStreamReadActionProcessor = createActionProcessor(askStreamReadBase, getProcessStreamRead);
|
|
11
9
|
//# sourceMappingURL=getStreamReadActionProcessor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getStreamReadActionProcessor.js","sourceRoot":"","sources":["../../../../../src/actionProcessor/core/stream/getStreamReadActionProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"getStreamReadActionProcessor.js","sourceRoot":"","sources":["../../../../../src/actionProcessor/core/stream/getStreamReadActionProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,qBAAqB,EAA6C,MAAM,iBAAiB,CAAC;AAEpI,MAAM,oBAAoB,GAAG,CAAC,SAAoB,EAA0C,EAAE;IAC5F,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,aAAa,EAAE,mBAAmB,EAAE,cAAc,EAAE,EAAE;QAC3H,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC1D,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,4BAA4B,GAAG,qBAAqB,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,CAAC","sourcesContent":["import { actionResult, askStreamReadBase, createActionProcessor, ProcessorFor, QPQConfig, StreamActionType } from 'quidproquo-core';\n\nconst getProcessStreamRead = (qpqConfig: QPQConfig): ProcessorFor<typeof askStreamReadBase> => {\n return async ({ streamId, noWait }, session, actionProcessors, logger, updateSession, dynamicModuleLoader, streamRegistry) => {\n const chunk = await streamRegistry.read(streamId, noWait);\n return actionResult(chunk);\n };\n};\n\nexport const getStreamReadActionProcessor = createActionProcessor(askStreamReadBase, getProcessStreamRead);\n"]}
|
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
import { ActionProcessorListResolver } from 'quidproquo-core';
|
|
2
1
|
import { FileStorageConfig } from './types';
|
|
3
|
-
export declare const getFileDeleteActionProcessor: (config: FileStorageConfig) => ActionProcessorListResolver;
|
|
2
|
+
export declare const getFileDeleteActionProcessor: (config: FileStorageConfig) => import("quidproquo-core").ActionProcessorListResolver;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { actionResult, actionResultError,
|
|
1
|
+
import { actionResult, actionResultError, askFileDelete, createActionProcessor, ErrorTypeEnum, } from 'quidproquo-core';
|
|
2
2
|
import * as fs from 'fs/promises';
|
|
3
3
|
import { resolveFilePath } from './utils';
|
|
4
4
|
const getProcessFileDelete = (qpqConfig, config) => {
|
|
@@ -27,19 +27,17 @@ const getProcessFileDelete = (qpqConfig, config) => {
|
|
|
27
27
|
// can come from another copy of quidproquo-core.
|
|
28
28
|
const invalidScope = errors.find(({ error }) => error?.name === 'InvalidScopeError');
|
|
29
29
|
if (invalidScope) {
|
|
30
|
-
return actionResultError(
|
|
30
|
+
return actionResultError(askFileDelete.errorType.InvalidScope, invalidScope.error.message);
|
|
31
31
|
}
|
|
32
32
|
if (errors.length > 0 && deletedFiles.length === 0) {
|
|
33
33
|
// EACCES maps to the same typed error the S3 processor returns for AccessDenied
|
|
34
34
|
if (errors.some(({ error }) => error.code === 'EACCES')) {
|
|
35
|
-
return actionResultError(
|
|
35
|
+
return actionResultError(askFileDelete.errorType.AccessDenied, 'Access denied deleting files');
|
|
36
36
|
}
|
|
37
37
|
return actionResultError(ErrorTypeEnum.GenericError, `Failed to delete files: ${errors.map(({ filepath, error }) => `Failed to delete ${filepath}: ${error.message}`).join(', ')}`);
|
|
38
38
|
}
|
|
39
39
|
return actionResult(deletedFiles);
|
|
40
40
|
};
|
|
41
41
|
};
|
|
42
|
-
export const getFileDeleteActionProcessor = (config) =>
|
|
43
|
-
[FileActionType.Delete]: getProcessFileDelete(qpqConfig, config),
|
|
44
|
-
});
|
|
42
|
+
export const getFileDeleteActionProcessor = (config) => createActionProcessor(askFileDelete, (qpqConfig) => getProcessFileDelete(qpqConfig, config));
|
|
45
43
|
//# sourceMappingURL=getFileDeleteActionProcessor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getFileDeleteActionProcessor.js","sourceRoot":"","sources":["../../../../src/dynamicActionProcessor/file/getFileDeleteActionProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"getFileDeleteActionProcessor.js","sourceRoot":"","sources":["../../../../src/dynamicActionProcessor/file/getFileDeleteActionProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,qBAAqB,EACrB,aAAa,GAId,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAGlC,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE1C,MAAM,oBAAoB,GAAG,CAAC,SAAoB,EAAE,MAAyB,EAAsC,EAAE;IACnH,OAAO,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE;QAC3C,MAAM,YAAY,GAAa,EAAE,CAAC;QAClC,MAAM,MAAM,GAAuC,EAAE,CAAC;QAEtD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;gBAE5E,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAC1B,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC9B,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,0DAA0D;gBAC1D,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC5B,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC9B,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;gBACnC,CAAC;YACH,CAAC;QACH,CAAC;QAED,6EAA6E;QAC7E,2EAA2E;QAC3E,2EAA2E;QAC3E,iDAAiD;QACjD,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,mBAAmB,CAAC,CAAC;QACrF,IAAI,YAAY,EAAE,CAAC;YACjB,OAAO,iBAAiB,CAAC,aAAa,CAAC,SAAS,CAAC,YAAY,EAAE,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC7F,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnD,gFAAgF;YAChF,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,EAAE,CAAC;gBACxD,OAAO,iBAAiB,CAAC,aAAa,CAAC,SAAS,CAAC,YAAY,EAAE,8BAA8B,CAAC,CAAC;YACjG,CAAC;YACD,OAAO,iBAAiB,CACtB,aAAa,CAAC,YAAY,EAC1B,2BAA2B,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,oBAAoB,QAAQ,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC9H,CAAC;QACJ,CAAC;QAED,OAAO,YAAY,CAAC,YAAY,CAAC,CAAC;IACpC,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,MAAyB,EAAE,EAAE,CACxE,qBAAqB,CAAC,aAAa,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,oBAAoB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC","sourcesContent":["import {\n actionResult,\n actionResultError,\n askFileDelete,\n createActionProcessor,\n ErrorTypeEnum,\n FileActionType,\n ProcessorFor,\n QPQConfig,\n} from 'quidproquo-core';\n\nimport * as fs from 'fs/promises';\n\nimport { FileStorageConfig } from './types';\nimport { resolveFilePath } from './utils';\n\nconst getProcessFileDelete = (qpqConfig: QPQConfig, config: FileStorageConfig): ProcessorFor<typeof askFileDelete> => {\n return async ({ drive, filepaths, scope }) => {\n const deletedFiles: string[] = [];\n const errors: { filepath: string; error: any }[] = [];\n\n for (const filepath of filepaths) {\n try {\n const fullPath = resolveFilePath(config, qpqConfig, drive, filepath, scope);\n\n await fs.unlink(fullPath);\n deletedFiles.push(filepath);\n } catch (error: any) {\n // If file doesn't exist, consider it successfully deleted\n if (error.code === 'ENOENT') {\n deletedFiles.push(filepath);\n } else {\n errors.push({ filepath, error });\n }\n }\n }\n\n // Scope is shared by every filepath in the request, so a bad scope fails the\n // whole call regardless of any deletes that a different code path allowed.\n // Name-keyed, not instanceof: under npm link / module federation the error\n // can come from another copy of quidproquo-core.\n const invalidScope = errors.find(({ error }) => error?.name === 'InvalidScopeError');\n if (invalidScope) {\n return actionResultError(askFileDelete.errorType.InvalidScope, invalidScope.error.message);\n }\n\n if (errors.length > 0 && deletedFiles.length === 0) {\n // EACCES maps to the same typed error the S3 processor returns for AccessDenied\n if (errors.some(({ error }) => error.code === 'EACCES')) {\n return actionResultError(askFileDelete.errorType.AccessDenied, 'Access denied deleting files');\n }\n return actionResultError(\n ErrorTypeEnum.GenericError,\n `Failed to delete files: ${errors.map(({ filepath, error }) => `Failed to delete ${filepath}: ${error.message}`).join(', ')}`,\n );\n }\n\n return actionResult(deletedFiles);\n };\n};\n\nexport const getFileDeleteActionProcessor = (config: FileStorageConfig) =>\n createActionProcessor(askFileDelete, (qpqConfig) => getProcessFileDelete(qpqConfig, config));\n"]}
|
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
import { ActionProcessorListResolver } from 'quidproquo-core';
|
|
2
1
|
import { FileStorageConfig } from './types';
|
|
3
|
-
export declare const getFileExistsActionProcessor: (config: FileStorageConfig) => ActionProcessorListResolver;
|
|
2
|
+
export declare const getFileExistsActionProcessor: (config: FileStorageConfig) => import("quidproquo-core").ActionProcessorListResolver;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { actionResult, actionResultError, actionResultErrorFromCaughtError,
|
|
1
|
+
import { actionResult, actionResultError, actionResultErrorFromCaughtError, askFileExists, createActionProcessor, } from 'quidproquo-core';
|
|
2
2
|
import * as fs from 'fs/promises';
|
|
3
3
|
import { resolveFilePath } from './utils';
|
|
4
4
|
const getProcessFileExists = (qpqConfig, config) => {
|
|
@@ -15,7 +15,7 @@ const getProcessFileExists = (qpqConfig, config) => {
|
|
|
15
15
|
return actionResult(false);
|
|
16
16
|
}
|
|
17
17
|
if (error.code === 'EACCES') {
|
|
18
|
-
return actionResultError(
|
|
18
|
+
return actionResultError(askFileExists.errorType.AccessDenied, `Access denied checking file existence: ${filepath}`);
|
|
19
19
|
}
|
|
20
20
|
throw error;
|
|
21
21
|
}
|
|
@@ -24,12 +24,10 @@ const getProcessFileExists = (qpqConfig, config) => {
|
|
|
24
24
|
// Name-keyed, not instanceof: under npm link / module federation the
|
|
25
25
|
// error can come from another copy of quidproquo-core.
|
|
26
26
|
return actionResultErrorFromCaughtError(error, {
|
|
27
|
-
InvalidScopeError: (error) => actionResultError(
|
|
27
|
+
InvalidScopeError: (error) => actionResultError(askFileExists.errorType.InvalidScope, error.message),
|
|
28
28
|
});
|
|
29
29
|
}
|
|
30
30
|
};
|
|
31
31
|
};
|
|
32
|
-
export const getFileExistsActionProcessor = (config) =>
|
|
33
|
-
[FileActionType.Exists]: getProcessFileExists(qpqConfig, config),
|
|
34
|
-
});
|
|
32
|
+
export const getFileExistsActionProcessor = (config) => createActionProcessor(askFileExists, (qpqConfig) => getProcessFileExists(qpqConfig, config));
|
|
35
33
|
//# sourceMappingURL=getFileExistsActionProcessor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getFileExistsActionProcessor.js","sourceRoot":"","sources":["../../../../src/dynamicActionProcessor/file/getFileExistsActionProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"getFileExistsActionProcessor.js","sourceRoot":"","sources":["../../../../src/dynamicActionProcessor/file/getFileExistsActionProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,gCAAgC,EAChC,aAAa,EACb,qBAAqB,GAItB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAGlC,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE1C,MAAM,oBAAoB,GAAG,CAAC,SAAoB,EAAE,MAAyB,EAAsC,EAAE;IACnH,OAAO,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE;QAC1C,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;YAE5E,IAAI,CAAC;gBACH,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAC1B,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,wEAAwE;gBACxE,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC5B,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC;gBAC7B,CAAC;gBACD,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC5B,OAAO,iBAAiB,CAAC,aAAa,CAAC,SAAS,CAAC,YAAY,EAAE,0CAA0C,QAAQ,EAAE,CAAC,CAAC;gBACvH,CAAC;gBACD,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,qEAAqE;YACrE,uDAAuD;YACvD,OAAO,gCAAgC,CAAC,KAAK,EAAE;gBAC7C,iBAAiB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,iBAAiB,CAAC,aAAa,CAAC,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC;aACrG,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,MAAyB,EAAE,EAAE,CACxE,qBAAqB,CAAC,aAAa,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,oBAAoB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC","sourcesContent":["import {\n actionResult,\n actionResultError,\n actionResultErrorFromCaughtError,\n askFileExists,\n createActionProcessor,\n FileActionType,\n ProcessorFor,\n QPQConfig,\n} from 'quidproquo-core';\n\nimport * as fs from 'fs/promises';\n\nimport { FileStorageConfig } from './types';\nimport { resolveFilePath } from './utils';\n\nconst getProcessFileExists = (qpqConfig: QPQConfig, config: FileStorageConfig): ProcessorFor<typeof askFileExists> => {\n return async ({ drive, filepath, scope }) => {\n try {\n const fullPath = resolveFilePath(config, qpqConfig, drive, filepath, scope);\n\n try {\n await fs.access(fullPath);\n return actionResult(true);\n } catch (error: any) {\n // Missing file is a definitive false; permission problems must surface.\n if (error.code === 'ENOENT') {\n return actionResult(false);\n }\n if (error.code === 'EACCES') {\n return actionResultError(askFileExists.errorType.AccessDenied, `Access denied checking file existence: ${filepath}`);\n }\n throw error;\n }\n } catch (error: unknown) {\n // Name-keyed, not instanceof: under npm link / module federation the\n // error can come from another copy of quidproquo-core.\n return actionResultErrorFromCaughtError(error, {\n InvalidScopeError: (error) => actionResultError(askFileExists.errorType.InvalidScope, error.message),\n });\n }\n };\n};\n\nexport const getFileExistsActionProcessor = (config: FileStorageConfig) =>\n createActionProcessor(askFileExists, (qpqConfig) => getProcessFileExists(qpqConfig, config));\n"]}
|
package/lib/esm/dynamicActionProcessor/file/getFileGenerateTemporarySecureUrlActionProcessor.d.ts
CHANGED
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
import { ActionProcessorListResolver } from 'quidproquo-core';
|
|
2
1
|
import { FileStorageConfig } from './types';
|
|
3
|
-
export declare const getFileGenerateTemporarySecureUrlActionProcessor: (config: FileStorageConfig) => ActionProcessorListResolver;
|
|
2
|
+
export declare const getFileGenerateTemporarySecureUrlActionProcessor: (config: FileStorageConfig) => import("quidproquo-core").ActionProcessorListResolver;
|
package/lib/esm/dynamicActionProcessor/file/getFileGenerateTemporarySecureUrlActionProcessor.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { actionResult, actionResultError, actionResultErrorFromCaughtError,
|
|
1
|
+
import { actionResult, actionResultError, actionResultErrorFromCaughtError, askFileGenerateTemporarySecureUrl, createActionProcessor, } from 'quidproquo-core';
|
|
2
2
|
import { createSecureUrlToken, getSecureUrlBaseUrl } from './secureUrlUtils';
|
|
3
3
|
import { resolveFilePath } from './utils';
|
|
4
4
|
// Mirror the AWS processor's SigV4 limit (7 days) so a story that would fail
|
|
@@ -7,7 +7,7 @@ const maxExpirationMs = 7 * 24 * 60 * 60 * 1000;
|
|
|
7
7
|
const getProcessFileGenerateTemporarySecureUrl = (qpqConfig, config) => {
|
|
8
8
|
return async ({ drive, filepath, expirationMs, scope }) => {
|
|
9
9
|
if (expirationMs > maxExpirationMs) {
|
|
10
|
-
return actionResultError(
|
|
10
|
+
return actionResultError(askFileGenerateTemporarySecureUrl.errorType.ExpirationTooLong, 'Expiration exceeds the 7 day maximum for presigned URLs');
|
|
11
11
|
}
|
|
12
12
|
try {
|
|
13
13
|
// Create a token for download
|
|
@@ -25,12 +25,10 @@ const getProcessFileGenerateTemporarySecureUrl = (qpqConfig, config) => {
|
|
|
25
25
|
// Name-keyed, not instanceof: under npm link / module federation the
|
|
26
26
|
// error can come from another copy of quidproquo-core.
|
|
27
27
|
return actionResultErrorFromCaughtError(error, {
|
|
28
|
-
InvalidScopeError: (error) => actionResultError(
|
|
28
|
+
InvalidScopeError: (error) => actionResultError(askFileGenerateTemporarySecureUrl.errorType.InvalidScope, error.message),
|
|
29
29
|
});
|
|
30
30
|
}
|
|
31
31
|
};
|
|
32
32
|
};
|
|
33
|
-
export const getFileGenerateTemporarySecureUrlActionProcessor = (config) =>
|
|
34
|
-
[FileActionType.GenerateTemporarySecureUrl]: getProcessFileGenerateTemporarySecureUrl(qpqConfig, config),
|
|
35
|
-
});
|
|
33
|
+
export const getFileGenerateTemporarySecureUrlActionProcessor = (config) => createActionProcessor(askFileGenerateTemporarySecureUrl, (qpqConfig) => getProcessFileGenerateTemporarySecureUrl(qpqConfig, config));
|
|
36
34
|
//# sourceMappingURL=getFileGenerateTemporarySecureUrlActionProcessor.js.map
|
package/lib/esm/dynamicActionProcessor/file/getFileGenerateTemporarySecureUrlActionProcessor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getFileGenerateTemporarySecureUrlActionProcessor.js","sourceRoot":"","sources":["../../../../src/dynamicActionProcessor/file/getFileGenerateTemporarySecureUrlActionProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"getFileGenerateTemporarySecureUrlActionProcessor.js","sourceRoot":"","sources":["../../../../src/dynamicActionProcessor/file/getFileGenerateTemporarySecureUrlActionProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,gCAAgC,EAChC,iCAAiC,EACjC,qBAAqB,GAItB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAE7E,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE1C,6EAA6E;AAC7E,sDAAsD;AACtD,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAEhD,MAAM,wCAAwC,GAAG,CAC/C,SAAoB,EACpB,MAAyB,EAC+B,EAAE;IAC1D,OAAO,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,EAAE;QACxD,IAAI,YAAY,GAAG,eAAe,EAAE,CAAC;YACnC,OAAO,iBAAiB,CACtB,iCAAiC,CAAC,SAAS,CAAC,iBAAiB,EAC7D,yDAAyD,CAC1D,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,8BAA8B;YAC9B,MAAM,KAAK,GAAG,oBAAoB,CAChC;gBACE,YAAY,EAAE,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC;gBACxE,SAAS,EAAE,UAAU;gBACrB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY;aACrC,EACD,MAAM,CAAC,eAAe,CACvB,CAAC;YAEF,uBAAuB;YACvB,MAAM,OAAO,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;YAC5C,MAAM,GAAG,GAAG,GAAG,OAAO,0BAA0B,KAAK,EAAE,CAAC;YAExD,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,qEAAqE;YACrE,uDAAuD;YACvD,OAAO,gCAAgC,CAAC,KAAK,EAAE;gBAC7C,iBAAiB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,iBAAiB,CAAC,iCAAiC,CAAC,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC;aACzH,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gDAAgD,GAAG,CAAC,MAAyB,EAAE,EAAE,CAC5F,qBAAqB,CAAC,iCAAiC,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,wCAAwC,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC","sourcesContent":["import {\n actionResult,\n actionResultError,\n actionResultErrorFromCaughtError,\n askFileGenerateTemporarySecureUrl,\n createActionProcessor,\n FileActionType,\n ProcessorFor,\n QPQConfig,\n} from 'quidproquo-core';\n\nimport { createSecureUrlToken, getSecureUrlBaseUrl } from './secureUrlUtils';\nimport { FileStorageConfig } from './types';\nimport { resolveFilePath } from './utils';\n\n// Mirror the AWS processor's SigV4 limit (7 days) so a story that would fail\n// in production fails the same way on the dev server.\nconst maxExpirationMs = 7 * 24 * 60 * 60 * 1000;\n\nconst getProcessFileGenerateTemporarySecureUrl = (\n qpqConfig: QPQConfig,\n config: FileStorageConfig,\n): ProcessorFor<typeof askFileGenerateTemporarySecureUrl> => {\n return async ({ drive, filepath, expirationMs, scope }) => {\n if (expirationMs > maxExpirationMs) {\n return actionResultError(\n askFileGenerateTemporarySecureUrl.errorType.ExpirationTooLong,\n 'Expiration exceeds the 7 day maximum for presigned URLs',\n );\n }\n\n try {\n // Create a token for download\n const token = createSecureUrlToken(\n {\n fullFilepath: resolveFilePath(config, qpqConfig, drive, filepath, scope),\n operation: 'download',\n expiresAt: Date.now() + expirationMs,\n },\n config.secureUrlSecret,\n );\n\n // Build the secure URL\n const baseUrl = getSecureUrlBaseUrl(config);\n const url = `${baseUrl}/secure-download?token=${token}`;\n\n return actionResult(url);\n } catch (error: unknown) {\n // Name-keyed, not instanceof: under npm link / module federation the\n // error can come from another copy of quidproquo-core.\n return actionResultErrorFromCaughtError(error, {\n InvalidScopeError: (error) => actionResultError(askFileGenerateTemporarySecureUrl.errorType.InvalidScope, error.message),\n });\n }\n };\n};\n\nexport const getFileGenerateTemporarySecureUrlActionProcessor = (config: FileStorageConfig) =>\n createActionProcessor(askFileGenerateTemporarySecureUrl, (qpqConfig) => getProcessFileGenerateTemporarySecureUrl(qpqConfig, config));\n"]}
|
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
import { ActionProcessorListResolver } from 'quidproquo-core';
|
|
2
1
|
import { FileStorageConfig } from './types';
|
|
3
|
-
export declare const getFileGenerateTemporaryUploadSecureUrlActionProcessor: (config: FileStorageConfig) => ActionProcessorListResolver;
|
|
2
|
+
export declare const getFileGenerateTemporaryUploadSecureUrlActionProcessor: (config: FileStorageConfig) => import("quidproquo-core").ActionProcessorListResolver;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { actionResult, actionResultError, actionResultErrorFromCaughtError,
|
|
1
|
+
import { actionResult, actionResultError, actionResultErrorFromCaughtError, askFileGenerateTemporaryUploadSecureUrl, createActionProcessor, } from 'quidproquo-core';
|
|
2
2
|
import { createSecureUrlToken, getSecureUrlBaseUrl } from './secureUrlUtils';
|
|
3
3
|
import { resolveFilePath } from './utils';
|
|
4
4
|
// Mirror the AWS processor's SigV4 limit (7 days) so a story that would fail
|
|
@@ -7,7 +7,7 @@ const maxExpirationMs = 7 * 24 * 60 * 60 * 1000;
|
|
|
7
7
|
const getProcessFileGenerateTemporaryUploadSecureUrl = (qpqConfig, config) => {
|
|
8
8
|
return async ({ drive, filepath, expirationMs, contentType, scope }) => {
|
|
9
9
|
if (expirationMs > maxExpirationMs) {
|
|
10
|
-
return actionResultError(
|
|
10
|
+
return actionResultError(askFileGenerateTemporaryUploadSecureUrl.errorType.ExpirationTooLong, 'Expiration exceeds the 7 day maximum for presigned URLs');
|
|
11
11
|
}
|
|
12
12
|
try {
|
|
13
13
|
const expiresAt = Date.now() + expirationMs;
|
|
@@ -28,12 +28,10 @@ const getProcessFileGenerateTemporaryUploadSecureUrl = (qpqConfig, config) => {
|
|
|
28
28
|
// Name-keyed, not instanceof: under npm link / module federation the
|
|
29
29
|
// error can come from another copy of quidproquo-core.
|
|
30
30
|
return actionResultErrorFromCaughtError(error, {
|
|
31
|
-
InvalidScopeError: (error) => actionResultError(
|
|
31
|
+
InvalidScopeError: (error) => actionResultError(askFileGenerateTemporaryUploadSecureUrl.errorType.InvalidScope, error.message),
|
|
32
32
|
});
|
|
33
33
|
}
|
|
34
34
|
};
|
|
35
35
|
};
|
|
36
|
-
export const getFileGenerateTemporaryUploadSecureUrlActionProcessor = (config) =>
|
|
37
|
-
[FileActionType.GenerateTemporaryUploadSecureUrl]: getProcessFileGenerateTemporaryUploadSecureUrl(qpqConfig, config),
|
|
38
|
-
});
|
|
36
|
+
export const getFileGenerateTemporaryUploadSecureUrlActionProcessor = (config) => createActionProcessor(askFileGenerateTemporaryUploadSecureUrl, (qpqConfig) => getProcessFileGenerateTemporaryUploadSecureUrl(qpqConfig, config));
|
|
39
37
|
//# sourceMappingURL=getFileGenerateTemporaryUploadSecureUrlActionProcessor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getFileGenerateTemporaryUploadSecureUrlActionProcessor.js","sourceRoot":"","sources":["../../../../src/dynamicActionProcessor/file/getFileGenerateTemporaryUploadSecureUrlActionProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"getFileGenerateTemporaryUploadSecureUrlActionProcessor.js","sourceRoot":"","sources":["../../../../src/dynamicActionProcessor/file/getFileGenerateTemporaryUploadSecureUrlActionProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,gCAAgC,EAChC,uCAAuC,EACvC,qBAAqB,GAItB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAE7E,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE1C,6EAA6E;AAC7E,sDAAsD;AACtD,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAEhD,MAAM,8CAA8C,GAAG,CACrD,SAAoB,EACpB,MAAyB,EACqC,EAAE;IAChE,OAAO,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,EAAE;QACrE,IAAI,YAAY,GAAG,eAAe,EAAE,CAAC;YACnC,OAAO,iBAAiB,CACtB,uCAAuC,CAAC,SAAS,CAAC,iBAAiB,EACnE,yDAAyD,CAC1D,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY,CAAC;YAE5C,4BAA4B;YAC5B,MAAM,KAAK,GAAG,oBAAoB,CAChC;gBACE,YAAY,EAAE,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC;gBACxE,SAAS,EAAE,QAAQ;gBACnB,SAAS;gBACT,WAAW;aACZ,EACD,MAAM,CAAC,eAAe,CACvB,CAAC;YAEF,uBAAuB;YACvB,MAAM,OAAO,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;YAC5C,MAAM,GAAG,GAAG,GAAG,OAAO,wBAAwB,KAAK,EAAE,CAAC;YAEtD,OAAO,CAAC,GAAG,CAAC,4BAA4B,QAAQ,aAAa,KAAK,gBAAgB,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YAEvH,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,qEAAqE;YACrE,uDAAuD;YACvD,OAAO,gCAAgC,CAAC,KAAK,EAAE;gBAC7C,iBAAiB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,iBAAiB,CAAC,uCAAuC,CAAC,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC;aAC/H,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,sDAAsD,GAAG,CAAC,MAAyB,EAAE,EAAE,CAClG,qBAAqB,CAAC,uCAAuC,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,8CAA8C,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC","sourcesContent":["import {\n actionResult,\n actionResultError,\n actionResultErrorFromCaughtError,\n askFileGenerateTemporaryUploadSecureUrl,\n createActionProcessor,\n FileActionType,\n ProcessorFor,\n QPQConfig,\n} from 'quidproquo-core';\n\nimport { createSecureUrlToken, getSecureUrlBaseUrl } from './secureUrlUtils';\nimport { FileStorageConfig } from './types';\nimport { resolveFilePath } from './utils';\n\n// Mirror the AWS processor's SigV4 limit (7 days) so a story that would fail\n// in production fails the same way on the dev server.\nconst maxExpirationMs = 7 * 24 * 60 * 60 * 1000;\n\nconst getProcessFileGenerateTemporaryUploadSecureUrl = (\n qpqConfig: QPQConfig,\n config: FileStorageConfig,\n): ProcessorFor<typeof askFileGenerateTemporaryUploadSecureUrl> => {\n return async ({ drive, filepath, expirationMs, contentType, scope }) => {\n if (expirationMs > maxExpirationMs) {\n return actionResultError(\n askFileGenerateTemporaryUploadSecureUrl.errorType.ExpirationTooLong,\n 'Expiration exceeds the 7 day maximum for presigned URLs',\n );\n }\n\n try {\n const expiresAt = Date.now() + expirationMs;\n\n // Create a token for upload\n const token = createSecureUrlToken(\n {\n fullFilepath: resolveFilePath(config, qpqConfig, drive, filepath, scope),\n operation: 'upload',\n expiresAt,\n contentType,\n },\n config.secureUrlSecret,\n );\n\n // Build the secure URL\n const baseUrl = getSecureUrlBaseUrl(config);\n const url = `${baseUrl}/secure-upload?token=${token}`;\n\n console.log(`Generated upload URL for ${filepath} in drive ${drive}, expires at ${new Date(expiresAt).toISOString()}`);\n\n return actionResult(url);\n } catch (error: unknown) {\n // Name-keyed, not instanceof: under npm link / module federation the\n // error can come from another copy of quidproquo-core.\n return actionResultErrorFromCaughtError(error, {\n InvalidScopeError: (error) => actionResultError(askFileGenerateTemporaryUploadSecureUrl.errorType.InvalidScope, error.message),\n });\n }\n };\n};\n\nexport const getFileGenerateTemporaryUploadSecureUrlActionProcessor = (config: FileStorageConfig) =>\n createActionProcessor(askFileGenerateTemporaryUploadSecureUrl, (qpqConfig) => getProcessFileGenerateTemporaryUploadSecureUrl(qpqConfig, config));\n"]}
|
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
import { ActionProcessorListResolver } from 'quidproquo-core';
|
|
2
1
|
import { FileStorageConfig } from './types';
|
|
3
|
-
export declare const getFileIsColdStorageActionProcessor: (config: FileStorageConfig) => ActionProcessorListResolver;
|
|
2
|
+
export declare const getFileIsColdStorageActionProcessor: (config: FileStorageConfig) => import("quidproquo-core").ActionProcessorListResolver;
|
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
import { actionResult,
|
|
1
|
+
import { actionResult, askFileIsColdStorage, createActionProcessor } from 'quidproquo-core';
|
|
2
2
|
const getProcessFileIsColdStorage = (config) => (qpqConfig) => {
|
|
3
3
|
return async ({ drive, filepath }) => {
|
|
4
4
|
// Local filesystem doesn't have cold storage, always return false
|
|
5
5
|
return actionResult(false);
|
|
6
6
|
};
|
|
7
7
|
};
|
|
8
|
-
export const getFileIsColdStorageActionProcessor = (config) =>
|
|
9
|
-
[FileActionType.IsColdStorage]: getProcessFileIsColdStorage(config)(qpqConfig),
|
|
10
|
-
});
|
|
8
|
+
export const getFileIsColdStorageActionProcessor = (config) => createActionProcessor(askFileIsColdStorage, (qpqConfig) => getProcessFileIsColdStorage(config)(qpqConfig));
|
|
11
9
|
//# sourceMappingURL=getFileIsColdStorageActionProcessor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getFileIsColdStorageActionProcessor.js","sourceRoot":"","sources":["../../../../src/dynamicActionProcessor/file/getFileIsColdStorageActionProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"getFileIsColdStorageActionProcessor.js","sourceRoot":"","sources":["../../../../src/dynamicActionProcessor/file/getFileIsColdStorageActionProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,qBAAqB,EAA2C,MAAM,iBAAiB,CAAC;AAIrI,MAAM,2BAA2B,GAC/B,CAAC,MAAyB,EAAE,EAAE,CAC9B,CAAC,SAAoB,EAA6C,EAAE;IAClE,OAAO,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;QACnC,kEAAkE;QAClE,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC,CAAC;AACJ,CAAC,CAAC;AAEJ,MAAM,CAAC,MAAM,mCAAmC,GAAG,CAAC,MAAyB,EAAE,EAAE,CAC/E,qBAAqB,CAAC,oBAAoB,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC","sourcesContent":["import { actionResult, askFileIsColdStorage, createActionProcessor, FileActionType, ProcessorFor, QPQConfig } from 'quidproquo-core';\n\nimport { FileStorageConfig } from './types';\n\nconst getProcessFileIsColdStorage =\n (config: FileStorageConfig) =>\n (qpqConfig: QPQConfig): ProcessorFor<typeof askFileIsColdStorage> => {\n return async ({ drive, filepath }) => {\n // Local filesystem doesn't have cold storage, always return false\n return actionResult(false);\n };\n };\n\nexport const getFileIsColdStorageActionProcessor = (config: FileStorageConfig) =>\n createActionProcessor(askFileIsColdStorage, (qpqConfig) => getProcessFileIsColdStorage(config)(qpqConfig));\n"]}
|
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
import { ActionProcessorListResolver } from 'quidproquo-core';
|
|
2
1
|
import { FileStorageConfig } from './types';
|
|
3
|
-
export declare const getFileListDirectoryActionProcessor: (config: FileStorageConfig) => ActionProcessorListResolver;
|
|
2
|
+
export declare const getFileListDirectoryActionProcessor: (config: FileStorageConfig) => import("quidproquo-core").ActionProcessorListResolver;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { actionResult, actionResultError, actionResultErrorFromCaughtError,
|
|
1
|
+
import { actionResult, actionResultError, actionResultErrorFromCaughtError, askFileListDirectory, createActionProcessor, } from 'quidproquo-core';
|
|
2
2
|
import * as fs from 'fs/promises';
|
|
3
3
|
import * as path from 'path';
|
|
4
4
|
import { resolveFilePath } from './utils';
|
|
@@ -35,15 +35,13 @@ const getProcessFileListDirectory = (config) => (qpqConfig) => {
|
|
|
35
35
|
}
|
|
36
36
|
catch (error) {
|
|
37
37
|
return actionResultErrorFromCaughtError(error, {
|
|
38
|
-
InvalidScopeError: (error) => actionResultError(
|
|
39
|
-
ENOENT: () => actionResultError(
|
|
40
|
-
ENOTDIR: () => actionResultError(
|
|
41
|
-
EACCES: () => actionResultError(
|
|
38
|
+
InvalidScopeError: (error) => actionResultError(askFileListDirectory.errorType.InvalidScope, error.message),
|
|
39
|
+
ENOENT: () => actionResultError(askFileListDirectory.errorType.DirectoryNotFound, `Directory not found: ${folderPath}`), // node fs code
|
|
40
|
+
ENOTDIR: () => actionResultError(askFileListDirectory.errorType.NotADirectory, `Path is not a directory: ${folderPath}`), // node fs code
|
|
41
|
+
EACCES: () => actionResultError(askFileListDirectory.errorType.AccessDenied, `Access denied listing directory: ${folderPath}`), // node fs code
|
|
42
42
|
});
|
|
43
43
|
}
|
|
44
44
|
};
|
|
45
45
|
};
|
|
46
|
-
export const getFileListDirectoryActionProcessor = (config) =>
|
|
47
|
-
[FileActionType.ListDirectory]: getProcessFileListDirectory(config)(qpqConfig),
|
|
48
|
-
});
|
|
46
|
+
export const getFileListDirectoryActionProcessor = (config) => createActionProcessor(askFileListDirectory, (qpqConfig) => getProcessFileListDirectory(config)(qpqConfig));
|
|
49
47
|
//# sourceMappingURL=getFileListDirectoryActionProcessor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getFileListDirectoryActionProcessor.js","sourceRoot":"","sources":["../../../../src/dynamicActionProcessor/file/getFileListDirectoryActionProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"getFileListDirectoryActionProcessor.js","sourceRoot":"","sources":["../../../../src/dynamicActionProcessor/file/getFileListDirectoryActionProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,gCAAgC,EAChC,oBAAoB,EACpB,qBAAqB,GAMtB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAG7B,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE1C,MAAM,2BAA2B,GAC/B,CAAC,MAAyB,EAAE,EAAE,CAC9B,CAAC,SAAoB,EAA6C,EAAE;IAClE,OAAO,KAAK,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE;QACjE,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC;YAEpF,oCAAoC;YACpC,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YAEpE,uBAAuB;YACvB,MAAM,QAAQ,GAAe,EAAE,CAAC;YAChC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,QAAQ,CAAC,IAAI,CAAC;oBACZ,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC;oBACjD,KAAK,EAAE,KAAK;oBACZ,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE;oBAC1B,OAAO,EAAE,SAAS;iBACnB,CAAC,CAAC;YACL,CAAC;YAED,6CAA6C;YAC7C,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;YAE9D,oBAAoB;YACpB,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3D,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;YAClE,MAAM,cAAc,GAAG,QAAQ,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YAE5D,MAAM,MAAM,GAAkB;gBAC5B,SAAS,EAAE,cAAc;aAC1B,CAAC;YAEF,yCAAyC;YACzC,IAAI,QAAQ,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;gBAC/B,MAAM,CAAC,SAAS,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACzC,CAAC;YAED,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,gCAAgC,CAAC,KAAK,EAAE;gBAC7C,iBAAiB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC;gBAC3G,MAAM,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,SAAS,CAAC,iBAAiB,EAAE,wBAAwB,UAAU,EAAE,CAAC,EAAE,eAAe;gBACxI,OAAO,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,SAAS,CAAC,aAAa,EAAE,4BAA4B,UAAU,EAAE,CAAC,EAAE,eAAe;gBACzI,MAAM,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,SAAS,CAAC,YAAY,EAAE,oCAAoC,UAAU,EAAE,CAAC,EAAE,eAAe;aAChJ,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;AACJ,CAAC,CAAC;AAEJ,MAAM,CAAC,MAAM,mCAAmC,GAAG,CAAC,MAAyB,EAAE,EAAE,CAC/E,qBAAqB,CAAC,oBAAoB,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC","sourcesContent":["import {\n actionResult,\n actionResultError,\n actionResultErrorFromCaughtError,\n askFileListDirectory,\n createActionProcessor,\n DirectoryList,\n FileActionType,\n FileInfo,\n ProcessorFor,\n QPQConfig,\n} from 'quidproquo-core';\n\nimport * as fs from 'fs/promises';\nimport * as path from 'path';\n\nimport { FileStorageConfig } from './types';\nimport { resolveFilePath } from './utils';\n\nconst getProcessFileListDirectory =\n (config: FileStorageConfig) =>\n (qpqConfig: QPQConfig): ProcessorFor<typeof askFileListDirectory> => {\n return async ({ drive, folderPath, maxFiles, pageToken, scope }) => {\n try {\n const fullPath = resolveFilePath(config, qpqConfig, drive, folderPath || '', scope);\n\n // Read all entries in the directory\n const entries = await fs.readdir(fullPath, { withFileTypes: true });\n\n // Build file info list\n const allFiles: FileInfo[] = [];\n for (const entry of entries) {\n allFiles.push({\n filepath: path.join(folderPath || '', entry.name),\n drive: drive,\n isDir: entry.isDirectory(),\n hashMd5: undefined,\n });\n }\n\n // Sort by filepath for consistent pagination\n allFiles.sort((a, b) => a.filepath.localeCompare(b.filepath));\n\n // Handle pagination\n const startIndex = pageToken ? parseInt(pageToken, 10) : 0;\n const endIndex = Math.min(startIndex + maxFiles, allFiles.length);\n const paginatedFiles = allFiles.slice(startIndex, endIndex);\n\n const result: DirectoryList = {\n fileInfos: paginatedFiles,\n };\n\n // Add page token if there are more files\n if (endIndex < allFiles.length) {\n result.pageToken = endIndex.toString();\n }\n\n return actionResult(result);\n } catch (error: unknown) {\n return actionResultErrorFromCaughtError(error, {\n InvalidScopeError: (error) => actionResultError(askFileListDirectory.errorType.InvalidScope, error.message),\n ENOENT: () => actionResultError(askFileListDirectory.errorType.DirectoryNotFound, `Directory not found: ${folderPath}`), // node fs code\n ENOTDIR: () => actionResultError(askFileListDirectory.errorType.NotADirectory, `Path is not a directory: ${folderPath}`), // node fs code\n EACCES: () => actionResultError(askFileListDirectory.errorType.AccessDenied, `Access denied listing directory: ${folderPath}`), // node fs code\n });\n }\n };\n };\n\nexport const getFileListDirectoryActionProcessor = (config: FileStorageConfig) =>\n createActionProcessor(askFileListDirectory, (qpqConfig) => getProcessFileListDirectory(config)(qpqConfig));\n"]}
|
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
import { ActionProcessorListResolver } from 'quidproquo-core';
|
|
2
1
|
import { FileStorageConfig } from './types';
|
|
3
|
-
export declare const getFileReadBinaryContentsActionProcessor: (config: FileStorageConfig) => ActionProcessorListResolver;
|
|
2
|
+
export declare const getFileReadBinaryContentsActionProcessor: (config: FileStorageConfig) => import("quidproquo-core").ActionProcessorListResolver;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { actionResult, actionResultError, actionResultErrorFromCaughtError,
|
|
1
|
+
import { actionResult, actionResultError, actionResultErrorFromCaughtError, askFileReadBinaryContents, createActionProcessor, } from 'quidproquo-core';
|
|
2
2
|
import * as fs from 'fs/promises';
|
|
3
3
|
import * as path from 'path';
|
|
4
4
|
import { resolveFilePath } from './utils';
|
|
@@ -17,13 +17,11 @@ const getProcessFileReadBinaryContents = (config) => (qpqConfig) => {
|
|
|
17
17
|
}
|
|
18
18
|
catch (error) {
|
|
19
19
|
return actionResultErrorFromCaughtError(error, {
|
|
20
|
-
InvalidScopeError: (error) => actionResultError(
|
|
21
|
-
ENOENT: () => actionResultError(
|
|
20
|
+
InvalidScopeError: (error) => actionResultError(askFileReadBinaryContents.errorType.InvalidScope, error.message),
|
|
21
|
+
ENOENT: () => actionResultError(askFileReadBinaryContents.errorType.FileNotFound, `File not found: ${filepath}`), // node fs code
|
|
22
22
|
});
|
|
23
23
|
}
|
|
24
24
|
};
|
|
25
25
|
};
|
|
26
|
-
export const getFileReadBinaryContentsActionProcessor = (config) =>
|
|
27
|
-
[FileActionType.ReadBinaryContents]: getProcessFileReadBinaryContents(config)(qpqConfig),
|
|
28
|
-
});
|
|
26
|
+
export const getFileReadBinaryContentsActionProcessor = (config) => createActionProcessor(askFileReadBinaryContents, (qpqConfig) => getProcessFileReadBinaryContents(config)(qpqConfig));
|
|
29
27
|
//# sourceMappingURL=getFileReadBinaryContentsActionProcessor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getFileReadBinaryContentsActionProcessor.js","sourceRoot":"","sources":["../../../../src/dynamicActionProcessor/file/getFileReadBinaryContentsActionProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"getFileReadBinaryContentsActionProcessor.js","sourceRoot":"","sources":["../../../../src/dynamicActionProcessor/file/getFileReadBinaryContentsActionProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,gCAAgC,EAChC,yBAAyB,EACzB,qBAAqB,GAKtB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAG7B,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE1C,MAAM,gCAAgC,GACpC,CAAC,MAAyB,EAAE,EAAE,CAC9B,CAAC,SAAoB,EAAkD,EAAE;IACvE,OAAO,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE;QAC1C,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;YAC5E,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAE3C,kCAAkC;YAClC,MAAM,UAAU,GAAkB;gBAChC,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBACrC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBACjC,QAAQ,EAAE,0BAA0B,EAAE,oCAAoC;aAC3E,CAAC;YAEF,OAAO,YAAY,CAAC,UAAU,CAAC,CAAC;QAClC,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,gCAAgC,CAAC,KAAK,EAAE;gBAC7C,iBAAiB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,iBAAiB,CAAC,yBAAyB,CAAC,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC;gBAChH,MAAM,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,yBAAyB,CAAC,SAAS,CAAC,YAAY,EAAE,mBAAmB,QAAQ,EAAE,CAAC,EAAE,eAAe;aAClI,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;AACJ,CAAC,CAAC;AAEJ,MAAM,CAAC,MAAM,wCAAwC,GAAG,CAAC,MAAyB,EAAE,EAAE,CACpF,qBAAqB,CAAC,yBAAyB,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,gCAAgC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC","sourcesContent":["import {\n actionResult,\n actionResultError,\n actionResultErrorFromCaughtError,\n askFileReadBinaryContents,\n createActionProcessor,\n FileActionType,\n ProcessorFor,\n QPQBinaryData,\n QPQConfig,\n} from 'quidproquo-core';\n\nimport * as fs from 'fs/promises';\nimport * as path from 'path';\n\nimport { FileStorageConfig } from './types';\nimport { resolveFilePath } from './utils';\n\nconst getProcessFileReadBinaryContents =\n (config: FileStorageConfig) =>\n (qpqConfig: QPQConfig): ProcessorFor<typeof askFileReadBinaryContents> => {\n return async ({ drive, filepath, scope }) => {\n try {\n const fullPath = resolveFilePath(config, qpqConfig, drive, filepath, scope);\n const buffer = await fs.readFile(fullPath);\n\n // Convert Buffer to QPQBinaryData\n const binaryData: QPQBinaryData = {\n base64Data: buffer.toString('base64'),\n filename: path.basename(filepath),\n mimetype: 'application/octet-stream', // Default mimetype for binary files\n };\n\n return actionResult(binaryData);\n } catch (error: unknown) {\n return actionResultErrorFromCaughtError(error, {\n InvalidScopeError: (error) => actionResultError(askFileReadBinaryContents.errorType.InvalidScope, error.message),\n ENOENT: () => actionResultError(askFileReadBinaryContents.errorType.FileNotFound, `File not found: ${filepath}`), // node fs code\n });\n }\n };\n };\n\nexport const getFileReadBinaryContentsActionProcessor = (config: FileStorageConfig) =>\n createActionProcessor(askFileReadBinaryContents, (qpqConfig) => getProcessFileReadBinaryContents(config)(qpqConfig));\n"]}
|
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
import { ActionProcessorListResolver } from 'quidproquo-core';
|
|
2
1
|
import { FileStorageConfig } from './types';
|
|
3
|
-
export declare const getFileReadObjectJsonActionProcessor: (config: FileStorageConfig) => ActionProcessorListResolver;
|
|
2
|
+
export declare const getFileReadObjectJsonActionProcessor: (config: FileStorageConfig) => import("quidproquo-core").ActionProcessorListResolver;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { actionResult, actionResultError, actionResultErrorFromCaughtError,
|
|
1
|
+
import { actionResult, actionResultError, actionResultErrorFromCaughtError, askFileReadObjectJsonBase, createActionProcessor, } from 'quidproquo-core';
|
|
2
2
|
import * as fs from 'fs/promises';
|
|
3
3
|
import { resolveFilePath } from './utils';
|
|
4
4
|
const getProcessFileReadObjectJson = (config) => (qpqConfig) => {
|
|
@@ -11,14 +11,12 @@ const getProcessFileReadObjectJson = (config) => (qpqConfig) => {
|
|
|
11
11
|
}
|
|
12
12
|
catch (error) {
|
|
13
13
|
return actionResultErrorFromCaughtError(error, {
|
|
14
|
-
InvalidScopeError: (error) => actionResultError(
|
|
15
|
-
ENOENT: () => actionResultError(
|
|
16
|
-
SyntaxError: () => actionResultError(
|
|
14
|
+
InvalidScopeError: (error) => actionResultError(askFileReadObjectJsonBase.errorType.InvalidScope, error.message),
|
|
15
|
+
ENOENT: () => actionResultError(askFileReadObjectJsonBase.errorType.FileNotFound, `File not found: ${filepath}`), // node fs code
|
|
16
|
+
SyntaxError: () => actionResultError(askFileReadObjectJsonBase.errorType.InvalidJson, `Invalid JSON in file: ${filepath}`), // JSON.parse failure
|
|
17
17
|
});
|
|
18
18
|
}
|
|
19
19
|
};
|
|
20
20
|
};
|
|
21
|
-
export const getFileReadObjectJsonActionProcessor = (config) =>
|
|
22
|
-
[FileActionType.ReadObjectJson]: getProcessFileReadObjectJson(config)(qpqConfig),
|
|
23
|
-
});
|
|
21
|
+
export const getFileReadObjectJsonActionProcessor = (config) => createActionProcessor(askFileReadObjectJsonBase, (qpqConfig) => getProcessFileReadObjectJson(config)(qpqConfig));
|
|
24
22
|
//# sourceMappingURL=getFileReadObjectJsonActionProcessor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getFileReadObjectJsonActionProcessor.js","sourceRoot":"","sources":["../../../../src/dynamicActionProcessor/file/getFileReadObjectJsonActionProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"getFileReadObjectJsonActionProcessor.js","sourceRoot":"","sources":["../../../../src/dynamicActionProcessor/file/getFileReadObjectJsonActionProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,gCAAgC,EAChC,yBAAyB,EACzB,qBAAqB,GAItB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAGlC,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE1C,MAAM,4BAA4B,GAChC,CAAC,MAAyB,EAAE,EAAE,CAC9B,CAAC,SAAoB,EAAkD,EAAE;IACvE,OAAO,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE;QAC1C,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;YAC5E,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACpD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACvC,OAAO,YAAY,CAAC,UAAU,CAAC,CAAC;QAClC,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,gCAAgC,CAAC,KAAK,EAAE;gBAC7C,iBAAiB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,iBAAiB,CAAC,yBAAyB,CAAC,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC;gBAChH,MAAM,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,yBAAyB,CAAC,SAAS,CAAC,YAAY,EAAE,mBAAmB,QAAQ,EAAE,CAAC,EAAE,eAAe;gBACjI,WAAW,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,yBAAyB,CAAC,SAAS,CAAC,WAAW,EAAE,yBAAyB,QAAQ,EAAE,CAAC,EAAE,qBAAqB;aAClJ,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;AACJ,CAAC,CAAC;AAEJ,MAAM,CAAC,MAAM,oCAAoC,GAAG,CAAC,MAAyB,EAAE,EAAE,CAChF,qBAAqB,CAAC,yBAAyB,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,4BAA4B,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC","sourcesContent":["import {\n actionResult,\n actionResultError,\n actionResultErrorFromCaughtError,\n askFileReadObjectJsonBase,\n createActionProcessor,\n FileActionType,\n ProcessorFor,\n QPQConfig,\n} from 'quidproquo-core';\n\nimport * as fs from 'fs/promises';\n\nimport { FileStorageConfig } from './types';\nimport { resolveFilePath } from './utils';\n\nconst getProcessFileReadObjectJson =\n (config: FileStorageConfig) =>\n (qpqConfig: QPQConfig): ProcessorFor<typeof askFileReadObjectJsonBase> => {\n return async ({ drive, filepath, scope }) => {\n try {\n const fullPath = resolveFilePath(config, qpqConfig, drive, filepath, scope);\n const content = await fs.readFile(fullPath, 'utf8');\n const jsonObject = JSON.parse(content);\n return actionResult(jsonObject);\n } catch (error: unknown) {\n return actionResultErrorFromCaughtError(error, {\n InvalidScopeError: (error) => actionResultError(askFileReadObjectJsonBase.errorType.InvalidScope, error.message),\n ENOENT: () => actionResultError(askFileReadObjectJsonBase.errorType.FileNotFound, `File not found: ${filepath}`), // node fs code\n SyntaxError: () => actionResultError(askFileReadObjectJsonBase.errorType.InvalidJson, `Invalid JSON in file: ${filepath}`), // JSON.parse failure\n });\n }\n };\n };\n\nexport const getFileReadObjectJsonActionProcessor = (config: FileStorageConfig) =>\n createActionProcessor(askFileReadObjectJsonBase, (qpqConfig) => getProcessFileReadObjectJson(config)(qpqConfig));\n"]}
|
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
import { ActionProcessorListResolver } from 'quidproquo-core';
|
|
2
1
|
import { FileStorageConfig } from './types';
|
|
3
|
-
export declare const getFileReadTextContentsActionProcessor: (config: FileStorageConfig) => ActionProcessorListResolver;
|
|
2
|
+
export declare const getFileReadTextContentsActionProcessor: (config: FileStorageConfig) => import("quidproquo-core").ActionProcessorListResolver;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { actionResult, actionResultError, actionResultErrorFromCaughtError,
|
|
1
|
+
import { actionResult, actionResultError, actionResultErrorFromCaughtError, askFileReadTextContents, createActionProcessor, } from 'quidproquo-core';
|
|
2
2
|
import * as fs from 'fs/promises';
|
|
3
3
|
import { resolveFilePath } from './utils';
|
|
4
4
|
const getProcessFileReadTextContents = (qpqConfig, config) => {
|
|
@@ -10,13 +10,11 @@ const getProcessFileReadTextContents = (qpqConfig, config) => {
|
|
|
10
10
|
}
|
|
11
11
|
catch (error) {
|
|
12
12
|
return actionResultErrorFromCaughtError(error, {
|
|
13
|
-
InvalidScopeError: (error) => actionResultError(
|
|
14
|
-
ENOENT: () => actionResultError(
|
|
13
|
+
InvalidScopeError: (error) => actionResultError(askFileReadTextContents.errorType.InvalidScope, error.message),
|
|
14
|
+
ENOENT: () => actionResultError(askFileReadTextContents.errorType.FileNotFound, `File not found: ${filepath}`), // node fs code
|
|
15
15
|
});
|
|
16
16
|
}
|
|
17
17
|
};
|
|
18
18
|
};
|
|
19
|
-
export const getFileReadTextContentsActionProcessor = (config) =>
|
|
20
|
-
[FileActionType.ReadTextContents]: getProcessFileReadTextContents(qpqConfig, config),
|
|
21
|
-
});
|
|
19
|
+
export const getFileReadTextContentsActionProcessor = (config) => createActionProcessor(askFileReadTextContents, (qpqConfig) => getProcessFileReadTextContents(qpqConfig, config));
|
|
22
20
|
//# sourceMappingURL=getFileReadTextContentsActionProcessor.js.map
|