@squidcloud/local-backend 1.0.174 → 1.0.176
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/dist/internal-common/src/local-dev.types.d.ts +2 -1
- package/dist/internal-common/src/local-dev.types.js +1 -0
- package/dist/internal-common/src/local-dev.types.js.map +1 -1
- package/dist/internal-common/src/public-types/api-call.public-context.d.ts +10 -1
- package/dist/internal-common/src/public-types/api-call.public-context.js +1 -1
- package/dist/internal-common/src/public-types/api-call.public-context.js.map +1 -1
- package/dist/internal-common/src/public-types/bundle-api.public-types.d.ts +21 -0
- package/dist/internal-common/src/public-types/bundle-api.public-types.js +34 -0
- package/dist/internal-common/src/public-types/bundle-api.public-types.js.map +1 -1
- package/dist/internal-common/src/types/api.types.d.ts +3 -3
- package/dist/internal-common/src/types/bundle-data.types.d.ts +2 -0
- package/dist/internal-common/src/types/security.types.d.ts +11 -5
- package/dist/internal-common/src/utils/squid-service-utils.d.ts +14 -0
- package/dist/internal-common/src/utils/squid-service-utils.js +39 -0
- package/dist/internal-common/src/utils/squid-service-utils.js.map +1 -0
- package/dist/local-backend/src/local-backend.service.js +12 -4
- package/dist/local-backend/src/local-backend.service.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-dev.types.js","sourceRoot":"","sources":["../../../../internal-common/src/local-dev.types.ts"],"names":[],"mappings":";;;AA8DA,IAAY,
|
|
1
|
+
{"version":3,"file":"local-dev.types.js","sourceRoot":"","sources":["../../../../internal-common/src/local-dev.types.ts"],"names":[],"mappings":";;;AA8DA,IAAY,OAMX;AAND,WAAY,OAAO;IACjB,sBAAW,CAAA;IACX,0BAAe,CAAA;IACf,kCAAuB,CAAA;IACvB,oBAAS,CAAA;IACT,sBAAW,CAAA;AACb,CAAC,EANW,OAAO,uBAAP,OAAO,QAMlB"}
|
|
@@ -8,6 +8,15 @@ export declare class ApiCallContext {
|
|
|
8
8
|
readonly body: Record<string, any>;
|
|
9
9
|
readonly queryParams: Record<string, string | number | boolean>;
|
|
10
10
|
readonly pathParams: Record<string, string>;
|
|
11
|
-
readonly
|
|
11
|
+
readonly options: ApiOptions;
|
|
12
12
|
constructor(prototype: ApiCallContext);
|
|
13
13
|
}
|
|
14
|
+
export interface ApiOptions {
|
|
15
|
+
nativeResponse?: boolean;
|
|
16
|
+
originOverride?: string;
|
|
17
|
+
}
|
|
18
|
+
export interface NativeApiCallResponse<T = unknown> {
|
|
19
|
+
body: T;
|
|
20
|
+
headers: ApiHeaders;
|
|
21
|
+
status: number;
|
|
22
|
+
}
|
|
@@ -10,7 +10,7 @@ class ApiCallContext {
|
|
|
10
10
|
this.body = prototype.body;
|
|
11
11
|
this.queryParams = prototype.queryParams;
|
|
12
12
|
this.pathParams = prototype.pathParams;
|
|
13
|
-
this.
|
|
13
|
+
this.options = prototype.options;
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
16
|
exports.ApiCallContext = ApiCallContext;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-call.public-context.js","sourceRoot":"","sources":["../../../../../internal-common/src/public-types/api-call.public-context.ts"],"names":[],"mappings":";;;AAMA,MAAa,cAAc;IAWzB,YAAY,SAAyB;QACnC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;QACvC,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;QACjC,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;QAC3B,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC;QACzC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;QACvC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"api-call.public-context.js","sourceRoot":"","sources":["../../../../../internal-common/src/public-types/api-call.public-context.ts"],"names":[],"mappings":";;;AAMA,MAAa,cAAc;IAWzB,YAAY,SAAyB;QACnC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;QACvC,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;QACjC,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;QAC3B,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC;QACzC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;QACvC,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;IACnC,CAAC;CACF;AArBD,wCAqBC"}
|
|
@@ -29,6 +29,27 @@ export interface TriggerRequest<T extends DocumentData = any> {
|
|
|
29
29
|
docAfter?: T;
|
|
30
30
|
}
|
|
31
31
|
export type SchedulerAction = () => void | Promise<void>;
|
|
32
|
+
export type LimitedAction = () => any | Promise<any>;
|
|
33
|
+
export type LimiterScope = 'ip' | 'user' | 'global';
|
|
34
|
+
export type QuotaRenewPeriod = 'hourly' | 'daily' | 'weekly' | 'monthly' | 'quarterly' | 'annually';
|
|
35
|
+
export interface RateLimitOptions {
|
|
36
|
+
value: number;
|
|
37
|
+
scope?: LimiterScope;
|
|
38
|
+
}
|
|
39
|
+
export interface QuotaLimitOptions {
|
|
40
|
+
value: number;
|
|
41
|
+
scope?: LimiterScope;
|
|
42
|
+
renewPeriod?: QuotaRenewPeriod;
|
|
43
|
+
}
|
|
44
|
+
export interface LimiterOptions {
|
|
45
|
+
rateLimit?: RateLimitOptions[];
|
|
46
|
+
quotaLimit?: QuotaLimitOptions[];
|
|
47
|
+
}
|
|
48
|
+
export type LimiterConfig = {
|
|
49
|
+
rateLimit?: number | RateLimitOptions | Array<RateLimitOptions>;
|
|
50
|
+
quotaLimit?: number | QuotaLimitOptions | Array<QuotaLimitOptions>;
|
|
51
|
+
};
|
|
52
|
+
export declare function limiterConfigToOptions(config: LimiterConfig): LimiterOptions;
|
|
32
53
|
export type WebhookAction = ((request: WebhookRequest) => any) | (() => any);
|
|
33
54
|
export interface WebhookRequest<T = any> {
|
|
34
55
|
body: T;
|
|
@@ -1,3 +1,37 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.limiterConfigToOptions = void 0;
|
|
4
|
+
function limiterConfigToOptions(config) {
|
|
5
|
+
if (config.rateLimit !== undefined) {
|
|
6
|
+
if (typeof config.rateLimit === 'number') {
|
|
7
|
+
config.rateLimit = [{ value: config.rateLimit, scope: 'global' }];
|
|
8
|
+
}
|
|
9
|
+
else if (typeof config.rateLimit === 'object' && !Array.isArray(config.rateLimit)) {
|
|
10
|
+
config.rateLimit = [config.rateLimit];
|
|
11
|
+
}
|
|
12
|
+
config.rateLimit.forEach((options) => {
|
|
13
|
+
if (options.scope === undefined) {
|
|
14
|
+
options.scope = 'global';
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
if (config.quotaLimit !== undefined) {
|
|
19
|
+
if (typeof config.quotaLimit === 'number') {
|
|
20
|
+
config.quotaLimit = [{ value: config.quotaLimit, scope: 'global', renewPeriod: 'monthly' }];
|
|
21
|
+
}
|
|
22
|
+
else if (typeof config.quotaLimit === 'object' && !Array.isArray(config.quotaLimit)) {
|
|
23
|
+
config.quotaLimit = [config.quotaLimit];
|
|
24
|
+
}
|
|
25
|
+
config.quotaLimit.forEach((options) => {
|
|
26
|
+
if (options.scope === undefined) {
|
|
27
|
+
options.scope = 'global';
|
|
28
|
+
}
|
|
29
|
+
if (options.renewPeriod === undefined) {
|
|
30
|
+
options.renewPeriod = 'monthly';
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
return config;
|
|
35
|
+
}
|
|
36
|
+
exports.limiterConfigToOptions = limiterConfigToOptions;
|
|
3
37
|
//# sourceMappingURL=bundle-api.public-types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bundle-api.public-types.js","sourceRoot":"","sources":["../../../../../internal-common/src/public-types/bundle-api.public-types.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"bundle-api.public-types.js","sourceRoot":"","sources":["../../../../../internal-common/src/public-types/bundle-api.public-types.ts"],"names":[],"mappings":";;;AAmIA,SAAgB,sBAAsB,CAAC,MAAqB;IAE1D,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QAEnC,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;YACzC,MAAM,CAAC,SAAS,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACpE,CAAC;aAAM,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;YACpF,MAAM,CAAC,SAAS,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACxC,CAAC;QAGD,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,OAAyB,EAAE,EAAE;YACrD,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBAChC,OAAO,CAAC,KAAK,GAAG,QAAQ,CAAC;YAC3B,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAGD,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACpC,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;YAC1C,MAAM,CAAC,UAAU,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC;QAC9F,CAAC;aAAM,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;YACtF,MAAM,CAAC,UAAU,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC1C,CAAC;QACD,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,OAA0B,EAAE,EAAE;YACvD,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBAChC,OAAO,CAAC,KAAK,GAAG,QAAQ,CAAC;YAC3B,CAAC;YACD,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;gBACtC,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;YAClC,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IACD,OAAO,MAAwB,CAAC;AAClC,CAAC;AAnCD,wDAmCC"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { ApiEndpointId, HttpMethod } from '../public-types/integrations/api.public-types';
|
|
2
2
|
import { IntegrationId } from '../public-types/communication.public-types';
|
|
3
|
-
import { ApiHeaders } from '../public-types/api-call.public-context';
|
|
3
|
+
import { ApiHeaders, ApiOptions } from '../public-types/api-call.public-context';
|
|
4
4
|
export type ApiQueryParams = Record<string, string | number | boolean>;
|
|
5
5
|
export interface CallApiRequest {
|
|
6
6
|
integrationId: IntegrationId;
|
|
7
7
|
endpointId: ApiEndpointId;
|
|
8
|
-
serverUrlOverride?: string;
|
|
9
8
|
request: Record<string, any>;
|
|
9
|
+
options: ApiOptions;
|
|
10
10
|
}
|
|
11
11
|
export interface ExtractedApiParams {
|
|
12
12
|
headers: ApiHeaders;
|
|
@@ -18,5 +18,5 @@ export interface SecureApiRequest extends ExtractedApiParams {
|
|
|
18
18
|
endpointId: ApiEndpointId;
|
|
19
19
|
url: string;
|
|
20
20
|
method: HttpMethod;
|
|
21
|
-
|
|
21
|
+
options: ApiOptions;
|
|
22
22
|
}
|
|
@@ -5,6 +5,7 @@ import { AiChatbotActionType, AiFunctionParamType, DatabaseActionType, FunctionN
|
|
|
5
5
|
import { IntegrationId } from '../public-types/communication.public-types';
|
|
6
6
|
import { CollectionName } from '../public-types/document.public-types';
|
|
7
7
|
import { SchedulerConfig, TriggerConfig, WebhookConfig } from './application.types';
|
|
8
|
+
import { LimiterOptions } from '../public-types/bundle-api.public-types';
|
|
8
9
|
export type TopicName = string;
|
|
9
10
|
export type ServiceName = string;
|
|
10
11
|
export type ServiceFunctionName = `${ServiceName}:${FunctionName}`;
|
|
@@ -32,6 +33,7 @@ export interface ApplicationBundleData {
|
|
|
32
33
|
aiFunctions?: Record<FunctionName, AiFunctionMetadata>;
|
|
33
34
|
openApiControllers?: Array<OpenApiController>;
|
|
34
35
|
queues?: Record<IntegrationId, QueueMetadata>;
|
|
36
|
+
limits?: Record<ServiceFunctionName, LimiterOptions>;
|
|
35
37
|
}
|
|
36
38
|
export interface LocalBackendData {
|
|
37
39
|
applicationBundleData: ApplicationBundleData;
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
1
2
|
import { Auth, RunContext } from '../public-types/context.public-types';
|
|
2
3
|
import { SecretKey } from '../public-types/secret.public-types';
|
|
3
4
|
import { EnvironmentId, SquidDeveloperId, SquidDocId } from '../public-types/communication.public-types';
|
|
5
|
+
import { AsyncLocalStorage } from 'async_hooks';
|
|
4
6
|
export interface SecureNamedQueryRequest {
|
|
5
7
|
params: Record<string, any>;
|
|
6
8
|
}
|
|
@@ -11,12 +13,16 @@ export type SecurityResponse = {
|
|
|
11
13
|
} | {
|
|
12
14
|
rulesPassed: false;
|
|
13
15
|
};
|
|
14
|
-
export interface
|
|
15
|
-
auth: Auth | undefined;
|
|
16
|
-
backendApiKey: string;
|
|
16
|
+
export interface ServiceGlobalConfig {
|
|
17
17
|
codeDir: string;
|
|
18
|
-
context: RunContext;
|
|
19
18
|
environmentId?: EnvironmentId;
|
|
20
|
-
secrets: Record<SecretKey, any>;
|
|
21
19
|
squidDeveloperId?: SquidDeveloperId;
|
|
20
|
+
backendApiKey: string;
|
|
21
|
+
secrets: Record<SecretKey, any>;
|
|
22
|
+
requestLocalStorage: AsyncLocalStorage<ServiceRequestConfig>;
|
|
23
|
+
}
|
|
24
|
+
export interface ServiceRequestConfig {
|
|
25
|
+
auth: Auth | undefined;
|
|
26
|
+
context: RunContext;
|
|
22
27
|
}
|
|
28
|
+
export type ServiceConfig = ServiceGlobalConfig & ServiceRequestConfig;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { ServiceConfig, ServiceGlobalConfig, ServiceRequestConfig } from '../types/security.types';
|
|
3
|
+
import { AsyncLocalStorage } from 'node:async_hooks';
|
|
4
|
+
export interface SquidServiceLike extends Record<string, Function | object> {
|
|
5
|
+
new <T extends SquidServiceLike>(config: ServiceGlobalConfig): T;
|
|
6
|
+
config: ServiceGlobalConfig;
|
|
7
|
+
}
|
|
8
|
+
export declare function getOrCreateSquidService<T extends SquidServiceLike>(serviceName: string, config: ServiceConfig, serviceClass: T): T;
|
|
9
|
+
export declare function getSquidServiceRequestConfig(requestLocalStorage: AsyncLocalStorage<ServiceRequestConfig>): ServiceRequestConfig;
|
|
10
|
+
export interface SquidServiceMetadata {
|
|
11
|
+
version: number;
|
|
12
|
+
}
|
|
13
|
+
export declare function getSquidServiceMetadata(service: SquidServiceLike): SquidServiceMetadata;
|
|
14
|
+
export declare function setSquidServiceMetadata(service: SquidServiceLike): void;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.setSquidServiceMetadata = exports.getSquidServiceMetadata = exports.getSquidServiceRequestConfig = exports.getOrCreateSquidService = void 0;
|
|
4
|
+
const assertic_1 = require("assertic");
|
|
5
|
+
const squidServiceSingletonMap = new Map();
|
|
6
|
+
const CURRENT_SQUID_SERVICE_VERSION = 1;
|
|
7
|
+
const SQUID_SERVICE_METADATA_KEY = '__squidMetadata';
|
|
8
|
+
function getOrCreateSquidService(serviceName, config, serviceClass) {
|
|
9
|
+
let service = squidServiceSingletonMap.get(serviceName);
|
|
10
|
+
if (!service || getSquidServiceMetadata(service).version === 0) {
|
|
11
|
+
service = config.requestLocalStorage.run(config, () => new serviceClass(config));
|
|
12
|
+
if (getSquidServiceMetadata(service).version > 0) {
|
|
13
|
+
squidServiceSingletonMap.set(serviceName, service);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
(0, assertic_1.assertTruthy)(service.config.backendApiKey === config.backendApiKey, 'backendApiKey does not match.');
|
|
18
|
+
(0, assertic_1.assertTruthy)(service.config.codeDir === config.codeDir, 'codeDir does not match');
|
|
19
|
+
(0, assertic_1.assertTruthy)(service.config.environmentId === config.environmentId, 'environmentId does not match');
|
|
20
|
+
(0, assertic_1.assertTruthy)(service.config.squidDeveloperId === config.squidDeveloperId, 'squidDeveloperId does not match');
|
|
21
|
+
service.config.secrets = config.secrets;
|
|
22
|
+
}
|
|
23
|
+
return service;
|
|
24
|
+
}
|
|
25
|
+
exports.getOrCreateSquidService = getOrCreateSquidService;
|
|
26
|
+
function getSquidServiceRequestConfig(requestLocalStorage) {
|
|
27
|
+
return (0, assertic_1.truthy)(requestLocalStorage.getStore(), `Failed to access request data outside of the request's scope`);
|
|
28
|
+
}
|
|
29
|
+
exports.getSquidServiceRequestConfig = getSquidServiceRequestConfig;
|
|
30
|
+
function getSquidServiceMetadata(service) {
|
|
31
|
+
const metadata = service[SQUID_SERVICE_METADATA_KEY];
|
|
32
|
+
return metadata || { version: 0 };
|
|
33
|
+
}
|
|
34
|
+
exports.getSquidServiceMetadata = getSquidServiceMetadata;
|
|
35
|
+
function setSquidServiceMetadata(service) {
|
|
36
|
+
service[SQUID_SERVICE_METADATA_KEY] = { version: CURRENT_SQUID_SERVICE_VERSION };
|
|
37
|
+
}
|
|
38
|
+
exports.setSquidServiceMetadata = setSquidServiceMetadata;
|
|
39
|
+
//# sourceMappingURL=squid-service-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"squid-service-utils.js","sourceRoot":"","sources":["../../../../../internal-common/src/utils/squid-service-utils.ts"],"names":[],"mappings":";;;AAIA,uCAAgD;AAEhD,MAAM,wBAAwB,GAAG,IAAI,GAAG,EAA4B,CAAC;AACrE,MAAM,6BAA6B,GAAG,CAAC,CAAC;AACxC,MAAM,0BAA0B,GAAG,iBAAiB,CAAC;AAerD,SAAgB,uBAAuB,CACrC,WAAmB,EACnB,MAAqB,EACrB,YAAe;IAEf,IAAI,OAAO,GAAG,wBAAwB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACxD,IAAI,CAAC,OAAO,IAAI,uBAAuB,CAAC,OAAO,CAAC,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;QAC/D,OAAO,GAAG,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;QACjF,IAAI,uBAAuB,CAAC,OAAO,CAAC,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;YACjD,wBAAwB,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;SAAM,CAAC;QACN,IAAA,uBAAY,EAAC,OAAO,CAAC,MAAM,CAAC,aAAa,KAAK,MAAM,CAAC,aAAa,EAAE,+BAA+B,CAAC,CAAC;QACrG,IAAA,uBAAY,EAAC,OAAO,CAAC,MAAM,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO,EAAE,wBAAwB,CAAC,CAAC;QAClF,IAAA,uBAAY,EAAC,OAAO,CAAC,MAAM,CAAC,aAAa,KAAK,MAAM,CAAC,aAAa,EAAE,8BAA8B,CAAC,CAAC;QACpG,IAAA,uBAAY,EAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,KAAK,MAAM,CAAC,gBAAgB,EAAE,iCAAiC,CAAC,CAAC;QAC7G,OAAO,CAAC,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAC1C,CAAC;IACD,OAAO,OAAY,CAAC;AACtB,CAAC;AAnBD,0DAmBC;AAGD,SAAgB,4BAA4B,CAC1C,mBAA4D;IAE5D,OAAO,IAAA,iBAAM,EAAC,mBAAmB,CAAC,QAAQ,EAAE,EAAE,8DAA8D,CAAC,CAAC;AAChH,CAAC;AAJD,oEAIC;AAcD,SAAgB,uBAAuB,CAAC,OAAyB;IAC/D,MAAM,QAAQ,GAAG,OAAO,CAAC,0BAA0B,CAAqC,CAAC;IACzF,OAAO,QAAQ,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;AACpC,CAAC;AAHD,0DAGC;AAED,SAAgB,uBAAuB,CAAC,OAAyB;IAC/D,OAAO,CAAC,0BAA0B,CAAC,GAAG,EAAE,OAAO,EAAE,6BAA6B,EAAE,CAAC;AACnF,CAAC;AAFD,0DAEC"}
|
|
@@ -18,6 +18,9 @@ const promise_pool_1 = require("@supercharge/promise-pool");
|
|
|
18
18
|
const assertic_1 = require("assertic");
|
|
19
19
|
const serialization_1 = require("../../internal-common/src/utils/serialization");
|
|
20
20
|
const backend_transforms_1 = require("../../internal-common/src/utils/backend-transforms");
|
|
21
|
+
const squid_service_utils_1 = require("../../internal-common/src/utils/squid-service-utils");
|
|
22
|
+
const async_hooks_1 = require("async_hooks");
|
|
23
|
+
const requestLocalStorage = new async_hooks_1.AsyncLocalStorage();
|
|
21
24
|
let LocalBackendService = class LocalBackendService {
|
|
22
25
|
constructor(backendService) {
|
|
23
26
|
this.backendService = backendService;
|
|
@@ -33,21 +36,24 @@ let LocalBackendService = class LocalBackendService {
|
|
|
33
36
|
const [serviceName, fnName] = functionName.split(':');
|
|
34
37
|
let fn;
|
|
35
38
|
let service;
|
|
39
|
+
let serviceConfig;
|
|
36
40
|
if (serviceName === 'default') {
|
|
37
41
|
fn = this.backendService[serviceName][fnName];
|
|
38
42
|
(0, assertic_1.assertTruthy)(typeof fn === 'function', `${serviceName}.${fnName} is not a function`);
|
|
39
43
|
}
|
|
40
44
|
else {
|
|
41
45
|
const Service = this.backendService[serviceName];
|
|
46
|
+
(0, assertic_1.assertTruthy)(Service, () => `Service not found: ${serviceName}`);
|
|
42
47
|
(0, assertic_1.assertTruthy)(this.secrets, 'Secrets must be defined in executeActionRequest');
|
|
43
|
-
|
|
48
|
+
serviceConfig = {
|
|
44
49
|
secrets: this.secrets.custom,
|
|
45
50
|
context: payload.context,
|
|
46
51
|
auth: payload.auth,
|
|
47
52
|
backendApiKey: payload.backendApiKey,
|
|
48
53
|
codeDir: '',
|
|
54
|
+
requestLocalStorage,
|
|
49
55
|
};
|
|
50
|
-
service =
|
|
56
|
+
service = (0, squid_service_utils_1.getOrCreateSquidService)(serviceName, serviceConfig, Service);
|
|
51
57
|
const squidServiceMethod = service[fnName];
|
|
52
58
|
(0, assertic_1.assertTruthy)(typeof squidServiceMethod === 'function', `${serviceName}.${fnName} is not a function`);
|
|
53
59
|
fn = squidServiceMethod.bind(service);
|
|
@@ -73,13 +79,15 @@ let LocalBackendService = class LocalBackendService {
|
|
|
73
79
|
}
|
|
74
80
|
}
|
|
75
81
|
const transformedParams = (0, backend_transforms_1.transformParams)(params, executeFunctionAnnotationType);
|
|
76
|
-
const functionResponse =
|
|
82
|
+
const functionResponse = serviceConfig
|
|
83
|
+
? await serviceConfig.requestLocalStorage.run(serviceConfig, () => fn(...transformedParams))
|
|
84
|
+
: await fn(...transformedParams);
|
|
77
85
|
const transformedResponse = (0, backend_transforms_1.transformResponse)(functionResponse, executeFunctionAnnotationType);
|
|
78
86
|
return { ok: true, functionResponse: transformedResponse };
|
|
79
87
|
}
|
|
80
88
|
catch (err) {
|
|
81
89
|
console.error('Error while invoking function ' + fnName, err);
|
|
82
|
-
return { ok: false, error: 'FUNCTION_ERROR', details: err === null || err === void 0 ? void 0 : err.message, functionName:
|
|
90
|
+
return { ok: false, error: 'FUNCTION_ERROR', details: err === null || err === void 0 ? void 0 : err.message, functionName: fnName };
|
|
83
91
|
}
|
|
84
92
|
finally {
|
|
85
93
|
if (lock) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-backend.service.js","sourceRoot":"","sources":["../../../src/local-backend.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAoD;AAEpD,4DAAwD;AAExD,uCAAgD;AAKhD,iFAA6E;AAE7E,2FAAwG;
|
|
1
|
+
{"version":3,"file":"local-backend.service.js","sourceRoot":"","sources":["../../../src/local-backend.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAoD;AAEpD,4DAAwD;AAExD,uCAAgD;AAKhD,iFAA6E;AAE7E,2FAAwG;AAUxG,6FAAgH;AAChH,6CAAgD;AAehD,MAAM,mBAAmB,GAAG,IAAI,+BAAiB,EAAwB,CAAC;AAGnE,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAG9B,YAAwD,cAAuC;QAAvC,mBAAc,GAAd,cAAc,CAAyB;IAAG,CAAC;IAE3F,KAAK,CAAC,oBAAoB,CAAC,aAA4B;QAC7D,MAAM,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC;QACjC,IAAI,MAAM,KAAK,iBAAiB,EAAE,CAAC;YACjC,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAC;YAChD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC;QACzE,CAAC;QACD,MAAM,OAAO,GAAG,aAAa,CAAC,OAAiC,CAAC;QAChE,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QAC1C,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACtD,IAAI,EAAmB,CAAC;QACxB,IAAI,OAA8D,CAAC;QACnE,IAAI,aAAwC,CAAC;QAC7C,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,EAAE,GAAI,IAAI,CAAC,cAAc,CAAC,WAAW,CAA6B,CAAC,MAAM,CAAoB,CAAC;YAC9F,IAAA,uBAAY,EAAC,OAAO,EAAE,KAAK,UAAU,EAAE,GAAG,WAAW,IAAI,MAAM,oBAAoB,CAAC,CAAC;QACvF,CAAC;aAAM,CAAC;YACN,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAA4C,CAAC;YAC5F,IAAA,uBAAY,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,sBAAsB,WAAW,EAAE,CAAC,CAAC;YACjE,IAAA,uBAAY,EAAC,IAAI,CAAC,OAAO,EAAE,iDAAiD,CAAC,CAAC;YAC9E,aAAa,GAAG;gBACd,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;gBAC5B,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,aAAa,EAAE,OAAO,CAAC,aAAa;gBACpC,OAAO,EAAE,EAAE;gBACX,mBAAmB;aACpB,CAAC;YACF,OAAO,GAAG,IAAA,6CAAuB,EAAC,WAAW,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;YACvE,MAAM,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;YAC3C,IAAA,uBAAY,EAAC,OAAO,kBAAkB,KAAK,UAAU,EAAE,GAAG,WAAW,IAAI,MAAM,oBAAoB,CAAC,CAAC;YACrG,EAAE,GAAG,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxC,CAAC;QAED,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,oBAAoB,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC;QACxF,CAAC;QACD,IAAI,IAAqC,CAAC;QAC1C,MAAM,QAAQ,GAAG,iCAAiC,YAAY,EAAE,CAAC;QACjE,MAAM,6BAA6B,GAAG,OAAO,CAAC,6BAA6B,CAAC;QAC5E,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC9B,IAAI,CAAC;YAEH,IAAI,6BAA6B,KAAK,WAAW,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChF,IAAA,uBAAY,EAAC,OAAO,EAAE,yBAAyB,CAAC,CAAC;gBACjD,IAAI,CAAC;oBACH,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;oBAC1B,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;wBACtB,IAAI,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;oBAC3C,CAAC;gBACH,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,CAAC;gBACnD,CAAC;YACH,CAAC;YAED,MAAM,iBAAiB,GAAG,IAAA,oCAAe,EAAC,MAAM,EAAE,6BAA6B,CAAC,CAAC;YACjF,MAAM,gBAAgB,GAAG,aAAa;gBACpC,CAAC,CAAC,MAAM,aAAa,CAAC,mBAAmB,CAAC,GAAG,CAAC,aAAa,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,iBAAiB,CAAC,CAAC;gBAC5F,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,iBAAiB,CAAC,CAAC;YACnC,MAAM,mBAAmB,GAAG,IAAA,sCAAiB,EAAC,gBAAgB,EAAE,6BAA6B,CAAC,CAAC;YAC/F,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,CAAC;QAC7D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,gCAAgC,GAAG,MAAM,EAAE,GAAG,CAAC,CAAC;YAC9D,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAG,GAAa,aAAb,GAAG,uBAAH,GAAG,CAAY,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC;QACxG,CAAC;gBAAS,CAAC;YACT,IAAI,IAAI,EAAE,CAAC;gBACT,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,wBAAwB,CAAC,YAA0C,EAAE,GAAa;QACtF,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;QACvE,GAAG;aACA,GAAG,CAAC,cAAc,EAAE,kBAAkB,CAAC;aACvC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;aAC3B,IAAI,CAAC,IAAA,4BAAY,EAAC,SAAS,CAAC,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,YAA0C;QAI7D,MAAM,OAAO,GAAG,IAAA,iBAAM,EAAC,IAAI,CAAC,OAAO,EAAE,sBAAsB,CAAC,CAAC;QAC7D,MAAM,SAAS,GAAmD,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACtG,IAAI,IAAI,GAAG,KAAK,CAAC;QACjB,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,MAAM,0BAAW,CAAC,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC;aACzC,eAAe,CAAC,EAAE,CAAC;aACnB,OAAO,CAAC,KAAK,EAAE,OAAqC,EAAE,KAAK,EAAE,EAAE;;YAC9D,IAAI,IAAI,EAAE,CAAC;gBACT,OAAO;YACT,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,OAAO,GAA2B;oBACtC,OAAO,EAAE,OAAO,CAAC,MAAM;oBACvB,aAAa,EAAE,OAAO,CAAC,aAAa;oBACpC,YAAY,EAAE,OAAO,CAAC,YAAY;oBAClC,MAAM,EAAE,OAAO,CAAC,MAAM;oBACtB,IAAI,EAAE,YAAY,CAAC,IAAI;oBACvB,OAAO,EAAE,YAAY,CAAC,OAAO;oBAC7B,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE;oBACtB,6BAA6B,EAAE,YAAY,CAAC,6BAA6B;iBAC1E,CAAC;gBAEF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC;oBAC/C,MAAM,EAAE,iBAAiB;oBACzB,OAAO;iBACR,CAAC,CAAC;gBAEH,IAAI,IAAI,EAAE,CAAC;oBACT,OAAO;gBACT,CAAC;gBACD,IACE,CAAC,QAAQ,CAAC,EAAE;oBACZ,CAAC,YAAY,CAAC,aAAa,CAAC,eAAe,IAAI,CAAE,QAAQ,CAAC,gBAAqC,CAAC,WAAW,CAAC,EAC5G,CAAC;oBACD,OAAO,GAAG,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAClC,IAAI,GAAG,IAAI,CAAC;oBACZ,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBACpB,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBACzB,OAAO;gBACT,CAAC;gBACD,SAAS,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC;YAC9B,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,GAAG,IAAI,CAAC;gBACf,IAAI,GAAG,IAAI,CAAC;gBACZ,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBACpB,SAAS,CAAC,IAAI,CAAC;oBACb,EAAE,EAAE,KAAK;oBACT,KAAK,EAAE,MAAC,CAAW,aAAX,CAAC,uBAAD,CAAC,CAAY,OAAO,mCAAI,oCAAoC;oBACpE,YAAY,EAAE,OAAO,CAAC,YAAY;iBACnC,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC,CAAC;QACL,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,2BAA2B,CAAC,OAAmB,EAAE,KAAY;QACjE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC;YAC9C,OAAO;YACP,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,EAAE,KAAK,EAAE;YAClB,aAAa,EAAE;gBACb,eAAe,EAAE,KAAK;gBACtB,WAAW,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;gBAC1B,OAAO,EAAE,EAAE;gBACX,SAAS,EAAE,EAAE;aACd;YACD,QAAQ,EAAE;gBACR;oBACE,YAAY,EAAE,kBAAkB;oBAChC,MAAM,EAAE,EAAE;iBACX;aACF;YACD,6BAA6B,EAAE,UAAU;SAC1C,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAA4B,CAAC;QACzD,OAAO,QAAQ,CAAC,gBAAyC,CAAC;IAC5D,CAAC;CACF,CAAA;AAtKY,kDAAmB;8BAAnB,mBAAmB;IAD/B,IAAA,mBAAU,GAAE;IAIE,WAAA,IAAA,eAAM,EAAC,iBAAiB,CAAC,CAAA;;GAH3B,mBAAmB,CAsK/B"}
|