single-file-cli 2.0.64 → 2.0.66

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.
@@ -0,0 +1,29 @@
1
+ name: Publish Docker image
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+
7
+ jobs:
8
+ docker:
9
+ runs-on: ubuntu-latest
10
+ steps:
11
+ -
12
+ name: Set up QEMU
13
+ uses: docker/setup-qemu-action@v3
14
+ -
15
+ name: Set up Docker Buildx
16
+ uses: docker/setup-buildx-action@v3
17
+ -
18
+ name: Login to Docker Hub
19
+ uses: docker/login-action@v3
20
+ with:
21
+ username: ${{ secrets.DOCKER_USERNAME }}
22
+ password: ${{ secrets.DOCKER_PASSWORD }}
23
+ -
24
+ name: Build and push
25
+ uses: docker/build-push-action@v6
26
+ with:
27
+ push: true
28
+ tags: ${{ secrets.DOCKER_USERNAME }}/singlefile:latest
29
+ platforms: linux/amd64,linux/arm64doc
package/build.sh CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env bash
2
2
 
3
- deno vendor "npm:single-file-core@1.5.32"
3
+ deno vendor "npm:single-file-core@1.5.35"
4
4
 
5
5
  echo "
6
6
  import { build } from 'npm:esbuild';
package/deno.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@single-file/single-file-cli",
3
- "version": "2.0.64",
3
+ "version": "2.0.66",
4
4
  "description": "SingleFile CLI",
5
5
  "nodeModulesDir": true,
6
6
  "exports": {
package/lib/cdp-client.js CHANGED
@@ -53,7 +53,15 @@ async function getPageData(options) {
53
53
  let targetInfo;
54
54
  try {
55
55
  targetInfo = await CDP.createTarget(EMPTY_PAGE_URL);
56
- const { Browser, Security, Page, Emulation, Fetch, Network, Runtime, Debugger } = new CDP(targetInfo);
56
+ const consoleMessages = [];
57
+ const { Browser, Security, Page, Emulation, Fetch, Network, Runtime, Debugger, Console } = new CDP(targetInfo);
58
+ if (options.consoleMessagesFile) {
59
+ await Console.enable();
60
+ Console.addEventListener("messageAdded", ({ params }) => {
61
+ const { message } = params;
62
+ consoleMessages.push(message);
63
+ });
64
+ }
57
65
  if (options.browserStartMinimized) {
58
66
  const { windowId, bounds } = await Browser.getWindowForTarget({ targetId: targetInfo.id });
59
67
  if (bounds.windowState !== MINIMIZED_WINDOW_STATE) {
@@ -182,27 +190,7 @@ async function getPageData(options) {
182
190
  loadPage({ Page, Runtime }, options),
183
191
  options.browserDebug ? waitForDebuggerReady({ Debugger }) : Promise.resolve()
184
192
  ]);
185
- if (options.browserWaitDelay) {
186
- await new Promise(resolve => setTimeout(resolve, options.browserWaitDelay));
187
- }
188
193
  await Runtime.addBinding({ name: SET_PAGE_DATA_FUNCTION_NAME, executionContextId: contextId });
189
- const pageDataPromise = new Promise(resolve => {
190
- let pageDataResponse = "";
191
- Runtime.addEventListener("bindingCalled", async ({ params }) => {
192
- if (params.name === SET_PAGE_DATA_FUNCTION_NAME) {
193
- const { payload } = params;
194
- if (payload.length) {
195
- pageDataResponse += payload;
196
- } else {
197
- const result = JSON.parse(pageDataResponse);
198
- if (result.content instanceof Array) {
199
- result.content = new Uint8Array(result.content);
200
- }
201
- resolve(result);
202
- }
203
- }
204
- });
205
- });
206
194
  if (options.embedScreenshot && options.compressContent) {
207
195
  await Runtime.addBinding({ name: CAPTURE_SCREENSHOT_FUNCTION_NAME, executionContextId: contextId });
208
196
  Runtime.addEventListener("bindingCalled", async ({ params }) => {
@@ -246,6 +234,26 @@ async function getPageData(options) {
246
234
  }
247
235
  });
248
236
  }
237
+ const pageDataPromise = new Promise(resolve => {
238
+ let pageDataResponse = "";
239
+ Runtime.addEventListener("bindingCalled", async ({ params }) => {
240
+ if (params.name === SET_PAGE_DATA_FUNCTION_NAME) {
241
+ const { payload } = params;
242
+ if (payload.length) {
243
+ pageDataResponse += payload;
244
+ } else {
245
+ const result = JSON.parse(pageDataResponse);
246
+ if (result.content instanceof Array) {
247
+ result.content = new Uint8Array(result.content);
248
+ }
249
+ resolve(result);
250
+ }
251
+ }
252
+ });
253
+ });
254
+ if (options.browserWaitDelay) {
255
+ await new Promise(resolve => setTimeout(resolve, options.browserWaitDelay));
256
+ }
249
257
  const { result } = await Runtime.evaluate({
250
258
  expression: `(${getPageDataScriptSource.toString()})(${JSON.stringify(options)},${JSON.stringify([SET_SCREENSHOT_FUNCTION_NAME, SET_PDF_FUNCTION_NAME, SET_PAGE_DATA_FUNCTION_NAME, CAPTURE_SCREENSHOT_FUNCTION_NAME, PRINT_TO_PDF_FUNCTION_NAME])})`,
251
259
  awaitPromise: true,
@@ -257,6 +265,10 @@ async function getPageData(options) {
257
265
  throw new Error(description);
258
266
  }
259
267
  const pageData = await pageDataPromise;
268
+ if (options.consoleMessagesFile) {
269
+ await Console.disable();
270
+ pageData.consoleMessages = consoleMessages;
271
+ }
260
272
  Object.assign(pageData, httpInfo);
261
273
  return pageData;
262
274
  } catch (error) {