@xrift/cli 0.2.0 → 0.4.0
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/README.md +38 -10
- package/dist/commands/__tests__/create.test.d.ts +2 -0
- package/dist/commands/__tests__/create.test.d.ts.map +1 -0
- package/dist/commands/__tests__/create.test.js +105 -0
- package/dist/commands/__tests__/create.test.js.map +1 -0
- package/dist/commands/create.d.ts.map +1 -1
- package/dist/commands/create.js +95 -1
- package/dist/commands/create.js.map +1 -1
- package/dist/lib/constants.d.ts +4 -3
- package/dist/lib/constants.d.ts.map +1 -1
- package/dist/lib/constants.js +4 -3
- package/dist/lib/constants.js.map +1 -1
- package/dist/lib/create-helpers.d.ts +20 -0
- package/dist/lib/create-helpers.d.ts.map +1 -0
- package/dist/lib/create-helpers.js +20 -0
- package/dist/lib/create-helpers.js.map +1 -0
- package/dist/lib/upload.d.ts.map +1 -1
- package/dist/lib/upload.js +42 -4
- package/dist/lib/upload.js.map +1 -1
- package/package.json +4 -2
package/README.md
CHANGED
|
@@ -13,10 +13,13 @@ XRift のワールドやアバターをコマンドラインからアップロ
|
|
|
13
13
|
## クイックスタート
|
|
14
14
|
|
|
15
15
|
```bash
|
|
16
|
-
#
|
|
16
|
+
# 対話式モードで新規プロジェクトを作成(推奨)
|
|
17
|
+
npx @xrift/cli create
|
|
18
|
+
|
|
19
|
+
# または、コマンドラインで指定
|
|
17
20
|
npx @xrift/cli create my-world
|
|
18
21
|
|
|
19
|
-
#
|
|
22
|
+
# プロジェクトに移動(新しいディレクトリに作成した場合)
|
|
20
23
|
cd my-world
|
|
21
24
|
|
|
22
25
|
# 開発サーバーを起動
|
|
@@ -48,24 +51,49 @@ npm install -g @xrift/cli
|
|
|
48
51
|
|
|
49
52
|
テンプレートから新しいワールドプロジェクトを作成します。
|
|
50
53
|
|
|
54
|
+
#### 対話式モード(推奨)
|
|
55
|
+
|
|
56
|
+
基本的に対話式で、省略されたオプションのみ質問します:
|
|
57
|
+
|
|
51
58
|
```bash
|
|
52
|
-
#
|
|
59
|
+
# 全て対話式で選択
|
|
60
|
+
npx @xrift/cli create
|
|
61
|
+
|
|
62
|
+
# プロジェクト名だけ指定、残りは対話式
|
|
53
63
|
npx @xrift/cli create my-world
|
|
54
64
|
|
|
55
|
-
#
|
|
56
|
-
xrift create my-world
|
|
65
|
+
# 場所も指定、テンプレートとインストールは対話式
|
|
66
|
+
xrift create my-world --here
|
|
67
|
+
|
|
68
|
+
# グローバルインストール後
|
|
69
|
+
xrift create
|
|
57
70
|
```
|
|
58
71
|
|
|
59
|
-
|
|
72
|
+
対話式モードでは以下を選択できます:
|
|
73
|
+
- プロジェクト名(省略時)
|
|
74
|
+
- 作成場所(`--here` がない場合)
|
|
75
|
+
- テンプレート(`--template` がない場合)
|
|
76
|
+
- 依存関係のインストール有無(`--skip-install` がない場合)
|
|
77
|
+
|
|
78
|
+
#### 完全自動モード
|
|
79
|
+
|
|
80
|
+
対話を無効にして、全てコマンドラインで指定することもできます:
|
|
60
81
|
|
|
61
82
|
```bash
|
|
62
|
-
#
|
|
63
|
-
xrift create my-world
|
|
83
|
+
# 対話なし(プロジェクト名は必須)
|
|
84
|
+
npx @xrift/cli create my-world -y
|
|
85
|
+
npx @xrift/cli create my-world --no-interactive
|
|
64
86
|
|
|
65
|
-
#
|
|
66
|
-
xrift create my-world --skip-install
|
|
87
|
+
# 全てのオプションを指定
|
|
88
|
+
xrift create my-world --here --template WebXR-JP/custom-template --skip-install -y
|
|
67
89
|
```
|
|
68
90
|
|
|
91
|
+
**オプション一覧:**
|
|
92
|
+
- `-y, --no-interactive` - 対話式を無効化(CI/スクリプト用)
|
|
93
|
+
- `--here` - カレントディレクトリに作成
|
|
94
|
+
- `-t, --template <repo>` - カスタムテンプレート
|
|
95
|
+
- `--skip-install` - npm install をスキップ
|
|
96
|
+
|
|
69
97
|
作成されたプロジェクトには以下が含まれます:
|
|
70
98
|
- React Three Fiber + Three.js のセットアップ
|
|
71
99
|
- Rapier 物理エンジンの統合
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.test.d.ts","sourceRoot":"","sources":["../../../src/commands/__tests__/create.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { describe, it, expect } from '@jest/globals';
|
|
2
|
+
import { isValidProjectName, needsInteraction, } from '../../lib/create-helpers.js';
|
|
3
|
+
describe('create command', () => {
|
|
4
|
+
describe('isValidProjectName', () => {
|
|
5
|
+
it('有効なプロジェクト名の場合は true を返す', () => {
|
|
6
|
+
expect(isValidProjectName('my-world')).toBe(true);
|
|
7
|
+
expect(isValidProjectName('test-project-123')).toBe(true);
|
|
8
|
+
expect(isValidProjectName('simple')).toBe(true);
|
|
9
|
+
expect(isValidProjectName('a-b-c-d-e-f')).toBe(true);
|
|
10
|
+
expect(isValidProjectName('world-2024')).toBe(true);
|
|
11
|
+
});
|
|
12
|
+
it('大文字が含まれる場合は false を返す', () => {
|
|
13
|
+
expect(isValidProjectName('MyWorld')).toBe(false);
|
|
14
|
+
expect(isValidProjectName('Test')).toBe(false);
|
|
15
|
+
});
|
|
16
|
+
it('アンダースコアが含まれる場合は false を返す', () => {
|
|
17
|
+
expect(isValidProjectName('my_world')).toBe(false);
|
|
18
|
+
expect(isValidProjectName('test_project')).toBe(false);
|
|
19
|
+
});
|
|
20
|
+
it('スペースが含まれる場合は false を返す', () => {
|
|
21
|
+
expect(isValidProjectName('my world')).toBe(false);
|
|
22
|
+
expect(isValidProjectName('test project')).toBe(false);
|
|
23
|
+
});
|
|
24
|
+
it('特殊文字が含まれる場合は false を返す', () => {
|
|
25
|
+
expect(isValidProjectName('my@world')).toBe(false);
|
|
26
|
+
expect(isValidProjectName('test!project')).toBe(false);
|
|
27
|
+
expect(isValidProjectName('world.project')).toBe(false);
|
|
28
|
+
});
|
|
29
|
+
it('空文字の場合は false を返す', () => {
|
|
30
|
+
expect(isValidProjectName('')).toBe(false);
|
|
31
|
+
});
|
|
32
|
+
it('ハイフンのみの場合は true を返す', () => {
|
|
33
|
+
expect(isValidProjectName('-')).toBe(true);
|
|
34
|
+
expect(isValidProjectName('---')).toBe(true);
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
describe('needsInteraction', () => {
|
|
38
|
+
it('全てのオプションが指定されている場合は false を返す', () => {
|
|
39
|
+
const options = {
|
|
40
|
+
here: true,
|
|
41
|
+
skipInstall: true,
|
|
42
|
+
template: 'custom/repo',
|
|
43
|
+
interactive: undefined,
|
|
44
|
+
};
|
|
45
|
+
expect(needsInteraction('my-project', options)).toBe(false);
|
|
46
|
+
});
|
|
47
|
+
it('プロジェクト名が未指定の場合は true を返す', () => {
|
|
48
|
+
const options = {
|
|
49
|
+
here: true,
|
|
50
|
+
skipInstall: true,
|
|
51
|
+
interactive: undefined,
|
|
52
|
+
};
|
|
53
|
+
expect(needsInteraction(undefined, options)).toBe(true);
|
|
54
|
+
});
|
|
55
|
+
it('here オプションが未指定の場合は true を返す', () => {
|
|
56
|
+
const options = {
|
|
57
|
+
skipInstall: true,
|
|
58
|
+
interactive: undefined,
|
|
59
|
+
};
|
|
60
|
+
expect(needsInteraction('my-project', options)).toBe(true);
|
|
61
|
+
});
|
|
62
|
+
it('skipInstall オプションが未指定の場合は true を返す', () => {
|
|
63
|
+
const options = {
|
|
64
|
+
here: true,
|
|
65
|
+
interactive: undefined,
|
|
66
|
+
};
|
|
67
|
+
expect(needsInteraction('my-project', options)).toBe(true);
|
|
68
|
+
});
|
|
69
|
+
it('interactive が false の場合は false を返す', () => {
|
|
70
|
+
const options = {
|
|
71
|
+
interactive: false,
|
|
72
|
+
};
|
|
73
|
+
expect(needsInteraction(undefined, options)).toBe(false);
|
|
74
|
+
});
|
|
75
|
+
it('複数のオプションが未指定の場合は true を返す', () => {
|
|
76
|
+
const options = {
|
|
77
|
+
interactive: undefined,
|
|
78
|
+
};
|
|
79
|
+
expect(needsInteraction(undefined, options)).toBe(true);
|
|
80
|
+
});
|
|
81
|
+
it('プロジェクト名とhereが指定され、skipInstallが未指定の場合は true を返す', () => {
|
|
82
|
+
const options = {
|
|
83
|
+
here: true,
|
|
84
|
+
interactive: undefined,
|
|
85
|
+
};
|
|
86
|
+
expect(needsInteraction('my-project', options)).toBe(true);
|
|
87
|
+
});
|
|
88
|
+
it('--no-interactive フラグがある場合、他のオプションに関わらず false を返す', () => {
|
|
89
|
+
const options = {
|
|
90
|
+
interactive: false,
|
|
91
|
+
};
|
|
92
|
+
expect(needsInteraction(undefined, options)).toBe(false);
|
|
93
|
+
});
|
|
94
|
+
it('全てのオプションが空でもinteractiveがfalseならfalseを返す', () => {
|
|
95
|
+
const options = {
|
|
96
|
+
here: undefined,
|
|
97
|
+
skipInstall: undefined,
|
|
98
|
+
template: undefined,
|
|
99
|
+
interactive: false,
|
|
100
|
+
};
|
|
101
|
+
expect(needsInteraction('my-project', options)).toBe(false);
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
//# sourceMappingURL=create.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.test.js","sourceRoot":"","sources":["../../../src/commands/__tests__/create.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqDpC,eAAO,MAAM,aAAa,SAqMtB,CAAC"}
|
package/dist/commands/create.js
CHANGED
|
@@ -2,6 +2,7 @@ import { Command } from 'commander';
|
|
|
2
2
|
import { resolve } from 'path';
|
|
3
3
|
import { access, constants, readdir } from 'fs';
|
|
4
4
|
import chalk from 'chalk';
|
|
5
|
+
import prompts from 'prompts';
|
|
5
6
|
import { downloadTemplate, customizeProject, installDependencies, } from '../lib/template.js';
|
|
6
7
|
/**
|
|
7
8
|
* ファイルまたはディレクトリが存在するかチェック
|
|
@@ -40,13 +41,106 @@ async function isDirectoryEmpty(path) {
|
|
|
40
41
|
});
|
|
41
42
|
}
|
|
42
43
|
export const createCommand = new Command('create')
|
|
43
|
-
.argument('
|
|
44
|
+
.argument('[project-name]', 'プロジェクト名(省略時は対話式)')
|
|
44
45
|
.option('-t, --template <repository>', 'テンプレートリポジトリ(例: WebXR-JP/xrift-world-template)', 'WebXR-JP/xrift-test-world')
|
|
45
46
|
.option('--skip-install', '依存関係のインストールをスキップ')
|
|
46
47
|
.option('--here', 'カレントディレクトリに直接作成')
|
|
48
|
+
.option('-y, --no-interactive', '対話式モードを無効化')
|
|
47
49
|
.description('新しいXRiftプロジェクトを作成')
|
|
48
50
|
.action(async (projectName, options) => {
|
|
49
51
|
try {
|
|
52
|
+
// --no-interactive の場合、プロジェクト名が必須
|
|
53
|
+
if (options.interactive === false && !projectName) {
|
|
54
|
+
console.error(chalk.red('\nエラー: --no-interactive を使用する場合はプロジェクト名が必要です'));
|
|
55
|
+
process.exit(1);
|
|
56
|
+
}
|
|
57
|
+
// 対話式モードが必要か判定
|
|
58
|
+
const needsInteraction = options.interactive !== false &&
|
|
59
|
+
(!projectName ||
|
|
60
|
+
options.here === undefined ||
|
|
61
|
+
options.skipInstall === undefined);
|
|
62
|
+
if (needsInteraction) {
|
|
63
|
+
console.log(chalk.cyan('\n✨ XRiftワールドを作成します\n'));
|
|
64
|
+
const questions = [];
|
|
65
|
+
// プロジェクト名が未指定の場合のみ質問
|
|
66
|
+
if (!projectName) {
|
|
67
|
+
questions.push({
|
|
68
|
+
type: 'text',
|
|
69
|
+
name: 'projectName',
|
|
70
|
+
message: 'プロジェクト名を入力してください',
|
|
71
|
+
validate: (value) => /^[a-z0-9-]+$/.test(value)
|
|
72
|
+
? true
|
|
73
|
+
: '小文字の英数字とハイフンのみ使用できます',
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
// 作成場所が未指定の場合のみ質問
|
|
77
|
+
if (options.here === undefined) {
|
|
78
|
+
questions.push({
|
|
79
|
+
type: 'select',
|
|
80
|
+
name: 'location',
|
|
81
|
+
message: 'どこに作成しますか?',
|
|
82
|
+
choices: [
|
|
83
|
+
{ title: '新しいディレクトリを作成', value: 'new' },
|
|
84
|
+
{ title: 'カレントディレクトリに直接作成', value: 'here' },
|
|
85
|
+
],
|
|
86
|
+
initial: 0,
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
// テンプレートがデフォルトの場合のみ質問
|
|
90
|
+
if (!options.template || options.template === 'WebXR-JP/xrift-test-world') {
|
|
91
|
+
questions.push({
|
|
92
|
+
type: 'select',
|
|
93
|
+
name: 'templateType',
|
|
94
|
+
message: 'テンプレートを選択してください',
|
|
95
|
+
choices: [
|
|
96
|
+
{ title: 'デフォルト (WebXR-JP/xrift-test-world)', value: 'default' },
|
|
97
|
+
{ title: 'カスタムテンプレート', value: 'custom' },
|
|
98
|
+
],
|
|
99
|
+
initial: 0,
|
|
100
|
+
});
|
|
101
|
+
questions.push({
|
|
102
|
+
type: (prev) => (prev === 'custom' ? 'text' : null),
|
|
103
|
+
name: 'customTemplate',
|
|
104
|
+
message: 'GitHubリポジトリを入力してください (例: username/repo)',
|
|
105
|
+
validate: (value) => value && value.includes('/')
|
|
106
|
+
? true
|
|
107
|
+
: '正しい形式で入力してください (username/repo)',
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
// インストール有無が未指定の場合のみ質問
|
|
111
|
+
if (options.skipInstall === undefined) {
|
|
112
|
+
questions.push({
|
|
113
|
+
type: 'confirm',
|
|
114
|
+
name: 'install',
|
|
115
|
+
message: '依存関係をインストールしますか?',
|
|
116
|
+
initial: true,
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
const response = await prompts(questions);
|
|
120
|
+
// ユーザーがキャンセルした場合
|
|
121
|
+
if (Object.keys(response).length === 0) {
|
|
122
|
+
console.log(chalk.yellow('\n❌ キャンセルされました'));
|
|
123
|
+
process.exit(0);
|
|
124
|
+
}
|
|
125
|
+
// 対話式モードの回答を変数に設定
|
|
126
|
+
if (response.projectName) {
|
|
127
|
+
projectName = response.projectName;
|
|
128
|
+
}
|
|
129
|
+
if (response.location !== undefined) {
|
|
130
|
+
options.here = response.location === 'here';
|
|
131
|
+
}
|
|
132
|
+
if (response.install !== undefined) {
|
|
133
|
+
options.skipInstall = !response.install;
|
|
134
|
+
}
|
|
135
|
+
if (response.templateType === 'custom') {
|
|
136
|
+
options.template = response.customTemplate;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
// この時点で projectName は必ず定義されている
|
|
140
|
+
if (!projectName) {
|
|
141
|
+
console.error(chalk.red('\nエラー: プロジェクト名が指定されていません'));
|
|
142
|
+
process.exit(1);
|
|
143
|
+
}
|
|
50
144
|
console.log(chalk.cyan(`\n✨ XRiftワールドを作成します...\n`));
|
|
51
145
|
// プロジェクト名のバリデーション
|
|
52
146
|
if (!/^[a-z0-9-]+$/.test(projectName)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAChD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,oBAAoB,CAAC;AAE5B;;GAEG;AACH,KAAK,UAAU,UAAU,CAAC,IAAY;IACpC,IAAI,CAAC;QACH,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE;gBACnC,IAAI,GAAG;oBAAE,MAAM,CAAC,GAAG,CAAC,CAAC;;oBAChB,OAAO,EAAE,CAAC;YACjB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,gBAAgB,CAAC,IAAY;IAC1C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;YAC3B,IAAI,GAAG,EAAE,CAAC;gBACR,MAAM,CAAC,GAAG,CAAC,CAAC;YACd,CAAC;iBAAM,CAAC;gBACN,oBAAoB;gBACpB,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;gBACnE,OAAO,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;YACrC,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/constants.d.ts
CHANGED
|
@@ -13,7 +13,8 @@ export declare const AUTH_CONFIG_FILE: string;
|
|
|
13
13
|
export declare const PROJECT_CONFIG_FILE = "xrift.json";
|
|
14
14
|
export declare const PROJECT_META_DIR = ".xrift";
|
|
15
15
|
export declare const WORLD_META_FILE = "world.json";
|
|
16
|
-
export declare const WORLD_CREATE_PATH = "/api/worlds";
|
|
17
|
-
export declare const WORLD_UPDATE_PATH = "/api/worlds";
|
|
18
|
-
export declare const WORLD_UPLOAD_URL_PATH = "/api/worlds";
|
|
16
|
+
export declare const WORLD_CREATE_PATH = "/api/public/v1/worlds";
|
|
17
|
+
export declare const WORLD_UPDATE_PATH = "/api/public/v1/worlds";
|
|
18
|
+
export declare const WORLD_UPLOAD_URL_PATH = "/api/public/v1/worlds";
|
|
19
|
+
export declare const WORLD_COMPLETE_PATH = "/api/public/v1/worlds";
|
|
19
20
|
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/lib/constants.ts"],"names":[],"mappings":"AAGA;;GAEG;AAGH,eAAO,MAAM,YAAY,QAAuD,CAAC;AAGjF,eAAO,MAAM,YAAY,QAA4D,CAAC;AAGtF,eAAO,MAAM,eAAe,eAAe,CAAC;AAC5C,eAAO,MAAM,gBAAgB,+BAA+B,CAAC;AAC7D,eAAO,MAAM,wBAAwB,wBAAwB,CAAC;AAC9D,eAAO,MAAM,aAAa,OAAO,CAAC;AAClC,eAAO,MAAM,aAAa,cAAc,CAAC;AAGzC,eAAO,MAAM,UAAU,QAAoC,CAAC;AAC5D,eAAO,MAAM,gBAAgB,QAAuC,CAAC;AACrE,eAAO,MAAM,mBAAmB,eAAe,CAAC;AAChD,eAAO,MAAM,gBAAgB,WAAW,CAAC;AACzC,eAAO,MAAM,eAAe,eAAe,CAAC;AAG5C,eAAO,MAAM,iBAAiB,
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/lib/constants.ts"],"names":[],"mappings":"AAGA;;GAEG;AAGH,eAAO,MAAM,YAAY,QAAuD,CAAC;AAGjF,eAAO,MAAM,YAAY,QAA4D,CAAC;AAGtF,eAAO,MAAM,eAAe,eAAe,CAAC;AAC5C,eAAO,MAAM,gBAAgB,+BAA+B,CAAC;AAC7D,eAAO,MAAM,wBAAwB,wBAAwB,CAAC;AAC9D,eAAO,MAAM,aAAa,OAAO,CAAC;AAClC,eAAO,MAAM,aAAa,cAAc,CAAC;AAGzC,eAAO,MAAM,UAAU,QAAoC,CAAC;AAC5D,eAAO,MAAM,gBAAgB,QAAuC,CAAC;AACrE,eAAO,MAAM,mBAAmB,eAAe,CAAC;AAChD,eAAO,MAAM,gBAAgB,WAAW,CAAC;AACzC,eAAO,MAAM,eAAe,eAAe,CAAC;AAG5C,eAAO,MAAM,iBAAiB,0BAA0B,CAAC;AACzD,eAAO,MAAM,iBAAiB,0BAA0B,CAAC;AACzD,eAAO,MAAM,qBAAqB,0BAA0B,CAAC;AAC7D,eAAO,MAAM,mBAAmB,0BAA0B,CAAC"}
|
package/dist/lib/constants.js
CHANGED
|
@@ -20,7 +20,8 @@ export const PROJECT_CONFIG_FILE = 'xrift.json';
|
|
|
20
20
|
export const PROJECT_META_DIR = '.xrift';
|
|
21
21
|
export const WORLD_META_FILE = 'world.json';
|
|
22
22
|
// World API endpoints
|
|
23
|
-
export const WORLD_CREATE_PATH = '/api/worlds';
|
|
24
|
-
export const WORLD_UPDATE_PATH = '/api/worlds';
|
|
25
|
-
export const WORLD_UPLOAD_URL_PATH = '/api/worlds';
|
|
23
|
+
export const WORLD_CREATE_PATH = '/api/public/v1/worlds';
|
|
24
|
+
export const WORLD_UPDATE_PATH = '/api/public/v1/worlds';
|
|
25
|
+
export const WORLD_UPLOAD_URL_PATH = '/api/public/v1/worlds';
|
|
26
|
+
export const WORLD_COMPLETE_PATH = '/api/public/v1/worlds'; // :id/complete をつけて使用
|
|
26
27
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/lib/constants.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AAEzB;;GAEG;AAEH,eAAe;AACf,MAAM,CAAC,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,uBAAuB,CAAC;AAEjF,4CAA4C;AAC5C,MAAM,CAAC,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,uBAAuB,CAAC;AAEtF,iBAAiB;AACjB,MAAM,CAAC,MAAM,eAAe,GAAG,YAAY,CAAC;AAC5C,MAAM,CAAC,MAAM,gBAAgB,GAAG,4BAA4B,CAAC;AAC7D,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAAqB,CAAC,CAAC,+BAA+B;AAC9F,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,CAAC;AAClC,MAAM,CAAC,MAAM,aAAa,GAAG,WAAW,CAAC;AAEzC,oBAAoB;AACpB,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;AAC5D,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;AACrE,MAAM,CAAC,MAAM,mBAAmB,GAAG,YAAY,CAAC;AAChD,MAAM,CAAC,MAAM,gBAAgB,GAAG,QAAQ,CAAC;AACzC,MAAM,CAAC,MAAM,eAAe,GAAG,YAAY,CAAC;AAE5C,sBAAsB;AACtB,MAAM,CAAC,MAAM,iBAAiB,GAAG,
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/lib/constants.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AAEzB;;GAEG;AAEH,eAAe;AACf,MAAM,CAAC,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,uBAAuB,CAAC;AAEjF,4CAA4C;AAC5C,MAAM,CAAC,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,uBAAuB,CAAC;AAEtF,iBAAiB;AACjB,MAAM,CAAC,MAAM,eAAe,GAAG,YAAY,CAAC;AAC5C,MAAM,CAAC,MAAM,gBAAgB,GAAG,4BAA4B,CAAC;AAC7D,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAAqB,CAAC,CAAC,+BAA+B;AAC9F,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,CAAC;AAClC,MAAM,CAAC,MAAM,aAAa,GAAG,WAAW,CAAC;AAEzC,oBAAoB;AACpB,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;AAC5D,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;AACrE,MAAM,CAAC,MAAM,mBAAmB,GAAG,YAAY,CAAC;AAChD,MAAM,CAAC,MAAM,gBAAgB,GAAG,QAAQ,CAAC;AACzC,MAAM,CAAC,MAAM,eAAe,GAAG,YAAY,CAAC;AAE5C,sBAAsB;AACtB,MAAM,CAAC,MAAM,iBAAiB,GAAG,uBAAuB,CAAC;AACzD,MAAM,CAAC,MAAM,iBAAiB,GAAG,uBAAuB,CAAC;AACzD,MAAM,CAAC,MAAM,qBAAqB,GAAG,uBAAuB,CAAC;AAC7D,MAAM,CAAC,MAAM,mBAAmB,GAAG,uBAAuB,CAAC,CAAC,sBAAsB"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* create コマンドのヘルパー関数
|
|
3
|
+
* テスト可能にするため、依存関係のない純粋な関数として分離
|
|
4
|
+
*/
|
|
5
|
+
export interface CreateOptions {
|
|
6
|
+
template?: string;
|
|
7
|
+
skipInstall?: boolean;
|
|
8
|
+
here?: boolean;
|
|
9
|
+
interactive?: boolean;
|
|
10
|
+
y?: boolean;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* プロジェクト名が有効かバリデーション
|
|
14
|
+
*/
|
|
15
|
+
export declare function isValidProjectName(name: string): boolean;
|
|
16
|
+
/**
|
|
17
|
+
* 対話式モードが必要か判定
|
|
18
|
+
*/
|
|
19
|
+
export declare function needsInteraction(projectName: string | undefined, options: CreateOptions): boolean;
|
|
20
|
+
//# sourceMappingURL=create-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-helpers.d.ts","sourceRoot":"","sources":["../../src/lib/create-helpers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,CAAC,CAAC,EAAE,OAAO,CAAC;CACb;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAExD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,OAAO,EAAE,aAAa,GACrB,OAAO,CAOT"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* create コマンドのヘルパー関数
|
|
3
|
+
* テスト可能にするため、依存関係のない純粋な関数として分離
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* プロジェクト名が有効かバリデーション
|
|
7
|
+
*/
|
|
8
|
+
export function isValidProjectName(name) {
|
|
9
|
+
return /^[a-z0-9-]+$/.test(name);
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* 対話式モードが必要か判定
|
|
13
|
+
*/
|
|
14
|
+
export function needsInteraction(projectName, options) {
|
|
15
|
+
return (options.interactive !== false &&
|
|
16
|
+
(!projectName ||
|
|
17
|
+
options.here === undefined ||
|
|
18
|
+
options.skipInstall === undefined));
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=create-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-helpers.js","sourceRoot":"","sources":["../../src/lib/create-helpers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,WAA+B,EAC/B,OAAsB;IAEtB,OAAO,CACL,OAAO,CAAC,WAAW,KAAK,KAAK;QAC7B,CAAC,CAAC,WAAW;YACX,OAAO,CAAC,IAAI,KAAK,SAAS;YAC1B,OAAO,CAAC,WAAW,KAAK,SAAS,CAAC,CACrC,CAAC;AACJ,CAAC"}
|
package/dist/lib/upload.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upload.d.ts","sourceRoot":"","sources":["../../src/lib/upload.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"upload.d.ts","sourceRoot":"","sources":["../../src/lib/upload.ts"],"names":[],"mappings":"AAkBA;;GAEG;AACH,wBAAsB,WAAW,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiL5E"}
|
package/dist/lib/upload.js
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import path from 'node:path';
|
|
2
2
|
import fs from 'node:fs/promises';
|
|
3
|
+
import crypto from 'node:crypto';
|
|
3
4
|
import chalk from 'chalk';
|
|
4
5
|
import ora from 'ora';
|
|
5
6
|
import cliProgress from 'cli-progress';
|
|
6
7
|
import axios from 'axios';
|
|
7
8
|
import { loadProjectConfig, loadWorldMetadata, saveWorldMetadata, validateDistDir, scanDirectory, } from './project-config.js';
|
|
8
9
|
import { getAuthenticatedClient } from './api.js';
|
|
9
|
-
import { WORLD_CREATE_PATH, WORLD_UPDATE_PATH } from './constants.js';
|
|
10
|
+
import { WORLD_CREATE_PATH, WORLD_UPDATE_PATH, WORLD_COMPLETE_PATH } from './constants.js';
|
|
10
11
|
/**
|
|
11
12
|
* ワールドをアップロード
|
|
12
13
|
*/
|
|
@@ -67,11 +68,18 @@ export async function uploadWorld(cwd = process.cwd()) {
|
|
|
67
68
|
throw error;
|
|
68
69
|
}
|
|
69
70
|
}
|
|
70
|
-
// 7.
|
|
71
|
+
// 7. contentHashとfileSizeを計算
|
|
72
|
+
spinner = ora('ファイルのハッシュを計算中...').start();
|
|
73
|
+
const contentHash = await calculateContentHash(uploadFiles);
|
|
74
|
+
const fileSize = calculateTotalSize(uploadFiles);
|
|
75
|
+
spinner.succeed(chalk.green(`ハッシュ計算完了 (contentHash: ${contentHash}, fileSize: ${fileSize} bytes)`));
|
|
76
|
+
// 8. 署名付きURLを取得
|
|
71
77
|
spinner = ora('アップロード用URLを取得中...').start();
|
|
72
78
|
let signedUrls;
|
|
73
79
|
try {
|
|
74
80
|
const response = await client.post(`${WORLD_UPDATE_PATH}/${worldId}/upload-urls`, {
|
|
81
|
+
contentHash,
|
|
82
|
+
fileSize,
|
|
75
83
|
files: uploadFiles.map((f) => ({
|
|
76
84
|
path: f.remotePath,
|
|
77
85
|
size: f.size,
|
|
@@ -84,7 +92,7 @@ export async function uploadWorld(cwd = process.cwd()) {
|
|
|
84
92
|
spinner.fail(chalk.red('アップロードURLの取得に失敗しました'));
|
|
85
93
|
throw error;
|
|
86
94
|
}
|
|
87
|
-
//
|
|
95
|
+
// 9. ファイルをアップロード
|
|
88
96
|
console.log(chalk.blue('\n📤 ファイルをアップロード中...\n'));
|
|
89
97
|
const progressBar = new cliProgress.SingleBar({
|
|
90
98
|
format: `${chalk.cyan('{bar}')} | {percentage}% | {value}/{total} ファイル | {filename}`,
|
|
@@ -116,7 +124,17 @@ export async function uploadWorld(cwd = process.cwd()) {
|
|
|
116
124
|
}
|
|
117
125
|
progressBar.update(uploadFiles.length, { filename: '完了' });
|
|
118
126
|
progressBar.stop();
|
|
119
|
-
//
|
|
127
|
+
// 10. アップロード完了通知
|
|
128
|
+
spinner = ora('アップロード完了を通知中...').start();
|
|
129
|
+
try {
|
|
130
|
+
await client.post(`${WORLD_COMPLETE_PATH}/${worldId}/complete`);
|
|
131
|
+
spinner.succeed(chalk.green('アップロード完了を通知しました'));
|
|
132
|
+
}
|
|
133
|
+
catch (error) {
|
|
134
|
+
spinner.fail(chalk.red('アップロード完了通知に失敗しました'));
|
|
135
|
+
throw error;
|
|
136
|
+
}
|
|
137
|
+
// 11. メタデータを保存
|
|
120
138
|
await saveWorldMetadata({
|
|
121
139
|
id: worldId,
|
|
122
140
|
createdAt: existingMetadata?.createdAt || new Date().toISOString(),
|
|
@@ -135,6 +153,26 @@ export async function uploadWorld(cwd = process.cwd()) {
|
|
|
135
153
|
throw error;
|
|
136
154
|
}
|
|
137
155
|
}
|
|
156
|
+
/**
|
|
157
|
+
* 全ファイルを結合してSHA-256ハッシュを計算(先頭12文字)
|
|
158
|
+
*/
|
|
159
|
+
async function calculateContentHash(uploadFiles) {
|
|
160
|
+
const hash = crypto.createHash('sha256');
|
|
161
|
+
// ファイルをパスでソートして順序を確定
|
|
162
|
+
const sortedFiles = [...uploadFiles].sort((a, b) => a.remotePath.localeCompare(b.remotePath));
|
|
163
|
+
for (const fileInfo of sortedFiles) {
|
|
164
|
+
const fileBuffer = await fs.readFile(fileInfo.localPath);
|
|
165
|
+
hash.update(fileBuffer);
|
|
166
|
+
}
|
|
167
|
+
const fullHash = hash.digest('hex');
|
|
168
|
+
return fullHash.substring(0, 12); // 先頭12文字
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* 全ファイルのサイズ合計を計算
|
|
172
|
+
*/
|
|
173
|
+
function calculateTotalSize(uploadFiles) {
|
|
174
|
+
return uploadFiles.reduce((total, file) => total + file.size, 0);
|
|
175
|
+
}
|
|
138
176
|
/**
|
|
139
177
|
* ファイルのMIMEタイプを取得
|
|
140
178
|
*/
|
package/dist/lib/upload.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upload.js","sourceRoot":"","sources":["../../src/lib/upload.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAiB,MAAM,KAAK,CAAC;AACpC,OAAO,WAAW,MAAM,cAAc,CAAC;AACvC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,aAAa,GACd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"upload.js","sourceRoot":"","sources":["../../src/lib/upload.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xrift/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "XRift CLI tool for world and avatar uploads",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -49,13 +49,15 @@
|
|
|
49
49
|
"commander": "^12.1.0",
|
|
50
50
|
"giget": "^2.0.0",
|
|
51
51
|
"open": "^10.1.0",
|
|
52
|
-
"ora": "^8.1.1"
|
|
52
|
+
"ora": "^8.1.1",
|
|
53
|
+
"prompts": "^2.4.2"
|
|
53
54
|
},
|
|
54
55
|
"devDependencies": {
|
|
55
56
|
"@jest/globals": "^30.2.0",
|
|
56
57
|
"@types/cli-progress": "^3.11.6",
|
|
57
58
|
"@types/jest": "^30.0.0",
|
|
58
59
|
"@types/node": "^22.10.2",
|
|
60
|
+
"@types/prompts": "^2.4.9",
|
|
59
61
|
"@typescript-eslint/eslint-plugin": "^8.18.1",
|
|
60
62
|
"@typescript-eslint/parser": "^8.18.1",
|
|
61
63
|
"eslint": "^9.17.0",
|