@nlabs/lex 1.57.0 → 1.58.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.
- package/README.md +8 -8
- package/examples/serverless-example/README.md +2 -2
- package/lib/commands/{package-lambda/package-lambda.d.ts → serverless-deploy/serverless-deploy.d.ts} +3 -3
- package/lib/commands/serverless-deploy/serverless-deploy.js +110 -0
- package/lib/commands/{serverless/serverless.d.ts → serverless-dev/serverless-dev.d.ts} +3 -3
- package/lib/commands/serverless-dev/serverless-dev.js +952 -0
- package/lib/index.d.ts +2 -2
- package/lib/index.js +3 -3
- package/lib/lex.js +6 -6
- package/package.json +1 -1
- package/lib/commands/package-lambda/package-lambda.js +0 -110
- package/lib/commands/serverless/serverless.js +0 -952
package/README.md
CHANGED
|
@@ -92,7 +92,7 @@ Lex comes with everything you need for modern React development:
|
|
|
92
92
|
| Command | Description | Quick Example |
|
|
93
93
|
|---------|-------------|---------------|
|
|
94
94
|
| [`lex dev`](#dev) | Start development server | `lex dev --open` |
|
|
95
|
-
| [`lex serverless`](#serverless) | Start serverless development server | `lex serverless --host 0.0.0.0` |
|
|
95
|
+
| [`lex serverless-dev`](#serverless-dev) | Start serverless development server | `lex serverless-dev --host 0.0.0.0` |
|
|
96
96
|
| [`lex compile`](#compile) | Compile TypeScript/JavaScript | `lex compile --watch` |
|
|
97
97
|
| [`lex build`](#build) | Build for production | `lex build --mode production` |
|
|
98
98
|
|
|
@@ -166,25 +166,25 @@ export default {
|
|
|
166
166
|
|
|
167
167
|
**Static Assets**: Use the `webpack.staticPath` configuration to specify a directory for static assets (images, videos, audio, PDFs, etc.). Files in this directory will be automatically copied to the output and optimized for web delivery.
|
|
168
168
|
|
|
169
|
-
### **Serverless Development Server** {#serverless}
|
|
169
|
+
### **Serverless Development Server** {#serverless-dev}
|
|
170
170
|
|
|
171
171
|
```bash
|
|
172
172
|
# Start serverless development server
|
|
173
|
-
lex serverless
|
|
173
|
+
lex serverless-dev
|
|
174
174
|
|
|
175
175
|
# With custom host and ports
|
|
176
|
-
lex serverless --host 0.0.0.0 --httpPort 4000 --wsPort 4002
|
|
176
|
+
lex serverless-dev --host 0.0.0.0 --httpPort 4000 --wsPort 4002
|
|
177
177
|
|
|
178
178
|
# With environment variables
|
|
179
|
-
lex serverless --variables '{"NODE_ENV":"development","API_KEY":"test"}'
|
|
179
|
+
lex serverless-dev --variables '{"NODE_ENV":"development","API_KEY":"test"}'
|
|
180
180
|
|
|
181
181
|
# With GraphQL debug logging
|
|
182
|
-
lex serverless --debug --printOutput
|
|
182
|
+
lex serverless-dev --debug --printOutput
|
|
183
183
|
```
|
|
184
184
|
|
|
185
185
|
**AWS Lambda Simulation**: Lex provides a local development server similar to serverless-offline, allowing you to test AWS Lambda functions with HTTP and WebSocket support.
|
|
186
186
|
|
|
187
|
-
**Configuration**: Configure your serverless functions in `lex.config.mjs`. See the [Serverless Documentation](src/commands/serverless/serverless.docs.md) for detailed configuration options.
|
|
187
|
+
**Configuration**: Configure your serverless functions in `lex.config.mjs`. See the [Serverless Documentation](src/commands/serverless-dev/serverless-dev.docs.md) for detailed configuration options.
|
|
188
188
|
|
|
189
189
|
```javascript
|
|
190
190
|
export default {
|
|
@@ -202,7 +202,7 @@ export default {
|
|
|
202
202
|
|
|
203
203
|
`--httpPort`, `--httpsPort`, and `--wsPort` override these config values.
|
|
204
204
|
|
|
205
|
-
**Environment Variables**: The serverless command automatically loads environment variables from `.env`, `.env.local`, and `.env.development` files, with command-line variables taking precedence.
|
|
205
|
+
**Environment Variables**: The `serverless-dev` command automatically loads environment variables from `.env`, `.env.local`, and `.env.development` files, with command-line variables taking precedence.
|
|
206
206
|
|
|
207
207
|
### **Production Builds**
|
|
208
208
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Serverless Example
|
|
2
2
|
|
|
3
|
-
This example demonstrates how to use the `lex serverless` command to run AWS Lambda functions locally with HTTP and WebSocket support.
|
|
3
|
+
This example demonstrates how to use the `lex serverless-dev` command to run AWS Lambda functions locally with HTTP and WebSocket support.
|
|
4
4
|
|
|
5
5
|
## Setup
|
|
6
6
|
|
|
@@ -13,7 +13,7 @@ cd examples/serverless-example
|
|
|
13
13
|
2. Start the serverless development server:
|
|
14
14
|
|
|
15
15
|
```bash
|
|
16
|
-
lex serverless
|
|
16
|
+
lex serverless-dev
|
|
17
17
|
```
|
|
18
18
|
|
|
19
19
|
## Available Endpoints
|
package/lib/commands/{package-lambda/package-lambda.d.ts → serverless-deploy/serverless-deploy.d.ts}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export interface
|
|
1
|
+
export interface ServerlessDeployOptions {
|
|
2
2
|
readonly bundle?: boolean;
|
|
3
3
|
readonly cliName?: string;
|
|
4
4
|
readonly copyNodeModule?: string | string[];
|
|
@@ -16,5 +16,5 @@ export interface PackageLambdaOptions {
|
|
|
16
16
|
readonly sourcemap?: boolean;
|
|
17
17
|
readonly target?: string;
|
|
18
18
|
}
|
|
19
|
-
export type
|
|
20
|
-
export declare const
|
|
19
|
+
export type ServerlessDeployCallback = (status: number) => void;
|
|
20
|
+
export declare const serverlessDeploy: (cmd: ServerlessDeployOptions, callback?: ServerlessDeployCallback) => Promise<number>;
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2018-Present, Nitrogen Labs, Inc.
|
|
3
|
+
* Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
|
|
4
|
+
*/ import { execa } from 'execa';
|
|
5
|
+
import { cpSync, existsSync, mkdirSync, rmSync, statSync } from 'fs';
|
|
6
|
+
import { dirname, resolve } from 'path';
|
|
7
|
+
import { log } from '../../utils/log.js';
|
|
8
|
+
const toList = (value)=>{
|
|
9
|
+
if (!value) return [];
|
|
10
|
+
return Array.isArray(value) ? value : [
|
|
11
|
+
value
|
|
12
|
+
];
|
|
13
|
+
};
|
|
14
|
+
const formatSize = (bytes)=>{
|
|
15
|
+
if (bytes < 1024) return `${bytes} B`;
|
|
16
|
+
if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;
|
|
17
|
+
return `${(bytes / 1024 / 1024).toFixed(1)} MB`;
|
|
18
|
+
};
|
|
19
|
+
export const serverlessDeploy = async (cmd, callback = ()=>({}))=>{
|
|
20
|
+
const { bundle = true, cliName = 'Lex', entry, format = 'cjs', mainFields = 'module,main', minify = false, nodeModulesPath = './node_modules', output = './lambda-package.zip', packageDir = './.lex/lambda-package', platform = 'node', quiet, sourcemap = false, target = 'node24' } = cmd;
|
|
21
|
+
if (!entry) {
|
|
22
|
+
log(`\n${cliName} Error: --entry is required.`, 'error', quiet);
|
|
23
|
+
callback(1);
|
|
24
|
+
return 1;
|
|
25
|
+
}
|
|
26
|
+
const entryPath = resolve(process.cwd(), entry);
|
|
27
|
+
if (!existsSync(entryPath)) {
|
|
28
|
+
log(`\n${cliName} Error: Entry file not found, "${entry}".`, 'error', quiet);
|
|
29
|
+
callback(1);
|
|
30
|
+
return 1;
|
|
31
|
+
}
|
|
32
|
+
const outputPath = resolve(process.cwd(), output);
|
|
33
|
+
const packagePath = resolve(process.cwd(), packageDir);
|
|
34
|
+
const outfile = resolve(process.cwd(), cmd.outfile || `${packageDir}/index.js`);
|
|
35
|
+
try {
|
|
36
|
+
log(`${cliName} packaging Lambda bundle...`, 'info', quiet);
|
|
37
|
+
rmSync(packagePath, {
|
|
38
|
+
force: true,
|
|
39
|
+
recursive: true
|
|
40
|
+
});
|
|
41
|
+
rmSync(outputPath, {
|
|
42
|
+
force: true
|
|
43
|
+
});
|
|
44
|
+
mkdirSync(dirname(outfile), {
|
|
45
|
+
recursive: true
|
|
46
|
+
});
|
|
47
|
+
const esbuildArgs = [
|
|
48
|
+
entryPath,
|
|
49
|
+
bundle ? '--bundle' : '--bundle=false',
|
|
50
|
+
`--platform=${platform}`,
|
|
51
|
+
`--target=${target}`,
|
|
52
|
+
`--format=${format}`,
|
|
53
|
+
`--main-fields=${mainFields}`,
|
|
54
|
+
'--tree-shaking=true',
|
|
55
|
+
'--legal-comments=none',
|
|
56
|
+
`--outfile=${outfile}`
|
|
57
|
+
];
|
|
58
|
+
if (minify) {
|
|
59
|
+
esbuildArgs.push('--minify');
|
|
60
|
+
}
|
|
61
|
+
if (sourcemap) {
|
|
62
|
+
esbuildArgs.push('--sourcemap');
|
|
63
|
+
}
|
|
64
|
+
for (const external of toList(cmd.external)){
|
|
65
|
+
esbuildArgs.push(`--external:${external}`);
|
|
66
|
+
}
|
|
67
|
+
await execa('npx', [
|
|
68
|
+
'--no-install',
|
|
69
|
+
'esbuild',
|
|
70
|
+
...esbuildArgs
|
|
71
|
+
], {
|
|
72
|
+
cwd: process.cwd(),
|
|
73
|
+
stdio: 'inherit'
|
|
74
|
+
});
|
|
75
|
+
for (const moduleName of toList(cmd.copyNodeModule)){
|
|
76
|
+
const source = resolve(process.cwd(), nodeModulesPath, moduleName);
|
|
77
|
+
const destination = resolve(packagePath, 'node_modules', moduleName);
|
|
78
|
+
if (!existsSync(source)) {
|
|
79
|
+
log(`${cliName} warning: node module not found, "${moduleName}".`, 'warn', quiet);
|
|
80
|
+
continue;
|
|
81
|
+
}
|
|
82
|
+
mkdirSync(dirname(destination), {
|
|
83
|
+
recursive: true
|
|
84
|
+
});
|
|
85
|
+
cpSync(source, destination, {
|
|
86
|
+
recursive: true
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
mkdirSync(dirname(outputPath), {
|
|
90
|
+
recursive: true
|
|
91
|
+
});
|
|
92
|
+
await execa('zip', [
|
|
93
|
+
'-qr',
|
|
94
|
+
outputPath,
|
|
95
|
+
'.'
|
|
96
|
+
], {
|
|
97
|
+
cwd: packagePath,
|
|
98
|
+
stdio: 'inherit'
|
|
99
|
+
});
|
|
100
|
+
log(`${cliName} Lambda package created: ${outputPath} (${formatSize(statSync(outputPath).size)})`, 'success', quiet);
|
|
101
|
+
callback(0);
|
|
102
|
+
return 0;
|
|
103
|
+
} catch (error) {
|
|
104
|
+
log(`\n${cliName} Error: Lambda package failed. ${error.message}`, 'error', quiet);
|
|
105
|
+
callback(1);
|
|
106
|
+
return 1;
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9zZXJ2ZXJsZXNzLWRlcGxveS9zZXJ2ZXJsZXNzLWRlcGxveS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOC1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IHtleGVjYX0gZnJvbSAnZXhlY2EnO1xuaW1wb3J0IHtjcFN5bmMsIGV4aXN0c1N5bmMsIG1rZGlyU3luYywgcm1TeW5jLCBzdGF0U3luY30gZnJvbSAnZnMnO1xuaW1wb3J0IHtkaXJuYW1lLCByZXNvbHZlfSBmcm9tICdwYXRoJztcblxuaW1wb3J0IHtsb2d9IGZyb20gJy4uLy4uL3V0aWxzL2xvZy5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmVybGVzc0RlcGxveU9wdGlvbnMge1xuICByZWFkb25seSBidW5kbGU/OiBib29sZWFuO1xuICByZWFkb25seSBjbGlOYW1lPzogc3RyaW5nO1xuICByZWFkb25seSBjb3B5Tm9kZU1vZHVsZT86IHN0cmluZyB8IHN0cmluZ1tdO1xuICByZWFkb25seSBlbnRyeT86IHN0cmluZztcbiAgcmVhZG9ubHkgZXh0ZXJuYWw/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgcmVhZG9ubHkgZm9ybWF0PzogJ2NqcycgfCAnZXNtJztcbiAgcmVhZG9ubHkgbWFpbkZpZWxkcz86IHN0cmluZztcbiAgcmVhZG9ubHkgbWluaWZ5PzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgbm9kZU1vZHVsZXNQYXRoPzogc3RyaW5nO1xuICByZWFkb25seSBvdXRmaWxlPzogc3RyaW5nO1xuICByZWFkb25seSBvdXRwdXQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHBhY2thZ2VEaXI/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHBsYXRmb3JtPzogJ25vZGUnO1xuICByZWFkb25seSBxdWlldD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHNvdXJjZW1hcD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHRhcmdldD86IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgU2VydmVybGVzc0RlcGxveUNhbGxiYWNrID0gKHN0YXR1czogbnVtYmVyKSA9PiB2b2lkO1xuXG5jb25zdCB0b0xpc3QgPSAodmFsdWU/OiBzdHJpbmcgfCBzdHJpbmdbXSk6IHN0cmluZ1tdID0+IHtcbiAgaWYoIXZhbHVlKSByZXR1cm4gW107XG4gIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXTtcbn07XG5cbmNvbnN0IGZvcm1hdFNpemUgPSAoYnl0ZXM6IG51bWJlcik6IHN0cmluZyA9PiB7XG4gIGlmKGJ5dGVzIDwgMTAyNCkgcmV0dXJuIGAke2J5dGVzfSBCYDtcbiAgaWYoYnl0ZXMgPCAxMDI0ICogMTAyNCkgcmV0dXJuIGAkeyhieXRlcyAvIDEwMjQpLnRvRml4ZWQoMSl9IEtCYDtcbiAgcmV0dXJuIGAkeyhieXRlcyAvIDEwMjQgLyAxMDI0KS50b0ZpeGVkKDEpfSBNQmA7XG59O1xuXG5leHBvcnQgY29uc3Qgc2VydmVybGVzc0RlcGxveSA9IGFzeW5jIChcbiAgY21kOiBTZXJ2ZXJsZXNzRGVwbG95T3B0aW9ucyxcbiAgY2FsbGJhY2s6IFNlcnZlcmxlc3NEZXBsb3lDYWxsYmFjayA9ICgpID0+ICh7fSlcbik6IFByb21pc2U8bnVtYmVyPiA9PiB7XG4gIGNvbnN0IHtcbiAgICBidW5kbGUgPSB0cnVlLFxuICAgIGNsaU5hbWUgPSAnTGV4JyxcbiAgICBlbnRyeSxcbiAgICBmb3JtYXQgPSAnY2pzJyxcbiAgICBtYWluRmllbGRzID0gJ21vZHVsZSxtYWluJyxcbiAgICBtaW5pZnkgPSBmYWxzZSxcbiAgICBub2RlTW9kdWxlc1BhdGggPSAnLi9ub2RlX21vZHVsZXMnLFxuICAgIG91dHB1dCA9ICcuL2xhbWJkYS1wYWNrYWdlLnppcCcsXG4gICAgcGFja2FnZURpciA9ICcuLy5sZXgvbGFtYmRhLXBhY2thZ2UnLFxuICAgIHBsYXRmb3JtID0gJ25vZGUnLFxuICAgIHF1aWV0LFxuICAgIHNvdXJjZW1hcCA9IGZhbHNlLFxuICAgIHRhcmdldCA9ICdub2RlMjQnXG4gIH0gPSBjbWQ7XG5cbiAgaWYoIWVudHJ5KSB7XG4gICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiAtLWVudHJ5IGlzIHJlcXVpcmVkLmAsICdlcnJvcicsIHF1aWV0KTtcbiAgICBjYWxsYmFjaygxKTtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIGNvbnN0IGVudHJ5UGF0aCA9IHJlc29sdmUocHJvY2Vzcy5jd2QoKSwgZW50cnkpO1xuICBpZighZXhpc3RzU3luYyhlbnRyeVBhdGgpKSB7XG4gICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiBFbnRyeSBmaWxlIG5vdCBmb3VuZCwgXCIke2VudHJ5fVwiLmAsICdlcnJvcicsIHF1aWV0KTtcbiAgICBjYWxsYmFjaygxKTtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIGNvbnN0IG91dHB1dFBhdGggPSByZXNvbHZlKHByb2Nlc3MuY3dkKCksIG91dHB1dCk7XG4gIGNvbnN0IHBhY2thZ2VQYXRoID0gcmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCBwYWNrYWdlRGlyKTtcbiAgY29uc3Qgb3V0ZmlsZSA9IHJlc29sdmUocHJvY2Vzcy5jd2QoKSwgY21kLm91dGZpbGUgfHwgYCR7cGFja2FnZURpcn0vaW5kZXguanNgKTtcblxuICB0cnkge1xuICAgIGxvZyhgJHtjbGlOYW1lfSBwYWNrYWdpbmcgTGFtYmRhIGJ1bmRsZS4uLmAsICdpbmZvJywgcXVpZXQpO1xuXG4gICAgcm1TeW5jKHBhY2thZ2VQYXRoLCB7Zm9yY2U6IHRydWUsIHJlY3Vyc2l2ZTogdHJ1ZX0pO1xuICAgIHJtU3luYyhvdXRwdXRQYXRoLCB7Zm9yY2U6IHRydWV9KTtcbiAgICBta2RpclN5bmMoZGlybmFtZShvdXRmaWxlKSwge3JlY3Vyc2l2ZTogdHJ1ZX0pO1xuXG4gICAgY29uc3QgZXNidWlsZEFyZ3MgPSBbXG4gICAgICBlbnRyeVBhdGgsXG4gICAgICBidW5kbGUgPyAnLS1idW5kbGUnIDogJy0tYnVuZGxlPWZhbHNlJyxcbiAgICAgIGAtLXBsYXRmb3JtPSR7cGxhdGZvcm19YCxcbiAgICAgIGAtLXRhcmdldD0ke3RhcmdldH1gLFxuICAgICAgYC0tZm9ybWF0PSR7Zm9ybWF0fWAsXG4gICAgICBgLS1tYWluLWZpZWxkcz0ke21haW5GaWVsZHN9YCxcbiAgICAgICctLXRyZWUtc2hha2luZz10cnVlJyxcbiAgICAgICctLWxlZ2FsLWNvbW1lbnRzPW5vbmUnLFxuICAgICAgYC0tb3V0ZmlsZT0ke291dGZpbGV9YFxuICAgIF07XG5cbiAgICBpZihtaW5pZnkpIHtcbiAgICAgIGVzYnVpbGRBcmdzLnB1c2goJy0tbWluaWZ5Jyk7XG4gICAgfVxuXG4gICAgaWYoc291cmNlbWFwKSB7XG4gICAgICBlc2J1aWxkQXJncy5wdXNoKCctLXNvdXJjZW1hcCcpO1xuICAgIH1cblxuICAgIGZvcihjb25zdCBleHRlcm5hbCBvZiB0b0xpc3QoY21kLmV4dGVybmFsKSkge1xuICAgICAgZXNidWlsZEFyZ3MucHVzaChgLS1leHRlcm5hbDoke2V4dGVybmFsfWApO1xuICAgIH1cblxuICAgIGF3YWl0IGV4ZWNhKCducHgnLCBbJy0tbm8taW5zdGFsbCcsICdlc2J1aWxkJywgLi4uZXNidWlsZEFyZ3NdLCB7XG4gICAgICBjd2Q6IHByb2Nlc3MuY3dkKCksXG4gICAgICBzdGRpbzogJ2luaGVyaXQnXG4gICAgfSk7XG5cbiAgICBmb3IoY29uc3QgbW9kdWxlTmFtZSBvZiB0b0xpc3QoY21kLmNvcHlOb2RlTW9kdWxlKSkge1xuICAgICAgY29uc3Qgc291cmNlID0gcmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCBub2RlTW9kdWxlc1BhdGgsIG1vZHVsZU5hbWUpO1xuICAgICAgY29uc3QgZGVzdGluYXRpb24gPSByZXNvbHZlKHBhY2thZ2VQYXRoLCAnbm9kZV9tb2R1bGVzJywgbW9kdWxlTmFtZSk7XG5cbiAgICAgIGlmKCFleGlzdHNTeW5jKHNvdXJjZSkpIHtcbiAgICAgICAgbG9nKGAke2NsaU5hbWV9IHdhcm5pbmc6IG5vZGUgbW9kdWxlIG5vdCBmb3VuZCwgXCIke21vZHVsZU5hbWV9XCIuYCwgJ3dhcm4nLCBxdWlldCk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBta2RpclN5bmMoZGlybmFtZShkZXN0aW5hdGlvbiksIHtyZWN1cnNpdmU6IHRydWV9KTtcbiAgICAgIGNwU3luYyhzb3VyY2UsIGRlc3RpbmF0aW9uLCB7cmVjdXJzaXZlOiB0cnVlfSk7XG4gICAgfVxuXG4gICAgbWtkaXJTeW5jKGRpcm5hbWUob3V0cHV0UGF0aCksIHtyZWN1cnNpdmU6IHRydWV9KTtcbiAgICBhd2FpdCBleGVjYSgnemlwJywgWyctcXInLCBvdXRwdXRQYXRoLCAnLiddLCB7XG4gICAgICBjd2Q6IHBhY2thZ2VQYXRoLFxuICAgICAgc3RkaW86ICdpbmhlcml0J1xuICAgIH0pO1xuXG4gICAgbG9nKGAke2NsaU5hbWV9IExhbWJkYSBwYWNrYWdlIGNyZWF0ZWQ6ICR7b3V0cHV0UGF0aH0gKCR7Zm9ybWF0U2l6ZShzdGF0U3luYyhvdXRwdXRQYXRoKS5zaXplKX0pYCwgJ3N1Y2Nlc3MnLCBxdWlldCk7XG4gICAgY2FsbGJhY2soMCk7XG4gICAgcmV0dXJuIDA7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IExhbWJkYSBwYWNrYWdlIGZhaWxlZC4gJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcbiAgICBjYWxsYmFjaygxKTtcbiAgICByZXR1cm4gMTtcbiAgfVxufTtcbiJdLCJuYW1lcyI6WyJleGVjYSIsImNwU3luYyIsImV4aXN0c1N5bmMiLCJta2RpclN5bmMiLCJybVN5bmMiLCJzdGF0U3luYyIsImRpcm5hbWUiLCJyZXNvbHZlIiwibG9nIiwidG9MaXN0IiwidmFsdWUiLCJBcnJheSIsImlzQXJyYXkiLCJmb3JtYXRTaXplIiwiYnl0ZXMiLCJ0b0ZpeGVkIiwic2VydmVybGVzc0RlcGxveSIsImNtZCIsImNhbGxiYWNrIiwiYnVuZGxlIiwiY2xpTmFtZSIsImVudHJ5IiwiZm9ybWF0IiwibWFpbkZpZWxkcyIsIm1pbmlmeSIsIm5vZGVNb2R1bGVzUGF0aCIsIm91dHB1dCIsInBhY2thZ2VEaXIiLCJwbGF0Zm9ybSIsInF1aWV0Iiwic291cmNlbWFwIiwidGFyZ2V0IiwiZW50cnlQYXRoIiwicHJvY2VzcyIsImN3ZCIsIm91dHB1dFBhdGgiLCJwYWNrYWdlUGF0aCIsIm91dGZpbGUiLCJmb3JjZSIsInJlY3Vyc2l2ZSIsImVzYnVpbGRBcmdzIiwicHVzaCIsImV4dGVybmFsIiwic3RkaW8iLCJtb2R1bGVOYW1lIiwiY29weU5vZGVNb2R1bGUiLCJzb3VyY2UiLCJkZXN0aW5hdGlvbiIsInNpemUiLCJlcnJvciIsIm1lc3NhZ2UiXSwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQyxHQUNELFNBQVFBLEtBQUssUUFBTyxRQUFRO0FBQzVCLFNBQVFDLE1BQU0sRUFBRUMsVUFBVSxFQUFFQyxTQUFTLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxRQUFPLEtBQUs7QUFDbkUsU0FBUUMsT0FBTyxFQUFFQyxPQUFPLFFBQU8sT0FBTztBQUV0QyxTQUFRQyxHQUFHLFFBQU8scUJBQXFCO0FBdUJ2QyxNQUFNQyxTQUFTLENBQUNDO0lBQ2QsSUFBRyxDQUFDQSxPQUFPLE9BQU8sRUFBRTtJQUNwQixPQUFPQyxNQUFNQyxPQUFPLENBQUNGLFNBQVNBLFFBQVE7UUFBQ0E7S0FBTTtBQUMvQztBQUVBLE1BQU1HLGFBQWEsQ0FBQ0M7SUFDbEIsSUFBR0EsUUFBUSxNQUFNLE9BQU8sR0FBR0EsTUFBTSxFQUFFLENBQUM7SUFDcEMsSUFBR0EsUUFBUSxPQUFPLE1BQU0sT0FBTyxHQUFHLEFBQUNBLENBQUFBLFFBQVEsSUFBRyxFQUFHQyxPQUFPLENBQUMsR0FBRyxHQUFHLENBQUM7SUFD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
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export interface
|
|
1
|
+
export interface ServerlessDevOptions {
|
|
2
2
|
readonly cliName?: string;
|
|
3
3
|
readonly config?: string;
|
|
4
4
|
readonly debug?: boolean;
|
|
@@ -12,5 +12,5 @@ export interface ServerlessOptions {
|
|
|
12
12
|
readonly variables?: string;
|
|
13
13
|
readonly wsPort?: number;
|
|
14
14
|
}
|
|
15
|
-
export type
|
|
16
|
-
export declare const
|
|
15
|
+
export type ServerlessDevCallback = (status: number) => void;
|
|
16
|
+
export declare const serverlessDev: (cmd: ServerlessDevOptions, callback?: ServerlessDevCallback) => Promise<number>;
|