@shortlink-org/portolan 0.2.1 → 0.2.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.
- package/README.md +7 -2
- package/cli/init.mjs +14 -6
- package/cli/init.test.mjs +8 -1
- package/cli/portolan.mjs +92 -13
- package/cli/portolan.test.mjs +47 -0
- package/package.json +7 -6
- package/plugins/extract-django/README.md +1 -1
- package/plugins/extract-django/extract_test.py +1 -1
- package/plugins/extract-django/openapi.py +4 -14
- package/plugins/extract-django/openapi_test.py +4 -4
- package/plugins/extract-go/options.schema.json +5 -0
- package/plugins/extract-project/options.schema.json +21 -0
- package/plugins/extract-ts/README.md +1 -1
- package/plugins/extract-ts/clients.ts +1 -1
- package/plugins/extract-ts/extract.test.ts +2 -2
- package/plugins/extract-ts/graphql.test.ts +2 -2
- package/plugins/extract-ts/openapi.test.ts +6 -7
- package/plugins/extract-ts/openapi.ts +3 -10
- package/plugins/portolan-go.wasm +0 -0
- package/public/404-cat-v1.webp +0 -0
- package/public/cat-about-v1.webp +0 -0
- package/public/cat-clear-skies-v1.webp +0 -0
- package/public/cat-no-changes-v1.webp +0 -0
- package/public/cat-onboarding-v1.webp +0 -0
- package/public/cat-trial-success-v1.webp +0 -0
- package/schema/portolan.schema.json +61 -0
- package/scripts/builtin-plugins.mjs +3 -2
- package/scripts/catalog-sources.mjs +14 -2
- package/scripts/catalog-sources.test.mjs +45 -0
- package/scripts/delivery-presets.mjs +207 -24
- package/scripts/diff.mjs +5 -1
- package/scripts/gen-likec4.mjs +242 -85
- package/scripts/gen-likec4.test.mjs +168 -14
- package/scripts/gen.mjs +5 -3
- package/scripts/host-plugins/fetch-git.mjs +22 -12
- package/scripts/host-plugins/fetch-git.test.mjs +25 -5
- package/scripts/local-api.mjs +330 -346
- package/scripts/local-api.test.mjs +245 -1
- package/scripts/local-discovery.mjs +378 -0
- package/scripts/manifest.mjs +42 -1
- package/scripts/manifest.test.mjs +24 -1
- package/scripts/plugin-host.mjs +14 -3
- package/scripts/plugin-host.test.mjs +8 -0
- package/scripts/run-builtin.mjs +4 -2
- package/scripts/schema.mjs +11 -0
- package/scripts/site-docs.mjs +2 -2
- package/src/app/CatalogApp.tsx +23 -8
- package/src/app/CommandPalette.tsx +7 -2
- package/src/app/Sidebar.tsx +13 -730
- package/src/app/SidebarFlowSections.tsx +251 -0
- package/src/app/SidebarFooter.tsx +160 -0
- package/src/app/SidebarTree.tsx +322 -0
- package/src/app/toast.tsx +11 -7
- package/src/catalog-index.ts +485 -0
- package/src/catalog-model.ts +1339 -0
- package/src/catalog-validation.ts +1570 -0
- package/src/catalog.test.ts +49 -0
- package/src/catalog.ts +6 -3124
- package/src/components/CatIllustration.tsx +30 -0
- package/src/components/CommitLink.tsx +154 -0
- package/src/components/EditorLink.tsx +15 -8
- package/src/components/GrpcMethodReference.tsx +93 -0
- package/src/components/Markdown.tsx +17 -0
- package/src/components/MethodRows.tsx +8 -1
- package/src/components/PageHeader.test.tsx +23 -0
- package/src/components/PageHeader.tsx +34 -0
- package/src/components/ProblemRow.tsx +3 -0
- package/src/components/ShapeRows.tsx +12 -0
- package/src/components/SourceDoc.tsx +27 -12
- package/src/components/SourcePreview.tsx +125 -37
- package/src/enrich.test.ts +209 -2
- package/src/enrich.ts +284 -15
- package/src/er/RedisSchema.tsx +86 -5
- package/src/flow/FlowTable.tsx +19 -4
- package/src/flow/StepDetail.tsx +461 -101
- package/src/flow/StepRail.tsx +36 -13
- package/src/flow/answers-response.test.ts +100 -0
- package/src/flow/answers.ts +11 -8
- package/src/flow/chapters.ts +2 -1
- package/src/flow/labels.ts +10 -0
- package/src/flow/mermaid.test.ts +87 -3
- package/src/flow/mermaid.ts +26 -14
- package/src/index.css +132 -17
- package/src/landing/LandingPage.tsx +16 -12
- package/src/lib/all-problems.ts +1 -1
- package/src/lib/api.test.ts +4 -6
- package/src/lib/build-info.test.ts +29 -0
- package/src/lib/build-info.ts +21 -0
- package/src/lib/data-model.ts +14 -0
- package/src/lib/derive.ts +1 -0
- package/src/lib/flow-tree.ts +1 -1
- package/src/lib/github-catalog.test.ts +51 -0
- package/src/lib/github-catalog.ts +69 -0
- package/src/lib/grpc-reference.test.ts +72 -0
- package/src/lib/grpc-reference.ts +117 -0
- package/src/lib/local-api.ts +36 -11
- package/src/lib/motion.test.ts +4 -2
- package/src/lib/motion.tsx +5 -4
- package/src/lib/product.ts +7 -0
- package/src/lib/proto-problems.test.ts +170 -3
- package/src/lib/proto-problems.ts +176 -4
- package/src/lib/queries.ts +16 -1
- package/src/lib/readme-assets.test.ts +19 -0
- package/src/lib/readme-assets.ts +34 -0
- package/src/lib/setup-info.test.ts +7 -0
- package/src/lib/setup-info.ts +5 -0
- package/src/lib/source-link.test.ts +106 -18
- package/src/lib/source-link.ts +22 -6
- package/src/merge.test.ts +101 -0
- package/src/merge.ts +65 -1
- package/src/pages/AdrDetail.tsx +3 -2
- package/src/pages/AdrIndex.tsx +10 -7
- package/src/pages/AggregatePage.tsx +34 -4
- package/src/pages/BlockPage.tsx +39 -32
- package/src/pages/Changes.tsx +7 -9
- package/src/pages/ContextMap.tsx +11 -2
- package/src/pages/ContextPage.tsx +11 -4
- package/src/pages/FlowIndex.tsx +16 -7
- package/src/pages/GraphPage.tsx +21 -7
- package/src/pages/Language.tsx +9 -9
- package/src/pages/NotFound.tsx +58 -15
- package/src/pages/Overview.tsx +6 -0
- package/src/pages/Problems.tsx +10 -8
- package/src/pages/RegistryIndex.tsx +10 -8
- package/src/pages/ServicePage.tsx +1 -1
- package/src/pages/Settings.tsx +257 -44
- package/src/pages/settings/AboutSettings.tsx +129 -0
- package/src/pages/settings/DeliverySettings.tsx +71 -15
- package/src/routes.test.ts +2 -0
- package/src/routes.ts +2 -1
- package/src/selection/DetailPanel.tsx +213 -113
- package/src/selection/pages.test.ts +14 -1
- package/src/selection/pages.ts +9 -3
- package/src/testing/setup.ts +14 -0
- package/vite.config.ts +3 -1
package/src/catalog.test.ts
CHANGED
|
@@ -290,6 +290,39 @@ describe("validateCatalog: flow frames", () => {
|
|
|
290
290
|
expect(() => validateCatalog(bad)).toThrow(/job handoff with no message/);
|
|
291
291
|
});
|
|
292
292
|
|
|
293
|
+
it("validates that a response reverses the rpc request it names", () => {
|
|
294
|
+
const good = clone();
|
|
295
|
+
const flow = good.flows[0]!;
|
|
296
|
+
const request = walkSteps(flow.steps).find((step) => step.kind === "rpc")!;
|
|
297
|
+
flow.steps.push({
|
|
298
|
+
type: "step",
|
|
299
|
+
id: "response-test",
|
|
300
|
+
from: request.to,
|
|
301
|
+
to: request.from,
|
|
302
|
+
kind: "response",
|
|
303
|
+
label: "Response",
|
|
304
|
+
status: request.status,
|
|
305
|
+
replyTo: request.id,
|
|
306
|
+
});
|
|
307
|
+
expect(() => validateCatalog(good)).not.toThrow();
|
|
308
|
+
|
|
309
|
+
const bad = clone();
|
|
310
|
+
const badRequest = walkSteps(bad.flows[0]!.steps).find(
|
|
311
|
+
(step) => step.kind === "rpc",
|
|
312
|
+
)!;
|
|
313
|
+
bad.flows[0]!.steps.push({
|
|
314
|
+
type: "step",
|
|
315
|
+
id: "response-test",
|
|
316
|
+
from: badRequest.to,
|
|
317
|
+
to: badRequest.from,
|
|
318
|
+
kind: "response",
|
|
319
|
+
label: "Response",
|
|
320
|
+
status: "declared",
|
|
321
|
+
replyTo: "missing-request",
|
|
322
|
+
});
|
|
323
|
+
expect(() => validateCatalog(bad)).toThrow(/not an rpc request/);
|
|
324
|
+
});
|
|
325
|
+
|
|
293
326
|
it("rejects an alt with a single branch", () => {
|
|
294
327
|
const { bad, node } = alt();
|
|
295
328
|
node.branches = node.branches.slice(0, 1);
|
|
@@ -862,6 +895,22 @@ describe("validateCatalog: interfaces and modules", () => {
|
|
|
862
895
|
expect(() => validateCatalog(bad)).toThrow(/not in this catalog/);
|
|
863
896
|
});
|
|
864
897
|
|
|
898
|
+
it("rejects a vendored interface naming a module nobody declared", () => {
|
|
899
|
+
const bad = clone();
|
|
900
|
+
const service = bad.contexts[0]?.services[0];
|
|
901
|
+
if (!service) throw new Error("nothing to break");
|
|
902
|
+
service.copies = [
|
|
903
|
+
{
|
|
904
|
+
id: "pricing.v1.Pricing",
|
|
905
|
+
methods: [{ name: "GetQuote" }],
|
|
906
|
+
source: "internal/pricing.proto",
|
|
907
|
+
module: "buf.build/acme/nowhere",
|
|
908
|
+
},
|
|
909
|
+
];
|
|
910
|
+
|
|
911
|
+
expect(() => validateCatalog(bad)).toThrow(/not in this catalog/);
|
|
912
|
+
});
|
|
913
|
+
|
|
865
914
|
it("rejects a module owned by something that is not a service", () => {
|
|
866
915
|
const bad = withModule(clone());
|
|
867
916
|
const module = bad.modules?.[0];
|