@taggr/cli 1.0.2 → 1.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/README.md +1 -1
- package/dist/commands/list.d.ts.map +1 -1
- package/dist/commands/list.js +11 -4
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +22 -5
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/pull.d.ts.map +1 -1
- package/dist/commands/pull.js +29 -7
- package/dist/commands/pull.js.map +1 -1
- package/dist/commands/whoami.d.ts.map +1 -1
- package/dist/commands/whoami.js +25 -5
- package/dist/commands/whoami.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/utils/api.d.ts.map +1 -1
- package/dist/utils/api.js +110 -12
- package/dist/utils/api.js.map +1 -1
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +15 -5
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/generator.d.ts.map +1 -1
- package/dist/utils/generator.js +66 -11
- package/dist/utils/generator.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAKA,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAKA,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAoDjD"}
|
package/dist/commands/list.js
CHANGED
|
@@ -7,7 +7,11 @@ export async function listCommand() {
|
|
|
7
7
|
try {
|
|
8
8
|
const config = await requireAuth();
|
|
9
9
|
initApi(config);
|
|
10
|
-
const
|
|
10
|
+
const labelsResponse = await getLabels();
|
|
11
|
+
if (!labelsResponse || !labelsResponse.labels || typeof labelsResponse.count !== 'number') {
|
|
12
|
+
throw new Error('Invalid response from server: labels data not found');
|
|
13
|
+
}
|
|
14
|
+
const { labels, count } = labelsResponse;
|
|
11
15
|
spinner.stop();
|
|
12
16
|
if (count === 0) {
|
|
13
17
|
console.log(chalk.yellow('\nNo labels found.'));
|
|
@@ -21,9 +25,12 @@ export async function listCommand() {
|
|
|
21
25
|
const status = label.isPublished
|
|
22
26
|
? chalk.green('●')
|
|
23
27
|
: chalk.yellow('○');
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
28
|
+
const labelName = label.name || 'Unnamed';
|
|
29
|
+
const labelVersion = label.version || '0.0.0';
|
|
30
|
+
console.log(` ${status} ${chalk.white(labelName)} ${chalk.dim(`v${labelVersion}`)}`);
|
|
31
|
+
if (label.description && typeof label.description === 'string') {
|
|
32
|
+
const desc = label.description.substring(0, 60);
|
|
33
|
+
console.log(chalk.dim(` ${desc}${label.description.length > 60 ? '...' : ''}`));
|
|
27
34
|
}
|
|
28
35
|
}
|
|
29
36
|
console.log();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAErD,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,MAAM,OAAO,GAAG,GAAG,CAAC,oBAAoB,CAAC,CAAC,KAAK,EAAE,CAAC;IAElD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,WAAW,EAAE,CAAC;QACnC,OAAO,CAAC,MAAM,CAAC,CAAC;QAEhB,MAAM,
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAQA,wBAAsB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAQA,wBAAsB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAiD3F"}
|
package/dist/commands/login.js
CHANGED
|
@@ -3,22 +3,39 @@ import ora from 'ora';
|
|
|
3
3
|
import { saveConfig } from '../utils/config.js';
|
|
4
4
|
import { initApi, whoami } from '../utils/api.js';
|
|
5
5
|
// Default to production API URL, fallback to localhost for development
|
|
6
|
-
const DEFAULT_API_URL = process.env.TAGGR_API_URL || 'https://taggr
|
|
6
|
+
const DEFAULT_API_URL = process.env.TAGGR_API_URL || 'https://taggr.onrender.com/api';
|
|
7
7
|
export async function loginCommand(apiKey, options) {
|
|
8
|
+
// Validate API key is provided
|
|
9
|
+
if (!apiKey || typeof apiKey !== 'string' || apiKey.trim().length === 0) {
|
|
10
|
+
console.error(chalk.red('Error: API key is required'));
|
|
11
|
+
console.log();
|
|
12
|
+
console.log(chalk.dim('Usage: taggr login <API_KEY> [--url <API_URL>]'));
|
|
13
|
+
process.exit(1);
|
|
14
|
+
}
|
|
8
15
|
const spinner = ora('Verifying API key...').start();
|
|
9
16
|
try {
|
|
10
17
|
const apiUrl = options.url || DEFAULT_API_URL;
|
|
11
18
|
// Initialize API with the provided key
|
|
12
19
|
initApi({ apiKey, apiUrl });
|
|
13
20
|
// Verify the API key by calling whoami
|
|
14
|
-
const
|
|
21
|
+
const whoamiResponse = await whoami();
|
|
22
|
+
if (!whoamiResponse || !whoamiResponse.user) {
|
|
23
|
+
throw new Error('Invalid response from server: user data not found');
|
|
24
|
+
}
|
|
25
|
+
const { user } = whoamiResponse;
|
|
26
|
+
// Validate user object has required properties
|
|
27
|
+
if (!user.uid || !user.email) {
|
|
28
|
+
throw new Error('Invalid user data: missing required fields (uid, email)');
|
|
29
|
+
}
|
|
15
30
|
// Save config
|
|
16
31
|
await saveConfig({ apiKey, apiUrl });
|
|
17
32
|
spinner.succeed(chalk.green('Successfully logged in!'));
|
|
18
33
|
console.log();
|
|
19
|
-
console.log(chalk.dim(' User: ') + chalk.white(user.displayName || user.email));
|
|
20
|
-
console.log(chalk.dim(' Email: ') + chalk.white(user.email));
|
|
21
|
-
|
|
34
|
+
console.log(chalk.dim(' User: ') + chalk.white(user.displayName || user.email || 'Not set'));
|
|
35
|
+
console.log(chalk.dim(' Email: ') + chalk.white(user.email || 'Not set'));
|
|
36
|
+
// Safely access stats
|
|
37
|
+
const totalLabels = user.stats?.totalLabels ?? 0;
|
|
38
|
+
console.log(chalk.dim(' Labels: ') + chalk.white(totalLabels.toString()));
|
|
22
39
|
console.log();
|
|
23
40
|
console.log(chalk.dim('You can now use "taggr pull" to fetch your labels.'));
|
|
24
41
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,UAAU,EAAa,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAElD,uEAAuE;AACvE,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../../src/commands/pull.ts"],"names":[],"mappings":"AAOA,UAAU,WAAW;IACnB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../../src/commands/pull.ts"],"names":[],"mappings":"AAOA,UAAU,WAAW;IACnB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA+E/F"}
|
package/dist/commands/pull.js
CHANGED
|
@@ -11,7 +11,11 @@ export async function pullCommand(name, options) {
|
|
|
11
11
|
if (options.all) {
|
|
12
12
|
// Pull all labels
|
|
13
13
|
spinner.text = 'Fetching all labels...';
|
|
14
|
-
const
|
|
14
|
+
const labelsResponse = await getLabels();
|
|
15
|
+
if (!labelsResponse || !labelsResponse.labels || typeof labelsResponse.count !== 'number') {
|
|
16
|
+
throw new Error('Invalid response from server: labels data not found');
|
|
17
|
+
}
|
|
18
|
+
const { labels, count } = labelsResponse;
|
|
15
19
|
if (count === 0) {
|
|
16
20
|
spinner.warn(chalk.yellow('No labels found.'));
|
|
17
21
|
console.log(chalk.dim('Create labels at https://taggr.dev'));
|
|
@@ -31,13 +35,22 @@ export async function pullCommand(name, options) {
|
|
|
31
35
|
else if (name) {
|
|
32
36
|
// Pull single label
|
|
33
37
|
spinner.text = `Fetching label "${name}"...`;
|
|
34
|
-
const
|
|
38
|
+
const labelResponse = await getLabelByName(name);
|
|
39
|
+
if (!labelResponse || !labelResponse.label) {
|
|
40
|
+
throw new Error('Invalid response from server: label data not found');
|
|
41
|
+
}
|
|
42
|
+
const { label } = labelResponse;
|
|
35
43
|
spinner.text = 'Writing file...';
|
|
36
44
|
const filePath = await writeLabelFile(label);
|
|
37
45
|
// Update files to include this label
|
|
38
|
-
const
|
|
46
|
+
const allLabelsResponse = await getLabels();
|
|
47
|
+
if (!allLabelsResponse || !allLabelsResponse.labels) {
|
|
48
|
+
throw new Error('Invalid response from server: labels data not found');
|
|
49
|
+
}
|
|
50
|
+
const { labels: allLabels } = allLabelsResponse;
|
|
39
51
|
await updateIndexFile(allLabels);
|
|
40
|
-
|
|
52
|
+
const labelName = label.name || 'label';
|
|
53
|
+
spinner.succeed(chalk.green(`Pulled "${labelName}" successfully!`));
|
|
41
54
|
console.log();
|
|
42
55
|
console.log(chalk.dim('File updated:'));
|
|
43
56
|
console.log(chalk.dim(` ${filePath}`));
|
|
@@ -64,7 +77,8 @@ function printUsageInstructions(labels) {
|
|
|
64
77
|
console.log();
|
|
65
78
|
if (labels.length === 1) {
|
|
66
79
|
const label = labels[0];
|
|
67
|
-
const
|
|
80
|
+
const labelName = label.name || 'label';
|
|
81
|
+
const varName = toCamelCase(labelName);
|
|
68
82
|
console.log(chalk.dim(' // Import labels'));
|
|
69
83
|
console.log(chalk.white(` import labels from './taggr/labels.json';`));
|
|
70
84
|
console.log();
|
|
@@ -77,11 +91,19 @@ function printUsageInstructions(labels) {
|
|
|
77
91
|
console.log();
|
|
78
92
|
console.log(chalk.dim(' // Use the values'));
|
|
79
93
|
const firstLabel = labels[0];
|
|
80
|
-
|
|
94
|
+
const labelName = firstLabel?.name || 'label';
|
|
95
|
+
console.log(chalk.white(` console.log(labels.${toCamelCase(labelName)});`));
|
|
81
96
|
}
|
|
82
97
|
console.log();
|
|
83
98
|
}
|
|
84
99
|
function toCamelCase(str) {
|
|
85
|
-
|
|
100
|
+
if (!str || typeof str !== 'string') {
|
|
101
|
+
return 'label';
|
|
102
|
+
}
|
|
103
|
+
// Remove any invalid characters and convert to camelCase
|
|
104
|
+
return str
|
|
105
|
+
.replace(/[^a-zA-Z0-9-]/g, '') // Remove invalid characters
|
|
106
|
+
.replace(/-([a-z])/g, (_, letter) => letter.toUpperCase())
|
|
107
|
+
.replace(/^[A-Z]/, (match) => match.toLowerCase()); // Ensure first letter is lowercase
|
|
86
108
|
}
|
|
87
109
|
//# sourceMappingURL=pull.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pull.js","sourceRoot":"","sources":["../../src/commands/pull.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAOxF,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAwB,EAAE,OAAoB;IAC9E,MAAM,OAAO,GAAG,GAAG,CAAC,wBAAwB,CAAC,CAAC,KAAK,EAAE,CAAC;IAEtD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,WAAW,EAAE,CAAC;QACnC,OAAO,CAAC,MAAM,CAAC,CAAC;QAEhB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YAChB,kBAAkB;YAClB,OAAO,CAAC,IAAI,GAAG,wBAAwB,CAAC;YACxC,MAAM,
|
|
1
|
+
{"version":3,"file":"pull.js","sourceRoot":"","sources":["../../src/commands/pull.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"whoami.d.ts","sourceRoot":"","sources":["../../src/commands/whoami.ts"],"names":[],"mappings":"AAKA,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"whoami.d.ts","sourceRoot":"","sources":["../../src/commands/whoami.ts"],"names":[],"mappings":"AAKA,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAgDnD"}
|
package/dist/commands/whoami.js
CHANGED
|
@@ -7,16 +7,36 @@ export async function whoamiCommand() {
|
|
|
7
7
|
try {
|
|
8
8
|
const config = await requireAuth();
|
|
9
9
|
initApi(config);
|
|
10
|
-
const
|
|
10
|
+
const whoamiResponse = await whoami();
|
|
11
|
+
if (!whoamiResponse || !whoamiResponse.user) {
|
|
12
|
+
throw new Error('Invalid response from server: user data not found');
|
|
13
|
+
}
|
|
14
|
+
const { user } = whoamiResponse;
|
|
15
|
+
// Validate user object has required properties
|
|
16
|
+
if (!user.uid || !user.email) {
|
|
17
|
+
throw new Error('Invalid user data: missing required fields (uid, email)');
|
|
18
|
+
}
|
|
11
19
|
spinner.stop();
|
|
12
20
|
console.log();
|
|
13
21
|
console.log(chalk.bold('Logged in as:'));
|
|
14
22
|
console.log();
|
|
15
23
|
console.log(chalk.dim(' Name: ') + chalk.white(user.displayName || 'Not set'));
|
|
16
|
-
console.log(chalk.dim(' Email: ') + chalk.white(user.email));
|
|
17
|
-
console.log(chalk.dim(' UID: ') + chalk.white(user.uid));
|
|
18
|
-
|
|
19
|
-
|
|
24
|
+
console.log(chalk.dim(' Email: ') + chalk.white(user.email || 'Not set'));
|
|
25
|
+
console.log(chalk.dim(' UID: ') + chalk.white(user.uid || 'Not set'));
|
|
26
|
+
// Safely access stats
|
|
27
|
+
const totalLabels = user.stats?.totalLabels ?? 0;
|
|
28
|
+
console.log(chalk.dim(' Labels: ') + chalk.white(totalLabels.toString()));
|
|
29
|
+
// Safely format date
|
|
30
|
+
let joinedDate = 'Unknown';
|
|
31
|
+
if (user.createdAt) {
|
|
32
|
+
try {
|
|
33
|
+
joinedDate = new Date(user.createdAt).toLocaleDateString();
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
joinedDate = 'Invalid date';
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
console.log(chalk.dim(' Joined: ') + chalk.white(joinedDate));
|
|
20
40
|
console.log();
|
|
21
41
|
}
|
|
22
42
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../src/commands/whoami.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAElD,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,MAAM,OAAO,GAAG,GAAG,CAAC,uBAAuB,CAAC,CAAC,KAAK,EAAE,CAAC;IAErD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,WAAW,EAAE,CAAC;QACnC,OAAO,CAAC,MAAM,CAAC,CAAC;QAEhB,MAAM,EAAE,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../src/commands/whoami.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAElD,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,MAAM,OAAO,GAAG,GAAG,CAAC,uBAAuB,CAAC,CAAC,KAAK,EAAE,CAAC;IAErD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,WAAW,EAAE,CAAC;QACnC,OAAO,CAAC,MAAM,CAAC,CAAC;QAEhB,MAAM,cAAc,GAAG,MAAM,MAAM,EAAE,CAAC;QAEtC,IAAI,CAAC,cAAc,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACvE,CAAC;QAED,MAAM,EAAE,IAAI,EAAE,GAAG,cAAc,CAAC;QAEhC,+CAA+C;QAC/C,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;QAC7E,CAAC;QAED,OAAO,CAAC,IAAI,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;QACzC,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,IAAI,SAAS,CAAC,CAAC,CAAC;QAClF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,SAAS,CAAC,CAAC,CAAC;QAC5E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,SAAS,CAAC,CAAC,CAAC;QAE1E,sBAAsB;QACtB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,EAAE,WAAW,IAAI,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAE3E,qBAAqB;QACrB,IAAI,UAAU,GAAG,SAAS,CAAC;QAC3B,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC;gBACH,UAAU,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,kBAAkB,EAAE,CAAC;YAC7D,CAAC;YAAC,MAAM,CAAC;gBACP,UAAU,GAAG,cAAc,CAAC;YAC9B,CAAC;QACH,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;QAC/D,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC,CAAC;QACrD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -33,7 +33,7 @@ program
|
|
|
33
33
|
program
|
|
34
34
|
.command('login <api-key>')
|
|
35
35
|
.description('Authenticate with your Taggr API key')
|
|
36
|
-
.option('-u, --url <url>', 'API URL (default: https://taggr
|
|
36
|
+
.option('-u, --url <url>', 'API URL (default: https://taggr.onrender.com/api)')
|
|
37
37
|
.action(loginCommand);
|
|
38
38
|
// Logout command
|
|
39
39
|
program
|
package/dist/index.js.map
CHANGED
|
@@ -1 +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,OAAO,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,iCAAiC;AACjC,oFAAoF;AACpF,qEAAqE;AACrE,IAAI,OAAO,GAAG,OAAO,CAAC,CAAC,mBAAmB;AAC1C,IAAI,CAAC;IACH,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACtC,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;IAC3D,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;IACvE,OAAO,GAAG,WAAW,CAAC,OAAO,IAAI,OAAO,CAAC;AAC3C,CAAC;AAAC,MAAM,CAAC;IACP,sDAAsD;IACtD,yEAAyE;AAC3E,CAAC;AAED,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,OAAO,CAAC;KACb,WAAW,CAAC,0DAA0D,CAAC;KACvE,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,gBAAgB;AAChB,OAAO;KACJ,OAAO,CAAC,iBAAiB,CAAC;KAC1B,WAAW,CAAC,sCAAsC,CAAC;KACnD,MAAM,CAAC,iBAAiB,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/api.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/utils/api.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,cAAc,EACd,aAAa,EACb,cAAc,EACd,WAAW,EACZ,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/utils/api.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,cAAc,EACd,aAAa,EACb,cAAc,EACd,WAAW,EACZ,MAAM,aAAa,CAAC;AAyBrB;;GAEG;AACH,wBAAgB,OAAO,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAiBjD;AA2DD;;GAEG;AACH,wBAAsB,MAAM,IAAI,OAAO,CAAC,cAAc,CAAC,CA+BtD;AAED;;GAEG;AACH,wBAAsB,SAAS,IAAI,OAAO,CAAC,cAAc,CAAC,CAgCzD;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CA4BzE"}
|
package/dist/utils/api.js
CHANGED
|
@@ -1,13 +1,39 @@
|
|
|
1
1
|
import axios, { AxiosError } from 'axios';
|
|
2
2
|
let apiClient = null;
|
|
3
|
+
/**
|
|
4
|
+
* Validate API URL format
|
|
5
|
+
*/
|
|
6
|
+
function validateApiUrl(url) {
|
|
7
|
+
if (!url || typeof url !== 'string') {
|
|
8
|
+
throw new Error('API URL must be a non-empty string');
|
|
9
|
+
}
|
|
10
|
+
try {
|
|
11
|
+
const urlObj = new URL(url);
|
|
12
|
+
if (!['http:', 'https:'].includes(urlObj.protocol)) {
|
|
13
|
+
throw new Error('API URL must use http or https protocol');
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
catch (error) {
|
|
17
|
+
if (error instanceof TypeError) {
|
|
18
|
+
throw new Error(`Invalid API URL format: ${url}. Please provide a valid URL (e.g., https://api.example.com/api)`);
|
|
19
|
+
}
|
|
20
|
+
throw error;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
3
23
|
/**
|
|
4
24
|
* Initialize the API client with config
|
|
5
25
|
*/
|
|
6
26
|
export function initApi(config) {
|
|
27
|
+
// Validate API URL
|
|
28
|
+
validateApiUrl(config.apiUrl);
|
|
29
|
+
// Validate API key
|
|
30
|
+
if (!config.apiKey || typeof config.apiKey !== 'string' || config.apiKey.trim().length === 0) {
|
|
31
|
+
throw new Error('API key must be a non-empty string');
|
|
32
|
+
}
|
|
7
33
|
apiClient = axios.create({
|
|
8
34
|
baseURL: config.apiUrl,
|
|
9
35
|
headers: {
|
|
10
|
-
'X-API-Key': config.apiKey,
|
|
36
|
+
'X-API-Key': config.apiKey.trim(),
|
|
11
37
|
'Content-Type': 'application/json',
|
|
12
38
|
},
|
|
13
39
|
timeout: 30000,
|
|
@@ -28,8 +54,17 @@ function getClient() {
|
|
|
28
54
|
function handleError(error) {
|
|
29
55
|
if (error instanceof AxiosError) {
|
|
30
56
|
if (error.response) {
|
|
31
|
-
|
|
32
|
-
|
|
57
|
+
// Check if we got HTML (frontend) instead of JSON (backend)
|
|
58
|
+
const responseData = error.response.data;
|
|
59
|
+
if (typeof responseData === 'string' && (responseData.trim().startsWith('<!doctype') || responseData.trim().startsWith('<!DOCTYPE') || responseData.trim().startsWith('<html'))) {
|
|
60
|
+
throw new Error('Received HTML response instead of JSON. The API URL is pointing to the frontend.\n' +
|
|
61
|
+
'Please ensure:\n' +
|
|
62
|
+
' 1. Your backend is deployed and accessible\n' +
|
|
63
|
+
' 2. Use the --url flag to specify the correct backend API URL\n' +
|
|
64
|
+
' 3. Example: taggr login <API_KEY> --url https://your-backend-url.com/api');
|
|
65
|
+
}
|
|
66
|
+
const data = responseData;
|
|
67
|
+
if (data && typeof data === 'object' && 'error' in data && data.error) {
|
|
33
68
|
throw new Error(data.error.message);
|
|
34
69
|
}
|
|
35
70
|
throw new Error(`API error: ${error.response.status}`);
|
|
@@ -41,16 +76,46 @@ function handleError(error) {
|
|
|
41
76
|
}
|
|
42
77
|
throw error;
|
|
43
78
|
}
|
|
79
|
+
/**
|
|
80
|
+
* Check if response is HTML (indicates wrong URL - hitting frontend instead of backend)
|
|
81
|
+
*/
|
|
82
|
+
function checkForHtmlResponse(data, baseURL) {
|
|
83
|
+
if (typeof data === 'string' && (data.trim().startsWith('<!doctype') || data.trim().startsWith('<!DOCTYPE') || data.trim().startsWith('<html'))) {
|
|
84
|
+
throw new Error('Received HTML response instead of JSON. This usually means:\n' +
|
|
85
|
+
' 1. The API URL is pointing to the frontend instead of the backend\n' +
|
|
86
|
+
' 2. The backend is not deployed or is at a different URL\n' +
|
|
87
|
+
' 3. Please check your backend deployment URL and use --url flag if needed\n' +
|
|
88
|
+
` Current URL: ${baseURL || apiClient?.defaults.baseURL || 'unknown'}`);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
44
91
|
/**
|
|
45
92
|
* Get current user info
|
|
46
93
|
*/
|
|
47
94
|
export async function whoami() {
|
|
48
95
|
try {
|
|
49
|
-
const
|
|
50
|
-
|
|
96
|
+
const client = getClient();
|
|
97
|
+
const response = await client.get('/cli/whoami');
|
|
98
|
+
// Check if we got HTML instead of JSON (wrong URL)
|
|
99
|
+
checkForHtmlResponse(response.data, client.defaults.baseURL);
|
|
100
|
+
// Check if response has the expected structure
|
|
101
|
+
if (!response.data) {
|
|
102
|
+
throw new Error(`Invalid API response: response.data is ${typeof response.data}`);
|
|
103
|
+
}
|
|
104
|
+
// The API returns { success: true, data: { user: {...} } }
|
|
105
|
+
// So response.data is the ApiResponse, and response.data.data is the WhoamiResponse
|
|
106
|
+
const data = response.data.data;
|
|
107
|
+
if (!data) {
|
|
108
|
+
throw new Error(`Invalid API response: response.data.data is ${typeof data}. Full response: ${JSON.stringify(response.data)}`);
|
|
109
|
+
}
|
|
110
|
+
// Ensure the data has a user property
|
|
111
|
+
if (!data.user) {
|
|
112
|
+
throw new Error(`API response missing user property. Response data: ${JSON.stringify(data)}`);
|
|
113
|
+
}
|
|
114
|
+
return data;
|
|
51
115
|
}
|
|
52
116
|
catch (error) {
|
|
53
|
-
handleError
|
|
117
|
+
// handleError always throws, so this will never return normally
|
|
118
|
+
return handleError(error);
|
|
54
119
|
}
|
|
55
120
|
}
|
|
56
121
|
/**
|
|
@@ -58,11 +123,29 @@ export async function whoami() {
|
|
|
58
123
|
*/
|
|
59
124
|
export async function getLabels() {
|
|
60
125
|
try {
|
|
61
|
-
const
|
|
62
|
-
|
|
126
|
+
const client = getClient();
|
|
127
|
+
const response = await client.get('/cli/labels');
|
|
128
|
+
// Check if we got HTML instead of JSON (wrong URL)
|
|
129
|
+
checkForHtmlResponse(response.data, client.defaults.baseURL);
|
|
130
|
+
// Check if response has the expected structure
|
|
131
|
+
if (!response.data) {
|
|
132
|
+
throw new Error(`Invalid API response: response.data is ${typeof response.data}`);
|
|
133
|
+
}
|
|
134
|
+
const data = response.data.data;
|
|
135
|
+
if (!data) {
|
|
136
|
+
throw new Error(`Invalid API response: response.data.data is ${typeof data}. Full response: ${JSON.stringify(response.data)}`);
|
|
137
|
+
}
|
|
138
|
+
// Ensure the data has labels and count properties
|
|
139
|
+
if (!data.labels || !Array.isArray(data.labels)) {
|
|
140
|
+
throw new Error(`API response missing labels array. Response data: ${JSON.stringify(data)}`);
|
|
141
|
+
}
|
|
142
|
+
if (typeof data.count !== 'number') {
|
|
143
|
+
throw new Error(`API response missing count. Response data: ${JSON.stringify(data)}`);
|
|
144
|
+
}
|
|
145
|
+
return data;
|
|
63
146
|
}
|
|
64
147
|
catch (error) {
|
|
65
|
-
handleError(error);
|
|
148
|
+
return handleError(error);
|
|
66
149
|
}
|
|
67
150
|
}
|
|
68
151
|
/**
|
|
@@ -70,11 +153,26 @@ export async function getLabels() {
|
|
|
70
153
|
*/
|
|
71
154
|
export async function getLabelByName(name) {
|
|
72
155
|
try {
|
|
73
|
-
const
|
|
74
|
-
|
|
156
|
+
const client = getClient();
|
|
157
|
+
const response = await client.get(`/cli/labels/${name}`);
|
|
158
|
+
// Check if we got HTML instead of JSON (wrong URL)
|
|
159
|
+
checkForHtmlResponse(response.data, client.defaults.baseURL);
|
|
160
|
+
// Check if response has the expected structure
|
|
161
|
+
if (!response.data) {
|
|
162
|
+
throw new Error(`Invalid API response: response.data is ${typeof response.data}`);
|
|
163
|
+
}
|
|
164
|
+
const data = response.data.data;
|
|
165
|
+
if (!data) {
|
|
166
|
+
throw new Error(`Invalid API response: response.data.data is ${typeof data}. Full response: ${JSON.stringify(response.data)}`);
|
|
167
|
+
}
|
|
168
|
+
// Ensure the data has a label property
|
|
169
|
+
if (!data.label) {
|
|
170
|
+
throw new Error(`API response missing label property. Response data: ${JSON.stringify(data)}`);
|
|
171
|
+
}
|
|
172
|
+
return data;
|
|
75
173
|
}
|
|
76
174
|
catch (error) {
|
|
77
|
-
handleError(error);
|
|
175
|
+
return handleError(error);
|
|
78
176
|
}
|
|
79
177
|
}
|
|
80
178
|
//# sourceMappingURL=api.js.map
|
package/dist/utils/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/utils/api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAiB,UAAU,EAAE,MAAM,OAAO,CAAC;AASzD,IAAI,SAAS,GAAyB,IAAI,CAAC;AAE3C;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,MAAmB;IACzC,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC;QACvB,OAAO,EAAE,MAAM,CAAC,MAAM;QACtB,OAAO,EAAE;YACP,WAAW,EAAE,MAAM,CAAC,MAAM;
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/utils/api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAiB,UAAU,EAAE,MAAM,OAAO,CAAC;AASzD,IAAI,SAAS,GAAyB,IAAI,CAAC;AAE3C;;GAEG;AACH,SAAS,cAAc,CAAC,GAAW;IACjC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnD,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,IAAI,KAAK,YAAY,SAAS,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,2BAA2B,GAAG,kEAAkE,CAAC,CAAC;QACpH,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,MAAmB;IACzC,mBAAmB;IACnB,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAE9B,mBAAmB;IACnB,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7F,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IAED,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC;QACvB,OAAO,EAAE,MAAM,CAAC,MAAM;QACtB,OAAO,EAAE;YACP,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;YACjC,cAAc,EAAE,kBAAkB;SACnC;QACD,OAAO,EAAE,KAAK;KACf,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAS,SAAS;IAChB,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,SAAS,WAAW,CAAC,KAAc;IACjC,IAAI,KAAK,YAAY,UAAU,EAAE,CAAC;QAChC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACnB,4DAA4D;YAC5D,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;YACzC,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,YAAY,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,YAAY,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;gBAChL,MAAM,IAAI,KAAK,CACb,oFAAoF;oBACpF,kBAAkB;oBAClB,gDAAgD;oBAChD,kEAAkE;oBAClE,4EAA4E,CAC7E,CAAC;YACJ,CAAC;YAED,MAAM,IAAI,GAAG,YAAoC,CAAC;YAClD,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACtE,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACtC,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,cAAc,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QACzD,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAChE,MAAM,IAAI,KAAK,CAAC,qLAAqL,CAAC,CAAC;QACzM,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,kBAAkB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACrD,CAAC;IACD,MAAM,KAAK,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB,CAAC,IAAS,EAAE,OAAgB;IACvD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;QAChJ,MAAM,IAAI,KAAK,CACb,+DAA+D;YAC/D,uEAAuE;YACvE,6DAA6D;YAC7D,8EAA8E;YAC9E,kBAAkB,OAAO,IAAI,SAAS,EAAE,QAAQ,CAAC,OAAO,IAAI,SAAS,EAAE,CACxE,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM;IAC1B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAA8B,aAAa,CAAC,CAAC;QAE9E,mDAAmD;QACnD,oBAAoB,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAE7D,+CAA+C;QAC/C,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,0CAA0C,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QACpF,CAAC;QAED,2DAA2D;QAC3D,oFAAoF;QACpF,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;QAEhC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,+CAA+C,OAAO,IAAI,oBAAoB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjI,CAAC;QAED,sCAAsC;QACtC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,sDAAsD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChG,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,gEAAgE;QAChE,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAA8B,aAAa,CAAC,CAAC;QAE9E,mDAAmD;QACnD,oBAAoB,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAE7D,+CAA+C;QAC/C,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,0CAA0C,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QACpF,CAAC;QAED,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;QAEhC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,+CAA+C,OAAO,IAAI,oBAAoB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjI,CAAC;QAED,kDAAkD;QAClD,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,KAAK,CAAC,qDAAqD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/F,CAAC;QAED,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,8CAA8C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxF,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAY;IAC/C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAA6B,eAAe,IAAI,EAAE,CAAC,CAAC;QAErF,mDAAmD;QACnD,oBAAoB,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAE7D,+CAA+C;QAC/C,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,0CAA0C,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QACpF,CAAC;QAED,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;QAEhC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,+CAA+C,OAAO,IAAI,oBAAoB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjI,CAAC;QAED,uCAAuC;QACvC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,uDAAuD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjG,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAe/C;;GAEG;AACH,wBAAsB,SAAS,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAe/C;;GAEG;AACH,wBAAsB,SAAS,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CA0B7D;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAO5E;AAED;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAIlD;AAED;;GAEG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,CAGnD;AAED;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,CAQxD"}
|
package/dist/utils/config.js
CHANGED
|
@@ -4,7 +4,7 @@ import os from 'os';
|
|
|
4
4
|
const CONFIG_DIR = path.join(os.homedir(), '.taggr');
|
|
5
5
|
const CONFIG_FILE = path.join(CONFIG_DIR, 'config.json');
|
|
6
6
|
// Default to production API URL, fallback to localhost for development
|
|
7
|
-
const DEFAULT_API_URL = process.env.TAGGR_API_URL || 'https://taggr
|
|
7
|
+
const DEFAULT_API_URL = process.env.TAGGR_API_URL || 'https://taggr.onrender.com/api';
|
|
8
8
|
/**
|
|
9
9
|
* Ensure config directory exists
|
|
10
10
|
*/
|
|
@@ -19,14 +19,24 @@ export async function getConfig() {
|
|
|
19
19
|
await ensureConfigDir();
|
|
20
20
|
if (await fs.pathExists(CONFIG_FILE)) {
|
|
21
21
|
const config = await fs.readJson(CONFIG_FILE);
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
22
|
+
// Validate config structure
|
|
23
|
+
if (config && typeof config === 'object' && !Array.isArray(config)) {
|
|
24
|
+
return {
|
|
25
|
+
apiKey: config.apiKey || '',
|
|
26
|
+
apiUrl: config.apiUrl || DEFAULT_API_URL,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
// Config file is corrupted (not an object)
|
|
31
|
+
console.warn(`Warning: Config file at ${CONFIG_FILE} is corrupted. Please login again.`);
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
26
34
|
}
|
|
27
35
|
return null;
|
|
28
36
|
}
|
|
29
37
|
catch (error) {
|
|
38
|
+
// If JSON parsing fails, config is corrupted
|
|
39
|
+
console.warn(`Warning: Could not read config file at ${CONFIG_FILE}. Please login again.`);
|
|
30
40
|
return null;
|
|
31
41
|
}
|
|
32
42
|
}
|
package/dist/utils/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AAGpB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;AACrD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;AAEzD,uEAAuE;AACvE,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AAGpB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;AACrD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;AAEzD,uEAAuE;AACvE,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,gCAAgC,CAAC;AAEtF;;GAEG;AACH,KAAK,UAAU,eAAe;IAC5B,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,IAAI,CAAC;QACH,MAAM,eAAe,EAAE,CAAC;QAExB,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YACrC,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YAE9C,4BAA4B;YAC5B,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBACnE,OAAO;oBACL,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;oBAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,eAAe;iBACzC,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,2CAA2C;gBAC3C,OAAO,CAAC,IAAI,CAAC,2BAA2B,WAAW,oCAAoC,CAAC,CAAC;gBACzF,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,6CAA6C;QAC7C,OAAO,CAAC,IAAI,CAAC,0CAA0C,WAAW,uBAAuB,CAAC,CAAC;QAC3F,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,MAA4B;IAC3D,MAAM,eAAe,EAAE,CAAC;IAExB,MAAM,cAAc,GAAG,MAAM,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;IACpF,MAAM,SAAS,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,MAAM,EAAE,CAAC;IAEnD,MAAM,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;AAC5D,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QACrC,MAAM,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC/B,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;IACjC,OAAO,MAAM,KAAK,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;AAC5C,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;IAEjC,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACvE,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/utils/generator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/utils/generator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAkEzC;;GAEG;AACH,wBAAsB,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAwDlE;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAuBvE;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAEpE;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAErC"}
|
package/dist/utils/generator.js
CHANGED
|
@@ -5,7 +5,14 @@ const OUTPUT_DIR = './taggr';
|
|
|
5
5
|
* Convert kebab-case to camelCase
|
|
6
6
|
*/
|
|
7
7
|
function toCamelCase(str) {
|
|
8
|
-
|
|
8
|
+
if (!str || typeof str !== 'string') {
|
|
9
|
+
return 'label';
|
|
10
|
+
}
|
|
11
|
+
// Remove any invalid characters and convert to camelCase
|
|
12
|
+
return str
|
|
13
|
+
.replace(/[^a-zA-Z0-9-]/g, '') // Remove invalid characters
|
|
14
|
+
.replace(/-([a-z])/g, (_, letter) => letter.toUpperCase())
|
|
15
|
+
.replace(/^[A-Z]/, (match) => match.toLowerCase()); // Ensure first letter is lowercase
|
|
9
16
|
}
|
|
10
17
|
/**
|
|
11
18
|
* Generate labels.json content
|
|
@@ -13,8 +20,13 @@ function toCamelCase(str) {
|
|
|
13
20
|
function generateLabelsJson(labels) {
|
|
14
21
|
const labelsObj = {};
|
|
15
22
|
for (const label of labels) {
|
|
23
|
+
// Validate label has required properties
|
|
24
|
+
if (!label || !label.name || label.value === undefined) {
|
|
25
|
+
console.warn(`Warning: Skipping invalid label: ${JSON.stringify(label)}`);
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
16
28
|
const key = toCamelCase(label.name);
|
|
17
|
-
labelsObj[key] = label.value;
|
|
29
|
+
labelsObj[key] = String(label.value); // Ensure value is a string
|
|
18
30
|
}
|
|
19
31
|
return JSON.stringify(labelsObj, null, 2);
|
|
20
32
|
}
|
|
@@ -23,6 +35,7 @@ function generateLabelsJson(labels) {
|
|
|
23
35
|
*/
|
|
24
36
|
function generateLabelsDts(labels) {
|
|
25
37
|
const properties = labels
|
|
38
|
+
.filter(label => label && label.name) // Filter out invalid labels
|
|
26
39
|
.map(label => ` ${toCamelCase(label.name)}: string;`)
|
|
27
40
|
.join('\n');
|
|
28
41
|
return `// Generated by Taggr CLI - DO NOT EDIT
|
|
@@ -39,7 +52,12 @@ export default labels;
|
|
|
39
52
|
* Ensure output directory exists
|
|
40
53
|
*/
|
|
41
54
|
async function ensureOutputDir() {
|
|
42
|
-
|
|
55
|
+
try {
|
|
56
|
+
await fs.ensureDir(OUTPUT_DIR);
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
throw new Error(`Failed to create output directory "${OUTPUT_DIR}": ${error.message}`);
|
|
60
|
+
}
|
|
43
61
|
}
|
|
44
62
|
/**
|
|
45
63
|
* Write a single label to labels.json (fetches all and rewrites)
|
|
@@ -51,14 +69,36 @@ export async function writeLabelFile(label) {
|
|
|
51
69
|
// Read existing labels if file exists
|
|
52
70
|
let existingLabels = {};
|
|
53
71
|
if (await fs.pathExists(jsonPath)) {
|
|
54
|
-
|
|
55
|
-
|
|
72
|
+
try {
|
|
73
|
+
const content = await fs.readFile(jsonPath, 'utf-8');
|
|
74
|
+
const parsed = JSON.parse(content);
|
|
75
|
+
// Validate that parsed content is an object
|
|
76
|
+
if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) {
|
|
77
|
+
existingLabels = parsed;
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
// If file is corrupted (not an object), start fresh
|
|
81
|
+
console.warn(`Warning: ${jsonPath} contains invalid data. Starting fresh.`);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
// If JSON parsing fails, start fresh
|
|
86
|
+
console.warn(`Warning: Could not parse ${jsonPath}. Starting fresh.`);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
// Validate and add/update the label
|
|
90
|
+
if (!label || !label.name || label.value === undefined) {
|
|
91
|
+
throw new Error(`Invalid label: missing required properties (name, value)`);
|
|
56
92
|
}
|
|
57
|
-
// Add/update the label
|
|
58
93
|
const key = toCamelCase(label.name);
|
|
59
|
-
existingLabels[key] = label.value;
|
|
94
|
+
existingLabels[key] = String(label.value); // Ensure value is a string
|
|
60
95
|
// Write JSON
|
|
61
|
-
|
|
96
|
+
try {
|
|
97
|
+
await fs.writeFile(jsonPath, JSON.stringify(existingLabels, null, 2), 'utf-8');
|
|
98
|
+
}
|
|
99
|
+
catch (error) {
|
|
100
|
+
throw new Error(`Failed to write ${jsonPath}: ${error.message}`);
|
|
101
|
+
}
|
|
62
102
|
// Generate d.ts from current keys
|
|
63
103
|
const dtsContent = `// Generated by Taggr CLI - DO NOT EDIT
|
|
64
104
|
// Last updated: ${new Date().toISOString()}
|
|
@@ -69,7 +109,12 @@ ${Object.keys(existingLabels).map(k => ` ${k}: string;`).join('\n')}
|
|
|
69
109
|
|
|
70
110
|
export default labels;
|
|
71
111
|
`;
|
|
72
|
-
|
|
112
|
+
try {
|
|
113
|
+
await fs.writeFile(dtsPath, dtsContent, 'utf-8');
|
|
114
|
+
}
|
|
115
|
+
catch (error) {
|
|
116
|
+
throw new Error(`Failed to write ${dtsPath}: ${error.message}`);
|
|
117
|
+
}
|
|
73
118
|
return jsonPath;
|
|
74
119
|
}
|
|
75
120
|
/**
|
|
@@ -81,10 +126,20 @@ export async function writeAllLabels(labels) {
|
|
|
81
126
|
const dtsPath = path.join(OUTPUT_DIR, 'labels.d.ts');
|
|
82
127
|
// Write JSON
|
|
83
128
|
const jsonContent = generateLabelsJson(labels);
|
|
84
|
-
|
|
129
|
+
try {
|
|
130
|
+
await fs.writeFile(jsonPath, jsonContent, 'utf-8');
|
|
131
|
+
}
|
|
132
|
+
catch (error) {
|
|
133
|
+
throw new Error(`Failed to write ${jsonPath}: ${error.message}`);
|
|
134
|
+
}
|
|
85
135
|
// Write TypeScript declarations
|
|
86
136
|
const dtsContent = generateLabelsDts(labels);
|
|
87
|
-
|
|
137
|
+
try {
|
|
138
|
+
await fs.writeFile(dtsPath, dtsContent, 'utf-8');
|
|
139
|
+
}
|
|
140
|
+
catch (error) {
|
|
141
|
+
throw new Error(`Failed to write ${dtsPath}: ${error.message}`);
|
|
142
|
+
}
|
|
88
143
|
return [jsonPath, dtsPath];
|
|
89
144
|
}
|
|
90
145
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../src/utils/generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AAGxB,MAAM,UAAU,GAAG,SAAS,CAAC;AAE7B;;GAEG;AACH,SAAS,WAAW,CAAC,GAAW;IAC9B,OAAO,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../src/utils/generator.ts"],"names":[],"mappings":"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"}
|