@minimalcorp/tsunagi 0.1.7 → 0.1.8
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/.next/standalone/apps/web/.next/BUILD_ID +1 -1
- package/.next/standalone/apps/web/.next/build-manifest.json +3 -3
- package/.next/standalone/apps/web/.next/prerender-manifest.json +3 -3
- package/.next/standalone/apps/web/.next/server/app/_global-error.html +1 -1
- package/.next/standalone/apps/web/.next/server/app/_global-error.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/_not-found.html +1 -1
- package/.next/standalone/apps/web/.next/server/app/_not-found.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/index.html +1 -1
- package/.next/standalone/apps/web/.next/server/app/index.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/index.segments/_full.segment.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/index.segments/_index.segment.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/settings.html +1 -1
- package/.next/standalone/apps/web/.next/server/app/settings.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/settings.segments/_full.segment.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/settings.segments/_head.segment.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/settings.segments/_index.segment.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/settings.segments/settings.segment.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/middleware-build-manifest.js +3 -3
- package/.next/standalone/apps/web/.next/server/pages/404.html +1 -1
- package/.next/standalone/apps/web/.next/server/pages/500.html +1 -1
- package/.next/standalone/apps/web/.next/server/server-reference-manifest.js +1 -1
- package/.next/standalone/apps/web/.next/server/server-reference-manifest.json +1 -1
- package/dist/cli.js +22 -18
- package/package.json +1 -1
- /package/.next/standalone/apps/web/.next/static/{xo02JiS9Ac5yxetGSST6G → haxinjoLVmLKqf8KiMFfd}/_buildManifest.js +0 -0
- /package/.next/standalone/apps/web/.next/static/{xo02JiS9Ac5yxetGSST6G → haxinjoLVmLKqf8KiMFfd}/_clientMiddlewareManifest.js +0 -0
- /package/.next/standalone/apps/web/.next/static/{xo02JiS9Ac5yxetGSST6G → haxinjoLVmLKqf8KiMFfd}/_ssgManifest.js +0 -0
package/dist/cli.js
CHANGED
|
@@ -25,27 +25,15 @@ import { acquireSingleInstanceLock } from './single-instance-lock.js';
|
|
|
25
25
|
* <pkg>/prisma.config.ts
|
|
26
26
|
* <pkg>/tsunagi-marketplace/plugins/tsunagi-plugin/.claude-plugin/plugin.json
|
|
27
27
|
*/
|
|
28
|
-
if (process.platform !== 'darwin' && process.platform !== 'linux') {
|
|
29
|
-
console.error(`[tsunagi] Unsupported platform: ${process.platform}`);
|
|
30
|
-
console.error('[tsunagi] Tsunagi currently supports macOS and Linux only.');
|
|
31
|
-
process.exit(1);
|
|
32
|
-
}
|
|
33
|
-
acquireSingleInstanceLock();
|
|
34
|
-
const DIST_DIR = path.dirname(fileURLToPath(import.meta.url));
|
|
35
|
-
const PACKAGE_ROOT = path.resolve(DIST_DIR, '..');
|
|
36
|
-
const AUTO_MIGRATE_JS = path.join(DIST_DIR, 'auto-migrate.js');
|
|
37
|
-
const FASTIFY_ENTRY_JS = path.join(DIST_DIR, 'server', 'index.js');
|
|
38
|
-
const NEXT_STANDALONE_ENTRY = path.join(PACKAGE_ROOT, '.next', 'standalone', 'apps', 'web', 'server.js');
|
|
39
|
-
const DOCS_DIR = path.join(PACKAGE_ROOT, 'docs');
|
|
40
|
-
const DOCS_PORT = 2793;
|
|
41
|
-
const isDebug = !!process.env.TSUNAGI_DEBUG;
|
|
42
|
-
const isDocker = fs.existsSync('/.dockerenv');
|
|
43
28
|
// ---------------------------------------------------------------------------
|
|
44
29
|
// Braille-dots spinner
|
|
45
30
|
// ---------------------------------------------------------------------------
|
|
46
31
|
const SPINNER_FRAMES = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
|
|
47
32
|
function createSpinner(message) {
|
|
48
33
|
let i = 0;
|
|
34
|
+
// Write first frame immediately so it shows even during spawnSync/execSync blocking
|
|
35
|
+
process.stdout.write(`\r${SPINNER_FRAMES[0]} ${message}`);
|
|
36
|
+
i++;
|
|
49
37
|
const timer = setInterval(() => {
|
|
50
38
|
process.stdout.write(`\r${SPINNER_FRAMES[i % SPINNER_FRAMES.length]} ${message}`);
|
|
51
39
|
i++;
|
|
@@ -58,6 +46,22 @@ function createSpinner(message) {
|
|
|
58
46
|
},
|
|
59
47
|
};
|
|
60
48
|
}
|
|
49
|
+
if (process.platform !== 'darwin' && process.platform !== 'linux') {
|
|
50
|
+
console.error(`[tsunagi] Unsupported platform: ${process.platform}`);
|
|
51
|
+
console.error('[tsunagi] Tsunagi currently supports macOS and Linux only.');
|
|
52
|
+
process.exit(1);
|
|
53
|
+
}
|
|
54
|
+
let spinner = createSpinner('Initializing...');
|
|
55
|
+
acquireSingleInstanceLock();
|
|
56
|
+
const DIST_DIR = path.dirname(fileURLToPath(import.meta.url));
|
|
57
|
+
const PACKAGE_ROOT = path.resolve(DIST_DIR, '..');
|
|
58
|
+
const AUTO_MIGRATE_JS = path.join(DIST_DIR, 'auto-migrate.js');
|
|
59
|
+
const FASTIFY_ENTRY_JS = path.join(DIST_DIR, 'server', 'index.js');
|
|
60
|
+
const NEXT_STANDALONE_ENTRY = path.join(PACKAGE_ROOT, '.next', 'standalone', 'apps', 'web', 'server.js');
|
|
61
|
+
const DOCS_DIR = path.join(PACKAGE_ROOT, 'docs');
|
|
62
|
+
const DOCS_PORT = 2793;
|
|
63
|
+
const isDebug = !!process.env.TSUNAGI_DEBUG;
|
|
64
|
+
const isDocker = fs.existsSync('/.dockerenv');
|
|
61
65
|
// ---------------------------------------------------------------------------
|
|
62
66
|
// ASCII art
|
|
63
67
|
// ---------------------------------------------------------------------------
|
|
@@ -96,8 +100,7 @@ runAutoMigrate();
|
|
|
96
100
|
// ---------------------------------------------------------------------------
|
|
97
101
|
// Phase 2: Plugin lifecycle
|
|
98
102
|
// ---------------------------------------------------------------------------
|
|
99
|
-
|
|
100
|
-
console.log(pluginResult === 'clean' ? 'clean installed tsunagi plugin' : 'installed tsunagi plugin');
|
|
103
|
+
ensureCleanPluginState();
|
|
101
104
|
// ---------------------------------------------------------------------------
|
|
102
105
|
// Docs static file server
|
|
103
106
|
// ---------------------------------------------------------------------------
|
|
@@ -179,7 +182,6 @@ function verifyArtifact(p, label) {
|
|
|
179
182
|
verifyArtifact(FASTIFY_ENTRY_JS, 'Fastify server artifact');
|
|
180
183
|
verifyArtifact(NEXT_STANDALONE_ENTRY, 'Next.js standalone artifact');
|
|
181
184
|
const PORT = process.env.PORT ?? '2791';
|
|
182
|
-
const spinner = createSpinner('Initializing...');
|
|
183
185
|
const fastifyChild = spawn(process.execPath, [FASTIFY_ENTRY_JS], {
|
|
184
186
|
stdio: ['inherit', 'pipe', 'pipe'],
|
|
185
187
|
cwd: PACKAGE_ROOT,
|
|
@@ -255,6 +257,7 @@ function shutdown(code) {
|
|
|
255
257
|
return;
|
|
256
258
|
shuttingDown = true;
|
|
257
259
|
spinner.stop();
|
|
260
|
+
const cleanupSpinner = createSpinner('Cleaning up...');
|
|
258
261
|
for (const child of [fastifyChild, nextChild]) {
|
|
259
262
|
if (child && !child.killed && child.exitCode === null) {
|
|
260
263
|
try {
|
|
@@ -267,6 +270,7 @@ function shutdown(code) {
|
|
|
267
270
|
}
|
|
268
271
|
docsServer?.close();
|
|
269
272
|
cleanupPluginState();
|
|
273
|
+
cleanupSpinner.stop();
|
|
270
274
|
process.exit(code);
|
|
271
275
|
}
|
|
272
276
|
process.on('SIGINT', () => shutdown(0));
|
package/package.json
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|