@webiny/aws-helpers 6.0.0-rc.7 → 6.1.0-beta.0
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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webiny/aws-helpers",
|
|
3
|
-
"version": "6.
|
|
3
|
+
"version": "6.1.0-beta.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"exports": {
|
|
@@ -26,14 +26,14 @@
|
|
|
26
26
|
"access": "public",
|
|
27
27
|
"directory": "dist"
|
|
28
28
|
},
|
|
29
|
-
"gitHead": "
|
|
29
|
+
"gitHead": "a3bd3695c66c79238e380d7360d9731b5fcf9c87",
|
|
30
30
|
"dependencies": {
|
|
31
31
|
"@types/aws-lambda": "8.10.161",
|
|
32
32
|
"cheerio": "1.2.0",
|
|
33
|
-
"srcset": "
|
|
33
|
+
"srcset": "5.0.3"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
|
-
"@webiny/build-tools": "6.
|
|
36
|
+
"@webiny/build-tools": "6.1.0-beta.0"
|
|
37
37
|
},
|
|
38
38
|
"sideEffects": false,
|
|
39
39
|
"adio": {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { get } from "https";
|
|
2
2
|
import { load } from "cheerio";
|
|
3
|
-
import {
|
|
3
|
+
import { parseSrcset, stringifySrcset } from "srcset";
|
|
4
4
|
import { isHeaderBlacklisted } from "./headerBlacklist.js";
|
|
5
5
|
import { logDebug } from "./log.js";
|
|
6
6
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["get","load","
|
|
1
|
+
{"version":3,"names":["get","load","parseSrcset","stringifySrcset","isHeaderBlacklisted","logDebug","loadOriginPage","domain","path","Promise","resolve","reject","responseBody","req","hostname","port","res","on","chunk","html","parseHtml","response","body","status","statusDescription","headers","header","Object","keys","value","Array","isArray","map","h","key","e","statusCode","message","doc","host","each","_i","el","prefixUrl","find","srcset","attribs","srcsetParsed","srcsetRebased","src","url","startsWith","density","width","attr","href"],"sources":["loadOriginPage.ts"],"sourcesContent":["import type { CloudFrontResponse } from \"~/lambdaEdge/index.js\";\nimport { get } from \"https\";\nimport { load } from \"cheerio\";\nimport type { SrcSetDefinition } from \"srcset\";\nimport { parseSrcset, stringifySrcset } from \"srcset\";\nimport { isHeaderBlacklisted } from \"./headerBlacklist.js\";\nimport { logDebug } from \"./log.js\";\n\n// TODO cheerio does not have Element type, so we define it here\ninterface Element {\n attribs: {\n [key: string]: string;\n };\n}\n\n/**\n * Load HTML from origin and perform transformation of URLs to absolute\n * @param domain Domain of the origin cloudfront\n * @param path Path of the file we want to retrieve\n * @returns Response object\n */\nexport function loadOriginPage(domain: string, path: string) {\n return new Promise<CloudFrontResponse>((resolve, reject) => {\n logDebug(`Pulling page from ${domain}${path}`);\n let responseBody = \"\";\n const req = get(\n {\n hostname: domain,\n port: 443,\n path: path\n },\n res => {\n res.on(\"data\", chunk => (responseBody += chunk));\n res.on(\"end\", () => {\n logDebug(`Parsing page`);\n const html = parseHtml(responseBody, domain);\n const response: CloudFrontResponse = {\n body: html,\n status: \"200\",\n statusDescription: \"ok\",\n headers: {}\n };\n\n // Rewrite headers from the HTTP response\n for (const header of Object.keys(res.headers)) {\n // We cannot set any header we want.\n // CloudFront is restricting us from setting or changing some headers.\n if (isHeaderBlacklisted(header)) {\n continue;\n }\n\n const value = res.headers[header];\n if (Array.isArray(value)) {\n response.headers[header] = value.map(h => ({\n key: header,\n value: h\n }));\n } else if (value) {\n response.headers[header] = [\n {\n key: header,\n value: value\n }\n ];\n }\n }\n\n logDebug(`Page parsed`);\n resolve(response);\n });\n }\n );\n\n req.on(\"error\", e => {\n reject({\n statusCode: 500,\n body: e.message\n });\n });\n });\n}\n\nfunction parseHtml(html: string, domain: string) {\n const doc = load(html);\n const host = `https://${domain}`;\n\n doc(\"head > link\").each((_i, el) => {\n prefixUrl(el, \"href\", host);\n });\n\n doc(\"script\").each((_i, el) => {\n prefixUrl(el, \"src\", host);\n });\n\n doc(\"body\")\n .find(\"img\")\n .each((_i, el) => {\n prefixUrl(el, \"src\", host);\n\n // Handle also srcset property for responsive images.\n const srcset = el.attribs[\"srcset\"];\n if (srcset) {\n const srcsetParsed = parseSrcset(srcset);\n const srcsetRebased = srcsetParsed.map<SrcSetDefinition>(src => {\n if (src.url.startsWith(\"/\")) {\n return {\n url: host + src.url,\n density: src.density,\n width: src.width\n };\n }\n\n return src;\n });\n\n el.attribs[\"srcset\"] = stringifySrcset(srcsetRebased);\n }\n });\n\n return doc.html();\n}\n\nfunction prefixUrl(el: Element, attr: string, host: string) {\n const href = el.attribs[attr];\n if (href && href.startsWith(\"/\")) {\n el.attribs[attr] = host + href;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|