@monetizationos/proxy 1.0.2 → 1.0.3
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/apiRequestHeaders.d.ts +1 -1
- package/dist/apiRequestHeaders.js +1 -1
- package/dist/apiRequestHeaders.js.map +1 -1
- package/dist/stages/linkRewriting.js +4 -3
- package/dist/stages/linkRewriting.js.map +1 -1
- package/dist/stages/originLinkRewriter.d.ts +1 -0
- package/dist/stages/originLinkRewriter.js +12 -0
- package/dist/stages/originLinkRewriter.js.map +1 -0
- package/package.json +1 -1
- package/dist/stages/transformOriginLinks.d.ts +0 -1
- package/dist/stages/transformOriginLinks.js +0 -14
- package/dist/stages/transformOriginLinks.js.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export declare const MOS_PROXY_VERSION_HEADER = "X-MOS-Proxy-Version";
|
|
2
2
|
export declare const MOS_PROXY_CLIENT_HEADER = "X-MOS-Proxy-Client";
|
|
3
|
-
export declare const MOS_PROXY_PACKAGE_VERSION = "1.0.
|
|
3
|
+
export declare const MOS_PROXY_PACKAGE_VERSION = "1.0.3";
|
|
4
4
|
export declare const setMosProxyHeaders: (headers: Headers) => void;
|
|
5
5
|
export declare const withMosProxyHeaders: (headers?: HeadersInit) => Headers;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { formatClientRuntimeHeader } from './clientRuntime';
|
|
2
2
|
export const MOS_PROXY_VERSION_HEADER = 'X-MOS-Proxy-Version';
|
|
3
3
|
export const MOS_PROXY_CLIENT_HEADER = 'X-MOS-Proxy-Client';
|
|
4
|
-
export const MOS_PROXY_PACKAGE_VERSION = '1.0.
|
|
4
|
+
export const MOS_PROXY_PACKAGE_VERSION = '1.0.3';
|
|
5
5
|
export const setMosProxyHeaders = (headers) => {
|
|
6
6
|
headers.set(MOS_PROXY_VERSION_HEADER, MOS_PROXY_PACKAGE_VERSION);
|
|
7
7
|
headers.set(MOS_PROXY_CLIENT_HEADER, formatClientRuntimeHeader());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiRequestHeaders.js","sourceRoot":"","sources":["../src/apiRequestHeaders.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAA;AAE3D,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAAqB,CAAA;AAC7D,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAAoB,CAAA;AAC3D,MAAM,CAAC,MAAM,yBAAyB,GAAG,OAAO,CAAA;AAEhD,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,OAAgB,EAAQ,EAAE;IACzD,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,yBAAyB,CAAC,CAAA;IAChE,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,yBAAyB,EAAE,CAAC,CAAA;AACrE,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,OAAqB,EAAW,EAAE;IAClE,MAAM,IAAI,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,CAAA;IACjC,kBAAkB,CAAC,IAAI,CAAC,CAAA;IACxB,OAAO,IAAI,CAAA;AACf,CAAC,CAAA","sourcesContent":["import { formatClientRuntimeHeader } from './clientRuntime'\n\nexport const MOS_PROXY_VERSION_HEADER = 'X-MOS-Proxy-Version'\nexport const MOS_PROXY_CLIENT_HEADER = 'X-MOS-Proxy-Client'\nexport const MOS_PROXY_PACKAGE_VERSION = '1.0.
|
|
1
|
+
{"version":3,"file":"apiRequestHeaders.js","sourceRoot":"","sources":["../src/apiRequestHeaders.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAA;AAE3D,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAAqB,CAAA;AAC7D,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAAoB,CAAA;AAC3D,MAAM,CAAC,MAAM,yBAAyB,GAAG,OAAO,CAAA;AAEhD,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,OAAgB,EAAQ,EAAE;IACzD,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,yBAAyB,CAAC,CAAA;IAChE,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,yBAAyB,EAAE,CAAC,CAAA;AACrE,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,OAAqB,EAAW,EAAE;IAClE,MAAM,IAAI,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,CAAA;IACjC,kBAAkB,CAAC,IAAI,CAAC,CAAA;IACxB,OAAO,IAAI,CAAA;AACf,CAAC,CAAA","sourcesContent":["import { formatClientRuntimeHeader } from './clientRuntime'\n\nexport const MOS_PROXY_VERSION_HEADER = 'X-MOS-Proxy-Version'\nexport const MOS_PROXY_CLIENT_HEADER = 'X-MOS-Proxy-Client'\nexport const MOS_PROXY_PACKAGE_VERSION = '1.0.3'\n\nexport const setMosProxyHeaders = (headers: Headers): void => {\n headers.set(MOS_PROXY_VERSION_HEADER, MOS_PROXY_PACKAGE_VERSION)\n headers.set(MOS_PROXY_CLIENT_HEADER, formatClientRuntimeHeader())\n}\n\nexport const withMosProxyHeaders = (headers?: HeadersInit): Headers => {\n const next = new Headers(headers)\n setMosProxyHeaders(next)\n return next\n}\n"]}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import { statusAllowsBody } from '../http';
|
|
2
|
-
import
|
|
2
|
+
import compileOriginLinkRewriter from './originLinkRewriter';
|
|
3
3
|
export default async function rewriteOriginResponse(ctx, request, response) {
|
|
4
4
|
const { config, logger } = ctx;
|
|
5
5
|
const requestUrl = new URL(request.url);
|
|
6
6
|
const originUrl = config.originUrl;
|
|
7
|
+
const originLinkRewriter = compileOriginLinkRewriter(requestUrl, originUrl);
|
|
7
8
|
const headers = new Headers();
|
|
8
9
|
response.headers.forEach((value, name) => {
|
|
9
10
|
try {
|
|
10
|
-
headers.append(name,
|
|
11
|
+
headers.append(name, originLinkRewriter(value));
|
|
11
12
|
}
|
|
12
13
|
catch (error) {
|
|
13
14
|
logger.log({
|
|
@@ -32,6 +33,6 @@ export default async function rewriteOriginResponse(ctx, request, response) {
|
|
|
32
33
|
if (!body) {
|
|
33
34
|
return new Response(null, init);
|
|
34
35
|
}
|
|
35
|
-
return new Response(
|
|
36
|
+
return new Response(originLinkRewriter(body), init);
|
|
36
37
|
}
|
|
37
38
|
//# sourceMappingURL=linkRewriting.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"linkRewriting.js","sourceRoot":"","sources":["../../src/stages/linkRewriting.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAC1C,OAAO,
|
|
1
|
+
{"version":3,"file":"linkRewriting.js","sourceRoot":"","sources":["../../src/stages/linkRewriting.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAC1C,OAAO,yBAAyB,MAAM,sBAAsB,CAAA;AAE5D,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,qBAAqB,CAAC,GAAoB,EAAE,OAAgB,EAAE,QAAkB;IAC1G,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAA;IAC9B,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IACvC,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAA;IAClC,MAAM,kBAAkB,GAAG,yBAAyB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;IAE3E,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;IAC7B,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrC,IAAI,CAAC;YACD,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAA;QACnD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,CAAC,GAAG,CAAC;gBACP,KAAK,EAAE,OAAO;gBACd,IAAI,EAAE,8BAA8B;gBACpC,OAAO,EAAE,2EAA2E;gBACpF,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBACzB,KAAK;aACR,CAAC,CAAA;YACF,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QAC/B,CAAC;IACL,CAAC,CAAC,CAAA;IACF,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,CAAC,CAAA;IAExC,MAAM,IAAI,GAAiB,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,OAAO,EAAE,CAAA;IAEhG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACvD,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IACnC,CAAC;IAED,4EAA4E;IAC5E,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAA;IAChC,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAA;IAElC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;IAClC,IAAI,CAAC,IAAI,EAAE,CAAC;QACR,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IACnC,CAAC;IAED,OAAO,IAAI,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAA;AACvD,CAAC","sourcesContent":["import type { PipelineContext } from '../context'\nimport { statusAllowsBody } from '../http'\nimport compileOriginLinkRewriter from './originLinkRewriter'\n\nexport default async function rewriteOriginResponse(ctx: PipelineContext, request: Request, response: Response): Promise<Response> {\n const { config, logger } = ctx\n const requestUrl = new URL(request.url)\n const originUrl = config.originUrl\n const originLinkRewriter = compileOriginLinkRewriter(requestUrl, originUrl)\n\n const headers = new Headers()\n response.headers.forEach((value, name) => {\n try {\n headers.append(name, originLinkRewriter(value))\n } catch (error) {\n logger.log({\n level: 'error',\n code: 'link-rewriting-header-failed',\n message: 'Failed to rewrite origin link in response header; keeping original value.',\n context: { header: name },\n error,\n })\n headers.append(name, value)\n }\n })\n headers.set('Cache-Control', 'no-store')\n\n const init: ResponseInit = { status: response.status, statusText: response.statusText, headers }\n\n if (!statusAllowsBody(response.status) || !response.body) {\n return new Response(null, init)\n }\n\n // Mutating the body invalidates the origin's byte-length/encoding metadata.\n headers.delete('Content-Length')\n headers.delete('Content-Encoding')\n\n const body = await response.text()\n if (!body) {\n return new Response(null, init)\n }\n\n return new Response(originLinkRewriter(body), init)\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function compileOriginLinkRewriter(requestUrl: URL, originUrl: URL): (input: string) => string;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
const protocolPattern = '(https?:)?//';
|
|
2
|
+
export default function compileOriginLinkRewriter(requestUrl, originUrl) {
|
|
3
|
+
const originPort = originUrl.port ? `:${originUrl.port}` : '';
|
|
4
|
+
const originBasePath = originUrl.pathname.replace(/\/$/, '');
|
|
5
|
+
const boundary = '(?![a-zA-Z0-9._~%-])';
|
|
6
|
+
const regex = new RegExp(`${protocolPattern}${escapeRegExp(`${originUrl.hostname}${originPort}${originBasePath}`)}${boundary}`, 'g');
|
|
7
|
+
const requestPort = requestUrl.port ? `:${requestUrl.port}` : '';
|
|
8
|
+
const replacement = `${requestUrl.protocol}//${requestUrl.hostname}${requestPort}`;
|
|
9
|
+
return (input) => (input ? input.replaceAll(regex, replacement) : input);
|
|
10
|
+
}
|
|
11
|
+
const escapeRegExp = (value) => value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
12
|
+
//# sourceMappingURL=originLinkRewriter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"originLinkRewriter.js","sourceRoot":"","sources":["../../src/stages/originLinkRewriter.ts"],"names":[],"mappings":"AAAA,MAAM,eAAe,GAAG,cAAc,CAAA;AAEtC,MAAM,CAAC,OAAO,UAAU,yBAAyB,CAAC,UAAe,EAAE,SAAc;IAC7E,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IAC7D,MAAM,cAAc,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IAC5D,MAAM,QAAQ,GAAG,sBAAsB,CAAA;IACvC,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,GAAG,eAAe,GAAG,YAAY,CAAC,GAAG,SAAS,CAAC,QAAQ,GAAG,UAAU,GAAG,cAAc,EAAE,CAAC,GAAG,QAAQ,EAAE,EAAE,GAAG,CAAC,CAAA;IAEpI,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IAChE,MAAM,WAAW,GAAG,GAAG,UAAU,CAAC,QAAQ,KAAK,UAAU,CAAC,QAAQ,GAAG,WAAW,EAAE,CAAA;IAElF,OAAO,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;AACpF,CAAC;AAED,MAAM,YAAY,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAA","sourcesContent":["const protocolPattern = '(https?:)?//'\n\nexport default function compileOriginLinkRewriter(requestUrl: URL, originUrl: URL): (input: string) => string {\n const originPort = originUrl.port ? `:${originUrl.port}` : ''\n const originBasePath = originUrl.pathname.replace(/\\/$/, '')\n const boundary = '(?![a-zA-Z0-9._~%-])'\n const regex = new RegExp(`${protocolPattern}${escapeRegExp(`${originUrl.hostname}${originPort}${originBasePath}`)}${boundary}`, 'g')\n\n const requestPort = requestUrl.port ? `:${requestUrl.port}` : ''\n const replacement = `${requestUrl.protocol}//${requestUrl.hostname}${requestPort}`\n\n return (input: string) => (input ? input.replaceAll(regex, replacement) : input)\n}\n\nconst escapeRegExp = (value: string) => value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n"]}
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export default function transformOriginLinks(requestUrl: URL, originUrl: URL, input: string): string;
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
const protocolPattern = '(https?:)?//';
|
|
2
|
-
export default function transformOriginLinks(requestUrl, originUrl, input) {
|
|
3
|
-
if (!input) {
|
|
4
|
-
return input;
|
|
5
|
-
}
|
|
6
|
-
const originPort = originUrl.port ? `:${originUrl.port}` : '';
|
|
7
|
-
const originBasePath = originUrl.pathname.replace(/\/$/, '') ?? '';
|
|
8
|
-
const originUrlRegex = new RegExp(`${protocolPattern}${escapeRegExp(`${originUrl.hostname}${originPort}${originBasePath}`)}`, 'g');
|
|
9
|
-
const requestPort = requestUrl.port ? `:${requestUrl.port}` : '';
|
|
10
|
-
const requestUrlValue = `${requestUrl.protocol}//${requestUrl.hostname}${requestPort}`;
|
|
11
|
-
return input.replaceAll(originUrlRegex, requestUrlValue);
|
|
12
|
-
}
|
|
13
|
-
const escapeRegExp = (value) => value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
14
|
-
//# sourceMappingURL=transformOriginLinks.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"transformOriginLinks.js","sourceRoot":"","sources":["../../src/stages/transformOriginLinks.ts"],"names":[],"mappings":"AAAA,MAAM,eAAe,GAAG,cAAc,CAAA;AAEtC,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,UAAe,EAAE,SAAc,EAAE,KAAa;IACvF,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,OAAO,KAAK,CAAA;IAChB,CAAC;IAED,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IAC7D,MAAM,cAAc,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,EAAE,CAAA;IAClE,MAAM,cAAc,GAAG,IAAI,MAAM,CAAC,GAAG,eAAe,GAAG,YAAY,CAAC,GAAG,SAAS,CAAC,QAAQ,GAAG,UAAU,GAAG,cAAc,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;IAElI,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IAChE,MAAM,eAAe,GAAG,GAAG,UAAU,CAAC,QAAQ,KAAK,UAAU,CAAC,QAAQ,GAAG,WAAW,EAAE,CAAA;IAEtF,OAAO,KAAK,CAAC,UAAU,CAAC,cAAc,EAAE,eAAe,CAAC,CAAA;AAC5D,CAAC;AAED,MAAM,YAAY,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAA","sourcesContent":["const protocolPattern = '(https?:)?//'\n\nexport default function transformOriginLinks(requestUrl: URL, originUrl: URL, input: string): string {\n if (!input) {\n return input\n }\n\n const originPort = originUrl.port ? `:${originUrl.port}` : ''\n const originBasePath = originUrl.pathname.replace(/\\/$/, '') ?? ''\n const originUrlRegex = new RegExp(`${protocolPattern}${escapeRegExp(`${originUrl.hostname}${originPort}${originBasePath}`)}`, 'g')\n\n const requestPort = requestUrl.port ? `:${requestUrl.port}` : ''\n const requestUrlValue = `${requestUrl.protocol}//${requestUrl.hostname}${requestPort}`\n\n return input.replaceAll(originUrlRegex, requestUrlValue)\n}\n\nconst escapeRegExp = (value: string) => value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n"]}
|