@breadstone-infrastructure/nx-tasks 0.0.231 → 0.0.233

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 (141) 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.options.d.ts +1 -1
  66. package/executors/prisma-seeds/executor.task.d.ts +1 -1
  67. package/executors/secrets-config-sync/executor.d.ts +11 -0
  68. package/executors/secrets-config-sync/executor.d.ts.map +1 -0
  69. package/executors/secrets-config-sync/executor.js +64 -0
  70. package/executors/secrets-config-sync/executor.js.map +1 -0
  71. package/executors/secrets-config-sync/executor.options.d.ts +6 -0
  72. package/executors/secrets-config-sync/executor.options.d.ts.map +1 -0
  73. package/executors/secrets-config-sync/executor.options.js +4 -0
  74. package/executors/secrets-config-sync/executor.options.js.map +1 -0
  75. package/executors/secrets-config-sync/executor.task.d.ts +14 -0
  76. package/executors/secrets-config-sync/executor.task.d.ts.map +1 -0
  77. package/executors/secrets-config-sync/executor.task.js +157 -0
  78. package/executors/secrets-config-sync/executor.task.js.map +1 -0
  79. package/executors/secrets-config-sync/providers/azure-keyvault.provider.d.ts +42 -0
  80. package/executors/secrets-config-sync/providers/azure-keyvault.provider.d.ts.map +1 -0
  81. package/executors/secrets-config-sync/providers/azure-keyvault.provider.js +120 -0
  82. package/executors/secrets-config-sync/providers/azure-keyvault.provider.js.map +1 -0
  83. package/executors/secrets-config-sync/providers/doppler.provider.d.ts +18 -0
  84. package/executors/secrets-config-sync/providers/doppler.provider.d.ts.map +1 -0
  85. package/executors/secrets-config-sync/providers/doppler.provider.js +53 -0
  86. package/executors/secrets-config-sync/providers/doppler.provider.js.map +1 -0
  87. package/executors/secrets-config-sync/providers/secrets-provider.factory.d.ts +17 -0
  88. package/executors/secrets-config-sync/providers/secrets-provider.factory.d.ts.map +1 -0
  89. package/executors/secrets-config-sync/providers/secrets-provider.factory.js +25 -0
  90. package/executors/secrets-config-sync/providers/secrets-provider.factory.js.map +1 -0
  91. package/executors/secrets-config-sync/providers/secrets-provider.interface.d.ts +28 -0
  92. package/executors/secrets-config-sync/providers/secrets-provider.interface.d.ts.map +1 -0
  93. package/executors/secrets-config-sync/providers/secrets-provider.interface.js +4 -0
  94. package/executors/secrets-config-sync/providers/secrets-provider.interface.js.map +1 -0
  95. package/executors/secrets-config-sync/schema.json +44 -0
  96. package/executors/secrets-vercel-sync/executor.d.ts +11 -0
  97. package/executors/secrets-vercel-sync/executor.d.ts.map +1 -0
  98. package/executors/secrets-vercel-sync/executor.js +74 -0
  99. package/executors/secrets-vercel-sync/executor.js.map +1 -0
  100. package/executors/secrets-vercel-sync/executor.options.d.ts +8 -0
  101. package/executors/secrets-vercel-sync/executor.options.d.ts.map +1 -0
  102. package/executors/secrets-vercel-sync/executor.options.js +4 -0
  103. package/executors/secrets-vercel-sync/executor.options.js.map +1 -0
  104. package/executors/secrets-vercel-sync/executor.task.d.ts +34 -0
  105. package/executors/secrets-vercel-sync/executor.task.d.ts.map +1 -0
  106. package/executors/secrets-vercel-sync/executor.task.js +492 -0
  107. package/executors/secrets-vercel-sync/executor.task.js.map +1 -0
  108. package/executors/secrets-vercel-sync/providers/azure-keyvault.provider.d.ts +42 -0
  109. package/executors/secrets-vercel-sync/providers/azure-keyvault.provider.d.ts.map +1 -0
  110. package/executors/secrets-vercel-sync/providers/azure-keyvault.provider.js +118 -0
  111. package/executors/secrets-vercel-sync/providers/azure-keyvault.provider.js.map +1 -0
  112. package/executors/secrets-vercel-sync/providers/doppler.provider.d.ts +18 -0
  113. package/executors/secrets-vercel-sync/providers/doppler.provider.d.ts.map +1 -0
  114. package/executors/secrets-vercel-sync/providers/doppler.provider.js +61 -0
  115. package/executors/secrets-vercel-sync/providers/doppler.provider.js.map +1 -0
  116. package/executors/secrets-vercel-sync/providers/secrets-provider.factory.d.ts +17 -0
  117. package/executors/secrets-vercel-sync/providers/secrets-provider.factory.d.ts.map +1 -0
  118. package/executors/secrets-vercel-sync/providers/secrets-provider.factory.js +25 -0
  119. package/executors/secrets-vercel-sync/providers/secrets-provider.factory.js.map +1 -0
  120. package/executors/secrets-vercel-sync/providers/secrets-provider.interface.d.ts +28 -0
  121. package/executors/secrets-vercel-sync/providers/secrets-provider.interface.d.ts.map +1 -0
  122. package/executors/secrets-vercel-sync/providers/secrets-provider.interface.js +4 -0
  123. package/executors/secrets-vercel-sync/providers/secrets-provider.interface.js.map +1 -0
  124. package/executors/secrets-vercel-sync/schema.json +112 -0
  125. package/executors/token-linter/executor.options.d.ts +1 -1
  126. package/executors/token-linter/executor.task.d.ts +1 -1
  127. package/executors/token-linter/schema.json +1 -1
  128. package/executors.json +40 -30
  129. package/index.d.ts +4 -3
  130. package/index.d.ts.map +1 -1
  131. package/index.js +41 -39
  132. package/index.js.map +1 -1
  133. package/package.json +21 -19
  134. package/utils/markdown-processing.d.ts +43 -0
  135. package/utils/markdown-processing.d.ts.map +1 -0
  136. package/utils/markdown-processing.js +186 -0
  137. package/utils/markdown-processing.js.map +1 -0
  138. package/utils/valid-html-tags.d.ts +6 -0
  139. package/utils/valid-html-tags.d.ts.map +1 -0
  140. package/utils/valid-html-tags.js +83 -0
  141. 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
+ }
@@ -1,7 +1,7 @@
1
1
  import type { RuleSeverity } from '@breadstone-infrastructure/token-linter';
2
2
  /**
3
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`.
4
+ * All fields are optional - the primary config comes from `tokenlinter.config.mjs`.
5
5
  * Any options specified here override the config file values.
6
6
  * @public
7
7
  */
@@ -7,7 +7,7 @@ import { type RuleSeverity } from '@breadstone-infrastructure/token-linter';
7
7
  */
8
8
  export declare namespace TokenLinterTask {
9
9
  /**
10
- * @description All fields are optional the primary configuration comes from
10
+ * @description All fields are optional - the primary configuration comes from
11
11
  * the `tokenlinter.config.mjs` config file. Any values provided here override
12
12
  * the config file values.
13
13
  * @public
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "type": "object",
3
- "description": "Token linter executor options. All fields are optional the primary config comes from `tokenlinter.config.mjs` in the project root. Options specified here override the config file values.",
3
+ "description": "Token linter executor options. All fields are optional - the primary config comes from `tokenlinter.config.mjs` in the project root. Options specified here override the config file values.",
4
4
  "properties": {
5
5
  "tokensDir": {
6
6
  "type": "string",
package/executors.json CHANGED
@@ -1,139 +1,149 @@
1
1
  {
2
2
  "executors": {
3
3
  "alias-replace": {
4
- "description": "alias-replace task executor",
4
+ "description": "Replaces alias placeholders in build output files with resolved values from environment, package.json, or custom expressions.",
5
5
  "implementation": "./executors/alias-replace/executor",
6
6
  "schema": "./executors/alias-replace/schema.json"
7
7
  },
8
8
  "clean": {
9
- "description": "clean task executor",
9
+ "description": "Removes build artifacts, caches, and temporary files from a project directory.",
10
10
  "implementation": "./executors/clean/executor",
11
11
  "schema": "./executors/clean/schema.json"
12
12
  },
13
13
  "copy": {
14
- "description": "copy task executor",
14
+ "description": "Copies files or directories from a source to a destination path.",
15
15
  "implementation": "./executors/copy/executor",
16
16
  "schema": "./executors/copy/schema.json"
17
17
  },
18
18
  "copy2": {
19
- "description": "copy2 task executor",
19
+ "description": "Copies files or directories with extended options and glob pattern support.",
20
20
  "implementation": "./executors/copy2/executor",
21
21
  "schema": "./executors/copy2/schema.json"
22
22
  },
23
23
  "docs": {
24
- "description": "docs task executor",
24
+ "description": "Generates API documentation using API Extractor and outputs it to the docs directory.",
25
25
  "implementation": "./executors/docs/executor",
26
26
  "schema": "./executors/docs/schema.json"
27
27
  },
28
- "doppler-config-sync": {
29
- "description": "doppler-config-sync task executor",
30
- "implementation": "./executors/doppler-config-sync/executor",
31
- "schema": "./executors/doppler-config-sync/schema.json"
28
+ "secrets-config-sync": {
29
+ "description": "Fetches secrets from a configurable provider (Doppler, Azure Key Vault) and writes them to local .env files.",
30
+ "implementation": "./executors/secrets-config-sync/executor",
31
+ "schema": "./executors/secrets-config-sync/schema.json"
32
+ },
33
+ "secrets-vercel-sync": {
34
+ "description": "Synchronizes secrets from a configurable provider (Doppler, Azure Key Vault) to a Vercel project/environment.",
35
+ "implementation": "./executors/secrets-vercel-sync/executor",
36
+ "schema": "./executors/secrets-vercel-sync/schema.json"
32
37
  },
33
38
  "icon-collection-builder": {
34
- "description": "icon-collection-builder task executor",
39
+ "description": "Builds optimized icon collection bundles from downloaded SVG icon sources.",
35
40
  "implementation": "./executors/icon-collection-builder/executor",
36
41
  "schema": "./executors/icon-collection-builder/schema.json"
37
42
  },
38
43
  "icon-collection-downloader": {
39
- "description": "icon-collection-downloader task executor",
44
+ "description": "Downloads icon collections from configured providers (Fluent UI, Lucide, etc.) into the project.",
40
45
  "implementation": "./executors/icon-collection-downloader/executor",
41
46
  "schema": "./executors/icon-collection-downloader/schema.json"
42
47
  },
43
48
  "lit-style-transform": {
44
- "description": "lit-style-transform task executor",
49
+ "description": "Transforms SCSS files into Lit-compatible CSSResult TypeScript modules.",
45
50
  "implementation": "./executors/lit-style-transform/executor",
46
51
  "schema": "./executors/lit-style-transform/schema.json"
47
52
  },
48
53
  "lit-docs": {
49
- "description": "lit-docs task executor",
54
+ "description": "Generates documentation for Lit web components using Web Component Analyzer.",
50
55
  "implementation": "./executors/lit-docs/executor",
51
56
  "schema": "./executors/lit-docs/schema.json"
52
57
  },
53
58
  "localizator": {
54
- "description": "localizator task executor",
59
+ "description": "Detects, analyzes, transforms, sorts, and generates localization resources for frontend applications.",
55
60
  "implementation": "./executors/localizator/executor",
56
61
  "schema": "./executors/localizator/schema.json"
57
62
  },
58
63
  "markdown-to-typescript-transform": {
59
- "description": "markdown-to-typescript-transform task executor",
64
+ "description": "Converts Markdown files into TypeScript modules using a configurable template.",
60
65
  "implementation": "./executors/markdown-to-typescript-transform/executor",
61
66
  "schema": "./executors/markdown-to-typescript-transform/schema.json"
62
67
  },
63
68
  "ng-packagr-build": {
64
- "description": "ng-packagr-build task executor",
69
+ "description": "Builds Angular libraries using ng-packagr with extended configuration support.",
65
70
  "implementation": "./executors/ng-packagr-build/executor",
66
71
  "schema": "./executors/ng-packagr-build/schema.json"
67
72
  },
68
73
  "ng-api-extractor": {
69
- "description": "ng-api-extractor task executor",
74
+ "description": "Runs API Extractor on Angular library builds to generate API reports and documentation.",
70
75
  "implementation": "./executors/ng-api-extractor/executor",
71
76
  "schema": "./executors/ng-api-extractor/schema.json"
72
77
  },
73
78
  "ng-proxy-transform": {
74
- "description": "ng-proxy-transform task executor",
79
+ "description": "Generates Angular wrapper components from Lit web component manifests.",
75
80
  "implementation": "./executors/ng-proxy-transform/executor",
76
81
  "schema": "./executors/ng-proxy-transform/schema.json"
77
82
  },
78
83
  "openapi-generator": {
79
- "description": "openapi-generator task executor",
84
+ "description": "Generates typed API client code from an OpenAPI specification endpoint.",
80
85
  "implementation": "./executors/openapi-generator/executor",
81
86
  "schema": "./executors/openapi-generator/schema.json"
82
87
  },
83
88
  "react-proxy-transform": {
84
- "description": "react-proxy-transform task executor",
89
+ "description": "Generates React wrapper components from Lit web component manifests.",
85
90
  "implementation": "./executors/react-proxy-transform/executor",
86
91
  "schema": "./executors/react-proxy-transform/schema.json"
87
92
  },
88
93
  "release-package": {
89
- "description": "release package task executor",
94
+ "description": "Publishes a built package to the npm registry as part of the release workflow.",
90
95
  "implementation": "./executors/release-package/executor",
91
96
  "schema": "./executors/release-package/schema.json"
92
97
  },
93
98
  "release-package-json": {
94
- "description": "release-package-json task executor",
99
+ "description": "Prepares and patches package.json for publishing during the release process.",
95
100
  "implementation": "./executors/release-package-json/executor",
96
101
  "schema": "./executors/release-package-json/schema.json"
97
102
  },
98
103
  "scss-style-bundle": {
99
- "description": "scss-style-bundle task executor",
104
+ "description": "Bundles multiple SCSS files into a single consolidated stylesheet output.",
100
105
  "implementation": "./executors/scss-style-bundle/executor",
101
106
  "schema": "./executors/scss-style-bundle/schema.json"
102
107
  },
103
108
  "scss-style-transform": {
104
- "description": "scss-style-transform task executor",
109
+ "description": "Compiles SCSS files into CSS and outputs them alongside the source files.",
105
110
  "implementation": "./executors/scss-style-transform/executor",
106
111
  "schema": "./executors/scss-style-transform/schema.json"
107
112
  },
108
113
  "svelte-proxy-transform": {
109
- "description": "svelte-proxy-transform task executor",
114
+ "description": "Generates Svelte wrapper components from Lit web component manifests.",
110
115
  "implementation": "./executors/svelte-proxy-transform/executor",
111
116
  "schema": "./executors/svelte-proxy-transform/schema.json"
112
117
  },
113
118
  "unrelease-package": {
114
- "description": "unrelease package task executor",
119
+ "description": "Unpublishes a package version from the npm registry to revert a release.",
115
120
  "implementation": "./executors/unrelease-package/executor",
116
121
  "schema": "./executors/unrelease-package/schema.json"
117
122
  },
118
123
  "vercel-edge-config-sync": {
119
- "description": "vercel-edge-config-sync task executor",
124
+ "description": "Fetches Vercel Edge Config values and writes them to a local app.json file.",
120
125
  "implementation": "./executors/vercel-edge-config-sync/executor",
121
126
  "schema": "./executors/vercel-edge-config-sync/schema.json"
122
127
  },
123
128
  "vue-proxy-transform": {
124
- "description": "vue-proxy-transform task executor",
129
+ "description": "Generates Vue wrapper components from Lit web component manifests.",
125
130
  "implementation": "./executors/vue-proxy-transform/executor",
126
131
  "schema": "./executors/vue-proxy-transform/schema.json"
127
132
  },
128
133
  "token-linter": {
129
- "description": "token-linter task executor",
134
+ "description": "Lints Style Dictionary design token JSON files against configurable rules and conventions.",
130
135
  "implementation": "./executors/token-linter/executor",
131
136
  "schema": "./executors/token-linter/schema.json"
132
137
  },
133
138
  "prisma-seeds": {
134
- "description": "prisma-seeds task executor",
139
+ "description": "Seeds the PostgreSQL database with initial or test data via Prisma.",
135
140
  "implementation": "./executors/prisma-seeds/executor",
136
141
  "schema": "./executors/prisma-seeds/schema.json"
142
+ },
143
+ "generate-package-docs": {
144
+ "description": "Generates API documentation for a library package using TypeDoc with Markdown output and configurable post-processing.",
145
+ "implementation": "./executors/generate-package-docs/executor",
146
+ "schema": "./executors/generate-package-docs/schema.json"
137
147
  }
138
148
  }
139
149
  }