Initial
This commit is contained in:
11
resources/app/node_modules/@smithy/util-endpoints/dist-es/utils/callFunction.js
generated
vendored
Normal file
11
resources/app/node_modules/@smithy/util-endpoints/dist-es/utils/callFunction.js
generated
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
import { customEndpointFunctions } from "./customEndpointFunctions";
|
||||
import { endpointFunctions } from "./endpointFunctions";
|
||||
import { evaluateExpression } from "./evaluateExpression";
|
||||
export const callFunction = ({ fn, argv }, options) => {
|
||||
const evaluatedArgs = argv.map((arg) => ["boolean", "number"].includes(typeof arg) ? arg : evaluateExpression(arg, "arg", options));
|
||||
const fnSegments = fn.split(".");
|
||||
if (fnSegments[0] in customEndpointFunctions && fnSegments[1] != null) {
|
||||
return customEndpointFunctions[fnSegments[0]][fnSegments[1]](...evaluatedArgs);
|
||||
}
|
||||
return endpointFunctions[fn](...evaluatedArgs);
|
||||
};
|
||||
1
resources/app/node_modules/@smithy/util-endpoints/dist-es/utils/customEndpointFunctions.js
generated
vendored
Normal file
1
resources/app/node_modules/@smithy/util-endpoints/dist-es/utils/customEndpointFunctions.js
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
export const customEndpointFunctions = {};
|
||||
12
resources/app/node_modules/@smithy/util-endpoints/dist-es/utils/endpointFunctions.js
generated
vendored
Normal file
12
resources/app/node_modules/@smithy/util-endpoints/dist-es/utils/endpointFunctions.js
generated
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
import { booleanEquals, getAttr, isSet, isValidHostLabel, not, parseURL, stringEquals, substring, uriEncode, } from "../lib";
|
||||
export const endpointFunctions = {
|
||||
booleanEquals,
|
||||
getAttr,
|
||||
isSet,
|
||||
isValidHostLabel,
|
||||
not,
|
||||
parseURL,
|
||||
stringEquals,
|
||||
substring,
|
||||
uriEncode,
|
||||
};
|
||||
14
resources/app/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateCondition.js
generated
vendored
Normal file
14
resources/app/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateCondition.js
generated
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
import { debugId, toDebugString } from "../debug";
|
||||
import { EndpointError } from "../types";
|
||||
import { callFunction } from "./callFunction";
|
||||
export const evaluateCondition = ({ assign, ...fnArgs }, options) => {
|
||||
if (assign && assign in options.referenceRecord) {
|
||||
throw new EndpointError(`'${assign}' is already defined in Reference Record.`);
|
||||
}
|
||||
const value = callFunction(fnArgs, options);
|
||||
options.logger?.debug?.(`${debugId} evaluateCondition: ${toDebugString(fnArgs)} = ${toDebugString(value)}`);
|
||||
return {
|
||||
result: value === "" ? true : !!value,
|
||||
...(assign != null && { toAssign: { name: assign, value } }),
|
||||
};
|
||||
};
|
||||
22
resources/app/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateConditions.js
generated
vendored
Normal file
22
resources/app/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateConditions.js
generated
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
import { debugId, toDebugString } from "../debug";
|
||||
import { evaluateCondition } from "./evaluateCondition";
|
||||
export const evaluateConditions = (conditions = [], options) => {
|
||||
const conditionsReferenceRecord = {};
|
||||
for (const condition of conditions) {
|
||||
const { result, toAssign } = evaluateCondition(condition, {
|
||||
...options,
|
||||
referenceRecord: {
|
||||
...options.referenceRecord,
|
||||
...conditionsReferenceRecord,
|
||||
},
|
||||
});
|
||||
if (!result) {
|
||||
return { result };
|
||||
}
|
||||
if (toAssign) {
|
||||
conditionsReferenceRecord[toAssign.name] = toAssign.value;
|
||||
options.logger?.debug?.(`${debugId} assign: ${toAssign.name} := ${toDebugString(toAssign.value)}`);
|
||||
}
|
||||
}
|
||||
return { result: true, referenceRecord: conditionsReferenceRecord };
|
||||
};
|
||||
27
resources/app/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateEndpointRule.js
generated
vendored
Normal file
27
resources/app/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateEndpointRule.js
generated
vendored
Normal file
@@ -0,0 +1,27 @@
|
||||
import { debugId, toDebugString } from "../debug";
|
||||
import { evaluateConditions } from "./evaluateConditions";
|
||||
import { getEndpointHeaders } from "./getEndpointHeaders";
|
||||
import { getEndpointProperties } from "./getEndpointProperties";
|
||||
import { getEndpointUrl } from "./getEndpointUrl";
|
||||
export const evaluateEndpointRule = (endpointRule, options) => {
|
||||
const { conditions, endpoint } = endpointRule;
|
||||
const { result, referenceRecord } = evaluateConditions(conditions, options);
|
||||
if (!result) {
|
||||
return;
|
||||
}
|
||||
const endpointRuleOptions = {
|
||||
...options,
|
||||
referenceRecord: { ...options.referenceRecord, ...referenceRecord },
|
||||
};
|
||||
const { url, properties, headers } = endpoint;
|
||||
options.logger?.debug?.(`${debugId} Resolving endpoint from template: ${toDebugString(endpoint)}`);
|
||||
return {
|
||||
...(headers != undefined && {
|
||||
headers: getEndpointHeaders(headers, endpointRuleOptions),
|
||||
}),
|
||||
...(properties != undefined && {
|
||||
properties: getEndpointProperties(properties, endpointRuleOptions),
|
||||
}),
|
||||
url: getEndpointUrl(url, endpointRuleOptions),
|
||||
};
|
||||
};
|
||||
14
resources/app/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateErrorRule.js
generated
vendored
Normal file
14
resources/app/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateErrorRule.js
generated
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
import { EndpointError } from "../types";
|
||||
import { evaluateConditions } from "./evaluateConditions";
|
||||
import { evaluateExpression } from "./evaluateExpression";
|
||||
export const evaluateErrorRule = (errorRule, options) => {
|
||||
const { conditions, error } = errorRule;
|
||||
const { result, referenceRecord } = evaluateConditions(conditions, options);
|
||||
if (!result) {
|
||||
return;
|
||||
}
|
||||
throw new EndpointError(evaluateExpression(error, "Error", {
|
||||
...options,
|
||||
referenceRecord: { ...options.referenceRecord, ...referenceRecord },
|
||||
}));
|
||||
};
|
||||
16
resources/app/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateExpression.js
generated
vendored
Normal file
16
resources/app/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateExpression.js
generated
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
import { EndpointError } from "../types";
|
||||
import { callFunction } from "./callFunction";
|
||||
import { evaluateTemplate } from "./evaluateTemplate";
|
||||
import { getReferenceValue } from "./getReferenceValue";
|
||||
export const evaluateExpression = (obj, keyName, options) => {
|
||||
if (typeof obj === "string") {
|
||||
return evaluateTemplate(obj, options);
|
||||
}
|
||||
else if (obj["fn"]) {
|
||||
return callFunction(obj, options);
|
||||
}
|
||||
else if (obj["ref"]) {
|
||||
return getReferenceValue(obj, options);
|
||||
}
|
||||
throw new EndpointError(`'${keyName}': ${String(obj)} is not a string, function or reference.`);
|
||||
};
|
||||
27
resources/app/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateRules.js
generated
vendored
Normal file
27
resources/app/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateRules.js
generated
vendored
Normal file
@@ -0,0 +1,27 @@
|
||||
import { EndpointError } from "../types";
|
||||
import { evaluateEndpointRule } from "./evaluateEndpointRule";
|
||||
import { evaluateErrorRule } from "./evaluateErrorRule";
|
||||
import { evaluateTreeRule } from "./evaluateTreeRule";
|
||||
export const evaluateRules = (rules, options) => {
|
||||
for (const rule of rules) {
|
||||
if (rule.type === "endpoint") {
|
||||
const endpointOrUndefined = evaluateEndpointRule(rule, options);
|
||||
if (endpointOrUndefined) {
|
||||
return endpointOrUndefined;
|
||||
}
|
||||
}
|
||||
else if (rule.type === "error") {
|
||||
evaluateErrorRule(rule, options);
|
||||
}
|
||||
else if (rule.type === "tree") {
|
||||
const endpointOrUndefined = evaluateTreeRule(rule, options);
|
||||
if (endpointOrUndefined) {
|
||||
return endpointOrUndefined;
|
||||
}
|
||||
}
|
||||
else {
|
||||
throw new EndpointError(`Unknown endpoint rule: ${rule}`);
|
||||
}
|
||||
}
|
||||
throw new EndpointError(`Rules evaluation failed`);
|
||||
};
|
||||
36
resources/app/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateTemplate.js
generated
vendored
Normal file
36
resources/app/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateTemplate.js
generated
vendored
Normal file
@@ -0,0 +1,36 @@
|
||||
import { getAttr } from "../lib";
|
||||
export const evaluateTemplate = (template, options) => {
|
||||
const evaluatedTemplateArr = [];
|
||||
const templateContext = {
|
||||
...options.endpointParams,
|
||||
...options.referenceRecord,
|
||||
};
|
||||
let currentIndex = 0;
|
||||
while (currentIndex < template.length) {
|
||||
const openingBraceIndex = template.indexOf("{", currentIndex);
|
||||
if (openingBraceIndex === -1) {
|
||||
evaluatedTemplateArr.push(template.slice(currentIndex));
|
||||
break;
|
||||
}
|
||||
evaluatedTemplateArr.push(template.slice(currentIndex, openingBraceIndex));
|
||||
const closingBraceIndex = template.indexOf("}", openingBraceIndex);
|
||||
if (closingBraceIndex === -1) {
|
||||
evaluatedTemplateArr.push(template.slice(openingBraceIndex));
|
||||
break;
|
||||
}
|
||||
if (template[openingBraceIndex + 1] === "{" && template[closingBraceIndex + 1] === "}") {
|
||||
evaluatedTemplateArr.push(template.slice(openingBraceIndex + 1, closingBraceIndex));
|
||||
currentIndex = closingBraceIndex + 2;
|
||||
}
|
||||
const parameterName = template.substring(openingBraceIndex + 1, closingBraceIndex);
|
||||
if (parameterName.includes("#")) {
|
||||
const [refName, attrName] = parameterName.split("#");
|
||||
evaluatedTemplateArr.push(getAttr(templateContext[refName], attrName));
|
||||
}
|
||||
else {
|
||||
evaluatedTemplateArr.push(templateContext[parameterName]);
|
||||
}
|
||||
currentIndex = closingBraceIndex + 1;
|
||||
}
|
||||
return evaluatedTemplateArr.join("");
|
||||
};
|
||||
13
resources/app/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateTreeRule.js
generated
vendored
Normal file
13
resources/app/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateTreeRule.js
generated
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
import { evaluateConditions } from "./evaluateConditions";
|
||||
import { evaluateRules } from "./evaluateRules";
|
||||
export const evaluateTreeRule = (treeRule, options) => {
|
||||
const { conditions, rules } = treeRule;
|
||||
const { result, referenceRecord } = evaluateConditions(conditions, options);
|
||||
if (!result) {
|
||||
return;
|
||||
}
|
||||
return evaluateRules(rules, {
|
||||
...options,
|
||||
referenceRecord: { ...options.referenceRecord, ...referenceRecord },
|
||||
});
|
||||
};
|
||||
12
resources/app/node_modules/@smithy/util-endpoints/dist-es/utils/getEndpointHeaders.js
generated
vendored
Normal file
12
resources/app/node_modules/@smithy/util-endpoints/dist-es/utils/getEndpointHeaders.js
generated
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
import { EndpointError } from "../types";
|
||||
import { evaluateExpression } from "./evaluateExpression";
|
||||
export const getEndpointHeaders = (headers, options) => Object.entries(headers).reduce((acc, [headerKey, headerVal]) => ({
|
||||
...acc,
|
||||
[headerKey]: headerVal.map((headerValEntry) => {
|
||||
const processedExpr = evaluateExpression(headerValEntry, "Header value entry", options);
|
||||
if (typeof processedExpr !== "string") {
|
||||
throw new EndpointError(`Header '${headerKey}' value '${processedExpr}' is not a string`);
|
||||
}
|
||||
return processedExpr;
|
||||
}),
|
||||
}), {});
|
||||
5
resources/app/node_modules/@smithy/util-endpoints/dist-es/utils/getEndpointProperties.js
generated
vendored
Normal file
5
resources/app/node_modules/@smithy/util-endpoints/dist-es/utils/getEndpointProperties.js
generated
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
import { getEndpointProperty } from "./getEndpointProperty";
|
||||
export const getEndpointProperties = (properties, options) => Object.entries(properties).reduce((acc, [propertyKey, propertyVal]) => ({
|
||||
...acc,
|
||||
[propertyKey]: getEndpointProperty(propertyVal, options),
|
||||
}), {});
|
||||
21
resources/app/node_modules/@smithy/util-endpoints/dist-es/utils/getEndpointProperty.js
generated
vendored
Normal file
21
resources/app/node_modules/@smithy/util-endpoints/dist-es/utils/getEndpointProperty.js
generated
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
import { EndpointError } from "../types";
|
||||
import { evaluateTemplate } from "./evaluateTemplate";
|
||||
import { getEndpointProperties } from "./getEndpointProperties";
|
||||
export const getEndpointProperty = (property, options) => {
|
||||
if (Array.isArray(property)) {
|
||||
return property.map((propertyEntry) => getEndpointProperty(propertyEntry, options));
|
||||
}
|
||||
switch (typeof property) {
|
||||
case "string":
|
||||
return evaluateTemplate(property, options);
|
||||
case "object":
|
||||
if (property === null) {
|
||||
throw new EndpointError(`Unexpected endpoint property: ${property}`);
|
||||
}
|
||||
return getEndpointProperties(property, options);
|
||||
case "boolean":
|
||||
return property;
|
||||
default:
|
||||
throw new EndpointError(`Unexpected endpoint property type: ${typeof property}`);
|
||||
}
|
||||
};
|
||||
15
resources/app/node_modules/@smithy/util-endpoints/dist-es/utils/getEndpointUrl.js
generated
vendored
Normal file
15
resources/app/node_modules/@smithy/util-endpoints/dist-es/utils/getEndpointUrl.js
generated
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
import { EndpointError } from "../types";
|
||||
import { evaluateExpression } from "./evaluateExpression";
|
||||
export const getEndpointUrl = (endpointUrl, options) => {
|
||||
const expression = evaluateExpression(endpointUrl, "Endpoint URL", options);
|
||||
if (typeof expression === "string") {
|
||||
try {
|
||||
return new URL(expression);
|
||||
}
|
||||
catch (error) {
|
||||
console.error(`Failed to construct URL with ${expression}`, error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
throw new EndpointError(`Endpoint URL must be a string, got ${typeof expression}`);
|
||||
};
|
||||
7
resources/app/node_modules/@smithy/util-endpoints/dist-es/utils/getReferenceValue.js
generated
vendored
Normal file
7
resources/app/node_modules/@smithy/util-endpoints/dist-es/utils/getReferenceValue.js
generated
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
export const getReferenceValue = ({ ref }, options) => {
|
||||
const referenceRecord = {
|
||||
...options.endpointParams,
|
||||
...options.referenceRecord,
|
||||
};
|
||||
return referenceRecord[ref];
|
||||
};
|
||||
2
resources/app/node_modules/@smithy/util-endpoints/dist-es/utils/index.js
generated
vendored
Normal file
2
resources/app/node_modules/@smithy/util-endpoints/dist-es/utils/index.js
generated
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
export * from "./customEndpointFunctions";
|
||||
export * from "./evaluateRules";
|
||||
Reference in New Issue
Block a user