@d-zero/puppeteer-page-scan 1.0.0 → 3.0.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.
@@ -1,9 +1,16 @@
1
- import type { Listener, PageHook, Phase, Size } from './types.js';
2
- import type { Page } from 'puppeteer';
1
+ import type { PageHook, PageScanPhase, Size } from './types.js';
2
+ import type { Listener } from '@d-zero/puppeteer-general-actions';
3
+ import type { Page } from '@d-zero/puppeteer-page';
3
4
  type Options = {
4
5
  name: string;
5
6
  hooks?: readonly PageHook[];
6
- listener?: Listener<Phase>;
7
+ listener?: Listener<PageScanPhase>;
7
8
  } & Size;
9
+ /**
10
+ *
11
+ * @param page
12
+ * @param url
13
+ * @param options
14
+ */
8
15
  export declare function beforePageScan(page: Page, url: string, options?: Options): Promise<void>;
9
16
  export {};
@@ -1,4 +1,10 @@
1
1
  import { scrollAllOver } from '@d-zero/puppeteer-scroll';
2
+ /**
3
+ *
4
+ * @param page
5
+ * @param url
6
+ * @param options
7
+ */
2
8
  export async function beforePageScan(page, url, options) {
3
9
  const listener = options?.listener;
4
10
  const name = options?.name ?? 'default';
@@ -12,7 +18,7 @@ export async function beforePageScan(page, url, options) {
12
18
  width > 1000 ? Math.floor(width * 0.75) : Math.floor(width * 1.5),
13
19
  deviceScaleFactor: resolution ?? 1,
14
20
  });
15
- if (page.url() === url) {
21
+ if ((await page.url()) === url) {
16
22
  listener?.('load', { name, type: 'reaload' });
17
23
  await page.reload({ waitUntil: 'networkidle0' });
18
24
  }
@@ -28,6 +34,13 @@ export async function beforePageScan(page, url, options) {
28
34
  log: (message) => listener?.('hook', { name, message }),
29
35
  });
30
36
  }
31
- listener?.('scroll', { name });
32
- await scrollAllOver(page);
37
+ listener?.('scroll', {
38
+ name,
39
+ scrollY: 0,
40
+ scrollHeight: Number.NaN,
41
+ message: 'Start scrolling',
42
+ });
43
+ await scrollAllOver(page, {
44
+ logger: (scrollY, scrollHeight, message) => listener?.('scroll', { name, scrollY, scrollHeight, message }),
45
+ });
33
46
  }
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export { beforePageScan } from './before-page-scan.js';
2
2
  export { defaultSizes } from './default-sizes.js';
3
3
  export { readPageHooks } from './read-page-hooks.js';
4
+ export { pageScanListener, pageScanLoggers } from './page-scan-listener.js';
4
5
  export * from './types.js';
package/dist/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  export { beforePageScan } from './before-page-scan.js';
2
2
  export { defaultSizes } from './default-sizes.js';
3
3
  export { readPageHooks } from './read-page-hooks.js';
4
+ export { pageScanListener, pageScanLoggers } from './page-scan-listener.js';
4
5
  export * from './types.js';
@@ -0,0 +1,4 @@
1
+ import type { PageScanPhase } from './types.js';
2
+ import type { Loggers } from '@d-zero/puppeteer-general-actions';
3
+ export declare const pageScanLoggers: Loggers<PageScanPhase>;
4
+ export declare const pageScanListener: (log: (log: string) => void) => import("@d-zero/puppeteer-general-actions").Listener<PageScanPhase>;
@@ -0,0 +1,22 @@
1
+ import { createListener } from '@d-zero/puppeteer-general-actions';
2
+ export const pageScanLoggers = (log) => ({
3
+ setViewport: ({ width }) => {
4
+ log(`↔️ Change viewport size to ${width}px`);
5
+ },
6
+ load({ type }) {
7
+ log(`%earth% ${type === 'open' ? 'Open' : 'Reload'} page`);
8
+ },
9
+ hook({ message }) {
10
+ log(message);
11
+ },
12
+ scroll({ scrollY, scrollHeight, message }) {
13
+ if (Number.isNaN(scrollHeight)) {
14
+ log(`%propeller% ${message}`);
15
+ return;
16
+ }
17
+ log(`%propeller% ${scrollY}px/${scrollHeight}px (${Math.round((scrollY / scrollHeight) * 100)}%) ${message}`);
18
+ },
19
+ });
20
+ export const pageScanListener = createListener((log) => {
21
+ return pageScanLoggers(log);
22
+ });
@@ -1,2 +1,7 @@
1
1
  import type { PageHook } from './types.js';
2
+ /**
3
+ *
4
+ * @param hooks
5
+ * @param baseDir
6
+ */
2
7
  export declare function readPageHooks(hooks: readonly string[], baseDir: string): Promise<PageHook[]>;
@@ -1,4 +1,9 @@
1
1
  import path from 'node:path';
2
+ /**
3
+ *
4
+ * @param hooks
5
+ * @param baseDir
6
+ */
2
7
  export async function readPageHooks(hooks, baseDir) {
3
8
  const pageHooks = await Promise.all(hooks.map(async (hook) => {
4
9
  const hookAbsPath = path.isAbsolute(hook) ? hook : path.resolve(baseDir, hook);
package/dist/types.d.ts CHANGED
@@ -1,5 +1,4 @@
1
- import type { Page } from 'puppeteer';
2
- export type Listener<P> = (phase: keyof P, data: P[keyof P]) => void;
1
+ import type { Page } from '@d-zero/puppeteer-page';
3
2
  export type Sizes = Record<string, Size>;
4
3
  export type Size = {
5
4
  width: number;
@@ -9,7 +8,7 @@ export type PageHook = (page: Page, size: Size & {
9
8
  name: string;
10
9
  log: (message: string) => void;
11
10
  }) => Promise<void>;
12
- export type Phase = {
11
+ export type PageScanPhase = {
13
12
  setViewport: {
14
13
  name: string;
15
14
  width: number;
@@ -25,5 +24,8 @@ export type Phase = {
25
24
  };
26
25
  scroll: {
27
26
  name: string;
27
+ scrollY: number;
28
+ scrollHeight: number;
29
+ message: string;
28
30
  };
29
31
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@d-zero/puppeteer-page-scan",
3
- "version": "1.0.0",
3
+ "version": "3.0.0",
4
4
  "description": "Scanning page function for puppeteer",
5
5
  "author": "D-ZERO",
6
6
  "license": "MIT",
@@ -20,13 +20,15 @@
20
20
  ],
21
21
  "scripts": {
22
22
  "build": "tsc",
23
+ "watch": "tsc --watch",
23
24
  "clean": "tsc --build --clean"
24
25
  },
25
26
  "dependencies": {
26
- "@d-zero/puppeteer-scroll": "1.0.5"
27
+ "@d-zero/puppeteer-general-actions": "1.2.0",
28
+ "@d-zero/puppeteer-scroll": "3.0.0"
27
29
  },
28
30
  "devDependencies": {
29
- "puppeteer": "23.5.0"
31
+ "@d-zero/puppeteer-page": "0.3.0"
30
32
  },
31
- "gitHead": "e8f65086bf7c316dda6667f1173da8585a5ef19c"
33
+ "gitHead": "e4fd17857e31022d121527b00fd7f009dbdb2142"
32
34
  }