@servicetitan/startup 31.3.2 → 31.5.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 (234) hide show
  1. package/dist/cli/commands/build.d.ts +0 -7
  2. package/dist/cli/commands/build.d.ts.map +1 -1
  3. package/dist/cli/commands/build.js +28 -17
  4. package/dist/cli/commands/build.js.map +1 -1
  5. package/dist/cli/commands/bundle-package.d.ts +1 -1
  6. package/dist/cli/commands/bundle-package.d.ts.map +1 -1
  7. package/dist/cli/commands/bundle-package.js +13 -21
  8. package/dist/cli/commands/bundle-package.js.map +1 -1
  9. package/dist/cli/commands/clean.js +1 -1
  10. package/dist/cli/commands/clean.js.map +1 -1
  11. package/dist/cli/commands/eslint.d.ts +0 -1
  12. package/dist/cli/commands/eslint.d.ts.map +1 -1
  13. package/dist/cli/commands/eslint.js +0 -3
  14. package/dist/cli/commands/eslint.js.map +1 -1
  15. package/dist/cli/commands/get-command.d.ts.map +1 -1
  16. package/dist/cli/commands/get-command.js +3 -1
  17. package/dist/cli/commands/get-command.js.map +1 -1
  18. package/dist/cli/commands/get-user-commands.js +3 -2
  19. package/dist/cli/commands/get-user-commands.js.map +1 -1
  20. package/dist/cli/commands/init.js.map +1 -1
  21. package/dist/cli/commands/install.js.map +1 -1
  22. package/dist/cli/commands/lint.js.map +1 -1
  23. package/dist/cli/commands/mfe-package-clean.d.ts +3 -4
  24. package/dist/cli/commands/mfe-package-clean.d.ts.map +1 -1
  25. package/dist/cli/commands/mfe-package-clean.js +0 -3
  26. package/dist/cli/commands/mfe-package-clean.js.map +1 -1
  27. package/dist/cli/commands/mfe-package-publish.d.ts +9 -4
  28. package/dist/cli/commands/mfe-package-publish.d.ts.map +1 -1
  29. package/dist/cli/commands/mfe-package-publish.js +70 -47
  30. package/dist/cli/commands/mfe-package-publish.js.map +1 -1
  31. package/dist/cli/commands/mfe-publish.d.ts +3 -3
  32. package/dist/cli/commands/mfe-publish.d.ts.map +1 -1
  33. package/dist/cli/commands/mfe-publish.js +7 -1
  34. package/dist/cli/commands/mfe-publish.js.map +1 -1
  35. package/dist/cli/commands/prepare-package.d.ts +0 -1
  36. package/dist/cli/commands/prepare-package.d.ts.map +1 -1
  37. package/dist/cli/commands/prepare-package.js +0 -3
  38. package/dist/cli/commands/prepare-package.js.map +1 -1
  39. package/dist/cli/commands/review/review.js.map +1 -1
  40. package/dist/cli/commands/review/rules/require-one-anvil-uikit-contrib-version.js.map +1 -1
  41. package/dist/cli/commands/review/rules/require-one-collection-version.js.map +1 -1
  42. package/dist/cli/commands/review/rules/require-one-uikit-version.js.map +1 -1
  43. package/dist/cli/commands/run-task.d.ts +0 -1
  44. package/dist/cli/commands/run-task.d.ts.map +1 -1
  45. package/dist/cli/commands/run-task.js +0 -3
  46. package/dist/cli/commands/run-task.js.map +1 -1
  47. package/dist/cli/commands/start.d.ts +0 -8
  48. package/dist/cli/commands/start.d.ts.map +1 -1
  49. package/dist/cli/commands/start.js +28 -16
  50. package/dist/cli/commands/start.js.map +1 -1
  51. package/dist/cli/commands/styles-check.d.ts +0 -1
  52. package/dist/cli/commands/styles-check.d.ts.map +1 -1
  53. package/dist/cli/commands/styles-check.js +40 -99
  54. package/dist/cli/commands/styles-check.js.map +1 -1
  55. package/dist/cli/commands/tests.js.map +1 -1
  56. package/dist/cli/commands/types.d.ts +1 -1
  57. package/dist/cli/commands/types.d.ts.map +1 -1
  58. package/dist/cli/commands/upload-sourcemaps.d.ts +22 -0
  59. package/dist/cli/commands/upload-sourcemaps.d.ts.map +1 -0
  60. package/dist/cli/commands/upload-sourcemaps.js +179 -0
  61. package/dist/cli/commands/upload-sourcemaps.js.map +1 -0
  62. package/dist/cli/tasks/cli-task.js.map +1 -1
  63. package/dist/cli/tasks/swc-compile-package.js.map +1 -1
  64. package/dist/cli/tasks/task.js.map +1 -1
  65. package/dist/cli/tasks/tsc-compile-package.js.map +1 -1
  66. package/dist/cli/tasks/tsc-compile.js.map +1 -1
  67. package/dist/cli/utils/bundle.d.ts +4 -1
  68. package/dist/cli/utils/bundle.d.ts.map +1 -1
  69. package/dist/cli/utils/bundle.js +67 -74
  70. package/dist/cli/utils/bundle.js.map +1 -1
  71. package/dist/cli/utils/cli-os.js +2 -2
  72. package/dist/cli/utils/cli-os.js.map +1 -1
  73. package/dist/cli/utils/ts-config.js.map +1 -1
  74. package/dist/utils/find-packages.d.ts.map +1 -1
  75. package/dist/utils/find-packages.js +3 -4
  76. package/dist/utils/find-packages.js.map +1 -1
  77. package/dist/utils/find-up.d.ts +2 -0
  78. package/dist/utils/find-up.d.ts.map +1 -0
  79. package/dist/utils/find-up.js +28 -0
  80. package/dist/utils/find-up.js.map +1 -0
  81. package/dist/utils/get-configuration.d.ts +3 -1
  82. package/dist/utils/get-configuration.d.ts.map +1 -1
  83. package/dist/utils/get-configuration.js +1 -0
  84. package/dist/utils/get-configuration.js.map +1 -1
  85. package/dist/utils/index.d.ts +1 -0
  86. package/dist/utils/index.d.ts.map +1 -1
  87. package/dist/utils/index.js +1 -0
  88. package/dist/utils/index.js.map +1 -1
  89. package/dist/utils/log.js.map +1 -1
  90. package/dist/webpack/configs/cache-config.d.ts +6 -0
  91. package/dist/webpack/configs/cache-config.d.ts.map +1 -0
  92. package/dist/webpack/configs/cache-config.js +52 -0
  93. package/dist/webpack/configs/cache-config.js.map +1 -0
  94. package/dist/webpack/configs/dev-server-config.js +1 -1
  95. package/dist/webpack/configs/dev-server-config.js.map +1 -1
  96. package/dist/webpack/configs/entry.config.d.ts.map +1 -1
  97. package/dist/webpack/configs/entry.config.js +15 -6
  98. package/dist/webpack/configs/entry.config.js.map +1 -1
  99. package/dist/webpack/configs/externals-config.d.ts.map +1 -1
  100. package/dist/webpack/configs/externals-config.js +6 -2
  101. package/dist/webpack/configs/externals-config.js.map +1 -1
  102. package/dist/webpack/configs/index.d.ts +1 -0
  103. package/dist/webpack/configs/index.d.ts.map +1 -1
  104. package/dist/webpack/configs/index.js +1 -0
  105. package/dist/webpack/configs/index.js.map +1 -1
  106. package/dist/webpack/configs/optimization-config.d.ts.map +1 -1
  107. package/dist/webpack/configs/optimization-config.js +7 -11
  108. package/dist/webpack/configs/optimization-config.js.map +1 -1
  109. package/dist/webpack/configs/output-config.d.ts.map +1 -1
  110. package/dist/webpack/configs/output-config.js +25 -4
  111. package/dist/webpack/configs/output-config.js.map +1 -1
  112. package/dist/webpack/configs/plugins/assets-manifest-plugin.d.ts +6 -0
  113. package/dist/webpack/configs/plugins/assets-manifest-plugin.d.ts.map +1 -1
  114. package/dist/webpack/configs/plugins/assets-manifest-plugin.js +50 -8
  115. package/dist/webpack/configs/plugins/assets-manifest-plugin.js.map +1 -1
  116. package/dist/webpack/configs/plugins/bundle-analyser-plugin.d.ts.map +1 -1
  117. package/dist/webpack/configs/plugins/bundle-analyser-plugin.js +3 -7
  118. package/dist/webpack/configs/plugins/bundle-analyser-plugin.js.map +1 -1
  119. package/dist/webpack/configs/plugins/define-exposed-dependencies-plugin.d.ts.map +1 -1
  120. package/dist/webpack/configs/plugins/define-exposed-dependencies-plugin.js +3 -2
  121. package/dist/webpack/configs/plugins/define-exposed-dependencies-plugin.js.map +1 -1
  122. package/dist/webpack/configs/plugins/define-exposed-instance-dependencies-plugin.js +2 -2
  123. package/dist/webpack/configs/plugins/define-exposed-instance-dependencies-plugin.js.map +1 -1
  124. package/dist/webpack/configs/plugins/html-plugin.d.ts +1 -1
  125. package/dist/webpack/configs/plugins/html-plugin.d.ts.map +1 -1
  126. package/dist/webpack/configs/plugins/html-plugin.js +2 -3
  127. package/dist/webpack/configs/plugins/html-plugin.js.map +1 -1
  128. package/dist/webpack/configs/plugins/html-tags-plugin.d.ts +4 -0
  129. package/dist/webpack/configs/plugins/html-tags-plugin.d.ts.map +1 -0
  130. package/dist/webpack/configs/plugins/html-tags-plugin.js +49 -0
  131. package/dist/webpack/configs/plugins/html-tags-plugin.js.map +1 -0
  132. package/dist/webpack/configs/plugins/index.d.ts +2 -0
  133. package/dist/webpack/configs/plugins/index.d.ts.map +1 -1
  134. package/dist/webpack/configs/plugins/index.js +2 -0
  135. package/dist/webpack/configs/plugins/index.js.map +1 -1
  136. package/dist/webpack/configs/plugins/remove-empty-scripts-plugin.d.ts +4 -0
  137. package/dist/webpack/configs/plugins/remove-empty-scripts-plugin.d.ts.map +1 -0
  138. package/dist/webpack/configs/plugins/remove-empty-scripts-plugin.js +25 -0
  139. package/dist/webpack/configs/plugins/remove-empty-scripts-plugin.js.map +1 -0
  140. package/dist/webpack/configs/plugins/virtual-modules-plugin.d.ts +1 -0
  141. package/dist/webpack/configs/plugins/virtual-modules-plugin.d.ts.map +1 -1
  142. package/dist/webpack/configs/plugins/virtual-modules-plugin.js +23 -14
  143. package/dist/webpack/configs/plugins/virtual-modules-plugin.js.map +1 -1
  144. package/dist/webpack/configs/plugins-config.d.ts.map +1 -1
  145. package/dist/webpack/configs/plugins-config.js +2 -0
  146. package/dist/webpack/configs/plugins-config.js.map +1 -1
  147. package/dist/webpack/configs/rules/css-rules.d.ts.map +1 -1
  148. package/dist/webpack/configs/rules/css-rules.js +13 -18
  149. package/dist/webpack/configs/rules/css-rules.js.map +1 -1
  150. package/dist/webpack/configs/utils/get-bundle-type.d.ts +3 -0
  151. package/dist/webpack/configs/utils/get-bundle-type.d.ts.map +1 -0
  152. package/dist/webpack/configs/utils/get-bundle-type.js +24 -0
  153. package/dist/webpack/configs/utils/get-bundle-type.js.map +1 -0
  154. package/dist/webpack/configs/utils/index.d.ts +1 -0
  155. package/dist/webpack/configs/utils/index.d.ts.map +1 -1
  156. package/dist/webpack/configs/utils/index.js +1 -0
  157. package/dist/webpack/configs/utils/index.js.map +1 -1
  158. package/dist/webpack/create-webpack-config.d.ts.map +1 -1
  159. package/dist/webpack/create-webpack-config.js +37 -48
  160. package/dist/webpack/create-webpack-config.js.map +1 -1
  161. package/dist/webpack/types.d.ts +4 -0
  162. package/dist/webpack/types.d.ts.map +1 -1
  163. package/dist/webpack/utils/index.d.ts +1 -0
  164. package/dist/webpack/utils/index.d.ts.map +1 -1
  165. package/dist/webpack/utils/index.js +1 -0
  166. package/dist/webpack/utils/index.js.map +1 -1
  167. package/dist/webpack/utils/stringify-config.d.ts +2 -0
  168. package/dist/webpack/utils/stringify-config.d.ts.map +1 -0
  169. package/dist/webpack/utils/stringify-config.js +35 -0
  170. package/dist/webpack/utils/stringify-config.js.map +1 -0
  171. package/package.json +17 -15
  172. package/src/cli/commands/__tests__/build.test.ts +19 -2
  173. package/src/cli/commands/__tests__/bundle-package.test.ts +29 -8
  174. package/src/cli/commands/__tests__/clean.test.ts +2 -0
  175. package/src/cli/commands/__tests__/get-user-commands.test.ts +1 -1
  176. package/src/cli/commands/__tests__/mfe-package-publish.test.ts +91 -15
  177. package/src/cli/commands/__tests__/mfe-publish.test.ts +2 -0
  178. package/src/cli/commands/__tests__/start.test.ts +15 -1
  179. package/src/cli/commands/__tests__/styles-check.test.ts +27 -80
  180. package/src/cli/commands/__tests__/upload-sourcemaps.test.ts +127 -0
  181. package/src/cli/commands/build.ts +33 -17
  182. package/src/cli/commands/bundle-package.ts +10 -19
  183. package/src/cli/commands/clean.ts +1 -1
  184. package/src/cli/commands/eslint.ts +0 -4
  185. package/src/cli/commands/get-command.ts +2 -0
  186. package/src/cli/commands/get-user-commands.ts +1 -1
  187. package/src/cli/commands/mfe-package-clean.ts +2 -6
  188. package/src/cli/commands/mfe-package-publish.ts +104 -70
  189. package/src/cli/commands/mfe-publish.ts +8 -5
  190. package/src/cli/commands/prepare-package.ts +0 -4
  191. package/src/cli/commands/run-task.ts +0 -4
  192. package/src/cli/commands/start.ts +22 -5
  193. package/src/cli/commands/styles-check.ts +28 -131
  194. package/src/cli/commands/types.ts +1 -1
  195. package/src/cli/commands/upload-sourcemaps.ts +108 -0
  196. package/src/cli/utils/__tests__/bundle.test.ts +119 -9
  197. package/src/cli/utils/__tests__/cli-os.test.ts +2 -2
  198. package/src/cli/utils/__tests__/compile.test.ts +2 -0
  199. package/src/cli/utils/__tests__/type-check.test.ts +2 -0
  200. package/src/cli/utils/bundle.ts +76 -54
  201. package/src/cli/utils/cli-os.ts +2 -2
  202. package/src/utils/__tests__/get-configuration.test.ts +1 -1
  203. package/src/utils/find-packages.ts +3 -5
  204. package/src/utils/find-up.ts +12 -0
  205. package/src/utils/get-configuration.ts +2 -0
  206. package/src/utils/index.ts +1 -0
  207. package/src/webpack/__mocks__/style-rules.ts +1 -1
  208. package/src/webpack/__tests__/create-webpack-config-shared-dependencies.test.ts +274 -45
  209. package/src/webpack/__tests__/create-webpack-config-web-component.test.ts +25 -1
  210. package/src/webpack/__tests__/create-webpack-config.test.ts +9 -57
  211. package/src/webpack/configs/cache-config.ts +37 -0
  212. package/src/webpack/configs/dev-server-config.ts +1 -1
  213. package/src/webpack/configs/entry.config.ts +18 -8
  214. package/src/webpack/configs/externals-config.ts +7 -2
  215. package/src/webpack/configs/index.ts +1 -0
  216. package/src/webpack/configs/optimization-config.ts +7 -11
  217. package/src/webpack/configs/output-config.ts +23 -7
  218. package/src/webpack/configs/plugins/assets-manifest-plugin.ts +46 -10
  219. package/src/webpack/configs/plugins/bundle-analyser-plugin.ts +1 -6
  220. package/src/webpack/configs/plugins/define-exposed-dependencies-plugin.ts +3 -2
  221. package/src/webpack/configs/plugins/define-exposed-instance-dependencies-plugin.ts +2 -2
  222. package/src/webpack/configs/plugins/html-plugin.ts +2 -3
  223. package/src/webpack/configs/plugins/html-tags-plugin.ts +28 -0
  224. package/src/webpack/configs/plugins/index.ts +2 -0
  225. package/src/webpack/configs/plugins/remove-empty-scripts-plugin.ts +11 -0
  226. package/src/webpack/configs/plugins/virtual-modules-plugin.ts +27 -16
  227. package/src/webpack/configs/plugins-config.ts +4 -0
  228. package/src/webpack/configs/rules/css-rules.ts +19 -20
  229. package/src/webpack/configs/utils/get-bundle-type.ts +22 -0
  230. package/src/webpack/configs/utils/index.ts +1 -0
  231. package/src/webpack/create-webpack-config.ts +46 -52
  232. package/src/webpack/types.ts +4 -0
  233. package/src/webpack/utils/index.ts +1 -0
  234. package/src/webpack/utils/stringify-config.ts +19 -0
@@ -2,18 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
- function _export(target, all) {
6
- for(var name in all)Object.defineProperty(target, name, {
7
- enumerable: true,
8
- get: Object.getOwnPropertyDescriptor(all, name).get
9
- });
10
- }
11
- _export(exports, {
12
- get Start () {
5
+ Object.defineProperty(exports, "Start", {
6
+ enumerable: true,
7
+ get: function() {
13
8
  return Start;
14
- },
15
- get StartProcesses () {
16
- return StartProcesses;
17
9
  }
18
10
  });
19
11
  const _utils = require("../../utils");
@@ -46,9 +38,10 @@ var StartProcesses = /*#__PURE__*/ function(StartProcesses) {
46
38
  StartProcesses[StartProcesses["PreparePackage"] = 2] = "PreparePackage";
47
39
  StartProcesses[StartProcesses["PreparePackageWatch"] = 3] = "PreparePackageWatch";
48
40
  StartProcesses[StartProcesses["TypeCheck"] = 4] = "TypeCheck";
49
- StartProcesses[StartProcesses["BundlePackage"] = 5] = "BundlePackage";
41
+ StartProcesses[StartProcesses["BundleExposedDependencies"] = 5] = "BundleExposedDependencies";
42
+ StartProcesses[StartProcesses["BundlePackage"] = 6] = "BundlePackage";
50
43
  return StartProcesses;
51
- }({});
44
+ }(StartProcesses || {});
52
45
  class Start {
53
46
  description() {
54
47
  return 'run project in development mode';
@@ -73,6 +66,7 @@ class Start {
73
66
  return;
74
67
  }
75
68
  const scope = packages.map(({ name })=>name);
69
+ const webpackScope = packages.filter(({ type })=>type === _utils.PackageType.Webpack).map(({ name })=>name);
76
70
  const processTree = new _utils1.ProcessTree();
77
71
  processTree.add(0, ()=>{
78
72
  const process = (0, _utils1.compile)({
@@ -134,7 +128,26 @@ class Start {
134
128
  ]
135
129
  });
136
130
  processTree.add(5, ()=>{
137
- const webpackScope = packages.filter(({ type })=>type === _utils.PackageType.Webpack).map(({ name })=>name);
131
+ if (webpackScope.length === 0) {
132
+ return Promise.resolve();
133
+ }
134
+ return (0, _utils1.lernaExec)({
135
+ 'cmd': 'startup bundle-package',
136
+ 'scope': webpackScope,
137
+ 'parallel': true,
138
+ 'stream': true,
139
+ '--': [
140
+ '--exposed-dependencies',
141
+ '--use-watch-config'
142
+ ]
143
+ });
144
+ }, {
145
+ dependsOn: [
146
+ 0,
147
+ 2
148
+ ]
149
+ });
150
+ processTree.add(6, ()=>{
138
151
  if (webpackScope.length === 0) {
139
152
  return Promise.resolve();
140
153
  }
@@ -151,8 +164,7 @@ class Start {
151
164
  });
152
165
  }, {
153
166
  dependsOn: [
154
- 0,
155
- 2
167
+ 5
156
168
  ]
157
169
  });
158
170
  await processTree.run();
@@ -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\nexport enum StartProcesses {\n Compile,\n KendoUILicense,\n PreparePackage,\n PreparePackageWatch,\n TypeCheck,\n BundlePackage,\n}\n\nexport class Start implements Command {\n readonly greedy = true;\n\n constructor(private 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\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.BundlePackage,\n () => {\n const webpackScope = packages\n .filter(({ type }) => type === PackageType.Webpack)\n .map(({ name }) => name);\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.Compile, StartProcesses.PreparePackage] }\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","processTree","ProcessTree","add","process","compile","watch","pipeStdout","onComplete","Promise","resolve","counter","timeout","setTimeout","log","warning","unwatch","watchStdout","count","clearTimeout","lernaExec","cmd","stream","dependsOn","typeCheck","webpackScope","filter","config","undefined","item","run","constructor","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 } 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 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,6 +1,5 @@
1
1
  import { Command } from './index';
2
2
  export declare class StylesCheck implements Command {
3
- description(): undefined;
4
3
  execute(): Promise<void>;
5
4
  }
6
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":"AAaA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AA6GlC,qBAAa,WAAY,YAAW,OAAO;IACvC,WAAW;IAKL,OAAO;CAsBhB"}
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"}
@@ -9,124 +9,65 @@ Object.defineProperty(exports, "StylesCheck", {
9
9
  }
10
10
  });
11
11
  const _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
12
+ const _glob = require("glob");
12
13
  const _path = /*#__PURE__*/ _interop_require_default(require("path"));
13
- const _process = /*#__PURE__*/ _interop_require_default(require("process"));
14
14
  const _utils = require("../../utils");
15
15
  function _interop_require_default(obj) {
16
16
  return obj && obj.__esModule ? obj : {
17
17
  default: obj
18
18
  };
19
19
  }
20
- const styleCheckError = [
21
- '!!!!!!!!!!!!! STYLE CHECK ERROR !!!!!!!!!!!!!',
22
- 'Style check failed with following errors:'
23
- ];
24
- const designSystem = 'design-system.css';
25
- var PackageType = /*#__PURE__*/ function(PackageType) {
26
- PackageType["App"] = "app";
27
- PackageType["WebComponent"] = "web_component";
28
- return PackageType;
29
- }(PackageType || {});
30
- function readDir(startPath, filter) {
31
- let out = [];
32
- if (!_fs.default.existsSync(startPath)) {
33
- return out;
34
- }
35
- const files = _fs.default.readdirSync(startPath);
36
- for (const file of files){
37
- const filename = _path.default.join(startPath, file);
38
- const stat = _fs.default.lstatSync(filename);
39
- if (stat.isDirectory()) {
40
- out = [
41
- ...out,
42
- ...readDir(filename, filter)
43
- ];
44
- } else if (filter.some((f)=>filename.endsWith(f))) {
45
- out.push(filename);
46
- }
47
- }
48
- return out;
20
+ function _ts_decorate(decorators, target, key, desc) {
21
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
22
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
23
+ else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
24
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
49
25
  }
50
- const findStyleFiles = (basePath, sourceFolder)=>{
51
- const sourcePath = _path.default.join(basePath, sourceFolder);
52
- const files = readDir(sourcePath, [
53
- '.css',
54
- '.less'
55
- ]);
56
- return files.map((f)=>({
57
- path: f,
58
- relativePath: f.replace(sourcePath, '').substring(1)
59
- }));
60
- };
61
- const checkStyleFiles = (files, packageType)=>{
62
- const errors = [];
63
- const patterns = [
64
- "@import '~@servicetitan/tokens/core/tokens.css';",
65
- "@import '~@servicetitan/anvil-fonts/dist/css/anvil-fonts.css';",
66
- "@import '~@servicetitan/design-system/dist/system.min.css';"
67
- ];
68
- for (const file of files){
69
- if ([
70
- "app",
71
- "web_component"
72
- ].includes(packageType) && file.relativePath === designSystem) {
73
- continue;
74
- }
75
- const content = _fs.default.readFileSync(file.path);
76
- for (const pattern of patterns){
77
- if (content.includes(pattern)) {
78
- errors.push(`file ${file.relativePath} contains link to "${pattern}"`);
79
- }
80
- }
81
- }
82
- return errors.length ? errors : undefined;
83
- };
84
- const checkErrors = (errors)=>{
85
- if (!errors) {
86
- _utils.log.info('style check: OK');
87
- } else {
88
- _utils.log.error([
89
- ...styleCheckError,
90
- ...errors
91
- ].join('\n'));
92
- throw new Error('style check error, please check logs above');
93
- }
94
- };
95
- function checkStylesLib(_files) {
96
- /* ToDo: add checks for libraries */ }
97
- function checkStylesApp(files) {
98
- const { dependencies, sharedDependencies } = (0, _utils.getPackageData)();
99
- if ((0, _utils.loadSharedDependencies)(dependencies, sharedDependencies)['@servicetitan/design-system'] && !files.some((f)=>f.relativePath === designSystem)) {
100
- _utils.log.warning("application doesn't have design-system.css. Please check https://docs.st.dev/docs/frontend/micro-frontends#host-configuration");
101
- }
102
- checkErrors(checkStyleFiles(files, "app"));
103
- }
104
- function checkStylesWebComponent(files) {
105
- checkErrors(checkStyleFiles(files, "web_component"));
26
+ function _ts_metadata(k, v) {
27
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
106
28
  }
29
+ const patterns = [
30
+ "@import '~@servicetitan/tokens/core/tokens.css';",
31
+ "@import '~@servicetitan/anvil-fonts/dist/css/anvil-fonts.css';",
32
+ "@import '~@servicetitan/design-system/dist/system.min.css';"
33
+ ];
107
34
  class StylesCheck {
108
- description() {
109
- return undefined;
110
- }
111
- // eslint-disable-next-line @typescript-eslint/require-await
112
35
  async execute() {
113
- if ((0, _utils.isLegacy)()) {
36
+ if ((0, _utils.isLegacy)() || !(0, _utils.isBundle)()) {
114
37
  return;
115
38
  }
116
39
  if ((0, _utils.isStyleCheckDisabled)()) {
117
40
  _utils.log.info('style check is disabled');
118
41
  return;
119
42
  }
120
- const projectFolders = (0, _utils.getFolders)();
121
- const files = findStyleFiles(_process.default.cwd(), projectFolders.source);
122
- if (!(0, _utils.isBundle)()) {
123
- checkStylesLib(files);
124
- } else if ((0, _utils.isWebComponent)()) {
125
- checkStylesWebComponent(files);
126
- } else {
127
- checkStylesApp(files);
43
+ let ok = true;
44
+ const { source } = (0, _utils.getFolders)();
45
+ const files = await (0, _glob.glob)(`${source}/**/*.{css,less}`);
46
+ for (const file of files){
47
+ const relativePath = _path.default.relative(source, file);
48
+ if (relativePath === 'design-system.css') {
49
+ continue;
50
+ }
51
+ const content = _fs.default.readFileSync(file, {
52
+ encoding: 'utf-8'
53
+ });
54
+ patterns.forEach((pattern)=>{
55
+ if (content.includes(pattern)) {
56
+ _utils.log.error(`Error: file ${relativePath} contains "${pattern}"`);
57
+ ok = false;
58
+ }
59
+ });
60
+ }
61
+ if (!ok) {
62
+ throw new Error('style check failed, see errors above');
128
63
  }
129
64
  }
130
65
  }
66
+ _ts_decorate([
67
+ _utils.logErrors,
68
+ _ts_metadata("design:type", Function),
69
+ _ts_metadata("design:paramtypes", []),
70
+ _ts_metadata("design:returntype", Promise)
71
+ ], StylesCheck.prototype, "execute", null);
131
72
 
132
73
  //# sourceMappingURL=styles-check.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/cli/commands/styles-check.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\nimport process from 'process';\nimport {\n getFolders,\n getPackageData,\n isBundle,\n isLegacy,\n isStyleCheckDisabled,\n isWebComponent,\n loadSharedDependencies,\n log,\n} from '../../utils';\nimport { Command } from './index';\n\ninterface FileInfo {\n path: string;\n relativePath: string;\n}\n\nconst styleCheckError = [\n '!!!!!!!!!!!!! STYLE CHECK ERROR !!!!!!!!!!!!!',\n 'Style check failed with following errors:',\n];\nconst designSystem = 'design-system.css';\n\nenum PackageType {\n App = 'app',\n WebComponent = 'web_component',\n}\n\nfunction readDir(startPath: string, filter: string[]): string[] {\n let out: string[] = [];\n\n if (!fs.existsSync(startPath)) {\n return out;\n }\n\n const files = fs.readdirSync(startPath);\n for (const file of files) {\n const filename = path.join(startPath, file);\n const stat = fs.lstatSync(filename);\n\n if (stat.isDirectory()) {\n out = [...out, ...readDir(filename, filter)];\n } else if (filter.some(f => filename.endsWith(f))) {\n out.push(filename);\n }\n }\n\n return out;\n}\n\nconst findStyleFiles = (basePath: string, sourceFolder: string): FileInfo[] => {\n const sourcePath = path.join(basePath, sourceFolder);\n const files = readDir(sourcePath, ['.css', '.less']);\n\n return files.map(f => ({\n path: f,\n relativePath: f.replace(sourcePath, '').substring(1),\n }));\n};\n\nconst checkStyleFiles = (files: FileInfo[], packageType: PackageType): string[] | undefined => {\n const errors = [];\n const 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\n for (const file of files) {\n if (\n [PackageType.App, PackageType.WebComponent].includes(packageType) &&\n file.relativePath === designSystem\n ) {\n continue;\n }\n\n const content = fs.readFileSync(file.path);\n\n for (const pattern of patterns) {\n if (content.includes(pattern)) {\n errors.push(`file ${file.relativePath} contains link to \"${pattern}\"`);\n }\n }\n }\n\n return errors.length ? errors : undefined;\n};\n\nconst checkErrors = (errors: string[] | undefined) => {\n if (!errors) {\n log.info('style check: OK');\n } else {\n log.error([...styleCheckError, ...errors].join('\\n'));\n throw new Error('style check error, please check logs above');\n }\n};\n\nfunction checkStylesLib(_files: FileInfo[]) {\n /* ToDo: add checks for libraries */\n}\n\nfunction checkStylesApp(files: FileInfo[]) {\n const { dependencies, sharedDependencies } = getPackageData();\n if (\n loadSharedDependencies(dependencies, sharedDependencies)['@servicetitan/design-system'] &&\n !files.some(f => f.relativePath === designSystem)\n ) {\n log.warning(\n \"application doesn't have design-system.css. Please check https://docs.st.dev/docs/frontend/micro-frontends#host-configuration\"\n );\n }\n\n checkErrors(checkStyleFiles(files, PackageType.App));\n}\n\nfunction checkStylesWebComponent(files: FileInfo[]) {\n checkErrors(checkStyleFiles(files, PackageType.WebComponent));\n}\n\nexport class StylesCheck implements Command {\n description() {\n return undefined;\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n async execute() {\n if (isLegacy()) {\n return;\n }\n\n if (isStyleCheckDisabled()) {\n log.info('style check is disabled');\n\n return;\n }\n\n const projectFolders = getFolders();\n const files = findStyleFiles(process.cwd(), projectFolders.source);\n\n if (!isBundle()) {\n checkStylesLib(files);\n } else if (isWebComponent()) {\n checkStylesWebComponent(files);\n } else {\n checkStylesApp(files);\n }\n }\n}\n"],"names":["StylesCheck","styleCheckError","designSystem","PackageType","readDir","startPath","filter","out","fs","existsSync","files","readdirSync","file","filename","path","join","stat","lstatSync","isDirectory","some","f","endsWith","push","findStyleFiles","basePath","sourceFolder","sourcePath","map","relativePath","replace","substring","checkStyleFiles","packageType","errors","patterns","includes","content","readFileSync","pattern","length","undefined","checkErrors","log","info","error","Error","checkStylesLib","_files","checkStylesApp","dependencies","sharedDependencies","getPackageData","loadSharedDependencies","warning","checkStylesWebComponent","description","execute","isLegacy","isStyleCheckDisabled","projectFolders","getFolders","process","cwd","source","isBundle","isWebComponent"],"mappings":"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"}
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 +1 @@
1
- {"version":3,"sources":["../../../src/cli/commands/tests.ts"],"sourcesContent":["import { Config } from '@jest/types';\nimport { runCLI } from '@jest/core';\nimport { getJestConfigCLI, logErrors } from '../../utils';\nimport { Command } from '.';\n\n/**\n * Named as tests to exclude it from the Jest pattern\n */\nexport class Tests implements Command {\n readonly greedy = true;\n\n constructor(private args: Config.Argv) {}\n\n description() {\n return 'run tests';\n }\n\n @logErrors\n async execute() {\n const jestConfig = getJestConfigCLI(this.args);\n const {\n results: { success },\n } = await runCLI(jestConfig, [process.cwd()]);\n\n if (!success) {\n // eslint-disable-next-line require-atomic-updates\n process.exitCode = 1;\n }\n }\n}\n"],"names":["Tests","description","execute","jestConfig","getJestConfigCLI","args","results","success","runCLI","process","cwd","exitCode","constructor","greedy"],"mappings":";;;;+BAQaA;;;eAAAA;;;sBAPU;uBACqB;;;;;;;;;;;;;;;;;;;;;;;AAMrC,MAAMA;IAKTC,cAAc;QACV,OAAO;IACX;IAEA,MACMC,UAAU;QACZ,MAAMC,aAAaC,IAAAA,uBAAgB,EAAC,IAAI,CAACC,IAAI;QAC7C,MAAM,EACFC,SAAS,EAAEC,OAAO,EAAE,EACvB,GAAG,MAAMC,IAAAA,YAAM,EAACL,YAAY;YAACM,QAAQC,GAAG;SAAG;QAE5C,IAAI,CAACH,SAAS;YACV,kDAAkD;YAClDE,QAAQE,QAAQ,GAAG;QACvB;IACJ;IAjBAC,YAAY,AAAQP,IAAiB,CAAE;;QAFvC,uBAASQ,UAAT,KAAA;aAEoBR,OAAAA;aAFXQ,SAAS;IAEsB;AAkB5C"}
1
+ {"version":3,"sources":["../../../src/cli/commands/tests.ts"],"sourcesContent":["import { Config } from '@jest/types';\nimport { runCLI } from '@jest/core';\nimport { getJestConfigCLI, logErrors } from '../../utils';\nimport { Command } from '.';\n\n/**\n * Named as tests to exclude it from the Jest pattern\n */\nexport class Tests implements Command {\n readonly greedy = true;\n\n constructor(private args: Config.Argv) {}\n\n description() {\n return 'run tests';\n }\n\n @logErrors\n async execute() {\n const jestConfig = getJestConfigCLI(this.args);\n const {\n results: { success },\n } = await runCLI(jestConfig, [process.cwd()]);\n\n if (!success) {\n // eslint-disable-next-line require-atomic-updates\n process.exitCode = 1;\n }\n }\n}\n"],"names":["Tests","description","execute","jestConfig","getJestConfigCLI","args","results","success","runCLI","process","cwd","exitCode","greedy"],"mappings":";;;;+BAQaA;;;eAAAA;;;sBAPU;uBACqB;;;;;;;;;;;;;;;;;;;;;;;AAMrC,MAAMA;IAKTC,cAAc;QACV,OAAO;IACX;IAEA,MACMC,UAAU;QACZ,MAAMC,aAAaC,IAAAA,uBAAgB,EAAC,IAAI,CAACC,IAAI;QAC7C,MAAM,EACFC,SAAS,EAAEC,OAAO,EAAE,EACvB,GAAG,MAAMC,IAAAA,YAAM,EAACL,YAAY;YAACM,QAAQC,GAAG;SAAG;QAE5C,IAAI,CAACH,SAAS;YACV,kDAAkD;YAClDE,QAAQE,QAAQ,GAAG;QACvB;IACJ;IAjBA,YAAY,AAAQN,IAAiB,CAAE;;QAFvC,uBAASO,UAAT,KAAA;aAEoBP,OAAAA;aAFXO,SAAS;IAEsB;AAkB5C"}
@@ -1,7 +1,7 @@
1
1
  export interface Command {
2
2
  greedy?: boolean;
3
3
  execute(): Promise<void>;
4
- description(): string | undefined;
4
+ description?(): string;
5
5
  }
6
6
  export type Newable<T> = new (...args: any[]) => T;
7
7
  //# 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,IAAI,MAAM,GAAG,SAAS,CAAC;CACrC;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,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"}
@@ -0,0 +1,22 @@
1
+ import { Command } from './types';
2
+ interface Args {
3
+ dry?: boolean;
4
+ releaseVersion: string;
5
+ }
6
+ export declare class UploadSourcemaps implements Command {
7
+ #private;
8
+ private readonly args;
9
+ constructor(args: Args);
10
+ execute(): Promise<void>;
11
+ private checkArgs;
12
+ private checkLocation;
13
+ private getBundleDir;
14
+ private getMinifiedPrefixPath;
15
+ private getOptions;
16
+ private getOutDir;
17
+ private getPackageJson;
18
+ private getProjectPath;
19
+ private run;
20
+ }
21
+ export {};
22
+ //# sourceMappingURL=upload-sourcemaps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload-sourcemaps.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/upload-sourcemaps.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAGlC,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"}
@@ -0,0 +1,179 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "UploadSourcemaps", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return UploadSourcemaps;
9
+ }
10
+ });
11
+ const _path = /*#__PURE__*/ _interop_require_default(require("path"));
12
+ const _child_process = require("child_process");
13
+ const _utils = require("../../utils");
14
+ const _utils1 = require("../utils");
15
+ function _check_private_redeclaration(obj, privateCollection) {
16
+ if (privateCollection.has(obj)) {
17
+ throw new TypeError("Cannot initialize the same private elements twice on an object");
18
+ }
19
+ }
20
+ function _class_apply_descriptor_get(receiver, descriptor) {
21
+ if (descriptor.get) {
22
+ return descriptor.get.call(receiver);
23
+ }
24
+ return descriptor.value;
25
+ }
26
+ function _class_apply_descriptor_set(receiver, descriptor, value) {
27
+ if (descriptor.set) {
28
+ descriptor.set.call(receiver, value);
29
+ } else {
30
+ if (!descriptor.writable) {
31
+ throw new TypeError("attempted to set read only private field");
32
+ }
33
+ descriptor.value = value;
34
+ }
35
+ }
36
+ function _class_extract_field_descriptor(receiver, privateMap, action) {
37
+ if (!privateMap.has(receiver)) {
38
+ throw new TypeError("attempted to " + action + " private field on non-instance");
39
+ }
40
+ return privateMap.get(receiver);
41
+ }
42
+ function _class_private_field_get(receiver, privateMap) {
43
+ var descriptor = _class_extract_field_descriptor(receiver, privateMap, "get");
44
+ return _class_apply_descriptor_get(receiver, descriptor);
45
+ }
46
+ function _class_private_field_init(obj, privateMap, value) {
47
+ _check_private_redeclaration(obj, privateMap);
48
+ privateMap.set(obj, value);
49
+ }
50
+ function _class_private_field_set(receiver, privateMap, value) {
51
+ var descriptor = _class_extract_field_descriptor(receiver, privateMap, "set");
52
+ _class_apply_descriptor_set(receiver, descriptor, value);
53
+ return value;
54
+ }
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
+ function _interop_require_default(obj) {
69
+ return obj && obj.__esModule ? obj : {
70
+ default: obj
71
+ };
72
+ }
73
+ function _ts_decorate(decorators, target, key, desc) {
74
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
75
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
76
+ else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
77
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
78
+ }
79
+ function _ts_metadata(k, v) {
80
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
81
+ }
82
+ var _outDir = /*#__PURE__*/ new WeakMap(), _packageJson = /*#__PURE__*/ new WeakMap();
83
+ class UploadSourcemaps {
84
+ async execute() {
85
+ this.checkLocation();
86
+ if (!this.checkArgs()) {
87
+ return;
88
+ }
89
+ const bundleDir = this.getBundleDir();
90
+ const options = this.getOptions().join(' ');
91
+ this.run(`npx --yes @datadog/datadog-ci@3 sourcemaps upload ${bundleDir} ${options}`);
92
+ }
93
+ checkArgs() {
94
+ if (!process.env.DATADOG_API_KEY) {
95
+ const message = 'DATADOG_API_KEY environment variable is not set';
96
+ if (!process.env.CI) {
97
+ throw new Error(message);
98
+ }
99
+ _utils.log.warning(`${message}; skipping sourcemaps`);
100
+ return false;
101
+ }
102
+ if (!this.args.releaseVersion) {
103
+ throw new Error('--release-version is required');
104
+ }
105
+ return true;
106
+ }
107
+ checkLocation() {
108
+ if (!(0, _utils.isWebComponent)()) {
109
+ throw new Error(`this command must be run inside a web-component directory`);
110
+ }
111
+ }
112
+ getBundleDir() {
113
+ return _path.default.relative('.', _path.default.join(this.getOutDir(), 'bundle'));
114
+ }
115
+ getMinifiedPrefixPath() {
116
+ const { name } = this.getPackageJson();
117
+ const baseUrl = `https://unpkg.servicetitan.com/${name}@${this.args.releaseVersion}`;
118
+ return `${baseUrl}/${this.getBundleDir().replace(/\\/g, '/')}`;
119
+ }
120
+ getOptions() {
121
+ const { dry, releaseVersion } = this.args;
122
+ const service = this.getPackageJson().name.replace(/^[^/]+\//, '');
123
+ return [
124
+ ...[
125
+ dry && `--dry-run`
126
+ ],
127
+ `--service=${service}`,
128
+ `--release-version=${releaseVersion}`,
129
+ `--minified-path-prefix=${this.getMinifiedPrefixPath()}`,
130
+ `--project-path=${this.getProjectPath()}`
131
+ ].filter((item)=>!!item);
132
+ }
133
+ getOutDir() {
134
+ if (!_class_private_field_get(this, _outDir)) {
135
+ const outDir = new _utils1.TSConfig((0, _utils.getTsConfig)()).getValue('compilerOptions.outDir');
136
+ if (!outDir) {
137
+ throw new Error('compilerOptions.outDir is not configured');
138
+ }
139
+ _class_private_field_set(this, _outDir, outDir);
140
+ }
141
+ return _class_private_field_get(this, _outDir);
142
+ }
143
+ getPackageJson() {
144
+ if (!_class_private_field_get(this, _packageJson)) {
145
+ _class_private_field_set(this, _packageJson, (0, _utils.readJson)('package.json'));
146
+ }
147
+ return _class_private_field_get(this, _packageJson);
148
+ }
149
+ getProjectPath() {
150
+ const name = (0, _utils.readJson)(_path.default.join(this.getOutDir(), 'metadata.json')).name;
151
+ return `${name}/`;
152
+ }
153
+ run(command) {
154
+ _utils.log.info(`Running: ${command}`);
155
+ return (0, _child_process.execSync)(command, {
156
+ stdio: 'inherit'
157
+ });
158
+ }
159
+ constructor(args){
160
+ _define_property(this, "args", void 0);
161
+ _class_private_field_init(this, _outDir, {
162
+ writable: true,
163
+ value: void 0
164
+ });
165
+ _class_private_field_init(this, _packageJson, {
166
+ writable: true,
167
+ value: void 0
168
+ });
169
+ this.args = args;
170
+ }
171
+ }
172
+ _ts_decorate([
173
+ _utils.logErrors,
174
+ _ts_metadata("design:type", Function),
175
+ _ts_metadata("design:paramtypes", []),
176
+ _ts_metadata("design:returntype", Promise)
177
+ ], UploadSourcemaps.prototype, "execute", null);
178
+
179
+ //# sourceMappingURL=upload-sourcemaps.js.map
@@ -0,0 +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 { Command } from './types';\nimport { TSConfig } from '../utils';\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 (!process.env.CI) {\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","CI","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 +1 @@
1
- {"version":3,"sources":["../../../src/cli/tasks/cli-task.ts"],"sourcesContent":["import execa from 'execa';\nimport { Task, TaskParameters } from './task';\nimport { pipeStdout, watchStdout } from '../utils';\n\nexport interface Indicators {\n end: string;\n watchStart: string;\n watchEnd?: string;\n}\n\nexport interface CliTaskParameters extends TaskParameters {\n indicators: Indicators;\n}\n\nexport abstract class CliTask extends Task {\n private readonly indicators: Indicators;\n\n constructor({ indicators, ...rest }: CliTaskParameters) {\n super(rest);\n this.indicators = indicators;\n }\n\n protected async runChildProcess(command: string, args: string[]) {\n const childProcess = execa(\n command,\n args,\n this.watch\n ? {\n stdio: ['inherit', 'pipe', 'inherit'],\n }\n : {\n stdio: 'inherit',\n }\n );\n\n if (!this.watch) {\n try {\n await childProcess;\n } finally {\n this.logCompletionResults(this.taskTimer.end());\n }\n return;\n }\n\n pipeStdout(childProcess);\n watchStdout(childProcess, this.indicators.watchStart, () => {\n this.taskTimer.start();\n });\n watchStdout(childProcess, this.indicators.end, () => {\n this.logCompletionResults(this.taskTimer.end());\n });\n watchStdout(childProcess, this.indicators.watchEnd, () => {\n this.logCompletionResults(this.taskTimer.end());\n });\n\n await childProcess;\n }\n}\n"],"names":["CliTask","Task","runChildProcess","command","args","childProcess","execa","watch","stdio","logCompletionResults","taskTimer","end","pipeStdout","watchStdout","indicators","watchStart","start","watchEnd","constructor","rest"],"mappings":";;;;+BAcsBA;;;eAAAA;;;8DAdJ;sBACmB;uBACG;;;;;;;;;;;;;;;;;;;AAYjC,MAAeA,gBAAgBC,UAAI;IAQtC,MAAgBC,gBAAgBC,OAAe,EAAEC,IAAc,EAAE;QAC7D,MAAMC,eAAeC,IAAAA,cAAK,EACtBH,SACAC,MACA,IAAI,CAACG,KAAK,GACJ;YACIC,OAAO;gBAAC;gBAAW;gBAAQ;aAAU;QACzC,IACA;YACIA,OAAO;QACX;QAGV,IAAI,CAAC,IAAI,CAACD,KAAK,EAAE;YACb,IAAI;gBACA,MAAMF;YACV,SAAU;gBACN,IAAI,CAACI,oBAAoB,CAAC,IAAI,CAACC,SAAS,CAACC,GAAG;YAChD;YACA;QACJ;QAEAC,IAAAA,iBAAU,EAACP;QACXQ,IAAAA,kBAAW,EAACR,cAAc,IAAI,CAACS,UAAU,CAACC,UAAU,EAAE;YAClD,IAAI,CAACL,SAAS,CAACM,KAAK;QACxB;QACAH,IAAAA,kBAAW,EAACR,cAAc,IAAI,CAACS,UAAU,CAACH,GAAG,EAAE;YAC3C,IAAI,CAACF,oBAAoB,CAAC,IAAI,CAACC,SAAS,CAACC,GAAG;QAChD;QACAE,IAAAA,kBAAW,EAACR,cAAc,IAAI,CAACS,UAAU,CAACG,QAAQ,EAAE;YAChD,IAAI,CAACR,oBAAoB,CAAC,IAAI,CAACC,SAAS,CAACC,GAAG;QAChD;QAEA,MAAMN;IACV;IAvCAa,YAAY,EAAEJ,UAAU,EAAE,GAAGK,MAAyB,CAAE;QACpD,KAAK,CAACA,OAHV,uBAAiBL,cAAjB,KAAA;QAII,IAAI,CAACA,UAAU,GAAGA;IACtB;AAqCJ"}
1
+ {"version":3,"sources":["../../../src/cli/tasks/cli-task.ts"],"sourcesContent":["import execa from 'execa';\nimport { Task, TaskParameters } from './task';\nimport { pipeStdout, watchStdout } from '../utils';\n\nexport interface Indicators {\n end: string;\n watchStart: string;\n watchEnd?: string;\n}\n\nexport interface CliTaskParameters extends TaskParameters {\n indicators: Indicators;\n}\n\nexport abstract class CliTask extends Task {\n private readonly indicators: Indicators;\n\n constructor({ indicators, ...rest }: CliTaskParameters) {\n super(rest);\n this.indicators = indicators;\n }\n\n protected async runChildProcess(command: string, args: string[]) {\n const childProcess = execa(\n command,\n args,\n this.watch\n ? {\n stdio: ['inherit', 'pipe', 'inherit'],\n }\n : {\n stdio: 'inherit',\n }\n );\n\n if (!this.watch) {\n try {\n await childProcess;\n } finally {\n this.logCompletionResults(this.taskTimer.end());\n }\n return;\n }\n\n pipeStdout(childProcess);\n watchStdout(childProcess, this.indicators.watchStart, () => {\n this.taskTimer.start();\n });\n watchStdout(childProcess, this.indicators.end, () => {\n this.logCompletionResults(this.taskTimer.end());\n });\n watchStdout(childProcess, this.indicators.watchEnd, () => {\n this.logCompletionResults(this.taskTimer.end());\n });\n\n await childProcess;\n }\n}\n"],"names":["CliTask","Task","runChildProcess","command","args","childProcess","execa","watch","stdio","logCompletionResults","taskTimer","end","pipeStdout","watchStdout","indicators","watchStart","start","watchEnd","rest"],"mappings":";;;;+BAcsBA;;;eAAAA;;;8DAdJ;sBACmB;uBACG;;;;;;;;;;;;;;;;;;;AAYjC,MAAeA,gBAAgBC,UAAI;IAQtC,MAAgBC,gBAAgBC,OAAe,EAAEC,IAAc,EAAE;QAC7D,MAAMC,eAAeC,IAAAA,cAAK,EACtBH,SACAC,MACA,IAAI,CAACG,KAAK,GACJ;YACIC,OAAO;gBAAC;gBAAW;gBAAQ;aAAU;QACzC,IACA;YACIA,OAAO;QACX;QAGV,IAAI,CAAC,IAAI,CAACD,KAAK,EAAE;YACb,IAAI;gBACA,MAAMF;YACV,SAAU;gBACN,IAAI,CAACI,oBAAoB,CAAC,IAAI,CAACC,SAAS,CAACC,GAAG;YAChD;YACA;QACJ;QAEAC,IAAAA,iBAAU,EAACP;QACXQ,IAAAA,kBAAW,EAACR,cAAc,IAAI,CAACS,UAAU,CAACC,UAAU,EAAE;YAClD,IAAI,CAACL,SAAS,CAACM,KAAK;QACxB;QACAH,IAAAA,kBAAW,EAACR,cAAc,IAAI,CAACS,UAAU,CAACH,GAAG,EAAE;YAC3C,IAAI,CAACF,oBAAoB,CAAC,IAAI,CAACC,SAAS,CAACC,GAAG;QAChD;QACAE,IAAAA,kBAAW,EAACR,cAAc,IAAI,CAACS,UAAU,CAACG,QAAQ,EAAE;YAChD,IAAI,CAACR,oBAAoB,CAAC,IAAI,CAACC,SAAS,CAACC,GAAG;QAChD;QAEA,MAAMN;IACV;IAvCA,YAAY,EAAES,UAAU,EAAE,GAAGI,MAAyB,CAAE;QACpD,KAAK,CAACA,OAHV,uBAAiBJ,cAAjB,KAAA;QAII,IAAI,CAACA,UAAU,GAAGA;IACtB;AAqCJ"}