diff --git a/package.json b/package.json index cddb2d5..7a559dd 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ "build" ], "engines": { - "node": ">= 14" + "node": ">= 14.18.0" }, "scripts": { "test": "make clean && make && make pretest && make test", @@ -23,10 +23,10 @@ "preversion": "npm run build" }, "devDependencies": { - "@types/node": "^16.11.62", + "@types/node": "^18.11.18", "@types/tar-fs": "^2.0.1", "clean-modules": "^2.0.6", - "typescript": "^4.8.3" + "typescript": "^4.9.4" }, "bugs": { "url": "https://github.com/Sparticuz/chromium/issues" diff --git a/source/index.ts b/source/index.ts index 3f74607..b7c7769 100644 --- a/source/index.ts +++ b/source/index.ts @@ -1,8 +1,8 @@ -import { access, createWriteStream, existsSync, mkdirSync, symlink } from 'fs'; -import { IncomingMessage } from 'http'; +import { access, createWriteStream, existsSync, mkdirSync, symlink } from 'node:fs'; +import { IncomingMessage } from 'node:http'; import LambdaFS from './lambdafs'; -import { join } from 'path'; -import { URL } from 'url'; +import { join } from 'node:path'; +import { URL } from 'node:url'; /** Viewport taken from https://github.com/puppeteer/puppeteer/blob/main/docs/api/puppeteer.viewport.md */ interface Viewport { @@ -37,7 +37,7 @@ interface Viewport { hasTouch?: boolean; } -if (/^AWS_Lambda_nodejs(?:10|12|14|16|18)[.]x$/.test(process.env.AWS_EXECUTION_ENV) === true) { +if ( process.env.AWS_EXECUTION_ENV !== undefined && /^AWS_Lambda_nodejs(?:14|16|18)[.]x$/.test(process.env.AWS_EXECUTION_ENV) === true) { if (process.env.FONTCONFIG_PATH === undefined) { process.env.FONTCONFIG_PATH = '/tmp/aws'; } @@ -52,11 +52,13 @@ if (/^AWS_Lambda_nodejs(?:10|12|14|16|18)[.]x$/.test(process.env.AWS_EXECUTION_E class Chromium { /** * Downloads or symlinks a custom font and returns its basename, patching the environment so that Chromium can find it. - * If not running on AWS Lambda nor Google Cloud Functions, `null` is returned instead. + * If headless is not true, `null` is returned instead. */ - static font(input: string): Promise { + static font(input: string): Promise { if (Chromium.headless !== true) { - return null; + return new Promise((resolve) => { + return resolve(null); + }); } if (process.env.HOME === undefined) { @@ -76,7 +78,7 @@ class Chromium { const output = `${process.env.HOME}/.fonts/${url.pathname.split('/').pop()}`; if (existsSync(output) === true) { - return resolve(output.split('/').pop()); + return resolve(output.split('/').pop() as string); } if (url.protocol === 'file:') { @@ -86,7 +88,7 @@ class Chromium { } symlink(url.pathname, output, (error) => { - return error != null ? reject(error) : resolve(url.pathname.split('/').pop()); + return error != null ? reject(error) : resolve(url.pathname.split('/').pop() as string); }); }); } else { @@ -109,7 +111,7 @@ class Chromium { response.once('end', () => { stream.end(() => { - return resolve(url.pathname.split('/').pop()); + return resolve(url.pathname.split('/').pop() as string); }); }); }); @@ -208,12 +210,12 @@ class Chromium { LambdaFS.inflate(`${input}/swiftshader.tar.br`), ]; - if (/^AWS_Lambda_nodejs(?:10|12|14|16|18)[.]x$/.test(process.env.AWS_EXECUTION_ENV) === true) { + if (process.env.AWS_EXECUTION_ENV !== undefined && /^AWS_Lambda_nodejs(?:14|16|18)[.]x$/.test(process.env.AWS_EXECUTION_ENV) === true) { promises.push(LambdaFS.inflate(`${input}/aws.tar.br`)); } const result = await Promise.all(promises); - return result.shift(); + return result.shift() as string; } /** diff --git a/source/lambdafs.ts b/source/lambdafs.ts index f0cb1f8..de95eab 100644 --- a/source/lambdafs.ts +++ b/source/lambdafs.ts @@ -1,8 +1,8 @@ -import { createReadStream, createWriteStream, existsSync } from 'fs'; -import { tmpdir } from 'os'; -import { basename, join } from 'path'; +import { createReadStream, createWriteStream, existsSync } from 'node:fs'; +import { tmpdir } from 'node:os'; +import { basename, join } from 'node:path'; import { extract } from 'tar-fs'; -import { createBrotliDecompress, createUnzip } from 'zlib'; +import { createBrotliDecompress, createUnzip } from 'node:zlib'; class LambdaFS { /** diff --git a/tsconfig.json b/tsconfig.json index 3f3541d..24d1ae7 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,41 +1,18 @@ { - "compileOnSave": false, "compilerOptions": { - "alwaysStrict": true, "declaration": true, "declarationDir": "build", - "emitDecoratorMetadata": true, "esModuleInterop": true, - "experimentalDecorators": true, "forceConsistentCasingInFileNames": true, - "importHelpers": false, - "inlineSourceMap": false, "lib": ["dom", "es2020"], - "listEmittedFiles": false, - "listFiles": false, "module": "commonjs", "moduleResolution": "node", - "noFallthroughCasesInSwitch": true, - "noImplicitAny": true, - "noImplicitReturns": true, - "noImplicitThis": true, - "noUnusedLocals": false, - "noUnusedParameters": false, "outDir": "build", "pretty": true, - "resolveJsonModule": true, "skipLibCheck": true, - "sourceMap": true, "strict": true, - "strictFunctionTypes": true, - "strictNullChecks": false, "target": "es2020", - "traceResolution": false, - "types": ["node"] }, "exclude": ["build", "node_modules", "tmp"], - "include": ["source"], - "typeAcquisition": { - "enable": true - } + "include": ["source"] }