@ecomweb/cli 0.7.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/README.md +56 -32
  2. package/dist/base-command.d.ts +8 -0
  3. package/dist/base-command.js +43 -4
  4. package/dist/base-command.js.map +1 -1
  5. package/dist/commands/auth/login.d.ts +6 -4
  6. package/dist/commands/auth/login.js +117 -89
  7. package/dist/commands/auth/login.js.map +1 -1
  8. package/dist/commands/auth/logout.js +28 -9
  9. package/dist/commands/auth/logout.js.map +1 -1
  10. package/dist/commands/auth/profiles/delete.js +11 -0
  11. package/dist/commands/auth/profiles/delete.js.map +1 -1
  12. package/dist/commands/auth/profiles/list.js +2 -2
  13. package/dist/commands/auth/profiles/list.js.map +1 -1
  14. package/dist/commands/auth/status.js +17 -9
  15. package/dist/commands/auth/status.js.map +1 -1
  16. package/dist/commands/{auth/register.d.ts → stores/create.d.ts} +4 -3
  17. package/dist/commands/stores/create.js +68 -0
  18. package/dist/commands/stores/create.js.map +1 -0
  19. package/dist/commands/stores/current.js +1 -1
  20. package/dist/commands/stores/current.js.map +1 -1
  21. package/dist/commands/stores/list.js +3 -3
  22. package/dist/commands/stores/list.js.map +1 -1
  23. package/dist/commands/stores/switch.js +14 -6
  24. package/dist/commands/stores/switch.js.map +1 -1
  25. package/dist/lib/api-client.d.ts +5 -4
  26. package/dist/lib/api-client.js +32 -16
  27. package/dist/lib/api-client.js.map +1 -1
  28. package/dist/lib/codex-skill.d.ts +1 -1
  29. package/dist/lib/codex-skill.js +12 -8
  30. package/dist/lib/codex-skill.js.map +1 -1
  31. package/dist/lib/config.d.ts +6 -18
  32. package/dist/lib/config.js +35 -64
  33. package/dist/lib/config.js.map +1 -1
  34. package/dist/lib/credential-store.d.ts +44 -0
  35. package/dist/lib/credential-store.js +137 -0
  36. package/dist/lib/credential-store.js.map +1 -0
  37. package/dist/lib/device-login.d.ts +22 -0
  38. package/dist/lib/device-login.js +66 -0
  39. package/dist/lib/device-login.js.map +1 -0
  40. package/dist/lib/errors.d.ts +1 -0
  41. package/dist/lib/errors.js +6 -1
  42. package/dist/lib/errors.js.map +1 -1
  43. package/dist/lib/file-lock.d.ts +6 -0
  44. package/dist/lib/file-lock.js +66 -0
  45. package/dist/lib/file-lock.js.map +1 -0
  46. package/dist/lib/open-browser.d.ts +13 -0
  47. package/dist/lib/open-browser.js +38 -0
  48. package/dist/lib/open-browser.js.map +1 -0
  49. package/dist/lib/pending-login.d.ts +5 -0
  50. package/dist/lib/pending-login.js +39 -0
  51. package/dist/lib/pending-login.js.map +1 -0
  52. package/dist/lib/secure-file.d.ts +1 -0
  53. package/dist/lib/secure-file.js +15 -0
  54. package/dist/lib/secure-file.js.map +1 -0
  55. package/dist/lib/session.d.ts +40 -0
  56. package/dist/lib/session.js +80 -0
  57. package/dist/lib/session.js.map +1 -0
  58. package/dist/lib/store-selection.d.ts +19 -0
  59. package/dist/lib/store-selection.js +23 -0
  60. package/dist/lib/store-selection.js.map +1 -0
  61. package/oclif.manifest.json +227 -578
  62. package/package.json +2 -1
  63. package/dist/commands/auth/register.js +0 -35
  64. package/dist/commands/auth/register.js.map +0 -1
  65. package/dist/commands/auth/verify.d.ts +0 -20
  66. package/dist/commands/auth/verify.js +0 -43
  67. package/dist/commands/auth/verify.js.map +0 -1
  68. package/dist/commands/init.d.ts +0 -22
  69. package/dist/commands/init.js +0 -84
  70. package/dist/commands/init.js.map +0 -1
  71. package/dist/commands/setup.d.ts +0 -19
  72. package/dist/commands/setup.js +0 -186
  73. package/dist/commands/setup.js.map +0 -1
  74. package/dist/lib/email-login.d.ts +0 -35
  75. package/dist/lib/email-login.js +0 -86
  76. package/dist/lib/email-login.js.map +0 -1
@@ -279,131 +279,6 @@
279
279
  "describe.js"
280
280
  ]
281
281
  },
282
- "init": {
283
- "aliases": [],
284
- "args": {},
285
- "description": "Create a store and generate an API key (requires authenticated session)",
286
- "examples": [
287
- "ecomweb init --store-name \"My Store\"",
288
- "ecomweb init --store-name \"My Store\" --store-description \"An awesome store\"",
289
- "ecomweb init --store-name \"My Store\" --key-name \"Production Key\""
290
- ],
291
- "flags": {
292
- "store-ref": {
293
- "description": "Store ref (or env ECOMWEB_STORE_REF)",
294
- "env": "ECOMWEB_STORE_REF",
295
- "name": "store-ref",
296
- "hasDynamicHelp": false,
297
- "multiple": false,
298
- "type": "option"
299
- },
300
- "api-key": {
301
- "description": "API key (or env ECOMWEB_API_KEY)",
302
- "env": "ECOMWEB_API_KEY",
303
- "name": "api-key",
304
- "hasDynamicHelp": false,
305
- "multiple": false,
306
- "type": "option"
307
- },
308
- "api-url": {
309
- "description": "API base URL (or env ECOMWEB_API_URL)",
310
- "env": "ECOMWEB_API_URL",
311
- "name": "api-url",
312
- "hasDynamicHelp": false,
313
- "multiple": false,
314
- "type": "option"
315
- },
316
- "output": {
317
- "description": "Output format",
318
- "name": "output",
319
- "default": "json",
320
- "hasDynamicHelp": false,
321
- "multiple": false,
322
- "options": [
323
- "json",
324
- "table",
325
- "csv"
326
- ],
327
- "type": "option"
328
- },
329
- "quiet": {
330
- "description": "Suppress non-data output",
331
- "name": "quiet",
332
- "allowNo": false,
333
- "type": "boolean"
334
- },
335
- "dry-run": {
336
- "description": "Preview without executing",
337
- "name": "dry-run",
338
- "allowNo": false,
339
- "type": "boolean"
340
- },
341
- "profile": {
342
- "description": "Named config profile",
343
- "name": "profile",
344
- "hasDynamicHelp": false,
345
- "multiple": false,
346
- "type": "option"
347
- },
348
- "full": {
349
- "description": "Include all fields (content, toc, etc.)",
350
- "name": "full",
351
- "allowNo": false,
352
- "type": "boolean"
353
- },
354
- "fields": {
355
- "description": "Comma-separated field names to include",
356
- "name": "fields",
357
- "hasDynamicHelp": false,
358
- "multiple": false,
359
- "type": "option"
360
- },
361
- "exclude": {
362
- "description": "Comma-separated field names to exclude",
363
- "name": "exclude",
364
- "hasDynamicHelp": false,
365
- "multiple": false,
366
- "type": "option"
367
- },
368
- "store-name": {
369
- "description": "Name for the new store",
370
- "name": "store-name",
371
- "required": true,
372
- "hasDynamicHelp": false,
373
- "multiple": false,
374
- "type": "option"
375
- },
376
- "store-description": {
377
- "description": "Description for the new store",
378
- "name": "store-description",
379
- "hasDynamicHelp": false,
380
- "multiple": false,
381
- "type": "option"
382
- },
383
- "key-name": {
384
- "description": "Name for the generated API key",
385
- "name": "key-name",
386
- "default": "CLI Key",
387
- "hasDynamicHelp": false,
388
- "multiple": false,
389
- "type": "option"
390
- }
391
- },
392
- "hasDynamicHelp": false,
393
- "hiddenAliases": [],
394
- "id": "init",
395
- "pluginAlias": "@ecomweb/cli",
396
- "pluginName": "@ecomweb/cli",
397
- "pluginType": "core",
398
- "strict": true,
399
- "enableJsonFlag": false,
400
- "isESM": false,
401
- "relativePath": [
402
- "dist",
403
- "commands",
404
- "init.js"
405
- ]
406
- },
407
282
  "logs": {
408
283
  "aliases": [],
409
284
  "args": {
@@ -517,107 +392,6 @@
517
392
  "logs.js"
518
393
  ]
519
394
  },
520
- "setup": {
521
- "aliases": [],
522
- "args": {},
523
- "description": "Interactive setup wizard — create account, verify email, and set up your store",
524
- "examples": [
525
- "ecomweb setup",
526
- "ecomweb setup --profile staging"
527
- ],
528
- "flags": {
529
- "store-ref": {
530
- "description": "Store ref (or env ECOMWEB_STORE_REF)",
531
- "env": "ECOMWEB_STORE_REF",
532
- "name": "store-ref",
533
- "hasDynamicHelp": false,
534
- "multiple": false,
535
- "type": "option"
536
- },
537
- "api-key": {
538
- "description": "API key (or env ECOMWEB_API_KEY)",
539
- "env": "ECOMWEB_API_KEY",
540
- "name": "api-key",
541
- "hasDynamicHelp": false,
542
- "multiple": false,
543
- "type": "option"
544
- },
545
- "api-url": {
546
- "description": "API base URL (or env ECOMWEB_API_URL)",
547
- "env": "ECOMWEB_API_URL",
548
- "name": "api-url",
549
- "hasDynamicHelp": false,
550
- "multiple": false,
551
- "type": "option"
552
- },
553
- "output": {
554
- "description": "Output format",
555
- "name": "output",
556
- "default": "json",
557
- "hasDynamicHelp": false,
558
- "multiple": false,
559
- "options": [
560
- "json",
561
- "table",
562
- "csv"
563
- ],
564
- "type": "option"
565
- },
566
- "quiet": {
567
- "description": "Suppress non-data output",
568
- "name": "quiet",
569
- "allowNo": false,
570
- "type": "boolean"
571
- },
572
- "dry-run": {
573
- "description": "Preview without executing",
574
- "name": "dry-run",
575
- "allowNo": false,
576
- "type": "boolean"
577
- },
578
- "profile": {
579
- "description": "Named config profile",
580
- "name": "profile",
581
- "hasDynamicHelp": false,
582
- "multiple": false,
583
- "type": "option"
584
- },
585
- "full": {
586
- "description": "Include all fields (content, toc, etc.)",
587
- "name": "full",
588
- "allowNo": false,
589
- "type": "boolean"
590
- },
591
- "fields": {
592
- "description": "Comma-separated field names to include",
593
- "name": "fields",
594
- "hasDynamicHelp": false,
595
- "multiple": false,
596
- "type": "option"
597
- },
598
- "exclude": {
599
- "description": "Comma-separated field names to exclude",
600
- "name": "exclude",
601
- "hasDynamicHelp": false,
602
- "multiple": false,
603
- "type": "option"
604
- }
605
- },
606
- "hasDynamicHelp": false,
607
- "hiddenAliases": [],
608
- "id": "setup",
609
- "pluginAlias": "@ecomweb/cli",
610
- "pluginName": "@ecomweb/cli",
611
- "pluginType": "core",
612
- "strict": true,
613
- "enableJsonFlag": false,
614
- "isESM": false,
615
- "relativePath": [
616
- "dist",
617
- "commands",
618
- "setup.js"
619
- ]
620
- },
621
395
  "assets:bulk-delete": {
622
396
  "aliases": [],
623
397
  "args": {},
@@ -2537,294 +2311,28 @@
2537
2311
  },
2538
2312
  "fields": {
2539
2313
  "description": "Comma-separated field names to include",
2540
- "name": "fields",
2541
- "hasDynamicHelp": false,
2542
- "multiple": false,
2543
- "type": "option"
2544
- },
2545
- "exclude": {
2546
- "description": "Comma-separated field names to exclude",
2547
- "name": "exclude",
2548
- "hasDynamicHelp": false,
2549
- "multiple": false,
2550
- "type": "option"
2551
- },
2552
- "force": {
2553
- "description": "Delete even if products use this attribute",
2554
- "name": "force",
2555
- "allowNo": false,
2556
- "type": "boolean"
2557
- }
2558
- },
2559
- "hasDynamicHelp": false,
2560
- "hiddenAliases": [],
2561
- "id": "attributes:delete",
2562
- "pluginAlias": "@ecomweb/cli",
2563
- "pluginName": "@ecomweb/cli",
2564
- "pluginType": "core",
2565
- "strict": true,
2566
- "enableJsonFlag": false,
2567
- "isESM": false,
2568
- "relativePath": [
2569
- "dist",
2570
- "commands",
2571
- "attributes",
2572
- "delete.js"
2573
- ]
2574
- },
2575
- "attributes:list": {
2576
- "aliases": [],
2577
- "args": {},
2578
- "description": "List the store's product attributes and their values",
2579
- "examples": [
2580
- "ecomweb attributes list",
2581
- "ecomweb attributes list --include-values",
2582
- "ecomweb attributes list --search color"
2583
- ],
2584
- "flags": {
2585
- "store-ref": {
2586
- "description": "Store ref (or env ECOMWEB_STORE_REF)",
2587
- "env": "ECOMWEB_STORE_REF",
2588
- "name": "store-ref",
2589
- "hasDynamicHelp": false,
2590
- "multiple": false,
2591
- "type": "option"
2592
- },
2593
- "api-key": {
2594
- "description": "API key (or env ECOMWEB_API_KEY)",
2595
- "env": "ECOMWEB_API_KEY",
2596
- "name": "api-key",
2597
- "hasDynamicHelp": false,
2598
- "multiple": false,
2599
- "type": "option"
2600
- },
2601
- "api-url": {
2602
- "description": "API base URL (or env ECOMWEB_API_URL)",
2603
- "env": "ECOMWEB_API_URL",
2604
- "name": "api-url",
2605
- "hasDynamicHelp": false,
2606
- "multiple": false,
2607
- "type": "option"
2608
- },
2609
- "output": {
2610
- "description": "Output format",
2611
- "name": "output",
2612
- "default": "json",
2613
- "hasDynamicHelp": false,
2614
- "multiple": false,
2615
- "options": [
2616
- "json",
2617
- "table",
2618
- "csv"
2619
- ],
2620
- "type": "option"
2621
- },
2622
- "quiet": {
2623
- "description": "Suppress non-data output",
2624
- "name": "quiet",
2625
- "allowNo": false,
2626
- "type": "boolean"
2627
- },
2628
- "dry-run": {
2629
- "description": "Preview without executing",
2630
- "name": "dry-run",
2631
- "allowNo": false,
2632
- "type": "boolean"
2633
- },
2634
- "profile": {
2635
- "description": "Named config profile",
2636
- "name": "profile",
2637
- "hasDynamicHelp": false,
2638
- "multiple": false,
2639
- "type": "option"
2640
- },
2641
- "full": {
2642
- "description": "Include all fields (content, toc, etc.)",
2643
- "name": "full",
2644
- "allowNo": false,
2645
- "type": "boolean"
2646
- },
2647
- "fields": {
2648
- "description": "Comma-separated field names to include",
2649
- "name": "fields",
2650
- "hasDynamicHelp": false,
2651
- "multiple": false,
2652
- "type": "option"
2653
- },
2654
- "exclude": {
2655
- "description": "Comma-separated field names to exclude",
2656
- "name": "exclude",
2657
- "hasDynamicHelp": false,
2658
- "multiple": false,
2659
- "type": "option"
2660
- },
2661
- "include-values": {
2662
- "description": "Include each attribute's values",
2663
- "name": "include-values",
2664
- "allowNo": false,
2665
- "type": "boolean"
2666
- },
2667
- "search": {
2668
- "description": "Filter by attribute name",
2669
- "name": "search",
2670
- "hasDynamicHelp": false,
2671
- "multiple": false,
2672
- "type": "option"
2673
- },
2674
- "limit": {
2675
- "description": "Results per page",
2676
- "name": "limit",
2677
- "default": 20,
2678
- "hasDynamicHelp": false,
2679
- "multiple": false,
2680
- "type": "option"
2681
- },
2682
- "offset": {
2683
- "description": "Offset for pagination",
2684
- "name": "offset",
2685
- "default": 0,
2686
- "hasDynamicHelp": false,
2687
- "multiple": false,
2688
- "type": "option"
2689
- }
2690
- },
2691
- "hasDynamicHelp": false,
2692
- "hiddenAliases": [],
2693
- "id": "attributes:list",
2694
- "pluginAlias": "@ecomweb/cli",
2695
- "pluginName": "@ecomweb/cli",
2696
- "pluginType": "core",
2697
- "strict": true,
2698
- "enableJsonFlag": false,
2699
- "isESM": false,
2700
- "relativePath": [
2701
- "dist",
2702
- "commands",
2703
- "attributes",
2704
- "list.js"
2705
- ]
2706
- },
2707
- "attributes:update": {
2708
- "aliases": [],
2709
- "args": {
2710
- "id": {
2711
- "description": "Attribute ID",
2712
- "name": "id",
2713
- "required": true
2714
- }
2715
- },
2716
- "description": "Update a product attribute",
2717
- "examples": [
2718
- "ecomweb attributes update 1 --name \"Colour\"",
2719
- "ecomweb attributes update 1 --type visual"
2720
- ],
2721
- "flags": {
2722
- "store-ref": {
2723
- "description": "Store ref (or env ECOMWEB_STORE_REF)",
2724
- "env": "ECOMWEB_STORE_REF",
2725
- "name": "store-ref",
2726
- "hasDynamicHelp": false,
2727
- "multiple": false,
2728
- "type": "option"
2729
- },
2730
- "api-key": {
2731
- "description": "API key (or env ECOMWEB_API_KEY)",
2732
- "env": "ECOMWEB_API_KEY",
2733
- "name": "api-key",
2734
- "hasDynamicHelp": false,
2735
- "multiple": false,
2736
- "type": "option"
2737
- },
2738
- "api-url": {
2739
- "description": "API base URL (or env ECOMWEB_API_URL)",
2740
- "env": "ECOMWEB_API_URL",
2741
- "name": "api-url",
2742
- "hasDynamicHelp": false,
2743
- "multiple": false,
2744
- "type": "option"
2745
- },
2746
- "output": {
2747
- "description": "Output format",
2748
- "name": "output",
2749
- "default": "json",
2750
- "hasDynamicHelp": false,
2751
- "multiple": false,
2752
- "options": [
2753
- "json",
2754
- "table",
2755
- "csv"
2756
- ],
2757
- "type": "option"
2758
- },
2759
- "quiet": {
2760
- "description": "Suppress non-data output",
2761
- "name": "quiet",
2762
- "allowNo": false,
2763
- "type": "boolean"
2764
- },
2765
- "dry-run": {
2766
- "description": "Preview without executing",
2767
- "name": "dry-run",
2768
- "allowNo": false,
2769
- "type": "boolean"
2770
- },
2771
- "profile": {
2772
- "description": "Named config profile",
2773
- "name": "profile",
2774
- "hasDynamicHelp": false,
2775
- "multiple": false,
2776
- "type": "option"
2777
- },
2778
- "full": {
2779
- "description": "Include all fields (content, toc, etc.)",
2780
- "name": "full",
2781
- "allowNo": false,
2782
- "type": "boolean"
2783
- },
2784
- "fields": {
2785
- "description": "Comma-separated field names to include",
2786
- "name": "fields",
2787
- "hasDynamicHelp": false,
2788
- "multiple": false,
2789
- "type": "option"
2790
- },
2791
- "exclude": {
2792
- "description": "Comma-separated field names to exclude",
2793
- "name": "exclude",
2794
- "hasDynamicHelp": false,
2795
- "multiple": false,
2796
- "type": "option"
2797
- },
2798
- "name": {
2799
- "description": "Attribute name, e.g. Color",
2800
- "name": "name",
2801
- "hasDynamicHelp": false,
2802
- "multiple": false,
2803
- "type": "option"
2804
- },
2805
- "slug": {
2806
- "description": "URL-safe key",
2807
- "name": "slug",
2314
+ "name": "fields",
2808
2315
  "hasDynamicHelp": false,
2809
2316
  "multiple": false,
2810
2317
  "type": "option"
2811
2318
  },
2812
- "type": {
2813
- "description": "visual enables colour/image swatches on its values",
2814
- "name": "type",
2319
+ "exclude": {
2320
+ "description": "Comma-separated field names to exclude",
2321
+ "name": "exclude",
2815
2322
  "hasDynamicHelp": false,
2816
2323
  "multiple": false,
2817
- "options": [
2818
- "select",
2819
- "text",
2820
- "visual"
2821
- ],
2822
2324
  "type": "option"
2325
+ },
2326
+ "force": {
2327
+ "description": "Delete even if products use this attribute",
2328
+ "name": "force",
2329
+ "allowNo": false,
2330
+ "type": "boolean"
2823
2331
  }
2824
2332
  },
2825
2333
  "hasDynamicHelp": false,
2826
2334
  "hiddenAliases": [],
2827
- "id": "attributes:update",
2335
+ "id": "attributes:delete",
2828
2336
  "pluginAlias": "@ecomweb/cli",
2829
2337
  "pluginName": "@ecomweb/cli",
2830
2338
  "pluginType": "core",
@@ -2835,18 +2343,17 @@
2835
2343
  "dist",
2836
2344
  "commands",
2837
2345
  "attributes",
2838
- "update.js"
2346
+ "delete.js"
2839
2347
  ]
2840
2348
  },
2841
- "auth:login": {
2349
+ "attributes:list": {
2842
2350
  "aliases": [],
2843
2351
  "args": {},
2844
- "description": "Log in: with --email (a code is emailed to you; no API key needed), or with --api-key",
2352
+ "description": "List the store's product attributes and their values",
2845
2353
  "examples": [
2846
- "ecomweb auth login --email you@shop.vn",
2847
- "ecomweb auth login --email you@shop.vn --code 123456 --store-ref abc123",
2848
- "ecomweb auth login --api-url http://localhost:3001 --api-key sk_live_abc123",
2849
- "ECOMWEB_API_KEY=sk_live_abc123 ecomweb auth login"
2354
+ "ecomweb attributes list",
2355
+ "ecomweb attributes list --include-values",
2356
+ "ecomweb attributes list --search color"
2850
2357
  ],
2851
2358
  "flags": {
2852
2359
  "store-ref": {
@@ -2925,23 +2432,31 @@
2925
2432
  "multiple": false,
2926
2433
  "type": "option"
2927
2434
  },
2928
- "email": {
2929
- "description": "Log in with a code emailed to this address",
2930
- "name": "email",
2435
+ "include-values": {
2436
+ "description": "Include each attribute's values",
2437
+ "name": "include-values",
2438
+ "allowNo": false,
2439
+ "type": "boolean"
2440
+ },
2441
+ "search": {
2442
+ "description": "Filter by attribute name",
2443
+ "name": "search",
2931
2444
  "hasDynamicHelp": false,
2932
2445
  "multiple": false,
2933
2446
  "type": "option"
2934
2447
  },
2935
- "code": {
2936
- "description": "The emailed code (when not asked for in a terminal)",
2937
- "name": "code",
2448
+ "limit": {
2449
+ "description": "Results per page",
2450
+ "name": "limit",
2451
+ "default": 20,
2938
2452
  "hasDynamicHelp": false,
2939
2453
  "multiple": false,
2940
2454
  "type": "option"
2941
2455
  },
2942
- "store-name": {
2943
- "description": "Create a store with this name (a new merchant) and log in to it",
2944
- "name": "store-name",
2456
+ "offset": {
2457
+ "description": "Offset for pagination",
2458
+ "name": "offset",
2459
+ "default": 0,
2945
2460
  "hasDynamicHelp": false,
2946
2461
  "multiple": false,
2947
2462
  "type": "option"
@@ -2949,7 +2464,7 @@
2949
2464
  },
2950
2465
  "hasDynamicHelp": false,
2951
2466
  "hiddenAliases": [],
2952
- "id": "auth:login",
2467
+ "id": "attributes:list",
2953
2468
  "pluginAlias": "@ecomweb/cli",
2954
2469
  "pluginName": "@ecomweb/cli",
2955
2470
  "pluginType": "core",
@@ -2959,17 +2474,23 @@
2959
2474
  "relativePath": [
2960
2475
  "dist",
2961
2476
  "commands",
2962
- "auth",
2963
- "login.js"
2477
+ "attributes",
2478
+ "list.js"
2964
2479
  ]
2965
2480
  },
2966
- "auth:logout": {
2481
+ "attributes:update": {
2967
2482
  "aliases": [],
2968
- "args": {},
2969
- "description": "Clear stored API credentials",
2483
+ "args": {
2484
+ "id": {
2485
+ "description": "Attribute ID",
2486
+ "name": "id",
2487
+ "required": true
2488
+ }
2489
+ },
2490
+ "description": "Update a product attribute",
2970
2491
  "examples": [
2971
- "ecomweb auth logout",
2972
- "ecomweb auth logout --profile production"
2492
+ "ecomweb attributes update 1 --name \"Colour\"",
2493
+ "ecomweb attributes update 1 --type visual"
2973
2494
  ],
2974
2495
  "flags": {
2975
2496
  "store-ref": {
@@ -3047,11 +2568,37 @@
3047
2568
  "hasDynamicHelp": false,
3048
2569
  "multiple": false,
3049
2570
  "type": "option"
2571
+ },
2572
+ "name": {
2573
+ "description": "Attribute name, e.g. Color",
2574
+ "name": "name",
2575
+ "hasDynamicHelp": false,
2576
+ "multiple": false,
2577
+ "type": "option"
2578
+ },
2579
+ "slug": {
2580
+ "description": "URL-safe key",
2581
+ "name": "slug",
2582
+ "hasDynamicHelp": false,
2583
+ "multiple": false,
2584
+ "type": "option"
2585
+ },
2586
+ "type": {
2587
+ "description": "visual enables colour/image swatches on its values",
2588
+ "name": "type",
2589
+ "hasDynamicHelp": false,
2590
+ "multiple": false,
2591
+ "options": [
2592
+ "select",
2593
+ "text",
2594
+ "visual"
2595
+ ],
2596
+ "type": "option"
3050
2597
  }
3051
2598
  },
3052
2599
  "hasDynamicHelp": false,
3053
2600
  "hiddenAliases": [],
3054
- "id": "auth:logout",
2601
+ "id": "attributes:update",
3055
2602
  "pluginAlias": "@ecomweb/cli",
3056
2603
  "pluginName": "@ecomweb/cli",
3057
2604
  "pluginType": "core",
@@ -3061,17 +2608,19 @@
3061
2608
  "relativePath": [
3062
2609
  "dist",
3063
2610
  "commands",
3064
- "auth",
3065
- "logout.js"
2611
+ "attributes",
2612
+ "update.js"
3066
2613
  ]
3067
2614
  },
3068
- "auth:register": {
2615
+ "auth:login": {
3069
2616
  "aliases": [],
3070
2617
  "args": {},
3071
- "description": "Register a new account (sends OTP to email)",
2618
+ "description": "Log in by approving this CLI in your browser",
3072
2619
  "examples": [
3073
- "ecomweb auth register --email user@example.com --name \"John Doe\"",
3074
- "ecomweb auth register --email user@example.com"
2620
+ "ecomweb auth login",
2621
+ "ecomweb auth login --wait",
2622
+ "ecomweb auth login --no-browser",
2623
+ "ecomweb auth login --store-ref abc123"
3075
2624
  ],
3076
2625
  "flags": {
3077
2626
  "store-ref": {
@@ -3150,25 +2699,22 @@
3150
2699
  "multiple": false,
3151
2700
  "type": "option"
3152
2701
  },
3153
- "email": {
3154
- "description": "Email address for the new account",
3155
- "name": "email",
3156
- "required": true,
3157
- "hasDynamicHelp": false,
3158
- "multiple": false,
3159
- "type": "option"
2702
+ "wait": {
2703
+ "description": "Wait (up to 100 seconds) for the approval of the code an earlier run printed",
2704
+ "name": "wait",
2705
+ "allowNo": false,
2706
+ "type": "boolean"
3160
2707
  },
3161
- "name": {
3162
- "description": "Display name for the account",
3163
- "name": "name",
3164
- "hasDynamicHelp": false,
3165
- "multiple": false,
3166
- "type": "option"
2708
+ "browser": {
2709
+ "description": "Open the approval link in the browser (--no-browser only prints it)",
2710
+ "name": "browser",
2711
+ "allowNo": true,
2712
+ "type": "boolean"
3167
2713
  }
3168
2714
  },
3169
2715
  "hasDynamicHelp": false,
3170
2716
  "hiddenAliases": [],
3171
- "id": "auth:register",
2717
+ "id": "auth:login",
3172
2718
  "pluginAlias": "@ecomweb/cli",
3173
2719
  "pluginName": "@ecomweb/cli",
3174
2720
  "pluginType": "core",
@@ -3179,15 +2725,16 @@
3179
2725
  "dist",
3180
2726
  "commands",
3181
2727
  "auth",
3182
- "register.js"
2728
+ "login.js"
3183
2729
  ]
3184
2730
  },
3185
- "auth:status": {
2731
+ "auth:logout": {
3186
2732
  "aliases": [],
3187
2733
  "args": {},
3188
- "description": "Show current authentication state",
2734
+ "description": "Log out: revoke this CLI's session and forget it",
3189
2735
  "examples": [
3190
- "ecomweb auth status"
2736
+ "ecomweb auth logout",
2737
+ "ecomweb auth logout --profile staging"
3191
2738
  ],
3192
2739
  "flags": {
3193
2740
  "store-ref": {
@@ -3269,7 +2816,7 @@
3269
2816
  },
3270
2817
  "hasDynamicHelp": false,
3271
2818
  "hiddenAliases": [],
3272
- "id": "auth:status",
2819
+ "id": "auth:logout",
3273
2820
  "pluginAlias": "@ecomweb/cli",
3274
2821
  "pluginName": "@ecomweb/cli",
3275
2822
  "pluginType": "core",
@@ -3280,15 +2827,16 @@
3280
2827
  "dist",
3281
2828
  "commands",
3282
2829
  "auth",
3283
- "status.js"
2830
+ "logout.js"
3284
2831
  ]
3285
2832
  },
3286
- "auth:verify": {
2833
+ "auth:status": {
3287
2834
  "aliases": [],
3288
2835
  "args": {},
3289
- "description": "Verify email with OTP code and authenticate",
2836
+ "description": "Show who you are logged in as, and with what",
3290
2837
  "examples": [
3291
- "ecomweb auth verify --email user@example.com --code 123456"
2838
+ "ecomweb auth status",
2839
+ "ecomweb auth status --profile staging"
3292
2840
  ],
3293
2841
  "flags": {
3294
2842
  "store-ref": {
@@ -3366,27 +2914,11 @@
3366
2914
  "hasDynamicHelp": false,
3367
2915
  "multiple": false,
3368
2916
  "type": "option"
3369
- },
3370
- "email": {
3371
- "description": "Email address used during registration",
3372
- "name": "email",
3373
- "required": true,
3374
- "hasDynamicHelp": false,
3375
- "multiple": false,
3376
- "type": "option"
3377
- },
3378
- "code": {
3379
- "description": "6-digit verification code from email",
3380
- "name": "code",
3381
- "required": true,
3382
- "hasDynamicHelp": false,
3383
- "multiple": false,
3384
- "type": "option"
3385
2917
  }
3386
2918
  },
3387
2919
  "hasDynamicHelp": false,
3388
2920
  "hiddenAliases": [],
3389
- "id": "auth:verify",
2921
+ "id": "auth:status",
3390
2922
  "pluginAlias": "@ecomweb/cli",
3391
2923
  "pluginName": "@ecomweb/cli",
3392
2924
  "pluginType": "core",
@@ -3397,7 +2929,7 @@
3397
2929
  "dist",
3398
2930
  "commands",
3399
2931
  "auth",
3400
- "verify.js"
2932
+ "status.js"
3401
2933
  ]
3402
2934
  },
3403
2935
  "banners:create": {
@@ -24554,6 +24086,123 @@
24554
24086
  "skill.js"
24555
24087
  ]
24556
24088
  },
24089
+ "stores:create": {
24090
+ "aliases": [],
24091
+ "args": {},
24092
+ "description": "Create a store (you become its owner) and make it the current store",
24093
+ "examples": [
24094
+ "ecomweb stores create --name \"My Store\"",
24095
+ "ecomweb stores create --name \"My Store\" --description \"Shoes\""
24096
+ ],
24097
+ "flags": {
24098
+ "store-ref": {
24099
+ "description": "Store ref (or env ECOMWEB_STORE_REF)",
24100
+ "env": "ECOMWEB_STORE_REF",
24101
+ "name": "store-ref",
24102
+ "hasDynamicHelp": false,
24103
+ "multiple": false,
24104
+ "type": "option"
24105
+ },
24106
+ "api-key": {
24107
+ "description": "API key (or env ECOMWEB_API_KEY)",
24108
+ "env": "ECOMWEB_API_KEY",
24109
+ "name": "api-key",
24110
+ "hasDynamicHelp": false,
24111
+ "multiple": false,
24112
+ "type": "option"
24113
+ },
24114
+ "api-url": {
24115
+ "description": "API base URL (or env ECOMWEB_API_URL)",
24116
+ "env": "ECOMWEB_API_URL",
24117
+ "name": "api-url",
24118
+ "hasDynamicHelp": false,
24119
+ "multiple": false,
24120
+ "type": "option"
24121
+ },
24122
+ "output": {
24123
+ "description": "Output format",
24124
+ "name": "output",
24125
+ "default": "json",
24126
+ "hasDynamicHelp": false,
24127
+ "multiple": false,
24128
+ "options": [
24129
+ "json",
24130
+ "table",
24131
+ "csv"
24132
+ ],
24133
+ "type": "option"
24134
+ },
24135
+ "quiet": {
24136
+ "description": "Suppress non-data output",
24137
+ "name": "quiet",
24138
+ "allowNo": false,
24139
+ "type": "boolean"
24140
+ },
24141
+ "dry-run": {
24142
+ "description": "Preview without executing",
24143
+ "name": "dry-run",
24144
+ "allowNo": false,
24145
+ "type": "boolean"
24146
+ },
24147
+ "profile": {
24148
+ "description": "Named config profile",
24149
+ "name": "profile",
24150
+ "hasDynamicHelp": false,
24151
+ "multiple": false,
24152
+ "type": "option"
24153
+ },
24154
+ "full": {
24155
+ "description": "Include all fields (content, toc, etc.)",
24156
+ "name": "full",
24157
+ "allowNo": false,
24158
+ "type": "boolean"
24159
+ },
24160
+ "fields": {
24161
+ "description": "Comma-separated field names to include",
24162
+ "name": "fields",
24163
+ "hasDynamicHelp": false,
24164
+ "multiple": false,
24165
+ "type": "option"
24166
+ },
24167
+ "exclude": {
24168
+ "description": "Comma-separated field names to exclude",
24169
+ "name": "exclude",
24170
+ "hasDynamicHelp": false,
24171
+ "multiple": false,
24172
+ "type": "option"
24173
+ },
24174
+ "name": {
24175
+ "description": "Store name (2 to 100 characters)",
24176
+ "name": "name",
24177
+ "required": true,
24178
+ "hasDynamicHelp": false,
24179
+ "multiple": false,
24180
+ "type": "option"
24181
+ },
24182
+ "description": {
24183
+ "description": "Store description",
24184
+ "name": "description",
24185
+ "hasDynamicHelp": false,
24186
+ "multiple": false,
24187
+ "type": "option"
24188
+ }
24189
+ },
24190
+ "hasDynamicHelp": false,
24191
+ "hiddenAliases": [],
24192
+ "id": "stores:create",
24193
+ "pluginAlias": "@ecomweb/cli",
24194
+ "pluginName": "@ecomweb/cli",
24195
+ "pluginType": "core",
24196
+ "strict": true,
24197
+ "enableJsonFlag": false,
24198
+ "isESM": false,
24199
+ "relativePath": [
24200
+ "dist",
24201
+ "commands",
24202
+ "stores",
24203
+ "create.js"
24204
+ ]
24205
+ },
24557
24206
  "stores:current": {
24558
24207
  "aliases": [],
24559
24208
  "args": {},
@@ -24765,7 +24414,7 @@
24765
24414
  "stores:list": {
24766
24415
  "aliases": [],
24767
24416
  "args": {},
24768
- "description": "List all stores accessible with current API key",
24417
+ "description": "List the stores you can open",
24769
24418
  "examples": [
24770
24419
  "ecomweb stores list"
24771
24420
  ],
@@ -24872,7 +24521,7 @@
24872
24521
  "required": true
24873
24522
  }
24874
24523
  },
24875
- "description": "Switch the active store (persists to profile)",
24524
+ "description": "Switch the current store (checks you can open it; persists to the profile)",
24876
24525
  "examples": [
24877
24526
  "ecomweb stores switch abc123def456",
24878
24527
  "ecomweb stores switch abc123def456 --profile production"
@@ -28656,5 +28305,5 @@
28656
28305
  ]
28657
28306
  }
28658
28307
  },
28659
- "version": "0.7.0"
28308
+ "version": "0.8.0"
28660
28309
  }