pulumi-package-docs 0.1.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.
- package/LICENSE +21 -0
- package/README.md +60 -0
- package/bin/cli.js +80 -0
- package/dist/client/assets/MemberDetail-CX9jiyic.js +1 -0
- package/dist/client/assets/index-CZRUHwIq.js +13 -0
- package/dist/client/assets/providers._name-DpU324kz.js +1 -0
- package/dist/client/assets/providers._name.functions._token-DXrP4mSE.js +1 -0
- package/dist/client/assets/providers._name.functions._token-bvc3vrG2.js +1 -0
- package/dist/client/assets/providers._name.index-CtKE1x7S.js +1 -0
- package/dist/client/assets/providers._name.index-tTXQzRr7.js +1 -0
- package/dist/client/assets/providers._name.resources._token--BZM8RBv.js +1 -0
- package/dist/client/assets/providers._name.resources._token-CbZkRkaE.js +1 -0
- package/dist/client/assets/routes-GAgiQcBX.js +1 -0
- package/dist/client/assets/styles-CWDprFhI.css +1 -0
- package/dist/client/assets/token-oQmZfAP3.js +1 -0
- package/dist/client/assets/useSelector-BIt42tGI.js +1 -0
- package/dist/server/assets/MemberDetail-BiBAI1vw.js +96 -0
- package/dist/server/assets/_tanstack-start-manifest_v-Cl1i6HDY.js +62 -0
- package/dist/server/assets/api-BV6lykkP.js +20 -0
- package/dist/server/assets/api-C55bS4R6.js +64 -0
- package/dist/server/assets/empty-plugin-adapters-D9UWiqvJ.js +5 -0
- package/dist/server/assets/providers._name-DF6sA3DG.js +6 -0
- package/dist/server/assets/providers._name.functions._token-C0A7Y90t.js +21 -0
- package/dist/server/assets/providers._name.functions._token-D8LsoIum.js +13 -0
- package/dist/server/assets/providers._name.index-BEwt-7U0.js +13 -0
- package/dist/server/assets/providers._name.index-BK_ZRd5l.js +97 -0
- package/dist/server/assets/providers._name.resources._token-CbvRkms4.js +22 -0
- package/dist/server/assets/providers._name.resources._token-DJPF8nMg.js +13 -0
- package/dist/server/assets/router-DZSocx9m.js +562 -0
- package/dist/server/assets/routes-B-G_iLTo.js +82 -0
- package/dist/server/assets/schema.server-B-VvU1qb.js +122 -0
- package/dist/server/assets/start-5Z2QO8AU.js +4 -0
- package/dist/server/server.js +2003 -0
- package/package.json +67 -0
- package/src/components/CodeExample.tsx +14 -0
- package/src/components/MemberDetail.tsx +89 -0
- package/src/components/PropertyTable.tsx +49 -0
- package/src/components/PulumiLogo.tsx +86 -0
- package/src/lib/pulumi/api.ts +77 -0
- package/src/lib/pulumi/description.test.ts +54 -0
- package/src/lib/pulumi/description.ts +35 -0
- package/src/lib/pulumi/discovery.server.test.ts +117 -0
- package/src/lib/pulumi/discovery.server.ts +77 -0
- package/src/lib/pulumi/examples.test.ts +97 -0
- package/src/lib/pulumi/examples.ts +55 -0
- package/src/lib/pulumi/format.test.ts +51 -0
- package/src/lib/pulumi/format.ts +11 -0
- package/src/lib/pulumi/mcp.server.ts +343 -0
- package/src/lib/pulumi/naming.test.ts +27 -0
- package/src/lib/pulumi/naming.ts +31 -0
- package/src/lib/pulumi/schema.server.ts +78 -0
- package/src/lib/pulumi/token.test.ts +21 -0
- package/src/lib/pulumi/token.ts +10 -0
- package/src/lib/pulumi/types.ts +62 -0
- package/src/routeTree.gen.ts +187 -0
- package/src/router.tsx +19 -0
- package/src/routes/__root.tsx +59 -0
- package/src/routes/index.tsx +78 -0
- package/src/routes/mcp.ts +30 -0
- package/src/routes/providers.$name.functions.$token.tsx +47 -0
- package/src/routes/providers.$name.index.tsx +129 -0
- package/src/routes/providers.$name.resources.$token.tsx +48 -0
- package/src/routes/providers.$name.tsx +5 -0
- package/src/styles.css +478 -0
- package/tsconfig.json +29 -0
|
@@ -0,0 +1,562 @@
|
|
|
1
|
+
import { n as getTargetDir, r as loadPulumiProject, t as resolveProviderSchema } from "./schema.server-B-VvU1qb.js";
|
|
2
|
+
import { n as listProviders, t as getProvider } from "./api-BV6lykkP.js";
|
|
3
|
+
import { HeadContent, Link, Scripts, createFileRoute, createRootRoute, createRouter, lazyRouteComponent, notFound } from "@tanstack/react-router";
|
|
4
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
|
+
import { WebStandardStreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/webStandardStreamableHttp.js";
|
|
6
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
7
|
+
import { z } from "zod";
|
|
8
|
+
//#region \0rolldown/runtime.js
|
|
9
|
+
var __defProp = Object.defineProperty;
|
|
10
|
+
var __exportAll = (all, no_symbols) => {
|
|
11
|
+
let target = {};
|
|
12
|
+
for (var name in all) __defProp(target, name, {
|
|
13
|
+
get: all[name],
|
|
14
|
+
enumerable: true
|
|
15
|
+
});
|
|
16
|
+
if (!no_symbols) __defProp(target, Symbol.toStringTag, { value: "Module" });
|
|
17
|
+
return target;
|
|
18
|
+
};
|
|
19
|
+
//#endregion
|
|
20
|
+
//#region src/components/PulumiLogo.tsx
|
|
21
|
+
function PulumiLogo({ height = 24 }) {
|
|
22
|
+
return /* @__PURE__ */ jsxs("span", {
|
|
23
|
+
className: "pulumi-logo",
|
|
24
|
+
style: { height },
|
|
25
|
+
children: [/* @__PURE__ */ jsxs("svg", {
|
|
26
|
+
className: "pulumi-logo-mark pulumi-logo-light",
|
|
27
|
+
height,
|
|
28
|
+
viewBox: "0 0 425 106",
|
|
29
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
30
|
+
role: "img",
|
|
31
|
+
"aria-label": "Pulumi",
|
|
32
|
+
children: [/* @__PURE__ */ jsxs("g", {
|
|
33
|
+
clipPath: "url(#pulumi-logo-clip-light)",
|
|
34
|
+
children: [
|
|
35
|
+
/* @__PURE__ */ jsx("path", {
|
|
36
|
+
fillRule: "evenodd",
|
|
37
|
+
clipRule: "evenodd",
|
|
38
|
+
d: "M17.0724 58.8697C20.9836 56.6115 20.9901 49.3006 17.0869 42.5402C13.1837 35.7799 6.84888 32.1302 2.93767 34.3884C-0.973545 36.6466 -0.980047 43.9576 2.92315 50.7179C6.82634 57.4783 13.1612 61.1279 17.0724 58.8697ZM17.0958 73.3453C20.999 80.1057 20.9925 87.4166 17.0813 89.6748C13.17 91.933 6.83522 88.2833 2.93203 81.523C-0.971168 74.7627 -0.964668 67.4517 2.94655 65.1935C6.85776 62.9353 13.1926 66.585 17.0958 73.3453ZM43.7495 88.7551C47.6527 95.5154 47.6462 102.826 43.735 105.085C39.8238 107.343 33.4889 103.693 29.5857 96.9327C25.6826 90.1724 25.6891 82.8615 29.6003 80.6032C33.5115 78.345 39.8463 81.9947 43.7495 88.7551ZM43.7408 57.9504C47.644 64.7107 47.6375 72.0217 43.7263 74.2799C39.8151 76.5381 33.4803 72.8884 29.5771 66.1281C25.6739 59.3677 25.6804 52.0568 29.5916 49.7986C33.5028 47.5404 39.8377 51.1901 43.7408 57.9504Z",
|
|
39
|
+
fill: "#F26E7E"
|
|
40
|
+
}),
|
|
41
|
+
/* @__PURE__ */ jsx("path", {
|
|
42
|
+
fillRule: "evenodd",
|
|
43
|
+
clipRule: "evenodd",
|
|
44
|
+
d: "M97.0612 50.7349C100.964 43.9746 100.958 36.6636 97.0467 34.4054C93.1355 32.1472 86.8007 35.7969 82.8975 42.5573C78.9943 49.3176 79.0008 56.6285 82.912 58.8868C86.8232 61.145 93.1581 57.4953 97.0612 50.7349ZM97.062 65.2032C100.973 67.4614 100.98 74.7723 97.0766 81.5327C93.1734 88.293 86.8385 91.9427 82.9273 89.6845C79.0161 87.4263 79.0096 80.1153 82.9128 73.355C86.816 66.5947 93.1508 62.945 97.062 65.2032ZM70.4136 80.5877C74.3249 82.8459 74.3314 90.1568 70.4282 96.9172C66.525 103.677 60.1901 107.327 56.2789 105.069C52.3677 102.811 52.3612 95.4998 56.2644 88.7395C60.1676 81.9791 66.5024 78.3294 70.4136 80.5877ZM70.3986 49.7897C74.3098 52.0479 74.3163 59.3589 70.4131 66.1192C66.5099 72.8796 60.1751 76.5293 56.2638 74.2711C52.3526 72.0129 52.3461 64.7019 56.2493 57.9416C60.1525 51.1812 66.4873 47.5315 70.3986 49.7897Z",
|
|
45
|
+
fill: "#8A3391"
|
|
46
|
+
}),
|
|
47
|
+
/* @__PURE__ */ jsx("path", {
|
|
48
|
+
fillRule: "evenodd",
|
|
49
|
+
clipRule: "evenodd",
|
|
50
|
+
d: "M64.1222 8.17769C64.1222 12.6941 57.7939 16.3554 49.9875 16.3554C42.1811 16.3554 35.8528 12.6941 35.8528 8.17769C35.8528 3.66127 42.1811 0 49.9875 0C57.7939 0 64.1222 3.66127 64.1222 8.17769ZM37.474 23.5464C37.474 28.0628 31.1457 31.7241 23.3393 31.7241C15.5329 31.7241 9.20459 28.0628 9.20459 23.5464C9.20459 19.03 15.5329 15.3687 23.3393 15.3687C31.1457 15.3687 37.474 19.03 37.474 23.5464ZM76.6705 31.7241C84.4769 31.7241 90.8052 28.0628 90.8052 23.5464C90.8052 19.03 84.4769 15.3687 76.6705 15.3687C68.8641 15.3687 62.5358 19.03 62.5358 23.5464C62.5358 28.0628 68.8641 31.7241 76.6705 31.7241ZM64.1222 38.9496C64.1222 43.466 57.7939 47.1272 49.9875 47.1272C42.1811 47.1272 35.8528 43.466 35.8528 38.9496C35.8528 34.4332 42.1811 30.7719 49.9875 30.7719C57.7939 30.7719 64.1222 34.4332 64.1222 38.9496Z",
|
|
51
|
+
fill: "#F7BF2A"
|
|
52
|
+
}),
|
|
53
|
+
/* @__PURE__ */ jsx("path", {
|
|
54
|
+
fillRule: "evenodd",
|
|
55
|
+
clipRule: "evenodd",
|
|
56
|
+
d: "M254.218 19H259.473C261.104 19 262.01 19.906 262.01 21.5368V82.5561C262.01 84.187 261.104 85.093 259.473 85.093H254.218C252.587 85.093 251.681 84.187 251.681 82.5561V21.5368C251.681 19.906 252.587 19 254.218 19ZM153.154 85.0927C154.785 85.0927 155.691 84.1867 155.691 82.5559V62.1255H166.336C179.836 62.1255 188.307 54.0621 188.307 41.9217C188.307 29.8265 179.836 21.7178 166.336 21.7178H147.537C145.906 21.7178 145 22.6238 145 24.2546V82.5559C145 84.1867 145.906 85.0927 147.537 85.0927H153.154ZM155.691 30.7325H165.657C173.267 30.7325 177.571 35.1266 177.571 41.9217C177.571 48.762 173.267 53.1561 165.657 53.1561H155.691V30.7325ZM195.918 40.744V67.1087C195.918 78.6603 203.393 86.1348 214.673 86.1348C220.652 86.1348 225.771 83.1903 228.942 78.8868V82.5561C228.942 84.1869 229.848 85.0929 231.479 85.0929H236.779C238.41 85.0929 239.316 84.1869 239.316 82.5561V40.744C239.316 39.1132 238.41 38.2072 236.779 38.2072H231.479C229.848 38.2072 228.942 39.1132 228.942 40.744V63.7565C228.942 71.5481 223.325 77.0294 216.802 77.0294C210.55 77.0294 206.247 72.59 206.247 66.248V40.744C206.247 39.1132 205.341 38.2072 203.71 38.2072H198.455C196.824 38.2072 195.918 39.1132 195.918 40.744ZM273.517 40.744V67.1087C273.517 78.6603 280.991 86.1348 292.271 86.1348C298.251 86.1348 303.37 83.1903 306.541 78.8868V82.5561C306.541 84.1869 307.447 85.0929 309.078 85.0929H314.378C316.009 85.0929 316.915 84.1869 316.915 82.5561V40.744C316.915 39.1132 316.009 38.2072 314.378 38.2072H309.078C307.447 38.2072 306.541 39.1132 306.541 40.744V63.7565C306.541 71.5481 300.924 77.0294 294.4 77.0294C288.149 77.0294 283.845 72.59 283.845 66.248V40.744C283.845 39.1132 282.939 38.2072 281.309 38.2072H276.054C274.423 38.2072 273.517 39.1132 273.517 40.744ZM401.897 56.1915V82.6015C401.897 84.2323 400.991 85.1383 399.361 85.1383H394.061C392.43 85.1383 391.524 84.2323 391.524 82.6015V57.0975C391.524 50.7555 387.583 46.3161 381.784 46.3161C375.94 46.3161 370.414 52.2051 370.414 59.3172V82.6015C370.414 84.2323 369.508 85.1383 367.877 85.1383H362.577C360.946 85.1383 360.04 84.2323 360.04 82.6015V57.0975C360.04 50.7555 356.099 46.3161 350.301 46.3161C344.729 46.3161 338.93 51.6615 338.93 59.3172V82.6015C338.93 84.2323 338.024 85.1383 336.393 85.1383H331.093C329.463 85.1383 328.557 84.2323 328.557 82.6015V40.7442C328.557 39.1133 329.463 38.2073 331.093 38.2073H336.393C338.024 38.2073 338.93 39.1133 338.93 40.7442V44.3229C342.237 39.974 346.994 37.1201 352.475 37.1201C359.542 37.1201 365.476 40.7894 368.421 46.8597C371.501 40.9706 377.209 37.1201 383.913 37.1201C394.106 37.1201 401.897 44.64 401.897 56.1915ZM425 25.4328C425 21.8541 422.191 19.0908 418.567 19.0908C414.943 19.0908 412.18 21.8541 412.18 25.4328C412.18 28.9662 414.943 31.7295 418.567 31.7295C422.191 31.7295 425 28.9662 425 25.4328ZM423.732 40.7442C423.732 39.1134 422.826 38.2074 421.195 38.2074H415.94C414.309 38.2074 413.403 39.1134 413.403 40.7442V82.5563C413.403 84.1871 414.309 85.0931 415.94 85.0931H421.195C422.826 85.0931 423.732 84.1871 423.732 82.5563V40.7442Z",
|
|
57
|
+
fill: "black"
|
|
58
|
+
})
|
|
59
|
+
]
|
|
60
|
+
}), /* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsx("clipPath", {
|
|
61
|
+
id: "pulumi-logo-clip-light",
|
|
62
|
+
children: /* @__PURE__ */ jsx("rect", {
|
|
63
|
+
width: "425",
|
|
64
|
+
height: "106",
|
|
65
|
+
fill: "white"
|
|
66
|
+
})
|
|
67
|
+
}) })]
|
|
68
|
+
}), /* @__PURE__ */ jsxs("svg", {
|
|
69
|
+
className: "pulumi-logo-mark pulumi-logo-dark",
|
|
70
|
+
height,
|
|
71
|
+
viewBox: "0 0 425 106",
|
|
72
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
73
|
+
role: "img",
|
|
74
|
+
"aria-label": "Pulumi",
|
|
75
|
+
children: [/* @__PURE__ */ jsxs("g", {
|
|
76
|
+
clipPath: "url(#pulumi-logo-clip-dark)",
|
|
77
|
+
children: [
|
|
78
|
+
/* @__PURE__ */ jsx("path", {
|
|
79
|
+
fillRule: "evenodd",
|
|
80
|
+
clipRule: "evenodd",
|
|
81
|
+
d: "M17.0724 58.8696C20.9836 56.6114 20.9901 49.3005 17.0869 42.5401C13.1837 35.7798 6.84888 32.1301 2.93767 34.3883C-0.973545 36.6465 -0.980047 43.9575 2.92315 50.7178C6.82634 57.4782 13.1612 61.1278 17.0724 58.8696ZM17.0958 73.3452C20.999 80.1056 20.9925 87.4165 17.0813 89.6747C13.17 91.9329 6.83522 88.2832 2.93203 81.5229C-0.971168 74.7626 -0.964668 67.4516 2.94655 65.1934C6.85776 62.9352 13.1926 66.5849 17.0958 73.3452ZM43.7495 88.755C47.6527 95.5153 47.6462 102.826 43.735 105.085C39.8238 107.343 33.4889 103.693 29.5857 96.9326C25.6826 90.1723 25.6891 82.8614 29.6003 80.6031C33.5115 78.3449 39.8463 81.9946 43.7495 88.755ZM43.7408 57.9503C47.644 64.7106 47.6375 72.0216 43.7263 74.2798C39.8151 76.538 33.4803 72.8883 29.5771 66.128C25.6739 59.3676 25.6804 52.0567 29.5916 49.7985C33.5028 47.5403 39.8377 51.19 43.7408 57.9503Z",
|
|
82
|
+
fill: "#F26E7E"
|
|
83
|
+
}),
|
|
84
|
+
/* @__PURE__ */ jsx("path", {
|
|
85
|
+
fillRule: "evenodd",
|
|
86
|
+
clipRule: "evenodd",
|
|
87
|
+
d: "M97.0612 50.7349C100.964 43.9746 100.958 36.6636 97.0467 34.4054C93.1355 32.1472 86.8007 35.7969 82.8975 42.5573C78.9943 49.3176 79.0008 56.6285 82.912 58.8868C86.8232 61.145 93.1581 57.4953 97.0612 50.7349ZM97.062 65.2032C100.973 67.4614 100.98 74.7723 97.0766 81.5327C93.1734 88.293 86.8385 91.9427 82.9273 89.6845C79.0161 87.4263 79.0096 80.1153 82.9128 73.355C86.816 66.5947 93.1508 62.945 97.062 65.2032ZM70.4136 80.5877C74.3249 82.8459 74.3314 90.1568 70.4282 96.9172C66.525 103.677 60.1901 107.327 56.2789 105.069C52.3677 102.811 52.3612 95.4998 56.2644 88.7395C60.1676 81.9791 66.5024 78.3294 70.4136 80.5877ZM70.3986 49.7897C74.3098 52.0479 74.3163 59.3589 70.4131 66.1192C66.5099 72.8796 60.1751 76.5293 56.2638 74.2711C52.3526 72.0129 52.3461 64.7019 56.2493 57.9416C60.1525 51.1812 66.4873 47.5315 70.3986 49.7897Z",
|
|
88
|
+
fill: "#8A3391"
|
|
89
|
+
}),
|
|
90
|
+
/* @__PURE__ */ jsx("path", {
|
|
91
|
+
fillRule: "evenodd",
|
|
92
|
+
clipRule: "evenodd",
|
|
93
|
+
d: "M64.1222 8.17769C64.1222 12.6941 57.7939 16.3554 49.9875 16.3554C42.1811 16.3554 35.8528 12.6941 35.8528 8.17769C35.8528 3.66127 42.1811 0 49.9875 0C57.7939 0 64.1222 3.66127 64.1222 8.17769ZM37.474 23.5464C37.474 28.0628 31.1457 31.7241 23.3393 31.7241C15.5329 31.7241 9.20459 28.0628 9.20459 23.5464C9.20459 19.03 15.5329 15.3687 23.3393 15.3687C31.1457 15.3687 37.474 19.03 37.474 23.5464ZM76.6705 31.7241C84.4769 31.7241 90.8052 28.0628 90.8052 23.5464C90.8052 19.03 84.4769 15.3687 76.6705 15.3687C68.8641 15.3687 62.5358 19.03 62.5358 23.5464C62.5358 28.0628 68.8641 31.7241 76.6705 31.7241ZM64.1222 38.9496C64.1222 43.466 57.7939 47.1272 49.9875 47.1272C42.1811 47.1272 35.8528 43.466 35.8528 38.9496C35.8528 34.4332 42.1811 30.7719 49.9875 30.7719C57.7939 30.7719 64.1222 34.4332 64.1222 38.9496Z",
|
|
94
|
+
fill: "#F7BF2A"
|
|
95
|
+
}),
|
|
96
|
+
/* @__PURE__ */ jsx("path", {
|
|
97
|
+
fillRule: "evenodd",
|
|
98
|
+
clipRule: "evenodd",
|
|
99
|
+
d: "M254.218 19H259.473C261.104 19 262.01 19.906 262.01 21.5368V82.5561C262.01 84.187 261.104 85.093 259.473 85.093H254.218C252.587 85.093 251.681 84.187 251.681 82.5561V21.5368C251.681 19.906 252.587 19 254.218 19ZM153.154 85.0927C154.785 85.0927 155.691 84.1867 155.691 82.5559V62.1255H166.336C179.836 62.1255 188.307 54.0621 188.307 41.9217C188.307 29.8265 179.836 21.7178 166.336 21.7178H147.537C145.906 21.7178 145 22.6238 145 24.2546V82.5559C145 84.1867 145.906 85.0927 147.537 85.0927H153.154ZM155.691 30.7325H165.657C173.267 30.7325 177.571 35.1266 177.571 41.9217C177.571 48.762 173.267 53.1561 165.657 53.1561H155.691V30.7325ZM195.918 40.744V67.1087C195.918 78.6603 203.393 86.1348 214.673 86.1348C220.652 86.1348 225.771 83.1903 228.942 78.8868V82.5561C228.942 84.1869 229.848 85.0929 231.479 85.0929H236.779C238.41 85.0929 239.316 84.1869 239.316 82.5561V40.744C239.316 39.1132 238.41 38.2072 236.779 38.2072H231.479C229.848 38.2072 228.942 39.1132 228.942 40.744V63.7565C228.942 71.5481 223.325 77.0294 216.802 77.0294C210.55 77.0294 206.247 72.59 206.247 66.248V40.744C206.247 39.1132 205.341 38.2072 203.71 38.2072H198.455C196.824 38.2072 195.918 39.1132 195.918 40.744ZM273.517 40.744V67.1087C273.517 78.6603 280.991 86.1348 292.271 86.1348C298.251 86.1348 303.37 83.1903 306.541 78.8868V82.5561C306.541 84.1869 307.447 85.0929 309.078 85.0929H314.378C316.009 85.0929 316.915 84.1869 316.915 82.5561V40.744C316.915 39.1132 316.009 38.2072 314.378 38.2072H309.078C307.447 38.2072 306.541 39.1132 306.541 40.744V63.7565C306.541 71.5481 300.924 77.0294 294.4 77.0294C288.149 77.0294 283.845 72.59 283.845 66.248V40.744C283.845 39.1132 282.939 38.2072 281.309 38.2072H276.054C274.423 38.2072 273.517 39.1132 273.517 40.744ZM401.897 56.1915V82.6015C401.897 84.2323 400.991 85.1383 399.361 85.1383H394.061C392.43 85.1383 391.524 84.2323 391.524 82.6015V57.0975C391.524 50.7555 387.583 46.3161 381.784 46.3161C375.94 46.3161 370.414 52.2051 370.414 59.3172V82.6015C370.414 84.2323 369.508 85.1383 367.877 85.1383H362.577C360.946 85.1383 360.04 84.2323 360.04 82.6015V57.0975C360.04 50.7555 356.099 46.3161 350.301 46.3161C344.729 46.3161 338.93 51.6615 338.93 59.3172V82.6015C338.93 84.2323 338.024 85.1383 336.393 85.1383H331.093C329.463 85.1383 328.557 84.2323 328.557 82.6015V40.7442C328.557 39.1133 329.463 38.2073 331.093 38.2073H336.393C338.024 38.2073 338.93 39.1133 338.93 40.7442V44.3229C342.237 39.974 346.994 37.1201 352.475 37.1201C359.542 37.1201 365.476 40.7894 368.421 46.8597C371.501 40.9706 377.209 37.1201 383.913 37.1201C394.106 37.1201 401.897 44.64 401.897 56.1915ZM425 25.4328C425 21.8541 422.191 19.0908 418.567 19.0908C414.943 19.0908 412.18 21.8541 412.18 25.4328C412.18 28.9662 414.943 31.7295 418.567 31.7295C422.191 31.7295 425 28.9662 425 25.4328ZM423.732 40.7442C423.732 39.1134 422.826 38.2074 421.195 38.2074H415.94C414.309 38.2074 413.403 39.1134 413.403 40.7442V82.5563C413.403 84.1871 414.309 85.0931 415.94 85.0931H421.195C422.826 85.0931 423.732 84.1871 423.732 82.5563V40.7442Z",
|
|
100
|
+
fill: "white"
|
|
101
|
+
})
|
|
102
|
+
]
|
|
103
|
+
}), /* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsx("clipPath", {
|
|
104
|
+
id: "pulumi-logo-clip-dark",
|
|
105
|
+
children: /* @__PURE__ */ jsx("rect", {
|
|
106
|
+
width: "425",
|
|
107
|
+
height: "106",
|
|
108
|
+
fill: "white"
|
|
109
|
+
})
|
|
110
|
+
}) })]
|
|
111
|
+
})]
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
//#endregion
|
|
115
|
+
//#region src/styles.css?url
|
|
116
|
+
var styles_default = "/assets/styles-CWDprFhI.css";
|
|
117
|
+
//#endregion
|
|
118
|
+
//#region src/routes/__root.tsx
|
|
119
|
+
var Route$6 = createRootRoute({
|
|
120
|
+
head: () => ({
|
|
121
|
+
meta: [
|
|
122
|
+
{ charSet: "utf-8" },
|
|
123
|
+
{
|
|
124
|
+
name: "viewport",
|
|
125
|
+
content: "width=device-width, initial-scale=1"
|
|
126
|
+
},
|
|
127
|
+
{ title: "Local Provider Docs" }
|
|
128
|
+
],
|
|
129
|
+
links: [{
|
|
130
|
+
rel: "stylesheet",
|
|
131
|
+
href: styles_default
|
|
132
|
+
}, {
|
|
133
|
+
rel: "icon",
|
|
134
|
+
href: "https://brand.pulumi.com/media/images/logos/icon-rounded-64w.png"
|
|
135
|
+
}]
|
|
136
|
+
}),
|
|
137
|
+
shellComponent: RootDocument
|
|
138
|
+
});
|
|
139
|
+
function RootDocument({ children }) {
|
|
140
|
+
return /* @__PURE__ */ jsxs("html", {
|
|
141
|
+
lang: "en",
|
|
142
|
+
children: [/* @__PURE__ */ jsx("head", { children: /* @__PURE__ */ jsx(HeadContent, {}) }), /* @__PURE__ */ jsxs("body", { children: [
|
|
143
|
+
/* @__PURE__ */ jsx("header", {
|
|
144
|
+
className: "site-header",
|
|
145
|
+
children: /* @__PURE__ */ jsxs(Link, {
|
|
146
|
+
to: "/",
|
|
147
|
+
className: "site-brand",
|
|
148
|
+
children: [
|
|
149
|
+
/* @__PURE__ */ jsx(PulumiLogo, { height: 22 }),
|
|
150
|
+
/* @__PURE__ */ jsx("span", {
|
|
151
|
+
className: "site-brand-divider",
|
|
152
|
+
"aria-hidden": "true"
|
|
153
|
+
}),
|
|
154
|
+
/* @__PURE__ */ jsx("span", {
|
|
155
|
+
className: "site-brand-name",
|
|
156
|
+
children: "Local Provider Docs"
|
|
157
|
+
})
|
|
158
|
+
]
|
|
159
|
+
})
|
|
160
|
+
}),
|
|
161
|
+
children,
|
|
162
|
+
/* @__PURE__ */ jsx(Scripts, {})
|
|
163
|
+
] })]
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
//#endregion
|
|
167
|
+
//#region src/routes/index.tsx
|
|
168
|
+
var $$splitComponentImporter$4 = () => import("./routes-B-G_iLTo.js");
|
|
169
|
+
var Route$5 = createFileRoute("/")({
|
|
170
|
+
loader: () => listProviders(),
|
|
171
|
+
component: lazyRouteComponent($$splitComponentImporter$4, "component")
|
|
172
|
+
});
|
|
173
|
+
//#endregion
|
|
174
|
+
//#region src/lib/pulumi/description.ts
|
|
175
|
+
/**
|
|
176
|
+
* Pulumi schema descriptions embed per-language text as HTML-ish spans, e.g.
|
|
177
|
+
* `<span pulumi-lang-nodejs="`length`" pulumi-lang-python="`length`" ...>`length`</span>`.
|
|
178
|
+
* pulumi.com's docs site picks an attribute based on the selected language tab;
|
|
179
|
+
* we don't have tabs, so we resolve each span to the project's own runtime up
|
|
180
|
+
* front and strip the markup rather than rendering (or leaking) raw HTML.
|
|
181
|
+
*/
|
|
182
|
+
var LANG_SPAN_RE = /<span\s+((?:pulumi-lang-[a-z]+="[^"]*"\s*)+)>([\s\S]*?)<\/span>/g;
|
|
183
|
+
var LANG_ATTR_RE = /pulumi-lang-([a-z]+)="([^"]*)"/g;
|
|
184
|
+
function resolveLangSpans(text, runtime) {
|
|
185
|
+
return text.replace(LANG_SPAN_RE, (_match, attrsSource, fallback) => {
|
|
186
|
+
if (!runtime) return fallback;
|
|
187
|
+
LANG_ATTR_RE.lastIndex = 0;
|
|
188
|
+
let match;
|
|
189
|
+
while (match = LANG_ATTR_RE.exec(attrsSource)) if (match[1] === runtime) return match[2];
|
|
190
|
+
return fallback;
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
/** Resolves a schema description's per-language spans for the given Pulumi runtime. */
|
|
194
|
+
function resolveDescription(text, runtime) {
|
|
195
|
+
if (!text) return text;
|
|
196
|
+
return resolveLangSpans(text, runtime);
|
|
197
|
+
}
|
|
198
|
+
//#endregion
|
|
199
|
+
//#region src/lib/pulumi/examples.ts
|
|
200
|
+
var CODE_FENCE_RE = /```([a-zA-Z0-9+#-]+)\n([\s\S]*?)```/g;
|
|
201
|
+
function extractExamples(text) {
|
|
202
|
+
if (!text) return [];
|
|
203
|
+
return [...text.matchAll(CODE_FENCE_RE)].map((match) => ({
|
|
204
|
+
language: match[1].toLowerCase(),
|
|
205
|
+
code: match[2].trimEnd()
|
|
206
|
+
}));
|
|
207
|
+
}
|
|
208
|
+
/** The description text with any fenced code examples removed. */
|
|
209
|
+
function stripExamples(text) {
|
|
210
|
+
if (!text) return text;
|
|
211
|
+
return text.replace(CODE_FENCE_RE, "").trim() || void 0;
|
|
212
|
+
}
|
|
213
|
+
/** A short summary for list views: the first prose paragraph, examples excluded. */
|
|
214
|
+
function summarizeDescription(text) {
|
|
215
|
+
const stripped = stripExamples(text);
|
|
216
|
+
if (!stripped) return void 0;
|
|
217
|
+
return stripped.split(/\n{2,}/)[0]?.trim() || void 0;
|
|
218
|
+
}
|
|
219
|
+
var RUNTIME_LANGUAGES = {
|
|
220
|
+
nodejs: ["typescript", "javascript"],
|
|
221
|
+
python: ["python"],
|
|
222
|
+
go: ["go", "golang"],
|
|
223
|
+
dotnet: ["csharp"],
|
|
224
|
+
java: ["java"],
|
|
225
|
+
yaml: ["yaml"]
|
|
226
|
+
};
|
|
227
|
+
/** Picks the example matching the project's runtime, falling back to the first available one. */
|
|
228
|
+
function pickExample(examples, runtime) {
|
|
229
|
+
const languages = runtime ? RUNTIME_LANGUAGES[runtime] : void 0;
|
|
230
|
+
return (languages ? examples.find((example) => languages.includes(example.language)) : void 0) ?? examples[0];
|
|
231
|
+
}
|
|
232
|
+
//#endregion
|
|
233
|
+
//#region src/lib/pulumi/format.ts
|
|
234
|
+
function formatType(prop) {
|
|
235
|
+
if (!prop) return "any";
|
|
236
|
+
if (prop.$ref) {
|
|
237
|
+
const short = prop.$ref.split("/").pop() ?? prop.$ref;
|
|
238
|
+
return decodeURIComponent(short);
|
|
239
|
+
}
|
|
240
|
+
if (prop.type === "array" && prop.items) return `${formatType(prop.items)}[]`;
|
|
241
|
+
return prop.type ?? "any";
|
|
242
|
+
}
|
|
243
|
+
//#endregion
|
|
244
|
+
//#region src/lib/pulumi/naming.ts
|
|
245
|
+
/**
|
|
246
|
+
* Pulumi schema property names are always camelCase; each language's generated
|
|
247
|
+
* SDK renders them in that language's own convention. This approximates that
|
|
248
|
+
* per-runtime rendering for display purposes (it doesn't reproduce Pulumi's
|
|
249
|
+
* codegen exactly, e.g. its acronym handling, but matches the common case).
|
|
250
|
+
*/
|
|
251
|
+
function toSnakeCase(name) {
|
|
252
|
+
return name.replace(/([a-z0-9])([A-Z])/g, "$1_$2").replace(/([A-Z]+)([A-Z][a-z])/g, "$1_$2").toLowerCase();
|
|
253
|
+
}
|
|
254
|
+
function toPascalCase(name) {
|
|
255
|
+
if (name.length === 0) return name;
|
|
256
|
+
return name.charAt(0).toUpperCase() + name.slice(1);
|
|
257
|
+
}
|
|
258
|
+
/** Renders a schema property name the way it would appear in the given Pulumi runtime's generated SDK. */
|
|
259
|
+
function formatPropertyName(name, runtime) {
|
|
260
|
+
switch (runtime) {
|
|
261
|
+
case "python": return toSnakeCase(name);
|
|
262
|
+
case "go":
|
|
263
|
+
case "dotnet": return toPascalCase(name);
|
|
264
|
+
default: return name;
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
//#endregion
|
|
268
|
+
//#region src/lib/pulumi/token.ts
|
|
269
|
+
/**
|
|
270
|
+
* Schema tokens look like `random:index/randomString:RandomString` (resources)
|
|
271
|
+
* or `random:index/randomInteger:randomInteger` (functions). The segment after
|
|
272
|
+
* the last colon is the name every generated SDK exports for that member, and
|
|
273
|
+
* is unique within the provider, so it makes a readable display name.
|
|
274
|
+
*/
|
|
275
|
+
function tokenDisplayName(token) {
|
|
276
|
+
const short = token.split(":").pop();
|
|
277
|
+
return short && short.length > 0 ? short : token;
|
|
278
|
+
}
|
|
279
|
+
//#endregion
|
|
280
|
+
//#region src/lib/pulumi/mcp.server.ts
|
|
281
|
+
function textResult(data) {
|
|
282
|
+
return { content: [{
|
|
283
|
+
type: "text",
|
|
284
|
+
text: JSON.stringify(data, null, 2)
|
|
285
|
+
}] };
|
|
286
|
+
}
|
|
287
|
+
/** Loads a local provider's resolved schema, throwing a descriptive error a tool call can surface to the client. */
|
|
288
|
+
async function requireProvider(providerName) {
|
|
289
|
+
const detail = await getProvider({ data: providerName });
|
|
290
|
+
if (!detail) throw new Error(`No local provider named "${providerName}" was found. Call list_providers to see the providers declared in this project's Pulumi.yaml.`);
|
|
291
|
+
if (!detail.schema) throw new Error(`Failed to load the schema for provider "${providerName}": ${detail.error ?? "unknown error"}`);
|
|
292
|
+
return {
|
|
293
|
+
...detail,
|
|
294
|
+
schema: detail.schema
|
|
295
|
+
};
|
|
296
|
+
}
|
|
297
|
+
function summarizeMember(token, member, runtime) {
|
|
298
|
+
return {
|
|
299
|
+
token,
|
|
300
|
+
name: tokenDisplayName(token),
|
|
301
|
+
deprecated: Boolean("deprecationMessage" in member && member.deprecationMessage),
|
|
302
|
+
summary: summarizeDescription(resolveDescription(member.description, runtime))
|
|
303
|
+
};
|
|
304
|
+
}
|
|
305
|
+
function formatProperties(properties, required, runtime) {
|
|
306
|
+
const requiredSet = new Set(required ?? []);
|
|
307
|
+
return Object.entries(properties ?? {}).map(([name, prop]) => ({
|
|
308
|
+
name: formatPropertyName(name, runtime),
|
|
309
|
+
type: formatType(prop),
|
|
310
|
+
required: requiredSet.has(name),
|
|
311
|
+
description: resolveDescription(prop.description, runtime)
|
|
312
|
+
}));
|
|
313
|
+
}
|
|
314
|
+
function memberDetail(provider, token, description, runtime, inputs, outputs, deprecationMessage) {
|
|
315
|
+
const resolved = resolveDescription(description, runtime);
|
|
316
|
+
const example = pickExample(extractExamples(resolved), runtime);
|
|
317
|
+
return {
|
|
318
|
+
provider,
|
|
319
|
+
token,
|
|
320
|
+
name: tokenDisplayName(token),
|
|
321
|
+
deprecationMessage,
|
|
322
|
+
description: stripExamples(resolved),
|
|
323
|
+
example: example ?? null,
|
|
324
|
+
inputs,
|
|
325
|
+
outputs
|
|
326
|
+
};
|
|
327
|
+
}
|
|
328
|
+
/**
|
|
329
|
+
* Builds a fresh MCP server with the local-provider-docs tools registered. Called once
|
|
330
|
+
* per HTTP request (see `src/routes/mcp.ts`) so concurrent requests never share state.
|
|
331
|
+
*/
|
|
332
|
+
function createMcpServer() {
|
|
333
|
+
const server = new McpServer({
|
|
334
|
+
name: "pulumi-package-docs",
|
|
335
|
+
version: "0.1.0"
|
|
336
|
+
});
|
|
337
|
+
server.registerTool("list_providers", {
|
|
338
|
+
title: "List local providers",
|
|
339
|
+
description: "List the local/parameterized Pulumi providers declared in this project's Pulumi.yaml (added with `pulumi package add`), with their source, version, and resource/function counts."
|
|
340
|
+
}, async () => textResult(await listProviders()));
|
|
341
|
+
server.registerTool("list_resources", {
|
|
342
|
+
title: "List a provider’s resources",
|
|
343
|
+
description: "List the resource tokens for a local provider, each with a display name, a one-line summary, and whether it is deprecated. Use get_resource for full details (inputs/outputs/example) on one of them.",
|
|
344
|
+
inputSchema: { provider: z.string().describe("The provider name as it appears in Pulumi.yaml and list_providers, e.g. \"random\".") }
|
|
345
|
+
}, async ({ provider }) => {
|
|
346
|
+
const detail = await requireProvider(provider);
|
|
347
|
+
const resources = Object.entries(detail.schema.resources ?? {}).map(([token, resource]) => summarizeMember(token, resource, detail.runtime));
|
|
348
|
+
return textResult({
|
|
349
|
+
provider,
|
|
350
|
+
resourceCount: resources.length,
|
|
351
|
+
resources
|
|
352
|
+
});
|
|
353
|
+
});
|
|
354
|
+
server.registerTool("list_functions", {
|
|
355
|
+
title: "List a provider’s functions",
|
|
356
|
+
description: "List the function (data source) tokens for a local provider, each with a display name, a one-line summary, and whether it is deprecated. Use get_function for full details (inputs/outputs/example) on one of them.",
|
|
357
|
+
inputSchema: { provider: z.string().describe("The provider name as it appears in Pulumi.yaml and list_providers, e.g. \"random\".") }
|
|
358
|
+
}, async ({ provider }) => {
|
|
359
|
+
const detail = await requireProvider(provider);
|
|
360
|
+
const functions = Object.entries(detail.schema.functions ?? {}).map(([token, fn]) => summarizeMember(token, fn, detail.runtime));
|
|
361
|
+
return textResult({
|
|
362
|
+
provider,
|
|
363
|
+
functionCount: functions.length,
|
|
364
|
+
functions
|
|
365
|
+
});
|
|
366
|
+
});
|
|
367
|
+
server.registerTool("get_resource", {
|
|
368
|
+
title: "Get resource details",
|
|
369
|
+
description: "Get the full documentation for one resource of a local provider: its description, a usage example (in the Pulumi project’s own language), and its input and output properties (name, type, required, description). Get the exact token from list_resources first.",
|
|
370
|
+
inputSchema: {
|
|
371
|
+
provider: z.string().describe("The provider name, e.g. \"random\"."),
|
|
372
|
+
token: z.string().describe("The resource’s full schema token from list_resources, e.g. \"random:index/randomString:RandomString\".")
|
|
373
|
+
}
|
|
374
|
+
}, async ({ provider, token }) => {
|
|
375
|
+
const detail = await requireProvider(provider);
|
|
376
|
+
const resource = detail.schema.resources?.[token];
|
|
377
|
+
if (!resource) throw new Error(`No resource with token "${token}" in provider "${provider}". Call list_resources to find the exact token.`);
|
|
378
|
+
return textResult(memberDetail(provider, token, resource.description, detail.runtime, formatProperties(resource.inputProperties, resource.requiredInputs, detail.runtime), formatProperties(resource.properties, resource.required, detail.runtime), resource.deprecationMessage));
|
|
379
|
+
});
|
|
380
|
+
server.registerTool("get_function", {
|
|
381
|
+
title: "Get function details",
|
|
382
|
+
description: "Get the full documentation for one function (data source) of a local provider: its description, a usage example (in the Pulumi project’s own language), and its input and output properties. Get the exact token from list_functions first.",
|
|
383
|
+
inputSchema: {
|
|
384
|
+
provider: z.string().describe("The provider name, e.g. \"random\"."),
|
|
385
|
+
token: z.string().describe("The function’s full schema token from list_functions, e.g. \"random:index/randomInteger:getRandomInteger\".")
|
|
386
|
+
}
|
|
387
|
+
}, async ({ provider, token }) => {
|
|
388
|
+
const detail = await requireProvider(provider);
|
|
389
|
+
const fn = detail.schema.functions?.[token];
|
|
390
|
+
if (!fn) throw new Error(`No function with token "${token}" in provider "${provider}". Call list_functions to find the exact token.`);
|
|
391
|
+
return textResult(memberDetail(provider, token, fn.description, detail.runtime, formatProperties(fn.inputs?.properties, fn.inputs?.required, detail.runtime), formatProperties(fn.outputs?.properties, fn.outputs?.required, detail.runtime)));
|
|
392
|
+
});
|
|
393
|
+
server.registerTool("search_members", {
|
|
394
|
+
title: "Search resources and functions",
|
|
395
|
+
description: "Search resource and function tokens/descriptions across one or all local providers for a keyword. Use this instead of list_resources/list_functions when a provider is large or you only know roughly what you’re looking for (e.g. \"bucket\", \"random string\").",
|
|
396
|
+
inputSchema: {
|
|
397
|
+
query: z.string().describe("Case-insensitive text to search for."),
|
|
398
|
+
provider: z.string().optional().describe("Limit the search to this provider name. Omit to search all local providers.")
|
|
399
|
+
}
|
|
400
|
+
}, async ({ query, provider }) => {
|
|
401
|
+
const targetDir = getTargetDir();
|
|
402
|
+
const project = loadPulumiProject(targetDir);
|
|
403
|
+
if (!project) return textResult({
|
|
404
|
+
query,
|
|
405
|
+
matchCount: 0,
|
|
406
|
+
matches: []
|
|
407
|
+
});
|
|
408
|
+
const refs = provider ? project.packages.filter((p) => p.name === provider) : project.packages;
|
|
409
|
+
if (provider && refs.length === 0) throw new Error(`No local provider named "${provider}" was found. Call list_providers to see the providers declared in this project's Pulumi.yaml.`);
|
|
410
|
+
const needle = query.toLowerCase();
|
|
411
|
+
const matches = [];
|
|
412
|
+
for (const ref of refs) {
|
|
413
|
+
const entry = await resolveProviderSchema(project.root, ref);
|
|
414
|
+
if (!entry.schema) continue;
|
|
415
|
+
const groups = [["resource", entry.schema.resources], ["function", entry.schema.functions]];
|
|
416
|
+
for (const [kind, members] of groups) for (const [token, member] of Object.entries(members ?? {})) {
|
|
417
|
+
const name = tokenDisplayName(token);
|
|
418
|
+
const summary = summarizeDescription(resolveDescription(member.description, project.runtime));
|
|
419
|
+
if (`${name} ${token} ${summary ?? ""}`.toLowerCase().includes(needle)) matches.push({
|
|
420
|
+
provider: ref.name,
|
|
421
|
+
kind,
|
|
422
|
+
token,
|
|
423
|
+
name,
|
|
424
|
+
summary
|
|
425
|
+
});
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
return textResult({
|
|
429
|
+
query,
|
|
430
|
+
matchCount: matches.length,
|
|
431
|
+
matches: matches.slice(0, 50)
|
|
432
|
+
});
|
|
433
|
+
});
|
|
434
|
+
return server;
|
|
435
|
+
}
|
|
436
|
+
//#endregion
|
|
437
|
+
//#region src/routes/mcp.ts
|
|
438
|
+
/**
|
|
439
|
+
* Stateless MCP endpoint: a fresh server + transport per request, so concurrent
|
|
440
|
+
* requests never share state. There's nothing here worth persisting across
|
|
441
|
+
* requests (schemas are re-resolved, cached on disk, each call) and every tool
|
|
442
|
+
* is a plain read, so statelessness keeps this simple.
|
|
443
|
+
*/
|
|
444
|
+
async function handleMcpRequest({ request }) {
|
|
445
|
+
const server = createMcpServer();
|
|
446
|
+
const transport = new WebStandardStreamableHTTPServerTransport({ sessionIdGenerator: void 0 });
|
|
447
|
+
await server.connect(transport);
|
|
448
|
+
return transport.handleRequest(request);
|
|
449
|
+
}
|
|
450
|
+
var Route$4 = createFileRoute("/mcp")({ server: { handlers: {
|
|
451
|
+
GET: handleMcpRequest,
|
|
452
|
+
POST: handleMcpRequest,
|
|
453
|
+
DELETE: handleMcpRequest
|
|
454
|
+
} } });
|
|
455
|
+
//#endregion
|
|
456
|
+
//#region src/routes/providers.$name.tsx
|
|
457
|
+
var $$splitComponentImporter$3 = () => import("./providers._name-DF6sA3DG.js");
|
|
458
|
+
var Route$3 = createFileRoute("/providers/$name")({ component: lazyRouteComponent($$splitComponentImporter$3, "component") });
|
|
459
|
+
//#endregion
|
|
460
|
+
//#region src/routes/providers.$name.index.tsx
|
|
461
|
+
var $$splitNotFoundComponentImporter$2 = () => import("./providers._name.index-BEwt-7U0.js");
|
|
462
|
+
var $$splitComponentImporter$2 = () => import("./providers._name.index-BK_ZRd5l.js");
|
|
463
|
+
var Route$2 = createFileRoute("/providers/$name/")({
|
|
464
|
+
loader: async ({ params }) => {
|
|
465
|
+
const entry = await getProvider({ data: params.name });
|
|
466
|
+
if (!entry) throw notFound();
|
|
467
|
+
return entry;
|
|
468
|
+
},
|
|
469
|
+
component: lazyRouteComponent($$splitComponentImporter$2, "component"),
|
|
470
|
+
notFoundComponent: lazyRouteComponent($$splitNotFoundComponentImporter$2, "notFoundComponent")
|
|
471
|
+
});
|
|
472
|
+
//#endregion
|
|
473
|
+
//#region src/routes/providers.$name.functions.$token.tsx
|
|
474
|
+
var $$splitNotFoundComponentImporter$1 = () => import("./providers._name.functions._token-D8LsoIum.js");
|
|
475
|
+
var $$splitComponentImporter$1 = () => import("./providers._name.functions._token-C0A7Y90t.js");
|
|
476
|
+
var Route$1 = createFileRoute("/providers/$name/functions/$token")({
|
|
477
|
+
loader: async ({ params }) => {
|
|
478
|
+
const entry = await getProvider({ data: params.name });
|
|
479
|
+
const fn = entry?.schema?.functions?.[params.token];
|
|
480
|
+
if (!fn) throw notFound();
|
|
481
|
+
return {
|
|
482
|
+
providerName: params.name,
|
|
483
|
+
token: params.token,
|
|
484
|
+
fn,
|
|
485
|
+
runtime: entry?.runtime
|
|
486
|
+
};
|
|
487
|
+
},
|
|
488
|
+
component: lazyRouteComponent($$splitComponentImporter$1, "component"),
|
|
489
|
+
notFoundComponent: lazyRouteComponent($$splitNotFoundComponentImporter$1, "notFoundComponent")
|
|
490
|
+
});
|
|
491
|
+
//#endregion
|
|
492
|
+
//#region src/routes/providers.$name.resources.$token.tsx
|
|
493
|
+
var $$splitNotFoundComponentImporter = () => import("./providers._name.resources._token-DJPF8nMg.js");
|
|
494
|
+
var $$splitComponentImporter = () => import("./providers._name.resources._token-CbvRkms4.js");
|
|
495
|
+
var Route = createFileRoute("/providers/$name/resources/$token")({
|
|
496
|
+
loader: async ({ params }) => {
|
|
497
|
+
const entry = await getProvider({ data: params.name });
|
|
498
|
+
const resource = entry?.schema?.resources?.[params.token];
|
|
499
|
+
if (!resource) throw notFound();
|
|
500
|
+
return {
|
|
501
|
+
providerName: params.name,
|
|
502
|
+
token: params.token,
|
|
503
|
+
resource,
|
|
504
|
+
runtime: entry?.runtime
|
|
505
|
+
};
|
|
506
|
+
},
|
|
507
|
+
component: lazyRouteComponent($$splitComponentImporter, "component"),
|
|
508
|
+
notFoundComponent: lazyRouteComponent($$splitNotFoundComponentImporter, "notFoundComponent")
|
|
509
|
+
});
|
|
510
|
+
//#endregion
|
|
511
|
+
//#region src/routeTree.gen.ts
|
|
512
|
+
var IndexRoute = Route$5.update({
|
|
513
|
+
id: "/",
|
|
514
|
+
path: "/",
|
|
515
|
+
getParentRoute: () => Route$6
|
|
516
|
+
});
|
|
517
|
+
var McpRoute = Route$4.update({
|
|
518
|
+
id: "/mcp",
|
|
519
|
+
path: "/mcp",
|
|
520
|
+
getParentRoute: () => Route$6
|
|
521
|
+
});
|
|
522
|
+
var ProvidersNameRoute = Route$3.update({
|
|
523
|
+
id: "/providers/$name",
|
|
524
|
+
path: "/providers/$name",
|
|
525
|
+
getParentRoute: () => Route$6
|
|
526
|
+
});
|
|
527
|
+
var ProvidersNameRouteChildren = {
|
|
528
|
+
ProvidersNameIndexRoute: Route$2.update({
|
|
529
|
+
id: "/",
|
|
530
|
+
path: "/",
|
|
531
|
+
getParentRoute: () => ProvidersNameRoute
|
|
532
|
+
}),
|
|
533
|
+
ProvidersNameFunctionsTokenRoute: Route$1.update({
|
|
534
|
+
id: "/functions/$token",
|
|
535
|
+
path: "/functions/$token",
|
|
536
|
+
getParentRoute: () => ProvidersNameRoute
|
|
537
|
+
}),
|
|
538
|
+
ProvidersNameResourcesTokenRoute: Route.update({
|
|
539
|
+
id: "/resources/$token",
|
|
540
|
+
path: "/resources/$token",
|
|
541
|
+
getParentRoute: () => ProvidersNameRoute
|
|
542
|
+
})
|
|
543
|
+
};
|
|
544
|
+
var rootRouteChildren = {
|
|
545
|
+
IndexRoute,
|
|
546
|
+
McpRoute,
|
|
547
|
+
ProvidersNameRoute: ProvidersNameRoute._addFileChildren(ProvidersNameRouteChildren)
|
|
548
|
+
};
|
|
549
|
+
var routeTree = Route$6._addFileChildren(rootRouteChildren)._addFileTypes();
|
|
550
|
+
//#endregion
|
|
551
|
+
//#region src/router.tsx
|
|
552
|
+
var router_exports = /* @__PURE__ */ __exportAll({ getRouter: () => getRouter });
|
|
553
|
+
function getRouter() {
|
|
554
|
+
return createRouter({
|
|
555
|
+
routeTree,
|
|
556
|
+
scrollRestoration: true,
|
|
557
|
+
defaultPreload: "intent",
|
|
558
|
+
defaultPreloadStaleTime: 0
|
|
559
|
+
});
|
|
560
|
+
}
|
|
561
|
+
//#endregion
|
|
562
|
+
export { tokenDisplayName as a, extractExamples as c, summarizeDescription as d, resolveDescription as f, getRouter, Route$2 as i, pickExample as l, Route as n, formatPropertyName as o, Route$5 as p, Route$1 as r, formatType as s, router_exports as t, stripExamples as u };
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { p as Route } from "./router-DZSocx9m.js";
|
|
2
|
+
import { Link } from "@tanstack/react-router";
|
|
3
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
4
|
+
//#region src/routes/index.tsx?tsr-split=component
|
|
5
|
+
function Home() {
|
|
6
|
+
const { targetDir, project, providers } = Route.useLoaderData();
|
|
7
|
+
if (!project) return /* @__PURE__ */ jsxs("main", { children: [/* @__PURE__ */ jsx("h1", { children: "Local Provider Docs" }), /* @__PURE__ */ jsxs("p", {
|
|
8
|
+
className: "empty-state",
|
|
9
|
+
children: [
|
|
10
|
+
"No Pulumi project was found at ",
|
|
11
|
+
/* @__PURE__ */ jsx("code", { children: targetDir }),
|
|
12
|
+
" (or any parent directory). Run this from inside a Pulumi project directory, or with",
|
|
13
|
+
" ",
|
|
14
|
+
/* @__PURE__ */ jsx("code", { children: "--dir <path>" }),
|
|
15
|
+
" pointing at one."
|
|
16
|
+
]
|
|
17
|
+
})] });
|
|
18
|
+
return /* @__PURE__ */ jsxs("main", { children: [
|
|
19
|
+
/* @__PURE__ */ jsx("h1", { children: "Local Provider Docs" }),
|
|
20
|
+
/* @__PURE__ */ jsxs("p", {
|
|
21
|
+
className: "subtitle",
|
|
22
|
+
children: [
|
|
23
|
+
project.name ?? "Pulumi project",
|
|
24
|
+
" · ",
|
|
25
|
+
/* @__PURE__ */ jsx("code", { children: project.root })
|
|
26
|
+
]
|
|
27
|
+
}),
|
|
28
|
+
providers.length === 0 ? /* @__PURE__ */ jsxs("p", {
|
|
29
|
+
className: "empty-state",
|
|
30
|
+
children: [
|
|
31
|
+
"This project's ",
|
|
32
|
+
/* @__PURE__ */ jsx("code", { children: "Pulumi.yaml" }),
|
|
33
|
+
" has no ",
|
|
34
|
+
/* @__PURE__ */ jsx("code", { children: "packages" }),
|
|
35
|
+
" ",
|
|
36
|
+
"section, so there are no local or parameterized providers to show docs for yet. Add one with ",
|
|
37
|
+
/* @__PURE__ */ jsx("code", { children: "pulumi package add" }),
|
|
38
|
+
"."
|
|
39
|
+
]
|
|
40
|
+
}) : /* @__PURE__ */ jsx("ul", {
|
|
41
|
+
className: "provider-list",
|
|
42
|
+
children: providers.map((provider) => /* @__PURE__ */ jsxs("li", {
|
|
43
|
+
className: "provider-card",
|
|
44
|
+
children: [/* @__PURE__ */ jsxs(Link, {
|
|
45
|
+
to: "/providers/$name",
|
|
46
|
+
params: { name: provider.name },
|
|
47
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
48
|
+
className: "provider-name",
|
|
49
|
+
children: provider.name
|
|
50
|
+
}), /* @__PURE__ */ jsxs("span", {
|
|
51
|
+
className: "provider-source",
|
|
52
|
+
children: [
|
|
53
|
+
provider.source,
|
|
54
|
+
provider.version ? ` @ ${provider.version}` : "",
|
|
55
|
+
provider.parameters?.length ? ` (${provider.parameters.join(" ")})` : ""
|
|
56
|
+
]
|
|
57
|
+
})]
|
|
58
|
+
}), provider.origin === "error" ? /* @__PURE__ */ jsxs("p", {
|
|
59
|
+
className: "banner banner-failure",
|
|
60
|
+
children: ["Failed to load schema: ", provider.error]
|
|
61
|
+
}) : /* @__PURE__ */ jsxs("p", {
|
|
62
|
+
className: "provider-stats",
|
|
63
|
+
children: [
|
|
64
|
+
provider.resourceCount,
|
|
65
|
+
" resource",
|
|
66
|
+
provider.resourceCount === 1 ? "" : "s",
|
|
67
|
+
" · ",
|
|
68
|
+
provider.functionCount,
|
|
69
|
+
" function",
|
|
70
|
+
provider.functionCount === 1 ? "" : "s",
|
|
71
|
+
provider.origin === "cache" && /* @__PURE__ */ jsxs(Fragment, { children: [" · ", /* @__PURE__ */ jsx("span", {
|
|
72
|
+
className: "badge badge-info",
|
|
73
|
+
children: "from cache"
|
|
74
|
+
})] })
|
|
75
|
+
]
|
|
76
|
+
})]
|
|
77
|
+
}, provider.name))
|
|
78
|
+
})
|
|
79
|
+
] });
|
|
80
|
+
}
|
|
81
|
+
//#endregion
|
|
82
|
+
export { Home as component };
|