Backend half
This commit is contained in:
Generated
Vendored
+227
@@ -0,0 +1,227 @@
|
||||
"use strict";
|
||||
var __defProp = Object.defineProperty;
|
||||
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
||||
var __getOwnPropNames = Object.getOwnPropertyNames;
|
||||
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
||||
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
||||
var __export = (target, all) => {
|
||||
for (var name in all)
|
||||
__defProp(target, name, { get: all[name], enumerable: true });
|
||||
};
|
||||
var __copyProps = (to, from, except, desc) => {
|
||||
if (from && typeof from === "object" || typeof from === "function") {
|
||||
for (let key of __getOwnPropNames(from))
|
||||
if (!__hasOwnProp.call(to, key) && key !== except)
|
||||
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
||||
}
|
||||
return to;
|
||||
};
|
||||
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
||||
|
||||
// src/index.ts
|
||||
var index_exports = {};
|
||||
__export(index_exports, {
|
||||
DEFAULT_UA_APP_ID: () => DEFAULT_UA_APP_ID,
|
||||
getUserAgentMiddlewareOptions: () => getUserAgentMiddlewareOptions,
|
||||
getUserAgentPlugin: () => getUserAgentPlugin,
|
||||
resolveUserAgentConfig: () => resolveUserAgentConfig,
|
||||
userAgentMiddleware: () => userAgentMiddleware
|
||||
});
|
||||
module.exports = __toCommonJS(index_exports);
|
||||
|
||||
// src/configurations.ts
|
||||
var import_core = require("@smithy/core");
|
||||
var DEFAULT_UA_APP_ID = void 0;
|
||||
function isValidUserAgentAppId(appId) {
|
||||
if (appId === void 0) {
|
||||
return true;
|
||||
}
|
||||
return typeof appId === "string" && appId.length <= 50;
|
||||
}
|
||||
__name(isValidUserAgentAppId, "isValidUserAgentAppId");
|
||||
function resolveUserAgentConfig(input) {
|
||||
const normalizedAppIdProvider = (0, import_core.normalizeProvider)(input.userAgentAppId ?? DEFAULT_UA_APP_ID);
|
||||
const { customUserAgent } = input;
|
||||
return Object.assign(input, {
|
||||
customUserAgent: typeof customUserAgent === "string" ? [[customUserAgent]] : customUserAgent,
|
||||
userAgentAppId: /* @__PURE__ */ __name(async () => {
|
||||
const appId = await normalizedAppIdProvider();
|
||||
if (!isValidUserAgentAppId(appId)) {
|
||||
const logger = input.logger?.constructor?.name === "NoOpLogger" || !input.logger ? console : input.logger;
|
||||
if (typeof appId !== "string") {
|
||||
logger?.warn("userAgentAppId must be a string or undefined.");
|
||||
} else if (appId.length > 50) {
|
||||
logger?.warn("The provided userAgentAppId exceeds the maximum length of 50 characters.");
|
||||
}
|
||||
}
|
||||
return appId;
|
||||
}, "userAgentAppId")
|
||||
});
|
||||
}
|
||||
__name(resolveUserAgentConfig, "resolveUserAgentConfig");
|
||||
|
||||
// src/user-agent-middleware.ts
|
||||
var import_util_endpoints = require("@aws-sdk/util-endpoints");
|
||||
var import_protocol_http = require("@smithy/protocol-http");
|
||||
|
||||
// src/check-features.ts
|
||||
var import_core2 = require("@aws-sdk/core");
|
||||
var ACCOUNT_ID_ENDPOINT_REGEX = /\d{12}\.ddb/;
|
||||
async function checkFeatures(context, config, args) {
|
||||
const request = args.request;
|
||||
if (request?.headers?.["smithy-protocol"] === "rpc-v2-cbor") {
|
||||
(0, import_core2.setFeature)(context, "PROTOCOL_RPC_V2_CBOR", "M");
|
||||
}
|
||||
if (typeof config.retryStrategy === "function") {
|
||||
const retryStrategy = await config.retryStrategy();
|
||||
if (typeof retryStrategy.acquireInitialRetryToken === "function") {
|
||||
if (retryStrategy.constructor?.name?.includes("Adaptive")) {
|
||||
(0, import_core2.setFeature)(context, "RETRY_MODE_ADAPTIVE", "F");
|
||||
} else {
|
||||
(0, import_core2.setFeature)(context, "RETRY_MODE_STANDARD", "E");
|
||||
}
|
||||
} else {
|
||||
(0, import_core2.setFeature)(context, "RETRY_MODE_LEGACY", "D");
|
||||
}
|
||||
}
|
||||
if (typeof config.accountIdEndpointMode === "function") {
|
||||
const endpointV2 = context.endpointV2;
|
||||
if (String(endpointV2?.url?.hostname).match(ACCOUNT_ID_ENDPOINT_REGEX)) {
|
||||
(0, import_core2.setFeature)(context, "ACCOUNT_ID_ENDPOINT", "O");
|
||||
}
|
||||
switch (await config.accountIdEndpointMode?.()) {
|
||||
case "disabled":
|
||||
(0, import_core2.setFeature)(context, "ACCOUNT_ID_MODE_DISABLED", "Q");
|
||||
break;
|
||||
case "preferred":
|
||||
(0, import_core2.setFeature)(context, "ACCOUNT_ID_MODE_PREFERRED", "P");
|
||||
break;
|
||||
case "required":
|
||||
(0, import_core2.setFeature)(context, "ACCOUNT_ID_MODE_REQUIRED", "R");
|
||||
break;
|
||||
}
|
||||
}
|
||||
const identity = context.__smithy_context?.selectedHttpAuthScheme?.identity;
|
||||
if (identity?.$source) {
|
||||
const credentials = identity;
|
||||
if (credentials.accountId) {
|
||||
(0, import_core2.setFeature)(context, "RESOLVED_ACCOUNT_ID", "T");
|
||||
}
|
||||
for (const [key, value] of Object.entries(credentials.$source ?? {})) {
|
||||
(0, import_core2.setFeature)(context, key, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
__name(checkFeatures, "checkFeatures");
|
||||
|
||||
// src/constants.ts
|
||||
var USER_AGENT = "user-agent";
|
||||
var X_AMZ_USER_AGENT = "x-amz-user-agent";
|
||||
var SPACE = " ";
|
||||
var UA_NAME_SEPARATOR = "/";
|
||||
var UA_NAME_ESCAPE_REGEX = /[^\!\$\%\&\'\*\+\-\.\^\_\`\|\~\d\w]/g;
|
||||
var UA_VALUE_ESCAPE_REGEX = /[^\!\$\%\&\'\*\+\-\.\^\_\`\|\~\d\w\#]/g;
|
||||
var UA_ESCAPE_CHAR = "-";
|
||||
|
||||
// src/encode-features.ts
|
||||
var BYTE_LIMIT = 1024;
|
||||
function encodeFeatures(features) {
|
||||
let buffer = "";
|
||||
for (const key in features) {
|
||||
const val = features[key];
|
||||
if (buffer.length + val.length + 1 <= BYTE_LIMIT) {
|
||||
if (buffer.length) {
|
||||
buffer += "," + val;
|
||||
} else {
|
||||
buffer += val;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
break;
|
||||
}
|
||||
return buffer;
|
||||
}
|
||||
__name(encodeFeatures, "encodeFeatures");
|
||||
|
||||
// src/user-agent-middleware.ts
|
||||
var userAgentMiddleware = /* @__PURE__ */ __name((options) => (next, context) => async (args) => {
|
||||
const { request } = args;
|
||||
if (!import_protocol_http.HttpRequest.isInstance(request)) {
|
||||
return next(args);
|
||||
}
|
||||
const { headers } = request;
|
||||
const userAgent = context?.userAgent?.map(escapeUserAgent) || [];
|
||||
const defaultUserAgent = (await options.defaultUserAgentProvider()).map(escapeUserAgent);
|
||||
await checkFeatures(context, options, args);
|
||||
const awsContext = context;
|
||||
defaultUserAgent.push(
|
||||
`m/${encodeFeatures(
|
||||
Object.assign({}, context.__smithy_context?.features, awsContext.__aws_sdk_context?.features)
|
||||
)}`
|
||||
);
|
||||
const customUserAgent = options?.customUserAgent?.map(escapeUserAgent) || [];
|
||||
const appId = await options.userAgentAppId();
|
||||
if (appId) {
|
||||
defaultUserAgent.push(escapeUserAgent([`app/${appId}`]));
|
||||
}
|
||||
const prefix = (0, import_util_endpoints.getUserAgentPrefix)();
|
||||
const sdkUserAgentValue = (prefix ? [prefix] : []).concat([...defaultUserAgent, ...userAgent, ...customUserAgent]).join(SPACE);
|
||||
const normalUAValue = [
|
||||
...defaultUserAgent.filter((section) => section.startsWith("aws-sdk-")),
|
||||
...customUserAgent
|
||||
].join(SPACE);
|
||||
if (options.runtime !== "browser") {
|
||||
if (normalUAValue) {
|
||||
headers[X_AMZ_USER_AGENT] = headers[X_AMZ_USER_AGENT] ? `${headers[USER_AGENT]} ${normalUAValue}` : normalUAValue;
|
||||
}
|
||||
headers[USER_AGENT] = sdkUserAgentValue;
|
||||
} else {
|
||||
headers[X_AMZ_USER_AGENT] = sdkUserAgentValue;
|
||||
}
|
||||
return next({
|
||||
...args,
|
||||
request
|
||||
});
|
||||
}, "userAgentMiddleware");
|
||||
var escapeUserAgent = /* @__PURE__ */ __name((userAgentPair) => {
|
||||
const name = userAgentPair[0].split(UA_NAME_SEPARATOR).map((part) => part.replace(UA_NAME_ESCAPE_REGEX, UA_ESCAPE_CHAR)).join(UA_NAME_SEPARATOR);
|
||||
const version = userAgentPair[1]?.replace(UA_VALUE_ESCAPE_REGEX, UA_ESCAPE_CHAR);
|
||||
const prefixSeparatorIndex = name.indexOf(UA_NAME_SEPARATOR);
|
||||
const prefix = name.substring(0, prefixSeparatorIndex);
|
||||
let uaName = name.substring(prefixSeparatorIndex + 1);
|
||||
if (prefix === "api") {
|
||||
uaName = uaName.toLowerCase();
|
||||
}
|
||||
return [prefix, uaName, version].filter((item) => item && item.length > 0).reduce((acc, item, index) => {
|
||||
switch (index) {
|
||||
case 0:
|
||||
return item;
|
||||
case 1:
|
||||
return `${acc}/${item}`;
|
||||
default:
|
||||
return `${acc}#${item}`;
|
||||
}
|
||||
}, "");
|
||||
}, "escapeUserAgent");
|
||||
var getUserAgentMiddlewareOptions = {
|
||||
name: "getUserAgentMiddleware",
|
||||
step: "build",
|
||||
priority: "low",
|
||||
tags: ["SET_USER_AGENT", "USER_AGENT"],
|
||||
override: true
|
||||
};
|
||||
var getUserAgentPlugin = /* @__PURE__ */ __name((config) => ({
|
||||
applyToStack: /* @__PURE__ */ __name((clientStack) => {
|
||||
clientStack.add(userAgentMiddleware(config), getUserAgentMiddlewareOptions);
|
||||
}, "applyToStack")
|
||||
}), "getUserAgentPlugin");
|
||||
// Annotate the CommonJS export names for ESM import in node:
|
||||
|
||||
0 && (module.exports = {
|
||||
DEFAULT_UA_APP_ID,
|
||||
resolveUserAgentConfig,
|
||||
userAgentMiddleware,
|
||||
getUserAgentMiddlewareOptions,
|
||||
getUserAgentPlugin
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user