quidproquo-actionprocessor-node 0.1.3 → 0.1.5
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/lib/commonjs/actionProcessor/core/index.js +1 -0
- package/lib/commonjs/actionProcessor/core/index.js.map +1 -0
- package/lib/commonjs/actionProcessor/core/inlineFunction/getInlineFunctionExecuteActionProcessor.js +1 -0
- package/lib/commonjs/actionProcessor/core/inlineFunction/getInlineFunctionExecuteActionProcessor.js.map +1 -0
- package/lib/commonjs/actionProcessor/core/inlineFunction/index.js +1 -0
- package/lib/commonjs/actionProcessor/core/inlineFunction/index.js.map +1 -0
- package/lib/commonjs/actionProcessor/core/stream/getStreamCloseActionProcessor.js +1 -0
- package/lib/commonjs/actionProcessor/core/stream/getStreamCloseActionProcessor.js.map +1 -0
- package/lib/commonjs/actionProcessor/core/stream/getStreamReadActionProcessor.js +1 -0
- package/lib/commonjs/actionProcessor/core/stream/getStreamReadActionProcessor.js.map +1 -0
- package/lib/commonjs/actionProcessor/core/stream/index.js +1 -0
- package/lib/commonjs/actionProcessor/core/stream/index.js.map +1 -0
- package/lib/commonjs/actionProcessor/index.js +1 -0
- package/lib/commonjs/actionProcessor/index.js.map +1 -0
- package/lib/commonjs/actionProcessor/webserver/index.js +1 -0
- package/lib/commonjs/actionProcessor/webserver/index.js.map +1 -0
- package/lib/commonjs/dynamicActionProcessor/file/getFileDeleteActionProcessor.js +1 -0
- package/lib/commonjs/dynamicActionProcessor/file/getFileDeleteActionProcessor.js.map +1 -0
- package/lib/commonjs/dynamicActionProcessor/file/getFileExistsActionProcessor.js +1 -0
- package/lib/commonjs/dynamicActionProcessor/file/getFileExistsActionProcessor.js.map +1 -0
- package/lib/commonjs/dynamicActionProcessor/file/getFileGenerateTemporarySecureUrlActionProcessor.js +1 -0
- package/lib/commonjs/dynamicActionProcessor/file/getFileGenerateTemporarySecureUrlActionProcessor.js.map +1 -0
- package/lib/commonjs/dynamicActionProcessor/file/getFileGenerateTemporaryUploadSecureUrlActionProcessor.js +1 -0
- package/lib/commonjs/dynamicActionProcessor/file/getFileGenerateTemporaryUploadSecureUrlActionProcessor.js.map +1 -0
- package/lib/commonjs/dynamicActionProcessor/file/getFileIsColdStorageActionProcessor.js +1 -0
- package/lib/commonjs/dynamicActionProcessor/file/getFileIsColdStorageActionProcessor.js.map +1 -0
- package/lib/commonjs/dynamicActionProcessor/file/getFileListDirectoryActionProcessor.js +1 -0
- package/lib/commonjs/dynamicActionProcessor/file/getFileListDirectoryActionProcessor.js.map +1 -0
- package/lib/commonjs/dynamicActionProcessor/file/getFileReadBinaryContentsActionProcessor.js +1 -0
- package/lib/commonjs/dynamicActionProcessor/file/getFileReadBinaryContentsActionProcessor.js.map +1 -0
- package/lib/commonjs/dynamicActionProcessor/file/getFileReadObjectJsonActionProcessor.js +1 -0
- package/lib/commonjs/dynamicActionProcessor/file/getFileReadObjectJsonActionProcessor.js.map +1 -0
- package/lib/commonjs/dynamicActionProcessor/file/getFileReadTextContentsActionProcessor.js +1 -0
- package/lib/commonjs/dynamicActionProcessor/file/getFileReadTextContentsActionProcessor.js.map +1 -0
- package/lib/commonjs/dynamicActionProcessor/file/getFileStreamOpenActionProcessor.js +1 -0
- package/lib/commonjs/dynamicActionProcessor/file/getFileStreamOpenActionProcessor.js.map +1 -0
- package/lib/commonjs/dynamicActionProcessor/file/getFileWriteBinaryContentsActionProcessor.js +1 -0
- package/lib/commonjs/dynamicActionProcessor/file/getFileWriteBinaryContentsActionProcessor.js.map +1 -0
- package/lib/commonjs/dynamicActionProcessor/file/getFileWriteObjectJsonActionProcessor.js +1 -0
- package/lib/commonjs/dynamicActionProcessor/file/getFileWriteObjectJsonActionProcessor.js.map +1 -0
- package/lib/commonjs/dynamicActionProcessor/file/getFileWriteTextContentsActionProcessor.js +1 -0
- package/lib/commonjs/dynamicActionProcessor/file/getFileWriteTextContentsActionProcessor.js.map +1 -0
- package/lib/commonjs/dynamicActionProcessor/file/index.js +1 -0
- package/lib/commonjs/dynamicActionProcessor/file/index.js.map +1 -0
- package/lib/commonjs/dynamicActionProcessor/file/secureUrlUtils.js +1 -0
- package/lib/commonjs/dynamicActionProcessor/file/secureUrlUtils.js.map +1 -0
- package/lib/commonjs/dynamicActionProcessor/file/types.js +1 -0
- package/lib/commonjs/dynamicActionProcessor/file/types.js.map +1 -0
- package/lib/commonjs/dynamicActionProcessor/file/utils.js +1 -0
- package/lib/commonjs/dynamicActionProcessor/file/utils.js.map +1 -0
- package/lib/commonjs/dynamicActionProcessor/index.js +1 -0
- package/lib/commonjs/dynamicActionProcessor/index.js.map +1 -0
- package/lib/commonjs/index.d.ts +1 -0
- package/lib/commonjs/index.js +2 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/traceStoryExecution/controllerWorker.d.ts +11 -0
- package/lib/commonjs/traceStoryExecution/controllerWorker.js +409 -0
- package/lib/commonjs/traceStoryExecution/controllerWorker.js.map +1 -0
- package/lib/commonjs/traceStoryExecution/getSystemTraceStoryActionProcessor.d.ts +2 -0
- package/lib/commonjs/traceStoryExecution/getSystemTraceStoryActionProcessor.js +47 -0
- package/lib/commonjs/traceStoryExecution/getSystemTraceStoryActionProcessor.js.map +1 -0
- package/lib/commonjs/traceStoryExecution/index.d.ts +2 -0
- package/lib/commonjs/traceStoryExecution/index.js +19 -0
- package/lib/commonjs/traceStoryExecution/index.js.map +1 -0
- package/lib/commonjs/traceStoryExecution/resolveSourceMaps.d.ts +19 -0
- package/lib/commonjs/traceStoryExecution/resolveSourceMaps.js +159 -0
- package/lib/commonjs/traceStoryExecution/resolveSourceMaps.js.map +1 -0
- package/lib/commonjs/traceStoryExecution/traceStoryExecution.d.ts +17 -0
- package/lib/commonjs/traceStoryExecution/traceStoryExecution.js +140 -0
- package/lib/commonjs/traceStoryExecution/traceStoryExecution.js.map +1 -0
- package/lib/esm/actionProcessor/core/index.js +1 -0
- package/lib/esm/actionProcessor/core/index.js.map +1 -0
- package/lib/esm/actionProcessor/core/inlineFunction/getInlineFunctionExecuteActionProcessor.js +1 -0
- package/lib/esm/actionProcessor/core/inlineFunction/getInlineFunctionExecuteActionProcessor.js.map +1 -0
- package/lib/esm/actionProcessor/core/inlineFunction/index.js +1 -0
- package/lib/esm/actionProcessor/core/inlineFunction/index.js.map +1 -0
- package/lib/esm/actionProcessor/core/stream/getStreamCloseActionProcessor.js +1 -0
- package/lib/esm/actionProcessor/core/stream/getStreamCloseActionProcessor.js.map +1 -0
- package/lib/esm/actionProcessor/core/stream/getStreamReadActionProcessor.js +1 -0
- package/lib/esm/actionProcessor/core/stream/getStreamReadActionProcessor.js.map +1 -0
- package/lib/esm/actionProcessor/core/stream/index.js +1 -0
- package/lib/esm/actionProcessor/core/stream/index.js.map +1 -0
- package/lib/esm/actionProcessor/index.js +1 -0
- package/lib/esm/actionProcessor/index.js.map +1 -0
- package/lib/esm/actionProcessor/webserver/index.js +1 -0
- package/lib/esm/actionProcessor/webserver/index.js.map +1 -0
- package/lib/esm/dynamicActionProcessor/file/getFileDeleteActionProcessor.js +1 -0
- package/lib/esm/dynamicActionProcessor/file/getFileDeleteActionProcessor.js.map +1 -0
- package/lib/esm/dynamicActionProcessor/file/getFileExistsActionProcessor.js +1 -0
- package/lib/esm/dynamicActionProcessor/file/getFileExistsActionProcessor.js.map +1 -0
- package/lib/esm/dynamicActionProcessor/file/getFileGenerateTemporarySecureUrlActionProcessor.js +1 -0
- package/lib/esm/dynamicActionProcessor/file/getFileGenerateTemporarySecureUrlActionProcessor.js.map +1 -0
- package/lib/esm/dynamicActionProcessor/file/getFileGenerateTemporaryUploadSecureUrlActionProcessor.js +1 -0
- package/lib/esm/dynamicActionProcessor/file/getFileGenerateTemporaryUploadSecureUrlActionProcessor.js.map +1 -0
- package/lib/esm/dynamicActionProcessor/file/getFileIsColdStorageActionProcessor.js +1 -0
- package/lib/esm/dynamicActionProcessor/file/getFileIsColdStorageActionProcessor.js.map +1 -0
- package/lib/esm/dynamicActionProcessor/file/getFileListDirectoryActionProcessor.js +1 -0
- package/lib/esm/dynamicActionProcessor/file/getFileListDirectoryActionProcessor.js.map +1 -0
- package/lib/esm/dynamicActionProcessor/file/getFileReadBinaryContentsActionProcessor.js +1 -0
- package/lib/esm/dynamicActionProcessor/file/getFileReadBinaryContentsActionProcessor.js.map +1 -0
- package/lib/esm/dynamicActionProcessor/file/getFileReadObjectJsonActionProcessor.js +1 -0
- package/lib/esm/dynamicActionProcessor/file/getFileReadObjectJsonActionProcessor.js.map +1 -0
- package/lib/esm/dynamicActionProcessor/file/getFileReadTextContentsActionProcessor.js +1 -0
- package/lib/esm/dynamicActionProcessor/file/getFileReadTextContentsActionProcessor.js.map +1 -0
- package/lib/esm/dynamicActionProcessor/file/getFileStreamOpenActionProcessor.js +1 -0
- package/lib/esm/dynamicActionProcessor/file/getFileStreamOpenActionProcessor.js.map +1 -0
- package/lib/esm/dynamicActionProcessor/file/getFileWriteBinaryContentsActionProcessor.js +1 -0
- package/lib/esm/dynamicActionProcessor/file/getFileWriteBinaryContentsActionProcessor.js.map +1 -0
- package/lib/esm/dynamicActionProcessor/file/getFileWriteObjectJsonActionProcessor.js +1 -0
- package/lib/esm/dynamicActionProcessor/file/getFileWriteObjectJsonActionProcessor.js.map +1 -0
- package/lib/esm/dynamicActionProcessor/file/getFileWriteTextContentsActionProcessor.js +1 -0
- package/lib/esm/dynamicActionProcessor/file/getFileWriteTextContentsActionProcessor.js.map +1 -0
- package/lib/esm/dynamicActionProcessor/file/index.js +1 -0
- package/lib/esm/dynamicActionProcessor/file/index.js.map +1 -0
- package/lib/esm/dynamicActionProcessor/file/secureUrlUtils.js +1 -0
- package/lib/esm/dynamicActionProcessor/file/secureUrlUtils.js.map +1 -0
- package/lib/esm/dynamicActionProcessor/file/types.js +1 -0
- package/lib/esm/dynamicActionProcessor/file/types.js.map +1 -0
- package/lib/esm/dynamicActionProcessor/file/utils.js +1 -0
- package/lib/esm/dynamicActionProcessor/file/utils.js.map +1 -0
- package/lib/esm/dynamicActionProcessor/index.js +1 -0
- package/lib/esm/dynamicActionProcessor/index.js.map +1 -0
- package/lib/esm/index.d.ts +1 -0
- package/lib/esm/index.js +2 -0
- package/lib/esm/index.js.map +1 -0
- package/lib/esm/traceStoryExecution/controllerWorker.d.ts +11 -0
- package/lib/esm/traceStoryExecution/controllerWorker.js +406 -0
- package/lib/esm/traceStoryExecution/controllerWorker.js.map +1 -0
- package/lib/esm/traceStoryExecution/getSystemTraceStoryActionProcessor.d.ts +2 -0
- package/lib/esm/traceStoryExecution/getSystemTraceStoryActionProcessor.js +32 -0
- package/lib/esm/traceStoryExecution/getSystemTraceStoryActionProcessor.js.map +1 -0
- package/lib/esm/traceStoryExecution/index.d.ts +2 -0
- package/lib/esm/traceStoryExecution/index.js +3 -0
- package/lib/esm/traceStoryExecution/index.js.map +1 -0
- package/lib/esm/traceStoryExecution/resolveSourceMaps.d.ts +19 -0
- package/lib/esm/traceStoryExecution/resolveSourceMaps.js +118 -0
- package/lib/esm/traceStoryExecution/resolveSourceMaps.js.map +1 -0
- package/lib/esm/traceStoryExecution/traceStoryExecution.d.ts +17 -0
- package/lib/esm/traceStoryExecution/traceStoryExecution.js +126 -0
- package/lib/esm/traceStoryExecution/traceStoryExecution.js.map +1 -0
- package/package.json +7 -5
|
@@ -37,3 +37,4 @@ const getCoreActionProcessor = (qpqConfig, dynamicModuleLoader) => __awaiter(voi
|
|
|
37
37
|
return (Object.assign(Object.assign(Object.assign({}, (yield (0, quidproquo_actionprocessor_js_1.getCoreActionProcessor)(qpqConfig, dynamicModuleLoader))), (yield (0, stream_1.getStreamActionProcessor)(qpqConfig, dynamicModuleLoader))), (yield (0, inlineFunction_1.getInlineFunctionActionProcessor)(qpqConfig, dynamicModuleLoader))));
|
|
38
38
|
});
|
|
39
39
|
exports.getCoreActionProcessor = getCoreActionProcessor;
|
|
40
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/actionProcessor/core/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iFAAmG;AAGnG,qDAAoE;AACpE,qCAAoD;AAEpD,iFAAiF;AACjF,+DAA+D;AAC/D,4EAA4E;AAC5E,gEAAgE;AAChE,mDAAiC;AACjC,2CAAyB;AAElB,MAAM,sBAAsB,GAAgC,CACjE,SAAoB,EACpB,mBAAwC,EACV,EAAE;IAAC,OAAA,+CAC9B,CAAC,MAAM,IAAA,sDAAwB,EAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,GAChE,CAAC,MAAM,IAAA,iCAAwB,EAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,GAChE,CAAC,MAAM,IAAA,iDAAgC,EAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,EAC3E,CAAA;EAAA,CAAC;AAPU,QAAA,sBAAsB,0BAOhC","sourcesContent":["import { getCoreActionProcessor as getJsCoreActionProcessor } from 'quidproquo-actionprocessor-js';\nimport { ActionProcessorList, ActionProcessorListResolver, DynamicModuleLoader, QPQConfig } from 'quidproquo-core';\n\nimport { getInlineFunctionActionProcessor } from './inlineFunction';\nimport { getStreamActionProcessor } from './stream';\n\n// The shared core processors (config, context, claudeAi, date, error, guid, log,\n// math, network, platform, system, customActions) are owned by\n// quidproquo-actionprocessor-js. Node builds on top of js and only adds the\n// processors that need a Node runtime (stream, inlineFunction).\nexport * from './inlineFunction';\nexport * from './stream';\n\nexport const getCoreActionProcessor: ActionProcessorListResolver = async (\n qpqConfig: QPQConfig,\n dynamicModuleLoader: DynamicModuleLoader,\n): Promise<ActionProcessorList> => ({\n ...(await getJsCoreActionProcessor(qpqConfig, dynamicModuleLoader)),\n ...(await getStreamActionProcessor(qpqConfig, dynamicModuleLoader)),\n ...(await getInlineFunctionActionProcessor(qpqConfig, dynamicModuleLoader)),\n});\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getInlineFunctionExecuteActionProcessor.js","sourceRoot":"","sources":["../../../../../src/actionProcessor/core/inlineFunction/getInlineFunctionExecuteActionProcessor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAkByB;AAEzB,mCAAoC;AAEpC,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AAElD,MAAM,iBAAiB,GAAG,CAAO,SAAoB,EAA8C,EAAE;IACnG,MAAM,UAAU,GAAG,8BAAY,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;IAEpE,OAAO,CACL,OAA8C,EAC9C,OAAqB,EACrB,gBAAqC,EACrC,MAAiB,EACjB,aAAkC,EAClC,mBAAwC,EACxC,cAA8B,EAChB,EAAE;QAChB,MAAM,eAAe,GAAG,8BAAY,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,IAAA,mCAAiB,EAAC,+BAAa,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,IAAA,mCAAiB,EAAC,+BAAa,CAAC,QAAQ,EAAE,gDAAgD,OAAO,CAAC,YAAY,GAAG,CAAC,CAAC;QAC5H,CAAC;QAED,MAAM,YAAY,GAAG,IAAA,+BAAa,EAChC,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;SACjC,EACD,GAAS,EAAE,kDAAC,OAAA,gBAAgB,CAAA,GAAA,EAC5B,UAAU,EACV,MAAM,EACN,GAAG,UAAU,KAAK,IAAA,mBAAU,GAAE,EAAE,EAChC,gCAAc,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,IAAA,mCAAiB,EACtB,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,IAAA,8BAAY,EAAI,WAAW,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC,CAAA,CAAC;AACJ,CAAC,CAAC;AAEK,MAAM,uCAAuC,GAAgC,CAAO,SAAoB,EAAgC,EAAE;IAAC,OAAA,CAAC;QACjJ,CAAC,0CAAwB,CAAC,OAAO,CAAC,EAAE,iBAAiB,CAAC,SAAS,CAAC;KACjE,CAAC,CAAA;EAAA,CAAC;AAFU,QAAA,uCAAuC,2CAEjD","sourcesContent":["import {\n ActionProcessorList,\n ActionProcessorListResolver,\n actionResult,\n actionResultError,\n createRuntime,\n DynamicModuleLoader,\n ErrorTypeEnum,\n InlineFunctionActionType,\n InlineFunctionExecuteActionPayload,\n InlineFunctionExecuteActionProcessor,\n QPQConfig,\n qpqCoreUtils,\n QpqLogger,\n QpqRuntimeType,\n StorySession,\n StorySessionUpdater,\n StreamRegistry,\n} from 'quidproquo-core';\n\nimport { randomUUID } from 'crypto';\n\nconst getDateNow = () => new Date().toISOString();\n\nconst getProcessExecute = <R, T>(qpqConfig: QPQConfig): InlineFunctionExecuteActionProcessor<R, T> => {\n const moduleName = qpqCoreUtils.getApplicationModuleName(qpqConfig);\n\n return async (\n payload: InlineFunctionExecuteActionPayload<T>,\n session: StorySession,\n actionProcessors: ActionProcessorList,\n logger: QpqLogger,\n updateSession: StorySessionUpdater,\n dynamicModuleLoader: DynamicModuleLoader,\n streamRegistry: StreamRegistry,\n ): Promise<any> => {\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 },\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<R>(storyResult.result);\n };\n};\n\nexport const getInlineFunctionExecuteActionProcessor: ActionProcessorListResolver = async (qpqConfig: QPQConfig): Promise<ActionProcessorList> => ({\n [InlineFunctionActionType.Execute]: getProcessExecute(qpqConfig),\n});\n"]}
|
|
@@ -15,3 +15,4 @@ const getInlineFunctionActionProcessor = (qpqConfig, dynamicModuleLoader) => __a
|
|
|
15
15
|
return (Object.assign({}, (yield (0, getInlineFunctionExecuteActionProcessor_1.getInlineFunctionExecuteActionProcessor)(qpqConfig, dynamicModuleLoader))));
|
|
16
16
|
});
|
|
17
17
|
exports.getInlineFunctionActionProcessor = getInlineFunctionActionProcessor;
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/actionProcessor/core/inlineFunction/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,uGAAoG;AAE7F,MAAM,gCAAgC,GAAgC,CAC3E,SAAoB,EACpB,mBAAwC,EACV,EAAE;IAAC,OAAA,mBAC9B,CAAC,MAAM,IAAA,iFAAuC,EAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,EAClF,CAAA;EAAA,CAAC;AALU,QAAA,gCAAgC,oCAK1C","sourcesContent":["import { ActionProcessorList, ActionProcessorListResolver, DynamicModuleLoader, QPQConfig } from 'quidproquo-core';\n\nimport { getInlineFunctionExecuteActionProcessor } from './getInlineFunctionExecuteActionProcessor';\n\nexport const getInlineFunctionActionProcessor: ActionProcessorListResolver = async (\n qpqConfig: QPQConfig,\n dynamicModuleLoader: DynamicModuleLoader,\n): Promise<ActionProcessorList> => ({\n ...(await getInlineFunctionExecuteActionProcessor(qpqConfig, dynamicModuleLoader)),\n});\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getStreamCloseActionProcessor.js","sourceRoot":"","sources":["../../../../../src/actionProcessor/core/stream/getStreamCloseActionProcessor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAOyB;AAEzB,MAAM,qBAAqB,GAAG,CAAC,SAAoB,EAA8B,EAAE;IACjF,OAAO,wGAA4G,EAAE,+IAAvG,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,aAAa,EAAE,mBAAmB,EAAE,cAAc;QAC/G,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC/B,OAAO,IAAA,8BAAY,EAAC,SAAS,CAAC,CAAC;IACjC,CAAC,CAAA,CAAC;AACJ,CAAC,CAAC;AAEK,MAAM,6BAA6B,GAAgC,CAAO,SAAoB,EAAgC,EAAE;IAAC,OAAA,CAAC;QACvI,CAAC,kCAAgB,CAAC,KAAK,CAAC,EAAE,qBAAqB,CAAC,SAAS,CAAC;KAC3D,CAAC,CAAA;EAAA,CAAC;AAFU,QAAA,6BAA6B,iCAEvC","sourcesContent":["import {\n ActionProcessorList,\n ActionProcessorListResolver,\n actionResult,\n QPQConfig,\n StreamActionType,\n StreamCloseActionProcessor,\n} from 'quidproquo-core';\n\nconst getProcessStreamClose = (qpqConfig: QPQConfig): StreamCloseActionProcessor => {\n return async ({ streamId }, session, actionProcessors, logger, updateSession, dynamicModuleLoader, streamRegistry) => {\n streamRegistry.close(streamId);\n return actionResult(undefined);\n };\n};\n\nexport const getStreamCloseActionProcessor: ActionProcessorListResolver = async (qpqConfig: QPQConfig): Promise<ActionProcessorList> => ({\n [StreamActionType.Close]: getProcessStreamClose(qpqConfig),\n});\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getStreamReadActionProcessor.js","sourceRoot":"","sources":["../../../../../src/actionProcessor/core/stream/getStreamReadActionProcessor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAOyB;AAEzB,MAAM,oBAAoB,GAAG,CAAC,SAAoB,EAA6B,EAAE;IAC/E,OAAO,wGAAoH,EAAE,+IAA/G,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,aAAa,EAAE,mBAAmB,EAAE,cAAc;QACvH,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC1D,OAAO,IAAA,8BAAY,EAAC,KAAK,CAAC,CAAC;IAC7B,CAAC,CAAA,CAAC;AACJ,CAAC,CAAC;AAEK,MAAM,4BAA4B,GAAgC,CAAO,SAAoB,EAAgC,EAAE;IAAC,OAAA,CAAC;QACtI,CAAC,kCAAgB,CAAC,IAAI,CAAC,EAAE,oBAAoB,CAAC,SAAS,CAAC;KACzD,CAAC,CAAA;EAAA,CAAC;AAFU,QAAA,4BAA4B,gCAEtC","sourcesContent":["import {\n ActionProcessorList,\n ActionProcessorListResolver,\n actionResult,\n QPQConfig,\n StreamActionType,\n StreamReadActionProcessor,\n} from 'quidproquo-core';\n\nconst getProcessStreamRead = (qpqConfig: QPQConfig): StreamReadActionProcessor => {\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: ActionProcessorListResolver = async (qpqConfig: QPQConfig): Promise<ActionProcessorList> => ({\n [StreamActionType.Read]: getProcessStreamRead(qpqConfig),\n});\n"]}
|
|
@@ -16,3 +16,4 @@ const getStreamActionProcessor = (qpqConfig, dynamicModuleLoader) => __awaiter(v
|
|
|
16
16
|
return (Object.assign(Object.assign({}, (yield (0, getStreamCloseActionProcessor_1.getStreamCloseActionProcessor)(qpqConfig, dynamicModuleLoader))), (yield (0, getStreamReadActionProcessor_1.getStreamReadActionProcessor)(qpqConfig, dynamicModuleLoader))));
|
|
17
17
|
});
|
|
18
18
|
exports.getStreamActionProcessor = getStreamActionProcessor;
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/actionProcessor/core/stream/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,mFAAgF;AAChF,iFAA8E;AAEvE,MAAM,wBAAwB,GAAgC,CACnE,SAAoB,EACpB,mBAAwC,EACV,EAAE;IAAC,OAAA,iCAC9B,CAAC,MAAM,IAAA,6DAA6B,EAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,GACrE,CAAC,MAAM,IAAA,2DAA4B,EAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,EACvE,CAAA;EAAA,CAAC;AANU,QAAA,wBAAwB,4BAMlC","sourcesContent":["import { ActionProcessorList, ActionProcessorListResolver, DynamicModuleLoader, QPQConfig } from 'quidproquo-core';\n\nimport { getStreamCloseActionProcessor } from './getStreamCloseActionProcessor';\nimport { getStreamReadActionProcessor } from './getStreamReadActionProcessor';\n\nexport const getStreamActionProcessor: ActionProcessorListResolver = async (\n qpqConfig: QPQConfig,\n dynamicModuleLoader: DynamicModuleLoader,\n): Promise<ActionProcessorList> => ({\n ...(await getStreamCloseActionProcessor(qpqConfig, dynamicModuleLoader)),\n ...(await getStreamReadActionProcessor(qpqConfig, dynamicModuleLoader)),\n});\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/actionProcessor/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAuB;AACvB,8CAA4B","sourcesContent":["export * from './core';\nexport * from './webserver';\n"]}
|
|
@@ -17,3 +17,4 @@ const getWebserverActionProcessor = (qpqConfig, dynamicModuleLoader) => __awaite
|
|
|
17
17
|
return (Object.assign({}, (yield (0, quidproquo_actionprocessor_js_1.getWebserverActionProcessor)(qpqConfig, dynamicModuleLoader))));
|
|
18
18
|
});
|
|
19
19
|
exports.getWebserverActionProcessor = getWebserverActionProcessor;
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/actionProcessor/webserver/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iFAA6G;AAG7G,yFAAyF;AACzF,qFAAqF;AAC9E,MAAM,2BAA2B,GAAgC,CACtE,SAAoB,EACpB,mBAAwC,EACV,EAAE;IAAC,OAAA,mBAC9B,CAAC,MAAM,IAAA,2DAA6B,EAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,EACxE,CAAA;EAAA,CAAC;AALU,QAAA,2BAA2B,+BAKrC","sourcesContent":["import { getWebserverActionProcessor as getJsWebserverActionProcessor } from 'quidproquo-actionprocessor-js';\nimport { ActionProcessorList, ActionProcessorListResolver, DynamicModuleLoader, QPQConfig } from 'quidproquo-core';\n\n// The shared webserver processors (dns, ...) are owned by quidproquo-actionprocessor-js.\n// Node builds on top of js; it currently adds no node-specific webserver processors.\nexport const getWebserverActionProcessor: ActionProcessorListResolver = async (\n qpqConfig: QPQConfig,\n dynamicModuleLoader: DynamicModuleLoader,\n): Promise<ActionProcessorList> => ({\n ...(await getJsWebserverActionProcessor(qpqConfig, dynamicModuleLoader)),\n});\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getFileDeleteActionProcessor.js","sourceRoot":"","sources":["../../../../src/dynamicActionProcessor/file/getFileDeleteActionProcessor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qDAUyB;AAEzB,gDAAkC;AAGlC,mCAA0C;AAE1C,MAAM,oBAAoB,GAAG,CAAC,SAAoB,EAAE,MAAyB,EAA6B,EAAE;IAC1G,OAAO,KAA6B,EAAE,4CAAxB,EAAE,KAAK,EAAE,SAAS,EAAE;QAChC,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,IAAA,uBAAe,EAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;gBAErE,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,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,IAAA,mCAAiB,EAAC,yCAAuB,CAAC,YAAY,EAAE,8BAA8B,CAAC,CAAC;YACjG,CAAC;YACD,OAAO,IAAA,mCAAiB,EACtB,+BAAa,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,IAAA,8BAAY,EAAC,YAAY,CAAC,CAAC;IACpC,CAAC,CAAA,CAAC;AACJ,CAAC,CAAC;AAEK,MAAM,4BAA4B,GACvC,CAAC,MAAyB,EAA+B,EAAE,CAC3D,CAAO,SAAoB,EAAgC,EAAE;IAAC,OAAA,CAAC;QAC7D,CAAC,gCAAc,CAAC,MAAM,CAAC,EAAE,oBAAoB,CAAC,SAAS,EAAE,MAAM,CAAC;KACjE,CAAC,CAAA;EAAA,CAAC;AAJQ,QAAA,4BAA4B,gCAIpC","sourcesContent":["import {\n ActionProcessorList,\n ActionProcessorListResolver,\n actionResult,\n actionResultError,\n ErrorTypeEnum,\n FileActionType,\n FileDeleteActionProcessor,\n FileDeleteErrorTypeEnum,\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): FileDeleteActionProcessor => {\n return async ({ drive, filepaths }) => {\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);\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 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(FileDeleteErrorTypeEnum.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 =\n (config: FileStorageConfig): ActionProcessorListResolver =>\n async (qpqConfig: QPQConfig): Promise<ActionProcessorList> => ({\n [FileActionType.Delete]: getProcessFileDelete(qpqConfig, config),\n });\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getFileExistsActionProcessor.js","sourceRoot":"","sources":["../../../../src/dynamicActionProcessor/file/getFileExistsActionProcessor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qDAUyB;AAEzB,gDAAkC;AAGlC,mCAA0C;AAE1C,MAAM,oBAAoB,GAAG,CAAC,SAAoB,EAAE,MAAyB,EAA6B,EAAE;IAC1G,OAAO,KAA4B,EAAE,4CAAvB,EAAE,KAAK,EAAE,QAAQ,EAAE;QAC/B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAA,uBAAe,EAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;YAErE,IAAI,CAAC;gBACH,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAC1B,OAAO,IAAA,8BAAY,EAAC,IAAI,CAAC,CAAC;YAC5B,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,wEAAwE;gBACxE,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC5B,OAAO,IAAA,8BAAY,EAAC,KAAK,CAAC,CAAC;gBAC7B,CAAC;gBACD,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC5B,OAAO,IAAA,mCAAiB,EAAC,yCAAuB,CAAC,YAAY,EAAE,0CAA0C,QAAQ,EAAE,CAAC,CAAC;gBACvH,CAAC;gBACD,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,IAAA,mCAAiB,EAAC,+BAAa,CAAC,YAAY,EAAE,kCAAkC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1G,CAAC;IACH,CAAC,CAAA,CAAC;AACJ,CAAC,CAAC;AAEK,MAAM,4BAA4B,GACvC,CAAC,MAAyB,EAA+B,EAAE,CAC3D,CAAO,SAAoB,EAAgC,EAAE;IAAC,OAAA,CAAC;QAC7D,CAAC,gCAAc,CAAC,MAAM,CAAC,EAAE,oBAAoB,CAAC,SAAS,EAAE,MAAM,CAAC;KACjE,CAAC,CAAA;EAAA,CAAC;AAJQ,QAAA,4BAA4B,gCAIpC","sourcesContent":["import {\n ActionProcessorList,\n ActionProcessorListResolver,\n actionResult,\n actionResultError,\n ErrorTypeEnum,\n FileActionType,\n FileExistsActionProcessor,\n FileExistsErrorTypeEnum,\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): FileExistsActionProcessor => {\n return async ({ drive, filepath }) => {\n try {\n const fullPath = resolveFilePath(config, qpqConfig, drive, filepath);\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(FileExistsErrorTypeEnum.AccessDenied, `Access denied checking file existence: ${filepath}`);\n }\n throw error;\n }\n } catch (error: any) {\n return actionResultError(ErrorTypeEnum.GenericError, `Error checking file existence: ${error.message}`);\n }\n };\n};\n\nexport const getFileExistsActionProcessor =\n (config: FileStorageConfig): ActionProcessorListResolver =>\n async (qpqConfig: QPQConfig): Promise<ActionProcessorList> => ({\n [FileActionType.Exists]: getProcessFileExists(qpqConfig, config),\n });\n"]}
|
package/lib/commonjs/dynamicActionProcessor/file/getFileGenerateTemporarySecureUrlActionProcessor.js
CHANGED
|
@@ -38,3 +38,4 @@ const getFileGenerateTemporarySecureUrlActionProcessor = (config) => (qpqConfig)
|
|
|
38
38
|
});
|
|
39
39
|
});
|
|
40
40
|
exports.getFileGenerateTemporarySecureUrlActionProcessor = getFileGenerateTemporarySecureUrlActionProcessor;
|
|
41
|
+
//# sourceMappingURL=getFileGenerateTemporarySecureUrlActionProcessor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getFileGenerateTemporarySecureUrlActionProcessor.js","sourceRoot":"","sources":["../../../../src/dynamicActionProcessor/file/getFileGenerateTemporarySecureUrlActionProcessor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDASyB;AAEzB,qDAA6E;AAE7E,mCAA0C;AAE1C,MAAM,wCAAwC,GAAG,CAAC,SAAoB,EAAE,MAAyB,EAAiD,EAAE;IAClJ,OAAO,KAA0C,EAAE,4CAArC,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE;QAC7C,IAAI,CAAC;YACH,8BAA8B;YAC9B,MAAM,KAAK,GAAG,IAAA,qCAAoB,EAChC;gBACE,YAAY,EAAE,IAAA,uBAAe,EAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,CAAC;gBACjE,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,IAAA,oCAAmB,EAAC,MAAM,CAAC,CAAC;YAC5C,MAAM,GAAG,GAAG,GAAG,OAAO,0BAA0B,KAAK,EAAE,CAAC;YAExD,OAAO,IAAA,8BAAY,EAAC,GAAG,CAAC,CAAC;QAC3B,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,IAAA,mCAAiB,EAAC,+BAAa,CAAC,YAAY,EAAE,4CAA4C,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACpH,CAAC;IACH,CAAC,CAAA,CAAC;AACJ,CAAC,CAAC;AAEK,MAAM,gDAAgD,GAC3D,CAAC,MAAyB,EAA+B,EAAE,CAC3D,CAAO,SAAoB,EAAgC,EAAE;IAAC,OAAA,CAAC;QAC7D,CAAC,gCAAc,CAAC,0BAA0B,CAAC,EAAE,wCAAwC,CAAC,SAAS,EAAE,MAAM,CAAC;KACzG,CAAC,CAAA;EAAA,CAAC;AAJQ,QAAA,gDAAgD,oDAIxD","sourcesContent":["import {\n ActionProcessorList,\n ActionProcessorListResolver,\n actionResult,\n actionResultError,\n ErrorTypeEnum,\n FileActionType,\n FileGenerateTemporarySecureUrlActionProcessor,\n QPQConfig,\n} from 'quidproquo-core';\n\nimport { createSecureUrlToken, getSecureUrlBaseUrl } from './secureUrlUtils';\nimport { FileStorageConfig } from './types';\nimport { resolveFilePath } from './utils';\n\nconst getProcessFileGenerateTemporarySecureUrl = (qpqConfig: QPQConfig, config: FileStorageConfig): FileGenerateTemporarySecureUrlActionProcessor => {\n return async ({ drive, filepath, expirationMs }) => {\n try {\n // Create a token for download\n const token = createSecureUrlToken(\n {\n fullFilepath: resolveFilePath(config, qpqConfig, drive, filepath),\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: any) {\n return actionResultError(ErrorTypeEnum.GenericError, `Unable to generate temporary secure URL: ${error.message}`);\n }\n };\n};\n\nexport const getFileGenerateTemporarySecureUrlActionProcessor =\n (config: FileStorageConfig): ActionProcessorListResolver =>\n async (qpqConfig: QPQConfig): Promise<ActionProcessorList> => ({\n [FileActionType.GenerateTemporarySecureUrl]: getProcessFileGenerateTemporarySecureUrl(qpqConfig, config),\n });\n"]}
|
|
@@ -41,3 +41,4 @@ const getFileGenerateTemporaryUploadSecureUrlActionProcessor = (config) => (qpqC
|
|
|
41
41
|
});
|
|
42
42
|
});
|
|
43
43
|
exports.getFileGenerateTemporaryUploadSecureUrlActionProcessor = getFileGenerateTemporaryUploadSecureUrlActionProcessor;
|
|
44
|
+
//# sourceMappingURL=getFileGenerateTemporaryUploadSecureUrlActionProcessor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getFileGenerateTemporaryUploadSecureUrlActionProcessor.js","sourceRoot":"","sources":["../../../../src/dynamicActionProcessor/file/getFileGenerateTemporaryUploadSecureUrlActionProcessor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDASyB;AAEzB,qDAA6E;AAE7E,mCAA0C;AAE1C,MAAM,8CAA8C,GAAG,CACrD,SAAoB,EACpB,MAAyB,EAC4B,EAAE;IACvD,OAAO,KAAuD,EAAE,4CAAlD,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE;QAC1D,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY,CAAC;YAE5C,4BAA4B;YAC5B,MAAM,KAAK,GAAG,IAAA,qCAAoB,EAChC;gBACE,YAAY,EAAE,IAAA,uBAAe,EAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,CAAC;gBACjE,SAAS,EAAE,QAAQ;gBACnB,SAAS;gBACT,WAAW;aACZ,EACD,MAAM,CAAC,eAAe,CACvB,CAAC;YAEF,uBAAuB;YACvB,MAAM,OAAO,GAAG,IAAA,oCAAmB,EAAC,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,IAAA,8BAAY,EAAC,GAAG,CAAC,CAAC;QAC3B,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,IAAA,mCAAiB,EAAC,+BAAa,CAAC,YAAY,EAAE,mDAAmD,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC3H,CAAC;IACH,CAAC,CAAA,CAAC;AACJ,CAAC,CAAC;AAEK,MAAM,sDAAsD,GACjE,CAAC,MAAyB,EAA+B,EAAE,CAC3D,CAAO,SAAoB,EAAgC,EAAE;IAAC,OAAA,CAAC;QAC7D,CAAC,gCAAc,CAAC,gCAAgC,CAAC,EAAE,8CAA8C,CAAC,SAAS,EAAE,MAAM,CAAC;KACrH,CAAC,CAAA;EAAA,CAAC;AAJQ,QAAA,sDAAsD,0DAI9D","sourcesContent":["import {\n ActionProcessorList,\n ActionProcessorListResolver,\n actionResult,\n actionResultError,\n ErrorTypeEnum,\n FileActionType,\n FileGenerateTemporaryUploadSecureUrlActionProcessor,\n QPQConfig,\n} from 'quidproquo-core';\n\nimport { createSecureUrlToken, getSecureUrlBaseUrl } from './secureUrlUtils';\nimport { FileStorageConfig } from './types';\nimport { resolveFilePath } from './utils';\n\nconst getProcessFileGenerateTemporaryUploadSecureUrl = (\n qpqConfig: QPQConfig,\n config: FileStorageConfig,\n): FileGenerateTemporaryUploadSecureUrlActionProcessor => {\n return async ({ drive, filepath, expirationMs, contentType }) => {\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),\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: any) {\n return actionResultError(ErrorTypeEnum.GenericError, `Unable to generate temporary upload secure URL: ${error.message}`);\n }\n };\n};\n\nexport const getFileGenerateTemporaryUploadSecureUrlActionProcessor =\n (config: FileStorageConfig): ActionProcessorListResolver =>\n async (qpqConfig: QPQConfig): Promise<ActionProcessorList> => ({\n [FileActionType.GenerateTemporaryUploadSecureUrl]: getProcessFileGenerateTemporaryUploadSecureUrl(qpqConfig, config),\n });\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getFileIsColdStorageActionProcessor.js","sourceRoot":"","sources":["../../../../src/dynamicActionProcessor/file/getFileIsColdStorageActionProcessor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAOyB;AAIzB,MAAM,2BAA2B,GAC/B,CAAC,MAAyB,EAAE,EAAE,CAC9B,CAAC,SAAoB,EAAoC,EAAE;IACzD,OAAO,KAA4B,EAAE,4CAAvB,EAAE,KAAK,EAAE,QAAQ,EAAE;QAC/B,kEAAkE;QAClE,OAAO,IAAA,8BAAY,EAAC,KAAK,CAAC,CAAC;IAC7B,CAAC,CAAA,CAAC;AACJ,CAAC,CAAC;AAEG,MAAM,mCAAmC,GAC9C,CAAC,MAAyB,EAA+B,EAAE,CAC3D,CAAO,SAAoB,EAAgC,EAAE;IAAC,OAAA,CAAC;QAC7D,CAAC,gCAAc,CAAC,aAAa,CAAC,EAAE,2BAA2B,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC;KAC/E,CAAC,CAAA;EAAA,CAAC;AAJQ,QAAA,mCAAmC,uCAI3C","sourcesContent":["import {\n ActionProcessorList,\n ActionProcessorListResolver,\n actionResult,\n FileActionType,\n FileIsColdStorageActionProcessor,\n QPQConfig,\n} from 'quidproquo-core';\n\nimport { FileStorageConfig } from './types';\n\nconst getProcessFileIsColdStorage =\n (config: FileStorageConfig) =>\n (qpqConfig: QPQConfig): FileIsColdStorageActionProcessor => {\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 =\n (config: FileStorageConfig): ActionProcessorListResolver =>\n async (qpqConfig: QPQConfig): Promise<ActionProcessorList> => ({\n [FileActionType.IsColdStorage]: getProcessFileIsColdStorage(config)(qpqConfig),\n });\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getFileListDirectoryActionProcessor.js","sourceRoot":"","sources":["../../../../src/dynamicActionProcessor/file/getFileListDirectoryActionProcessor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qDAYyB;AAEzB,gDAAkC;AAClC,2CAA6B;AAG7B,mCAA0C;AAE1C,MAAM,2BAA2B,GAC/B,CAAC,MAAyB,EAAE,EAAE,CAC9B,CAAC,SAAoB,EAAoC,EAAE;IACzD,OAAO,KAAmD,EAAE,4CAA9C,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE;QACtD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAA,uBAAe,EAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,IAAI,EAAE,CAAC,CAAC;YAE7E,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,IAAA,8BAAY,EAAC,MAAM,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,IAAA,kDAAgC,EAAC,KAAK,EAAE;gBAC7C,MAAM,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,gDAA8B,CAAC,iBAAiB,EAAE,wBAAwB,UAAU,EAAE,CAAC,EAAE,eAAe;gBACxI,OAAO,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,gDAA8B,CAAC,aAAa,EAAE,4BAA4B,UAAU,EAAE,CAAC,EAAE,eAAe;gBACzI,MAAM,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,gDAA8B,CAAC,YAAY,EAAE,oCAAoC,UAAU,EAAE,CAAC,EAAE,eAAe;aAChJ,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAA,CAAC;AACJ,CAAC,CAAC;AAEG,MAAM,mCAAmC,GAC9C,CAAC,MAAyB,EAA+B,EAAE,CAC3D,CAAO,SAAoB,EAAgC,EAAE;IAAC,OAAA,CAAC;QAC7D,CAAC,gCAAc,CAAC,aAAa,CAAC,EAAE,2BAA2B,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC;KAC/E,CAAC,CAAA;EAAA,CAAC;AAJQ,QAAA,mCAAmC,uCAI3C","sourcesContent":["import {\n ActionProcessorList,\n ActionProcessorListResolver,\n actionResult,\n actionResultError,\n actionResultErrorFromCaughtError,\n DirectoryList,\n FileActionType,\n FileInfo,\n FileListDirectoryActionProcessor,\n FileListDirectoryErrorTypeEnum,\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): FileListDirectoryActionProcessor => {\n return async ({ drive, folderPath, maxFiles, pageToken }) => {\n try {\n const fullPath = resolveFilePath(config, qpqConfig, drive, folderPath || '');\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 ENOENT: () => actionResultError(FileListDirectoryErrorTypeEnum.DirectoryNotFound, `Directory not found: ${folderPath}`), // node fs code\n ENOTDIR: () => actionResultError(FileListDirectoryErrorTypeEnum.NotADirectory, `Path is not a directory: ${folderPath}`), // node fs code\n EACCES: () => actionResultError(FileListDirectoryErrorTypeEnum.AccessDenied, `Access denied listing directory: ${folderPath}`), // node fs code\n });\n }\n };\n };\n\nexport const getFileListDirectoryActionProcessor =\n (config: FileStorageConfig): ActionProcessorListResolver =>\n async (qpqConfig: QPQConfig): Promise<ActionProcessorList> => ({\n [FileActionType.ListDirectory]: getProcessFileListDirectory(config)(qpqConfig),\n });\n"]}
|
package/lib/commonjs/dynamicActionProcessor/file/getFileReadBinaryContentsActionProcessor.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getFileReadBinaryContentsActionProcessor.js","sourceRoot":"","sources":["../../../../src/dynamicActionProcessor/file/getFileReadBinaryContentsActionProcessor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qDAWyB;AAEzB,gDAAkC;AAClC,2CAA6B;AAG7B,mCAA0C;AAE1C,MAAM,gCAAgC,GACpC,CAAC,MAAyB,EAAE,EAAE,CAC9B,CAAC,SAAoB,EAAyC,EAAE;IAC9D,OAAO,KAA4B,EAAE,4CAAvB,EAAE,KAAK,EAAE,QAAQ,EAAE;QAC/B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAA,uBAAe,EAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;YACrE,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,IAAA,8BAAY,EAAC,UAAU,CAAC,CAAC;QAClC,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,IAAA,kDAAgC,EAAC,KAAK,EAAE;gBAC7C,MAAM,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,qDAAmC,CAAC,YAAY,EAAE,mBAAmB,QAAQ,EAAE,CAAC,EAAE,eAAe;aAClI,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAA,CAAC;AACJ,CAAC,CAAC;AAEG,MAAM,wCAAwC,GACnD,CAAC,MAAyB,EAA+B,EAAE,CAC3D,CAAO,SAAoB,EAAgC,EAAE;IAAC,OAAA,CAAC;QAC7D,CAAC,gCAAc,CAAC,kBAAkB,CAAC,EAAE,gCAAgC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC;KACzF,CAAC,CAAA;EAAA,CAAC;AAJQ,QAAA,wCAAwC,4CAIhD","sourcesContent":["import {\n ActionProcessorList,\n ActionProcessorListResolver,\n actionResult,\n actionResultError,\n actionResultErrorFromCaughtError,\n FileActionType,\n FileReadBinaryContentsActionProcessor,\n FileReadBinaryContentsErrorTypeEnum,\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): FileReadBinaryContentsActionProcessor => {\n return async ({ drive, filepath }) => {\n try {\n const fullPath = resolveFilePath(config, qpqConfig, drive, filepath);\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 ENOENT: () => actionResultError(FileReadBinaryContentsErrorTypeEnum.FileNotFound, `File not found: ${filepath}`), // node fs code\n });\n }\n };\n };\n\nexport const getFileReadBinaryContentsActionProcessor =\n (config: FileStorageConfig): ActionProcessorListResolver =>\n async (qpqConfig: QPQConfig): Promise<ActionProcessorList> => ({\n [FileActionType.ReadBinaryContents]: getProcessFileReadBinaryContents(config)(qpqConfig),\n });\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getFileReadObjectJsonActionProcessor.js","sourceRoot":"","sources":["../../../../src/dynamicActionProcessor/file/getFileReadObjectJsonActionProcessor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qDAUyB;AAEzB,gDAAkC;AAGlC,mCAA0C;AAE1C,MAAM,4BAA4B,GAChC,CAAC,MAAyB,EAAE,EAAE,CAC9B,CAAC,SAAoB,EAA0C,EAAE;IAC/D,OAAO,KAA4B,EAAE,4CAAvB,EAAE,KAAK,EAAE,QAAQ,EAAE;QAC/B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAA,uBAAe,EAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;YACrE,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,IAAA,8BAAY,EAAC,UAAU,CAAC,CAAC;QAClC,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,IAAA,kDAAgC,EAAC,KAAK,EAAE;gBAC7C,MAAM,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,+BAAa,CAAC,QAAQ,EAAE,mBAAmB,QAAQ,EAAE,CAAC,EAAE,eAAe;gBACvG,WAAW,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,+BAAa,CAAC,YAAY,EAAE,yBAAyB,QAAQ,EAAE,CAAC,EAAE,qBAAqB;aAC7H,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAA,CAAC;AACJ,CAAC,CAAC;AAEG,MAAM,oCAAoC,GAC/C,CAAC,MAAyB,EAA+B,EAAE,CAC3D,CAAO,SAAoB,EAAgC,EAAE;IAAC,OAAA,CAAC;QAC7D,CAAC,gCAAc,CAAC,cAAc,CAAC,EAAE,4BAA4B,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC;KACjF,CAAC,CAAA;EAAA,CAAC;AAJQ,QAAA,oCAAoC,wCAI5C","sourcesContent":["import {\n ActionProcessorList,\n ActionProcessorListResolver,\n actionResult,\n actionResultError,\n actionResultErrorFromCaughtError,\n ErrorTypeEnum,\n FileActionType,\n FileReadObjectJsonActionProcessor,\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): FileReadObjectJsonActionProcessor<any> => {\n return async ({ drive, filepath }) => {\n try {\n const fullPath = resolveFilePath(config, qpqConfig, drive, filepath);\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 ENOENT: () => actionResultError(ErrorTypeEnum.NotFound, `File not found: ${filepath}`), // node fs code\n SyntaxError: () => actionResultError(ErrorTypeEnum.GenericError, `Invalid JSON in file: ${filepath}`), // JSON.parse failure\n });\n }\n };\n };\n\nexport const getFileReadObjectJsonActionProcessor =\n (config: FileStorageConfig): ActionProcessorListResolver =>\n async (qpqConfig: QPQConfig): Promise<ActionProcessorList> => ({\n [FileActionType.ReadObjectJson]: getProcessFileReadObjectJson(config)(qpqConfig),\n });\n"]}
|
package/lib/commonjs/dynamicActionProcessor/file/getFileReadTextContentsActionProcessor.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getFileReadTextContentsActionProcessor.js","sourceRoot":"","sources":["../../../../src/dynamicActionProcessor/file/getFileReadTextContentsActionProcessor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qDAUyB;AAEzB,gDAAkC;AAGlC,mCAA0C;AAE1C,MAAM,8BAA8B,GAAG,CAAC,SAAoB,EAAE,MAAyB,EAAuC,EAAE;IAC9H,OAAO,KAA4B,EAAE,4CAAvB,EAAE,KAAK,EAAE,QAAQ,EAAE;QAC/B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAA,uBAAe,EAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;YACrE,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACpD,OAAO,IAAA,8BAAY,EAAC,OAAO,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,IAAA,kDAAgC,EAAC,KAAK,EAAE;gBAC7C,MAAM,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,+BAAa,CAAC,QAAQ,EAAE,mBAAmB,QAAQ,EAAE,CAAC,EAAE,eAAe;aACxG,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAA,CAAC;AACJ,CAAC,CAAC;AAEK,MAAM,sCAAsC,GACjD,CAAC,MAAyB,EAA+B,EAAE,CAC3D,CAAO,SAAoB,EAAgC,EAAE;IAAC,OAAA,CAAC;QAC7D,CAAC,gCAAc,CAAC,gBAAgB,CAAC,EAAE,8BAA8B,CAAC,SAAS,EAAE,MAAM,CAAC;KACrF,CAAC,CAAA;EAAA,CAAC;AAJQ,QAAA,sCAAsC,0CAI9C","sourcesContent":["import {\n ActionProcessorList,\n ActionProcessorListResolver,\n actionResult,\n actionResultError,\n actionResultErrorFromCaughtError,\n ErrorTypeEnum,\n FileActionType,\n FileReadTextContentsActionProcessor,\n QPQConfig,\n} from 'quidproquo-core';\n\nimport * as fs from 'fs/promises';\n\nimport { FileStorageConfig } from './types';\nimport { resolveFilePath } from './utils';\n\nconst getProcessFileReadTextContents = (qpqConfig: QPQConfig, config: FileStorageConfig): FileReadTextContentsActionProcessor => {\n return async ({ drive, filepath }) => {\n try {\n const fullPath = resolveFilePath(config, qpqConfig, drive, filepath);\n const content = await fs.readFile(fullPath, 'utf8');\n return actionResult(content);\n } catch (error: unknown) {\n return actionResultErrorFromCaughtError(error, {\n ENOENT: () => actionResultError(ErrorTypeEnum.NotFound, `File not found: ${filepath}`), // node fs code\n });\n }\n };\n};\n\nexport const getFileReadTextContentsActionProcessor =\n (config: FileStorageConfig): ActionProcessorListResolver =>\n async (qpqConfig: QPQConfig): Promise<ActionProcessorList> => ({\n [FileActionType.ReadTextContents]: getProcessFileReadTextContents(qpqConfig, config),\n });\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getFileStreamOpenActionProcessor.js","sourceRoot":"","sources":["../../../../src/dynamicActionProcessor/file/getFileStreamOpenActionProcessor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qDAUyB;AAEzB,mCAAoC;AACpC,uCAAyB;AAIzB,mCAA0C;AAE1C,SAAgB,kBAAkB,CAAC,MAAgB;;;;YACjD,KAA0B,eAAA,WAAA,cAAA,MAAM,CAAA,YAAA,qFAAE,CAAC;gBAAT,sBAAM;gBAAN,WAAM;gBAArB,MAAM,KAAK,KAAA,CAAA;gBACpB,oBAAM,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAE,KAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA,CAAC;YAC/E,CAAC;;;;;;;;;IACH,CAAC;CAAA;AAED,SAAgB,oBAAoB,CAAC,MAAgB;;;;YACnD,KAA0B,eAAA,WAAA,cAAA,MAAM,CAAA,YAAA,qFAAE,CAAC;gBAAT,sBAAM;gBAAN,WAAM;gBAArB,MAAM,KAAK,KAAA,CAAA;gBACpB,MAAM,MAAM,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE,KAAgB,CAAC;gBAClF,oBAAM,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA,CAAC;YAClC,CAAC;;;;;;;;;IACH,CAAC;CAAA;AAED,MAAM,wBAAwB,GAAG,CAAC,SAAoB,EAAE,MAAyB,EAAiC,EAAE;IAClH,OAAO,wGAAwI,EAAE,+IAAnI,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,aAAa,EAAE,mBAAmB,EAAE,cAAc;QAC3I,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAA,uBAAe,EAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;YACrE,MAAM,MAAM,GAAG,QAAQ,KAAK,MAAM,CAAC;YACnC,MAAM,aAAa,GAAG,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,KAAK,CAAC;YACzC,MAAM,UAAU,GAAG,EAAE,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC;YACnH,MAAM,QAAQ,GAAG,QAAQ,IAAA,mBAAU,GAAE,EAAE,CAAC;YAExC,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;YAC5F,cAAc,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAE5C,OAAO,IAAA,8BAAY,EAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;QAClD,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,IAAA,kDAAgC,EAAC,KAAK,EAAE;gBAC7C,MAAM,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,6CAA2B,CAAC,YAAY,EAAE,mBAAmB,QAAQ,EAAE,CAAC,EAAE,eAAe;aAC1H,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAA,CAAC;AACJ,CAAC,CAAC;AAEK,MAAM,gCAAgC,GAC3C,CAAC,MAAyB,EAA+B,EAAE,CAC3D,CAAO,SAAoB,EAAgC,EAAE;IAAC,OAAA,CAAC;QAC7D,CAAC,gCAAc,CAAC,UAAU,CAAC,EAAE,wBAAwB,CAAC,SAAS,EAAE,MAAM,CAAC;KACzE,CAAC,CAAA;EAAA,CAAC;AAJQ,QAAA,gCAAgC,oCAIxC","sourcesContent":["import {\n ActionProcessorList,\n ActionProcessorListResolver,\n actionResult,\n actionResultError,\n actionResultErrorFromCaughtError,\n FileActionType,\n FileStreamOpenActionProcessor,\n FileStreamOpenErrorTypeEnum,\n QPQConfig,\n} from 'quidproquo-core';\n\nimport { randomUUID } from 'crypto';\nimport * as fs from 'fs';\nimport { Readable } from 'stream';\n\nimport { FileStorageConfig } from './types';\nimport { resolveFilePath } from './utils';\n\nasync function* textStreamIterator(stream: Readable): AsyncIterableIterator<string> {\n for await (const chunk of stream) {\n yield typeof chunk === 'string' ? chunk : (chunk as Buffer).toString('utf8');\n }\n}\n\nasync function* binaryStreamIterator(stream: Readable): AsyncIterableIterator<string> {\n for await (const chunk of stream) {\n const buffer = typeof chunk === 'string' ? Buffer.from(chunk) : (chunk as Buffer);\n yield buffer.toString('base64');\n }\n}\n\nconst getProcessFileStreamOpen = (qpqConfig: QPQConfig, config: FileStorageConfig): FileStreamOpenActionProcessor => {\n return async ({ drive, filepath, encoding, chunkSize }, session, actionProcessors, logger, updateSession, dynamicModuleLoader, streamRegistry) => {\n try {\n const fullPath = resolveFilePath(config, qpqConfig, drive, filepath);\n const isText = encoding === 'text';\n const highWaterMark = chunkSize ?? 65536;\n const readStream = fs.createReadStream(fullPath, isText ? { encoding: 'utf8', highWaterMark } : { highWaterMark });\n const streamId = `file-${randomUUID()}`;\n\n const iterator = isText ? textStreamIterator(readStream) : binaryStreamIterator(readStream);\n streamRegistry.register(streamId, iterator);\n\n return actionResult({ id: streamId, encoding });\n } catch (error: unknown) {\n return actionResultErrorFromCaughtError(error, {\n ENOENT: () => actionResultError(FileStreamOpenErrorTypeEnum.FileNotFound, `File not found: ${filepath}`), // node fs code\n });\n }\n };\n};\n\nexport const getFileStreamOpenActionProcessor =\n (config: FileStorageConfig): ActionProcessorListResolver =>\n async (qpqConfig: QPQConfig): Promise<ActionProcessorList> => ({\n [FileActionType.StreamOpen]: getProcessFileStreamOpen(qpqConfig, config),\n });\n"]}
|
package/lib/commonjs/dynamicActionProcessor/file/getFileWriteBinaryContentsActionProcessor.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getFileWriteBinaryContentsActionProcessor.js","sourceRoot":"","sources":["../../../../src/dynamicActionProcessor/file/getFileWriteBinaryContentsActionProcessor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qDAUyB;AAEzB,gDAAkC;AAGlC,mCAAuE;AAEvE,MAAM,iCAAiC,GACrC,CAAC,MAAyB,EAAE,EAAE,CAC9B,CAAC,SAAoB,EAA0C,EAAE;IAC/D,OAAO,KAAkC,EAAE,4CAA7B,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE;QACrC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAA,uBAAe,EAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;YACrE,MAAM,IAAA,mCAA2B,EAAC,QAAQ,CAAC,CAAC;YAE5C,kCAAkC;YAClC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YACtD,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAErC,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAC7C,MAAM,EAAE,CAAC,SAAS,CAChB,GAAG,QAAQ,eAAe,EAC1B,IAAI,CAAC,SAAS,CAAC;oBACb,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;iBAC5C,CAAC,CACH,CAAC;YACJ,CAAC;YAED,OAAO,IAAA,8BAAY,EAAC,KAAK,CAAC,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,IAAA,kDAAgC,EAAC,KAAK,EAAE;gBAC7C,MAAM,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,sDAAoC,CAAC,YAAY,EAAE,+BAA+B,QAAQ,EAAE,CAAC,EAAE,eAAe;aAC/I,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAA,CAAC;AACJ,CAAC,CAAC;AAEG,MAAM,yCAAyC,GACpD,CAAC,MAAyB,EAA+B,EAAE,CAC3D,CAAO,SAAoB,EAAgC,EAAE;IAAC,OAAA,CAAC;QAC7D,CAAC,gCAAc,CAAC,mBAAmB,CAAC,EAAE,iCAAiC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC;KAC3F,CAAC,CAAA;EAAA,CAAC;AAJQ,QAAA,yCAAyC,6CAIjD","sourcesContent":["import {\n ActionProcessorList,\n ActionProcessorListResolver,\n actionResult,\n actionResultError,\n actionResultErrorFromCaughtError,\n FileActionType,\n FileWriteBinaryContentsActionProcessor,\n FileWriteBinaryContentsErrorTypeEnum,\n QPQConfig,\n} from 'quidproquo-core';\n\nimport * as fs from 'fs/promises';\n\nimport { FileStorageConfig } from './types';\nimport { ensureParentDirectoryExists, resolveFilePath } from './utils';\n\nconst getProcessFileWriteBinaryContents =\n (config: FileStorageConfig) =>\n (qpqConfig: QPQConfig): FileWriteBinaryContentsActionProcessor => {\n return async ({ drive, filepath, data }) => {\n try {\n const fullPath = resolveFilePath(config, qpqConfig, drive, filepath);\n await ensureParentDirectoryExists(fullPath);\n\n // Convert QPQBinaryData to Buffer\n const buffer = Buffer.from(data.base64Data, 'base64');\n await fs.writeFile(fullPath, buffer);\n\n if (data.mimetype || data.contentDisposition) {\n await fs.writeFile(\n `${fullPath}.qpqmeta.json`,\n JSON.stringify({\n mimetype: data.mimetype,\n contentDisposition: data.contentDisposition,\n }),\n );\n }\n\n return actionResult(void 0);\n } catch (error: unknown) {\n return actionResultErrorFromCaughtError(error, {\n EACCES: () => actionResultError(FileWriteBinaryContentsErrorTypeEnum.AccessDenied, `Access denied writing file: ${filepath}`), // node fs code\n });\n }\n };\n };\n\nexport const getFileWriteBinaryContentsActionProcessor =\n (config: FileStorageConfig): ActionProcessorListResolver =>\n async (qpqConfig: QPQConfig): Promise<ActionProcessorList> => ({\n [FileActionType.WriteBinaryContents]: getProcessFileWriteBinaryContents(config)(qpqConfig),\n });\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getFileWriteObjectJsonActionProcessor.js","sourceRoot":"","sources":["../../../../src/dynamicActionProcessor/file/getFileWriteObjectJsonActionProcessor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qDAUyB;AAEzB,gDAAkC;AAGlC,mCAAuE;AAEvE,MAAM,6BAA6B,GACjC,CAAC,MAAyB,EAAE,EAAE,CAC9B,CAAC,SAAoB,EAA2C,EAAE;IAChE,OAAO,KAAkC,EAAE,4CAA7B,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE;QACrC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAA,uBAAe,EAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;YACrE,MAAM,IAAA,mCAA2B,EAAC,QAAQ,CAAC,CAAC;YAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YACjD,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;YACjD,OAAO,IAAA,8BAAY,EAAC,KAAK,CAAC,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,IAAA,kDAAgC,EAAC,KAAK,EAAE;gBAC7C,MAAM,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,kDAAgC,CAAC,YAAY,EAAE,+BAA+B,QAAQ,EAAE,CAAC,EAAE,eAAe;aAC3I,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAA,CAAC;AACJ,CAAC,CAAC;AAEG,MAAM,qCAAqC,GAChD,CAAC,MAAyB,EAA+B,EAAE,CAC3D,CAAO,SAAoB,EAAgC,EAAE;IAAC,OAAA,CAAC;QAC7D,CAAC,gCAAc,CAAC,eAAe,CAAC,EAAE,6BAA6B,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC;KACnF,CAAC,CAAA;EAAA,CAAC;AAJQ,QAAA,qCAAqC,yCAI7C","sourcesContent":["import {\n ActionProcessorList,\n ActionProcessorListResolver,\n actionResult,\n actionResultError,\n actionResultErrorFromCaughtError,\n FileActionType,\n FileWriteObjectJsonActionProcessor,\n FileWriteObjectJsonErrorTypeEnum,\n QPQConfig,\n} from 'quidproquo-core';\n\nimport * as fs from 'fs/promises';\n\nimport { FileStorageConfig } from './types';\nimport { ensureParentDirectoryExists, resolveFilePath } from './utils';\n\nconst getProcessFileWriteObjectJson =\n (config: FileStorageConfig) =>\n (qpqConfig: QPQConfig): FileWriteObjectJsonActionProcessor<any> => {\n return async ({ drive, filepath, data }) => {\n try {\n const fullPath = resolveFilePath(config, qpqConfig, drive, filepath);\n await ensureParentDirectoryExists(fullPath);\n const jsonString = JSON.stringify(data, null, 2);\n await fs.writeFile(fullPath, jsonString, 'utf8');\n return actionResult(void 0);\n } catch (error: unknown) {\n return actionResultErrorFromCaughtError(error, {\n EACCES: () => actionResultError(FileWriteObjectJsonErrorTypeEnum.AccessDenied, `Access denied writing file: ${filepath}`), // node fs code\n });\n }\n };\n };\n\nexport const getFileWriteObjectJsonActionProcessor =\n (config: FileStorageConfig): ActionProcessorListResolver =>\n async (qpqConfig: QPQConfig): Promise<ActionProcessorList> => ({\n [FileActionType.WriteObjectJson]: getProcessFileWriteObjectJson(config)(qpqConfig),\n });\n"]}
|
package/lib/commonjs/dynamicActionProcessor/file/getFileWriteTextContentsActionProcessor.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getFileWriteTextContentsActionProcessor.js","sourceRoot":"","sources":["../../../../src/dynamicActionProcessor/file/getFileWriteTextContentsActionProcessor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qDAUyB;AAEzB,gDAAkC;AAGlC,mCAAuE;AAEvE,MAAM,+BAA+B,GAAG,CAAC,SAAoB,EAAE,MAAyB,EAAwC,EAAE;IAChI,OAAO,KAAkC,EAAE,4CAA7B,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE;QACrC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAA,uBAAe,EAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;YACrE,MAAM,IAAA,mCAA2B,EAAC,QAAQ,CAAC,CAAC;YAC5C,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YAC3C,OAAO,IAAA,8BAAY,EAAC,KAAK,CAAC,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,IAAA,kDAAgC,EAAC,KAAK,EAAE;gBAC7C,MAAM,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,oDAAkC,CAAC,YAAY,EAAE,+BAA+B,QAAQ,EAAE,CAAC,EAAE,eAAe;aAC7I,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAA,CAAC;AACJ,CAAC,CAAC;AAEK,MAAM,uCAAuC,GAClD,CAAC,MAAyB,EAA+B,EAAE,CAC3D,CAAO,SAAoB,EAAgC,EAAE;IAAC,OAAA,CAAC;QAC7D,CAAC,gCAAc,CAAC,iBAAiB,CAAC,EAAE,+BAA+B,CAAC,SAAS,EAAE,MAAM,CAAC;KACvF,CAAC,CAAA;EAAA,CAAC;AAJQ,QAAA,uCAAuC,2CAI/C","sourcesContent":["import {\n ActionProcessorList,\n ActionProcessorListResolver,\n actionResult,\n actionResultError,\n actionResultErrorFromCaughtError,\n FileActionType,\n FileWriteTextContentsActionProcessor,\n FileWriteTextContentsErrorTypeEnum,\n QPQConfig,\n} from 'quidproquo-core';\n\nimport * as fs from 'fs/promises';\n\nimport { FileStorageConfig } from './types';\nimport { ensureParentDirectoryExists, resolveFilePath } from './utils';\n\nconst getProcessFileWriteTextContents = (qpqConfig: QPQConfig, config: FileStorageConfig): FileWriteTextContentsActionProcessor => {\n return async ({ drive, filepath, data }) => {\n try {\n const fullPath = resolveFilePath(config, qpqConfig, drive, filepath);\n await ensureParentDirectoryExists(fullPath);\n await fs.writeFile(fullPath, data, 'utf8');\n return actionResult(void 0);\n } catch (error: unknown) {\n return actionResultErrorFromCaughtError(error, {\n EACCES: () => actionResultError(FileWriteTextContentsErrorTypeEnum.AccessDenied, `Access denied writing file: ${filepath}`), // node fs code\n });\n }\n };\n};\n\nexport const getFileWriteTextContentsActionProcessor =\n (config: FileStorageConfig): ActionProcessorListResolver =>\n async (qpqConfig: QPQConfig): Promise<ActionProcessorList> => ({\n [FileActionType.WriteTextContents]: getProcessFileWriteTextContents(qpqConfig, config),\n });\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/dynamicActionProcessor/file/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,iFAA8E;AAC9E,iFAA8E;AAC9E,yHAAsH;AACtH,qIAAkI;AAClI,+FAA4F;AAC5F,+FAA4F;AAC5F,yGAAsG;AACtG,iGAA8F;AAC9F,qGAAkG;AAClG,yFAAsF;AACtF,2GAAwG;AACxG,mGAAgG;AAChG,uGAAoG;AAGpG,0CAAwB;AAExB,yCAAyC;AAClC,MAAM,sBAAsB,GAAG,CAAC,iBAAoC,EAA+B,EAAE;IAC1G,OAAO,CAAO,SAAoB,EAAE,mBAAwC,EAAgC,EAAE;QAAC,OAAA,2LAC1G,CAAC,MAAM,IAAA,+EAAsC,EAAC,iBAAiB,CAAC,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,GACjG,CAAC,MAAM,IAAA,iFAAuC,EAAC,iBAAiB,CAAC,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,GAClG,CAAC,MAAM,IAAA,2EAAoC,EAAC,iBAAiB,CAAC,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,GAC/F,CAAC,MAAM,IAAA,6EAAqC,EAAC,iBAAiB,CAAC,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,GAChG,CAAC,MAAM,IAAA,mFAAwC,EAAC,iBAAiB,CAAC,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,GACnG,CAAC,MAAM,IAAA,qFAAyC,EAAC,iBAAiB,CAAC,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,GACpG,CAAC,MAAM,IAAA,yEAAmC,EAAC,iBAAiB,CAAC,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,GAC9F,CAAC,MAAM,IAAA,2DAA4B,EAAC,iBAAiB,CAAC,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,GACvF,CAAC,MAAM,IAAA,2DAA4B,EAAC,iBAAiB,CAAC,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,GACvF,CAAC,MAAM,IAAA,mGAAgD,EAAC,iBAAiB,CAAC,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,GAC3G,CAAC,MAAM,IAAA,+GAAsD,EAAC,iBAAiB,CAAC,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,GACjH,CAAC,MAAM,IAAA,yEAAmC,EAAC,iBAAiB,CAAC,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,GAC9F,CAAC,MAAM,IAAA,mEAAgC,EAAC,iBAAiB,CAAC,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,EAC9F,CAAA;MAAA,CAAC;AACL,CAAC,CAAC;AAhBW,QAAA,sBAAsB,0BAgBjC;AAEF,mDAAiC;AACjC,0CAAwB","sourcesContent":["import { ActionProcessorList, ActionProcessorListResolver, DynamicModuleLoader, QPQConfig } from 'quidproquo-core';\n\nimport { getFileDeleteActionProcessor } from './getFileDeleteActionProcessor';\nimport { getFileExistsActionProcessor } from './getFileExistsActionProcessor';\nimport { getFileGenerateTemporarySecureUrlActionProcessor } from './getFileGenerateTemporarySecureUrlActionProcessor';\nimport { getFileGenerateTemporaryUploadSecureUrlActionProcessor } from './getFileGenerateTemporaryUploadSecureUrlActionProcessor';\nimport { getFileIsColdStorageActionProcessor } from './getFileIsColdStorageActionProcessor';\nimport { getFileListDirectoryActionProcessor } from './getFileListDirectoryActionProcessor';\nimport { getFileReadBinaryContentsActionProcessor } from './getFileReadBinaryContentsActionProcessor';\nimport { getFileReadObjectJsonActionProcessor } from './getFileReadObjectJsonActionProcessor';\nimport { getFileReadTextContentsActionProcessor } from './getFileReadTextContentsActionProcessor';\nimport { getFileStreamOpenActionProcessor } from './getFileStreamOpenActionProcessor';\nimport { getFileWriteBinaryContentsActionProcessor } from './getFileWriteBinaryContentsActionProcessor';\nimport { getFileWriteObjectJsonActionProcessor } from './getFileWriteObjectJsonActionProcessor';\nimport { getFileWriteTextContentsActionProcessor } from './getFileWriteTextContentsActionProcessor';\nimport { FileStorageConfig } from './types';\n\nexport * from './types';\n\n// Main export that accepts configuration\nexport const getFileActionProcessor = (fileStorageConfig: FileStorageConfig): ActionProcessorListResolver => {\n return async (qpqConfig: QPQConfig, dynamicModuleLoader: DynamicModuleLoader): Promise<ActionProcessorList> => ({\n ...(await getFileReadTextContentsActionProcessor(fileStorageConfig)(qpqConfig, dynamicModuleLoader)),\n ...(await getFileWriteTextContentsActionProcessor(fileStorageConfig)(qpqConfig, dynamicModuleLoader)),\n ...(await getFileReadObjectJsonActionProcessor(fileStorageConfig)(qpqConfig, dynamicModuleLoader)),\n ...(await getFileWriteObjectJsonActionProcessor(fileStorageConfig)(qpqConfig, dynamicModuleLoader)),\n ...(await getFileReadBinaryContentsActionProcessor(fileStorageConfig)(qpqConfig, dynamicModuleLoader)),\n ...(await getFileWriteBinaryContentsActionProcessor(fileStorageConfig)(qpqConfig, dynamicModuleLoader)),\n ...(await getFileListDirectoryActionProcessor(fileStorageConfig)(qpqConfig, dynamicModuleLoader)),\n ...(await getFileExistsActionProcessor(fileStorageConfig)(qpqConfig, dynamicModuleLoader)),\n ...(await getFileDeleteActionProcessor(fileStorageConfig)(qpqConfig, dynamicModuleLoader)),\n ...(await getFileGenerateTemporarySecureUrlActionProcessor(fileStorageConfig)(qpqConfig, dynamicModuleLoader)),\n ...(await getFileGenerateTemporaryUploadSecureUrlActionProcessor(fileStorageConfig)(qpqConfig, dynamicModuleLoader)),\n ...(await getFileIsColdStorageActionProcessor(fileStorageConfig)(qpqConfig, dynamicModuleLoader)),\n ...(await getFileStreamOpenActionProcessor(fileStorageConfig)(qpqConfig, dynamicModuleLoader)),\n });\n};\n\nexport * from './secureUrlUtils';\nexport * from './utils';\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secureUrlUtils.js","sourceRoot":"","sources":["../../../../src/dynamicActionProcessor/file/secureUrlUtils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAiC;AAWjC,wCAAwC;AACjC,MAAM,oBAAoB,GAAG,CAAC,KAAqB,EAAE,MAAc,EAAU,EAAE;IACpF,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAEjE,wBAAwB;IACxB,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAEhG,oCAAoC;IACpC,OAAO,GAAG,aAAa,IAAI,SAAS,EAAE,CAAC;AACzC,CAAC,CAAC;AATW,QAAA,oBAAoB,wBAS/B;AAEF,mCAAmC;AAC5B,MAAM,oBAAoB,GAAG,CAAC,WAAmB,EAAE,MAAc,EAAyB,EAAE;IACjG,IAAI,CAAC;QACH,MAAM,CAAC,aAAa,EAAE,SAAS,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAE1D,IAAI,CAAC,aAAa,IAAI,CAAC,SAAS,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,mBAAmB;QACnB,MAAM,iBAAiB,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAExG,IAAI,SAAS,KAAK,iBAAiB,EAAE,CAAC;YACpC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,iBAAiB;QACjB,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC;QACnE,MAAM,KAAK,GAAmB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAElD,mBAAmB;QACnB,IAAI,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AA5BW,QAAA,oBAAoB,wBA4B/B;AAEF,8BAA8B;AACvB,MAAM,mBAAmB,GAAG,CAAC,MAAyB,EAAU,EAAE;IACvE,OAAO,UAAU,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;AAClE,CAAC,CAAC;AAFW,QAAA,mBAAmB,uBAE9B","sourcesContent":["import * as crypto from 'crypto';\n\nimport { FileStorageConfig } from './types';\n\nexport interface SecureUrlToken {\n fullFilepath: string;\n operation: 'download' | 'upload';\n expiresAt: number;\n contentType?: string;\n}\n\n// Create a signed token for secure URLs\nexport const createSecureUrlToken = (token: SecureUrlToken, secret: string): string => {\n const payload = JSON.stringify(token);\n const payloadBase64 = Buffer.from(payload).toString('base64url');\n\n // Create HMAC signature\n const signature = crypto.createHmac('sha256', secret).update(payloadBase64).digest('base64url');\n\n // Return token as payload.signature\n return `${payloadBase64}.${signature}`;\n};\n\n// Verify and decode a signed token\nexport const verifySecureUrlToken = (tokenString: string, secret: string): SecureUrlToken | null => {\n try {\n const [payloadBase64, signature] = tokenString.split('.');\n\n if (!payloadBase64 || !signature) {\n return null;\n }\n\n // Verify signature\n const expectedSignature = crypto.createHmac('sha256', secret).update(payloadBase64).digest('base64url');\n\n if (signature !== expectedSignature) {\n return null;\n }\n\n // Decode payload\n const payload = Buffer.from(payloadBase64, 'base64url').toString();\n const token: SecureUrlToken = JSON.parse(payload);\n\n // Check expiration\n if (token.expiresAt < Date.now()) {\n return null;\n }\n\n return token;\n } catch (error) {\n return null;\n }\n};\n\n// Get the secure URL base URL\nexport const getSecureUrlBaseUrl = (config: FileStorageConfig): string => {\n return `http://${config.secureUrlHost}:${config.secureUrlPort}`;\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/dynamicActionProcessor/file/types.ts"],"names":[],"mappings":"","sourcesContent":["// Required config with all fields filled by the dev server\nexport interface FileStorageConfig {\n storagePath: string;\n secureUrlPort: number;\n secureUrlHost: string;\n secureUrlSecret: string;\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/dynamicActionProcessor/file/utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqBA,0DAGC;AAED,0CA2BC;AArDD,qDAA0D;AAE1D,gDAAkC;AAClC,2CAA6B;AAI7B,4CAA4C;AACrC,MAAM,uBAAuB,GAAG,CAAC,KAAa,EAAE,SAAoB,EAAW,EAAE;IACtF,MAAM,YAAY,GAAG,8BAAY,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,KAAK,CAAC,CAAC;IAEpG,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AARW,QAAA,uBAAuB,2BAQlC;AAEF,iFAAiF;AACjF,8EAA8E;AAC9E,6EAA6E;AAC7E,SAAgB,uBAAuB,CAAC,KAAa,EAAE,SAAoB;;IACzE,MAAM,YAAY,GAAG,8BAAY,CAAC,qBAAqB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC1E,OAAO,MAAA,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,KAAK,0CAAE,MAAM,mCAAI,8BAAY,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;AACzF,CAAC;AAED,SAAgB,eAAe,CAAC,iBAAoC,EAAE,SAAoB,EAAE,KAAa,EAAE,QAAgB;IACzH,MAAM,OAAO,GAAG,uBAAuB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC1D,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAEzE,+CAA+C;IAC/C,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrD,CAAC;IAED,uEAAuE;IACvE,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;IACnC,CAAC;IAED,kDAAkD;IAClD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAEzC,2BAA2B;IAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAE3C,kCAAkC;IAClC,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACxC,IAAI,GAAG,KAAK,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACnE,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;AAC5D,CAAC;AAED,4BAA4B;AACrB,MAAM,qBAAqB,GAAG,CAAO,OAAe,EAAiB,EAAE;IAC5E,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAC/C,CAAC,CAAA,CAAC;AAFW,QAAA,qBAAqB,yBAEhC;AAEF,+CAA+C;AACxC,MAAM,2BAA2B,GAAG,CAAO,QAAgB,EAAiB,EAAE;IACnF,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACzC,MAAM,IAAA,6BAAqB,EAAC,SAAS,CAAC,CAAC;AACzC,CAAC,CAAA,CAAC;AAHW,QAAA,2BAA2B,+BAGtC","sourcesContent":["import { QPQConfig, qpqCoreUtils } from 'quidproquo-core';\n\nimport * as fs from 'fs/promises';\nimport * as path from 'path';\n\nimport { FileStorageConfig } from './types';\n\n// Resolve a drive name to a filesystem path\nexport const isStorageDriveNameValid = (drive: string, qpqConfig: QPQConfig): boolean => {\n const storageDrive = qpqCoreUtils.getStorageDrives(qpqConfig).find((d) => d.storageDrive === drive);\n\n if (!storageDrive) {\n return false;\n }\n\n return true;\n};\n\n// Resolve the service that owns a drive's on-disk location. Drives declared with\n// `owner.module` are shared across services, so every caller reads and writes\n// under the owner's folder — mirroring how AWS resolves the bucket by owner.\nexport function resolveDriveServiceName(drive: string, qpqConfig: QPQConfig): string {\n const storageDrive = qpqCoreUtils.getStorageDriveByName(drive, qpqConfig);\n return storageDrive?.owner?.module ?? qpqCoreUtils.getApplicationModuleName(qpqConfig);\n}\n\nexport function resolveFilePath(fileStorageConfig: FileStorageConfig, qpqConfig: QPQConfig, drive: string, filepath: string): string {\n const service = resolveDriveServiceName(drive, qpqConfig);\n const root = path.resolve(fileStorageConfig.storagePath, service, drive);\n\n // Block absolute paths and null bytes outright\n if (path.isAbsolute(filepath)) {\n throw new Error('Absolute paths are not allowed.');\n }\n\n // Check for null to prevent directory traversal attacks in native libs\n if (filepath.includes('\\0')) {\n throw new Error('Invalid path.');\n }\n\n // Normalize user input (collapses ., .., slashes)\n const cleaned = path.normalize(filepath);\n\n // Resolve against the root\n const target = path.resolve(root, cleaned);\n\n // Ensure target stays within root\n const rel = path.relative(root, target);\n if (rel === '' || (!rel.startsWith('..') && !path.isAbsolute(rel))) {\n return target;\n }\n\n throw new Error('Invalid file path: escapes drive root.');\n}\n\n// Ensure a directory exists\nexport const ensureDirectoryExists = async (dirPath: string): Promise<void> => {\n await fs.mkdir(dirPath, { recursive: true });\n};\n\n// Ensure the parent directory of a file exists\nexport const ensureParentDirectoryExists = async (filePath: string): Promise<void> => {\n const parentDir = path.dirname(filePath);\n await ensureDirectoryExists(parentDir);\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/dynamicActionProcessor/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAuB","sourcesContent":["export * from './file';\n"]}
|
package/lib/commonjs/index.d.ts
CHANGED
package/lib/commonjs/index.js
CHANGED
|
@@ -16,3 +16,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./actionProcessor"), exports);
|
|
18
18
|
__exportStar(require("./dynamicActionProcessor"), exports);
|
|
19
|
+
__exportStar(require("./traceStoryExecution"), exports);
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC;AAClC,2DAAyC;AACzC,wDAAsC","sourcesContent":["export * from './actionProcessor';\nexport * from './dynamicActionProcessor';\nexport * from './traceStoryExecution';\n"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface TraceControllerWorkerData {
|
|
2
|
+
scriptPatterns: string[];
|
|
3
|
+
onlyOwnCode: boolean;
|
|
4
|
+
maxSteps: number;
|
|
5
|
+
maxTraceMs: number;
|
|
6
|
+
maxValueLength: number;
|
|
7
|
+
maxProperties: number;
|
|
8
|
+
maxValueDepth: number;
|
|
9
|
+
maxSerializedLength: number;
|
|
10
|
+
}
|
|
11
|
+
export declare function traceControllerWorkerMain(): void;
|