@timbrix/cli 0.1.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/dist/commands/customers/create.d.ts +25 -0
- package/dist/commands/customers/create.d.ts.map +1 -0
- package/dist/commands/customers/create.js +188 -0
- package/dist/commands/customers/delete.d.ts +12 -0
- package/dist/commands/customers/delete.d.ts.map +1 -0
- package/dist/commands/customers/delete.js +52 -0
- package/dist/commands/customers/list.d.ts +10 -0
- package/dist/commands/customers/list.d.ts.map +1 -0
- package/dist/commands/customers/list.js +49 -0
- package/dist/commands/login.js +1 -1
- package/dist/commands/sat/regimenes/list.d.ts +10 -0
- package/dist/commands/sat/regimenes/list.d.ts.map +1 -0
- package/dist/commands/sat/regimenes/list.js +50 -0
- package/dist/commands/sat/usos-cfdi/list.d.ts +11 -0
- package/dist/commands/sat/usos-cfdi/list.d.ts.map +1 -0
- package/dist/commands/sat/usos-cfdi/list.js +52 -0
- package/dist/config/auth.js +1 -1
- package/oclif.manifest.json +320 -2
- package/package.json +20 -15
package/README.md
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# @timbrix/cli
|
|
2
2
|
|
|
3
3
|
```
|
|
4
|
-
_____ _ _ _
|
|
4
|
+
_____ _ _ _
|
|
5
5
|
|_ _(_)_ __ ___ | |__ _ __(_)_ __
|
|
6
6
|
| | | | '_ ` _ \| '_ \| '__| \ \/ /
|
|
7
|
-
| | | | | | | | | |_) | | | |> <
|
|
7
|
+
| | | | | | | | | |_) | | | |> <
|
|
8
8
|
|_| |_|_| |_| |_|_.__/|_| |_/_/\_\
|
|
9
9
|
```
|
|
10
10
|
|
|
@@ -171,7 +171,7 @@ Configuration is stored in `~/.timbrix/config.json`:
|
|
|
171
171
|
{
|
|
172
172
|
"bearerToken": "eyJhbGc...",
|
|
173
173
|
"email": "user@example.com",
|
|
174
|
-
"baseUrl": "http://localhost:3001
|
|
174
|
+
"baseUrl": "http://localhost:3001"
|
|
175
175
|
}
|
|
176
176
|
```
|
|
177
177
|
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Command } from "@oclif/core";
|
|
2
|
+
export default class CustomersCreate extends Command {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static flags: {
|
|
6
|
+
org: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
7
|
+
"legal-name": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
8
|
+
"tax-id": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
9
|
+
"tax-system": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
|
+
email: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
11
|
+
phone: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
|
+
"default-invoice-use": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
|
+
"address-street": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
|
+
"address-exterior": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
15
|
+
"address-interior": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
16
|
+
"address-neighborhood": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
17
|
+
"address-city": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
18
|
+
"address-municipality": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
19
|
+
"address-zip": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
20
|
+
"address-state": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
21
|
+
"address-country": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
22
|
+
};
|
|
23
|
+
run(): Promise<void>;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=create.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/commands/customers/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAA;AAO5C,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,OAAO;IAClD,OAAgB,WAAW,SAA0B;IAErD,OAAgB,QAAQ,WAGvB;IAED,OAAgB,KAAK;;;;;;;;;;;;;;;;;MAsDpB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA+JlC"}
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
import { Command, Flags } from "@oclif/core";
|
|
2
|
+
import { input } from "@inquirer/prompts";
|
|
3
|
+
import { createClient } from "../../utils/client.js";
|
|
4
|
+
import { getErrorMessage } from "../../utils/error.js";
|
|
5
|
+
import chalk from "chalk";
|
|
6
|
+
import ora from "ora";
|
|
7
|
+
export default class CustomersCreate extends Command {
|
|
8
|
+
static description = "Create a new customer";
|
|
9
|
+
static examples = [
|
|
10
|
+
"<%= config.bin %> <%= command.id %> --org acme-corp-id",
|
|
11
|
+
'<%= config.bin %> <%= command.id %> --org acme-corp-id --legal-name "ACME SA DE CV" --tax-id XAXX010101000',
|
|
12
|
+
];
|
|
13
|
+
static flags = {
|
|
14
|
+
org: Flags.string({
|
|
15
|
+
char: "o",
|
|
16
|
+
description: "Organization ID",
|
|
17
|
+
required: true,
|
|
18
|
+
}),
|
|
19
|
+
"legal-name": Flags.string({
|
|
20
|
+
char: "n",
|
|
21
|
+
description: "Legal name (razón social)",
|
|
22
|
+
}),
|
|
23
|
+
"tax-id": Flags.string({
|
|
24
|
+
char: "t",
|
|
25
|
+
description: "RFC (12 or 13 characters)",
|
|
26
|
+
}),
|
|
27
|
+
"tax-system": Flags.string({
|
|
28
|
+
description: "SAT tax system code (e.g. 601)",
|
|
29
|
+
}),
|
|
30
|
+
email: Flags.string({
|
|
31
|
+
char: "e",
|
|
32
|
+
description: "Email address",
|
|
33
|
+
}),
|
|
34
|
+
phone: Flags.string({
|
|
35
|
+
description: "Phone number (optional)",
|
|
36
|
+
}),
|
|
37
|
+
"default-invoice-use": Flags.string({
|
|
38
|
+
description: "Default CFDI invoice use code (e.g. G03)",
|
|
39
|
+
}),
|
|
40
|
+
"address-street": Flags.string({
|
|
41
|
+
description: "Street name",
|
|
42
|
+
}),
|
|
43
|
+
"address-exterior": Flags.string({
|
|
44
|
+
description: "Exterior number",
|
|
45
|
+
}),
|
|
46
|
+
"address-interior": Flags.string({
|
|
47
|
+
description: "Interior number (optional)",
|
|
48
|
+
}),
|
|
49
|
+
"address-neighborhood": Flags.string({
|
|
50
|
+
description: "Neighborhood (colonia)",
|
|
51
|
+
}),
|
|
52
|
+
"address-city": Flags.string({
|
|
53
|
+
description: "City",
|
|
54
|
+
}),
|
|
55
|
+
"address-municipality": Flags.string({
|
|
56
|
+
description: "Municipality",
|
|
57
|
+
}),
|
|
58
|
+
"address-zip": Flags.string({
|
|
59
|
+
description: "ZIP code (5 digits)",
|
|
60
|
+
}),
|
|
61
|
+
"address-state": Flags.string({
|
|
62
|
+
description: "State",
|
|
63
|
+
}),
|
|
64
|
+
"address-country": Flags.string({
|
|
65
|
+
description: "Country code (default: MEX)",
|
|
66
|
+
}),
|
|
67
|
+
};
|
|
68
|
+
async run() {
|
|
69
|
+
const { flags } = await this.parse(CustomersCreate);
|
|
70
|
+
const client = createClient();
|
|
71
|
+
try {
|
|
72
|
+
const legalName = flags["legal-name"] ||
|
|
73
|
+
(await input({
|
|
74
|
+
message: "Legal name (razón social):",
|
|
75
|
+
validate: (v) => v.trim().length > 0 || "Legal name is required",
|
|
76
|
+
}));
|
|
77
|
+
const taxId = flags["tax-id"] ||
|
|
78
|
+
(await input({
|
|
79
|
+
message: "RFC (12 or 13 characters, uppercase):",
|
|
80
|
+
validate: (v) => {
|
|
81
|
+
const trimmed = v.trim();
|
|
82
|
+
if (trimmed.length < 12 || trimmed.length > 13) {
|
|
83
|
+
return "RFC must be 12 or 13 characters";
|
|
84
|
+
}
|
|
85
|
+
if (trimmed !== trimmed.toUpperCase()) {
|
|
86
|
+
return "RFC must be uppercase";
|
|
87
|
+
}
|
|
88
|
+
return true;
|
|
89
|
+
},
|
|
90
|
+
}));
|
|
91
|
+
const taxSystem = flags["tax-system"] ||
|
|
92
|
+
(await input({
|
|
93
|
+
message: "SAT tax system code (e.g. 601):",
|
|
94
|
+
validate: (v) => v.trim().length > 0 || "Tax system is required",
|
|
95
|
+
}));
|
|
96
|
+
const email = flags.email ||
|
|
97
|
+
(await input({
|
|
98
|
+
message: "Email:",
|
|
99
|
+
validate: (v) => /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(v) || "Invalid email format",
|
|
100
|
+
}));
|
|
101
|
+
const phone = flags.phone ||
|
|
102
|
+
(await input({
|
|
103
|
+
message: "Phone (leave empty to skip):",
|
|
104
|
+
})) ||
|
|
105
|
+
undefined;
|
|
106
|
+
const defaultInvoiceUse = flags["default-invoice-use"] ||
|
|
107
|
+
(await input({
|
|
108
|
+
message: "Default CFDI invoice use (e.g. G03):",
|
|
109
|
+
validate: (v) => v.trim().length > 0 || "Default invoice use is required",
|
|
110
|
+
}));
|
|
111
|
+
const addressStreet = flags["address-street"] ||
|
|
112
|
+
(await input({
|
|
113
|
+
message: "Street:",
|
|
114
|
+
validate: (v) => v.trim().length > 0 || "Street is required",
|
|
115
|
+
}));
|
|
116
|
+
const addressExterior = flags["address-exterior"] ||
|
|
117
|
+
(await input({
|
|
118
|
+
message: "Exterior number:",
|
|
119
|
+
validate: (v) => v.trim().length > 0 || "Exterior number is required",
|
|
120
|
+
}));
|
|
121
|
+
const addressInterior = flags["address-interior"] ||
|
|
122
|
+
(await input({
|
|
123
|
+
message: "Interior number (leave empty to skip):",
|
|
124
|
+
})) ||
|
|
125
|
+
undefined;
|
|
126
|
+
const addressNeighborhood = flags["address-neighborhood"] ||
|
|
127
|
+
(await input({
|
|
128
|
+
message: "Neighborhood (colonia):",
|
|
129
|
+
validate: (v) => v.trim().length > 0 || "Neighborhood is required",
|
|
130
|
+
}));
|
|
131
|
+
const addressCity = flags["address-city"] ||
|
|
132
|
+
(await input({
|
|
133
|
+
message: "City:",
|
|
134
|
+
validate: (v) => v.trim().length > 0 || "City is required",
|
|
135
|
+
}));
|
|
136
|
+
const addressMunicipality = flags["address-municipality"] ||
|
|
137
|
+
(await input({
|
|
138
|
+
message: "Municipality:",
|
|
139
|
+
validate: (v) => v.trim().length > 0 || "Municipality is required",
|
|
140
|
+
}));
|
|
141
|
+
const addressZip = flags["address-zip"] ||
|
|
142
|
+
(await input({
|
|
143
|
+
message: "ZIP code (5 digits):",
|
|
144
|
+
validate: (v) => /^\d{5}$/.test(v) || "ZIP must be exactly 5 digits",
|
|
145
|
+
}));
|
|
146
|
+
const addressState = flags["address-state"] ||
|
|
147
|
+
(await input({
|
|
148
|
+
message: "State:",
|
|
149
|
+
validate: (v) => v.trim().length > 0 || "State is required",
|
|
150
|
+
}));
|
|
151
|
+
const addressCountry = flags["address-country"] ||
|
|
152
|
+
(await input({
|
|
153
|
+
message: "Country code:",
|
|
154
|
+
default: "MEX",
|
|
155
|
+
}));
|
|
156
|
+
const spinner = ora("Creating customer...").start();
|
|
157
|
+
const customer = await client.customers.create(flags.org, {
|
|
158
|
+
legalName,
|
|
159
|
+
taxId,
|
|
160
|
+
taxSystem,
|
|
161
|
+
email,
|
|
162
|
+
phone: phone || undefined,
|
|
163
|
+
defaultInvoiceUse,
|
|
164
|
+
addressStreet,
|
|
165
|
+
addressExterior,
|
|
166
|
+
addressInterior: addressInterior || undefined,
|
|
167
|
+
addressNeighborhood,
|
|
168
|
+
addressCity,
|
|
169
|
+
addressMunicipality,
|
|
170
|
+
addressZip,
|
|
171
|
+
addressState,
|
|
172
|
+
addressCountry,
|
|
173
|
+
});
|
|
174
|
+
spinner.succeed(chalk.green("✓ Customer created successfully!"));
|
|
175
|
+
this.log(chalk.gray("\nCustomer Details:"));
|
|
176
|
+
this.log(` ${chalk.bold("ID:")} ${customer.id}`);
|
|
177
|
+
this.log(` ${chalk.bold("Legal Name:")} ${customer.legalName}`);
|
|
178
|
+
this.log(` ${chalk.bold("RFC:")} ${customer.taxId}`);
|
|
179
|
+
this.log(` ${chalk.bold("Email:")} ${customer.email}`);
|
|
180
|
+
const addr = customer.address;
|
|
181
|
+
const interiorPart = addr.interior ? ` Int. ${addr.interior}` : "";
|
|
182
|
+
this.log(` ${chalk.bold("Address:")} ${addr.street} ${addr.exterior}${interiorPart}, ${addr.neighborhood}, ${addr.city}, ${addr.state}, ${addr.zip}, ${addr.country}`);
|
|
183
|
+
}
|
|
184
|
+
catch (error) {
|
|
185
|
+
this.error(chalk.red(`Failed to create customer: ${getErrorMessage(error)}`));
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Command } from "@oclif/core";
|
|
2
|
+
export default class CustomersDelete extends Command {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static flags: {
|
|
6
|
+
org: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
7
|
+
id: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
8
|
+
force: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
9
|
+
};
|
|
10
|
+
run(): Promise<void>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=delete.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../src/commands/customers/delete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAA;AAO5C,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,OAAO;IAClD,OAAgB,WAAW,SAAsB;IAEjD,OAAgB,QAAQ,WAGvB;IAED,OAAgB,KAAK;;;;MAepB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA0BlC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { Command, Flags } from "@oclif/core";
|
|
2
|
+
import { confirm } from "@inquirer/prompts";
|
|
3
|
+
import chalk from "chalk";
|
|
4
|
+
import ora from "ora";
|
|
5
|
+
import { createClient } from "../../utils/client.js";
|
|
6
|
+
import { getErrorMessage } from "../../utils/error.js";
|
|
7
|
+
export default class CustomersDelete extends Command {
|
|
8
|
+
static description = "Delete a customer";
|
|
9
|
+
static examples = [
|
|
10
|
+
"<%= config.bin %> <%= command.id %> --org acme-corp-id --id customer-uuid",
|
|
11
|
+
"<%= config.bin %> <%= command.id %> --org acme-corp-id --id customer-uuid --force",
|
|
12
|
+
];
|
|
13
|
+
static flags = {
|
|
14
|
+
org: Flags.string({
|
|
15
|
+
char: "o",
|
|
16
|
+
description: "Organization ID",
|
|
17
|
+
required: true,
|
|
18
|
+
}),
|
|
19
|
+
id: Flags.string({
|
|
20
|
+
description: "Customer ID",
|
|
21
|
+
required: true,
|
|
22
|
+
}),
|
|
23
|
+
force: Flags.boolean({
|
|
24
|
+
char: "f",
|
|
25
|
+
description: "Skip confirmation prompt",
|
|
26
|
+
default: false,
|
|
27
|
+
}),
|
|
28
|
+
};
|
|
29
|
+
async run() {
|
|
30
|
+
const { flags } = await this.parse(CustomersDelete);
|
|
31
|
+
const client = createClient();
|
|
32
|
+
if (!flags.force) {
|
|
33
|
+
const ok = await confirm({
|
|
34
|
+
message: `Delete customer ${flags.id}? This action cannot be undone.`,
|
|
35
|
+
default: false,
|
|
36
|
+
});
|
|
37
|
+
if (!ok) {
|
|
38
|
+
this.log(chalk.gray("Deletion cancelled"));
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
const spinner = ora("Deleting customer...").start();
|
|
43
|
+
try {
|
|
44
|
+
await client.customers.delete(flags.org, flags.id);
|
|
45
|
+
spinner.succeed(chalk.green("✓ Customer deleted successfully!"));
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
spinner.fail(chalk.red("Failed to delete customer"));
|
|
49
|
+
this.error(getErrorMessage(error));
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Command } from "@oclif/core";
|
|
2
|
+
export default class CustomersList extends Command {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static flags: {
|
|
6
|
+
org: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
7
|
+
};
|
|
8
|
+
run(): Promise<void>;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=list.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/customers/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAA;AAQ5C,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,OAAO;IAChD,OAAgB,WAAW,SAA2C;IAEtE,OAAgB,QAAQ,WAEvB;IAED,OAAgB,KAAK;;MAMpB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAuClC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { Command, Flags } from "@oclif/core";
|
|
2
|
+
import chalk from "chalk";
|
|
3
|
+
import ora from "ora";
|
|
4
|
+
import { createClient } from "../../utils/client.js";
|
|
5
|
+
import { getErrorMessage } from "../../utils/error.js";
|
|
6
|
+
import { createTable, truncate } from "../../utils/table.js";
|
|
7
|
+
export default class CustomersList extends Command {
|
|
8
|
+
static description = "List all customers for an organization";
|
|
9
|
+
static examples = [
|
|
10
|
+
"<%= config.bin %> <%= command.id %> --org acme-corp-id",
|
|
11
|
+
];
|
|
12
|
+
static flags = {
|
|
13
|
+
org: Flags.string({
|
|
14
|
+
char: "o",
|
|
15
|
+
description: "Organization ID",
|
|
16
|
+
required: true,
|
|
17
|
+
}),
|
|
18
|
+
};
|
|
19
|
+
async run() {
|
|
20
|
+
const { flags } = await this.parse(CustomersList);
|
|
21
|
+
const client = createClient();
|
|
22
|
+
const spinner = ora("Fetching customers...").start();
|
|
23
|
+
try {
|
|
24
|
+
const customers = await client.customers.list(flags.org);
|
|
25
|
+
spinner.stop();
|
|
26
|
+
if (customers.length === 0) {
|
|
27
|
+
this.log(chalk.yellow("No customers found"));
|
|
28
|
+
this.log(chalk.gray(`\nCreate a customer with: timbrix customers create --org ${flags.org}`));
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
const table = createTable(["ID", "Legal Name", "RFC", "Email", "Created"]);
|
|
32
|
+
customers.forEach((customer) => {
|
|
33
|
+
table.push([
|
|
34
|
+
customer.id.substring(0, 8) + "...",
|
|
35
|
+
truncate(customer.legalName, 30),
|
|
36
|
+
customer.taxId,
|
|
37
|
+
customer.email,
|
|
38
|
+
new Date(customer.createdAt).toLocaleDateString(),
|
|
39
|
+
]);
|
|
40
|
+
});
|
|
41
|
+
this.log(table.toString());
|
|
42
|
+
this.log(chalk.gray(`\nTotal: ${customers.length} customer(s)`));
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
spinner.fail(chalk.red("Failed to fetch customers"));
|
|
46
|
+
this.error(getErrorMessage(error));
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
package/dist/commands/login.js
CHANGED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Command } from "@oclif/core";
|
|
2
|
+
export default class SatRegimenesList extends Command {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static flags: {
|
|
6
|
+
"tipo-persona": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
7
|
+
};
|
|
8
|
+
run(): Promise<void>;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=list.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../../src/commands/sat/regimenes/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAA;AAQ5C,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,OAAO;IACnD,OAAgB,WAAW,SAAgC;IAE3D,OAAgB,QAAQ,WAIvB;IAED,OAAgB,KAAK;;MAMpB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAmClC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { Command, Flags } from "@oclif/core";
|
|
2
|
+
import chalk from "chalk";
|
|
3
|
+
import ora from "ora";
|
|
4
|
+
import { createClient } from "../../../utils/client.js";
|
|
5
|
+
import { getErrorMessage } from "../../../utils/error.js";
|
|
6
|
+
import { createTable, truncate } from "../../../utils/table.js";
|
|
7
|
+
export default class SatRegimenesList extends Command {
|
|
8
|
+
static description = "List SAT régimenes fiscales";
|
|
9
|
+
static examples = [
|
|
10
|
+
"<%= config.bin %> <%= command.id %>",
|
|
11
|
+
"<%= config.bin %> <%= command.id %> --tipo-persona fisica",
|
|
12
|
+
"<%= config.bin %> <%= command.id %> --tipo-persona moral",
|
|
13
|
+
];
|
|
14
|
+
static flags = {
|
|
15
|
+
"tipo-persona": Flags.string({
|
|
16
|
+
char: "t",
|
|
17
|
+
description: "Filter by persona type",
|
|
18
|
+
options: ["fisica", "moral", "ambas"],
|
|
19
|
+
}),
|
|
20
|
+
};
|
|
21
|
+
async run() {
|
|
22
|
+
const { flags } = await this.parse(SatRegimenesList);
|
|
23
|
+
const client = createClient();
|
|
24
|
+
const spinner = ora("Fetching régimenes fiscales...").start();
|
|
25
|
+
try {
|
|
26
|
+
const regimenes = await client.sat.regimenes({
|
|
27
|
+
tipoPersona: flags["tipo-persona"],
|
|
28
|
+
});
|
|
29
|
+
spinner.stop();
|
|
30
|
+
if (regimenes.length === 0) {
|
|
31
|
+
this.log(chalk.yellow("No results found"));
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
const table = createTable(["Código", "Descripción", "Tipo Persona"]);
|
|
35
|
+
regimenes.forEach((regimen) => {
|
|
36
|
+
table.push([
|
|
37
|
+
regimen.codigo,
|
|
38
|
+
truncate(regimen.descripcion, 50),
|
|
39
|
+
regimen.tipoPersona,
|
|
40
|
+
]);
|
|
41
|
+
});
|
|
42
|
+
this.log(table.toString());
|
|
43
|
+
this.log(chalk.gray(`\nTotal: ${regimenes.length} régimen(es)`));
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
spinner.fail(chalk.red("Failed to fetch régimenes fiscales"));
|
|
47
|
+
this.error(getErrorMessage(error));
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Command } from "@oclif/core";
|
|
2
|
+
export default class SatUsosCfdiList extends Command {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static flags: {
|
|
6
|
+
"tipo-persona": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
7
|
+
regimen: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
8
|
+
};
|
|
9
|
+
run(): Promise<void>;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=list.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../../src/commands/sat/usos-cfdi/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAA;AAQ5C,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,OAAO;IAClD,OAAgB,WAAW,SAA0B;IAErD,OAAgB,QAAQ,WAKvB;IAED,OAAgB,KAAK;;;MAUpB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAgClC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { Command, Flags } from "@oclif/core";
|
|
2
|
+
import chalk from "chalk";
|
|
3
|
+
import ora from "ora";
|
|
4
|
+
import { createClient } from "../../../utils/client.js";
|
|
5
|
+
import { getErrorMessage } from "../../../utils/error.js";
|
|
6
|
+
import { createTable, truncate } from "../../../utils/table.js";
|
|
7
|
+
export default class SatUsosCfdiList extends Command {
|
|
8
|
+
static description = "List SAT usos de CFDI";
|
|
9
|
+
static examples = [
|
|
10
|
+
"<%= config.bin %> <%= command.id %>",
|
|
11
|
+
"<%= config.bin %> <%= command.id %> --tipo-persona fisica",
|
|
12
|
+
"<%= config.bin %> <%= command.id %> --regimen 601",
|
|
13
|
+
"<%= config.bin %> <%= command.id %> --regimen 601 --tipo-persona moral",
|
|
14
|
+
];
|
|
15
|
+
static flags = {
|
|
16
|
+
"tipo-persona": Flags.string({
|
|
17
|
+
char: "t",
|
|
18
|
+
description: "Filter by persona type",
|
|
19
|
+
options: ["fisica", "moral", "ambas"],
|
|
20
|
+
}),
|
|
21
|
+
regimen: Flags.string({
|
|
22
|
+
char: "r",
|
|
23
|
+
description: "Filter by régimen fiscal code (e.g. 601)",
|
|
24
|
+
}),
|
|
25
|
+
};
|
|
26
|
+
async run() {
|
|
27
|
+
const { flags } = await this.parse(SatUsosCfdiList);
|
|
28
|
+
const client = createClient();
|
|
29
|
+
const spinner = ora("Fetching usos CFDI...").start();
|
|
30
|
+
try {
|
|
31
|
+
const usosCfdi = await client.sat.usosCfdi({
|
|
32
|
+
tipoPersona: flags["tipo-persona"],
|
|
33
|
+
regimen: flags.regimen,
|
|
34
|
+
});
|
|
35
|
+
spinner.stop();
|
|
36
|
+
if (usosCfdi.length === 0) {
|
|
37
|
+
this.log(chalk.yellow("No usos CFDI found for the given filters"));
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
const table = createTable(["Código", "Descripción", "Tipo Persona"]);
|
|
41
|
+
usosCfdi.forEach((uso) => {
|
|
42
|
+
table.push([uso.codigo, truncate(uso.descripcion, 50), uso.tipoPersona]);
|
|
43
|
+
});
|
|
44
|
+
this.log(table.toString());
|
|
45
|
+
this.log(chalk.gray(`\nTotal: ${usosCfdi.length} uso(s) CFDI`));
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
spinner.fail(chalk.red("Failed to fetch usos CFDI"));
|
|
49
|
+
this.error(getErrorMessage(error));
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
package/dist/config/auth.js
CHANGED
package/oclif.manifest.json
CHANGED
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"char": "u",
|
|
22
22
|
"description": "API base URL",
|
|
23
23
|
"name": "base-url",
|
|
24
|
-
"default": "http://localhost:3001
|
|
24
|
+
"default": "http://localhost:3001",
|
|
25
25
|
"hasDynamicHelp": false,
|
|
26
26
|
"multiple": false,
|
|
27
27
|
"type": "option"
|
|
@@ -262,6 +262,233 @@
|
|
|
262
262
|
"list.js"
|
|
263
263
|
]
|
|
264
264
|
},
|
|
265
|
+
"customers:create": {
|
|
266
|
+
"aliases": [],
|
|
267
|
+
"args": {},
|
|
268
|
+
"description": "Create a new customer",
|
|
269
|
+
"examples": [
|
|
270
|
+
"<%= config.bin %> <%= command.id %> --org acme-corp-id",
|
|
271
|
+
"<%= config.bin %> <%= command.id %> --org acme-corp-id --legal-name \"ACME SA DE CV\" --tax-id XAXX010101000"
|
|
272
|
+
],
|
|
273
|
+
"flags": {
|
|
274
|
+
"org": {
|
|
275
|
+
"char": "o",
|
|
276
|
+
"description": "Organization ID",
|
|
277
|
+
"name": "org",
|
|
278
|
+
"required": true,
|
|
279
|
+
"hasDynamicHelp": false,
|
|
280
|
+
"multiple": false,
|
|
281
|
+
"type": "option"
|
|
282
|
+
},
|
|
283
|
+
"legal-name": {
|
|
284
|
+
"char": "n",
|
|
285
|
+
"description": "Legal name (razón social)",
|
|
286
|
+
"name": "legal-name",
|
|
287
|
+
"hasDynamicHelp": false,
|
|
288
|
+
"multiple": false,
|
|
289
|
+
"type": "option"
|
|
290
|
+
},
|
|
291
|
+
"tax-id": {
|
|
292
|
+
"char": "t",
|
|
293
|
+
"description": "RFC (12 or 13 characters)",
|
|
294
|
+
"name": "tax-id",
|
|
295
|
+
"hasDynamicHelp": false,
|
|
296
|
+
"multiple": false,
|
|
297
|
+
"type": "option"
|
|
298
|
+
},
|
|
299
|
+
"tax-system": {
|
|
300
|
+
"description": "SAT tax system code (e.g. 601)",
|
|
301
|
+
"name": "tax-system",
|
|
302
|
+
"hasDynamicHelp": false,
|
|
303
|
+
"multiple": false,
|
|
304
|
+
"type": "option"
|
|
305
|
+
},
|
|
306
|
+
"email": {
|
|
307
|
+
"char": "e",
|
|
308
|
+
"description": "Email address",
|
|
309
|
+
"name": "email",
|
|
310
|
+
"hasDynamicHelp": false,
|
|
311
|
+
"multiple": false,
|
|
312
|
+
"type": "option"
|
|
313
|
+
},
|
|
314
|
+
"phone": {
|
|
315
|
+
"description": "Phone number (optional)",
|
|
316
|
+
"name": "phone",
|
|
317
|
+
"hasDynamicHelp": false,
|
|
318
|
+
"multiple": false,
|
|
319
|
+
"type": "option"
|
|
320
|
+
},
|
|
321
|
+
"default-invoice-use": {
|
|
322
|
+
"description": "Default CFDI invoice use code (e.g. G03)",
|
|
323
|
+
"name": "default-invoice-use",
|
|
324
|
+
"hasDynamicHelp": false,
|
|
325
|
+
"multiple": false,
|
|
326
|
+
"type": "option"
|
|
327
|
+
},
|
|
328
|
+
"address-street": {
|
|
329
|
+
"description": "Street name",
|
|
330
|
+
"name": "address-street",
|
|
331
|
+
"hasDynamicHelp": false,
|
|
332
|
+
"multiple": false,
|
|
333
|
+
"type": "option"
|
|
334
|
+
},
|
|
335
|
+
"address-exterior": {
|
|
336
|
+
"description": "Exterior number",
|
|
337
|
+
"name": "address-exterior",
|
|
338
|
+
"hasDynamicHelp": false,
|
|
339
|
+
"multiple": false,
|
|
340
|
+
"type": "option"
|
|
341
|
+
},
|
|
342
|
+
"address-interior": {
|
|
343
|
+
"description": "Interior number (optional)",
|
|
344
|
+
"name": "address-interior",
|
|
345
|
+
"hasDynamicHelp": false,
|
|
346
|
+
"multiple": false,
|
|
347
|
+
"type": "option"
|
|
348
|
+
},
|
|
349
|
+
"address-neighborhood": {
|
|
350
|
+
"description": "Neighborhood (colonia)",
|
|
351
|
+
"name": "address-neighborhood",
|
|
352
|
+
"hasDynamicHelp": false,
|
|
353
|
+
"multiple": false,
|
|
354
|
+
"type": "option"
|
|
355
|
+
},
|
|
356
|
+
"address-city": {
|
|
357
|
+
"description": "City",
|
|
358
|
+
"name": "address-city",
|
|
359
|
+
"hasDynamicHelp": false,
|
|
360
|
+
"multiple": false,
|
|
361
|
+
"type": "option"
|
|
362
|
+
},
|
|
363
|
+
"address-municipality": {
|
|
364
|
+
"description": "Municipality",
|
|
365
|
+
"name": "address-municipality",
|
|
366
|
+
"hasDynamicHelp": false,
|
|
367
|
+
"multiple": false,
|
|
368
|
+
"type": "option"
|
|
369
|
+
},
|
|
370
|
+
"address-zip": {
|
|
371
|
+
"description": "ZIP code (5 digits)",
|
|
372
|
+
"name": "address-zip",
|
|
373
|
+
"hasDynamicHelp": false,
|
|
374
|
+
"multiple": false,
|
|
375
|
+
"type": "option"
|
|
376
|
+
},
|
|
377
|
+
"address-state": {
|
|
378
|
+
"description": "State",
|
|
379
|
+
"name": "address-state",
|
|
380
|
+
"hasDynamicHelp": false,
|
|
381
|
+
"multiple": false,
|
|
382
|
+
"type": "option"
|
|
383
|
+
},
|
|
384
|
+
"address-country": {
|
|
385
|
+
"description": "Country code (default: MEX)",
|
|
386
|
+
"name": "address-country",
|
|
387
|
+
"hasDynamicHelp": false,
|
|
388
|
+
"multiple": false,
|
|
389
|
+
"type": "option"
|
|
390
|
+
}
|
|
391
|
+
},
|
|
392
|
+
"hasDynamicHelp": false,
|
|
393
|
+
"hiddenAliases": [],
|
|
394
|
+
"id": "customers:create",
|
|
395
|
+
"pluginAlias": "@timbrix/cli",
|
|
396
|
+
"pluginName": "@timbrix/cli",
|
|
397
|
+
"pluginType": "core",
|
|
398
|
+
"strict": true,
|
|
399
|
+
"enableJsonFlag": false,
|
|
400
|
+
"isESM": true,
|
|
401
|
+
"relativePath": [
|
|
402
|
+
"dist",
|
|
403
|
+
"commands",
|
|
404
|
+
"customers",
|
|
405
|
+
"create.js"
|
|
406
|
+
]
|
|
407
|
+
},
|
|
408
|
+
"customers:delete": {
|
|
409
|
+
"aliases": [],
|
|
410
|
+
"args": {},
|
|
411
|
+
"description": "Delete a customer",
|
|
412
|
+
"examples": [
|
|
413
|
+
"<%= config.bin %> <%= command.id %> --org acme-corp-id --id customer-uuid",
|
|
414
|
+
"<%= config.bin %> <%= command.id %> --org acme-corp-id --id customer-uuid --force"
|
|
415
|
+
],
|
|
416
|
+
"flags": {
|
|
417
|
+
"org": {
|
|
418
|
+
"char": "o",
|
|
419
|
+
"description": "Organization ID",
|
|
420
|
+
"name": "org",
|
|
421
|
+
"required": true,
|
|
422
|
+
"hasDynamicHelp": false,
|
|
423
|
+
"multiple": false,
|
|
424
|
+
"type": "option"
|
|
425
|
+
},
|
|
426
|
+
"id": {
|
|
427
|
+
"description": "Customer ID",
|
|
428
|
+
"name": "id",
|
|
429
|
+
"required": true,
|
|
430
|
+
"hasDynamicHelp": false,
|
|
431
|
+
"multiple": false,
|
|
432
|
+
"type": "option"
|
|
433
|
+
},
|
|
434
|
+
"force": {
|
|
435
|
+
"char": "f",
|
|
436
|
+
"description": "Skip confirmation prompt",
|
|
437
|
+
"name": "force",
|
|
438
|
+
"allowNo": false,
|
|
439
|
+
"type": "boolean"
|
|
440
|
+
}
|
|
441
|
+
},
|
|
442
|
+
"hasDynamicHelp": false,
|
|
443
|
+
"hiddenAliases": [],
|
|
444
|
+
"id": "customers:delete",
|
|
445
|
+
"pluginAlias": "@timbrix/cli",
|
|
446
|
+
"pluginName": "@timbrix/cli",
|
|
447
|
+
"pluginType": "core",
|
|
448
|
+
"strict": true,
|
|
449
|
+
"enableJsonFlag": false,
|
|
450
|
+
"isESM": true,
|
|
451
|
+
"relativePath": [
|
|
452
|
+
"dist",
|
|
453
|
+
"commands",
|
|
454
|
+
"customers",
|
|
455
|
+
"delete.js"
|
|
456
|
+
]
|
|
457
|
+
},
|
|
458
|
+
"customers:list": {
|
|
459
|
+
"aliases": [],
|
|
460
|
+
"args": {},
|
|
461
|
+
"description": "List all customers for an organization",
|
|
462
|
+
"examples": [
|
|
463
|
+
"<%= config.bin %> <%= command.id %> --org acme-corp-id"
|
|
464
|
+
],
|
|
465
|
+
"flags": {
|
|
466
|
+
"org": {
|
|
467
|
+
"char": "o",
|
|
468
|
+
"description": "Organization ID",
|
|
469
|
+
"name": "org",
|
|
470
|
+
"required": true,
|
|
471
|
+
"hasDynamicHelp": false,
|
|
472
|
+
"multiple": false,
|
|
473
|
+
"type": "option"
|
|
474
|
+
}
|
|
475
|
+
},
|
|
476
|
+
"hasDynamicHelp": false,
|
|
477
|
+
"hiddenAliases": [],
|
|
478
|
+
"id": "customers:list",
|
|
479
|
+
"pluginAlias": "@timbrix/cli",
|
|
480
|
+
"pluginName": "@timbrix/cli",
|
|
481
|
+
"pluginType": "core",
|
|
482
|
+
"strict": true,
|
|
483
|
+
"enableJsonFlag": false,
|
|
484
|
+
"isESM": true,
|
|
485
|
+
"relativePath": [
|
|
486
|
+
"dist",
|
|
487
|
+
"commands",
|
|
488
|
+
"customers",
|
|
489
|
+
"list.js"
|
|
490
|
+
]
|
|
491
|
+
},
|
|
265
492
|
"oauth-apps:create": {
|
|
266
493
|
"aliases": [],
|
|
267
494
|
"args": {},
|
|
@@ -1048,7 +1275,98 @@
|
|
|
1048
1275
|
"webhooks",
|
|
1049
1276
|
"list.js"
|
|
1050
1277
|
]
|
|
1278
|
+
},
|
|
1279
|
+
"sat:regimenes:list": {
|
|
1280
|
+
"aliases": [],
|
|
1281
|
+
"args": {},
|
|
1282
|
+
"description": "List SAT régimenes fiscales",
|
|
1283
|
+
"examples": [
|
|
1284
|
+
"<%= config.bin %> <%= command.id %>",
|
|
1285
|
+
"<%= config.bin %> <%= command.id %> --tipo-persona fisica",
|
|
1286
|
+
"<%= config.bin %> <%= command.id %> --tipo-persona moral"
|
|
1287
|
+
],
|
|
1288
|
+
"flags": {
|
|
1289
|
+
"tipo-persona": {
|
|
1290
|
+
"char": "t",
|
|
1291
|
+
"description": "Filter by persona type",
|
|
1292
|
+
"name": "tipo-persona",
|
|
1293
|
+
"hasDynamicHelp": false,
|
|
1294
|
+
"multiple": false,
|
|
1295
|
+
"options": [
|
|
1296
|
+
"fisica",
|
|
1297
|
+
"moral",
|
|
1298
|
+
"ambas"
|
|
1299
|
+
],
|
|
1300
|
+
"type": "option"
|
|
1301
|
+
}
|
|
1302
|
+
},
|
|
1303
|
+
"hasDynamicHelp": false,
|
|
1304
|
+
"hiddenAliases": [],
|
|
1305
|
+
"id": "sat:regimenes:list",
|
|
1306
|
+
"pluginAlias": "@timbrix/cli",
|
|
1307
|
+
"pluginName": "@timbrix/cli",
|
|
1308
|
+
"pluginType": "core",
|
|
1309
|
+
"strict": true,
|
|
1310
|
+
"enableJsonFlag": false,
|
|
1311
|
+
"isESM": true,
|
|
1312
|
+
"relativePath": [
|
|
1313
|
+
"dist",
|
|
1314
|
+
"commands",
|
|
1315
|
+
"sat",
|
|
1316
|
+
"regimenes",
|
|
1317
|
+
"list.js"
|
|
1318
|
+
]
|
|
1319
|
+
},
|
|
1320
|
+
"sat:usos-cfdi:list": {
|
|
1321
|
+
"aliases": [],
|
|
1322
|
+
"args": {},
|
|
1323
|
+
"description": "List SAT usos de CFDI",
|
|
1324
|
+
"examples": [
|
|
1325
|
+
"<%= config.bin %> <%= command.id %>",
|
|
1326
|
+
"<%= config.bin %> <%= command.id %> --tipo-persona fisica",
|
|
1327
|
+
"<%= config.bin %> <%= command.id %> --regimen 601",
|
|
1328
|
+
"<%= config.bin %> <%= command.id %> --regimen 601 --tipo-persona moral"
|
|
1329
|
+
],
|
|
1330
|
+
"flags": {
|
|
1331
|
+
"tipo-persona": {
|
|
1332
|
+
"char": "t",
|
|
1333
|
+
"description": "Filter by persona type",
|
|
1334
|
+
"name": "tipo-persona",
|
|
1335
|
+
"hasDynamicHelp": false,
|
|
1336
|
+
"multiple": false,
|
|
1337
|
+
"options": [
|
|
1338
|
+
"fisica",
|
|
1339
|
+
"moral",
|
|
1340
|
+
"ambas"
|
|
1341
|
+
],
|
|
1342
|
+
"type": "option"
|
|
1343
|
+
},
|
|
1344
|
+
"regimen": {
|
|
1345
|
+
"char": "r",
|
|
1346
|
+
"description": "Filter by régimen fiscal code (e.g. 601)",
|
|
1347
|
+
"name": "regimen",
|
|
1348
|
+
"hasDynamicHelp": false,
|
|
1349
|
+
"multiple": false,
|
|
1350
|
+
"type": "option"
|
|
1351
|
+
}
|
|
1352
|
+
},
|
|
1353
|
+
"hasDynamicHelp": false,
|
|
1354
|
+
"hiddenAliases": [],
|
|
1355
|
+
"id": "sat:usos-cfdi:list",
|
|
1356
|
+
"pluginAlias": "@timbrix/cli",
|
|
1357
|
+
"pluginName": "@timbrix/cli",
|
|
1358
|
+
"pluginType": "core",
|
|
1359
|
+
"strict": true,
|
|
1360
|
+
"enableJsonFlag": false,
|
|
1361
|
+
"isESM": true,
|
|
1362
|
+
"relativePath": [
|
|
1363
|
+
"dist",
|
|
1364
|
+
"commands",
|
|
1365
|
+
"sat",
|
|
1366
|
+
"usos-cfdi",
|
|
1367
|
+
"list.js"
|
|
1368
|
+
]
|
|
1051
1369
|
}
|
|
1052
1370
|
},
|
|
1053
|
-
"version": "0.1
|
|
1371
|
+
"version": "0.3.1"
|
|
1054
1372
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@timbrix/cli",
|
|
3
|
-
"version": "0.1
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"description": "CLI tool for Timbrix API",
|
|
5
5
|
"author": "Ivan Sotelo",
|
|
6
6
|
"bin": {
|
|
@@ -21,27 +21,32 @@
|
|
|
21
21
|
"oclif"
|
|
22
22
|
],
|
|
23
23
|
"license": "MIT",
|
|
24
|
+
"publishConfig": {
|
|
25
|
+
"access": "public",
|
|
26
|
+
"registry": "https://registry.npmjs.org/"
|
|
27
|
+
},
|
|
24
28
|
"dependencies": {
|
|
25
|
-
"@inquirer/prompts": "^8.
|
|
26
|
-
"@oclif/core": "^4.
|
|
27
|
-
"@oclif/plugin-help": "^6.2.
|
|
28
|
-
"@oclif/plugin-plugins": "^5.4.
|
|
29
|
-
"chalk": "^
|
|
29
|
+
"@inquirer/prompts": "^8.5.2",
|
|
30
|
+
"@oclif/core": "^4.13.2",
|
|
31
|
+
"@oclif/plugin-help": "^6.2.55",
|
|
32
|
+
"@oclif/plugin-plugins": "^5.4.86",
|
|
33
|
+
"chalk": "^6.0.0",
|
|
30
34
|
"cli-table3": "^0.6.5",
|
|
31
35
|
"conf": "^15.1.0",
|
|
32
|
-
"ky": "^
|
|
33
|
-
"ora": "^9.
|
|
36
|
+
"ky": "^2.0.2",
|
|
37
|
+
"ora": "^9.4.1",
|
|
34
38
|
"update-notifier": "^7.3.1",
|
|
35
|
-
"@timbrix/sdk": "0.1
|
|
39
|
+
"@timbrix/sdk": "0.3.1"
|
|
36
40
|
},
|
|
37
41
|
"devDependencies": {
|
|
38
|
-
"@types/node": "^
|
|
42
|
+
"@types/node": "^26.1.2",
|
|
39
43
|
"@types/update-notifier": "^6.0.8",
|
|
40
|
-
"
|
|
44
|
+
"eslint": "^10.8.0",
|
|
45
|
+
"oclif": "^4.23.29",
|
|
41
46
|
"shx": "^0.4.0",
|
|
42
|
-
"tsx": "^4.
|
|
43
|
-
"typescript": "^
|
|
44
|
-
"@repo/eslint-config": "0.1.
|
|
47
|
+
"tsx": "^4.23.1",
|
|
48
|
+
"typescript": "^6.0.3",
|
|
49
|
+
"@repo/eslint-config": "0.1.1",
|
|
45
50
|
"@repo/typescript-config": "0.1.0"
|
|
46
51
|
},
|
|
47
52
|
"oclif": {
|
|
@@ -60,7 +65,7 @@
|
|
|
60
65
|
"topicSeparator": " "
|
|
61
66
|
},
|
|
62
67
|
"engines": {
|
|
63
|
-
"node": ">=
|
|
68
|
+
"node": ">=24.0.0"
|
|
64
69
|
},
|
|
65
70
|
"scripts": {
|
|
66
71
|
"build": "shx rm -rf dist && tsc -b",
|