@hytopia.com/hy 0.0.3 → 0.0.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/dist/commands/create.js
CHANGED
|
@@ -3,6 +3,7 @@ import { resolve } from 'node:path';
|
|
|
3
3
|
import { execFile } from 'node:child_process';
|
|
4
4
|
import { promisify } from 'node:util';
|
|
5
5
|
import prompts from 'prompts';
|
|
6
|
+
import login from './login.js';
|
|
6
7
|
const execFileAsync = promisify(execFile);
|
|
7
8
|
const SANDBOX_TEMPLATE_URL = 'https://prod.cdn.hytopia.com/assets/template-sandbox-sandbox-template-v0.0.5.zip';
|
|
8
9
|
async function promptForProject() {
|
|
@@ -143,6 +144,17 @@ export default async function create() {
|
|
|
143
144
|
}
|
|
144
145
|
}
|
|
145
146
|
}
|
|
147
|
+
const shouldLogin = await promptForConfirmation('Would you like to login and generate a .env file in this project now?', true);
|
|
148
|
+
if (shouldLogin) {
|
|
149
|
+
console.log('Starting HYTOPIA login flow...');
|
|
150
|
+
try {
|
|
151
|
+
await login({ cwd: destinationFolder, exitOnError: false, exitOnSuccess: false });
|
|
152
|
+
}
|
|
153
|
+
catch (error) {
|
|
154
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
155
|
+
console.warn(`Login did not complete: ${message}`);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
146
158
|
console.log(`
|
|
147
159
|
Project setup finished! To continue, please:
|
|
148
160
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,OAAO,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/login.js
CHANGED
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
import { readFile, writeFile } from 'node:fs/promises';
|
|
2
2
|
import { exec } from 'node:child_process';
|
|
3
|
+
import { resolve } from 'node:path';
|
|
3
4
|
import { sleep } from '../utils/sleep.js';
|
|
4
5
|
import { ok, err } from '../utils/result.js';
|
|
5
6
|
const API_BASE = 'https://prod.persuade-creative.hytopia.com';
|
|
6
7
|
const POLL_INTERVAL_MS = 1000;
|
|
7
8
|
function openBrowser(url) {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
if (process.platform === 'win32') {
|
|
10
|
+
// `start` is a cmd built-in, and the first quoted arg is a title.
|
|
11
|
+
exec(`start "" "${url}"`, { shell: 'cmd.exe' });
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
const cmd = process.platform === 'darwin' ? 'open' : 'xdg-open';
|
|
11
15
|
exec(`${cmd} "${url}"`);
|
|
12
16
|
}
|
|
13
17
|
async function createAuthPrompt() {
|
|
@@ -27,11 +31,18 @@ async function pollAuthPrompt(code) {
|
|
|
27
31
|
}
|
|
28
32
|
return ok(await res.json());
|
|
29
33
|
}
|
|
30
|
-
export default async function login() {
|
|
34
|
+
export default async function login(options = {}) {
|
|
35
|
+
const envPath = resolve(options.cwd ?? process.cwd(), '.env');
|
|
36
|
+
const exitOnError = options.exitOnError ?? true;
|
|
37
|
+
const exitOnSuccess = options.exitOnSuccess ?? true;
|
|
31
38
|
const createResult = await createAuthPrompt();
|
|
32
39
|
if (!createResult.ok) {
|
|
33
|
-
|
|
34
|
-
|
|
40
|
+
const message = `Could not create auth prompt: ${createResult.error}`;
|
|
41
|
+
if (exitOnError) {
|
|
42
|
+
console.error(message);
|
|
43
|
+
process.exit(1);
|
|
44
|
+
}
|
|
45
|
+
throw new Error(message);
|
|
35
46
|
}
|
|
36
47
|
const { code } = createResult.value;
|
|
37
48
|
const authUrl = `https://hytopia.com/create/authorize-repository?code=${code}`;
|
|
@@ -41,14 +52,18 @@ export default async function login() {
|
|
|
41
52
|
await sleep(POLL_INTERVAL_MS);
|
|
42
53
|
const pollResult = await pollAuthPrompt(code);
|
|
43
54
|
if (!pollResult.ok) {
|
|
44
|
-
|
|
45
|
-
|
|
55
|
+
const message = `Could not check auth prompt status: ${pollResult.error}`;
|
|
56
|
+
if (exitOnError) {
|
|
57
|
+
console.error(message);
|
|
58
|
+
process.exit(1);
|
|
59
|
+
}
|
|
60
|
+
throw new Error(message);
|
|
46
61
|
}
|
|
47
62
|
const prompt = pollResult.value;
|
|
48
63
|
if (prompt.authorizedApiKey != null && prompt.authorizedGameId != null) {
|
|
49
64
|
let existing = '';
|
|
50
65
|
try {
|
|
51
|
-
existing = await readFile(
|
|
66
|
+
existing = await readFile(envPath, 'utf-8');
|
|
52
67
|
}
|
|
53
68
|
catch { }
|
|
54
69
|
const filtered = existing
|
|
@@ -56,13 +71,16 @@ export default async function login() {
|
|
|
56
71
|
.filter(line => !line.startsWith('HYTOPIA_API_KEY=') && !line.startsWith('HYTOPIA_GAME_ID='))
|
|
57
72
|
.join('\n');
|
|
58
73
|
const base = filtered.endsWith('\n') || filtered === '' ? filtered : filtered + '\n';
|
|
59
|
-
await writeFile(
|
|
74
|
+
await writeFile(envPath, base + [
|
|
60
75
|
`HYTOPIA_API_KEY=${prompt.authorizedApiKey}`,
|
|
61
76
|
`HYTOPIA_GAME_ID=${prompt.authorizedGameId}`,
|
|
62
77
|
'',
|
|
63
78
|
].join('\n'));
|
|
64
|
-
console.log(
|
|
65
|
-
|
|
79
|
+
console.log(`Authorized! .env file updated at ${envPath}.`);
|
|
80
|
+
if (exitOnSuccess) {
|
|
81
|
+
process.exit(0);
|
|
82
|
+
}
|
|
83
|
+
return;
|
|
66
84
|
}
|
|
67
85
|
}
|
|
68
86
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAe,EAAE,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAE1D,MAAM,QAAQ,GAAG,4CAA4C,CAAC;AAC9D,MAAM,gBAAgB,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
|