@forjio/fulkruma-cli 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/bin/cli.js +2 -0
  2. package/dist/commands/addresses.d.ts +5 -0
  3. package/dist/commands/addresses.js +90 -0
  4. package/dist/commands/addresses.js.map +1 -0
  5. package/dist/commands/api-keys.d.ts +5 -0
  6. package/dist/commands/api-keys.js +78 -0
  7. package/dist/commands/api-keys.js.map +1 -0
  8. package/dist/commands/api.generated.d.ts +23 -0
  9. package/dist/commands/api.generated.js +2003 -0
  10. package/dist/commands/api.generated.js.map +1 -0
  11. package/dist/commands/audit-log.d.ts +5 -0
  12. package/dist/commands/audit-log.js +46 -0
  13. package/dist/commands/audit-log.js.map +1 -0
  14. package/dist/commands/auth.d.ts +10 -0
  15. package/dist/commands/auth.js +116 -0
  16. package/dist/commands/auth.js.map +1 -0
  17. package/dist/commands/billing.d.ts +5 -0
  18. package/dist/commands/billing.js +144 -0
  19. package/dist/commands/billing.js.map +1 -0
  20. package/dist/commands/deliveries.d.ts +5 -0
  21. package/dist/commands/deliveries.js +77 -0
  22. package/dist/commands/deliveries.js.map +1 -0
  23. package/dist/commands/integrations.d.ts +5 -0
  24. package/dist/commands/integrations.js +24 -0
  25. package/dist/commands/integrations.js.map +1 -0
  26. package/dist/commands/licenses.d.ts +5 -0
  27. package/dist/commands/licenses.js +142 -0
  28. package/dist/commands/licenses.js.map +1 -0
  29. package/dist/commands/products.d.ts +12 -0
  30. package/dist/commands/products.js +244 -0
  31. package/dist/commands/products.js.map +1 -0
  32. package/dist/commands/shipments.d.ts +6 -0
  33. package/dist/commands/shipments.js +108 -0
  34. package/dist/commands/shipments.js.map +1 -0
  35. package/dist/commands/shipping.d.ts +2 -0
  36. package/dist/commands/shipping.js +269 -0
  37. package/dist/commands/shipping.js.map +1 -0
  38. package/dist/commands/stats.d.ts +5 -0
  39. package/dist/commands/stats.js +24 -0
  40. package/dist/commands/stats.js.map +1 -0
  41. package/dist/commands/stock.d.ts +5 -0
  42. package/dist/commands/stock.js +112 -0
  43. package/dist/commands/stock.js.map +1 -0
  44. package/dist/commands/warehouses.d.ts +5 -0
  45. package/dist/commands/warehouses.js +111 -0
  46. package/dist/commands/warehouses.js.map +1 -0
  47. package/dist/commands/webhooks.d.ts +5 -0
  48. package/dist/commands/webhooks.js +125 -0
  49. package/dist/commands/webhooks.js.map +1 -0
  50. package/dist/index.d.ts +14 -0
  51. package/dist/index.js +77 -0
  52. package/dist/index.js.map +1 -0
  53. package/dist/lib/apigen-call.d.ts +4 -0
  54. package/dist/lib/apigen-call.js +34 -0
  55. package/dist/lib/apigen-call.js.map +1 -0
  56. package/dist/lib/client.d.ts +21 -0
  57. package/dist/lib/client.js +41 -0
  58. package/dist/lib/client.js.map +1 -0
  59. package/dist/lib/credentials.d.ts +25 -0
  60. package/dist/lib/credentials.js +158 -0
  61. package/dist/lib/credentials.js.map +1 -0
  62. package/dist/lib/output.d.ts +19 -0
  63. package/dist/lib/output.js +69 -0
  64. package/dist/lib/output.js.map +1 -0
  65. package/dist/lib/util.d.ts +18 -0
  66. package/dist/lib/util.js +65 -0
  67. package/dist/lib/util.js.map +1 -0
  68. package/package.json +35 -0
@@ -0,0 +1,142 @@
1
+ /**
2
+ * `fulkruma licenses …` — list, issue, revoke, validate, activate, deactivate.
3
+ */
4
+ import { Command } from 'commander';
5
+ import { getClient } from '../lib/client.js';
6
+ import { formatOpts, getGlobalOpts, handleError, parseIntArg } from '../lib/util.js';
7
+ import { printResult } from '../lib/output.js';
8
+ const licenseColumns = [
9
+ { header: 'ID', accessor: (l) => l.id },
10
+ { header: 'Key', accessor: (l) => l.key },
11
+ { header: 'Product', accessor: (l) => l.productId },
12
+ { header: 'Customer', accessor: (l) => l.customerId },
13
+ { header: 'Status', accessor: (l) => l.status },
14
+ { header: 'Activations', accessor: (l) => `${l.activations}/${l.maxActivations}` },
15
+ { header: 'Expires', accessor: (l) => l.expiresAt },
16
+ ];
17
+ export const licensesCommand = new Command('licenses').description('Software license keys');
18
+ licensesCommand
19
+ .command('list')
20
+ .description('List licenses')
21
+ .action(async (_options, cmd) => {
22
+ const g = getGlobalOpts(cmd);
23
+ try {
24
+ const client = getClient(g);
25
+ const { licenses } = await client.licenses.list();
26
+ printResult(licenses, licenseColumns, formatOpts(g));
27
+ process.exit(0);
28
+ }
29
+ catch (err) {
30
+ handleError(err, g);
31
+ }
32
+ });
33
+ licensesCommand
34
+ .command('issue')
35
+ .description('Issue a new license')
36
+ .requiredOption('--product-id <id>', 'product id')
37
+ .requiredOption('--customer-id <id>', 'customer id')
38
+ .option('--max-activations <n>', 'maximum activations', parseIntArg)
39
+ .option('--expires-at <iso>', 'ISO-8601 expiry timestamp')
40
+ .option('--external-source <name>', 'external source')
41
+ .option('--external-ref <id>', 'external reference id')
42
+ .action(async (options, cmd) => {
43
+ const g = getGlobalOpts(cmd);
44
+ try {
45
+ const client = getClient(g);
46
+ const { license } = await client.licenses.issue({
47
+ productId: options['productId'],
48
+ customerId: options['customerId'],
49
+ maxActivations: options['maxActivations'],
50
+ expiresAt: options['expiresAt'],
51
+ externalSource: options['externalSource'],
52
+ externalRef: options['externalRef'],
53
+ });
54
+ printResult(license, licenseColumns, formatOpts(g));
55
+ process.exit(0);
56
+ }
57
+ catch (err) {
58
+ handleError(err, g);
59
+ }
60
+ });
61
+ licensesCommand
62
+ .command('revoke <id>')
63
+ .description('Revoke a license')
64
+ .action(async (id, _options, cmd) => {
65
+ const g = getGlobalOpts(cmd);
66
+ try {
67
+ const client = getClient(g);
68
+ const { license } = await client.licenses.revoke(id);
69
+ printResult(license, licenseColumns, formatOpts(g));
70
+ process.exit(0);
71
+ }
72
+ catch (err) {
73
+ handleError(err, g);
74
+ }
75
+ });
76
+ licensesCommand
77
+ .command('validate <key>')
78
+ .description('Validate a license key')
79
+ .option('--product-id <id>', 'product id (optional, narrows match)')
80
+ .action(async (key, options, cmd) => {
81
+ const g = getGlobalOpts(cmd);
82
+ try {
83
+ const client = getClient(g);
84
+ const result = await client.licenses.validate({
85
+ key,
86
+ productId: options.productId,
87
+ });
88
+ printResult(result, [
89
+ { header: 'Key', accessor: (r) => r.key },
90
+ { header: 'Valid', accessor: (r) => r.valid },
91
+ { header: 'Status', accessor: (r) => r.status },
92
+ { header: 'Product', accessor: (r) => r.productId },
93
+ { header: 'Activations', accessor: (r) => `${r.activations ?? 0}/${r.maxActivations ?? 0}` },
94
+ { header: 'Expires', accessor: (r) => r.expiresAt },
95
+ ], formatOpts(g));
96
+ process.exit(0);
97
+ }
98
+ catch (err) {
99
+ handleError(err, g);
100
+ }
101
+ });
102
+ licensesCommand
103
+ .command('activate <key> <instanceId>')
104
+ .description('Activate a license for a specific instance')
105
+ .action(async (key, instanceId, _options, cmd) => {
106
+ const g = getGlobalOpts(cmd);
107
+ try {
108
+ const client = getClient(g);
109
+ const result = await client.licenses.activate({ key, instanceId });
110
+ printResult(result, [
111
+ { header: 'Key', accessor: (r) => r.license.key },
112
+ { header: 'Status', accessor: (r) => r.license.status },
113
+ { header: 'Activations', accessor: (r) => `${r.license.activations}/${r.license.maxActivations}` },
114
+ { header: 'Instance', accessor: (r) => r.activation.instanceId },
115
+ { header: 'Already Active', accessor: (r) => r.alreadyActive },
116
+ ], formatOpts(g));
117
+ process.exit(0);
118
+ }
119
+ catch (err) {
120
+ handleError(err, g);
121
+ }
122
+ });
123
+ licensesCommand
124
+ .command('deactivate <key> <instanceId>')
125
+ .description('Release a previously-activated instance')
126
+ .action(async (key, instanceId, _options, cmd) => {
127
+ const g = getGlobalOpts(cmd);
128
+ try {
129
+ const client = getClient(g);
130
+ const result = await client.licenses.deactivate({ key, instanceId });
131
+ printResult(result, [
132
+ { header: 'Deactivated', accessor: (r) => r.deactivated },
133
+ { header: 'Already Deactivated', accessor: (r) => r.alreadyDeactivated },
134
+ { header: 'Activations', accessor: (r) => r.activations },
135
+ ], formatOpts(g));
136
+ process.exit(0);
137
+ }
138
+ catch (err) {
139
+ handleError(err, g);
140
+ }
141
+ });
142
+ //# sourceMappingURL=licenses.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"licenses.js","sourceRoot":"","sources":["../../src/commands/licenses.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * `fulkruma products …` — list, get, create, update, archive.
3
+ *
4
+ * Includes a `variants` subgroup (list/get/create/update/archive). The
5
+ * SDK exposes addVariant/updateVariant/archiveVariant directly, but does
6
+ * not have variant list/get endpoints — variants are returned as part of
7
+ * the parent product, so list+get derive from `products.get(id).variants`.
8
+ *
9
+ * All calls go through `FulkrumaClient.products` from `@forjio/fulkruma-node`.
10
+ */
11
+ import { Command } from 'commander';
12
+ export declare const productsCommand: Command;
@@ -0,0 +1,244 @@
1
+ /**
2
+ * `fulkruma products …` — list, get, create, update, archive.
3
+ *
4
+ * Includes a `variants` subgroup (list/get/create/update/archive). The
5
+ * SDK exposes addVariant/updateVariant/archiveVariant directly, but does
6
+ * not have variant list/get endpoints — variants are returned as part of
7
+ * the parent product, so list+get derive from `products.get(id).variants`.
8
+ *
9
+ * All calls go through `FulkrumaClient.products` from `@forjio/fulkruma-node`.
10
+ */
11
+ import { Command } from 'commander';
12
+ import { getClient } from '../lib/client.js';
13
+ import { formatOpts, getGlobalOpts, handleError, parseBody, parseIntArg } from '../lib/util.js';
14
+ import { printResult } from '../lib/output.js';
15
+ const productColumns = [
16
+ { header: 'ID', accessor: (p) => p.id },
17
+ { header: 'Name', accessor: (p) => p.name },
18
+ { header: 'SKU', accessor: (p) => p.sku },
19
+ { header: 'Type', accessor: (p) => p.type },
20
+ { header: 'Archived', accessor: (p) => p.archived },
21
+ { header: 'Variants', accessor: (p) => p.variants?.length ?? 0 },
22
+ ];
23
+ export const productsCommand = new Command('products').description('Manage products');
24
+ productsCommand
25
+ .command('list')
26
+ .description('List products')
27
+ .option('--archived', 'include archived products')
28
+ .action(async (options, cmd) => {
29
+ const g = getGlobalOpts(cmd);
30
+ try {
31
+ const client = getClient(g);
32
+ const { products } = await client.products.list(options.archived ? { archived: true } : undefined);
33
+ printResult(products, productColumns, formatOpts(g));
34
+ process.exit(0);
35
+ }
36
+ catch (err) {
37
+ handleError(err, g);
38
+ }
39
+ });
40
+ productsCommand
41
+ .command('get <id>')
42
+ .description('Get a single product')
43
+ .action(async (id, _options, cmd) => {
44
+ const g = getGlobalOpts(cmd);
45
+ try {
46
+ const client = getClient(g);
47
+ const { product } = await client.products.get(id);
48
+ printResult(product, productColumns, formatOpts(g));
49
+ process.exit(0);
50
+ }
51
+ catch (err) {
52
+ handleError(err, g);
53
+ }
54
+ });
55
+ productsCommand
56
+ .command('create')
57
+ .description('Create a product')
58
+ .requiredOption('--name <name>', 'product name')
59
+ .option('--sku <sku>', 'SKU')
60
+ .option('--description <text>', 'description')
61
+ .option('--type <type>', 'product type: physical|digital|license', 'physical')
62
+ .option('--weight <grams>', 'weight in grams', parseIntArg)
63
+ .option('--license-enabled', 'enable license issuance')
64
+ .option('--max-activations <n>', 'max activations per license', parseIntArg)
65
+ .action(async (options, cmd) => {
66
+ const g = getGlobalOpts(cmd);
67
+ try {
68
+ const client = getClient(g);
69
+ const { product } = await client.products.create({
70
+ name: options['name'],
71
+ sku: options['sku'],
72
+ description: options['description'],
73
+ type: options['type'],
74
+ weight: options['weight'],
75
+ licenseEnabled: options['licenseEnabled'],
76
+ maxActivations: options['maxActivations'],
77
+ });
78
+ printResult(product, productColumns, formatOpts(g));
79
+ process.exit(0);
80
+ }
81
+ catch (err) {
82
+ handleError(err, g);
83
+ }
84
+ });
85
+ productsCommand
86
+ .command('update <id>')
87
+ .description('Update a product')
88
+ .option('--name <name>', 'product name')
89
+ .option('--sku <sku>', 'SKU')
90
+ .option('--description <text>', 'description')
91
+ .option('--type <type>', 'product type: physical|digital|license')
92
+ .option('--weight <grams>', 'weight in grams', parseIntArg)
93
+ .option('--license-enabled <bool>', 'enable license issuance (true|false)')
94
+ .option('--max-activations <n>', 'max activations per license', parseIntArg)
95
+ .action(async (id, options, cmd) => {
96
+ const g = getGlobalOpts(cmd);
97
+ try {
98
+ const client = getClient(g);
99
+ const patch = {};
100
+ if (options['name'] !== undefined)
101
+ patch['name'] = options['name'];
102
+ if (options['sku'] !== undefined)
103
+ patch['sku'] = options['sku'];
104
+ if (options['description'] !== undefined)
105
+ patch['description'] = options['description'];
106
+ if (options['type'] !== undefined)
107
+ patch['type'] = options['type'];
108
+ if (options['weight'] !== undefined)
109
+ patch['weight'] = options['weight'];
110
+ if (options['licenseEnabled'] !== undefined) {
111
+ patch['licenseEnabled'] = options['licenseEnabled'] === 'true' || options['licenseEnabled'] === true;
112
+ }
113
+ if (options['maxActivations'] !== undefined)
114
+ patch['maxActivations'] = options['maxActivations'];
115
+ const { product } = await client.products.update(id, patch);
116
+ printResult(product, productColumns, formatOpts(g));
117
+ process.exit(0);
118
+ }
119
+ catch (err) {
120
+ handleError(err, g);
121
+ }
122
+ });
123
+ productsCommand
124
+ .command('archive <id>')
125
+ .description('Archive a product')
126
+ .action(async (id, _options, cmd) => {
127
+ const g = getGlobalOpts(cmd);
128
+ try {
129
+ const client = getClient(g);
130
+ const result = await client.products.archive(id);
131
+ printResult({ id, archived: result.archived }, [
132
+ { header: 'ID', accessor: (r) => r.id },
133
+ { header: 'Archived', accessor: (r) => r.archived },
134
+ ], formatOpts(g));
135
+ process.exit(0);
136
+ }
137
+ catch (err) {
138
+ handleError(err, g);
139
+ }
140
+ });
141
+ // ─── Variants ────────────────────────────────────────────────
142
+ const variantColumns = [
143
+ { header: 'ID', accessor: (v) => v.id },
144
+ { header: 'Name', accessor: (v) => v.name },
145
+ { header: 'SKU', accessor: (v) => v.sku },
146
+ { header: 'Price', accessor: (v) => v.priceCents },
147
+ { header: 'Default', accessor: (v) => v.isDefault },
148
+ { header: 'Archived', accessor: (v) => v.archived },
149
+ ];
150
+ const variantsCommand = new Command('variants').description('Manage product variants');
151
+ variantsCommand
152
+ .command('list <product-id>')
153
+ .description('List variants on a product (derived from products.get)')
154
+ .action(async (productId, _options, cmd) => {
155
+ const g = getGlobalOpts(cmd);
156
+ try {
157
+ const client = getClient(g);
158
+ const { product } = await client.products.get(productId);
159
+ const variants = product.variants ?? [];
160
+ printResult(variants, variantColumns, formatOpts(g));
161
+ process.exit(0);
162
+ }
163
+ catch (err) {
164
+ handleError(err, g);
165
+ }
166
+ });
167
+ variantsCommand
168
+ .command('get <product-id> <variant-id>')
169
+ .description('Get a single variant (filters products.get response)')
170
+ .action(async (productId, variantId, _options, cmd) => {
171
+ const g = getGlobalOpts(cmd);
172
+ try {
173
+ const client = getClient(g);
174
+ const { product } = await client.products.get(productId);
175
+ const variant = (product.variants ?? []).find((v) => v.id === variantId);
176
+ if (!variant) {
177
+ throw new Error(`variant ${variantId} not found on product ${productId}`);
178
+ }
179
+ printResult(variant, variantColumns, formatOpts(g));
180
+ process.exit(0);
181
+ }
182
+ catch (err) {
183
+ handleError(err, g);
184
+ }
185
+ });
186
+ variantsCommand
187
+ .command('create <product-id>')
188
+ .description('Create a variant on a product (use --body for JSON payload)')
189
+ .requiredOption('--body <json>', 'variant payload (inline JSON, @file, or "-")')
190
+ .action(async (productId, options, cmd) => {
191
+ const g = getGlobalOpts(cmd);
192
+ try {
193
+ const client = getClient(g);
194
+ const body = parseBody(options.body);
195
+ if (!body)
196
+ throw new Error('--body is required');
197
+ const { variant } = await client.products.addVariant(productId, body);
198
+ printResult(variant, variantColumns, formatOpts(g));
199
+ process.exit(0);
200
+ }
201
+ catch (err) {
202
+ handleError(err, g);
203
+ }
204
+ });
205
+ variantsCommand
206
+ .command('update <product-id> <variant-id>')
207
+ .description('Update a variant (use --body for JSON patch)')
208
+ .requiredOption('--body <json>', 'variant patch (inline JSON, @file, or "-")')
209
+ .action(async (productId, variantId, options, cmd) => {
210
+ const g = getGlobalOpts(cmd);
211
+ try {
212
+ const client = getClient(g);
213
+ const body = parseBody(options.body);
214
+ if (!body)
215
+ throw new Error('--body is required');
216
+ const { variant } = await client.products.updateVariant(productId, variantId, body);
217
+ printResult(variant, variantColumns, formatOpts(g));
218
+ process.exit(0);
219
+ }
220
+ catch (err) {
221
+ handleError(err, g);
222
+ }
223
+ });
224
+ variantsCommand
225
+ .command('archive <product-id> <variant-id>')
226
+ .description('Archive a variant')
227
+ .action(async (productId, variantId, _options, cmd) => {
228
+ const g = getGlobalOpts(cmd);
229
+ try {
230
+ const client = getClient(g);
231
+ const result = await client.products.archiveVariant(productId, variantId);
232
+ printResult({ productId, variantId, archived: result.archived }, [
233
+ { header: 'Product', accessor: (r) => r.productId },
234
+ { header: 'Variant', accessor: (r) => r.variantId },
235
+ { header: 'Archived', accessor: (r) => r.archived },
236
+ ], formatOpts(g));
237
+ process.exit(0);
238
+ }
239
+ catch (err) {
240
+ handleError(err, g);
241
+ }
242
+ });
243
+ productsCommand.addCommand(variantsCommand);
244
+ //# sourceMappingURL=products.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"products.js","sourceRoot":"","sources":["../../src/commands/products.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * `fulkruma shipments …` — list, get, create. Creates accept a JSON body
3
+ * via --body for non-trivial origin/destination/items payloads.
4
+ */
5
+ import { Command } from 'commander';
6
+ export declare const shipmentsCommand: Command;
@@ -0,0 +1,108 @@
1
+ /**
2
+ * `fulkruma shipments …` — list, get, create. Creates accept a JSON body
3
+ * via --body for non-trivial origin/destination/items payloads.
4
+ */
5
+ import { Command } from 'commander';
6
+ import { getClient } from '../lib/client.js';
7
+ import { formatOpts, getGlobalOpts, handleError, parseBody, parseIntArg } from '../lib/util.js';
8
+ import { printResult } from '../lib/output.js';
9
+ const shipmentColumns = [
10
+ { header: 'ID', accessor: (s) => s.id },
11
+ { header: 'Status', accessor: (s) => s.status },
12
+ { header: 'Courier', accessor: (s) => `${s.courierCode}/${s.courierServiceCode}` },
13
+ { header: 'Tracking', accessor: (s) => s.biteshipTrackingId },
14
+ { header: 'Customer', accessor: (s) => s.customerEmail ?? s.customerId },
15
+ { header: 'Price', accessor: (s) => s.price },
16
+ ];
17
+ export const shipmentsCommand = new Command('shipments').description('Manage shipments');
18
+ shipmentsCommand
19
+ .command('list')
20
+ .description('List shipments')
21
+ .option('--status <status>', 'filter by status (pending|confirmed|in_transit|delivered|…)')
22
+ .action(async (options, cmd) => {
23
+ const g = getGlobalOpts(cmd);
24
+ try {
25
+ const client = getClient(g);
26
+ const { shipments } = await client.shipments.list(options.status ? { status: options.status } : undefined);
27
+ printResult(shipments, shipmentColumns, formatOpts(g));
28
+ process.exit(0);
29
+ }
30
+ catch (err) {
31
+ handleError(err, g);
32
+ }
33
+ });
34
+ shipmentsCommand
35
+ .command('get <id>')
36
+ .description('Get a single shipment')
37
+ .action(async (id, _options, cmd) => {
38
+ const g = getGlobalOpts(cmd);
39
+ try {
40
+ const client = getClient(g);
41
+ const { shipment } = await client.shipments.get(id);
42
+ printResult(shipment, shipmentColumns, formatOpts(g));
43
+ process.exit(0);
44
+ }
45
+ catch (err) {
46
+ handleError(err, g);
47
+ }
48
+ });
49
+ shipmentsCommand
50
+ .command('create')
51
+ .description('Create a shipment. Accepts a JSON body via --body for the full payload, ' +
52
+ 'or use --courier-code / --courier-service-code / --courier-type / --price ' +
53
+ 'with --origin/--destination/--items as JSON strings.')
54
+ .option('--body <json>', 'full JSON body (or @file or "-" for stdin)')
55
+ .option('--courier-code <code>', 'courier code (e.g. jne)')
56
+ .option('--courier-service-code <code>', 'courier service code')
57
+ .option('--courier-type <type>', 'courier type (e.g. standard)')
58
+ .option('--price <cents>', 'shipping price', parseIntArg)
59
+ .option('--insurance <cents>', 'insurance price', parseIntArg)
60
+ .option('--insured', 'mark as insured')
61
+ .option('--product-id <id>', 'product id')
62
+ .option('--customer-id <id>', 'customer id')
63
+ .option('--customer-email <email>', 'customer email')
64
+ .option('--checkout-session-id <id>', 'checkout session id')
65
+ .option('--origin <json>', 'origin object as JSON string')
66
+ .option('--destination <json>', 'destination object as JSON string')
67
+ .option('--items <json>', 'items array as JSON string')
68
+ .action(async (options, cmd) => {
69
+ const g = getGlobalOpts(cmd);
70
+ try {
71
+ const client = getClient(g);
72
+ const body = parseBody(options['body']);
73
+ let payload;
74
+ if (body) {
75
+ payload = body;
76
+ }
77
+ else {
78
+ const required = ['courierCode', 'courierServiceCode', 'courierType', 'price', 'origin', 'destination', 'items'];
79
+ for (const k of required) {
80
+ if (options[k] === undefined) {
81
+ throw new Error(`missing --${k.replace(/[A-Z]/g, (m) => '-' + m.toLowerCase())} (or pass --body <json>).`);
82
+ }
83
+ }
84
+ payload = {
85
+ courierCode: options['courierCode'],
86
+ courierServiceCode: options['courierServiceCode'],
87
+ courierType: options['courierType'],
88
+ price: options['price'],
89
+ insurance: options['insurance'],
90
+ insured: options['insured'],
91
+ productId: options['productId'],
92
+ customerId: options['customerId'],
93
+ customerEmail: options['customerEmail'],
94
+ checkoutSessionId: options['checkoutSessionId'],
95
+ origin: JSON.parse(options['origin']),
96
+ destination: JSON.parse(options['destination']),
97
+ items: JSON.parse(options['items']),
98
+ };
99
+ }
100
+ const { shipment } = await client.shipments.create(payload);
101
+ printResult(shipment, shipmentColumns, formatOpts(g));
102
+ process.exit(0);
103
+ }
104
+ catch (err) {
105
+ handleError(err, g);
106
+ }
107
+ });
108
+ //# sourceMappingURL=shipments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shipments.js","sourceRoot":"","sources":["../../src/commands/shipments.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { Command } from 'commander';
2
+ export declare const shippingCommand: Command;