@faasjs/dev 8.0.0-beta.6 → 8.0.0-beta.8
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/README.md +7 -27
- package/dist/chunk-CtajNgzt.mjs +36 -0
- package/dist/cli.cjs +51 -319
- package/dist/cli.d.ts +3 -2
- package/dist/cli.mjs +50 -120
- package/dist/index.cjs +310 -582
- package/dist/index.d.ts +64 -87
- package/dist/index.mjs +273 -344
- package/dist/typegen-C6t9LIyi.cjs +183 -0
- package/dist/typegen-D5s91_xL.mjs +166 -0
- package/package.json +16 -22
- package/dist/chunk-3FXFWIBW.mjs +0 -221
package/README.md
CHANGED
|
@@ -14,7 +14,6 @@ npm install @faasjs/dev
|
|
|
14
14
|
## Features
|
|
15
15
|
|
|
16
16
|
- Vite integration for in-process FaasJS API during local development.
|
|
17
|
-
- PGlite helpers for lightweight database setup in tests.
|
|
18
17
|
- Test helpers to invoke and assert FaasJS functions.
|
|
19
18
|
|
|
20
19
|
## Usage: Vite integration
|
|
@@ -27,24 +26,6 @@ export default defineConfig({
|
|
|
27
26
|
})
|
|
28
27
|
```
|
|
29
28
|
|
|
30
|
-
## Usage: PGlite helpers
|
|
31
|
-
|
|
32
|
-
```ts
|
|
33
|
-
import {
|
|
34
|
-
createPgliteKnex,
|
|
35
|
-
mountFaasKnex,
|
|
36
|
-
unmountFaasKnex,
|
|
37
|
-
} from '@faasjs/dev'
|
|
38
|
-
|
|
39
|
-
const db = createPgliteKnex()
|
|
40
|
-
mountFaasKnex(db)
|
|
41
|
-
|
|
42
|
-
// run tests...
|
|
43
|
-
|
|
44
|
-
await db.destroy()
|
|
45
|
-
unmountFaasKnex()
|
|
46
|
-
```
|
|
47
|
-
|
|
48
29
|
## Usage: Test helpers
|
|
49
30
|
|
|
50
31
|
```ts
|
|
@@ -61,21 +42,17 @@ expect(response.data).toEqual({ message: 'Hello, FaasJS' })
|
|
|
61
42
|
## API
|
|
62
43
|
|
|
63
44
|
- Vite: [viteFaasJsServer](functions/viteFaasJsServer.md)
|
|
64
|
-
-
|
|
65
|
-
- Test: [test](functions/test.md), [FuncWarper](classes/FuncWarper.md), [streamToString](functions/streamToString.md)
|
|
45
|
+
- Test: [test](functions/test.md), [FuncWarper](classes/FuncWarper.md), [streamToText](functions/streamToText.md), [streamToObject](functions/streamToObject.md), [streamToString](variables/streamToString.md)
|
|
66
46
|
|
|
67
47
|
## Functions
|
|
68
48
|
|
|
69
|
-
- [createPgliteKnex](functions/createPgliteKnex.md)
|
|
70
|
-
- [defineFunc](functions/defineFunc.md)
|
|
71
49
|
- [generateFaasTypes](functions/generateFaasTypes.md)
|
|
72
50
|
- [isTypegenSourceFile](functions/isTypegenSourceFile.md)
|
|
73
|
-
- [mountFaasKnex](functions/mountFaasKnex.md)
|
|
74
51
|
- [nameFunc](functions/nameFunc.md)
|
|
75
52
|
- [parseFuncFilenameFromStack](functions/parseFuncFilenameFromStack.md)
|
|
76
|
-
- [
|
|
53
|
+
- [streamToObject](functions/streamToObject.md)
|
|
54
|
+
- [streamToText](functions/streamToText.md)
|
|
77
55
|
- [test](functions/test.md)
|
|
78
|
-
- [unmountFaasKnex](functions/unmountFaasKnex.md)
|
|
79
56
|
- [useFunc](functions/useFunc.md)
|
|
80
57
|
- [usePlugin](functions/usePlugin.md)
|
|
81
58
|
- [viteFaasJsServer](functions/viteFaasJsServer.md)
|
|
@@ -103,7 +80,6 @@ expect(response.data).toEqual({ message: 'Hello, FaasJS' })
|
|
|
103
80
|
- [InvokeData](type-aliases/InvokeData.md)
|
|
104
81
|
- [LifeCycleKey](type-aliases/LifeCycleKey.md)
|
|
105
82
|
- [MountData](type-aliases/MountData.md)
|
|
106
|
-
- [MountFaasKnexOptions](type-aliases/MountFaasKnexOptions.md)
|
|
107
83
|
- [Next](type-aliases/Next.md)
|
|
108
84
|
- [NormalizePluginType](type-aliases/NormalizePluginType.md)
|
|
109
85
|
- [Plugin](type-aliases/Plugin.md)
|
|
@@ -111,3 +87,7 @@ expect(response.data).toEqual({ message: 'Hello, FaasJS' })
|
|
|
111
87
|
- [Simplify](type-aliases/Simplify.md)
|
|
112
88
|
- [UnionToIntersection](type-aliases/UnionToIntersection.md)
|
|
113
89
|
- [UseifyPlugin](type-aliases/UseifyPlugin.md)
|
|
90
|
+
|
|
91
|
+
## Variables
|
|
92
|
+
|
|
93
|
+
- [streamToString](variables/streamToString.md)
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
//#region \0rolldown/runtime.js
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __exportAll = (all, no_symbols) => {
|
|
7
|
+
let target = {};
|
|
8
|
+
for (var name in all) {
|
|
9
|
+
__defProp(target, name, {
|
|
10
|
+
get: all[name],
|
|
11
|
+
enumerable: true
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
if (!no_symbols) {
|
|
15
|
+
__defProp(target, Symbol.toStringTag, { value: "Module" });
|
|
16
|
+
}
|
|
17
|
+
return target;
|
|
18
|
+
};
|
|
19
|
+
var __copyProps = (to, from, except, desc) => {
|
|
20
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
21
|
+
for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
|
|
22
|
+
key = keys[i];
|
|
23
|
+
if (!__hasOwnProp.call(to, key) && key !== except) {
|
|
24
|
+
__defProp(to, key, {
|
|
25
|
+
get: ((k) => from[k]).bind(null, key),
|
|
26
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return to;
|
|
32
|
+
};
|
|
33
|
+
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
34
|
+
|
|
35
|
+
//#endregion
|
|
36
|
+
export { __reExport as n, __exportAll as t };
|
package/dist/cli.cjs
CHANGED
|
@@ -1,278 +1,12 @@
|
|
|
1
|
-
'
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
2
|
+
const require_typegen = require('./typegen-C6t9LIyi.cjs');
|
|
2
3
|
|
|
3
|
-
|
|
4
|
-
var
|
|
5
|
-
var path = require('path');
|
|
6
|
-
var load = require('@faasjs/load');
|
|
7
|
-
var logger = require('@faasjs/logger');
|
|
4
|
+
//#region package.json
|
|
5
|
+
var version = "8.0.0-beta.7";
|
|
8
6
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
version: "v8.0.0-beta.5",
|
|
13
|
-
license: "MIT",
|
|
14
|
-
type: "module",
|
|
15
|
-
main: "dist/index.cjs",
|
|
16
|
-
module: "dist/index.mjs",
|
|
17
|
-
types: "dist/index.d.ts",
|
|
18
|
-
bin: {
|
|
19
|
-
"faas-types": "faas-types.mjs"
|
|
20
|
-
},
|
|
21
|
-
exports: {
|
|
22
|
-
".": {
|
|
23
|
-
types: "./dist/index.d.ts",
|
|
24
|
-
import: "./dist/index.mjs",
|
|
25
|
-
require: "./dist/index.cjs"
|
|
26
|
-
}
|
|
27
|
-
},
|
|
28
|
-
homepage: "https://faasjs.com/doc/dev",
|
|
29
|
-
repository: {
|
|
30
|
-
type: "git",
|
|
31
|
-
url: "git+https://github.com/faasjs/faasjs.git",
|
|
32
|
-
directory: "packages/dev"
|
|
33
|
-
},
|
|
34
|
-
bugs: {
|
|
35
|
-
url: "https://github.com/faasjs/faasjs/issues"
|
|
36
|
-
},
|
|
37
|
-
funding: "https://github.com/sponsors/faasjs",
|
|
38
|
-
scripts: {
|
|
39
|
-
build: "tsup-node --entry src/index.ts --entry src/cli.ts --config ../../tsup.config.ts"
|
|
40
|
-
},
|
|
41
|
-
files: [
|
|
42
|
-
"dist",
|
|
43
|
-
"faas-types.mjs"
|
|
44
|
-
],
|
|
45
|
-
peerDependencies: {
|
|
46
|
-
"@electric-sql/pglite": "*",
|
|
47
|
-
"@faasjs/deep_merge": ">=v8.0.0-beta.5",
|
|
48
|
-
"@faasjs/func": ">=v8.0.0-beta.5",
|
|
49
|
-
"@faasjs/http": ">=v8.0.0-beta.5",
|
|
50
|
-
"@faasjs/server": ">=v8.0.0-beta.5",
|
|
51
|
-
"@faasjs/knex": ">=v8.0.0-beta.5",
|
|
52
|
-
"@faasjs/load": ">=v8.0.0-beta.5",
|
|
53
|
-
"@faasjs/logger": ">=v8.0.0-beta.5",
|
|
54
|
-
"@types/node": "*",
|
|
55
|
-
knex: "*",
|
|
56
|
-
vite: "*",
|
|
57
|
-
vitest: "*",
|
|
58
|
-
"knex-pglite": "*"
|
|
59
|
-
},
|
|
60
|
-
devDependencies: {
|
|
61
|
-
"@electric-sql/pglite": "*",
|
|
62
|
-
"@faasjs/deep_merge": ">=v8.0.0-beta.5",
|
|
63
|
-
"@faasjs/func": ">=v8.0.0-beta.5",
|
|
64
|
-
"@faasjs/http": ">=v8.0.0-beta.5",
|
|
65
|
-
"@faasjs/server": ">=v8.0.0-beta.5",
|
|
66
|
-
"@faasjs/knex": ">=v8.0.0-beta.5",
|
|
67
|
-
"@faasjs/load": ">=v8.0.0-beta.5",
|
|
68
|
-
"@faasjs/logger": ">=v8.0.0-beta.5",
|
|
69
|
-
"@types/node": "*",
|
|
70
|
-
knex: "*",
|
|
71
|
-
vite: "*",
|
|
72
|
-
vitest: "*",
|
|
73
|
-
"knex-pglite": "*"
|
|
74
|
-
},
|
|
75
|
-
engines: {
|
|
76
|
-
node: ">=24.0.0",
|
|
77
|
-
npm: ">=11.0.0"
|
|
78
|
-
}
|
|
79
|
-
};
|
|
80
|
-
function resolveFaasStaging() {
|
|
81
|
-
return process.env.FaasEnv || "development";
|
|
82
|
-
}
|
|
83
|
-
function resolveServerConfig(root, logger, defaultBase = "/") {
|
|
84
|
-
const projectRoot = path.resolve(root);
|
|
85
|
-
const staging = resolveFaasStaging();
|
|
86
|
-
const srcRoot = path.join(projectRoot, "src");
|
|
87
|
-
const config = load.loadConfig(
|
|
88
|
-
srcRoot,
|
|
89
|
-
path.join(srcRoot, "index.func.ts"),
|
|
90
|
-
staging,
|
|
91
|
-
logger
|
|
92
|
-
);
|
|
93
|
-
const server = config && typeof config === "object" ? config.server : void 0;
|
|
94
|
-
const resolvedRoot = server && typeof server.root === "string" && server.root.length ? path.resolve(projectRoot, server.root) : projectRoot;
|
|
95
|
-
const resolvedBase = server && typeof server.base === "string" && server.base.length ? server.base : defaultBase;
|
|
96
|
-
return {
|
|
97
|
-
root: resolvedRoot,
|
|
98
|
-
base: resolvedBase,
|
|
99
|
-
staging
|
|
100
|
-
};
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
// src/typegen.ts
|
|
104
|
-
function normalizeSlashes(path) {
|
|
105
|
-
return path.replace(/\\/g, "/");
|
|
106
|
-
}
|
|
107
|
-
function normalizeRoute(path) {
|
|
108
|
-
const normalized = path.replace(/\/+/g, "/");
|
|
109
|
-
if (!normalized.length || normalized === "/") return "/";
|
|
110
|
-
return normalized.endsWith("/") ? normalized.slice(0, -1) : normalized;
|
|
111
|
-
}
|
|
112
|
-
function toRoute(srcRoot, file) {
|
|
113
|
-
const relativePath = normalizeSlashes(path.relative(srcRoot, file));
|
|
114
|
-
const noTsPath = relativePath.replace(/\.ts$/, "");
|
|
115
|
-
if (noTsPath === "index.func") return { route: "/", priority: 2 };
|
|
116
|
-
if (noTsPath === "default.func") return { route: "/*", priority: 1 };
|
|
117
|
-
if (noTsPath.endsWith("/index.func"))
|
|
118
|
-
return {
|
|
119
|
-
route: normalizeRoute(`/${noTsPath.slice(0, -"/index.func".length)}`),
|
|
120
|
-
priority: 2
|
|
121
|
-
};
|
|
122
|
-
if (noTsPath.endsWith("/default.func"))
|
|
123
|
-
return {
|
|
124
|
-
route: normalizeRoute(`/${noTsPath.slice(0, -"/default.func".length)}/*`),
|
|
125
|
-
priority: 1
|
|
126
|
-
};
|
|
127
|
-
if (noTsPath.endsWith(".func"))
|
|
128
|
-
return {
|
|
129
|
-
route: normalizeRoute(`/${noTsPath.slice(0, -".func".length)}`),
|
|
130
|
-
priority: 3
|
|
131
|
-
};
|
|
132
|
-
throw Error(`[faas-types] Invalid func filename: ${file}`);
|
|
133
|
-
}
|
|
134
|
-
function toImportPath(fromFile, targetFile) {
|
|
135
|
-
const fromDir = path.dirname(fromFile);
|
|
136
|
-
const importPath = normalizeSlashes(path.relative(fromDir, targetFile)).replace(
|
|
137
|
-
/\.ts$/,
|
|
138
|
-
""
|
|
139
|
-
);
|
|
140
|
-
if (importPath.startsWith(".")) return importPath;
|
|
141
|
-
return `./${importPath}`;
|
|
142
|
-
}
|
|
143
|
-
function parsePluginTypes(config) {
|
|
144
|
-
const pluginConfig = config.plugins;
|
|
145
|
-
if (!pluginConfig || typeof pluginConfig !== "object") return [];
|
|
146
|
-
const pluginTypes = /* @__PURE__ */ new Set();
|
|
147
|
-
for (const key in pluginConfig) {
|
|
148
|
-
const data = pluginConfig[key];
|
|
149
|
-
if (typeof data === "string" && data.length) {
|
|
150
|
-
pluginTypes.add(data);
|
|
151
|
-
continue;
|
|
152
|
-
}
|
|
153
|
-
if (data && typeof data === "object") {
|
|
154
|
-
if (typeof data.type === "string" && data.type.length)
|
|
155
|
-
pluginTypes.add(data.type);
|
|
156
|
-
else pluginTypes.add(key);
|
|
157
|
-
continue;
|
|
158
|
-
}
|
|
159
|
-
pluginTypes.add(key);
|
|
160
|
-
}
|
|
161
|
-
return Array.from(pluginTypes).sort((a, b) => a.localeCompare(b));
|
|
162
|
-
}
|
|
163
|
-
async function readFuncFiles(dir) {
|
|
164
|
-
const result = [];
|
|
165
|
-
async function walk(currentDir) {
|
|
166
|
-
const entries = await promises.readdir(currentDir, {
|
|
167
|
-
withFileTypes: true
|
|
168
|
-
});
|
|
169
|
-
for (const entry of entries) {
|
|
170
|
-
if (entry.name === ".faasjs" || entry.name === "node_modules") continue;
|
|
171
|
-
const filePath = path.join(currentDir, entry.name);
|
|
172
|
-
if (entry.isDirectory()) {
|
|
173
|
-
await walk(filePath);
|
|
174
|
-
continue;
|
|
175
|
-
}
|
|
176
|
-
if (entry.isFile() && entry.name.endsWith(".func.ts"))
|
|
177
|
-
result.push(filePath);
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
await walk(dir);
|
|
181
|
-
return result.sort((a, b) => a.localeCompare(b));
|
|
182
|
-
}
|
|
183
|
-
function formatTypes(items) {
|
|
184
|
-
const actionLines = items.map((item) => {
|
|
185
|
-
return ` ${JSON.stringify(item.route)}: __FaasFuncAction<__FaasModuleFunc<typeof import(${JSON.stringify(item.importPath)})>>`;
|
|
186
|
-
});
|
|
187
|
-
const eventLines = items.map((item) => {
|
|
188
|
-
const plugins = item.pluginTypes.length ? `[${item.pluginTypes.map((type) => JSON.stringify(type)).join(", ")}]` : "[]";
|
|
189
|
-
return ` ${JSON.stringify(item.route)}: InferPluginEvent<${plugins}>`;
|
|
190
|
-
});
|
|
191
|
-
return `/**
|
|
192
|
-
* Generated by @faasjs/dev.
|
|
193
|
-
*
|
|
194
|
-
* Do not edit this file manually.
|
|
195
|
-
*/
|
|
196
|
-
import type { Func, InferPluginEvent } from '@faasjs/func'
|
|
197
|
-
|
|
198
|
-
type __FaasModuleFunc<TModule> = TModule extends { func: infer TFunc }
|
|
199
|
-
? TFunc extends Func
|
|
200
|
-
? TFunc
|
|
201
|
-
: never
|
|
202
|
-
: TModule extends { default: infer TFunc }
|
|
203
|
-
? TFunc extends Func
|
|
204
|
-
? TFunc
|
|
205
|
-
: never
|
|
206
|
-
: never
|
|
207
|
-
|
|
208
|
-
type __FaasFuncAction<TFunc extends Func> = {
|
|
209
|
-
Params: Parameters<ReturnType<TFunc['export']>['handler']>[0]['params']
|
|
210
|
-
Data: Awaited<ReturnType<ReturnType<TFunc['export']>['handler']>>
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
declare module '@faasjs/types' {
|
|
214
|
-
interface FaasActions {
|
|
215
|
-
${actionLines.length ? `${actionLines.join("\n")}
|
|
216
|
-
` : ""} }
|
|
217
|
-
|
|
218
|
-
interface FaasEvents {
|
|
219
|
-
${eventLines.length ? `${eventLines.join("\n")}
|
|
220
|
-
` : ""} }
|
|
221
|
-
}
|
|
222
|
-
`;
|
|
223
|
-
}
|
|
224
|
-
async function generateFaasTypes(options = {}) {
|
|
225
|
-
const logger$1 = options.logger || new logger.Logger("FaasJs:Typegen");
|
|
226
|
-
const { root: projectRoot, staging } = resolveServerConfig(
|
|
227
|
-
options.root || process.cwd(),
|
|
228
|
-
logger$1
|
|
229
|
-
);
|
|
230
|
-
const srcRoot = path.join(projectRoot, "src");
|
|
231
|
-
const output = path.join(srcRoot, ".faasjs", "types.d.ts");
|
|
232
|
-
if (!fs.existsSync(srcRoot))
|
|
233
|
-
throw Error(`[faas-types] Source directory not found: ${srcRoot}`);
|
|
234
|
-
const files = await readFuncFiles(srcRoot);
|
|
235
|
-
const routeMap = /* @__PURE__ */ new Map();
|
|
236
|
-
for (const file of files) {
|
|
237
|
-
const { route, priority } = toRoute(srcRoot, file);
|
|
238
|
-
const config = load.loadConfig(srcRoot, file, staging, logger$1);
|
|
239
|
-
const pluginTypes = parsePluginTypes(config);
|
|
240
|
-
const importPath = toImportPath(output, file);
|
|
241
|
-
const prev = routeMap.get(route);
|
|
242
|
-
if (!prev || priority > prev.priority)
|
|
243
|
-
routeMap.set(route, {
|
|
244
|
-
route,
|
|
245
|
-
importPath,
|
|
246
|
-
pluginTypes,
|
|
247
|
-
priority
|
|
248
|
-
});
|
|
249
|
-
}
|
|
250
|
-
const items = Array.from(routeMap.values()).sort(
|
|
251
|
-
(a, b) => a.route.localeCompare(b.route)
|
|
252
|
-
);
|
|
253
|
-
const content = formatTypes(items);
|
|
254
|
-
let changed = true;
|
|
255
|
-
try {
|
|
256
|
-
const previous = await promises.readFile(output, "utf8");
|
|
257
|
-
if (previous === content) changed = false;
|
|
258
|
-
} catch (_error) {
|
|
259
|
-
}
|
|
260
|
-
if (changed) {
|
|
261
|
-
await promises.mkdir(path.dirname(output), {
|
|
262
|
-
recursive: true
|
|
263
|
-
});
|
|
264
|
-
await promises.writeFile(output, content);
|
|
265
|
-
}
|
|
266
|
-
return {
|
|
267
|
-
output,
|
|
268
|
-
changed,
|
|
269
|
-
fileCount: files.length,
|
|
270
|
-
routeCount: items.length
|
|
271
|
-
};
|
|
272
|
-
}
|
|
273
|
-
|
|
274
|
-
// src/cli.ts
|
|
275
|
-
var HelpText = `Generate FaasJS API/event type declarations.
|
|
7
|
+
//#endregion
|
|
8
|
+
//#region src/cli.ts
|
|
9
|
+
const HelpText = `Generate FaasJS API/event type declarations.
|
|
276
10
|
|
|
277
11
|
Usage:
|
|
278
12
|
faas-types [options]
|
|
@@ -283,53 +17,51 @@ Options:
|
|
|
283
17
|
-v, --version Show version
|
|
284
18
|
`;
|
|
285
19
|
function parseCliArgs(argv) {
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
};
|
|
20
|
+
const args = argv.slice(2);
|
|
21
|
+
const options = {};
|
|
22
|
+
const readValue = (index, name) => {
|
|
23
|
+
const value = args[index + 1];
|
|
24
|
+
if (!value || value.startsWith("-")) throw Error(`[faas-types] Missing value for ${name}`);
|
|
25
|
+
return value;
|
|
26
|
+
};
|
|
27
|
+
for (let i = 0; i < args.length; i++) {
|
|
28
|
+
const arg = args[i];
|
|
29
|
+
if (arg === "-h" || arg === "--help") return {
|
|
30
|
+
showHelp: true,
|
|
31
|
+
options
|
|
32
|
+
};
|
|
33
|
+
if (arg === "-v" || arg === "--version") return {
|
|
34
|
+
showVersion: true,
|
|
35
|
+
options
|
|
36
|
+
};
|
|
37
|
+
if (arg === "--root") {
|
|
38
|
+
options.root = readValue(i, arg);
|
|
39
|
+
i++;
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
throw Error(`[faas-types] Unknown option: ${arg}`);
|
|
43
|
+
}
|
|
44
|
+
return { options };
|
|
312
45
|
}
|
|
313
46
|
async function main(argv = process.argv) {
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
return 1;
|
|
332
|
-
}
|
|
47
|
+
try {
|
|
48
|
+
const parsed = parseCliArgs(argv);
|
|
49
|
+
if (parsed.showHelp) {
|
|
50
|
+
console.log(HelpText);
|
|
51
|
+
return 0;
|
|
52
|
+
}
|
|
53
|
+
if (parsed.showVersion) {
|
|
54
|
+
console.log(version);
|
|
55
|
+
return 0;
|
|
56
|
+
}
|
|
57
|
+
const result = await require_typegen.generateFaasTypes(parsed.options);
|
|
58
|
+
console.log(`[faas-types] ${result.changed ? "Generated" : "Up to date"} ${result.output} (${result.routeCount} routes from ${result.fileCount} files)`);
|
|
59
|
+
return 0;
|
|
60
|
+
} catch (error) {
|
|
61
|
+
console.error(error?.message || error);
|
|
62
|
+
return 1;
|
|
63
|
+
}
|
|
333
64
|
}
|
|
334
65
|
|
|
335
|
-
|
|
66
|
+
//#endregion
|
|
67
|
+
exports.main = main;
|
package/dist/cli.d.ts
CHANGED
package/dist/cli.mjs
CHANGED
|
@@ -1,79 +1,11 @@
|
|
|
1
|
-
import { generateFaasTypes } from
|
|
1
|
+
import { t as generateFaasTypes } from "./typegen-D5s91_xL.mjs";
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
var
|
|
5
|
-
name: "@faasjs/dev",
|
|
6
|
-
version: "v8.0.0-beta.5",
|
|
7
|
-
license: "MIT",
|
|
8
|
-
type: "module",
|
|
9
|
-
main: "dist/index.cjs",
|
|
10
|
-
module: "dist/index.mjs",
|
|
11
|
-
types: "dist/index.d.ts",
|
|
12
|
-
bin: {
|
|
13
|
-
"faas-types": "faas-types.mjs"
|
|
14
|
-
},
|
|
15
|
-
exports: {
|
|
16
|
-
".": {
|
|
17
|
-
types: "./dist/index.d.ts",
|
|
18
|
-
import: "./dist/index.mjs",
|
|
19
|
-
require: "./dist/index.cjs"
|
|
20
|
-
}
|
|
21
|
-
},
|
|
22
|
-
homepage: "https://faasjs.com/doc/dev",
|
|
23
|
-
repository: {
|
|
24
|
-
type: "git",
|
|
25
|
-
url: "git+https://github.com/faasjs/faasjs.git",
|
|
26
|
-
directory: "packages/dev"
|
|
27
|
-
},
|
|
28
|
-
bugs: {
|
|
29
|
-
url: "https://github.com/faasjs/faasjs/issues"
|
|
30
|
-
},
|
|
31
|
-
funding: "https://github.com/sponsors/faasjs",
|
|
32
|
-
scripts: {
|
|
33
|
-
build: "tsup-node --entry src/index.ts --entry src/cli.ts --config ../../tsup.config.ts"
|
|
34
|
-
},
|
|
35
|
-
files: [
|
|
36
|
-
"dist",
|
|
37
|
-
"faas-types.mjs"
|
|
38
|
-
],
|
|
39
|
-
peerDependencies: {
|
|
40
|
-
"@electric-sql/pglite": "*",
|
|
41
|
-
"@faasjs/deep_merge": ">=v8.0.0-beta.5",
|
|
42
|
-
"@faasjs/func": ">=v8.0.0-beta.5",
|
|
43
|
-
"@faasjs/http": ">=v8.0.0-beta.5",
|
|
44
|
-
"@faasjs/server": ">=v8.0.0-beta.5",
|
|
45
|
-
"@faasjs/knex": ">=v8.0.0-beta.5",
|
|
46
|
-
"@faasjs/load": ">=v8.0.0-beta.5",
|
|
47
|
-
"@faasjs/logger": ">=v8.0.0-beta.5",
|
|
48
|
-
"@types/node": "*",
|
|
49
|
-
knex: "*",
|
|
50
|
-
vite: "*",
|
|
51
|
-
vitest: "*",
|
|
52
|
-
"knex-pglite": "*"
|
|
53
|
-
},
|
|
54
|
-
devDependencies: {
|
|
55
|
-
"@electric-sql/pglite": "*",
|
|
56
|
-
"@faasjs/deep_merge": ">=v8.0.0-beta.5",
|
|
57
|
-
"@faasjs/func": ">=v8.0.0-beta.5",
|
|
58
|
-
"@faasjs/http": ">=v8.0.0-beta.5",
|
|
59
|
-
"@faasjs/server": ">=v8.0.0-beta.5",
|
|
60
|
-
"@faasjs/knex": ">=v8.0.0-beta.5",
|
|
61
|
-
"@faasjs/load": ">=v8.0.0-beta.5",
|
|
62
|
-
"@faasjs/logger": ">=v8.0.0-beta.5",
|
|
63
|
-
"@types/node": "*",
|
|
64
|
-
knex: "*",
|
|
65
|
-
vite: "*",
|
|
66
|
-
vitest: "*",
|
|
67
|
-
"knex-pglite": "*"
|
|
68
|
-
},
|
|
69
|
-
engines: {
|
|
70
|
-
node: ">=24.0.0",
|
|
71
|
-
npm: ">=11.0.0"
|
|
72
|
-
}
|
|
73
|
-
};
|
|
3
|
+
//#region package.json
|
|
4
|
+
var version = "8.0.0-beta.7";
|
|
74
5
|
|
|
75
|
-
|
|
76
|
-
|
|
6
|
+
//#endregion
|
|
7
|
+
//#region src/cli.ts
|
|
8
|
+
const HelpText = `Generate FaasJS API/event type declarations.
|
|
77
9
|
|
|
78
10
|
Usage:
|
|
79
11
|
faas-types [options]
|
|
@@ -84,53 +16,51 @@ Options:
|
|
|
84
16
|
-v, --version Show version
|
|
85
17
|
`;
|
|
86
18
|
function parseCliArgs(argv) {
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
};
|
|
19
|
+
const args = argv.slice(2);
|
|
20
|
+
const options = {};
|
|
21
|
+
const readValue = (index, name) => {
|
|
22
|
+
const value = args[index + 1];
|
|
23
|
+
if (!value || value.startsWith("-")) throw Error(`[faas-types] Missing value for ${name}`);
|
|
24
|
+
return value;
|
|
25
|
+
};
|
|
26
|
+
for (let i = 0; i < args.length; i++) {
|
|
27
|
+
const arg = args[i];
|
|
28
|
+
if (arg === "-h" || arg === "--help") return {
|
|
29
|
+
showHelp: true,
|
|
30
|
+
options
|
|
31
|
+
};
|
|
32
|
+
if (arg === "-v" || arg === "--version") return {
|
|
33
|
+
showVersion: true,
|
|
34
|
+
options
|
|
35
|
+
};
|
|
36
|
+
if (arg === "--root") {
|
|
37
|
+
options.root = readValue(i, arg);
|
|
38
|
+
i++;
|
|
39
|
+
continue;
|
|
40
|
+
}
|
|
41
|
+
throw Error(`[faas-types] Unknown option: ${arg}`);
|
|
42
|
+
}
|
|
43
|
+
return { options };
|
|
113
44
|
}
|
|
114
45
|
async function main(argv = process.argv) {
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
return 1;
|
|
133
|
-
}
|
|
46
|
+
try {
|
|
47
|
+
const parsed = parseCliArgs(argv);
|
|
48
|
+
if (parsed.showHelp) {
|
|
49
|
+
console.log(HelpText);
|
|
50
|
+
return 0;
|
|
51
|
+
}
|
|
52
|
+
if (parsed.showVersion) {
|
|
53
|
+
console.log(version);
|
|
54
|
+
return 0;
|
|
55
|
+
}
|
|
56
|
+
const result = await generateFaasTypes(parsed.options);
|
|
57
|
+
console.log(`[faas-types] ${result.changed ? "Generated" : "Up to date"} ${result.output} (${result.routeCount} routes from ${result.fileCount} files)`);
|
|
58
|
+
return 0;
|
|
59
|
+
} catch (error) {
|
|
60
|
+
console.error(error?.message || error);
|
|
61
|
+
return 1;
|
|
62
|
+
}
|
|
134
63
|
}
|
|
135
64
|
|
|
136
|
-
|
|
65
|
+
//#endregion
|
|
66
|
+
export { main };
|