@faasjs/dev 8.0.0-beta.5 → 8.0.0-beta.6

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/dist/index.mjs CHANGED
@@ -1,5 +1,7 @@
1
- import { readFileSync } from 'fs';
2
- import { knex } from 'knex';
1
+ import { __export, isTypegenSourceFile, generateFaasTypes, __reExport, resolveServerConfig } from './chunk-3FXFWIBW.mjs';
2
+ export { generateFaasTypes, isTypegenSourceFile } from './chunk-3FXFWIBW.mjs';
3
+ import { types, PGlite } from '@electric-sql/pglite';
4
+ import knex from 'knex';
3
5
  import PgliteDialect from 'knex-pglite';
4
6
  import { brotliDecompressSync, gunzipSync, inflateSync } from 'zlib';
5
7
  import { deepMerge } from '@faasjs/deep_merge';
@@ -10,42 +12,42 @@ import * as func_star from '@faasjs/func';
10
12
  import { join } from 'path';
11
13
  import { Server } from '@faasjs/server';
12
14
 
13
- var __defProp = Object.defineProperty;
14
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
15
- var __getOwnPropNames = Object.getOwnPropertyNames;
16
- var __hasOwnProp = Object.prototype.hasOwnProperty;
17
- var __export = (target, all) => {
18
- for (var name in all)
19
- __defProp(target, name, { get: all[name], enumerable: true });
20
- };
21
- var __copyProps = (to, from, except, desc) => {
22
- if (from && typeof from === "object" || typeof from === "function") {
23
- for (let key of __getOwnPropNames(from))
24
- if (!__hasOwnProp.call(to, key) && key !== except)
25
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
26
- }
27
- return to;
28
- };
29
- var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget);
30
-
31
15
  // src/index.ts
32
16
  var index_exports = {};
33
17
  __export(index_exports, {
34
18
  FuncWarper: () => FuncWarper,
35
19
  createPgliteKnex: () => createPgliteKnex,
20
+ generateFaasTypes: () => generateFaasTypes,
21
+ isTypegenSourceFile: () => isTypegenSourceFile,
36
22
  mountFaasKnex: () => mountFaasKnex,
37
- runPgliteSql: () => runPgliteSql,
38
- runPgliteSqlFile: () => runPgliteSqlFile,
39
23
  streamToString: () => streamToString,
40
24
  test: () => test,
41
25
  unmountFaasKnex: () => unmountFaasKnex,
42
26
  viteFaasJsServer: () => viteFaasJsServer
43
27
  });
28
+ var postgresTypeParsers = {
29
+ [types.INT2]: (v) => Number.parseInt(v, 10),
30
+ [types.INT4]: (v) => Number.parseInt(v, 10),
31
+ [types.INT8]: (v) => Number.parseInt(v, 10),
32
+ [types.FLOAT4]: (v) => Number.parseFloat(v),
33
+ [types.FLOAT8]: (v) => Number.parseFloat(v),
34
+ [types.NUMERIC]: (v) => Number.parseFloat(v)
35
+ };
44
36
  function createPgliteKnex(config = {}, connection = {}) {
37
+ const pgliteConnection = connection;
38
+ const dataDir = typeof pgliteConnection.filename === "string" ? pgliteConnection.filename : typeof pgliteConnection.connectionString === "string" ? pgliteConnection.connectionString : void 0;
39
+ const pglite = new PGlite({
40
+ ...dataDir ? { dataDir } : {},
41
+ parsers: postgresTypeParsers
42
+ });
43
+ const pgliteKnexConnection = {
44
+ ...connection,
45
+ pglite
46
+ };
45
47
  return knex({
46
48
  ...config,
47
49
  client: PgliteDialect,
48
- connection
50
+ connection: pgliteKnexConnection
49
51
  });
50
52
  }
51
53
  function mountFaasKnex(db, options = {}) {
@@ -63,17 +65,6 @@ function unmountFaasKnex(name = "knex") {
63
65
  if (!globalWithFaasKnex.FaasJS_Knex) return;
64
66
  delete globalWithFaasKnex.FaasJS_Knex[name];
65
67
  }
66
- async function runPgliteSql(db, sql) {
67
- if (!sql.trim()) return;
68
- await db.raw(sql);
69
- }
70
- async function runPgliteSqlFile(db, filePath, options = {}) {
71
- const stripUuidOsspExtension = options.stripUuidOsspExtension !== false;
72
- let sql = readFileSync(filePath, "utf8");
73
- if (stripUuidOsspExtension)
74
- sql = sql.replace(/CREATE EXTENSION IF NOT EXISTS "uuid-ossp";\s*/gi, "");
75
- await runPgliteSql(db, sql);
76
- }
77
68
 
78
69
  // src/test.ts
79
70
  var test_exports = {};
@@ -109,8 +100,7 @@ var FuncWarper = class {
109
100
  plugins;
110
101
  _handler;
111
102
  /**
112
- * @param file {string} Full file path
113
- * @param func {Func} A FaasJs function
103
+ * @param initBy {Func} A FaasJS function
114
104
  * ```ts
115
105
  * import { FuncWarper } from '@faasjs/dev'
116
106
  *
@@ -253,6 +243,7 @@ function test(initBy) {
253
243
 
254
244
  // src/index.ts
255
245
  __reExport(index_exports, test_exports);
246
+ var TYPEGEN_DEBOUNCE = 120;
256
247
  function normalizeBase(base) {
257
248
  const normalized = base.startsWith("/") ? base : `/${base}`;
258
249
  if (normalized === "/") return "/";
@@ -268,7 +259,7 @@ function stripBase(url, base) {
268
259
  return `${pathname.slice(base.length)}${search}`;
269
260
  return url;
270
261
  }
271
- function viteFaasJsServer(options = {}) {
262
+ function viteFaasJsServer() {
272
263
  let config;
273
264
  let server = null;
274
265
  const logger = new Logger("FaasJs:Vite");
@@ -276,20 +267,64 @@ function viteFaasJsServer(options = {}) {
276
267
  name: "vite:faasjs",
277
268
  enforce: "pre",
278
269
  configResolved(resolvedConfig) {
279
- const root = options.root || resolvedConfig.root;
280
- const base = normalizeBase(options.base || resolvedConfig.base);
270
+ const serverConfig = resolveServerConfig(
271
+ resolvedConfig.root,
272
+ logger,
273
+ resolvedConfig.base
274
+ );
281
275
  config = {
282
- root,
283
- base
276
+ root: serverConfig.root,
277
+ base: normalizeBase(serverConfig.base)
284
278
  };
285
279
  },
286
- configureServer: async ({ middlewares }) => {
280
+ configureServer: async ({ middlewares, watcher }) => {
287
281
  if (process.env.VITEST) {
288
282
  logger.debug("Skipping faas server in vitest environment");
289
283
  return;
290
284
  }
291
285
  if (!config) throw new Error("viteFaasJsServer: config is not resolved");
292
286
  server = new Server(join(config.root, "src"));
287
+ const runTypegen = async () => {
288
+ try {
289
+ const result = await generateFaasTypes({
290
+ root: config.root
291
+ });
292
+ logger.debug(
293
+ "[faas-types] %s %s (%i routes)",
294
+ result.changed ? "generated" : "up-to-date",
295
+ result.output,
296
+ result.routeCount
297
+ );
298
+ } catch (error) {
299
+ logger.error("[faas-types] %s", error.message);
300
+ }
301
+ };
302
+ let timer = null;
303
+ let runningTypegen = false;
304
+ let pendingTypegen = false;
305
+ const flushTypegen = async () => {
306
+ if (runningTypegen || !pendingTypegen) return;
307
+ pendingTypegen = false;
308
+ runningTypegen = true;
309
+ try {
310
+ await runTypegen();
311
+ } finally {
312
+ runningTypegen = false;
313
+ if (pendingTypegen) void flushTypegen();
314
+ }
315
+ };
316
+ const scheduleTypegen = () => {
317
+ pendingTypegen = true;
318
+ if (timer) clearTimeout(timer);
319
+ timer = setTimeout(() => {
320
+ void flushTypegen();
321
+ }, TYPEGEN_DEBOUNCE);
322
+ };
323
+ await runTypegen();
324
+ watcher.on("all", (_eventName, filePath) => {
325
+ if (!isTypegenSourceFile(filePath)) return;
326
+ scheduleTypegen();
327
+ });
293
328
  middlewares.use(async (req, res, next) => {
294
329
  if (!req.url || req.method !== "POST" || !server) return next();
295
330
  const originalUrl = req.url;
@@ -320,4 +355,4 @@ function viteFaasJsServer(options = {}) {
320
355
  };
321
356
  }
322
357
 
323
- export { FuncWarper, createPgliteKnex, mountFaasKnex, runPgliteSql, runPgliteSqlFile, streamToString, test, unmountFaasKnex, viteFaasJsServer };
358
+ export { FuncWarper, createPgliteKnex, mountFaasKnex, streamToString, test, unmountFaasKnex, viteFaasJsServer };
package/faas-types.mjs ADDED
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { main } from './dist/cli.mjs'
4
+
5
+ main(process.argv).then(code => {
6
+ if (code !== 0) process.exit(code)
7
+ })
package/package.json CHANGED
@@ -1,11 +1,14 @@
1
1
  {
2
2
  "name": "@faasjs/dev",
3
- "version": "v8.0.0-beta.5",
3
+ "version": "8.0.0-beta.6",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "main": "dist/index.cjs",
7
7
  "module": "dist/index.mjs",
8
8
  "types": "dist/index.d.ts",
9
+ "bin": {
10
+ "faas-types": "faas-types.mjs"
11
+ },
9
12
  "exports": {
10
13
  ".": {
11
14
  "types": "./dist/index.d.ts",
@@ -24,33 +27,40 @@
24
27
  },
25
28
  "funding": "https://github.com/sponsors/faasjs",
26
29
  "scripts": {
27
- "build": "tsup-node src/index.ts --config ../../tsup.config.ts"
30
+ "build": "tsup-node --entry src/index.ts --entry src/cli.ts --config ../../tsup.config.ts"
28
31
  },
29
32
  "files": [
30
- "dist"
33
+ "dist",
34
+ "faas-types.mjs"
31
35
  ],
32
36
  "peerDependencies": {
33
- "@faasjs/deep_merge": ">=v8.0.0-beta.5",
34
- "@faasjs/func": ">=v8.0.0-beta.5",
35
- "@faasjs/http": ">=v8.0.0-beta.5",
36
- "@faasjs/server": ">=v8.0.0-beta.5",
37
- "@faasjs/knex": ">=v8.0.0-beta.5",
38
- "@faasjs/load": ">=v8.0.0-beta.5",
39
- "@faasjs/logger": ">=v8.0.0-beta.5",
37
+ "@electric-sql/pglite": "*",
38
+ "@faasjs/deep_merge": ">=8.0.0-beta.6",
39
+ "@faasjs/func": ">=8.0.0-beta.6",
40
+ "@faasjs/http": ">=8.0.0-beta.6",
41
+ "@faasjs/server": ">=8.0.0-beta.6",
42
+ "@faasjs/knex": ">=8.0.0-beta.6",
43
+ "@faasjs/load": ">=8.0.0-beta.6",
44
+ "@faasjs/logger": ">=8.0.0-beta.6",
45
+ "@types/node": "*",
40
46
  "knex": "*",
41
47
  "vite": "*",
48
+ "vitest": "*",
42
49
  "knex-pglite": "*"
43
50
  },
44
51
  "devDependencies": {
45
- "@faasjs/deep_merge": ">=v8.0.0-beta.5",
46
- "@faasjs/func": ">=v8.0.0-beta.5",
47
- "@faasjs/http": ">=v8.0.0-beta.5",
48
- "@faasjs/server": ">=v8.0.0-beta.5",
49
- "@faasjs/knex": ">=v8.0.0-beta.5",
50
- "@faasjs/load": ">=v8.0.0-beta.5",
51
- "@faasjs/logger": ">=v8.0.0-beta.5",
52
+ "@electric-sql/pglite": "*",
53
+ "@faasjs/deep_merge": ">=8.0.0-beta.6",
54
+ "@faasjs/func": ">=8.0.0-beta.6",
55
+ "@faasjs/http": ">=8.0.0-beta.6",
56
+ "@faasjs/server": ">=8.0.0-beta.6",
57
+ "@faasjs/knex": ">=8.0.0-beta.6",
58
+ "@faasjs/load": ">=8.0.0-beta.6",
59
+ "@faasjs/logger": ">=8.0.0-beta.6",
60
+ "@types/node": "*",
52
61
  "knex": "*",
53
62
  "vite": "*",
63
+ "vitest": "*",
54
64
  "knex-pglite": "*"
55
65
  },
56
66
  "engines": {