@freegamestore/cli 0.1.4
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/LICENSE +21 -0
- package/README.md +84 -0
- package/dist/commands/check.d.ts +14 -0
- package/dist/commands/check.d.ts.map +1 -0
- package/dist/commands/check.js +65 -0
- package/dist/commands/check.js.map +1 -0
- package/dist/commands/doctor.d.ts +3 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +34 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/init.d.ts +22 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +137 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/list.d.ts +9 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +96 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/list.test.d.ts +2 -0
- package/dist/commands/list.test.d.ts.map +1 -0
- package/dist/commands/list.test.js +25 -0
- package/dist/commands/list.test.js.map +1 -0
- package/dist/commands/login.d.ts +11 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +50 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/logout.d.ts +3 -0
- package/dist/commands/logout.d.ts.map +1 -0
- package/dist/commands/logout.js +12 -0
- package/dist/commands/logout.js.map +1 -0
- package/dist/commands/logs.d.ts +3 -0
- package/dist/commands/logs.d.ts.map +1 -0
- package/dist/commands/logs.js +33 -0
- package/dist/commands/logs.js.map +1 -0
- package/dist/commands/publish.d.ts +42 -0
- package/dist/commands/publish.d.ts.map +1 -0
- package/dist/commands/publish.js +372 -0
- package/dist/commands/publish.js.map +1 -0
- package/dist/commands/publish.test.d.ts +2 -0
- package/dist/commands/publish.test.d.ts.map +1 -0
- package/dist/commands/publish.test.js +166 -0
- package/dist/commands/publish.test.js.map +1 -0
- package/dist/commands/screencheck.d.ts +36 -0
- package/dist/commands/screencheck.d.ts.map +1 -0
- package/dist/commands/screencheck.js +428 -0
- package/dist/commands/screencheck.js.map +1 -0
- package/dist/commands/whoami.d.ts +3 -0
- package/dist/commands/whoami.d.ts.map +1 -0
- package/dist/commands/whoami.js +13 -0
- package/dist/commands/whoami.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +47 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/app-id.d.ts +3 -0
- package/dist/lib/app-id.d.ts.map +1 -0
- package/dist/lib/app-id.js +16 -0
- package/dist/lib/app-id.js.map +1 -0
- package/dist/lib/app-id.test.d.ts +2 -0
- package/dist/lib/app-id.test.d.ts.map +1 -0
- package/dist/lib/app-id.test.js +45 -0
- package/dist/lib/app-id.test.js.map +1 -0
- package/dist/lib/apps.d.ts +36 -0
- package/dist/lib/apps.d.ts.map +1 -0
- package/dist/lib/apps.js +21 -0
- package/dist/lib/apps.js.map +1 -0
- package/dist/lib/apps.test.d.ts +2 -0
- package/dist/lib/apps.test.d.ts.map +1 -0
- package/dist/lib/apps.test.js +42 -0
- package/dist/lib/apps.test.js.map +1 -0
- package/dist/lib/config.d.ts +26 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +33 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/config.test.d.ts +2 -0
- package/dist/lib/config.test.d.ts.map +1 -0
- package/dist/lib/config.test.js +22 -0
- package/dist/lib/config.test.js.map +1 -0
- package/dist/lib/github.d.ts +11 -0
- package/dist/lib/github.d.ts.map +1 -0
- package/dist/lib/github.js +62 -0
- package/dist/lib/github.js.map +1 -0
- package/dist/lib/history.d.ts +29 -0
- package/dist/lib/history.d.ts.map +1 -0
- package/dist/lib/history.js +77 -0
- package/dist/lib/history.js.map +1 -0
- package/dist/lib/history.test.d.ts +2 -0
- package/dist/lib/history.test.d.ts.map +1 -0
- package/dist/lib/history.test.js +30 -0
- package/dist/lib/history.test.js.map +1 -0
- package/dist/lib/open.d.ts +6 -0
- package/dist/lib/open.d.ts.map +1 -0
- package/dist/lib/open.js +31 -0
- package/dist/lib/open.js.map +1 -0
- package/dist/lib/style.d.ts +9 -0
- package/dist/lib/style.d.ts.map +1 -0
- package/dist/lib/style.js +18 -0
- package/dist/lib/style.js.map +1 -0
- package/dist/one-shot/doctor.d.ts +13 -0
- package/dist/one-shot/doctor.d.ts.map +1 -0
- package/dist/one-shot/doctor.js +116 -0
- package/dist/one-shot/doctor.js.map +1 -0
- package/dist/one-shot/doctor.test.d.ts +2 -0
- package/dist/one-shot/doctor.test.d.ts.map +1 -0
- package/dist/one-shot/doctor.test.js +63 -0
- package/dist/one-shot/doctor.test.js.map +1 -0
- package/package.json +48 -0
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { readConfig, writeConfig } from '../lib/config.js';
|
|
3
|
+
import { startDeviceFlow } from '../lib/github.js';
|
|
4
|
+
// Public client_id for the FreeAppStore CLI's GitHub OAuth App
|
|
5
|
+
// (https://github.com/organizations/freeappstore-online/settings/applications/3576238).
|
|
6
|
+
// Device-flow client_ids are not secret — the user_code/device_code is
|
|
7
|
+
// what authenticates the session. Override at runtime via FAS_GITHUB_CLIENT_ID.
|
|
8
|
+
const DEFAULT_CLIENT_ID = process.env['FAS_GITHUB_CLIENT_ID'] ?? 'Ov23liuUpYPXc1ikEFm2';
|
|
9
|
+
/**
|
|
10
|
+
* Runs the full login flow: GitHub device-authorization, then exchanges the
|
|
11
|
+
* GitHub access token for a fas session token. Persists both to the config
|
|
12
|
+
* file. Exported so other commands (e.g. `fas start`) can call it inline.
|
|
13
|
+
*/
|
|
14
|
+
export async function runLogin() {
|
|
15
|
+
if (!DEFAULT_CLIENT_ID) {
|
|
16
|
+
throw new Error('GitHub client_id is not configured. The platform admin must register a GitHub OAuth App ' +
|
|
17
|
+
'and set FAS_GITHUB_CLIENT_ID, or bake it into the published CLI build.');
|
|
18
|
+
}
|
|
19
|
+
const flow = await startDeviceFlow(DEFAULT_CLIENT_ID);
|
|
20
|
+
process.stdout.write(`\nOpen ${flow.verificationUri} and enter code: ${flow.userCode}\n\n`);
|
|
21
|
+
process.stdout.write('Waiting for authorization...\n');
|
|
22
|
+
const { accessToken, login } = await flow.poll();
|
|
23
|
+
const config = await readConfig();
|
|
24
|
+
// Swap the GitHub user-access-token for a fas session token. Subsequent
|
|
25
|
+
// CLI commands authenticate via the fas session, not the GitHub token.
|
|
26
|
+
const exchangeRes = await fetch(`${config.apiBase}/v1/auth/exchange`, {
|
|
27
|
+
method: 'POST',
|
|
28
|
+
headers: { 'Content-Type': 'application/json' },
|
|
29
|
+
body: JSON.stringify({ githubToken: accessToken }),
|
|
30
|
+
});
|
|
31
|
+
if (!exchangeRes.ok) {
|
|
32
|
+
throw new Error(`Auth exchange failed (${exchangeRes.status}): ${await exchangeRes.text()}`);
|
|
33
|
+
}
|
|
34
|
+
const { sessionToken } = (await exchangeRes.json());
|
|
35
|
+
await writeConfig({
|
|
36
|
+
...config,
|
|
37
|
+
github: { accessToken, login, obtainedAt: Date.now() },
|
|
38
|
+
session: { token: sessionToken, obtainedAt: Date.now() },
|
|
39
|
+
});
|
|
40
|
+
process.stdout.write(`\n✓ Signed in as @${login}\n`);
|
|
41
|
+
return { login };
|
|
42
|
+
}
|
|
43
|
+
export const loginCommand = new Command('login')
|
|
44
|
+
.description('Sign in with GitHub.')
|
|
45
|
+
// Discard runLogin's return value so commander gets the void-returning
|
|
46
|
+
// signature it expects.
|
|
47
|
+
.action(async () => {
|
|
48
|
+
await runLogin();
|
|
49
|
+
});
|
|
50
|
+
//# sourceMappingURL=login.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD,+DAA+D;AAC/D,wFAAwF;AACxF,uEAAuE;AACvE,gFAAgF;AAChF,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,IAAI,sBAAsB,CAAC;AAExF;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ;IAC5B,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CACb,0FAA0F;YACxF,wEAAwE,CAC3E,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,iBAAiB,CAAC,CAAC;IACtD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,eAAe,oBAAoB,IAAI,CAAC,QAAQ,MAAM,CAAC,CAAC;IAC5F,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;IAEvD,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;IACjD,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;IAElC,wEAAwE;IACxE,uEAAuE;IACvE,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,CAAC,OAAO,mBAAmB,EAAE;QACpE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC;KACnD,CAAC,CAAC;IACH,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,yBAAyB,WAAW,CAAC,MAAM,MAAM,MAAM,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC/F,CAAC;IACD,MAAM,EAAE,YAAY,EAAE,GAAG,CAAC,MAAM,WAAW,CAAC,IAAI,EAAE,CAA6B,CAAC;IAEhF,MAAM,WAAW,CAAC;QAChB,GAAG,MAAM;QACT,MAAM,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE;QACtD,OAAO,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE;KACzD,CAAC,CAAC;IACH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,KAAK,IAAI,CAAC,CAAC;IACrD,OAAO,EAAE,KAAK,EAAE,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC;KAC7C,WAAW,CAAC,sBAAsB,CAAC;IACpC,uEAAuE;IACvE,wBAAwB;KACvB,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,QAAQ,EAAE,CAAC;AACnB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logout.d.ts","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,eAAO,MAAM,aAAa,SAMtB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { rm } from 'node:fs/promises';
|
|
3
|
+
import { homedir } from 'node:os';
|
|
4
|
+
import { join } from 'node:path';
|
|
5
|
+
export const logoutCommand = new Command('logout')
|
|
6
|
+
.description('Clear the local fas session and GitHub access token.')
|
|
7
|
+
.action(async () => {
|
|
8
|
+
const path = join(homedir(), '.fas', 'config.json');
|
|
9
|
+
await rm(path, { force: true });
|
|
10
|
+
process.stdout.write('Signed out. Run `fas login` to sign in again.\n');
|
|
11
|
+
});
|
|
12
|
+
//# sourceMappingURL=logout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logout.js","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;KAC/C,WAAW,CAAC,sDAAsD,CAAC;KACnE,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;IACpD,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAChC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;AAC1E,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../src/commands/logs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,eAAO,MAAM,WAAW,SA0BpB,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { spawn } from 'node:child_process';
|
|
3
|
+
import { assertValidAppId } from '../lib/app-id.js';
|
|
4
|
+
import { cfProjectFor } from '../lib/apps.js';
|
|
5
|
+
export const logsCommand = new Command('logs')
|
|
6
|
+
.description("Tail live logs for one of your apps' Cloudflare Pages project.")
|
|
7
|
+
.argument('<app-id>', 'Short app id (e.g. "calculator")')
|
|
8
|
+
.option('--cf-project <name>', 'Override the Cloudflare Pages project name.')
|
|
9
|
+
.action(async (appId, opts) => {
|
|
10
|
+
assertValidAppId(appId);
|
|
11
|
+
const cfProject = opts.cfProject ?? cfProjectFor(appId);
|
|
12
|
+
process.stdout.write(`Tailing logs for ${cfProject} (Ctrl+C to stop)...\n`);
|
|
13
|
+
await new Promise((resolveFn, rejectFn) => {
|
|
14
|
+
const child = spawn('wrangler', ['pages', 'deployment', 'tail', '--project-name', cfProject], {
|
|
15
|
+
stdio: 'inherit',
|
|
16
|
+
});
|
|
17
|
+
child.on('error', (err) => {
|
|
18
|
+
if (err.code === 'ENOENT') {
|
|
19
|
+
rejectFn(new Error('wrangler is not installed. Install it: npm i -g wrangler'));
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
rejectFn(err);
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
child.on('exit', (code) => {
|
|
26
|
+
if (code === 0 || code === null)
|
|
27
|
+
resolveFn();
|
|
28
|
+
else
|
|
29
|
+
rejectFn(new Error(`wrangler exited with code ${code}`));
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
//# sourceMappingURL=logs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logs.js","sourceRoot":"","sources":["../../src/commands/logs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;KAC3C,WAAW,CAAC,gEAAgE,CAAC;KAC7E,QAAQ,CAAC,UAAU,EAAE,kCAAkC,CAAC;KACxD,MAAM,CAAC,qBAAqB,EAAE,6CAA6C,CAAC;KAC5E,MAAM,CAAC,KAAK,EAAE,KAAa,EAAE,IAA4B,EAAE,EAAE;IAC5D,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACxB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;IAExD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,SAAS,wBAAwB,CAAC,CAAC;IAE5E,MAAM,IAAI,OAAO,CAAO,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE;QAC9C,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,gBAAgB,EAAE,SAAS,CAAC,EAAE;YAC5F,KAAK,EAAE,SAAS;SACjB,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACxB,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACrD,QAAQ,CAAC,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC,CAAC;YAClF,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,GAAG,CAAC,CAAC;YAChB,CAAC;QACH,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACxB,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,IAAI;gBAAE,SAAS,EAAE,CAAC;;gBACxC,QAAQ,CAAC,IAAI,KAAK,CAAC,6BAA6B,IAAI,EAAE,CAAC,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import prompts from 'prompts';
|
|
3
|
+
declare const CATEGORIES: readonly ["Learning", "Strategy", "Discovery", "Brain Training", "Social", "Productivity", "Health & Fitness", "Finance", "News & Weather", "Utilities", "Other (specify in description)"];
|
|
4
|
+
declare const TYPES: readonly ["Standalone (no backend, localStorage only)", "Connected (Firebase/Supabase backend, shared with Pro version)"];
|
|
5
|
+
interface SubmissionInput {
|
|
6
|
+
name: string;
|
|
7
|
+
category: (typeof CATEGORIES)[number];
|
|
8
|
+
type: (typeof TYPES)[number];
|
|
9
|
+
oneliner: string;
|
|
10
|
+
description: string;
|
|
11
|
+
repo: string | null;
|
|
12
|
+
demo: string | null;
|
|
13
|
+
}
|
|
14
|
+
export declare const publishCommand: Command;
|
|
15
|
+
/**
|
|
16
|
+
* Match a user-supplied --category value (case-insensitive, ignores
|
|
17
|
+
* trailing/leading whitespace) against the canonical labels.
|
|
18
|
+
* Returns the canonical form or null if no match.
|
|
19
|
+
*/
|
|
20
|
+
export declare function resolveCategory(value: string): (typeof CATEGORIES)[number] | null;
|
|
21
|
+
/** Resolve --type short form ("standalone"|"connected") to the full label. */
|
|
22
|
+
export declare function resolveType(value: string): (typeof TYPES)[number] | null;
|
|
23
|
+
interface ResolvedFlags {
|
|
24
|
+
values: Partial<SubmissionInput>;
|
|
25
|
+
errors: string[];
|
|
26
|
+
}
|
|
27
|
+
export declare function resolveFromFlags(opts: {
|
|
28
|
+
name?: string;
|
|
29
|
+
category?: string;
|
|
30
|
+
type?: string;
|
|
31
|
+
oneliner?: string;
|
|
32
|
+
demo?: string;
|
|
33
|
+
}): ResolvedFlags;
|
|
34
|
+
type PromptDef = prompts.PromptObject<string>;
|
|
35
|
+
export declare function buildPromptList(resolved: Partial<SubmissionInput>, defaults: {
|
|
36
|
+
appName: string | null;
|
|
37
|
+
description: string | null;
|
|
38
|
+
}): PromptDef[];
|
|
39
|
+
export declare function buildSubmissionUrl(input: SubmissionInput): string;
|
|
40
|
+
export declare function parseGitHubRepo(url: string): string | null;
|
|
41
|
+
export {};
|
|
42
|
+
//# sourceMappingURL=publish.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../../src/commands/publish.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,OAAO,OAAO,MAAM,SAAS,CAAC;AAkB9B,QAAA,MAAM,UAAU,4LAYN,CAAC;AAEX,QAAA,MAAM,KAAK,2HAGD,CAAC;AAEX,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;IACtC,IAAI,EAAE,CAAC,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAUD,eAAO,MAAM,cAAc,SAyJvB,CAAC;AAiDL;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,CAQjF;AAED,8EAA8E;AAC9E,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,CAKxE;AAED,UAAU,aAAa;IACrB,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IACjC,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,aAAa,CA8BhB;AAED,KAAK,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;AAE9C,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,OAAO,CAAC,eAAe,CAAC,EAClC,QAAQ,EAAE;IAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAC/D,SAAS,EAAE,CAmDb;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAYjE;AAqCD,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAI1D"}
|
|
@@ -0,0 +1,372 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { spawn } from 'node:child_process';
|
|
3
|
+
import { readFile } from 'node:fs/promises';
|
|
4
|
+
import { join } from 'node:path';
|
|
5
|
+
import prompts from 'prompts';
|
|
6
|
+
import { runChecks } from '@freeappstore/compliance';
|
|
7
|
+
import { openUrl } from '../lib/open.js';
|
|
8
|
+
import { assertValidAppId } from '../lib/app-id.js';
|
|
9
|
+
import { readConfig } from '../lib/config.js';
|
|
10
|
+
import { renderCheckResults } from './check.js';
|
|
11
|
+
// TEMPORARY: games are routed through the FreeAppStore submissions repo
|
|
12
|
+
// because no `freegamestore-online/submissions` repo exists yet. This works
|
|
13
|
+
// (issues file fine), but the categories below are app-flavored and a few
|
|
14
|
+
// don't fit games well (Finance, News & Weather, Productivity). When the
|
|
15
|
+
// games submissions repo + game-submission.yml template ship, swap this URL
|
|
16
|
+
// and the CATEGORIES list to game-specific ones (Arcade / Puzzle / Strategy
|
|
17
|
+
// / Action / Word / Card / Casual / Educational / Other).
|
|
18
|
+
const SUBMISSION_URL = 'https://github.com/freeappstore-online/submissions/issues/new';
|
|
19
|
+
// Must match the dropdown options in
|
|
20
|
+
// freeappstore-online/submissions/.github/ISSUE_TEMPLATE/app-submission.yml
|
|
21
|
+
const CATEGORIES = [
|
|
22
|
+
'Learning',
|
|
23
|
+
'Strategy',
|
|
24
|
+
'Discovery',
|
|
25
|
+
'Brain Training',
|
|
26
|
+
'Social',
|
|
27
|
+
'Productivity',
|
|
28
|
+
'Health & Fitness',
|
|
29
|
+
'Finance',
|
|
30
|
+
'News & Weather',
|
|
31
|
+
'Utilities',
|
|
32
|
+
'Other (specify in description)',
|
|
33
|
+
];
|
|
34
|
+
const TYPES = [
|
|
35
|
+
'Standalone (no backend, localStorage only)',
|
|
36
|
+
'Connected (Firebase/Supabase backend, shared with Pro version)',
|
|
37
|
+
];
|
|
38
|
+
// fgs always targets games. Identity is shared with fas (one ~/.fas/config.json).
|
|
39
|
+
const STORE = 'games';
|
|
40
|
+
const META = {
|
|
41
|
+
label: 'FreeGameStore',
|
|
42
|
+
domain: 'freegamestore.online',
|
|
43
|
+
org: 'freegamestore-online',
|
|
44
|
+
};
|
|
45
|
+
export const publishCommand = new Command('publish')
|
|
46
|
+
.description('Publish this game to FreeGameStore. Provisions repo + hosting + DNS automatically. If auto-provision is unavailable, falls back to opening a prefilled submission Issue for admin review.')
|
|
47
|
+
.option('--no-open', 'Print the fallback Issue URL instead of opening a browser.')
|
|
48
|
+
.option('--issue', 'Skip auto-provision; always open the GitHub Issue form.')
|
|
49
|
+
.option('--skip-checks', 'Skip compliance checks (not recommended — your submission may be rejected).')
|
|
50
|
+
.option('--name <id>', 'Game id (lowercase, used as subdomain). Skips the prompt.')
|
|
51
|
+
.option('--category <name>', 'Category. Use exact label or its lowercased form (e.g. "strategy", "brain training"). Skips the prompt.')
|
|
52
|
+
.option('--type <kind>', 'Game type: "standalone" or "connected". Skips the prompt.')
|
|
53
|
+
.option('--oneliner <text>', 'One-line description shown on the storefront. Skips the prompt.')
|
|
54
|
+
.option('--demo <url>', 'Optional demo URL. Skips the prompt.')
|
|
55
|
+
.option('-y, --yes', 'Non-interactive: fail rather than prompt for any missing fields. Pair with --name/--category/--type/--oneliner.')
|
|
56
|
+
.action(async (opts) => {
|
|
57
|
+
// Check auth BEFORE prompting — there's no point asking the user for
|
|
58
|
+
// 5 fields just to bail at the end with "not signed in". --issue
|
|
59
|
+
// skips this since the GitHub Issue form path doesn't need a session.
|
|
60
|
+
if (!opts.issue) {
|
|
61
|
+
const config = await readConfig();
|
|
62
|
+
if (!config.session?.token) {
|
|
63
|
+
process.stdout.write('\n⚠ Not signed in. Run: fgs login (shared identity with fas).\n' +
|
|
64
|
+
' (or run `fgs publish --issue` to submit via the GitHub Issue form instead.)\n');
|
|
65
|
+
process.exit(1);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
// Run compliance checks BEFORE prompts so a doomed submission fails
|
|
69
|
+
// fast. Hard fails block; warnings allow through. Bypass with
|
|
70
|
+
// --skip-checks if you really need to (admin review will still
|
|
71
|
+
// catch issues).
|
|
72
|
+
if (!opts.skipChecks) {
|
|
73
|
+
process.stdout.write('Running compliance checks...\n\n');
|
|
74
|
+
const results = await runChecks(process.cwd());
|
|
75
|
+
const { failed } = renderCheckResults(results);
|
|
76
|
+
if (failed > 0) {
|
|
77
|
+
process.stdout.write('\n⚠ Fix the failures above before publishing, or pass --skip-checks to bypass.\n');
|
|
78
|
+
process.exit(1);
|
|
79
|
+
}
|
|
80
|
+
process.stdout.write('\n');
|
|
81
|
+
}
|
|
82
|
+
const repo = await detectGitRepo();
|
|
83
|
+
const appName = await detectAppName();
|
|
84
|
+
const description = await detectDescription();
|
|
85
|
+
process.stdout.write(`\nLet's publish your game to ${META.label}.\n`);
|
|
86
|
+
if (!repo && opts.issue) {
|
|
87
|
+
process.stdout.write('⚠ No GitHub origin detected. Push your repo to GitHub first, then run again.\n');
|
|
88
|
+
}
|
|
89
|
+
// Resolve flag values up-front. Whatever's missing falls through to a
|
|
90
|
+
// prompt — unless --yes is set, in which case missing values abort.
|
|
91
|
+
const resolved = resolveFromFlags(opts);
|
|
92
|
+
if (resolved.errors.length > 0) {
|
|
93
|
+
for (const e of resolved.errors)
|
|
94
|
+
process.stdout.write(`✗ ${e}\n`);
|
|
95
|
+
process.exit(1);
|
|
96
|
+
}
|
|
97
|
+
// --yes: optional fields default rather than abort. demo is the only
|
|
98
|
+
// optional field today; new optional fields go here too.
|
|
99
|
+
if (opts.yes && resolved.values.demo === undefined) {
|
|
100
|
+
resolved.values.demo = null;
|
|
101
|
+
}
|
|
102
|
+
const promptList = buildPromptList(resolved.values, { appName, description });
|
|
103
|
+
const answers = promptList.length === 0
|
|
104
|
+
? {}
|
|
105
|
+
: opts.yes
|
|
106
|
+
? (() => {
|
|
107
|
+
const missing = promptList.map((p) => p.name).join(', ');
|
|
108
|
+
process.stdout.write(`✗ --yes set but missing required field(s): ${missing}\n`);
|
|
109
|
+
process.exit(1);
|
|
110
|
+
})()
|
|
111
|
+
: (await prompts(promptList, {
|
|
112
|
+
onCancel: () => {
|
|
113
|
+
process.stdout.write('\nCanceled.\n');
|
|
114
|
+
process.exit(1);
|
|
115
|
+
},
|
|
116
|
+
}));
|
|
117
|
+
const merged = { ...resolved.values, ...answers };
|
|
118
|
+
const input = {
|
|
119
|
+
name: merged.name,
|
|
120
|
+
category: merged.category,
|
|
121
|
+
type: merged.type,
|
|
122
|
+
oneliner: merged.oneliner,
|
|
123
|
+
// Reuse the oneliner as the body description for the Issue-form
|
|
124
|
+
// fallback. Auto-provision flow doesn't use it (admin's storefront
|
|
125
|
+
// uses oneliner directly).
|
|
126
|
+
description: merged.oneliner,
|
|
127
|
+
repo: repo ? `https://github.com/${repo}` : null,
|
|
128
|
+
demo: merged.demo?.trim() ? merged.demo : null,
|
|
129
|
+
};
|
|
130
|
+
// Try auto-provision first unless the user explicitly asked for the
|
|
131
|
+
// Issue-form fallback.
|
|
132
|
+
if (!opts.issue) {
|
|
133
|
+
const autoResult = await tryAutoProvision(input);
|
|
134
|
+
if (autoResult.kind === 'success') {
|
|
135
|
+
process.stdout.write(`\n✓ Provisioned!\n`);
|
|
136
|
+
process.stdout.write(` Live at: ${autoResult.appUrl}\n`);
|
|
137
|
+
process.stdout.write(` Repo: ${autoResult.repoUrl}\n`);
|
|
138
|
+
process.stdout.write(` Listing: https://freegamestore.online/games/${input.name}\n\n`);
|
|
139
|
+
process.stdout.write(`Push your code so the live URL serves it:\n\n`);
|
|
140
|
+
process.stdout.write(` git remote add upstream ${autoResult.repoUrl}.git\n`);
|
|
141
|
+
process.stdout.write(` git push upstream main\n\n`);
|
|
142
|
+
process.stdout.write(`Future commits to main auto-deploy in ~30s.\n`);
|
|
143
|
+
process.stdout.write(`Run \`fgs list\` any time to see your games.\n`);
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
if (autoResult.kind === 'unauthorized') {
|
|
147
|
+
process.stdout.write(`\n⚠ Not signed in. Run: fgs login\n`);
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
process.stdout.write(`\n⚠ Auto-provision unavailable (${autoResult.reason}); falling back to Issue form.\n`);
|
|
151
|
+
}
|
|
152
|
+
// Fallback: prefilled GitHub Issue form for admin review.
|
|
153
|
+
const url = buildSubmissionUrl(input);
|
|
154
|
+
if (opts.open) {
|
|
155
|
+
process.stdout.write('\nOpening submission form on GitHub...\n');
|
|
156
|
+
process.stdout.write('Review the prefilled fields and click "Submit new issue".\n');
|
|
157
|
+
process.stdout.write('A maintainer will provision your app within ~48h.\n');
|
|
158
|
+
await openUrl(url);
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
process.stdout.write(`\n${url}\n`);
|
|
162
|
+
}
|
|
163
|
+
});
|
|
164
|
+
async function tryAutoProvision(input) {
|
|
165
|
+
const config = await readConfig();
|
|
166
|
+
const sessionToken = config.session?.token;
|
|
167
|
+
if (!sessionToken)
|
|
168
|
+
return { kind: 'unauthorized', reason: 'no fas session' };
|
|
169
|
+
const typeShort = input.type.startsWith('Standalone') ? 'standalone' : 'connected';
|
|
170
|
+
const res = await fetch(`${config.apiBase}/v1/publish`, {
|
|
171
|
+
method: 'POST',
|
|
172
|
+
headers: {
|
|
173
|
+
Authorization: `Bearer ${sessionToken}`,
|
|
174
|
+
'Content-Type': 'application/json',
|
|
175
|
+
},
|
|
176
|
+
body: JSON.stringify({
|
|
177
|
+
name: input.name,
|
|
178
|
+
store: STORE,
|
|
179
|
+
category: input.category,
|
|
180
|
+
type: typeShort,
|
|
181
|
+
oneliner: input.oneliner,
|
|
182
|
+
description: input.description,
|
|
183
|
+
repo: input.repo,
|
|
184
|
+
demo: input.demo,
|
|
185
|
+
}),
|
|
186
|
+
});
|
|
187
|
+
if (res.status === 401)
|
|
188
|
+
return { kind: 'unauthorized', reason: 'session expired' };
|
|
189
|
+
if (res.status === 503) {
|
|
190
|
+
const body = (await res.json().catch(() => ({})));
|
|
191
|
+
return { kind: 'unconfigured', reason: body.error ?? '503' };
|
|
192
|
+
}
|
|
193
|
+
if (!res.ok) {
|
|
194
|
+
const body = await res.text();
|
|
195
|
+
return { kind: 'failed', reason: `${res.status}: ${body}` };
|
|
196
|
+
}
|
|
197
|
+
const result = (await res.json());
|
|
198
|
+
return { kind: 'success', appUrl: result.appUrl, repoUrl: result.repoUrl };
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Match a user-supplied --category value (case-insensitive, ignores
|
|
202
|
+
* trailing/leading whitespace) against the canonical labels.
|
|
203
|
+
* Returns the canonical form or null if no match.
|
|
204
|
+
*/
|
|
205
|
+
export function resolveCategory(value) {
|
|
206
|
+
const normalized = value.trim().toLowerCase();
|
|
207
|
+
for (const c of CATEGORIES) {
|
|
208
|
+
if (c.toLowerCase() === normalized)
|
|
209
|
+
return c;
|
|
210
|
+
}
|
|
211
|
+
// Allow short forms like "other" → "Other (specify in description)".
|
|
212
|
+
if (normalized === 'other')
|
|
213
|
+
return 'Other (specify in description)';
|
|
214
|
+
return null;
|
|
215
|
+
}
|
|
216
|
+
/** Resolve --type short form ("standalone"|"connected") to the full label. */
|
|
217
|
+
export function resolveType(value) {
|
|
218
|
+
const v = value.trim().toLowerCase();
|
|
219
|
+
if (v === 'standalone' || v === TYPES[0].toLowerCase())
|
|
220
|
+
return TYPES[0];
|
|
221
|
+
if (v === 'connected' || v === TYPES[1].toLowerCase())
|
|
222
|
+
return TYPES[1];
|
|
223
|
+
return null;
|
|
224
|
+
}
|
|
225
|
+
export function resolveFromFlags(opts) {
|
|
226
|
+
const values = {};
|
|
227
|
+
const errors = [];
|
|
228
|
+
if (opts.name !== undefined) {
|
|
229
|
+
try {
|
|
230
|
+
assertValidAppId(opts.name);
|
|
231
|
+
values.name = opts.name;
|
|
232
|
+
}
|
|
233
|
+
catch (e) {
|
|
234
|
+
errors.push(e instanceof Error ? `--name: ${e.message}` : '--name invalid');
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
if (opts.category !== undefined) {
|
|
238
|
+
const c = resolveCategory(opts.category);
|
|
239
|
+
if (c)
|
|
240
|
+
values.category = c;
|
|
241
|
+
else
|
|
242
|
+
errors.push(`--category: not a known category. One of: ${CATEGORIES.join(', ')}`);
|
|
243
|
+
}
|
|
244
|
+
if (opts.type !== undefined) {
|
|
245
|
+
const t = resolveType(opts.type);
|
|
246
|
+
if (t)
|
|
247
|
+
values.type = t;
|
|
248
|
+
else
|
|
249
|
+
errors.push('--type must be "standalone" or "connected"');
|
|
250
|
+
}
|
|
251
|
+
if (opts.oneliner !== undefined) {
|
|
252
|
+
if (opts.oneliner.trim().length === 0)
|
|
253
|
+
errors.push('--oneliner cannot be empty');
|
|
254
|
+
else
|
|
255
|
+
values.oneliner = opts.oneliner;
|
|
256
|
+
}
|
|
257
|
+
if (opts.demo !== undefined) {
|
|
258
|
+
values.demo = opts.demo.trim() || null;
|
|
259
|
+
}
|
|
260
|
+
return { values, errors };
|
|
261
|
+
}
|
|
262
|
+
export function buildPromptList(resolved, defaults) {
|
|
263
|
+
const list = [];
|
|
264
|
+
if (resolved.name === undefined) {
|
|
265
|
+
list.push({
|
|
266
|
+
type: 'text',
|
|
267
|
+
name: 'name',
|
|
268
|
+
message: 'App id (lowercase, used as subdomain)',
|
|
269
|
+
initial: defaults.appName ?? '',
|
|
270
|
+
validate: (value) => {
|
|
271
|
+
try {
|
|
272
|
+
assertValidAppId(value);
|
|
273
|
+
return true;
|
|
274
|
+
}
|
|
275
|
+
catch (e) {
|
|
276
|
+
return e instanceof Error ? e.message : 'invalid';
|
|
277
|
+
}
|
|
278
|
+
},
|
|
279
|
+
});
|
|
280
|
+
}
|
|
281
|
+
if (resolved.category === undefined) {
|
|
282
|
+
list.push({
|
|
283
|
+
type: 'select',
|
|
284
|
+
name: 'category',
|
|
285
|
+
message: 'Category (one app per category — check freeappstore.online for what\'s taken)',
|
|
286
|
+
choices: CATEGORIES.map((c) => ({ title: c, value: c })),
|
|
287
|
+
});
|
|
288
|
+
}
|
|
289
|
+
if (resolved.type === undefined) {
|
|
290
|
+
list.push({
|
|
291
|
+
type: 'select',
|
|
292
|
+
name: 'type',
|
|
293
|
+
message: 'App type',
|
|
294
|
+
choices: TYPES.map((t) => ({ title: t, value: t })),
|
|
295
|
+
});
|
|
296
|
+
}
|
|
297
|
+
if (resolved.oneliner === undefined) {
|
|
298
|
+
list.push({
|
|
299
|
+
type: 'text',
|
|
300
|
+
name: 'oneliner',
|
|
301
|
+
message: 'One-line description (shown on the storefront)',
|
|
302
|
+
initial: defaults.description ?? '',
|
|
303
|
+
validate: (v) => v.trim().length > 0 || 'required',
|
|
304
|
+
});
|
|
305
|
+
}
|
|
306
|
+
if (resolved.demo === undefined) {
|
|
307
|
+
list.push({
|
|
308
|
+
type: 'text',
|
|
309
|
+
name: 'demo',
|
|
310
|
+
message: 'Demo URL (optional, leave blank if none)',
|
|
311
|
+
});
|
|
312
|
+
}
|
|
313
|
+
return list;
|
|
314
|
+
}
|
|
315
|
+
export function buildSubmissionUrl(input) {
|
|
316
|
+
const url = new URL(SUBMISSION_URL);
|
|
317
|
+
url.searchParams.set('template', 'app-submission.yml');
|
|
318
|
+
url.searchParams.set('title', `[Submission] ${input.name}`);
|
|
319
|
+
url.searchParams.set('name', input.name);
|
|
320
|
+
url.searchParams.set('category', input.category);
|
|
321
|
+
url.searchParams.set('type', input.type);
|
|
322
|
+
url.searchParams.set('oneliner', input.oneliner);
|
|
323
|
+
url.searchParams.set('description', input.description);
|
|
324
|
+
if (input.repo)
|
|
325
|
+
url.searchParams.set('repo', input.repo);
|
|
326
|
+
if (input.demo)
|
|
327
|
+
url.searchParams.set('demo', input.demo);
|
|
328
|
+
return url.toString();
|
|
329
|
+
}
|
|
330
|
+
async function detectAppName() {
|
|
331
|
+
try {
|
|
332
|
+
const raw = await readFile(join(process.cwd(), 'package.json'), 'utf8');
|
|
333
|
+
const pkg = JSON.parse(raw);
|
|
334
|
+
return pkg.name ?? null;
|
|
335
|
+
}
|
|
336
|
+
catch {
|
|
337
|
+
return null;
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
async function detectDescription() {
|
|
341
|
+
try {
|
|
342
|
+
const raw = await readFile(join(process.cwd(), 'package.json'), 'utf8');
|
|
343
|
+
const pkg = JSON.parse(raw);
|
|
344
|
+
return pkg.description ?? null;
|
|
345
|
+
}
|
|
346
|
+
catch {
|
|
347
|
+
return null;
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
function detectGitRepo() {
|
|
351
|
+
return new Promise((resolveFn) => {
|
|
352
|
+
const child = spawn('git', ['remote', 'get-url', 'origin'], {
|
|
353
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
354
|
+
});
|
|
355
|
+
let buf = '';
|
|
356
|
+
child.stdout.on('data', (chunk) => (buf += chunk.toString()));
|
|
357
|
+
child.on('close', (code) => {
|
|
358
|
+
if (code !== 0)
|
|
359
|
+
resolveFn(null);
|
|
360
|
+
else
|
|
361
|
+
resolveFn(parseGitHubRepo(buf.trim()));
|
|
362
|
+
});
|
|
363
|
+
child.on('error', () => resolveFn(null));
|
|
364
|
+
});
|
|
365
|
+
}
|
|
366
|
+
export function parseGitHubRepo(url) {
|
|
367
|
+
const m = /github\.com[:/]([\w.-]+)\/([\w.-]+?)(?:\.git)?\/?$/.exec(url);
|
|
368
|
+
if (!m || !m[1] || !m[2])
|
|
369
|
+
return null;
|
|
370
|
+
return `${m[1]}/${m[2]}`;
|
|
371
|
+
}
|
|
372
|
+
//# 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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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publish.test.d.ts","sourceRoot":"","sources":["../../src/commands/publish.test.ts"],"names":[],"mappings":""}
|