@proappstore/cli 2.6.4 → 2.6.5

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/dist/index.js CHANGED
@@ -12,6 +12,7 @@ import { whoamiCommand } from './whoami.js';
12
12
  import { publishApp } from './publish.js';
13
13
  import { secretCommand } from './secret.js';
14
14
  import { proxyCommand } from './proxy.js';
15
+ import { integrateCommand } from './integrate.js';
15
16
  const __dirname = dirname(fileURLToPath(import.meta.url));
16
17
  const pkg = JSON.parse(readFileSync(join(__dirname, '..', 'package.json'), 'utf8'));
17
18
  const program = new Command();
@@ -50,6 +51,7 @@ program.addCommand(checkCommand);
50
51
  program.addCommand(domainCommand);
51
52
  program.addCommand(secretCommand);
52
53
  program.addCommand(proxyCommand);
54
+ program.addCommand(integrateCommand);
53
55
  program.parseAsync().catch((err) => {
54
56
  const msg = err instanceof Error ? err.message : String(err);
55
57
  process.stderr.write(`pas: ${msg}\n`);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAAwB,CAAC;AAE3G,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,KAAK,CAAC;KACX,WAAW,CAAC,0DAA0D,CAAC;KACvE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAExB,OAAO;KACJ,OAAO,CAAC,iBAAiB,CAAC;KAC1B,WAAW,CAAC,4FAA4F,CAAC;KACzG,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC;KAC7C,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC;KACrC,MAAM,CAAC,kBAAkB,EAAE,iCAAiC,CAAC;KAC7D,MAAM,CAAC,iBAAiB,EAAE,kDAAkD,CAAC;KAC7E,MAAM,CAAC,qBAAqB,EAAE,oDAAoD,CAAC;KACnF,MAAM,CAAC,KAAK,EAAE,KAAa,EAAE,IAA0G,EAAE,EAAE;IAC1I,MAAM,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC/B,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAElC,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,iFAAiF,CAAC;KAC9F,MAAM,CAAC,eAAe,EAAE,4DAA4D,CAAC;KACrF,MAAM,CAAC,uBAAuB,EAAE,iDAAiD,CAAC;KAClF,MAAM,CAAC,6BAA6B,EAAE,8CAA8C,CAAC;KACrF,MAAM,CAAC,eAAe,EAAE,oCAAoC,CAAC;KAC7D,MAAM,CAAC,mBAAmB,EAAE,2BAA2B,CAAC;KACxD,MAAM,CAAC,uBAAuB,EAAE,+DAA+D,CAAC;KAChG,MAAM,CAAC,iBAAiB,EAAE,kDAAkD,CAAC;KAC7E,MAAM,CAAC,KAAK,EAAE,IAAsI,EAAE,EAAE;IACvJ,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AAEjC,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;IAC1C,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC7D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;IACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const integrateCommand: Command;
3
+ //# sourceMappingURL=integrate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integrate.d.ts","sourceRoot":"","sources":["../src/integrate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqBpC,eAAO,MAAM,gBAAgB,SA6FzB,CAAC"}
@@ -0,0 +1,125 @@
1
+ import { Command } from 'commander';
2
+ import { bearer, dieFromHttp, requireSession, resolveAppIdOrExit } from './secret.js';
3
+ import catalog from './integrations.json' with { type: 'json' };
4
+ const integrations = catalog;
5
+ export const integrateCommand = new Command('integrate')
6
+ .description('Connect a third-party API using pre-configured proxy rules.')
7
+ .argument('<name>', `integration name (${Object.keys(integrations).join(', ')})`)
8
+ .option('--app <id>', 'app id (defaults to package.json name in cwd)')
9
+ .option('--list', 'list all available integrations')
10
+ .action(async (name, opts) => {
11
+ if (name === 'list' || opts.list) {
12
+ process.stdout.write('\nAvailable integrations:\n\n');
13
+ for (const [id, int] of Object.entries(integrations)) {
14
+ process.stdout.write(` ${id.padEnd(20)} ${int.name}\n`);
15
+ }
16
+ process.stdout.write(`\nUsage: pas integrate <name> --app <id>\n`);
17
+ process.stdout.write(`Then follow the prompts to enter your API credentials.\n\n`);
18
+ return;
19
+ }
20
+ const integration = integrations[name];
21
+ if (!integration) {
22
+ process.stderr.write(`pas: unknown integration "${name}".\n`);
23
+ process.stderr.write(`Available: ${Object.keys(integrations).join(', ')}\n`);
24
+ process.stderr.write(`Run: pas integrate list\n`);
25
+ process.exit(1);
26
+ }
27
+ const cfg = await requireSession();
28
+ const appId = await resolveAppIdOrExit(opts.app);
29
+ const prefix = name.toUpperCase().replace(/-/g, '_');
30
+ process.stdout.write(`\n Integrating ${integration.name} for ${appId}\n\n`);
31
+ if (integration.note) {
32
+ process.stdout.write(` Note: ${integration.note}\n\n`);
33
+ }
34
+ // Collect secrets interactively
35
+ const secretValues = {};
36
+ for (const secretSuffix of integration.secrets) {
37
+ const secretName = `${prefix}_${secretSuffix}`;
38
+ process.stdout.write(` ${secretName}: `);
39
+ const value = await readLine();
40
+ if (!value.trim()) {
41
+ process.stderr.write(`\n Aborted — ${secretName} is required.\n`);
42
+ process.stderr.write(` Get yours at: ${integration.docs}\n\n`);
43
+ process.exit(1);
44
+ }
45
+ secretValues[secretName] = value.trim();
46
+ }
47
+ // Store secrets
48
+ for (const [secretName, value] of Object.entries(secretValues)) {
49
+ const res = await fetch(`${cfg.apiBase}/v1/apps/${appId}/secrets/${secretName}`, {
50
+ method: 'PUT',
51
+ headers: bearer(cfg),
52
+ body: JSON.stringify({ value }),
53
+ });
54
+ if (!res.ok)
55
+ await dieFromHttp(res, `store ${secretName}`);
56
+ process.stdout.write(` [+] Stored ${secretName}\n`);
57
+ }
58
+ // Create proxy allowlist rules
59
+ if (integration.patterns.length === 0) {
60
+ process.stdout.write(`\n Secrets stored. Add proxy rules for your specific API hosts:\n`);
61
+ process.stdout.write(` pas proxy allow 'https://<host>/' --inject ${mapAuth(integration)} --secret ${prefix}_${integration.secrets[0]} --app ${appId}\n\n`);
62
+ return;
63
+ }
64
+ const secretNames = Object.keys(secretValues);
65
+ for (const pattern of integration.patterns) {
66
+ const body = {
67
+ pattern,
68
+ injectKind: mapInjectKind(integration),
69
+ injectName: mapInjectName(integration),
70
+ secretName: secretNames[0],
71
+ methods: integration.methods,
72
+ };
73
+ if (integration.auth === 'oauth2_cc' && secretNames[1]) {
74
+ body.secretName2 = secretNames[1];
75
+ body.tokenUrl = integration.tokenUrl;
76
+ }
77
+ const res = await fetch(`${cfg.apiBase}/v1/apps/${appId}/allowlist`, {
78
+ method: 'PUT',
79
+ headers: bearer(cfg),
80
+ body: JSON.stringify(body),
81
+ });
82
+ if (!res.ok)
83
+ await dieFromHttp(res, `add rule for ${pattern}`);
84
+ process.stdout.write(` [+] Proxy rule: ${pattern}\n`);
85
+ }
86
+ process.stdout.write(`\n Done! Use in your app:\n`);
87
+ const exampleHost = new URL(integration.patterns[0]).host;
88
+ const examplePath = new URL(integration.patterns[0]).pathname;
89
+ process.stdout.write(` const res = await app.proxy.fetch('${exampleHost}${examplePath}...')\n\n`);
90
+ });
91
+ function mapInjectKind(int) {
92
+ switch (int.auth) {
93
+ case 'bearer': return 'bearer';
94
+ case 'header': return 'header';
95
+ case 'query': return 'query';
96
+ case 'oauth2_cc': return 'oauth2_cc';
97
+ default: return 'bearer';
98
+ }
99
+ }
100
+ function mapInjectName(int) {
101
+ if (int.auth === 'header')
102
+ return int.headerName ?? 'X-API-Key';
103
+ if (int.auth === 'query')
104
+ return int.queryParam ?? 'key';
105
+ return '';
106
+ }
107
+ function mapAuth(int) {
108
+ if (int.auth === 'header')
109
+ return `header:${int.headerName ?? 'X-API-Key'}`;
110
+ if (int.auth === 'query')
111
+ return `query:${int.queryParam ?? 'key'}`;
112
+ return int.auth;
113
+ }
114
+ function readLine() {
115
+ return new Promise((resolve) => {
116
+ let data = '';
117
+ process.stdin.setEncoding('utf8');
118
+ process.stdin.once('data', (chunk) => {
119
+ data = String(chunk).replace(/\n$/, '');
120
+ resolve(data);
121
+ });
122
+ process.stdin.resume();
123
+ });
124
+ }
125
+ //# sourceMappingURL=integrate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integrate.js","sourceRoot":"","sources":["../src/integrate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,131 @@
1
+ {
2
+ "openai": {
3
+ "name": "OpenAI (GPT, DALL-E, Whisper)",
4
+ "auth": "bearer",
5
+ "patterns": ["https://api.openai.com/"],
6
+ "methods": ["GET", "POST"],
7
+ "secrets": ["API_KEY"],
8
+ "docs": "https://platform.openai.com/api-keys"
9
+ },
10
+ "anthropic": {
11
+ "name": "Anthropic (Claude)",
12
+ "auth": "header",
13
+ "headerName": "x-api-key",
14
+ "patterns": ["https://api.anthropic.com/"],
15
+ "methods": ["GET", "POST"],
16
+ "secrets": ["API_KEY"],
17
+ "docs": "https://console.anthropic.com/settings/keys"
18
+ },
19
+ "google-ai": {
20
+ "name": "Google AI (Gemini)",
21
+ "auth": "query",
22
+ "queryParam": "key",
23
+ "patterns": ["https://generativelanguage.googleapis.com/"],
24
+ "methods": ["GET", "POST"],
25
+ "secrets": ["API_KEY"],
26
+ "docs": "https://aistudio.google.com/apikey"
27
+ },
28
+ "openrouter": {
29
+ "name": "OpenRouter (multi-model gateway)",
30
+ "auth": "bearer",
31
+ "patterns": ["https://openrouter.ai/api/"],
32
+ "methods": ["GET", "POST"],
33
+ "secrets": ["API_KEY"],
34
+ "docs": "https://openrouter.ai/keys"
35
+ },
36
+ "replicate": {
37
+ "name": "Replicate (open source models)",
38
+ "auth": "bearer",
39
+ "patterns": ["https://api.replicate.com/"],
40
+ "methods": ["GET", "POST"],
41
+ "secrets": ["API_KEY"],
42
+ "docs": "https://replicate.com/account/api-tokens"
43
+ },
44
+ "stability": {
45
+ "name": "Stability AI (image generation)",
46
+ "auth": "bearer",
47
+ "patterns": ["https://api.stability.ai/"],
48
+ "methods": ["GET", "POST"],
49
+ "secrets": ["API_KEY"],
50
+ "docs": "https://platform.stability.ai/account/keys"
51
+ },
52
+ "elevenlabs": {
53
+ "name": "ElevenLabs (text-to-speech)",
54
+ "auth": "header",
55
+ "headerName": "xi-api-key",
56
+ "patterns": ["https://api.elevenlabs.io/"],
57
+ "methods": ["GET", "POST"],
58
+ "secrets": ["API_KEY"],
59
+ "docs": "https://elevenlabs.io/app/settings/api-keys"
60
+ },
61
+ "amadeus": {
62
+ "name": "Amadeus (flights & hotels)",
63
+ "auth": "oauth2_cc",
64
+ "tokenUrl": "https://test.api.amadeus.com/v1/security/oauth2/token",
65
+ "patterns": ["https://test.api.amadeus.com/v2/"],
66
+ "methods": ["GET", "POST"],
67
+ "secrets": ["CLIENT_ID", "CLIENT_SECRET"],
68
+ "docs": "https://developers.amadeus.com/register"
69
+ },
70
+ "amadeus-prod": {
71
+ "name": "Amadeus Production (flights & hotels)",
72
+ "auth": "oauth2_cc",
73
+ "tokenUrl": "https://api.amadeus.com/v1/security/oauth2/token",
74
+ "patterns": ["https://api.amadeus.com/v2/"],
75
+ "methods": ["GET", "POST"],
76
+ "secrets": ["CLIENT_ID", "CLIENT_SECRET"],
77
+ "docs": "https://developers.amadeus.com/register"
78
+ },
79
+ "spotify": {
80
+ "name": "Spotify (music, playlists)",
81
+ "auth": "oauth2_cc",
82
+ "tokenUrl": "https://accounts.spotify.com/api/token",
83
+ "patterns": ["https://api.spotify.com/v1/"],
84
+ "methods": ["GET", "POST", "PUT", "DELETE"],
85
+ "secrets": ["CLIENT_ID", "CLIENT_SECRET"],
86
+ "docs": "https://developer.spotify.com/dashboard"
87
+ },
88
+ "github": {
89
+ "name": "GitHub API",
90
+ "auth": "bearer",
91
+ "patterns": ["https://api.github.com/"],
92
+ "methods": ["GET", "POST", "PUT", "PATCH", "DELETE"],
93
+ "secrets": ["TOKEN"],
94
+ "docs": "https://github.com/settings/tokens"
95
+ },
96
+ "openweathermap": {
97
+ "name": "OpenWeatherMap",
98
+ "auth": "query",
99
+ "queryParam": "appid",
100
+ "patterns": ["https://api.openweathermap.org/data/2.5/", "https://api.openweathermap.org/data/3.0/"],
101
+ "methods": ["GET"],
102
+ "secrets": ["API_KEY"],
103
+ "docs": "https://home.openweathermap.org/api_keys"
104
+ },
105
+ "rapidapi": {
106
+ "name": "RapidAPI (any API on the hub)",
107
+ "auth": "header",
108
+ "headerName": "X-RapidAPI-Key",
109
+ "patterns": [],
110
+ "methods": ["GET", "POST"],
111
+ "secrets": ["API_KEY"],
112
+ "docs": "https://rapidapi.com/developer/dashboard",
113
+ "note": "After integrating, add proxy rules for the specific RapidAPI host(s) you use."
114
+ },
115
+ "resend": {
116
+ "name": "Resend (email API)",
117
+ "auth": "bearer",
118
+ "patterns": ["https://api.resend.com/"],
119
+ "methods": ["GET", "POST"],
120
+ "secrets": ["API_KEY"],
121
+ "docs": "https://resend.com/api-keys"
122
+ },
123
+ "stripe": {
124
+ "name": "Stripe API",
125
+ "auth": "bearer",
126
+ "patterns": ["https://api.stripe.com/"],
127
+ "methods": ["GET", "POST", "DELETE"],
128
+ "secrets": ["SECRET_KEY"],
129
+ "docs": "https://dashboard.stripe.com/apikeys"
130
+ }
131
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@proappstore/cli",
3
- "version": "2.6.4",
3
+ "version": "2.6.5",
4
4
  "description": "pas — CLI for publishing paid apps to proappstore.online",
5
5
  "license": "MIT",
6
6
  "type": "module",