quidproquo-actionprocessor-node 0.1.16 → 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.
Files changed (110) hide show
  1. package/README.md +15 -97
  2. package/lib/commonjs/actionProcessor/core/dynamicFunctions/getDynamicFunctionsExecuteActionProcessor.d.ts +1 -2
  3. package/lib/commonjs/actionProcessor/core/dynamicFunctions/getDynamicFunctionsExecuteActionProcessor.js +1 -6
  4. package/lib/commonjs/actionProcessor/core/dynamicFunctions/getDynamicFunctionsExecuteActionProcessor.js.map +1 -1
  5. package/lib/commonjs/actionProcessor/core/index.js +1 -1
  6. package/lib/commonjs/actionProcessor/core/index.js.map +1 -1
  7. package/lib/commonjs/actionProcessor/core/inlineFunction/getInlineFunctionExecuteActionProcessor.d.ts +1 -2
  8. package/lib/commonjs/actionProcessor/core/inlineFunction/getInlineFunctionExecuteActionProcessor.js +1 -6
  9. package/lib/commonjs/actionProcessor/core/inlineFunction/getInlineFunctionExecuteActionProcessor.js.map +1 -1
  10. package/lib/commonjs/actionProcessor/core/stream/getStreamCloseActionProcessor.d.ts +1 -2
  11. package/lib/commonjs/actionProcessor/core/stream/getStreamCloseActionProcessor.js +1 -6
  12. package/lib/commonjs/actionProcessor/core/stream/getStreamCloseActionProcessor.js.map +1 -1
  13. package/lib/commonjs/actionProcessor/core/stream/getStreamReadActionProcessor.d.ts +1 -2
  14. package/lib/commonjs/actionProcessor/core/stream/getStreamReadActionProcessor.js +1 -6
  15. package/lib/commonjs/actionProcessor/core/stream/getStreamReadActionProcessor.js.map +1 -1
  16. package/lib/commonjs/dynamicActionProcessor/file/getFileDeleteActionProcessor.d.ts +1 -2
  17. package/lib/commonjs/dynamicActionProcessor/file/getFileDeleteActionProcessor.js +3 -7
  18. package/lib/commonjs/dynamicActionProcessor/file/getFileDeleteActionProcessor.js.map +1 -1
  19. package/lib/commonjs/dynamicActionProcessor/file/getFileExistsActionProcessor.d.ts +1 -2
  20. package/lib/commonjs/dynamicActionProcessor/file/getFileExistsActionProcessor.js +3 -7
  21. package/lib/commonjs/dynamicActionProcessor/file/getFileExistsActionProcessor.js.map +1 -1
  22. package/lib/commonjs/dynamicActionProcessor/file/getFileGenerateTemporarySecureUrlActionProcessor.d.ts +1 -2
  23. package/lib/commonjs/dynamicActionProcessor/file/getFileGenerateTemporarySecureUrlActionProcessor.js +3 -7
  24. package/lib/commonjs/dynamicActionProcessor/file/getFileGenerateTemporarySecureUrlActionProcessor.js.map +1 -1
  25. package/lib/commonjs/dynamicActionProcessor/file/getFileGenerateTemporaryUploadSecureUrlActionProcessor.d.ts +1 -2
  26. package/lib/commonjs/dynamicActionProcessor/file/getFileGenerateTemporaryUploadSecureUrlActionProcessor.js +3 -7
  27. package/lib/commonjs/dynamicActionProcessor/file/getFileGenerateTemporaryUploadSecureUrlActionProcessor.js.map +1 -1
  28. package/lib/commonjs/dynamicActionProcessor/file/getFileIsColdStorageActionProcessor.d.ts +1 -2
  29. package/lib/commonjs/dynamicActionProcessor/file/getFileIsColdStorageActionProcessor.js +1 -5
  30. package/lib/commonjs/dynamicActionProcessor/file/getFileIsColdStorageActionProcessor.js.map +1 -1
  31. package/lib/commonjs/dynamicActionProcessor/file/getFileListDirectoryActionProcessor.d.ts +1 -2
  32. package/lib/commonjs/dynamicActionProcessor/file/getFileListDirectoryActionProcessor.js +5 -9
  33. package/lib/commonjs/dynamicActionProcessor/file/getFileListDirectoryActionProcessor.js.map +1 -1
  34. package/lib/commonjs/dynamicActionProcessor/file/getFileReadBinaryContentsActionProcessor.d.ts +1 -2
  35. package/lib/commonjs/dynamicActionProcessor/file/getFileReadBinaryContentsActionProcessor.js +3 -7
  36. package/lib/commonjs/dynamicActionProcessor/file/getFileReadBinaryContentsActionProcessor.js.map +1 -1
  37. package/lib/commonjs/dynamicActionProcessor/file/getFileReadObjectJsonActionProcessor.d.ts +1 -2
  38. package/lib/commonjs/dynamicActionProcessor/file/getFileReadObjectJsonActionProcessor.js +4 -8
  39. package/lib/commonjs/dynamicActionProcessor/file/getFileReadObjectJsonActionProcessor.js.map +1 -1
  40. package/lib/commonjs/dynamicActionProcessor/file/getFileReadTextContentsActionProcessor.d.ts +1 -2
  41. package/lib/commonjs/dynamicActionProcessor/file/getFileReadTextContentsActionProcessor.js +3 -7
  42. package/lib/commonjs/dynamicActionProcessor/file/getFileReadTextContentsActionProcessor.js.map +1 -1
  43. package/lib/commonjs/dynamicActionProcessor/file/getFileStreamOpenActionProcessor.d.ts +1 -2
  44. package/lib/commonjs/dynamicActionProcessor/file/getFileStreamOpenActionProcessor.js +3 -7
  45. package/lib/commonjs/dynamicActionProcessor/file/getFileStreamOpenActionProcessor.js.map +1 -1
  46. package/lib/commonjs/dynamicActionProcessor/file/getFileWriteBinaryContentsActionProcessor.d.ts +1 -2
  47. package/lib/commonjs/dynamicActionProcessor/file/getFileWriteBinaryContentsActionProcessor.js +3 -7
  48. package/lib/commonjs/dynamicActionProcessor/file/getFileWriteBinaryContentsActionProcessor.js.map +1 -1
  49. package/lib/commonjs/dynamicActionProcessor/file/getFileWriteObjectJsonActionProcessor.d.ts +1 -2
  50. package/lib/commonjs/dynamicActionProcessor/file/getFileWriteObjectJsonActionProcessor.js +3 -7
  51. package/lib/commonjs/dynamicActionProcessor/file/getFileWriteObjectJsonActionProcessor.js.map +1 -1
  52. package/lib/commonjs/dynamicActionProcessor/file/getFileWriteTextContentsActionProcessor.d.ts +1 -2
  53. package/lib/commonjs/dynamicActionProcessor/file/getFileWriteTextContentsActionProcessor.js +3 -7
  54. package/lib/commonjs/dynamicActionProcessor/file/getFileWriteTextContentsActionProcessor.js.map +1 -1
  55. package/lib/commonjs/traceStoryExecution/getSystemTraceStoryActionProcessor.js.map +1 -1
  56. package/lib/esm/actionProcessor/core/dynamicFunctions/getDynamicFunctionsExecuteActionProcessor.d.ts +1 -2
  57. package/lib/esm/actionProcessor/core/dynamicFunctions/getDynamicFunctionsExecuteActionProcessor.js +2 -4
  58. package/lib/esm/actionProcessor/core/dynamicFunctions/getDynamicFunctionsExecuteActionProcessor.js.map +1 -1
  59. package/lib/esm/actionProcessor/core/index.js +1 -1
  60. package/lib/esm/actionProcessor/core/index.js.map +1 -1
  61. package/lib/esm/actionProcessor/core/inlineFunction/getInlineFunctionExecuteActionProcessor.d.ts +1 -2
  62. package/lib/esm/actionProcessor/core/inlineFunction/getInlineFunctionExecuteActionProcessor.js +2 -4
  63. package/lib/esm/actionProcessor/core/inlineFunction/getInlineFunctionExecuteActionProcessor.js.map +1 -1
  64. package/lib/esm/actionProcessor/core/stream/getStreamCloseActionProcessor.d.ts +1 -2
  65. package/lib/esm/actionProcessor/core/stream/getStreamCloseActionProcessor.js +2 -4
  66. package/lib/esm/actionProcessor/core/stream/getStreamCloseActionProcessor.js.map +1 -1
  67. package/lib/esm/actionProcessor/core/stream/getStreamReadActionProcessor.d.ts +1 -2
  68. package/lib/esm/actionProcessor/core/stream/getStreamReadActionProcessor.js +2 -4
  69. package/lib/esm/actionProcessor/core/stream/getStreamReadActionProcessor.js.map +1 -1
  70. package/lib/esm/dynamicActionProcessor/file/getFileDeleteActionProcessor.d.ts +1 -2
  71. package/lib/esm/dynamicActionProcessor/file/getFileDeleteActionProcessor.js +4 -6
  72. package/lib/esm/dynamicActionProcessor/file/getFileDeleteActionProcessor.js.map +1 -1
  73. package/lib/esm/dynamicActionProcessor/file/getFileExistsActionProcessor.d.ts +1 -2
  74. package/lib/esm/dynamicActionProcessor/file/getFileExistsActionProcessor.js +4 -6
  75. package/lib/esm/dynamicActionProcessor/file/getFileExistsActionProcessor.js.map +1 -1
  76. package/lib/esm/dynamicActionProcessor/file/getFileGenerateTemporarySecureUrlActionProcessor.d.ts +1 -2
  77. package/lib/esm/dynamicActionProcessor/file/getFileGenerateTemporarySecureUrlActionProcessor.js +4 -6
  78. package/lib/esm/dynamicActionProcessor/file/getFileGenerateTemporarySecureUrlActionProcessor.js.map +1 -1
  79. package/lib/esm/dynamicActionProcessor/file/getFileGenerateTemporaryUploadSecureUrlActionProcessor.d.ts +1 -2
  80. package/lib/esm/dynamicActionProcessor/file/getFileGenerateTemporaryUploadSecureUrlActionProcessor.js +4 -6
  81. package/lib/esm/dynamicActionProcessor/file/getFileGenerateTemporaryUploadSecureUrlActionProcessor.js.map +1 -1
  82. package/lib/esm/dynamicActionProcessor/file/getFileIsColdStorageActionProcessor.d.ts +1 -2
  83. package/lib/esm/dynamicActionProcessor/file/getFileIsColdStorageActionProcessor.js +2 -4
  84. package/lib/esm/dynamicActionProcessor/file/getFileIsColdStorageActionProcessor.js.map +1 -1
  85. package/lib/esm/dynamicActionProcessor/file/getFileListDirectoryActionProcessor.d.ts +1 -2
  86. package/lib/esm/dynamicActionProcessor/file/getFileListDirectoryActionProcessor.js +6 -8
  87. package/lib/esm/dynamicActionProcessor/file/getFileListDirectoryActionProcessor.js.map +1 -1
  88. package/lib/esm/dynamicActionProcessor/file/getFileReadBinaryContentsActionProcessor.d.ts +1 -2
  89. package/lib/esm/dynamicActionProcessor/file/getFileReadBinaryContentsActionProcessor.js +4 -6
  90. package/lib/esm/dynamicActionProcessor/file/getFileReadBinaryContentsActionProcessor.js.map +1 -1
  91. package/lib/esm/dynamicActionProcessor/file/getFileReadObjectJsonActionProcessor.d.ts +1 -2
  92. package/lib/esm/dynamicActionProcessor/file/getFileReadObjectJsonActionProcessor.js +5 -7
  93. package/lib/esm/dynamicActionProcessor/file/getFileReadObjectJsonActionProcessor.js.map +1 -1
  94. package/lib/esm/dynamicActionProcessor/file/getFileReadTextContentsActionProcessor.d.ts +1 -2
  95. package/lib/esm/dynamicActionProcessor/file/getFileReadTextContentsActionProcessor.js +4 -6
  96. package/lib/esm/dynamicActionProcessor/file/getFileReadTextContentsActionProcessor.js.map +1 -1
  97. package/lib/esm/dynamicActionProcessor/file/getFileStreamOpenActionProcessor.d.ts +1 -2
  98. package/lib/esm/dynamicActionProcessor/file/getFileStreamOpenActionProcessor.js +4 -6
  99. package/lib/esm/dynamicActionProcessor/file/getFileStreamOpenActionProcessor.js.map +1 -1
  100. package/lib/esm/dynamicActionProcessor/file/getFileWriteBinaryContentsActionProcessor.d.ts +1 -2
  101. package/lib/esm/dynamicActionProcessor/file/getFileWriteBinaryContentsActionProcessor.js +4 -6
  102. package/lib/esm/dynamicActionProcessor/file/getFileWriteBinaryContentsActionProcessor.js.map +1 -1
  103. package/lib/esm/dynamicActionProcessor/file/getFileWriteObjectJsonActionProcessor.d.ts +1 -2
  104. package/lib/esm/dynamicActionProcessor/file/getFileWriteObjectJsonActionProcessor.js +4 -6
  105. package/lib/esm/dynamicActionProcessor/file/getFileWriteObjectJsonActionProcessor.js.map +1 -1
  106. package/lib/esm/dynamicActionProcessor/file/getFileWriteTextContentsActionProcessor.d.ts +1 -2
  107. package/lib/esm/dynamicActionProcessor/file/getFileWriteTextContentsActionProcessor.js +4 -6
  108. package/lib/esm/dynamicActionProcessor/file/getFileWriteTextContentsActionProcessor.js.map +1 -1
  109. package/lib/esm/traceStoryExecution/getSystemTraceStoryActionProcessor.js.map +1 -1
  110. package/package.json +11 -9
package/README.md CHANGED
@@ -1,112 +1,30 @@
1
1
  # quidproquo-actionprocessor-node
2
2
 
3
- The `quidproquo-actionprocessor-node` library provides a set of generic action processors for the `quidproquo` framework, allowing you to easily
4
- integrate common functionality into your Node.js-based applications.
3
+ The Node.js runtime for [quidproquo](https://github.com/qpqjs/quidproquo).
5
4
 
6
- ## Key Features
5
+ A qpq story yields actions, and a **processor** is the function that actually carries one out. This package supplies the processors that need Node: streams, dynamic function loading, and inline function execution. It builds on `quidproquo-actionprocessor-js`, which covers everything that works on any JavaScript engine.
7
6
 
8
- 1. **Comprehensive Action Processors**: This library includes a wide range of action processors that cover various common use cases, such as date/time
9
- operations, error handling, event processing, GUID generation, logging, math operations, network requests, platform-specific functionality (e.g.,
10
- delays), and system-level actions.
7
+ You do not usually install this yourself. It arrives as a dependency of `quidproquo-dev-server`, `quidproquo-actionprocessor-awslambda`, and the CLI.
11
8
 
12
- 2. **Extensibility**: The action processor architecture is designed to be highly extensible, allowing you to easily add custom action processors to
13
- meet your specific requirements.
9
+ ## What is in here
14
10
 
15
- 3. **Dependency Injection**: The action processors are integrated with the `quidproquo` dependency injection system, making it easy to compose and
16
- test your application components.
11
+ - **Node processors** for stream, dynamic function, and inline function actions
12
+ - **`traceStoryExecution`**, which replays a story under the Node inspector to produce a statement-by-statement execution trace with local values. This is what the admin console renders as an annotated source view
13
+ - **Dynamic action processors**, for resolving processor sets at runtime rather than at build time
14
+ - **Test helpers** for driving stories against real Node behaviour
17
15
 
18
- 4. **Testability**: The action-oriented architecture and asynchronous execution model of `quidproquo-actionprocessor-node` make it highly testable,
19
- with support for unit, integration, and end-to-end testing.
16
+ ## Where it runs
20
17
 
21
- 5. **Portability**: While the `quidproquo-actionprocessor-node` library is designed to run on Node.js, the underlying `quidproquo-core` library is
22
- platform-agnostic, allowing you to potentially use these action processors in other environments as well.
18
+ Anywhere Node runs: the dev server, a container, a script, or as the base layer under the AWS Lambda processors.
23
19
 
24
- ## Getting Started
20
+ ## Status
25
21
 
26
- To use the `quidproquo-actionprocessor-node` library, you'll need to install the package and its dependencies. You can do this using your preferred
27
- package manager, such as npm or yarn:
22
+ Pre-1.0. The whole `quidproquo-*` family releases in lockstep, so versions that share a number were built and tested together. Expect APIs to move between releases, and pin your versions.
28
23
 
29
- ```
30
- npm install quidproquo-actionprocessor-node
31
- ```
24
+ ## Documentation
32
25
 
33
- Once you have the package installed, you can start using the provided action processors in your `quidproquo`-based application. The library exports a
34
- set of action processors that you can import and use in your code.
35
-
36
- ## Action Processors
37
-
38
- The `quidproquo-actionprocessor-node` library provides the following action processors:
39
-
40
- 1. **Date/Time Action Processors**:
41
-
42
- - `DateNowActionProcessor`: Retrieves the current date and time as an ISO string.
43
-
44
- 2. **Error Action Processors**:
45
-
46
- - `ErrorThrowErrorActionProcessor`: Throws a custom error with a specified type, text, and stack trace.
47
-
48
- 3. **Event Action Processors**:
49
-
50
- - (No event-specific action processors are currently implemented)
51
-
52
- 4. **GUID Action Processors**:
53
-
54
- - `GuidNewActionProcessor`: Generates a new UUID.
55
-
56
- 5. **Logging Action Processors**:
57
-
58
- - `LogCreateActionProcessor`: Logs a message with a specified log level and optional data.
59
-
60
- 6. **Math Action Processors**:
61
-
62
- - `MathRandomNumberActionProcessor`: Generates a random number.
63
-
64
- 7. **Network Action Processors**:
65
-
66
- - `NetworkRequestActionProcessor`: Performs an HTTP request with various options (method, headers, body, etc.).
67
-
68
- 8. **Platform Action Processors**:
69
-
70
- - `PlatformDelayActionProcessor`: Delays the execution for a specified number of milliseconds.
71
-
72
- 9. **System Action Processors**:
73
-
74
- - `SystemBatchActionProcessor`: Executes a batch of actions and returns the results.
75
-
76
- 10. **User Directory Action Processors**:
77
-
78
- - (No user directory-specific action processors are currently implemented)
79
-
80
- ## Usage
81
-
82
- To use the action processors provided by `quidproquo-actionprocessor-node`, you can import them into your `quidproquo`-based application and integrate
83
- them with your action processor configuration. Here's an example of how you might use the `DateNowActionProcessor`:
84
-
85
- ```typescript
86
- import { DateNowActionProcessor, actionResult, DateActionType } from 'quidproquo-actionprocessor-node';
87
-
88
- const processDateNow: DateNowActionProcessor = async () => {
89
- return actionResult(new Date().toISOString());
90
- };
91
-
92
- export default {
93
- [DateActionType.Now]: processDateNow,
94
- };
95
- ```
96
-
97
- In this example, we define a `DateNowActionProcessor` function that returns the current date and time as an ISO string. We then export this processor
98
- under the `DateActionType.Now` action type, which can be used in our `quidproquo`-based application.
99
-
100
- ## Contribution and Development
101
-
102
- If you'd like to contribute to the development of `quidproquo-actionprocessor-node`, please refer to the
103
- [contributing guidelines](https://github.com/joe-coady/quidproquo/blob/main/CONTRIBUTING.md) for more information.
26
+ [docs.quidproquojs.com](https://docs.quidproquojs.com)
104
27
 
105
28
  ## License
106
29
 
107
- `quidproquo-actionprocessor-node` is licensed under the [MIT License](https://github.com/joe-coady/quidproquo/blob/main/LICENSE).
108
-
109
- ## Warning: Not for Production
110
-
111
- **This project is currently under active development and should not be used in production environments. The APIs and functionality are subject to
112
- change without notice.**
30
+ MIT. See [LICENSE](https://github.com/qpqjs/quidproquo/blob/main/LICENSE).
@@ -1,2 +1 @@
1
- import { ActionProcessorListResolver } from 'quidproquo-core';
2
- export declare const getDynamicFunctionsExecuteActionProcessor: ActionProcessorListResolver;
1
+ export declare const getDynamicFunctionsExecuteActionProcessor: import("quidproquo-core").ActionProcessorListResolver;
@@ -76,10 +76,5 @@ const getProcessExecute = (qpqConfig) => {
76
76
  }
77
77
  });
78
78
  };
79
- const getDynamicFunctionsExecuteActionProcessor = (qpqConfig) => __awaiter(void 0, void 0, void 0, function* () {
80
- return ({
81
- [quidproquo_core_1.DynamicFunctionsActionType.Execute]: getProcessExecute(qpqConfig),
82
- });
83
- });
84
- exports.getDynamicFunctionsExecuteActionProcessor = getDynamicFunctionsExecuteActionProcessor;
79
+ exports.getDynamicFunctionsExecuteActionProcessor = (0, quidproquo_core_1.createActionProcessor)(quidproquo_core_1.askDynamicFunctionExecuteBase, getProcessExecute);
85
80
  //# sourceMappingURL=getDynamicFunctionsExecuteActionProcessor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getDynamicFunctionsExecuteActionProcessor.js","sourceRoot":"","sources":["../../../../../src/actionProcessor/core/dynamicFunctions/getDynamicFunctionsExecuteActionProcessor.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n ActionProcessorList,\n ActionProcessorListResolver,\n actionResult,\n actionResultError,\n AskResponse,\n createRuntime,\n DynamicFunctionsActionType,\n DynamicFunctionsExecuteActionPayload,\n DynamicFunctionsExecuteActionProcessor,\n DynamicFunctionsExecuteErrorTypeEnum,\n DynamicModuleLoader,\n Nullable,\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\n// The member execution contract: a member returning an iterable iterator (a sync\n// generator - the shape of every qpq story) is driven through the runtime as a\n// logged sub-story; anything else is a plain result, awaited if it is a promise.\nconst isStoryIterator = (value: unknown): value is AskResponse<unknown> => {\n const candidate = value as Nullable<{ next?: unknown; [Symbol.iterator]?: unknown }>;\n\n return typeof candidate?.next === 'function' && typeof candidate?.[Symbol.iterator] === 'function';\n};\n\nconst getErrorMessage = (error: unknown): string => (error instanceof Error ? error.message : String(error));\n\nconst getProcessExecute = <R>(qpqConfig: QPQConfig): DynamicFunctionsExecuteActionProcessor<R> => {\n const moduleName = qpqCoreUtils.getApplicationModuleName(qpqConfig);\n\n return async (\n payload: DynamicFunctionsExecuteActionPayload,\n session: StorySession,\n actionProcessors: ActionProcessorList,\n logger: QpqLogger,\n updateSession: StorySessionUpdater,\n dynamicModuleLoader: DynamicModuleLoader,\n streamRegistry: StreamRegistry,\n ): Promise<any> => {\n const dynamicFunctions = qpqCoreUtils.getAllDynamicFunctions(qpqConfig);\n const dynamicFunctionsSetting = dynamicFunctions.find((f) => f.dynamicFunctionsName === payload.dynamicFunctionsName);\n\n if (!dynamicFunctionsSetting) {\n return actionResultError(\n DynamicFunctionsExecuteErrorTypeEnum.DynamicFunctionsNotFound,\n `Dynamic functions not found: [${payload.dynamicFunctionsName}]`,\n );\n }\n\n const functionsObject = await dynamicModuleLoader(dynamicFunctionsSetting.runtime);\n\n if (!functionsObject) {\n return actionResultError(\n DynamicFunctionsExecuteErrorTypeEnum.ModuleLoadFailed,\n `Unable to dynamically load dynamic functions: [${payload.dynamicFunctionsName}]`,\n );\n }\n\n // Own enumerable function properties only - the registered object IS the callable\n // surface, nothing is reachable through its prototype.\n const members = functionsObject as Record<string, unknown>;\n const member = Object.prototype.hasOwnProperty.call(members, payload.functionName) ? members[payload.functionName] : undefined;\n\n if (typeof member !== 'function') {\n return actionResultError(\n DynamicFunctionsExecuteErrorTypeEnum.FunctionNotFound,\n `Function not found: [${payload.dynamicFunctionsName}.${payload.functionName}]`,\n );\n }\n\n let invocationResult: unknown;\n try {\n invocationResult = member(...payload.args);\n } catch (error) {\n return actionResultError(\n DynamicFunctionsExecuteErrorTypeEnum.FunctionThrew,\n `[${payload.dynamicFunctionsName}.${payload.functionName}] threw: ${getErrorMessage(error)}`,\n );\n }\n\n if (isStoryIterator(invocationResult)) {\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 // Dynamic function members run WITHIN the caller's function - carry its\n // globals so stories can read route config (same rule as inline functions).\n functionGlobals: session.functionGlobals,\n },\n async () => actionProcessors,\n getDateNow,\n logger,\n `${moduleName}::${randomUUID()}`,\n QpqRuntimeType.EXECUTE_STORY,\n dynamicModuleLoader,\n dynamicFunctionsSetting.runtime,\n [],\n streamRegistry,\n );\n\n // The member was already invoked to discover it is a story; the thunk hands\n // the live iterator to the runtime without invoking it a second time.\n const storyResult = await resolveStory(() => invocationResult, []);\n\n if (storyResult.error) {\n return actionResultError(\n storyResult.error.errorType,\n storyResult.error.errorText,\n storyResult.error.errorStack\n ? `${payload.dynamicFunctionsName}.${payload.functionName} -> [${storyResult.error.errorStack}]`\n : `${payload.dynamicFunctionsName}.${payload.functionName}`,\n );\n }\n\n return actionResult<R>(storyResult.result);\n }\n\n try {\n return actionResult<R>((await invocationResult) as R);\n } catch (error) {\n return actionResultError(\n DynamicFunctionsExecuteErrorTypeEnum.FunctionThrew,\n `[${payload.dynamicFunctionsName}.${payload.functionName}] threw: ${getErrorMessage(error)}`,\n );\n }\n };\n};\n\nexport const getDynamicFunctionsExecuteActionProcessor: ActionProcessorListResolver = async (qpqConfig: QPQConfig): Promise<ActionProcessorList> => ({\n [DynamicFunctionsActionType.Execute]: getProcessExecute(qpqConfig),\n});\n"]}
1
+ {"version":3,"file":"getDynamicFunctionsExecuteActionProcessor.js","sourceRoot":"","sources":["../../../../../src/actionProcessor/core/dynamicFunctions/getDynamicFunctionsExecuteActionProcessor.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n ActionProcessorList,\n actionResult,\n actionResultError,\n askDynamicFunctionExecuteBase,\n AskResponse,\n createActionProcessor,\n createRuntime,\n DynamicFunctionsActionType,\n DynamicFunctionsExecuteActionPayload,\n DynamicFunctionsExecuteErrorTypeEnum,\n DynamicModuleLoader,\n Nullable,\n ProcessorFor,\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\n// The member execution contract: a member returning an iterable iterator (a sync\n// generator - the shape of every qpq story) is driven through the runtime as a\n// logged sub-story; anything else is a plain result, awaited if it is a promise.\nconst isStoryIterator = (value: unknown): value is AskResponse<unknown> => {\n const candidate = value as Nullable<{ next?: unknown; [Symbol.iterator]?: unknown }>;\n\n return typeof candidate?.next === 'function' && typeof candidate?.[Symbol.iterator] === 'function';\n};\n\nconst getErrorMessage = (error: unknown): string => (error instanceof Error ? error.message : String(error));\n\nconst getProcessExecute = <R>(qpqConfig: QPQConfig): ProcessorFor<typeof askDynamicFunctionExecuteBase> => {\n const moduleName = qpqCoreUtils.getApplicationModuleName(qpqConfig);\n\n return async (\n payload: DynamicFunctionsExecuteActionPayload,\n session: StorySession,\n actionProcessors: ActionProcessorList,\n logger: QpqLogger,\n updateSession: StorySessionUpdater,\n dynamicModuleLoader: DynamicModuleLoader,\n streamRegistry: StreamRegistry,\n ): Promise<any> => {\n const dynamicFunctions = qpqCoreUtils.getAllDynamicFunctions(qpqConfig);\n const dynamicFunctionsSetting = dynamicFunctions.find((f) => f.dynamicFunctionsName === payload.dynamicFunctionsName);\n\n if (!dynamicFunctionsSetting) {\n return actionResultError(\n DynamicFunctionsExecuteErrorTypeEnum.DynamicFunctionsNotFound,\n `Dynamic functions not found: [${payload.dynamicFunctionsName}]`,\n );\n }\n\n const functionsObject = await dynamicModuleLoader(dynamicFunctionsSetting.runtime);\n\n if (!functionsObject) {\n return actionResultError(\n DynamicFunctionsExecuteErrorTypeEnum.ModuleLoadFailed,\n `Unable to dynamically load dynamic functions: [${payload.dynamicFunctionsName}]`,\n );\n }\n\n // Own enumerable function properties only - the registered object IS the callable\n // surface, nothing is reachable through its prototype.\n const members = functionsObject as Record<string, unknown>;\n const member = Object.prototype.hasOwnProperty.call(members, payload.functionName) ? members[payload.functionName] : undefined;\n\n if (typeof member !== 'function') {\n return actionResultError(\n DynamicFunctionsExecuteErrorTypeEnum.FunctionNotFound,\n `Function not found: [${payload.dynamicFunctionsName}.${payload.functionName}]`,\n );\n }\n\n let invocationResult: unknown;\n try {\n invocationResult = member(...payload.args);\n } catch (error) {\n return actionResultError(\n DynamicFunctionsExecuteErrorTypeEnum.FunctionThrew,\n `[${payload.dynamicFunctionsName}.${payload.functionName}] threw: ${getErrorMessage(error)}`,\n );\n }\n\n if (isStoryIterator(invocationResult)) {\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 // Dynamic function members run WITHIN the caller's function - carry its\n // globals so stories can read route config (same rule as inline functions).\n functionGlobals: session.functionGlobals,\n },\n async () => actionProcessors,\n getDateNow,\n logger,\n `${moduleName}::${randomUUID()}`,\n QpqRuntimeType.EXECUTE_STORY,\n dynamicModuleLoader,\n dynamicFunctionsSetting.runtime,\n [],\n streamRegistry,\n );\n\n // The member was already invoked to discover it is a story; the thunk hands\n // the live iterator to the runtime without invoking it a second time.\n const storyResult = await resolveStory(() => invocationResult, []);\n\n if (storyResult.error) {\n return actionResultError(\n storyResult.error.errorType,\n storyResult.error.errorText,\n storyResult.error.errorStack\n ? `${payload.dynamicFunctionsName}.${payload.functionName} -> [${storyResult.error.errorStack}]`\n : `${payload.dynamicFunctionsName}.${payload.functionName}`,\n );\n }\n\n return actionResult<R>(storyResult.result);\n }\n\n try {\n return actionResult<R>((await invocationResult) as R);\n } catch (error) {\n return actionResultError(\n DynamicFunctionsExecuteErrorTypeEnum.FunctionThrew,\n `[${payload.dynamicFunctionsName}.${payload.functionName}] threw: ${getErrorMessage(error)}`,\n );\n }\n };\n};\n\nexport const getDynamicFunctionsExecuteActionProcessor = createActionProcessor(askDynamicFunctionExecuteBase, getProcessExecute);\n"]}
@@ -28,7 +28,7 @@ const quidproquo_actionprocessor_js_1 = require("quidproquo-actionprocessor-js")
28
28
  const dynamicFunctions_1 = require("./dynamicFunctions");
29
29
  const inlineFunction_1 = require("./inlineFunction");
30
30
  const stream_1 = require("./stream");
31
- // The shared core processors (config, context, claudeAi, date, error, guid, log,
31
+ // The shared core processors (config, context, date, error, guid, log,
32
32
  // math, network, platform, system, customActions) are owned by
33
33
  // quidproquo-actionprocessor-js. Node builds on top of js and only adds the
34
34
  // processors that need a Node runtime (stream, inlineFunction, dynamicFunctions).
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/actionProcessor/core/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iFAAmG;AAGnG,yDAAwE;AACxE,qDAAoE;AACpE,qCAAoD;AAEpD,iFAAiF;AACjF,+DAA+D;AAC/D,4EAA4E;AAC5E,kFAAkF;AAClF,qDAAmC;AACnC,mDAAiC;AACjC,2CAAyB;AAElB,MAAM,sBAAsB,GAAgC,CACjE,SAAoB,EACpB,mBAAwC,EACV,EAAE;IAAC,OAAA,6DAC9B,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,GACxE,CAAC,MAAM,IAAA,qDAAkC,EAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,EAC7E,CAAA;EAAA,CAAC;AARU,QAAA,sBAAsB,0BAQhC","sourcesContent":["import { getCoreActionProcessor as getJsCoreActionProcessor } from 'quidproquo-actionprocessor-js';\nimport { ActionProcessorList, ActionProcessorListResolver, DynamicModuleLoader, QPQConfig } from 'quidproquo-core';\n\nimport { getDynamicFunctionsActionProcessor } from './dynamicFunctions';\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, dynamicFunctions).\nexport * from './dynamicFunctions';\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 ...(await getDynamicFunctionsActionProcessor(qpqConfig, dynamicModuleLoader)),\n});\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/actionProcessor/core/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iFAAmG;AAGnG,yDAAwE;AACxE,qDAAoE;AACpE,qCAAoD;AAEpD,uEAAuE;AACvE,+DAA+D;AAC/D,4EAA4E;AAC5E,kFAAkF;AAClF,qDAAmC;AACnC,mDAAiC;AACjC,2CAAyB;AAElB,MAAM,sBAAsB,GAAgC,CACjE,SAAoB,EACpB,mBAAwC,EACV,EAAE;IAAC,OAAA,6DAC9B,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,GACxE,CAAC,MAAM,IAAA,qDAAkC,EAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,EAC7E,CAAA;EAAA,CAAC;AARU,QAAA,sBAAsB,0BAQhC","sourcesContent":["import { getCoreActionProcessor as getJsCoreActionProcessor } from 'quidproquo-actionprocessor-js';\nimport { ActionProcessorList, ActionProcessorListResolver, DynamicModuleLoader, QPQConfig } from 'quidproquo-core';\n\nimport { getDynamicFunctionsActionProcessor } from './dynamicFunctions';\nimport { getInlineFunctionActionProcessor } from './inlineFunction';\nimport { getStreamActionProcessor } from './stream';\n\n// The shared core processors (config, context, 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, dynamicFunctions).\nexport * from './dynamicFunctions';\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 ...(await getDynamicFunctionsActionProcessor(qpqConfig, dynamicModuleLoader)),\n});\n"]}
@@ -1,2 +1 @@
1
- import { ActionProcessorListResolver } from 'quidproquo-core';
2
- export declare const getInlineFunctionExecuteActionProcessor: ActionProcessorListResolver;
1
+ export declare const getInlineFunctionExecuteActionProcessor: import("quidproquo-core").ActionProcessorListResolver;
@@ -43,10 +43,5 @@ const getProcessExecute = (qpqConfig) => {
43
43
  return (0, quidproquo_core_1.actionResult)(storyResult.result);
44
44
  });
45
45
  };
46
- const getInlineFunctionExecuteActionProcessor = (qpqConfig) => __awaiter(void 0, void 0, void 0, function* () {
47
- return ({
48
- [quidproquo_core_1.InlineFunctionActionType.Execute]: getProcessExecute(qpqConfig),
49
- });
50
- });
51
- exports.getInlineFunctionExecuteActionProcessor = getInlineFunctionExecuteActionProcessor;
46
+ exports.getInlineFunctionExecuteActionProcessor = (0, quidproquo_core_1.createActionProcessor)(quidproquo_core_1.askInlineFunctionExecuteBase, getProcessExecute);
52
47
  //# sourceMappingURL=getInlineFunctionExecuteActionProcessor.js.map
@@ -1 +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;YAChC,wEAAwE;YACxE,uEAAuE;YACvE,sEAAsE;YACtE,eAAe,EAAE,OAAO,CAAC,eAAe;SACzC,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 // 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<R>(storyResult.result);\n };\n};\n\nexport const getInlineFunctionExecuteActionProcessor: ActionProcessorListResolver = async (qpqConfig: QPQConfig): Promise<ActionProcessorList> => ({\n [InlineFunctionActionType.Execute]: getProcessExecute(qpqConfig),\n});\n"]}
1
+ {"version":3,"file":"getInlineFunctionExecuteActionProcessor.js","sourceRoot":"","sources":["../../../../../src/actionProcessor/core/inlineFunction/getInlineFunctionExecuteActionProcessor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAWyB;AAEzB,mCAAoC;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,8BAAY,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;IAEpE,OAAO,CAAO,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,aAAa,EAAE,mBAAmB,EAAE,cAAc,EAAE,EAAE;QAC9G,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;YAChC,wEAAwE;YACxE,uEAAuE;YACvE,sEAAsE;YACtE,eAAe,EAAE,OAAO,CAAC,eAAe;SACzC,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,EAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC1C,CAAC,CAAA,CAAC;AACJ,CAAC,CAAC;AAEW,QAAA,uCAAuC,GAAG,IAAA,uCAAqB,EAAC,8CAA4B,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
- import { ActionProcessorListResolver } from 'quidproquo-core';
2
- export declare const getStreamCloseActionProcessor: ActionProcessorListResolver;
1
+ export declare const getStreamCloseActionProcessor: import("quidproquo-core").ActionProcessorListResolver;
@@ -17,10 +17,5 @@ const getProcessStreamClose = (qpqConfig) => {
17
17
  return (0, quidproquo_core_1.actionResult)(undefined);
18
18
  });
19
19
  };
20
- const getStreamCloseActionProcessor = (qpqConfig) => __awaiter(void 0, void 0, void 0, function* () {
21
- return ({
22
- [quidproquo_core_1.StreamActionType.Close]: getProcessStreamClose(qpqConfig),
23
- });
24
- });
25
- exports.getStreamCloseActionProcessor = getStreamCloseActionProcessor;
20
+ exports.getStreamCloseActionProcessor = (0, quidproquo_core_1.createActionProcessor)(quidproquo_core_1.askStreamClose, getProcessStreamClose);
26
21
  //# sourceMappingURL=getStreamCloseActionProcessor.js.map
@@ -1 +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"]}
1
+ {"version":3,"file":"getStreamCloseActionProcessor.js","sourceRoot":"","sources":["../../../../../src/actionProcessor/core/stream/getStreamCloseActionProcessor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAAiI;AAEjI,MAAM,qBAAqB,GAAG,CAAC,SAAoB,EAAuC,EAAE;IAC1F,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;AAEW,QAAA,6BAA6B,GAAG,IAAA,uCAAqB,EAAC,gCAAc,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
- import { ActionProcessorListResolver } from 'quidproquo-core';
2
- export declare const getStreamReadActionProcessor: ActionProcessorListResolver;
1
+ export declare const getStreamReadActionProcessor: import("quidproquo-core").ActionProcessorListResolver;
@@ -17,10 +17,5 @@ const getProcessStreamRead = (qpqConfig) => {
17
17
  return (0, quidproquo_core_1.actionResult)(chunk);
18
18
  });
19
19
  };
20
- const getStreamReadActionProcessor = (qpqConfig) => __awaiter(void 0, void 0, void 0, function* () {
21
- return ({
22
- [quidproquo_core_1.StreamActionType.Read]: getProcessStreamRead(qpqConfig),
23
- });
24
- });
25
- exports.getStreamReadActionProcessor = getStreamReadActionProcessor;
20
+ exports.getStreamReadActionProcessor = (0, quidproquo_core_1.createActionProcessor)(quidproquo_core_1.askStreamReadBase, getProcessStreamRead);
26
21
  //# sourceMappingURL=getStreamReadActionProcessor.js.map
@@ -1 +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"]}
1
+ {"version":3,"file":"getStreamReadActionProcessor.js","sourceRoot":"","sources":["../../../../../src/actionProcessor/core/stream/getStreamReadActionProcessor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAAoI;AAEpI,MAAM,oBAAoB,GAAG,CAAC,SAAoB,EAA0C,EAAE;IAC5F,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;AAEW,QAAA,4BAA4B,GAAG,IAAA,uCAAqB,EAAC,mCAAiB,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;
@@ -72,22 +72,18 @@ const getProcessFileDelete = (qpqConfig, config) => {
72
72
  // can come from another copy of quidproquo-core.
73
73
  const invalidScope = errors.find(({ error }) => (error === null || error === void 0 ? void 0 : error.name) === 'InvalidScopeError');
74
74
  if (invalidScope) {
75
- return (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.FileDeleteErrorTypeEnum.InvalidScope, invalidScope.error.message);
75
+ return (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.askFileDelete.errorType.InvalidScope, invalidScope.error.message);
76
76
  }
77
77
  if (errors.length > 0 && deletedFiles.length === 0) {
78
78
  // EACCES maps to the same typed error the S3 processor returns for AccessDenied
79
79
  if (errors.some(({ error }) => error.code === 'EACCES')) {
80
- return (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.FileDeleteErrorTypeEnum.AccessDenied, 'Access denied deleting files');
80
+ return (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.askFileDelete.errorType.AccessDenied, 'Access denied deleting files');
81
81
  }
82
82
  return (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.ErrorTypeEnum.GenericError, `Failed to delete files: ${errors.map(({ filepath, error }) => `Failed to delete ${filepath}: ${error.message}`).join(', ')}`);
83
83
  }
84
84
  return (0, quidproquo_core_1.actionResult)(deletedFiles);
85
85
  });
86
86
  };
87
- const getFileDeleteActionProcessor = (config) => (qpqConfig) => __awaiter(void 0, void 0, void 0, function* () {
88
- return ({
89
- [quidproquo_core_1.FileActionType.Delete]: getProcessFileDelete(qpqConfig, config),
90
- });
91
- });
87
+ const getFileDeleteActionProcessor = (config) => (0, quidproquo_core_1.createActionProcessor)(quidproquo_core_1.askFileDelete, (qpqConfig) => getProcessFileDelete(qpqConfig, config));
92
88
  exports.getFileDeleteActionProcessor = getFileDeleteActionProcessor;
93
89
  //# sourceMappingURL=getFileDeleteActionProcessor.js.map
@@ -1 +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,KAAoC,EAAE,4CAA/B,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE;QACvC,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,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,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,MAAK,mBAAmB,CAAC,CAAC;QACrF,IAAI,YAAY,EAAE,CAAC;YACjB,OAAO,IAAA,mCAAiB,EAAC,yCAAuB,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,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, 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(FileDeleteErrorTypeEnum.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(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"]}
1
+ {"version":3,"file":"getFileDeleteActionProcessor.js","sourceRoot":"","sources":["../../../../src/dynamicActionProcessor/file/getFileDeleteActionProcessor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qDASyB;AAEzB,gDAAkC;AAGlC,mCAA0C;AAE1C,MAAM,oBAAoB,GAAG,CAAC,SAAoB,EAAE,MAAyB,EAAsC,EAAE;IACnH,OAAO,KAAoC,EAAE,4CAA/B,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE;QACvC,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,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,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,MAAK,mBAAmB,CAAC,CAAC;QACrF,IAAI,YAAY,EAAE,CAAC;YACjB,OAAO,IAAA,mCAAiB,EAAC,+BAAa,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,IAAA,mCAAiB,EAAC,+BAAa,CAAC,SAAS,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,GAAG,CAAC,MAAyB,EAAE,EAAE,CACxE,IAAA,uCAAqB,EAAC,+BAAa,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,oBAAoB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;AADlF,QAAA,4BAA4B,gCACsD","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;
@@ -60,7 +60,7 @@ const getProcessFileExists = (qpqConfig, config) => {
60
60
  return (0, quidproquo_core_1.actionResult)(false);
61
61
  }
62
62
  if (error.code === 'EACCES') {
63
- return (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.FileExistsErrorTypeEnum.AccessDenied, `Access denied checking file existence: ${filepath}`);
63
+ return (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.askFileExists.errorType.AccessDenied, `Access denied checking file existence: ${filepath}`);
64
64
  }
65
65
  throw error;
66
66
  }
@@ -69,15 +69,11 @@ const getProcessFileExists = (qpqConfig, config) => {
69
69
  // Name-keyed, not instanceof: under npm link / module federation the
70
70
  // error can come from another copy of quidproquo-core.
71
71
  return (0, quidproquo_core_1.actionResultErrorFromCaughtError)(error, {
72
- InvalidScopeError: (error) => (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.FileExistsErrorTypeEnum.InvalidScope, error.message),
72
+ InvalidScopeError: (error) => (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.askFileExists.errorType.InvalidScope, error.message),
73
73
  });
74
74
  }
75
75
  });
76
76
  };
77
- const getFileExistsActionProcessor = (config) => (qpqConfig) => __awaiter(void 0, void 0, void 0, function* () {
78
- return ({
79
- [quidproquo_core_1.FileActionType.Exists]: getProcessFileExists(qpqConfig, config),
80
- });
81
- });
77
+ const getFileExistsActionProcessor = (config) => (0, quidproquo_core_1.createActionProcessor)(quidproquo_core_1.askFileExists, (qpqConfig) => getProcessFileExists(qpqConfig, config));
82
78
  exports.getFileExistsActionProcessor = getFileExistsActionProcessor;
83
79
  //# sourceMappingURL=getFileExistsActionProcessor.js.map
@@ -1 +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,KAAmC,EAAE,4CAA9B,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE;QACtC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAA,uBAAe,EAAC,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,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,KAAc,EAAE,CAAC;YACxB,qEAAqE;YACrE,uDAAuD;YACvD,OAAO,IAAA,kDAAgC,EAAC,KAAK,EAAE;gBAC7C,iBAAiB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,mCAAiB,EAAC,yCAAuB,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC;aACrG,CAAC,CAAC;QACL,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 actionResultErrorFromCaughtError,\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, 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(FileExistsErrorTypeEnum.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(FileExistsErrorTypeEnum.InvalidScope, error.message),\n });\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"]}
1
+ {"version":3,"file":"getFileExistsActionProcessor.js","sourceRoot":"","sources":["../../../../src/dynamicActionProcessor/file/getFileExistsActionProcessor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qDASyB;AAEzB,gDAAkC;AAGlC,mCAA0C;AAE1C,MAAM,oBAAoB,GAAG,CAAC,SAAoB,EAAE,MAAyB,EAAsC,EAAE;IACnH,OAAO,KAAmC,EAAE,4CAA9B,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE;QACtC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAA,uBAAe,EAAC,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,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,+BAAa,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,IAAA,kDAAgC,EAAC,KAAK,EAAE;gBAC7C,iBAAiB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,mCAAiB,EAAC,+BAAa,CAAC,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC;aACrG,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAA,CAAC;AACJ,CAAC,CAAC;AAEK,MAAM,4BAA4B,GAAG,CAAC,MAAyB,EAAE,EAAE,CACxE,IAAA,uCAAqB,EAAC,+BAAa,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,oBAAoB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;AADlF,QAAA,4BAA4B,gCACsD","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"]}
@@ -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;
@@ -19,7 +19,7 @@ const maxExpirationMs = 7 * 24 * 60 * 60 * 1000;
19
19
  const getProcessFileGenerateTemporarySecureUrl = (qpqConfig, config) => {
20
20
  return (_a) => __awaiter(void 0, [_a], void 0, function* ({ drive, filepath, expirationMs, scope }) {
21
21
  if (expirationMs > maxExpirationMs) {
22
- return (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.FileGenerateTemporarySecureUrlErrorTypeEnum.ExpirationTooLong, 'Expiration exceeds the 7 day maximum for presigned URLs');
22
+ return (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.askFileGenerateTemporarySecureUrl.errorType.ExpirationTooLong, 'Expiration exceeds the 7 day maximum for presigned URLs');
23
23
  }
24
24
  try {
25
25
  // Create a token for download
@@ -37,15 +37,11 @@ const getProcessFileGenerateTemporarySecureUrl = (qpqConfig, config) => {
37
37
  // Name-keyed, not instanceof: under npm link / module federation the
38
38
  // error can come from another copy of quidproquo-core.
39
39
  return (0, quidproquo_core_1.actionResultErrorFromCaughtError)(error, {
40
- InvalidScopeError: (error) => (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.FileGenerateTemporarySecureUrlErrorTypeEnum.InvalidScope, error.message),
40
+ InvalidScopeError: (error) => (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.askFileGenerateTemporarySecureUrl.errorType.InvalidScope, error.message),
41
41
  });
42
42
  }
43
43
  });
44
44
  };
45
- const getFileGenerateTemporarySecureUrlActionProcessor = (config) => (qpqConfig) => __awaiter(void 0, void 0, void 0, function* () {
46
- return ({
47
- [quidproquo_core_1.FileActionType.GenerateTemporarySecureUrl]: getProcessFileGenerateTemporarySecureUrl(qpqConfig, config),
48
- });
49
- });
45
+ const getFileGenerateTemporarySecureUrlActionProcessor = (config) => (0, quidproquo_core_1.createActionProcessor)(quidproquo_core_1.askFileGenerateTemporarySecureUrl, (qpqConfig) => getProcessFileGenerateTemporarySecureUrl(qpqConfig, config));
50
46
  exports.getFileGenerateTemporarySecureUrlActionProcessor = getFileGenerateTemporarySecureUrlActionProcessor;
51
47
  //# sourceMappingURL=getFileGenerateTemporarySecureUrlActionProcessor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getFileGenerateTemporarySecureUrlActionProcessor.js","sourceRoot":"","sources":["../../../../src/dynamicActionProcessor/file/getFileGenerateTemporarySecureUrlActionProcessor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAUyB;AAEzB,qDAA6E;AAE7E,mCAA0C;AAE1C,6EAA6E;AAC7E,sDAAsD;AACtD,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAEhD,MAAM,wCAAwC,GAAG,CAAC,SAAoB,EAAE,MAAyB,EAAiD,EAAE;IAClJ,OAAO,KAAiD,EAAE,4CAA5C,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE;QACpD,IAAI,YAAY,GAAG,eAAe,EAAE,CAAC;YACnC,OAAO,IAAA,mCAAiB,EACtB,6DAA2C,CAAC,iBAAiB,EAC7D,yDAAyD,CAC1D,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,8BAA8B;YAC9B,MAAM,KAAK,GAAG,IAAA,qCAAoB,EAChC;gBACE,YAAY,EAAE,IAAA,uBAAe,EAAC,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,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,KAAc,EAAE,CAAC;YACxB,qEAAqE;YACrE,uDAAuD;YACvD,OAAO,IAAA,kDAAgC,EAAC,KAAK,EAAE;gBAC7C,iBAAiB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,mCAAiB,EAAC,6DAA2C,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC;aACzH,CAAC,CAAC;QACL,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 actionResultErrorFromCaughtError,\n FileActionType,\n FileGenerateTemporarySecureUrlActionProcessor,\n FileGenerateTemporarySecureUrlErrorTypeEnum,\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 = (qpqConfig: QPQConfig, config: FileStorageConfig): FileGenerateTemporarySecureUrlActionProcessor => {\n return async ({ drive, filepath, expirationMs, scope }) => {\n if (expirationMs > maxExpirationMs) {\n return actionResultError(\n FileGenerateTemporarySecureUrlErrorTypeEnum.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(FileGenerateTemporarySecureUrlErrorTypeEnum.InvalidScope, error.message),\n });\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"]}
1
+ {"version":3,"file":"getFileGenerateTemporarySecureUrlActionProcessor.js","sourceRoot":"","sources":["../../../../src/dynamicActionProcessor/file/getFileGenerateTemporarySecureUrlActionProcessor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDASyB;AAEzB,qDAA6E;AAE7E,mCAA0C;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,KAAiD,EAAE,4CAA5C,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE;QACpD,IAAI,YAAY,GAAG,eAAe,EAAE,CAAC;YACnC,OAAO,IAAA,mCAAiB,EACtB,mDAAiC,CAAC,SAAS,CAAC,iBAAiB,EAC7D,yDAAyD,CAC1D,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,8BAA8B;YAC9B,MAAM,KAAK,GAAG,IAAA,qCAAoB,EAChC;gBACE,YAAY,EAAE,IAAA,uBAAe,EAAC,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,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,KAAc,EAAE,CAAC;YACxB,qEAAqE;YACrE,uDAAuD;YACvD,OAAO,IAAA,kDAAgC,EAAC,KAAK,EAAE;gBAC7C,iBAAiB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,mCAAiB,EAAC,mDAAiC,CAAC,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC;aACzH,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAA,CAAC;AACJ,CAAC,CAAC;AAEK,MAAM,gDAAgD,GAAG,CAAC,MAAyB,EAAE,EAAE,CAC5F,IAAA,uCAAqB,EAAC,mDAAiC,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,wCAAwC,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;AAD1H,QAAA,gDAAgD,oDAC0E","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;
@@ -19,7 +19,7 @@ const maxExpirationMs = 7 * 24 * 60 * 60 * 1000;
19
19
  const getProcessFileGenerateTemporaryUploadSecureUrl = (qpqConfig, config) => {
20
20
  return (_a) => __awaiter(void 0, [_a], void 0, function* ({ drive, filepath, expirationMs, contentType, scope }) {
21
21
  if (expirationMs > maxExpirationMs) {
22
- return (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.FileGenerateTemporaryUploadSecureUrlErrorTypeEnum.ExpirationTooLong, 'Expiration exceeds the 7 day maximum for presigned URLs');
22
+ return (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.askFileGenerateTemporaryUploadSecureUrl.errorType.ExpirationTooLong, 'Expiration exceeds the 7 day maximum for presigned URLs');
23
23
  }
24
24
  try {
25
25
  const expiresAt = Date.now() + expirationMs;
@@ -40,15 +40,11 @@ const getProcessFileGenerateTemporaryUploadSecureUrl = (qpqConfig, config) => {
40
40
  // Name-keyed, not instanceof: under npm link / module federation the
41
41
  // error can come from another copy of quidproquo-core.
42
42
  return (0, quidproquo_core_1.actionResultErrorFromCaughtError)(error, {
43
- InvalidScopeError: (error) => (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.FileGenerateTemporaryUploadSecureUrlErrorTypeEnum.InvalidScope, error.message),
43
+ InvalidScopeError: (error) => (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.askFileGenerateTemporaryUploadSecureUrl.errorType.InvalidScope, error.message),
44
44
  });
45
45
  }
46
46
  });
47
47
  };
48
- const getFileGenerateTemporaryUploadSecureUrlActionProcessor = (config) => (qpqConfig) => __awaiter(void 0, void 0, void 0, function* () {
49
- return ({
50
- [quidproquo_core_1.FileActionType.GenerateTemporaryUploadSecureUrl]: getProcessFileGenerateTemporaryUploadSecureUrl(qpqConfig, config),
51
- });
52
- });
48
+ const getFileGenerateTemporaryUploadSecureUrlActionProcessor = (config) => (0, quidproquo_core_1.createActionProcessor)(quidproquo_core_1.askFileGenerateTemporaryUploadSecureUrl, (qpqConfig) => getProcessFileGenerateTemporaryUploadSecureUrl(qpqConfig, config));
53
49
  exports.getFileGenerateTemporaryUploadSecureUrlActionProcessor = getFileGenerateTemporaryUploadSecureUrlActionProcessor;
54
50
  //# sourceMappingURL=getFileGenerateTemporaryUploadSecureUrlActionProcessor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getFileGenerateTemporaryUploadSecureUrlActionProcessor.js","sourceRoot":"","sources":["../../../../src/dynamicActionProcessor/file/getFileGenerateTemporaryUploadSecureUrlActionProcessor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAUyB;AAEzB,qDAA6E;AAE7E,mCAA0C;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,EAC4B,EAAE;IACvD,OAAO,KAA8D,EAAE,4CAAzD,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,KAAK,EAAE;QACjE,IAAI,YAAY,GAAG,eAAe,EAAE,CAAC;YACnC,OAAO,IAAA,mCAAiB,EACtB,mEAAiD,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,IAAA,qCAAoB,EAChC;gBACE,YAAY,EAAE,IAAA,uBAAe,EAAC,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,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,KAAc,EAAE,CAAC;YACxB,qEAAqE;YACrE,uDAAuD;YACvD,OAAO,IAAA,kDAAgC,EAAC,KAAK,EAAE;gBAC7C,iBAAiB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,mCAAiB,EAAC,mEAAiD,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC;aAC/H,CAAC,CAAC;QACL,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 actionResultErrorFromCaughtError,\n FileActionType,\n FileGenerateTemporaryUploadSecureUrlActionProcessor,\n FileGenerateTemporaryUploadSecureUrlErrorTypeEnum,\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): FileGenerateTemporaryUploadSecureUrlActionProcessor => {\n return async ({ drive, filepath, expirationMs, contentType, scope }) => {\n if (expirationMs > maxExpirationMs) {\n return actionResultError(\n FileGenerateTemporaryUploadSecureUrlErrorTypeEnum.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(FileGenerateTemporaryUploadSecureUrlErrorTypeEnum.InvalidScope, error.message),\n });\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"]}
1
+ {"version":3,"file":"getFileGenerateTemporaryUploadSecureUrlActionProcessor.js","sourceRoot":"","sources":["../../../../src/dynamicActionProcessor/file/getFileGenerateTemporaryUploadSecureUrlActionProcessor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDASyB;AAEzB,qDAA6E;AAE7E,mCAA0C;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,KAA8D,EAAE,4CAAzD,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,KAAK,EAAE;QACjE,IAAI,YAAY,GAAG,eAAe,EAAE,CAAC;YACnC,OAAO,IAAA,mCAAiB,EACtB,yDAAuC,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,IAAA,qCAAoB,EAChC;gBACE,YAAY,EAAE,IAAA,uBAAe,EAAC,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,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,KAAc,EAAE,CAAC;YACxB,qEAAqE;YACrE,uDAAuD;YACvD,OAAO,IAAA,kDAAgC,EAAC,KAAK,EAAE;gBAC7C,iBAAiB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,mCAAiB,EAAC,yDAAuC,CAAC,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC;aAC/H,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAA,CAAC;AACJ,CAAC,CAAC;AAEK,MAAM,sDAAsD,GAAG,CAAC,MAAyB,EAAE,EAAE,CAClG,IAAA,uCAAqB,EAAC,yDAAuC,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,8CAA8C,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;AADtI,QAAA,sDAAsD,0DACgF","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;
@@ -17,10 +17,6 @@ const getProcessFileIsColdStorage = (config) => (qpqConfig) => {
17
17
  return (0, quidproquo_core_1.actionResult)(false);
18
18
  });
19
19
  };
20
- const getFileIsColdStorageActionProcessor = (config) => (qpqConfig) => __awaiter(void 0, void 0, void 0, function* () {
21
- return ({
22
- [quidproquo_core_1.FileActionType.IsColdStorage]: getProcessFileIsColdStorage(config)(qpqConfig),
23
- });
24
- });
20
+ const getFileIsColdStorageActionProcessor = (config) => (0, quidproquo_core_1.createActionProcessor)(quidproquo_core_1.askFileIsColdStorage, (qpqConfig) => getProcessFileIsColdStorage(config)(qpqConfig));
25
21
  exports.getFileIsColdStorageActionProcessor = getFileIsColdStorageActionProcessor;
26
22
  //# sourceMappingURL=getFileIsColdStorageActionProcessor.js.map
@@ -1 +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"]}
1
+ {"version":3,"file":"getFileIsColdStorageActionProcessor.js","sourceRoot":"","sources":["../../../../src/dynamicActionProcessor/file/getFileIsColdStorageActionProcessor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAAqI;AAIrI,MAAM,2BAA2B,GAC/B,CAAC,MAAyB,EAAE,EAAE,CAC9B,CAAC,SAAoB,EAA6C,EAAE;IAClE,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,GAAG,CAAC,MAAyB,EAAE,EAAE,CAC/E,IAAA,uCAAqB,EAAC,sCAAoB,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AADhG,QAAA,mCAAmC,uCAC6D","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"]}