spiceflow 0.0.1

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.
Files changed (81) hide show
  1. package/README.md +178 -0
  2. package/context.d.ts +2 -0
  3. package/context.js +1 -0
  4. package/dist/babel.test.d.ts +2 -0
  5. package/dist/babel.test.d.ts.map +1 -0
  6. package/dist/babel.test.js +32 -0
  7. package/dist/babel.test.js.map +1 -0
  8. package/dist/babelDebugOutputs.d.ts +9 -0
  9. package/dist/babelDebugOutputs.d.ts.map +1 -0
  10. package/dist/babelDebugOutputs.js +40 -0
  11. package/dist/babelDebugOutputs.js.map +1 -0
  12. package/dist/babelTransformRpc.d.ts +17 -0
  13. package/dist/babelTransformRpc.d.ts.map +1 -0
  14. package/dist/babelTransformRpc.js +304 -0
  15. package/dist/babelTransformRpc.js.map +1 -0
  16. package/dist/browser.d.ts +8 -0
  17. package/dist/browser.d.ts.map +1 -0
  18. package/dist/browser.js +133 -0
  19. package/dist/browser.js.map +1 -0
  20. package/dist/build.d.ts +10 -0
  21. package/dist/build.d.ts.map +1 -0
  22. package/dist/build.js +253 -0
  23. package/dist/build.js.map +1 -0
  24. package/dist/cli.d.ts +3 -0
  25. package/dist/cli.d.ts.map +1 -0
  26. package/dist/cli.js +108 -0
  27. package/dist/cli.js.map +1 -0
  28. package/dist/context-internal.d.ts +20 -0
  29. package/dist/context-internal.d.ts.map +1 -0
  30. package/dist/context-internal.js +22 -0
  31. package/dist/context-internal.js.map +1 -0
  32. package/dist/context.d.ts +2 -0
  33. package/dist/context.d.ts.map +1 -0
  34. package/dist/context.js +8 -0
  35. package/dist/context.js.map +1 -0
  36. package/dist/expose.d.ts +6 -0
  37. package/dist/expose.d.ts.map +1 -0
  38. package/dist/expose.js +39 -0
  39. package/dist/expose.js.map +1 -0
  40. package/dist/headers.d.ts +1 -0
  41. package/dist/headers.d.ts.map +1 -0
  42. package/dist/headers.js +18 -0
  43. package/dist/headers.js.map +1 -0
  44. package/dist/index.d.ts +8 -0
  45. package/dist/index.d.ts.map +1 -0
  46. package/dist/index.js +55 -0
  47. package/dist/index.js.map +1 -0
  48. package/dist/jsonRpc.d.ts +32 -0
  49. package/dist/jsonRpc.d.ts.map +1 -0
  50. package/dist/jsonRpc.js +4 -0
  51. package/dist/jsonRpc.js.map +1 -0
  52. package/dist/server.d.ts +32 -0
  53. package/dist/server.d.ts.map +1 -0
  54. package/dist/server.js +301 -0
  55. package/dist/server.js.map +1 -0
  56. package/dist/utils.d.ts +20 -0
  57. package/dist/utils.d.ts.map +1 -0
  58. package/dist/utils.js +44 -0
  59. package/dist/utils.js.map +1 -0
  60. package/headers.d.ts +2 -0
  61. package/headers.js +1 -0
  62. package/package.json +56 -0
  63. package/sdk-template/package.json +22 -0
  64. package/sdk-template/src/index.ts +2 -0
  65. package/sdk-template/src/v1/example.ts +5 -0
  66. package/sdk-template/src/v1/generator.ts +12 -0
  67. package/sdk-template/tsconfig.json +16 -0
  68. package/src/babel.test.ts +35 -0
  69. package/src/babelDebugOutputs.ts +56 -0
  70. package/src/babelTransformRpc.ts +404 -0
  71. package/src/browser.ts +142 -0
  72. package/src/build.ts +303 -0
  73. package/src/cli.ts +118 -0
  74. package/src/context-internal.ts +36 -0
  75. package/src/context.ts +1 -0
  76. package/src/expose.ts +34 -0
  77. package/src/headers.ts +19 -0
  78. package/src/index.ts +42 -0
  79. package/src/jsonRpc.ts +43 -0
  80. package/src/server.ts +384 -0
  81. package/src/utils.ts +61 -0
@@ -0,0 +1,133 @@
1
+ "use strict";
2
+ var __await = (this && this.__await) || function (v) { return this instanceof __await ? (this.v = v, this) : new __await(v); }
3
+ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _arguments, generator) {
4
+ if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
5
+ var g = generator.apply(thisArg, _arguments || []), i, q = [];
6
+ return i = {}, verb("next"), verb("throw"), verb("return", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;
7
+ function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }
8
+ function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }
9
+ function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
10
+ function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
11
+ function fulfill(value) { resume("next", value); }
12
+ function reject(value) { resume("throw", value); }
13
+ function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
14
+ };
15
+ var __importDefault = (this && this.__importDefault) || function (mod) {
16
+ return (mod && mod.__esModule) ? mod : { "default": mod };
17
+ };
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.createRpcFetcher = void 0;
20
+ const stream_1 = require("eventsource-parser/stream");
21
+ const superjson_1 = __importDefault(require("superjson"));
22
+ let nextId = 1;
23
+ function createRpcFetcher({ url, method, isGenerator, }) {
24
+ const controller = new AbortController();
25
+ if (isGenerator) {
26
+ const generator = function rpcFetchGenerator(...args) {
27
+ return __asyncGenerator(this, arguments, function* rpcFetchGenerator_1() {
28
+ const { json, meta } = superjson_1.default.serialize(args);
29
+ const res = yield __await(fetch(url, {
30
+ method: 'POST',
31
+ headers: {
32
+ Accept: 'text/event-stream',
33
+ 'Content-Type': 'application/json',
34
+ },
35
+ signal: controller.signal,
36
+ body: JSON.stringify({
37
+ jsonrpc: '2.0',
38
+ id: nextId++,
39
+ method,
40
+ params: json,
41
+ meta,
42
+ }),
43
+ }));
44
+ if (res.status >= 400) {
45
+ const json = yield __await(res.json());
46
+ yield __await(handleJsonrpcError({ status: res.status, json }));
47
+ }
48
+ if (!res.body) {
49
+ throw new Error('No response body for generator action');
50
+ }
51
+ const eventStream = res.body
52
+ .pipeThrough(new TextDecoderStream())
53
+ .pipeThrough(new stream_1.EventSourceParserStream())
54
+ .getReader();
55
+ let isClosed = false;
56
+ try {
57
+ while (true) {
58
+ const { value: event, done } = yield __await(eventStream.read());
59
+ if (done) {
60
+ isClosed = true;
61
+ break;
62
+ }
63
+ if (!event)
64
+ continue;
65
+ if (event.data === '[DONE]') {
66
+ continue;
67
+ }
68
+ const json = JSON.parse(event.data);
69
+ const { jsonrpc, id, result, meta, error } = json;
70
+ yield __await(handleJsonrpcError({ status: res.status, json }));
71
+ const deserialized = superjson_1.default.deserialize({
72
+ json: result,
73
+ meta,
74
+ });
75
+ yield yield __await(deserialized);
76
+ }
77
+ }
78
+ finally {
79
+ // if user calls return() in the generator, we need to close the stream
80
+ if (!isClosed) {
81
+ // if stream is still open, abort controller
82
+ controller.abort();
83
+ eventStream.cancel();
84
+ }
85
+ }
86
+ });
87
+ };
88
+ return generator;
89
+ }
90
+ async function rpcFetch(...args) {
91
+ const { json: argsJson, meta } = superjson_1.default.serialize(args);
92
+ const res = await fetch(url, {
93
+ method: 'POST',
94
+ body: JSON.stringify({
95
+ jsonrpc: '2.0',
96
+ id: nextId++,
97
+ method,
98
+ params: argsJson,
99
+ meta,
100
+ }, null, 2),
101
+ headers: {
102
+ 'content-type': 'application/json',
103
+ },
104
+ });
105
+ const json = await res.json();
106
+ await handleJsonrpcError({ status: res.status, json });
107
+ {
108
+ const deserialized = superjson_1.default.deserialize({
109
+ json: json.result,
110
+ meta: json.meta,
111
+ });
112
+ return deserialized;
113
+ }
114
+ }
115
+ rpcFetch.abort = function abort() {
116
+ controller.abort();
117
+ };
118
+ return rpcFetch;
119
+ }
120
+ exports.createRpcFetcher = createRpcFetcher;
121
+ async function handleJsonrpcError({ status, json, }) {
122
+ var _a;
123
+ if (status >= 400) {
124
+ const statusError = new Error('Unexpected HTTP status ' + status);
125
+ if ((json === null || json === void 0 ? void 0 : json.error) && typeof ((_a = json.error) === null || _a === void 0 ? void 0 : _a.message) === 'string') {
126
+ let err = new Error(json.error.message);
127
+ Object.assign(err, json.error.data || {});
128
+ throw err;
129
+ }
130
+ throw statusError;
131
+ }
132
+ }
133
+ //# sourceMappingURL=browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export declare function buildOnce({ rootDir, url }: {
2
+ rootDir: any;
3
+ url: any;
4
+ }): Promise<void>;
5
+ export declare function build({ rootDir, url, watch }: {
6
+ rootDir: any;
7
+ url: any;
8
+ watch?: boolean | undefined;
9
+ }): Promise<void>;
10
+ //# sourceMappingURL=build.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"AAoBA,wBAAsB,SAAS,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE;;;CAAA,iBA6J/C;AAMD,wBAAsB,KAAK,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,KAAa,EAAE;;;;CAAA,iBA6B1D"}
package/dist/build.js ADDED
@@ -0,0 +1,253 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.build = exports.buildOnce = void 0;
7
+ const picocolors_1 = require("picocolors");
8
+ const fs_extra_1 = __importDefault(require("fs-extra"));
9
+ const api_extractor_1 = require("@microsoft/api-extractor");
10
+ const chokidar_1 = __importDefault(require("chokidar"));
11
+ const get_packages_1 = require("@manypkg/get-packages");
12
+ const core_1 = require("@babel/core");
13
+ const child_process_1 = require("child_process");
14
+ const fast_glob_1 = require("fast-glob");
15
+ const fs_1 = __importDefault(require("fs"));
16
+ const path_1 = __importDefault(require("path"));
17
+ const _1 = require(".");
18
+ const utils_1 = require("./utils");
19
+ async function buildOnce({ rootDir, url }) {
20
+ console.log();
21
+ console.log('building functions');
22
+ if (url && !url.endsWith('/')) {
23
+ // make sure that new URL uses the last portion of the path too
24
+ url += '/';
25
+ }
26
+ try {
27
+ new URL(url);
28
+ }
29
+ catch (e) {
30
+ throw new Error(`Invalid url ${url}`);
31
+ }
32
+ let libOutDir = path_1.default.resolve('dist');
33
+ let serverOutDir = path_1.default.resolve('server');
34
+ await fs_1.default.promises.rm(libOutDir, { recursive: true }).catch(() => null);
35
+ const cwd = process.cwd();
36
+ const serverEntrypoint = path_1.default.resolve(rootDir, utils_1.serverEntryName + '.ts');
37
+ try {
38
+ const globBase = path_1.default.relative(cwd, rootDir);
39
+ const globs = [path_1.default.posix.join(globBase, '**/*.{ts,tsx,js,jsx}')];
40
+ // console.log({ globs });
41
+ const allPossibleFiles = (0, fast_glob_1.globSync)(globs, {
42
+ onlyFiles: true,
43
+ absolute: true,
44
+ });
45
+ const actionFilesRelativePaths = allPossibleFiles
46
+ .filter((file) => {
47
+ const content = fs_1.default.readFileSync(file, 'utf8');
48
+ return content.includes(utils_1.directive);
49
+ })
50
+ .map((x) => {
51
+ return path_1.default.relative(rootDir, x);
52
+ });
53
+ const importsCode = actionFilesRelativePaths
54
+ .map((filePath) => {
55
+ filePath = removeExtension(filePath);
56
+ return `${JSON.stringify('/' + filePath)}: () => import('./${filePath}.js')`;
57
+ })
58
+ .join(',');
59
+ const serverExposeContent = `// this file was generated\n` +
60
+ `import { internalEdgeHandler, internalNodeJsHandler } from 'spiceflow/dist/server.js';\n` +
61
+ `export const methodsMap = {${importsCode}}\n` +
62
+ `export const edgeHandler = internalEdgeHandler({ methodsMap });\n` +
63
+ `export const nodeJsHandler = internalNodeJsHandler({ methodsMap });\n`;
64
+ if (!actionFilesRelativePaths.length) {
65
+ throw new Error('No functions files found!');
66
+ }
67
+ fs_1.default.writeFileSync(serverEntrypoint, serverExposeContent, 'utf8');
68
+ await Promise.all([
69
+ runCommand(`tsc --incremental --declaration --noEmit false --outDir ${libOutDir} `),
70
+ ]).catch((error) => {
71
+ // console.error(error);
72
+ console.error('Error running tsc, continue anyway');
73
+ });
74
+ // copy tsc output to server dir
75
+ await fs_extra_1.default.copy(libOutDir, serverOutDir, { overwrite: true });
76
+ // rename serverEntryName to index
77
+ const tscOutFiles = fs_1.default.readdirSync(serverOutDir);
78
+ for (const file of tscOutFiles) {
79
+ if (file.startsWith(utils_1.serverEntryName)) {
80
+ const remaining = file.slice(utils_1.serverEntryName.length);
81
+ fs_1.default.renameSync(path_1.default.resolve(serverOutDir, file), path_1.default.resolve(serverOutDir, 'index' + remaining));
82
+ }
83
+ }
84
+ const imports = [];
85
+ for (let actionFile of actionFilesRelativePaths) {
86
+ const abs = path_1.default.resolve(rootDir, actionFile);
87
+ const content = fs_1.default.readFileSync(abs, 'utf8');
88
+ const actionName = path_1.default.basename(actionFile, path_1.default.extname(actionFile));
89
+ const res = (0, core_1.transform)(content || '', {
90
+ babelrc: false,
91
+ sourceType: 'module',
92
+ plugins: (0, _1.plugins)({
93
+ isServer: false,
94
+ url,
95
+ rootDir,
96
+ }),
97
+ filename: abs,
98
+ sourceMaps: false,
99
+ });
100
+ if (!res || !res.code) {
101
+ console.error(`Error transforming ${actionFile}, returned nothing, maybe not an action?`);
102
+ continue;
103
+ }
104
+ const importPath = './' +
105
+ path_1.default.posix.join(path_1.default.posix.dirname(actionFile), actionName + '.js');
106
+ console.log(`processed ${importPath}`);
107
+ imports.push(importPath);
108
+ fs_1.default.mkdirSync(path_1.default.resolve(libOutDir, path_1.default.dirname(importPath)), {
109
+ recursive: true,
110
+ });
111
+ fs_1.default.writeFileSync(path_1.default.resolve(libOutDir, importPath), res.code, 'utf-8');
112
+ }
113
+ // const generator = createGenerator({
114
+ // path: dtsOutputFilePath,
115
+ // type: '*',
116
+ // tsconfig: 'tsconfig.json',
117
+ // skipTypeCheck: true,
118
+ // functions: 'comment',
119
+ // });
120
+ // const schema = generator.createSchema();
121
+ // fs.writeFileSync(
122
+ // path.resolve(outDir, 'schema.json'),
123
+ // JSON.stringify(schema, null, 2),
124
+ // );
125
+ const bundledPackages = (await (0, get_packages_1.getPackages)(process.cwd())).packages.map((x) => x.packageJson.name);
126
+ // TODO devDependencies should be bundled too, given these are not shipped with the SDK
127
+ if (!bundledPackages.length) {
128
+ console.log('no workspace packages found, skipping types bundling');
129
+ return;
130
+ }
131
+ for (const actionFile of actionFilesRelativePaths) {
132
+ const entryPointDts = path_1.default.resolve(libOutDir,
133
+ // path.relative(process.cwd(), rootDir),
134
+ path_1.default.dirname(actionFile), path_1.default.basename(actionFile, path_1.default.extname(actionFile)) + '.d.ts');
135
+ console.log(`bundling types for ${path_1.default.relative(cwd, entryPointDts)}`);
136
+ rollupDtsFile({
137
+ bundledPackages,
138
+ inputFilePath: entryPointDts,
139
+ outputFilePath: entryPointDts,
140
+ tsconfigFilePath: 'tsconfig.json',
141
+ });
142
+ }
143
+ }
144
+ finally {
145
+ await fs_1.default.promises.unlink(serverEntrypoint).catch(() => null);
146
+ }
147
+ }
148
+ exports.buildOnce = buildOnce;
149
+ const logger = console;
150
+ let isBuilding = { ref: false };
151
+ let missedWatch = { ref: false };
152
+ async function build({ rootDir, url, watch = false }) {
153
+ await buildOnce({ rootDir, url });
154
+ if (!watch) {
155
+ return;
156
+ }
157
+ const watcher = chokidar_1.default.watch(rootDir, {
158
+ // ignored: /(^|[\/\\])\../, // ignore dotfiles
159
+ ignored: ['**/node_modules/**', '**/dist/**', `src/${utils_1.serverEntryName}.ts`],
160
+ persistent: true,
161
+ });
162
+ console.log('watching for changes');
163
+ watcher.on('change', async (path, stats) => {
164
+ if (isBuilding.ref) {
165
+ missedWatch.ref = true;
166
+ return;
167
+ }
168
+ isBuilding.ref = true;
169
+ try {
170
+ logger.log(`detected change in ${path}`);
171
+ await buildOnce({ rootDir, url });
172
+ if (missedWatch.ref) {
173
+ // logger.log('missed a change, rebuilding');
174
+ await buildOnce({ rootDir, url });
175
+ missedWatch.ref = false;
176
+ }
177
+ }
178
+ finally {
179
+ isBuilding.ref = false;
180
+ }
181
+ });
182
+ }
183
+ exports.build = build;
184
+ function rollupDtsFile({ inputFilePath, outputFilePath, tsconfigFilePath, bundledPackages, }) {
185
+ let cwd = process.cwd();
186
+ if (!fs_1.default.existsSync(tsconfigFilePath)) {
187
+ throw new Error(`tsconfig.json not found at ${tsconfigFilePath}`);
188
+ }
189
+ let packageJsonFullPath = path_1.default.join(cwd, 'package.json');
190
+ const extractorConfig = api_extractor_1.ExtractorConfig.prepare({
191
+ configObject: {
192
+ mainEntryPointFilePath: inputFilePath,
193
+ bundledPackages,
194
+ apiReport: {
195
+ enabled: false,
196
+ // `reportFileName` is not been used. It's just to fit the requirement of API Extractor.
197
+ reportFileName: 'report.html',
198
+ },
199
+ docModel: { apiJsonFilePath: 'api.json', enabled: false },
200
+ dtsRollup: {
201
+ enabled: true,
202
+ untrimmedFilePath: outputFilePath,
203
+ },
204
+ tsdocMetadata: { enabled: false, tsdocMetadataFilePath: 'another.json' },
205
+ compiler: {
206
+ tsconfigFilePath: tsconfigFilePath,
207
+ },
208
+ projectFolder: cwd,
209
+ },
210
+ configObjectFullPath: undefined,
211
+ packageJsonFullPath,
212
+ });
213
+ // Invoke API Extractor
214
+ const extractorResult = api_extractor_1.Extractor.invoke(extractorConfig, {
215
+ // Equivalent to the "--local" command-line parameter
216
+ localBuild: true,
217
+ messageCallback: (message) => {
218
+ switch (message.messageId) {
219
+ case api_extractor_1.ConsoleMessageId.ApiReportCreated:
220
+ message.logLevel = api_extractor_1.ExtractorLogLevel.None;
221
+ break;
222
+ case api_extractor_1.ConsoleMessageId.Preamble:
223
+ message.logLevel = api_extractor_1.ExtractorLogLevel.None;
224
+ break;
225
+ }
226
+ },
227
+ showDiagnostics: false,
228
+ // Equivalent to the "--verbose" command-line parameter
229
+ showVerboseMessages: false,
230
+ });
231
+ if (!extractorResult.succeeded) {
232
+ throw new Error(`API Extractor completed with ${extractorResult.errorCount} errors and ${extractorResult.warningCount} warnings when processing ${inputFilePath}`);
233
+ }
234
+ }
235
+ function removeExtension(filePath) {
236
+ return filePath.replace(/\.[j|t]sx?$/, '');
237
+ }
238
+ function runCommand(command) {
239
+ return new Promise((resolve, reject) => {
240
+ (0, child_process_1.exec)(command, {}, (error, stdout, stderr) => {
241
+ if (error) {
242
+ console.log();
243
+ console.error((0, picocolors_1.red)(stdout));
244
+ console.error((0, picocolors_1.red)(stderr));
245
+ reject(error);
246
+ }
247
+ else {
248
+ resolve(stdout);
249
+ }
250
+ });
251
+ });
252
+ }
253
+ //# sourceMappingURL=build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #! /usr/bin/env node
2
+ export declare const cli: import("cac").CAC;
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAYA,eAAO,MAAM,GAAG,mBAAQ,CAAC"}
package/dist/cli.js ADDED
@@ -0,0 +1,108 @@
1
+ #! /usr/bin/env node
2
+ "use strict";
3
+ var __importDefault = (this && this.__importDefault) || function (mod) {
4
+ return (mod && mod.__esModule) ? mod : { "default": mod };
5
+ };
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.cli = void 0;
8
+ const fs_extra_1 = __importDefault(require("fs-extra"));
9
+ const fs_extra_2 = __importDefault(require("fs-extra"));
10
+ const cac_1 = require("cac");
11
+ const build_js_1 = require("./build.js");
12
+ const index_js_1 = require("./index.js");
13
+ const child_process_1 = require("child_process");
14
+ const path_1 = __importDefault(require("path"));
15
+ exports.cli = (0, cac_1.cac)();
16
+ exports.cli
17
+ .command('', 'Generate an SDK package for your functions')
18
+ .option('--watch', 'Watch for changes')
19
+ .option('--url <url>', 'URL of the package, including the base path', {
20
+ default: 'http://localhost:3333',
21
+ })
22
+ .action(async (options) => {
23
+ const { url, watch } = options;
24
+ const rootDir = await (0, index_js_1.findRootDir)(process.cwd());
25
+ await (0, build_js_1.build)({ rootDir, url, watch });
26
+ });
27
+ exports.cli
28
+ .command('init', 'Generate a new spiceflow project')
29
+ .option('--name <name>', 'Name of this project')
30
+ .action(async (options) => {
31
+ // copy contents of the template dir here
32
+ const { name } = options;
33
+ if (!name) {
34
+ throw new Error('--name is required');
35
+ }
36
+ fs_extra_1.default.copySync(path_1.default.resolve(__dirname, '../sdk-template'), name, {
37
+ filter(pathname) {
38
+ return (!pathname.includes('node_modules') &&
39
+ !pathname.includes('dist') &&
40
+ !pathname.endsWith('.tsbuildinfo'));
41
+ },
42
+ });
43
+ // replace the package.json name
44
+ const packageJsonPath = path_1.default.resolve(name, 'package.json');
45
+ const packageJson = JSON.parse(fs_extra_2.default.readFileSync(packageJsonPath, 'utf8'));
46
+ packageJson.name = name;
47
+ delete packageJson.private;
48
+ // replace workspace:* with * from the package.json
49
+ for (const key of Object.keys(packageJson.dependencies || {})) {
50
+ const value = packageJson.dependencies[key];
51
+ if (value && value.startsWith('workspace:')) {
52
+ packageJson.dependencies[key] = '*';
53
+ }
54
+ }
55
+ fs_extra_2.default.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2));
56
+ });
57
+ exports.cli
58
+ .command('serve', 'Expose a server for your functions')
59
+ .option('--basePath', 'base path for the server', { default: '/' })
60
+ .option('--port <port>', 'Port to listen on', { default: '3333' })
61
+ .option('--watch', 'Watch for changes')
62
+ .option('--skip-build', 'Skip building the server and SDK, you must build it yourself first')
63
+ .action(async (options) => {
64
+ let { basePath, skipBuild, watch, port } = options;
65
+ const nodePath = process.execPath || 'node';
66
+ const rootDir = await (0, index_js_1.findRootDir)(process.cwd());
67
+ if (!skipBuild) {
68
+ await (0, build_js_1.build)({ rootDir, watch, url: `http://127.0.0.1:${port}` });
69
+ }
70
+ const tempFilePath = path_1.default.resolve('_main.mjs');
71
+ const code = `import { methodsMap } from './server/index.js'; import { exposeNodeServer } from 'spiceflow/dist/expose.js'; exposeNodeServer({ methodsMap, basePath: '${basePath}', port: ${port} });`;
72
+ fs_extra_2.default.writeFileSync(tempFilePath, code);
73
+ process.on('SIGINT', () => {
74
+ try {
75
+ fs_extra_2.default.unlinkSync(tempFilePath);
76
+ }
77
+ catch (_a) { }
78
+ process.exit(0);
79
+ });
80
+ // only enable watch if it's supported by node version
81
+ const major = parseInt(process.version.replace('v', '').split('.')[0]);
82
+ if (major && major < 18) {
83
+ console.log(`node version ${process.version} does not support --watch`);
84
+ watch = false;
85
+ }
86
+ try {
87
+ await new Promise((resolve, reject) => {
88
+ const p = (0, child_process_1.spawn)(`${nodePath} --no-warnings ${watch ? '--watch' : ''} ${JSON.stringify(tempFilePath)}`, {
89
+ stdio: 'inherit',
90
+ shell: true,
91
+ });
92
+ p.on('close', (code) => {
93
+ if (code === 0) {
94
+ resolve();
95
+ }
96
+ else {
97
+ reject();
98
+ }
99
+ });
100
+ });
101
+ }
102
+ finally {
103
+ fs_extra_2.default.unlinkSync(tempFilePath);
104
+ }
105
+ });
106
+ exports.cli.help();
107
+ exports.cli.parse();
108
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /// <reference types="node" />
2
+ /// <reference types="node" />
3
+ import { AsyncLocalStorage } from 'async_hooks';
4
+ import type { IncomingMessage, ServerResponse } from 'http';
5
+ interface CommonContext {
6
+ }
7
+ interface NodejsContext extends CommonContext {
8
+ req?: IncomingMessage;
9
+ res?: ServerResponse;
10
+ }
11
+ interface EdgeContext extends CommonContext {
12
+ req?: Request;
13
+ res?: Response;
14
+ }
15
+ export declare const asyncLocalStorage: AsyncLocalStorage<NodejsContext | EdgeContext>;
16
+ export declare function getNodejsContext(): NodejsContext;
17
+ export declare function getEdgeContext(): EdgeContext;
18
+ export declare function getContext(): CommonContext;
19
+ export {};
20
+ //# sourceMappingURL=context-internal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-internal.d.ts","sourceRoot":"","sources":["../src/context-internal.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AAE5D,UAAU,aAAa;CAGtB;AACD,UAAU,aAAc,SAAQ,aAAa;IAC3C,GAAG,CAAC,EAAE,eAAe,CAAC;IACtB,GAAG,CAAC,EAAE,cAAc,CAAC;CACtB;AACD,UAAU,WAAY,SAAQ,aAAa;IACzC,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,GAAG,CAAC,EAAE,QAAQ,CAAC;CAChB;AAOD,eAAO,MAAM,iBAAiB,gDAE3B,CAAC;AAEJ,wBAAgB,gBAAgB,IAAI,aAAa,CAEhD;AAED,wBAAgB,cAAc,IAAI,WAAW,CAE5C;AAED,wBAAgB,UAAU,IAAI,aAAa,CAE1C"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getContext = exports.getEdgeContext = exports.getNodejsContext = exports.asyncLocalStorage = void 0;
4
+ const async_hooks_1 = require("async_hooks");
5
+ const DEFAULT_CONTEXT = {
6
+ // headers() {},
7
+ // cookies() {},
8
+ };
9
+ exports.asyncLocalStorage = new async_hooks_1.AsyncLocalStorage();
10
+ function getNodejsContext() {
11
+ return exports.asyncLocalStorage.getStore() || DEFAULT_CONTEXT;
12
+ }
13
+ exports.getNodejsContext = getNodejsContext;
14
+ function getEdgeContext() {
15
+ return exports.asyncLocalStorage.getStore() || DEFAULT_CONTEXT;
16
+ }
17
+ exports.getEdgeContext = getEdgeContext;
18
+ function getContext() {
19
+ return exports.asyncLocalStorage.getStore() || DEFAULT_CONTEXT;
20
+ }
21
+ exports.getContext = getContext;
22
+ //# sourceMappingURL=context-internal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-internal.js","sourceRoot":"","sources":["../src/context-internal.ts"],"names":[],"mappings":";;;AAAA,6CAAgD;AAgBhD,MAAM,eAAe,GAAG;AACtB,gBAAgB;AAChB,gBAAgB;CACjB,CAAC;AAEW,QAAA,iBAAiB,GAAG,IAAI,+BAAiB,EAEnD,CAAC;AAEJ,SAAgB,gBAAgB;IAC9B,OAAQ,yBAAiB,CAAC,QAAQ,EAAoB,IAAI,eAAe,CAAC;AAC5E,CAAC;AAFD,4CAEC;AAED,SAAgB,cAAc;IAC5B,OAAQ,yBAAiB,CAAC,QAAQ,EAAkB,IAAI,eAAe,CAAC;AAC1E,CAAC;AAFD,wCAEC;AAED,SAAgB,UAAU;IACxB,OAAO,yBAAiB,CAAC,QAAQ,EAAE,IAAI,eAAe,CAAC;AACzD,CAAC;AAFD,gCAEC"}
@@ -0,0 +1,2 @@
1
+ export { getNodejsContext, getEdgeContext, getContext } from './context-internal';
2
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getContext = exports.getEdgeContext = exports.getNodejsContext = void 0;
4
+ var context_internal_1 = require("./context-internal");
5
+ Object.defineProperty(exports, "getNodejsContext", { enumerable: true, get: function () { return context_internal_1.getNodejsContext; } });
6
+ Object.defineProperty(exports, "getEdgeContext", { enumerable: true, get: function () { return context_internal_1.getEdgeContext; } });
7
+ Object.defineProperty(exports, "getContext", { enumerable: true, get: function () { return context_internal_1.getContext; } });
8
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":";;;AAAA,uDAAkF;AAAzE,oHAAA,gBAAgB,OAAA;AAAE,kHAAA,cAAc,OAAA;AAAE,8GAAA,UAAU,OAAA"}
@@ -0,0 +1,6 @@
1
+ export declare function exposeNodeServer({ methodsMap, basePath, port }: {
2
+ methodsMap: any;
3
+ basePath: any;
4
+ port: any;
5
+ }): Promise<void>;
6
+ //# sourceMappingURL=expose.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expose.d.ts","sourceRoot":"","sources":["../src/expose.ts"],"names":[],"mappings":"AAGA,wBAAsB,gBAAgB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE;;;;CAAA,iBA8BpE"}