@saidulbadhon/jssm-cli 1.7.0 → 1.8.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/dist/index.js +28 -110
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -3989,7 +3989,11 @@ import { join as join2 } from "path";
|
|
|
3989
3989
|
import { homedir as homedir2 } from "os";
|
|
3990
3990
|
|
|
3991
3991
|
// src/shared/constants.ts
|
|
3992
|
-
var
|
|
3992
|
+
var PROD_HOST = "https://jssm-api.jutsu.ai/api";
|
|
3993
|
+
var DEV_HOST = "http://localhost:3000/api";
|
|
3994
|
+
function getHost() {
|
|
3995
|
+
return process.env.NODE_ENV === "development" ? DEV_HOST : PROD_HOST;
|
|
3996
|
+
}
|
|
3993
3997
|
var DEFAULT_NAMESPACE = "jssm";
|
|
3994
3998
|
var CONFIG_DIR = ".jssm";
|
|
3995
3999
|
var CONFIG_FILE = "config";
|
|
@@ -4109,7 +4113,7 @@ async function resolveConfig() {
|
|
|
4109
4113
|
}
|
|
4110
4114
|
const resolved = {
|
|
4111
4115
|
project: projectConfig.project,
|
|
4112
|
-
host:
|
|
4116
|
+
host: getHost(),
|
|
4113
4117
|
namespace: projectConfig.namespace || globalConfig.namespace || DEFAULT_NAMESPACE,
|
|
4114
4118
|
authToken
|
|
4115
4119
|
};
|
|
@@ -4120,11 +4124,6 @@ function validateResolvedConfig(config) {
|
|
|
4120
4124
|
if (!config.project) {
|
|
4121
4125
|
errors.push("Project name is required");
|
|
4122
4126
|
}
|
|
4123
|
-
if (!config.host) {
|
|
4124
|
-
errors.push(
|
|
4125
|
-
"Host URL is required (set globally with: jssm config set host <url>)"
|
|
4126
|
-
);
|
|
4127
|
-
}
|
|
4128
4127
|
if (!config.authToken) {
|
|
4129
4128
|
errors.push("Not logged in. Run: jssm login");
|
|
4130
4129
|
}
|
|
@@ -4365,13 +4364,7 @@ async function initCommand(args2) {
|
|
|
4365
4364
|
}
|
|
4366
4365
|
console.log(`\u2705 Logged in as ${authData.user.email}
|
|
4367
4366
|
`);
|
|
4368
|
-
const
|
|
4369
|
-
const host = flags.host || flags.h || globalConfig.host;
|
|
4370
|
-
if (!host) {
|
|
4371
|
-
console.error("\u274C Host URL is required");
|
|
4372
|
-
console.error("\u{1F4A1} Set it globally: jssm config set host <url>");
|
|
4373
|
-
process.exit(1);
|
|
4374
|
-
}
|
|
4367
|
+
const host = getHost();
|
|
4375
4368
|
const authToken = authData.token;
|
|
4376
4369
|
console.log("\u{1F50D} Analyzing repository...");
|
|
4377
4370
|
const cwd = process.cwd();
|
|
@@ -4527,12 +4520,10 @@ Upload to ${projectName}?`,
|
|
|
4527
4520
|
}
|
|
4528
4521
|
}
|
|
4529
4522
|
}
|
|
4523
|
+
const globalConfig = await loadGlobalConfig();
|
|
4530
4524
|
const projectConfig = {
|
|
4531
4525
|
project: projectName
|
|
4532
4526
|
};
|
|
4533
|
-
if (flags.host && flags.host !== globalConfig.host) {
|
|
4534
|
-
projectConfig.host = flags.host;
|
|
4535
|
-
}
|
|
4536
4527
|
if (flags.namespace && flags.namespace !== globalConfig.namespace) {
|
|
4537
4528
|
projectConfig.namespace = flags.namespace;
|
|
4538
4529
|
}
|
|
@@ -5233,12 +5224,10 @@ async function createProjectCommand(args2) {
|
|
|
5233
5224
|
}
|
|
5234
5225
|
}
|
|
5235
5226
|
const name = flags.n || flags.name || args2[0];
|
|
5236
|
-
const host = flags.host;
|
|
5237
5227
|
if (!name) {
|
|
5238
|
-
console.error("Usage: jssm project create <name>
|
|
5228
|
+
console.error("Usage: jssm project create <name>");
|
|
5239
5229
|
console.error("\nOptions:");
|
|
5240
5230
|
console.error(" -n, --name Project name");
|
|
5241
|
-
console.error(" --host API host URL (optional if config exists)");
|
|
5242
5231
|
process.exit(1);
|
|
5243
5232
|
}
|
|
5244
5233
|
const authToken = await getAuthToken();
|
|
@@ -5247,17 +5236,10 @@ async function createProjectCommand(args2) {
|
|
|
5247
5236
|
console.error("\u{1F4A1} Run: jssm login");
|
|
5248
5237
|
process.exit(1);
|
|
5249
5238
|
}
|
|
5250
|
-
const
|
|
5251
|
-
const projectConfig = await loadProjectConfig();
|
|
5252
|
-
const finalHost = host || projectConfig?.host || globalConfig.host;
|
|
5253
|
-
if (!finalHost) {
|
|
5254
|
-
console.error("\u274C Host is required");
|
|
5255
|
-
console.error("\u{1F4A1} Set globally: jssm config set host <url>");
|
|
5256
|
-
process.exit(1);
|
|
5257
|
-
}
|
|
5239
|
+
const host = getHost();
|
|
5258
5240
|
try {
|
|
5259
5241
|
console.log(`\u{1F4E6} Creating project "${name}"...`);
|
|
5260
|
-
const project = await createProject(
|
|
5242
|
+
const project = await createProject(host, authToken, name);
|
|
5261
5243
|
console.log(`\u2705 Project "${name}" created successfully`);
|
|
5262
5244
|
console.log(` ID: ${project._id}`);
|
|
5263
5245
|
console.log(` Created: ${new Date(project.createdAt).toLocaleString()}`);
|
|
@@ -5281,14 +5263,7 @@ async function listProjectsCommand() {
|
|
|
5281
5263
|
console.error("\u{1F4A1} Run: jssm login");
|
|
5282
5264
|
process.exit(1);
|
|
5283
5265
|
}
|
|
5284
|
-
const
|
|
5285
|
-
const projectConfig = await loadProjectConfig();
|
|
5286
|
-
const host = projectConfig?.host || globalConfig.host;
|
|
5287
|
-
if (!host) {
|
|
5288
|
-
console.error("\u274C Host is required");
|
|
5289
|
-
console.error("\u{1F4A1} Set globally: jssm config set host <url>");
|
|
5290
|
-
process.exit(1);
|
|
5291
|
-
}
|
|
5266
|
+
const host = getHost();
|
|
5292
5267
|
try {
|
|
5293
5268
|
console.log("\u{1F4E6} Fetching projects...\n");
|
|
5294
5269
|
const projects = await getProjects(host, authToken);
|
|
@@ -5362,9 +5337,6 @@ async function statusCommand() {
|
|
|
5362
5337
|
if (Object.keys(globalConfig).length === 0) {
|
|
5363
5338
|
console.log(" (no global config set)");
|
|
5364
5339
|
} else {
|
|
5365
|
-
if (globalConfig.host) {
|
|
5366
|
-
console.log(` Host: ${globalConfig.host}`);
|
|
5367
|
-
}
|
|
5368
5340
|
if (globalConfig.namespace) {
|
|
5369
5341
|
console.log(` Namespace: ${globalConfig.namespace}`);
|
|
5370
5342
|
}
|
|
@@ -5384,9 +5356,8 @@ async function statusCommand() {
|
|
|
5384
5356
|
console.log("\u{1F4C2} Project Configuration");
|
|
5385
5357
|
console.log(` Location: ${projectConfigPath}`);
|
|
5386
5358
|
console.log(` Project: ${projectConfig.project}`);
|
|
5387
|
-
|
|
5388
|
-
|
|
5389
|
-
console.log(` Host: ${projectConfig.host} (override)`);
|
|
5359
|
+
if (projectConfig.environment) {
|
|
5360
|
+
console.log(` Environment: ${projectConfig.environment}`);
|
|
5390
5361
|
}
|
|
5391
5362
|
if (projectConfig.namespace) {
|
|
5392
5363
|
console.log(` Namespace: ${projectConfig.namespace} (override)`);
|
|
@@ -5396,16 +5367,11 @@ async function statusCommand() {
|
|
|
5396
5367
|
if (resolved) {
|
|
5397
5368
|
console.log("\u{1F517} Resolved Configuration (merged)");
|
|
5398
5369
|
console.log(` Project: ${resolved.project}`);
|
|
5399
|
-
console.log(`
|
|
5400
|
-
console.log(` Host: ${resolved.host || "(not set)"}`);
|
|
5370
|
+
console.log(` Host: ${resolved.host} (hardcoded based on NODE_ENV)`);
|
|
5401
5371
|
console.log(` Namespace: ${resolved.namespace}`);
|
|
5402
5372
|
console.log(
|
|
5403
5373
|
` Auth: ${resolved.authToken ? "\u2705 Authenticated" : "\u274C Not authenticated"}`
|
|
5404
5374
|
);
|
|
5405
|
-
if (!resolved.host) {
|
|
5406
|
-
console.log("\n\u26A0\uFE0F Host is not configured");
|
|
5407
|
-
console.log(" Set globally: jssm config set host <url>");
|
|
5408
|
-
}
|
|
5409
5375
|
if (!resolved.authToken) {
|
|
5410
5376
|
console.log("\n\u26A0\uFE0F Not logged in");
|
|
5411
5377
|
console.log(" Run: jssm login");
|
|
@@ -5416,7 +5382,7 @@ async function statusCommand() {
|
|
|
5416
5382
|
}
|
|
5417
5383
|
|
|
5418
5384
|
// src/commands/config.ts
|
|
5419
|
-
var VALID_KEYS = ["
|
|
5385
|
+
var VALID_KEYS = ["namespace"];
|
|
5420
5386
|
async function configCommand(args2) {
|
|
5421
5387
|
const subcommand = args2[0];
|
|
5422
5388
|
switch (subcommand) {
|
|
@@ -5540,12 +5506,11 @@ Commands:
|
|
|
5540
5506
|
path Show configuration file path
|
|
5541
5507
|
|
|
5542
5508
|
Valid Keys:
|
|
5543
|
-
host Default API server URL
|
|
5544
5509
|
namespace Default SSM namespace (default: jssm)
|
|
5545
5510
|
|
|
5546
5511
|
Examples:
|
|
5547
|
-
jssm config set
|
|
5548
|
-
jssm config get
|
|
5512
|
+
jssm config set namespace my-namespace
|
|
5513
|
+
jssm config get namespace
|
|
5549
5514
|
jssm config list
|
|
5550
5515
|
|
|
5551
5516
|
Note:
|
|
@@ -5564,13 +5529,7 @@ async function loginCommand() {
|
|
|
5564
5529
|
console.log(`\u{1F4A1} Use 'jssm logout' to logout`);
|
|
5565
5530
|
return;
|
|
5566
5531
|
}
|
|
5567
|
-
|
|
5568
|
-
let host = globalConfig.host;
|
|
5569
|
-
if (!host) {
|
|
5570
|
-
globalConfig.host = DEFAULT_HOST;
|
|
5571
|
-
await saveGlobalConfig(globalConfig);
|
|
5572
|
-
host = DEFAULT_HOST;
|
|
5573
|
-
}
|
|
5532
|
+
const host = getHost();
|
|
5574
5533
|
console.log("\u{1F510} Login to JSSM\n");
|
|
5575
5534
|
try {
|
|
5576
5535
|
const email = await dist_default4({
|
|
@@ -5604,22 +5563,6 @@ async function loginCommand() {
|
|
|
5604
5563
|
} else {
|
|
5605
5564
|
console.error(`
|
|
5606
5565
|
\u274C Login failed: ${result.error}`);
|
|
5607
|
-
if (result.isConnectionError && host !== DEFAULT_HOST) {
|
|
5608
|
-
console.log(`
|
|
5609
|
-
\u26A0\uFE0F Current host: ${host}`);
|
|
5610
|
-
console.log(` Default host: ${DEFAULT_HOST}`);
|
|
5611
|
-
const resetToDefault = await dist_default3({
|
|
5612
|
-
message: "Would you like to reset the host to default?",
|
|
5613
|
-
default: false
|
|
5614
|
-
});
|
|
5615
|
-
if (resetToDefault) {
|
|
5616
|
-
globalConfig.host = DEFAULT_HOST;
|
|
5617
|
-
await saveGlobalConfig(globalConfig);
|
|
5618
|
-
console.log(`
|
|
5619
|
-
\u2705 Host reset to default: ${DEFAULT_HOST}`);
|
|
5620
|
-
console.log(`\u{1F4A1} Please try logging in again with 'jssm login'`);
|
|
5621
|
-
}
|
|
5622
|
-
}
|
|
5623
5566
|
process.exit(1);
|
|
5624
5567
|
}
|
|
5625
5568
|
} catch (error) {
|
|
@@ -5644,13 +5587,7 @@ async function registerCommand() {
|
|
|
5644
5587
|
);
|
|
5645
5588
|
return;
|
|
5646
5589
|
}
|
|
5647
|
-
|
|
5648
|
-
let host = globalConfig.host;
|
|
5649
|
-
if (!host) {
|
|
5650
|
-
globalConfig.host = DEFAULT_HOST;
|
|
5651
|
-
await saveGlobalConfig(globalConfig);
|
|
5652
|
-
host = DEFAULT_HOST;
|
|
5653
|
-
}
|
|
5590
|
+
const host = getHost();
|
|
5654
5591
|
console.log("\u{1F4DD} Register for JSSM\n");
|
|
5655
5592
|
try {
|
|
5656
5593
|
const name = await dist_default4({
|
|
@@ -5704,22 +5641,6 @@ async function registerCommand() {
|
|
|
5704
5641
|
} else {
|
|
5705
5642
|
console.error(`
|
|
5706
5643
|
\u274C Registration failed: ${result.error}`);
|
|
5707
|
-
if (result.isConnectionError && host !== DEFAULT_HOST) {
|
|
5708
|
-
console.log(`
|
|
5709
|
-
\u26A0\uFE0F Current host: ${host}`);
|
|
5710
|
-
console.log(` Default host: ${DEFAULT_HOST}`);
|
|
5711
|
-
const resetToDefault = await dist_default3({
|
|
5712
|
-
message: "Would you like to reset the host to default?",
|
|
5713
|
-
default: false
|
|
5714
|
-
});
|
|
5715
|
-
if (resetToDefault) {
|
|
5716
|
-
globalConfig.host = DEFAULT_HOST;
|
|
5717
|
-
await saveGlobalConfig(globalConfig);
|
|
5718
|
-
console.log(`
|
|
5719
|
-
\u2705 Host reset to default: ${DEFAULT_HOST}`);
|
|
5720
|
-
console.log(`\u{1F4A1} Please try registering again with 'jssm register'`);
|
|
5721
|
-
}
|
|
5722
|
-
}
|
|
5723
5644
|
process.exit(1);
|
|
5724
5645
|
}
|
|
5725
5646
|
} catch (error) {
|
|
@@ -5750,8 +5671,7 @@ init_auth();
|
|
|
5750
5671
|
var import_chalk = __toESM(require_source(), 1);
|
|
5751
5672
|
async function createToken(args2) {
|
|
5752
5673
|
const auth = await loadAuthData();
|
|
5753
|
-
const
|
|
5754
|
-
const host = globalConfig.host || DEFAULT_HOST;
|
|
5674
|
+
const host = getHost();
|
|
5755
5675
|
if (!auth) {
|
|
5756
5676
|
console.error(import_chalk.default.red("Not logged in. Run: jssm login"));
|
|
5757
5677
|
process.exit(1);
|
|
@@ -5847,8 +5767,7 @@ async function createToken(args2) {
|
|
|
5847
5767
|
}
|
|
5848
5768
|
async function listTokens(args2) {
|
|
5849
5769
|
const auth = await loadAuthData();
|
|
5850
|
-
const
|
|
5851
|
-
const host = globalConfig.host || DEFAULT_HOST;
|
|
5770
|
+
const host = getHost();
|
|
5852
5771
|
if (!auth) {
|
|
5853
5772
|
console.error(import_chalk.default.red("Not logged in. Run: jssm login"));
|
|
5854
5773
|
process.exit(1);
|
|
@@ -5929,8 +5848,7 @@ Service tokens for ${project}/${environment}:
|
|
|
5929
5848
|
}
|
|
5930
5849
|
async function revokeToken(args2) {
|
|
5931
5850
|
const auth = await loadAuthData();
|
|
5932
|
-
const
|
|
5933
|
-
const host = globalConfig.host || DEFAULT_HOST;
|
|
5851
|
+
const host = getHost();
|
|
5934
5852
|
if (!auth) {
|
|
5935
5853
|
console.error(import_chalk.default.red("Not logged in. Run: jssm login"));
|
|
5936
5854
|
process.exit(1);
|
|
@@ -6030,7 +5948,7 @@ ${import_chalk.default.bold("Usage in Docker:")}
|
|
|
6030
5948
|
|
|
6031
5949
|
// src/utils/versionCheck.ts
|
|
6032
5950
|
var PACKAGE_NAME = "@saidulbadhon/jssm-cli";
|
|
6033
|
-
var CURRENT_VERSION = "1.
|
|
5951
|
+
var CURRENT_VERSION = "1.8.0";
|
|
6034
5952
|
async function getLatestVersion() {
|
|
6035
5953
|
try {
|
|
6036
5954
|
const response = await fetch(`https://registry.npmjs.org/${PACKAGE_NAME}`);
|
|
@@ -6228,8 +6146,7 @@ Commands:
|
|
|
6228
6146
|
--version Show CLI version
|
|
6229
6147
|
|
|
6230
6148
|
Setup (recommended):
|
|
6231
|
-
# 1.
|
|
6232
|
-
jssm config set host http://localhost:3000
|
|
6149
|
+
# 1. Login (host is automatically configured based on NODE_ENV)
|
|
6233
6150
|
jssm register # or: jssm login
|
|
6234
6151
|
|
|
6235
6152
|
# 2. Initialize a project directory (creates .jssm file)
|
|
@@ -6247,7 +6164,7 @@ Quick Start (all-in-one):
|
|
|
6247
6164
|
Advanced:
|
|
6248
6165
|
# Manage global configuration
|
|
6249
6166
|
jssm config list
|
|
6250
|
-
jssm config set
|
|
6167
|
+
jssm config set namespace my-namespace
|
|
6251
6168
|
|
|
6252
6169
|
# Create project
|
|
6253
6170
|
jssm project create my-app
|
|
@@ -6267,7 +6184,8 @@ Container Secrets (Docker/ECS/EKS):
|
|
|
6267
6184
|
CMD ["node", "app.js"]
|
|
6268
6185
|
|
|
6269
6186
|
Note:
|
|
6270
|
-
-
|
|
6187
|
+
- Host is automatically configured based on NODE_ENV (dev: localhost:3000, prod: jssm-api.jutsu.ai)
|
|
6188
|
+
- Global config (~/.jssm/config) stores preferences (namespace, etc.)
|
|
6271
6189
|
- Auth data (~/.jssm/auth) stores your login session
|
|
6272
6190
|
- Project config (.jssm) stores project name
|
|
6273
6191
|
- Add .jssm to .gitignore (may contain sensitive overrides)
|