@burdenoff/microfe-store 2026.1014.1 → 2026.1031.1

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 (30) hide show
  1. package/dist/components/ExternalListingBadge.d.ts +15 -0
  2. package/dist/components/ExternalListingBadge.js +19 -0
  3. package/dist/components/ExternalListingBadge.js.map +1 -0
  4. package/dist/components/TemplateRevisionsQueue.d.ts +10 -0
  5. package/dist/components/TemplateRevisionsQueue.js +300 -0
  6. package/dist/components/TemplateRevisionsQueue.js.map +1 -0
  7. package/dist/components/WorkflowTemplatePreviewPanel.d.ts +50 -0
  8. package/dist/components/WorkflowTemplatePreviewPanel.js +221 -0
  9. package/dist/components/WorkflowTemplatePreviewPanel.js.map +1 -0
  10. package/dist/generated/global-operations.d.ts +14 -0
  11. package/dist/generated/global-operations.js +14 -0
  12. package/dist/generated/global-operations.js.map +1 -1
  13. package/dist/generated/global-types.d.ts +377 -2
  14. package/dist/generated/global-types.js.map +1 -1
  15. package/dist/generated/wspace-types.d.ts +20345 -404
  16. package/dist/hooks/useStoreGraphQL.d.ts +4 -0
  17. package/dist/hooks/useStoreGraphQL.js.map +1 -1
  18. package/dist/pages/AdminSubmissionsQueuePage.js +447 -334
  19. package/dist/pages/AdminSubmissionsQueuePage.js.map +1 -1
  20. package/dist/pages/MarketplaceHomePage.js +134 -127
  21. package/dist/pages/MarketplaceHomePage.js.map +1 -1
  22. package/dist/pages/ProductDetailPage.js +628 -601
  23. package/dist/pages/ProductDetailPage.js.map +1 -1
  24. package/dist/translations/en.d.ts +6 -0
  25. package/dist/translations/en.js +6 -0
  26. package/dist/translations/en.js.map +1 -1
  27. package/dist/utils/externalListing.d.ts +35 -0
  28. package/dist/utils/externalListing.js +34 -0
  29. package/dist/utils/externalListing.js.map +1 -0
  30. package/package.json +1 -1
@@ -0,0 +1,221 @@
1
+ import { useState as e } from "react";
2
+ import { ChevronDown as t, ChevronUp as n, Eraser as r, FileJson as i, KeyRound as a, Network as o, PlugZap as s, TextCursorInput as c } from "lucide-react";
3
+ import { jsx as l, jsxs as u } from "react/jsx-runtime";
4
+ //#region src/components/WorkflowTemplatePreviewPanel.tsx
5
+ var d = "\n nodeTypes { nodeType nodeVersion publishType displayName }\n nodeCount\n edgeCount\n requiredInputs { name type label required usedBy }\n requiredCredentials { name kind nodeId nodeType nodeLabel }\n cleaningReport {\n connectionsCleared\n secretsRemoved\n pinnedDataRemoved\n clearedConnections { nodeId nodeType nodeLabel field }\n removedSecrets { nodeId nodeType nodeLabel field }\n }\n definitionJson\n";
6
+ function f(e) {
7
+ return e.nodeLabel ?? e.nodeId ?? "Workflow";
8
+ }
9
+ var p = "mb-2 flex items-center gap-1.5 text-xs font-semibold uppercase tracking-wide text-[var(--color-text-secondary)]", m = "inline-flex items-center gap-1 rounded-md border border-[var(--color-border-seam)] bg-[var(--color-surface-default)] px-2 py-1 text-xs text-[var(--color-text-primary)]", h = ({ refs: e, total: t, testId: n }) => /* @__PURE__ */ u("ul", {
10
+ className: "mt-1.5 space-y-1",
11
+ "data-testid": n,
12
+ children: [e.map((e) => /* @__PURE__ */ u("li", {
13
+ className: "text-xs text-[var(--color-text-secondary)]",
14
+ children: [
15
+ /* @__PURE__ */ l("span", {
16
+ className: "font-medium text-[var(--color-text-primary)]",
17
+ children: f(e)
18
+ }),
19
+ e.nodeType && /* @__PURE__ */ u("span", {
20
+ className: "text-[var(--color-text-muted)]",
21
+ children: [
22
+ " (",
23
+ e.nodeType,
24
+ ")"
25
+ ]
26
+ }),
27
+ /* @__PURE__ */ u("span", {
28
+ className: "font-mono",
29
+ children: [" · ", e.field]
30
+ })
31
+ ]
32
+ }, `${e.nodeId ?? "root"}:${e.field}`)), t > e.length && /* @__PURE__ */ u("li", {
33
+ className: "text-xs text-[var(--color-text-muted)]",
34
+ children: [
35
+ "and ",
36
+ t - e.length,
37
+ " more not listed"
38
+ ]
39
+ })]
40
+ }), g = "text-xs text-[var(--color-text-muted)]", _ = "text-xs text-[var(--color-text-secondary)]";
41
+ function v(e, t) {
42
+ return `${e} ${t}${e === 1 ? "" : "s"}`;
43
+ }
44
+ var y = ({ preview: e }) => /* @__PURE__ */ u("div", { children: [/* @__PURE__ */ u("h4", {
45
+ className: p,
46
+ children: [
47
+ /* @__PURE__ */ l(o, { className: "size-3.5" }),
48
+ "Nodes (",
49
+ v(e.nodeCount, "node"),
50
+ ", ",
51
+ v(e.edgeCount, "connection"),
52
+ ",",
53
+ " ",
54
+ v(e.nodeTypes.length, "node type"),
55
+ ")"
56
+ ]
57
+ }), e.nodeTypes.length === 0 ? /* @__PURE__ */ l("p", {
58
+ className: g,
59
+ children: "No node types found."
60
+ }) : /* @__PURE__ */ l("div", {
61
+ className: "flex flex-wrap gap-1.5",
62
+ "data-testid": "template-node-types",
63
+ children: e.nodeTypes.map((e) => /* @__PURE__ */ u("span", {
64
+ className: m,
65
+ title: e.nodeType,
66
+ children: [
67
+ e.displayName,
68
+ /* @__PURE__ */ u("span", {
69
+ className: "font-mono text-[var(--color-text-muted)]",
70
+ children: [
71
+ e.nodeType,
72
+ " · v",
73
+ e.nodeVersion
74
+ ]
75
+ }),
76
+ e.publishType === "STORE" && /* @__PURE__ */ l("span", {
77
+ className: "rounded bg-[var(--color-status-info-bg-subtle)] px-1 text-[10px] text-[var(--color-status-info-text)]",
78
+ children: "Store"
79
+ })
80
+ ]
81
+ }, e.nodeType))
82
+ })] }), b = ({ inputs: e }) => /* @__PURE__ */ u("div", { children: [/* @__PURE__ */ u("h4", {
83
+ className: p,
84
+ children: [
85
+ /* @__PURE__ */ l(c, { className: "size-3.5" }),
86
+ "Required inputs (",
87
+ e.length,
88
+ ")"
89
+ ]
90
+ }), e.length === 0 ? /* @__PURE__ */ l("p", {
91
+ className: g,
92
+ children: "The template reads no variables the importer has to fill in."
93
+ }) : /* @__PURE__ */ l("ul", {
94
+ className: "space-y-1",
95
+ "data-testid": "template-required-inputs",
96
+ children: e.map((e) => /* @__PURE__ */ u("li", {
97
+ className: _,
98
+ children: [
99
+ /* @__PURE__ */ l("span", {
100
+ className: "font-mono text-[var(--color-text-primary)]",
101
+ children: e.name
102
+ }),
103
+ e.type === "secret" && /* @__PURE__ */ l("span", {
104
+ className: "ml-1 rounded bg-[var(--color-status-warning-bg-subtle)] px-1 text-[10px] text-[var(--color-status-warning-text)]",
105
+ children: "secret"
106
+ }),
107
+ e.usedBy.length > 0 && /* @__PURE__ */ u("span", { children: [" · used by ", e.usedBy.join(", ")] })
108
+ ]
109
+ }, e.name))
110
+ })] }), x = ({ credentials: e }) => /* @__PURE__ */ u("div", { children: [/* @__PURE__ */ u("h4", {
111
+ className: p,
112
+ children: [
113
+ /* @__PURE__ */ l(s, { className: "size-3.5" }),
114
+ "Required credentials (",
115
+ e.length,
116
+ ")"
117
+ ]
118
+ }), e.length === 0 ? /* @__PURE__ */ l("p", {
119
+ className: g,
120
+ children: "No credentials needed."
121
+ }) : /* @__PURE__ */ l("ul", {
122
+ className: "space-y-1",
123
+ "data-testid": "template-required-credentials",
124
+ children: e.map((e) => {
125
+ let t = e.nodeLabel ?? e.nodeId, n = e.kind === "connection" ? "saved connection (cleared at submission)" : "credential lookup";
126
+ return /* @__PURE__ */ u("li", {
127
+ className: _,
128
+ children: [
129
+ /* @__PURE__ */ l("span", {
130
+ className: "font-medium text-[var(--color-text-primary)]",
131
+ children: e.name
132
+ }),
133
+ /* @__PURE__ */ u("span", { children: [" · ", n] }),
134
+ t && /* @__PURE__ */ u("span", { children: [" · ", t] })
135
+ ]
136
+ }, `${e.kind}-${e.name}-${e.nodeId ?? ""}`);
137
+ })
138
+ })] }), S = ({ report: e }) => /* @__PURE__ */ u("div", {
139
+ className: "space-y-3 text-xs",
140
+ "data-testid": "template-cleaning-report",
141
+ children: [
142
+ /* @__PURE__ */ u("div", {
143
+ className: "flex flex-wrap gap-1.5",
144
+ children: [
145
+ /* @__PURE__ */ u("span", {
146
+ className: m,
147
+ children: [
148
+ /* @__PURE__ */ l(s, { className: "size-3" }),
149
+ v(e.connectionsCleared, "connection"),
150
+ " cleared"
151
+ ]
152
+ }),
153
+ /* @__PURE__ */ u("span", {
154
+ className: m,
155
+ children: [
156
+ /* @__PURE__ */ l(a, { className: "size-3" }),
157
+ v(e.secretsRemoved, "secret"),
158
+ " removed"
159
+ ]
160
+ }),
161
+ /* @__PURE__ */ l("span", {
162
+ className: m,
163
+ children: e.pinnedDataRemoved ? "Pinned run data removed" : "No pinned run data"
164
+ })
165
+ ]
166
+ }),
167
+ e.clearedConnections.length > 0 && /* @__PURE__ */ u("div", { children: [/* @__PURE__ */ l("p", {
168
+ className: "font-medium text-[var(--color-text-secondary)]",
169
+ children: "Connections cleared"
170
+ }), /* @__PURE__ */ l(h, {
171
+ refs: e.clearedConnections,
172
+ total: e.connectionsCleared,
173
+ testId: "template-cleared-connections"
174
+ })] }),
175
+ e.removedSecrets.length > 0 && /* @__PURE__ */ u("div", { children: [/* @__PURE__ */ l("p", {
176
+ className: "font-medium text-[var(--color-text-secondary)]",
177
+ children: "Secrets removed"
178
+ }), /* @__PURE__ */ l(h, {
179
+ refs: e.removedSecrets,
180
+ total: e.secretsRemoved,
181
+ testId: "template-removed-secrets"
182
+ })] })
183
+ ]
184
+ }), C = ({ report: e }) => /* @__PURE__ */ u("div", { children: [/* @__PURE__ */ u("h4", {
185
+ className: p,
186
+ children: [/* @__PURE__ */ l(r, { className: "size-3.5" }), "Cleaning report"]
187
+ }), e ? /* @__PURE__ */ l(S, { report: e }) : /* @__PURE__ */ l("p", {
188
+ className: g,
189
+ children: "No cleaning report was recorded for this template (it was stored before reports were kept)."
190
+ })] }), w = ({ definition: r }) => {
191
+ let [a, o] = e(!1);
192
+ return /* @__PURE__ */ u("div", { children: [/* @__PURE__ */ u("button", {
193
+ type: "button",
194
+ onClick: () => o((e) => !e),
195
+ className: "inline-flex items-center gap-1.5 rounded-md border border-[var(--color-border-default)] bg-[var(--color-surface-default)] px-3 py-1.5 text-xs font-medium text-[var(--color-text-secondary)] transition-colors hover:bg-[var(--color-surface-hover)]",
196
+ children: [
197
+ /* @__PURE__ */ l(i, { className: "size-3.5" }),
198
+ a ? "Hide definition" : "View cleaned definition",
199
+ l(a ? n : t, { className: "size-3" })
200
+ ]
201
+ }), a && /* @__PURE__ */ l("pre", {
202
+ className: "mt-2 max-h-72 overflow-auto rounded-lg border border-[var(--color-border-seam)] bg-[var(--color-surface-default)] p-4 text-[11px] leading-relaxed text-[var(--color-text-primary)]",
203
+ children: JSON.stringify(r, null, 2)
204
+ })] });
205
+ }, T = ({ preview: e }) => /* @__PURE__ */ u("div", {
206
+ className: "space-y-5",
207
+ "data-testid": "workflow-template-preview",
208
+ children: [
209
+ /* @__PURE__ */ l(y, { preview: e }),
210
+ /* @__PURE__ */ u("div", {
211
+ className: "grid gap-5 sm:grid-cols-2",
212
+ children: [/* @__PURE__ */ l(b, { inputs: e.requiredInputs }), /* @__PURE__ */ l(x, { credentials: e.requiredCredentials })]
213
+ }),
214
+ /* @__PURE__ */ l(C, { report: e.cleaningReport }),
215
+ e.definitionJson && /* @__PURE__ */ l(w, { definition: e.definitionJson })
216
+ ]
217
+ });
218
+ //#endregion
219
+ export { d as WORKFLOW_TEMPLATE_PREVIEW_FIELDS, T as WorkflowTemplatePreviewPanel };
220
+
221
+ //# sourceMappingURL=WorkflowTemplatePreviewPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkflowTemplatePreviewPanel.js","names":[],"sources":["../../src/components/WorkflowTemplatePreviewPanel.tsx"],"sourcesContent":["import type { FC } from 'react';\nimport { useState } from 'react';\nimport {\n ChevronDown,\n ChevronUp,\n Eraser,\n FileJson,\n KeyRound,\n Network,\n PlugZap,\n TextCursorInput,\n} from 'lucide-react';\n\n/**\n * Reviewer preview of a community workflow template (BOFF-10463): what the\n * template does before a store admin approves it. Mirrors the store service's\n * `WorkflowTemplatePreview` type.\n */\nexport type WorkflowTemplateFieldRef = {\n nodeId?: string | null;\n nodeType?: string | null;\n nodeLabel?: string | null;\n field: string;\n};\n\nexport type WorkflowTemplatePreview = {\n nodeTypes: Array<{\n nodeType: string;\n nodeVersion: string;\n publishType: string;\n displayName: string;\n }>;\n nodeCount: number;\n edgeCount: number;\n requiredInputs: Array<{\n name: string;\n type: string;\n label: string;\n required: boolean;\n usedBy: string[];\n }>;\n requiredCredentials: Array<{\n name: string;\n kind: string;\n nodeId?: string | null;\n nodeType?: string | null;\n nodeLabel?: string | null;\n }>;\n cleaningReport?: {\n connectionsCleared: number;\n secretsRemoved: number;\n pinnedDataRemoved: boolean;\n clearedConnections: WorkflowTemplateFieldRef[];\n removedSecrets: WorkflowTemplateFieldRef[];\n } | null;\n definitionJson?: Record<string, unknown> | null;\n};\n\n/** GraphQL selection for a `WorkflowTemplatePreview` field. */\nexport const WORKFLOW_TEMPLATE_PREVIEW_FIELDS = /* GraphQL */ `\n nodeTypes { nodeType nodeVersion publishType displayName }\n nodeCount\n edgeCount\n requiredInputs { name type label required usedBy }\n requiredCredentials { name kind nodeId nodeType nodeLabel }\n cleaningReport {\n connectionsCleared\n secretsRemoved\n pinnedDataRemoved\n clearedConnections { nodeId nodeType nodeLabel field }\n removedSecrets { nodeId nodeType nodeLabel field }\n }\n definitionJson\n`;\n\nfunction nodeName(ref: { nodeLabel?: string | null; nodeId?: string | null }): string {\n return ref.nodeLabel ?? ref.nodeId ?? 'Workflow';\n}\n\nconst SECTION_TITLE =\n 'mb-2 flex items-center gap-1.5 text-xs font-semibold uppercase tracking-wide text-[var(--color-text-secondary)]';\nconst CHIP =\n 'inline-flex items-center gap-1 rounded-md border border-[var(--color-border-seam)] bg-[var(--color-surface-default)] px-2 py-1 text-xs text-[var(--color-text-primary)]';\n\nconst FieldRefList: FC<{ refs: WorkflowTemplateFieldRef[]; total: number; testId: string }> = ({\n refs,\n total,\n testId,\n}) => (\n <ul className=\"mt-1.5 space-y-1\" data-testid={testId}>\n {/* A field path is unique within its node, so node id + path is a stable key. */}\n {refs.map((ref) => (\n <li\n key={`${ref.nodeId ?? 'root'}:${ref.field}`}\n className=\"text-xs text-[var(--color-text-secondary)]\"\n >\n <span className=\"font-medium text-[var(--color-text-primary)]\">{nodeName(ref)}</span>\n {ref.nodeType && <span className=\"text-[var(--color-text-muted)]\"> ({ref.nodeType})</span>}\n <span className=\"font-mono\"> · {ref.field}</span>\n </li>\n ))}\n {total > refs.length && (\n <li className=\"text-xs text-[var(--color-text-muted)]\">\n and {total - refs.length} more not listed\n </li>\n )}\n </ul>\n);\n\ntype Preview = WorkflowTemplatePreview;\ntype CleaningReport = NonNullable<Preview['cleaningReport']>;\n\nconst MUTED = 'text-xs text-[var(--color-text-muted)]';\nconst ROW = 'text-xs text-[var(--color-text-secondary)]';\n\nfunction plural(count: number, word: string): string {\n return `${count} ${word}${count === 1 ? '' : 's'}`;\n}\n\nconst NodeTypesSection: FC<{ preview: Preview }> = ({ preview }) => (\n <div>\n <h4 className={SECTION_TITLE}>\n <Network className=\"size-3.5\" />\n Nodes ({plural(preview.nodeCount, 'node')}, {plural(preview.edgeCount, 'connection')},{' '}\n {plural(preview.nodeTypes.length, 'node type')})\n </h4>\n {preview.nodeTypes.length === 0 ? (\n <p className={MUTED}>No node types found.</p>\n ) : (\n <div className=\"flex flex-wrap gap-1.5\" data-testid=\"template-node-types\">\n {preview.nodeTypes.map((node) => (\n <span key={node.nodeType} className={CHIP} title={node.nodeType}>\n {node.displayName}\n <span className=\"font-mono text-[var(--color-text-muted)]\">\n {node.nodeType} · v{node.nodeVersion}\n </span>\n {node.publishType === 'STORE' && (\n <span className=\"rounded bg-[var(--color-status-info-bg-subtle)] px-1 text-[10px] text-[var(--color-status-info-text)]\">\n Store\n </span>\n )}\n </span>\n ))}\n </div>\n )}\n </div>\n);\n\nconst RequiredInputsSection: FC<{ inputs: Preview['requiredInputs'] }> = ({ inputs }) => (\n <div>\n <h4 className={SECTION_TITLE}>\n <TextCursorInput className=\"size-3.5\" />\n Required inputs ({inputs.length})\n </h4>\n {inputs.length === 0 ? (\n <p className={MUTED}>The template reads no variables the importer has to fill in.</p>\n ) : (\n <ul className=\"space-y-1\" data-testid=\"template-required-inputs\">\n {inputs.map((input) => (\n <li key={input.name} className={ROW}>\n <span className=\"font-mono text-[var(--color-text-primary)]\">{input.name}</span>\n {input.type === 'secret' && (\n <span className=\"ml-1 rounded bg-[var(--color-status-warning-bg-subtle)] px-1 text-[10px] text-[var(--color-status-warning-text)]\">\n secret\n </span>\n )}\n {input.usedBy.length > 0 && <span> · used by {input.usedBy.join(', ')}</span>}\n </li>\n ))}\n </ul>\n )}\n </div>\n);\n\nconst RequiredCredentialsSection: FC<{ credentials: Preview['requiredCredentials'] }> = ({\n credentials,\n}) => (\n <div>\n <h4 className={SECTION_TITLE}>\n <PlugZap className=\"size-3.5\" />\n Required credentials ({credentials.length})\n </h4>\n {credentials.length === 0 ? (\n <p className={MUTED}>No credentials needed.</p>\n ) : (\n <ul className=\"space-y-1\" data-testid=\"template-required-credentials\">\n {credentials.map((credential) => {\n const where = credential.nodeLabel ?? credential.nodeId;\n const kind =\n credential.kind === 'connection'\n ? 'saved connection (cleared at submission)'\n : 'credential lookup';\n return (\n <li\n key={`${credential.kind}-${credential.name}-${credential.nodeId ?? ''}`}\n className={ROW}\n >\n <span className=\"font-medium text-[var(--color-text-primary)]\">\n {credential.name}\n </span>\n <span> · {kind}</span>\n {where && <span> · {where}</span>}\n </li>\n );\n })}\n </ul>\n )}\n </div>\n);\n\nconst CleaningReportDetails: FC<{ report: CleaningReport }> = ({ report }) => (\n <div className=\"space-y-3 text-xs\" data-testid=\"template-cleaning-report\">\n <div className=\"flex flex-wrap gap-1.5\">\n <span className={CHIP}>\n <PlugZap className=\"size-3\" />\n {plural(report.connectionsCleared, 'connection')} cleared\n </span>\n <span className={CHIP}>\n <KeyRound className=\"size-3\" />\n {plural(report.secretsRemoved, 'secret')} removed\n </span>\n <span className={CHIP}>\n {report.pinnedDataRemoved ? 'Pinned run data removed' : 'No pinned run data'}\n </span>\n </div>\n {report.clearedConnections.length > 0 && (\n <div>\n <p className=\"font-medium text-[var(--color-text-secondary)]\">Connections cleared</p>\n <FieldRefList\n refs={report.clearedConnections}\n total={report.connectionsCleared}\n testId=\"template-cleared-connections\"\n />\n </div>\n )}\n {report.removedSecrets.length > 0 && (\n <div>\n <p className=\"font-medium text-[var(--color-text-secondary)]\">Secrets removed</p>\n <FieldRefList\n refs={report.removedSecrets}\n total={report.secretsRemoved}\n testId=\"template-removed-secrets\"\n />\n </div>\n )}\n </div>\n);\n\nconst CleaningReportSection: FC<{ report: Preview['cleaningReport'] }> = ({ report }) => (\n <div>\n <h4 className={SECTION_TITLE}>\n <Eraser className=\"size-3.5\" />\n Cleaning report\n </h4>\n {report ? (\n <CleaningReportDetails report={report} />\n ) : (\n <p className={MUTED}>\n No cleaning report was recorded for this template (it was stored before reports were kept).\n </p>\n )}\n </div>\n);\n\nconst DefinitionSection: FC<{ definition: Record<string, unknown> }> = ({ definition }) => {\n const [open, setOpen] = useState(false);\n return (\n <div>\n <button\n type=\"button\"\n onClick={() => setOpen((v) => !v)}\n className=\"inline-flex items-center gap-1.5 rounded-md border border-[var(--color-border-default)] bg-[var(--color-surface-default)] px-3 py-1.5 text-xs font-medium text-[var(--color-text-secondary)] transition-colors hover:bg-[var(--color-surface-hover)]\"\n >\n <FileJson className=\"size-3.5\" />\n {open ? 'Hide definition' : 'View cleaned definition'}\n {open ? <ChevronUp className=\"size-3\" /> : <ChevronDown className=\"size-3\" />}\n </button>\n {open && (\n <pre className=\"mt-2 max-h-72 overflow-auto rounded-lg border border-[var(--color-border-seam)] bg-[var(--color-surface-default)] p-4 text-[11px] leading-relaxed text-[var(--color-text-primary)]\">\n {JSON.stringify(definition, null, 2)}\n </pre>\n )}\n </div>\n );\n};\n\nexport const WorkflowTemplatePreviewPanel: FC<{ preview: WorkflowTemplatePreview }> = ({\n preview,\n}) => (\n <div className=\"space-y-5\" data-testid=\"workflow-template-preview\">\n <NodeTypesSection preview={preview} />\n <div className=\"grid gap-5 sm:grid-cols-2\">\n <RequiredInputsSection inputs={preview.requiredInputs} />\n <RequiredCredentialsSection credentials={preview.requiredCredentials} />\n </div>\n <CleaningReportSection report={preview.cleaningReport} />\n {preview.definitionJson && <DefinitionSection definition={preview.definitionJson} />}\n </div>\n);\n"],"mappings":"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"}
@@ -897,6 +897,8 @@ export type BrowseStoreQuery = {
897
897
  category?: string | null;
898
898
  tags: Array<string>;
899
899
  publishedAt?: string | null;
900
+ externalService?: string | null;
901
+ externalUrl?: string | null;
900
902
  publisher?: {
901
903
  __typename?: 'Publisher';
902
904
  id: string;
@@ -1227,6 +1229,8 @@ export type HomeGroupedProductsQuery = {
1227
1229
  category?: string | null;
1228
1230
  tags: Array<string>;
1229
1231
  publishedAt?: string | null;
1232
+ externalService?: string | null;
1233
+ externalUrl?: string | null;
1230
1234
  publisher?: {
1231
1235
  __typename?: 'Publisher';
1232
1236
  id: string;
@@ -1257,6 +1261,8 @@ export type HomeGroupedProductsQuery = {
1257
1261
  category?: string | null;
1258
1262
  tags: Array<string>;
1259
1263
  publishedAt?: string | null;
1264
+ externalService?: string | null;
1265
+ externalUrl?: string | null;
1260
1266
  publisher?: {
1261
1267
  __typename?: 'Publisher';
1262
1268
  id: string;
@@ -1287,6 +1293,8 @@ export type HomeGroupedProductsQuery = {
1287
1293
  category?: string | null;
1288
1294
  tags: Array<string>;
1289
1295
  publishedAt?: string | null;
1296
+ externalService?: string | null;
1297
+ externalUrl?: string | null;
1290
1298
  publisher?: {
1291
1299
  __typename?: 'Publisher';
1292
1300
  id: string;
@@ -1317,6 +1325,8 @@ export type HomeGroupedProductsQuery = {
1317
1325
  category?: string | null;
1318
1326
  tags: Array<string>;
1319
1327
  publishedAt?: string | null;
1328
+ externalService?: string | null;
1329
+ externalUrl?: string | null;
1320
1330
  publisher?: {
1321
1331
  __typename?: 'Publisher';
1322
1332
  id: string;
@@ -1364,6 +1374,8 @@ export type StoreProductDetailsQuery = {
1364
1374
  category?: string | null;
1365
1375
  tags: Array<string>;
1366
1376
  publishedAt?: string | null;
1377
+ externalService?: string | null;
1378
+ externalUrl?: string | null;
1367
1379
  createdAt: string;
1368
1380
  updatedAt: string;
1369
1381
  subType?: string | null;
@@ -1437,6 +1449,8 @@ export type StoreProductDetailsQuery = {
1437
1449
  category?: string | null;
1438
1450
  tags: Array<string>;
1439
1451
  publishedAt?: string | null;
1452
+ externalService?: string | null;
1453
+ externalUrl?: string | null;
1440
1454
  publisher?: {
1441
1455
  __typename?: 'Publisher';
1442
1456
  id: string;
@@ -1082,6 +1082,8 @@ var V = t`
1082
1082
  category
1083
1083
  tags
1084
1084
  publishedAt
1085
+ externalService
1086
+ externalUrl
1085
1087
  publisher {
1086
1088
  id
1087
1089
  name
@@ -1515,6 +1517,8 @@ var J = t`
1515
1517
  category
1516
1518
  tags
1517
1519
  publishedAt
1520
+ externalService
1521
+ externalUrl
1518
1522
  publisher {
1519
1523
  id
1520
1524
  name
@@ -1543,6 +1547,8 @@ var J = t`
1543
1547
  category
1544
1548
  tags
1545
1549
  publishedAt
1550
+ externalService
1551
+ externalUrl
1546
1552
  publisher {
1547
1553
  id
1548
1554
  name
@@ -1571,6 +1577,8 @@ var J = t`
1571
1577
  category
1572
1578
  tags
1573
1579
  publishedAt
1580
+ externalService
1581
+ externalUrl
1574
1582
  publisher {
1575
1583
  id
1576
1584
  name
@@ -1599,6 +1607,8 @@ var J = t`
1599
1607
  category
1600
1608
  tags
1601
1609
  publishedAt
1610
+ externalService
1611
+ externalUrl
1602
1612
  publisher {
1603
1613
  id
1604
1614
  name
@@ -1660,6 +1670,8 @@ var Y = t`
1660
1670
  category
1661
1671
  tags
1662
1672
  publishedAt
1673
+ externalService
1674
+ externalUrl
1663
1675
  createdAt
1664
1676
  updatedAt
1665
1677
  subType
@@ -1728,6 +1740,8 @@ var Y = t`
1728
1740
  category
1729
1741
  tags
1730
1742
  publishedAt
1743
+ externalService
1744
+ externalUrl
1731
1745
  publisher {
1732
1746
  id
1733
1747
  name