quidproquo-actionprocessor-node 0.0.198 → 0.0.200
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/esm/actionProcessor/core/claudeAi/ClaudeAiActionProcessor.d.ts +5 -0
- package/lib/esm/actionProcessor/core/claudeAi/ClaudeAiActionProcessor.js +24 -0
- package/lib/esm/actionProcessor/core/date/DateActionProcessor.d.ts +5 -0
- package/lib/esm/actionProcessor/core/date/DateActionProcessor.js +7 -0
- package/lib/esm/actionProcessor/core/error/ErrorActionProcessor.d.ts +5 -0
- package/lib/esm/actionProcessor/core/error/ErrorActionProcessor.js +7 -0
- package/lib/esm/actionProcessor/core/event/EventActionProcessor.d.ts +2 -0
- package/lib/esm/actionProcessor/core/event/EventActionProcessor.js +2 -0
- package/lib/esm/actionProcessor/core/guid/GuidActionProcessor.d.ts +5 -0
- package/lib/esm/actionProcessor/core/guid/GuidActionProcessor.js +8 -0
- package/lib/esm/actionProcessor/core/index.d.ts +12 -0
- package/lib/esm/actionProcessor/core/index.js +22 -0
- package/lib/esm/actionProcessor/core/log/LogActionProcessor.d.ts +5 -0
- package/lib/esm/actionProcessor/core/log/LogActionProcessor.js +13 -0
- package/lib/esm/actionProcessor/core/math/MathActionProcessor.d.ts +5 -0
- package/lib/esm/actionProcessor/core/math/MathActionProcessor.js +7 -0
- package/lib/esm/actionProcessor/core/network/NetworkActionProcessor.d.ts +5 -0
- package/lib/esm/actionProcessor/core/network/NetworkActionProcessor.js +134 -0
- package/lib/esm/actionProcessor/core/platform/PlatformActionProcessor.d.ts +5 -0
- package/lib/esm/actionProcessor/core/platform/PlatformActionProcessor.js +7 -0
- package/lib/esm/actionProcessor/core/system/SystemActionProcessor.d.ts +5 -0
- package/lib/esm/actionProcessor/core/system/SystemActionProcessor.js +15 -0
- package/lib/esm/actionProcessor/index.d.ts +2 -0
- package/lib/esm/actionProcessor/index.js +2 -0
- package/lib/esm/actionProcessor/webserver/genericDataResource/GenericDataResourceActionProcessor.d.ts +2 -0
- package/lib/esm/actionProcessor/webserver/genericDataResource/GenericDataResourceActionProcessor.js +1 -0
- package/lib/esm/actionProcessor/webserver/index.d.ts +2 -0
- package/lib/esm/actionProcessor/webserver/index.js +4 -0
- package/lib/esm/getActionProcessor/core/config/getConfigGetApplicationInfoActionProcessor.d.ts +5 -0
- package/lib/esm/getActionProcessor/core/config/getConfigGetApplicationInfoActionProcessor.js +17 -0
- package/lib/esm/getActionProcessor/core/config/index.d.ts +5 -0
- package/lib/esm/getActionProcessor/core/config/index.js +4 -0
- package/lib/esm/getActionProcessor/core/context/getContextListActionProcessor.d.ts +5 -0
- package/lib/esm/getActionProcessor/core/context/getContextListActionProcessor.js +11 -0
- package/lib/esm/getActionProcessor/core/context/getContextReadActionProcessor.d.ts +5 -0
- package/lib/esm/getActionProcessor/core/context/getContextReadActionProcessor.js +14 -0
- package/lib/esm/getActionProcessor/core/context/index.d.ts +6 -0
- package/lib/esm/getActionProcessor/core/context/index.js +6 -0
- package/lib/esm/getActionProcessor/core/index.d.ts +2 -0
- package/lib/esm/getActionProcessor/core/index.js +2 -0
- package/lib/esm/getActionProcessor/index.d.ts +1 -0
- package/lib/esm/getActionProcessor/index.js +1 -0
- package/lib/esm/index.d.ts +2 -0
- package/lib/esm/index.js +2 -0
- package/package.json +10 -6
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import Anthropic, { AuthenticationError } from '@anthropic-ai/sdk';
|
|
2
|
+
import { ErrorTypeEnum, actionResult, ClaudeAiActionType, actionResultError, } from 'quidproquo-core';
|
|
3
|
+
const processMessagesApi = async ({ body, apiKey }) => {
|
|
4
|
+
const anthropic = new Anthropic({ apiKey });
|
|
5
|
+
try {
|
|
6
|
+
const msg = await anthropic.messages.create(body);
|
|
7
|
+
return actionResult(msg);
|
|
8
|
+
}
|
|
9
|
+
catch (error) {
|
|
10
|
+
console.log(error);
|
|
11
|
+
if (error instanceof AuthenticationError) {
|
|
12
|
+
return actionResultError(ErrorTypeEnum.Unauthorized, 'Invalid API key.');
|
|
13
|
+
}
|
|
14
|
+
else if (error instanceof Error) {
|
|
15
|
+
return actionResultError(ErrorTypeEnum.GenericError, error.message);
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
return actionResultError(ErrorTypeEnum.GenericError, 'An error occurred while processing your request.');
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
export default {
|
|
23
|
+
[ClaudeAiActionType.MessagesApi]: processMessagesApi,
|
|
24
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ErrorActionType, actionResultError, } from 'quidproquo-core';
|
|
2
|
+
const processErrorThrowError = async ({ errorStack, errorText, errorType, }) => {
|
|
3
|
+
return actionResultError(errorType, errorText, errorStack);
|
|
4
|
+
};
|
|
5
|
+
export default {
|
|
6
|
+
[ErrorActionType.ThrowError]: processErrorThrowError,
|
|
7
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
declare const _default: {
|
|
2
|
+
"@quidproquo-core/System/Batch": import("quidproquo-core").SystemBatchActionProcessor<any[]>;
|
|
3
|
+
"@quidproquo-core/Platform/Delay": import("quidproquo-core").PlatformDelayActionProcessor;
|
|
4
|
+
"@quidproquo-core/Network/Request": import("quidproquo-core").NetworkRequestActionProcessor<any, any>;
|
|
5
|
+
"@quidproquo-core/Math/RandomNumber": import("quidproquo-core").MathRandomNumberActionProcessor;
|
|
6
|
+
"@quidproquo-core/Log/Create": import("quidproquo-core").LogCreateActionProcessor;
|
|
7
|
+
"@quidproquo-core/Guid/New": import("quidproquo-core").GuidNewActionProcessor;
|
|
8
|
+
"@quidproquo-core/error/ThrowError": import("quidproquo-core").ErrorThrowErrorActionProcessor<any>;
|
|
9
|
+
"@quidproquo-core/Date/Now": import("quidproquo-core").DateNowActionProcessor;
|
|
10
|
+
"@quidproquo-core/ClaudeAi/MessagesApi": import("quidproquo-core").ClaudeAiMessagesApiActionProcessor;
|
|
11
|
+
};
|
|
12
|
+
export default _default;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import ClaudeAiActionProcessor from './claudeAi/ClaudeAiActionProcessor';
|
|
2
|
+
import DateActionProcessor from './date/DateActionProcessor';
|
|
3
|
+
import ErrorActionProcessor from './error/ErrorActionProcessor';
|
|
4
|
+
import EventActionProcessor from './event/EventActionProcessor';
|
|
5
|
+
import GuidActionProcessor from './guid/GuidActionProcessor';
|
|
6
|
+
import LogActionProcessor from './log/LogActionProcessor';
|
|
7
|
+
import MathActionProcessor from './math/MathActionProcessor';
|
|
8
|
+
import NetworkActionProcessor from './network/NetworkActionProcessor';
|
|
9
|
+
import PlatformActionProcessor from './platform/PlatformActionProcessor';
|
|
10
|
+
import SystemActionProcessor from './system/SystemActionProcessor';
|
|
11
|
+
export default {
|
|
12
|
+
...ClaudeAiActionProcessor,
|
|
13
|
+
...DateActionProcessor,
|
|
14
|
+
...ErrorActionProcessor,
|
|
15
|
+
...EventActionProcessor,
|
|
16
|
+
...GuidActionProcessor,
|
|
17
|
+
...LogActionProcessor,
|
|
18
|
+
...MathActionProcessor,
|
|
19
|
+
...NetworkActionProcessor,
|
|
20
|
+
...PlatformActionProcessor,
|
|
21
|
+
...SystemActionProcessor,
|
|
22
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { actionResult, LogActionType } from 'quidproquo-core';
|
|
2
|
+
const processLogCreate = async ({ msg, logLevel, data }) => {
|
|
3
|
+
if (data) {
|
|
4
|
+
console.log(`${logLevel}: ${msg}`, data);
|
|
5
|
+
}
|
|
6
|
+
else {
|
|
7
|
+
console.log(`${logLevel}: ${msg}`);
|
|
8
|
+
}
|
|
9
|
+
return actionResult(void 0);
|
|
10
|
+
};
|
|
11
|
+
export default {
|
|
12
|
+
[LogActionType.Create]: processLogCreate,
|
|
13
|
+
};
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { actionResult, NetworkActionType, actionResultError, ErrorTypeEnum, } from 'quidproquo-core';
|
|
2
|
+
import { extension } from 'mime-types';
|
|
3
|
+
import axios from 'axios';
|
|
4
|
+
const getAxiosResponseType = (responseType) => {
|
|
5
|
+
if (responseType === 'binary') {
|
|
6
|
+
return 'arraybuffer';
|
|
7
|
+
}
|
|
8
|
+
return 'json';
|
|
9
|
+
};
|
|
10
|
+
const transformResponse = (payload, response) => {
|
|
11
|
+
if (payload.responseType === 'binary') {
|
|
12
|
+
const headers = response.headers || {};
|
|
13
|
+
const mimeType = headers['content-type'] || 'application/octet-stream';
|
|
14
|
+
const filename = headers['content-disposition']?.match(/filename="([^"]+)"/)?.[1] ||
|
|
15
|
+
`file.${extension(mimeType)}`;
|
|
16
|
+
return {
|
|
17
|
+
...response,
|
|
18
|
+
data: {
|
|
19
|
+
base64Data: Buffer.from(response.data).toString('base64'),
|
|
20
|
+
mimetype: mimeType,
|
|
21
|
+
// TODO: We could get a filename from Content-Disposition header
|
|
22
|
+
filename,
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
return response;
|
|
27
|
+
};
|
|
28
|
+
const axiosInstance = axios.create({
|
|
29
|
+
timeout: 25000,
|
|
30
|
+
headers: {
|
|
31
|
+
// Fixes: https://github.com/axios/axios/issues/5346
|
|
32
|
+
'Accept-Encoding': 'gzip,deflate,compress',
|
|
33
|
+
},
|
|
34
|
+
validateStatus: () => true,
|
|
35
|
+
});
|
|
36
|
+
const processNetworkRequestGet = async (payload) => {
|
|
37
|
+
const response = await axiosInstance.get(payload.url, {
|
|
38
|
+
baseURL: payload.basePath,
|
|
39
|
+
headers: payload.headers,
|
|
40
|
+
params: payload.params,
|
|
41
|
+
responseType: getAxiosResponseType(payload.responseType),
|
|
42
|
+
});
|
|
43
|
+
return transformResponse(payload, response);
|
|
44
|
+
};
|
|
45
|
+
const processNetworkRequestPost = async (payload) => {
|
|
46
|
+
const response = await axiosInstance.post(payload.url, payload.body, {
|
|
47
|
+
baseURL: payload.basePath,
|
|
48
|
+
headers: payload.headers,
|
|
49
|
+
params: payload.params,
|
|
50
|
+
responseType: getAxiosResponseType(payload.responseType),
|
|
51
|
+
});
|
|
52
|
+
return transformResponse(payload, response);
|
|
53
|
+
};
|
|
54
|
+
const processNetworkRequestDelete = async (payload) => {
|
|
55
|
+
const response = await axiosInstance.delete(payload.url, {
|
|
56
|
+
baseURL: payload.basePath,
|
|
57
|
+
headers: payload.headers,
|
|
58
|
+
params: payload.params,
|
|
59
|
+
responseType: getAxiosResponseType(payload.responseType),
|
|
60
|
+
});
|
|
61
|
+
return transformResponse(payload, response);
|
|
62
|
+
};
|
|
63
|
+
const processNetworkRequestHead = async (payload) => {
|
|
64
|
+
const response = await axiosInstance.head(payload.url, {
|
|
65
|
+
baseURL: payload.basePath,
|
|
66
|
+
headers: payload.headers,
|
|
67
|
+
params: payload.params,
|
|
68
|
+
responseType: getAxiosResponseType(payload.responseType),
|
|
69
|
+
});
|
|
70
|
+
return transformResponse(payload, response);
|
|
71
|
+
};
|
|
72
|
+
const processNetworkRequestOptions = async (payload) => {
|
|
73
|
+
const response = await axiosInstance.options(payload.url, {
|
|
74
|
+
baseURL: payload.basePath,
|
|
75
|
+
headers: payload.headers,
|
|
76
|
+
params: payload.params,
|
|
77
|
+
responseType: getAxiosResponseType(payload.responseType),
|
|
78
|
+
});
|
|
79
|
+
return transformResponse(payload, response);
|
|
80
|
+
};
|
|
81
|
+
const processNetworkRequestPut = async (payload) => {
|
|
82
|
+
const response = await axiosInstance.put(payload.url, payload.body, {
|
|
83
|
+
baseURL: payload.basePath,
|
|
84
|
+
headers: payload.headers,
|
|
85
|
+
params: payload.params,
|
|
86
|
+
responseType: getAxiosResponseType(payload.responseType),
|
|
87
|
+
});
|
|
88
|
+
return transformResponse(payload, response);
|
|
89
|
+
};
|
|
90
|
+
const processNetworkRequestPatch = async (payload) => {
|
|
91
|
+
const response = await axiosInstance.patch(payload.url, payload.body, {
|
|
92
|
+
baseURL: payload.basePath,
|
|
93
|
+
headers: payload.headers,
|
|
94
|
+
params: payload.params,
|
|
95
|
+
responseType: getAxiosResponseType(payload.responseType),
|
|
96
|
+
});
|
|
97
|
+
return transformResponse(payload, response);
|
|
98
|
+
};
|
|
99
|
+
const processNetworkRequestConnect = async (payload) => {
|
|
100
|
+
throw new Error('Function not implemented.');
|
|
101
|
+
};
|
|
102
|
+
const requestMethodMap = {
|
|
103
|
+
GET: processNetworkRequestGet,
|
|
104
|
+
POST: processNetworkRequestPost,
|
|
105
|
+
DELETE: processNetworkRequestDelete,
|
|
106
|
+
HEAD: processNetworkRequestHead,
|
|
107
|
+
OPTIONS: processNetworkRequestOptions,
|
|
108
|
+
PUT: processNetworkRequestPut,
|
|
109
|
+
PATCH: processNetworkRequestPatch,
|
|
110
|
+
CONNECT: processNetworkRequestConnect,
|
|
111
|
+
};
|
|
112
|
+
const processNetworkRequest = async (payload) => {
|
|
113
|
+
const requestMethod = requestMethodMap[payload.method];
|
|
114
|
+
if (!requestMethod) {
|
|
115
|
+
return actionResultError(ErrorTypeEnum.NotImplemented, `${payload.method}: Not implemented`);
|
|
116
|
+
}
|
|
117
|
+
console.log(payload.url);
|
|
118
|
+
try {
|
|
119
|
+
const response = await requestMethod(payload);
|
|
120
|
+
return actionResult({
|
|
121
|
+
headers: response.headers,
|
|
122
|
+
status: response.status,
|
|
123
|
+
statusText: response.statusText,
|
|
124
|
+
data: response.data,
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
catch (err) {
|
|
128
|
+
console.log(err);
|
|
129
|
+
return actionResultError(ErrorTypeEnum.GenericError, err.stack);
|
|
130
|
+
}
|
|
131
|
+
};
|
|
132
|
+
export default {
|
|
133
|
+
[NetworkActionType.Request]: processNetworkRequest,
|
|
134
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { PlatformActionType, actionResult } from 'quidproquo-core';
|
|
2
|
+
const processPlatformDelay = async ({ timeMs }) => {
|
|
3
|
+
return new Promise((resolve) => setTimeout(() => resolve(actionResult(undefined)), timeMs));
|
|
4
|
+
};
|
|
5
|
+
export default {
|
|
6
|
+
[PlatformActionType.Delay]: processPlatformDelay,
|
|
7
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ErrorTypeEnum, SystemActionType, actionResult, actionResultError, isErroredActionResult, processAction, resolveActionResult, resolveActionResultError, } from 'quidproquo-core';
|
|
2
|
+
const processBatch = async ({ actions }, session, actionProcessors, logger, updateSession) => {
|
|
3
|
+
const batchRes = await Promise.all(actions.map((a) => processAction(a, actionProcessors, session, logger, updateSession)));
|
|
4
|
+
// If there was an error, throw that error back
|
|
5
|
+
const erroredBatchItem = batchRes.find((br) => isErroredActionResult(br));
|
|
6
|
+
if (erroredBatchItem) {
|
|
7
|
+
const error = resolveActionResultError(erroredBatchItem);
|
|
8
|
+
return actionResultError(ErrorTypeEnum.GenericError, error.errorText, error.errorStack);
|
|
9
|
+
}
|
|
10
|
+
// unwrap the values
|
|
11
|
+
return actionResult(batchRes.map((br) => resolveActionResult(br)));
|
|
12
|
+
};
|
|
13
|
+
export default {
|
|
14
|
+
[SystemActionType.Batch]: processBatch,
|
|
15
|
+
};
|
package/lib/esm/actionProcessor/webserver/genericDataResource/GenericDataResourceActionProcessor.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default {};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { actionResult, ConfigActionType, qpqCoreUtils, } from 'quidproquo-core';
|
|
2
|
+
const getProcessConfigGetApplicationConfig = (qpqConfig) => {
|
|
3
|
+
return async () => {
|
|
4
|
+
const appInfo = {
|
|
5
|
+
environment: qpqCoreUtils.getApplicationModuleEnvironment(qpqConfig),
|
|
6
|
+
feature: qpqCoreUtils.getApplicationModuleFeature(qpqConfig),
|
|
7
|
+
module: qpqCoreUtils.getApplicationModuleName(qpqConfig),
|
|
8
|
+
name: qpqCoreUtils.getApplicationName(qpqConfig),
|
|
9
|
+
};
|
|
10
|
+
return actionResult(appInfo);
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
export default (qpqConfig) => {
|
|
14
|
+
return {
|
|
15
|
+
[ConfigActionType.GetApplicationInfo]: getProcessConfigGetApplicationConfig(qpqConfig),
|
|
16
|
+
};
|
|
17
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { actionResult, ContextActionType } from 'quidproquo-core';
|
|
2
|
+
const getContextListActionProcessor = (qpqConfig) => {
|
|
3
|
+
return async (payload, session) => {
|
|
4
|
+
return actionResult(session.context);
|
|
5
|
+
};
|
|
6
|
+
};
|
|
7
|
+
export default (qpqConfig) => {
|
|
8
|
+
return {
|
|
9
|
+
[ContextActionType.List]: getContextListActionProcessor(qpqConfig),
|
|
10
|
+
};
|
|
11
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { actionResult, ContextActionType, } from 'quidproquo-core';
|
|
2
|
+
const getContextValue = (context, contextIdentifier) => {
|
|
3
|
+
return contextIdentifier.uniqueName in context ? context[contextIdentifier.uniqueName] : contextIdentifier.defaultValue;
|
|
4
|
+
};
|
|
5
|
+
const getContextReadActionProcessor = (qpqConfig) => {
|
|
6
|
+
return async ({ contextIdentifier }, session) => {
|
|
7
|
+
return actionResult(getContextValue(session.context, contextIdentifier));
|
|
8
|
+
};
|
|
9
|
+
};
|
|
10
|
+
export default (qpqConfig) => {
|
|
11
|
+
return {
|
|
12
|
+
[ContextActionType.Read]: getContextReadActionProcessor(qpqConfig),
|
|
13
|
+
};
|
|
14
|
+
};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { QPQConfig } from 'quidproquo-core';
|
|
2
|
+
declare const _default: (qpqConfig: QPQConfig) => {
|
|
3
|
+
"@quidproquo-core/Context/Read": import("quidproquo-core").ContextReadActionProcessor<any>;
|
|
4
|
+
"@quidproquo-core/Context/List": import("quidproquo-core").ContextListActionProcessor;
|
|
5
|
+
};
|
|
6
|
+
export default _default;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import getContextListActionProcessor from './getContextListActionProcessor';
|
|
2
|
+
import getContextReadActionProcessor from './getContextReadActionProcessor';
|
|
3
|
+
export default (qpqConfig) => ({
|
|
4
|
+
...getContextListActionProcessor(qpqConfig),
|
|
5
|
+
...getContextReadActionProcessor(qpqConfig),
|
|
6
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './core';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './core';
|
package/lib/esm/index.js
ADDED
package/package.json
CHANGED
|
@@ -1,17 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "quidproquo-actionprocessor-node",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.200",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "./lib/commonjs/index.js",
|
|
6
|
-
"
|
|
6
|
+
"module": "./lib/esm/index.js",
|
|
7
|
+
"types": "./lib/esm/index.d.ts",
|
|
8
|
+
"sideEffects": false,
|
|
7
9
|
"files": [
|
|
8
10
|
"lib/**/*"
|
|
9
11
|
],
|
|
10
12
|
"scripts": {
|
|
11
13
|
"test": "echo \"Error: no test specified\" && exit 1",
|
|
12
14
|
"clean": "npx rimraf lib && npx rimraf node_modules",
|
|
13
|
-
"build": "npm run clean &&
|
|
14
|
-
"watch": "tsc -p tsconfig.
|
|
15
|
+
"build": "npm run clean && npm run build:esm && npm run build:cjs",
|
|
16
|
+
"watch": "tsc -p tsconfig.esm.json -w",
|
|
17
|
+
"build:cjs": "tsc -p tsconfig.commonjs.json",
|
|
18
|
+
"build:esm": "tsc -p tsconfig.esm.json"
|
|
15
19
|
},
|
|
16
20
|
"repository": {
|
|
17
21
|
"type": "git",
|
|
@@ -28,13 +32,13 @@
|
|
|
28
32
|
"@anthropic-ai/sdk": "^0.19.1",
|
|
29
33
|
"axios": "^1.2.1",
|
|
30
34
|
"mime-types": "^2.1.35",
|
|
31
|
-
"quidproquo-core": "0.0.
|
|
35
|
+
"quidproquo-core": "0.0.200",
|
|
32
36
|
"uuid": "^9.0.0"
|
|
33
37
|
},
|
|
34
38
|
"devDependencies": {
|
|
35
39
|
"@types/mime-types": "^2.1.1",
|
|
36
40
|
"@types/uuid": "^9.0.0",
|
|
37
|
-
"quidproquo-tsconfig": "0.0.
|
|
41
|
+
"quidproquo-tsconfig": "0.0.200",
|
|
38
42
|
"typescript": "^4.9.3"
|
|
39
43
|
}
|
|
40
44
|
}
|