@breadstone-infrastructure/nx-tasks 0.0.230 → 0.0.232

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 (162) hide show
  1. package/executors/doppler-config-sync/executor.task.d.ts.map +1 -1
  2. package/executors/doppler-config-sync/executor.task.js +37 -18
  3. package/executors/doppler-config-sync/executor.task.js.map +1 -1
  4. package/executors/doppler-vercel-sync/executor.d.ts +11 -0
  5. package/executors/doppler-vercel-sync/executor.d.ts.map +1 -0
  6. package/executors/doppler-vercel-sync/executor.js +71 -0
  7. package/executors/doppler-vercel-sync/executor.js.map +1 -0
  8. package/executors/doppler-vercel-sync/executor.options.d.ts +8 -0
  9. package/executors/doppler-vercel-sync/executor.options.d.ts.map +1 -0
  10. package/executors/doppler-vercel-sync/executor.options.js +4 -0
  11. package/executors/doppler-vercel-sync/executor.options.js.map +1 -0
  12. package/executors/doppler-vercel-sync/executor.task.d.ts +30 -0
  13. package/executors/doppler-vercel-sync/executor.task.d.ts.map +1 -0
  14. package/executors/doppler-vercel-sync/executor.task.js +522 -0
  15. package/executors/doppler-vercel-sync/executor.task.js.map +1 -0
  16. package/executors/doppler-vercel-sync/schema.json +95 -0
  17. package/executors/generate-package-docs/executor.d.ts +6 -0
  18. package/executors/generate-package-docs/executor.d.ts.map +1 -0
  19. package/executors/generate-package-docs/executor.js +72 -0
  20. package/executors/generate-package-docs/executor.js.map +1 -0
  21. package/executors/generate-package-docs/executor.options.d.ts +6 -0
  22. package/executors/generate-package-docs/executor.options.d.ts.map +1 -0
  23. package/executors/generate-package-docs/executor.options.js +4 -0
  24. package/executors/generate-package-docs/executor.options.js.map +1 -0
  25. package/executors/generate-package-docs/executor.task.d.ts +103 -0
  26. package/executors/generate-package-docs/executor.task.d.ts.map +1 -0
  27. package/executors/generate-package-docs/executor.task.js +259 -0
  28. package/executors/generate-package-docs/executor.task.js.map +1 -0
  29. package/executors/generate-package-docs/schema.json +258 -0
  30. package/executors/icon-collection-builder/executor.d.ts.map +1 -1
  31. package/executors/icon-collection-builder/executor.js +3 -2
  32. package/executors/icon-collection-builder/executor.js.map +1 -1
  33. package/executors/icon-collection-builder/executor.task.d.ts +1 -0
  34. package/executors/icon-collection-builder/executor.task.d.ts.map +1 -1
  35. package/executors/icon-collection-builder/executor.task.js +73 -11
  36. package/executors/icon-collection-builder/executor.task.js.map +1 -1
  37. package/executors/icon-collection-builder/svg.d.ts +19 -0
  38. package/executors/icon-collection-builder/svg.d.ts.map +1 -1
  39. package/executors/icon-collection-builder/svg.js +106 -0
  40. package/executors/icon-collection-builder/svg.js.map +1 -1
  41. package/executors/icon-collection-downloader/executor.d.ts.map +1 -1
  42. package/executors/icon-collection-downloader/executor.js +3 -2
  43. package/executors/icon-collection-downloader/executor.js.map +1 -1
  44. package/executors/icon-collection-downloader/executor.task.d.ts +2 -0
  45. package/executors/icon-collection-downloader/executor.task.d.ts.map +1 -1
  46. package/executors/icon-collection-downloader/executor.task.js +130 -15
  47. package/executors/icon-collection-downloader/executor.task.js.map +1 -1
  48. package/executors/lit-docs/ComponentDocFixer.d.ts +176 -0
  49. package/executors/lit-docs/ComponentDocFixer.d.ts.map +1 -0
  50. package/executors/lit-docs/ComponentDocFixer.js +424 -0
  51. package/executors/lit-docs/ComponentDocFixer.js.map +1 -0
  52. package/executors/lit-docs/JSDocFixer.d.ts +97 -0
  53. package/executors/lit-docs/JSDocFixer.d.ts.map +1 -0
  54. package/executors/lit-docs/JSDocFixer.js +200 -0
  55. package/executors/lit-docs/JSDocFixer.js.map +1 -0
  56. package/executors/lit-docs/executor.d.ts.map +1 -1
  57. package/executors/lit-docs/executor.js +2 -1
  58. package/executors/lit-docs/executor.js.map +1 -1
  59. package/executors/lit-docs/executor.task.d.ts +1 -0
  60. package/executors/lit-docs/executor.task.d.ts.map +1 -1
  61. package/executors/lit-docs/executor.task.js +71 -24
  62. package/executors/lit-docs/executor.task.js.map +1 -1
  63. package/executors/lit-style-transform/executor.js +1 -1
  64. package/executors/lit-style-transform/executor.js.map +1 -1
  65. package/executors/prisma-seeds/executor.d.ts +10 -0
  66. package/executors/prisma-seeds/executor.d.ts.map +1 -0
  67. package/executors/prisma-seeds/executor.js +68 -0
  68. package/executors/prisma-seeds/executor.js.map +1 -0
  69. package/executors/prisma-seeds/executor.options.d.ts +16 -0
  70. package/executors/prisma-seeds/executor.options.d.ts.map +1 -0
  71. package/executors/prisma-seeds/executor.options.js +3 -0
  72. package/executors/prisma-seeds/executor.options.js.map +1 -0
  73. package/executors/prisma-seeds/executor.task.d.ts +29 -0
  74. package/executors/prisma-seeds/executor.task.d.ts.map +1 -0
  75. package/executors/prisma-seeds/executor.task.js +54 -0
  76. package/executors/prisma-seeds/executor.task.js.map +1 -0
  77. package/executors/prisma-seeds/schema.json +35 -0
  78. package/executors/secrets-config-sync/executor.d.ts +11 -0
  79. package/executors/secrets-config-sync/executor.d.ts.map +1 -0
  80. package/executors/secrets-config-sync/executor.js +64 -0
  81. package/executors/secrets-config-sync/executor.js.map +1 -0
  82. package/executors/secrets-config-sync/executor.options.d.ts +6 -0
  83. package/executors/secrets-config-sync/executor.options.d.ts.map +1 -0
  84. package/executors/secrets-config-sync/executor.options.js +4 -0
  85. package/executors/secrets-config-sync/executor.options.js.map +1 -0
  86. package/executors/secrets-config-sync/executor.task.d.ts +14 -0
  87. package/executors/secrets-config-sync/executor.task.d.ts.map +1 -0
  88. package/executors/secrets-config-sync/executor.task.js +157 -0
  89. package/executors/secrets-config-sync/executor.task.js.map +1 -0
  90. package/executors/secrets-config-sync/providers/azure-keyvault.provider.d.ts +42 -0
  91. package/executors/secrets-config-sync/providers/azure-keyvault.provider.d.ts.map +1 -0
  92. package/executors/secrets-config-sync/providers/azure-keyvault.provider.js +120 -0
  93. package/executors/secrets-config-sync/providers/azure-keyvault.provider.js.map +1 -0
  94. package/executors/secrets-config-sync/providers/doppler.provider.d.ts +18 -0
  95. package/executors/secrets-config-sync/providers/doppler.provider.d.ts.map +1 -0
  96. package/executors/secrets-config-sync/providers/doppler.provider.js +53 -0
  97. package/executors/secrets-config-sync/providers/doppler.provider.js.map +1 -0
  98. package/executors/secrets-config-sync/providers/secrets-provider.factory.d.ts +17 -0
  99. package/executors/secrets-config-sync/providers/secrets-provider.factory.d.ts.map +1 -0
  100. package/executors/secrets-config-sync/providers/secrets-provider.factory.js +25 -0
  101. package/executors/secrets-config-sync/providers/secrets-provider.factory.js.map +1 -0
  102. package/executors/secrets-config-sync/providers/secrets-provider.interface.d.ts +28 -0
  103. package/executors/secrets-config-sync/providers/secrets-provider.interface.d.ts.map +1 -0
  104. package/executors/secrets-config-sync/providers/secrets-provider.interface.js +4 -0
  105. package/executors/secrets-config-sync/providers/secrets-provider.interface.js.map +1 -0
  106. package/executors/secrets-config-sync/schema.json +44 -0
  107. package/executors/secrets-vercel-sync/executor.d.ts +11 -0
  108. package/executors/secrets-vercel-sync/executor.d.ts.map +1 -0
  109. package/executors/secrets-vercel-sync/executor.js +74 -0
  110. package/executors/secrets-vercel-sync/executor.js.map +1 -0
  111. package/executors/secrets-vercel-sync/executor.options.d.ts +8 -0
  112. package/executors/secrets-vercel-sync/executor.options.d.ts.map +1 -0
  113. package/executors/secrets-vercel-sync/executor.options.js +4 -0
  114. package/executors/secrets-vercel-sync/executor.options.js.map +1 -0
  115. package/executors/secrets-vercel-sync/executor.task.d.ts +34 -0
  116. package/executors/secrets-vercel-sync/executor.task.d.ts.map +1 -0
  117. package/executors/secrets-vercel-sync/executor.task.js +492 -0
  118. package/executors/secrets-vercel-sync/executor.task.js.map +1 -0
  119. package/executors/secrets-vercel-sync/providers/azure-keyvault.provider.d.ts +42 -0
  120. package/executors/secrets-vercel-sync/providers/azure-keyvault.provider.d.ts.map +1 -0
  121. package/executors/secrets-vercel-sync/providers/azure-keyvault.provider.js +118 -0
  122. package/executors/secrets-vercel-sync/providers/azure-keyvault.provider.js.map +1 -0
  123. package/executors/secrets-vercel-sync/providers/doppler.provider.d.ts +18 -0
  124. package/executors/secrets-vercel-sync/providers/doppler.provider.d.ts.map +1 -0
  125. package/executors/secrets-vercel-sync/providers/doppler.provider.js +61 -0
  126. package/executors/secrets-vercel-sync/providers/doppler.provider.js.map +1 -0
  127. package/executors/secrets-vercel-sync/providers/secrets-provider.factory.d.ts +17 -0
  128. package/executors/secrets-vercel-sync/providers/secrets-provider.factory.d.ts.map +1 -0
  129. package/executors/secrets-vercel-sync/providers/secrets-provider.factory.js +25 -0
  130. package/executors/secrets-vercel-sync/providers/secrets-provider.factory.js.map +1 -0
  131. package/executors/secrets-vercel-sync/providers/secrets-provider.interface.d.ts +28 -0
  132. package/executors/secrets-vercel-sync/providers/secrets-provider.interface.d.ts.map +1 -0
  133. package/executors/secrets-vercel-sync/providers/secrets-provider.interface.js +4 -0
  134. package/executors/secrets-vercel-sync/providers/secrets-provider.interface.js.map +1 -0
  135. package/executors/secrets-vercel-sync/schema.json +112 -0
  136. package/executors/token-linter/executor.d.ts +10 -0
  137. package/executors/token-linter/executor.d.ts.map +1 -0
  138. package/executors/token-linter/executor.js +67 -0
  139. package/executors/token-linter/executor.js.map +1 -0
  140. package/executors/token-linter/executor.options.d.ts +19 -0
  141. package/executors/token-linter/executor.options.d.ts.map +1 -0
  142. package/executors/token-linter/executor.options.js +4 -0
  143. package/executors/token-linter/executor.options.js.map +1 -0
  144. package/executors/token-linter/executor.task.d.ts +33 -0
  145. package/executors/token-linter/executor.task.d.ts.map +1 -0
  146. package/executors/token-linter/executor.task.js +60 -0
  147. package/executors/token-linter/executor.task.js.map +1 -0
  148. package/executors/token-linter/schema.json +63 -0
  149. package/executors.json +48 -28
  150. package/index.d.ts +4 -3
  151. package/index.d.ts.map +1 -1
  152. package/index.js +41 -39
  153. package/index.js.map +1 -1
  154. package/package.json +21 -17
  155. package/utils/markdown-processing.d.ts +43 -0
  156. package/utils/markdown-processing.d.ts.map +1 -0
  157. package/utils/markdown-processing.js +186 -0
  158. package/utils/markdown-processing.js.map +1 -0
  159. package/utils/valid-html-tags.d.ts +6 -0
  160. package/utils/valid-html-tags.d.ts.map +1 -0
  161. package/utils/valid-html-tags.js +83 -0
  162. package/utils/valid-html-tags.js.map +1 -0
@@ -0,0 +1,118 @@
1
+ "use strict";
2
+ // #region Imports
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.AzureKeyVaultSecretsProvider = void 0;
5
+ const enquirer_1 = require("enquirer");
6
+ // #endregion
7
+ /**
8
+ * Secrets provider implementation for Azure Key Vault.
9
+ *
10
+ * Uses the Key Vault REST API with a Bearer token (e.g. from `az account get-access-token`
11
+ * or a service principal client credential flow). The token must be provided via `apiKey`
12
+ * or entered interactively.
13
+ *
14
+ * @public
15
+ */
16
+ class AzureKeyVaultSecretsProvider {
17
+ // #region Methods
18
+ /**
19
+ * @inheritdoc
20
+ */
21
+ async authenticate(apiKey, interactive) {
22
+ if (apiKey) {
23
+ return apiKey;
24
+ }
25
+ const envToken = process.env['AZURE_KEYVAULT_TOKEN'];
26
+ if (envToken) {
27
+ return envToken;
28
+ }
29
+ if (interactive) {
30
+ const credentials = await (0, enquirer_1.prompt)([
31
+ {
32
+ type: 'input',
33
+ name: 'token',
34
+ message: 'Enter your Azure Key Vault access token:\nYou can obtain one via `az account get-access-token --resource https://vault.azure.net --query accessToken -o tsv`.'
35
+ }
36
+ ]);
37
+ if (!credentials.token) {
38
+ throw new Error('No Azure Key Vault access token provided. Aborting.');
39
+ }
40
+ return credentials.token;
41
+ }
42
+ throw new Error('AZURE_KEYVAULT_TOKEN environment variable is not set. Set it to an Azure Key Vault access token, or enable interactive mode.');
43
+ }
44
+ /**
45
+ * Fetches all secrets from an Azure Key Vault.
46
+ *
47
+ * The `project` and `config` parameters are ignored. The vault is identified
48
+ * solely by `vaultUrl`.
49
+ *
50
+ * @inheritdoc
51
+ */
52
+ async fetchSecrets(token, _project, _config, logger, vaultUrl) {
53
+ if (!vaultUrl) {
54
+ throw new Error('vaultUrl is required for the azure-keyvault provider.');
55
+ }
56
+ const normalizedVaultUrl = vaultUrl.endsWith('/') ? vaultUrl.slice(0, -1) : vaultUrl;
57
+ const secrets = {};
58
+ // Step 1: List all secrets (paged)
59
+ const secretItems = await this.listSecrets(token, normalizedVaultUrl);
60
+ logger.log(` Found ${secretItems.length} secrets in Key Vault.`);
61
+ // Step 2: Fetch each secret value
62
+ for (const item of secretItems) {
63
+ const secretName = this.extractSecretName(item.id);
64
+ const value = await this.getSecretValue(token, normalizedVaultUrl, secretName);
65
+ secrets[secretName] = value;
66
+ }
67
+ logger.log(` Fetched ${Object.keys(secrets).length} secrets from Azure Key Vault [${normalizedVaultUrl}].`);
68
+ return secrets;
69
+ }
70
+ // #endregion
71
+ // #region Private Methods
72
+ /**
73
+ * Lists all secrets in the vault (handles pagination).
74
+ */
75
+ async listSecrets(token, vaultUrl) {
76
+ const allItems = [];
77
+ let nextLink = `${vaultUrl}/secrets?api-version=7.4`;
78
+ while (nextLink) {
79
+ const response = await fetch(nextLink, {
80
+ headers: { Authorization: `Bearer ${token}` }
81
+ });
82
+ if (!response.ok) {
83
+ throw new Error(`Failed to list Azure Key Vault secrets (HTTP ${response.status}): ${response.statusText}`);
84
+ }
85
+ const data = await response.json();
86
+ const enabledItems = data.value.filter(item => item.attributes.enabled);
87
+ allItems.push(...enabledItems);
88
+ nextLink = data.nextLink;
89
+ }
90
+ return allItems;
91
+ }
92
+ /**
93
+ * Fetches the current value of a single secret.
94
+ */
95
+ async getSecretValue(token, vaultUrl, secretName) {
96
+ const url = `${vaultUrl}/secrets/${encodeURIComponent(secretName)}?api-version=7.4`;
97
+ const response = await fetch(url, {
98
+ headers: { Authorization: `Bearer ${token}` }
99
+ });
100
+ if (!response.ok) {
101
+ throw new Error(`Failed to fetch Azure Key Vault secret "${secretName}" (HTTP ${response.status}): ${response.statusText}`);
102
+ }
103
+ const data = await response.json();
104
+ return data.value;
105
+ }
106
+ /**
107
+ * Extracts the secret name from a Key Vault secret ID URL.
108
+ *
109
+ * @example
110
+ * `https://my-vault.vault.azure.net/secrets/MY_SECRET` → `MY_SECRET`
111
+ */
112
+ extractSecretName(secretId) {
113
+ const parts = secretId.split('/');
114
+ return parts[parts.length - 1];
115
+ }
116
+ }
117
+ exports.AzureKeyVaultSecretsProvider = AzureKeyVaultSecretsProvider;
118
+ //# sourceMappingURL=azure-keyvault.provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"azure-keyvault.provider.js","sourceRoot":"","sources":["../../../../src/executors/secrets-vercel-sync/providers/azure-keyvault.provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { ILogger } from '@breadstone-infrastructure/utilities';
2
+ import type { ISecretsProvider } from './secrets-provider.interface';
3
+ /**
4
+ * Secrets provider implementation for Doppler.
5
+ *
6
+ * @public
7
+ */
8
+ export declare class DopplerSecretsProvider implements ISecretsProvider {
9
+ /**
10
+ * @inheritdoc
11
+ */
12
+ authenticate(apiKey?: string, interactive?: boolean): Promise<string>;
13
+ /**
14
+ * @inheritdoc
15
+ */
16
+ fetchSecrets(token: string, project: string, config: string, logger: ILogger): Promise<Record<string, string>>;
17
+ }
18
+ //# sourceMappingURL=doppler.provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doppler.provider.d.ts","sourceRoot":"","sources":["../../../../src/executors/secrets-vercel-sync/providers/doppler.provider.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAC;AAEpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAiBrE;;;;GAIG;AACH,qBAAa,sBAAuB,YAAW,gBAAgB;IAI3D;;OAEG;IACU,YAAY,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IA6BlF;;OAEG;IACU,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CA2B9H"}
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ // #region Imports
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.DopplerSecretsProvider = void 0;
5
+ const enquirer_1 = require("enquirer");
6
+ // #endregion
7
+ /**
8
+ * Secrets provider implementation for Doppler.
9
+ *
10
+ * @public
11
+ */
12
+ class DopplerSecretsProvider {
13
+ // #region Methods
14
+ /**
15
+ * @inheritdoc
16
+ */
17
+ async authenticate(apiKey, interactive) {
18
+ if (apiKey) {
19
+ return apiKey;
20
+ }
21
+ const envToken = process.env['DOPPLER_TOKEN'];
22
+ if (envToken) {
23
+ return envToken;
24
+ }
25
+ if (interactive) {
26
+ const credentials = await (0, enquirer_1.prompt)([
27
+ {
28
+ type: 'input',
29
+ name: 'token',
30
+ message: 'Enter your Doppler API token:\nYou can find it in your Doppler account under Service Tokens or Personal Tokens.'
31
+ }
32
+ ]);
33
+ if (!credentials.token) {
34
+ throw new Error('No Doppler API token provided. Aborting.');
35
+ }
36
+ return credentials.token;
37
+ }
38
+ throw new Error('DOPPLER_TOKEN environment variable is not set. Set it to a Doppler Service Token or Personal Token, or enable interactive mode.');
39
+ }
40
+ /**
41
+ * @inheritdoc
42
+ */
43
+ async fetchSecrets(token, project, config, logger) {
44
+ const apiUrl = `https://api.doppler.com/v3/configs/config/secrets?project=${encodeURIComponent(project)}&config=${encodeURIComponent(config)}&include_dynamic_secrets=false&include_managed_secrets=true`;
45
+ const response = await fetch(apiUrl, {
46
+ headers: { Authorization: `Bearer ${token}` }
47
+ });
48
+ if (!response.ok) {
49
+ throw new Error(`Failed to fetch Doppler secrets (HTTP ${response.status}): ${response.statusText}`);
50
+ }
51
+ const data = await response.json();
52
+ if (!data.success) {
53
+ throw new Error('Doppler API returned success=false.');
54
+ }
55
+ const secrets = Object.fromEntries(Object.entries(data.secrets).map(([key, value]) => [key, value.computed]));
56
+ logger.log(` Fetched ${Object.keys(secrets).length} secrets from Doppler [${project}/${config}].`);
57
+ return secrets;
58
+ }
59
+ }
60
+ exports.DopplerSecretsProvider = DopplerSecretsProvider;
61
+ //# sourceMappingURL=doppler.provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doppler.provider.js","sourceRoot":"","sources":["../../../../src/executors/secrets-vercel-sync/providers/doppler.provider.ts"],"names":[],"mappings":";AAAA,kBAAkB;;;AAGlB,uCAAkC;AAgBlC,aAAa;AAEb;;;;GAIG;AACH,MAAa,sBAAsB;IAE/B,kBAAkB;IAElB;;OAEG;IACI,KAAK,CAAC,YAAY,CAAC,MAAe,EAAE,WAAqB;QAC5D,IAAI,MAAM,EAAE,CAAC;YACT,OAAO,MAAM,CAAC;QAClB,CAAC;QAED,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAC9C,IAAI,QAAQ,EAAE,CAAC;YACX,OAAO,QAAQ,CAAC;QACpB,CAAC;QAED,IAAI,WAAW,EAAE,CAAC;YACd,MAAM,WAAW,GAAG,MAAM,IAAA,iBAAM,EAAoB;gBAChD;oBACI,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,OAAO;oBACb,OAAO,EAAE,iHAAiH;iBAC7H;aACJ,CAAC,CAAC;YAEH,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;gBACrB,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;YAChE,CAAC;YAED,OAAO,WAAW,CAAC,KAAK,CAAC;QAC7B,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,iIAAiI,CAAC,CAAC;IACvJ,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,YAAY,CAAC,KAAa,EAAE,OAAe,EAAE,MAAc,EAAE,MAAe;QACrF,MAAM,MAAM,GAAG,6DAA6D,kBAAkB,CAAC,OAAO,CAAC,WAAW,kBAAkB,CAAC,MAAM,CAAC,6DAA6D,CAAC;QAE1M,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,EAAE;YACjC,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,KAAK,EAAE,EAAE;SAChD,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,yCAAyC,QAAQ,CAAC,MAAM,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QACzG,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAA6B,CAAC;QAE9D,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QAC3D,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAC9B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAC5E,CAAC;QAEF,MAAM,CAAC,GAAG,CAAC,aAAa,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,0BAA0B,OAAO,IAAI,MAAM,IAAI,CAAC,CAAC;QAEpG,OAAO,OAAO,CAAC;IACnB,CAAC;CAGJ;AAlED,wDAkEC"}
@@ -0,0 +1,17 @@
1
+ import type { ISecretsProvider } from './secrets-provider.interface';
2
+ /**
3
+ * The supported secrets provider types.
4
+ *
5
+ * @public
6
+ */
7
+ export type SecretsProviderType = 'doppler' | 'azure-keyvault';
8
+ /**
9
+ * Creates an {@link ISecretsProvider} instance for the given provider type.
10
+ *
11
+ * @param type - The provider type to instantiate.
12
+ * @returns The corresponding secrets provider.
13
+ *
14
+ * @public
15
+ */
16
+ export declare function createSecretsProvider(type: SecretsProviderType): ISecretsProvider;
17
+ //# sourceMappingURL=secrets-provider.factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secrets-provider.factory.d.ts","sourceRoot":"","sources":["../../../../src/executors/secrets-vercel-sync/providers/secrets-provider.factory.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAIrE;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,gBAAgB,CAAC;AAE/D;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,mBAAmB,GAAG,gBAAgB,CASjF"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ // #region Imports
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.createSecretsProvider = createSecretsProvider;
5
+ const azure_keyvault_provider_1 = require("./azure-keyvault.provider");
6
+ const doppler_provider_1 = require("./doppler.provider");
7
+ /**
8
+ * Creates an {@link ISecretsProvider} instance for the given provider type.
9
+ *
10
+ * @param type - The provider type to instantiate.
11
+ * @returns The corresponding secrets provider.
12
+ *
13
+ * @public
14
+ */
15
+ function createSecretsProvider(type) {
16
+ switch (type) {
17
+ case 'doppler':
18
+ return new doppler_provider_1.DopplerSecretsProvider();
19
+ case 'azure-keyvault':
20
+ return new azure_keyvault_provider_1.AzureKeyVaultSecretsProvider();
21
+ default:
22
+ throw new Error(`Unknown secrets provider type: "${type}". Supported: doppler, azure-keyvault.`);
23
+ }
24
+ }
25
+ //# sourceMappingURL=secrets-provider.factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secrets-provider.factory.js","sourceRoot":"","sources":["../../../../src/executors/secrets-vercel-sync/providers/secrets-provider.factory.ts"],"names":[],"mappings":";AAAA,kBAAkB;;AAuBlB,sDASC;AA9BD,uEAAyE;AACzE,yDAA4D;AAY5D;;;;;;;GAOG;AACH,SAAgB,qBAAqB,CAAC,IAAyB;IAC3D,QAAQ,IAAI,EAAE,CAAC;QACX,KAAK,SAAS;YACV,OAAO,IAAI,yCAAsB,EAAE,CAAC;QACxC,KAAK,gBAAgB;YACjB,OAAO,IAAI,sDAA4B,EAAE,CAAC;QAC9C;YACI,MAAM,IAAI,KAAK,CAAC,mCAAmC,IAAI,wCAAwC,CAAC,CAAC;IACzG,CAAC;AACL,CAAC"}
@@ -0,0 +1,28 @@
1
+ import type { ILogger } from '@breadstone-infrastructure/utilities';
2
+ /**
3
+ * Abstraction for a secrets provider that can authenticate and fetch secrets.
4
+ *
5
+ * @public
6
+ */
7
+ export interface ISecretsProvider {
8
+ /**
9
+ * Authenticates with the provider and returns an access token.
10
+ *
11
+ * @param apiKey - An optional API key or access token. If provided, it is used directly.
12
+ * @param interactive - Whether to prompt the user for credentials if none are provided.
13
+ * @returns The resolved access token.
14
+ */
15
+ authenticate(apiKey?: string, interactive?: boolean): Promise<string>;
16
+ /**
17
+ * Fetches all secrets from the provider.
18
+ *
19
+ * @param token - The access token obtained from {@link authenticate}.
20
+ * @param project - The project identifier (Doppler project name, or ignored for Azure Key Vault).
21
+ * @param config - The config identifier (Doppler config name, or ignored for Azure Key Vault).
22
+ * @param logger - Logger instance for status output.
23
+ * @param vaultUrl - The Azure Key Vault URL (only used by the azure-keyvault provider).
24
+ * @returns A flat record of secret key-value pairs.
25
+ */
26
+ fetchSecrets(token: string, project: string, config: string, logger: ILogger, vaultUrl?: string): Promise<Record<string, string>>;
27
+ }
28
+ //# sourceMappingURL=secrets-provider.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secrets-provider.interface.d.ts","sourceRoot":"","sources":["../../../../src/executors/secrets-vercel-sync/providers/secrets-provider.interface.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAC;AAIpE;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAE7B;;;;;;OAMG;IACH,YAAY,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEtE;;;;;;;;;OASG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACrI"}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ // #region Imports
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ //# sourceMappingURL=secrets-provider.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secrets-provider.interface.js","sourceRoot":"","sources":["../../../../src/executors/secrets-vercel-sync/providers/secrets-provider.interface.ts"],"names":[],"mappings":";AAAA,kBAAkB"}
@@ -0,0 +1,112 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema",
3
+ "cli": "nx",
4
+ "title": "Secrets Vercel Sync",
5
+ "description": "Synchronizes secrets from a configurable provider (Doppler, Azure Key Vault) to a Vercel project/environment.",
6
+ "type": "object",
7
+ "properties": {
8
+ "provider": {
9
+ "type": "string",
10
+ "description": "The secrets provider to use.",
11
+ "enum": [
12
+ "doppler",
13
+ "azure-keyvault"
14
+ ],
15
+ "default": "doppler"
16
+ },
17
+ "secretsProject": {
18
+ "type": "string",
19
+ "description": "The secrets provider project identifier (e.g. Doppler project name)."
20
+ },
21
+ "secretsConfig": {
22
+ "type": "string",
23
+ "description": "The secrets provider configuration identifier (e.g. Doppler config name: dev, prev, prod)."
24
+ },
25
+ "vaultUrl": {
26
+ "type": "string",
27
+ "description": "The Azure Key Vault URL (e.g. https://my-vault.vault.azure.net). Required when provider is azure-keyvault."
28
+ },
29
+ "apiKey": {
30
+ "type": "string",
31
+ "description": "The API key or access token for the secrets provider. If omitted, resolved from environment or prompted interactively."
32
+ },
33
+ "vercelTeam": {
34
+ "type": "string",
35
+ "description": "The Vercel team slug or scope."
36
+ },
37
+ "vercelProject": {
38
+ "type": "string",
39
+ "description": "The Vercel project name or ID."
40
+ },
41
+ "vercelEnvironment": {
42
+ "type": "string",
43
+ "description": "The target Vercel environment.",
44
+ "enum": [
45
+ "development",
46
+ "preview",
47
+ "production"
48
+ ]
49
+ },
50
+ "vercelVariableType": {
51
+ "type": "string",
52
+ "description": "The Vercel variable type (encrypted or sensitive).",
53
+ "enum": [
54
+ "encrypted",
55
+ "sensitive"
56
+ ],
57
+ "default": "encrypted"
58
+ },
59
+ "conflictStrategy": {
60
+ "type": "string",
61
+ "description": "How to handle conflicts between the secrets provider and existing Vercel values.",
62
+ "enum": [
63
+ "none",
64
+ "prefer-source",
65
+ "prefer-vercel"
66
+ ],
67
+ "default": "prefer-source"
68
+ },
69
+ "dryRun": {
70
+ "type": "boolean",
71
+ "description": "If true, no changes are written to Vercel. Only a diff report is shown.",
72
+ "default": false
73
+ },
74
+ "deleteMissing": {
75
+ "type": "boolean",
76
+ "description": "If true, keys present in Vercel but not in the secrets provider are deleted. Must be explicitly enabled.",
77
+ "default": false
78
+ },
79
+ "includeKeys": {
80
+ "type": "array",
81
+ "items": {
82
+ "type": "string"
83
+ },
84
+ "description": "If set, only these keys are synchronized."
85
+ },
86
+ "excludeKeys": {
87
+ "type": "array",
88
+ "items": {
89
+ "type": "string"
90
+ },
91
+ "description": "If set, these keys are excluded from synchronization."
92
+ },
93
+ "redeploy": {
94
+ "type": "boolean",
95
+ "description": "If true, triggers a redeployment of the Vercel project after sync.",
96
+ "default": false
97
+ },
98
+ "interactive": {
99
+ "type": "boolean",
100
+ "description": "If true, prompts the user for missing tokens instead of failing.",
101
+ "default": false
102
+ }
103
+ },
104
+ "required": [
105
+ "secretsProject",
106
+ "secretsConfig",
107
+ "vercelTeam",
108
+ "vercelProject",
109
+ "vercelEnvironment"
110
+ ],
111
+ "additionalProperties": false
112
+ }
@@ -0,0 +1,10 @@
1
+ import type { ExecutorContext } from '@nx/devkit';
2
+ import type { TokenLinterExecutorOptions } from './executor.options';
3
+ /**
4
+ * @description Nx executor entry point for the token linter.
5
+ * @public
6
+ */
7
+ export default function runExecutor(options: TokenLinterExecutorOptions, context: ExecutorContext): Promise<{
8
+ success: boolean;
9
+ }>;
10
+ //# sourceMappingURL=executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../src/executors/token-linter/executor.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGlD,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAIrE;;;GAGG;AACH,wBAA8B,WAAW,CAAC,OAAO,EAAE,0BAA0B,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAuBtI"}
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ // #region Imports
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ exports.default = runExecutor;
38
+ const getProjectRoot_1 = require("../../utils/getProjectRoot");
39
+ const isVerbose_1 = require("../../utils/isVerbose");
40
+ // #endregion
41
+ /**
42
+ * @description Nx executor entry point for the token linter.
43
+ * @public
44
+ */
45
+ async function runExecutor(options, context) {
46
+ try {
47
+ const task = (await Promise.resolve().then(() => __importStar(require('./executor.task')))).TokenLinterTask;
48
+ const verbose = (0, isVerbose_1.isVerbose)(context, options);
49
+ await task.run({
50
+ cwd: (0, getProjectRoot_1.getProjectRoot)(context),
51
+ tokensDir: options.tokensDir,
52
+ mixinsDir: options.mixinsDir,
53
+ themes: options.themes,
54
+ fix: options.fix,
55
+ verbose,
56
+ reporter: options.reporter,
57
+ rules: options.rules,
58
+ ruleOptions: options.ruleOptions,
59
+ });
60
+ return { success: true };
61
+ }
62
+ catch (error) {
63
+ console.error(error);
64
+ return { success: false };
65
+ }
66
+ }
67
+ //# sourceMappingURL=executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../src/executors/token-linter/executor.ts"],"names":[],"mappings":";AAAA,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAalB,8BAuBC;AAjCD,+DAA4D;AAC5D,qDAAkD;AAGlD,aAAa;AAEb;;;GAGG;AACY,KAAK,UAAU,WAAW,CAAC,OAAmC,EAAE,OAAwB;IACnG,IAAI,CAAC;QACD,MAAM,IAAI,GAAG,CAAC,wDAAa,iBAAiB,GAAC,CAAC,CAAC,eAAe,CAAC;QAC/D,MAAM,OAAO,GAAG,IAAA,qBAAS,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAE5C,MAAM,IAAI,CAAC,GAAG,CAAC;YACX,GAAG,EAAE,IAAA,+BAAc,EAAC,OAAO,CAAC;YAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,OAAO;YACP,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,WAAW,EAAE,OAAO,CAAC,WAAW;SACnC,CAAC,CAAC;QAEH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC7B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAErB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC9B,CAAC;AACL,CAAC"}
@@ -0,0 +1,19 @@
1
+ import type { RuleSeverity } from '@breadstone-infrastructure/token-linter';
2
+ /**
3
+ * @description Options for the token-linter executor as declared in project.json.
4
+ * All fields are optional - the primary config comes from `tokenlinter.config.mjs`.
5
+ * Any options specified here override the config file values.
6
+ * @public
7
+ */
8
+ export interface TokenLinterExecutorOptions {
9
+ tokensDir?: string;
10
+ themes?: string[];
11
+ mixinsDir?: string;
12
+ fix?: boolean;
13
+ interactive?: boolean;
14
+ verbose?: boolean;
15
+ reporter?: 'console' | 'json' | 'summary';
16
+ rules?: Record<string, RuleSeverity | 'off'>;
17
+ ruleOptions?: Record<string, Record<string, unknown>>;
18
+ }
19
+ //# sourceMappingURL=executor.options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.options.d.ts","sourceRoot":"","sources":["../../../src/executors/token-linter/executor.options.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAI5E;;;;;GAKG;AACH,MAAM,WAAW,0BAA0B;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,KAAK,CAAC,CAAC;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACzD"}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ // #region Imports
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ //# sourceMappingURL=executor.options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.options.js","sourceRoot":"","sources":["../../../src/executors/token-linter/executor.options.ts"],"names":[],"mappings":";AAAA,kBAAkB"}
@@ -0,0 +1,33 @@
1
+ import { type RuleSeverity } from '@breadstone-infrastructure/token-linter';
2
+ /**
3
+ * @description Task to validate and lint Style Dictionary token JSON files across themes.
4
+ * Discovers `tokenlinter.config.mjs` in the project root automatically.
5
+ * Executor options from project.json override the config file values.
6
+ * @public
7
+ */
8
+ export declare namespace TokenLinterTask {
9
+ /**
10
+ * @description All fields are optional - the primary configuration comes from
11
+ * the `tokenlinter.config.mjs` config file. Any values provided here override
12
+ * the config file values.
13
+ * @public
14
+ */
15
+ interface ITokenLinterTaskOptions {
16
+ cwd: string;
17
+ tokensDir?: string;
18
+ mixinsDir?: string;
19
+ themes?: string[];
20
+ fix?: boolean;
21
+ interactive?: boolean;
22
+ verbose?: boolean;
23
+ reporter?: 'console' | 'json' | 'summary';
24
+ rules?: Record<string, RuleSeverity | 'off'>;
25
+ ruleOptions?: Record<string, Record<string, unknown>>;
26
+ }
27
+ /**
28
+ * @description Discovers the config file and executes the token linter.
29
+ * Executor options override config file values.
30
+ */
31
+ function run(options: ITokenLinterTaskOptions): Promise<void>;
32
+ }
33
+ //# sourceMappingURL=executor.task.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.task.d.ts","sourceRoot":"","sources":["../../../src/executors/token-linter/executor.task.ts"],"names":[],"mappings":"AAEA,OAAO,EAA2B,KAAK,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAIrG;;;;;GAKG;AACH,yBAAiB,eAAe,CAAC;IAI7B;;;;;OAKG;IACH,UAAiB,uBAAuB;QACpC,GAAG,EAAE,MAAM,CAAC;QACZ,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,GAAG,CAAC,EAAE,OAAO,CAAC;QACd,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,QAAQ,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC;QAC1C,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,KAAK,CAAC,CAAC;QAC7C,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;KACzD;IAMD;;;OAGG;IACH,SAAsB,GAAG,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBzE;CAGJ"}
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ // #region Imports
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.TokenLinterTask = void 0;
5
+ const token_linter_1 = require("@breadstone-infrastructure/token-linter");
6
+ // #endregion
7
+ /**
8
+ * @description Task to validate and lint Style Dictionary token JSON files across themes.
9
+ * Discovers `tokenlinter.config.mjs` in the project root automatically.
10
+ * Executor options from project.json override the config file values.
11
+ * @public
12
+ */
13
+ var TokenLinterTask;
14
+ (function (TokenLinterTask) {
15
+ // #region Interfaces
16
+ // #endregion
17
+ // #region Functions
18
+ /**
19
+ * @description Discovers the config file and executes the token linter.
20
+ * Executor options override config file values.
21
+ */
22
+ async function run(options) {
23
+ const orchestrator = new token_linter_1.TokenLinterOrchestrator();
24
+ const overrides = {};
25
+ if (options.tokensDir !== undefined) {
26
+ overrides['tokensDir'] = options.tokensDir;
27
+ }
28
+ if (options.mixinsDir !== undefined) {
29
+ overrides['mixinsDir'] = options.mixinsDir;
30
+ }
31
+ if (options.themes !== undefined) {
32
+ overrides['themes'] = options.themes;
33
+ }
34
+ if (options.fix !== undefined) {
35
+ overrides['fix'] = options.fix;
36
+ }
37
+ if (options.interactive !== undefined) {
38
+ overrides['interactive'] = options.interactive;
39
+ }
40
+ if (options.verbose !== undefined) {
41
+ overrides['verbose'] = options.verbose;
42
+ }
43
+ if (options.reporter !== undefined) {
44
+ overrides['reporter'] = options.reporter;
45
+ }
46
+ if (options.rules !== undefined) {
47
+ overrides['rules'] = options.rules;
48
+ }
49
+ if (options.ruleOptions !== undefined) {
50
+ overrides['ruleOptions'] = options.ruleOptions;
51
+ }
52
+ const result = await orchestrator.executeWithOverrides(options.cwd, overrides);
53
+ if (result.totalErrors > 0) {
54
+ throw new Error(`Token Linter found ${result.totalErrors} error(s).`);
55
+ }
56
+ }
57
+ TokenLinterTask.run = run;
58
+ // #endregion
59
+ })(TokenLinterTask || (exports.TokenLinterTask = TokenLinterTask = {}));
60
+ //# sourceMappingURL=executor.task.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.task.js","sourceRoot":"","sources":["../../../src/executors/token-linter/executor.task.ts"],"names":[],"mappings":";AAAA,kBAAkB;;;AAElB,0EAAqG;AAErG,aAAa;AAEb;;;;;GAKG;AACH,IAAiB,eAAe,CAqD/B;AArDD,WAAiB,eAAe;IAE5B,qBAAqB;IAqBrB,aAAa;IAEb,oBAAoB;IAEpB;;;OAGG;IACI,KAAK,UAAU,GAAG,CAAC,OAAgC;QACtD,MAAM,YAAY,GAAG,IAAI,sCAAuB,EAAE,CAAC;QACnD,MAAM,SAAS,GAA4B,EAAE,CAAC;QAE9C,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YAAC,SAAS,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;QAAC,CAAC;QACpF,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YAAC,SAAS,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;QAAC,CAAC;QACpF,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;QAAC,CAAC;QAC3E,IAAI,OAAO,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;YAAC,SAAS,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;QAAC,CAAC;QAClE,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YAAC,SAAS,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC;QAAC,CAAC;QAC1F,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAAC,SAAS,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;QAAC,CAAC;QAC9E,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAAC,SAAS,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC;QAAC,CAAC;QACjF,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAAC,SAAS,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC;QAAC,CAAC;QACxE,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YAAC,SAAS,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC;QAAC,CAAC;QAE1F,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,oBAAoB,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAE/E,IAAI,MAAM,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,sBAAsB,MAAM,CAAC,WAAW,YAAY,CAAC,CAAC;QAC1E,CAAC;IACL,CAAC;IAnBqB,mBAAG,MAmBxB,CAAA;IAED,aAAa;AACjB,CAAC,EArDgB,eAAe,+BAAf,eAAe,QAqD/B"}