@ductape/sdk 0.0.4-v4 → 0.0.4-v40
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/api/services/appApi.service.d.ts +48 -2
- package/dist/api/services/appApi.service.js +101 -2
- package/dist/api/services/appApi.service.js.map +1 -1
- package/dist/api/services/pricingApi.service.d.ts +10 -0
- package/dist/api/services/pricingApi.service.js +34 -0
- package/dist/api/services/pricingApi.service.js.map +1 -0
- package/dist/api/services/processorApi.service.d.ts +12 -2
- package/dist/api/services/processorApi.service.js +12 -2
- package/dist/api/services/processorApi.service.js.map +1 -1
- package/dist/api/services/productsApi.service.d.ts +39 -1
- package/dist/api/services/productsApi.service.js +76 -0
- package/dist/api/services/productsApi.service.js.map +1 -1
- package/dist/api/services/userApi.service.js +1 -0
- package/dist/api/services/userApi.service.js.map +1 -1
- package/dist/api/services/workspaceApi.service.js +1 -0
- package/dist/api/services/workspaceApi.service.js.map +1 -1
- package/dist/api/urls.d.ts +6 -1
- package/dist/api/urls.js +12 -2
- package/dist/api/urls.js.map +1 -1
- package/dist/api/utils/cache.utils.d.ts +1 -1
- package/dist/api/utils/cache.utils.js +2 -2
- package/dist/api/utils/cache.utils.js.map +1 -1
- package/dist/api/utils/strings.utils.d.ts +2 -0
- package/dist/api/utils/strings.utils.js +14 -0
- package/dist/api/utils/strings.utils.js.map +1 -1
- package/dist/apps/services/app.service.d.ts +41 -33
- package/dist/apps/services/app.service.js +473 -185
- package/dist/apps/services/app.service.js.map +1 -1
- package/dist/apps/validators/joi-validators/create.appAction.validator.d.ts +1 -2
- package/dist/apps/validators/joi-validators/create.appAction.validator.js +21 -2
- package/dist/apps/validators/joi-validators/create.appAction.validator.js.map +1 -1
- package/dist/apps/validators/joi-validators/update.appAction.validator.js +11 -1
- package/dist/apps/validators/joi-validators/update.appAction.validator.js.map +1 -1
- package/dist/apps/validators/joi-validators/update.appActionResponse.validator.d.ts +1 -1
- package/dist/apps/validators/joi-validators/update.appActionResponse.validator.js +34 -1
- package/dist/apps/validators/joi-validators/update.appActionResponse.validator.js.map +1 -1
- package/dist/clients/apps.client.js +1 -1
- package/dist/clients/apps.client.js.map +1 -1
- package/dist/clients/pricing.client.d.ts +3 -0
- package/dist/clients/pricing.client.js +33 -0
- package/dist/clients/pricing.client.js.map +1 -0
- package/dist/imports/imports.service.d.ts +3 -3
- package/dist/imports/imports.service.js +7 -7
- package/dist/imports/imports.service.js.map +1 -1
- package/dist/imports/imports.types.d.ts +8 -0
- package/dist/imports/repos/postmanV21.repo.d.ts +1 -1
- package/dist/imports/repos/postmanV21.repo.js +29 -2
- package/dist/imports/repos/postmanV21.repo.js.map +1 -1
- package/dist/index.d.ts +1009 -91
- package/dist/index.js +969 -126
- package/dist/index.js.map +1 -1
- package/dist/inputs/inputs.service.js +2 -2
- package/dist/inputs/inputs.service.js.map +1 -1
- package/dist/inputs/utils/inputs.utils.create.js +1 -1
- package/dist/inputs/utils/inputs.utils.create.js.map +1 -1
- package/dist/logs/logs.service.js +1 -0
- package/dist/logs/logs.service.js.map +1 -1
- package/dist/logs/logs.types.d.ts +5 -0
- package/dist/logs/logs.types.js.map +1 -1
- package/dist/parsers/index.d.ts +3 -0
- package/dist/parsers/index.js +27 -0
- package/dist/parsers/index.js.map +1 -0
- package/dist/parsers/pipelines/postman.pipelines.d.ts +15 -0
- package/dist/parsers/pipelines/postman.pipelines.js +103 -0
- package/dist/parsers/pipelines/postman.pipelines.js.map +1 -0
- package/dist/parsers/types/postman.types.d.ts +200 -0
- package/dist/parsers/types/postman.types.js +3 -0
- package/dist/parsers/types/postman.types.js.map +1 -0
- package/dist/parsers/utils/postman.utils.d.ts +12 -0
- package/dist/parsers/utils/postman.utils.js +116 -0
- package/dist/parsers/utils/postman.utils.js.map +1 -0
- package/dist/parsers/validators/postman-auth.validators.d.ts +10 -0
- package/dist/parsers/validators/postman-auth.validators.js +127 -0
- package/dist/parsers/validators/postman-auth.validators.js.map +1 -0
- package/dist/parsers/validators/postman-request.validators.d.ts +13 -0
- package/dist/parsers/validators/postman-request.validators.js +139 -0
- package/dist/parsers/validators/postman-request.validators.js.map +1 -0
- package/dist/parsers/validators/postman-response.validators.d.ts +13 -0
- package/dist/parsers/validators/postman-response.validators.js +150 -0
- package/dist/parsers/validators/postman-response.validators.js.map +1 -0
- package/dist/parsers/validators/postman-variable.validators.d.ts +14 -0
- package/dist/parsers/validators/postman-variable.validators.js +163 -0
- package/dist/parsers/validators/postman-variable.validators.js.map +1 -0
- package/dist/pricing/pricing.repo.d.ts +0 -0
- package/dist/pricing/pricing.repo.js +1 -0
- package/dist/pricing/pricing.repo.js.map +1 -0
- package/dist/pricing/pricing.service.d.ts +24 -0
- package/dist/pricing/pricing.service.js +51 -0
- package/dist/pricing/pricing.service.js.map +1 -0
- package/dist/pricing/pricing.types.d.ts +76 -0
- package/dist/pricing/pricing.types.js +21 -0
- package/dist/pricing/pricing.types.js.map +1 -0
- package/dist/pricing/utils/string.utils.d.ts +1 -0
- package/dist/pricing/utils/string.utils.js +9 -0
- package/dist/pricing/utils/string.utils.js.map +1 -0
- package/dist/processor/repos/sms.repo.d.ts +4 -4
- package/dist/processor/repos/sms.repo.js +23 -10
- package/dist/processor/repos/sms.repo.js.map +1 -1
- package/dist/processor/services/messagebrokers/kafka.service.js +0 -2
- package/dist/processor/services/messagebrokers/kafka.service.js.map +1 -1
- package/dist/processor/services/messagebrokers/rabbitmq.service.d.ts +9 -1
- package/dist/processor/services/messagebrokers/rabbitmq.service.js +40 -11
- package/dist/processor/services/messagebrokers/rabbitmq.service.js.map +1 -1
- package/dist/processor/services/processor.service.d.ts +40 -9
- package/dist/processor/services/processor.service.js +638 -276
- package/dist/processor/services/processor.service.js.map +1 -1
- package/dist/processor/services/request.service.d.ts +36 -0
- package/dist/processor/services/request.service.js +304 -0
- package/dist/processor/services/request.service.js.map +1 -0
- package/dist/processor/types/request.types.d.ts +14 -0
- package/dist/processor/types/request.types.js +3 -0
- package/dist/processor/types/request.types.js.map +1 -0
- package/dist/processor/utils/processor.utils.d.ts +3 -0
- package/dist/processor/utils/processor.utils.js +89 -6
- package/dist/processor/utils/processor.utils.js.map +1 -1
- package/dist/processor/utils/request.utils.d.ts +20 -0
- package/dist/processor/utils/request.utils.js +113 -0
- package/dist/processor/utils/request.utils.js.map +1 -0
- package/dist/processor/utils/storage.util.js +54 -40
- package/dist/processor/utils/storage.util.js.map +1 -1
- package/dist/products/services/products.service.d.ts +98 -77
- package/dist/products/services/products.service.js +569 -325
- package/dist/products/services/products.service.js.map +1 -1
- package/dist/products/services/utils/crypt.utils.d.ts +1 -0
- package/dist/products/services/utils/crypt.utils.js +17 -0
- package/dist/products/services/utils/crypt.utils.js.map +1 -0
- package/dist/products/services/utils/functions.utils.d.ts +13 -0
- package/dist/products/services/utils/functions.utils.js +294 -0
- package/dist/products/services/utils/functions.utils.js.map +1 -0
- package/dist/products/services/utils/objects.utils.d.ts +13 -0
- package/dist/products/services/utils/objects.utils.js +89 -0
- package/dist/products/services/utils/objects.utils.js.map +1 -0
- package/dist/products/services/utils/string.utils.d.ts +12 -0
- package/dist/products/services/utils/string.utils.js +168 -0
- package/dist/products/services/utils/string.utils.js.map +1 -0
- package/dist/products/utils/string.utils.d.ts +1 -1
- package/dist/products/utils/string.utils.js +14 -2
- package/dist/products/utils/string.utils.js.map +1 -1
- package/dist/products/validators/index.d.ts +2 -1
- package/dist/products/validators/index.js +3 -1
- package/dist/products/validators/index.js.map +1 -1
- package/dist/products/validators/joi-validators/create.productEnv.validator.js +1 -0
- package/dist/products/validators/joi-validators/create.productEnv.validator.js.map +1 -1
- package/dist/products/validators/joi-validators/create.productHealthcheck.validator.d.ts +4 -0
- package/dist/products/validators/joi-validators/create.productHealthcheck.validator.js +58 -0
- package/dist/products/validators/joi-validators/create.productHealthcheck.validator.js.map +1 -0
- package/dist/products/validators/joi-validators/create.productMessageBrokers.validator.js +9 -4
- package/dist/products/validators/joi-validators/create.productMessageBrokers.validator.js.map +1 -1
- package/dist/products/validators/joi-validators/create.productNotification.validator.js +5 -2
- package/dist/products/validators/joi-validators/create.productNotification.validator.js.map +1 -1
- package/dist/products/validators/joi-validators/create.userAuth.validator.js +1 -0
- package/dist/products/validators/joi-validators/create.userAuth.validator.js.map +1 -1
- package/dist/products/validators/joi-validators/update.dataValue.validator.js +1 -0
- package/dist/products/validators/joi-validators/update.dataValue.validator.js.map +1 -1
- package/dist/products/validators/joi-validators/update.productEnv.validator.js +3 -0
- package/dist/products/validators/joi-validators/update.productEnv.validator.js.map +1 -1
- package/dist/products/validators/joi-validators/update.userAuth.validator.js +1 -0
- package/dist/products/validators/joi-validators/update.userAuth.validator.js.map +1 -1
- package/dist/test/test.health.d.ts +1 -0
- package/dist/test/test.health.js +49 -0
- package/dist/test/test.health.js.map +1 -0
- package/dist/test/test.import.js +51 -4
- package/dist/test/test.import.js.map +1 -1
- package/dist/test/test.imports.js +22 -7
- package/dist/test/test.imports.js.map +1 -1
- package/dist/test/test.notifiers.d.ts +1 -0
- package/dist/test/test.notifiers.js +85 -0
- package/dist/test/test.notifiers.js.map +1 -0
- package/dist/test/test.processor.js +32 -115
- package/dist/test/test.processor.js.map +1 -1
- package/dist/test/test.products.d.ts +1 -0
- package/dist/test/test.products.js +49 -0
- package/dist/test/test.products.js.map +1 -0
- package/dist/types/appBuilder.types.d.ts +4 -11
- package/dist/types/enums.d.ts +3 -1
- package/dist/types/enums.js +2 -0
- package/dist/types/enums.js.map +1 -1
- package/dist/types/index.types.d.ts +4 -0
- package/dist/types/pricing.types.d.ts +4 -0
- package/dist/types/pricing.types.js +3 -0
- package/dist/types/pricing.types.js.map +1 -0
- package/dist/types/processor.types.d.ts +66 -9
- package/dist/types/processor.types.js.map +1 -1
- package/dist/types/productsBuilder.types.d.ts +52 -8
- package/dist/types/productsBuilder.types.js +9 -1
- package/dist/types/productsBuilder.types.js.map +1 -1
- package/dist/types/request-tracker.interface.d.ts +0 -0
- package/dist/types/request-tracker.interface.js +1 -0
- package/dist/types/request-tracker.interface.js.map +1 -0
- package/dist/utils/constants.d.ts +1 -0
- package/dist/utils/constants.js +5 -0
- package/dist/utils/constants.js.map +1 -0
- package/package.json +15 -3
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.gcpPKCSConvert = void 0;
|
|
4
|
+
const crypto_1 = require("crypto");
|
|
5
|
+
const gcpPKCSConvert = (private_key) => {
|
|
6
|
+
const privateKey = (0, crypto_1.createPrivateKey)({
|
|
7
|
+
key: private_key,
|
|
8
|
+
format: "pem",
|
|
9
|
+
type: "pkcs1", // This assumes it's in PKCS#1 format
|
|
10
|
+
});
|
|
11
|
+
return privateKey.export({
|
|
12
|
+
format: "pem",
|
|
13
|
+
type: "pkcs8", // Convert to PKCS#8
|
|
14
|
+
});
|
|
15
|
+
};
|
|
16
|
+
exports.gcpPKCSConvert = gcpPKCSConvert;
|
|
17
|
+
//# sourceMappingURL=crypt.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crypt.utils.js","sourceRoot":"","sources":["../../../../src/products/services/utils/crypt.utils.ts"],"names":[],"mappings":";;;AAAA,mCAA0C;AAEnC,MAAM,cAAc,GAAG,CAAC,WAAmB,EAAE,EAAE;IAClD,MAAM,UAAU,GAAG,IAAA,yBAAgB,EAAC;QAChC,GAAG,EAAE,WAAW;QAChB,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,OAAO,EAAE,qCAAqC;KACrD,CAAC,CAAC;IAEH,OAAO,UAAU,CAAC,MAAM,CAAC;QACvB,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,OAAO,EAAE,oBAAoB;KACpC,CAAC,CAAC;AACT,CAAC,CAAA;AAXY,QAAA,cAAc,kBAW1B"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { HttpMethods } from '../../../types/enums';
|
|
2
|
+
import { IProductFunction } from '../../../types/productsBuilder.types';
|
|
3
|
+
export declare const transformToJson: (template: string, payload: Record<string, any>) => any;
|
|
4
|
+
export declare const replaceTemplateValues: (template: string, payload: Record<string, any>) => string;
|
|
5
|
+
export declare function makeRequest(url: string, method: HttpMethods, body?: string): Promise<import("axios").AxiosResponse<any, any>>;
|
|
6
|
+
export declare const makeFunctionsRequest: (cloudFunction: IProductFunction, payload: Record<string, any>) => Promise<void>;
|
|
7
|
+
export declare const startsWithFunctionAndEndsWithParen: (value: string) => string;
|
|
8
|
+
export declare function extractFunctionAndArgs(value: string): {
|
|
9
|
+
functionName: string;
|
|
10
|
+
args: string[];
|
|
11
|
+
} | null;
|
|
12
|
+
export declare function validateAWSSQSQueueUrl(envs: any, queueUrls: any[]): void;
|
|
13
|
+
export declare function convertInputToValueMap(input: Record<string, unknown>): Record<string, string>;
|
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.startsWithFunctionAndEndsWithParen = exports.makeFunctionsRequest = exports.replaceTemplateValues = exports.transformToJson = void 0;
|
|
7
|
+
exports.makeRequest = makeRequest;
|
|
8
|
+
exports.extractFunctionAndArgs = extractFunctionAndArgs;
|
|
9
|
+
exports.validateAWSSQSQueueUrl = validateAWSSQSQueueUrl;
|
|
10
|
+
exports.convertInputToValueMap = convertInputToValueMap;
|
|
11
|
+
const function_client_1 = __importDefault(require("../../../clients/function.client"));
|
|
12
|
+
const types_1 = require("../../../types");
|
|
13
|
+
const enums_1 = require("../../../types/enums");
|
|
14
|
+
const productsBuilder_types_1 = require("../../../types/productsBuilder.types");
|
|
15
|
+
const transformToJson = (template, payload) => {
|
|
16
|
+
try {
|
|
17
|
+
const jsonString = (0, exports.replaceTemplateValues)(template, payload);
|
|
18
|
+
// Parse the resulting string into JSON
|
|
19
|
+
const jsonObject = JSON.parse(jsonString);
|
|
20
|
+
return jsonObject;
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
console.error('Error transforming string to JSON:', error);
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
exports.transformToJson = transformToJson;
|
|
28
|
+
const replaceTemplateValues = (template, payload) => {
|
|
29
|
+
const combinedRegex = /{{\s*([^}]+)\s*}}|(?<!")(\$?\w+)(?=\s*:)/g;
|
|
30
|
+
const templateString = template.replace(combinedRegex, (match, placeholder, keyOrMongoOperator) => {
|
|
31
|
+
if (placeholder) {
|
|
32
|
+
// If it's a placeholder (e.g., {{key}})
|
|
33
|
+
if (!(placeholder in payload)) {
|
|
34
|
+
throw new Error(`Missing key: ${placeholder}`);
|
|
35
|
+
}
|
|
36
|
+
return JSON.stringify(payload[placeholder]); // Replace placeholder with the corresponding value from the payload
|
|
37
|
+
}
|
|
38
|
+
return match; // Default case: return match unchanged
|
|
39
|
+
});
|
|
40
|
+
return templateString;
|
|
41
|
+
};
|
|
42
|
+
exports.replaceTemplateValues = replaceTemplateValues;
|
|
43
|
+
async function makeRequest(url, method, body) {
|
|
44
|
+
switch (method) {
|
|
45
|
+
case enums_1.HttpMethods.GET:
|
|
46
|
+
return await (0, function_client_1.default)(url).get('');
|
|
47
|
+
case enums_1.HttpMethods.PATCH:
|
|
48
|
+
return await (0, function_client_1.default)(url).patch('', body);
|
|
49
|
+
case enums_1.HttpMethods.POST:
|
|
50
|
+
return await (0, function_client_1.default)(url).post('', body);
|
|
51
|
+
case enums_1.HttpMethods.DELETE:
|
|
52
|
+
return await (0, function_client_1.default)(url).delete('');
|
|
53
|
+
case enums_1.HttpMethods.PUT:
|
|
54
|
+
return await (0, function_client_1.default)(url).put('', body);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
const makeFunctionsRequest = async (cloudFunction, payload) => {
|
|
58
|
+
/*const { inputType, template } = cloudFunction;
|
|
59
|
+
if (inputType === FunctionInputType.BODY) {
|
|
60
|
+
const body = transformToJson(template, payload);
|
|
61
|
+
return (await makeRequest(cloudFunction.url, cloudFunction.method, body)).data;
|
|
62
|
+
} else {
|
|
63
|
+
const query = replaceTemplateValues(template, payload);
|
|
64
|
+
const fullUrl = `${cloudFunction.url}?${query}`;
|
|
65
|
+
|
|
66
|
+
return (await makeRequest(fullUrl, cloudFunction.method)).data;
|
|
67
|
+
}*/
|
|
68
|
+
};
|
|
69
|
+
exports.makeFunctionsRequest = makeFunctionsRequest;
|
|
70
|
+
const functionNames = [
|
|
71
|
+
'$Add', '$Substract', '$Pick', '$Concat', '$Substring',
|
|
72
|
+
'$Trim', '$Join', '$Split', '$Uppercase', '$Lowercase',
|
|
73
|
+
'$Dateformat', '$Replace', '$Filter', '$Find'
|
|
74
|
+
];
|
|
75
|
+
const startsWithFunctionAndEndsWithParen = (value) => {
|
|
76
|
+
return functionNames.find((funcName) => value.startsWith(`${funcName}(`) && value.endsWith(')'));
|
|
77
|
+
};
|
|
78
|
+
exports.startsWithFunctionAndEndsWithParen = startsWithFunctionAndEndsWithParen;
|
|
79
|
+
const extractors = {
|
|
80
|
+
'$Add': (value) => {
|
|
81
|
+
const match = value.match(types_1.sumRegex);
|
|
82
|
+
if (match && match[1] && !match[2]) {
|
|
83
|
+
const values = match ? match[1].split(',').map(arg => arg.trim()) : [];
|
|
84
|
+
values.map((value) => extractFunctionAndArgs(value));
|
|
85
|
+
return values;
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
throw `$Add is to be defined as $Add(...numbers), ${value} is invalid`;
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
'$Substract': (value) => {
|
|
92
|
+
const match = value.match(types_1.substractRegex);
|
|
93
|
+
if (match && match[1] && !match[2]) {
|
|
94
|
+
const values = match ? match[1].split(',').map(arg => arg.trim()) : [];
|
|
95
|
+
values.map((value) => extractFunctionAndArgs(value));
|
|
96
|
+
return values;
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
throw `$Substract is to be defined as $Substract(...numbers), ${value} is invalid`;
|
|
100
|
+
}
|
|
101
|
+
},
|
|
102
|
+
'$Concat': (value) => {
|
|
103
|
+
const match = value.match(types_1.concatRegex);
|
|
104
|
+
if (match && match[1] && match[2] && !match[3]) {
|
|
105
|
+
extractFunctionAndArgs(match[1].trim());
|
|
106
|
+
extractFunctionAndArgs(match[2].trim());
|
|
107
|
+
return [match[1].trim(), match[2].trim()];
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
throw `$Concat is to be defined as $Concat([string...], delimiter), ${value} is invalid`;
|
|
111
|
+
}
|
|
112
|
+
},
|
|
113
|
+
'$Substring': (value) => {
|
|
114
|
+
const match = value.match(types_1.substringRegex);
|
|
115
|
+
if (match && match[1] && match[2] && match[3] && !match[4]) {
|
|
116
|
+
// await validateArray(array);
|
|
117
|
+
// await validateNumber(index);
|
|
118
|
+
extractFunctionAndArgs(match[1].trim());
|
|
119
|
+
extractFunctionAndArgs(match[2].trim());
|
|
120
|
+
extractFunctionAndArgs(match[3].trim());
|
|
121
|
+
return [match[1].trim(), match[2].trim(), match[3].trim()];
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
throw `$Substring is to be defined as $Substring(string, start, end), ${value} is invalid`;
|
|
125
|
+
}
|
|
126
|
+
},
|
|
127
|
+
'$Trim': (value) => {
|
|
128
|
+
const match = value.match(types_1.trimRegex);
|
|
129
|
+
if (match && match[1] && !match[2]) {
|
|
130
|
+
// await validateArray(array);
|
|
131
|
+
// await validateNumber(index);
|
|
132
|
+
extractFunctionAndArgs(match[1].trim());
|
|
133
|
+
return [match[1].trim()];
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
throw `$Trim is to be defined as $Trim(string), ${value} is invalid`;
|
|
137
|
+
}
|
|
138
|
+
},
|
|
139
|
+
'$Split': (value) => {
|
|
140
|
+
const match = value.match(types_1.splitRegex);
|
|
141
|
+
if (match && match[1] && match[2] && !match[3]) {
|
|
142
|
+
// await validateArray(array);
|
|
143
|
+
// await validateNumber(index);
|
|
144
|
+
extractFunctionAndArgs(match[1].trim());
|
|
145
|
+
return [match[1].trim(), match[2].trim()];
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
throw `$Split is to be defined as $Split(string, seperator), ${value} is invalid`;
|
|
149
|
+
}
|
|
150
|
+
},
|
|
151
|
+
'$Pick': (value) => {
|
|
152
|
+
const match = value.match(types_1.pickRegex);
|
|
153
|
+
if (match && match[1] && match[2] && !match[3]) {
|
|
154
|
+
// await validateArray(array);
|
|
155
|
+
// await validateNumber(index);
|
|
156
|
+
extractFunctionAndArgs(match[1].trim());
|
|
157
|
+
extractFunctionAndArgs(match[2].trim());
|
|
158
|
+
return [match[1].trim(), match[2].trim()];
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
throw `$Pick is to be defined as $Pick(array, index), ${value} is invalid`;
|
|
162
|
+
}
|
|
163
|
+
},
|
|
164
|
+
'$Join': (value) => {
|
|
165
|
+
const match = value.match(types_1.joinRegex);
|
|
166
|
+
if (match && match[1] && !match[2]) {
|
|
167
|
+
extractFunctionAndArgs(match[1].trim());
|
|
168
|
+
return [match[1].trim()];
|
|
169
|
+
}
|
|
170
|
+
else {
|
|
171
|
+
throw `$Join is to be defined as $Join(arrays), ${value} is invalid`;
|
|
172
|
+
}
|
|
173
|
+
},
|
|
174
|
+
'$Uppercase': (value) => {
|
|
175
|
+
const match = value.match(types_1.uppercaseRegex);
|
|
176
|
+
if (match && match[1] && !match[2]) {
|
|
177
|
+
extractFunctionAndArgs(match[1].trim());
|
|
178
|
+
return [match[1].trim()];
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
throw `$Uppercase is to be defined as $Lowercase(string), ${value} is invalid`;
|
|
182
|
+
}
|
|
183
|
+
},
|
|
184
|
+
'$Lowercase': (value) => {
|
|
185
|
+
const match = value.match(types_1.lowercaseRegex);
|
|
186
|
+
if (match && match[1] && !match[2]) {
|
|
187
|
+
extractFunctionAndArgs(match[1].trim());
|
|
188
|
+
return [match[1].trim()];
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
throw `$Lowercase is to be defined as $Lowercase(string), ${value} is invalid`;
|
|
192
|
+
}
|
|
193
|
+
},
|
|
194
|
+
'$Dateformat': (value) => {
|
|
195
|
+
const match = value.match(types_1.dateFormatRegex);
|
|
196
|
+
if (match && match[1] && match[3]) {
|
|
197
|
+
extractFunctionAndArgs(match[1].trim());
|
|
198
|
+
extractFunctionAndArgs(match[3].trim());
|
|
199
|
+
return [match[1].trim(), match[3].trim()];
|
|
200
|
+
}
|
|
201
|
+
else {
|
|
202
|
+
throw `$Dateformat is to be defined as $Dateformat(dateString, format), ${value} is invalid`;
|
|
203
|
+
}
|
|
204
|
+
},
|
|
205
|
+
'$Replace': (value) => {
|
|
206
|
+
const match = value.match(types_1.replaceRegex);
|
|
207
|
+
if (match) {
|
|
208
|
+
const [_, strPlaceholder, , searchStr, , replaceStr] = match;
|
|
209
|
+
extractFunctionAndArgs(strPlaceholder.trim());
|
|
210
|
+
extractFunctionAndArgs(searchStr.trim());
|
|
211
|
+
extractFunctionAndArgs(replaceStr.trim());
|
|
212
|
+
return [strPlaceholder.trim(), searchStr.trim(), replaceStr.trim()];
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
throw `$Replace is to be defined as $Replace(string, search, replace), ${value} is invalid`;
|
|
216
|
+
}
|
|
217
|
+
},
|
|
218
|
+
'$Filter': (value) => {
|
|
219
|
+
const match = value.match(types_1.filterRegex);
|
|
220
|
+
if (match && match[1] && match[2] && match[3] && !match[4]) {
|
|
221
|
+
if (!productsBuilder_types_1.ValidOperators.includes(match[2].trim())) {
|
|
222
|
+
throw `invalid operator ${match[2].trim()}`;
|
|
223
|
+
}
|
|
224
|
+
extractFunctionAndArgs(match[1].trim());
|
|
225
|
+
extractFunctionAndArgs(match[3].trim());
|
|
226
|
+
// await validateArray(array);
|
|
227
|
+
// await validateNumber(value);
|
|
228
|
+
return [match[1].trim(), match[2].trim(), match[3].trim()];
|
|
229
|
+
}
|
|
230
|
+
else {
|
|
231
|
+
throw `$Filter is to be defined as $Filter(array, "operator", value), ${value} is invalid`;
|
|
232
|
+
}
|
|
233
|
+
},
|
|
234
|
+
'$Find': (value) => {
|
|
235
|
+
const match = value.match(types_1.findRegex);
|
|
236
|
+
if (match && match[1] && match[2] && match[3] && !match[4]) {
|
|
237
|
+
if (!productsBuilder_types_1.ValidOperators.includes(match[2].trim())) {
|
|
238
|
+
throw `invalid operator ${match[2].trim()}`;
|
|
239
|
+
}
|
|
240
|
+
extractFunctionAndArgs(match[1].trim());
|
|
241
|
+
extractFunctionAndArgs(match[3].trim());
|
|
242
|
+
// await validateArray(array);
|
|
243
|
+
// await validateNumber(value);
|
|
244
|
+
return [match[1].trim(), match[2].trim(), match[3].trim()];
|
|
245
|
+
}
|
|
246
|
+
else {
|
|
247
|
+
throw `$Find is to be defined as $Find(array, "operator", value), ${value} is invalid`;
|
|
248
|
+
}
|
|
249
|
+
},
|
|
250
|
+
// Add more extractors here...
|
|
251
|
+
};
|
|
252
|
+
function extractFunctionAndArgs(value) {
|
|
253
|
+
if (typeof value === 'string') {
|
|
254
|
+
const functionName = Object.keys(extractors).find((name) => value.startsWith(name));
|
|
255
|
+
if (!functionName)
|
|
256
|
+
return null;
|
|
257
|
+
const args = extractors[functionName](value);
|
|
258
|
+
return args ? { functionName, args } : null;
|
|
259
|
+
}
|
|
260
|
+
else {
|
|
261
|
+
return null;
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
function validateAWSSQSQueueUrl(envs, queueUrls) {
|
|
265
|
+
const hasSQS = envs.filter((env) => env.type === productsBuilder_types_1.MessageBrokerTypes.AWS_SQS);
|
|
266
|
+
if (hasSQS.length) {
|
|
267
|
+
if (!queueUrls || !queueUrls.length) {
|
|
268
|
+
throw new Error(`One or more envs require queueUrls setup`);
|
|
269
|
+
}
|
|
270
|
+
// Find envs in hasSQS that are missing from data.queueUrls
|
|
271
|
+
const missingEnvs = hasSQS
|
|
272
|
+
.filter((env) => !queueUrls.some((queueUrl) => queueUrl.env_slug === env.slug))
|
|
273
|
+
.map((env) => env.slug);
|
|
274
|
+
if (missingEnvs.length) {
|
|
275
|
+
throw new Error(`Missing queueUrls for aws_sqs envs: ${missingEnvs.join(', ')}`);
|
|
276
|
+
}
|
|
277
|
+
queueUrls.forEach((queueUrl) => {
|
|
278
|
+
if (!this.fetchEnv(queueUrl.env_slug)) {
|
|
279
|
+
throw new Error(`queueUrl slug "${queueUrl.env_slug}" does not exist`);
|
|
280
|
+
}
|
|
281
|
+
});
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
function convertInputToValueMap(input) {
|
|
285
|
+
const result = {};
|
|
286
|
+
for (const key in input) {
|
|
287
|
+
if (Object.prototype.hasOwnProperty.call(input, key)) {
|
|
288
|
+
// @ts-ignore
|
|
289
|
+
result[key] = "$Value";
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
return result;
|
|
293
|
+
}
|
|
294
|
+
//# sourceMappingURL=functions.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"functions.utils.js","sourceRoot":"","sources":["../../../../src/products/services/utils/functions.utils.ts"],"names":[],"mappings":";;;;;;AAoCA,kCAaC;AA6MD,wDAYC;AAED,wDAyBC;AAED,wDASC;AAhTD,uFAA8D;AAC9D,0CAA2N;AAC3N,gDAAmD;AACnD,gFAA+H;AAExH,MAAM,eAAe,GAAG,CAAC,QAAgB,EAAE,OAA4B,EAAE,EAAE;IAChF,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAA,6BAAqB,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAE5D,uCAAuC;QACvC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAE1C,OAAO,UAAU,CAAC;IACpB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAAC;QAC3D,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAZW,QAAA,eAAe,mBAY1B;AAEK,MAAM,qBAAqB,GAAG,CAAC,QAAgB,EAAE,OAA4B,EAAE,EAAE;IACtF,MAAM,aAAa,GAAG,2CAA2C,CAAC;IAElE,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,EAAE;QAChG,IAAI,WAAW,EAAE,CAAC;YAChB,wCAAwC;YACxC,IAAI,CAAC,CAAC,WAAW,IAAI,OAAO,CAAC,EAAE,CAAC;gBAC9B,MAAM,IAAI,KAAK,CAAC,gBAAgB,WAAW,EAAE,CAAC,CAAC;YACjD,CAAC;YACD,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,oEAAoE;QACnH,CAAC;QACD,OAAO,KAAK,CAAC,CAAC,uCAAuC;IACvD,CAAC,CAAC,CAAC;IAEH,OAAO,cAAc,CAAC;AACxB,CAAC,CAAC;AAfW,QAAA,qBAAqB,yBAehC;AAEK,KAAK,UAAU,WAAW,CAAC,GAAW,EAAE,MAAmB,EAAE,IAAa;IAC/E,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,mBAAW,CAAC,GAAG;YAClB,OAAO,MAAM,IAAA,yBAAc,EAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC3C,KAAK,mBAAW,CAAC,KAAK;YACpB,OAAO,MAAM,IAAA,yBAAc,EAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QACnD,KAAK,mBAAW,CAAC,IAAI;YACnB,OAAO,MAAM,IAAA,yBAAc,EAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAClD,KAAK,mBAAW,CAAC,MAAM;YACrB,OAAO,MAAM,IAAA,yBAAc,EAAC,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC9C,KAAK,mBAAW,CAAC,GAAG;YAClB,OAAO,MAAM,IAAA,yBAAc,EAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IACnD,CAAC;AACH,CAAC;AAEM,MAAM,oBAAoB,GAAG,KAAK,EAAE,aAA+B,EAAE,OAA4B,EAAE,EAAE;IAC1G;;;;;;;;;OASG;AACL,CAAC,CAAC;AAXW,QAAA,oBAAoB,wBAW/B;AAEF,MAAM,aAAa,GAAG;IACpB,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY;IACtD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY;IACtD,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO;CAC9C,CAAC;AAEK,MAAM,kCAAkC,GAAG,CAAC,KAAa,EAAU,EAAE;IAC1E,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,QAAQ,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AACnG,CAAC,CAAA;AAFY,QAAA,kCAAkC,sCAE9C;AAID,MAAM,UAAU,GAA8B;IAC5C,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;QAChB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,gBAAQ,CAAC,CAAC;QACpC,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YACnC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAEvE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAA;YAEpD,OAAO,MAAM,CAAC;QAChB,CAAC;aAAM,CAAC;YACN,MAAM,8CAA8C,KAAK,aAAa,CAAA;QACxE,CAAC;IACH,CAAC;IACD,YAAY,EAAE,CAAC,KAAK,EAAE,EAAE;QACtB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,sBAAc,CAAC,CAAC;QAC1C,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YACnC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAEvE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAA;YAEpD,OAAO,MAAM,CAAC;QAChB,CAAC;aAAM,CAAC;YACN,MAAM,0DAA0D,KAAK,aAAa,CAAA;QACpF,CAAC;IACH,CAAC;IACD,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;QACnB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,mBAAW,CAAC,CAAC;QAEvC,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/C,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACxC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;YACvC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;QAC3C,CAAC;aAAM,CAAC;YACN,MAAM,gEAAgE,KAAK,aAAa,CAAA;QAC1F,CAAC;IACH,CAAC;IACD,YAAY,EAAE,CAAC,KAAK,EAAE,EAAE;QACtB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,sBAAc,CAAC,CAAC;QAC1C,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3D,8BAA8B;YAC9B,+BAA+B;YAE/B,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;YACvC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;YACvC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;YAEvC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;QAC5D,CAAC;aAAM,CAAC;YACN,MAAM,kEAAkE,KAAK,aAAa,CAAA;QAC5F,CAAC;IACH,CAAC;IACD,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;QACjB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,iBAAS,CAAC,CAAC;QACrC,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YACnC,8BAA8B;YAC9B,+BAA+B;YAE/B,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;YAEvC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;QAC1B,CAAC;aAAM,CAAC;YACN,MAAM,4CAA4C,KAAK,aAAa,CAAA;QACtE,CAAC;IACH,CAAC;IACD,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;QAClB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,kBAAU,CAAC,CAAC;QACtC,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/C,8BAA8B;YAC9B,+BAA+B;YAC/B,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;YAEvC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;QAC3C,CAAC;aAAM,CAAC;YACN,MAAM,yDAAyD,KAAK,aAAa,CAAA;QACnF,CAAC;IACH,CAAC;IACD,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;QACjB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,iBAAS,CAAC,CAAC;QACrC,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/C,8BAA8B;YAC9B,+BAA+B;YAC/B,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;YACvC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;YAEvC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;QAC3C,CAAC;aAAM,CAAC;YACN,MAAM,kDAAkD,KAAK,aAAa,CAAA;QAC5E,CAAC;IACH,CAAC;IACD,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;QACjB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,iBAAS,CAAC,CAAC;QACrC,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YACnC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;YACvC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;QAC1B,CAAC;aAAM,CAAC;YACN,MAAM,4CAA4C,KAAK,aAAa,CAAA;QACtE,CAAC;IACH,CAAC;IACD,YAAY,EAAE,CAAC,KAAK,EAAE,EAAE;QACtB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,sBAAc,CAAC,CAAC;QAC1C,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YACnC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;YACvC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;QAC1B,CAAC;aAAM,CAAC;YACN,MAAM,sDAAsD,KAAK,aAAa,CAAA;QAChF,CAAC;IACH,CAAC;IACD,YAAY,EAAE,CAAC,KAAK,EAAE,EAAE;QACtB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,sBAAc,CAAC,CAAC;QAC1C,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YACnC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;YACvC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;QAC1B,CAAC;aAAM,CAAC;YACN,MAAM,sDAAsD,KAAK,aAAa,CAAA;QAChF,CAAC;IACH,CAAC;IACD,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE;QACvB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,uBAAe,CAAC,CAAC;QAC3C,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YAClC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;YACvC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;YACvC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5C,CAAC;aAAM,CAAC;YACN,MAAM,oEAAoE,KAAK,aAAa,CAAA;QAC9F,CAAC;IACH,CAAC;IACD,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE;QACpB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,oBAAY,CAAC,CAAC;QAExC,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,CAAC,CAAC,EAAE,cAAc,EAAE,AAAD,EAAG,SAAS,EAAE,AAAD,EAAG,UAAU,CAAC,GAAG,KAAK,CAAC;YAE7D,sBAAsB,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAA;YAC7C,sBAAsB,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAA;YACxC,sBAAsB,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAA;YACzC,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE,SAAS,CAAC,IAAI,EAAE,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,CAAA;QACrE,CAAC;aAAM,CAAC;YACN,MAAM,mEAAmE,KAAK,aAAa,CAAA;QAC7F,CAAC;IACH,CAAC;IACD,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;QACnB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,mBAAW,CAAC,CAAC;QACvC,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3D,IAAI,CAAC,sCAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;gBAC9C,MAAM,oBAAoB,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAA;YAC7C,CAAC;YAED,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;YACvC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;YAEvC,8BAA8B;YAC9B,+BAA+B;YAE/B,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;QAC5D,CAAC;aAAM,CAAC;YACN,MAAM,kEAAkE,KAAK,aAAa,CAAA;QAC5F,CAAC;IACH,CAAC;IACD,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;QACjB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,iBAAS,CAAC,CAAC;QACrC,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YAE3D,IAAI,CAAC,sCAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;gBAC9C,MAAM,oBAAoB,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAA;YAC7C,CAAC;YACD,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;YACvC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;YACvC,8BAA8B;YAC9B,+BAA+B;YAE/B,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;QAC5D,CAAC;aAAM,CAAC;YACN,MAAM,8DAA8D,KAAK,aAAa,CAAA;QACxF,CAAC;IACH,CAAC;IACD,8BAA8B;CAC/B,CAAC;AAEF,SAAgB,sBAAsB,CACpC,KAAa;IAEb,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QACpF,IAAI,CAAC,YAAY;YAAE,OAAO,IAAI,CAAC;QAE/B,MAAM,IAAI,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9C,CAAC;SAAM,CAAC;QACN,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED,SAAgB,sBAAsB,CACpC,IAAS,EAAE,SAAgB;IAE3B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,0CAAkB,CAAC,OAAO,CAAC,CAAC;IAElF,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC9D,CAAC;QAED,2DAA2D;QAC3D,MAAM,WAAW,GAAG,MAAM;aACvB,MAAM,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC;aACnF,GAAG,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAE/B,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,uCAAuC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnF,CAAC;QAED,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;YAC7B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACtC,MAAM,IAAI,KAAK,CAAC,kBAAkB,QAAQ,CAAC,QAAQ,kBAAkB,CAAC,CAAC;YACzE,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,SAAgB,sBAAsB,CAAC,KAA8B;IACnE,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;YACrD,aAAa;YACb,MAAM,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;QACzB,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { IFunctionInput } from '../../../types/productsBuilder.types';
|
|
2
|
+
export declare const validateObjectKeys: (allowedKeys: Array<string>, obj: Record<string, any>) => void;
|
|
3
|
+
export declare const validateFunctionInputKeys: (input: Array<IFunctionInput>, obj: Record<string, any>) => void;
|
|
4
|
+
export declare const deepEqual: (obj1: any, obj2: any) => boolean;
|
|
5
|
+
export declare function findFaultyKeys(keys: string[], obj: any): {
|
|
6
|
+
valid: boolean;
|
|
7
|
+
faultyKeys?: string[];
|
|
8
|
+
value: any;
|
|
9
|
+
};
|
|
10
|
+
export declare function traverseObject(obj: Record<string, any>): {
|
|
11
|
+
key: string;
|
|
12
|
+
value: any;
|
|
13
|
+
}[];
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.deepEqual = exports.validateFunctionInputKeys = exports.validateObjectKeys = void 0;
|
|
4
|
+
exports.findFaultyKeys = findFaultyKeys;
|
|
5
|
+
exports.traverseObject = traverseObject;
|
|
6
|
+
const validateObjectKeys = (allowedKeys, obj) => {
|
|
7
|
+
const objKeys = Object.keys(obj);
|
|
8
|
+
const missingKeys = allowedKeys.filter((key) => !objKeys.includes(key));
|
|
9
|
+
const extraKeys = objKeys.filter((key) => !allowedKeys.includes(key));
|
|
10
|
+
if (missingKeys.length > 0 || extraKeys.length > 0) {
|
|
11
|
+
throw new Error(`Invalid keys. Missing keys: ${missingKeys.join(', ')}. Extra keys: ${extraKeys.join(', ')}`);
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
exports.validateObjectKeys = validateObjectKeys;
|
|
15
|
+
const validateFunctionInputKeys = (input, obj) => {
|
|
16
|
+
const objKeys = Object.keys(obj);
|
|
17
|
+
const inputKeys = input.map((el) => el.key);
|
|
18
|
+
const missingKeys = inputKeys.filter((key) => !objKeys.includes(key));
|
|
19
|
+
const extraKeys = objKeys.filter((key) => !inputKeys.includes(key));
|
|
20
|
+
if (missingKeys.length > 0 || extraKeys.length > 0) {
|
|
21
|
+
throw new Error(`Invalid keys. Missing keys: ${missingKeys.join(', ')}. Extra keys: ${extraKeys.join(', ')}`);
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
exports.validateFunctionInputKeys = validateFunctionInputKeys;
|
|
25
|
+
const deepEqual = (obj1, obj2) => {
|
|
26
|
+
// Check if both objects are of the same type
|
|
27
|
+
if (typeof obj1 !== typeof obj2) {
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
// If both objects are arrays
|
|
31
|
+
if (Array.isArray(obj1) && Array.isArray(obj2)) {
|
|
32
|
+
if (obj1.length !== obj2.length) {
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
for (let i = 0; i < obj1.length; i++) {
|
|
36
|
+
if (!(0, exports.deepEqual)(obj1[i], obj2[i])) {
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
// If both objects are objects
|
|
43
|
+
if (typeof obj1 === 'object' && typeof obj2 === 'object') {
|
|
44
|
+
const keys1 = Object.keys(obj1);
|
|
45
|
+
const keys2 = Object.keys(obj2);
|
|
46
|
+
if (keys1.length !== keys2.length) {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
for (const key of keys1) {
|
|
50
|
+
if (!obj2.hasOwnProperty(key) || !(0, exports.deepEqual)(obj1[key], obj2[key])) {
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
56
|
+
// For primitive types, compare directly
|
|
57
|
+
return obj1 === obj2;
|
|
58
|
+
};
|
|
59
|
+
exports.deepEqual = deepEqual;
|
|
60
|
+
function findFaultyKeys(keys, obj) {
|
|
61
|
+
let current = obj;
|
|
62
|
+
const faultyKeys = [];
|
|
63
|
+
for (const key of keys) {
|
|
64
|
+
if (current && typeof current === "object" && key in current) {
|
|
65
|
+
current = current[key]; // Go deeper
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
faultyKeys.push(key);
|
|
69
|
+
return { valid: false, faultyKeys, value: undefined };
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return { valid: true, value: current };
|
|
73
|
+
}
|
|
74
|
+
function traverseObject(obj) {
|
|
75
|
+
const keyValues = [];
|
|
76
|
+
for (const key in obj) {
|
|
77
|
+
if (obj.hasOwnProperty(key)) {
|
|
78
|
+
const value = obj[key];
|
|
79
|
+
if (typeof value === "object" && value !== null) {
|
|
80
|
+
traverseObject(value); // Recursive call for nested objects
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
keyValues.push({ key, value });
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return keyValues;
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=objects.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"objects.utils.js","sourceRoot":"","sources":["../../../../src/products/services/utils/objects.utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { IParsedSample } from "../../../types/inputs.types";
|
|
2
|
+
export declare const extractStages: (input: string) => Array<string | number>;
|
|
3
|
+
export declare const isNumeric: (value: string) => boolean;
|
|
4
|
+
export declare const validateAndLocateTag: (input: string) => number;
|
|
5
|
+
export declare const extractConditionalParts: (check: string) => RegExpMatchArray;
|
|
6
|
+
export declare const checkLengthAndSizeMatches: (value: string) => {
|
|
7
|
+
matchLength: RegExpMatchArray;
|
|
8
|
+
matchSize: RegExpMatchArray;
|
|
9
|
+
};
|
|
10
|
+
export declare const startsWithAny: (str: string, prefixes: string[]) => boolean;
|
|
11
|
+
export declare const extractPlaceholders: (str: string, parent_key?: string) => Array<IParsedSample>;
|
|
12
|
+
export declare const extractOriginAndTag: (input: string) => string;
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.extractOriginAndTag = exports.extractPlaceholders = exports.startsWithAny = exports.checkLengthAndSizeMatches = exports.extractConditionalParts = exports.validateAndLocateTag = exports.isNumeric = exports.extractStages = void 0;
|
|
4
|
+
const enums_1 = require("../../../types/enums");
|
|
5
|
+
const extractStages = (input) => {
|
|
6
|
+
const regex = /\{(.*?)\}|\[(\d+)\]/g;
|
|
7
|
+
const result = [];
|
|
8
|
+
let match;
|
|
9
|
+
while ((match = regex.exec(input)) !== null) {
|
|
10
|
+
if (match[1] !== undefined) {
|
|
11
|
+
// Matched {string}
|
|
12
|
+
result.push(match[1]);
|
|
13
|
+
}
|
|
14
|
+
else if (match[2] !== undefined) {
|
|
15
|
+
// Matched [number]
|
|
16
|
+
result.push(Number(match[2]));
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
21
|
+
exports.extractStages = extractStages;
|
|
22
|
+
const isNumeric = (value) => {
|
|
23
|
+
return !isNaN(Number(value)) && !isNaN(parseFloat(value));
|
|
24
|
+
};
|
|
25
|
+
exports.isNumeric = isNumeric;
|
|
26
|
+
const validateAndLocateTag = (input) => {
|
|
27
|
+
// Regex to match {tags} and [value]
|
|
28
|
+
const tagPattern = /\{([^{}]+)\}/g; // Matches {tags}
|
|
29
|
+
const ductapeOperators = ["$Concat", "$Pick", "$Join", "$Filter", "$Find"];
|
|
30
|
+
const operatorRegex = ductapeOperators.map(op => `\\${op}\\(`).join("|"); // Escape `$`
|
|
31
|
+
const bracketPattern = new RegExp(`(?<!(${operatorRegex}))\\[([^\\[\\]]+)\\]`, "g");
|
|
32
|
+
// Extract all tags and their positions
|
|
33
|
+
const tags = [];
|
|
34
|
+
let match;
|
|
35
|
+
while ((match = tagPattern.exec(input)) !== null) {
|
|
36
|
+
tags.push({ value: match[1], index: match.index });
|
|
37
|
+
}
|
|
38
|
+
// Extract all [value] occurrences
|
|
39
|
+
const brackets = [];
|
|
40
|
+
while ((match = bracketPattern.exec(input)) !== null) {
|
|
41
|
+
brackets.push({ value: match[1], index: match.index });
|
|
42
|
+
}
|
|
43
|
+
// Validate conditions
|
|
44
|
+
if (brackets.length === 0) {
|
|
45
|
+
return;
|
|
46
|
+
//throw new Error("No [value] found in the string.");
|
|
47
|
+
}
|
|
48
|
+
if (brackets.length > 1) {
|
|
49
|
+
throw new Error(`More than one indexing value found in string ${input}.`);
|
|
50
|
+
}
|
|
51
|
+
const bracket = brackets[0]; // Only one [value] exists at this point
|
|
52
|
+
if (bracket.value !== "$Index") {
|
|
53
|
+
throw new Error(`Invalid indexing [value] content: ${bracket.value}. Only "$Index" is allowed in ${input}`);
|
|
54
|
+
}
|
|
55
|
+
// Ensure [value] is not before the first three {tags}
|
|
56
|
+
if (tags.length < 3) {
|
|
57
|
+
throw new Error(`The string must contain at least three {tags}. The "$Sequence{sequence_tag}{event_tag}{selector}" are expected before the [$Index] is defined ${input}`);
|
|
58
|
+
}
|
|
59
|
+
if (bracket.index < tags[2].index) {
|
|
60
|
+
throw new Error("[value] cannot be positioned before the first three {tags}.");
|
|
61
|
+
}
|
|
62
|
+
// Find the tag directly preceding [value]
|
|
63
|
+
let precedingTag = null;
|
|
64
|
+
for (let i = tags.length - 1; i >= 0; i--) {
|
|
65
|
+
if (tags[i].index < bracket.index) {
|
|
66
|
+
precedingTag = { value: tags[i].value, index: i };
|
|
67
|
+
break;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
if (!precedingTag) {
|
|
71
|
+
throw new Error("No tag found before [value].");
|
|
72
|
+
}
|
|
73
|
+
// Return the index of the preceding tag
|
|
74
|
+
return precedingTag.index;
|
|
75
|
+
};
|
|
76
|
+
exports.validateAndLocateTag = validateAndLocateTag;
|
|
77
|
+
const extractConditionalParts = (check) => {
|
|
78
|
+
return check.match(/^(\S+)\s*(>|<|>=|<=|==|!==)\s*(\S+)$/);
|
|
79
|
+
};
|
|
80
|
+
exports.extractConditionalParts = extractConditionalParts;
|
|
81
|
+
const checkLengthAndSizeMatches = (value) => {
|
|
82
|
+
const matchLength = value.match(/\$Length\{([^{}]*(?:\{[^{}]*\})*[^{}]*)\}/);
|
|
83
|
+
const matchSize = value.match(/\$Size\{([^{}]*(?:\{[^{}]*\})*[^{}]*)\}/);
|
|
84
|
+
return { matchLength, matchSize };
|
|
85
|
+
};
|
|
86
|
+
exports.checkLengthAndSizeMatches = checkLengthAndSizeMatches;
|
|
87
|
+
function hasSpacesOrSpecialCharsExceptUnderscore(str) {
|
|
88
|
+
// Allow only one colon (:) anywhere in the string
|
|
89
|
+
const colonCount = (str.match(/:/g) || []).length;
|
|
90
|
+
if (colonCount > 4)
|
|
91
|
+
return true;
|
|
92
|
+
// Check for other disallowed characters
|
|
93
|
+
const regex = /[\s]|[^a-zA-Z0-9_:]/;
|
|
94
|
+
return regex.test(str);
|
|
95
|
+
}
|
|
96
|
+
const isPositiveIntegerOrZero = (str) => {
|
|
97
|
+
return /^(0|[1-9]\d*)$/.test(str);
|
|
98
|
+
};
|
|
99
|
+
const startsWithAny = (str, prefixes) => {
|
|
100
|
+
return prefixes.some(prefix => str.startsWith(prefix));
|
|
101
|
+
};
|
|
102
|
+
exports.startsWithAny = startsWithAny;
|
|
103
|
+
const extractPlaceholders = (str, parent_key = "") => {
|
|
104
|
+
const regex = /{{(.*?)}}/g;
|
|
105
|
+
const placeholders = [];
|
|
106
|
+
const seenKeys = new Set(); // Track duplicate keys
|
|
107
|
+
let match;
|
|
108
|
+
while ((match = regex.exec(str)) !== null) {
|
|
109
|
+
if (hasSpacesOrSpecialCharsExceptUnderscore(match[1])) {
|
|
110
|
+
throw new Error(`Placeholder "${match[1]}" is not expected to contain special characters except "_" and at most four ":"`);
|
|
111
|
+
}
|
|
112
|
+
let level = parent_key ? 1 : 0;
|
|
113
|
+
// Split key by ":" to extract key and type
|
|
114
|
+
const split = match[1].split(":");
|
|
115
|
+
const key = split[0];
|
|
116
|
+
// Check for duplicate keys
|
|
117
|
+
if (seenKeys.has(key)) {
|
|
118
|
+
console.log(str);
|
|
119
|
+
throw new Error(`Duplicate placeholder key "${key}" found.`);
|
|
120
|
+
}
|
|
121
|
+
seenKeys.add(key);
|
|
122
|
+
// Validate type or default to DataTypes.STRING
|
|
123
|
+
const type = split[1] && Object.values(enums_1.DataTypes).includes(split[1])
|
|
124
|
+
? split[1]
|
|
125
|
+
: enums_1.DataTypes.STRING;
|
|
126
|
+
let minLength = 1;
|
|
127
|
+
let maxLength = 0;
|
|
128
|
+
if (split[2]) {
|
|
129
|
+
if (!isPositiveIntegerOrZero(split[2])) {
|
|
130
|
+
throw new Error(`invalid minlength ${split[2]}, expected to be a positive integer`);
|
|
131
|
+
}
|
|
132
|
+
minLength = Number(split[2]);
|
|
133
|
+
}
|
|
134
|
+
if (split[3]) {
|
|
135
|
+
if (!isPositiveIntegerOrZero(split[3])) {
|
|
136
|
+
throw new Error(`invalid maxlength ${split[3]}, expected to be a positive integer`);
|
|
137
|
+
}
|
|
138
|
+
maxLength = Number(split[3]);
|
|
139
|
+
}
|
|
140
|
+
let unique = false;
|
|
141
|
+
if (split[4]) {
|
|
142
|
+
if (split[4] !== 'true' && split[4] !== 'false') {
|
|
143
|
+
throw new Error(`invalid unique flag ${split[4]} in ${match[1]} expected to be true or false`);
|
|
144
|
+
}
|
|
145
|
+
if (split[4] === 'true')
|
|
146
|
+
unique = true;
|
|
147
|
+
}
|
|
148
|
+
placeholders.push({
|
|
149
|
+
parent_key,
|
|
150
|
+
key,
|
|
151
|
+
category: enums_1.Categories.INPUT,
|
|
152
|
+
required: true,
|
|
153
|
+
minLength,
|
|
154
|
+
maxLength,
|
|
155
|
+
type,
|
|
156
|
+
level,
|
|
157
|
+
unique,
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
return placeholders;
|
|
161
|
+
};
|
|
162
|
+
exports.extractPlaceholders = extractPlaceholders;
|
|
163
|
+
const extractOriginAndTag = (input) => {
|
|
164
|
+
const [origin, tag] = input.split(":");
|
|
165
|
+
return `${origin}:${tag}`;
|
|
166
|
+
};
|
|
167
|
+
exports.extractOriginAndTag = extractOriginAndTag;
|
|
168
|
+
//# sourceMappingURL=string.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"string.utils.js","sourceRoot":"","sources":["../../../../src/products/services/utils/string.utils.ts"],"names":[],"mappings":"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"}
|