@servicetitan/startup 32.2.0 → 32.3.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 (239) hide show
  1. package/dist/cli/commands/build.d.ts +36 -7
  2. package/dist/cli/commands/build.d.ts.map +1 -1
  3. package/dist/cli/commands/build.js +35 -10
  4. package/dist/cli/commands/build.js.map +1 -1
  5. package/dist/cli/commands/bundle-package.d.ts +9 -10
  6. package/dist/cli/commands/bundle-package.d.ts.map +1 -1
  7. package/dist/cli/commands/bundle-package.js +6 -22
  8. package/dist/cli/commands/bundle-package.js.map +1 -1
  9. package/dist/cli/commands/clean.d.ts +2 -2
  10. package/dist/cli/commands/clean.d.ts.map +1 -1
  11. package/dist/cli/commands/clean.js +16 -4
  12. package/dist/cli/commands/clean.js.map +1 -1
  13. package/dist/cli/commands/convert-eslint-config.d.ts +2 -2
  14. package/dist/cli/commands/convert-eslint-config.d.ts.map +1 -1
  15. package/dist/cli/commands/convert-eslint-config.js +3 -4
  16. package/dist/cli/commands/convert-eslint-config.js.map +1 -1
  17. package/dist/cli/commands/eslint.d.ts +3 -5
  18. package/dist/cli/commands/eslint.d.ts.map +1 -1
  19. package/dist/cli/commands/eslint.js +2 -18
  20. package/dist/cli/commands/eslint.js.map +1 -1
  21. package/dist/cli/commands/get-command.d.ts.map +1 -1
  22. package/dist/cli/commands/get-command.js +2 -0
  23. package/dist/cli/commands/get-command.js.map +1 -1
  24. package/dist/cli/commands/index.d.ts +0 -1
  25. package/dist/cli/commands/index.d.ts.map +1 -1
  26. package/dist/cli/commands/index.js +0 -1
  27. package/dist/cli/commands/index.js.map +1 -1
  28. package/dist/cli/commands/init.d.ts +10 -6
  29. package/dist/cli/commands/init.d.ts.map +1 -1
  30. package/dist/cli/commands/init.js +9 -8
  31. package/dist/cli/commands/init.js.map +1 -1
  32. package/dist/cli/commands/install.d.ts +21 -7
  33. package/dist/cli/commands/install.d.ts.map +1 -1
  34. package/dist/cli/commands/install.js +33 -11
  35. package/dist/cli/commands/install.js.map +1 -1
  36. package/dist/cli/commands/kendo-ui-license.d.ts +3 -3
  37. package/dist/cli/commands/kendo-ui-license.d.ts.map +1 -1
  38. package/dist/cli/commands/kendo-ui-license.js +17 -5
  39. package/dist/cli/commands/kendo-ui-license.js.map +1 -1
  40. package/dist/cli/commands/lint.d.ts +31 -12
  41. package/dist/cli/commands/lint.d.ts.map +1 -1
  42. package/dist/cli/commands/lint.js +34 -13
  43. package/dist/cli/commands/lint.js.map +1 -1
  44. package/dist/cli/commands/mfe-list.d.ts +46 -0
  45. package/dist/cli/commands/mfe-list.d.ts.map +1 -0
  46. package/dist/cli/commands/mfe-list.js +200 -0
  47. package/dist/cli/commands/mfe-list.js.map +1 -0
  48. package/dist/cli/commands/mfe-package-clean.d.ts +29 -5
  49. package/dist/cli/commands/mfe-package-clean.d.ts.map +1 -1
  50. package/dist/cli/commands/mfe-package-clean.js +28 -5
  51. package/dist/cli/commands/mfe-package-clean.js.map +1 -1
  52. package/dist/cli/commands/mfe-package-publish.d.ts +37 -5
  53. package/dist/cli/commands/mfe-package-publish.d.ts.map +1 -1
  54. package/dist/cli/commands/mfe-package-publish.js +36 -5
  55. package/dist/cli/commands/mfe-package-publish.js.map +1 -1
  56. package/dist/cli/commands/mfe-publish.d.ts +17 -4
  57. package/dist/cli/commands/mfe-publish.d.ts.map +1 -1
  58. package/dist/cli/commands/mfe-publish.js +37 -7
  59. package/dist/cli/commands/mfe-publish.js.map +1 -1
  60. package/dist/cli/commands/prepare-package.d.ts +3 -5
  61. package/dist/cli/commands/prepare-package.d.ts.map +1 -1
  62. package/dist/cli/commands/prepare-package.js +2 -18
  63. package/dist/cli/commands/prepare-package.js.map +1 -1
  64. package/dist/cli/commands/review/review.d.ts +14 -6
  65. package/dist/cli/commands/review/review.d.ts.map +1 -1
  66. package/dist/cli/commands/review/review.js +27 -23
  67. package/dist/cli/commands/review/review.js.map +1 -1
  68. package/dist/cli/commands/run-task.d.ts +10 -6
  69. package/dist/cli/commands/run-task.d.ts.map +1 -1
  70. package/dist/cli/commands/run-task.js +16 -13
  71. package/dist/cli/commands/run-task.js.map +1 -1
  72. package/dist/cli/commands/start.d.ts +28 -7
  73. package/dist/cli/commands/start.d.ts.map +1 -1
  74. package/dist/cli/commands/start.js +27 -10
  75. package/dist/cli/commands/start.js.map +1 -1
  76. package/dist/cli/commands/styles-check.d.ts +2 -2
  77. package/dist/cli/commands/styles-check.d.ts.map +1 -1
  78. package/dist/cli/commands/styles-check.js +2 -1
  79. package/dist/cli/commands/styles-check.js.map +1 -1
  80. package/dist/cli/commands/test/tests.d.ts +14 -5
  81. package/dist/cli/commands/test/tests.d.ts.map +1 -1
  82. package/dist/cli/commands/test/tests.js +26 -13
  83. package/dist/cli/commands/test/tests.js.map +1 -1
  84. package/dist/cli/commands/types.d.ts +13 -4
  85. package/dist/cli/commands/types.d.ts.map +1 -1
  86. package/dist/cli/commands/types.js +28 -0
  87. package/dist/cli/commands/types.js.map +1 -1
  88. package/dist/cli/commands/upload-sourcemaps.d.ts +3 -5
  89. package/dist/cli/commands/upload-sourcemaps.d.ts.map +1 -1
  90. package/dist/cli/commands/upload-sourcemaps.js +5 -20
  91. package/dist/cli/commands/upload-sourcemaps.js.map +1 -1
  92. package/dist/cli/index.js +48 -39
  93. package/dist/cli/index.js.map +1 -1
  94. package/dist/cli/tasks/swc-compile-package.d.ts +2 -2
  95. package/dist/cli/tasks/swc-compile-package.d.ts.map +1 -1
  96. package/dist/cli/tasks/swc-compile-package.js.map +1 -1
  97. package/dist/cli/tasks/tsc-compile-package.d.ts +2 -2
  98. package/dist/cli/tasks/tsc-compile-package.d.ts.map +1 -1
  99. package/dist/cli/tasks/tsc-compile-package.js +1 -1
  100. package/dist/cli/tasks/tsc-compile-package.js.map +1 -1
  101. package/dist/cli/tasks/tsc-compile.d.ts +2 -2
  102. package/dist/cli/tasks/tsc-compile.d.ts.map +1 -1
  103. package/dist/cli/tasks/tsc-compile.js.map +1 -1
  104. package/dist/cli/utils/bundle.js +1 -1
  105. package/dist/cli/utils/bundle.js.map +1 -1
  106. package/dist/cli/utils/cli-npm.d.ts +14 -0
  107. package/dist/cli/utils/cli-npm.d.ts.map +1 -1
  108. package/dist/cli/utils/cli-npm.js +44 -0
  109. package/dist/cli/utils/cli-npm.js.map +1 -1
  110. package/dist/cli/utils/cli-os.d.ts +2 -2
  111. package/dist/cli/utils/cli-os.d.ts.map +1 -1
  112. package/dist/cli/utils/cli-os.js +13 -9
  113. package/dist/cli/utils/cli-os.js.map +1 -1
  114. package/dist/cli/utils/eslint.d.ts +2 -1
  115. package/dist/cli/utils/eslint.d.ts.map +1 -1
  116. package/dist/cli/utils/eslint.js.map +1 -1
  117. package/dist/cli/utils/index.d.ts +1 -0
  118. package/dist/cli/utils/index.d.ts.map +1 -1
  119. package/dist/cli/utils/index.js +1 -0
  120. package/dist/cli/utils/index.js.map +1 -1
  121. package/dist/cli/utils/is-tty.d.ts +2 -0
  122. package/dist/cli/utils/is-tty.d.ts.map +1 -0
  123. package/dist/cli/utils/is-tty.js +15 -0
  124. package/dist/cli/utils/is-tty.js.map +1 -0
  125. package/dist/cli/utils/maybe-create-git-folder.d.ts +1 -1
  126. package/dist/cli/utils/maybe-create-git-folder.d.ts.map +1 -1
  127. package/dist/cli/utils/maybe-create-git-folder.js +5 -5
  128. package/dist/cli/utils/maybe-create-git-folder.js.map +1 -1
  129. package/dist/cli/utils/process-tree.d.ts.map +1 -1
  130. package/dist/cli/utils/process-tree.js +2 -2
  131. package/dist/cli/utils/process-tree.js.map +1 -1
  132. package/dist/cli/utils/set-node-options.d.ts.map +1 -1
  133. package/dist/cli/utils/set-node-options.js +2 -1
  134. package/dist/cli/utils/set-node-options.js.map +1 -1
  135. package/dist/utils/find-packages.d.ts +1 -0
  136. package/dist/utils/find-packages.d.ts.map +1 -1
  137. package/dist/utils/find-packages.js.map +1 -1
  138. package/dist/utils/format-relative-date.d.ts +2 -0
  139. package/dist/utils/format-relative-date.d.ts.map +1 -0
  140. package/dist/utils/format-relative-date.js +60 -0
  141. package/dist/utils/format-relative-date.js.map +1 -0
  142. package/dist/utils/get-configuration.d.ts +1 -0
  143. package/dist/utils/get-configuration.d.ts.map +1 -1
  144. package/dist/utils/get-configuration.js +1 -0
  145. package/dist/utils/get-configuration.js.map +1 -1
  146. package/dist/utils/get-packages.d.ts +3 -5
  147. package/dist/utils/get-packages.d.ts.map +1 -1
  148. package/dist/utils/get-packages.js +1 -4
  149. package/dist/utils/get-packages.js.map +1 -1
  150. package/dist/utils/get-startup-version.d.ts.map +1 -1
  151. package/dist/utils/get-startup-version.js +1 -1
  152. package/dist/utils/get-startup-version.js.map +1 -1
  153. package/dist/utils/index.d.ts +1 -0
  154. package/dist/utils/index.d.ts.map +1 -1
  155. package/dist/utils/index.js +1 -0
  156. package/dist/utils/index.js.map +1 -1
  157. package/dist/webpack/configs/loaders/style-loader.d.ts +1 -1
  158. package/dist/webpack/configs/loaders/style-loader.d.ts.map +1 -1
  159. package/dist/webpack/configs/loaders/style-loader.js +2 -2
  160. package/dist/webpack/configs/loaders/style-loader.js.map +1 -1
  161. package/dist/webpack/configs/optimization-config.js +5 -5
  162. package/dist/webpack/configs/optimization-config.js.map +1 -1
  163. package/dist/webpack/configs/output-config.d.ts.map +1 -1
  164. package/dist/webpack/configs/output-config.js +14 -7
  165. package/dist/webpack/configs/output-config.js.map +1 -1
  166. package/dist/webpack/configs/plugins/assets-manifest-plugin.d.ts.map +1 -1
  167. package/dist/webpack/configs/plugins/assets-manifest-plugin.js +10 -3
  168. package/dist/webpack/configs/plugins/assets-manifest-plugin.js.map +1 -1
  169. package/package.json +9 -8
  170. package/src/cli/commands/__tests__/build.test.ts +1 -1
  171. package/src/cli/commands/__tests__/bundle-package.test.ts +22 -2
  172. package/src/cli/commands/__tests__/install.test.ts +42 -4
  173. package/src/cli/commands/__tests__/lint.test.ts +1 -1
  174. package/src/cli/commands/__tests__/mfe-list.test.ts +394 -0
  175. package/src/cli/commands/__tests__/mfe-publish.test.ts +25 -0
  176. package/src/cli/commands/__tests__/start.test.ts +1 -1
  177. package/src/cli/commands/build.ts +14 -10
  178. package/src/cli/commands/bundle-package.ts +19 -13
  179. package/src/cli/commands/clean.ts +2 -4
  180. package/src/cli/commands/convert-eslint-config.ts +3 -5
  181. package/src/cli/commands/eslint.ts +3 -5
  182. package/src/cli/commands/get-command.ts +2 -0
  183. package/src/cli/commands/index.ts +0 -1
  184. package/src/cli/commands/init.ts +7 -8
  185. package/src/cli/commands/install.ts +24 -11
  186. package/src/cli/commands/kendo-ui-license.ts +4 -6
  187. package/src/cli/commands/lint.ts +19 -19
  188. package/src/cli/commands/mfe-list.ts +173 -0
  189. package/src/cli/commands/mfe-package-clean.ts +25 -4
  190. package/src/cli/commands/mfe-package-publish.ts +33 -4
  191. package/src/cli/commands/mfe-publish.ts +37 -6
  192. package/src/cli/commands/prepare-package.ts +3 -5
  193. package/src/cli/commands/review/review.ts +9 -9
  194. package/src/cli/commands/run-task.ts +15 -11
  195. package/src/cli/commands/start.ts +12 -10
  196. package/src/cli/commands/styles-check.ts +2 -2
  197. package/src/cli/commands/test/__tests__/tests.test.ts +1 -1
  198. package/src/cli/commands/test/tests.ts +20 -10
  199. package/src/cli/commands/types.ts +14 -4
  200. package/src/cli/commands/upload-sourcemaps.ts +3 -5
  201. package/src/cli/index.ts +59 -36
  202. package/src/cli/tasks/swc-compile-package.ts +2 -2
  203. package/src/cli/tasks/tsc-compile-package.ts +4 -3
  204. package/src/cli/tasks/tsc-compile.ts +2 -2
  205. package/src/cli/utils/__tests__/bundle.test.ts +13 -0
  206. package/src/cli/utils/__tests__/cli-npm.test.ts +89 -0
  207. package/src/cli/utils/__tests__/is-tty.test.ts +17 -0
  208. package/src/cli/utils/__tests__/maybe-create-git-folder.test.ts +10 -17
  209. package/src/cli/utils/__tests__/set-node-options.test.ts +10 -10
  210. package/src/cli/utils/bundle.ts +1 -1
  211. package/src/cli/utils/cli-npm.ts +34 -0
  212. package/src/cli/utils/cli-os.ts +12 -25
  213. package/src/cli/utils/eslint.ts +2 -1
  214. package/src/cli/utils/index.ts +1 -0
  215. package/src/cli/utils/is-tty.ts +3 -0
  216. package/src/cli/utils/maybe-create-git-folder.ts +4 -7
  217. package/src/cli/utils/process-tree.ts +4 -2
  218. package/src/cli/utils/set-node-options.ts +2 -1
  219. package/src/utils/__tests__/format-relative-date.test.ts +61 -0
  220. package/src/utils/__tests__/get-packages.test.ts +3 -0
  221. package/src/utils/find-packages.ts +1 -0
  222. package/src/utils/format-relative-date.ts +33 -0
  223. package/src/utils/get-configuration.ts +1 -0
  224. package/src/utils/get-packages.ts +3 -9
  225. package/src/utils/get-startup-version.ts +1 -3
  226. package/src/utils/index.ts +1 -0
  227. package/src/webpack/__mocks__/style-rules.ts +3 -3
  228. package/src/webpack/__tests__/create-webpack-config-shared-dependencies.test.ts +6 -14
  229. package/src/webpack/__tests__/create-webpack-config-web-component.test.ts +52 -29
  230. package/src/webpack/configs/loaders/style-loader.ts +5 -2
  231. package/src/webpack/configs/optimization-config.ts +5 -5
  232. package/src/webpack/configs/output-config.ts +10 -5
  233. package/src/webpack/configs/plugins/assets-manifest-plugin.ts +11 -4
  234. package/dist/cli/commands/get-user-commands.d.ts +0 -7
  235. package/dist/cli/commands/get-user-commands.d.ts.map +0 -1
  236. package/dist/cli/commands/get-user-commands.js +0 -27
  237. package/dist/cli/commands/get-user-commands.js.map +0 -1
  238. package/src/cli/commands/__tests__/get-user-commands.test.ts +0 -27
  239. package/src/cli/commands/get-user-commands.ts +0 -19
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/cli/commands/start.ts"],"sourcesContent":["import { getPackages, log, logErrors, PackageType } from '../../utils';\nimport {\n checkArgs,\n lernaExec,\n compile,\n typeCheck,\n pipeStdout,\n watchStdout,\n ProcessTree,\n} from '../utils';\nimport { Command } from './types';\n\ninterface Args {\n 'config'?: string;\n 'code-coverage'?: boolean;\n 'ignore'?: string | string[];\n 'scope'?: string | string[];\n 'use-tsc'?: boolean;\n}\n\nenum StartProcesses {\n Compile,\n KendoUILicense,\n PreparePackage,\n PreparePackageWatch,\n TypeCheck,\n BundleExposedDependencies,\n BundlePackage,\n}\n\nexport class Start implements Command {\n readonly greedy = true;\n\n constructor(private readonly args: Args) {}\n\n description() {\n return 'run project in development mode';\n }\n\n @logErrors\n async execute() {\n checkArgs(this.args, { obsolete: ['--esbuild', '--experimental-bundlers'] });\n\n const useTsc = this.args['use-tsc'];\n\n const packages = getPackages({\n scope: this.args.scope,\n ignore: this.args.ignore,\n type: [PackageType.TSC, PackageType.Webpack],\n });\n if (packages.length === 0) {\n return;\n }\n\n const scope = packages.map(({ name }) => name);\n const webpackScope = packages\n .filter(({ type }) => type === PackageType.Webpack)\n .map(({ name }) => name);\n\n const processTree = new ProcessTree<typeof StartProcesses>();\n\n processTree.add(StartProcesses.Compile, () => {\n const process = compile({\n packages: scope,\n watch: true,\n useTsc,\n });\n\n pipeStdout(process);\n\n const onComplete = new Promise<void>(resolve => {\n let counter = 0;\n let timeout: NodeJS.Timeout;\n\n if (!useTsc) {\n /*\n * Running the timer as a fallback\n * In case there are no files in the package swc will not print out completion indicator\n */\n timeout = setTimeout(() => {\n log.warning('Compilation timeout exceeded. Proceeding without waiting.');\n resolve();\n unwatch();\n }, 30000);\n }\n\n const unwatch = watchStdout(\n process,\n useTsc\n ? 'Initial tsc-compile-package task completed'\n : 'Initial swc-compile-package task completed',\n count => {\n counter += count;\n\n if (counter === scope.length) {\n resolve();\n clearTimeout(timeout);\n }\n }\n );\n });\n\n return { process, onComplete };\n });\n processTree.add(StartProcesses.PreparePackage, () =>\n lernaExec({\n cmd: 'startup prepare-package',\n scope,\n stream: true,\n })\n );\n processTree.add(\n StartProcesses.PreparePackageWatch,\n () =>\n lernaExec({\n 'cmd': 'startup prepare-package',\n scope,\n 'parallel': true,\n 'stream': true,\n '--': ['--watch'],\n }),\n { dependsOn: [StartProcesses.PreparePackage] }\n );\n processTree.add(\n StartProcesses.TypeCheck,\n () => typeCheck({ packages: scope, watch: true }),\n { dependsOn: [StartProcesses.PreparePackage] }\n );\n processTree.add(\n StartProcesses.BundleExposedDependencies,\n () => {\n if (webpackScope.length === 0) {\n return Promise.resolve();\n }\n return lernaExec({\n 'cmd': 'startup bundle-package',\n 'scope': webpackScope,\n 'parallel': true,\n 'stream': true,\n '--': ['--exposed-dependencies', '--use-watch-config'],\n });\n },\n { dependsOn: [StartProcesses.Compile, StartProcesses.PreparePackage] }\n );\n processTree.add(\n StartProcesses.BundlePackage,\n () => {\n if (webpackScope.length === 0) {\n return Promise.resolve();\n }\n return lernaExec({\n 'cmd': 'startup bundle-package',\n 'scope': webpackScope,\n 'parallel': true,\n 'stream': true,\n '--': [\n '--watch',\n this.args.config ? `--config \"${this.args.config}\"` : undefined,\n this.args['code-coverage'] ? '--code-coverage' : undefined,\n ].filter(item => !!item) as string[],\n });\n },\n { dependsOn: [StartProcesses.BundleExposedDependencies] }\n );\n\n await processTree.run();\n }\n}\n"],"names":["Start","StartProcesses","description","execute","checkArgs","args","obsolete","useTsc","packages","getPackages","scope","ignore","type","PackageType","TSC","Webpack","length","map","name","webpackScope","filter","processTree","ProcessTree","add","process","compile","watch","pipeStdout","onComplete","Promise","resolve","counter","timeout","setTimeout","log","warning","unwatch","watchStdout","count","clearTimeout","lernaExec","cmd","stream","dependsOn","typeCheck","config","undefined","item","run","greedy"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/cli/commands/start.ts"],"sourcesContent":["import { getPackages, log, logErrors, PackageType } from '../../utils';\nimport {\n checkArgs,\n lernaExec,\n compile,\n typeCheck,\n pipeStdout,\n watchStdout,\n ProcessTree,\n} from '../utils';\nimport { Command, CommandArgs } from './types';\n\ninterface Args extends CommandArgs {\n 'config'?: string;\n 'code-coverage'?: boolean;\n 'ignore'?: string | string[];\n 'scope'?: string | string[];\n 'use-tsc'?: boolean;\n}\n\nenum StartProcesses {\n Compile,\n KendoUILicense,\n PreparePackage,\n PreparePackageWatch,\n TypeCheck,\n BundleExposedDependencies,\n BundlePackage,\n}\n\nexport class Start extends Command<Args> {\n static readonly description = 'Run project in development mode';\n static readonly greedy = true;\n static readonly options = {\n 'config': { string: true, hidden: true, description: 'Use specified configuration' },\n 'code-coverage': { boolean: true, description: 'Instrument code for coverage analysis?' },\n 'ignore': { array: true, description: 'Packages to skip' },\n 'scope': { array: true, description: 'Packages to run and watch' },\n 'use-tsc': { boolean: true, description: 'Use tsc to compile packages?' },\n };\n\n @logErrors\n async execute() {\n checkArgs(this.args, { obsolete: ['--esbuild', '--experimental-bundlers'] });\n\n const useTsc = this.args['use-tsc'];\n\n const packages = getPackages({\n scope: this.args.scope,\n ignore: this.args.ignore,\n type: [PackageType.TSC, PackageType.Webpack],\n });\n if (packages.length === 0) {\n return;\n }\n\n const scope = packages.map(({ name }) => name);\n const webpackScope = packages\n .filter(({ type }) => type === PackageType.Webpack)\n .map(({ name }) => name);\n\n const processTree = new ProcessTree<typeof StartProcesses>();\n\n processTree.add(StartProcesses.Compile, () => {\n const process = compile({\n packages: scope,\n watch: true,\n useTsc,\n });\n\n pipeStdout(process);\n\n const onComplete = new Promise<void>(resolve => {\n let counter = 0;\n let timeout: NodeJS.Timeout;\n\n if (!useTsc) {\n /*\n * Running the timer as a fallback\n * In case there are no files in the package swc will not print out completion indicator\n */\n timeout = setTimeout(() => {\n log.warning('Compilation timeout exceeded. Proceeding without waiting.');\n resolve();\n unwatch();\n }, 30000);\n }\n\n const unwatch = watchStdout(\n process,\n useTsc\n ? 'Initial tsc-compile-package task completed'\n : 'Initial swc-compile-package task completed',\n count => {\n counter += count;\n\n if (counter === scope.length) {\n resolve();\n clearTimeout(timeout);\n }\n }\n );\n });\n\n return { process, onComplete };\n });\n processTree.add(StartProcesses.PreparePackage, () =>\n lernaExec({\n cmd: 'startup prepare-package',\n scope,\n stream: true,\n })\n );\n processTree.add(\n StartProcesses.PreparePackageWatch,\n () =>\n lernaExec({\n 'cmd': 'startup prepare-package',\n scope,\n 'parallel': true,\n 'stream': true,\n '--': ['--watch'],\n }),\n { dependsOn: [StartProcesses.PreparePackage] }\n );\n processTree.add(\n StartProcesses.TypeCheck,\n () => typeCheck({ packages: scope, watch: true }),\n { dependsOn: [StartProcesses.PreparePackage] }\n );\n processTree.add(\n StartProcesses.BundleExposedDependencies,\n () => {\n if (webpackScope.length === 0) {\n return Promise.resolve();\n }\n return lernaExec({\n 'cmd': 'startup bundle-package',\n 'scope': webpackScope,\n 'parallel': true,\n 'stream': true,\n '--': ['--exposed-dependencies', '--use-watch-config'],\n });\n },\n { dependsOn: [StartProcesses.Compile, StartProcesses.PreparePackage] }\n );\n processTree.add(\n StartProcesses.BundlePackage,\n () => {\n if (webpackScope.length === 0) {\n return Promise.resolve();\n }\n return lernaExec({\n 'cmd': 'startup bundle-package',\n 'scope': webpackScope,\n 'parallel': true,\n 'stream': true,\n '--': [\n '--watch',\n this.args.config ? `--config \"${this.args.config}\"` : undefined,\n this.args['code-coverage'] ? '--code-coverage' : undefined,\n ].filter(item => !!item) as string[],\n });\n },\n { dependsOn: [StartProcesses.BundleExposedDependencies] }\n );\n\n await processTree.run();\n }\n}\n"],"names":["Start","StartProcesses","Command","execute","checkArgs","args","obsolete","useTsc","packages","getPackages","scope","ignore","type","PackageType","TSC","Webpack","length","map","name","webpackScope","filter","processTree","ProcessTree","add","process","compile","watch","pipeStdout","onComplete","Promise","resolve","counter","timeout","setTimeout","log","warning","unwatch","watchStdout","count","clearTimeout","lernaExec","cmd","stream","dependsOn","typeCheck","config","undefined","item","run","description","greedy","options","string","hidden","boolean","array"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { Command } from './index';
2
- export declare class StylesCheck implements Command {
1
+ import { Command } from './types';
2
+ export declare class StylesCheck extends Command {
3
3
  execute(): Promise<void>;
4
4
  }
5
5
  //# sourceMappingURL=styles-check.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"styles-check.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/styles-check.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAQlC,qBAAa,WAAY,YAAW,OAAO;IAEjC,OAAO;CAiChB"}
1
+ {"version":3,"file":"styles-check.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/styles-check.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAQlC,qBAAa,WAAY,SAAQ,OAAO;IAE9B,OAAO;CAiChB"}
@@ -12,6 +12,7 @@ const _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
12
12
  const _glob = require("glob");
13
13
  const _path = /*#__PURE__*/ _interop_require_default(require("path"));
14
14
  const _utils = require("../../utils");
15
+ const _types = require("./types");
15
16
  function _interop_require_default(obj) {
16
17
  return obj && obj.__esModule ? obj : {
17
18
  default: obj
@@ -31,7 +32,7 @@ const patterns = [
31
32
  "@import '~@servicetitan/anvil-fonts/dist/css/anvil-fonts.css';",
32
33
  "@import '~@servicetitan/design-system/dist/system.min.css';"
33
34
  ];
34
- class StylesCheck {
35
+ class StylesCheck extends _types.Command {
35
36
  async execute() {
36
37
  if ((0, _utils.isLegacy)() || !(0, _utils.isBundle)()) {
37
38
  return;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/cli/commands/styles-check.ts"],"sourcesContent":["import fs from 'fs';\nimport { glob } from 'glob';\nimport path from 'path';\nimport { getFolders, isBundle, isLegacy, isStyleCheckDisabled, log, logErrors } from '../../utils';\nimport { Command } from './index';\n\nconst patterns = [\n \"@import '~@servicetitan/tokens/core/tokens.css';\",\n \"@import '~@servicetitan/anvil-fonts/dist/css/anvil-fonts.css';\",\n \"@import '~@servicetitan/design-system/dist/system.min.css';\",\n];\n\nexport class StylesCheck implements Command {\n @logErrors\n async execute() {\n if (isLegacy() || !isBundle()) {\n return;\n }\n\n if (isStyleCheckDisabled()) {\n log.info('style check is disabled');\n return;\n }\n\n let ok = true;\n const { source } = getFolders();\n const files = await glob(`${source}/**/*.{css,less}`);\n\n for (const file of files) {\n const relativePath = path.relative(source, file);\n if (relativePath === 'design-system.css') {\n continue;\n }\n\n const content = fs.readFileSync(file, { encoding: 'utf-8' });\n patterns.forEach(pattern => {\n if (content.includes(pattern)) {\n log.error(`Error: file ${relativePath} contains \"${pattern}\"`);\n ok = false;\n }\n });\n }\n\n if (!ok) {\n throw new Error('style check failed, see errors above');\n }\n }\n}\n"],"names":["StylesCheck","patterns","execute","isLegacy","isBundle","isStyleCheckDisabled","log","info","ok","source","getFolders","files","glob","file","relativePath","path","relative","content","fs","readFileSync","encoding","forEach","pattern","includes","error","Error"],"mappings":";;;;+BAYaA;;;eAAAA;;;2DAZE;sBACM;6DACJ;uBACoE;;;;;;;;;;;;;;;AAGrF,MAAMC,WAAW;IACb;IACA;IACA;CACH;AAEM,MAAMD;IACT,MACME,UAAU;QACZ,IAAIC,IAAAA,eAAQ,OAAM,CAACC,IAAAA,eAAQ,KAAI;YAC3B;QACJ;QAEA,IAAIC,IAAAA,2BAAoB,KAAI;YACxBC,UAAG,CAACC,IAAI,CAAC;YACT;QACJ;QAEA,IAAIC,KAAK;QACT,MAAM,EAAEC,MAAM,EAAE,GAAGC,IAAAA,iBAAU;QAC7B,MAAMC,QAAQ,MAAMC,IAAAA,UAAI,EAAC,GAAGH,OAAO,gBAAgB,CAAC;QAEpD,KAAK,MAAMI,QAAQF,MAAO;YACtB,MAAMG,eAAeC,aAAI,CAACC,QAAQ,CAACP,QAAQI;YAC3C,IAAIC,iBAAiB,qBAAqB;gBACtC;YACJ;YAEA,MAAMG,UAAUC,WAAE,CAACC,YAAY,CAACN,MAAM;gBAAEO,UAAU;YAAQ;YAC1DnB,SAASoB,OAAO,CAACC,CAAAA;gBACb,IAAIL,QAAQM,QAAQ,CAACD,UAAU;oBAC3BhB,UAAG,CAACkB,KAAK,CAAC,CAAC,YAAY,EAAEV,aAAa,WAAW,EAAEQ,QAAQ,CAAC,CAAC;oBAC7Dd,KAAK;gBACT;YACJ;QACJ;QAEA,IAAI,CAACA,IAAI;YACL,MAAM,IAAIiB,MAAM;QACpB;IACJ;AACJ"}
1
+ {"version":3,"sources":["../../../src/cli/commands/styles-check.ts"],"sourcesContent":["import fs from 'fs';\nimport { glob } from 'glob';\nimport path from 'path';\nimport { getFolders, isBundle, isLegacy, isStyleCheckDisabled, log, logErrors } from '../../utils';\nimport { Command } from './types';\n\nconst patterns = [\n \"@import '~@servicetitan/tokens/core/tokens.css';\",\n \"@import '~@servicetitan/anvil-fonts/dist/css/anvil-fonts.css';\",\n \"@import '~@servicetitan/design-system/dist/system.min.css';\",\n];\n\nexport class StylesCheck extends Command {\n @logErrors\n async execute() {\n if (isLegacy() || !isBundle()) {\n return;\n }\n\n if (isStyleCheckDisabled()) {\n log.info('style check is disabled');\n return;\n }\n\n let ok = true;\n const { source } = getFolders();\n const files = await glob(`${source}/**/*.{css,less}`);\n\n for (const file of files) {\n const relativePath = path.relative(source, file);\n if (relativePath === 'design-system.css') {\n continue;\n }\n\n const content = fs.readFileSync(file, { encoding: 'utf-8' });\n patterns.forEach(pattern => {\n if (content.includes(pattern)) {\n log.error(`Error: file ${relativePath} contains \"${pattern}\"`);\n ok = false;\n }\n });\n }\n\n if (!ok) {\n throw new Error('style check failed, see errors above');\n }\n }\n}\n"],"names":["StylesCheck","patterns","Command","execute","isLegacy","isBundle","isStyleCheckDisabled","log","info","ok","source","getFolders","files","glob","file","relativePath","path","relative","content","fs","readFileSync","encoding","forEach","pattern","includes","error","Error"],"mappings":";;;;+BAYaA;;;eAAAA;;;2DAZE;sBACM;6DACJ;uBACoE;uBAC7D;;;;;;;;;;;;;;;AAExB,MAAMC,WAAW;IACb;IACA;IACA;CACH;AAEM,MAAMD,oBAAoBE,cAAO;IACpC,MACMC,UAAU;QACZ,IAAIC,IAAAA,eAAQ,OAAM,CAACC,IAAAA,eAAQ,KAAI;YAC3B;QACJ;QAEA,IAAIC,IAAAA,2BAAoB,KAAI;YACxBC,UAAG,CAACC,IAAI,CAAC;YACT;QACJ;QAEA,IAAIC,KAAK;QACT,MAAM,EAAEC,MAAM,EAAE,GAAGC,IAAAA,iBAAU;QAC7B,MAAMC,QAAQ,MAAMC,IAAAA,UAAI,EAAC,GAAGH,OAAO,gBAAgB,CAAC;QAEpD,KAAK,MAAMI,QAAQF,MAAO;YACtB,MAAMG,eAAeC,aAAI,CAACC,QAAQ,CAACP,QAAQI;YAC3C,IAAIC,iBAAiB,qBAAqB;gBACtC;YACJ;YAEA,MAAMG,UAAUC,WAAE,CAACC,YAAY,CAACN,MAAM;gBAAEO,UAAU;YAAQ;YAC1DpB,SAASqB,OAAO,CAACC,CAAAA;gBACb,IAAIL,QAAQM,QAAQ,CAACD,UAAU;oBAC3BhB,UAAG,CAACkB,KAAK,CAAC,CAAC,YAAY,EAAEV,aAAa,WAAW,EAAEQ,QAAQ,CAAC,CAAC;oBAC7Dd,KAAK;gBACT;YACJ;QACJ;QAEA,IAAI,CAACA,IAAI;YACL,MAAM,IAAIiB,MAAM;QACpB;IACJ;AACJ"}
@@ -2,16 +2,25 @@ import { Config } from '@jest/types';
2
2
  import { Command } from '../types';
3
3
  type Args = Config.Argv & {
4
4
  runner?: 'jest' | 'vitest';
5
+ runnerArgs?: string[];
5
6
  };
6
7
  /**
7
8
  * This class is named "Tests" instead of "Test" because the corresponding
8
9
  * "test.ts" would be interpreted as a test file.
9
10
  */
10
- export declare class Tests implements Command {
11
- private readonly args;
12
- readonly greedy = true;
13
- constructor(args: Args);
14
- description(): string;
11
+ export declare class Tests extends Command<Args> {
12
+ static readonly description = "Run tests";
13
+ static readonly greedy = true;
14
+ static readonly options: {
15
+ _: {
16
+ description: string;
17
+ };
18
+ runner: {
19
+ choices: string[];
20
+ description: string;
21
+ defaultDescription: string;
22
+ };
23
+ };
15
24
  execute(): Promise<void>;
16
25
  }
17
26
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"tests.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/test/tests.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAGnC,KAAK,IAAI,GAAG,MAAM,CAAC,IAAI,GAAG;IACtB,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;CAC9B,CAAC;AAEF;;;GAGG;AACH,qBAAa,KAAM,YAAW,OAAO;IAGrB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAFjC,QAAQ,CAAC,MAAM,QAAQ;gBAEM,IAAI,EAAE,IAAI;IAEvC,WAAW;IAKL,OAAO;CAUhB"}
1
+ {"version":3,"file":"tests.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/test/tests.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAGnC,KAAK,IAAI,GAAG,MAAM,CAAC,IAAI,GAAG;IACtB,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB,CAAC;AAEF;;;GAGG;AACH,qBAAa,KAAM,SAAQ,OAAO,CAAC,IAAI,CAAC;IACpC,MAAM,CAAC,QAAQ,CAAC,WAAW,eAAe;IAC1C,MAAM,CAAC,QAAQ,CAAC,MAAM,QAAQ;IAC9B,MAAM,CAAC,QAAQ,CAAC,OAAO;;;;;;;;;MAOrB;IAGI,OAAO;CAehB"}
@@ -1,4 +1,4 @@
1
- "use strict";
1
+ /* eslint-disable @typescript-eslint/naming-convention */ "use strict";
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
@@ -9,6 +9,7 @@ Object.defineProperty(exports, "Tests", {
9
9
  }
10
10
  });
11
11
  const _utils = require("../../../utils");
12
+ const _types = require("../types");
12
13
  const _runners = require("./runners");
13
14
  function _define_property(obj, key, value) {
14
15
  if (key in obj) {
@@ -32,28 +33,40 @@ function _ts_decorate(decorators, target, key, desc) {
32
33
  function _ts_metadata(k, v) {
33
34
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
34
35
  }
35
- class Tests {
36
- description() {
37
- return 'run tests';
38
- }
36
+ class Tests extends _types.Command {
39
37
  async execute() {
40
38
  var _getConfiguration_testRunner;
41
- const { runner = (_getConfiguration_testRunner = (0, _utils.getConfiguration)().testRunner) !== null && _getConfiguration_testRunner !== void 0 ? _getConfiguration_testRunner : 'jest', ...restArgs } = this.args;
39
+ const { _, runner = (_getConfiguration_testRunner = (0, _utils.getConfiguration)().testRunner) !== null && _getConfiguration_testRunner !== void 0 ? _getConfiguration_testRunner : 'jest', runnerArgs = [], ...restOptions } = this.args;
42
40
  if (runner === 'jest') {
43
- await new _runners.Jest(restArgs).run();
41
+ await new _runners.Jest({
42
+ _: [
43
+ ..._,
44
+ ...runnerArgs
45
+ ],
46
+ ...restOptions
47
+ }).run();
44
48
  } else if (runner === 'vitest') {
45
49
  await new _runners.Vitest().run();
46
50
  } else {
47
51
  throw new Error(`unrecognized runner "${runner}"`);
48
52
  }
49
53
  }
50
- constructor(args){
51
- _define_property(this, "args", void 0);
52
- _define_property(this, "greedy", void 0);
53
- this.args = args;
54
- this.greedy = true;
55
- }
56
54
  }
55
+ _define_property(Tests, "description", 'Run tests');
56
+ _define_property(Tests, "greedy", true);
57
+ _define_property(Tests, "options", {
58
+ _: {
59
+ description: '[runnerArgs...]'
60
+ },
61
+ runner: {
62
+ choices: [
63
+ 'jest',
64
+ 'vitest'
65
+ ],
66
+ description: 'Test runner',
67
+ defaultDescription: 'jest'
68
+ }
69
+ });
57
70
  _ts_decorate([
58
71
  _utils.logErrors,
59
72
  _ts_metadata("design:type", Function),
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/cli/commands/test/tests.ts"],"sourcesContent":["import { Config } from '@jest/types';\nimport { getConfiguration, logErrors } from '../../../utils';\nimport { Command } from '../types';\nimport { Jest, Vitest } from './runners';\n\ntype Args = Config.Argv & {\n runner?: 'jest' | 'vitest';\n};\n\n/**\n * This class is named \"Tests\" instead of \"Test\" because the corresponding\n * \"test.ts\" would be interpreted as a test file.\n */\nexport class Tests implements Command {\n readonly greedy = true;\n\n constructor(private readonly args: Args) {}\n\n description() {\n return 'run tests';\n }\n\n @logErrors\n async execute() {\n const { runner = getConfiguration().testRunner ?? 'jest', ...restArgs } = this.args;\n if (runner === 'jest') {\n await new Jest(restArgs).run();\n } else if (runner === 'vitest') {\n await new Vitest().run();\n } else {\n throw new Error(`unrecognized runner \"${runner}\"`);\n }\n }\n}\n"],"names":["Tests","description","execute","getConfiguration","runner","testRunner","restArgs","args","Jest","run","Vitest","Error","greedy"],"mappings":";;;;+BAaaA;;;eAAAA;;;uBAZ+B;yBAEf;;;;;;;;;;;;;;;;;;;;;;;AAUtB,MAAMA;IAKTC,cAAc;QACV,OAAO;IACX;IAEA,MACMC,UAAU;YACKC;QAAjB,MAAM,EAAEC,SAASD,CAAAA,+BAAAA,IAAAA,uBAAgB,IAAGE,UAAU,cAA7BF,0CAAAA,+BAAiC,MAAM,EAAE,GAAGG,UAAU,GAAG,IAAI,CAACC,IAAI;QACnF,IAAIH,WAAW,QAAQ;YACnB,MAAM,IAAII,aAAI,CAACF,UAAUG,GAAG;QAChC,OAAO,IAAIL,WAAW,UAAU;YAC5B,MAAM,IAAIM,eAAM,GAAGD,GAAG;QAC1B,OAAO;YACH,MAAM,IAAIE,MAAM,CAAC,qBAAqB,EAAEP,OAAO,CAAC,CAAC;QACrD;IACJ;IAhBA,YAAY,AAAiBG,IAAU,CAAE;;QAFzC,uBAASK,UAAT,KAAA;aAE6BL,OAAAA;aAFpBK,SAAS;IAEwB;AAiB9C"}
1
+ {"version":3,"sources":["../../../../src/cli/commands/test/tests.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\nimport { Config } from '@jest/types';\nimport { getConfiguration, logErrors } from '../../../utils';\nimport { Command } from '../types';\nimport { Jest, Vitest } from './runners';\n\ntype Args = Config.Argv & {\n runner?: 'jest' | 'vitest';\n runnerArgs?: string[];\n};\n\n/**\n * This class is named \"Tests\" instead of \"Test\" because the corresponding\n * \"test.ts\" would be interpreted as a test file.\n */\nexport class Tests extends Command<Args> {\n static readonly description = 'Run tests';\n static readonly greedy = true;\n static readonly options = {\n _: { description: '[runnerArgs...]' },\n runner: {\n choices: ['jest', 'vitest'],\n description: 'Test runner',\n defaultDescription: 'jest',\n },\n };\n\n @logErrors\n async execute() {\n const {\n _,\n runner = getConfiguration().testRunner ?? 'jest',\n runnerArgs = [],\n ...restOptions\n } = this.args;\n if (runner === 'jest') {\n await new Jest({ _: [..._, ...runnerArgs], ...restOptions }).run();\n } else if (runner === 'vitest') {\n await new Vitest().run();\n } else {\n throw new Error(`unrecognized runner \"${runner}\"`);\n }\n }\n}\n"],"names":["Tests","Command","execute","getConfiguration","_","runner","testRunner","runnerArgs","restOptions","args","Jest","run","Vitest","Error","description","greedy","options","choices","defaultDescription"],"mappings":"AAAA,uDAAuD;;;;+BAe1CA;;;eAAAA;;;uBAb+B;uBACpB;yBACK;;;;;;;;;;;;;;;;;;;;;;;AAWtB,MAAMA,cAAcC,cAAO;IAY9B,MACMC,UAAU;YAGCC;QAFb,MAAM,EACFC,CAAC,EACDC,SAASF,CAAAA,+BAAAA,IAAAA,uBAAgB,IAAGG,UAAU,cAA7BH,0CAAAA,+BAAiC,MAAM,EAChDI,aAAa,EAAE,EACf,GAAGC,aACN,GAAG,IAAI,CAACC,IAAI;QACb,IAAIJ,WAAW,QAAQ;YACnB,MAAM,IAAIK,aAAI,CAAC;gBAAEN,GAAG;uBAAIA;uBAAMG;iBAAW;gBAAE,GAAGC,WAAW;YAAC,GAAGG,GAAG;QACpE,OAAO,IAAIN,WAAW,UAAU;YAC5B,MAAM,IAAIO,eAAM,GAAGD,GAAG;QAC1B,OAAO;YACH,MAAM,IAAIE,MAAM,CAAC,qBAAqB,EAAER,OAAO,CAAC,CAAC;QACrD;IACJ;AACJ;AA3BI,iBADSL,OACOc,eAAc;AAC9B,iBAFSd,OAEOe,UAAS;AACzB,iBAHSf,OAGOgB,WAAU;IACtBZ,GAAG;QAAEU,aAAa;IAAkB;IACpCT,QAAQ;QACJY,SAAS;YAAC;YAAQ;SAAS;QAC3BH,aAAa;QACbI,oBAAoB;IACxB;AACJ"}
@@ -1,7 +1,16 @@
1
- export interface Command {
2
- greedy?: boolean;
3
- execute(): Promise<void>;
4
- description?(): string;
1
+ import type { Options } from 'yargs';
2
+ export interface CommandArgs {
3
+ [key: string]: unknown;
4
+ }
5
+ export declare abstract class Command<T extends CommandArgs = CommandArgs> {
6
+ protected readonly args: T;
7
+ static readonly description?: string;
8
+ static readonly greedy?: boolean;
9
+ static readonly options?: {
10
+ [key: string]: Options;
11
+ };
12
+ constructor(args: T);
13
+ abstract execute(): Promise<void>;
5
14
  }
6
15
  export type Newable<T> = new (...args: any[]) => T;
7
16
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,OAAO;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,WAAW,CAAC,IAAI,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAErC,MAAM,WAAW,WAAW;IACxB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;AAED,8BAAsB,OAAO,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW;IAKjD,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IAJtC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;gBAEtB,IAAI,EAAE,CAAC;IAEtC,QAAQ,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CACpC;AAED,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC"}
@@ -2,5 +2,33 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
+ Object.defineProperty(exports, "Command", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return Command;
9
+ }
10
+ });
11
+ function _define_property(obj, key, value) {
12
+ if (key in obj) {
13
+ Object.defineProperty(obj, key, {
14
+ value: value,
15
+ enumerable: true,
16
+ configurable: true,
17
+ writable: true
18
+ });
19
+ } else {
20
+ obj[key] = value;
21
+ }
22
+ return obj;
23
+ }
24
+ class Command {
25
+ constructor(args){
26
+ _define_property(this, "args", void 0);
27
+ this.args = args;
28
+ }
29
+ }
30
+ _define_property(Command, "description", void 0);
31
+ _define_property(Command, "greedy", void 0);
32
+ _define_property(Command, "options", void 0);
5
33
 
6
34
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/cli/commands/types.ts"],"names":[],"mappings":""}
1
+ {"version":3,"sources":["../../../src/cli/commands/types.ts"],"sourcesContent":["import type { Options } from 'yargs';\n\nexport interface CommandArgs {\n [key: string]: unknown;\n}\n\nexport abstract class Command<T extends CommandArgs = CommandArgs> {\n static readonly description?: string;\n static readonly greedy?: boolean;\n static readonly options?: { [key: string]: Options };\n\n constructor(protected readonly args: T) {}\n\n abstract execute(): Promise<void>;\n}\n\nexport type Newable<T> = new (...args: any[]) => T;\n"],"names":["Command","args","description","greedy","options"],"mappings":";;;;+BAMsBA;;;eAAAA;;;;;;;;;;;;;;;;AAAf,MAAeA;IAKlB,YAAY,AAAmBC,IAAO,CAAE;;aAATA,OAAAA;IAAU;AAG7C;AAPI,iBADkBD,SACFE,eAAhB,KAAA;AACA,iBAFkBF,SAEFG,UAAhB,KAAA;AACA,iBAHkBH,SAGFI,WAAhB,KAAA"}
@@ -1,12 +1,10 @@
1
- import { Command } from './types';
2
- interface Args {
1
+ import { Command, CommandArgs } from './types';
2
+ interface Args extends CommandArgs {
3
3
  dry?: boolean;
4
4
  releaseVersion: string;
5
5
  }
6
- export declare class UploadSourcemaps implements Command {
6
+ export declare class UploadSourcemaps extends Command<Args> {
7
7
  #private;
8
- private readonly args;
9
- constructor(args: Args);
10
8
  execute(): Promise<void>;
11
9
  private checkArgs;
12
10
  private checkLocation;
@@ -1 +1 @@
1
- {"version":3,"file":"upload-sourcemaps.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/upload-sourcemaps.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,UAAU,IAAI;IACV,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;CAC1B;AAMD,qBAAa,gBAAiB,YAAW,OAAO;;IAIhC,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,IAAI;IAIjC,OAAO;IAWb,OAAO,CAAC,SAAS;IAiBjB,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,qBAAqB;IAM7B,OAAO,CAAC,UAAU;IAYlB,OAAO,CAAC,SAAS;IAYjB,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,GAAG;CAId"}
1
+ {"version":3,"file":"upload-sourcemaps.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/upload-sourcemaps.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE/C,UAAU,IAAK,SAAQ,WAAW;IAC9B,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;CAC1B;AAMD,qBAAa,gBAAiB,SAAQ,OAAO,CAAC,IAAI,CAAC;;IAMzC,OAAO;IAWb,OAAO,CAAC,SAAS;IAiBjB,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,qBAAqB;IAM7B,OAAO,CAAC,UAAU;IAYlB,OAAO,CAAC,SAAS;IAYjB,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,GAAG;CAId"}
@@ -12,6 +12,7 @@ const _path = /*#__PURE__*/ _interop_require_default(require("path"));
12
12
  const _child_process = require("child_process");
13
13
  const _utils = require("../../utils");
14
14
  const _utils1 = require("../utils");
15
+ const _types = require("./types");
15
16
  function _check_private_redeclaration(obj, privateCollection) {
16
17
  if (privateCollection.has(obj)) {
17
18
  throw new TypeError("Cannot initialize the same private elements twice on an object");
@@ -52,19 +53,6 @@ function _class_private_field_set(receiver, privateMap, value) {
52
53
  _class_apply_descriptor_set(receiver, descriptor, value);
53
54
  return value;
54
55
  }
55
- function _define_property(obj, key, value) {
56
- if (key in obj) {
57
- Object.defineProperty(obj, key, {
58
- value: value,
59
- enumerable: true,
60
- configurable: true,
61
- writable: true
62
- });
63
- } else {
64
- obj[key] = value;
65
- }
66
- return obj;
67
- }
68
56
  function _interop_require_default(obj) {
69
57
  return obj && obj.__esModule ? obj : {
70
58
  default: obj
@@ -80,7 +68,7 @@ function _ts_metadata(k, v) {
80
68
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
81
69
  }
82
70
  var _outDir = /*#__PURE__*/ new WeakMap(), _packageJson = /*#__PURE__*/ new WeakMap();
83
- class UploadSourcemaps {
71
+ class UploadSourcemaps extends _types.Command {
84
72
  async execute() {
85
73
  this.checkLocation();
86
74
  if (!this.checkArgs()) {
@@ -156,17 +144,14 @@ class UploadSourcemaps {
156
144
  stdio: 'inherit'
157
145
  });
158
146
  }
159
- constructor(args){
160
- _define_property(this, "args", void 0);
161
- _class_private_field_init(this, _outDir, {
147
+ constructor(...args){
148
+ super(...args), _class_private_field_init(this, _outDir, {
162
149
  writable: true,
163
150
  value: void 0
164
- });
165
- _class_private_field_init(this, _packageJson, {
151
+ }), _class_private_field_init(this, _packageJson, {
166
152
  writable: true,
167
153
  value: void 0
168
154
  });
169
- this.args = args;
170
155
  }
171
156
  }
172
157
  _ts_decorate([
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/cli/commands/upload-sourcemaps.ts"],"sourcesContent":["import path from 'path';\nimport { execSync } from 'child_process';\nimport { getTsConfig, isWebComponent, log, logErrors, readJson } from '../../utils';\nimport { isCI, TSConfig } from '../utils';\nimport { Command } from './types';\n\ninterface Args {\n dry?: boolean;\n releaseVersion: string;\n}\n\ninterface PackageJson {\n name: string;\n}\n\nexport class UploadSourcemaps implements Command {\n #outDir?: string;\n #packageJson?: PackageJson;\n\n constructor(private readonly args: Args) {}\n\n @logErrors\n // eslint-disable-next-line @typescript-eslint/require-await\n async execute() {\n this.checkLocation();\n if (!this.checkArgs()) {\n return;\n }\n\n const bundleDir = this.getBundleDir();\n const options = this.getOptions().join(' ');\n this.run(`npx --yes @datadog/datadog-ci@3 sourcemaps upload ${bundleDir} ${options}`);\n }\n\n private checkArgs() {\n if (!process.env.DATADOG_API_KEY) {\n const message = 'DATADOG_API_KEY environment variable is not set';\n if (!isCI()) {\n throw new Error(message);\n }\n log.warning(`${message}; skipping sourcemaps`);\n return false;\n }\n\n if (!this.args.releaseVersion) {\n throw new Error('--release-version is required');\n }\n\n return true;\n }\n\n private checkLocation() {\n if (!isWebComponent()) {\n throw new Error(`this command must be run inside a web-component directory`);\n }\n }\n\n private getBundleDir() {\n return path.relative('.', path.join(this.getOutDir(), 'bundle'));\n }\n\n private getMinifiedPrefixPath() {\n const { name } = this.getPackageJson();\n const baseUrl = `https://unpkg.servicetitan.com/${name}@${this.args.releaseVersion}`;\n return `${baseUrl}/${this.getBundleDir().replace(/\\\\/g, '/')}`;\n }\n\n private getOptions() {\n const { dry, releaseVersion } = this.args;\n const service = this.getPackageJson().name.replace(/^[^/]+\\//, '');\n return [\n ...[dry && `--dry-run`],\n `--service=${service}`,\n `--release-version=${releaseVersion}`,\n `--minified-path-prefix=${this.getMinifiedPrefixPath()}`,\n `--project-path=${this.getProjectPath()}`,\n ].filter(item => !!item) as string[];\n }\n\n private getOutDir() {\n if (!this.#outDir) {\n const outDir = new TSConfig(getTsConfig()).getValue<string>('compilerOptions.outDir');\n if (!outDir) {\n throw new Error('compilerOptions.outDir is not configured');\n }\n\n this.#outDir = outDir;\n }\n return this.#outDir;\n }\n\n private getPackageJson() {\n if (!this.#packageJson) {\n this.#packageJson = readJson<PackageJson>('package.json');\n }\n return this.#packageJson;\n }\n\n private getProjectPath() {\n const name = readJson(path.join(this.getOutDir(), 'metadata.json')).name;\n return `${name}/`;\n }\n\n private run(command: string) {\n log.info(`Running: ${command}`);\n return execSync(command, { stdio: 'inherit' });\n }\n}\n"],"names":["UploadSourcemaps","execute","checkLocation","checkArgs","bundleDir","getBundleDir","options","getOptions","join","run","process","env","DATADOG_API_KEY","message","isCI","Error","log","warning","args","releaseVersion","isWebComponent","path","relative","getOutDir","getMinifiedPrefixPath","name","getPackageJson","baseUrl","replace","dry","service","getProjectPath","filter","item","outDir","TSConfig","getTsConfig","getValue","readJson","command","info","execSync","stdio"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/cli/commands/upload-sourcemaps.ts"],"sourcesContent":["import path from 'path';\nimport { execSync } from 'child_process';\nimport { getTsConfig, isWebComponent, log, logErrors, readJson } from '../../utils';\nimport { isCI, TSConfig } from '../utils';\nimport { Command, CommandArgs } from './types';\n\ninterface Args extends CommandArgs {\n dry?: boolean;\n releaseVersion: string;\n}\n\ninterface PackageJson {\n name: string;\n}\n\nexport class UploadSourcemaps extends Command<Args> {\n #outDir?: string;\n #packageJson?: PackageJson;\n\n @logErrors\n // eslint-disable-next-line @typescript-eslint/require-await\n async execute() {\n this.checkLocation();\n if (!this.checkArgs()) {\n return;\n }\n\n const bundleDir = this.getBundleDir();\n const options = this.getOptions().join(' ');\n this.run(`npx --yes @datadog/datadog-ci@3 sourcemaps upload ${bundleDir} ${options}`);\n }\n\n private checkArgs() {\n if (!process.env.DATADOG_API_KEY) {\n const message = 'DATADOG_API_KEY environment variable is not set';\n if (!isCI()) {\n throw new Error(message);\n }\n log.warning(`${message}; skipping sourcemaps`);\n return false;\n }\n\n if (!this.args.releaseVersion) {\n throw new Error('--release-version is required');\n }\n\n return true;\n }\n\n private checkLocation() {\n if (!isWebComponent()) {\n throw new Error(`this command must be run inside a web-component directory`);\n }\n }\n\n private getBundleDir() {\n return path.relative('.', path.join(this.getOutDir(), 'bundle'));\n }\n\n private getMinifiedPrefixPath() {\n const { name } = this.getPackageJson();\n const baseUrl = `https://unpkg.servicetitan.com/${name}@${this.args.releaseVersion}`;\n return `${baseUrl}/${this.getBundleDir().replace(/\\\\/g, '/')}`;\n }\n\n private getOptions() {\n const { dry, releaseVersion } = this.args;\n const service = this.getPackageJson().name.replace(/^[^/]+\\//, '');\n return [\n ...[dry && `--dry-run`],\n `--service=${service}`,\n `--release-version=${releaseVersion}`,\n `--minified-path-prefix=${this.getMinifiedPrefixPath()}`,\n `--project-path=${this.getProjectPath()}`,\n ].filter(item => !!item) as string[];\n }\n\n private getOutDir() {\n if (!this.#outDir) {\n const outDir = new TSConfig(getTsConfig()).getValue<string>('compilerOptions.outDir');\n if (!outDir) {\n throw new Error('compilerOptions.outDir is not configured');\n }\n\n this.#outDir = outDir;\n }\n return this.#outDir;\n }\n\n private getPackageJson() {\n if (!this.#packageJson) {\n this.#packageJson = readJson<PackageJson>('package.json');\n }\n return this.#packageJson;\n }\n\n private getProjectPath() {\n const name = readJson(path.join(this.getOutDir(), 'metadata.json')).name;\n return `${name}/`;\n }\n\n private run(command: string) {\n log.info(`Running: ${command}`);\n return execSync(command, { stdio: 'inherit' });\n }\n}\n"],"names":["UploadSourcemaps","Command","execute","checkLocation","checkArgs","bundleDir","getBundleDir","options","getOptions","join","run","process","env","DATADOG_API_KEY","message","isCI","Error","log","warning","args","releaseVersion","isWebComponent","path","relative","getOutDir","getMinifiedPrefixPath","name","getPackageJson","baseUrl","replace","dry","service","getProjectPath","filter","item","outDir","TSConfig","getTsConfig","getValue","readJson","command","info","execSync","stdio"],"mappings":"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"}
package/dist/cli/index.js CHANGED
@@ -2,9 +2,11 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
+ const _chalk = /*#__PURE__*/ _interop_require_default(require("chalk"));
5
6
  const _execa = /*#__PURE__*/ _interop_require_default(require("execa"));
6
7
  const _path = /*#__PURE__*/ _interop_require_default(require("path"));
7
- const _yargs = require("yargs");
8
+ const _yargs = /*#__PURE__*/ _interop_require_default(require("yargs"));
9
+ const _helpers = require("yargs/helpers");
8
10
  const _utils = require("../utils");
9
11
  const _commands = require("./commands");
10
12
  const _utils1 = require("./utils");
@@ -13,46 +15,53 @@ function _interop_require_default(obj) {
13
15
  default: obj
14
16
  };
15
17
  }
16
- var _argvSync___;
17
- const argvSync = _yargs.argv;
18
- const name = (_argvSync___ = argvSync._[0]) === null || _argvSync___ === void 0 ? void 0 : _argvSync___.toString();
19
- if (!name) {
20
- _utils.log.info(`startup cli v${(0, _utils.getStartupVersion)()}`);
21
- usage();
22
- process.exit(0);
23
- }
24
- const Command = (0, _commands.getCommand)(name);
25
- if (!Command) {
26
- _utils.log.error(`Unknown command: "${name}"`);
27
- usage();
28
- process.exit(127);
29
- }
30
- checkNodeVersion();
31
- (0, _utils1.maybeCreateGitFolder)(Command);
32
- // eslint-disable-next-line @typescript-eslint/naming-convention
33
- const command = new Command({
34
- ...argvSync,
35
- _: argvSync._.slice(1)
36
- });
37
- if ((0, _utils1.setNodeOptions)(name, command)) {
38
- _utils.log.debug('run', `Running ${name} in child process with amended NODE_OPTIONS`);
39
- (0, _execa.default)(process.argv[0], process.argv.slice(1), {
40
- stdio: 'inherit'
41
- }).catch((reason)=>{
42
- process.exit(reason.exitCode);
43
- });
44
- } else {
45
- command.execute().catch(()=>{
46
- process.exit(1);
47
- });
18
+ Object.values(_utils.CommandName).reduce((y, name)=>addCommand(name, y), (0, _yargs.default)((0, _helpers.hideBin)(process.argv))).usage('Usage: startup <command> [options]').epilogue(_chalk.default.bold.cyan(`startup cli v${(0, _utils.getStartupVersion)()}\n`) + `Run ${_chalk.default.bold.cyan('startup <command> --help')} to see command options.\n` + `For detailed documentation, see ${_chalk.default.bold.cyan('https://docs.st.dev/docs/frontend/uikit/startup')}.\n`).demandCommand(1, '').strictCommands().updateStrings({
19
+ 'Unknown command: %s': {
20
+ one: _chalk.default.bold.red('Unknown command: %s'),
21
+ other: _chalk.default.bold.red('Unknown command: %s')
22
+ }
23
+ }).version().wrap(Math.min(100, _yargs.default.terminalWidth())).help().parse();
24
+ function addCommand(name, y) {
25
+ const klass = (0, _commands.getCommand)(name);
26
+ // eslint-disable-next-line @typescript-eslint/naming-convention
27
+ const { description, options: { _, ...options } = {} } = klass;
28
+ const nameWithArgs = name + ((_ === null || _ === void 0 ? void 0 : _.description) ? ` ${_.description}` : '');
29
+ const groupedOptions = Object.entries(options).reduce((result, [key, value])=>{
30
+ result[key] = {
31
+ group: 'Command Options:',
32
+ ...value
33
+ };
34
+ return result;
35
+ }, {});
36
+ const handler = (argv)=>handleCommand(name, argv);
37
+ if (description) {
38
+ y.command(nameWithArgs, description, groupedOptions, handler);
39
+ } else {
40
+ y.command(nameWithArgs, false, groupedOptions, handler);
41
+ }
42
+ return y;
48
43
  }
49
- function usage() {
50
- _utils.log.text('\nUsage:');
51
- const commands = (0, _commands.getUserCommands)().filter(({ name })=>!!name);
52
- const maxNameLength = commands.reduce((result, { name })=>Math.max(result, name.length), 0);
53
- commands.forEach(({ name, description })=>{
54
- _utils.log.text(`startup ${name.padEnd(maxNameLength, ' ')} ${description}`);
44
+ function handleCommand(name, argv) {
45
+ const Command = (0, _commands.getCommand)(name);
46
+ checkNodeVersion();
47
+ (0, _utils1.maybeCreateGitFolder)(Command);
48
+ // eslint-disable-next-line @typescript-eslint/naming-convention
49
+ const command = new Command({
50
+ ...argv,
51
+ _: argv._.slice(1)
55
52
  });
53
+ if ((0, _utils1.setNodeOptions)(name, command)) {
54
+ _utils.log.debug('run', `Running ${name} in child process with amended NODE_OPTIONS`);
55
+ (0, _execa.default)(process.argv[0], process.argv.slice(1), {
56
+ stdio: 'inherit'
57
+ }).catch((reason)=>{
58
+ process.exit(reason.exitCode);
59
+ });
60
+ } else {
61
+ command.execute().catch(()=>{
62
+ process.exit(1);
63
+ });
64
+ }
56
65
  }
57
66
  function checkNodeVersion() {
58
67
  const nodeVersion = Number(process.versions.node.split('.')[0]);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/cli/index.ts"],"sourcesContent":["import execa from 'execa';\nimport path from 'path';\nimport { argv, Arguments } from 'yargs';\nimport { CommandName, getStartupVersion, log } from '../utils';\nimport { getCommand, getUserCommands } from './commands';\nimport { maybeCreateGitFolder, setNodeOptions } from './utils';\n\nconst argvSync = argv as Arguments;\nconst name = argvSync._[0]?.toString() as CommandName;\nif (!name) {\n log.info(`startup cli v${getStartupVersion()}`);\n usage();\n process.exit(0);\n}\n\nconst Command = getCommand(name);\nif (!Command) {\n log.error(`Unknown command: \"${name}\"`);\n usage();\n process.exit(127);\n}\n\ncheckNodeVersion();\nmaybeCreateGitFolder(Command);\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nconst command = new Command({ ...argvSync, _: argvSync._.slice(1) });\nif (setNodeOptions(name, command)) {\n log.debug('run', `Running ${name} in child process with amended NODE_OPTIONS`);\n execa(process.argv[0], process.argv.slice(1), { stdio: 'inherit' }).catch(reason => {\n process.exit(reason.exitCode);\n });\n} else {\n command.execute().catch(() => {\n process.exit(1);\n });\n}\n\nfunction usage() {\n log.text('\\nUsage:');\n\n const commands = getUserCommands().filter(({ name }) => !!name);\n const maxNameLength = commands.reduce((result, { name }) => Math.max(result, name.length), 0);\n commands.forEach(({ name, description }) => {\n log.text(`startup ${name.padEnd(maxNameLength, ' ')} ${description}`);\n });\n}\n\nfunction checkNodeVersion() {\n const nodeVersion = Number(process.versions.node.split('.')[0]);\n if (nodeVersion % 2 === 0 || process.env.SKIP_NODE_VERSION_CHECK) {\n return;\n }\n\n const { engines } = require(path.join(__dirname, '../../package.json'));\n log.error(\n `error: node v${nodeVersion} detected, only even-numbered LTS versions ${engines.node} are supported`\n );\n log.text('See https://nodejs.org/en/download for LTS versions');\n process.exit(127);\n}\n"],"names":["argvSync","argv","name","_","toString","log","info","getStartupVersion","usage","process","exit","Command","getCommand","error","checkNodeVersion","maybeCreateGitFolder","command","slice","setNodeOptions","debug","execa","stdio","catch","reason","exitCode","execute","text","commands","getUserCommands","filter","maxNameLength","reduce","result","Math","max","length","forEach","description","padEnd","nodeVersion","Number","versions","node","split","env","SKIP_NODE_VERSION_CHECK","engines","require","path","join","__dirname"],"mappings":";;;;8DAAkB;6DACD;uBACe;uBACoB;0BACR;wBACS;;;;;;IAGxCA;AADb,MAAMA,WAAWC,WAAI;AACrB,MAAMC,QAAOF,eAAAA,SAASG,CAAC,CAAC,EAAE,cAAbH,mCAAAA,aAAeI,QAAQ;AACpC,IAAI,CAACF,MAAM;IACPG,UAAG,CAACC,IAAI,CAAC,CAAC,aAAa,EAAEC,IAAAA,wBAAiB,KAAI;IAC9CC;IACAC,QAAQC,IAAI,CAAC;AACjB;AAEA,MAAMC,UAAUC,IAAAA,oBAAU,EAACV;AAC3B,IAAI,CAACS,SAAS;IACVN,UAAG,CAACQ,KAAK,CAAC,CAAC,kBAAkB,EAAEX,KAAK,CAAC,CAAC;IACtCM;IACAC,QAAQC,IAAI,CAAC;AACjB;AAEAI;AACAC,IAAAA,4BAAoB,EAACJ;AAErB,gEAAgE;AAChE,MAAMK,UAAU,IAAIL,QAAQ;IAAE,GAAGX,QAAQ;IAAEG,GAAGH,SAASG,CAAC,CAACc,KAAK,CAAC;AAAG;AAClE,IAAIC,IAAAA,sBAAc,EAAChB,MAAMc,UAAU;IAC/BX,UAAG,CAACc,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAEjB,KAAK,2CAA2C,CAAC;IAC7EkB,IAAAA,cAAK,EAACX,QAAQR,IAAI,CAAC,EAAE,EAAEQ,QAAQR,IAAI,CAACgB,KAAK,CAAC,IAAI;QAAEI,OAAO;IAAU,GAAGC,KAAK,CAACC,CAAAA;QACtEd,QAAQC,IAAI,CAACa,OAAOC,QAAQ;IAChC;AACJ,OAAO;IACHR,QAAQS,OAAO,GAAGH,KAAK,CAAC;QACpBb,QAAQC,IAAI,CAAC;IACjB;AACJ;AAEA,SAASF;IACLH,UAAG,CAACqB,IAAI,CAAC;IAET,MAAMC,WAAWC,IAAAA,yBAAe,IAAGC,MAAM,CAAC,CAAC,EAAE3B,IAAI,EAAE,GAAK,CAAC,CAACA;IAC1D,MAAM4B,gBAAgBH,SAASI,MAAM,CAAC,CAACC,QAAQ,EAAE9B,IAAI,EAAE,GAAK+B,KAAKC,GAAG,CAACF,QAAQ9B,KAAKiC,MAAM,GAAG;IAC3FR,SAASS,OAAO,CAAC,CAAC,EAAElC,IAAI,EAAEmC,WAAW,EAAE;QACnChC,UAAG,CAACqB,IAAI,CAAC,CAAC,QAAQ,EAAExB,KAAKoC,MAAM,CAACR,eAAe,KAAK,EAAE,EAAEO,aAAa;IACzE;AACJ;AAEA,SAASvB;IACL,MAAMyB,cAAcC,OAAO/B,QAAQgC,QAAQ,CAACC,IAAI,CAACC,KAAK,CAAC,IAAI,CAAC,EAAE;IAC9D,IAAIJ,cAAc,MAAM,KAAK9B,QAAQmC,GAAG,CAACC,uBAAuB,EAAE;QAC9D;IACJ;IAEA,MAAM,EAAEC,OAAO,EAAE,GAAGC,QAAQC,aAAI,CAACC,IAAI,CAACC,WAAW;IACjD7C,UAAG,CAACQ,KAAK,CACL,CAAC,aAAa,EAAE0B,YAAY,2CAA2C,EAAEO,QAAQJ,IAAI,CAAC,cAAc,CAAC;IAEzGrC,UAAG,CAACqB,IAAI,CAAC;IACTjB,QAAQC,IAAI,CAAC;AACjB"}
1
+ {"version":3,"sources":["../../src/cli/index.ts"],"sourcesContent":["import chalk from 'chalk';\nimport execa from 'execa';\nimport path from 'path';\nimport yargs from 'yargs';\nimport { hideBin } from 'yargs/helpers';\nimport { CommandName, getStartupVersion, log } from '../utils';\nimport { Command, getCommand } from './commands';\nimport { maybeCreateGitFolder, setNodeOptions } from './utils';\n\nObject.values(CommandName)\n .reduce((y, name) => addCommand(name, y), yargs(hideBin(process.argv)))\n .usage('Usage: startup <command> [options]')\n .epilogue(\n chalk.bold.cyan(`startup cli v${getStartupVersion()}\\n`) +\n `Run ${chalk.bold.cyan('startup <command> --help')} to see command options.\\n` +\n `For detailed documentation, see ${chalk.bold.cyan('https://docs.st.dev/docs/frontend/uikit/startup')}.\\n`\n )\n .demandCommand(1, '')\n .strictCommands()\n .updateStrings({\n 'Unknown command: %s': {\n one: chalk.bold.red('Unknown command: %s'),\n other: chalk.bold.red('Unknown command: %s'),\n } as any,\n })\n .version()\n .wrap(Math.min(100, yargs.terminalWidth()))\n .help()\n .parse();\n\nfunction addCommand(name: CommandName, y: typeof yargs) {\n const klass = getCommand(name)! as typeof Command;\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const { description, options: { _, ...options } = {} } = klass;\n const nameWithArgs = name + (_?.description ? ` ${_.description}` : '');\n const groupedOptions = Object.entries(options).reduce(\n (result, [key, value]) => {\n result[key] = { group: 'Command Options:', ...value };\n return result;\n },\n {} as NonNullable<typeof klass.options>\n );\n const handler = (argv: any) => handleCommand(name, argv);\n if (description) {\n y.command(nameWithArgs, description, groupedOptions, handler);\n } else {\n y.command(nameWithArgs, false, groupedOptions, handler);\n }\n return y;\n}\n\nfunction handleCommand(name: CommandName, argv: any) {\n const Command = getCommand(name)!;\n\n checkNodeVersion();\n maybeCreateGitFolder(Command);\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const command = new Command({ ...argv, _: argv._.slice(1) });\n if (setNodeOptions(name, command)) {\n log.debug('run', `Running ${name} in child process with amended NODE_OPTIONS`);\n execa(process.argv[0], process.argv.slice(1), { stdio: 'inherit' }).catch(reason => {\n process.exit(reason.exitCode);\n });\n } else {\n command.execute().catch(() => {\n process.exit(1);\n });\n }\n}\n\nfunction checkNodeVersion() {\n const nodeVersion = Number(process.versions.node.split('.')[0]);\n if (nodeVersion % 2 === 0 || process.env.SKIP_NODE_VERSION_CHECK) {\n return;\n }\n\n const { engines } = require(path.join(__dirname, '../../package.json'));\n log.error(\n `error: node v${nodeVersion} detected, only even-numbered LTS versions ${engines.node} are supported`\n );\n log.text('See https://nodejs.org/en/download for LTS versions');\n process.exit(127);\n}\n"],"names":["Object","values","CommandName","reduce","y","name","addCommand","yargs","hideBin","process","argv","usage","epilogue","chalk","bold","cyan","getStartupVersion","demandCommand","strictCommands","updateStrings","one","red","other","version","wrap","Math","min","terminalWidth","help","parse","klass","getCommand","description","options","_","nameWithArgs","groupedOptions","entries","result","key","value","group","handler","handleCommand","command","Command","checkNodeVersion","maybeCreateGitFolder","slice","setNodeOptions","log","debug","execa","stdio","catch","reason","exit","exitCode","execute","nodeVersion","Number","versions","node","split","env","SKIP_NODE_VERSION_CHECK","engines","require","path","join","__dirname","error","text"],"mappings":";;;;8DAAkB;8DACA;6DACD;8DACC;yBACM;uBAC4B;0BAChB;wBACiB;;;;;;AAErDA,OAAOC,MAAM,CAACC,kBAAW,EACpBC,MAAM,CAAC,CAACC,GAAGC,OAASC,WAAWD,MAAMD,IAAIG,IAAAA,cAAK,EAACC,IAAAA,gBAAO,EAACC,QAAQC,IAAI,IACnEC,KAAK,CAAC,sCACNC,QAAQ,CACLC,cAAK,CAACC,IAAI,CAACC,IAAI,CAAC,CAAC,aAAa,EAAEC,IAAAA,wBAAiB,IAAG,EAAE,CAAC,IACnD,CAAC,IAAI,EAAEH,cAAK,CAACC,IAAI,CAACC,IAAI,CAAC,4BAA4B,0BAA0B,CAAC,GAC9E,CAAC,gCAAgC,EAAEF,cAAK,CAACC,IAAI,CAACC,IAAI,CAAC,mDAAmD,GAAG,CAAC,EAEjHE,aAAa,CAAC,GAAG,IACjBC,cAAc,GACdC,aAAa,CAAC;IACX,uBAAuB;QACnBC,KAAKP,cAAK,CAACC,IAAI,CAACO,GAAG,CAAC;QACpBC,OAAOT,cAAK,CAACC,IAAI,CAACO,GAAG,CAAC;IAC1B;AACJ,GACCE,OAAO,GACPC,IAAI,CAACC,KAAKC,GAAG,CAAC,KAAKnB,cAAK,CAACoB,aAAa,KACtCC,IAAI,GACJC,KAAK;AAEV,SAASvB,WAAWD,IAAiB,EAAED,CAAe;IAClD,MAAM0B,QAAQC,IAAAA,oBAAU,EAAC1B;IACzB,gEAAgE;IAChE,MAAM,EAAE2B,WAAW,EAAEC,SAAS,EAAEC,CAAC,EAAE,GAAGD,SAAS,GAAG,CAAC,CAAC,EAAE,GAAGH;IACzD,MAAMK,eAAe9B,OAAQ6B,CAAAA,CAAAA,cAAAA,wBAAAA,EAAGF,WAAW,IAAG,CAAC,CAAC,EAAEE,EAAEF,WAAW,EAAE,GAAG,EAAC;IACrE,MAAMI,iBAAiBpC,OAAOqC,OAAO,CAACJ,SAAS9B,MAAM,CACjD,CAACmC,QAAQ,CAACC,KAAKC,MAAM;QACjBF,MAAM,CAACC,IAAI,GAAG;YAAEE,OAAO;YAAoB,GAAGD,KAAK;QAAC;QACpD,OAAOF;IACX,GACA,CAAC;IAEL,MAAMI,UAAU,CAAChC,OAAciC,cAActC,MAAMK;IACnD,IAAIsB,aAAa;QACb5B,EAAEwC,OAAO,CAACT,cAAcH,aAAaI,gBAAgBM;IACzD,OAAO;QACHtC,EAAEwC,OAAO,CAACT,cAAc,OAAOC,gBAAgBM;IACnD;IACA,OAAOtC;AACX;AAEA,SAASuC,cAActC,IAAiB,EAAEK,IAAS;IAC/C,MAAMmC,UAAUd,IAAAA,oBAAU,EAAC1B;IAE3ByC;IACAC,IAAAA,4BAAoB,EAACF;IAErB,gEAAgE;IAChE,MAAMD,UAAU,IAAIC,QAAQ;QAAE,GAAGnC,IAAI;QAAEwB,GAAGxB,KAAKwB,CAAC,CAACc,KAAK,CAAC;IAAG;IAC1D,IAAIC,IAAAA,sBAAc,EAAC5C,MAAMuC,UAAU;QAC/BM,UAAG,CAACC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE9C,KAAK,2CAA2C,CAAC;QAC7E+C,IAAAA,cAAK,EAAC3C,QAAQC,IAAI,CAAC,EAAE,EAAED,QAAQC,IAAI,CAACsC,KAAK,CAAC,IAAI;YAAEK,OAAO;QAAU,GAAGC,KAAK,CAACC,CAAAA;YACtE9C,QAAQ+C,IAAI,CAACD,OAAOE,QAAQ;QAChC;IACJ,OAAO;QACHb,QAAQc,OAAO,GAAGJ,KAAK,CAAC;YACpB7C,QAAQ+C,IAAI,CAAC;QACjB;IACJ;AACJ;AAEA,SAASV;IACL,MAAMa,cAAcC,OAAOnD,QAAQoD,QAAQ,CAACC,IAAI,CAACC,KAAK,CAAC,IAAI,CAAC,EAAE;IAC9D,IAAIJ,cAAc,MAAM,KAAKlD,QAAQuD,GAAG,CAACC,uBAAuB,EAAE;QAC9D;IACJ;IAEA,MAAM,EAAEC,OAAO,EAAE,GAAGC,QAAQC,aAAI,CAACC,IAAI,CAACC,WAAW;IACjDpB,UAAG,CAACqB,KAAK,CACL,CAAC,aAAa,EAAEZ,YAAY,2CAA2C,EAAEO,QAAQJ,IAAI,CAAC,cAAc,CAAC;IAEzGZ,UAAG,CAACsB,IAAI,CAAC;IACT/D,QAAQ+C,IAAI,CAAC;AACjB"}
@@ -1,6 +1,6 @@
1
+ import { CommandArgs } from '../commands';
1
2
  import { Task } from './task';
2
- interface Args {
3
- [key: string]: unknown;
3
+ interface Args extends CommandArgs {
4
4
  watch?: boolean;
5
5
  }
6
6
  export declare class SwcCompilePackage extends Task {
@@ -1 +1 @@
1
- {"version":3,"file":"swc-compile-package.d.ts","sourceRoot":"","sources":["../../../src/cli/tasks/swc-compile-package.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,UAAU,IAAI;IACV,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB;AAQD,qBAAa,iBAAkB,SAAQ,IAAI;gBAC3B,EAAE,KAAK,EAAE,EAAE,IAAI;IAIrB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAqC9B,OAAO,CAAC,SAAS;CAyDpB"}
1
+ {"version":3,"file":"swc-compile-package.d.ts","sourceRoot":"","sources":["../../../src/cli/tasks/swc-compile-package.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,UAAU,IAAK,SAAQ,WAAW;IAC9B,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB;AAQD,qBAAa,iBAAkB,SAAQ,IAAI;gBAC3B,EAAE,KAAK,EAAE,EAAE,IAAI;IAIrB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAqC9B,OAAO,CAAC,SAAS;CAyDpB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/cli/tasks/swc-compile-package.ts"],"sourcesContent":["import { Options, swcDir } from '@swc/cli';\nimport debounce from 'debounce';\nimport deepmerge from 'deepmerge';\n\nimport { getFolders, getSwcCompilePackageConfiguration, getTsConfig, log } from '../../utils';\nimport { TSConfig } from '../utils';\nimport { Task } from './task';\n\ninterface Args {\n [key: string]: unknown;\n watch?: boolean;\n}\n\nfunction overwriteMerge(_destinationArray: unknown[], sourceArray: unknown[]) {\n return sourceArray;\n}\n\nconst typedefsPattern = '**/*.d.ts';\n\nexport class SwcCompilePackage extends Task {\n constructor({ watch }: Args) {\n super({ name: 'swc-compile-package', global: false, watch });\n }\n\n async execute(): Promise<void> {\n const config = this.getConfig();\n\n /* istanbul ignore next: debug only */\n log.debug('swc-compile-package:config', () => JSON.stringify(config, null, 2));\n\n /*\n * @swc/cli@0.5.0 doesn't implement \"ignore\" in watch mode so debounce\n * noisy output. See https://servicetitan.atlassian.net/browse/FAR-1592\n * and DEVELOPER_NOTES in file://./../../../package.json\n */\n const logSuccessResults = this.watch\n ? debounce(this.logCompletionResults.bind(this), 200)\n : this.logCompletionResults.bind(this);\n\n return new Promise((resolve, reject) => {\n swcDir({\n ...config,\n callbacks: {\n onSuccess: (e: { duration: number }) => {\n logSuccessResults(this.taskTimer.add(e.duration));\n if (!this.watch) {\n resolve();\n }\n },\n onFail: (e: { duration: number; reasons: Map<string, string> }) => {\n log.text([...e.reasons.values()][0]);\n this.logCompletionResults(this.taskTimer.add(e.duration));\n if (!this.watch) {\n reject(new Error('Compilation failed'));\n }\n },\n },\n });\n });\n }\n\n private getConfig(): Options {\n const { source, destination } = getFolders();\n const packageConfig = getSwcCompilePackageConfiguration();\n const tsConfig = new TSConfig(getTsConfig());\n const target = tsConfig.getValue('compilerOptions.target');\n const legacyDecorator = tsConfig.getValue('compilerOptions.experimentalDecorators');\n const decoratorMetadata = tsConfig.getValue('compilerOptions.emitDecoratorMetadata');\n const sourceMaps = tsConfig.getValue('compilerOptions.sourceMap');\n const module = tsConfig.getValue<string>('compilerOptions.module')?.toLowerCase();\n const ignore = tsConfig.getValue('exclude', [\n '**/*.d.ts',\n '**/__tests__/*',\n '**/*.test.*',\n '**/__mocks__/*',\n '**/*.stories.*',\n ]);\n\n if (!ignore.includes(typedefsPattern)) {\n ignore.push(typedefsPattern);\n }\n\n return deepmerge(\n {\n cliOptions: {\n watch: this.watch,\n outDir: destination,\n stripLeadingPaths: true,\n extensions: ['.ts', '.tsx'],\n filenames: [source],\n ignore,\n },\n swcOptions: {\n jsc: {\n parser: {\n syntax: 'typescript',\n tsx: true,\n decorators: true,\n },\n target,\n transform: {\n legacyDecorator,\n decoratorMetadata,\n react: {\n runtime: 'automatic',\n },\n },\n },\n sourceMaps,\n module: {\n type: module === 'commonjs' || module === 'nodenext' ? 'commonjs' : 'es6',\n },\n },\n },\n packageConfig,\n { arrayMerge: overwriteMerge, clone: false }\n );\n }\n}\n"],"names":["SwcCompilePackage","overwriteMerge","_destinationArray","sourceArray","typedefsPattern","Task","execute","config","getConfig","log","debug","JSON","stringify","logSuccessResults","watch","debounce","logCompletionResults","bind","Promise","resolve","reject","swcDir","callbacks","onSuccess","e","taskTimer","add","duration","onFail","text","reasons","values","Error","tsConfig","source","destination","getFolders","packageConfig","getSwcCompilePackageConfiguration","TSConfig","getTsConfig","target","getValue","legacyDecorator","decoratorMetadata","sourceMaps","module","toLowerCase","ignore","includes","push","deepmerge","cliOptions","outDir","stripLeadingPaths","extensions","filenames","swcOptions","jsc","parser","syntax","tsx","decorators","transform","react","runtime","type","arrayMerge","clone","name","global"],"mappings":";;;;+BAmBaA;;;eAAAA;;;qBAnBmB;iEACX;kEACC;uBAE0D;wBACvD;sBACJ;;;;;;AAOrB,SAASC,eAAeC,iBAA4B,EAAEC,WAAsB;IACxE,OAAOA;AACX;AAEA,MAAMC,kBAAkB;AAEjB,MAAMJ,0BAA0BK,UAAI;IAKvC,MAAMC,UAAyB;QAC3B,MAAMC,SAAS,IAAI,CAACC,SAAS;QAE7B,oCAAoC,GACpCC,UAAG,CAACC,KAAK,CAAC,8BAA8B,IAAMC,KAAKC,SAAS,CAACL,QAAQ,MAAM;QAE3E;;;;SAIC,GACD,MAAMM,oBAAoB,IAAI,CAACC,KAAK,GAC9BC,IAAAA,iBAAQ,EAAC,IAAI,CAACC,oBAAoB,CAACC,IAAI,CAAC,IAAI,GAAG,OAC/C,IAAI,CAACD,oBAAoB,CAACC,IAAI,CAAC,IAAI;QAEzC,OAAO,IAAIC,QAAQ,CAACC,SAASC;YACzBC,IAAAA,WAAM,EAAC;gBACH,GAAGd,MAAM;gBACTe,WAAW;oBACPC,WAAW,CAACC;wBACRX,kBAAkB,IAAI,CAACY,SAAS,CAACC,GAAG,CAACF,EAAEG,QAAQ;wBAC/C,IAAI,CAAC,IAAI,CAACb,KAAK,EAAE;4BACbK;wBACJ;oBACJ;oBACAS,QAAQ,CAACJ;wBACLf,UAAG,CAACoB,IAAI,CAAC;+BAAIL,EAAEM,OAAO,CAACC,MAAM;yBAAG,CAAC,EAAE;wBACnC,IAAI,CAACf,oBAAoB,CAAC,IAAI,CAACS,SAAS,CAACC,GAAG,CAACF,EAAEG,QAAQ;wBACvD,IAAI,CAAC,IAAI,CAACb,KAAK,EAAE;4BACbM,OAAO,IAAIY,MAAM;wBACrB;oBACJ;gBACJ;YACJ;QACJ;IACJ;IAEQxB,YAAqB;YAQVyB;QAPf,MAAM,EAAEC,MAAM,EAAEC,WAAW,EAAE,GAAGC,IAAAA,iBAAU;QAC1C,MAAMC,gBAAgBC,IAAAA,wCAAiC;QACvD,MAAML,WAAW,IAAIM,gBAAQ,CAACC,IAAAA,kBAAW;QACzC,MAAMC,SAASR,SAASS,QAAQ,CAAC;QACjC,MAAMC,kBAAkBV,SAASS,QAAQ,CAAC;QAC1C,MAAME,oBAAoBX,SAASS,QAAQ,CAAC;QAC5C,MAAMG,aAAaZ,SAASS,QAAQ,CAAC;QACrC,MAAMI,UAASb,qBAAAA,SAASS,QAAQ,CAAS,uCAA1BT,yCAAAA,mBAAqDc,WAAW;QAC/E,MAAMC,SAASf,SAASS,QAAQ,CAAC,WAAW;YACxC;YACA;YACA;YACA;YACA;SACH;QAED,IAAI,CAACM,OAAOC,QAAQ,CAAC7C,kBAAkB;YACnC4C,OAAOE,IAAI,CAAC9C;QAChB;QAEA,OAAO+C,IAAAA,kBAAS,EACZ;YACIC,YAAY;gBACRtC,OAAO,IAAI,CAACA,KAAK;gBACjBuC,QAAQlB;gBACRmB,mBAAmB;gBACnBC,YAAY;oBAAC;oBAAO;iBAAO;gBAC3BC,WAAW;oBAACtB;iBAAO;gBACnBc;YACJ;YACAS,YAAY;gBACRC,KAAK;oBACDC,QAAQ;wBACJC,QAAQ;wBACRC,KAAK;wBACLC,YAAY;oBAChB;oBACArB;oBACAsB,WAAW;wBACPpB;wBACAC;wBACAoB,OAAO;4BACHC,SAAS;wBACb;oBACJ;gBACJ;gBACApB;gBACAC,QAAQ;oBACJoB,MAAMpB,WAAW,cAAcA,WAAW,aAAa,aAAa;gBACxE;YACJ;QACJ,GACAT,eACA;YAAE8B,YAAYlE;YAAgBmE,OAAO;QAAM;IAEnD;IAjGA,YAAY,EAAEtD,KAAK,EAAQ,CAAE;QACzB,KAAK,CAAC;YAAEuD,MAAM;YAAuBC,QAAQ;YAAOxD;QAAM;IAC9D;AAgGJ"}
1
+ {"version":3,"sources":["../../../src/cli/tasks/swc-compile-package.ts"],"sourcesContent":["import { Options, swcDir } from '@swc/cli';\nimport debounce from 'debounce';\nimport deepmerge from 'deepmerge';\n\nimport { getFolders, getSwcCompilePackageConfiguration, getTsConfig, log } from '../../utils';\nimport { CommandArgs } from '../commands';\nimport { TSConfig } from '../utils';\nimport { Task } from './task';\n\ninterface Args extends CommandArgs {\n watch?: boolean;\n}\n\nfunction overwriteMerge(_destinationArray: unknown[], sourceArray: unknown[]) {\n return sourceArray;\n}\n\nconst typedefsPattern = '**/*.d.ts';\n\nexport class SwcCompilePackage extends Task {\n constructor({ watch }: Args) {\n super({ name: 'swc-compile-package', global: false, watch });\n }\n\n async execute(): Promise<void> {\n const config = this.getConfig();\n\n /* istanbul ignore next: debug only */\n log.debug('swc-compile-package:config', () => JSON.stringify(config, null, 2));\n\n /*\n * @swc/cli@0.5.0 doesn't implement \"ignore\" in watch mode so debounce\n * noisy output. See https://servicetitan.atlassian.net/browse/FAR-1592\n * and DEVELOPER_NOTES in file://./../../../package.json\n */\n const logSuccessResults = this.watch\n ? debounce(this.logCompletionResults.bind(this), 200)\n : this.logCompletionResults.bind(this);\n\n return new Promise((resolve, reject) => {\n swcDir({\n ...config,\n callbacks: {\n onSuccess: (e: { duration: number }) => {\n logSuccessResults(this.taskTimer.add(e.duration));\n if (!this.watch) {\n resolve();\n }\n },\n onFail: (e: { duration: number; reasons: Map<string, string> }) => {\n log.text([...e.reasons.values()][0]);\n this.logCompletionResults(this.taskTimer.add(e.duration));\n if (!this.watch) {\n reject(new Error('Compilation failed'));\n }\n },\n },\n });\n });\n }\n\n private getConfig(): Options {\n const { source, destination } = getFolders();\n const packageConfig = getSwcCompilePackageConfiguration();\n const tsConfig = new TSConfig(getTsConfig());\n const target = tsConfig.getValue('compilerOptions.target');\n const legacyDecorator = tsConfig.getValue('compilerOptions.experimentalDecorators');\n const decoratorMetadata = tsConfig.getValue('compilerOptions.emitDecoratorMetadata');\n const sourceMaps = tsConfig.getValue('compilerOptions.sourceMap');\n const module = tsConfig.getValue<string>('compilerOptions.module')?.toLowerCase();\n const ignore = tsConfig.getValue('exclude', [\n '**/*.d.ts',\n '**/__tests__/*',\n '**/*.test.*',\n '**/__mocks__/*',\n '**/*.stories.*',\n ]);\n\n if (!ignore.includes(typedefsPattern)) {\n ignore.push(typedefsPattern);\n }\n\n return deepmerge(\n {\n cliOptions: {\n watch: this.watch,\n outDir: destination,\n stripLeadingPaths: true,\n extensions: ['.ts', '.tsx'],\n filenames: [source],\n ignore,\n },\n swcOptions: {\n jsc: {\n parser: {\n syntax: 'typescript',\n tsx: true,\n decorators: true,\n },\n target,\n transform: {\n legacyDecorator,\n decoratorMetadata,\n react: {\n runtime: 'automatic',\n },\n },\n },\n sourceMaps,\n module: {\n type: module === 'commonjs' || module === 'nodenext' ? 'commonjs' : 'es6',\n },\n },\n },\n packageConfig,\n { arrayMerge: overwriteMerge, clone: false }\n );\n }\n}\n"],"names":["SwcCompilePackage","overwriteMerge","_destinationArray","sourceArray","typedefsPattern","Task","execute","config","getConfig","log","debug","JSON","stringify","logSuccessResults","watch","debounce","logCompletionResults","bind","Promise","resolve","reject","swcDir","callbacks","onSuccess","e","taskTimer","add","duration","onFail","text","reasons","values","Error","tsConfig","source","destination","getFolders","packageConfig","getSwcCompilePackageConfiguration","TSConfig","getTsConfig","target","getValue","legacyDecorator","decoratorMetadata","sourceMaps","module","toLowerCase","ignore","includes","push","deepmerge","cliOptions","outDir","stripLeadingPaths","extensions","filenames","swcOptions","jsc","parser","syntax","tsx","decorators","transform","react","runtime","type","arrayMerge","clone","name","global"],"mappings":";;;;+BAmBaA;;;eAAAA;;;qBAnBmB;iEACX;kEACC;uBAE0D;wBAEvD;sBACJ;;;;;;AAMrB,SAASC,eAAeC,iBAA4B,EAAEC,WAAsB;IACxE,OAAOA;AACX;AAEA,MAAMC,kBAAkB;AAEjB,MAAMJ,0BAA0BK,UAAI;IAKvC,MAAMC,UAAyB;QAC3B,MAAMC,SAAS,IAAI,CAACC,SAAS;QAE7B,oCAAoC,GACpCC,UAAG,CAACC,KAAK,CAAC,8BAA8B,IAAMC,KAAKC,SAAS,CAACL,QAAQ,MAAM;QAE3E;;;;SAIC,GACD,MAAMM,oBAAoB,IAAI,CAACC,KAAK,GAC9BC,IAAAA,iBAAQ,EAAC,IAAI,CAACC,oBAAoB,CAACC,IAAI,CAAC,IAAI,GAAG,OAC/C,IAAI,CAACD,oBAAoB,CAACC,IAAI,CAAC,IAAI;QAEzC,OAAO,IAAIC,QAAQ,CAACC,SAASC;YACzBC,IAAAA,WAAM,EAAC;gBACH,GAAGd,MAAM;gBACTe,WAAW;oBACPC,WAAW,CAACC;wBACRX,kBAAkB,IAAI,CAACY,SAAS,CAACC,GAAG,CAACF,EAAEG,QAAQ;wBAC/C,IAAI,CAAC,IAAI,CAACb,KAAK,EAAE;4BACbK;wBACJ;oBACJ;oBACAS,QAAQ,CAACJ;wBACLf,UAAG,CAACoB,IAAI,CAAC;+BAAIL,EAAEM,OAAO,CAACC,MAAM;yBAAG,CAAC,EAAE;wBACnC,IAAI,CAACf,oBAAoB,CAAC,IAAI,CAACS,SAAS,CAACC,GAAG,CAACF,EAAEG,QAAQ;wBACvD,IAAI,CAAC,IAAI,CAACb,KAAK,EAAE;4BACbM,OAAO,IAAIY,MAAM;wBACrB;oBACJ;gBACJ;YACJ;QACJ;IACJ;IAEQxB,YAAqB;YAQVyB;QAPf,MAAM,EAAEC,MAAM,EAAEC,WAAW,EAAE,GAAGC,IAAAA,iBAAU;QAC1C,MAAMC,gBAAgBC,IAAAA,wCAAiC;QACvD,MAAML,WAAW,IAAIM,gBAAQ,CAACC,IAAAA,kBAAW;QACzC,MAAMC,SAASR,SAASS,QAAQ,CAAC;QACjC,MAAMC,kBAAkBV,SAASS,QAAQ,CAAC;QAC1C,MAAME,oBAAoBX,SAASS,QAAQ,CAAC;QAC5C,MAAMG,aAAaZ,SAASS,QAAQ,CAAC;QACrC,MAAMI,UAASb,qBAAAA,SAASS,QAAQ,CAAS,uCAA1BT,yCAAAA,mBAAqDc,WAAW;QAC/E,MAAMC,SAASf,SAASS,QAAQ,CAAC,WAAW;YACxC;YACA;YACA;YACA;YACA;SACH;QAED,IAAI,CAACM,OAAOC,QAAQ,CAAC7C,kBAAkB;YACnC4C,OAAOE,IAAI,CAAC9C;QAChB;QAEA,OAAO+C,IAAAA,kBAAS,EACZ;YACIC,YAAY;gBACRtC,OAAO,IAAI,CAACA,KAAK;gBACjBuC,QAAQlB;gBACRmB,mBAAmB;gBACnBC,YAAY;oBAAC;oBAAO;iBAAO;gBAC3BC,WAAW;oBAACtB;iBAAO;gBACnBc;YACJ;YACAS,YAAY;gBACRC,KAAK;oBACDC,QAAQ;wBACJC,QAAQ;wBACRC,KAAK;wBACLC,YAAY;oBAChB;oBACArB;oBACAsB,WAAW;wBACPpB;wBACAC;wBACAoB,OAAO;4BACHC,SAAS;wBACb;oBACJ;gBACJ;gBACApB;gBACAC,QAAQ;oBACJoB,MAAMpB,WAAW,cAAcA,WAAW,aAAa,aAAa;gBACxE;YACJ;QACJ,GACAT,eACA;YAAE8B,YAAYlE;YAAgBmE,OAAO;QAAM;IAEnD;IAjGA,YAAY,EAAEtD,KAAK,EAAQ,CAAE;QACzB,KAAK,CAAC;YAAEuD,MAAM;YAAuBC,QAAQ;YAAOxD;QAAM;IAC9D;AAgGJ"}