@allstak/wizard 0.1.3

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 (487) hide show
  1. package/CHANGELOG.md +90 -0
  2. package/README.md +79 -0
  3. package/dist/api/auth-client.d.ts +22 -0
  4. package/dist/api/auth-client.d.ts.map +1 -0
  5. package/dist/api/auth-client.js +65 -0
  6. package/dist/api/auth-client.js.map +1 -0
  7. package/dist/api/auth.d.ts +39 -0
  8. package/dist/api/auth.d.ts.map +1 -0
  9. package/dist/api/auth.js +69 -0
  10. package/dist/api/auth.js.map +1 -0
  11. package/dist/api/client.d.ts +15 -0
  12. package/dist/api/client.d.ts.map +1 -0
  13. package/dist/api/client.js +19 -0
  14. package/dist/api/client.js.map +1 -0
  15. package/dist/api/http.d.ts +44 -0
  16. package/dist/api/http.d.ts.map +1 -0
  17. package/dist/api/http.js +130 -0
  18. package/dist/api/http.js.map +1 -0
  19. package/dist/api/index.d.ts +12 -0
  20. package/dist/api/index.d.ts.map +1 -0
  21. package/dist/api/index.js +12 -0
  22. package/dist/api/index.js.map +1 -0
  23. package/dist/api/orgs-client.d.ts +16 -0
  24. package/dist/api/orgs-client.d.ts.map +1 -0
  25. package/dist/api/orgs-client.js +36 -0
  26. package/dist/api/orgs-client.js.map +1 -0
  27. package/dist/api/projects-client.d.ts +27 -0
  28. package/dist/api/projects-client.d.ts.map +1 -0
  29. package/dist/api/projects-client.js +58 -0
  30. package/dist/api/projects-client.js.map +1 -0
  31. package/dist/api/setup-doctor-client.d.ts +31 -0
  32. package/dist/api/setup-doctor-client.d.ts.map +1 -0
  33. package/dist/api/setup-doctor-client.js +68 -0
  34. package/dist/api/setup-doctor-client.js.map +1 -0
  35. package/dist/api/types.d.ts +92 -0
  36. package/dist/api/types.d.ts.map +1 -0
  37. package/dist/api/types.js +9 -0
  38. package/dist/api/types.js.map +1 -0
  39. package/dist/cli.d.ts +3 -0
  40. package/dist/cli.d.ts.map +1 -0
  41. package/dist/cli.js +303 -0
  42. package/dist/cli.js.map +1 -0
  43. package/dist/commands/_context.d.ts +37 -0
  44. package/dist/commands/_context.d.ts.map +1 -0
  45. package/dist/commands/_context.js +61 -0
  46. package/dist/commands/_context.js.map +1 -0
  47. package/dist/commands/config-cmd.d.ts +24 -0
  48. package/dist/commands/config-cmd.d.ts.map +1 -0
  49. package/dist/commands/config-cmd.js +137 -0
  50. package/dist/commands/config-cmd.js.map +1 -0
  51. package/dist/commands/doctor.d.ts +58 -0
  52. package/dist/commands/doctor.d.ts.map +1 -0
  53. package/dist/commands/doctor.js +389 -0
  54. package/dist/commands/doctor.js.map +1 -0
  55. package/dist/commands/init.d.ts +28 -0
  56. package/dist/commands/init.d.ts.map +1 -0
  57. package/dist/commands/init.js +157 -0
  58. package/dist/commands/init.js.map +1 -0
  59. package/dist/commands/list.d.ts +3 -0
  60. package/dist/commands/list.d.ts.map +1 -0
  61. package/dist/commands/list.js +14 -0
  62. package/dist/commands/list.js.map +1 -0
  63. package/dist/commands/login.d.ts +27 -0
  64. package/dist/commands/login.d.ts.map +1 -0
  65. package/dist/commands/login.js +116 -0
  66. package/dist/commands/login.js.map +1 -0
  67. package/dist/commands/logout.d.ts +15 -0
  68. package/dist/commands/logout.d.ts.map +1 -0
  69. package/dist/commands/logout.js +36 -0
  70. package/dist/commands/logout.js.map +1 -0
  71. package/dist/commands/orgs.d.ts +14 -0
  72. package/dist/commands/orgs.d.ts.map +1 -0
  73. package/dist/commands/orgs.js +39 -0
  74. package/dist/commands/orgs.js.map +1 -0
  75. package/dist/commands/projects.d.ts +21 -0
  76. package/dist/commands/projects.d.ts.map +1 -0
  77. package/dist/commands/projects.js +86 -0
  78. package/dist/commands/projects.js.map +1 -0
  79. package/dist/commands/repair.d.ts +12 -0
  80. package/dist/commands/repair.d.ts.map +1 -0
  81. package/dist/commands/repair.js +45 -0
  82. package/dist/commands/repair.js.map +1 -0
  83. package/dist/commands/restore.d.ts +32 -0
  84. package/dist/commands/restore.d.ts.map +1 -0
  85. package/dist/commands/restore.js +120 -0
  86. package/dist/commands/restore.js.map +1 -0
  87. package/dist/commands/uninstall.d.ts +13 -0
  88. package/dist/commands/uninstall.d.ts.map +1 -0
  89. package/dist/commands/uninstall.js +53 -0
  90. package/dist/commands/uninstall.js.map +1 -0
  91. package/dist/commands/whoami.d.ts +13 -0
  92. package/dist/commands/whoami.d.ts.map +1 -0
  93. package/dist/commands/whoami.js +54 -0
  94. package/dist/commands/whoami.js.map +1 -0
  95. package/dist/compat/engine.d.ts +31 -0
  96. package/dist/compat/engine.d.ts.map +1 -0
  97. package/dist/compat/engine.js +82 -0
  98. package/dist/compat/engine.js.map +1 -0
  99. package/dist/config/define.d.ts +21 -0
  100. package/dist/config/define.d.ts.map +1 -0
  101. package/dist/config/define.js +22 -0
  102. package/dist/config/define.js.map +1 -0
  103. package/dist/config/index.d.ts +6 -0
  104. package/dist/config/index.d.ts.map +1 -0
  105. package/dist/config/index.js +6 -0
  106. package/dist/config/index.js.map +1 -0
  107. package/dist/config/loader.d.ts +26 -0
  108. package/dist/config/loader.d.ts.map +1 -0
  109. package/dist/config/loader.js +84 -0
  110. package/dist/config/loader.js.map +1 -0
  111. package/dist/config/migrations.d.ts +64 -0
  112. package/dist/config/migrations.d.ts.map +1 -0
  113. package/dist/config/migrations.js +66 -0
  114. package/dist/config/migrations.js.map +1 -0
  115. package/dist/config/precedence.d.ts +24 -0
  116. package/dist/config/precedence.d.ts.map +1 -0
  117. package/dist/config/precedence.js +55 -0
  118. package/dist/config/precedence.js.map +1 -0
  119. package/dist/config/schema.d.ts +10 -0
  120. package/dist/config/schema.d.ts.map +1 -0
  121. package/dist/config/schema.js +140 -0
  122. package/dist/config/schema.js.map +1 -0
  123. package/dist/config/types.d.ts +80 -0
  124. package/dist/config/types.d.ts.map +1 -0
  125. package/dist/config/types.js +23 -0
  126. package/dist/config/types.js.map +1 -0
  127. package/dist/credentials/encrypted-file.d.ts +3 -0
  128. package/dist/credentials/encrypted-file.d.ts.map +1 -0
  129. package/dist/credentials/encrypted-file.js +139 -0
  130. package/dist/credentials/encrypted-file.js.map +1 -0
  131. package/dist/credentials/error.d.ts +11 -0
  132. package/dist/credentials/error.d.ts.map +1 -0
  133. package/dist/credentials/error.js +14 -0
  134. package/dist/credentials/error.js.map +1 -0
  135. package/dist/credentials/index.d.ts +20 -0
  136. package/dist/credentials/index.d.ts.map +1 -0
  137. package/dist/credentials/index.js +56 -0
  138. package/dist/credentials/index.js.map +1 -0
  139. package/dist/credentials/keychain-darwin.d.ts +11 -0
  140. package/dist/credentials/keychain-darwin.d.ts.map +1 -0
  141. package/dist/credentials/keychain-darwin.js +88 -0
  142. package/dist/credentials/keychain-darwin.js.map +1 -0
  143. package/dist/credentials/keychain-linux.d.ts +13 -0
  144. package/dist/credentials/keychain-linux.d.ts.map +1 -0
  145. package/dist/credentials/keychain-linux.js +88 -0
  146. package/dist/credentials/keychain-linux.js.map +1 -0
  147. package/dist/credentials/keychain-win.d.ts +13 -0
  148. package/dist/credentials/keychain-win.d.ts.map +1 -0
  149. package/dist/credentials/keychain-win.js +31 -0
  150. package/dist/credentials/keychain-win.js.map +1 -0
  151. package/dist/credentials/types.d.ts +38 -0
  152. package/dist/credentials/types.d.ts.map +1 -0
  153. package/dist/credentials/types.js +5 -0
  154. package/dist/credentials/types.js.map +1 -0
  155. package/dist/detect/framework.d.ts +28 -0
  156. package/dist/detect/framework.d.ts.map +1 -0
  157. package/dist/detect/framework.js +131 -0
  158. package/dist/detect/framework.js.map +1 -0
  159. package/dist/detect/index.d.ts +4 -0
  160. package/dist/detect/index.d.ts.map +1 -0
  161. package/dist/detect/index.js +4 -0
  162. package/dist/detect/index.js.map +1 -0
  163. package/dist/detect/monorepo.d.ts +10 -0
  164. package/dist/detect/monorepo.d.ts.map +1 -0
  165. package/dist/detect/monorepo.js +42 -0
  166. package/dist/detect/monorepo.js.map +1 -0
  167. package/dist/detect/package-manager.d.ts +18 -0
  168. package/dist/detect/package-manager.d.ts.map +1 -0
  169. package/dist/detect/package-manager.js +60 -0
  170. package/dist/detect/package-manager.js.map +1 -0
  171. package/dist/index.d.ts +36 -0
  172. package/dist/index.d.ts.map +1 -0
  173. package/dist/index.js +38 -0
  174. package/dist/index.js.map +1 -0
  175. package/dist/integrations/_scaffold.d.ts +23 -0
  176. package/dist/integrations/_scaffold.d.ts.map +1 -0
  177. package/dist/integrations/_scaffold.js +62 -0
  178. package/dist/integrations/_scaffold.js.map +1 -0
  179. package/dist/integrations/_shared.d.ts +18 -0
  180. package/dist/integrations/_shared.d.ts.map +1 -0
  181. package/dist/integrations/_shared.js +73 -0
  182. package/dist/integrations/_shared.js.map +1 -0
  183. package/dist/integrations/_simple-scaffold.d.ts +19 -0
  184. package/dist/integrations/_simple-scaffold.d.ts.map +1 -0
  185. package/dist/integrations/_simple-scaffold.js +23 -0
  186. package/dist/integrations/_simple-scaffold.js.map +1 -0
  187. package/dist/integrations/dotnet.d.ts +2 -0
  188. package/dist/integrations/dotnet.d.ts.map +1 -0
  189. package/dist/integrations/dotnet.js +9 -0
  190. package/dist/integrations/dotnet.js.map +1 -0
  191. package/dist/integrations/expo.d.ts +2 -0
  192. package/dist/integrations/expo.d.ts.map +1 -0
  193. package/dist/integrations/expo.js +12 -0
  194. package/dist/integrations/expo.js.map +1 -0
  195. package/dist/integrations/fastify.d.ts +2 -0
  196. package/dist/integrations/fastify.d.ts.map +1 -0
  197. package/dist/integrations/fastify.js +10 -0
  198. package/dist/integrations/fastify.js.map +1 -0
  199. package/dist/integrations/flutter.d.ts +2 -0
  200. package/dist/integrations/flutter.d.ts.map +1 -0
  201. package/dist/integrations/flutter.js +9 -0
  202. package/dist/integrations/flutter.js.map +1 -0
  203. package/dist/integrations/go.d.ts +2 -0
  204. package/dist/integrations/go.d.ts.map +1 -0
  205. package/dist/integrations/go.js +9 -0
  206. package/dist/integrations/go.js.map +1 -0
  207. package/dist/integrations/java.d.ts +2 -0
  208. package/dist/integrations/java.d.ts.map +1 -0
  209. package/dist/integrations/java.js +9 -0
  210. package/dist/integrations/java.js.map +1 -0
  211. package/dist/integrations/js/detect.d.ts +3 -0
  212. package/dist/integrations/js/detect.d.ts.map +1 -0
  213. package/dist/integrations/js/detect.js +7 -0
  214. package/dist/integrations/js/detect.js.map +1 -0
  215. package/dist/integrations/js/doctor.d.ts +3 -0
  216. package/dist/integrations/js/doctor.d.ts.map +1 -0
  217. package/dist/integrations/js/doctor.js +38 -0
  218. package/dist/integrations/js/doctor.js.map +1 -0
  219. package/dist/integrations/js/files.d.ts +3 -0
  220. package/dist/integrations/js/files.d.ts.map +1 -0
  221. package/dist/integrations/js/files.js +19 -0
  222. package/dist/integrations/js/files.js.map +1 -0
  223. package/dist/integrations/js/index.d.ts +3 -0
  224. package/dist/integrations/js/index.d.ts.map +1 -0
  225. package/dist/integrations/js/index.js +25 -0
  226. package/dist/integrations/js/index.js.map +1 -0
  227. package/dist/integrations/js/manifest.d.ts +3 -0
  228. package/dist/integrations/js/manifest.d.ts.map +1 -0
  229. package/dist/integrations/js/manifest.js +19 -0
  230. package/dist/integrations/js/manifest.js.map +1 -0
  231. package/dist/integrations/js/patch.d.ts +4 -0
  232. package/dist/integrations/js/patch.d.ts.map +1 -0
  233. package/dist/integrations/js/patch.js +24 -0
  234. package/dist/integrations/js/patch.js.map +1 -0
  235. package/dist/integrations/js/uninstall.d.ts +4 -0
  236. package/dist/integrations/js/uninstall.d.ts.map +1 -0
  237. package/dist/integrations/js/uninstall.js +16 -0
  238. package/dist/integrations/js/uninstall.js.map +1 -0
  239. package/dist/integrations/nestjs.d.ts +2 -0
  240. package/dist/integrations/nestjs.d.ts.map +1 -0
  241. package/dist/integrations/nestjs.js +10 -0
  242. package/dist/integrations/nestjs.js.map +1 -0
  243. package/dist/integrations/next/detect.d.ts +3 -0
  244. package/dist/integrations/next/detect.d.ts.map +1 -0
  245. package/dist/integrations/next/detect.js +11 -0
  246. package/dist/integrations/next/detect.js.map +1 -0
  247. package/dist/integrations/next/doctor.d.ts +3 -0
  248. package/dist/integrations/next/doctor.d.ts.map +1 -0
  249. package/dist/integrations/next/doctor.js +46 -0
  250. package/dist/integrations/next/doctor.js.map +1 -0
  251. package/dist/integrations/next/files.d.ts +3 -0
  252. package/dist/integrations/next/files.d.ts.map +1 -0
  253. package/dist/integrations/next/files.js +19 -0
  254. package/dist/integrations/next/files.js.map +1 -0
  255. package/dist/integrations/next/index.d.ts +3 -0
  256. package/dist/integrations/next/index.d.ts.map +1 -0
  257. package/dist/integrations/next/index.js +44 -0
  258. package/dist/integrations/next/index.js.map +1 -0
  259. package/dist/integrations/next/manifest.d.ts +3 -0
  260. package/dist/integrations/next/manifest.d.ts.map +1 -0
  261. package/dist/integrations/next/manifest.js +29 -0
  262. package/dist/integrations/next/manifest.js.map +1 -0
  263. package/dist/integrations/next/patch.d.ts +4 -0
  264. package/dist/integrations/next/patch.d.ts.map +1 -0
  265. package/dist/integrations/next/patch.js +49 -0
  266. package/dist/integrations/next/patch.js.map +1 -0
  267. package/dist/integrations/next/uninstall.d.ts +4 -0
  268. package/dist/integrations/next/uninstall.d.ts.map +1 -0
  269. package/dist/integrations/next/uninstall.js +22 -0
  270. package/dist/integrations/next/uninstall.js.map +1 -0
  271. package/dist/integrations/otel.d.ts +2 -0
  272. package/dist/integrations/otel.d.ts.map +1 -0
  273. package/dist/integrations/otel.js +10 -0
  274. package/dist/integrations/otel.js.map +1 -0
  275. package/dist/integrations/php.d.ts +2 -0
  276. package/dist/integrations/php.d.ts.map +1 -0
  277. package/dist/integrations/php.js +9 -0
  278. package/dist/integrations/php.js.map +1 -0
  279. package/dist/integrations/python.d.ts +2 -0
  280. package/dist/integrations/python.d.ts.map +1 -0
  281. package/dist/integrations/python.js +9 -0
  282. package/dist/integrations/python.js.map +1 -0
  283. package/dist/integrations/react/detect.d.ts +3 -0
  284. package/dist/integrations/react/detect.d.ts.map +1 -0
  285. package/dist/integrations/react/detect.js +11 -0
  286. package/dist/integrations/react/detect.js.map +1 -0
  287. package/dist/integrations/react/doctor.d.ts +3 -0
  288. package/dist/integrations/react/doctor.d.ts.map +1 -0
  289. package/dist/integrations/react/doctor.js +65 -0
  290. package/dist/integrations/react/doctor.js.map +1 -0
  291. package/dist/integrations/react/files.d.ts +4 -0
  292. package/dist/integrations/react/files.d.ts.map +1 -0
  293. package/dist/integrations/react/files.js +24 -0
  294. package/dist/integrations/react/files.js.map +1 -0
  295. package/dist/integrations/react/index.d.ts +17 -0
  296. package/dist/integrations/react/index.d.ts.map +1 -0
  297. package/dist/integrations/react/index.js +62 -0
  298. package/dist/integrations/react/index.js.map +1 -0
  299. package/dist/integrations/react/manifest.d.ts +3 -0
  300. package/dist/integrations/react/manifest.d.ts.map +1 -0
  301. package/dist/integrations/react/manifest.js +31 -0
  302. package/dist/integrations/react/manifest.js.map +1 -0
  303. package/dist/integrations/react/patch.d.ts +4 -0
  304. package/dist/integrations/react/patch.d.ts.map +1 -0
  305. package/dist/integrations/react/patch.js +39 -0
  306. package/dist/integrations/react/patch.js.map +1 -0
  307. package/dist/integrations/react/uninstall.d.ts +4 -0
  308. package/dist/integrations/react/uninstall.d.ts.map +1 -0
  309. package/dist/integrations/react/uninstall.js +21 -0
  310. package/dist/integrations/react/uninstall.js.map +1 -0
  311. package/dist/integrations/react-native.d.ts +10 -0
  312. package/dist/integrations/react-native.d.ts.map +1 -0
  313. package/dist/integrations/react-native.js +57 -0
  314. package/dist/integrations/react-native.js.map +1 -0
  315. package/dist/integrations/ruby.d.ts +2 -0
  316. package/dist/integrations/ruby.d.ts.map +1 -0
  317. package/dist/integrations/ruby.js +9 -0
  318. package/dist/integrations/ruby.js.map +1 -0
  319. package/dist/lifecycle/hooks.d.ts +42 -0
  320. package/dist/lifecycle/hooks.d.ts.map +1 -0
  321. package/dist/lifecycle/hooks.js +43 -0
  322. package/dist/lifecycle/hooks.js.map +1 -0
  323. package/dist/migrations/builtin/dsn-to-api-key.d.ts +3 -0
  324. package/dist/migrations/builtin/dsn-to-api-key.d.ts.map +1 -0
  325. package/dist/migrations/builtin/dsn-to-api-key.js +59 -0
  326. package/dist/migrations/builtin/dsn-to-api-key.js.map +1 -0
  327. package/dist/migrations/engine.d.ts +52 -0
  328. package/dist/migrations/engine.d.ts.map +1 -0
  329. package/dist/migrations/engine.js +46 -0
  330. package/dist/migrations/engine.js.map +1 -0
  331. package/dist/migrations/index.d.ts +3 -0
  332. package/dist/migrations/index.d.ts.map +1 -0
  333. package/dist/migrations/index.js +11 -0
  334. package/dist/migrations/index.js.map +1 -0
  335. package/dist/output/human.d.ts +20 -0
  336. package/dist/output/human.d.ts.map +1 -0
  337. package/dist/output/human.js +77 -0
  338. package/dist/output/human.js.map +1 -0
  339. package/dist/output/index.d.ts +6 -0
  340. package/dist/output/index.d.ts.map +1 -0
  341. package/dist/output/index.js +8 -0
  342. package/dist/output/index.js.map +1 -0
  343. package/dist/output/json.d.ts +20 -0
  344. package/dist/output/json.d.ts.map +1 -0
  345. package/dist/output/json.js +60 -0
  346. package/dist/output/json.js.map +1 -0
  347. package/dist/output/types.d.ts +36 -0
  348. package/dist/output/types.d.ts.map +1 -0
  349. package/dist/output/types.js +2 -0
  350. package/dist/output/types.js.map +1 -0
  351. package/dist/patchers/env-file.d.ts +21 -0
  352. package/dist/patchers/env-file.d.ts.map +1 -0
  353. package/dist/patchers/env-file.js +77 -0
  354. package/dist/patchers/env-file.js.map +1 -0
  355. package/dist/patchers/js-ast.d.ts +29 -0
  356. package/dist/patchers/js-ast.d.ts.map +1 -0
  357. package/dist/patchers/js-ast.js +71 -0
  358. package/dist/patchers/js-ast.js.map +1 -0
  359. package/dist/patchers/json-file.d.ts +19 -0
  360. package/dist/patchers/json-file.d.ts.map +1 -0
  361. package/dist/patchers/json-file.js +41 -0
  362. package/dist/patchers/json-file.js.map +1 -0
  363. package/dist/patchers/markers.d.ts +28 -0
  364. package/dist/patchers/markers.d.ts.map +1 -0
  365. package/dist/patchers/markers.js +49 -0
  366. package/dist/patchers/markers.js.map +1 -0
  367. package/dist/patchers/source-block.d.ts +24 -0
  368. package/dist/patchers/source-block.d.ts.map +1 -0
  369. package/dist/patchers/source-block.js +40 -0
  370. package/dist/patchers/source-block.js.map +1 -0
  371. package/dist/registry/index.d.ts +5 -0
  372. package/dist/registry/index.d.ts.map +1 -0
  373. package/dist/registry/index.js +42 -0
  374. package/dist/registry/index.js.map +1 -0
  375. package/dist/registry/manifest.d.ts +78 -0
  376. package/dist/registry/manifest.d.ts.map +1 -0
  377. package/dist/registry/manifest.js +2 -0
  378. package/dist/registry/manifest.js.map +1 -0
  379. package/dist/registry/registry.d.ts +14 -0
  380. package/dist/registry/registry.d.ts.map +1 -0
  381. package/dist/registry/registry.js +29 -0
  382. package/dist/registry/registry.js.map +1 -0
  383. package/dist/registry/types.d.ts +78 -0
  384. package/dist/registry/types.d.ts.map +1 -0
  385. package/dist/registry/types.js +2 -0
  386. package/dist/registry/types.js.map +1 -0
  387. package/dist/snapshot/restore.d.ts +41 -0
  388. package/dist/snapshot/restore.d.ts.map +1 -0
  389. package/dist/snapshot/restore.js +110 -0
  390. package/dist/snapshot/restore.js.map +1 -0
  391. package/dist/snapshot/store.d.ts +105 -0
  392. package/dist/snapshot/store.d.ts.map +1 -0
  393. package/dist/snapshot/store.js +162 -0
  394. package/dist/snapshot/store.js.map +1 -0
  395. package/dist/sourcemaps/index.d.ts +3 -0
  396. package/dist/sourcemaps/index.d.ts.map +1 -0
  397. package/dist/sourcemaps/index.js +17 -0
  398. package/dist/sourcemaps/index.js.map +1 -0
  399. package/dist/sourcemaps/metro.d.ts +11 -0
  400. package/dist/sourcemaps/metro.d.ts.map +1 -0
  401. package/dist/sourcemaps/metro.js +31 -0
  402. package/dist/sourcemaps/metro.js.map +1 -0
  403. package/dist/sourcemaps/next.d.ts +3 -0
  404. package/dist/sourcemaps/next.d.ts.map +1 -0
  405. package/dist/sourcemaps/next.js +46 -0
  406. package/dist/sourcemaps/next.js.map +1 -0
  407. package/dist/sourcemaps/provider.d.ts +51 -0
  408. package/dist/sourcemaps/provider.d.ts.map +1 -0
  409. package/dist/sourcemaps/provider.js +29 -0
  410. package/dist/sourcemaps/provider.js.map +1 -0
  411. package/dist/sourcemaps/vite.d.ts +3 -0
  412. package/dist/sourcemaps/vite.d.ts.map +1 -0
  413. package/dist/sourcemaps/vite.js +60 -0
  414. package/dist/sourcemaps/vite.js.map +1 -0
  415. package/dist/sourcemaps/webpack.d.ts +8 -0
  416. package/dist/sourcemaps/webpack.d.ts.map +1 -0
  417. package/dist/sourcemaps/webpack.js +52 -0
  418. package/dist/sourcemaps/webpack.js.map +1 -0
  419. package/dist/telemetry/cli-wrap.d.ts +22 -0
  420. package/dist/telemetry/cli-wrap.d.ts.map +1 -0
  421. package/dist/telemetry/cli-wrap.js +53 -0
  422. package/dist/telemetry/cli-wrap.js.map +1 -0
  423. package/dist/telemetry/http-provider.d.ts +28 -0
  424. package/dist/telemetry/http-provider.d.ts.map +1 -0
  425. package/dist/telemetry/http-provider.js +24 -0
  426. package/dist/telemetry/http-provider.js.map +1 -0
  427. package/dist/telemetry/index.d.ts +7 -0
  428. package/dist/telemetry/index.d.ts.map +1 -0
  429. package/dist/telemetry/index.js +6 -0
  430. package/dist/telemetry/index.js.map +1 -0
  431. package/dist/telemetry/install-id.d.ts +3 -0
  432. package/dist/telemetry/install-id.d.ts.map +1 -0
  433. package/dist/telemetry/install-id.js +46 -0
  434. package/dist/telemetry/install-id.js.map +1 -0
  435. package/dist/telemetry/payload.d.ts +82 -0
  436. package/dist/telemetry/payload.d.ts.map +1 -0
  437. package/dist/telemetry/payload.js +82 -0
  438. package/dist/telemetry/payload.js.map +1 -0
  439. package/dist/telemetry/provider.d.ts +32 -0
  440. package/dist/telemetry/provider.d.ts.map +1 -0
  441. package/dist/telemetry/provider.js +30 -0
  442. package/dist/telemetry/provider.js.map +1 -0
  443. package/dist/telemetry/runtime.d.ts +29 -0
  444. package/dist/telemetry/runtime.d.ts.map +1 -0
  445. package/dist/telemetry/runtime.js +44 -0
  446. package/dist/telemetry/runtime.js.map +1 -0
  447. package/dist/transaction/tx.d.ts +58 -0
  448. package/dist/transaction/tx.d.ts.map +1 -0
  449. package/dist/transaction/tx.js +170 -0
  450. package/dist/transaction/tx.js.map +1 -0
  451. package/dist/util/error-codes.d.ts +29 -0
  452. package/dist/util/error-codes.d.ts.map +1 -0
  453. package/dist/util/error-codes.js +192 -0
  454. package/dist/util/error-codes.js.map +1 -0
  455. package/dist/util/errors.d.ts +83 -0
  456. package/dist/util/errors.d.ts.map +1 -0
  457. package/dist/util/errors.js +110 -0
  458. package/dist/util/errors.js.map +1 -0
  459. package/dist/util/log.d.ts +11 -0
  460. package/dist/util/log.d.ts.map +1 -0
  461. package/dist/util/log.js +18 -0
  462. package/dist/util/log.js.map +1 -0
  463. package/dist/util/paths.d.ts +3 -0
  464. package/dist/util/paths.d.ts.map +1 -0
  465. package/dist/util/paths.js +31 -0
  466. package/dist/util/paths.js.map +1 -0
  467. package/dist/util/version.d.ts +15 -0
  468. package/dist/util/version.d.ts.map +1 -0
  469. package/dist/util/version.js +40 -0
  470. package/dist/util/version.js.map +1 -0
  471. package/dist/util/wizard-version.d.ts +6 -0
  472. package/dist/util/wizard-version.d.ts.map +1 -0
  473. package/dist/util/wizard-version.js +6 -0
  474. package/dist/util/wizard-version.js.map +1 -0
  475. package/docs/architecture/README.md +58 -0
  476. package/docs/architecture/dry-run.md +34 -0
  477. package/docs/architecture/integration-lifecycle.md +77 -0
  478. package/docs/architecture/patch-pipeline.md +58 -0
  479. package/docs/architecture/registry.md +52 -0
  480. package/docs/architecture/rollback.md +47 -0
  481. package/docs/architecture/sourcemaps.md +53 -0
  482. package/docs/architecture/stability-levels.md +35 -0
  483. package/docs/architecture/transaction.md +51 -0
  484. package/docs/architecture/v02-bare-react-native-spec.md +92 -0
  485. package/docs/architecture/v02-java-host-fix-spec.md +125 -0
  486. package/docs/architecture/v02-sourcemaps-e2e-spec.md +157 -0
  487. package/package.json +98 -0
@@ -0,0 +1,60 @@
1
+ import { relative } from 'node:path';
2
+ export class JsonReporter {
3
+ events = [];
4
+ diffs = [];
5
+ doctorReports = [];
6
+ listManifests = null;
7
+ step(label, detail) {
8
+ this.events.push({ kind: 'step', label, detail: detail ?? null });
9
+ console.error(`» ${label}${detail ? ` — ${detail}` : ''}`);
10
+ }
11
+ info(label, detail) {
12
+ this.events.push({ kind: 'info', label, detail: detail ?? null });
13
+ console.error(`› ${label}${detail ? ` — ${detail}` : ''}`);
14
+ }
15
+ warn(label, detail) {
16
+ this.events.push({ kind: 'warn', label, detail: detail ?? null });
17
+ console.error(`! ${label}${detail ? ` — ${detail}` : ''}`);
18
+ }
19
+ success(label, detail) {
20
+ this.events.push({ kind: 'success', label, detail: detail ?? null });
21
+ console.error(`✓ ${label}${detail ? ` — ${detail}` : ''}`);
22
+ }
23
+ error(label, detail) {
24
+ this.events.push({ kind: 'error', label, detail: detail ?? null });
25
+ console.error(`✗ ${label}${detail ? ` — ${detail}` : ''}`);
26
+ }
27
+ diff(diffs, cwd) {
28
+ for (const d of diffs) {
29
+ this.diffs.push({
30
+ path: relative(cwd, d.path) || d.path,
31
+ kind: d.kind,
32
+ beforeBytes: d.before?.length ?? 0,
33
+ afterBytes: d.after.length,
34
+ });
35
+ }
36
+ }
37
+ doctor(report) {
38
+ this.doctorReports.push(report);
39
+ console.error(`» doctor ${report.integration}: ${report.summary}`);
40
+ }
41
+ list(manifests) {
42
+ this.listManifests = manifests;
43
+ }
44
+ finalize(payload) {
45
+ const out = {
46
+ schemaVersion: 1,
47
+ command: payload.command,
48
+ outcome: payload.outcome,
49
+ durationMs: payload.durationMs,
50
+ errorCode: payload.errorCode ?? null,
51
+ events: this.events,
52
+ diff: this.diffs,
53
+ doctor: this.doctorReports,
54
+ list: this.listManifests,
55
+ data: payload.data ?? null,
56
+ };
57
+ process.stdout.write(JSON.stringify(out, null, 2) + '\n');
58
+ }
59
+ }
60
+ //# sourceMappingURL=json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.js","sourceRoot":"","sources":["../../src/output/json.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import type { DoctorReport } from '../registry/types.js';
2
+ import type { IntegrationManifest } from '../registry/manifest.js';
3
+ import type { PlannedDiff } from '../transaction/tx.js';
4
+ /**
5
+ * Reporter abstraction. The CLI swaps between a human-readable reporter and a
6
+ * machine-readable JSON reporter based on `--json`. Integrations and commands
7
+ * never call `console.log` directly for structured output — they go through
8
+ * `Reporter`. Side-channel logs (`log.debug`) remain on stderr.
9
+ */
10
+ export interface Reporter {
11
+ /** Free-text status line (one per logical step). */
12
+ step(label: string, detail?: string): void;
13
+ info(label: string, detail?: string): void;
14
+ warn(label: string, detail?: string): void;
15
+ success(label: string, detail?: string): void;
16
+ error(label: string, detail?: string): void;
17
+ /** Print the planned diff (used in --dry-run). */
18
+ diff(diffs: readonly PlannedDiff[], cwd: string): void;
19
+ /** Print a doctor report. */
20
+ doctor(report: DoctorReport): void;
21
+ /** Print the integration list (`allstak-wizard list`). */
22
+ list(manifests: readonly IntegrationManifest[]): void;
23
+ /** Final emit — flushes JSON output, no-op for human reporter. */
24
+ finalize(payload: ReporterFinalize): void;
25
+ }
26
+ export interface ReporterFinalize {
27
+ command: string;
28
+ outcome: 'success' | 'failure' | 'cancelled' | 'noop';
29
+ /** Duration in ms (wall clock). */
30
+ durationMs: number;
31
+ /** Error code when outcome=failure. */
32
+ errorCode?: string;
33
+ /** Optional structured payload (e.g. doctor results) the reporter can include. */
34
+ data?: Record<string, unknown>;
35
+ }
36
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/output/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD;;;;;GAKG;AAEH,MAAM,WAAW,QAAQ;IACvB,oDAAoD;IACpD,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9C,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE5C,kDAAkD;IAClD,IAAI,CAAC,KAAK,EAAE,SAAS,WAAW,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAEvD,6BAA6B;IAC7B,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;IAEnC,0DAA0D;IAC1D,IAAI,CAAC,SAAS,EAAE,SAAS,mBAAmB,EAAE,GAAG,IAAI,CAAC;IAEtD,kEAAkE;IAClE,QAAQ,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAAC;CAC3C;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,MAAM,CAAC;IACtD,mCAAmC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,uCAAuC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kFAAkF;IAClF,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/output/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,21 @@
1
+ import { Transaction } from '../transaction/tx.js';
2
+ export interface EnvVar {
3
+ key: string;
4
+ value: string;
5
+ /** When set, included as a comment line before the var. */
6
+ comment?: string;
7
+ }
8
+ /**
9
+ * Idempotent env-file writer. Uses managed-block markers so re-runs don't append
10
+ * duplicates and `uninstall` can cleanly remove our additions.
11
+ *
12
+ * Will NEVER overwrite an existing user-set value with a different one — if the
13
+ * key is already defined outside the managed block, we skip and return it in
14
+ * `skipped` so the caller can warn.
15
+ */
16
+ export declare function patchEnvFile(tx: Transaction, filePath: string, vars: EnvVar[]): Promise<{
17
+ written: string[];
18
+ skipped: string[];
19
+ }>;
20
+ export declare function removeEnvBlock(tx: Transaction, filePath: string): Promise<void>;
21
+ //# sourceMappingURL=env-file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env-file.d.ts","sourceRoot":"","sources":["../../src/patchers/env-file.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGnD,MAAM,WAAW,MAAM;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,2DAA2D;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAChC,EAAE,EAAE,WAAW,EACf,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EAAE,GACb,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAkCnD;AAED,wBAAsB,cAAc,CAAC,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAUrF"}
@@ -0,0 +1,77 @@
1
+ import { existsSync, readFileSync } from 'node:fs';
2
+ import { upsertManagedBlock, removeManagedBlock } from './markers.js';
3
+ /**
4
+ * Idempotent env-file writer. Uses managed-block markers so re-runs don't append
5
+ * duplicates and `uninstall` can cleanly remove our additions.
6
+ *
7
+ * Will NEVER overwrite an existing user-set value with a different one — if the
8
+ * key is already defined outside the managed block, we skip and return it in
9
+ * `skipped` so the caller can warn.
10
+ */
11
+ export async function patchEnvFile(tx, filePath, vars) {
12
+ const existing = existsSync(filePath) ? readFileSync(filePath, 'utf8') : '';
13
+ const written = [];
14
+ const skipped = [];
15
+ // Identify keys already set OUTSIDE the managed block.
16
+ const outsideBlock = stripManagedBlock(existing);
17
+ const userDefined = new Set(parseEnvKeys(outsideBlock));
18
+ const filtered = vars.filter((v) => {
19
+ if (userDefined.has(v.key)) {
20
+ skipped.push(v.key);
21
+ return false;
22
+ }
23
+ written.push(v.key);
24
+ return true;
25
+ });
26
+ if (filtered.length === 0 && !hasManagedBlockMarker(existing)) {
27
+ return { written, skipped };
28
+ }
29
+ const block = filtered
30
+ .map((v) => {
31
+ const lines = [];
32
+ if (v.comment)
33
+ lines.push(`# ${v.comment}`);
34
+ lines.push(`${v.key}=${escapeEnvValue(v.value)}`);
35
+ return lines.join('\n');
36
+ })
37
+ .join('\n');
38
+ const next = upsertManagedBlock(existing, block || '# (no managed vars)', 'hash');
39
+ await tx.write(filePath, next);
40
+ return { written, skipped };
41
+ }
42
+ export async function removeEnvBlock(tx, filePath) {
43
+ if (!existsSync(filePath))
44
+ return;
45
+ const existing = readFileSync(filePath, 'utf8');
46
+ const next = removeManagedBlock(existing, 'hash');
47
+ if (next === existing)
48
+ return;
49
+ if (next.trim() === '') {
50
+ await tx.delete(filePath);
51
+ }
52
+ else {
53
+ await tx.write(filePath, next);
54
+ }
55
+ }
56
+ function escapeEnvValue(v) {
57
+ if (/[\s"'#=]/.test(v)) {
58
+ return `"${v.replace(/\\/g, '\\\\').replace(/"/g, '\\"')}"`;
59
+ }
60
+ return v;
61
+ }
62
+ function parseEnvKeys(content) {
63
+ const keys = [];
64
+ for (const line of content.split('\n')) {
65
+ const m = /^\s*([A-Z_][A-Z0-9_]*)\s*=/.exec(line);
66
+ if (m)
67
+ keys.push(m[1]);
68
+ }
69
+ return keys;
70
+ }
71
+ function stripManagedBlock(content) {
72
+ return removeManagedBlock(content, 'hash');
73
+ }
74
+ function hasManagedBlockMarker(content) {
75
+ return content.includes('allstak-wizard:v');
76
+ }
77
+ //# sourceMappingURL=env-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env-file.js","sourceRoot":"","sources":["../../src/patchers/env-file.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import { type ProxifiedModule } from 'magicast';
2
+ import { Transaction } from '../transaction/tx.js';
3
+ export type ModuleEditor = (mod: ProxifiedModule<any>) => void | Promise<void>;
4
+ /**
5
+ * Parse a JS/TS file with magicast (recast under the hood — preserves formatting),
6
+ * apply mutations, write the result inside the transaction with a syntax-validation
7
+ * step that re-parses the output and fails the transaction on parse error.
8
+ */
9
+ export declare function patchJsModule(tx: Transaction, filePath: string, editor: ModuleEditor): Promise<{
10
+ changed: boolean;
11
+ }>;
12
+ /**
13
+ * Ensure a module-level import statement exists. Idempotent: if an equivalent
14
+ * import is present (same source + same imported names), this is a no-op.
15
+ *
16
+ * Examples:
17
+ * ensureImport(mod, { from: '@allstak/react', named: ['AllStakProvider'] })
18
+ * ensureImport(mod, { from: '@allstak/js', defaultAs: 'AllStak' })
19
+ */
20
+ export declare function ensureImport(mod: ProxifiedModule<any>, spec: {
21
+ from: string;
22
+ named?: string[];
23
+ defaultAs?: string;
24
+ }): void;
25
+ /**
26
+ * Remove every named/default import from `from`. Used by uninstall.
27
+ */
28
+ export declare function removeImport(mod: ProxifiedModule<any>, from: string): void;
29
+ //# sourceMappingURL=js-ast.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"js-ast.d.ts","sourceRoot":"","sources":["../../src/patchers/js-ast.ts"],"names":[],"mappings":"AACA,OAAO,EAA6B,KAAK,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,MAAM,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,eAAe,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE/E;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,EAAE,EAAE,WAAW,EACf,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAmB/B;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,eAAe,CAAC,GAAG,CAAC,EACzB,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3D,IAAI,CA4BN;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,eAAe,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAK1E"}
@@ -0,0 +1,71 @@
1
+ import { existsSync, readFileSync } from 'node:fs';
2
+ import { parseModule, generateCode } from 'magicast';
3
+ /**
4
+ * Parse a JS/TS file with magicast (recast under the hood — preserves formatting),
5
+ * apply mutations, write the result inside the transaction with a syntax-validation
6
+ * step that re-parses the output and fails the transaction on parse error.
7
+ */
8
+ export async function patchJsModule(tx, filePath, editor) {
9
+ if (!existsSync(filePath)) {
10
+ throw new Error(`Cannot patch ${filePath}: file does not exist`);
11
+ }
12
+ const before = readFileSync(filePath, 'utf8');
13
+ const mod = parseModule(before);
14
+ await editor(mod);
15
+ let { code } = generateCode(mod);
16
+ // Magicast's roundtrip can strip a trailing newline on inputs that end with
17
+ // comment blocks. Preserve the original file's trailing-newline convention so
18
+ // re-runs of the wizard remain byte-identical.
19
+ if (before.endsWith('\n') && !code.endsWith('\n'))
20
+ code += '\n';
21
+ if (code === before)
22
+ return { changed: false };
23
+ await tx.write(filePath, code, async (_path, content) => {
24
+ // Re-parse to confirm valid syntax — magicast/babel will throw on invalid output.
25
+ parseModule(content);
26
+ });
27
+ return { changed: true };
28
+ }
29
+ /**
30
+ * Ensure a module-level import statement exists. Idempotent: if an equivalent
31
+ * import is present (same source + same imported names), this is a no-op.
32
+ *
33
+ * Examples:
34
+ * ensureImport(mod, { from: '@allstak/react', named: ['AllStakProvider'] })
35
+ * ensureImport(mod, { from: '@allstak/js', defaultAs: 'AllStak' })
36
+ */
37
+ export function ensureImport(mod, spec) {
38
+ const existing = mod.imports.$items.find((imp) => imp.from === spec.from);
39
+ if (!existing) {
40
+ if (spec.defaultAs) {
41
+ mod.imports.$add({ from: spec.from, local: spec.defaultAs, imported: 'default' });
42
+ }
43
+ for (const name of spec.named ?? []) {
44
+ mod.imports.$add({ from: spec.from, imported: name, local: name });
45
+ }
46
+ return;
47
+ }
48
+ // Add any missing named imports.
49
+ for (const name of spec.named ?? []) {
50
+ const has = mod.imports.$items.some((imp) => imp.from === spec.from && imp.imported === name);
51
+ if (!has) {
52
+ mod.imports.$add({ from: spec.from, imported: name, local: name });
53
+ }
54
+ }
55
+ if (spec.defaultAs) {
56
+ const hasDefault = mod.imports.$items.some((imp) => imp.from === spec.from && imp.imported === 'default');
57
+ if (!hasDefault) {
58
+ mod.imports.$add({ from: spec.from, local: spec.defaultAs, imported: 'default' });
59
+ }
60
+ }
61
+ }
62
+ /**
63
+ * Remove every named/default import from `from`. Used by uninstall.
64
+ */
65
+ export function removeImport(mod, from) {
66
+ const locals = mod.imports.$items.filter((imp) => imp.from === from).map((imp) => imp.local);
67
+ for (const local of locals) {
68
+ delete mod.imports[local];
69
+ }
70
+ }
71
+ //# sourceMappingURL=js-ast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"js-ast.js","sourceRoot":"","sources":["../../src/patchers/js-ast.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { Transaction } from '../transaction/tx.js';
2
+ /**
3
+ * JSON patching with structure preservation. We re-format with two-space indent
4
+ * which matches what npm/pnpm/yarn produce. This is intentionally NOT a
5
+ * comment-preserving JSONC patcher — JSON files we touch are package.json,
6
+ * app.json, appsettings.json, and composer.json, none of which permit comments.
7
+ */
8
+ type JsonValue = string | number | boolean | null | JsonObject | JsonArray;
9
+ type JsonObject = {
10
+ [k: string]: JsonValue;
11
+ };
12
+ type JsonArray = JsonValue[];
13
+ export declare function patchJsonFile(tx: Transaction, filePath: string, mutate: (current: JsonObject) => JsonObject | void): Promise<{
14
+ changed: boolean;
15
+ }>;
16
+ export declare function ensureDep(pkg: JsonObject, field: 'dependencies' | 'devDependencies' | 'peerDependencies', name: string, version: string): boolean;
17
+ export declare function removeDep(pkg: JsonObject, name: string): boolean;
18
+ export {};
19
+ //# sourceMappingURL=json-file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-file.d.ts","sourceRoot":"","sources":["../../src/patchers/json-file.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD;;;;;GAKG;AAEH,KAAK,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,UAAU,GAAG,SAAS,CAAC;AAC3E,KAAK,UAAU,GAAG;IAAE,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AAC7C,KAAK,SAAS,GAAG,SAAS,EAAE,CAAC;AAE7B,wBAAsB,aAAa,CACjC,EAAE,EAAE,WAAW,EACf,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,UAAU,GAAG,IAAI,GACjD,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAsB/B;AAED,wBAAgB,SAAS,CACvB,GAAG,EAAE,UAAU,EACf,KAAK,EAAE,cAAc,GAAG,iBAAiB,GAAG,kBAAkB,EAC9D,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GACd,OAAO,CAMT;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAUhE"}
@@ -0,0 +1,41 @@
1
+ import { existsSync, readFileSync } from 'node:fs';
2
+ export async function patchJsonFile(tx, filePath, mutate) {
3
+ const existed = existsSync(filePath);
4
+ const raw = existed ? readFileSync(filePath, 'utf8') : '{}';
5
+ let current;
6
+ try {
7
+ current = JSON.parse(raw);
8
+ }
9
+ catch (err) {
10
+ throw new Error(`Cannot patch ${filePath}: existing file is not valid JSON (${err instanceof Error ? err.message : String(err)})`);
11
+ }
12
+ const result = mutate(current) ?? current;
13
+ const next = `${JSON.stringify(result, null, 2)}\n`;
14
+ if (existed && next === raw) {
15
+ return { changed: false };
16
+ }
17
+ await tx.write(filePath, next, async (_path, content) => {
18
+ JSON.parse(content); // throws → triggers rollback
19
+ });
20
+ return { changed: true };
21
+ }
22
+ export function ensureDep(pkg, field, name, version) {
23
+ const deps = pkg[field] ?? {};
24
+ if (deps[name] === version)
25
+ return false;
26
+ deps[name] = version;
27
+ pkg[field] = deps;
28
+ return true;
29
+ }
30
+ export function removeDep(pkg, name) {
31
+ let removed = false;
32
+ for (const field of ['dependencies', 'devDependencies', 'peerDependencies']) {
33
+ const deps = pkg[field];
34
+ if (deps && name in deps) {
35
+ delete deps[name];
36
+ removed = true;
37
+ }
38
+ }
39
+ return removed;
40
+ }
41
+ //# sourceMappingURL=json-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-file.js","sourceRoot":"","sources":["../../src/patchers/json-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAcnD,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,EAAe,EACf,QAAgB,EAChB,MAAkD;IAElD,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IACrC,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5D,IAAI,OAAmB,CAAC;IACxB,IAAI,CAAC;QACH,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAe,CAAC;IAC1C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,gBAAgB,QAAQ,sCACtB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CACjD,GAAG,CACJ,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC;IAC1C,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;IACpD,IAAI,OAAO,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;QAC5B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC5B,CAAC;IACD,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QACtD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,6BAA6B;IACpD,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,SAAS,CACvB,GAAe,EACf,KAA8D,EAC9D,IAAY,EACZ,OAAe;IAEf,MAAM,IAAI,GAAI,GAAG,CAAC,KAAK,CAA4B,IAAI,EAAE,CAAC;IAC1D,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC;IACzC,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;IACrB,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAClB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,GAAe,EAAE,IAAY;IACrD,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,KAAK,MAAM,KAAK,IAAI,CAAC,cAAc,EAAE,iBAAiB,EAAE,kBAAkB,CAAU,EAAE,CAAC;QACrF,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAA2B,CAAC;QAClD,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC;YAClB,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Region markers for idempotent patches. The wizard wraps every block of injected
3
+ * code or config with `BEGIN/END` markers so that we can:
4
+ * 1. Re-run the wizard without duplicating regions (we replace the existing block).
5
+ * 2. Cleanly remove regions during `uninstall`.
6
+ */
7
+ export declare const MARKER_VERSION = "1";
8
+ export declare const HASH_BEGIN = "# >>> allstak-wizard:v1 (do not edit) >>>";
9
+ export declare const HASH_END = "# <<< allstak-wizard:v1 <<<";
10
+ export declare const SLASH_BEGIN = "// >>> allstak-wizard:v1 (do not edit) >>>";
11
+ export declare const SLASH_END = "// <<< allstak-wizard:v1 <<<";
12
+ export type MarkerStyle = 'hash' | 'slash';
13
+ export declare function markerPair(style: MarkerStyle): {
14
+ begin: string;
15
+ end: string;
16
+ };
17
+ export declare function hasMarker(content: string): boolean;
18
+ /**
19
+ * Replace the wizard-managed block with `replacement`, or append it if absent.
20
+ * `replacement` should NOT include the markers — they are added here.
21
+ */
22
+ export declare function upsertManagedBlock(content: string, replacement: string, style: MarkerStyle): string;
23
+ /**
24
+ * Remove the wizard-managed block (used by uninstall). Returns content untouched
25
+ * if no markers exist.
26
+ */
27
+ export declare function removeManagedBlock(content: string, style: MarkerStyle): string;
28
+ //# sourceMappingURL=markers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markers.d.ts","sourceRoot":"","sources":["../../src/patchers/markers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,cAAc,MAAM,CAAC;AAElC,eAAO,MAAM,UAAU,8CAA8D,CAAC;AACtF,eAAO,MAAM,QAAQ,gCAAgD,CAAC;AAEtE,eAAO,MAAM,WAAW,+CAA+D,CAAC;AACxF,eAAO,MAAM,SAAS,iCAAiD,CAAC;AAExE,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3C,wBAAgB,UAAU,CAAC,KAAK,EAAE,WAAW,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAI7E;AAID,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAElD;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,WAAW,GACjB,MAAM,CAWR;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,MAAM,CAI9E"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Region markers for idempotent patches. The wizard wraps every block of injected
3
+ * code or config with `BEGIN/END` markers so that we can:
4
+ * 1. Re-run the wizard without duplicating regions (we replace the existing block).
5
+ * 2. Cleanly remove regions during `uninstall`.
6
+ */
7
+ export const MARKER_VERSION = '1';
8
+ export const HASH_BEGIN = `# >>> allstak-wizard:v${MARKER_VERSION} (do not edit) >>>`;
9
+ export const HASH_END = `# <<< allstak-wizard:v${MARKER_VERSION} <<<`;
10
+ export const SLASH_BEGIN = `// >>> allstak-wizard:v${MARKER_VERSION} (do not edit) >>>`;
11
+ export const SLASH_END = `// <<< allstak-wizard:v${MARKER_VERSION} <<<`;
12
+ export function markerPair(style) {
13
+ return style === 'hash'
14
+ ? { begin: HASH_BEGIN, end: HASH_END }
15
+ : { begin: SLASH_BEGIN, end: SLASH_END };
16
+ }
17
+ const ANY_BEGIN_RE = /^[#\/]+\s*>>>\s*allstak-wizard:v\d+.*?>>>\s*$/m;
18
+ export function hasMarker(content) {
19
+ return ANY_BEGIN_RE.test(content);
20
+ }
21
+ /**
22
+ * Replace the wizard-managed block with `replacement`, or append it if absent.
23
+ * `replacement` should NOT include the markers — they are added here.
24
+ */
25
+ export function upsertManagedBlock(content, replacement, style) {
26
+ const { begin, end } = markerPair(style);
27
+ const escapedBegin = escapeRegExp(begin);
28
+ const escapedEnd = escapeRegExp(end);
29
+ const block = `${begin}\n${replacement.trimEnd()}\n${end}`;
30
+ const re = new RegExp(`${escapedBegin}[\\s\\S]*?${escapedEnd}`, 'm');
31
+ if (re.test(content)) {
32
+ return content.replace(re, block);
33
+ }
34
+ const sep = content.length === 0 || content.endsWith('\n') ? '' : '\n';
35
+ return `${content}${sep}\n${block}\n`;
36
+ }
37
+ /**
38
+ * Remove the wizard-managed block (used by uninstall). Returns content untouched
39
+ * if no markers exist.
40
+ */
41
+ export function removeManagedBlock(content, style) {
42
+ const { begin, end } = markerPair(style);
43
+ const re = new RegExp(`\\n?${escapeRegExp(begin)}[\\s\\S]*?${escapeRegExp(end)}\\n?`, 'm');
44
+ return content.replace(re, '');
45
+ }
46
+ function escapeRegExp(s) {
47
+ return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
48
+ }
49
+ //# sourceMappingURL=markers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markers.js","sourceRoot":"","sources":["../../src/patchers/markers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAC;AAElC,MAAM,CAAC,MAAM,UAAU,GAAG,yBAAyB,cAAc,oBAAoB,CAAC;AACtF,MAAM,CAAC,MAAM,QAAQ,GAAG,yBAAyB,cAAc,MAAM,CAAC;AAEtE,MAAM,CAAC,MAAM,WAAW,GAAG,0BAA0B,cAAc,oBAAoB,CAAC;AACxF,MAAM,CAAC,MAAM,SAAS,GAAG,0BAA0B,cAAc,MAAM,CAAC;AAIxE,MAAM,UAAU,UAAU,CAAC,KAAkB;IAC3C,OAAO,KAAK,KAAK,MAAM;QACrB,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE;QACtC,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;AAC7C,CAAC;AAED,MAAM,YAAY,GAAG,gDAAgD,CAAC;AAEtE,MAAM,UAAU,SAAS,CAAC,OAAe;IACvC,OAAO,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACpC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAAe,EACf,WAAmB,EACnB,KAAkB;IAElB,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IACzC,MAAM,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IACzC,MAAM,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,GAAG,KAAK,KAAK,WAAW,CAAC,OAAO,EAAE,KAAK,GAAG,EAAE,CAAC;IAC3D,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,GAAG,YAAY,aAAa,UAAU,EAAE,EAAE,GAAG,CAAC,CAAC;IACrE,IAAI,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACrB,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IACpC,CAAC;IACD,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACvE,OAAO,GAAG,OAAO,GAAG,GAAG,KAAK,KAAK,IAAI,CAAC;AACxC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAe,EAAE,KAAkB;IACpE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IACzC,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,OAAO,YAAY,CAAC,KAAK,CAAC,aAAa,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3F,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACjC,CAAC;AAED,SAAS,YAAY,CAAC,CAAS;IAC7B,OAAO,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AAClD,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { Transaction } from '../transaction/tx.js';
2
+ import { type MarkerStyle } from './markers.js';
3
+ /**
4
+ * Append (or update) a managed-block region inside a source file.
5
+ *
6
+ * Use this for cases where AST patching is risky/insufficient — for example,
7
+ * appending `AllStak.init({...})` at the top of a Node entry script, where we
8
+ * don't want to refactor user code, only add ours.
9
+ *
10
+ * For JS/TS targets we re-parse the result via magicast to confirm validity.
11
+ */
12
+ export declare function appendManagedBlock(tx: Transaction, filePath: string, block: string, options: {
13
+ style: MarkerStyle;
14
+ /** When true, validate the result parses as a JS/TS module. */
15
+ validateJs?: boolean;
16
+ /** Used when file does not yet exist (e.g. instrumentation.ts). */
17
+ defaultEmpty?: string;
18
+ }): Promise<{
19
+ changed: boolean;
20
+ }>;
21
+ export declare function removeManagedSourceBlock(tx: Transaction, filePath: string, style: MarkerStyle): Promise<{
22
+ changed: boolean;
23
+ }>;
24
+ //# sourceMappingURL=source-block.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-block.d.ts","sourceRoot":"","sources":["../../src/patchers/source-block.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAA0C,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAExF;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CACtC,EAAE,EAAE,WAAW,EACf,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE;IACP,KAAK,EAAE,WAAW,CAAC;IACnB,+DAA+D;IAC/D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,mEAAmE;IACnE,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GACA,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAQ/B;AAED,wBAAsB,wBAAwB,CAC5C,EAAE,EAAE,WAAW,EACf,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,WAAW,GACjB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAW/B"}
@@ -0,0 +1,40 @@
1
+ import { existsSync, readFileSync } from 'node:fs';
2
+ import { parseModule } from 'magicast';
3
+ import { upsertManagedBlock, removeManagedBlock } from './markers.js';
4
+ /**
5
+ * Append (or update) a managed-block region inside a source file.
6
+ *
7
+ * Use this for cases where AST patching is risky/insufficient — for example,
8
+ * appending `AllStak.init({...})` at the top of a Node entry script, where we
9
+ * don't want to refactor user code, only add ours.
10
+ *
11
+ * For JS/TS targets we re-parse the result via magicast to confirm validity.
12
+ */
13
+ export async function appendManagedBlock(tx, filePath, block, options) {
14
+ const existed = existsSync(filePath);
15
+ const current = existed ? readFileSync(filePath, 'utf8') : (options.defaultEmpty ?? '');
16
+ const next = upsertManagedBlock(current, block, options.style);
17
+ if (existed && next === current)
18
+ return { changed: false };
19
+ await tx.write(filePath, next, options.validateJs ? validateJs : undefined);
20
+ return { changed: true };
21
+ }
22
+ export async function removeManagedSourceBlock(tx, filePath, style) {
23
+ if (!existsSync(filePath))
24
+ return { changed: false };
25
+ const current = readFileSync(filePath, 'utf8');
26
+ const next = removeManagedBlock(current, style);
27
+ if (next === current)
28
+ return { changed: false };
29
+ if (next.trim() === '') {
30
+ await tx.delete(filePath);
31
+ }
32
+ else {
33
+ await tx.write(filePath, next);
34
+ }
35
+ return { changed: true };
36
+ }
37
+ async function validateJs(_path, content) {
38
+ parseModule(content);
39
+ }
40
+ //# sourceMappingURL=source-block.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-block.js","sourceRoot":"","sources":["../../src/patchers/source-block.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEvC,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAoB,MAAM,cAAc,CAAC;AAExF;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,EAAe,EACf,QAAgB,EAChB,KAAa,EACb,OAMC;IAED,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IACrC,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;IACxF,MAAM,IAAI,GAAG,kBAAkB,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAC/D,IAAI,OAAO,IAAI,IAAI,KAAK,OAAO;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAE3D,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC5E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC3B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,EAAe,EACf,QAAgB,EAChB,KAAkB;IAElB,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IACrD,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC/C,MAAM,IAAI,GAAG,kBAAkB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAChD,IAAI,IAAI,KAAK,OAAO;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAChD,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACvB,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;SAAM,CAAC;QACN,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC3B,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,KAAa,EAAE,OAAe;IACtD,WAAW,CAAC,OAAO,CAAC,CAAC;AACvB,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare function bootstrapRegistry(): void;
2
+ export { registry } from './registry.js';
3
+ export * from './types.js';
4
+ export type { IntegrationManifest, StabilityLevel, Capability, CompatConstraint, FileExpectation, } from './manifest.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/registry/index.ts"],"names":[],"mappings":"AAkBA,wBAAgB,iBAAiB,IAAI,IAAI,CAoBxC;AAED,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,cAAc,YAAY,CAAC;AAC3B,YAAY,EACV,mBAAmB,EACnB,cAAc,EACd,UAAU,EACV,gBAAgB,EAChB,eAAe,GAChB,MAAM,eAAe,CAAC"}
@@ -0,0 +1,42 @@
1
+ import { registry } from './registry.js';
2
+ import { reactIntegration } from '../integrations/react/index.js';
3
+ import { nextIntegration } from '../integrations/next/index.js';
4
+ import { jsIntegration } from '../integrations/js/index.js';
5
+ import { expoIntegration } from '../integrations/expo.js';
6
+ import { reactNativeIntegration } from '../integrations/react-native.js';
7
+ import { nestjsIntegration } from '../integrations/nestjs.js';
8
+ import { fastifyIntegration } from '../integrations/fastify.js';
9
+ import { otelIntegration } from '../integrations/otel.js';
10
+ import { pythonIntegration } from '../integrations/python.js';
11
+ import { goIntegration } from '../integrations/go.js';
12
+ import { javaIntegration } from '../integrations/java.js';
13
+ import { phpIntegration } from '../integrations/php.js';
14
+ import { rubyIntegration } from '../integrations/ruby.js';
15
+ import { dotnetIntegration } from '../integrations/dotnet.js';
16
+ import { flutterIntegration } from '../integrations/flutter.js';
17
+ let bootstrapped = false;
18
+ export function bootstrapRegistry() {
19
+ if (bootstrapped)
20
+ return;
21
+ // Validated:
22
+ registry.register(reactIntegration);
23
+ registry.register(nextIntegration);
24
+ registry.register(jsIntegration);
25
+ // Scaffolded (not validated end-to-end):
26
+ registry.register(expoIntegration);
27
+ registry.register(reactNativeIntegration);
28
+ registry.register(nestjsIntegration);
29
+ registry.register(fastifyIntegration);
30
+ registry.register(otelIntegration);
31
+ registry.register(pythonIntegration);
32
+ registry.register(goIntegration);
33
+ registry.register(javaIntegration);
34
+ registry.register(phpIntegration);
35
+ registry.register(rubyIntegration);
36
+ registry.register(dotnetIntegration);
37
+ registry.register(flutterIntegration);
38
+ bootstrapped = true;
39
+ }
40
+ export { registry } from './registry.js';
41
+ export * from './types.js';
42
+ //# sourceMappingURL=index.js.map