@proappstore/cli 2.6.5 → 2.6.7

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.
@@ -1 +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"}
1
+ {"version":3,"file":"integrate.d.ts","sourceRoot":"","sources":["../src/integrate.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuBpC,eAAO,MAAM,gBAAgB,SAiGzB,CAAC"}
package/dist/integrate.js CHANGED
@@ -1,14 +1,19 @@
1
+ import { readFileSync } from 'node:fs';
2
+ import { createInterface } from 'node:readline/promises';
3
+ import { dirname, join } from 'node:path';
4
+ import { fileURLToPath } from 'node:url';
1
5
  import { Command } from 'commander';
2
6
  import { bearer, dieFromHttp, requireSession, resolveAppIdOrExit } from './secret.js';
3
- import catalog from './integrations.json' with { type: 'json' };
4
- const integrations = catalog;
7
+ // Load catalog at runtime from the file shipped alongside the compiled JS.
8
+ const __dirname = dirname(fileURLToPath(import.meta.url));
9
+ const catalogPath = join(__dirname, 'integrations.json');
10
+ const integrations = JSON.parse(readFileSync(catalogPath, 'utf8'));
5
11
  export const integrateCommand = new Command('integrate')
6
12
  .description('Connect a third-party API using pre-configured proxy rules.')
7
- .argument('<name>', `integration name (${Object.keys(integrations).join(', ')})`)
13
+ .argument('[name]', `integration name (run "pas integrate list" to see all)`)
8
14
  .option('--app <id>', 'app id (defaults to package.json name in cwd)')
9
- .option('--list', 'list all available integrations')
10
15
  .action(async (name, opts) => {
11
- if (name === 'list' || opts.list) {
16
+ if (!name || name === 'list') {
12
17
  process.stdout.write('\nAvailable integrations:\n\n');
13
18
  for (const [id, int] of Object.entries(integrations)) {
14
19
  process.stdout.write(` ${id.padEnd(20)} ${int.name}\n`);
@@ -27,22 +32,28 @@ export const integrateCommand = new Command('integrate')
27
32
  const cfg = await requireSession();
28
33
  const appId = await resolveAppIdOrExit(opts.app);
29
34
  const prefix = name.toUpperCase().replace(/-/g, '_');
30
- process.stdout.write(`\n Integrating ${integration.name} for ${appId}\n\n`);
35
+ process.stdout.write(`\n Integrating ${integration.name} for ${appId}\n`);
36
+ process.stdout.write(` Docs: ${integration.docs}\n\n`);
31
37
  if (integration.note) {
32
38
  process.stdout.write(` Note: ${integration.note}\n\n`);
33
39
  }
34
40
  // Collect secrets interactively
41
+ const rl = createInterface({ input: process.stdin, output: process.stdout });
35
42
  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);
43
+ try {
44
+ for (const secretSuffix of integration.secrets) {
45
+ const secretName = `${prefix}_${secretSuffix}`;
46
+ const value = await rl.question(` ${secretName}: `);
47
+ if (!value.trim()) {
48
+ process.stderr.write(`\n Aborted — ${secretName} is required.\n`);
49
+ process.stderr.write(` Get yours at: ${integration.docs}\n\n`);
50
+ process.exit(1);
51
+ }
52
+ secretValues[secretName] = value.trim();
44
53
  }
45
- secretValues[secretName] = value.trim();
54
+ }
55
+ finally {
56
+ rl.close();
46
57
  }
47
58
  // Store secrets
48
59
  for (const [secretName, value] of Object.entries(secretValues)) {
@@ -83,9 +94,9 @@ export const integrateCommand = new Command('integrate')
83
94
  await dieFromHttp(res, `add rule for ${pattern}`);
84
95
  process.stdout.write(` [+] Proxy rule: ${pattern}\n`);
85
96
  }
86
- process.stdout.write(`\n Done! Use in your app:\n`);
87
97
  const exampleHost = new URL(integration.patterns[0]).host;
88
98
  const examplePath = new URL(integration.patterns[0]).pathname;
99
+ process.stdout.write(`\n Done! Use in your app:\n`);
89
100
  process.stdout.write(` const res = await app.proxy.fetch('${exampleHost}${examplePath}...')\n\n`);
90
101
  });
91
102
  function mapInjectKind(int) {
@@ -111,15 +122,4 @@ function mapAuth(int) {
111
122
  return `query:${int.queryParam ?? 'key'}`;
112
123
  return int.auth;
113
124
  }
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
125
  //# sourceMappingURL=integrate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"integrate.js","sourceRoot":"","sources":["../src/integrate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"integrate.js","sourceRoot":"","sources":["../src/integrate.ts"],"names":[],"mappings":"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"}
@@ -1,131 +1,131 @@
1
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
- }
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
131
  }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=config.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.test.d.ts","sourceRoot":"","sources":["../../src/lib/config.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,90 @@
1
+ import { describe, expect, it, vi, beforeEach, afterEach } from 'vitest';
2
+ import { mkdtemp, writeFile, rm, readFile } from 'node:fs/promises';
3
+ import { tmpdir } from 'node:os';
4
+ import { join } from 'node:path';
5
+ // We need to mock homedir() to point to a temp dir so tests don't
6
+ // touch the real ~/.proappstore/config.json.
7
+ const testHome = await mkdtemp(join(tmpdir(), 'pas-cli-test-'));
8
+ vi.mock('node:os', async () => {
9
+ const actual = await vi.importActual('node:os');
10
+ return { ...actual, homedir: () => testHome };
11
+ });
12
+ const { readConfig, writeConfig, resolveToken } = await import('./config.js');
13
+ afterEach(async () => {
14
+ // Clean up config between tests
15
+ try {
16
+ await rm(join(testHome, '.proappstore'), { recursive: true, force: true });
17
+ }
18
+ catch { }
19
+ });
20
+ describe('readConfig', () => {
21
+ it('returns defaults when no config file exists', async () => {
22
+ const config = await readConfig();
23
+ expect(config.apiBase).toBe('https://api.proappstore.online');
24
+ expect(config.authApiBase).toBe('https://api.freeappstore.online');
25
+ expect(config.session).toBeUndefined();
26
+ });
27
+ it('merges saved config over defaults', async () => {
28
+ await writeConfig({
29
+ apiBase: 'https://custom-api.example.com/',
30
+ authApiBase: 'https://custom-auth.example.com/',
31
+ session: { token: 'tok-123', obtainedAt: 1000 },
32
+ });
33
+ const config = await readConfig();
34
+ // Trailing slash is stripped
35
+ expect(config.apiBase).toBe('https://custom-api.example.com');
36
+ expect(config.session?.token).toBe('tok-123');
37
+ });
38
+ });
39
+ describe('writeConfig', () => {
40
+ it('creates config dir with restricted permissions', async () => {
41
+ await writeConfig({
42
+ apiBase: 'https://api.proappstore.online',
43
+ authApiBase: 'https://api.freeappstore.online',
44
+ });
45
+ const raw = await readFile(join(testHome, '.proappstore', 'config.json'), 'utf8');
46
+ const parsed = JSON.parse(raw);
47
+ expect(parsed.apiBase).toBe('https://api.proappstore.online');
48
+ });
49
+ it('round-trips session data', async () => {
50
+ const config = {
51
+ apiBase: 'https://api.proappstore.online',
52
+ authApiBase: 'https://api.freeappstore.online',
53
+ session: { token: 'test-token', obtainedAt: Date.now() },
54
+ };
55
+ await writeConfig(config);
56
+ const loaded = await readConfig();
57
+ expect(loaded.session?.token).toBe('test-token');
58
+ });
59
+ });
60
+ describe('resolveToken', () => {
61
+ const origEnv = process.env.PAS_SESSION_TOKEN;
62
+ afterEach(() => {
63
+ if (origEnv === undefined)
64
+ delete process.env.PAS_SESSION_TOKEN;
65
+ else
66
+ process.env.PAS_SESSION_TOKEN = origEnv;
67
+ });
68
+ it('returns CLI flag token first', () => {
69
+ process.env.PAS_SESSION_TOKEN = 'env-tok';
70
+ expect(resolveToken('cli-tok')).toBe('cli-tok');
71
+ });
72
+ it('falls back to env var', () => {
73
+ process.env.PAS_SESSION_TOKEN = 'env-tok';
74
+ expect(resolveToken()).toBe('env-tok');
75
+ });
76
+ it('falls back to config file', async () => {
77
+ delete process.env.PAS_SESSION_TOKEN;
78
+ await writeConfig({
79
+ apiBase: 'https://api.proappstore.online',
80
+ authApiBase: 'https://api.freeappstore.online',
81
+ session: { token: 'file-tok', obtainedAt: 1000 },
82
+ });
83
+ expect(resolveToken()).toBe('file-tok');
84
+ });
85
+ it('returns null when nothing is available', () => {
86
+ delete process.env.PAS_SESSION_TOKEN;
87
+ expect(resolveToken()).toBeNull();
88
+ });
89
+ });
90
+ //# sourceMappingURL=config.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.test.js","sourceRoot":"","sources":["../../src/lib/config.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@proappstore/cli",
3
- "version": "2.6.5",
3
+ "version": "2.6.7",
4
4
  "description": "pas — CLI for publishing paid apps to proappstore.online",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -22,14 +22,14 @@
22
22
  },
23
23
  "dependencies": {
24
24
  "commander": "^12.1.0",
25
- "@proappstore/compliance": "0.2.1"
25
+ "@proappstore/compliance": "0.2.3"
26
26
  },
27
27
  "devDependencies": {
28
28
  "@types/node": "^22.0.0",
29
29
  "typescript": "^5.7.0"
30
30
  },
31
31
  "scripts": {
32
- "build": "tsc",
32
+ "build": "tsc && cp src/integrations.json dist/integrations.json",
33
33
  "typecheck": "tsc --noEmit"
34
34
  }
35
35
  }