do-functions-cli 1.1.0 → 1.4.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 CHANGED
@@ -1,69 +1,112 @@
1
1
  # do-functions-cli
2
2
 
3
- ![npm version](https://img.shields.io/npm/v/do-functions-cli.svg)
4
- ![license](https://img.shields.io/badge/license-MIT-blue.svg)
3
+ [![npm version](https://img.shields.io/npm/v/do-functions-cli.svg)](https://www.npmjs.com/package/do-functions-cli)
4
+ [![license](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
5
5
 
6
- A CLI tool to streamline working with DigitalOcean Serverless Functions.
6
+ A CLI tool for scaffolding [DigitalOcean Serverless Functions](https://docs.digitalocean.com/products/functions/). Quickly create new functions with JavaScript or TypeScript templates, install dependencies, and automatically update your `project.yml` configuration.
7
+
8
+ > **Note:** This project is not affiliated with [DigitalOcean](https://digitalocean.com) or [do-functions](https://github.com/mrbrianevans/do-functions), but was inspired by the latter.
7
9
 
8
10
  ## Features
9
11
 
10
- - Create new function packages via an interactive `create` command
11
- - Support for multiple languages (JavaScript, TypeScript, more to come)
12
- - Auto-install dependencies in the generated package (optional)
13
- - Automatically update the root `project.yml` with the new package/function (optional)
12
+ - **Interactive function creation** Guided prompts walk you through creating new functions
13
+ - **JavaScript & TypeScript templates** Choose your preferred language
14
+ - **Automatic dependency installation** — Optionally run `npm install` in the generated function directory
15
+ - **Auto-update project.yml** Automatically add new functions to your project configuration
16
+ - **Non-interactive mode** — Use CLI flags and `--yes` for scripted workflows
14
17
 
15
18
  ## Installation
16
19
 
17
- Global:
18
-
19
20
  ```bash
20
- npm i -g do-functions-cli
21
+ # Global installation
22
+ npm install -g do-functions-cli
23
+
24
+ # Or use directly with npx
25
+ npx do-functions-cli create
21
26
  ```
22
27
 
23
- Local:
28
+ ## Quick Start
29
+
30
+ Create a new function interactively:
24
31
 
25
32
  ```bash
26
- npm i -D do-functions-cli
33
+ do-functions-cli create
27
34
  ```
28
35
 
36
+ You'll be prompted to:
37
+
38
+ 1. Enter the packages directory (default: `./packages`)
39
+ 2. Enter the package/function name (e.g., `api/hello`)
40
+ 3. Choose a language (JavaScript or TypeScript)
41
+ 4. Install dependencies (optional)
42
+ 5. Add the function to `project.yml` (optional)
43
+
29
44
  ## Usage
30
45
 
31
- Run the CLI and follow the prompts:
46
+ ### Interactive Mode
32
47
 
33
48
  ```bash
34
- # Show help
35
- npx do-functions-cli --help
49
+ do-functions-cli create
50
+ ```
36
51
 
37
- # Create a new function
38
- npx do-functions-cli create
52
+ ### Non-Interactive Mode
53
+
54
+ Use flags to skip prompts:
55
+
56
+ ```bash
57
+ do-functions-cli create --packages-dir ./packages --func api/hello --yes
39
58
  ```
40
59
 
41
- ## Roadmap / Ideas
60
+ ### CLI Options
61
+
62
+ | Option | Description |
63
+ | --- | --- |
64
+ | `--packages-dir <dir>` | Root packages directory (default: prompted, or `./packages`) |
65
+ | `-f, --func <name>` | Package/function name in `package/function` format |
66
+ | `-y, --yes` | Skip optional prompts and use defaults |
67
+ | `--help` | Show help information |
68
+ | `--version` | Show version number |
42
69
 
43
- - Non-interactive flags for commands (see below)
44
- - Additional commands: `validate`, `deploy`, etc.
70
+ ## Project Structure
45
71
 
46
- ## Planned CLI Flags
72
+ After creating a function, your project will look like:
47
73
 
48
- - `--function <package/name>`: Provide function identifier directly.
49
- - `--<language>`: Choose template language (e.g., `--javascript`, `--typescript`).
50
- - `--install` / `--no-install`: Control dependency installation step.
51
- - `--add-project` / `--no-add-project`: Control `project.yml` auto-update.
52
- - `--dry-run`: Show intended actions without any file changes.
53
- - `--verbose`: Print detailed logs for troubleshooting.
74
+ ```
75
+ your-project/
76
+ ├── packages/
77
+ │ └── api/ # Package name
78
+ │ └── hello/ # Function name
79
+ │ ├── index.js # Function entry point (or index.ts)
80
+ │ ├── package.json
81
+ │ └── .include # DigitalOcean include file
82
+ └── project.yml # DigitalOcean project configuration
83
+ ```
54
84
 
55
- ## Troubleshooting
85
+ ## project.yml Configuration
56
86
 
57
- - If `project.yml` parsing fails, ensure the file is valid YAML and matches the expected schema:
87
+ The CLI automatically manages your `project.yml` file:
58
88
 
59
89
  ```yaml
60
90
  packages:
61
- - name: sample
91
+ - name: api
62
92
  functions:
63
93
  - name: hello
64
94
  runtime: nodejs:18
65
95
  web: true
66
- ...
67
96
  ```
68
97
 
69
- - Ensure Node.js 18+ for best compatibility with templates and runtime.
98
+ ## Requirements
99
+
100
+ - Node.js 18 or later
101
+ - npm or compatible package manager
102
+
103
+ ## Roadmap
104
+
105
+ - Additional language templates (Python, Go)
106
+ - `validate` command for project configuration
107
+ - `deploy` command integration with DigitalOcean CLI
108
+ - Dry-run mode for previewing changes
109
+
110
+ ## License
111
+
112
+ MIT
package/dist/cli.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import { Command } from 'commander';
3
- import createCommand from './commands/create.js';
4
3
  import fs from 'fs-extra/esm';
4
+ import createCommand from './commands/create.js';
5
5
  const packageJson = await fs.readJSON(new URL('../package.json', import.meta.url));
6
6
  const cliVersion = packageJson.version;
7
7
  // Initialize the main CLI program
@@ -17,16 +17,16 @@ program.parse(process.argv);
17
17
  /**
18
18
  * Handle uncaught exceptions globally.
19
19
  *
20
- * ExitPromptError is thrown when a user cancels an interactive prompt,
21
- * so we handle it gracefully. Other errors are re-thrown for proper error reporting.
20
+ * ExitPromptError is thrown when a user cancels an interactive prompt.
22
21
  */
23
22
  process.on('uncaughtException', (error) => {
24
23
  if (error instanceof Error && error.name === 'ExitPromptError') {
25
24
  console.log('👋 until next time!');
25
+ process.exit(0);
26
26
  }
27
27
  else {
28
- // Rethrow unknown errors for proper error handling and exit
29
- throw error;
28
+ console.error(error);
29
+ process.exit(1);
30
30
  }
31
31
  });
32
32
  //# sourceMappingURL=cli.js.map
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,aAAa,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,MAAM,cAAc,CAAC;AAE9B,MAAM,WAAW,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACnF,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO,CAAC;AAEvC,kCAAkC;AAClC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAC9B,OAAO;KACJ,IAAI,CAAC,kBAAkB,CAAC;KACxB,WAAW,CAAC,yDAAyD,CAAC;KACtE,OAAO,CAAC,UAAU,CAAC,CAAC;AAEvB,sEAAsE;AACtE,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAElC,2CAA2C;AAC3C,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAE5B;;;;;GAKG;AACH,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,KAAK,EAAE,EAAE;IACxC,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IACrC,CAAC;SAAM,CAAC;QACN,4DAA4D;QAC5D,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,cAAc,CAAC;AAE9B,OAAO,aAAa,MAAM,sBAAsB,CAAC;AAEjD,MAAM,WAAW,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACnF,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO,CAAC;AAEvC,kCAAkC;AAClC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAC9B,OAAO;KACJ,IAAI,CAAC,kBAAkB,CAAC;KACxB,WAAW,CAAC,yDAAyD,CAAC;KACtE,OAAO,CAAC,UAAU,CAAC,CAAC;AAEvB,sEAAsE;AACtE,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAElC,2CAA2C;AAC3C,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAE5B;;;;GAIG;AACH,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,KAAK,EAAE,EAAE;IACxC,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAapC,QAAA,MAAM,aAAa,SAAwB,CAAC;AAuH5C,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAcpC,QAAA,MAAM,aAAa,SAAwB,CAAC;AAkI5C,eAAe,aAAa,CAAC"}
@@ -8,13 +8,16 @@
8
8
  * 4. Installing dependencies (optional)
9
9
  * 5. Adding the function to project.yml configuration (optional)
10
10
  */
11
- import { confirm, input, select } from '@inquirer/prompts';
12
- import { Command } from 'commander';
13
- import fs from 'fs-extra';
14
11
  import * as child_process from 'node:child_process';
15
12
  import * as path from 'node:path';
16
13
  import * as util from 'node:util';
14
+ import { confirm, input, select } from '@inquirer/prompts';
15
+ import { Command } from 'commander';
16
+ import fs from 'fs-extra';
17
17
  import ora from 'ora';
18
+ import * as z from 'zod';
19
+ import { CreateOptionsSchema } from '../schemas/createOptions.js';
20
+ import { functionTemplateService } from '../services/functionTemplateService.js';
18
21
  import { scaffoldFunction, updateProjectConfig } from '../utils/util.js';
19
22
  import { validateFunctionName } from '../utils/validators.js';
20
23
  // Promisify exec to use async/await syntax
@@ -24,17 +27,26 @@ createCommand
24
27
  .description('create a new serverless function')
25
28
  .option('-y, --yes', 'skip all optional prompts and use defaults')
26
29
  .option('--packages-dir <dir>', 'specify the root packages directory')
30
+ .option('-f, --func <name>', 'specify the package/function name')
27
31
  .action(async (options) => {
28
- const userPackagesDir = options.packagesDir ||
32
+ const parsedOptionsResult = CreateOptionsSchema.safeParse(options);
33
+ if (!parsedOptionsResult.success) {
34
+ const prettyError = z.prettifyError(parsedOptionsResult.error);
35
+ console.log(prettyError);
36
+ return;
37
+ }
38
+ const parsedOptions = parsedOptionsResult.data;
39
+ const userPackagesDir = parsedOptions.packagesDir ||
29
40
  (await input({
30
41
  message: 'Enter the root function packages directory:',
31
42
  default: './packages',
32
43
  }));
33
- const userFuncPath = await input({
34
- message: 'Enter the package/function name to create:',
35
- default: 'sample/hello',
36
- validate: validateFunctionName,
37
- });
44
+ const userFuncPath = parsedOptions.func ||
45
+ (await input({
46
+ message: 'Enter the package/function name to create:',
47
+ default: 'sample/hello',
48
+ validate: validateFunctionName,
49
+ }));
38
50
  const [pkgName, funcName] = userFuncPath.split('/');
39
51
  const resolvedFuncDir = path.resolve(userPackagesDir, userFuncPath);
40
52
  if (await fs.exists(resolvedFuncDir)) {
@@ -47,14 +59,13 @@ createCommand
47
59
  return;
48
60
  }
49
61
  }
50
- const funcLanguage = (await select({
62
+ const funcLanguage = await select({
51
63
  message: 'Choose a language for the function:',
52
- choices: [
53
- { name: 'JavaScript', value: 'javascript' },
54
- { name: 'TypeScript', value: 'typescript' },
55
- ],
56
- default: 'javascript',
57
- }));
64
+ choices: functionTemplateService
65
+ .getTemplates()
66
+ .map((template) => ({ name: template.name, value: template.dirName })),
67
+ default: functionTemplateService.getDefaultTemplate().dirName,
68
+ });
58
69
  // Initialize a spinner to show progress to the user
59
70
  const spinner = ora(`Creating function '${userFuncPath}'...`).start();
60
71
  try {
@@ -107,7 +118,7 @@ createCommand
107
118
  }
108
119
  else {
109
120
  spinner.start('Updating project.yml configuration...');
110
- const result = await updateProjectConfig(projectYmlPath, pkgName, funcName);
121
+ const result = await updateProjectConfig(projectYmlPath, pkgName, funcName, funcLanguage);
111
122
  const resultStatusMessageMap = {
112
123
  'created-new-config': `Created project.yml with package "${pkgName}" and function "${userFuncPath}"`,
113
124
  'added-package': `Added new package "${pkgName}" with function "${userFuncPath}" to project.yml`,
@@ -1 +1 @@
1
- {"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AAEjF,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,2CAA2C;AAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAEhD,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC5C,aAAa;KACV,WAAW,CAAC,kCAAkC,CAAC;KAC/C,MAAM,CAAC,WAAW,EAAE,4CAA4C,CAAC;KACjE,MAAM,CAAC,sBAAsB,EAAE,qCAAqC,CAAC;KACrE,MAAM,CAAC,mBAAmB,EAAE,mCAAmC,CAAC;KAChE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,mBAAmB,GAAG,mBAAmB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACnE,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,CAAC;QACjC,MAAM,WAAW,GAAG,CAAC,CAAC,aAAa,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACzB,OAAO;IACT,CAAC;IAED,MAAM,aAAa,GAAG,mBAAmB,CAAC,IAAI,CAAC;IAE/C,MAAM,eAAe,GACnB,aAAa,CAAC,WAAW;QACzB,CAAC,MAAM,KAAK,CAAC;YACX,OAAO,EAAE,6CAA6C;YACtD,OAAO,EAAE,YAAY;SACtB,CAAC,CAAC,CAAC;IAEN,MAAM,YAAY,GAChB,aAAa,CAAC,IAAI;QAClB,CAAC,MAAM,KAAK,CAAC;YACX,OAAO,EAAE,4CAA4C;YACrD,OAAO,EAAE,cAAc;YACvB,QAAQ,EAAE,oBAAoB;SAC/B,CAAC,CAAC,CAAC;IAEN,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAqB,CAAC;IAExE,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;IACpE,IAAI,MAAM,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC;QACrC,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC;YAC9B,OAAO,EAAE,kBAAkB,eAAe,gDAAgD;YAC1F,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,GAAG,CAAC,4CAA4C,CAAC,CAAC,IAAI,EAAE,CAAC;YACzD,OAAO;QACT,CAAC;IACH,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC;QAChC,OAAO,EAAE,qCAAqC;QAC9C,OAAO,EAAE,uBAAuB;aAC7B,YAAY,EAAE;aACd,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;QACxE,OAAO,EAAE,uBAAuB,CAAC,kBAAkB,EAAE,CAAC,OAAO;KAC9D,CAAC,CAAC;IAEH,oDAAoD;IACpD,MAAM,OAAO,GAAG,GAAG,CAAC,sBAAsB,YAAY,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;IACtE,IAAI,CAAC;QACH,MAAM,gBAAgB,CAAC;YACrB,SAAS,EAAE,eAAe;YAC1B,QAAQ,EAAE,YAAY;YACtB,YAAY;SACb,CAAC,CAAC;QACH,OAAO,CAAC,OAAO,CAAC,aAAa,YAAY,8BAA8B,eAAe,GAAG,CAAC,CAAC;IAC7F,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;QAC9D,MAAM,KAAK,CAAC;IACd,CAAC;IAED,8DAA8D;IAC9D,MAAM,WAAW,GACf,OAAO,CAAC,GAAG;QACX,CAAC,MAAM,OAAO,CAAC;YACb,OAAO,EAAE,0CAA0C;YACnD,OAAO,EAAE,IAAI;SACd,CAAC,CAAC,CAAC;IACN,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAE5C,IAAI,CAAC;YACH,4CAA4C;YAC5C,MAAM,IAAI,CAAC,aAAa,EAAE,EAAE,GAAG,EAAE,eAAe,EAAE,CAAC,CAAC;YACpD,OAAO,CAAC,OAAO,CAAC,qCAAqC,CAAC,CAAC;QACzD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;YAChE,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,kEAAkE;IAClE,MAAM,YAAY,GAChB,OAAO,CAAC,GAAG;QACX,CAAC,MAAM,OAAO,CAAC;YACb,OAAO,EAAE,2EAA2E;YACpF,OAAO,EAAE,IAAI;SACd,CAAC,CAAC,CAAC;IACN,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QACnD,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YACxD,CAAC,CAAC,OAAO,CAAC,GAAG;gBACX,CAAC,MAAM,OAAO,CAAC;oBACb,OAAO,EAAE,iEAAiE;oBAC1E,OAAO,EAAE,IAAI;iBACd,CAAC,CAAC;YACL,CAAC,CAAC,IAAI,CAAC;QACT,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,OAAO,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;QAC5D,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;YAEvD,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,cAAc,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;YAC1F,MAAM,sBAAsB,GAAiC;gBAC3D,oBAAoB,EAAE,qCAAqC,OAAO,mBAAmB,YAAY,GAAG;gBACpG,eAAe,EAAE,sBAAsB,OAAO,oBAAoB,YAAY,kBAAkB;gBAChG,gBAAgB,EAAE,mBAAmB,YAAY,0BAA0B,OAAO,kBAAkB;gBACpG,iBAAiB,EAAE,aAAa,YAAY,gCAAgC,OAAO,qBAAqB;gBACxG,KAAK,EAAE,4CAA4C;aACpD,CAAC;YAEF,MAAM,mBAAmB,GAAG,sBAAsB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAClE,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;gBAC9B,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YACpC,CAAC;iBAAM,IAAI,MAAM,CAAC,MAAM,KAAK,iBAAiB,EAAE,CAAC;gBAC/C,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YACpC,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,wDAAwD;AACxD,eAAe,aAAa,CAAC"}
@@ -0,0 +1,7 @@
1
+ import * as z from 'zod';
2
+ export declare const CreateOptionsSchema: z.ZodObject<{
3
+ packagesDir: z.ZodOptional<z.ZodString>;
4
+ func: z.ZodOptional<z.ZodString>;
5
+ }, z.core.$strip>;
6
+ export type CreateOptions = z.infer<typeof CreateOptionsSchema>;
7
+ //# sourceMappingURL=createOptions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createOptions.d.ts","sourceRoot":"","sources":["../../src/schemas/createOptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,eAAO,MAAM,mBAAmB;;;iBAM9B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ import * as z from 'zod';
2
+ export const CreateOptionsSchema = z.object({
3
+ packagesDir: z.string().optional(),
4
+ func: z
5
+ .string()
6
+ .regex(/^[a-z]+\/[a-z]+$/)
7
+ .optional(),
8
+ });
9
+ //# sourceMappingURL=createOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createOptions.js","sourceRoot":"","sources":["../../src/schemas/createOptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,KAAK,CAAC,kBAAkB,CAAC;SACzB,QAAQ,EAAE;CACd,CAAC,CAAC"}
@@ -1,19 +1,10 @@
1
1
  import * as z from 'zod';
2
2
  /**
3
3
  * Zod schema for validating a DigitalOcean function entry in project.yml
4
- *
5
- * Properties:
6
- * - name: The function name (required)
7
- * - runtime: The Node.js runtime version (defaults to DEFAULT_RUNTIME)
8
- * - web: Whether the function is web-accessible (defaults to true)
9
4
  */
10
5
  export declare const DOFunctionSchema: z.ZodObject<{
11
6
  name: z.ZodString;
12
- runtime: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
13
- "nodejs:18": "nodejs:18";
14
- "nodejs:14": "nodejs:14";
15
- "nodejs:default": "nodejs:default";
16
- }>>>;
7
+ runtime: z.ZodOptional<z.ZodString>;
17
8
  web: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
18
9
  }, z.core.$strip>;
19
10
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"doFunction.d.ts","sourceRoot":"","sources":["../../src/schemas/doFunction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAGzB;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;iBAO3B,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
1
+ {"version":3,"file":"doFunction.d.ts","sourceRoot":"","sources":["../../src/schemas/doFunction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;iBAI3B,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
@@ -1,19 +1,10 @@
1
1
  import * as z from 'zod';
2
- import { DEFAULT_RUNTIME } from '../constants.js';
3
2
  /**
4
3
  * Zod schema for validating a DigitalOcean function entry in project.yml
5
- *
6
- * Properties:
7
- * - name: The function name (required)
8
- * - runtime: The Node.js runtime version (defaults to DEFAULT_RUNTIME)
9
- * - web: Whether the function is web-accessible (defaults to true)
10
4
  */
11
5
  export const DOFunctionSchema = z.object({
12
6
  name: z.string(),
13
- runtime: z
14
- .enum(['nodejs:14', 'nodejs:18', 'nodejs:default'])
15
- .optional()
16
- .default(DEFAULT_RUNTIME),
7
+ runtime: z.string().optional(),
17
8
  web: z.boolean().optional().default(true),
18
9
  });
19
10
  //# sourceMappingURL=doFunction.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"doFunction.js","sourceRoot":"","sources":["../../src/schemas/doFunction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AACzB,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,OAAO,EAAE,CAAC;SACP,IAAI,CAAC,CAAC,WAAW,EAAE,WAAW,EAAE,gBAAgB,CAAC,CAAC;SAClD,QAAQ,EAAE;SACV,OAAO,CAAC,eAA8B,CAAC;IAC1C,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;CAC1C,CAAC,CAAC"}
1
+ {"version":3,"file":"doFunction.js","sourceRoot":"","sources":["../../src/schemas/doFunction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;CAC1C,CAAC,CAAC"}
@@ -10,11 +10,7 @@ export declare const DOPackageSchema: z.ZodObject<{
10
10
  name: z.ZodString;
11
11
  functions: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodObject<{
12
12
  name: z.ZodString;
13
- runtime: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
14
- "nodejs:18": "nodejs:18";
15
- "nodejs:14": "nodejs:14";
16
- "nodejs:default": "nodejs:default";
17
- }>>>;
13
+ runtime: z.ZodOptional<z.ZodString>;
18
14
  web: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
19
15
  }, z.core.$strip>>>>;
20
16
  }, z.core.$strip>;
@@ -1 +1 @@
1
- {"version":3,"file":"doPackage.d.ts","sourceRoot":"","sources":["../../src/schemas/doPackage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAGzB;;;;;;GAMG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;iBAG1B,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC"}
1
+ {"version":3,"file":"doPackage.d.ts","sourceRoot":"","sources":["../../src/schemas/doPackage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAIzB;;;;;;GAMG;AACH,eAAO,MAAM,eAAe;;;;;;;iBAG1B,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"doPackage.js","sourceRoot":"","sources":["../../src/schemas/doPackage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AACzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;CAC5D,CAAC,CAAC"}
1
+ {"version":3,"file":"doPackage.js","sourceRoot":"","sources":["../../src/schemas/doPackage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;CAC5D,CAAC,CAAC"}
@@ -10,11 +10,7 @@ export declare const DOProjectYmlSchema: z.ZodObject<{
10
10
  name: z.ZodString;
11
11
  functions: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodObject<{
12
12
  name: z.ZodString;
13
- runtime: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
14
- "nodejs:18": "nodejs:18";
15
- "nodejs:14": "nodejs:14";
16
- "nodejs:default": "nodejs:default";
17
- }>>>;
13
+ runtime: z.ZodOptional<z.ZodString>;
18
14
  web: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
19
15
  }, z.core.$strip>>>>;
20
16
  }, z.core.$strip>>>>;
@@ -1 +1 @@
1
- {"version":3,"file":"doProjectYml.d.ts","sourceRoot":"","sources":["../../src/schemas/doProjectYml.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAGzB;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;iBAE7B,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC"}
1
+ {"version":3,"file":"doProjectYml.d.ts","sourceRoot":"","sources":["../../src/schemas/doProjectYml.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAIzB;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;iBAE7B,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"doProjectYml.js","sourceRoot":"","sources":["../../src/schemas/doProjectYml.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AACzB,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;CAC1D,CAAC,CAAC"}
1
+ {"version":3,"file":"doProjectYml.js","sourceRoot":"","sources":["../../src/schemas/doProjectYml.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;CAC1D,CAAC,CAAC"}
@@ -0,0 +1,14 @@
1
+ import * as z from 'zod';
2
+ /**
3
+ * Zod schema for validating a function template entry
4
+ */
5
+ export declare const FunctionTemplateSchema: z.ZodObject<{
6
+ name: z.ZodString;
7
+ dirName: z.ZodString;
8
+ runtime: z.ZodString;
9
+ }, z.core.$strip>;
10
+ /**
11
+ * TypeScript type derived from the FunctionTemplateSchema
12
+ */
13
+ export type FunctionTemplate = z.infer<typeof FunctionTemplateSchema>;
14
+ //# sourceMappingURL=functionTemplate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"functionTemplate.d.ts","sourceRoot":"","sources":["../../src/schemas/functionTemplate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB;;GAEG;AACH,eAAO,MAAM,sBAAsB;;;;iBAIjC,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ import * as z from 'zod';
2
+ /**
3
+ * Zod schema for validating a function template entry
4
+ */
5
+ export const FunctionTemplateSchema = z.object({
6
+ name: z.string(),
7
+ dirName: z.string(),
8
+ runtime: z.string(),
9
+ });
10
+ //# sourceMappingURL=functionTemplate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"functionTemplate.js","sourceRoot":"","sources":["../../src/schemas/functionTemplate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;CACpB,CAAC,CAAC"}
@@ -0,0 +1,21 @@
1
+ import type { FunctionTemplate } from '../schemas/functionTemplate.js';
2
+ /**
3
+ * Service class for managing function templates.
4
+ * Provides methods to retrieve and manage available function templates.
5
+ */
6
+ declare class FunctionTemplateService {
7
+ /** Array to store available function templates */
8
+ private templates;
9
+ /** Retrieves all available function templates */
10
+ getTemplates(): FunctionTemplate[];
11
+ /** Retrieves the default function template */
12
+ getDefaultTemplate(): FunctionTemplate;
13
+ /** Retrieves a function template by its directory name */
14
+ getTemplateByDirName(dirName: string): FunctionTemplate | undefined;
15
+ /** Adds a new function template to the list */
16
+ addTemplate(template: FunctionTemplate): void;
17
+ }
18
+ /** Singleton instance for managing function templates */
19
+ export declare const functionTemplateService: FunctionTemplateService;
20
+ export {};
21
+ //# sourceMappingURL=functionTemplateService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"functionTemplateService.d.ts","sourceRoot":"","sources":["../../src/services/functionTemplateService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAEvE;;;GAGG;AACH,cAAM,uBAAuB;IAC3B,kDAAkD;IAClD,OAAO,CAAC,SAAS,CAWf;IAEF,iDAAiD;IACjD,YAAY,IAAI,gBAAgB,EAAE;IAIlC,8CAA8C;IAC9C,kBAAkB,IAAI,gBAAgB;IAItC,0DAA0D;IAC1D,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAKnE,+CAA+C;IAC/C,WAAW,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;CAG9C;AAED,yDAAyD;AACzD,eAAO,MAAM,uBAAuB,yBAAgC,CAAC"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Service class for managing function templates.
3
+ * Provides methods to retrieve and manage available function templates.
4
+ */
5
+ class FunctionTemplateService {
6
+ /** Array to store available function templates */
7
+ templates = [
8
+ {
9
+ name: 'JavaScript',
10
+ dirName: 'javascript',
11
+ runtime: 'nodejs:18',
12
+ },
13
+ {
14
+ name: 'TypeScript',
15
+ dirName: 'typescript',
16
+ runtime: 'nodejs:18',
17
+ },
18
+ ];
19
+ /** Retrieves all available function templates */
20
+ getTemplates() {
21
+ return this.templates.map((template) => ({ ...template }));
22
+ }
23
+ /** Retrieves the default function template */
24
+ getDefaultTemplate() {
25
+ return { ...this.templates[0] };
26
+ }
27
+ /** Retrieves a function template by its directory name */
28
+ getTemplateByDirName(dirName) {
29
+ const template = this.templates.find((template) => template.dirName === dirName);
30
+ return template ? { ...template } : undefined;
31
+ }
32
+ /** Adds a new function template to the list */
33
+ addTemplate(template) {
34
+ this.templates.push({ ...template });
35
+ }
36
+ }
37
+ /** Singleton instance for managing function templates */
38
+ export const functionTemplateService = new FunctionTemplateService();
39
+ //# sourceMappingURL=functionTemplateService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"functionTemplateService.js","sourceRoot":"","sources":["../../src/services/functionTemplateService.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,uBAAuB;IAC3B,kDAAkD;IAC1C,SAAS,GAAuB;QACtC;YACE,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE,YAAY;YACrB,OAAO,EAAE,WAAW;SACrB;QACD;YACE,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE,YAAY;YACrB,OAAO,EAAE,WAAW;SACrB;KACF,CAAC;IAEF,iDAAiD;IACjD,YAAY;QACV,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,8CAA8C;IAC9C,kBAAkB;QAChB,OAAO,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAE,EAAE,CAAC;IACnC,CAAC;IAED,0DAA0D;IAC1D,oBAAoB,CAAC,OAAe;QAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;QACjF,OAAO,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAChD,CAAC;IAED,+CAA+C;IAC/C,WAAW,CAAC,QAA0B;QACpC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC;IACvC,CAAC;CACF;AAED,yDAAyD;AACzD,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,uBAAuB,EAAE,CAAC"}
@@ -1,12 +1,11 @@
1
- export type LanguageChoice = 'typescript' | 'javascript';
2
1
  /**
3
2
  * Get the template directory for a function depending on language choice.
4
3
  */
5
- export declare function getTemplateDir(funcLanguage: LanguageChoice): string;
4
+ export declare function getTemplateDir(funcLanguage: string): string;
6
5
  export type ScaffoldOptions = {
7
6
  targetDir: string;
8
7
  funcPath: string;
9
- funcLanguage: LanguageChoice;
8
+ funcLanguage: string;
10
9
  };
11
10
  /**
12
11
  * Scaffolds a function directory by emptying target and copying template, then updating package.json name.
@@ -20,5 +19,5 @@ export type UpdateResult = {
20
19
  * Update or create the project.yml configuration with the given package and function.
21
20
  * Uses early returns for clarity. Returns a status describing the performed action.
22
21
  */
23
- export declare function updateProjectConfig(projectYmlPath: string, pkgName: string, funcName: string): Promise<UpdateResult>;
22
+ export declare function updateProjectConfig(projectYmlPath: string, pkgName: string, funcName: string, funcLanguage: string): Promise<UpdateResult>;
24
23
  //# sourceMappingURL=util.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/utils/util.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,cAAc,GAAG,YAAY,GAAG,YAAY,CAAC;AAEzD;;GAEG;AACH,wBAAgB,cAAc,CAAC,YAAY,EAAE,cAAc,GAAG,MAAM,CAOnE;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,cAAc,CAAC;CAC9B,CAAC;AAEF;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,EACrC,SAAS,EACT,QAAQ,EACR,YAAY,GACb,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAQjC;AAED,MAAM,MAAM,YAAY,GACpB,oBAAoB,GACpB,eAAe,GACf,gBAAgB,GAChB,iBAAiB,GACjB,OAAO,CAAC;AAEZ,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,EAAE,YAAY,CAAC;CACtB,CAAC;AAEF;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,YAAY,CAAC,CA+BvB"}
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/utils/util.ts"],"names":[],"mappings":"AAUA;;GAEG;AACH,wBAAgB,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAO3D;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,EACrC,SAAS,EACT,QAAQ,EACR,YAAY,GACb,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAQjC;AAED,MAAM,MAAM,YAAY,GACpB,oBAAoB,GACpB,eAAe,GACf,gBAAgB,GAChB,iBAAiB,GACjB,OAAO,CAAC;AAEZ,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,EAAE,YAAY,CAAC;CACtB,CAAC;AAEF;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,YAAY,CAAC,CAoCvB"}
@@ -1,9 +1,9 @@
1
- import fs from 'fs-extra';
2
1
  import * as path from 'node:path';
3
- import { DEFAULT_RUNTIME } from '../constants.js';
4
- import { DOProjectYmlSchema } from '../schemas/doProjectYml.js';
5
- import YAML from 'yaml';
6
2
  import { fileURLToPath } from 'node:url';
3
+ import fs from 'fs-extra';
4
+ import YAML from 'yaml';
5
+ import { DOProjectYmlSchema } from '../schemas/doProjectYml.js';
6
+ import { functionTemplateService } from '../services/functionTemplateService.js';
7
7
  /**
8
8
  * Get the template directory for a function depending on language choice.
9
9
  */
@@ -25,9 +25,13 @@ export async function scaffoldFunction({ targetDir, funcPath, funcLanguage, }) {
25
25
  * Update or create the project.yml configuration with the given package and function.
26
26
  * Uses early returns for clarity. Returns a status describing the performed action.
27
27
  */
28
- export async function updateProjectConfig(projectYmlPath, pkgName, funcName) {
28
+ export async function updateProjectConfig(projectYmlPath, pkgName, funcName, funcLanguage) {
29
29
  try {
30
- const functionObj = { name: funcName, runtime: DEFAULT_RUNTIME, web: true };
30
+ const funcLanguageObj = functionTemplateService.getTemplateByDirName(funcLanguage);
31
+ if (!funcLanguageObj) {
32
+ throw new Error(`Unsupported function language: ${funcLanguage}`);
33
+ }
34
+ const functionObj = { name: funcName, runtime: funcLanguageObj.runtime, web: true };
31
35
  const exists = await fs.exists(projectYmlPath);
32
36
  if (!exists) {
33
37
  const initial = { packages: [{ name: pkgName, functions: [functionObj] }] };
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/utils/util.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/utils/util.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "do-functions-cli",
3
- "version": "1.1.0",
3
+ "version": "1.4.0",
4
4
  "type": "module",
5
5
  "repository": {
6
6
  "type": "git",
@@ -13,8 +13,10 @@
13
13
  },
14
14
  "scripts": {
15
15
  "build": "tsc",
16
- "format": "prettier --write .",
17
- "format:check": "prettier --check .",
16
+ "format": "prettier --write ./src",
17
+ "format:check": "prettier --check ./src",
18
+ "lint": "eslint ./src --ext .ts",
19
+ "lint:fix": "eslint ./src --ext .ts --fix",
18
20
  "prepublishOnly": "npm run build",
19
21
  "watch": "tsc -w"
20
22
  },
@@ -27,10 +29,19 @@
27
29
  "zod": "^4.1.13"
28
30
  },
29
31
  "devDependencies": {
32
+ "@eslint/js": "^9.39.1",
33
+ "@semantic-release/git": "^10.0.1",
34
+ "@trivago/prettier-plugin-sort-imports": "^6.0.0",
30
35
  "@types/fs-extra": "^11.0.4",
31
36
  "@types/node": "^24.10.1",
37
+ "eslint": "^9.39.1",
38
+ "eslint-config-prettier": "^10.1.8",
39
+ "globals": "^16.5.0",
40
+ "jiti": "^2.6.1",
32
41
  "prettier": "^3.7.2",
33
- "typescript": "^5.9.3"
42
+ "prettier-plugin-organize-imports": "^4.3.0",
43
+ "typescript": "^5.9.3",
44
+ "typescript-eslint": "^8.48.0"
34
45
  },
35
46
  "files": [
36
47
  "dist",