@strapi/upgrade 0.0.0-next.fdac61dd05ca665168f51f655f1d165b55ec4231 → 0.0.0-next.ffc36acb308febe288f1a31b62cbbb75b286585c

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 (247) hide show
  1. package/dist/cli.js +6 -203
  2. package/dist/cli.js.map +1 -1
  3. package/dist/cli.mjs +5 -202
  4. package/dist/cli.mjs.map +1 -1
  5. package/dist/index.js +4 -155
  6. package/dist/index.js.map +1 -1
  7. package/dist/index.mjs +4 -157
  8. package/dist/index.mjs.map +1 -1
  9. package/dist/modules/codemod-repository/constants.d.ts.map +1 -1
  10. package/dist/modules/npm/package.d.ts.map +1 -1
  11. package/dist/package.json.js +6 -0
  12. package/dist/package.json.js.map +1 -0
  13. package/dist/package.json.mjs +4 -0
  14. package/dist/package.json.mjs.map +1 -0
  15. package/dist/src/cli/commands/codemods.js +121 -0
  16. package/dist/src/cli/commands/codemods.js.map +1 -0
  17. package/dist/src/cli/commands/codemods.mjs +117 -0
  18. package/dist/src/cli/commands/codemods.mjs.map +1 -0
  19. package/dist/src/cli/commands/upgrade.js +99 -0
  20. package/dist/src/cli/commands/upgrade.js.map +1 -0
  21. package/dist/src/cli/commands/upgrade.mjs +96 -0
  22. package/dist/src/cli/commands/upgrade.mjs.map +1 -0
  23. package/dist/src/cli/errors.js +18 -0
  24. package/dist/src/cli/errors.js.map +1 -0
  25. package/dist/src/cli/errors.mjs +16 -0
  26. package/dist/src/cli/errors.mjs.map +1 -0
  27. package/dist/src/cli/options.js +26 -0
  28. package/dist/src/cli/options.js.map +1 -0
  29. package/dist/src/cli/options.mjs +19 -0
  30. package/dist/src/cli/options.mjs.map +1 -0
  31. package/dist/src/modules/codemod/codemod.js +44 -0
  32. package/dist/src/modules/codemod/codemod.js.map +1 -0
  33. package/dist/src/modules/codemod/codemod.mjs +41 -0
  34. package/dist/src/modules/codemod/codemod.mjs.map +1 -0
  35. package/dist/src/modules/codemod/constants.js +17 -0
  36. package/dist/src/modules/codemod/constants.js.map +1 -0
  37. package/dist/src/modules/codemod/constants.mjs +11 -0
  38. package/dist/src/modules/codemod/constants.mjs.map +1 -0
  39. package/dist/src/modules/codemod/index.js +10 -0
  40. package/dist/src/modules/codemod/index.js.map +1 -0
  41. package/dist/src/modules/codemod/index.mjs +4 -0
  42. package/dist/src/modules/codemod/index.mjs.map +1 -0
  43. package/dist/src/modules/codemod-repository/constants.js +9 -0
  44. package/dist/src/modules/codemod-repository/constants.js.map +1 -0
  45. package/dist/src/modules/codemod-repository/constants.mjs +7 -0
  46. package/dist/src/modules/codemod-repository/constants.mjs.map +1 -0
  47. package/dist/src/modules/codemod-repository/index.js +10 -0
  48. package/dist/src/modules/codemod-repository/index.js.map +1 -0
  49. package/dist/src/modules/codemod-repository/index.mjs +4 -0
  50. package/dist/src/modules/codemod-repository/index.mjs.map +1 -0
  51. package/dist/src/modules/codemod-repository/repository.js +127 -0
  52. package/dist/src/modules/codemod-repository/repository.js.map +1 -0
  53. package/dist/src/modules/codemod-repository/repository.mjs +123 -0
  54. package/dist/src/modules/codemod-repository/repository.mjs.map +1 -0
  55. package/dist/src/modules/codemod-runner/codemod-runner.js +113 -0
  56. package/dist/src/modules/codemod-runner/codemod-runner.js.map +1 -0
  57. package/dist/src/modules/codemod-runner/codemod-runner.mjs +110 -0
  58. package/dist/src/modules/codemod-runner/codemod-runner.mjs.map +1 -0
  59. package/dist/src/modules/error/index.js +11 -0
  60. package/dist/src/modules/error/index.js.map +1 -0
  61. package/dist/src/modules/error/index.mjs +2 -0
  62. package/dist/src/modules/error/index.mjs.map +1 -0
  63. package/dist/src/modules/error/utils.js +33 -0
  64. package/dist/src/modules/error/utils.js.map +1 -0
  65. package/dist/src/modules/error/utils.mjs +28 -0
  66. package/dist/src/modules/error/utils.mjs.map +1 -0
  67. package/dist/src/modules/file-scanner/index.js +8 -0
  68. package/dist/src/modules/file-scanner/index.js.map +1 -0
  69. package/dist/src/modules/file-scanner/index.mjs +2 -0
  70. package/dist/src/modules/file-scanner/index.mjs.map +1 -0
  71. package/dist/src/modules/file-scanner/scanner.js +23 -0
  72. package/dist/src/modules/file-scanner/scanner.js.map +1 -0
  73. package/dist/src/modules/file-scanner/scanner.mjs +20 -0
  74. package/dist/src/modules/file-scanner/scanner.mjs.map +1 -0
  75. package/dist/src/modules/format/formats.js +107 -0
  76. package/dist/src/modules/format/formats.js.map +1 -0
  77. package/dist/src/modules/format/formats.mjs +94 -0
  78. package/dist/src/modules/format/formats.mjs.map +1 -0
  79. package/dist/src/modules/format/index.js +19 -0
  80. package/dist/src/modules/format/index.js.map +1 -0
  81. package/dist/src/modules/format/index.mjs +2 -0
  82. package/dist/src/modules/format/index.mjs.map +1 -0
  83. package/dist/src/modules/index.js +32 -0
  84. package/dist/src/modules/index.js.map +1 -0
  85. package/dist/src/modules/index.mjs +27 -0
  86. package/dist/src/modules/index.mjs.map +1 -0
  87. package/dist/src/modules/json/file.js +16 -0
  88. package/dist/src/modules/json/file.js.map +1 -0
  89. package/dist/src/modules/json/file.mjs +13 -0
  90. package/dist/src/modules/json/file.mjs.map +1 -0
  91. package/dist/src/modules/json/transform-api.js +38 -0
  92. package/dist/src/modules/json/transform-api.js.map +1 -0
  93. package/dist/src/modules/json/transform-api.mjs +35 -0
  94. package/dist/src/modules/json/transform-api.mjs.map +1 -0
  95. package/dist/src/modules/logger/index.js +8 -0
  96. package/dist/src/modules/logger/index.js.map +1 -0
  97. package/dist/src/modules/logger/index.mjs +2 -0
  98. package/dist/src/modules/logger/index.mjs.map +1 -0
  99. package/dist/src/modules/logger/logger.js +76 -0
  100. package/dist/src/modules/logger/logger.js.map +1 -0
  101. package/dist/src/modules/logger/logger.mjs +73 -0
  102. package/dist/src/modules/logger/logger.mjs.map +1 -0
  103. package/dist/src/modules/npm/constants.js +6 -0
  104. package/dist/src/modules/npm/constants.js.map +1 -0
  105. package/dist/src/modules/npm/constants.mjs +4 -0
  106. package/dist/src/modules/npm/constants.mjs.map +1 -0
  107. package/dist/src/modules/npm/package.js +61 -0
  108. package/dist/src/modules/npm/package.js.map +1 -0
  109. package/dist/src/modules/npm/package.mjs +58 -0
  110. package/dist/src/modules/npm/package.mjs.map +1 -0
  111. package/dist/src/modules/project/constants.js +45 -0
  112. package/dist/src/modules/project/constants.js.map +1 -0
  113. package/dist/src/modules/project/constants.mjs +35 -0
  114. package/dist/src/modules/project/constants.mjs.map +1 -0
  115. package/dist/src/modules/project/index.js +15 -0
  116. package/dist/src/modules/project/index.js.map +1 -0
  117. package/dist/src/modules/project/index.mjs +5 -0
  118. package/dist/src/modules/project/index.mjs.map +1 -0
  119. package/dist/src/modules/project/project.js +208 -0
  120. package/dist/src/modules/project/project.js.map +1 -0
  121. package/dist/src/modules/project/project.mjs +203 -0
  122. package/dist/src/modules/project/project.mjs.map +1 -0
  123. package/dist/src/modules/project/utils.js +26 -0
  124. package/dist/src/modules/project/utils.js.map +1 -0
  125. package/dist/src/modules/project/utils.mjs +21 -0
  126. package/dist/src/modules/project/utils.mjs.map +1 -0
  127. package/dist/src/modules/report/index.js +9 -0
  128. package/dist/src/modules/report/index.js.map +1 -0
  129. package/dist/src/modules/report/index.mjs +2 -0
  130. package/dist/src/modules/report/index.mjs.map +1 -0
  131. package/dist/src/modules/report/report.js +13 -0
  132. package/dist/src/modules/report/report.js.map +1 -0
  133. package/dist/src/modules/report/report.mjs +10 -0
  134. package/dist/src/modules/report/report.mjs.map +1 -0
  135. package/dist/src/modules/requirement/index.js +8 -0
  136. package/dist/src/modules/requirement/index.js.map +1 -0
  137. package/dist/src/modules/requirement/index.mjs +2 -0
  138. package/dist/src/modules/requirement/index.mjs.map +1 -0
  139. package/dist/src/modules/requirement/requirement.js +55 -0
  140. package/dist/src/modules/requirement/requirement.js.map +1 -0
  141. package/dist/src/modules/requirement/requirement.mjs +52 -0
  142. package/dist/src/modules/requirement/requirement.mjs.map +1 -0
  143. package/dist/src/modules/runner/code/code.js +21 -0
  144. package/dist/src/modules/runner/code/code.js.map +1 -0
  145. package/dist/src/modules/runner/code/code.mjs +18 -0
  146. package/dist/src/modules/runner/code/code.mjs.map +1 -0
  147. package/dist/src/modules/runner/code/index.js +8 -0
  148. package/dist/src/modules/runner/code/index.js.map +1 -0
  149. package/dist/src/modules/runner/code/index.mjs +2 -0
  150. package/dist/src/modules/runner/code/index.mjs.map +1 -0
  151. package/dist/src/modules/runner/index.js +10 -0
  152. package/dist/src/modules/runner/index.js.map +1 -0
  153. package/dist/src/modules/runner/index.mjs +5 -0
  154. package/dist/src/modules/runner/index.mjs.map +1 -0
  155. package/dist/src/modules/runner/json/index.js +8 -0
  156. package/dist/src/modules/runner/json/index.js.map +1 -0
  157. package/dist/src/modules/runner/json/index.mjs +2 -0
  158. package/dist/src/modules/runner/json/index.mjs.map +1 -0
  159. package/dist/src/modules/runner/json/json.js +21 -0
  160. package/dist/src/modules/runner/json/json.js.map +1 -0
  161. package/dist/src/modules/runner/json/json.mjs +18 -0
  162. package/dist/src/modules/runner/json/json.mjs.map +1 -0
  163. package/dist/src/modules/runner/json/transform.js +85 -0
  164. package/dist/src/modules/runner/json/transform.js.map +1 -0
  165. package/dist/src/modules/runner/json/transform.mjs +83 -0
  166. package/dist/src/modules/runner/json/transform.mjs.map +1 -0
  167. package/dist/src/modules/runner/runner.js +22 -0
  168. package/dist/src/modules/runner/runner.js.map +1 -0
  169. package/dist/src/modules/runner/runner.mjs +20 -0
  170. package/dist/src/modules/runner/runner.mjs.map +1 -0
  171. package/dist/src/modules/timer/constants.js +6 -0
  172. package/dist/src/modules/timer/constants.js.map +1 -0
  173. package/dist/src/modules/timer/constants.mjs +4 -0
  174. package/dist/src/modules/timer/constants.mjs.map +1 -0
  175. package/dist/src/modules/timer/index.js +10 -0
  176. package/dist/src/modules/timer/index.js.map +1 -0
  177. package/dist/src/modules/timer/index.mjs +4 -0
  178. package/dist/src/modules/timer/index.mjs.map +1 -0
  179. package/dist/src/modules/timer/timer.js +33 -0
  180. package/dist/src/modules/timer/timer.js.map +1 -0
  181. package/dist/src/modules/timer/timer.mjs +30 -0
  182. package/dist/src/modules/timer/timer.mjs.map +1 -0
  183. package/dist/src/modules/upgrader/constants.js +6 -0
  184. package/dist/src/modules/upgrader/constants.js.map +1 -0
  185. package/dist/src/modules/upgrader/constants.mjs +4 -0
  186. package/dist/src/modules/upgrader/constants.mjs.map +1 -0
  187. package/dist/src/modules/upgrader/index.js +10 -0
  188. package/dist/src/modules/upgrader/index.js.map +1 -0
  189. package/dist/src/modules/upgrader/index.mjs +4 -0
  190. package/dist/src/modules/upgrader/index.mjs.map +1 -0
  191. package/dist/src/modules/upgrader/upgrader.js +266 -0
  192. package/dist/src/modules/upgrader/upgrader.js.map +1 -0
  193. package/dist/src/modules/upgrader/upgrader.mjs +263 -0
  194. package/dist/src/modules/upgrader/upgrader.mjs.map +1 -0
  195. package/dist/src/modules/version/index.js +20 -0
  196. package/dist/src/modules/version/index.js.map +1 -0
  197. package/dist/src/modules/version/index.mjs +5 -0
  198. package/dist/src/modules/version/index.mjs.map +1 -0
  199. package/dist/src/modules/version/range.js +81 -0
  200. package/dist/src/modules/version/range.js.map +1 -0
  201. package/dist/src/modules/version/range.mjs +75 -0
  202. package/dist/src/modules/version/range.mjs.map +1 -0
  203. package/dist/src/modules/version/semver.js +26 -0
  204. package/dist/src/modules/version/semver.js.map +1 -0
  205. package/dist/src/modules/version/semver.mjs +20 -0
  206. package/dist/src/modules/version/semver.mjs.map +1 -0
  207. package/dist/src/modules/version/types.js +12 -0
  208. package/dist/src/modules/version/types.js.map +1 -0
  209. package/dist/src/modules/version/types.mjs +12 -0
  210. package/dist/src/modules/version/types.mjs.map +1 -0
  211. package/dist/src/tasks/codemods/list-codemods.js +40 -0
  212. package/dist/src/tasks/codemods/list-codemods.js.map +1 -0
  213. package/dist/src/tasks/codemods/list-codemods.mjs +38 -0
  214. package/dist/src/tasks/codemods/list-codemods.mjs.map +1 -0
  215. package/dist/src/tasks/codemods/run-codemods.js +36 -0
  216. package/dist/src/tasks/codemods/run-codemods.js.map +1 -0
  217. package/dist/src/tasks/codemods/run-codemods.mjs +34 -0
  218. package/dist/src/tasks/codemods/run-codemods.mjs.map +1 -0
  219. package/dist/src/tasks/codemods/utils.js +54 -0
  220. package/dist/src/tasks/codemods/utils.js.map +1 -0
  221. package/dist/src/tasks/codemods/utils.mjs +50 -0
  222. package/dist/src/tasks/codemods/utils.mjs.map +1 -0
  223. package/dist/src/tasks/index.js +15 -0
  224. package/dist/src/tasks/index.js.map +1 -0
  225. package/dist/src/tasks/index.mjs +7 -0
  226. package/dist/src/tasks/index.mjs.map +1 -0
  227. package/dist/src/tasks/upgrade/prompts/latest.js +48 -0
  228. package/dist/src/tasks/upgrade/prompts/latest.js.map +1 -0
  229. package/dist/src/tasks/upgrade/prompts/latest.mjs +46 -0
  230. package/dist/src/tasks/upgrade/prompts/latest.mjs.map +1 -0
  231. package/dist/src/tasks/upgrade/requirements/common.js +40 -0
  232. package/dist/src/tasks/upgrade/requirements/common.js.map +1 -0
  233. package/dist/src/tasks/upgrade/requirements/common.mjs +35 -0
  234. package/dist/src/tasks/upgrade/requirements/common.mjs.map +1 -0
  235. package/dist/src/tasks/upgrade/requirements/major.js +29 -0
  236. package/dist/src/tasks/upgrade/requirements/major.js.map +1 -0
  237. package/dist/src/tasks/upgrade/requirements/major.mjs +26 -0
  238. package/dist/src/tasks/upgrade/requirements/major.mjs.map +1 -0
  239. package/dist/src/tasks/upgrade/upgrade.js +69 -0
  240. package/dist/src/tasks/upgrade/upgrade.js.map +1 -0
  241. package/dist/src/tasks/upgrade/upgrade.mjs +67 -0
  242. package/dist/src/tasks/upgrade/upgrade.mjs.map +1 -0
  243. package/package.json +6 -5
  244. package/dist/chunks/logger-DGi224NW.js +0 -1649
  245. package/dist/chunks/logger-DGi224NW.js.map +0 -1
  246. package/dist/chunks/logger-np_r7rTc.mjs +0 -1599
  247. package/dist/chunks/logger-np_r7rTc.mjs.map +0 -1
@@ -0,0 +1,55 @@
1
+ 'use strict';
2
+
3
+ class Requirement {
4
+ setChildren(children) {
5
+ this.children = children;
6
+ return this;
7
+ }
8
+ addChild(child) {
9
+ this.children.push(child);
10
+ return this;
11
+ }
12
+ asOptional() {
13
+ const newInstance = requirementFactory(this.name, this.testCallback, false);
14
+ newInstance.setChildren(this.children);
15
+ return newInstance;
16
+ }
17
+ asRequired() {
18
+ const newInstance = requirementFactory(this.name, this.testCallback, true);
19
+ newInstance.setChildren(this.children);
20
+ return newInstance;
21
+ }
22
+ async test(context) {
23
+ try {
24
+ await this.testCallback?.(context);
25
+ return ok();
26
+ } catch (e) {
27
+ if (e instanceof Error) {
28
+ return errored(e);
29
+ }
30
+ if (typeof e === 'string') {
31
+ return errored(new Error(e));
32
+ }
33
+ return errored(new Error('Unknown error'));
34
+ }
35
+ }
36
+ constructor(name, testCallback, isRequired){
37
+ this.name = name;
38
+ this.testCallback = testCallback;
39
+ this.isRequired = isRequired ?? true;
40
+ this.children = [];
41
+ }
42
+ }
43
+ const ok = ()=>({
44
+ pass: true,
45
+ error: null
46
+ });
47
+ const errored = (error)=>({
48
+ pass: false,
49
+ error
50
+ });
51
+ const requirementFactory = (name, testCallback, isRequired)=>new Requirement(name, testCallback, isRequired);
52
+
53
+ exports.Requirement = Requirement;
54
+ exports.requirementFactory = requirementFactory;
55
+ //# sourceMappingURL=requirement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"requirement.js","sources":["../../../../src/modules/requirement/requirement.ts"],"sourcesContent":["import type {\n Requirement as RequirementInterface,\n RequirementTestCallback,\n TestContext,\n TestResult,\n} from './types';\n\nexport class Requirement implements RequirementInterface {\n readonly isRequired: boolean;\n\n readonly name: string;\n\n readonly testCallback: RequirementTestCallback | null;\n\n children: RequirementInterface[];\n\n constructor(name: string, testCallback: RequirementTestCallback | null, isRequired?: boolean) {\n this.name = name;\n this.testCallback = testCallback;\n this.isRequired = isRequired ?? true;\n this.children = [];\n }\n\n setChildren(children: RequirementInterface[]) {\n this.children = children;\n return this;\n }\n\n addChild(child: RequirementInterface) {\n this.children.push(child);\n return this;\n }\n\n asOptional() {\n const newInstance = requirementFactory(this.name, this.testCallback, false);\n\n newInstance.setChildren(this.children);\n\n return newInstance;\n }\n\n asRequired() {\n const newInstance = requirementFactory(this.name, this.testCallback, true);\n\n newInstance.setChildren(this.children);\n\n return newInstance;\n }\n\n async test(context: TestContext) {\n try {\n await this.testCallback?.(context);\n return ok();\n } catch (e) {\n if (e instanceof Error) {\n return errored(e);\n }\n\n if (typeof e === 'string') {\n return errored(new Error(e));\n }\n\n return errored(new Error('Unknown error'));\n }\n }\n}\n\nconst ok = (): TestResult => ({ pass: true, error: null });\n\nconst errored = (error: Error): TestResult => ({ pass: false, error });\n\nexport const requirementFactory = (\n name: string,\n testCallback: RequirementTestCallback | null,\n isRequired?: boolean\n) => new Requirement(name, testCallback, isRequired);\n"],"names":["Requirement","setChildren","children","addChild","child","push","asOptional","newInstance","requirementFactory","name","testCallback","asRequired","test","context","ok","e","Error","errored","constructor","isRequired","pass","error"],"mappings":";;AAOO,MAAMA,WAAAA,CAAAA;AAgBXC,IAAAA,WAAAA,CAAYC,QAAgC,EAAE;QAC5C,IAAI,CAACA,QAAQ,GAAGA,QAAAA;AAChB,QAAA,OAAO,IAAI;AACb;AAEAC,IAAAA,QAAAA,CAASC,KAA2B,EAAE;AACpC,QAAA,IAAI,CAACF,QAAQ,CAACG,IAAI,CAACD,KAAAA,CAAAA;AACnB,QAAA,OAAO,IAAI;AACb;IAEAE,UAAa,GAAA;QACX,MAAMC,WAAAA,GAAcC,mBAAmB,IAAI,CAACC,IAAI,EAAE,IAAI,CAACC,YAAY,EAAE,KAAA,CAAA;AAErEH,QAAAA,WAAAA,CAAYN,WAAW,CAAC,IAAI,CAACC,QAAQ,CAAA;QAErC,OAAOK,WAAAA;AACT;IAEAI,UAAa,GAAA;QACX,MAAMJ,WAAAA,GAAcC,mBAAmB,IAAI,CAACC,IAAI,EAAE,IAAI,CAACC,YAAY,EAAE,IAAA,CAAA;AAErEH,QAAAA,WAAAA,CAAYN,WAAW,CAAC,IAAI,CAACC,QAAQ,CAAA;QAErC,OAAOK,WAAAA;AACT;IAEA,MAAMK,IAAAA,CAAKC,OAAoB,EAAE;QAC/B,IAAI;YACF,MAAM,IAAI,CAACH,YAAY,GAAGG,OAAAA,CAAAA;YAC1B,OAAOC,EAAAA,EAAAA;AACT,SAAA,CAAE,OAAOC,CAAG,EAAA;AACV,YAAA,IAAIA,aAAaC,KAAO,EAAA;AACtB,gBAAA,OAAOC,OAAQF,CAAAA,CAAAA,CAAAA;AACjB;YAEA,IAAI,OAAOA,MAAM,QAAU,EAAA;gBACzB,OAAOE,OAAAA,CAAQ,IAAID,KAAMD,CAAAA,CAAAA,CAAAA,CAAAA;AAC3B;YAEA,OAAOE,OAAAA,CAAQ,IAAID,KAAM,CAAA,eAAA,CAAA,CAAA;AAC3B;AACF;AAhDAE,IAAAA,WAAAA,CAAYT,IAAY,EAAEC,YAA4C,EAAES,UAAoB,CAAE;QAC5F,IAAI,CAACV,IAAI,GAAGA,IAAAA;QACZ,IAAI,CAACC,YAAY,GAAGA,YAAAA;QACpB,IAAI,CAACS,UAAU,GAAGA,UAAc,IAAA,IAAA;QAChC,IAAI,CAACjB,QAAQ,GAAG,EAAE;AACpB;AA4CF;AAEA,MAAMY,EAAAA,GAAK,KAAmB;QAAEM,IAAM,EAAA,IAAA;QAAMC,KAAO,EAAA;KAAK,CAAA;AAExD,MAAMJ,OAAAA,GAAU,CAACI,KAAAA,IAA8B;QAAED,IAAM,EAAA,KAAA;AAAOC,QAAAA;KAAM,CAAA;AAE7D,MAAMb,kBAAqB,GAAA,CAChCC,IACAC,EAAAA,YAAAA,EACAS,aACG,IAAInB,WAAAA,CAAYS,IAAMC,EAAAA,YAAAA,EAAcS,UAAY;;;;;"}
@@ -0,0 +1,52 @@
1
+ class Requirement {
2
+ setChildren(children) {
3
+ this.children = children;
4
+ return this;
5
+ }
6
+ addChild(child) {
7
+ this.children.push(child);
8
+ return this;
9
+ }
10
+ asOptional() {
11
+ const newInstance = requirementFactory(this.name, this.testCallback, false);
12
+ newInstance.setChildren(this.children);
13
+ return newInstance;
14
+ }
15
+ asRequired() {
16
+ const newInstance = requirementFactory(this.name, this.testCallback, true);
17
+ newInstance.setChildren(this.children);
18
+ return newInstance;
19
+ }
20
+ async test(context) {
21
+ try {
22
+ await this.testCallback?.(context);
23
+ return ok();
24
+ } catch (e) {
25
+ if (e instanceof Error) {
26
+ return errored(e);
27
+ }
28
+ if (typeof e === 'string') {
29
+ return errored(new Error(e));
30
+ }
31
+ return errored(new Error('Unknown error'));
32
+ }
33
+ }
34
+ constructor(name, testCallback, isRequired){
35
+ this.name = name;
36
+ this.testCallback = testCallback;
37
+ this.isRequired = isRequired ?? true;
38
+ this.children = [];
39
+ }
40
+ }
41
+ const ok = ()=>({
42
+ pass: true,
43
+ error: null
44
+ });
45
+ const errored = (error)=>({
46
+ pass: false,
47
+ error
48
+ });
49
+ const requirementFactory = (name, testCallback, isRequired)=>new Requirement(name, testCallback, isRequired);
50
+
51
+ export { Requirement, requirementFactory };
52
+ //# sourceMappingURL=requirement.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"requirement.mjs","sources":["../../../../src/modules/requirement/requirement.ts"],"sourcesContent":["import type {\n Requirement as RequirementInterface,\n RequirementTestCallback,\n TestContext,\n TestResult,\n} from './types';\n\nexport class Requirement implements RequirementInterface {\n readonly isRequired: boolean;\n\n readonly name: string;\n\n readonly testCallback: RequirementTestCallback | null;\n\n children: RequirementInterface[];\n\n constructor(name: string, testCallback: RequirementTestCallback | null, isRequired?: boolean) {\n this.name = name;\n this.testCallback = testCallback;\n this.isRequired = isRequired ?? true;\n this.children = [];\n }\n\n setChildren(children: RequirementInterface[]) {\n this.children = children;\n return this;\n }\n\n addChild(child: RequirementInterface) {\n this.children.push(child);\n return this;\n }\n\n asOptional() {\n const newInstance = requirementFactory(this.name, this.testCallback, false);\n\n newInstance.setChildren(this.children);\n\n return newInstance;\n }\n\n asRequired() {\n const newInstance = requirementFactory(this.name, this.testCallback, true);\n\n newInstance.setChildren(this.children);\n\n return newInstance;\n }\n\n async test(context: TestContext) {\n try {\n await this.testCallback?.(context);\n return ok();\n } catch (e) {\n if (e instanceof Error) {\n return errored(e);\n }\n\n if (typeof e === 'string') {\n return errored(new Error(e));\n }\n\n return errored(new Error('Unknown error'));\n }\n }\n}\n\nconst ok = (): TestResult => ({ pass: true, error: null });\n\nconst errored = (error: Error): TestResult => ({ pass: false, error });\n\nexport const requirementFactory = (\n name: string,\n testCallback: RequirementTestCallback | null,\n isRequired?: boolean\n) => new Requirement(name, testCallback, isRequired);\n"],"names":["Requirement","setChildren","children","addChild","child","push","asOptional","newInstance","requirementFactory","name","testCallback","asRequired","test","context","ok","e","Error","errored","constructor","isRequired","pass","error"],"mappings":"AAOO,MAAMA,WAAAA,CAAAA;AAgBXC,IAAAA,WAAAA,CAAYC,QAAgC,EAAE;QAC5C,IAAI,CAACA,QAAQ,GAAGA,QAAAA;AAChB,QAAA,OAAO,IAAI;AACb;AAEAC,IAAAA,QAAAA,CAASC,KAA2B,EAAE;AACpC,QAAA,IAAI,CAACF,QAAQ,CAACG,IAAI,CAACD,KAAAA,CAAAA;AACnB,QAAA,OAAO,IAAI;AACb;IAEAE,UAAa,GAAA;QACX,MAAMC,WAAAA,GAAcC,mBAAmB,IAAI,CAACC,IAAI,EAAE,IAAI,CAACC,YAAY,EAAE,KAAA,CAAA;AAErEH,QAAAA,WAAAA,CAAYN,WAAW,CAAC,IAAI,CAACC,QAAQ,CAAA;QAErC,OAAOK,WAAAA;AACT;IAEAI,UAAa,GAAA;QACX,MAAMJ,WAAAA,GAAcC,mBAAmB,IAAI,CAACC,IAAI,EAAE,IAAI,CAACC,YAAY,EAAE,IAAA,CAAA;AAErEH,QAAAA,WAAAA,CAAYN,WAAW,CAAC,IAAI,CAACC,QAAQ,CAAA;QAErC,OAAOK,WAAAA;AACT;IAEA,MAAMK,IAAAA,CAAKC,OAAoB,EAAE;QAC/B,IAAI;YACF,MAAM,IAAI,CAACH,YAAY,GAAGG,OAAAA,CAAAA;YAC1B,OAAOC,EAAAA,EAAAA;AACT,SAAA,CAAE,OAAOC,CAAG,EAAA;AACV,YAAA,IAAIA,aAAaC,KAAO,EAAA;AACtB,gBAAA,OAAOC,OAAQF,CAAAA,CAAAA,CAAAA;AACjB;YAEA,IAAI,OAAOA,MAAM,QAAU,EAAA;gBACzB,OAAOE,OAAAA,CAAQ,IAAID,KAAMD,CAAAA,CAAAA,CAAAA,CAAAA;AAC3B;YAEA,OAAOE,OAAAA,CAAQ,IAAID,KAAM,CAAA,eAAA,CAAA,CAAA;AAC3B;AACF;AAhDAE,IAAAA,WAAAA,CAAYT,IAAY,EAAEC,YAA4C,EAAES,UAAoB,CAAE;QAC5F,IAAI,CAACV,IAAI,GAAGA,IAAAA;QACZ,IAAI,CAACC,YAAY,GAAGA,YAAAA;QACpB,IAAI,CAACS,UAAU,GAAGA,UAAc,IAAA,IAAA;QAChC,IAAI,CAACjB,QAAQ,GAAG,EAAE;AACpB;AA4CF;AAEA,MAAMY,EAAAA,GAAK,KAAmB;QAAEM,IAAM,EAAA,IAAA;QAAMC,KAAO,EAAA;KAAK,CAAA;AAExD,MAAMJ,OAAAA,GAAU,CAACI,KAAAA,IAA8B;QAAED,IAAM,EAAA,KAAA;AAAOC,QAAAA;KAAM,CAAA;AAE7D,MAAMb,kBAAqB,GAAA,CAChCC,IACAC,EAAAA,YAAAA,EACAS,aACG,IAAInB,WAAAA,CAAYS,IAAMC,EAAAA,YAAAA,EAAcS,UAAY;;;;"}
@@ -0,0 +1,21 @@
1
+ 'use strict';
2
+
3
+ var Runner = require('jscodeshift/src/Runner');
4
+ var runner = require('../runner.js');
5
+
6
+ class CodeRunner extends runner.AbstractRunner {
7
+ valid(codemod) {
8
+ return codemod.kind === 'code';
9
+ }
10
+ constructor(...args){
11
+ super(...args);
12
+ this.runner = Runner.run;
13
+ }
14
+ }
15
+ const codeRunnerFactory = (paths, configuration)=>{
16
+ return new CodeRunner(paths, configuration);
17
+ };
18
+
19
+ exports.CodeRunner = CodeRunner;
20
+ exports.codeRunnerFactory = codeRunnerFactory;
21
+ //# sourceMappingURL=code.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code.js","sources":["../../../../../src/modules/runner/code/code.ts"],"sourcesContent":["import { run as jscodeshift } from 'jscodeshift/src/Runner';\n\nimport { AbstractRunner } from '../runner';\n\nimport type { Codemod } from '../../codemod';\nimport type { CodeRunnerConfiguration } from './types';\n\nexport class CodeRunner extends AbstractRunner<CodeRunnerConfiguration> {\n runner = jscodeshift;\n\n valid(codemod: Codemod.Codemod): boolean {\n return codemod.kind === 'code';\n }\n}\n\nexport const codeRunnerFactory = (paths: string[], configuration: CodeRunnerConfiguration) => {\n return new CodeRunner(paths, configuration);\n};\n"],"names":["CodeRunner","AbstractRunner","valid","codemod","kind","runner","jscodeshift","codeRunnerFactory","paths","configuration"],"mappings":";;;;;AAOO,MAAMA,UAAmBC,SAAAA,qBAAAA,CAAAA;AAG9BC,IAAAA,KAAAA,CAAMC,OAAwB,EAAW;QACvC,OAAOA,OAAAA,CAAQC,IAAI,KAAK,MAAA;AAC1B;;;aAJAC,MAASC,GAAAA,UAAAA;;AAKX;AAEO,MAAMC,iBAAoB,GAAA,CAACC,KAAiBC,EAAAA,aAAAA,GAAAA;IACjD,OAAO,IAAIT,WAAWQ,KAAOC,EAAAA,aAAAA,CAAAA;AAC/B;;;;;"}
@@ -0,0 +1,18 @@
1
+ import { run } from 'jscodeshift/src/Runner';
2
+ import { AbstractRunner } from '../runner.mjs';
3
+
4
+ class CodeRunner extends AbstractRunner {
5
+ valid(codemod) {
6
+ return codemod.kind === 'code';
7
+ }
8
+ constructor(...args){
9
+ super(...args);
10
+ this.runner = run;
11
+ }
12
+ }
13
+ const codeRunnerFactory = (paths, configuration)=>{
14
+ return new CodeRunner(paths, configuration);
15
+ };
16
+
17
+ export { CodeRunner, codeRunnerFactory };
18
+ //# sourceMappingURL=code.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code.mjs","sources":["../../../../../src/modules/runner/code/code.ts"],"sourcesContent":["import { run as jscodeshift } from 'jscodeshift/src/Runner';\n\nimport { AbstractRunner } from '../runner';\n\nimport type { Codemod } from '../../codemod';\nimport type { CodeRunnerConfiguration } from './types';\n\nexport class CodeRunner extends AbstractRunner<CodeRunnerConfiguration> {\n runner = jscodeshift;\n\n valid(codemod: Codemod.Codemod): boolean {\n return codemod.kind === 'code';\n }\n}\n\nexport const codeRunnerFactory = (paths: string[], configuration: CodeRunnerConfiguration) => {\n return new CodeRunner(paths, configuration);\n};\n"],"names":["CodeRunner","AbstractRunner","valid","codemod","kind","runner","jscodeshift","codeRunnerFactory","paths","configuration"],"mappings":";;;AAOO,MAAMA,UAAmBC,SAAAA,cAAAA,CAAAA;AAG9BC,IAAAA,KAAAA,CAAMC,OAAwB,EAAW;QACvC,OAAOA,OAAAA,CAAQC,IAAI,KAAK,MAAA;AAC1B;;;aAJAC,MAASC,GAAAA,GAAAA;;AAKX;AAEO,MAAMC,iBAAoB,GAAA,CAACC,KAAiBC,EAAAA,aAAAA,GAAAA;IACjD,OAAO,IAAIT,WAAWQ,KAAOC,EAAAA,aAAAA,CAAAA;AAC/B;;;;"}
@@ -0,0 +1,8 @@
1
+ 'use strict';
2
+
3
+ var code = require('./code.js');
4
+
5
+
6
+
7
+ exports.codeRunnerFactory = code.codeRunnerFactory;
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -0,0 +1,2 @@
1
+ export { codeRunnerFactory } from './code.mjs';
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ 'use strict';
2
+
3
+ var index = require('./json/index.js');
4
+ var index$1 = require('./code/index.js');
5
+
6
+
7
+
8
+ exports.json = index;
9
+ exports.code = index$1;
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
@@ -0,0 +1,5 @@
1
+ import * as index from './json/index.mjs';
2
+ export { index as json };
3
+ import * as index$1 from './code/index.mjs';
4
+ export { index$1 as code };
5
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
@@ -0,0 +1,8 @@
1
+ 'use strict';
2
+
3
+ var json = require('./json.js');
4
+
5
+
6
+
7
+ exports.jsonRunnerFactory = json.jsonRunnerFactory;
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -0,0 +1,2 @@
1
+ export { jsonRunnerFactory } from './json.mjs';
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,21 @@
1
+ 'use strict';
2
+
3
+ var runner = require('../runner.js');
4
+ var transform = require('./transform.js');
5
+
6
+ class JSONRunner extends runner.AbstractRunner {
7
+ valid(codemod) {
8
+ return codemod.kind === 'json';
9
+ }
10
+ constructor(...args){
11
+ super(...args);
12
+ this.runner = transform.transformJSON;
13
+ }
14
+ }
15
+ const jsonRunnerFactory = (paths, configuration)=>{
16
+ return new JSONRunner(paths, configuration);
17
+ };
18
+
19
+ exports.JSONRunner = JSONRunner;
20
+ exports.jsonRunnerFactory = jsonRunnerFactory;
21
+ //# sourceMappingURL=json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.js","sources":["../../../../../src/modules/runner/json/json.ts"],"sourcesContent":["import { AbstractRunner } from '../runner';\n\nimport { transformJSON } from './transform';\n\nimport type { Codemod } from '../../codemod';\nimport type { JSONRunnerConfiguration } from './types';\n\nexport class JSONRunner extends AbstractRunner<JSONRunnerConfiguration> {\n runner = transformJSON;\n\n valid(codemod: Codemod.Codemod): boolean {\n return codemod.kind === 'json';\n }\n}\n\nexport const jsonRunnerFactory = (paths: string[], configuration: JSONRunnerConfiguration) => {\n return new JSONRunner(paths, configuration);\n};\n"],"names":["JSONRunner","AbstractRunner","valid","codemod","kind","runner","transformJSON","jsonRunnerFactory","paths","configuration"],"mappings":";;;;;AAOO,MAAMA,UAAmBC,SAAAA,qBAAAA,CAAAA;AAG9BC,IAAAA,KAAAA,CAAMC,OAAwB,EAAW;QACvC,OAAOA,OAAAA,CAAQC,IAAI,KAAK,MAAA;AAC1B;;;aAJAC,MAASC,GAAAA,uBAAAA;;AAKX;AAEO,MAAMC,iBAAoB,GAAA,CAACC,KAAiBC,EAAAA,aAAAA,GAAAA;IACjD,OAAO,IAAIT,WAAWQ,KAAOC,EAAAA,aAAAA,CAAAA;AAC/B;;;;;"}
@@ -0,0 +1,18 @@
1
+ import { AbstractRunner } from '../runner.mjs';
2
+ import { transformJSON } from './transform.mjs';
3
+
4
+ class JSONRunner extends AbstractRunner {
5
+ valid(codemod) {
6
+ return codemod.kind === 'json';
7
+ }
8
+ constructor(...args){
9
+ super(...args);
10
+ this.runner = transformJSON;
11
+ }
12
+ }
13
+ const jsonRunnerFactory = (paths, configuration)=>{
14
+ return new JSONRunner(paths, configuration);
15
+ };
16
+
17
+ export { JSONRunner, jsonRunnerFactory };
18
+ //# sourceMappingURL=json.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.mjs","sources":["../../../../../src/modules/runner/json/json.ts"],"sourcesContent":["import { AbstractRunner } from '../runner';\n\nimport { transformJSON } from './transform';\n\nimport type { Codemod } from '../../codemod';\nimport type { JSONRunnerConfiguration } from './types';\n\nexport class JSONRunner extends AbstractRunner<JSONRunnerConfiguration> {\n runner = transformJSON;\n\n valid(codemod: Codemod.Codemod): boolean {\n return codemod.kind === 'json';\n }\n}\n\nexport const jsonRunnerFactory = (paths: string[], configuration: JSONRunnerConfiguration) => {\n return new JSONRunner(paths, configuration);\n};\n"],"names":["JSONRunner","AbstractRunner","valid","codemod","kind","runner","transformJSON","jsonRunnerFactory","paths","configuration"],"mappings":";;;AAOO,MAAMA,UAAmBC,SAAAA,cAAAA,CAAAA;AAG9BC,IAAAA,KAAAA,CAAMC,OAAwB,EAAW;QACvC,OAAOA,OAAAA,CAAQC,IAAI,KAAK,MAAA;AAC1B;;;aAJAC,MAASC,GAAAA,aAAAA;;AAKX;AAEO,MAAMC,iBAAoB,GAAA,CAACC,KAAiBC,EAAAA,aAAAA,GAAAA;IACjD,OAAO,IAAIT,WAAWQ,KAAOC,EAAAA,aAAAA,CAAAA;AAC/B;;;;"}
@@ -0,0 +1,85 @@
1
+ 'use strict';
2
+
3
+ var assert = require('node:assert');
4
+ var fp = require('lodash/fp');
5
+ var node = require('esbuild-register/dist/node');
6
+ var transformApi = require('../../json/transform-api.js');
7
+ var file = require('../../json/file.js');
8
+
9
+ const transformJSON = async (codemodPath, paths, config)=>{
10
+ const { dry } = config;
11
+ const startTime = process.hrtime();
12
+ const report = {
13
+ ok: 0,
14
+ nochange: 0,
15
+ skip: 0,
16
+ error: 0,
17
+ timeElapsed: '',
18
+ stats: {}
19
+ };
20
+ /**
21
+ * Why do we need to include node_modules (hookIgnoreNodeModules) and specify a matcher (hookMatcher) to esbuild?
22
+ *
23
+ * When using tools like npx or dlx, the execution context is different from when running the program in a local
24
+ * project. npx and dlx run the commands in a temporary installation, which is isolated from local project files.
25
+ *
26
+ * When hookIgnoreNodeModules is not specified (or set to true), esbuild-register instructs
27
+ * Pirates (https://github.com/danez/pirates) to not transpile any files that come from node_modules.
28
+ *
29
+ * Now, when using npx or dlx to run a script, its location can be seen as "external" because it's not part of
30
+ * the temporary environment where npx or dlx execute. Therefore, it's considered to be part of node_modules.
31
+ *
32
+ * Due to this, if hookIgnoreNodeModules is set to true or left unspecified,
33
+ * esbuild-register won't try to compile them upon require.
34
+ *
35
+ * hookMatcher is added to make sure we're not matching anything else than our codemod in external directories.
36
+ */ const esbuildOptions = {
37
+ extensions: [
38
+ '.js',
39
+ '.mjs',
40
+ '.ts'
41
+ ],
42
+ hookIgnoreNodeModules: false,
43
+ hookMatcher: fp.isEqual(codemodPath)
44
+ };
45
+ const { unregister } = node.register(esbuildOptions);
46
+ const module = require(codemodPath);
47
+ unregister();
48
+ const codemod = typeof module.default === 'function' ? module.default : module;
49
+ assert(typeof codemod === 'function', `Codemod must be a function. Found ${typeof codemod}`);
50
+ for (const path of paths){
51
+ try {
52
+ const json = await file.readJSON(path);
53
+ // Make sure the JSON value is a JSON object
54
+ assert(typeof json === 'object' && !Array.isArray(json) && json !== null);
55
+ // TODO: Optimize the API to limit parse/stringify operations
56
+ const file$1 = {
57
+ path,
58
+ json
59
+ };
60
+ const params = {
61
+ cwd: config.cwd,
62
+ json: transformApi.createJSONTransformAPI
63
+ };
64
+ const out = await codemod(file$1, params);
65
+ if (out === undefined) {
66
+ report.error += 1;
67
+ } else if (!fp.isEqual(json, out)) {
68
+ if (!dry) {
69
+ await file.saveJSON(path, out);
70
+ }
71
+ report.ok += 1;
72
+ } else {
73
+ report.nochange += 1;
74
+ }
75
+ } catch {
76
+ report.error += 1;
77
+ }
78
+ }
79
+ const endTime = process.hrtime(startTime);
80
+ report.timeElapsed = (endTime[0] + endTime[1] / 1e9).toFixed(3);
81
+ return report;
82
+ };
83
+
84
+ exports.transformJSON = transformJSON;
85
+ //# sourceMappingURL=transform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transform.js","sources":["../../../../../src/modules/runner/json/transform.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-var-requires */\n\nimport assert from 'node:assert';\nimport { isEqual } from 'lodash/fp';\nimport { register } from 'esbuild-register/dist/node';\n\nimport { createJSONTransformAPI, readJSON, saveJSON } from '../../json';\n\nimport type { Report } from '../../report';\n\nimport type { JSONRunnerConfiguration, JSONSourceFile, JSONTransformParams } from './types';\n\nexport const transformJSON = async (\n codemodPath: string,\n paths: string[],\n config: JSONRunnerConfiguration\n): Promise<Report.Report> => {\n const { dry } = config;\n const startTime = process.hrtime();\n\n const report: Report.Report = {\n ok: 0,\n nochange: 0,\n skip: 0,\n error: 0,\n timeElapsed: '',\n stats: {},\n };\n\n /**\n * Why do we need to include node_modules (hookIgnoreNodeModules) and specify a matcher (hookMatcher) to esbuild?\n *\n * When using tools like npx or dlx, the execution context is different from when running the program in a local\n * project. npx and dlx run the commands in a temporary installation, which is isolated from local project files.\n *\n * When hookIgnoreNodeModules is not specified (or set to true), esbuild-register instructs\n * Pirates (https://github.com/danez/pirates) to not transpile any files that come from node_modules.\n *\n * Now, when using npx or dlx to run a script, its location can be seen as \"external\" because it's not part of\n * the temporary environment where npx or dlx execute. Therefore, it's considered to be part of node_modules.\n *\n * Due to this, if hookIgnoreNodeModules is set to true or left unspecified,\n * esbuild-register won't try to compile them upon require.\n *\n * hookMatcher is added to make sure we're not matching anything else than our codemod in external directories.\n */\n const esbuildOptions = {\n extensions: ['.js', '.mjs', '.ts'],\n hookIgnoreNodeModules: false,\n hookMatcher: isEqual(codemodPath),\n };\n const { unregister } = register(esbuildOptions);\n\n const module = require(codemodPath);\n\n unregister();\n\n const codemod = typeof module.default === 'function' ? module.default : module;\n\n assert(typeof codemod === 'function', `Codemod must be a function. Found ${typeof codemod}`);\n\n for (const path of paths) {\n try {\n const json = await readJSON(path);\n\n // Make sure the JSON value is a JSON object\n assert(typeof json === 'object' && !Array.isArray(json) && json !== null);\n\n // TODO: Optimize the API to limit parse/stringify operations\n const file: JSONSourceFile = { path, json };\n const params: JSONTransformParams = { cwd: config.cwd, json: createJSONTransformAPI };\n\n const out = await codemod(file, params);\n\n if (out === undefined) {\n report.error += 1;\n }\n // If the json object has modifications\n else if (!isEqual(json, out)) {\n if (!dry) {\n await saveJSON(path, out);\n }\n report.ok += 1;\n }\n // No changes\n else {\n report.nochange += 1;\n }\n } catch {\n report.error += 1;\n }\n }\n\n const endTime = process.hrtime(startTime);\n report.timeElapsed = (endTime[0] + endTime[1] / 1e9).toFixed(3);\n\n return report;\n};\n"],"names":["transformJSON","codemodPath","paths","config","dry","startTime","process","hrtime","report","ok","nochange","skip","error","timeElapsed","stats","esbuildOptions","extensions","hookIgnoreNodeModules","hookMatcher","isEqual","unregister","register","module","require","codemod","default","assert","path","json","readJSON","Array","isArray","file","params","cwd","createJSONTransformAPI","out","undefined","saveJSON","endTime","toFixed"],"mappings":";;;;;;;;AAYaA,MAAAA,aAAAA,GAAgB,OAC3BC,WAAAA,EACAC,KACAC,EAAAA,MAAAA,GAAAA;IAEA,MAAM,EAAEC,GAAG,EAAE,GAAGD,MAAAA;IAChB,MAAME,SAAAA,GAAYC,QAAQC,MAAM,EAAA;AAEhC,IAAA,MAAMC,MAAwB,GAAA;QAC5BC,EAAI,EAAA,CAAA;QACJC,QAAU,EAAA,CAAA;QACVC,IAAM,EAAA,CAAA;QACNC,KAAO,EAAA,CAAA;QACPC,WAAa,EAAA,EAAA;AACbC,QAAAA,KAAAA,EAAO;AACT,KAAA;AAEA;;;;;;;;;;;;;;;;AAgBC,MACD,MAAMC,cAAiB,GAAA;QACrBC,UAAY,EAAA;AAAC,YAAA,KAAA;AAAO,YAAA,MAAA;AAAQ,YAAA;AAAM,SAAA;QAClCC,qBAAuB,EAAA,KAAA;AACvBC,QAAAA,WAAAA,EAAaC,UAAQlB,CAAAA,WAAAA;AACvB,KAAA;AACA,IAAA,MAAM,EAAEmB,UAAU,EAAE,GAAGC,aAASN,CAAAA,cAAAA,CAAAA;AAEhC,IAAA,MAAMO,SAASC,OAAQtB,CAAAA,WAAAA,CAAAA;AAEvBmB,IAAAA,UAAAA,EAAAA;IAEA,MAAMI,OAAAA,GAAU,OAAOF,MAAOG,CAAAA,OAAO,KAAK,UAAaH,GAAAA,MAAAA,CAAOG,OAAO,GAAGH,MAAAA;IAExEI,MAAO,CAAA,OAAOF,YAAY,UAAY,EAAA,CAAC,kCAAkC,EAAE,OAAOA,QAAQ,CAAC,CAAA;IAE3F,KAAK,MAAMG,QAAQzB,KAAO,CAAA;QACxB,IAAI;YACF,MAAM0B,IAAAA,GAAO,MAAMC,aAASF,CAAAA,IAAAA,CAAAA;;YAG5BD,MAAO,CAAA,OAAOE,SAAS,QAAY,IAAA,CAACE,MAAMC,OAAO,CAACH,SAASA,IAAS,KAAA,IAAA,CAAA;;AAGpE,YAAA,MAAMI,MAAuB,GAAA;AAAEL,gBAAAA,IAAAA;AAAMC,gBAAAA;AAAK,aAAA;AAC1C,YAAA,MAAMK,MAA8B,GAAA;AAAEC,gBAAAA,GAAAA,EAAK/B,OAAO+B,GAAG;gBAAEN,IAAMO,EAAAA;AAAuB,aAAA;YAEpF,MAAMC,GAAAA,GAAM,MAAMZ,OAAAA,CAAQQ,MAAMC,EAAAA,MAAAA,CAAAA;AAEhC,YAAA,IAAIG,QAAQC,SAAW,EAAA;AACrB7B,gBAAAA,MAAAA,CAAOI,KAAK,IAAI,CAAA;AAClB,aAAA,MAEK,IAAI,CAACO,UAAQS,CAAAA,IAAAA,EAAMQ,GAAM,CAAA,EAAA;AAC5B,gBAAA,IAAI,CAAChC,GAAK,EAAA;AACR,oBAAA,MAAMkC,cAASX,IAAMS,EAAAA,GAAAA,CAAAA;AACvB;AACA5B,gBAAAA,MAAAA,CAAOC,EAAE,IAAI,CAAA;aAGV,MAAA;AACHD,gBAAAA,MAAAA,CAAOE,QAAQ,IAAI,CAAA;AACrB;AACF,SAAA,CAAE,OAAM;AACNF,YAAAA,MAAAA,CAAOI,KAAK,IAAI,CAAA;AAClB;AACF;IAEA,MAAM2B,OAAAA,GAAUjC,OAAQC,CAAAA,MAAM,CAACF,SAAAA,CAAAA;AAC/BG,IAAAA,MAAAA,CAAOK,WAAW,GAAG,CAAC0B,OAAO,CAAC,CAAA,CAAE,GAAGA,OAAO,CAAC,CAAE,CAAA,GAAG,GAAE,EAAGC,OAAO,CAAC,CAAA,CAAA;IAE7D,OAAOhC,MAAAA;AACT;;;;"}
@@ -0,0 +1,83 @@
1
+ import assert from 'node:assert';
2
+ import { isEqual } from 'lodash/fp';
3
+ import { register } from 'esbuild-register/dist/node';
4
+ import { createJSONTransformAPI } from '../../json/transform-api.mjs';
5
+ import { readJSON, saveJSON } from '../../json/file.mjs';
6
+
7
+ const transformJSON = async (codemodPath, paths, config)=>{
8
+ const { dry } = config;
9
+ const startTime = process.hrtime();
10
+ const report = {
11
+ ok: 0,
12
+ nochange: 0,
13
+ skip: 0,
14
+ error: 0,
15
+ timeElapsed: '',
16
+ stats: {}
17
+ };
18
+ /**
19
+ * Why do we need to include node_modules (hookIgnoreNodeModules) and specify a matcher (hookMatcher) to esbuild?
20
+ *
21
+ * When using tools like npx or dlx, the execution context is different from when running the program in a local
22
+ * project. npx and dlx run the commands in a temporary installation, which is isolated from local project files.
23
+ *
24
+ * When hookIgnoreNodeModules is not specified (or set to true), esbuild-register instructs
25
+ * Pirates (https://github.com/danez/pirates) to not transpile any files that come from node_modules.
26
+ *
27
+ * Now, when using npx or dlx to run a script, its location can be seen as "external" because it's not part of
28
+ * the temporary environment where npx or dlx execute. Therefore, it's considered to be part of node_modules.
29
+ *
30
+ * Due to this, if hookIgnoreNodeModules is set to true or left unspecified,
31
+ * esbuild-register won't try to compile them upon require.
32
+ *
33
+ * hookMatcher is added to make sure we're not matching anything else than our codemod in external directories.
34
+ */ const esbuildOptions = {
35
+ extensions: [
36
+ '.js',
37
+ '.mjs',
38
+ '.ts'
39
+ ],
40
+ hookIgnoreNodeModules: false,
41
+ hookMatcher: isEqual(codemodPath)
42
+ };
43
+ const { unregister } = register(esbuildOptions);
44
+ const module = require(codemodPath);
45
+ unregister();
46
+ const codemod = typeof module.default === 'function' ? module.default : module;
47
+ assert(typeof codemod === 'function', `Codemod must be a function. Found ${typeof codemod}`);
48
+ for (const path of paths){
49
+ try {
50
+ const json = await readJSON(path);
51
+ // Make sure the JSON value is a JSON object
52
+ assert(typeof json === 'object' && !Array.isArray(json) && json !== null);
53
+ // TODO: Optimize the API to limit parse/stringify operations
54
+ const file = {
55
+ path,
56
+ json
57
+ };
58
+ const params = {
59
+ cwd: config.cwd,
60
+ json: createJSONTransformAPI
61
+ };
62
+ const out = await codemod(file, params);
63
+ if (out === undefined) {
64
+ report.error += 1;
65
+ } else if (!isEqual(json, out)) {
66
+ if (!dry) {
67
+ await saveJSON(path, out);
68
+ }
69
+ report.ok += 1;
70
+ } else {
71
+ report.nochange += 1;
72
+ }
73
+ } catch {
74
+ report.error += 1;
75
+ }
76
+ }
77
+ const endTime = process.hrtime(startTime);
78
+ report.timeElapsed = (endTime[0] + endTime[1] / 1e9).toFixed(3);
79
+ return report;
80
+ };
81
+
82
+ export { transformJSON };
83
+ //# sourceMappingURL=transform.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transform.mjs","sources":["../../../../../src/modules/runner/json/transform.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-var-requires */\n\nimport assert from 'node:assert';\nimport { isEqual } from 'lodash/fp';\nimport { register } from 'esbuild-register/dist/node';\n\nimport { createJSONTransformAPI, readJSON, saveJSON } from '../../json';\n\nimport type { Report } from '../../report';\n\nimport type { JSONRunnerConfiguration, JSONSourceFile, JSONTransformParams } from './types';\n\nexport const transformJSON = async (\n codemodPath: string,\n paths: string[],\n config: JSONRunnerConfiguration\n): Promise<Report.Report> => {\n const { dry } = config;\n const startTime = process.hrtime();\n\n const report: Report.Report = {\n ok: 0,\n nochange: 0,\n skip: 0,\n error: 0,\n timeElapsed: '',\n stats: {},\n };\n\n /**\n * Why do we need to include node_modules (hookIgnoreNodeModules) and specify a matcher (hookMatcher) to esbuild?\n *\n * When using tools like npx or dlx, the execution context is different from when running the program in a local\n * project. npx and dlx run the commands in a temporary installation, which is isolated from local project files.\n *\n * When hookIgnoreNodeModules is not specified (or set to true), esbuild-register instructs\n * Pirates (https://github.com/danez/pirates) to not transpile any files that come from node_modules.\n *\n * Now, when using npx or dlx to run a script, its location can be seen as \"external\" because it's not part of\n * the temporary environment where npx or dlx execute. Therefore, it's considered to be part of node_modules.\n *\n * Due to this, if hookIgnoreNodeModules is set to true or left unspecified,\n * esbuild-register won't try to compile them upon require.\n *\n * hookMatcher is added to make sure we're not matching anything else than our codemod in external directories.\n */\n const esbuildOptions = {\n extensions: ['.js', '.mjs', '.ts'],\n hookIgnoreNodeModules: false,\n hookMatcher: isEqual(codemodPath),\n };\n const { unregister } = register(esbuildOptions);\n\n const module = require(codemodPath);\n\n unregister();\n\n const codemod = typeof module.default === 'function' ? module.default : module;\n\n assert(typeof codemod === 'function', `Codemod must be a function. Found ${typeof codemod}`);\n\n for (const path of paths) {\n try {\n const json = await readJSON(path);\n\n // Make sure the JSON value is a JSON object\n assert(typeof json === 'object' && !Array.isArray(json) && json !== null);\n\n // TODO: Optimize the API to limit parse/stringify operations\n const file: JSONSourceFile = { path, json };\n const params: JSONTransformParams = { cwd: config.cwd, json: createJSONTransformAPI };\n\n const out = await codemod(file, params);\n\n if (out === undefined) {\n report.error += 1;\n }\n // If the json object has modifications\n else if (!isEqual(json, out)) {\n if (!dry) {\n await saveJSON(path, out);\n }\n report.ok += 1;\n }\n // No changes\n else {\n report.nochange += 1;\n }\n } catch {\n report.error += 1;\n }\n }\n\n const endTime = process.hrtime(startTime);\n report.timeElapsed = (endTime[0] + endTime[1] / 1e9).toFixed(3);\n\n return report;\n};\n"],"names":["transformJSON","codemodPath","paths","config","dry","startTime","process","hrtime","report","ok","nochange","skip","error","timeElapsed","stats","esbuildOptions","extensions","hookIgnoreNodeModules","hookMatcher","isEqual","unregister","register","module","require","codemod","default","assert","path","json","readJSON","Array","isArray","file","params","cwd","createJSONTransformAPI","out","undefined","saveJSON","endTime","toFixed"],"mappings":";;;;;;AAYaA,MAAAA,aAAAA,GAAgB,OAC3BC,WAAAA,EACAC,KACAC,EAAAA,MAAAA,GAAAA;IAEA,MAAM,EAAEC,GAAG,EAAE,GAAGD,MAAAA;IAChB,MAAME,SAAAA,GAAYC,QAAQC,MAAM,EAAA;AAEhC,IAAA,MAAMC,MAAwB,GAAA;QAC5BC,EAAI,EAAA,CAAA;QACJC,QAAU,EAAA,CAAA;QACVC,IAAM,EAAA,CAAA;QACNC,KAAO,EAAA,CAAA;QACPC,WAAa,EAAA,EAAA;AACbC,QAAAA,KAAAA,EAAO;AACT,KAAA;AAEA;;;;;;;;;;;;;;;;AAgBC,MACD,MAAMC,cAAiB,GAAA;QACrBC,UAAY,EAAA;AAAC,YAAA,KAAA;AAAO,YAAA,MAAA;AAAQ,YAAA;AAAM,SAAA;QAClCC,qBAAuB,EAAA,KAAA;AACvBC,QAAAA,WAAAA,EAAaC,OAAQlB,CAAAA,WAAAA;AACvB,KAAA;AACA,IAAA,MAAM,EAAEmB,UAAU,EAAE,GAAGC,QAASN,CAAAA,cAAAA,CAAAA;AAEhC,IAAA,MAAMO,SAASC,OAAQtB,CAAAA,WAAAA,CAAAA;AAEvBmB,IAAAA,UAAAA,EAAAA;IAEA,MAAMI,OAAAA,GAAU,OAAOF,MAAOG,CAAAA,OAAO,KAAK,UAAaH,GAAAA,MAAAA,CAAOG,OAAO,GAAGH,MAAAA;IAExEI,MAAO,CAAA,OAAOF,YAAY,UAAY,EAAA,CAAC,kCAAkC,EAAE,OAAOA,QAAQ,CAAC,CAAA;IAE3F,KAAK,MAAMG,QAAQzB,KAAO,CAAA;QACxB,IAAI;YACF,MAAM0B,IAAAA,GAAO,MAAMC,QAASF,CAAAA,IAAAA,CAAAA;;YAG5BD,MAAO,CAAA,OAAOE,SAAS,QAAY,IAAA,CAACE,MAAMC,OAAO,CAACH,SAASA,IAAS,KAAA,IAAA,CAAA;;AAGpE,YAAA,MAAMI,IAAuB,GAAA;AAAEL,gBAAAA,IAAAA;AAAMC,gBAAAA;AAAK,aAAA;AAC1C,YAAA,MAAMK,MAA8B,GAAA;AAAEC,gBAAAA,GAAAA,EAAK/B,OAAO+B,GAAG;gBAAEN,IAAMO,EAAAA;AAAuB,aAAA;YAEpF,MAAMC,GAAAA,GAAM,MAAMZ,OAAAA,CAAQQ,IAAMC,EAAAA,MAAAA,CAAAA;AAEhC,YAAA,IAAIG,QAAQC,SAAW,EAAA;AACrB7B,gBAAAA,MAAAA,CAAOI,KAAK,IAAI,CAAA;AAClB,aAAA,MAEK,IAAI,CAACO,OAAQS,CAAAA,IAAAA,EAAMQ,GAAM,CAAA,EAAA;AAC5B,gBAAA,IAAI,CAAChC,GAAK,EAAA;AACR,oBAAA,MAAMkC,SAASX,IAAMS,EAAAA,GAAAA,CAAAA;AACvB;AACA5B,gBAAAA,MAAAA,CAAOC,EAAE,IAAI,CAAA;aAGV,MAAA;AACHD,gBAAAA,MAAAA,CAAOE,QAAQ,IAAI,CAAA;AACrB;AACF,SAAA,CAAE,OAAM;AACNF,YAAAA,MAAAA,CAAOI,KAAK,IAAI,CAAA;AAClB;AACF;IAEA,MAAM2B,OAAAA,GAAUjC,OAAQC,CAAAA,MAAM,CAACF,SAAAA,CAAAA;AAC/BG,IAAAA,MAAAA,CAAOK,WAAW,GAAG,CAAC0B,OAAO,CAAC,CAAA,CAAE,GAAGA,OAAO,CAAC,CAAE,CAAA,GAAG,GAAE,EAAGC,OAAO,CAAC,CAAA,CAAA;IAE7D,OAAOhC,MAAAA;AACT;;;;"}
@@ -0,0 +1,22 @@
1
+ 'use strict';
2
+
3
+ class AbstractRunner {
4
+ async run(codemod, configuration) {
5
+ const isValidCodemod = this.valid(codemod);
6
+ if (!isValidCodemod) {
7
+ throw new Error(`Invalid codemod provided to the runner: ${codemod.filename}`);
8
+ }
9
+ const runConfiguration = {
10
+ ...this.configuration,
11
+ ...configuration
12
+ };
13
+ return this.runner(codemod.path, this.paths, runConfiguration);
14
+ }
15
+ constructor(paths, configuration){
16
+ this.paths = paths;
17
+ this.configuration = configuration;
18
+ }
19
+ }
20
+
21
+ exports.AbstractRunner = AbstractRunner;
22
+ //# sourceMappingURL=runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner.js","sources":["../../../../src/modules/runner/runner.ts"],"sourcesContent":["import type { Codemod } from '../codemod';\n\nimport type { Runner as RunnerInterface, RunnerConfiguration, RunnerFunction } from './types';\n\nexport abstract class AbstractRunner<TConfig extends RunnerConfiguration>\n implements RunnerInterface<TConfig>\n{\n abstract runner: RunnerFunction<TConfig>;\n\n paths: string[];\n\n configuration: TConfig;\n\n constructor(paths: string[], configuration: TConfig) {\n this.paths = paths;\n this.configuration = configuration;\n }\n\n async run(codemod: Codemod.Codemod, configuration?: TConfig) {\n const isValidCodemod = this.valid(codemod);\n\n if (!isValidCodemod) {\n throw new Error(`Invalid codemod provided to the runner: ${codemod.filename}`);\n }\n\n const runConfiguration: TConfig = { ...this.configuration, ...configuration };\n\n return this.runner(codemod.path, this.paths, runConfiguration);\n }\n\n abstract valid(codemod: Codemod.Codemod): boolean;\n}\n"],"names":["AbstractRunner","run","codemod","configuration","isValidCodemod","valid","Error","filename","runConfiguration","runner","path","paths","constructor"],"mappings":";;AAIO,MAAeA,cAAAA,CAAAA;AAcpB,IAAA,MAAMC,GAAIC,CAAAA,OAAwB,EAAEC,aAAuB,EAAE;AAC3D,QAAA,MAAMC,cAAiB,GAAA,IAAI,CAACC,KAAK,CAACH,OAAAA,CAAAA;AAElC,QAAA,IAAI,CAACE,cAAgB,EAAA;YACnB,MAAM,IAAIE,MAAM,CAAC,wCAAwC,EAAEJ,OAAQK,CAAAA,QAAQ,CAAC,CAAC,CAAA;AAC/E;AAEA,QAAA,MAAMC,gBAA4B,GAAA;YAAE,GAAG,IAAI,CAACL,aAAa;AAAE,YAAA,GAAGA;AAAc,SAAA;QAE5E,OAAO,IAAI,CAACM,MAAM,CAACP,OAAAA,CAAQQ,IAAI,EAAE,IAAI,CAACC,KAAK,EAAEH,gBAAAA,CAAAA;AAC/C;IAfAI,WAAYD,CAAAA,KAAe,EAAER,aAAsB,CAAE;QACnD,IAAI,CAACQ,KAAK,GAAGA,KAAAA;QACb,IAAI,CAACR,aAAa,GAAGA,aAAAA;AACvB;AAeF;;;;"}
@@ -0,0 +1,20 @@
1
+ class AbstractRunner {
2
+ async run(codemod, configuration) {
3
+ const isValidCodemod = this.valid(codemod);
4
+ if (!isValidCodemod) {
5
+ throw new Error(`Invalid codemod provided to the runner: ${codemod.filename}`);
6
+ }
7
+ const runConfiguration = {
8
+ ...this.configuration,
9
+ ...configuration
10
+ };
11
+ return this.runner(codemod.path, this.paths, runConfiguration);
12
+ }
13
+ constructor(paths, configuration){
14
+ this.paths = paths;
15
+ this.configuration = configuration;
16
+ }
17
+ }
18
+
19
+ export { AbstractRunner };
20
+ //# sourceMappingURL=runner.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner.mjs","sources":["../../../../src/modules/runner/runner.ts"],"sourcesContent":["import type { Codemod } from '../codemod';\n\nimport type { Runner as RunnerInterface, RunnerConfiguration, RunnerFunction } from './types';\n\nexport abstract class AbstractRunner<TConfig extends RunnerConfiguration>\n implements RunnerInterface<TConfig>\n{\n abstract runner: RunnerFunction<TConfig>;\n\n paths: string[];\n\n configuration: TConfig;\n\n constructor(paths: string[], configuration: TConfig) {\n this.paths = paths;\n this.configuration = configuration;\n }\n\n async run(codemod: Codemod.Codemod, configuration?: TConfig) {\n const isValidCodemod = this.valid(codemod);\n\n if (!isValidCodemod) {\n throw new Error(`Invalid codemod provided to the runner: ${codemod.filename}`);\n }\n\n const runConfiguration: TConfig = { ...this.configuration, ...configuration };\n\n return this.runner(codemod.path, this.paths, runConfiguration);\n }\n\n abstract valid(codemod: Codemod.Codemod): boolean;\n}\n"],"names":["AbstractRunner","run","codemod","configuration","isValidCodemod","valid","Error","filename","runConfiguration","runner","path","paths","constructor"],"mappings":"AAIO,MAAeA,cAAAA,CAAAA;AAcpB,IAAA,MAAMC,GAAIC,CAAAA,OAAwB,EAAEC,aAAuB,EAAE;AAC3D,QAAA,MAAMC,cAAiB,GAAA,IAAI,CAACC,KAAK,CAACH,OAAAA,CAAAA;AAElC,QAAA,IAAI,CAACE,cAAgB,EAAA;YACnB,MAAM,IAAIE,MAAM,CAAC,wCAAwC,EAAEJ,OAAQK,CAAAA,QAAQ,CAAC,CAAC,CAAA;AAC/E;AAEA,QAAA,MAAMC,gBAA4B,GAAA;YAAE,GAAG,IAAI,CAACL,aAAa;AAAE,YAAA,GAAGA;AAAc,SAAA;QAE5E,OAAO,IAAI,CAACM,MAAM,CAACP,OAAAA,CAAQQ,IAAI,EAAE,IAAI,CAACC,KAAK,EAAEH,gBAAAA,CAAAA;AAC/C;IAfAI,WAAYD,CAAAA,KAAe,EAAER,aAAsB,CAAE;QACnD,IAAI,CAACQ,KAAK,GAAGA,KAAAA;QACb,IAAI,CAACR,aAAa,GAAGA,aAAAA;AACvB;AAeF;;;;"}
@@ -0,0 +1,6 @@
1
+ 'use strict';
2
+
3
+ const ONE_SECOND_MS = 1000;
4
+
5
+ exports.ONE_SECOND_MS = ONE_SECOND_MS;
6
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sources":["../../../../src/modules/timer/constants.ts"],"sourcesContent":["export const ONE_SECOND_MS = 1000;\n"],"names":["ONE_SECOND_MS"],"mappings":";;AAAO,MAAMA,gBAAgB;;;;"}
@@ -0,0 +1,4 @@
1
+ const ONE_SECOND_MS = 1000;
2
+
3
+ export { ONE_SECOND_MS };
4
+ //# sourceMappingURL=constants.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.mjs","sources":["../../../../src/modules/timer/constants.ts"],"sourcesContent":["export const ONE_SECOND_MS = 1000;\n"],"names":["ONE_SECOND_MS"],"mappings":"AAAO,MAAMA,gBAAgB;;;;"}
@@ -0,0 +1,10 @@
1
+ 'use strict';
2
+
3
+ var timer = require('./timer.js');
4
+ var constants = require('./constants.js');
5
+
6
+
7
+
8
+ exports.timerFactory = timer.timerFactory;
9
+ exports.constants = constants;
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
@@ -0,0 +1,4 @@
1
+ export { timerFactory } from './timer.mjs';
2
+ import * as constants from './constants.mjs';
3
+ export { constants };
4
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}