@hanseltime/template-repo-sync 2.2.1 → 2.4.0-alpha.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 (293) hide show
  1. package/CHANGELOG.md +43 -45
  2. package/dist/cjs/checkout-drivers/git-checkout.js +37 -0
  3. package/dist/cjs/checkout-drivers/git-checkout.spec.js +60 -0
  4. package/dist/cjs/checkout-drivers/index.js +21 -0
  5. package/dist/cjs/checkout-drivers/types.js +11 -0
  6. package/dist/cjs/clone-drivers/git-clone.js +25 -0
  7. package/dist/cjs/clone-drivers/index.js +21 -0
  8. package/dist/cjs/clone-drivers/types.js +8 -0
  9. package/dist/cjs/diff-drivers/git-diff.js +30 -0
  10. package/dist/cjs/diff-drivers/git-diff.spec.js +138 -0
  11. package/dist/cjs/diff-drivers/index.js +21 -0
  12. package/dist/cjs/diff-drivers/types.js +6 -0
  13. package/dist/cjs/formatting/index.js +21 -0
  14. package/dist/cjs/formatting/infer-json-indent.js +26 -0
  15. package/dist/cjs/formatting/infer-json-indent.spec.js +50 -0
  16. package/dist/cjs/formatting/sync-results-to-md.js +62 -0
  17. package/dist/cjs/formatting/sync-results-to-md.spec.js +45 -0
  18. package/dist/cjs/index.js +22 -0
  19. package/dist/cjs/load-plugin.js +44 -0
  20. package/dist/cjs/match.js +51 -0
  21. package/dist/cjs/match.spec.js +75 -0
  22. package/dist/cjs/merge-file.js +91 -0
  23. package/dist/cjs/merge-file.spec.js +508 -0
  24. package/dist/cjs/plugins/index.js +20 -0
  25. package/dist/cjs/plugins/json-merge.js +228 -0
  26. package/dist/cjs/plugins/json-merge.spec.js +514 -0
  27. package/dist/cjs/ref-drivers/git-current-ref.js +18 -0
  28. package/dist/cjs/ref-drivers/git-current-ref.spec.js +15 -0
  29. package/dist/cjs/ref-drivers/index.js +20 -0
  30. package/dist/cjs/ref-drivers/types.js +11 -0
  31. package/dist/cjs/template-sync.js +236 -0
  32. package/dist/cjs/template-sync.spec.js +521 -0
  33. package/dist/cjs/test-utils/index.js +26 -0
  34. package/dist/cjs/types.js +12 -0
  35. package/dist/esm/checkout-drivers/git-checkout.mjs +27 -0
  36. package/dist/esm/checkout-drivers/git-checkout.spec.mjs +56 -0
  37. package/dist/esm/checkout-drivers/index.mjs +4 -0
  38. package/dist/esm/checkout-drivers/types.mjs +8 -0
  39. package/dist/esm/clone-drivers/git-clone.mjs +15 -0
  40. package/dist/esm/clone-drivers/index.mjs +4 -0
  41. package/dist/esm/clone-drivers/types.mjs +8 -0
  42. package/dist/esm/diff-drivers/git-diff.mjs +26 -0
  43. package/dist/esm/diff-drivers/git-diff.spec.mjs +93 -0
  44. package/dist/esm/diff-drivers/index.mjs +4 -0
  45. package/dist/esm/diff-drivers/types.mjs +6 -0
  46. package/dist/esm/formatting/index.mjs +4 -0
  47. package/dist/esm/formatting/infer-json-indent.mjs +16 -0
  48. package/dist/esm/formatting/infer-json-indent.spec.mjs +46 -0
  49. package/dist/esm/formatting/sync-results-to-md.mjs +52 -0
  50. package/dist/esm/formatting/sync-results-to-md.spec.mjs +41 -0
  51. package/dist/esm/index.mjs +5 -0
  52. package/dist/esm/load-plugin.mjs +40 -0
  53. package/dist/esm/match.mjs +40 -0
  54. package/dist/esm/match.spec.mjs +71 -0
  55. package/dist/esm/merge-file.mjs +88 -0
  56. package/dist/esm/merge-file.spec.mjs +504 -0
  57. package/dist/esm/plugins/index.mjs +10 -0
  58. package/dist/esm/plugins/json-merge.mjs +164 -0
  59. package/dist/esm/plugins/json-merge.spec.mjs +469 -0
  60. package/dist/esm/ref-drivers/git-current-ref.mjs +8 -0
  61. package/dist/esm/ref-drivers/git-current-ref.spec.mjs +11 -0
  62. package/dist/esm/ref-drivers/index.mjs +3 -0
  63. package/dist/esm/ref-drivers/types.mjs +8 -0
  64. package/dist/esm/template-sync.mjs +174 -0
  65. package/dist/esm/template-sync.spec.mjs +517 -0
  66. package/dist/esm/test-utils/index.mjs +10 -0
  67. package/dist/esm/types.mjs +9 -0
  68. package/{lib/cjs → dist/types}/checkout-drivers/git-checkout.d.ts +1 -0
  69. package/dist/types/checkout-drivers/git-checkout.d.ts.map +1 -0
  70. package/dist/types/checkout-drivers/git-checkout.spec.d.ts +2 -0
  71. package/dist/types/checkout-drivers/git-checkout.spec.d.ts.map +1 -0
  72. package/{lib/cjs → dist/types}/checkout-drivers/index.d.ts +1 -0
  73. package/dist/types/checkout-drivers/index.d.ts.map +1 -0
  74. package/{lib/cjs → dist/types}/checkout-drivers/types.d.ts +1 -0
  75. package/dist/types/checkout-drivers/types.d.ts.map +1 -0
  76. package/{lib/cjs → dist/types}/clone-drivers/git-clone.d.ts +2 -1
  77. package/dist/types/clone-drivers/git-clone.d.ts.map +1 -0
  78. package/{lib/cjs → dist/types}/clone-drivers/index.d.ts +2 -1
  79. package/dist/types/clone-drivers/index.d.ts.map +1 -0
  80. package/{lib/cjs → dist/types}/clone-drivers/types.d.ts +1 -0
  81. package/dist/types/clone-drivers/types.d.ts.map +1 -0
  82. package/{lib/cjs → dist/types}/diff-drivers/git-diff.d.ts +1 -0
  83. package/dist/types/diff-drivers/git-diff.d.ts.map +1 -0
  84. package/dist/types/diff-drivers/git-diff.spec.d.ts +2 -0
  85. package/dist/types/diff-drivers/git-diff.spec.d.ts.map +1 -0
  86. package/{lib/cjs → dist/types}/diff-drivers/index.d.ts +2 -1
  87. package/dist/types/diff-drivers/index.d.ts.map +1 -0
  88. package/{lib/cjs → dist/types}/diff-drivers/types.d.ts +1 -0
  89. package/dist/types/diff-drivers/types.d.ts.map +1 -0
  90. package/{lib/cjs → dist/types}/formatting/index.d.ts +2 -1
  91. package/dist/types/formatting/index.d.ts.map +1 -0
  92. package/{lib/cjs → dist/types}/formatting/infer-json-indent.d.ts +1 -0
  93. package/dist/types/formatting/infer-json-indent.d.ts.map +1 -0
  94. package/dist/types/formatting/infer-json-indent.spec.d.ts +2 -0
  95. package/dist/types/formatting/infer-json-indent.spec.d.ts.map +1 -0
  96. package/dist/types/formatting/sync-results-to-md.d.ts +3 -0
  97. package/dist/types/formatting/sync-results-to-md.d.ts.map +1 -0
  98. package/dist/types/formatting/sync-results-to-md.spec.d.ts +2 -0
  99. package/dist/types/formatting/sync-results-to-md.spec.d.ts.map +1 -0
  100. package/{lib/cjs → dist/types}/index.d.ts +3 -2
  101. package/dist/types/index.d.ts.map +1 -0
  102. package/{lib/cjs → dist/types}/load-plugin.d.ts +2 -1
  103. package/dist/types/load-plugin.d.ts.map +1 -0
  104. package/{lib/cjs → dist/types}/match.d.ts +1 -0
  105. package/dist/types/match.d.ts.map +1 -0
  106. package/dist/types/match.spec.d.ts +2 -0
  107. package/dist/types/match.spec.d.ts.map +1 -0
  108. package/{lib/cjs → dist/types}/merge-file.d.ts +3 -2
  109. package/dist/types/merge-file.d.ts.map +1 -0
  110. package/dist/types/merge-file.spec.d.ts +2 -0
  111. package/dist/types/merge-file.spec.d.ts.map +1 -0
  112. package/{lib/cjs → dist/types}/plugins/index.d.ts +2 -1
  113. package/dist/types/plugins/index.d.ts.map +1 -0
  114. package/{lib/cjs → dist/types}/plugins/json-merge.d.ts +2 -1
  115. package/dist/types/plugins/json-merge.d.ts.map +1 -0
  116. package/dist/types/plugins/json-merge.spec.d.ts +2 -0
  117. package/dist/types/plugins/json-merge.spec.d.ts.map +1 -0
  118. package/{lib/cjs → dist/types}/ref-drivers/git-current-ref.d.ts +1 -0
  119. package/dist/types/ref-drivers/git-current-ref.d.ts.map +1 -0
  120. package/dist/types/ref-drivers/git-current-ref.spec.d.ts +2 -0
  121. package/dist/types/ref-drivers/git-current-ref.spec.d.ts.map +1 -0
  122. package/{lib/cjs → dist/types}/ref-drivers/index.d.ts +1 -0
  123. package/dist/types/ref-drivers/index.d.ts.map +1 -0
  124. package/{lib/cjs → dist/types}/ref-drivers/types.d.ts +1 -0
  125. package/dist/types/ref-drivers/types.d.ts.map +1 -0
  126. package/{lib/cjs → dist/types}/template-sync.d.ts +6 -5
  127. package/dist/types/template-sync.d.ts.map +1 -0
  128. package/dist/types/template-sync.spec.d.ts +2 -0
  129. package/dist/types/template-sync.spec.d.ts.map +1 -0
  130. package/{lib/cjs → dist/types}/test-utils/index.d.ts +1 -0
  131. package/dist/types/test-utils/index.d.ts.map +1 -0
  132. package/{lib/cjs → dist/types}/types.d.ts +1 -0
  133. package/dist/types/types.d.ts.map +1 -0
  134. package/package.json +26 -23
  135. package/.eslintrc.js +0 -10
  136. package/.github/CODEOWNERS +0 -6
  137. package/.github/workflows/pr-checks.yaml +0 -12
  138. package/.github/workflows/release.yaml +0 -47
  139. package/.github/workflows/test-flow.yaml +0 -63
  140. package/.husky/commit-msg +0 -4
  141. package/.prettierignore +0 -1
  142. package/.prettierrc +0 -1
  143. package/action.yml +0 -13
  144. package/commitlint.config.js +0 -3
  145. package/docs/merge-plugins/CURRENT_PLUGINS.md +0 -168
  146. package/docs/merge-plugins/PLUGIN_DEVELOPMENT.md +0 -122
  147. package/docs/merge-plugins/README.md +0 -75
  148. package/jest.config.js +0 -19
  149. package/lib/cjs/checkout-drivers/git-checkout.js +0 -29
  150. package/lib/cjs/checkout-drivers/index.js +0 -18
  151. package/lib/cjs/checkout-drivers/types.js +0 -2
  152. package/lib/cjs/clone-drivers/git-clone.js +0 -17
  153. package/lib/cjs/clone-drivers/index.js +0 -18
  154. package/lib/cjs/clone-drivers/types.js +0 -2
  155. package/lib/cjs/diff-drivers/git-diff.js +0 -41
  156. package/lib/cjs/diff-drivers/index.js +0 -18
  157. package/lib/cjs/diff-drivers/types.js +0 -2
  158. package/lib/cjs/formatting/index.js +0 -18
  159. package/lib/cjs/formatting/infer-json-indent.js +0 -18
  160. package/lib/cjs/formatting/sync-results-to-md.d.ts +0 -2
  161. package/lib/cjs/formatting/sync-results-to-md.js +0 -57
  162. package/lib/cjs/index.js +0 -19
  163. package/lib/cjs/load-plugin.js +0 -69
  164. package/lib/cjs/match.js +0 -45
  165. package/lib/cjs/merge-file.js +0 -98
  166. package/lib/cjs/plugins/index.js +0 -11
  167. package/lib/cjs/plugins/json-merge.js +0 -208
  168. package/lib/cjs/ref-drivers/git-current-ref.js +0 -12
  169. package/lib/cjs/ref-drivers/index.js +0 -17
  170. package/lib/cjs/ref-drivers/types.js +0 -2
  171. package/lib/cjs/template-sync.js +0 -163
  172. package/lib/cjs/test-utils/index.js +0 -10
  173. package/lib/cjs/types.js +0 -2
  174. package/lib/esm/checkout-drivers/git-checkout.js +0 -29
  175. package/lib/esm/checkout-drivers/index.js +0 -18
  176. package/lib/esm/checkout-drivers/types.js +0 -2
  177. package/lib/esm/clone-drivers/git-clone.js +0 -17
  178. package/lib/esm/clone-drivers/index.js +0 -18
  179. package/lib/esm/clone-drivers/types.js +0 -2
  180. package/lib/esm/diff-drivers/git-diff.js +0 -41
  181. package/lib/esm/diff-drivers/index.js +0 -18
  182. package/lib/esm/diff-drivers/types.js +0 -2
  183. package/lib/esm/formatting/index.js +0 -18
  184. package/lib/esm/formatting/infer-json-indent.js +0 -18
  185. package/lib/esm/formatting/sync-results-to-md.js +0 -57
  186. package/lib/esm/index.js +0 -19
  187. package/lib/esm/load-plugin.js +0 -46
  188. package/lib/esm/match.js +0 -45
  189. package/lib/esm/merge-file.js +0 -98
  190. package/lib/esm/plugins/index.js +0 -11
  191. package/lib/esm/plugins/json-merge.js +0 -208
  192. package/lib/esm/ref-drivers/git-current-ref.js +0 -12
  193. package/lib/esm/ref-drivers/index.js +0 -17
  194. package/lib/esm/ref-drivers/types.js +0 -2
  195. package/lib/esm/template-sync.js +0 -163
  196. package/lib/esm/test-utils/index.js +0 -10
  197. package/lib/esm/types.js +0 -2
  198. package/release.config.js +0 -40
  199. package/src/checkout-drivers/git-checkout.spec.ts +0 -69
  200. package/src/checkout-drivers/git-checkout.ts +0 -38
  201. package/src/checkout-drivers/index.ts +0 -2
  202. package/src/checkout-drivers/types.ts +0 -14
  203. package/src/clone-drivers/git-clone.ts +0 -20
  204. package/src/clone-drivers/index.ts +0 -2
  205. package/src/clone-drivers/types.ts +0 -20
  206. package/src/diff-drivers/git-diff.spec.ts +0 -73
  207. package/src/diff-drivers/git-diff.ts +0 -39
  208. package/src/diff-drivers/index.ts +0 -2
  209. package/src/diff-drivers/types.ts +0 -14
  210. package/src/formatting/__snapshots__/sync-results-to-md.spec.ts.snap +0 -39
  211. package/src/formatting/index.ts +0 -2
  212. package/src/formatting/infer-json-indent.spec.ts +0 -49
  213. package/src/formatting/infer-json-indent.ts +0 -16
  214. package/src/formatting/sync-results-to-md.spec.ts +0 -31
  215. package/src/formatting/sync-results-to-md.ts +0 -63
  216. package/src/index.ts +0 -3
  217. package/src/load-plugin.ts +0 -51
  218. package/src/match.spec.ts +0 -68
  219. package/src/match.ts +0 -52
  220. package/src/merge-file.spec.ts +0 -506
  221. package/src/merge-file.ts +0 -154
  222. package/src/plugins/index.ts +0 -12
  223. package/src/plugins/json-merge.spec.ts +0 -436
  224. package/src/plugins/json-merge.ts +0 -215
  225. package/src/ref-drivers/git-current-ref.spec.ts +0 -12
  226. package/src/ref-drivers/git-current-ref.ts +0 -9
  227. package/src/ref-drivers/index.ts +0 -1
  228. package/src/ref-drivers/types.ts +0 -10
  229. package/src/template-sync.spec.ts +0 -509
  230. package/src/template-sync.ts +0 -256
  231. package/src/test-utils/index.ts +0 -13
  232. package/src/types.ts +0 -129
  233. package/templatesync.local.json +0 -15
  234. package/test-fixtures/downstream/README.md +0 -3
  235. package/test-fixtures/downstream/package.json +0 -18
  236. package/test-fixtures/downstream/plugins/custom-plugin.js +0 -11
  237. package/test-fixtures/downstream/src/index.js +0 -2
  238. package/test-fixtures/downstream/src/index.ts +0 -1
  239. package/test-fixtures/downstream/src/templated.js +0 -2
  240. package/test-fixtures/downstream/src/templated.ts +0 -1
  241. package/test-fixtures/downstream/templatesync.json +0 -16
  242. package/test-fixtures/downstream/templatesync.local.json +0 -10
  243. package/test-fixtures/dummy-plugin.js +0 -8
  244. package/test-fixtures/glob-test/folder1/something.js +0 -1
  245. package/test-fixtures/glob-test/folder1/something.ts +0 -0
  246. package/test-fixtures/glob-test/toplevel.js +0 -0
  247. package/test-fixtures/glob-test/toplevel.txt +0 -0
  248. package/test-fixtures/template/custom-bin/something.txt +0 -1
  249. package/test-fixtures/template/package.json +0 -17
  250. package/test-fixtures/template/src/index.js +0 -2
  251. package/test-fixtures/template/src/index.ts +0 -1
  252. package/test-fixtures/template/src/templated.js +0 -2
  253. package/test-fixtures/template/src/templated.ts +0 -1
  254. package/test-fixtures/template/templatesync.json +0 -16
  255. package/test-fixtures/testGitRepo/README.md +0 -17
  256. package/test-fixtures/testGitRepo/gitDir/COMMIT_EDITMSG +0 -14
  257. package/test-fixtures/testGitRepo/gitDir/HEAD +0 -1
  258. package/test-fixtures/testGitRepo/gitDir/config +0 -7
  259. package/test-fixtures/testGitRepo/gitDir/description +0 -1
  260. package/test-fixtures/testGitRepo/gitDir/hooks/applypatch-msg.sample +0 -15
  261. package/test-fixtures/testGitRepo/gitDir/hooks/commit-msg.sample +0 -24
  262. package/test-fixtures/testGitRepo/gitDir/hooks/fsmonitor-watchman.sample +0 -174
  263. package/test-fixtures/testGitRepo/gitDir/hooks/post-update.sample +0 -8
  264. package/test-fixtures/testGitRepo/gitDir/hooks/pre-applypatch.sample +0 -14
  265. package/test-fixtures/testGitRepo/gitDir/hooks/pre-commit.sample +0 -49
  266. package/test-fixtures/testGitRepo/gitDir/hooks/pre-merge-commit.sample +0 -13
  267. package/test-fixtures/testGitRepo/gitDir/hooks/pre-push.sample +0 -53
  268. package/test-fixtures/testGitRepo/gitDir/hooks/pre-rebase.sample +0 -169
  269. package/test-fixtures/testGitRepo/gitDir/hooks/pre-receive.sample +0 -24
  270. package/test-fixtures/testGitRepo/gitDir/hooks/prepare-commit-msg.sample +0 -42
  271. package/test-fixtures/testGitRepo/gitDir/hooks/push-to-checkout.sample +0 -78
  272. package/test-fixtures/testGitRepo/gitDir/hooks/sendemail-validate.sample +0 -77
  273. package/test-fixtures/testGitRepo/gitDir/hooks/update.sample +0 -128
  274. package/test-fixtures/testGitRepo/gitDir/index +0 -0
  275. package/test-fixtures/testGitRepo/gitDir/info/exclude +0 -6
  276. package/test-fixtures/testGitRepo/gitDir/logs/HEAD +0 -5
  277. package/test-fixtures/testGitRepo/gitDir/logs/refs/heads/master +0 -2
  278. package/test-fixtures/testGitRepo/gitDir/logs/refs/heads/test-branch +0 -2
  279. package/test-fixtures/testGitRepo/gitDir/objects/4b/825dc642cb6eb9a060e54bf8d69288fbee4904 +0 -0
  280. package/test-fixtures/testGitRepo/gitDir/objects/6e/187bee8d02f39d0a1be8331dd8fe6a00c9b613 +0 -0
  281. package/test-fixtures/testGitRepo/gitDir/objects/73/185f1f3f5a6345e087d9f46dc4af77cc59449f +0 -2
  282. package/test-fixtures/testGitRepo/gitDir/objects/90/e7ea1089f939840e9649fd617584c1ad117159 +0 -3
  283. package/test-fixtures/testGitRepo/gitDir/objects/ba/99a452b9097047e9bfa8d5a08b3e452fcb364a +0 -0
  284. package/test-fixtures/testGitRepo/gitDir/objects/c5/8d400177cd5180b8566f82a127fafc5bf394b7 +0 -0
  285. package/test-fixtures/testGitRepo/gitDir/objects/e2/e668265db019249a7e8296d85f79000e3d71cf +0 -0
  286. package/test-fixtures/testGitRepo/gitDir/objects/e4/243e430c1ab69f3e344249f5b1859e90abc883 +0 -1
  287. package/test-fixtures/testGitRepo/gitDir/objects/ec/6c1cb72312605282ac61858cf1eaf1ea9f1d02 +0 -0
  288. package/test-fixtures/testGitRepo/gitDir/objects/fc/89cecc4ac0b5b075bd7d0ce9e09b2f50598b82 +0 -0
  289. package/test-fixtures/testGitRepo/gitDir/refs/heads/master +0 -1
  290. package/test-fixtures/testGitRepo/gitDir/refs/heads/test-branch +0 -1
  291. package/tsconfig.cjs.json +0 -12
  292. package/tsconfig.esm.json +0 -10
  293. package/tsconfig.json +0 -22
@@ -0,0 +1,27 @@
1
+ import { execSync } from "child_process";
2
+ export async function gitCheckout(options) {
3
+ const { branch, remoteName, tmpDir } = options;
4
+ const remoteInfo = execSync(`git remote show ${remoteName}`, {
5
+ cwd: tmpDir,
6
+ env: process.env
7
+ }).toString();
8
+ const defaultMatch = /HEAD branch:\s*([a-zA-Z0-9_-]+)/.exec(remoteInfo);
9
+ if (!defaultMatch || !defaultMatch[1]) {
10
+ throw new Error(`Could not determine default branch of cloned repo.\nAttempted to find in remote info:\n${remoteInfo} `);
11
+ }
12
+ const defaultBranch = defaultMatch[1];
13
+ // Skip this if the default branch is already pulled
14
+ if (defaultBranch !== branch) {
15
+ execSync(`git fetch ${remoteName} ${branch}`, {
16
+ cwd: tmpDir,
17
+ env: process.env
18
+ });
19
+ execSync(`git checkout -b ${branch} --track ${remoteName}/${branch}`, {
20
+ cwd: tmpDir,
21
+ env: process.env
22
+ });
23
+ }
24
+ return true;
25
+ }
26
+
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jaGVja291dC1kcml2ZXJzL2dpdC1jaGVja291dC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleGVjU3luYyB9IGZyb20gXCJjaGlsZF9wcm9jZXNzXCI7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnaXRDaGVja291dChvcHRpb25zOiB7XG5cdC8qKiBUaGUgZGlyZWN0b3J5IHdoZXJlIHdlIGNsb25lZCB0byAqL1xuXHR0bXBEaXI6IHN0cmluZztcblx0LyoqIFRoZSBuYW1lIG9mIHRoZSByZW1vdGUgdGhhdCBnaXQgY2hlY2tzIG91dCBhZ2FpbnN0ICovXG5cdHJlbW90ZU5hbWU6IHN0cmluZztcblx0LyoqIFRoZSBicmFuY2ggdG8gY2hlY2tvdXQgYWdhaW5zdCAqL1xuXHRicmFuY2g6IHN0cmluZztcbn0pOiBQcm9taXNlPGJvb2xlYW4+IHtcblx0Y29uc3QgeyBicmFuY2gsIHJlbW90ZU5hbWUsIHRtcERpciB9ID0gb3B0aW9ucztcblxuXHRjb25zdCByZW1vdGVJbmZvID0gZXhlY1N5bmMoYGdpdCByZW1vdGUgc2hvdyAke3JlbW90ZU5hbWV9YCwge1xuXHRcdGN3ZDogdG1wRGlyLFxuXHRcdGVudjogcHJvY2Vzcy5lbnYsXG5cdH0pLnRvU3RyaW5nKCk7XG5cdGNvbnN0IGRlZmF1bHRNYXRjaCA9IC9IRUFEIGJyYW5jaDpcXHMqKFthLXpBLVowLTlfLV0rKS8uZXhlYyhyZW1vdGVJbmZvKTtcblx0aWYgKCFkZWZhdWx0TWF0Y2ggfHwgIWRlZmF1bHRNYXRjaFsxXSkge1xuXHRcdHRocm93IG5ldyBFcnJvcihcblx0XHRcdGBDb3VsZCBub3QgZGV0ZXJtaW5lIGRlZmF1bHQgYnJhbmNoIG9mIGNsb25lZCByZXBvLlxcbkF0dGVtcHRlZCB0byBmaW5kIGluIHJlbW90ZSBpbmZvOlxcbiR7cmVtb3RlSW5mb30gYCxcblx0XHQpO1xuXHR9XG5cblx0Y29uc3QgZGVmYXVsdEJyYW5jaCA9IGRlZmF1bHRNYXRjaFsxXTtcblx0Ly8gU2tpcCB0aGlzIGlmIHRoZSBkZWZhdWx0IGJyYW5jaCBpcyBhbHJlYWR5IHB1bGxlZFxuXHRpZiAoZGVmYXVsdEJyYW5jaCAhPT0gYnJhbmNoKSB7XG5cdFx0ZXhlY1N5bmMoYGdpdCBmZXRjaCAke3JlbW90ZU5hbWV9ICR7YnJhbmNofWAsIHtcblx0XHRcdGN3ZDogdG1wRGlyLFxuXHRcdFx0ZW52OiBwcm9jZXNzLmVudixcblx0XHR9KTtcblx0XHRleGVjU3luYyhgZ2l0IGNoZWNrb3V0IC1iICR7YnJhbmNofSAtLXRyYWNrICR7cmVtb3RlTmFtZX0vJHticmFuY2h9YCwge1xuXHRcdFx0Y3dkOiB0bXBEaXIsXG5cdFx0XHRlbnY6IHByb2Nlc3MuZW52LFxuXHRcdH0pO1xuXHR9XG5cblx0cmV0dXJuIHRydWU7XG59XG4iXSwibmFtZXMiOlsiZXhlY1N5bmMiLCJnaXRDaGVja291dCIsIm9wdGlvbnMiLCJicmFuY2giLCJyZW1vdGVOYW1lIiwidG1wRGlyIiwicmVtb3RlSW5mbyIsImN3ZCIsImVudiIsInByb2Nlc3MiLCJ0b1N0cmluZyIsImRlZmF1bHRNYXRjaCIsImV4ZWMiLCJFcnJvciIsImRlZmF1bHRCcmFuY2giXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLFFBQVEsUUFBUSxnQkFBZ0I7QUFFekMsT0FBTyxlQUFlQyxZQUFZQyxPQU9qQztJQUNBLE1BQU0sRUFBRUMsTUFBTSxFQUFFQyxVQUFVLEVBQUVDLE1BQU0sRUFBRSxHQUFHSDtJQUV2QyxNQUFNSSxhQUFhTixTQUFTLENBQUMsZ0JBQWdCLEVBQUVJLFlBQVksRUFBRTtRQUM1REcsS0FBS0Y7UUFDTEcsS0FBS0MsUUFBUUQsR0FBRztJQUNqQixHQUFHRSxRQUFRO0lBQ1gsTUFBTUMsZUFBZSxrQ0FBa0NDLElBQUksQ0FBQ047SUFDNUQsSUFBSSxDQUFDSyxnQkFBZ0IsQ0FBQ0EsWUFBWSxDQUFDLEVBQUUsRUFBRTtRQUN0QyxNQUFNLElBQUlFLE1BQ1QsQ0FBQyx1RkFBdUYsRUFBRVAsV0FBVyxDQUFDLENBQUM7SUFFekc7SUFFQSxNQUFNUSxnQkFBZ0JILFlBQVksQ0FBQyxFQUFFO0lBQ3JDLG9EQUFvRDtJQUNwRCxJQUFJRyxrQkFBa0JYLFFBQVE7UUFDN0JILFNBQVMsQ0FBQyxVQUFVLEVBQUVJLFdBQVcsQ0FBQyxFQUFFRCxRQUFRLEVBQUU7WUFDN0NJLEtBQUtGO1lBQ0xHLEtBQUtDLFFBQVFELEdBQUc7UUFDakI7UUFDQVIsU0FBUyxDQUFDLGdCQUFnQixFQUFFRyxPQUFPLFNBQVMsRUFBRUMsV0FBVyxDQUFDLEVBQUVELFFBQVEsRUFBRTtZQUNyRUksS0FBS0Y7WUFDTEcsS0FBS0MsUUFBUUQsR0FBRztRQUNqQjtJQUNEO0lBRUEsT0FBTztBQUNSIn0=
@@ -0,0 +1,56 @@
1
+ import { execSync } from "child_process";
2
+ import { readFileSync } from "fs";
3
+ import { copy, mkdtemp, moveSync } from "fs-extra";
4
+ import { join, resolve } from "path";
5
+ import { TEST_FIXTURES_DIR, tempDir } from "../test-utils/index.mjs";
6
+ import { gitCheckout } from "./git-checkout.mjs";
7
+ const gitRemoteDir = resolve(TEST_FIXTURES_DIR, "testGitRepo");
8
+ describe("gitCheckout", ()=>{
9
+ let tmpRemoteDir;
10
+ let tmpRepoDir;
11
+ beforeEach(async ()=>{
12
+ const baseTmpDir = await mkdtemp(tempDir());
13
+ // Make the remote dir
14
+ tmpRemoteDir = join(baseTmpDir, "remote");
15
+ await copy(gitRemoteDir, tmpRemoteDir);
16
+ // rehydrate the git repo
17
+ moveSync(join(tmpRemoteDir, "gitDir"), join(tmpRemoteDir, ".git"));
18
+ // Perform the clone we expect
19
+ execSync(`git clone ${tmpRemoteDir} testGitRepo`, {
20
+ cwd: baseTmpDir
21
+ });
22
+ tmpRepoDir = join(baseTmpDir, "testGitRepo");
23
+ });
24
+ it("checks out the appropriate branch", async ()=>{
25
+ await gitCheckout({
26
+ tmpDir: tmpRepoDir,
27
+ remoteName: "origin",
28
+ branch: "test-branch"
29
+ });
30
+ expect(readFileSync(join(tmpRepoDir, "README.md")).toString()).toContain("# This is the test-branch");
31
+ });
32
+ it("throws an error if the branch is not found", async ()=>{
33
+ await expect(async ()=>await gitCheckout({
34
+ tmpDir: tmpRepoDir,
35
+ remoteName: "origin",
36
+ branch: "test-branch-not-there"
37
+ })).rejects.toThrow();
38
+ });
39
+ it("throws an error if the origin is not found", async ()=>{
40
+ await expect(async ()=>await gitCheckout({
41
+ tmpDir: tmpRepoDir,
42
+ remoteName: "originNA",
43
+ branch: "test-branch"
44
+ })).rejects.toThrow();
45
+ });
46
+ it("does not throw if the branch was the default", async ()=>{
47
+ await gitCheckout({
48
+ tmpDir: tmpRepoDir,
49
+ remoteName: "origin",
50
+ branch: "master"
51
+ });
52
+ expect(readFileSync(join(tmpRepoDir, "README.md")).toString()).toContain("# This is the master branch");
53
+ });
54
+ });
55
+
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jaGVja291dC1kcml2ZXJzL2dpdC1jaGVja291dC5zcGVjLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4ZWNTeW5jIH0gZnJvbSBcImNoaWxkX3Byb2Nlc3NcIjtcbmltcG9ydCB7IHJlYWRGaWxlU3luYyB9IGZyb20gXCJmc1wiO1xuaW1wb3J0IHsgY29weSwgbWtkdGVtcCwgbW92ZVN5bmMgfSBmcm9tIFwiZnMtZXh0cmFcIjtcbmltcG9ydCB7IGpvaW4sIHJlc29sdmUgfSBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgVEVTVF9GSVhUVVJFU19ESVIsIHRlbXBEaXIgfSBmcm9tIFwiLi4vdGVzdC11dGlsc1wiO1xuaW1wb3J0IHsgZ2l0Q2hlY2tvdXQgfSBmcm9tIFwiLi9naXQtY2hlY2tvdXRcIjtcblxuY29uc3QgZ2l0UmVtb3RlRGlyID0gcmVzb2x2ZShURVNUX0ZJWFRVUkVTX0RJUiwgXCJ0ZXN0R2l0UmVwb1wiKTtcblxuZGVzY3JpYmUoXCJnaXRDaGVja291dFwiLCAoKSA9PiB7XG5cdGxldCB0bXBSZW1vdGVEaXI6IHN0cmluZztcblx0bGV0IHRtcFJlcG9EaXI6IHN0cmluZztcblx0YmVmb3JlRWFjaChhc3luYyAoKSA9PiB7XG5cdFx0Y29uc3QgYmFzZVRtcERpciA9IGF3YWl0IG1rZHRlbXAodGVtcERpcigpKTtcblx0XHQvLyBNYWtlIHRoZSByZW1vdGUgZGlyXG5cdFx0dG1wUmVtb3RlRGlyID0gam9pbihiYXNlVG1wRGlyLCBcInJlbW90ZVwiKTtcblx0XHRhd2FpdCBjb3B5KGdpdFJlbW90ZURpciwgdG1wUmVtb3RlRGlyKTtcblx0XHQvLyByZWh5ZHJhdGUgdGhlIGdpdCByZXBvXG5cdFx0bW92ZVN5bmMoam9pbih0bXBSZW1vdGVEaXIsIFwiZ2l0RGlyXCIpLCBqb2luKHRtcFJlbW90ZURpciwgXCIuZ2l0XCIpKTtcblxuXHRcdC8vIFBlcmZvcm0gdGhlIGNsb25lIHdlIGV4cGVjdFxuXHRcdGV4ZWNTeW5jKGBnaXQgY2xvbmUgJHt0bXBSZW1vdGVEaXJ9IHRlc3RHaXRSZXBvYCwge1xuXHRcdFx0Y3dkOiBiYXNlVG1wRGlyLFxuXHRcdH0pO1xuXHRcdHRtcFJlcG9EaXIgPSBqb2luKGJhc2VUbXBEaXIsIFwidGVzdEdpdFJlcG9cIik7XG5cdH0pO1xuXHRpdChcImNoZWNrcyBvdXQgdGhlIGFwcHJvcHJpYXRlIGJyYW5jaFwiLCBhc3luYyAoKSA9PiB7XG5cdFx0YXdhaXQgZ2l0Q2hlY2tvdXQoe1xuXHRcdFx0dG1wRGlyOiB0bXBSZXBvRGlyLFxuXHRcdFx0cmVtb3RlTmFtZTogXCJvcmlnaW5cIixcblx0XHRcdGJyYW5jaDogXCJ0ZXN0LWJyYW5jaFwiLCAvLyBXZSBzZXQgdGhpcyBpbiB0aGUgZ2l0RGlyXG5cdFx0fSk7XG5cblx0XHRleHBlY3QocmVhZEZpbGVTeW5jKGpvaW4odG1wUmVwb0RpciwgXCJSRUFETUUubWRcIikpLnRvU3RyaW5nKCkpLnRvQ29udGFpbihcblx0XHRcdFwiIyBUaGlzIGlzIHRoZSB0ZXN0LWJyYW5jaFwiLFxuXHRcdCk7XG5cdH0pO1xuXHRpdChcInRocm93cyBhbiBlcnJvciBpZiB0aGUgYnJhbmNoIGlzIG5vdCBmb3VuZFwiLCBhc3luYyAoKSA9PiB7XG5cdFx0YXdhaXQgZXhwZWN0KFxuXHRcdFx0YXN5bmMgKCkgPT5cblx0XHRcdFx0YXdhaXQgZ2l0Q2hlY2tvdXQoe1xuXHRcdFx0XHRcdHRtcERpcjogdG1wUmVwb0Rpcixcblx0XHRcdFx0XHRyZW1vdGVOYW1lOiBcIm9yaWdpblwiLFxuXHRcdFx0XHRcdGJyYW5jaDogXCJ0ZXN0LWJyYW5jaC1ub3QtdGhlcmVcIiwgLy8gVGhpcyBpcyBub3Qgc2V0IGluIGdpdERpclxuXHRcdFx0XHR9KSxcblx0XHQpLnJlamVjdHMudG9UaHJvdygpO1xuXHR9KTtcblx0aXQoXCJ0aHJvd3MgYW4gZXJyb3IgaWYgdGhlIG9yaWdpbiBpcyBub3QgZm91bmRcIiwgYXN5bmMgKCkgPT4ge1xuXHRcdGF3YWl0IGV4cGVjdChcblx0XHRcdGFzeW5jICgpID0+XG5cdFx0XHRcdGF3YWl0IGdpdENoZWNrb3V0KHtcblx0XHRcdFx0XHR0bXBEaXI6IHRtcFJlcG9EaXIsXG5cdFx0XHRcdFx0cmVtb3RlTmFtZTogXCJvcmlnaW5OQVwiLFxuXHRcdFx0XHRcdGJyYW5jaDogXCJ0ZXN0LWJyYW5jaFwiLCAvLyBUaGlzIGlzIG5vdCBzZXQgaW4gZ2l0RGlyXG5cdFx0XHRcdH0pLFxuXHRcdCkucmVqZWN0cy50b1Rocm93KCk7XG5cdH0pO1xuXHRpdChcImRvZXMgbm90IHRocm93IGlmIHRoZSBicmFuY2ggd2FzIHRoZSBkZWZhdWx0XCIsIGFzeW5jICgpID0+IHtcblx0XHRhd2FpdCBnaXRDaGVja291dCh7XG5cdFx0XHR0bXBEaXI6IHRtcFJlcG9EaXIsXG5cdFx0XHRyZW1vdGVOYW1lOiBcIm9yaWdpblwiLFxuXHRcdFx0YnJhbmNoOiBcIm1hc3RlclwiLCAvLyBXZSBzZXQgdGhpcyBpbiB0aGUgZ2l0RGlyXG5cdFx0fSk7XG5cblx0XHRleHBlY3QocmVhZEZpbGVTeW5jKGpvaW4odG1wUmVwb0RpciwgXCJSRUFETUUubWRcIikpLnRvU3RyaW5nKCkpLnRvQ29udGFpbihcblx0XHRcdFwiIyBUaGlzIGlzIHRoZSBtYXN0ZXIgYnJhbmNoXCIsXG5cdFx0KTtcblx0fSk7XG59KTtcbiJdLCJuYW1lcyI6WyJleGVjU3luYyIsInJlYWRGaWxlU3luYyIsImNvcHkiLCJta2R0ZW1wIiwibW92ZVN5bmMiLCJqb2luIiwicmVzb2x2ZSIsIlRFU1RfRklYVFVSRVNfRElSIiwidGVtcERpciIsImdpdENoZWNrb3V0IiwiZ2l0UmVtb3RlRGlyIiwiZGVzY3JpYmUiLCJ0bXBSZW1vdGVEaXIiLCJ0bXBSZXBvRGlyIiwiYmVmb3JlRWFjaCIsImJhc2VUbXBEaXIiLCJjd2QiLCJpdCIsInRtcERpciIsInJlbW90ZU5hbWUiLCJicmFuY2giLCJleHBlY3QiLCJ0b1N0cmluZyIsInRvQ29udGFpbiIsInJlamVjdHMiLCJ0b1Rocm93Il0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxRQUFRLFFBQVEsZ0JBQWdCO0FBQ3pDLFNBQVNDLFlBQVksUUFBUSxLQUFLO0FBQ2xDLFNBQVNDLElBQUksRUFBRUMsT0FBTyxFQUFFQyxRQUFRLFFBQVEsV0FBVztBQUNuRCxTQUFTQyxJQUFJLEVBQUVDLE9BQU8sUUFBUSxPQUFPO0FBQ3JDLFNBQVNDLGlCQUFpQixFQUFFQyxPQUFPLFFBQVEsMEJBQWdCO0FBQzNELFNBQVNDLFdBQVcsUUFBUSxxQkFBaUI7QUFFN0MsTUFBTUMsZUFBZUosUUFBUUMsbUJBQW1CO0FBRWhESSxTQUFTLGVBQWU7SUFDdkIsSUFBSUM7SUFDSixJQUFJQztJQUNKQyxXQUFXO1FBQ1YsTUFBTUMsYUFBYSxNQUFNWixRQUFRSztRQUNqQyxzQkFBc0I7UUFDdEJJLGVBQWVQLEtBQUtVLFlBQVk7UUFDaEMsTUFBTWIsS0FBS1EsY0FBY0U7UUFDekIseUJBQXlCO1FBQ3pCUixTQUFTQyxLQUFLTyxjQUFjLFdBQVdQLEtBQUtPLGNBQWM7UUFFMUQsOEJBQThCO1FBQzlCWixTQUFTLENBQUMsVUFBVSxFQUFFWSxhQUFhLFlBQVksQ0FBQyxFQUFFO1lBQ2pESSxLQUFLRDtRQUNOO1FBQ0FGLGFBQWFSLEtBQUtVLFlBQVk7SUFDL0I7SUFDQUUsR0FBRyxxQ0FBcUM7UUFDdkMsTUFBTVIsWUFBWTtZQUNqQlMsUUFBUUw7WUFDUk0sWUFBWTtZQUNaQyxRQUFRO1FBQ1Q7UUFFQUMsT0FBT3BCLGFBQWFJLEtBQUtRLFlBQVksY0FBY1MsUUFBUSxJQUFJQyxTQUFTLENBQ3ZFO0lBRUY7SUFDQU4sR0FBRyw4Q0FBOEM7UUFDaEQsTUFBTUksT0FDTCxVQUNDLE1BQU1aLFlBQVk7Z0JBQ2pCUyxRQUFRTDtnQkFDUk0sWUFBWTtnQkFDWkMsUUFBUTtZQUNULElBQ0FJLE9BQU8sQ0FBQ0MsT0FBTztJQUNsQjtJQUNBUixHQUFHLDhDQUE4QztRQUNoRCxNQUFNSSxPQUNMLFVBQ0MsTUFBTVosWUFBWTtnQkFDakJTLFFBQVFMO2dCQUNSTSxZQUFZO2dCQUNaQyxRQUFRO1lBQ1QsSUFDQUksT0FBTyxDQUFDQyxPQUFPO0lBQ2xCO0lBQ0FSLEdBQUcsZ0RBQWdEO1FBQ2xELE1BQU1SLFlBQVk7WUFDakJTLFFBQVFMO1lBQ1JNLFlBQVk7WUFDWkMsUUFBUTtRQUNUO1FBRUFDLE9BQU9wQixhQUFhSSxLQUFLUSxZQUFZLGNBQWNTLFFBQVEsSUFBSUMsU0FBUyxDQUN2RTtJQUVGO0FBQ0QifQ==
@@ -0,0 +1,4 @@
1
+ export * from "./git-checkout.mjs";
2
+ export * from "./types.mjs";
3
+
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jaGVja291dC1kcml2ZXJzL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2dpdC1jaGVja291dFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdHlwZXNcIjtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHFCQUFpQjtBQUMvQixjQUFjLGNBQVUifQ==
@@ -0,0 +1,8 @@
1
+ /**
2
+ * A function that will checkout a given "branch" after the repo has been
3
+ * "cloned" by a clone drvier.
4
+ *
5
+ * @returns true if the checkout succeeded
6
+ */ export { };
7
+
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jaGVja291dC1kcml2ZXJzL3R5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQSBmdW5jdGlvbiB0aGF0IHdpbGwgY2hlY2tvdXQgYSBnaXZlbiBcImJyYW5jaFwiIGFmdGVyIHRoZSByZXBvIGhhcyBiZWVuXG4gKiBcImNsb25lZFwiIGJ5IGEgY2xvbmUgZHJ2aWVyLlxuICpcbiAqIEByZXR1cm5zIHRydWUgaWYgdGhlIGNoZWNrb3V0IHN1Y2NlZWRlZFxuICovXG5leHBvcnQgdHlwZSBUZW1wbGF0ZUNoZWNrb3V0RHJpdmVyRm4gPSAob3B0aW9uczoge1xuXHQvKiogVGhlIGRpcmVjdG9yeSB3aGVyZSB3ZSBjbG9uZWQgdG8gKi9cblx0dG1wRGlyOiBzdHJpbmc7XG5cdC8qKiBUaGUgbmFtZSBvZiB0aGUgcmVtb3RlIHRoYXQgZ2l0IGNoZWNrcyBvdXQgYWdhaW5zdCAqL1xuXHRyZW1vdGVOYW1lOiBzdHJpbmc7XG5cdC8qKiBUaGUgYnJhbmNoIHRvIGNoZWNrb3V0IGFnYWluc3QgKi9cblx0YnJhbmNoOiBzdHJpbmc7XG59KSA9PiBQcm9taXNlPGJvb2xlYW4+O1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztDQUtDLEdBQ0QsV0FPdUIifQ==
@@ -0,0 +1,15 @@
1
+ import { execSync } from "child_process";
2
+ import { resolve } from "path";
3
+ const CLONE_DIR = "cloned_repo";
4
+ export async function gitClone(tmpDir, repoUrl) {
5
+ execSync(`git clone ${repoUrl} ${CLONE_DIR}`, {
6
+ cwd: tmpDir,
7
+ env: process.env
8
+ });
9
+ return {
10
+ dir: resolve(tmpDir, CLONE_DIR),
11
+ remoteName: "origin"
12
+ };
13
+ }
14
+
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbG9uZS1kcml2ZXJzL2dpdC1jbG9uZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleGVjU3luYyB9IGZyb20gXCJjaGlsZF9wcm9jZXNzXCI7XG5pbXBvcnQgeyByZXNvbHZlIH0gZnJvbSBcInBhdGhcIjtcbmltcG9ydCB0eXBlIHsgQ2xvbmVSZXR1cm4gfSBmcm9tIFwiLi90eXBlc1wiO1xuXG5jb25zdCBDTE9ORV9ESVIgPSBcImNsb25lZF9yZXBvXCI7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnaXRDbG9uZShcblx0dG1wRGlyOiBzdHJpbmcsXG5cdHJlcG9Vcmw6IHN0cmluZyxcbik6IFByb21pc2U8Q2xvbmVSZXR1cm4+IHtcblx0ZXhlY1N5bmMoYGdpdCBjbG9uZSAke3JlcG9Vcmx9ICR7Q0xPTkVfRElSfWAsIHtcblx0XHRjd2Q6IHRtcERpcixcblx0XHRlbnY6IHByb2Nlc3MuZW52LFxuXHR9KTtcblxuXHRyZXR1cm4ge1xuXHRcdGRpcjogcmVzb2x2ZSh0bXBEaXIsIENMT05FX0RJUiksXG5cdFx0cmVtb3RlTmFtZTogXCJvcmlnaW5cIixcblx0fTtcbn1cbiJdLCJuYW1lcyI6WyJleGVjU3luYyIsInJlc29sdmUiLCJDTE9ORV9ESVIiLCJnaXRDbG9uZSIsInRtcERpciIsInJlcG9VcmwiLCJjd2QiLCJlbnYiLCJwcm9jZXNzIiwiZGlyIiwicmVtb3RlTmFtZSJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsUUFBUSxRQUFRLGdCQUFnQjtBQUN6QyxTQUFTQyxPQUFPLFFBQVEsT0FBTztBQUcvQixNQUFNQyxZQUFZO0FBRWxCLE9BQU8sZUFBZUMsU0FDckJDLE1BQWMsRUFDZEMsT0FBZTtJQUVmTCxTQUFTLENBQUMsVUFBVSxFQUFFSyxRQUFRLENBQUMsRUFBRUgsV0FBVyxFQUFFO1FBQzdDSSxLQUFLRjtRQUNMRyxLQUFLQyxRQUFRRCxHQUFHO0lBQ2pCO0lBRUEsT0FBTztRQUNORSxLQUFLUixRQUFRRyxRQUFRRjtRQUNyQlEsWUFBWTtJQUNiO0FBQ0QifQ==
@@ -0,0 +1,4 @@
1
+ export * from "./git-clone.mjs";
2
+ export * from "./types.mjs";
3
+
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbG9uZS1kcml2ZXJzL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2dpdC1jbG9uZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdHlwZXNcIjtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGtCQUFjO0FBQzVCLGNBQWMsY0FBVSJ9
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @deprecated - return the remote name in the CloneReturn
3
+ */ /**
4
+ * A function that clones the template repo into the provided tmpDir
5
+ * and then returns the relative path within that directory to the template root
6
+ */ export { };
7
+
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbG9uZS1kcml2ZXJzL3R5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGRlcHJlY2F0ZWQgLSByZXR1cm4gdGhlIHJlbW90ZSBuYW1lIGluIHRoZSBDbG9uZVJldHVyblxuICovXG50eXBlIENsb25lRGlyID0gc3RyaW5nO1xuXG5leHBvcnQgaW50ZXJmYWNlIENsb25lUmV0dXJuIHtcblx0LyoqIFRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIGNsb25lIG9jY3VycmVkIC0gYWJzb2x1dGUgcGF0aCB0byBhdm9pZCB3b3JraW5nIGRpciBpc3N1ZXMgKi9cblx0ZGlyOiBzdHJpbmc7XG5cdC8qKiBUaGUgbmFtZSBvZiB0aGUgcmVtb3RlIGZvciB0aGUgcGFydGljdWxhciB0ZWNobm9sb2d5IHRoYXQgeW91IHVzZWQgLSBwYXNzZWQgdG8gY2hlY2tvdXQgZHJpdmVycyAqL1xuXHRyZW1vdGVOYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBmdW5jdGlvbiB0aGF0IGNsb25lcyB0aGUgdGVtcGxhdGUgcmVwbyBpbnRvIHRoZSBwcm92aWRlZCB0bXBEaXJcbiAqIGFuZCB0aGVuIHJldHVybnMgdGhlIHJlbGF0aXZlIHBhdGggd2l0aGluIHRoYXQgZGlyZWN0b3J5IHRvIHRoZSB0ZW1wbGF0ZSByb290XG4gKi9cbmV4cG9ydCB0eXBlIFRlbXBsYXRlQ2xvbmVEcml2ZXJGbiA9IChcblx0dG1wRGlyOiBzdHJpbmcsXG5cdHJlcG9Vcmw6IHN0cmluZyxcbikgPT4gUHJvbWlzZTxDbG9uZVJldHVybiB8IENsb25lRGlyPjtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Q0FFQyxHQVVEOzs7Q0FHQyxHQUNELFdBR3FDIn0=
@@ -0,0 +1,26 @@
1
+ import { execSync } from "child_process";
2
+ /**
3
+ * For a given directory with a git configuration, this will return the modified, added, and
4
+ * deleted files since the last afterRef
5
+ * @param gitDir The git directory folder
6
+ * @param afterRef The git ref to look for diffs after
7
+ * @returns
8
+ */ export async function gitDiff(gitDir, afterRef) {
9
+ const baseCommand = `git diff ${afterRef}.. --no-renames --name-only`;
10
+ const modifiedFiles = execSync(`${baseCommand} --diff-filter=M`, {
11
+ cwd: gitDir
12
+ }).toString().trim().split("\n").filter((s)=>s !== "");
13
+ const addedFiles = execSync(`${baseCommand} --diff-filter=A`, {
14
+ cwd: gitDir
15
+ }).toString().trim().split("\n").filter((s)=>s !== "");
16
+ const deletedFiles = execSync(`${baseCommand} --diff-filter=D`, {
17
+ cwd: gitDir
18
+ }).toString().trim().split("\n").filter((s)=>s !== "");
19
+ return {
20
+ modified: modifiedFiles,
21
+ added: addedFiles,
22
+ deleted: deletedFiles
23
+ };
24
+ }
25
+
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kaWZmLWRyaXZlcnMvZ2l0LWRpZmYudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXhlY1N5bmMgfSBmcm9tIFwiY2hpbGRfcHJvY2Vzc1wiO1xuXG4vKipcbiAqIEZvciBhIGdpdmVuIGRpcmVjdG9yeSB3aXRoIGEgZ2l0IGNvbmZpZ3VyYXRpb24sIHRoaXMgd2lsbCByZXR1cm4gdGhlIG1vZGlmaWVkLCBhZGRlZCwgYW5kXG4gKiBkZWxldGVkIGZpbGVzIHNpbmNlIHRoZSBsYXN0IGFmdGVyUmVmXG4gKiBAcGFyYW0gZ2l0RGlyIFRoZSBnaXQgZGlyZWN0b3J5IGZvbGRlclxuICogQHBhcmFtIGFmdGVyUmVmIFRoZSBnaXQgcmVmIHRvIGxvb2sgZm9yIGRpZmZzIGFmdGVyXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2l0RGlmZihnaXREaXI6IHN0cmluZywgYWZ0ZXJSZWY6IHN0cmluZykge1xuXHRjb25zdCBiYXNlQ29tbWFuZCA9IGBnaXQgZGlmZiAke2FmdGVyUmVmfS4uIC0tbm8tcmVuYW1lcyAtLW5hbWUtb25seWA7XG5cdGNvbnN0IG1vZGlmaWVkRmlsZXMgPSBleGVjU3luYyhgJHtiYXNlQ29tbWFuZH0gLS1kaWZmLWZpbHRlcj1NYCwge1xuXHRcdGN3ZDogZ2l0RGlyLFxuXHR9KVxuXHRcdC50b1N0cmluZygpXG5cdFx0LnRyaW0oKVxuXHRcdC5zcGxpdChcIlxcblwiKVxuXHRcdC5maWx0ZXIoKHMpID0+IHMgIT09IFwiXCIpO1xuXHRjb25zdCBhZGRlZEZpbGVzID0gZXhlY1N5bmMoYCR7YmFzZUNvbW1hbmR9IC0tZGlmZi1maWx0ZXI9QWAsIHtcblx0XHRjd2Q6IGdpdERpcixcblx0fSlcblx0XHQudG9TdHJpbmcoKVxuXHRcdC50cmltKClcblx0XHQuc3BsaXQoXCJcXG5cIilcblx0XHQuZmlsdGVyKChzKSA9PiBzICE9PSBcIlwiKTtcblx0Y29uc3QgZGVsZXRlZEZpbGVzID0gZXhlY1N5bmMoYCR7YmFzZUNvbW1hbmR9IC0tZGlmZi1maWx0ZXI9RGAsIHtcblx0XHRjd2Q6IGdpdERpcixcblx0fSlcblx0XHQudG9TdHJpbmcoKVxuXHRcdC50cmltKClcblx0XHQuc3BsaXQoXCJcXG5cIilcblx0XHQuZmlsdGVyKChzKSA9PiBzICE9PSBcIlwiKTtcblxuXHRyZXR1cm4ge1xuXHRcdG1vZGlmaWVkOiBtb2RpZmllZEZpbGVzLFxuXHRcdGFkZGVkOiBhZGRlZEZpbGVzLFxuXHRcdGRlbGV0ZWQ6IGRlbGV0ZWRGaWxlcyxcblx0fTtcbn1cbiJdLCJuYW1lcyI6WyJleGVjU3luYyIsImdpdERpZmYiLCJnaXREaXIiLCJhZnRlclJlZiIsImJhc2VDb21tYW5kIiwibW9kaWZpZWRGaWxlcyIsImN3ZCIsInRvU3RyaW5nIiwidHJpbSIsInNwbGl0IiwiZmlsdGVyIiwicyIsImFkZGVkRmlsZXMiLCJkZWxldGVkRmlsZXMiLCJtb2RpZmllZCIsImFkZGVkIiwiZGVsZXRlZCJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsUUFBUSxRQUFRLGdCQUFnQjtBQUV6Qzs7Ozs7O0NBTUMsR0FDRCxPQUFPLGVBQWVDLFFBQVFDLE1BQWMsRUFBRUMsUUFBZ0I7SUFDN0QsTUFBTUMsY0FBYyxDQUFDLFNBQVMsRUFBRUQsU0FBUywyQkFBMkIsQ0FBQztJQUNyRSxNQUFNRSxnQkFBZ0JMLFNBQVMsR0FBR0ksWUFBWSxnQkFBZ0IsQ0FBQyxFQUFFO1FBQ2hFRSxLQUFLSjtJQUNOLEdBQ0VLLFFBQVEsR0FDUkMsSUFBSSxHQUNKQyxLQUFLLENBQUMsTUFDTkMsTUFBTSxDQUFDLENBQUNDLElBQU1BLE1BQU07SUFDdEIsTUFBTUMsYUFBYVosU0FBUyxHQUFHSSxZQUFZLGdCQUFnQixDQUFDLEVBQUU7UUFDN0RFLEtBQUtKO0lBQ04sR0FDRUssUUFBUSxHQUNSQyxJQUFJLEdBQ0pDLEtBQUssQ0FBQyxNQUNOQyxNQUFNLENBQUMsQ0FBQ0MsSUFBTUEsTUFBTTtJQUN0QixNQUFNRSxlQUFlYixTQUFTLEdBQUdJLFlBQVksZ0JBQWdCLENBQUMsRUFBRTtRQUMvREUsS0FBS0o7SUFDTixHQUNFSyxRQUFRLEdBQ1JDLElBQUksR0FDSkMsS0FBSyxDQUFDLE1BQ05DLE1BQU0sQ0FBQyxDQUFDQyxJQUFNQSxNQUFNO0lBRXRCLE9BQU87UUFDTkcsVUFBVVQ7UUFDVlUsT0FBT0g7UUFDUEksU0FBU0g7SUFDVjtBQUNEIn0=
@@ -0,0 +1,93 @@
1
+ import { execSync } from "child_process";
2
+ import * as fs from "fs";
3
+ import * as path from "path";
4
+ import { gitDiff } from "./git-diff.mjs";
5
+ describe("gitDiff", ()=>{
6
+ let tempDir;
7
+ beforeEach(()=>{
8
+ tempDir = fs.mkdtempSync("gitdiff-test");
9
+ // Initialize a git repo
10
+ execSync("git init", {
11
+ cwd: tempDir
12
+ });
13
+ fs.writeFileSync(path.join(tempDir, "file1.txt"), "hello");
14
+ fs.writeFileSync(path.join(tempDir, "second.txt"), "second");
15
+ fs.writeFileSync(path.join(tempDir, "third.txt"), "third");
16
+ execSync("git add . && git commit -m 'initial'", {
17
+ cwd: tempDir
18
+ });
19
+ });
20
+ afterEach(()=>{
21
+ fs.rmSync(tempDir, {
22
+ recursive: true,
23
+ force: true
24
+ });
25
+ });
26
+ it("handles a rename as a delete and an add", async ()=>{
27
+ const firstCommit = execSync("git rev-parse HEAD", {
28
+ cwd: tempDir
29
+ }).toString().trim();
30
+ // Perform a rename
31
+ execSync("git mv file1.txt file2.txt", {
32
+ cwd: tempDir
33
+ });
34
+ execSync("git commit -m 'rename'", {
35
+ cwd: tempDir
36
+ });
37
+ const result = await gitDiff(tempDir, firstCommit);
38
+ // Because of --no-renames:
39
+ expect(result).toEqual({
40
+ deleted: [
41
+ "file1.txt"
42
+ ],
43
+ added: [
44
+ "file2.txt"
45
+ ],
46
+ modified: []
47
+ });
48
+ });
49
+ it("handles a added, deleted, and modified appropriately across multiple commits", async ()=>{
50
+ const firstCommit = execSync("git rev-parse HEAD", {
51
+ cwd: tempDir
52
+ }).toString().trim();
53
+ // Perform a rename
54
+ execSync("git mv file1.txt file2.txt", {
55
+ cwd: tempDir
56
+ });
57
+ execSync("git commit -m 'rename'", {
58
+ cwd: tempDir
59
+ });
60
+ // Perform adds
61
+ fs.writeFileSync(path.join(tempDir, "another.txt"), "another file");
62
+ execSync("git add . && git commit -m 'adding another file'", {
63
+ cwd: tempDir
64
+ });
65
+ // Perform a modify
66
+ fs.writeFileSync(path.join(tempDir, "third.txt"), "third+");
67
+ execSync("git add . && git commit -m 'modifying third'", {
68
+ cwd: tempDir
69
+ });
70
+ // Perform a delete
71
+ fs.rmSync(path.join(tempDir, "second.txt"));
72
+ execSync("git add . && git commit -m 'deleting second'", {
73
+ cwd: tempDir
74
+ });
75
+ const result = await gitDiff(tempDir, firstCommit);
76
+ // Because of --no-renames:
77
+ expect(result).toEqual({
78
+ deleted: expect.arrayContaining([
79
+ "file1.txt",
80
+ "second.txt"
81
+ ]),
82
+ added: expect.arrayContaining([
83
+ "file2.txt",
84
+ "another.txt"
85
+ ]),
86
+ modified: [
87
+ "third.txt"
88
+ ]
89
+ });
90
+ });
91
+ });
92
+
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kaWZmLWRyaXZlcnMvZ2l0LWRpZmYuc3BlYy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleGVjU3luYyB9IGZyb20gXCJjaGlsZF9wcm9jZXNzXCI7XG5pbXBvcnQgKiBhcyBmcyBmcm9tIFwiZnNcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IGdpdERpZmYgfSBmcm9tIFwiLi9naXQtZGlmZlwiO1xuXG5kZXNjcmliZShcImdpdERpZmZcIiwgKCkgPT4ge1xuXHRsZXQgdGVtcERpcjogc3RyaW5nO1xuXG5cdGJlZm9yZUVhY2goKCkgPT4ge1xuXHRcdHRlbXBEaXIgPSBmcy5ta2R0ZW1wU3luYyhcImdpdGRpZmYtdGVzdFwiKTtcblx0XHQvLyBJbml0aWFsaXplIGEgZ2l0IHJlcG9cblx0XHRleGVjU3luYyhcImdpdCBpbml0XCIsIHsgY3dkOiB0ZW1wRGlyIH0pO1xuXHRcdGZzLndyaXRlRmlsZVN5bmMocGF0aC5qb2luKHRlbXBEaXIsIFwiZmlsZTEudHh0XCIpLCBcImhlbGxvXCIpO1xuXHRcdGZzLndyaXRlRmlsZVN5bmMocGF0aC5qb2luKHRlbXBEaXIsIFwic2Vjb25kLnR4dFwiKSwgXCJzZWNvbmRcIik7XG5cdFx0ZnMud3JpdGVGaWxlU3luYyhwYXRoLmpvaW4odGVtcERpciwgXCJ0aGlyZC50eHRcIiksIFwidGhpcmRcIik7XG5cdFx0ZXhlY1N5bmMoXCJnaXQgYWRkIC4gJiYgZ2l0IGNvbW1pdCAtbSAnaW5pdGlhbCdcIiwgeyBjd2Q6IHRlbXBEaXIgfSk7XG5cdH0pO1xuXG5cdGFmdGVyRWFjaCgoKSA9PiB7XG5cdFx0ZnMucm1TeW5jKHRlbXBEaXIsIHsgcmVjdXJzaXZlOiB0cnVlLCBmb3JjZTogdHJ1ZSB9KTtcblx0fSk7XG5cblx0aXQoXCJoYW5kbGVzIGEgcmVuYW1lIGFzIGEgZGVsZXRlIGFuZCBhbiBhZGRcIiwgYXN5bmMgKCkgPT4ge1xuXHRcdGNvbnN0IGZpcnN0Q29tbWl0ID0gZXhlY1N5bmMoXCJnaXQgcmV2LXBhcnNlIEhFQURcIiwgeyBjd2Q6IHRlbXBEaXIgfSlcblx0XHRcdC50b1N0cmluZygpXG5cdFx0XHQudHJpbSgpO1xuXG5cdFx0Ly8gUGVyZm9ybSBhIHJlbmFtZVxuXHRcdGV4ZWNTeW5jKFwiZ2l0IG12IGZpbGUxLnR4dCBmaWxlMi50eHRcIiwgeyBjd2Q6IHRlbXBEaXIgfSk7XG5cdFx0ZXhlY1N5bmMoXCJnaXQgY29tbWl0IC1tICdyZW5hbWUnXCIsIHsgY3dkOiB0ZW1wRGlyIH0pO1xuXG5cdFx0Y29uc3QgcmVzdWx0ID0gYXdhaXQgZ2l0RGlmZih0ZW1wRGlyLCBmaXJzdENvbW1pdCk7XG5cblx0XHQvLyBCZWNhdXNlIG9mIC0tbm8tcmVuYW1lczpcblx0XHRleHBlY3QocmVzdWx0KS50b0VxdWFsKHtcblx0XHRcdGRlbGV0ZWQ6IFtcImZpbGUxLnR4dFwiXSxcblx0XHRcdGFkZGVkOiBbXCJmaWxlMi50eHRcIl0sXG5cdFx0XHRtb2RpZmllZDogW10sXG5cdFx0fSk7XG5cdH0pO1xuXHRpdChcImhhbmRsZXMgYSBhZGRlZCwgZGVsZXRlZCwgYW5kIG1vZGlmaWVkIGFwcHJvcHJpYXRlbHkgYWNyb3NzIG11bHRpcGxlIGNvbW1pdHNcIiwgYXN5bmMgKCkgPT4ge1xuXHRcdGNvbnN0IGZpcnN0Q29tbWl0ID0gZXhlY1N5bmMoXCJnaXQgcmV2LXBhcnNlIEhFQURcIiwgeyBjd2Q6IHRlbXBEaXIgfSlcblx0XHRcdC50b1N0cmluZygpXG5cdFx0XHQudHJpbSgpO1xuXG5cdFx0Ly8gUGVyZm9ybSBhIHJlbmFtZVxuXHRcdGV4ZWNTeW5jKFwiZ2l0IG12IGZpbGUxLnR4dCBmaWxlMi50eHRcIiwgeyBjd2Q6IHRlbXBEaXIgfSk7XG5cdFx0ZXhlY1N5bmMoXCJnaXQgY29tbWl0IC1tICdyZW5hbWUnXCIsIHsgY3dkOiB0ZW1wRGlyIH0pO1xuXG5cdFx0Ly8gUGVyZm9ybSBhZGRzXG5cdFx0ZnMud3JpdGVGaWxlU3luYyhwYXRoLmpvaW4odGVtcERpciwgXCJhbm90aGVyLnR4dFwiKSwgXCJhbm90aGVyIGZpbGVcIik7XG5cdFx0ZXhlY1N5bmMoXCJnaXQgYWRkIC4gJiYgZ2l0IGNvbW1pdCAtbSAnYWRkaW5nIGFub3RoZXIgZmlsZSdcIiwge1xuXHRcdFx0Y3dkOiB0ZW1wRGlyLFxuXHRcdH0pO1xuXG5cdFx0Ly8gUGVyZm9ybSBhIG1vZGlmeVxuXHRcdGZzLndyaXRlRmlsZVN5bmMocGF0aC5qb2luKHRlbXBEaXIsIFwidGhpcmQudHh0XCIpLCBcInRoaXJkK1wiKTtcblx0XHRleGVjU3luYyhcImdpdCBhZGQgLiAmJiBnaXQgY29tbWl0IC1tICdtb2RpZnlpbmcgdGhpcmQnXCIsIHsgY3dkOiB0ZW1wRGlyIH0pO1xuXG5cdFx0Ly8gUGVyZm9ybSBhIGRlbGV0ZVxuXHRcdGZzLnJtU3luYyhwYXRoLmpvaW4odGVtcERpciwgXCJzZWNvbmQudHh0XCIpKTtcblx0XHRleGVjU3luYyhcImdpdCBhZGQgLiAmJiBnaXQgY29tbWl0IC1tICdkZWxldGluZyBzZWNvbmQnXCIsIHsgY3dkOiB0ZW1wRGlyIH0pO1xuXG5cdFx0Y29uc3QgcmVzdWx0ID0gYXdhaXQgZ2l0RGlmZih0ZW1wRGlyLCBmaXJzdENvbW1pdCk7XG5cblx0XHQvLyBCZWNhdXNlIG9mIC0tbm8tcmVuYW1lczpcblx0XHRleHBlY3QocmVzdWx0KS50b0VxdWFsKHtcblx0XHRcdGRlbGV0ZWQ6IGV4cGVjdC5hcnJheUNvbnRhaW5pbmcoW1wiZmlsZTEudHh0XCIsIFwic2Vjb25kLnR4dFwiXSksXG5cdFx0XHRhZGRlZDogZXhwZWN0LmFycmF5Q29udGFpbmluZyhbXCJmaWxlMi50eHRcIiwgXCJhbm90aGVyLnR4dFwiXSksXG5cdFx0XHRtb2RpZmllZDogW1widGhpcmQudHh0XCJdLFxuXHRcdH0pO1xuXHR9KTtcbn0pO1xuIl0sIm5hbWVzIjpbImV4ZWNTeW5jIiwiZnMiLCJwYXRoIiwiZ2l0RGlmZiIsImRlc2NyaWJlIiwidGVtcERpciIsImJlZm9yZUVhY2giLCJta2R0ZW1wU3luYyIsImN3ZCIsIndyaXRlRmlsZVN5bmMiLCJqb2luIiwiYWZ0ZXJFYWNoIiwicm1TeW5jIiwicmVjdXJzaXZlIiwiZm9yY2UiLCJpdCIsImZpcnN0Q29tbWl0IiwidG9TdHJpbmciLCJ0cmltIiwicmVzdWx0IiwiZXhwZWN0IiwidG9FcXVhbCIsImRlbGV0ZWQiLCJhZGRlZCIsIm1vZGlmaWVkIiwiYXJyYXlDb250YWluaW5nIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxRQUFRLFFBQVEsZ0JBQWdCO0FBQ3pDLFlBQVlDLFFBQVEsS0FBSztBQUN6QixZQUFZQyxVQUFVLE9BQU87QUFDN0IsU0FBU0MsT0FBTyxRQUFRLGlCQUFhO0FBRXJDQyxTQUFTLFdBQVc7SUFDbkIsSUFBSUM7SUFFSkMsV0FBVztRQUNWRCxVQUFVSixHQUFHTSxXQUFXLENBQUM7UUFDekIsd0JBQXdCO1FBQ3hCUCxTQUFTLFlBQVk7WUFBRVEsS0FBS0g7UUFBUTtRQUNwQ0osR0FBR1EsYUFBYSxDQUFDUCxLQUFLUSxJQUFJLENBQUNMLFNBQVMsY0FBYztRQUNsREosR0FBR1EsYUFBYSxDQUFDUCxLQUFLUSxJQUFJLENBQUNMLFNBQVMsZUFBZTtRQUNuREosR0FBR1EsYUFBYSxDQUFDUCxLQUFLUSxJQUFJLENBQUNMLFNBQVMsY0FBYztRQUNsREwsU0FBUyx3Q0FBd0M7WUFBRVEsS0FBS0g7UUFBUTtJQUNqRTtJQUVBTSxVQUFVO1FBQ1RWLEdBQUdXLE1BQU0sQ0FBQ1AsU0FBUztZQUFFUSxXQUFXO1lBQU1DLE9BQU87UUFBSztJQUNuRDtJQUVBQyxHQUFHLDJDQUEyQztRQUM3QyxNQUFNQyxjQUFjaEIsU0FBUyxzQkFBc0I7WUFBRVEsS0FBS0g7UUFBUSxHQUNoRVksUUFBUSxHQUNSQyxJQUFJO1FBRU4sbUJBQW1CO1FBQ25CbEIsU0FBUyw4QkFBOEI7WUFBRVEsS0FBS0g7UUFBUTtRQUN0REwsU0FBUywwQkFBMEI7WUFBRVEsS0FBS0g7UUFBUTtRQUVsRCxNQUFNYyxTQUFTLE1BQU1oQixRQUFRRSxTQUFTVztRQUV0QywyQkFBMkI7UUFDM0JJLE9BQU9ELFFBQVFFLE9BQU8sQ0FBQztZQUN0QkMsU0FBUztnQkFBQzthQUFZO1lBQ3RCQyxPQUFPO2dCQUFDO2FBQVk7WUFDcEJDLFVBQVUsRUFBRTtRQUNiO0lBQ0Q7SUFDQVQsR0FBRyxnRkFBZ0Y7UUFDbEYsTUFBTUMsY0FBY2hCLFNBQVMsc0JBQXNCO1lBQUVRLEtBQUtIO1FBQVEsR0FDaEVZLFFBQVEsR0FDUkMsSUFBSTtRQUVOLG1CQUFtQjtRQUNuQmxCLFNBQVMsOEJBQThCO1lBQUVRLEtBQUtIO1FBQVE7UUFDdERMLFNBQVMsMEJBQTBCO1lBQUVRLEtBQUtIO1FBQVE7UUFFbEQsZUFBZTtRQUNmSixHQUFHUSxhQUFhLENBQUNQLEtBQUtRLElBQUksQ0FBQ0wsU0FBUyxnQkFBZ0I7UUFDcERMLFNBQVMsb0RBQW9EO1lBQzVEUSxLQUFLSDtRQUNOO1FBRUEsbUJBQW1CO1FBQ25CSixHQUFHUSxhQUFhLENBQUNQLEtBQUtRLElBQUksQ0FBQ0wsU0FBUyxjQUFjO1FBQ2xETCxTQUFTLGdEQUFnRDtZQUFFUSxLQUFLSDtRQUFRO1FBRXhFLG1CQUFtQjtRQUNuQkosR0FBR1csTUFBTSxDQUFDVixLQUFLUSxJQUFJLENBQUNMLFNBQVM7UUFDN0JMLFNBQVMsZ0RBQWdEO1lBQUVRLEtBQUtIO1FBQVE7UUFFeEUsTUFBTWMsU0FBUyxNQUFNaEIsUUFBUUUsU0FBU1c7UUFFdEMsMkJBQTJCO1FBQzNCSSxPQUFPRCxRQUFRRSxPQUFPLENBQUM7WUFDdEJDLFNBQVNGLE9BQU9LLGVBQWUsQ0FBQztnQkFBQztnQkFBYTthQUFhO1lBQzNERixPQUFPSCxPQUFPSyxlQUFlLENBQUM7Z0JBQUM7Z0JBQWE7YUFBYztZQUMxREQsVUFBVTtnQkFBQzthQUFZO1FBQ3hCO0lBQ0Q7QUFDRCJ9
@@ -0,0 +1,4 @@
1
+ export * from "./git-diff.mjs";
2
+ export * from "./types.mjs";
3
+
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kaWZmLWRyaXZlcnMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vZ2l0LWRpZmZcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3R5cGVzXCI7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxpQkFBYTtBQUMzQixjQUFjLGNBQVUifQ==
@@ -0,0 +1,6 @@
1
+ /**
2
+ * A function that operates within the gitDir, and returns the list of file paths
3
+ * since the last sha
4
+ */ export { };
5
+
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kaWZmLWRyaXZlcnMvdHlwZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBEaWZmUmVzdWx0IHtcblx0bW9kaWZpZWQ6IHN0cmluZ1tdO1xuXHRhZGRlZDogc3RyaW5nW107XG5cdGRlbGV0ZWQ6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEEgZnVuY3Rpb24gdGhhdCBvcGVyYXRlcyB3aXRoaW4gdGhlIGdpdERpciwgYW5kIHJldHVybnMgdGhlIGxpc3Qgb2YgZmlsZSBwYXRoc1xuICogc2luY2UgdGhlIGxhc3Qgc2hhXG4gKi9cbmV4cG9ydCB0eXBlIFRlbXBsYXRlRGlmZkRyaXZlckZuID0gKFxuXHRnaXREaXI6IHN0cmluZyxcblx0YWZ0ZXJSZWY6IHN0cmluZyxcbikgPT4gUHJvbWlzZTxEaWZmUmVzdWx0PjtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQTs7O0NBR0MsR0FDRCxXQUd5QiJ9
@@ -0,0 +1,4 @@
1
+ export * from "./infer-json-indent.mjs";
2
+ export * from "./sync-results-to-md.mjs";
3
+
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9mb3JtYXR0aW5nL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2luZmVyLWpzb24taW5kZW50XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zeW5jLXJlc3VsdHMtdG8tbWRcIjtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDBCQUFzQjtBQUNwQyxjQUFjLDJCQUF1QiJ9
@@ -0,0 +1,16 @@
1
+ const spacingRegex = /[{[]\n?(?<spacing>\s+)["tf\d]/;
2
+ export function inferJSONIndent(rawJSON) {
3
+ const match = spacingRegex.exec(rawJSON);
4
+ if (!match?.groups?.spacing) {
5
+ // eslint-disable-next-line no-console
6
+ console.warn(`Could not find json indentation for json string: ${rawJSON.slice(40)} ... \nDefaulting to 4 spaces`);
7
+ // Four spaces
8
+ return " ";
9
+ }
10
+ const spacing = match.groups.spacing;
11
+ // Handle the case where there were multiple newlines before a value
12
+ const lastNewLine = spacing.lastIndexOf("\n");
13
+ return match?.groups.spacing.slice(lastNewLine >= 0 ? lastNewLine + 1 : 0);
14
+ }
15
+
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9mb3JtYXR0aW5nL2luZmVyLWpzb24taW5kZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHNwYWNpbmdSZWdleCA9IC9be1tdXFxuPyg/PHNwYWNpbmc+XFxzKylbXCJ0ZlxcZF0vO1xuZXhwb3J0IGZ1bmN0aW9uIGluZmVySlNPTkluZGVudChyYXdKU09OOiBzdHJpbmcpIHtcblx0Y29uc3QgbWF0Y2ggPSBzcGFjaW5nUmVnZXguZXhlYyhyYXdKU09OKTtcblx0aWYgKCFtYXRjaD8uZ3JvdXBzPy5zcGFjaW5nKSB7XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcblx0XHRjb25zb2xlLndhcm4oXG5cdFx0XHRgQ291bGQgbm90IGZpbmQganNvbiBpbmRlbnRhdGlvbiBmb3IganNvbiBzdHJpbmc6ICR7cmF3SlNPTi5zbGljZSg0MCl9IC4uLiBcXG5EZWZhdWx0aW5nIHRvIDQgc3BhY2VzYCxcblx0XHQpO1xuXHRcdC8vIEZvdXIgc3BhY2VzXG5cdFx0cmV0dXJuIFwiICAgIFwiO1xuXHR9XG5cdGNvbnN0IHNwYWNpbmcgPSBtYXRjaC5ncm91cHMuc3BhY2luZztcblx0Ly8gSGFuZGxlIHRoZSBjYXNlIHdoZXJlIHRoZXJlIHdlcmUgbXVsdGlwbGUgbmV3bGluZXMgYmVmb3JlIGEgdmFsdWVcblx0Y29uc3QgbGFzdE5ld0xpbmUgPSBzcGFjaW5nLmxhc3RJbmRleE9mKFwiXFxuXCIpO1xuXHRyZXR1cm4gbWF0Y2g/Lmdyb3Vwcy5zcGFjaW5nLnNsaWNlKGxhc3ROZXdMaW5lID49IDAgPyBsYXN0TmV3TGluZSArIDEgOiAwKTtcbn1cbiJdLCJuYW1lcyI6WyJzcGFjaW5nUmVnZXgiLCJpbmZlckpTT05JbmRlbnQiLCJyYXdKU09OIiwibWF0Y2giLCJleGVjIiwiZ3JvdXBzIiwic3BhY2luZyIsImNvbnNvbGUiLCJ3YXJuIiwic2xpY2UiLCJsYXN0TmV3TGluZSIsImxhc3RJbmRleE9mIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxlQUFlO0FBQ3JCLE9BQU8sU0FBU0MsZ0JBQWdCQyxPQUFlO0lBQzlDLE1BQU1DLFFBQVFILGFBQWFJLElBQUksQ0FBQ0Y7SUFDaEMsSUFBSSxDQUFDQyxPQUFPRSxRQUFRQyxTQUFTO1FBQzVCLHNDQUFzQztRQUN0Q0MsUUFBUUMsSUFBSSxDQUNYLENBQUMsaURBQWlELEVBQUVOLFFBQVFPLEtBQUssQ0FBQyxJQUFJLDZCQUE2QixDQUFDO1FBRXJHLGNBQWM7UUFDZCxPQUFPO0lBQ1I7SUFDQSxNQUFNSCxVQUFVSCxNQUFNRSxNQUFNLENBQUNDLE9BQU87SUFDcEMsb0VBQW9FO0lBQ3BFLE1BQU1JLGNBQWNKLFFBQVFLLFdBQVcsQ0FBQztJQUN4QyxPQUFPUixPQUFPRSxPQUFPQyxRQUFRRyxNQUFNQyxlQUFlLElBQUlBLGNBQWMsSUFBSTtBQUN6RSJ9
@@ -0,0 +1,46 @@
1
+ import { inferJSONIndent } from "./infer-json-indent.mjs";
2
+ const withNewLine = `{
3
+
4
+ "whoa": true,
5
+ "thing": here,
6
+ "something": {
7
+ "nested": false
8
+ }
9
+ }`;
10
+ const fourSpaces = `{
11
+ "whoa": true,
12
+ "thing": here,
13
+ "something": {
14
+ "nested": false
15
+ }
16
+ }`;
17
+ const tabSpaces = `{
18
+ "whoa": true,
19
+ "thing": here,
20
+ "something": {
21
+ "nested": false
22
+ }
23
+ }`;
24
+ const twoSpaces = `{
25
+ "whoa": true,
26
+ "thing": here,
27
+ "something": {
28
+ "nested": false
29
+ }
30
+ }`;
31
+ describe("inferJSONIndent", ()=>{
32
+ it("returns spaces when the first indent is spaces with a new line", ()=>{
33
+ expect(inferJSONIndent(withNewLine)).toBe(" ");
34
+ });
35
+ it("returns spaces when the first indent is spaces", ()=>{
36
+ expect(inferJSONIndent(fourSpaces)).toBe(" ");
37
+ });
38
+ it("returns spaces when the first indent is spaces", ()=>{
39
+ expect(inferJSONIndent(twoSpaces)).toBe(" ");
40
+ });
41
+ it("returns tabs when the first indent is a tab", ()=>{
42
+ expect(inferJSONIndent(tabSpaces)).toBe("\t");
43
+ });
44
+ });
45
+
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9mb3JtYXR0aW5nL2luZmVyLWpzb24taW5kZW50LnNwZWMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5mZXJKU09OSW5kZW50IH0gZnJvbSBcIi4vaW5mZXItanNvbi1pbmRlbnRcIjtcblxuY29uc3Qgd2l0aE5ld0xpbmUgPSBge1xuXG4gICAgXCJ3aG9hXCI6IHRydWUsXG4gICAgXCJ0aGluZ1wiOiBoZXJlLFxuICAgIFwic29tZXRoaW5nXCI6IHtcbiAgICAgICAgXCJuZXN0ZWRcIjogZmFsc2VcbiAgICB9XG59YDtcblxuY29uc3QgZm91clNwYWNlcyA9IGB7XG4gICAgXCJ3aG9hXCI6IHRydWUsXG4gICAgXCJ0aGluZ1wiOiBoZXJlLFxuICAgIFwic29tZXRoaW5nXCI6IHtcbiAgICAgICAgXCJuZXN0ZWRcIjogZmFsc2VcbiAgICB9XG59YDtcblxuY29uc3QgdGFiU3BhY2VzID0gYHtcblx0XCJ3aG9hXCI6IHRydWUsXG5cdFwidGhpbmdcIjogaGVyZSxcblx0XCJzb21ldGhpbmdcIjoge1xuXHRcdFwibmVzdGVkXCI6IGZhbHNlXG5cdH1cbn1gO1xuXG5jb25zdCB0d29TcGFjZXMgPSBge1xuICBcIndob2FcIjogdHJ1ZSxcbiAgXCJ0aGluZ1wiOiBoZXJlLFxuICBcInNvbWV0aGluZ1wiOiB7XG4gICAgXCJuZXN0ZWRcIjogZmFsc2VcbiAgfVxufWA7XG5cbmRlc2NyaWJlKFwiaW5mZXJKU09OSW5kZW50XCIsICgpID0+IHtcblx0aXQoXCJyZXR1cm5zIHNwYWNlcyB3aGVuIHRoZSBmaXJzdCBpbmRlbnQgaXMgc3BhY2VzIHdpdGggYSBuZXcgbGluZVwiLCAoKSA9PiB7XG5cdFx0ZXhwZWN0KGluZmVySlNPTkluZGVudCh3aXRoTmV3TGluZSkpLnRvQmUoXCIgICAgXCIpO1xuXHR9KTtcblx0aXQoXCJyZXR1cm5zIHNwYWNlcyB3aGVuIHRoZSBmaXJzdCBpbmRlbnQgaXMgc3BhY2VzXCIsICgpID0+IHtcblx0XHRleHBlY3QoaW5mZXJKU09OSW5kZW50KGZvdXJTcGFjZXMpKS50b0JlKFwiICAgIFwiKTtcblx0fSk7XG5cdGl0KFwicmV0dXJucyBzcGFjZXMgd2hlbiB0aGUgZmlyc3QgaW5kZW50IGlzIHNwYWNlc1wiLCAoKSA9PiB7XG5cdFx0ZXhwZWN0KGluZmVySlNPTkluZGVudCh0d29TcGFjZXMpKS50b0JlKFwiICBcIik7XG5cdH0pO1xuXHRpdChcInJldHVybnMgdGFicyB3aGVuIHRoZSBmaXJzdCBpbmRlbnQgaXMgYSB0YWJcIiwgKCkgPT4ge1xuXHRcdGV4cGVjdChpbmZlckpTT05JbmRlbnQodGFiU3BhY2VzKSkudG9CZShcIlxcdFwiKTtcblx0fSk7XG59KTtcbiJdLCJuYW1lcyI6WyJpbmZlckpTT05JbmRlbnQiLCJ3aXRoTmV3TGluZSIsImZvdXJTcGFjZXMiLCJ0YWJTcGFjZXMiLCJ0d29TcGFjZXMiLCJkZXNjcmliZSIsIml0IiwiZXhwZWN0IiwidG9CZSJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsZUFBZSxRQUFRLDBCQUFzQjtBQUV0RCxNQUFNQyxjQUFjLENBQUM7Ozs7Ozs7Q0FPcEIsQ0FBQztBQUVGLE1BQU1DLGFBQWEsQ0FBQzs7Ozs7O0NBTW5CLENBQUM7QUFFRixNQUFNQyxZQUFZLENBQUM7Ozs7OztDQU1sQixDQUFDO0FBRUYsTUFBTUMsWUFBWSxDQUFDOzs7Ozs7Q0FNbEIsQ0FBQztBQUVGQyxTQUFTLG1CQUFtQjtJQUMzQkMsR0FBRyxrRUFBa0U7UUFDcEVDLE9BQU9QLGdCQUFnQkMsY0FBY08sSUFBSSxDQUFDO0lBQzNDO0lBQ0FGLEdBQUcsa0RBQWtEO1FBQ3BEQyxPQUFPUCxnQkFBZ0JFLGFBQWFNLElBQUksQ0FBQztJQUMxQztJQUNBRixHQUFHLGtEQUFrRDtRQUNwREMsT0FBT1AsZ0JBQWdCSSxZQUFZSSxJQUFJLENBQUM7SUFDekM7SUFDQUYsR0FBRywrQ0FBK0M7UUFDakRDLE9BQU9QLGdCQUFnQkcsWUFBWUssSUFBSSxDQUFDO0lBQ3pDO0FBQ0QifQ==
@@ -0,0 +1,52 @@
1
+ import { TEMPLATE_SYNC_LOCAL_CONFIG } from "../template-sync.mjs";
2
+ export function syncResultsToMd(result) {
3
+ return `# ${TEMPLATE_SYNC_LOCAL_CONFIG}
4
+
5
+ ## Stopped the following files from syncing:
6
+
7
+ ${result.localSkipFiles.reduce((s, file)=>{
8
+ return `${s}* ${file}\n`;
9
+ }, "")}
10
+
11
+ ## Changed the following files from what they would have synced:
12
+
13
+ ${Object.keys(result.localFileChanges).reduce((s, file)=>{
14
+ return `${s}${file}
15
+ \`\`\`diff
16
+ ${result.localFileChanges[file].reduce((diffS, change)=>{
17
+ return `${diffS}\n${makeChangeIntoDiffLines(change)}`;
18
+ }, "")}
19
+ \`\`\``;
20
+ }, "")}
21
+
22
+ ## Files Modified (${result.modifiedFiles.total})
23
+
24
+ Added:
25
+ ${result.modifiedFiles.added.reduce((s, f)=>{
26
+ return `${s}\n- ${f}`;
27
+ }, "")}
28
+
29
+ Modified:
30
+ ${result.modifiedFiles.modified.reduce((s, f)=>{
31
+ return `${s}\n- ${f}`;
32
+ }, "")}
33
+
34
+ Deleted:
35
+ ${result.modifiedFiles.deleted.reduce((s, f)=>{
36
+ return `${s}\n- ${f}`;
37
+ }, "")}
38
+ `;
39
+ }
40
+ function makeChangeIntoDiffLines(change, nonchangeMax = 3) {
41
+ const operator = change.added ? "+" : change.removed ? "-" : "";
42
+ if (!operator && nonchangeMax > 0 && change.count && change.count > nonchangeMax) {
43
+ const lines = change.value.split("\n");
44
+ const partial = lines.slice(lines.length - nonchangeMax);
45
+ return `...\n${partial.join("\n")}\n`;
46
+ }
47
+ return change.value.split("\n").reduce((s, line)=>{
48
+ return `${s}${operator}${line}\n`;
49
+ }, "");
50
+ }
51
+
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9mb3JtYXR0aW5nL3N5bmMtcmVzdWx0cy10by1tZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENoYW5nZSB9IGZyb20gXCJkaWZmXCI7XG5pbXBvcnQgdHlwZSB7IFRlbXBsYXRlU3luY1JldHVybiB9IGZyb20gXCIuLi90ZW1wbGF0ZS1zeW5jXCI7XG5pbXBvcnQgeyBURU1QTEFURV9TWU5DX0xPQ0FMX0NPTkZJRyB9IGZyb20gXCIuLi90ZW1wbGF0ZS1zeW5jXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBzeW5jUmVzdWx0c1RvTWQocmVzdWx0OiBUZW1wbGF0ZVN5bmNSZXR1cm4pIHtcblx0cmV0dXJuIGAjICR7VEVNUExBVEVfU1lOQ19MT0NBTF9DT05GSUd9IFxuXG4jIyBTdG9wcGVkIHRoZSBmb2xsb3dpbmcgZmlsZXMgZnJvbSBzeW5jaW5nOlxuXG4ke3Jlc3VsdC5sb2NhbFNraXBGaWxlcy5yZWR1Y2UoKHMsIGZpbGUpID0+IHtcblx0cmV0dXJuIGAke3N9KiAke2ZpbGV9XFxuYDtcbn0sIFwiXCIpfVxuXG4jIyBDaGFuZ2VkIHRoZSBmb2xsb3dpbmcgZmlsZXMgZnJvbSB3aGF0IHRoZXkgd291bGQgaGF2ZSBzeW5jZWQ6XG5cbiR7T2JqZWN0LmtleXMocmVzdWx0LmxvY2FsRmlsZUNoYW5nZXMpLnJlZHVjZSgocywgZmlsZSkgPT4ge1xuXHRyZXR1cm4gYCR7c30ke2ZpbGV9XG5cXGBcXGBcXGBkaWZmXG4ke3Jlc3VsdC5sb2NhbEZpbGVDaGFuZ2VzW2ZpbGVdLnJlZHVjZSgoZGlmZlMsIGNoYW5nZSkgPT4ge1xuXHRyZXR1cm4gYCR7ZGlmZlN9XFxuJHttYWtlQ2hhbmdlSW50b0RpZmZMaW5lcyhjaGFuZ2UpfWA7XG59LCBcIlwiKX1cblxcYFxcYFxcYGA7XG59LCBcIlwiKX1cblxuIyMgRmlsZXMgTW9kaWZpZWQgKCR7cmVzdWx0Lm1vZGlmaWVkRmlsZXMudG90YWx9KVxuXG5BZGRlZDpcbiR7cmVzdWx0Lm1vZGlmaWVkRmlsZXMuYWRkZWQucmVkdWNlKChzLCBmKSA9PiB7XG5cdHJldHVybiBgJHtzfVxcbi0gJHtmfWA7XG59LCBcIlwiKX1cblxuTW9kaWZpZWQ6XG4ke3Jlc3VsdC5tb2RpZmllZEZpbGVzLm1vZGlmaWVkLnJlZHVjZSgocywgZikgPT4ge1xuXHRyZXR1cm4gYCR7c31cXG4tICR7Zn1gO1xufSwgXCJcIil9XG5cbkRlbGV0ZWQ6XG4ke3Jlc3VsdC5tb2RpZmllZEZpbGVzLmRlbGV0ZWQucmVkdWNlKChzLCBmKSA9PiB7XG5cdHJldHVybiBgJHtzfVxcbi0gJHtmfWA7XG59LCBcIlwiKX1cbmA7XG59XG5cbmZ1bmN0aW9uIG1ha2VDaGFuZ2VJbnRvRGlmZkxpbmVzKGNoYW5nZTogQ2hhbmdlLCBub25jaGFuZ2VNYXggPSAzKSB7XG5cdGNvbnN0IG9wZXJhdG9yID0gY2hhbmdlLmFkZGVkID8gXCIrXCIgOiBjaGFuZ2UucmVtb3ZlZCA/IFwiLVwiIDogXCJcIjtcblxuXHRpZiAoXG5cdFx0IW9wZXJhdG9yICYmXG5cdFx0bm9uY2hhbmdlTWF4ID4gMCAmJlxuXHRcdGNoYW5nZS5jb3VudCAmJlxuXHRcdGNoYW5nZS5jb3VudCA+IG5vbmNoYW5nZU1heFxuXHQpIHtcblx0XHRjb25zdCBsaW5lcyA9IGNoYW5nZS52YWx1ZS5zcGxpdChcIlxcblwiKTtcblx0XHRjb25zdCBwYXJ0aWFsID0gbGluZXMuc2xpY2UobGluZXMubGVuZ3RoIC0gbm9uY2hhbmdlTWF4KTtcblx0XHRyZXR1cm4gYC4uLlxcbiR7cGFydGlhbC5qb2luKFwiXFxuXCIpfVxcbmA7XG5cdH1cblxuXHRyZXR1cm4gY2hhbmdlLnZhbHVlLnNwbGl0KFwiXFxuXCIpLnJlZHVjZSgocywgbGluZSkgPT4ge1xuXHRcdHJldHVybiBgJHtzfSR7b3BlcmF0b3J9JHtsaW5lfVxcbmA7XG5cdH0sIFwiXCIpO1xufVxuIl0sIm5hbWVzIjpbIlRFTVBMQVRFX1NZTkNfTE9DQUxfQ09ORklHIiwic3luY1Jlc3VsdHNUb01kIiwicmVzdWx0IiwibG9jYWxTa2lwRmlsZXMiLCJyZWR1Y2UiLCJzIiwiZmlsZSIsIk9iamVjdCIsImtleXMiLCJsb2NhbEZpbGVDaGFuZ2VzIiwiZGlmZlMiLCJjaGFuZ2UiLCJtYWtlQ2hhbmdlSW50b0RpZmZMaW5lcyIsIm1vZGlmaWVkRmlsZXMiLCJ0b3RhbCIsImFkZGVkIiwiZiIsIm1vZGlmaWVkIiwiZGVsZXRlZCIsIm5vbmNoYW5nZU1heCIsIm9wZXJhdG9yIiwicmVtb3ZlZCIsImNvdW50IiwibGluZXMiLCJ2YWx1ZSIsInNwbGl0IiwicGFydGlhbCIsInNsaWNlIiwibGVuZ3RoIiwiam9pbiIsImxpbmUiXSwibWFwcGluZ3MiOiJBQUVBLFNBQVNBLDBCQUEwQixRQUFRLHVCQUFtQjtBQUU5RCxPQUFPLFNBQVNDLGdCQUFnQkMsTUFBMEI7SUFDekQsT0FBTyxDQUFDLEVBQUUsRUFBRUYsMkJBQTJCOzs7O0FBSXhDLEVBQUVFLE9BQU9DLGNBQWMsQ0FBQ0MsTUFBTSxDQUFDLENBQUNDLEdBQUdDO1FBQ2xDLE9BQU8sR0FBR0QsRUFBRSxFQUFFLEVBQUVDLEtBQUssRUFBRSxDQUFDO0lBQ3pCLEdBQUcsSUFBSTs7OztBQUlQLEVBQUVDLE9BQU9DLElBQUksQ0FBQ04sT0FBT08sZ0JBQWdCLEVBQUVMLE1BQU0sQ0FBQyxDQUFDQyxHQUFHQztRQUNqRCxPQUFPLEdBQUdELElBQUlDLEtBQUs7O0FBRXBCLEVBQUVKLE9BQU9PLGdCQUFnQixDQUFDSCxLQUFLLENBQUNGLE1BQU0sQ0FBQyxDQUFDTSxPQUFPQztZQUM5QyxPQUFPLEdBQUdELE1BQU0sRUFBRSxFQUFFRSx3QkFBd0JELFNBQVM7UUFDdEQsR0FBRyxJQUFJO01BQ0QsQ0FBQztJQUNQLEdBQUcsSUFBSTs7bUJBRVksRUFBRVQsT0FBT1csYUFBYSxDQUFDQyxLQUFLLENBQUM7OztBQUdoRCxFQUFFWixPQUFPVyxhQUFhLENBQUNFLEtBQUssQ0FBQ1gsTUFBTSxDQUFDLENBQUNDLEdBQUdXO1FBQ3ZDLE9BQU8sR0FBR1gsRUFBRSxJQUFJLEVBQUVXLEdBQUc7SUFDdEIsR0FBRyxJQUFJOzs7QUFHUCxFQUFFZCxPQUFPVyxhQUFhLENBQUNJLFFBQVEsQ0FBQ2IsTUFBTSxDQUFDLENBQUNDLEdBQUdXO1FBQzFDLE9BQU8sR0FBR1gsRUFBRSxJQUFJLEVBQUVXLEdBQUc7SUFDdEIsR0FBRyxJQUFJOzs7QUFHUCxFQUFFZCxPQUFPVyxhQUFhLENBQUNLLE9BQU8sQ0FBQ2QsTUFBTSxDQUFDLENBQUNDLEdBQUdXO1FBQ3pDLE9BQU8sR0FBR1gsRUFBRSxJQUFJLEVBQUVXLEdBQUc7SUFDdEIsR0FBRyxJQUFJO0FBQ1AsQ0FBQztBQUNEO0FBRUEsU0FBU0osd0JBQXdCRCxNQUFjLEVBQUVRLGVBQWUsQ0FBQztJQUNoRSxNQUFNQyxXQUFXVCxPQUFPSSxLQUFLLEdBQUcsTUFBTUosT0FBT1UsT0FBTyxHQUFHLE1BQU07SUFFN0QsSUFDQyxDQUFDRCxZQUNERCxlQUFlLEtBQ2ZSLE9BQU9XLEtBQUssSUFDWlgsT0FBT1csS0FBSyxHQUFHSCxjQUNkO1FBQ0QsTUFBTUksUUFBUVosT0FBT2EsS0FBSyxDQUFDQyxLQUFLLENBQUM7UUFDakMsTUFBTUMsVUFBVUgsTUFBTUksS0FBSyxDQUFDSixNQUFNSyxNQUFNLEdBQUdUO1FBQzNDLE9BQU8sQ0FBQyxLQUFLLEVBQUVPLFFBQVFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUN0QztJQUVBLE9BQU9sQixPQUFPYSxLQUFLLENBQUNDLEtBQUssQ0FBQyxNQUFNckIsTUFBTSxDQUFDLENBQUNDLEdBQUd5QjtRQUMxQyxPQUFPLEdBQUd6QixJQUFJZSxXQUFXVSxLQUFLLEVBQUUsQ0FBQztJQUNsQyxHQUFHO0FBQ0oifQ==
@@ -0,0 +1,41 @@
1
+ import { syncResultsToMd } from "./sync-results-to-md.mjs";
2
+ describe("syncResultsToMd", ()=>{
3
+ it("snapshots", ()=>{
4
+ expect(syncResultsToMd({
5
+ localSkipFiles: [
6
+ "src/file1.ts"
7
+ ],
8
+ localFileChanges: {
9
+ "package.json": [
10
+ {
11
+ count: 8,
12
+ value: "my thing",
13
+ added: true
14
+ },
15
+ {
16
+ count: 10,
17
+ value: "your thang",
18
+ removed: true
19
+ }
20
+ ]
21
+ },
22
+ modifiedFiles: {
23
+ added: [
24
+ "src/something.ts",
25
+ "new_settings.toml"
26
+ ],
27
+ deleted: [
28
+ "TODO.md",
29
+ "throwaway.ts"
30
+ ],
31
+ modified: [
32
+ "something.txt",
33
+ ".env"
34
+ ],
35
+ total: 6
36
+ }
37
+ })).toMatchSnapshot();
38
+ });
39
+ });
40
+
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9mb3JtYXR0aW5nL3N5bmMtcmVzdWx0cy10by1tZC5zcGVjLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHN5bmNSZXN1bHRzVG9NZCB9IGZyb20gXCIuL3N5bmMtcmVzdWx0cy10by1tZFwiO1xuXG5kZXNjcmliZShcInN5bmNSZXN1bHRzVG9NZFwiLCAoKSA9PiB7XG5cdGl0KFwic25hcHNob3RzXCIsICgpID0+IHtcblx0XHRleHBlY3QoXG5cdFx0XHRzeW5jUmVzdWx0c1RvTWQoe1xuXHRcdFx0XHRsb2NhbFNraXBGaWxlczogW1wic3JjL2ZpbGUxLnRzXCJdLFxuXHRcdFx0XHRsb2NhbEZpbGVDaGFuZ2VzOiB7XG5cdFx0XHRcdFx0XCJwYWNrYWdlLmpzb25cIjogW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRjb3VudDogOCxcblx0XHRcdFx0XHRcdFx0dmFsdWU6IFwibXkgdGhpbmdcIixcblx0XHRcdFx0XHRcdFx0YWRkZWQ6IHRydWUsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRjb3VudDogMTAsXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiBcInlvdXIgdGhhbmdcIixcblx0XHRcdFx0XHRcdFx0cmVtb3ZlZDogdHJ1ZSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XSxcblx0XHRcdFx0fSxcblx0XHRcdFx0bW9kaWZpZWRGaWxlczoge1xuXHRcdFx0XHRcdGFkZGVkOiBbXCJzcmMvc29tZXRoaW5nLnRzXCIsIFwibmV3X3NldHRpbmdzLnRvbWxcIl0sXG5cdFx0XHRcdFx0ZGVsZXRlZDogW1wiVE9ETy5tZFwiLCBcInRocm93YXdheS50c1wiXSxcblx0XHRcdFx0XHRtb2RpZmllZDogW1wic29tZXRoaW5nLnR4dFwiLCBcIi5lbnZcIl0sXG5cdFx0XHRcdFx0dG90YWw6IDYsXG5cdFx0XHRcdH0sXG5cdFx0XHR9KSxcblx0XHQpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuXHR9KTtcbn0pO1xuIl0sIm5hbWVzIjpbInN5bmNSZXN1bHRzVG9NZCIsImRlc2NyaWJlIiwiaXQiLCJleHBlY3QiLCJsb2NhbFNraXBGaWxlcyIsImxvY2FsRmlsZUNoYW5nZXMiLCJjb3VudCIsInZhbHVlIiwiYWRkZWQiLCJyZW1vdmVkIiwibW9kaWZpZWRGaWxlcyIsImRlbGV0ZWQiLCJtb2RpZmllZCIsInRvdGFsIiwidG9NYXRjaFNuYXBzaG90Il0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxlQUFlLFFBQVEsMkJBQXVCO0FBRXZEQyxTQUFTLG1CQUFtQjtJQUMzQkMsR0FBRyxhQUFhO1FBQ2ZDLE9BQ0NILGdCQUFnQjtZQUNmSSxnQkFBZ0I7Z0JBQUM7YUFBZTtZQUNoQ0Msa0JBQWtCO2dCQUNqQixnQkFBZ0I7b0JBQ2Y7d0JBQ0NDLE9BQU87d0JBQ1BDLE9BQU87d0JBQ1BDLE9BQU87b0JBQ1I7b0JBQ0E7d0JBQ0NGLE9BQU87d0JBQ1BDLE9BQU87d0JBQ1BFLFNBQVM7b0JBQ1Y7aUJBQ0E7WUFDRjtZQUNBQyxlQUFlO2dCQUNkRixPQUFPO29CQUFDO29CQUFvQjtpQkFBb0I7Z0JBQ2hERyxTQUFTO29CQUFDO29CQUFXO2lCQUFlO2dCQUNwQ0MsVUFBVTtvQkFBQztvQkFBaUI7aUJBQU87Z0JBQ25DQyxPQUFPO1lBQ1I7UUFDRCxJQUNDQyxlQUFlO0lBQ2xCO0FBQ0QifQ==
@@ -0,0 +1,5 @@
1
+ export * from "./formatting/index.mjs";
2
+ export * from "./template-sync.mjs";
3
+ export * from "./types.mjs";
4
+
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9mb3JtYXR0aW5nXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90ZW1wbGF0ZS1zeW5jXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90eXBlc1wiO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMseUJBQWU7QUFDN0IsY0FBYyxzQkFBa0I7QUFDaEMsY0FBYyxjQUFVIn0=
@@ -0,0 +1,40 @@
1
+ import { existsSync } from "fs";
2
+ import { resolve } from "path";
3
+ import { defaultExtensionMap } from "./plugins/index.mjs";
4
+ /**
5
+ * Loads the plugin associated with the merge config
6
+ * @param mergeConfig
7
+ * @param forExt
8
+ * @param configDir
9
+ * @returns
10
+ */ export async function loadPlugin(mergeConfig, configDir) {
11
+ if (mergeConfig.plugin.startsWith("_")) {
12
+ const defaultHandler = Object.values(defaultExtensionMap).find((el)=>el.builtinName === mergeConfig.plugin);
13
+ if (!defaultHandler) {
14
+ throw new Error(`No builtin merge function supplied for ${mergeConfig.plugin}. Cannot have merge config without custom plugin supplied.`);
15
+ }
16
+ return defaultHandler;
17
+ }
18
+ let handler;
19
+ // First check if this is a local .js file
20
+ const localPath = resolve(configDir, mergeConfig.plugin);
21
+ const importPath = existsSync(localPath) ? localPath : mergeConfig.plugin;
22
+ try {
23
+ // Sad workaround for testing since dynamic import segfaults
24
+ if (process.env.JEST_WORKER_ID !== undefined) {
25
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
26
+ handler = require(importPath);
27
+ } else {
28
+ handler = await import(importPath);
29
+ }
30
+ if (!handler.merge) {
31
+ handler = handler.default;
32
+ }
33
+ } catch (err) {
34
+ console.error(err);
35
+ throw err;
36
+ }
37
+ return handler;
38
+ }
39
+
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sb2FkLXBsdWdpbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSBcImZzXCI7XG5pbXBvcnQgeyByZXNvbHZlIH0gZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IGRlZmF1bHRFeHRlbnNpb25NYXAgfSBmcm9tIFwiLi9wbHVnaW5zXCI7XG5pbXBvcnQgdHlwZSB7IE1lcmdlQ29uZmlnLCBNZXJnZVBsdWdpbiB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbi8qKlxuICogTG9hZHMgdGhlIHBsdWdpbiBhc3NvY2lhdGVkIHdpdGggdGhlIG1lcmdlIGNvbmZpZ1xuICogQHBhcmFtIG1lcmdlQ29uZmlnXG4gKiBAcGFyYW0gZm9yRXh0XG4gKiBAcGFyYW0gY29uZmlnRGlyXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZFBsdWdpbjxUPihcblx0bWVyZ2VDb25maWc6IE1lcmdlQ29uZmlnPFQ+LFxuXHRjb25maWdEaXI6IHN0cmluZyxcbik6IFByb21pc2U8TWVyZ2VQbHVnaW48VD4+IHtcblx0aWYgKG1lcmdlQ29uZmlnLnBsdWdpbi5zdGFydHNXaXRoKFwiX1wiKSkge1xuXHRcdGNvbnN0IGRlZmF1bHRIYW5kbGVyID0gT2JqZWN0LnZhbHVlcyhkZWZhdWx0RXh0ZW5zaW9uTWFwKS5maW5kKFxuXHRcdFx0KGVsKSA9PiBlbC5idWlsdGluTmFtZSA9PT0gbWVyZ2VDb25maWcucGx1Z2luLFxuXHRcdCk7XG5cdFx0aWYgKCFkZWZhdWx0SGFuZGxlcikge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKFxuXHRcdFx0XHRgTm8gYnVpbHRpbiBtZXJnZSBmdW5jdGlvbiBzdXBwbGllZCBmb3IgJHttZXJnZUNvbmZpZy5wbHVnaW59LiAgQ2Fubm90IGhhdmUgbWVyZ2UgY29uZmlnIHdpdGhvdXQgY3VzdG9tIHBsdWdpbiBzdXBwbGllZC5gLFxuXHRcdFx0KTtcblx0XHR9XG5cdFx0cmV0dXJuIGRlZmF1bHRIYW5kbGVyIGFzIE1lcmdlUGx1Z2luPFQ+O1xuXHR9XG5cblx0bGV0IGhhbmRsZXI6IE1lcmdlUGx1Z2luPHVua25vd24+O1xuXHQvLyBGaXJzdCBjaGVjayBpZiB0aGlzIGlzIGEgbG9jYWwgLmpzIGZpbGVcblx0Y29uc3QgbG9jYWxQYXRoID0gcmVzb2x2ZShjb25maWdEaXIsIG1lcmdlQ29uZmlnLnBsdWdpbik7XG5cdGNvbnN0IGltcG9ydFBhdGggPSBleGlzdHNTeW5jKGxvY2FsUGF0aCkgPyBsb2NhbFBhdGggOiBtZXJnZUNvbmZpZy5wbHVnaW47XG5cdHRyeSB7XG5cdFx0Ly8gU2FkIHdvcmthcm91bmQgZm9yIHRlc3Rpbmcgc2luY2UgZHluYW1pYyBpbXBvcnQgc2VnZmF1bHRzXG5cdFx0aWYgKHByb2Nlc3MuZW52LkpFU1RfV09SS0VSX0lEICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdmFyLXJlcXVpcmVzXG5cdFx0XHRoYW5kbGVyID0gcmVxdWlyZShpbXBvcnRQYXRoKSBhcyBNZXJnZVBsdWdpbjx1bmtub3duPjtcblx0XHR9IGVsc2Uge1xuXHRcdFx0aGFuZGxlciA9IChhd2FpdCBpbXBvcnQoaW1wb3J0UGF0aCkpIGFzIE1lcmdlUGx1Z2luPHVua25vd24+O1xuXHRcdH1cblx0XHRpZiAoIWhhbmRsZXIubWVyZ2UpIHtcblx0XHRcdGhhbmRsZXIgPSAoaGFuZGxlciBhcyB1bmtub3duIGFzIHsgZGVmYXVsdDogTWVyZ2VQbHVnaW48dW5rbm93bj4gfSlcblx0XHRcdFx0LmRlZmF1bHQ7XG5cdFx0fVxuXHR9IGNhdGNoIChlcnIpIHtcblx0XHRjb25zb2xlLmVycm9yKGVycik7XG5cdFx0dGhyb3cgZXJyO1xuXHR9XG5cblx0cmV0dXJuIGhhbmRsZXIgYXMgTWVyZ2VQbHVnaW48VD47XG59XG4iXSwibmFtZXMiOlsiZXhpc3RzU3luYyIsInJlc29sdmUiLCJkZWZhdWx0RXh0ZW5zaW9uTWFwIiwibG9hZFBsdWdpbiIsIm1lcmdlQ29uZmlnIiwiY29uZmlnRGlyIiwicGx1Z2luIiwic3RhcnRzV2l0aCIsImRlZmF1bHRIYW5kbGVyIiwiT2JqZWN0IiwidmFsdWVzIiwiZmluZCIsImVsIiwiYnVpbHRpbk5hbWUiLCJFcnJvciIsImhhbmRsZXIiLCJsb2NhbFBhdGgiLCJpbXBvcnRQYXRoIiwicHJvY2VzcyIsImVudiIsIkpFU1RfV09SS0VSX0lEIiwidW5kZWZpbmVkIiwicmVxdWlyZSIsIm1lcmdlIiwiZGVmYXVsdCIsImVyciIsImNvbnNvbGUiLCJlcnJvciJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsVUFBVSxRQUFRLEtBQUs7QUFDaEMsU0FBU0MsT0FBTyxRQUFRLE9BQU87QUFDL0IsU0FBU0MsbUJBQW1CLFFBQVEsc0JBQVk7QUFHaEQ7Ozs7OztDQU1DLEdBQ0QsT0FBTyxlQUFlQyxXQUNyQkMsV0FBMkIsRUFDM0JDLFNBQWlCO0lBRWpCLElBQUlELFlBQVlFLE1BQU0sQ0FBQ0MsVUFBVSxDQUFDLE1BQU07UUFDdkMsTUFBTUMsaUJBQWlCQyxPQUFPQyxNQUFNLENBQUNSLHFCQUFxQlMsSUFBSSxDQUM3RCxDQUFDQyxLQUFPQSxHQUFHQyxXQUFXLEtBQUtULFlBQVlFLE1BQU07UUFFOUMsSUFBSSxDQUFDRSxnQkFBZ0I7WUFDcEIsTUFBTSxJQUFJTSxNQUNULENBQUMsdUNBQXVDLEVBQUVWLFlBQVlFLE1BQU0sQ0FBQywyREFBMkQsQ0FBQztRQUUzSDtRQUNBLE9BQU9FO0lBQ1I7SUFFQSxJQUFJTztJQUNKLDBDQUEwQztJQUMxQyxNQUFNQyxZQUFZZixRQUFRSSxXQUFXRCxZQUFZRSxNQUFNO0lBQ3ZELE1BQU1XLGFBQWFqQixXQUFXZ0IsYUFBYUEsWUFBWVosWUFBWUUsTUFBTTtJQUN6RSxJQUFJO1FBQ0gsNERBQTREO1FBQzVELElBQUlZLFFBQVFDLEdBQUcsQ0FBQ0MsY0FBYyxLQUFLQyxXQUFXO1lBQzdDLDhEQUE4RDtZQUM5RE4sVUFBVU8sUUFBUUw7UUFDbkIsT0FBTztZQUNORixVQUFXLE1BQU0sTUFBTSxDQUFDRTtRQUN6QjtRQUNBLElBQUksQ0FBQ0YsUUFBUVEsS0FBSyxFQUFFO1lBQ25CUixVQUFVLEFBQUNBLFFBQ1RTLE9BQU87UUFDVjtJQUNELEVBQUUsT0FBT0MsS0FBSztRQUNiQyxRQUFRQyxLQUFLLENBQUNGO1FBQ2QsTUFBTUE7SUFDUDtJQUVBLE9BQU9WO0FBQ1IifQ==
@@ -0,0 +1,40 @@
1
+ import { readdirSync } from "fs";
2
+ import { some } from "micromatch";
3
+ import { join } from "path";
4
+ export function invertMatchPatterns(patterns) {
5
+ return patterns.map((pattern)=>{
6
+ if (pattern.startsWith("!")) {
7
+ return pattern.slice(1);
8
+ }
9
+ return `!${pattern}`;
10
+ });
11
+ }
12
+ /**
13
+ * Gets all the files in the directory recursively while avoiding any micromatch patterns
14
+ * that would match for ignoring
15
+ *
16
+ * @param dir
17
+ * @param ignorePatterns
18
+ * @returns
19
+ */ export function getAllFilesInDir(dir, ignorePatterns) {
20
+ return recurseDirsForFiles(dir, ignorePatterns);
21
+ }
22
+ function recurseDirsForFiles(dirpath, ignorePatterns, relativeRoot = "") {
23
+ return readdirSync(dirpath, {
24
+ withFileTypes: true
25
+ }).reduce((files, f)=>{
26
+ const relPath = join(relativeRoot, f.name);
27
+ if (some(relPath, ignorePatterns)) {
28
+ return files;
29
+ }
30
+ // Ensure we aren't ignoring these folders explicitly
31
+ if (f.isDirectory()) {
32
+ files.push(...recurseDirsForFiles(join(dirpath, f.name), ignorePatterns, relPath));
33
+ } else {
34
+ files.push(relPath);
35
+ }
36
+ return files;
37
+ }, []);
38
+ }
39
+
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tYXRjaC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZWFkZGlyU3luYyB9IGZyb20gXCJmc1wiO1xuaW1wb3J0IHsgc29tZSB9IGZyb20gXCJtaWNyb21hdGNoXCI7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSBcInBhdGhcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGludmVydE1hdGNoUGF0dGVybnMocGF0dGVybnM6IHN0cmluZ1tdKSB7XG5cdHJldHVybiBwYXR0ZXJucy5tYXAoKHBhdHRlcm4pID0+IHtcblx0XHRpZiAocGF0dGVybi5zdGFydHNXaXRoKFwiIVwiKSkge1xuXHRcdFx0cmV0dXJuIHBhdHRlcm4uc2xpY2UoMSk7XG5cdFx0fVxuXHRcdHJldHVybiBgISR7cGF0dGVybn1gO1xuXHR9KTtcbn1cblxuLyoqXG4gKiBHZXRzIGFsbCB0aGUgZmlsZXMgaW4gdGhlIGRpcmVjdG9yeSByZWN1cnNpdmVseSB3aGlsZSBhdm9pZGluZyBhbnkgbWljcm9tYXRjaCBwYXR0ZXJuc1xuICogdGhhdCB3b3VsZCBtYXRjaCBmb3IgaWdub3JpbmdcbiAqXG4gKiBAcGFyYW0gZGlyXG4gKiBAcGFyYW0gaWdub3JlUGF0dGVybnNcbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBbGxGaWxlc0luRGlyKFxuXHRkaXI6IHN0cmluZyxcblx0aWdub3JlUGF0dGVybnM6IHN0cmluZ1tdLFxuKTogc3RyaW5nW10ge1xuXHRyZXR1cm4gcmVjdXJzZURpcnNGb3JGaWxlcyhkaXIsIGlnbm9yZVBhdHRlcm5zKTtcbn1cblxuZnVuY3Rpb24gcmVjdXJzZURpcnNGb3JGaWxlcyhcblx0ZGlycGF0aDogc3RyaW5nLFxuXHRpZ25vcmVQYXR0ZXJuczogc3RyaW5nW10sXG5cdHJlbGF0aXZlUm9vdCA9IFwiXCIsXG4pOiBzdHJpbmdbXSB7XG5cdHJldHVybiByZWFkZGlyU3luYyhkaXJwYXRoLCB7XG5cdFx0d2l0aEZpbGVUeXBlczogdHJ1ZSxcblx0fSkucmVkdWNlKChmaWxlcywgZikgPT4ge1xuXHRcdGNvbnN0IHJlbFBhdGggPSBqb2luKHJlbGF0aXZlUm9vdCwgZi5uYW1lKTtcblx0XHRpZiAoc29tZShyZWxQYXRoLCBpZ25vcmVQYXR0ZXJucykpIHtcblx0XHRcdHJldHVybiBmaWxlcztcblx0XHR9XG5cblx0XHQvLyBFbnN1cmUgd2UgYXJlbid0IGlnbm9yaW5nIHRoZXNlIGZvbGRlcnMgZXhwbGljaXRseVxuXHRcdGlmIChmLmlzRGlyZWN0b3J5KCkpIHtcblx0XHRcdGZpbGVzLnB1c2goXG5cdFx0XHRcdC4uLnJlY3Vyc2VEaXJzRm9yRmlsZXMoam9pbihkaXJwYXRoLCBmLm5hbWUpLCBpZ25vcmVQYXR0ZXJucywgcmVsUGF0aCksXG5cdFx0XHQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRmaWxlcy5wdXNoKHJlbFBhdGgpO1xuXHRcdH1cblx0XHRyZXR1cm4gZmlsZXM7XG5cdH0sIFtdIGFzIHN0cmluZ1tdKTtcbn1cbiJdLCJuYW1lcyI6WyJyZWFkZGlyU3luYyIsInNvbWUiLCJqb2luIiwiaW52ZXJ0TWF0Y2hQYXR0ZXJucyIsInBhdHRlcm5zIiwibWFwIiwicGF0dGVybiIsInN0YXJ0c1dpdGgiLCJzbGljZSIsImdldEFsbEZpbGVzSW5EaXIiLCJkaXIiLCJpZ25vcmVQYXR0ZXJucyIsInJlY3Vyc2VEaXJzRm9yRmlsZXMiLCJkaXJwYXRoIiwicmVsYXRpdmVSb290Iiwid2l0aEZpbGVUeXBlcyIsInJlZHVjZSIsImZpbGVzIiwiZiIsInJlbFBhdGgiLCJuYW1lIiwiaXNEaXJlY3RvcnkiLCJwdXNoIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxXQUFXLFFBQVEsS0FBSztBQUNqQyxTQUFTQyxJQUFJLFFBQVEsYUFBYTtBQUNsQyxTQUFTQyxJQUFJLFFBQVEsT0FBTztBQUU1QixPQUFPLFNBQVNDLG9CQUFvQkMsUUFBa0I7SUFDckQsT0FBT0EsU0FBU0MsR0FBRyxDQUFDLENBQUNDO1FBQ3BCLElBQUlBLFFBQVFDLFVBQVUsQ0FBQyxNQUFNO1lBQzVCLE9BQU9ELFFBQVFFLEtBQUssQ0FBQztRQUN0QjtRQUNBLE9BQU8sQ0FBQyxDQUFDLEVBQUVGLFNBQVM7SUFDckI7QUFDRDtBQUVBOzs7Ozs7O0NBT0MsR0FDRCxPQUFPLFNBQVNHLGlCQUNmQyxHQUFXLEVBQ1hDLGNBQXdCO0lBRXhCLE9BQU9DLG9CQUFvQkYsS0FBS0M7QUFDakM7QUFFQSxTQUFTQyxvQkFDUkMsT0FBZSxFQUNmRixjQUF3QixFQUN4QkcsZUFBZSxFQUFFO0lBRWpCLE9BQU9kLFlBQVlhLFNBQVM7UUFDM0JFLGVBQWU7SUFDaEIsR0FBR0MsTUFBTSxDQUFDLENBQUNDLE9BQU9DO1FBQ2pCLE1BQU1DLFVBQVVqQixLQUFLWSxjQUFjSSxFQUFFRSxJQUFJO1FBQ3pDLElBQUluQixLQUFLa0IsU0FBU1IsaUJBQWlCO1lBQ2xDLE9BQU9NO1FBQ1I7UUFFQSxxREFBcUQ7UUFDckQsSUFBSUMsRUFBRUcsV0FBVyxJQUFJO1lBQ3BCSixNQUFNSyxJQUFJLElBQ05WLG9CQUFvQlYsS0FBS1csU0FBU0ssRUFBRUUsSUFBSSxHQUFHVCxnQkFBZ0JRO1FBRWhFLE9BQU87WUFDTkYsTUFBTUssSUFBSSxDQUFDSDtRQUNaO1FBQ0EsT0FBT0Y7SUFDUixHQUFHLEVBQUU7QUFDTiJ9