@yubild/cli 0.1.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 (88) hide show
  1. package/dist/commands/deploy.d.ts +6 -0
  2. package/dist/commands/deploy.d.ts.map +1 -0
  3. package/dist/commands/deploy.js +73 -0
  4. package/dist/commands/deploy.js.map +1 -0
  5. package/dist/commands/diff.d.ts +6 -0
  6. package/dist/commands/diff.d.ts.map +1 -0
  7. package/dist/commands/diff.js +97 -0
  8. package/dist/commands/diff.js.map +1 -0
  9. package/dist/commands/export.d.ts +9 -0
  10. package/dist/commands/export.d.ts.map +1 -0
  11. package/dist/commands/export.js +93 -0
  12. package/dist/commands/export.js.map +1 -0
  13. package/dist/commands/init.d.ts +8 -0
  14. package/dist/commands/init.d.ts.map +1 -0
  15. package/dist/commands/init.js +95 -0
  16. package/dist/commands/init.js.map +1 -0
  17. package/dist/commands/login.d.ts +9 -0
  18. package/dist/commands/login.d.ts.map +1 -0
  19. package/dist/commands/login.js +81 -0
  20. package/dist/commands/login.js.map +1 -0
  21. package/dist/commands/logout.d.ts +6 -0
  22. package/dist/commands/logout.d.ts.map +1 -0
  23. package/dist/commands/logout.js +17 -0
  24. package/dist/commands/logout.js.map +1 -0
  25. package/dist/commands/projects.d.ts +6 -0
  26. package/dist/commands/projects.d.ts.map +1 -0
  27. package/dist/commands/projects.js +76 -0
  28. package/dist/commands/projects.js.map +1 -0
  29. package/dist/commands/publish.d.ts +8 -0
  30. package/dist/commands/publish.d.ts.map +1 -0
  31. package/dist/commands/publish.js +81 -0
  32. package/dist/commands/publish.js.map +1 -0
  33. package/dist/commands/pull.d.ts +8 -0
  34. package/dist/commands/pull.d.ts.map +1 -0
  35. package/dist/commands/pull.js +86 -0
  36. package/dist/commands/pull.js.map +1 -0
  37. package/dist/commands/push.d.ts +6 -0
  38. package/dist/commands/push.d.ts.map +1 -0
  39. package/dist/commands/push.js +73 -0
  40. package/dist/commands/push.js.map +1 -0
  41. package/dist/commands/sync.d.ts +8 -0
  42. package/dist/commands/sync.d.ts.map +1 -0
  43. package/dist/commands/sync.js +111 -0
  44. package/dist/commands/sync.js.map +1 -0
  45. package/dist/commands/watch.d.ts +8 -0
  46. package/dist/commands/watch.d.ts.map +1 -0
  47. package/dist/commands/watch.js +91 -0
  48. package/dist/commands/watch.js.map +1 -0
  49. package/dist/commands/whoami.d.ts +6 -0
  50. package/dist/commands/whoami.d.ts.map +1 -0
  51. package/dist/commands/whoami.js +32 -0
  52. package/dist/commands/whoami.js.map +1 -0
  53. package/dist/index.d.ts +7 -0
  54. package/dist/index.d.ts.map +1 -0
  55. package/dist/index.js +89 -0
  56. package/dist/index.js.map +1 -0
  57. package/dist/lib/api-client.d.ts +141 -0
  58. package/dist/lib/api-client.d.ts.map +1 -0
  59. package/dist/lib/api-client.js +154 -0
  60. package/dist/lib/api-client.js.map +1 -0
  61. package/dist/lib/auth.d.ts +36 -0
  62. package/dist/lib/auth.d.ts.map +1 -0
  63. package/dist/lib/auth.js +108 -0
  64. package/dist/lib/auth.js.map +1 -0
  65. package/dist/lib/config.d.ts +28 -0
  66. package/dist/lib/config.d.ts.map +1 -0
  67. package/dist/lib/config.js +100 -0
  68. package/dist/lib/config.js.map +1 -0
  69. package/package.json +30 -0
  70. package/src/commands/deploy.ts +42 -0
  71. package/src/commands/diff.ts +81 -0
  72. package/src/commands/export.ts +71 -0
  73. package/src/commands/init.ts +69 -0
  74. package/src/commands/login.ts +52 -0
  75. package/src/commands/logout.ts +16 -0
  76. package/src/commands/projects.ts +53 -0
  77. package/src/commands/publish.ts +51 -0
  78. package/src/commands/pull.ts +59 -0
  79. package/src/commands/push.ts +42 -0
  80. package/src/commands/sync.ts +86 -0
  81. package/src/commands/watch.ts +71 -0
  82. package/src/commands/whoami.ts +31 -0
  83. package/src/index.ts +104 -0
  84. package/src/lib/api-client.ts +231 -0
  85. package/src/lib/auth.ts +86 -0
  86. package/src/lib/config.ts +77 -0
  87. package/src/types/esm-modules.d.ts +41 -0
  88. package/tsconfig.json +19 -0
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ /**
3
+ * yubild projects
4
+ * List all projects
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.projectsCommand = projectsCommand;
41
+ const auth_1 = require("../lib/auth");
42
+ const api_client_1 = require("../lib/api-client");
43
+ async function projectsCommand() {
44
+ if (!(0, auth_1.isAuthenticated)()) {
45
+ console.error('Error: Not authenticated. Run `yubild login` first.');
46
+ process.exit(1);
47
+ }
48
+ const { default: chalk } = await Promise.resolve().then(() => __importStar(require('chalk')));
49
+ try {
50
+ const client = new api_client_1.ApiClient();
51
+ const { projects } = await client.listProjects();
52
+ if (projects.length === 0) {
53
+ console.log('No projects found.');
54
+ return;
55
+ }
56
+ const padName = Math.max(...projects.map((p) => p.name.length), 4);
57
+ const padSlug = Math.max(...projects.map((p) => p.slug.length), 4);
58
+ const padVersion = Math.max(...projects.map((p) => p.version.length), 7);
59
+ const padFramework = Math.max(...projects.map((p) => p.framework.length), 9);
60
+ console.log('');
61
+ console.log(` ${chalk.bold('Name'.padEnd(padName))} ${chalk.bold('Slug'.padEnd(padSlug))} ${chalk.bold('Version'.padEnd(padVersion))} ${chalk.bold('Framework'.padEnd(padFramework))} ${chalk.bold('Last Updated')}`);
62
+ console.log(` ${''.padEnd(padName, '-')} ${''.padEnd(padSlug, '-')} ${''.padEnd(padVersion, '-')} ${''.padEnd(padFramework, '-')} ${''.padEnd(20, '-')}`);
63
+ for (const project of projects) {
64
+ const updatedAt = new Date(project.updatedAt).toLocaleDateString();
65
+ console.log(` ${project.name.padEnd(padName)} ${chalk.gray(project.slug.padEnd(padSlug))} ${chalk.cyan(project.version.padEnd(padVersion))} ${project.framework.padEnd(padFramework)} ${chalk.gray(updatedAt)}`);
66
+ }
67
+ console.log('');
68
+ console.log(` ${chalk.gray(`${projects.length} project(s)`)}`);
69
+ console.log('');
70
+ }
71
+ catch (error) {
72
+ console.error(`\nFailed to list projects: ${error.message}`);
73
+ process.exit(1);
74
+ }
75
+ }
76
+ //# sourceMappingURL=projects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projects.js","sourceRoot":"","sources":["../../src/commands/projects.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * yubild publish
3
+ * Publish design tokens to Git via Pull Request
4
+ */
5
+ export declare function publishCommand(options: {
6
+ repo?: string;
7
+ }): Promise<void>;
8
+ //# sourceMappingURL=publish.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../../src/commands/publish.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,wBAAsB,cAAc,CAAC,OAAO,EAAE;IAC5C,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,OAAO,CAAC,IAAI,CAAC,CAuChB"}
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ /**
3
+ * yubild publish
4
+ * Publish design tokens to Git via Pull Request
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.publishCommand = publishCommand;
41
+ const config_1 = require("../lib/config");
42
+ const auth_1 = require("../lib/auth");
43
+ const api_client_1 = require("../lib/api-client");
44
+ async function publishCommand(options) {
45
+ if (!(0, auth_1.isAuthenticated)()) {
46
+ console.error('Error: Not authenticated. Run `yubild login` first.');
47
+ process.exit(1);
48
+ }
49
+ const config = (0, config_1.loadConfig)();
50
+ if (!config) {
51
+ console.error('Error: No .yubildrc found. Run `yubild init` first.');
52
+ process.exit(1);
53
+ }
54
+ const { default: chalk } = await Promise.resolve().then(() => __importStar(require('chalk')));
55
+ const { default: ora } = await Promise.resolve().then(() => __importStar(require('ora')));
56
+ const spinner = ora('Creating Pull Request...').start();
57
+ try {
58
+ const client = new api_client_1.ApiClient();
59
+ const result = await client.publishToGit(config.projectId, options.repo);
60
+ if (result.published) {
61
+ spinner.succeed('Pull Request created!');
62
+ console.log('');
63
+ if (result.prUrl) {
64
+ console.log(` PR URL: ${chalk.green(result.prUrl)}`);
65
+ }
66
+ if (result.prNumber) {
67
+ console.log(` PR #${chalk.cyan(String(result.prNumber))}`);
68
+ }
69
+ console.log('');
70
+ }
71
+ else {
72
+ spinner.warn('Publish completed but no PR was created.');
73
+ }
74
+ }
75
+ catch (error) {
76
+ spinner.fail('Publish failed');
77
+ console.error(`\nFailed to publish: ${error.message}`);
78
+ process.exit(1);
79
+ }
80
+ }
81
+ //# sourceMappingURL=publish.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publish.js","sourceRoot":"","sources":["../../src/commands/publish.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMH,wCAyCC;AA7CD,0CAA2C;AAC3C,sCAA8C;AAC9C,kDAA8C;AAEvC,KAAK,UAAU,cAAc,CAAC,OAEpC;IACC,IAAI,CAAC,IAAA,sBAAe,GAAE,EAAE,CAAC;QACvB,OAAO,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,MAAM,GAAG,IAAA,mBAAU,GAAE,CAAC;IAC5B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,wDAAa,OAAO,GAAC,CAAC;IACjD,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,wDAAa,KAAK,GAAC,CAAC;IAE7C,MAAM,OAAO,GAAG,GAAG,CAAC,0BAA0B,CAAC,CAAC,KAAK,EAAE,CAAC;IAExD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,sBAAS,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAEzE,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACrB,OAAO,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;YACzC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACxD,CAAC;YACD,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACpB,OAAO,CAAC,GAAG,CAAC,SAAS,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;YAC9D,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC/B,OAAO,CAAC,KAAK,CAAC,wBAAyB,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * yubild pull
3
+ * Pull design tokens from Yubild and write them to local files
4
+ */
5
+ export declare function pullCommand(options: {
6
+ format?: string;
7
+ }): Promise<void>;
8
+ //# sourceMappingURL=pull.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../../src/commands/pull.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,wBAAsB,WAAW,CAAC,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA+C7E"}
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ /**
3
+ * yubild pull
4
+ * Pull design tokens from Yubild and write them to local files
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.pullCommand = pullCommand;
41
+ const fs = __importStar(require("fs"));
42
+ const path = __importStar(require("path"));
43
+ const config_1 = require("../lib/config");
44
+ const auth_1 = require("../lib/auth");
45
+ const api_client_1 = require("../lib/api-client");
46
+ async function pullCommand(options) {
47
+ if (!(0, auth_1.isAuthenticated)()) {
48
+ console.error('Error: Not authenticated. Run `yubild login` first.');
49
+ process.exit(1);
50
+ }
51
+ const config = (0, config_1.loadConfig)();
52
+ if (!config) {
53
+ console.error('Error: No .yubildrc found. Run `yubild init` first.');
54
+ process.exit(1);
55
+ }
56
+ const formats = options.format ? [options.format] : config.formats;
57
+ console.log(`Pulling tokens for project ${config.projectId}...`);
58
+ console.log(`Formats: ${formats.join(', ')}`);
59
+ try {
60
+ const client = new api_client_1.ApiClient();
61
+ const { files, version } = await client.pullTokens(config.projectId, formats);
62
+ // Ensure output directory exists
63
+ const outputDir = path.resolve(config.outputDir);
64
+ if (!fs.existsSync(outputDir)) {
65
+ fs.mkdirSync(outputDir, { recursive: true });
66
+ }
67
+ // Write each file
68
+ let writtenCount = 0;
69
+ for (const file of files) {
70
+ const filePath = path.join(outputDir, file.path);
71
+ const fileDir = path.dirname(filePath);
72
+ if (!fs.existsSync(fileDir)) {
73
+ fs.mkdirSync(fileDir, { recursive: true });
74
+ }
75
+ fs.writeFileSync(filePath, file.content, 'utf-8');
76
+ writtenCount++;
77
+ console.log(` Written: ${file.path}`);
78
+ }
79
+ console.log(`\nPulled ${writtenCount} files (v${version}) to ${config.outputDir}\n`);
80
+ }
81
+ catch (error) {
82
+ console.error(`\nFailed to pull tokens: ${error.message}`);
83
+ process.exit(1);
84
+ }
85
+ }
86
+ //# sourceMappingURL=pull.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pull.js","sourceRoot":"","sources":["../../src/commands/pull.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQH,kCA+CC;AArDD,uCAAyB;AACzB,2CAA6B;AAC7B,0CAA2C;AAC3C,sCAA8C;AAC9C,kDAA8C;AAEvC,KAAK,UAAU,WAAW,CAAC,OAA4B;IAC5D,IAAI,CAAC,IAAA,sBAAe,GAAE,EAAE,CAAC;QACvB,OAAO,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,MAAM,GAAG,IAAA,mBAAU,GAAE,CAAC;IAC5B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;IAEnE,OAAO,CAAC,GAAG,CAAC,8BAA8B,MAAM,CAAC,SAAS,KAAK,CAAC,CAAC;IACjE,OAAO,CAAC,GAAG,CAAC,YAAY,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAE9C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,sBAAS,EAAE,CAAC;QAC/B,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAE9E,iCAAiC;QACjC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACjD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9B,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/C,CAAC;QAED,kBAAkB;QAClB,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YACjD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAEvC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC5B,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7C,CAAC;YAED,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAClD,YAAY,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACzC,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,YAAY,YAAY,YAAY,OAAO,QAAQ,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC;IACvF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,4BAA6B,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * yubild push
3
+ * Push design tokens to Figma
4
+ */
5
+ export declare function pushCommand(): Promise<void>;
6
+ //# sourceMappingURL=push.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../src/commands/push.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAgCjD"}
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ /**
3
+ * yubild push
4
+ * Push design tokens to Figma
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.pushCommand = pushCommand;
41
+ const config_1 = require("../lib/config");
42
+ const auth_1 = require("../lib/auth");
43
+ const api_client_1 = require("../lib/api-client");
44
+ async function pushCommand() {
45
+ if (!(0, auth_1.isAuthenticated)()) {
46
+ console.error('Error: Not authenticated. Run `yubild login` first.');
47
+ process.exit(1);
48
+ }
49
+ const config = (0, config_1.loadConfig)();
50
+ if (!config) {
51
+ console.error('Error: No .yubildrc found. Run `yubild init` first.');
52
+ process.exit(1);
53
+ }
54
+ const { default: chalk } = await Promise.resolve().then(() => __importStar(require('chalk')));
55
+ const { default: ora } = await Promise.resolve().then(() => __importStar(require('ora')));
56
+ const spinner = ora('Pushing tokens to Figma...').start();
57
+ try {
58
+ const client = new api_client_1.ApiClient();
59
+ const result = await client.pushToFigma(config.projectId);
60
+ spinner.succeed('Tokens pushed to Figma!');
61
+ console.log('');
62
+ console.log(` Project: ${chalk.cyan(result.data.projectName)}`);
63
+ console.log(` Variables: ${result.data.variables.length}`);
64
+ console.log(` Exported at: ${chalk.gray(result.data.exportedAt)}`);
65
+ console.log('');
66
+ }
67
+ catch (error) {
68
+ spinner.fail('Push failed');
69
+ console.error(`\nFailed to push tokens: ${error.message}`);
70
+ process.exit(1);
71
+ }
72
+ }
73
+ //# sourceMappingURL=push.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"push.js","sourceRoot":"","sources":["../../src/commands/push.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMH,kCAgCC;AApCD,0CAA2C;AAC3C,sCAA8C;AAC9C,kDAA8C;AAEvC,KAAK,UAAU,WAAW;IAC/B,IAAI,CAAC,IAAA,sBAAe,GAAE,EAAE,CAAC;QACvB,OAAO,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,MAAM,GAAG,IAAA,mBAAU,GAAE,CAAC;IAC5B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,wDAAa,OAAO,GAAC,CAAC;IACjD,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,wDAAa,KAAK,GAAC,CAAC;IAE7C,MAAM,OAAO,GAAG,GAAG,CAAC,4BAA4B,CAAC,CAAC,KAAK,EAAE,CAAC;IAE1D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,sBAAS,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAE1D,OAAO,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,gBAAgB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACpE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC5B,OAAO,CAAC,KAAK,CAAC,4BAA6B,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * yubild sync
3
+ * Sync design tokens between local project and Figma
4
+ */
5
+ export declare function syncCommand(options: {
6
+ autoMerge?: boolean;
7
+ }): Promise<void>;
8
+ //# sourceMappingURL=sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,wBAAsB,WAAW,CAAC,OAAO,EAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA4EjF"}
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ /**
3
+ * yubild sync
4
+ * Sync design tokens between local project and Figma
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.syncCommand = syncCommand;
41
+ const config_1 = require("../lib/config");
42
+ const auth_1 = require("../lib/auth");
43
+ const api_client_1 = require("../lib/api-client");
44
+ async function syncCommand(options) {
45
+ if (!(0, auth_1.isAuthenticated)()) {
46
+ console.error('Error: Not authenticated. Run `yubild login` first.');
47
+ process.exit(1);
48
+ }
49
+ const config = (0, config_1.loadConfig)();
50
+ if (!config) {
51
+ console.error('Error: No .yubildrc found. Run `yubild init` first.');
52
+ process.exit(1);
53
+ }
54
+ const { default: chalk } = await Promise.resolve().then(() => __importStar(require('chalk')));
55
+ const { default: ora } = await Promise.resolve().then(() => __importStar(require('ora')));
56
+ const spinner = ora('Syncing with Figma...').start();
57
+ try {
58
+ const client = new api_client_1.ApiClient();
59
+ const result = await client.syncTokens(config.projectId, options.autoMerge ?? false);
60
+ if (result.synced) {
61
+ spinner.succeed('Sync complete!');
62
+ const summary = result.summary;
63
+ if (summary) {
64
+ console.log('');
65
+ console.log(` ${chalk.green(`+ ${summary.added} added`)}`);
66
+ console.log(` ${chalk.yellow(`~ ${summary.modified} modified`)}`);
67
+ console.log(` ${chalk.red(`- ${summary.removed} removed`)}`);
68
+ console.log(` ${chalk.gray(` ${summary.unchanged} unchanged`)}`);
69
+ }
70
+ if (result.warnings && result.warnings.length > 0) {
71
+ console.log('');
72
+ for (const warning of result.warnings) {
73
+ console.log(` ${chalk.yellow('Warning:')} ${warning}`);
74
+ }
75
+ }
76
+ }
77
+ else {
78
+ spinner.warn('Sync requires conflict resolution');
79
+ if (result.diff) {
80
+ console.log('');
81
+ console.log('Diff:');
82
+ console.log('');
83
+ const padKey = Math.max(...result.diff.entries.map((e) => e.tokenKey.length), 10);
84
+ const padStatus = 10;
85
+ console.log(` ${'Token'.padEnd(padKey)} ${'Status'.padEnd(padStatus)} ${'Local'.padEnd(20)} Figma`);
86
+ console.log(` ${''.padEnd(padKey, '-')} ${''.padEnd(padStatus, '-')} ${''.padEnd(20, '-')} ${''.padEnd(20, '-')}`);
87
+ for (const entry of result.diff.entries) {
88
+ const statusColor = entry.status === 'added'
89
+ ? chalk.green
90
+ : entry.status === 'modified'
91
+ ? chalk.yellow
92
+ : entry.status === 'removed'
93
+ ? chalk.red
94
+ : chalk.gray;
95
+ console.log(` ${entry.tokenKey.padEnd(padKey)} ${statusColor(entry.status.padEnd(padStatus))} ${(entry.localValue ?? '-').padEnd(20)} ${entry.figmaValue ?? '-'}`);
96
+ }
97
+ const s = result.diff.summary;
98
+ console.log('');
99
+ console.log(` Summary: ${chalk.green(`+${s.added}`)} ${chalk.yellow(`~${s.modified}`)} ${chalk.red(`-${s.removed}`)} ${chalk.gray(`${s.unchanged} unchanged`)}`);
100
+ }
101
+ console.log('');
102
+ console.log(` Use ${chalk.cyan('yubild sync --auto-merge')} to auto-merge, or resolve conflicts in the Yubild UI.`);
103
+ }
104
+ }
105
+ catch (error) {
106
+ spinner.fail('Sync failed');
107
+ console.error(`\nFailed to sync tokens: ${error.message}`);
108
+ process.exit(1);
109
+ }
110
+ }
111
+ //# sourceMappingURL=sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * yubild watch
3
+ * Watch for token changes and auto-sync
4
+ */
5
+ export declare function watchCommand(options: {
6
+ interval?: string;
7
+ }): Promise<void>;
8
+ //# sourceMappingURL=watch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../src/commands/watch.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,wBAAsB,YAAY,CAAC,OAAO,EAAE;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2DhB"}
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ /**
3
+ * yubild watch
4
+ * Watch for token changes and auto-sync
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.watchCommand = watchCommand;
41
+ const config_1 = require("../lib/config");
42
+ const auth_1 = require("../lib/auth");
43
+ const api_client_1 = require("../lib/api-client");
44
+ async function watchCommand(options) {
45
+ if (!(0, auth_1.isAuthenticated)()) {
46
+ console.error('Error: Not authenticated. Run `yubild login` first.');
47
+ process.exit(1);
48
+ }
49
+ const config = (0, config_1.loadConfig)();
50
+ if (!config) {
51
+ console.error('Error: No .yubildrc found. Run `yubild init` first.');
52
+ process.exit(1);
53
+ }
54
+ const { default: chalk } = await Promise.resolve().then(() => __importStar(require('chalk')));
55
+ const intervalSeconds = parseInt(options.interval ?? '30', 10);
56
+ if (isNaN(intervalSeconds) || intervalSeconds < 5) {
57
+ console.error('Error: Interval must be a number >= 5 seconds.');
58
+ process.exit(1);
59
+ }
60
+ const client = new api_client_1.ApiClient();
61
+ console.log(chalk.cyan(`Watching for changes every ${intervalSeconds}s... (Ctrl+C to stop)`));
62
+ console.log('');
63
+ const check = async () => {
64
+ try {
65
+ const diff = await client.diffTokens(config.projectId);
66
+ const totalChanges = diff.summary.added + diff.summary.modified + diff.summary.removed;
67
+ if (totalChanges === 0) {
68
+ console.log(chalk.gray(`[${new Date().toLocaleTimeString()}] No changes detected.`));
69
+ return;
70
+ }
71
+ console.log(chalk.yellow(`[${new Date().toLocaleTimeString()}] Changes detected: `) +
72
+ `${chalk.green(`+${diff.summary.added}`)} ${chalk.yellow(`~${diff.summary.modified}`)} ${chalk.red(`-${diff.summary.removed}`)}`);
73
+ console.log(chalk.cyan(' Auto-syncing...'));
74
+ const result = await client.syncTokens(config.projectId, true);
75
+ if (result.synced) {
76
+ console.log(chalk.green(' Sync complete!'));
77
+ }
78
+ else {
79
+ console.log(chalk.yellow(' Sync requires manual resolution. Run `yubild sync` to resolve.'));
80
+ }
81
+ }
82
+ catch (error) {
83
+ console.error(chalk.red(` Error: ${error.message}`));
84
+ }
85
+ };
86
+ // Run immediately on start
87
+ await check();
88
+ // Then run on interval
89
+ setInterval(check, intervalSeconds * 1000);
90
+ }
91
+ //# sourceMappingURL=watch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watch.js","sourceRoot":"","sources":["../../src/commands/watch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * yubild whoami
3
+ * Show the currently authenticated user
4
+ */
5
+ export declare function whoamiCommand(): Promise<void>;
6
+ //# sourceMappingURL=whoami.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whoami.d.ts","sourceRoot":"","sources":["../../src/commands/whoami.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAsBnD"}