@hytopia.com/hy 0.0.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/dist/commands/create.js +91 -0
- package/dist/commands/create.js.map +1 -0
- package/dist/commands/login.js +69 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -0
- package/dist/utils/result.js +7 -0
- package/dist/utils/result.js.map +1 -0
- package/dist/utils/sleep.js +4 -0
- package/dist/utils/sleep.js.map +1 -0
- package/package.json +30 -0
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { access, mkdir, unlink, writeFile } from 'node:fs/promises';
|
|
2
|
+
import { resolve } from 'node:path';
|
|
3
|
+
import { execFile } from 'node:child_process';
|
|
4
|
+
import { promisify } from 'node:util';
|
|
5
|
+
import prompts from 'prompts';
|
|
6
|
+
const execFileAsync = promisify(execFile);
|
|
7
|
+
const SANDBOX_TEMPLATE_URL = 'https://prod.cdn.hytopia.com/assets/template-sandbox-sandbox-template-v0.0.5.zip';
|
|
8
|
+
async function promptForProject() {
|
|
9
|
+
const answers = await prompts([
|
|
10
|
+
{
|
|
11
|
+
type: 'text',
|
|
12
|
+
name: 'projectName',
|
|
13
|
+
message: 'Project name:',
|
|
14
|
+
validate: value => value.trim().length > 0 ? true : 'Project name is required',
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
type: 'text',
|
|
18
|
+
name: 'folder',
|
|
19
|
+
message: 'Folder to use:',
|
|
20
|
+
validate: value => value.trim().length > 0 ? true : 'Folder is required',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
type: 'select',
|
|
24
|
+
name: 'template',
|
|
25
|
+
message: 'Template to use:',
|
|
26
|
+
choices: [
|
|
27
|
+
{ title: 'sandbox', value: 'sandbox' },
|
|
28
|
+
],
|
|
29
|
+
initial: 0,
|
|
30
|
+
},
|
|
31
|
+
], {
|
|
32
|
+
onCancel: () => {
|
|
33
|
+
throw new Error('Prompt cancelled');
|
|
34
|
+
},
|
|
35
|
+
});
|
|
36
|
+
const template = String(answers.template).trim();
|
|
37
|
+
if (template !== 'sandbox') {
|
|
38
|
+
throw new Error(`Unsupported template: ${template}`);
|
|
39
|
+
}
|
|
40
|
+
return {
|
|
41
|
+
projectName: String(answers.projectName).trim(),
|
|
42
|
+
folder: String(answers.folder).trim(),
|
|
43
|
+
template: 'sandbox',
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
async function downloadTemplate(url, zipPath) {
|
|
47
|
+
const response = await fetch(url);
|
|
48
|
+
if (!response.ok) {
|
|
49
|
+
throw new Error(`Failed to download template: ${response.status} ${response.statusText}`);
|
|
50
|
+
}
|
|
51
|
+
const bytes = await response.arrayBuffer();
|
|
52
|
+
await writeFile(zipPath, Buffer.from(bytes));
|
|
53
|
+
}
|
|
54
|
+
async function unzipTemplate(zipPath, destinationFolder) {
|
|
55
|
+
await execFileAsync('unzip', ['-o', zipPath, '-d', destinationFolder]);
|
|
56
|
+
}
|
|
57
|
+
async function tryDeleteZip(zipPath) {
|
|
58
|
+
try {
|
|
59
|
+
await access(zipPath);
|
|
60
|
+
await unlink(zipPath);
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
// Ignore cleanup failures.
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
export default async function create() {
|
|
67
|
+
try {
|
|
68
|
+
const { projectName, folder, template } = await promptForProject();
|
|
69
|
+
if (template !== 'sandbox') {
|
|
70
|
+
throw new Error(`Unsupported template: ${template}`);
|
|
71
|
+
}
|
|
72
|
+
const destinationFolder = resolve(folder);
|
|
73
|
+
await mkdir(destinationFolder, { recursive: true });
|
|
74
|
+
const zipPath = resolve(destinationFolder, `${projectName}.template.zip`);
|
|
75
|
+
console.log(`Downloading ${template} template...`);
|
|
76
|
+
await downloadTemplate(SANDBOX_TEMPLATE_URL, zipPath);
|
|
77
|
+
console.log(`Extracting into ${destinationFolder}...`);
|
|
78
|
+
try {
|
|
79
|
+
await unzipTemplate(zipPath, destinationFolder);
|
|
80
|
+
}
|
|
81
|
+
finally {
|
|
82
|
+
await tryDeleteZip(zipPath);
|
|
83
|
+
}
|
|
84
|
+
console.log(`Created project "${projectName}" in ${destinationFolder}`);
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
console.error(error instanceof Error ? error.message : String(error));
|
|
88
|
+
process.exit(1);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=create.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { readFile, writeFile } from 'node:fs/promises';
|
|
2
|
+
import { exec } from 'node:child_process';
|
|
3
|
+
import { sleep } from '../utils/sleep.js';
|
|
4
|
+
import { ok, err } from '../utils/result.js';
|
|
5
|
+
const API_BASE = 'https://prod.persuade-creative.hytopia.com';
|
|
6
|
+
const POLL_INTERVAL_MS = 1000;
|
|
7
|
+
function openBrowser(url) {
|
|
8
|
+
const cmd = process.platform === 'darwin' ? 'open'
|
|
9
|
+
: process.platform === 'win32' ? 'start'
|
|
10
|
+
: 'xdg-open';
|
|
11
|
+
exec(`${cmd} "${url}"`);
|
|
12
|
+
}
|
|
13
|
+
async function createAuthPrompt() {
|
|
14
|
+
const res = await fetch(`${API_BASE}/Auth/CreateAuthPrompt`, {
|
|
15
|
+
method: 'POST'
|
|
16
|
+
});
|
|
17
|
+
if (!res.ok) {
|
|
18
|
+
return err(res.statusText);
|
|
19
|
+
}
|
|
20
|
+
return ok(await res.json());
|
|
21
|
+
}
|
|
22
|
+
async function pollAuthPrompt(code) {
|
|
23
|
+
const res = await fetch(`${API_BASE}/Auth/GetAuthPromptByCode/${code}`);
|
|
24
|
+
if (!res.ok) {
|
|
25
|
+
const message = res.status === 404 ? "Prompt cancelled or expired" : res.statusText;
|
|
26
|
+
return err(message);
|
|
27
|
+
}
|
|
28
|
+
return ok(await res.json());
|
|
29
|
+
}
|
|
30
|
+
export default async function login() {
|
|
31
|
+
const createResult = await createAuthPrompt();
|
|
32
|
+
if (!createResult.ok) {
|
|
33
|
+
console.error(`Could not create auth prompt: ${createResult.error}`);
|
|
34
|
+
process.exit(1);
|
|
35
|
+
}
|
|
36
|
+
const { code } = createResult.value;
|
|
37
|
+
const authUrl = `https://hytopia.com/create/authorize-repository?code=${code}`;
|
|
38
|
+
console.log(`Login at:\n${authUrl}`);
|
|
39
|
+
openBrowser(authUrl);
|
|
40
|
+
while (true) {
|
|
41
|
+
await sleep(POLL_INTERVAL_MS);
|
|
42
|
+
const pollResult = await pollAuthPrompt(code);
|
|
43
|
+
if (!pollResult.ok) {
|
|
44
|
+
console.error(`Could not check auth prompt status: ${pollResult.error}`);
|
|
45
|
+
process.exit(1);
|
|
46
|
+
}
|
|
47
|
+
const prompt = pollResult.value;
|
|
48
|
+
if (prompt.authorizedApiKey != null && prompt.authorizedGameId != null) {
|
|
49
|
+
let existing = '';
|
|
50
|
+
try {
|
|
51
|
+
existing = await readFile('.env', 'utf-8');
|
|
52
|
+
}
|
|
53
|
+
catch { }
|
|
54
|
+
const filtered = existing
|
|
55
|
+
.split('\n')
|
|
56
|
+
.filter(line => !line.startsWith('HYTOPIA_API_KEY=') && !line.startsWith('HYTOPIA_GAME_ID='))
|
|
57
|
+
.join('\n');
|
|
58
|
+
const base = filtered.endsWith('\n') || filtered === '' ? filtered : filtered + '\n';
|
|
59
|
+
await writeFile('.env', base + [
|
|
60
|
+
`HYTOPIA_API_KEY=${prompt.authorizedApiKey}`,
|
|
61
|
+
`HYTOPIA_GAME_ID=${prompt.authorizedGameId}`,
|
|
62
|
+
'',
|
|
63
|
+
].join('\n'));
|
|
64
|
+
console.log('Authorized! .env file updated.');
|
|
65
|
+
process.exit(0);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=login.js.map
|
|
@@ -0,0 +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;AAQ9B,SAAS,WAAW,CAAC,GAAW;IAC5B,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM;QAC9C,CAAC,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO;YACpC,CAAC,CAAC,UAAU,CAAC;IAErB,IAAI,CAAC,GAAG,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC;AAC5B,CAAC;AAED,KAAK,UAAU,gBAAgB;IAC3B,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,wBAAwB,EAAE;QACzD,MAAM,EAAE,MAAM;KACjB,CAAC,CAAC;IAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACV,OAAO,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,EAAgB,CAAC,CAAC;AAC9C,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,IAAY;IACtC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,6BAA6B,IAAI,EAAE,CAAC,CAAC;IAExE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACV,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC;QACpF,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC;IAED,OAAO,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,EAAgB,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,KAAK;IAC/B,MAAM,YAAY,GAAG,MAAM,gBAAgB,EAAE,CAAC;IAC9C,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC;QACnB,OAAO,CAAC,KAAK,CAAC,iCAAiC,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC;QACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,MAAM,EAAE,IAAI,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC;IACpC,MAAM,OAAO,GAAG,wDAAwD,IAAI,EAAE,CAAC;IAC/E,OAAO,CAAC,GAAG,CAAC,cAAc,OAAO,EAAE,CAAC,CAAC;IACrC,WAAW,CAAC,OAAO,CAAC,CAAC;IAErB,OAAO,IAAI,EAAE,CAAC;QACV,MAAM,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAE9B,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;YACjB,OAAO,CAAC,KAAK,CAAC,uCAAuC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;YACzE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;QAED,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC;QAChC,IAAI,MAAM,CAAC,gBAAgB,IAAI,IAAI,IAAI,MAAM,CAAC,gBAAgB,IAAI,IAAI,EAAE,CAAC;YACrE,IAAI,QAAQ,GAAG,EAAE,CAAC;YAClB,IAAI,CAAC;gBACD,QAAQ,GAAG,MAAM,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC/C,CAAC;YACD,MAAM,CAAC,CAAC,CAAC;YAET,MAAM,QAAQ,GAAG,QAAQ;iBACpB,KAAK,CAAC,IAAI,CAAC;iBACX,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;iBAC5F,IAAI,CAAC,IAAI,CAAC,CAAC;YAEhB,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,QAAQ,KAAK,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC;YAErF,MAAM,SAAS,CAAC,MAAM,EAAE,IAAI,GAAG;gBAC3B,mBAAmB,MAAM,CAAC,gBAAgB,EAAE;gBAC5C,mBAAmB,MAAM,CAAC,gBAAgB,EAAE;gBAC5C,EAAE;aACL,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAEd,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;YAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;IACL,CAAC;AACL,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { Command } from "commander";
|
|
3
|
+
import login from "./commands/login.js";
|
|
4
|
+
import create from "./commands/create.js";
|
|
5
|
+
async function main() {
|
|
6
|
+
const root = new Command();
|
|
7
|
+
root.name("hy");
|
|
8
|
+
root.command("login")
|
|
9
|
+
.description("Authenticate with HYTOPIA and generate a .env file")
|
|
10
|
+
.action(login);
|
|
11
|
+
root.command("create")
|
|
12
|
+
.description("Create a new HYTOPIA project from a template")
|
|
13
|
+
.action(create);
|
|
14
|
+
await root.parseAsync(process.argv);
|
|
15
|
+
}
|
|
16
|
+
main();
|
|
17
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,qBAAqB,CAAC;AACxC,OAAO,MAAM,MAAM,sBAAsB,CAAC;AAE1C,KAAK,UAAU,IAAI;IACf,MAAM,IAAI,GAAG,IAAI,OAAO,EAAE,CAAC;IAC3B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEhB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,oDAAoD,CAAC;SACjE,MAAM,CAAC,KAAK,CAAC,CAAC;IAEnB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,8CAA8C,CAAC;SAC3D,MAAM,CAAC,MAAM,CAAC,CAAC;IAEpB,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACxC,CAAC;AAED,IAAI,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"result.js","sourceRoot":"","sources":["../../src/utils/result.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,EAAE,CAAI,KAAQ;IAC5B,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,GAAG,CAAI,KAAQ;IAC7B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAC9B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sleep.js","sourceRoot":"","sources":["../../src/utils/sleep.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,KAAK,CAAC,EAAU;IAC5B,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@hytopia.com/hy",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "HYTOPIA command line interface",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"bin": {
|
|
8
|
+
"hy": "./dist/index.js"
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
"dist"
|
|
12
|
+
],
|
|
13
|
+
"scripts": {
|
|
14
|
+
"build": "tsc --project tsconfig.build.json",
|
|
15
|
+
"prepack": "npm run build",
|
|
16
|
+
"test": "echo \"Error: no test specified\" && exit 1"
|
|
17
|
+
},
|
|
18
|
+
"author": "",
|
|
19
|
+
"license": "ISC",
|
|
20
|
+
"devDependencies": {
|
|
21
|
+
"@types/node": "^25.5.0",
|
|
22
|
+
"@types/prompts": "^2.4.9",
|
|
23
|
+
"tsx": "^4.21.0",
|
|
24
|
+
"typescript": "^5.9.3"
|
|
25
|
+
},
|
|
26
|
+
"dependencies": {
|
|
27
|
+
"commander": "^14.0.3",
|
|
28
|
+
"prompts": "^2.4.2"
|
|
29
|
+
}
|
|
30
|
+
}
|