nomagick commited on
Commit
e17ef6d
·
unverified ·
1 Parent(s): 77174f1
backend/functions/.puppeteerrc.cjs CHANGED
@@ -1,9 +1,14 @@
1
  const {join} = require('path');
2
 
 
 
 
 
 
 
 
 
3
  /**
4
  * @type {import("puppeteer").Configuration}
5
  */
6
- module.exports = {
7
- // Changes the cache location for Puppeteer.
8
- cacheDirectory: join(__dirname, '.cache', 'puppeteer'),
9
- };
 
1
  const {join} = require('path');
2
 
3
+ let config = {};
4
+ if (!process.env.FUNCTIONS_EMULATOR) {
5
+ config = {
6
+ // Changes the cache location for Puppeteer.
7
+ cacheDirectory: join(__dirname, '.cache', 'puppeteer'),
8
+ };
9
+ }
10
+
11
  /**
12
  * @type {import("puppeteer").Configuration}
13
  */
14
+ module.exports = config;
 
 
 
backend/functions/package.json CHANGED
@@ -19,7 +19,7 @@
19
  "start": "npm run shell",
20
  "deploy": "firebase deploy --only functions",
21
  "logs": "firebase functions:log",
22
- "gcp-build": "node node_modules/puppeteer/install.js"
23
  },
24
  "engines": {
25
  "node": "20"
 
19
  "start": "npm run shell",
20
  "deploy": "firebase deploy --only functions",
21
  "logs": "firebase functions:log",
22
+ "gcp-build": "node node_modules/puppeteer/install.mjs"
23
  },
24
  "engines": {
25
  "node": "20"
backend/functions/src/index.ts CHANGED
@@ -30,3 +30,5 @@ Object.assign(exports, registry.exportGrouped({
30
  }));
31
  registry.title = 'url2text';
32
  registry.version = '0.1.0';
 
 
 
30
  }));
31
  registry.title = 'url2text';
32
  registry.version = '0.1.0';
33
+
34
+ process.on('unhandledRejection', () => 'no big deal');
backend/functions/src/services/puppeteer.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { AsyncService, Defer, HashManager, marshalErrorLike } from 'civkit';
2
  import { container, singleton } from 'tsyringe';
3
  import puppeteer, { Browser } from 'puppeteer';
4
  import { Logger } from '../shared/services/logger';
@@ -72,7 +72,6 @@ export class PuppeteerControl extends AsyncService {
72
  }
73
  this.browser = await puppeteer.launch({
74
  headless: true,
75
- args: ['--no-sandbox', '--disable-setuid-sandbox'],
76
  });
77
  this.browser.once('disconnected', () => {
78
  this.logger.warn(`Browser disconnected`);
@@ -212,20 +211,20 @@ function giveSnapshot() {
212
  });
213
 
214
  return r;
 
 
 
 
 
 
 
 
215
  });
216
 
217
- gotoPromise.catch((err) => {
218
- this.logger.warn(`Browsing of ${url} not fully done`, { err: marshalErrorLike(err) });
219
- }).finally(() => {
220
- finalized = true;
221
- });
222
-
223
  try {
224
  while (true) {
225
  await Promise.race([nextSnapshotDeferred.promise, gotoPromise]);
226
  if (finalized) {
227
- await gotoPromise;
228
-
229
  yield { ...snapshot, screenshot };
230
  break;
231
  }
 
1
+ import { AssertionFailureError, AsyncService, Defer, HashManager, marshalErrorLike } from 'civkit';
2
  import { container, singleton } from 'tsyringe';
3
  import puppeteer, { Browser } from 'puppeteer';
4
  import { Logger } from '../shared/services/logger';
 
72
  }
73
  this.browser = await puppeteer.launch({
74
  headless: true,
 
75
  });
76
  this.browser.once('disconnected', () => {
77
  this.logger.warn(`Browser disconnected`);
 
211
  });
212
 
213
  return r;
214
+ }).catch((err) => {
215
+ this.logger.warn(`Failed to goto ${url}`, { err: marshalErrorLike(err) });
216
+ return Promise.reject(new AssertionFailureError({
217
+ message: `Failed to goto ${url}: ${err}`,
218
+ cause: err,
219
+ }));
220
+ }).finally(() => {
221
+ finalized = true;
222
  });
223
 
 
 
 
 
 
 
224
  try {
225
  while (true) {
226
  await Promise.race([nextSnapshotDeferred.promise, gotoPromise]);
227
  if (finalized) {
 
 
228
  yield { ...snapshot, screenshot };
229
  break;
230
  }