@aerostack/cli 1.4.0 → 1.5.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.
- package/README.md +15 -0
- package/bin/postinstall.js +8 -39
- package/bin/run.js +85 -83
- package/dist/commands/add.d.ts +21 -0
- package/dist/commands/add.d.ts.map +1 -0
- package/dist/commands/add.js +248 -0
- package/dist/commands/add.js.map +1 -0
- package/dist/commands/init.d.ts +11 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +114 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/list.d.ts +13 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +79 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/login.d.ts +12 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +59 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/publish.d.ts +11 -0
- package/dist/commands/publish.d.ts.map +1 -0
- package/dist/commands/publish.js +230 -0
- package/dist/commands/publish.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +93 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/config.d.ts +9 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +24 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/injector.d.ts +30 -0
- package/dist/lib/injector.d.ts.map +1 -0
- package/dist/lib/injector.js +84 -0
- package/dist/lib/injector.js.map +1 -0
- package/dist/lib/registry.d.ts +81 -0
- package/dist/lib/registry.d.ts.map +1 -0
- package/dist/lib/registry.js +124 -0
- package/dist/lib/registry.js.map +1 -0
- package/package.json +16 -3
- package/templates/drizzle.config.ts +16 -0
- package/templates/package.json +23 -0
- package/templates/src/db/client.ts +12 -0
- package/templates/src/db/schema.ts +14 -0
- package/templates/src/index.ts +28 -0
- package/templates/tsconfig.json +29 -0
- package/templates/wrangler.toml +16 -0
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `aerostack init [directory]`
|
|
3
|
+
*
|
|
4
|
+
* Scaffolds a new Aerostack project with:
|
|
5
|
+
* - Hono framework (Cloudflare Workers)
|
|
6
|
+
* - Drizzle ORM (D1 Database)
|
|
7
|
+
* - Standard module structure (src/modules/, src/lib/, src/db/)
|
|
8
|
+
* - Injection markers so `aerostack add` can auto-wire modules
|
|
9
|
+
*/
|
|
10
|
+
import chalk from 'chalk';
|
|
11
|
+
import prompts from 'prompts';
|
|
12
|
+
import ora from 'ora';
|
|
13
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync, readdirSync, statSync } from 'fs';
|
|
14
|
+
import { join, resolve, dirname } from 'path';
|
|
15
|
+
import { fileURLToPath } from 'url';
|
|
16
|
+
import { execSync } from 'child_process';
|
|
17
|
+
import { applyTokens } from '../lib/injector.js';
|
|
18
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
19
|
+
const TEMPLATES_DIR = resolve(__dirname, '../../templates');
|
|
20
|
+
function copyDir(src, dest, tokens) {
|
|
21
|
+
mkdirSync(dest, { recursive: true });
|
|
22
|
+
for (const entry of readdirSync(src)) {
|
|
23
|
+
const srcPath = join(src, entry);
|
|
24
|
+
const destPath = join(dest, entry);
|
|
25
|
+
if (statSync(srcPath).isDirectory()) {
|
|
26
|
+
copyDir(srcPath, destPath, tokens);
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
const raw = readFileSync(srcPath, 'utf-8');
|
|
30
|
+
writeFileSync(destPath, applyTokens(raw, tokens), 'utf-8');
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
export async function initCommand(args) {
|
|
35
|
+
console.log(`\n${chalk.bold.blue(' ⚡ Aerostack Init')}\n`);
|
|
36
|
+
let targetDir = args[0] || '.';
|
|
37
|
+
// Prompt for project name
|
|
38
|
+
const { projectName } = await prompts({
|
|
39
|
+
type: 'text',
|
|
40
|
+
name: 'projectName',
|
|
41
|
+
message: 'Project name:',
|
|
42
|
+
initial: targetDir === '.' ? 'my-aerostack-project' : targetDir,
|
|
43
|
+
validate: (v) => v.trim().length > 0 || 'Name is required',
|
|
44
|
+
});
|
|
45
|
+
if (!projectName) {
|
|
46
|
+
console.log(chalk.yellow('\n Aborted.\n'));
|
|
47
|
+
process.exit(0);
|
|
48
|
+
}
|
|
49
|
+
const { confirmInstall } = await prompts({
|
|
50
|
+
type: 'confirm',
|
|
51
|
+
name: 'confirmInstall',
|
|
52
|
+
message: 'Install npm dependencies now?',
|
|
53
|
+
initial: true,
|
|
54
|
+
});
|
|
55
|
+
const resolvedDir = resolve(process.cwd(), targetDir === '.' ? '.' : projectName);
|
|
56
|
+
if (existsSync(resolvedDir) && targetDir !== '.') {
|
|
57
|
+
const { overwrite } = await prompts({
|
|
58
|
+
type: 'confirm',
|
|
59
|
+
name: 'overwrite',
|
|
60
|
+
message: `Directory "${projectName}" already exists. Continue?`,
|
|
61
|
+
initial: false,
|
|
62
|
+
});
|
|
63
|
+
if (!overwrite) {
|
|
64
|
+
console.log(chalk.yellow('\n Aborted.\n'));
|
|
65
|
+
process.exit(0);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
const spinner = ora('Creating project files...').start();
|
|
69
|
+
try {
|
|
70
|
+
const tokens = {
|
|
71
|
+
PROJECT_NAME: projectName,
|
|
72
|
+
};
|
|
73
|
+
// Copy all template files with token substitution
|
|
74
|
+
copyDir(TEMPLATES_DIR, resolvedDir, tokens);
|
|
75
|
+
// Create empty module placeholder
|
|
76
|
+
mkdirSync(join(resolvedDir, 'src', 'modules'), { recursive: true });
|
|
77
|
+
mkdirSync(join(resolvedDir, 'src', 'lib'), { recursive: true });
|
|
78
|
+
mkdirSync(join(resolvedDir, 'drizzle'), { recursive: true });
|
|
79
|
+
// Create .env.example
|
|
80
|
+
writeFileSync(join(resolvedDir, '.env.example'), `CLOUDFLARE_ACCOUNT_ID=\nCLOUDFLARE_DATABASE_ID=\nCLOUDFLARE_D1_TOKEN=\n`);
|
|
81
|
+
// Create .gitignore
|
|
82
|
+
writeFileSync(join(resolvedDir, '.gitignore'), `node_modules/\ndist/\n.wrangler/\n.aerostack/\n.env\n`);
|
|
83
|
+
spinner.succeed('Project files created!');
|
|
84
|
+
if (confirmInstall) {
|
|
85
|
+
const installSpinner = ora('Installing dependencies...').start();
|
|
86
|
+
try {
|
|
87
|
+
execSync('npm install', { cwd: resolvedDir, stdio: 'pipe' });
|
|
88
|
+
installSpinner.succeed('Dependencies installed!');
|
|
89
|
+
}
|
|
90
|
+
catch {
|
|
91
|
+
installSpinner.warn('npm install failed — run it manually');
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
console.log(`
|
|
95
|
+
${chalk.green(' ✓ Project created successfully!')}
|
|
96
|
+
|
|
97
|
+
${chalk.bold(' Next steps:')}
|
|
98
|
+
|
|
99
|
+
${chalk.gray('1.')} ${chalk.cyan(`cd ${targetDir === '.' ? '.' : projectName}`)}
|
|
100
|
+
${chalk.gray('2.')} Set up Cloudflare D1: ${chalk.cyan('npx wrangler d1 create my-db')}
|
|
101
|
+
${chalk.gray('3.')} Update ${chalk.bold('wrangler.toml')} with your database ID
|
|
102
|
+
${chalk.gray('4.')} Push schema: ${chalk.cyan('npx drizzle-kit push')}
|
|
103
|
+
${chalk.gray('5.')} Start dev: ${chalk.cyan('npx wrangler dev')}
|
|
104
|
+
${chalk.gray('6.')} Add functions: ${chalk.cyan('npx aerostack add <function-name>')}
|
|
105
|
+
|
|
106
|
+
${chalk.bold(' Registry:')} ${chalk.underline('https://hub.aerostack.dev')}
|
|
107
|
+
`);
|
|
108
|
+
}
|
|
109
|
+
catch (err) {
|
|
110
|
+
spinner.fail('Failed to create project');
|
|
111
|
+
throw err;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAU,MAAM,IAAI,CAAC;AACvG,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,MAAM,aAAa,GAAG,OAAO,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;AAE5D,SAAS,OAAO,CAAC,GAAW,EAAE,IAAY,EAAE,MAA8B;IACtE,SAAS,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACrC,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACnC,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;YAClC,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QACvC,CAAC;aAAM,CAAC;YACJ,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC3C,aAAa,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC;QAC/D,CAAC;IACL,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAc;IAC5C,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAE5D,IAAI,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;IAE/B,0BAA0B;IAC1B,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,OAAO,CAAC;QAClC,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,eAAe;QACxB,OAAO,EAAE,SAAS,KAAK,GAAG,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,SAAS;QAC/D,QAAQ,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,kBAAkB;KACrE,CAAC,CAAC;IAEH,IAAI,CAAC,WAAW,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,OAAO,CAAC;QACrC,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,+BAA+B;QACxC,OAAO,EAAE,IAAI;KAChB,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IAElF,IAAI,UAAU,CAAC,WAAW,CAAC,IAAI,SAAS,KAAK,GAAG,EAAE,CAAC;QAC/C,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,OAAO,CAAC;YAChC,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,cAAc,WAAW,6BAA6B;YAC/D,OAAO,EAAE,KAAK;SACjB,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC;YAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;IACL,CAAC;IAED,MAAM,OAAO,GAAG,GAAG,CAAC,2BAA2B,CAAC,CAAC,KAAK,EAAE,CAAC;IAEzD,IAAI,CAAC;QACD,MAAM,MAAM,GAAG;YACX,YAAY,EAAE,WAAW;SAC5B,CAAC;QAEF,kDAAkD;QAClD,OAAO,CAAC,aAAa,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;QAE5C,kCAAkC;QAClC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACpE,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAChE,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE7D,sBAAsB;QACtB,aAAa,CACT,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,EACjC,yEAAyE,CAC5E,CAAC;QAEF,oBAAoB;QACpB,aAAa,CACT,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,EAC/B,uDAAuD,CAC1D,CAAC;QAEF,OAAO,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;QAE1C,IAAI,cAAc,EAAE,CAAC;YACjB,MAAM,cAAc,GAAG,GAAG,CAAC,4BAA4B,CAAC,CAAC,KAAK,EAAE,CAAC;YACjE,IAAI,CAAC;gBACD,QAAQ,CAAC,aAAa,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;gBAC7D,cAAc,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;YACtD,CAAC;YAAC,MAAM,CAAC;gBACL,cAAc,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;YAChE,CAAC;QACL,CAAC;QAED,OAAO,CAAC,GAAG,CAAC;EAClB,KAAK,CAAC,KAAK,CAAC,mCAAmC,CAAC;;EAEhD,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC;;IAEzB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,SAAS,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAC7E,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,0BAA0B,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC;IACpF,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC;IACtD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC;IACnE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC;IAC7D,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,KAAK,CAAC,IAAI,CAAC,mCAAmC,CAAC;;EAEpF,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,2BAA2B,CAAC;CAC3E,CAAC,CAAC;IACC,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAChB,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACzC,MAAM,GAAG,CAAC;IACd,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `aerostack list`
|
|
3
|
+
*
|
|
4
|
+
* Browse the community function registry in your terminal.
|
|
5
|
+
*
|
|
6
|
+
* Usage:
|
|
7
|
+
* npx aerostack list
|
|
8
|
+
* npx aerostack list --category=payments
|
|
9
|
+
* npx aerostack list --search=stripe
|
|
10
|
+
* npx aerostack list --sort=stars
|
|
11
|
+
*/
|
|
12
|
+
export declare function listCommand(args: string[]): Promise<void>;
|
|
13
|
+
//# sourceMappingURL=list.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAsCH,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,iBAwC/C"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `aerostack list`
|
|
3
|
+
*
|
|
4
|
+
* Browse the community function registry in your terminal.
|
|
5
|
+
*
|
|
6
|
+
* Usage:
|
|
7
|
+
* npx aerostack list
|
|
8
|
+
* npx aerostack list --category=payments
|
|
9
|
+
* npx aerostack list --search=stripe
|
|
10
|
+
* npx aerostack list --sort=stars
|
|
11
|
+
*/
|
|
12
|
+
import chalk from 'chalk';
|
|
13
|
+
import ora from 'ora';
|
|
14
|
+
import { listFunctions, DEFAULT_REGISTRY } from '../lib/registry.js';
|
|
15
|
+
function parseArgs(args) {
|
|
16
|
+
const flags = {};
|
|
17
|
+
for (const arg of args) {
|
|
18
|
+
if (arg.startsWith('--')) {
|
|
19
|
+
const [key, val] = arg.slice(2).split('=');
|
|
20
|
+
flags[key] = val || 'true';
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return flags;
|
|
24
|
+
}
|
|
25
|
+
function truncate(str, max) {
|
|
26
|
+
return str.length > max ? str.slice(0, max - 1) + '…' : str;
|
|
27
|
+
}
|
|
28
|
+
function renderFunction(fn, i) {
|
|
29
|
+
const stars = chalk.yellow(`★ ${fn.star_count}`);
|
|
30
|
+
const clones = chalk.gray(`⬇ ${fn.clone_count}`);
|
|
31
|
+
const category = chalk.blue(`[${fn.category}]`);
|
|
32
|
+
const name = chalk.bold.white(fn.name);
|
|
33
|
+
const author = chalk.gray(`@${fn.author_username}`);
|
|
34
|
+
const desc = chalk.gray(truncate(fn.description || '', 70));
|
|
35
|
+
const install = chalk.cyan(`npx aerostack add ${fn.author_username}/${fn.slug}`);
|
|
36
|
+
return [
|
|
37
|
+
` ${chalk.gray(String(i + 1).padStart(2, ' '))}. ${name} ${author}`,
|
|
38
|
+
` ${category} ${stars} ${clones}`,
|
|
39
|
+
` ${desc}`,
|
|
40
|
+
` ${install}`,
|
|
41
|
+
].join('\n');
|
|
42
|
+
}
|
|
43
|
+
export async function listCommand(args) {
|
|
44
|
+
const flags = parseArgs(args);
|
|
45
|
+
const registry = flags['registry'] || DEFAULT_REGISTRY;
|
|
46
|
+
const opts = {
|
|
47
|
+
category: flags['category'],
|
|
48
|
+
search: flags['search'],
|
|
49
|
+
sort: flags['sort'] || 'stars',
|
|
50
|
+
limit: flags['limit'] ? parseInt(flags['limit']) : 20,
|
|
51
|
+
};
|
|
52
|
+
console.log(`\n${chalk.bold.blue(' ⚡ Aerostack Registry')}`);
|
|
53
|
+
if (opts.search)
|
|
54
|
+
console.log(` ${chalk.gray(`Search: "${opts.search}"`)}`);
|
|
55
|
+
if (opts.category)
|
|
56
|
+
console.log(` ${chalk.gray(`Category: ${opts.category}`)}`);
|
|
57
|
+
console.log();
|
|
58
|
+
const spinner = ora('Fetching functions...').start();
|
|
59
|
+
let functions;
|
|
60
|
+
try {
|
|
61
|
+
functions = await listFunctions(registry, opts);
|
|
62
|
+
spinner.stop();
|
|
63
|
+
}
|
|
64
|
+
catch (err) {
|
|
65
|
+
spinner.fail(err.message);
|
|
66
|
+
process.exit(1);
|
|
67
|
+
}
|
|
68
|
+
if (functions.length === 0) {
|
|
69
|
+
console.log(chalk.yellow(' No functions found.\n'));
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
console.log(` ${chalk.bold(`${functions.length} functions`)}\n`);
|
|
73
|
+
for (let i = 0; i < functions.length; i++) {
|
|
74
|
+
console.log(renderFunction(functions[i], i));
|
|
75
|
+
console.log();
|
|
76
|
+
}
|
|
77
|
+
console.log(chalk.gray(` Browse more: ${chalk.underline('https://hub.aerostack.dev/functions')}\n`));
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `aerostack login`
|
|
3
|
+
*
|
|
4
|
+
* Authenticates with the Aerostack registry and stores the JWT
|
|
5
|
+
* in ~/.aerostack/config.json.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* npx aerostack login
|
|
9
|
+
* npx aerostack login --registry=https://api.mystack.dev/api
|
|
10
|
+
*/
|
|
11
|
+
export declare function loginCommand(args: string[]): Promise<void>;
|
|
12
|
+
//# sourceMappingURL=login.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAQH,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,iBA8ChD"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `aerostack login`
|
|
3
|
+
*
|
|
4
|
+
* Authenticates with the Aerostack registry and stores the JWT
|
|
5
|
+
* in ~/.aerostack/config.json.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* npx aerostack login
|
|
9
|
+
* npx aerostack login --registry=https://api.mystack.dev/api
|
|
10
|
+
*/
|
|
11
|
+
import chalk from 'chalk';
|
|
12
|
+
import prompts from 'prompts';
|
|
13
|
+
import ora from 'ora';
|
|
14
|
+
import { loginToRegistry, DEFAULT_REGISTRY } from '../lib/registry.js';
|
|
15
|
+
import { saveConfig, getConfig } from '../lib/config.js';
|
|
16
|
+
export async function loginCommand(args) {
|
|
17
|
+
const flags = {};
|
|
18
|
+
for (const arg of args) {
|
|
19
|
+
if (arg.startsWith('--')) {
|
|
20
|
+
const [key, val] = arg.slice(2).split('=');
|
|
21
|
+
flags[key] = val || 'true';
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
const registry = flags['registry'] || DEFAULT_REGISTRY;
|
|
25
|
+
console.log(`\n${chalk.bold.blue(' ⚡ Aerostack Login')}\n`);
|
|
26
|
+
console.log(` Connecting to ${chalk.cyan(registry)}\n`);
|
|
27
|
+
const { email, password } = await prompts([
|
|
28
|
+
{
|
|
29
|
+
type: 'text',
|
|
30
|
+
name: 'email',
|
|
31
|
+
message: 'Email:',
|
|
32
|
+
validate: (v) => v.includes('@') || 'Enter a valid email',
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
type: 'password',
|
|
36
|
+
name: 'password',
|
|
37
|
+
message: 'Password:',
|
|
38
|
+
validate: (v) => v.length > 0 || 'Password required',
|
|
39
|
+
},
|
|
40
|
+
]);
|
|
41
|
+
if (!email || !password) {
|
|
42
|
+
console.log(chalk.yellow('\n Aborted.\n'));
|
|
43
|
+
process.exit(0);
|
|
44
|
+
}
|
|
45
|
+
const spinner = ora('Logging in...').start();
|
|
46
|
+
try {
|
|
47
|
+
const token = await loginToRegistry(registry, email, password);
|
|
48
|
+
const existingConfig = getConfig();
|
|
49
|
+
saveConfig({ ...existingConfig, token, email, registry });
|
|
50
|
+
spinner.succeed(`Logged in as ${chalk.cyan(email)}`);
|
|
51
|
+
console.log(chalk.gray(`\n Token saved to ~/.aerostack/config.json\n`));
|
|
52
|
+
console.log(` You can now publish functions: ${chalk.cyan('npx aerostack publish')}\n`);
|
|
53
|
+
}
|
|
54
|
+
catch (err) {
|
|
55
|
+
spinner.fail(err.message);
|
|
56
|
+
process.exit(1);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=login.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEzD,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAc;IAC7C,MAAM,KAAK,GAA2B,EAAE,CAAC;IACzC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACrB,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACvB,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC3C,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,MAAM,CAAC;QAC/B,CAAC;IACL,CAAC;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,gBAAgB,CAAC;IAEvD,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC7D,OAAO,CAAC,GAAG,CAAC,mBAAmB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAEzD,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,OAAO,CAAC;QACtC;YACI,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,QAAQ;YACjB,QAAQ,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,qBAAqB;SACpE;QACD;YACI,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,WAAW;YACpB,QAAQ,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,mBAAmB;SAC/D;KACJ,CAAC,CAAC;IAEH,IAAI,CAAC,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,MAAM,OAAO,GAAG,GAAG,CAAC,eAAe,CAAC,CAAC,KAAK,EAAE,CAAC;IAC7C,IAAI,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC/D,MAAM,cAAc,GAAG,SAAS,EAAE,CAAC;QACnC,UAAU,CAAC,EAAE,GAAG,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC1D,OAAO,CAAC,OAAO,CAAC,gBAAgB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC,CAAC;QACzE,OAAO,CAAC,GAAG,CAAC,oCAAoC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAC7F,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAChB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `aerostack publish [module-path]`
|
|
3
|
+
*
|
|
4
|
+
* Reads a local function module and pushes it to the community registry.
|
|
5
|
+
*
|
|
6
|
+
* Usage:
|
|
7
|
+
* npx aerostack publish → uses current directory
|
|
8
|
+
* npx aerostack publish ./src/modules/my-fn → specific module
|
|
9
|
+
*/
|
|
10
|
+
export declare function publishCommand(args: string[]): Promise<void>;
|
|
11
|
+
//# sourceMappingURL=publish.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../../src/commands/publish.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA6EH,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,iBAyKlD"}
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `aerostack publish [module-path]`
|
|
3
|
+
*
|
|
4
|
+
* Reads a local function module and pushes it to the community registry.
|
|
5
|
+
*
|
|
6
|
+
* Usage:
|
|
7
|
+
* npx aerostack publish → uses current directory
|
|
8
|
+
* npx aerostack publish ./src/modules/my-fn → specific module
|
|
9
|
+
*/
|
|
10
|
+
import chalk from 'chalk';
|
|
11
|
+
import prompts from 'prompts';
|
|
12
|
+
import ora from 'ora';
|
|
13
|
+
import { readFileSync, existsSync, readdirSync, statSync } from 'fs';
|
|
14
|
+
import { join, resolve, basename } from 'path';
|
|
15
|
+
import { createFunction, updateFunction, publishFunction, DEFAULT_REGISTRY } from '../lib/registry.js';
|
|
16
|
+
import { isAuthenticated } from '../lib/config.js';
|
|
17
|
+
function readLocalManifest(moduleDir) {
|
|
18
|
+
const manifestPath = join(moduleDir, 'aerostack-manifest.json');
|
|
19
|
+
if (existsSync(manifestPath)) {
|
|
20
|
+
return JSON.parse(readFileSync(manifestPath, 'utf-8'));
|
|
21
|
+
}
|
|
22
|
+
return {};
|
|
23
|
+
}
|
|
24
|
+
function readAerostackJson(moduleDir) {
|
|
25
|
+
const configPath = join(moduleDir, 'aerostack.json');
|
|
26
|
+
if (existsSync(configPath)) {
|
|
27
|
+
try {
|
|
28
|
+
return JSON.parse(readFileSync(configPath, 'utf-8'));
|
|
29
|
+
}
|
|
30
|
+
catch (e) {
|
|
31
|
+
console.warn(chalk.yellow(` Warning: Could not parse aerostack.json in ${moduleDir}`));
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return {};
|
|
35
|
+
}
|
|
36
|
+
function readCoreFile(moduleDir) {
|
|
37
|
+
// Prefer core.ts, then adapter.ts, then index.ts
|
|
38
|
+
for (const fname of ['core.ts', 'adapter.ts', 'index.ts']) {
|
|
39
|
+
const p = join(moduleDir, fname);
|
|
40
|
+
if (existsSync(p))
|
|
41
|
+
return readFileSync(p, 'utf-8');
|
|
42
|
+
}
|
|
43
|
+
return '';
|
|
44
|
+
}
|
|
45
|
+
function inferCategory(moduleDir) {
|
|
46
|
+
const files = readdirSync(moduleDir);
|
|
47
|
+
const code = files
|
|
48
|
+
.filter(f => f.endsWith('.ts'))
|
|
49
|
+
.map(f => readFileSync(join(moduleDir, f), 'utf-8'))
|
|
50
|
+
.join('\n');
|
|
51
|
+
if (code.includes('stripe'))
|
|
52
|
+
return 'payments';
|
|
53
|
+
if (code.includes('drizzle') && code.includes('auth'))
|
|
54
|
+
return 'auth';
|
|
55
|
+
if (code.includes('email') || code.includes('sendgrid'))
|
|
56
|
+
return 'email';
|
|
57
|
+
return 'utility';
|
|
58
|
+
}
|
|
59
|
+
function parseArgs(args) {
|
|
60
|
+
const path = args.find(a => !a.startsWith('--'));
|
|
61
|
+
const flags = {};
|
|
62
|
+
for (const arg of args) {
|
|
63
|
+
if (arg.startsWith('--')) {
|
|
64
|
+
const [key, val] = arg.slice(2).split('=');
|
|
65
|
+
flags[key] = val || 'true';
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return { path, flags };
|
|
69
|
+
}
|
|
70
|
+
export async function publishCommand(args) {
|
|
71
|
+
const { path: modulePath, flags } = parseArgs(args);
|
|
72
|
+
const registry = flags['registry'] || DEFAULT_REGISTRY;
|
|
73
|
+
console.log(`\n${chalk.bold.blue(' ⚡ Aerostack Publish')}\n`);
|
|
74
|
+
if (!isAuthenticated()) {
|
|
75
|
+
console.error(chalk.red(' Not logged in. Run: npx aerostack login\n'));
|
|
76
|
+
process.exit(1);
|
|
77
|
+
}
|
|
78
|
+
// Find module directory
|
|
79
|
+
let moduleDir;
|
|
80
|
+
if (modulePath) {
|
|
81
|
+
moduleDir = resolve(process.cwd(), modulePath);
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
// Try current directory or look for a single module
|
|
85
|
+
const srcModules = join(process.cwd(), 'src', 'modules');
|
|
86
|
+
if (existsSync(srcModules)) {
|
|
87
|
+
const dirs = readdirSync(srcModules).filter(d => statSync(join(srcModules, d)).isDirectory());
|
|
88
|
+
if (dirs.length === 1) {
|
|
89
|
+
moduleDir = join(srcModules, dirs[0]);
|
|
90
|
+
}
|
|
91
|
+
else if (dirs.length > 1) {
|
|
92
|
+
const { selected } = await prompts({
|
|
93
|
+
type: 'select',
|
|
94
|
+
name: 'selected',
|
|
95
|
+
message: 'Which module to publish?',
|
|
96
|
+
choices: dirs.map(d => ({ title: d, value: join(srcModules, d) })),
|
|
97
|
+
});
|
|
98
|
+
moduleDir = selected;
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
console.error(chalk.red(' No modules found in src/modules/\n'));
|
|
102
|
+
process.exit(1);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
moduleDir = process.cwd();
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
if (!existsSync(moduleDir)) {
|
|
110
|
+
console.error(chalk.red(` Directory not found: ${moduleDir}\n`));
|
|
111
|
+
process.exit(1);
|
|
112
|
+
}
|
|
113
|
+
const localManifest = readLocalManifest(moduleDir);
|
|
114
|
+
const moduleName = localManifest.name || basename(moduleDir);
|
|
115
|
+
// Read the Gateway configurations (Phase 1.7)
|
|
116
|
+
const aerostackConfig = readAerostackJson(moduleDir);
|
|
117
|
+
const aiConfig = aerostackConfig.ai_config || aerostackConfig.aiConfig;
|
|
118
|
+
const monetization = aerostackConfig.monetization;
|
|
119
|
+
// Collect all TS file content
|
|
120
|
+
const tsFiles = readdirSync(moduleDir)
|
|
121
|
+
.filter(f => f.endsWith('.ts') && f !== 'node-adapter.ts')
|
|
122
|
+
.map(f => ({ path: f, content: readFileSync(join(moduleDir, f), 'utf-8') }));
|
|
123
|
+
const primaryCode = readCoreFile(moduleDir);
|
|
124
|
+
if (!primaryCode) {
|
|
125
|
+
console.error(chalk.red(' No TypeScript source files found.\n'));
|
|
126
|
+
process.exit(1);
|
|
127
|
+
}
|
|
128
|
+
// Prompt for function metadata
|
|
129
|
+
const answers = await prompts([
|
|
130
|
+
{
|
|
131
|
+
type: 'text',
|
|
132
|
+
name: 'name',
|
|
133
|
+
message: 'Function name:',
|
|
134
|
+
initial: moduleName,
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
type: 'text',
|
|
138
|
+
name: 'description',
|
|
139
|
+
message: 'Description:',
|
|
140
|
+
initial: '',
|
|
141
|
+
validate: (v) => v.trim().length >= 10 || 'At least 10 characters required',
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
type: 'select',
|
|
145
|
+
name: 'category',
|
|
146
|
+
message: 'Category:',
|
|
147
|
+
choices: [
|
|
148
|
+
{ title: 'Payments', value: 'payments' },
|
|
149
|
+
{ title: 'Auth', value: 'auth' },
|
|
150
|
+
{ title: 'Email', value: 'email' },
|
|
151
|
+
{ title: 'Data Processing', value: 'data' },
|
|
152
|
+
{ title: 'API Integration', value: 'api' },
|
|
153
|
+
{ title: 'AI / ML', value: 'ai' },
|
|
154
|
+
{ title: 'Web3', value: 'web3' },
|
|
155
|
+
{ title: 'Utility', value: 'utility' },
|
|
156
|
+
{ title: 'Other', value: 'other' },
|
|
157
|
+
],
|
|
158
|
+
initial: 0,
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
type: 'text',
|
|
162
|
+
name: 'tags',
|
|
163
|
+
message: 'Tags (comma separated):',
|
|
164
|
+
initial: '',
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
type: 'confirm',
|
|
168
|
+
name: 'publishNow',
|
|
169
|
+
message: 'Publish immediately? (No = save as draft)',
|
|
170
|
+
initial: false,
|
|
171
|
+
},
|
|
172
|
+
]);
|
|
173
|
+
if (!answers.name) {
|
|
174
|
+
console.log(chalk.yellow('\n Aborted.\n'));
|
|
175
|
+
process.exit(0);
|
|
176
|
+
}
|
|
177
|
+
const tags = answers.tags ? answers.tags.split(',').map((t) => t.trim()).filter(Boolean) : [];
|
|
178
|
+
// Upload
|
|
179
|
+
const spinner = ora('Uploading to registry...').start();
|
|
180
|
+
try {
|
|
181
|
+
let fnId;
|
|
182
|
+
let fnSlug;
|
|
183
|
+
if (localManifest.id) {
|
|
184
|
+
// Update existing
|
|
185
|
+
await updateFunction(registry, localManifest.id, {
|
|
186
|
+
name: answers.name,
|
|
187
|
+
description: answers.description,
|
|
188
|
+
code: primaryCode,
|
|
189
|
+
tags,
|
|
190
|
+
aiConfig,
|
|
191
|
+
monetization,
|
|
192
|
+
});
|
|
193
|
+
fnId = localManifest.id;
|
|
194
|
+
fnSlug = localManifest.slug || answers.name;
|
|
195
|
+
spinner.succeed('Function updated');
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
// Create new
|
|
199
|
+
const created = await createFunction(registry, {
|
|
200
|
+
name: answers.name,
|
|
201
|
+
description: answers.description,
|
|
202
|
+
category: answers.category,
|
|
203
|
+
code: primaryCode,
|
|
204
|
+
tags,
|
|
205
|
+
language: 'typescript',
|
|
206
|
+
license: 'MIT',
|
|
207
|
+
aiConfig,
|
|
208
|
+
monetization,
|
|
209
|
+
});
|
|
210
|
+
fnId = created.id;
|
|
211
|
+
fnSlug = created.slug;
|
|
212
|
+
spinner.succeed(`Function created: ${chalk.cyan(`${created.author}/${fnSlug}`)}`);
|
|
213
|
+
}
|
|
214
|
+
if (answers.publishNow) {
|
|
215
|
+
const pubSpinner = ora('Publishing...').start();
|
|
216
|
+
const result = await publishFunction(registry, fnId);
|
|
217
|
+
pubSpinner.succeed(`Published! 🎉`);
|
|
218
|
+
console.log(`\n ${chalk.bold('Registry URL:')} ${chalk.underline(`https://hub.aerostack.dev${result.url}`)}\n`);
|
|
219
|
+
}
|
|
220
|
+
else {
|
|
221
|
+
console.log(`\n ${chalk.green('✓ Saved as draft.')} To publish later:`);
|
|
222
|
+
console.log(` ${chalk.cyan('npx aerostack publish --publish-only')}\n`);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
catch (err) {
|
|
226
|
+
spinner.fail(err.message);
|
|
227
|
+
process.exit(1);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
//# sourceMappingURL=publish.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../../src/commands/publish.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Aerostack CLI — Main Entry Point
|
|
4
|
+
*
|
|
5
|
+
* Usage:
|
|
6
|
+
* npx aerostack init [directory] — scaffold a new project
|
|
7
|
+
* npx aerostack add <slug> — install a function from registry
|
|
8
|
+
* npx aerostack list — browse available functions
|
|
9
|
+
* npx aerostack publish — push local function to registry
|
|
10
|
+
* npx aerostack login — authenticate with Aerostack
|
|
11
|
+
*/
|
|
12
|
+
export declare function run(args: string[]): Promise<void>;
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;GASG;AA8CH,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,iBA0CvC"}
|