@shortlink-org/portolan 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (381) hide show
  1. package/README.md +69 -205
  2. package/cli/init.mjs +285 -0
  3. package/cli/init.test.mjs +158 -0
  4. package/cli/portolan.mjs +37 -73
  5. package/index.html +19 -0
  6. package/package.json +5 -10
  7. package/plugins/README.md +66 -27
  8. package/plugins/portolan-go.wasm +0 -0
  9. package/portolan.json +52 -73
  10. package/public/landing/cats/bug-hunter.webp +0 -0
  11. package/public/landing/cats/compass-nap.webp +0 -0
  12. package/public/landing/cats/diagrammer.webp +0 -0
  13. package/public/landing/cats/docs-reader.webp +0 -0
  14. package/public/landing/cats/laptop.webp +0 -0
  15. package/public/landing/cats/map-inspector.webp +0 -0
  16. package/public/landing/cats/server-break.webp +0 -0
  17. package/public/landing/cats/star-mapper.webp +0 -0
  18. package/public/landing/cats/system-builder.webp +0 -0
  19. package/public/landing/cats/thread-tangle.webp +0 -0
  20. package/public/og.png +0 -0
  21. package/public/readme-header.webp +0 -0
  22. package/schema/portolan.schema.json +180 -0
  23. package/scripts/builtin-plugins.mjs +14 -0
  24. package/scripts/delivery-presets.mjs +353 -0
  25. package/scripts/gen.mjs +37 -4
  26. package/scripts/history.mjs +126 -0
  27. package/scripts/history.test.mjs +110 -0
  28. package/scripts/host-plugins/fetch-bsr.mjs +351 -0
  29. package/{plugins/fetch-bsr/options.schema.json → scripts/host-plugins/fetch-bsr.options.json} +4 -0
  30. package/scripts/host-plugins/fetch-bsr.test.mjs +212 -0
  31. package/scripts/host-plugins/fetch-csr.mjs +386 -0
  32. package/scripts/host-plugins/fetch-csr.test.mjs +178 -0
  33. package/scripts/host-plugins/fetch-git.mjs +379 -0
  34. package/scripts/host-plugins/fetch-git.test.mjs +210 -0
  35. package/scripts/local-api.mjs +22 -4
  36. package/scripts/local-api.test.mjs +84 -2
  37. package/scripts/manifest.mjs +3 -2
  38. package/scripts/package-smoke.mjs +6 -2
  39. package/scripts/plugin-host.mjs +77 -18
  40. package/scripts/plugin-host.test.mjs +50 -1
  41. package/scripts/plugin-wasm-worker.mjs +6 -3
  42. package/scripts/run-builtin.mjs +6 -26
  43. package/scripts/schema.mjs +6 -1
  44. package/src/app/App.tsx +24 -429
  45. package/src/app/Breadcrumbs.test.ts +7 -0
  46. package/src/app/Breadcrumbs.tsx +15 -2
  47. package/src/app/CatalogApp.tsx +436 -0
  48. package/src/app/Sidebar.tsx +0 -1
  49. package/src/chat/ChatPanel.tsx +98 -41
  50. package/src/chat/Composer.tsx +4 -2
  51. package/src/chat/Conversation.tsx +79 -15
  52. package/src/chat/Header.tsx +43 -9
  53. package/src/chat/Starter.tsx +64 -3
  54. package/src/chat/Steps.tsx +1 -1
  55. package/src/chat/flags.test.ts +51 -14
  56. package/src/chat/flags.ts +8 -2
  57. package/src/chat/page-context.test.ts +51 -0
  58. package/src/chat/page-context.ts +128 -0
  59. package/src/chat/prompt.test.ts +49 -1
  60. package/src/chat/prompt.ts +42 -1
  61. package/src/chat/tools.ts +7 -2
  62. package/src/chat/transport.ts +16 -4
  63. package/src/components/ProblemRow.tsx +182 -0
  64. package/src/data.ts +20 -5
  65. package/src/er/ErCanvas.tsx +1 -1
  66. package/src/graph/DependencyGraph.tsx +10 -1
  67. package/src/graph/FocusedEventGraph.tsx +1 -1
  68. package/src/graph/GraphToolbar.tsx +2 -4
  69. package/src/index.css +220 -2
  70. package/src/landing/DraggableReveal.tsx +168 -0
  71. package/src/landing/EstateGraph.tsx +28 -0
  72. package/src/landing/FlowPlayback.tsx +282 -0
  73. package/src/landing/HeroMap.tsx +128 -0
  74. package/src/landing/LandingPage.tsx +757 -0
  75. package/src/landing/ProductFrame.tsx +68 -0
  76. package/src/landing/ProductTour.tsx +371 -0
  77. package/src/landing/catalog.ts +25 -0
  78. package/src/landing/motion.tsx +52 -0
  79. package/src/lib/all-problems.ts +28 -0
  80. package/src/lib/local-api.ts +35 -1
  81. package/src/lib/setup-info.test.ts +8 -0
  82. package/src/lib/setup-info.ts +3 -2
  83. package/src/lib/source-code.ts +2 -1
  84. package/src/likec4/C4View.tsx +5 -0
  85. package/src/likec4/InteractiveView.tsx +5 -1
  86. package/src/map/ContextMapGraph.tsx +47 -20
  87. package/src/pages/ContextMap.tsx +5 -1
  88. package/src/pages/FlowDetail.tsx +24 -7
  89. package/src/pages/Overview.tsx +68 -12
  90. package/src/pages/Problems.tsx +6 -193
  91. package/src/pages/Settings.tsx +133 -108
  92. package/src/pages/settings/DeliverySettings.tsx +229 -0
  93. package/src/pages/settings/PreferencesSettings.tsx +101 -0
  94. package/src/routes.test.ts +20 -0
  95. package/src/routes.ts +13 -1
  96. package/vite.config.ts +12 -8
  97. package/catalog/enum_test.go +0 -46
  98. package/catalog/model.go +0 -932
  99. package/catalog/roundtrip_test.go +0 -185
  100. package/catalog/via_test.go +0 -38
  101. package/go.mod +0 -14
  102. package/go.sum +0 -14
  103. package/internal/commands/cargo.go +0 -154
  104. package/internal/commands/commands.go +0 -143
  105. package/internal/commands/commands_test.go +0 -323
  106. package/internal/commands/gradle.go +0 -77
  107. package/internal/commands/justfile.go +0 -82
  108. package/internal/commands/makefile.go +0 -106
  109. package/internal/commands/maven.go +0 -93
  110. package/internal/commands/packagejson.go +0 -159
  111. package/internal/commands/pyproject.go +0 -169
  112. package/internal/commands/taskfile.go +0 -101
  113. package/internal/commands/testdata/estate/.cargo/config.toml +0 -7
  114. package/internal/commands/testdata/estate/Makefile +0 -33
  115. package/internal/commands/testdata/estate/Taskfile.yml +0 -21
  116. package/internal/commands/testdata/estate/build.gradle.kts +0 -21
  117. package/internal/commands/testdata/estate/justfile +0 -20
  118. package/internal/commands/testdata/estate/package.json +0 -13
  119. package/internal/commands/testdata/estate/pom.xml +0 -29
  120. package/internal/commands/testdata/estate/pyproject.toml +0 -27
  121. package/internal/commands/testdata/estate/xtask/src/main.rs +0 -27
  122. package/internal/commands/testdata/golden/commands.json +0 -305
  123. package/internal/gohttp/analyze.go +0 -2500
  124. package/internal/gohttp/endpoints.go +0 -1067
  125. package/internal/gohttp/roots.go +0 -320
  126. package/internal/gohttp/typed.go +0 -143
  127. package/internal/goscan/constants.go +0 -85
  128. package/internal/goscan/goscan_test.go +0 -227
  129. package/internal/goscan/names.go +0 -52
  130. package/internal/goscan/parse_test.go +0 -11
  131. package/internal/goscan/source.go +0 -36
  132. package/internal/goscan/tree.go +0 -155
  133. package/internal/goscan/types.go +0 -99
  134. package/internal/wsdl/ids.go +0 -127
  135. package/internal/wsdl/ids_test.go +0 -21
  136. package/internal/wsdl/model.go +0 -62
  137. package/internal/wsdl/parse.go +0 -920
  138. package/internal/wsdl/parse_test.go +0 -133
  139. package/plugin/describe.go +0 -107
  140. package/plugin/describe_test.go +0 -114
  141. package/plugin/protocol.go +0 -117
  142. package/plugin/schematest/schematest.go +0 -126
  143. package/plugins/extract-adr/describe.go +0 -19
  144. package/plugins/extract-adr/describe_test.go +0 -11
  145. package/plugins/extract-adr/extract.go +0 -153
  146. package/plugins/extract-adr/extract_test.go +0 -350
  147. package/plugins/extract-adr/history.go +0 -99
  148. package/plugins/extract-adr/main.go +0 -65
  149. package/plugins/extract-adr/parse.go +0 -642
  150. package/plugins/extract-adr/parse_test.go +0 -405
  151. package/plugins/extract-asyncapi/describe.go +0 -19
  152. package/plugins/extract-asyncapi/describe_test.go +0 -11
  153. package/plugins/extract-asyncapi/extract.go +0 -315
  154. package/plugins/extract-asyncapi/extract_test.go +0 -197
  155. package/plugins/extract-asyncapi/main.go +0 -48
  156. package/plugins/extract-asyncapi/spec.go +0 -151
  157. package/plugins/extract-commands/describe.go +0 -19
  158. package/plugins/extract-commands/describe_test.go +0 -11
  159. package/plugins/extract-commands/extract.go +0 -79
  160. package/plugins/extract-commands/extract_test.go +0 -92
  161. package/plugins/extract-commands/main.go +0 -55
  162. package/plugins/extract-csr/avro.go +0 -258
  163. package/plugins/extract-csr/describe.go +0 -19
  164. package/plugins/extract-csr/describe_test.go +0 -11
  165. package/plugins/extract-csr/extract.go +0 -338
  166. package/plugins/extract-csr/extract_test.go +0 -374
  167. package/plugins/extract-csr/jsonschema.go +0 -343
  168. package/plugins/extract-csr/lock.go +0 -25
  169. package/plugins/extract-csr/main.go +0 -84
  170. package/plugins/extract-csr/subject.go +0 -102
  171. package/plugins/extract-flows/describe.go +0 -19
  172. package/plugins/extract-flows/describe_test.go +0 -11
  173. package/plugins/extract-flows/extract.go +0 -91
  174. package/plugins/extract-flows/main.go +0 -45
  175. package/plugins/extract-flows/parse.go +0 -593
  176. package/plugins/extract-flows/parse_test.go +0 -204
  177. package/plugins/extract-glossary/describe.go +0 -19
  178. package/plugins/extract-glossary/describe_test.go +0 -11
  179. package/plugins/extract-glossary/extract.go +0 -115
  180. package/plugins/extract-glossary/extract_test.go +0 -220
  181. package/plugins/extract-glossary/main.go +0 -59
  182. package/plugins/extract-glossary/parse.go +0 -214
  183. package/plugins/extract-glossary/parse_test.go +0 -203
  184. package/plugins/extract-go/aggregate.go +0 -214
  185. package/plugins/extract-go/client.go +0 -409
  186. package/plugins/extract-go/client_test.go +0 -266
  187. package/plugins/extract-go/describe.go +0 -19
  188. package/plugins/extract-go/describe_test.go +0 -11
  189. package/plugins/extract-go/enum.go +0 -195
  190. package/plugins/extract-go/enum_test.go +0 -82
  191. package/plugins/extract-go/event.go +0 -99
  192. package/plugins/extract-go/extract.go +0 -191
  193. package/plugins/extract-go/extract_test.go +0 -261
  194. package/plugins/extract-go/flow.go +0 -1441
  195. package/plugins/extract-go/flow_test.go +0 -609
  196. package/plugins/extract-go/httpclient.go +0 -174
  197. package/plugins/extract-go/httpclient_test.go +0 -296
  198. package/plugins/extract-go/ids.go +0 -92
  199. package/plugins/extract-go/layout.go +0 -225
  200. package/plugins/extract-go/layout_test.go +0 -125
  201. package/plugins/extract-go/lifecycle.go +0 -324
  202. package/plugins/extract-go/lifecycle_test.go +0 -108
  203. package/plugins/extract-go/main.go +0 -79
  204. package/plugins/extract-go/operation.go +0 -157
  205. package/plugins/extract-go/source.go +0 -316
  206. package/plugins/extract-go/transport.go +0 -321
  207. package/plugins/extract-go/transport_test.go +0 -145
  208. package/plugins/extract-go/wiring.go +0 -434
  209. package/plugins/extract-go-nats/describe.go +0 -19
  210. package/plugins/extract-go-nats/describe_test.go +0 -11
  211. package/plugins/extract-go-nats/extract.go +0 -177
  212. package/plugins/extract-go-nats/extract_test.go +0 -389
  213. package/plugins/extract-go-nats/index.go +0 -379
  214. package/plugins/extract-go-nats/main.go +0 -42
  215. package/plugins/extract-go-nats/resolve.go +0 -161
  216. package/plugins/extract-go-nats/sites.go +0 -224
  217. package/plugins/extract-graphql/describe.go +0 -19
  218. package/plugins/extract-graphql/describe_test.go +0 -11
  219. package/plugins/extract-graphql/extract.go +0 -433
  220. package/plugins/extract-graphql/extract_test.go +0 -256
  221. package/plugins/extract-graphql/ids.go +0 -49
  222. package/plugins/extract-graphql/lex.go +0 -237
  223. package/plugins/extract-graphql/main.go +0 -51
  224. package/plugins/extract-graphql/parse.go +0 -621
  225. package/plugins/extract-graphql/parse_test.go +0 -122
  226. package/plugins/extract-http-clients/describe.go +0 -19
  227. package/plugins/extract-http-clients/describe_test.go +0 -11
  228. package/plugins/extract-http-clients/extract.go +0 -705
  229. package/plugins/extract-http-clients/extract_test.go +0 -1263
  230. package/plugins/extract-http-clients/main.go +0 -42
  231. package/plugins/extract-openapi/describe.go +0 -19
  232. package/plugins/extract-openapi/describe_test.go +0 -11
  233. package/plugins/extract-openapi/discover.go +0 -243
  234. package/plugins/extract-openapi/extract.go +0 -526
  235. package/plugins/extract-openapi/extract_test.go +0 -545
  236. package/plugins/extract-openapi/main.go +0 -75
  237. package/plugins/extract-openapi/spec.go +0 -350
  238. package/plugins/extract-project/describe.go +0 -19
  239. package/plugins/extract-project/describe_test.go +0 -11
  240. package/plugins/extract-project/extract.go +0 -221
  241. package/plugins/extract-project/extract_test.go +0 -109
  242. package/plugins/extract-project/main.go +0 -41
  243. package/plugins/extract-proto/ast.go +0 -125
  244. package/plugins/extract-proto/consumes.go +0 -77
  245. package/plugins/extract-proto/describe.go +0 -19
  246. package/plugins/extract-proto/extract.go +0 -293
  247. package/plugins/extract-proto/extract_test.go +0 -459
  248. package/plugins/extract-proto/ids.go +0 -89
  249. package/plugins/extract-proto/ids_test.go +0 -57
  250. package/plugins/extract-proto/lex.go +0 -285
  251. package/plugins/extract-proto/main.go +0 -100
  252. package/plugins/extract-proto/module.go +0 -120
  253. package/plugins/extract-proto/parse.go +0 -720
  254. package/plugins/extract-proto/parse_test.go +0 -307
  255. package/plugins/extract-proto/provides.go +0 -236
  256. package/plugins/extract-proto/resolve.go +0 -222
  257. package/plugins/extract-proto/resolve_test.go +0 -119
  258. package/plugins/extract-redis/describe.go +0 -19
  259. package/plugins/extract-redis/describe_test.go +0 -11
  260. package/plugins/extract-redis/extract.go +0 -183
  261. package/plugins/extract-redis/extract_test.go +0 -168
  262. package/plugins/extract-redis/keyspaces.go +0 -469
  263. package/plugins/extract-redis/main.go +0 -44
  264. package/plugins/extract-river/describe.go +0 -19
  265. package/plugins/extract-river/describe_test.go +0 -11
  266. package/plugins/extract-river/extract.go +0 -507
  267. package/plugins/extract-river/extract_test.go +0 -132
  268. package/plugins/extract-river/main.go +0 -42
  269. package/plugins/extract-sql/ddl.go +0 -893
  270. package/plugins/extract-sql/ddl_test.go +0 -401
  271. package/plugins/extract-sql/describe.go +0 -19
  272. package/plugins/extract-sql/describe_test.go +0 -11
  273. package/plugins/extract-sql/layout.go +0 -221
  274. package/plugins/extract-sql/layout_test.go +0 -55
  275. package/plugins/extract-sql/lineage.go +0 -107
  276. package/plugins/extract-sql/main.go +0 -141
  277. package/plugins/extract-sql/maps.go +0 -564
  278. package/plugins/extract-sql/maps_java.go +0 -117
  279. package/plugins/extract-sql/maps_rust.go +0 -333
  280. package/plugins/extract-sql/maps_rust_test.go +0 -70
  281. package/plugins/extract-sql/maps_test.go +0 -204
  282. package/plugins/extract-sql/maps_ts.go +0 -398
  283. package/plugins/extract-sql/maps_ts_test.go +0 -136
  284. package/plugins/extract-sql/projection.go +0 -70
  285. package/plugins/extract-sql/projection_test.go +0 -50
  286. package/plugins/extract-sql/store.go +0 -420
  287. package/plugins/extract-sql/store_test.go +0 -233
  288. package/plugins/extract-sql/view.go +0 -295
  289. package/plugins/extract-watermill/describe.go +0 -19
  290. package/plugins/extract-watermill/describe_test.go +0 -11
  291. package/plugins/extract-watermill/extract.go +0 -1228
  292. package/plugins/extract-watermill/extract_test.go +0 -234
  293. package/plugins/extract-watermill/main.go +0 -41
  294. package/plugins/extract-wsdl/describe.go +0 -19
  295. package/plugins/extract-wsdl/describe_test.go +0 -11
  296. package/plugins/extract-wsdl/extract.go +0 -148
  297. package/plugins/extract-wsdl/extract_test.go +0 -45
  298. package/plugins/extract-wsdl/main.go +0 -53
  299. package/plugins/fetch-bsr/auth.go +0 -114
  300. package/plugins/fetch-bsr/bsr.go +0 -240
  301. package/plugins/fetch-bsr/cache.go +0 -66
  302. package/plugins/fetch-bsr/describe.go +0 -19
  303. package/plugins/fetch-bsr/fetch.go +0 -192
  304. package/plugins/fetch-bsr/fetch_test.go +0 -465
  305. package/plugins/fetch-bsr/lock.go +0 -71
  306. package/plugins/fetch-bsr/main.go +0 -117
  307. package/plugins/fetch-csr/auth.go +0 -95
  308. package/plugins/fetch-csr/cache.go +0 -69
  309. package/plugins/fetch-csr/describe.go +0 -19
  310. package/plugins/fetch-csr/describe_test.go +0 -11
  311. package/plugins/fetch-csr/fetch.go +0 -254
  312. package/plugins/fetch-csr/fetch_test.go +0 -494
  313. package/plugins/fetch-csr/lock.go +0 -95
  314. package/plugins/fetch-csr/main.go +0 -122
  315. package/plugins/fetch-csr/registry.go +0 -209
  316. package/plugins/fetch-git/cache.go +0 -65
  317. package/plugins/fetch-git/describe.go +0 -19
  318. package/plugins/fetch-git/describe_test.go +0 -11
  319. package/plugins/fetch-git/fetch.go +0 -181
  320. package/plugins/fetch-git/fetch_test.go +0 -332
  321. package/plugins/fetch-git/git.go +0 -169
  322. package/plugins/fetch-git/lock.go +0 -72
  323. package/plugins/fetch-git/main.go +0 -127
  324. package/plugins/fetch-git/offline.go +0 -39
  325. package/plugins/fetch-git/pin.go +0 -90
  326. package/plugins/fetch-git/pin_test.go +0 -74
  327. package/plugins/gen-backstage/describe.go +0 -17
  328. package/plugins/gen-backstage/main.go +0 -22
  329. package/plugins/gen-backstage/plugin.go +0 -473
  330. package/plugins/gen-backstage/plugin_test.go +0 -145
  331. package/plugins/gen-backstage.wasm +0 -0
  332. package/plugins/gen-markdown/adr.go +0 -162
  333. package/plugins/gen-markdown/aggregate.go +0 -362
  334. package/plugins/gen-markdown/canonical.go +0 -93
  335. package/plugins/gen-markdown/context.go +0 -90
  336. package/plugins/gen-markdown/coverage_test.go +0 -89
  337. package/plugins/gen-markdown/describe.go +0 -19
  338. package/plugins/gen-markdown/describe_test.go +0 -11
  339. package/plugins/gen-markdown/external.go +0 -71
  340. package/plugins/gen-markdown/flow.go +0 -277
  341. package/plugins/gen-markdown/glossary.go +0 -76
  342. package/plugins/gen-markdown/glossary_test.go +0 -148
  343. package/plugins/gen-markdown/llms.go +0 -302
  344. package/plugins/gen-markdown/main.go +0 -22
  345. package/plugins/gen-markdown/markdown.go +0 -254
  346. package/plugins/gen-markdown/markdown_test.go +0 -100
  347. package/plugins/gen-markdown/module.go +0 -107
  348. package/plugins/gen-markdown/plugin.go +0 -39
  349. package/plugins/gen-markdown/quality_test.go +0 -176
  350. package/plugins/gen-markdown/redis_test.go +0 -38
  351. package/plugins/gen-markdown/render.go +0 -344
  352. package/plugins/gen-markdown/render_test.go +0 -186
  353. package/plugins/gen-markdown/service.go +0 -456
  354. package/plugins/gen-markdown/source.go +0 -177
  355. package/plugins/gen-markdown/store.go +0 -201
  356. package/plugins/gen-markdown.wasm +0 -0
  357. package/plugins/gen-mermaid/describe.go +0 -17
  358. package/plugins/gen-mermaid/main.go +0 -22
  359. package/plugins/gen-mermaid/plugin.go +0 -104
  360. package/plugins/gen-mermaid/plugin_test.go +0 -33
  361. package/plugins/gen-mermaid.wasm +0 -0
  362. package/plugins/openapi/ids.go +0 -261
  363. package/plugins/openapi/ids_test.go +0 -98
  364. package/plugins/verify-codeowners/describe.go +0 -19
  365. package/plugins/verify-codeowners/describe_test.go +0 -11
  366. package/plugins/verify-codeowners/main.go +0 -75
  367. package/plugins/verify-codeowners/match.go +0 -85
  368. package/plugins/verify-codeowners/match_test.go +0 -47
  369. package/plugins/verify-codeowners/owners.go +0 -164
  370. package/plugins/verify-codeowners/owners_test.go +0 -225
  371. package/plugins/verify-codeowners/parse.go +0 -90
  372. package/plugins/verify-codeowners/parse_test.go +0 -62
  373. package/plugins/verify-otel/describe.go +0 -19
  374. package/plugins/verify-otel/describe_test.go +0 -11
  375. package/plugins/verify-otel/main.go +0 -53
  376. package/plugins/verify-otel/match.go +0 -336
  377. package/plugins/verify-otel/otlp.go +0 -200
  378. package/plugins/verify-otel/verify.go +0 -734
  379. package/plugins/verify-otel/verify_test.go +0 -460
  380. /package/{plugins/fetch-csr/options.schema.json → scripts/host-plugins/fetch-csr.options.json} +0 -0
  381. /package/{plugins/fetch-git/options.schema.json → scripts/host-plugins/fetch-git.options.json} +0 -0
package/portolan.json CHANGED
@@ -95,23 +95,20 @@
95
95
  "plugins": [
96
96
  {
97
97
  "name": "project",
98
- "process": {
99
- "command": "go",
100
- "args": ["run", "./plugins/extract-project"]
98
+ "wasm": {
99
+ "url": "file://plugins/portolan-go.wasm"
101
100
  }
102
101
  },
103
102
  {
104
103
  "name": "commands",
105
- "process": {
106
- "command": "go",
107
- "args": ["run", "./plugins/extract-commands"]
104
+ "wasm": {
105
+ "url": "file://plugins/portolan-go.wasm"
108
106
  }
109
107
  },
110
108
  {
111
109
  "name": "go-domain",
112
- "process": {
113
- "command": "go",
114
- "args": ["run", "./plugins/extract-go"]
110
+ "wasm": {
111
+ "url": "file://plugins/portolan-go.wasm"
115
112
  }
116
113
  },
117
114
  {
@@ -158,152 +155,134 @@
158
155
  },
159
156
  {
160
157
  "name": "openapi",
161
- "process": {
162
- "command": "go",
163
- "args": ["run", "./plugins/extract-openapi"]
158
+ "wasm": {
159
+ "url": "file://plugins/portolan-go.wasm"
164
160
  }
165
161
  },
166
162
  {
167
163
  "name": "wsdl",
168
- "process": {
169
- "command": "go",
170
- "args": ["run", "./plugins/extract-wsdl"]
164
+ "wasm": {
165
+ "url": "file://plugins/portolan-go.wasm"
171
166
  }
172
167
  },
173
168
  {
174
169
  "name": "http-clients",
175
- "process": {
176
- "command": "go",
177
- "args": ["run", "./plugins/extract-http-clients"]
170
+ "wasm": {
171
+ "url": "file://plugins/portolan-go.wasm"
178
172
  }
179
173
  },
180
174
  {
181
175
  "name": "redis",
182
- "process": {
183
- "command": "go",
184
- "args": ["run", "./plugins/extract-redis"]
176
+ "wasm": {
177
+ "url": "file://plugins/portolan-go.wasm"
185
178
  }
186
179
  },
187
180
  {
188
181
  "name": "river",
189
- "process": {
190
- "command": "go",
191
- "args": ["run", "./plugins/extract-river"]
182
+ "wasm": {
183
+ "url": "file://plugins/portolan-go.wasm"
192
184
  }
193
185
  },
194
186
  {
195
187
  "name": "watermill",
196
- "process": {
197
- "command": "go",
198
- "args": ["run", "./plugins/extract-watermill"]
188
+ "wasm": {
189
+ "url": "file://plugins/portolan-go.wasm"
199
190
  }
200
191
  },
201
192
  {
202
193
  "name": "go-nats",
203
- "process": {
204
- "command": "go",
205
- "args": ["run", "./plugins/extract-go-nats"]
194
+ "wasm": {
195
+ "url": "file://plugins/portolan-go.wasm"
206
196
  }
207
197
  },
208
198
  {
209
199
  "name": "asyncapi",
210
- "process": {
211
- "command": "go",
212
- "args": ["run", "./plugins/extract-asyncapi"]
200
+ "wasm": {
201
+ "url": "file://plugins/portolan-go.wasm"
213
202
  }
214
203
  },
215
204
  {
216
205
  "name": "graphql",
217
- "process": {
218
- "command": "go",
219
- "args": ["run", "./plugins/extract-graphql"]
206
+ "wasm": {
207
+ "url": "file://plugins/portolan-go.wasm"
220
208
  }
221
209
  },
222
210
  {
223
211
  "name": "sql",
224
- "process": {
225
- "command": "go",
226
- "args": ["run", "./plugins/extract-sql"]
212
+ "wasm": {
213
+ "url": "file://plugins/portolan-go.wasm"
227
214
  }
228
215
  },
229
216
  {
230
217
  "name": "markdown",
231
218
  "wasm": {
232
- "url": "file://plugins/gen-markdown.wasm"
219
+ "url": "file://plugins/portolan-go.wasm"
233
220
  }
234
221
  },
235
222
  {
236
223
  "name": "mermaid",
237
224
  "wasm": {
238
- "url": "file://plugins/gen-mermaid.wasm"
225
+ "url": "file://plugins/portolan-go.wasm"
239
226
  }
240
227
  },
241
228
  {
242
229
  "name": "backstage",
243
230
  "wasm": {
244
- "url": "file://plugins/gen-backstage.wasm"
231
+ "url": "file://plugins/portolan-go.wasm"
245
232
  }
246
233
  },
247
234
  {
248
235
  "name": "otel",
249
- "process": {
250
- "command": "go",
251
- "args": ["run", "./plugins/verify-otel"]
236
+ "wasm": {
237
+ "url": "file://plugins/portolan-go.wasm"
252
238
  }
253
239
  },
254
240
  {
255
241
  "name": "codeowners",
256
- "process": {
257
- "command": "go",
258
- "args": ["run", "./plugins/verify-codeowners"]
242
+ "wasm": {
243
+ "url": "file://plugins/portolan-go.wasm"
259
244
  }
260
245
  },
261
246
  {
262
247
  "name": "adr",
263
- "process": {
264
- "command": "go",
265
- "args": [
266
- "run",
267
- "./plugins/extract-adr"
268
- ]
248
+ "wasm": {
249
+ "url": "file://plugins/portolan-go.wasm"
269
250
  }
270
251
  },
271
252
  {
272
253
  "name": "glossary",
273
- "process": {
274
- "command": "go",
275
- "args": [
276
- "run",
277
- "./plugins/extract-glossary"
278
- ]
254
+ "wasm": {
255
+ "url": "file://plugins/portolan-go.wasm"
279
256
  }
280
257
  },
281
258
  {
282
259
  "name": "flows",
283
- "process": {
284
- "command": "go",
285
- "args": ["run", "./plugins/extract-flows"]
260
+ "wasm": {
261
+ "url": "file://plugins/portolan-go.wasm"
286
262
  }
287
263
  },
288
264
  {
289
265
  "name": "bsr",
290
- "process": {
291
- "command": "go",
292
- "args": ["run", "./plugins/fetch-bsr"]
293
- }
266
+ "host": "fetch-bsr"
294
267
  },
295
268
  {
296
269
  "name": "git",
297
- "process": {
298
- "command": "go",
299
- "args": ["run", "./plugins/fetch-git"]
270
+ "host": "fetch-git"
271
+ },
272
+ {
273
+ "name": "csr",
274
+ "host": "fetch-csr"
275
+ },
276
+ {
277
+ "name": "csr-schemas",
278
+ "wasm": {
279
+ "url": "file://plugins/portolan-go.wasm"
300
280
  }
301
281
  },
302
282
  {
303
283
  "name": "proto",
304
- "process": {
305
- "command": "go",
306
- "args": ["run", "./plugins/extract-proto"]
284
+ "wasm": {
285
+ "url": "file://plugins/portolan-go.wasm"
307
286
  }
308
287
  }
309
288
  ],
Binary file
package/public/og.png ADDED
Binary file
Binary file
@@ -88,6 +88,8 @@
88
88
  "flows",
89
89
  "bsr",
90
90
  "git",
91
+ "csr",
92
+ "csr-schemas",
91
93
  "proto"
92
94
  ],
93
95
  "description": "A plugin declared above, one that belongs in this phase."
@@ -562,6 +564,44 @@
562
564
  }
563
565
  }
564
566
  },
567
+ {
568
+ "if": {
569
+ "required": [
570
+ "plugin"
571
+ ],
572
+ "properties": {
573
+ "plugin": {
574
+ "const": "csr"
575
+ }
576
+ }
577
+ },
578
+ "then": {
579
+ "properties": {
580
+ "options": {
581
+ "$ref": "#/$defs/options.csr"
582
+ }
583
+ }
584
+ }
585
+ },
586
+ {
587
+ "if": {
588
+ "required": [
589
+ "plugin"
590
+ ],
591
+ "properties": {
592
+ "plugin": {
593
+ "const": "csr-schemas"
594
+ }
595
+ }
596
+ },
597
+ "then": {
598
+ "properties": {
599
+ "options": {
600
+ "$ref": "#/$defs/options.csr-schemas"
601
+ }
602
+ }
603
+ }
604
+ },
565
605
  {
566
606
  "if": {
567
607
  "required": [
@@ -895,6 +935,11 @@
895
935
  "required": [
896
936
  "process"
897
937
  ]
938
+ },
939
+ {
940
+ "required": [
941
+ "host"
942
+ ]
898
943
  }
899
944
  ],
900
945
  "properties": {
@@ -902,6 +947,14 @@
902
947
  "type": "string",
903
948
  "description": "What the steps below call this plugin. It need not be the plugin's own name."
904
949
  },
950
+ "host": {
951
+ "enum": [
952
+ "fetch-git",
953
+ "fetch-bsr",
954
+ "fetch-csr"
955
+ ],
956
+ "description": "A plugin the host runs inside its own process, because it needs a socket or a git binary (portolan.0008). Only the ones shipped with Portolan can be named."
957
+ },
905
958
  "wasm": {
906
959
  "type": "object",
907
960
  "additionalProperties": false,
@@ -2407,6 +2460,10 @@
2407
2460
  }
2408
2461
  }
2409
2462
  },
2463
+ "registry": {
2464
+ "type": "string",
2465
+ "description": "Overrides the registry in every module name, for a self-hosted BSR: a host, or a URL when it is not https."
2466
+ },
2410
2467
  "cache": {
2411
2468
  "type": "string",
2412
2469
  "description": "Where the last run's files were written, repo-relative: the same path as the step's out. An offline run replays what is there and checks it against the lock beside it."
@@ -2469,6 +2526,129 @@
2469
2526
  }
2470
2527
  }
2471
2528
  },
2529
+ "options.csr": {
2530
+ "type": "object",
2531
+ "additionalProperties": false,
2532
+ "required": [
2533
+ "registry",
2534
+ "subjects",
2535
+ "cache"
2536
+ ],
2537
+ "properties": {
2538
+ "registry": {
2539
+ "type": "string",
2540
+ "description": "Base URL of the schema registry. The credential for it is never written here: it comes from the environment, so this file stays committable.",
2541
+ "examples": [
2542
+ "http://localhost:8081",
2543
+ "https://psrc-00000.eu-central-1.aws.confluent.cloud"
2544
+ ]
2545
+ },
2546
+ "subjects": {
2547
+ "type": "array",
2548
+ "minItems": 1,
2549
+ "description": "The subjects to fetch, each pinned to a version. A subject a fetched schema references is fetched too, pinned by the reference itself, and needs no entry here.",
2550
+ "items": {
2551
+ "type": "object",
2552
+ "additionalProperties": false,
2553
+ "required": [
2554
+ "subject"
2555
+ ],
2556
+ "properties": {
2557
+ "subject": {
2558
+ "type": "string",
2559
+ "description": "The registry's own name for the registration: \"<topic>-value\" under TopicNameStrategy, the record's full name under RecordNameStrategy.",
2560
+ "examples": [
2561
+ "shop.oms.order-value",
2562
+ "shop.oms.OrderPlaced"
2563
+ ]
2564
+ },
2565
+ "version": {
2566
+ "type": "integer",
2567
+ "minimum": 1,
2568
+ "description": "The version to fetch. A registered version is immutable, so a pinned fetch is byte-reproducible, which is what lets an offline run replay it from the tree. Left out, `latest` is resolved online and warned about, and refused offline."
2569
+ }
2570
+ }
2571
+ }
2572
+ },
2573
+ "cache": {
2574
+ "type": "string",
2575
+ "description": "Where the last run's files were written, repo-relative: the same path as the step's out. An offline run replays what is there and checks it against the lock beside it.",
2576
+ "examples": [
2577
+ "examples/shop/oms/vendor/schemas"
2578
+ ]
2579
+ }
2580
+ }
2581
+ },
2582
+ "options.csr-schemas": {
2583
+ "type": "object",
2584
+ "additionalProperties": false,
2585
+ "properties": {
2586
+ "context": {
2587
+ "type": "string",
2588
+ "description": "Slug of the bounded context that owns the service these schemas belong to. Defaults to the name of the input directory.",
2589
+ "examples": [
2590
+ "shop"
2591
+ ]
2592
+ },
2593
+ "service": {
2594
+ "type": "string",
2595
+ "description": "Slug of the service that registers them. Defaults to the name of the input directory.",
2596
+ "examples": [
2597
+ "oms"
2598
+ ]
2599
+ },
2600
+ "paths": {
2601
+ "type": "array",
2602
+ "items": {
2603
+ "type": "string"
2604
+ },
2605
+ "description": "Directories fetch-csr vendored into, relative to the input root. Left out, the whole root is walked for locks.",
2606
+ "examples": [
2607
+ [
2608
+ "vendor/schemas"
2609
+ ]
2610
+ ]
2611
+ },
2612
+ "strategy": {
2613
+ "enum": [
2614
+ "topic",
2615
+ "record",
2616
+ "topic-record"
2617
+ ],
2618
+ "default": "topic",
2619
+ "description": "How a subject name relates to a topic and a record - the producer's SubjectNameStrategy. Nothing in the registry's answer says which one was used, so it is told here. `topic` reads \"<topic>-value\" and \"<topic>-key\"; `record` reads the whole subject as the record's full name and yields no topic; `topic-record` reads \"<topic>-<record full name>\"."
2620
+ },
2621
+ "direction": {
2622
+ "enum": [
2623
+ "send",
2624
+ "receive"
2625
+ ],
2626
+ "default": "send",
2627
+ "description": "Which way these channels travel, from this service's side. A registry records no producer and no consumer, so this cannot be read and has to be told."
2628
+ },
2629
+ "subjects": {
2630
+ "type": "object",
2631
+ "additionalProperties": {
2632
+ "enum": [
2633
+ "send",
2634
+ "receive"
2635
+ ]
2636
+ },
2637
+ "description": "Direction per subject, for a service that both publishes and listens. Overrides `direction`.",
2638
+ "examples": [
2639
+ {
2640
+ "shop.oms.order-value": "send",
2641
+ "payments.ledger.payment-value": "receive"
2642
+ }
2643
+ ]
2644
+ },
2645
+ "out": {
2646
+ "type": "string",
2647
+ "description": "Name of the fragment file, inside the step's output directory.",
2648
+ "default": "schemas.json"
2649
+ }
2650
+ }
2651
+ },
2472
2652
  "options.proto": {
2473
2653
  "type": "object",
2474
2654
  "additionalProperties": false,
@@ -25,6 +25,16 @@ export function builtinPluginNames() {
25
25
  return new Set(shippedDefinitions().keys());
26
26
  }
27
27
 
28
+ /**
29
+ * The definition as portolan.json declares it - `wasm`, or the `process`
30
+ * with the real command - rather than the adapter `builtinPlugin` runs it
31
+ * through. What `init` and `doctor` read to know which toolchain a plugin
32
+ * asks for.
33
+ */
34
+ export function builtinDefinition(name) {
35
+ return shippedDefinitions().get(name) ?? null;
36
+ }
37
+
28
38
  /** Return a runnable built-in definition, or null when the package has none. */
29
39
  export function builtinPlugin(name) {
30
40
  const declared = shippedDefinitions().get(name);
@@ -38,6 +48,10 @@ export function builtinPlugin(name) {
38
48
  return { ...declared, builtin: true, wasm: { ...declared.wasm, url } };
39
49
  }
40
50
 
51
+ // A plugin the host runs in its own process (portolan.0008): one that
52
+ // needs a socket or a git binary, which the host holds and no module gets.
53
+ if (declared.host) return { ...declared, builtin: true };
54
+
41
55
  return {
42
56
  name,
43
57
  builtin: true,