@_davideast/stitch-mcp 0.5.3 → 0.5.5

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 (78) hide show
  1. package/dist/chunk-18nfnnkg.js +947 -0
  2. package/dist/chunk-18nfnnkg.js.map +28 -0
  3. package/dist/chunk-1sgyj1qf.js +256 -0
  4. package/dist/chunk-1sgyj1qf.js.map +11 -0
  5. package/dist/chunk-1tzaa3zn.js +370 -0
  6. package/dist/chunk-1tzaa3zn.js.map +16 -0
  7. package/dist/chunk-2efzz3tw.js +10 -0
  8. package/dist/chunk-2efzz3tw.js.map +9 -0
  9. package/dist/chunk-2eq8thmz.js +31529 -0
  10. package/dist/chunk-2eq8thmz.js.map +245 -0
  11. package/dist/chunk-4xa2a5hb.js +19 -0
  12. package/dist/chunk-4xa2a5hb.js.map +9 -0
  13. package/dist/chunk-7vdj1qwb.js +2121 -0
  14. package/dist/chunk-7vdj1qwb.js.map +44 -0
  15. package/dist/chunk-7zyv8g2t.js +5216 -0
  16. package/dist/chunk-7zyv8g2t.js.map +67 -0
  17. package/dist/chunk-94xqpnv4.js +7 -0
  18. package/dist/chunk-94xqpnv4.js.map +9 -0
  19. package/dist/chunk-b43pzs3z.js +839 -0
  20. package/dist/chunk-b43pzs3z.js.map +11 -0
  21. package/dist/chunk-byzfppa1.js +759 -0
  22. package/dist/chunk-byzfppa1.js.map +19 -0
  23. package/dist/chunk-cjkw69md.js +94 -0
  24. package/dist/chunk-cjkw69md.js.map +10 -0
  25. package/dist/chunk-d92ngrr6.js +680 -0
  26. package/dist/chunk-d92ngrr6.js.map +17 -0
  27. package/dist/chunk-de74byjc.js +19 -0
  28. package/dist/chunk-de74byjc.js.map +9 -0
  29. package/dist/chunk-ewab4gg0.js +17 -0
  30. package/dist/chunk-ewab4gg0.js.map +9 -0
  31. package/dist/chunk-f0phn3y1.js +1495 -0
  32. package/dist/chunk-f0phn3y1.js.map +23 -0
  33. package/dist/chunk-f398cwqb.js +24 -0
  34. package/dist/chunk-f398cwqb.js.map +9 -0
  35. package/dist/chunk-fkzq5m59.js +111 -0
  36. package/dist/chunk-fkzq5m59.js.map +10 -0
  37. package/dist/chunk-gzk8pt16.js +44184 -0
  38. package/dist/chunk-gzk8pt16.js.map +237 -0
  39. package/dist/chunk-kme6y874.js +125 -0
  40. package/dist/chunk-kme6y874.js.map +12 -0
  41. package/dist/chunk-mw5wn97e.js +109 -0
  42. package/dist/chunk-mw5wn97e.js.map +10 -0
  43. package/dist/chunk-mxcybqhd.js +412 -0
  44. package/dist/chunk-mxcybqhd.js.map +20 -0
  45. package/dist/chunk-nep9nerg.js +137 -0
  46. package/dist/chunk-nep9nerg.js.map +10 -0
  47. package/dist/chunk-nrcb494d.js +50 -0
  48. package/dist/chunk-nrcb494d.js.map +9 -0
  49. package/dist/chunk-p9vvygz4.js +736 -0
  50. package/dist/chunk-p9vvygz4.js.map +16 -0
  51. package/dist/chunk-rd2ye9s7.js +17 -0
  52. package/dist/chunk-rd2ye9s7.js.map +9 -0
  53. package/dist/chunk-svk5y62j.js +164 -0
  54. package/dist/chunk-svk5y62j.js.map +10 -0
  55. package/dist/chunk-w3wh3zkf.js +269 -0
  56. package/dist/chunk-w3wh3zkf.js.map +10 -0
  57. package/dist/chunk-x1tt02n9.js +264 -0
  58. package/dist/chunk-x1tt02n9.js.map +12 -0
  59. package/dist/chunk-x7g5p1gv.js +66 -0
  60. package/dist/chunk-x7g5p1gv.js.map +10 -0
  61. package/dist/chunk-z7b1n864.js +246 -0
  62. package/dist/chunk-z7b1n864.js.map +14 -0
  63. package/dist/chunk-zcc6seqb.js +19132 -0
  64. package/dist/chunk-zcc6seqb.js.map +115 -0
  65. package/dist/commands/doctor/command.js +1 -1
  66. package/dist/commands/init/command.js +1 -1
  67. package/dist/commands/logout/command.js +1 -1
  68. package/dist/commands/proxy/command.js +1 -1
  69. package/dist/commands/screens/command.js +4 -4
  70. package/dist/commands/serve/command.js +5 -5
  71. package/dist/commands/site/command.js +1 -1
  72. package/dist/commands/snapshot/command.js +1 -1
  73. package/dist/commands/tool/command.js +1 -1
  74. package/dist/commands/view/command.js +1 -1
  75. package/dist/index.js +5 -7
  76. package/dist/index.js.map +1 -1
  77. package/dist/ui/copy-behaviors/clipboard.d.ts +0 -7
  78. package/package.json +1 -3
@@ -0,0 +1,264 @@
1
+ import {
2
+ require_react
3
+ } from "./chunk-b43pzs3z.js";
4
+ import {
5
+ __commonJS,
6
+ __toESM
7
+ } from "./chunk-9wyra8hs.js";
8
+
9
+ // node_modules/react/cjs/react-jsx-dev-runtime.development.js
10
+ var require_react_jsx_dev_runtime_development = __commonJS((exports) => {
11
+ var React = __toESM(require_react());
12
+ (function() {
13
+ function getComponentNameFromType(type) {
14
+ if (type == null)
15
+ return null;
16
+ if (typeof type === "function")
17
+ return type.$$typeof === REACT_CLIENT_REFERENCE ? null : type.displayName || type.name || null;
18
+ if (typeof type === "string")
19
+ return type;
20
+ switch (type) {
21
+ case REACT_FRAGMENT_TYPE:
22
+ return "Fragment";
23
+ case REACT_PROFILER_TYPE:
24
+ return "Profiler";
25
+ case REACT_STRICT_MODE_TYPE:
26
+ return "StrictMode";
27
+ case REACT_SUSPENSE_TYPE:
28
+ return "Suspense";
29
+ case REACT_SUSPENSE_LIST_TYPE:
30
+ return "SuspenseList";
31
+ case REACT_ACTIVITY_TYPE:
32
+ return "Activity";
33
+ }
34
+ if (typeof type === "object")
35
+ switch (typeof type.tag === "number" && console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."), type.$$typeof) {
36
+ case REACT_PORTAL_TYPE:
37
+ return "Portal";
38
+ case REACT_CONTEXT_TYPE:
39
+ return type.displayName || "Context";
40
+ case REACT_CONSUMER_TYPE:
41
+ return (type._context.displayName || "Context") + ".Consumer";
42
+ case REACT_FORWARD_REF_TYPE:
43
+ var innerType = type.render;
44
+ type = type.displayName;
45
+ type || (type = innerType.displayName || innerType.name || "", type = type !== "" ? "ForwardRef(" + type + ")" : "ForwardRef");
46
+ return type;
47
+ case REACT_MEMO_TYPE:
48
+ return innerType = type.displayName || null, innerType !== null ? innerType : getComponentNameFromType(type.type) || "Memo";
49
+ case REACT_LAZY_TYPE:
50
+ innerType = type._payload;
51
+ type = type._init;
52
+ try {
53
+ return getComponentNameFromType(type(innerType));
54
+ } catch (x) {}
55
+ }
56
+ return null;
57
+ }
58
+ function testStringCoercion(value) {
59
+ return "" + value;
60
+ }
61
+ function checkKeyStringCoercion(value) {
62
+ try {
63
+ testStringCoercion(value);
64
+ var JSCompiler_inline_result = false;
65
+ } catch (e) {
66
+ JSCompiler_inline_result = true;
67
+ }
68
+ if (JSCompiler_inline_result) {
69
+ JSCompiler_inline_result = console;
70
+ var JSCompiler_temp_const = JSCompiler_inline_result.error;
71
+ var JSCompiler_inline_result$jscomp$0 = typeof Symbol === "function" && Symbol.toStringTag && value[Symbol.toStringTag] || value.constructor.name || "Object";
72
+ JSCompiler_temp_const.call(JSCompiler_inline_result, "The provided key is an unsupported type %s. This value must be coerced to a string before using it here.", JSCompiler_inline_result$jscomp$0);
73
+ return testStringCoercion(value);
74
+ }
75
+ }
76
+ function getTaskName(type) {
77
+ if (type === REACT_FRAGMENT_TYPE)
78
+ return "<>";
79
+ if (typeof type === "object" && type !== null && type.$$typeof === REACT_LAZY_TYPE)
80
+ return "<...>";
81
+ try {
82
+ var name = getComponentNameFromType(type);
83
+ return name ? "<" + name + ">" : "<...>";
84
+ } catch (x) {
85
+ return "<...>";
86
+ }
87
+ }
88
+ function getOwner() {
89
+ var dispatcher = ReactSharedInternals.A;
90
+ return dispatcher === null ? null : dispatcher.getOwner();
91
+ }
92
+ function UnknownOwner() {
93
+ return Error("react-stack-top-frame");
94
+ }
95
+ function hasValidKey(config) {
96
+ if (hasOwnProperty.call(config, "key")) {
97
+ var getter = Object.getOwnPropertyDescriptor(config, "key").get;
98
+ if (getter && getter.isReactWarning)
99
+ return false;
100
+ }
101
+ return config.key !== undefined;
102
+ }
103
+ function defineKeyPropWarningGetter(props, displayName) {
104
+ function warnAboutAccessingKey() {
105
+ specialPropKeyWarningShown || (specialPropKeyWarningShown = true, console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)", displayName));
106
+ }
107
+ warnAboutAccessingKey.isReactWarning = true;
108
+ Object.defineProperty(props, "key", {
109
+ get: warnAboutAccessingKey,
110
+ configurable: true
111
+ });
112
+ }
113
+ function elementRefGetterWithDeprecationWarning() {
114
+ var componentName = getComponentNameFromType(this.type);
115
+ didWarnAboutElementRef[componentName] || (didWarnAboutElementRef[componentName] = true, console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release."));
116
+ componentName = this.props.ref;
117
+ return componentName !== undefined ? componentName : null;
118
+ }
119
+ function ReactElement(type, key, props, owner, debugStack, debugTask) {
120
+ var refProp = props.ref;
121
+ type = {
122
+ $$typeof: REACT_ELEMENT_TYPE,
123
+ type,
124
+ key,
125
+ props,
126
+ _owner: owner
127
+ };
128
+ (refProp !== undefined ? refProp : null) !== null ? Object.defineProperty(type, "ref", {
129
+ enumerable: false,
130
+ get: elementRefGetterWithDeprecationWarning
131
+ }) : Object.defineProperty(type, "ref", { enumerable: false, value: null });
132
+ type._store = {};
133
+ Object.defineProperty(type._store, "validated", {
134
+ configurable: false,
135
+ enumerable: false,
136
+ writable: true,
137
+ value: 0
138
+ });
139
+ Object.defineProperty(type, "_debugInfo", {
140
+ configurable: false,
141
+ enumerable: false,
142
+ writable: true,
143
+ value: null
144
+ });
145
+ Object.defineProperty(type, "_debugStack", {
146
+ configurable: false,
147
+ enumerable: false,
148
+ writable: true,
149
+ value: debugStack
150
+ });
151
+ Object.defineProperty(type, "_debugTask", {
152
+ configurable: false,
153
+ enumerable: false,
154
+ writable: true,
155
+ value: debugTask
156
+ });
157
+ Object.freeze && (Object.freeze(type.props), Object.freeze(type));
158
+ return type;
159
+ }
160
+ function jsxDEVImpl(type, config, maybeKey, isStaticChildren, debugStack, debugTask) {
161
+ var children = config.children;
162
+ if (children !== undefined)
163
+ if (isStaticChildren)
164
+ if (isArrayImpl(children)) {
165
+ for (isStaticChildren = 0;isStaticChildren < children.length; isStaticChildren++)
166
+ validateChildKeys(children[isStaticChildren]);
167
+ Object.freeze && Object.freeze(children);
168
+ } else
169
+ console.error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");
170
+ else
171
+ validateChildKeys(children);
172
+ if (hasOwnProperty.call(config, "key")) {
173
+ children = getComponentNameFromType(type);
174
+ var keys = Object.keys(config).filter(function(k) {
175
+ return k !== "key";
176
+ });
177
+ isStaticChildren = 0 < keys.length ? "{key: someKey, " + keys.join(": ..., ") + ": ...}" : "{key: someKey}";
178
+ didWarnAboutKeySpread[children + isStaticChildren] || (keys = 0 < keys.length ? "{" + keys.join(": ..., ") + ": ...}" : "{}", console.error(`A props object containing a "key" prop is being spread into JSX:
179
+ let props = %s;
180
+ <%s {...props} />
181
+ React keys must be passed directly to JSX without using spread:
182
+ let props = %s;
183
+ <%s key={someKey} {...props} />`, isStaticChildren, children, keys, children), didWarnAboutKeySpread[children + isStaticChildren] = true);
184
+ }
185
+ children = null;
186
+ maybeKey !== undefined && (checkKeyStringCoercion(maybeKey), children = "" + maybeKey);
187
+ hasValidKey(config) && (checkKeyStringCoercion(config.key), children = "" + config.key);
188
+ if ("key" in config) {
189
+ maybeKey = {};
190
+ for (var propName in config)
191
+ propName !== "key" && (maybeKey[propName] = config[propName]);
192
+ } else
193
+ maybeKey = config;
194
+ children && defineKeyPropWarningGetter(maybeKey, typeof type === "function" ? type.displayName || type.name || "Unknown" : type);
195
+ return ReactElement(type, children, maybeKey, getOwner(), debugStack, debugTask);
196
+ }
197
+ function validateChildKeys(node) {
198
+ isValidElement(node) ? node._store && (node._store.validated = 1) : typeof node === "object" && node !== null && node.$$typeof === REACT_LAZY_TYPE && (node._payload.status === "fulfilled" ? isValidElement(node._payload.value) && node._payload.value._store && (node._payload.value._store.validated = 1) : node._store && (node._store.validated = 1));
199
+ }
200
+ function isValidElement(object) {
201
+ return typeof object === "object" && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;
202
+ }
203
+ var REACT_ELEMENT_TYPE = Symbol.for("react.transitional.element"), REACT_PORTAL_TYPE = Symbol.for("react.portal"), REACT_FRAGMENT_TYPE = Symbol.for("react.fragment"), REACT_STRICT_MODE_TYPE = Symbol.for("react.strict_mode"), REACT_PROFILER_TYPE = Symbol.for("react.profiler"), REACT_CONSUMER_TYPE = Symbol.for("react.consumer"), REACT_CONTEXT_TYPE = Symbol.for("react.context"), REACT_FORWARD_REF_TYPE = Symbol.for("react.forward_ref"), REACT_SUSPENSE_TYPE = Symbol.for("react.suspense"), REACT_SUSPENSE_LIST_TYPE = Symbol.for("react.suspense_list"), REACT_MEMO_TYPE = Symbol.for("react.memo"), REACT_LAZY_TYPE = Symbol.for("react.lazy"), REACT_ACTIVITY_TYPE = Symbol.for("react.activity"), REACT_CLIENT_REFERENCE = Symbol.for("react.client.reference"), ReactSharedInternals = React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, hasOwnProperty = Object.prototype.hasOwnProperty, isArrayImpl = Array.isArray, createTask = console.createTask ? console.createTask : function() {
204
+ return null;
205
+ };
206
+ React = {
207
+ react_stack_bottom_frame: function(callStackForError) {
208
+ return callStackForError();
209
+ }
210
+ };
211
+ var specialPropKeyWarningShown;
212
+ var didWarnAboutElementRef = {};
213
+ var unknownOwnerDebugStack = React.react_stack_bottom_frame.bind(React, UnknownOwner)();
214
+ var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));
215
+ var didWarnAboutKeySpread = {};
216
+ exports.Fragment = REACT_FRAGMENT_TYPE;
217
+ exports.jsxDEV = function(type, config, maybeKey, isStaticChildren) {
218
+ var trackActualOwner = 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;
219
+ return jsxDEVImpl(type, config, maybeKey, isStaticChildren, trackActualOwner ? Error("react-stack-top-frame") : unknownOwnerDebugStack, trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask);
220
+ };
221
+ })();
222
+ });
223
+
224
+ // node_modules/react/jsx-dev-runtime.js
225
+ var require_jsx_dev_runtime = __commonJS((exports, module) => {
226
+ var react_jsx_dev_runtime_development = __toESM(require_react_jsx_dev_runtime_development());
227
+ if (false) {} else {
228
+ module.exports = react_jsx_dev_runtime_development;
229
+ }
230
+ });
231
+
232
+ // src/platform/browser.ts
233
+ import { spawn } from "node:child_process";
234
+ function validateUrl(url) {
235
+ try {
236
+ const parsedUrl = new URL(url);
237
+ if (parsedUrl.protocol !== "http:" && parsedUrl.protocol !== "https:") {
238
+ throw new Error("Invalid protocol. Only http and https are allowed.");
239
+ }
240
+ return parsedUrl.toString();
241
+ } catch (error) {
242
+ throw new Error(`Invalid URL: ${error instanceof Error ? error.message : String(error)}`);
243
+ }
244
+ }
245
+ function openUrl(url) {
246
+ const validatedUrl = validateUrl(url);
247
+ if (process.platform === "win32") {
248
+ spawn("cmd", ["/c", "start", '""', `"${validatedUrl}"`], {
249
+ detached: true,
250
+ stdio: "ignore",
251
+ shell: false
252
+ }).unref();
253
+ } else {
254
+ const cmd = process.platform === "darwin" ? "open" : "xdg-open";
255
+ spawn(cmd, [validatedUrl], {
256
+ detached: true,
257
+ stdio: "ignore"
258
+ }).unref();
259
+ }
260
+ }
261
+
262
+ export { openUrl, require_jsx_dev_runtime };
263
+
264
+ //# debugId=2659200B7D2D7C6E64756E2164756E21
@@ -0,0 +1,12 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../node_modules/react/cjs/react-jsx-dev-runtime.development.js", "../node_modules/react/jsx-dev-runtime.js", "../src/platform/browser.ts"],
4
+ "sourcesContent": [
5
+ "/**\n * @license React\n * react-jsx-dev-runtime.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function getComponentNameFromType(type) {\n if (null == type) return null;\n if (\"function\" === typeof type)\n return type.$$typeof === REACT_CLIENT_REFERENCE\n ? null\n : type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n case REACT_ACTIVITY_TYPE:\n return \"Activity\";\n }\n if (\"object\" === typeof type)\n switch (\n (\"number\" === typeof type.tag &&\n console.error(\n \"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"\n ),\n type.$$typeof)\n ) {\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_CONTEXT_TYPE:\n return type.displayName || \"Context\";\n case REACT_CONSUMER_TYPE:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n type = type.displayName;\n type ||\n ((type = innerType.displayName || innerType.name || \"\"),\n (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n return type;\n case REACT_MEMO_TYPE:\n return (\n (innerType = type.displayName || null),\n null !== innerType\n ? innerType\n : getComponentNameFromType(type.type) || \"Memo\"\n );\n case REACT_LAZY_TYPE:\n innerType = type._payload;\n type = type._init;\n try {\n return getComponentNameFromType(type(innerType));\n } catch (x) {}\n }\n return null;\n }\n function testStringCoercion(value) {\n return \"\" + value;\n }\n function checkKeyStringCoercion(value) {\n try {\n testStringCoercion(value);\n var JSCompiler_inline_result = !1;\n } catch (e) {\n JSCompiler_inline_result = !0;\n }\n if (JSCompiler_inline_result) {\n JSCompiler_inline_result = console;\n var JSCompiler_temp_const = JSCompiler_inline_result.error;\n var JSCompiler_inline_result$jscomp$0 =\n (\"function\" === typeof Symbol &&\n Symbol.toStringTag &&\n value[Symbol.toStringTag]) ||\n value.constructor.name ||\n \"Object\";\n JSCompiler_temp_const.call(\n JSCompiler_inline_result,\n \"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.\",\n JSCompiler_inline_result$jscomp$0\n );\n return testStringCoercion(value);\n }\n }\n function getTaskName(type) {\n if (type === REACT_FRAGMENT_TYPE) return \"<>\";\n if (\n \"object\" === typeof type &&\n null !== type &&\n type.$$typeof === REACT_LAZY_TYPE\n )\n return \"<...>\";\n try {\n var name = getComponentNameFromType(type);\n return name ? \"<\" + name + \">\" : \"<...>\";\n } catch (x) {\n return \"<...>\";\n }\n }\n function getOwner() {\n var dispatcher = ReactSharedInternals.A;\n return null === dispatcher ? null : dispatcher.getOwner();\n }\n function UnknownOwner() {\n return Error(\"react-stack-top-frame\");\n }\n function hasValidKey(config) {\n if (hasOwnProperty.call(config, \"key\")) {\n var getter = Object.getOwnPropertyDescriptor(config, \"key\").get;\n if (getter && getter.isReactWarning) return !1;\n }\n return void 0 !== config.key;\n }\n function defineKeyPropWarningGetter(props, displayName) {\n function warnAboutAccessingKey() {\n specialPropKeyWarningShown ||\n ((specialPropKeyWarningShown = !0),\n console.error(\n \"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)\",\n displayName\n ));\n }\n warnAboutAccessingKey.isReactWarning = !0;\n Object.defineProperty(props, \"key\", {\n get: warnAboutAccessingKey,\n configurable: !0\n });\n }\n function elementRefGetterWithDeprecationWarning() {\n var componentName = getComponentNameFromType(this.type);\n didWarnAboutElementRef[componentName] ||\n ((didWarnAboutElementRef[componentName] = !0),\n console.error(\n \"Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.\"\n ));\n componentName = this.props.ref;\n return void 0 !== componentName ? componentName : null;\n }\n function ReactElement(type, key, props, owner, debugStack, debugTask) {\n var refProp = props.ref;\n type = {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n props: props,\n _owner: owner\n };\n null !== (void 0 !== refProp ? refProp : null)\n ? Object.defineProperty(type, \"ref\", {\n enumerable: !1,\n get: elementRefGetterWithDeprecationWarning\n })\n : Object.defineProperty(type, \"ref\", { enumerable: !1, value: null });\n type._store = {};\n Object.defineProperty(type._store, \"validated\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: 0\n });\n Object.defineProperty(type, \"_debugInfo\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: null\n });\n Object.defineProperty(type, \"_debugStack\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugStack\n });\n Object.defineProperty(type, \"_debugTask\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugTask\n });\n Object.freeze && (Object.freeze(type.props), Object.freeze(type));\n return type;\n }\n function jsxDEVImpl(\n type,\n config,\n maybeKey,\n isStaticChildren,\n debugStack,\n debugTask\n ) {\n var children = config.children;\n if (void 0 !== children)\n if (isStaticChildren)\n if (isArrayImpl(children)) {\n for (\n isStaticChildren = 0;\n isStaticChildren < children.length;\n isStaticChildren++\n )\n validateChildKeys(children[isStaticChildren]);\n Object.freeze && Object.freeze(children);\n } else\n console.error(\n \"React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.\"\n );\n else validateChildKeys(children);\n if (hasOwnProperty.call(config, \"key\")) {\n children = getComponentNameFromType(type);\n var keys = Object.keys(config).filter(function (k) {\n return \"key\" !== k;\n });\n isStaticChildren =\n 0 < keys.length\n ? \"{key: someKey, \" + keys.join(\": ..., \") + \": ...}\"\n : \"{key: someKey}\";\n didWarnAboutKeySpread[children + isStaticChildren] ||\n ((keys =\n 0 < keys.length ? \"{\" + keys.join(\": ..., \") + \": ...}\" : \"{}\"),\n console.error(\n 'A props object containing a \"key\" prop is being spread into JSX:\\n let props = %s;\\n <%s {...props} />\\nReact keys must be passed directly to JSX without using spread:\\n let props = %s;\\n <%s key={someKey} {...props} />',\n isStaticChildren,\n children,\n keys,\n children\n ),\n (didWarnAboutKeySpread[children + isStaticChildren] = !0));\n }\n children = null;\n void 0 !== maybeKey &&\n (checkKeyStringCoercion(maybeKey), (children = \"\" + maybeKey));\n hasValidKey(config) &&\n (checkKeyStringCoercion(config.key), (children = \"\" + config.key));\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n children &&\n defineKeyPropWarningGetter(\n maybeKey,\n \"function\" === typeof type\n ? type.displayName || type.name || \"Unknown\"\n : type\n );\n return ReactElement(\n type,\n children,\n maybeKey,\n getOwner(),\n debugStack,\n debugTask\n );\n }\n function validateChildKeys(node) {\n isValidElement(node)\n ? node._store && (node._store.validated = 1)\n : \"object\" === typeof node &&\n null !== node &&\n node.$$typeof === REACT_LAZY_TYPE &&\n (\"fulfilled\" === node._payload.status\n ? isValidElement(node._payload.value) &&\n node._payload.value._store &&\n (node._payload.value._store.validated = 1)\n : node._store && (node._store.validated = 1));\n }\n function isValidElement(object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n }\n var React = require(\"react\"),\n REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\"),\n ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n hasOwnProperty = Object.prototype.hasOwnProperty,\n isArrayImpl = Array.isArray,\n createTask = console.createTask\n ? console.createTask\n : function () {\n return null;\n };\n React = {\n react_stack_bottom_frame: function (callStackForError) {\n return callStackForError();\n }\n };\n var specialPropKeyWarningShown;\n var didWarnAboutElementRef = {};\n var unknownOwnerDebugStack = React.react_stack_bottom_frame.bind(\n React,\n UnknownOwner\n )();\n var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));\n var didWarnAboutKeySpread = {};\n exports.Fragment = REACT_FRAGMENT_TYPE;\n exports.jsxDEV = function (type, config, maybeKey, isStaticChildren) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n isStaticChildren,\n trackActualOwner\n ? Error(\"react-stack-top-frame\")\n : unknownOwnerDebugStack,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n })();\n",
6
+ "'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-dev-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-jsx-dev-runtime.development.js');\n}\n",
7
+ "import { spawn } from 'node:child_process';\n\n/**\n * Validates a URL to ensure it uses an allowed protocol (http or https).\n */\nexport function validateUrl(url: string): string {\n try {\n const parsedUrl = new URL(url);\n if (parsedUrl.protocol !== 'http:' && parsedUrl.protocol !== 'https:') {\n throw new Error('Invalid protocol. Only http and https are allowed.');\n }\n return parsedUrl.toString();\n } catch (error) {\n throw new Error(`Invalid URL: ${error instanceof Error ? error.message : String(error)}`);\n }\n}\n\n/**\n * Opens a URL in the system's default browser.\n */\nexport function openUrl(url: string): void {\n const validatedUrl = validateUrl(url);\n\n if (process.platform === 'win32') {\n // On Windows, 'start' is a shell builtin. We use 'cmd /c' to invoke it.\n // To prevent ampersand (&) injection, we pass the URL as a single quoted argument.\n // Node's spawn with shell: false (default) will handle basic quoting,\n // but 'cmd /c start' has complex parsing rules.\n // Using '\"\"' as the first argument to 'start' ensures the URL isn't interpreted as a window title.\n // We wrap the URL in double quotes to prevent shell characters like '&' from being interpreted.\n // Since validateUrl ensures no double quotes are in the string, this is safe.\n spawn('cmd', ['/c', 'start', '\"\"', `\"${validatedUrl}\"`], {\n detached: true,\n stdio: 'ignore',\n shell: false,\n }).unref();\n } else {\n const cmd = process.platform === 'darwin' ? 'open' : 'xdg-open';\n spawn(cmd, [validatedUrl], {\n detached: true,\n stdio: 'ignore',\n }).unref();\n }\n}\n"
8
+ ],
9
+ "mappings": "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",
10
+ "debugId": "2659200B7D2D7C6E64756E2164756E21",
11
+ "names": []
12
+ }
@@ -0,0 +1,66 @@
1
+ import {
2
+ StitchViteServer
3
+ } from "./chunk-gzk8pt16.js";
4
+ import"./chunk-7vdj1qwb.js";
5
+ import {
6
+ downloadText
7
+ } from "./chunk-fkzq5m59.js";
8
+ import {
9
+ pLimit
10
+ } from "./chunk-a5xra9jn.js";
11
+ import"./chunk-9wyra8hs.js";
12
+
13
+ // src/commands/serve/json-server/handler.ts
14
+ class JsonServerHandler {
15
+ client;
16
+ downloadHtml;
17
+ constructor(client, downloadHtml = downloadText) {
18
+ this.client = client;
19
+ this.downloadHtml = downloadHtml;
20
+ }
21
+ async execute(input) {
22
+ let sdkScreens;
23
+ try {
24
+ const project = this.client.project(input.projectId);
25
+ sdkScreens = await project.screens();
26
+ } catch (e) {
27
+ return {
28
+ success: false,
29
+ error: { code: "SCREENS_FETCH_FAILED", message: e.message, recoverable: false }
30
+ };
31
+ }
32
+ const server = new StitchViteServer;
33
+ let baseUrl;
34
+ try {
35
+ baseUrl = await server.start(0);
36
+ } catch (e) {
37
+ return {
38
+ success: false,
39
+ error: { code: "SERVER_START_FAILED", message: e.message, recoverable: false }
40
+ };
41
+ }
42
+ const limit = pLimit(3);
43
+ const screens = [];
44
+ await Promise.all(sdkScreens.map((s) => limit(async () => {
45
+ try {
46
+ const codeUrl = await s.getHtml();
47
+ if (codeUrl) {
48
+ const html = await this.downloadHtml(codeUrl);
49
+ server.mount(`/screens/${s.screenId}`, html);
50
+ }
51
+ screens.push({
52
+ screenId: s.screenId,
53
+ title: s.title ?? s.screenId,
54
+ url: `${baseUrl}/screens/${s.screenId}`
55
+ });
56
+ } catch {}
57
+ })));
58
+ screens.sort((a, b) => a.title.localeCompare(b.title));
59
+ return { success: true, url: baseUrl, screens };
60
+ }
61
+ }
62
+ export {
63
+ JsonServerHandler
64
+ };
65
+
66
+ //# debugId=685E77DF481CF8C964756E2164756E21
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/commands/serve/json-server/handler.ts"],
4
+ "sourcesContent": [
5
+ "import type { Stitch } from '@google/stitch-sdk';\nimport pLimit from 'p-limit';\nimport { StitchViteServer } from '../../../lib/server/vite/StitchViteServer.js';\nimport { downloadText } from '../../../ui/copy-behaviors/clipboard.js';\nimport type { JsonServerSpec, JsonServerInput, JsonServerResult } from './spec.js';\n\nexport class JsonServerHandler implements JsonServerSpec {\n constructor(\n private readonly client: Stitch,\n private readonly downloadHtml: (url: string) => Promise<string> = downloadText,\n ) {}\n\n async execute(input: JsonServerInput): Promise<JsonServerResult> {\n let sdkScreens: any[];\n\n try {\n const project = this.client.project(input.projectId);\n sdkScreens = await project.screens();\n } catch (e: any) {\n return {\n success: false,\n error: { code: 'SCREENS_FETCH_FAILED', message: e.message, recoverable: false },\n };\n }\n\n const server = new StitchViteServer();\n let baseUrl: string;\n\n try {\n baseUrl = await server.start(0);\n } catch (e: any) {\n return {\n success: false,\n error: { code: 'SERVER_START_FAILED', message: e.message, recoverable: false },\n };\n }\n\n // Mount screens concurrently\n const limit = pLimit(3);\n const screens: Array<{ screenId: string; title: string; url: string }> = [];\n\n await Promise.all(\n sdkScreens.map((s: any) => limit(async () => {\n try {\n const codeUrl = await s.getHtml();\n if (codeUrl) {\n const html = await this.downloadHtml(codeUrl);\n server.mount(`/screens/${s.screenId}`, html);\n }\n screens.push({\n screenId: s.screenId,\n title: s.title ?? s.screenId,\n url: `${baseUrl}/screens/${s.screenId}`,\n });\n } catch {\n // Skip screens that fail to load\n }\n }))\n );\n\n screens.sort((a, b) => a.title.localeCompare(b.title));\n\n return { success: true, url: baseUrl, screens };\n }\n}\n"
6
+ ],
7
+ "mappings": ";;;;;;;;;;;;;AAMO,MAAM,kBAA4C;AAAA,EAEpC;AAAA,EACA;AAAA,EAFnB,WAAW,CACQ,QACA,eAAiD,cAClE;AAAA,IAFiB;AAAA,IACA;AAAA;AAAA,OAGb,QAAO,CAAC,OAAmD;AAAA,IAC/D,IAAI;AAAA,IAEJ,IAAI;AAAA,MACF,MAAM,UAAU,KAAK,OAAO,QAAQ,MAAM,SAAS;AAAA,MACnD,aAAa,MAAM,QAAQ,QAAQ;AAAA,MACnC,OAAO,GAAQ;AAAA,MACf,OAAO;AAAA,QACL,SAAS;AAAA,QACT,OAAO,EAAE,MAAM,wBAAwB,SAAS,EAAE,SAAS,aAAa,MAAM;AAAA,MAChF;AAAA;AAAA,IAGF,MAAM,SAAS,IAAI;AAAA,IACnB,IAAI;AAAA,IAEJ,IAAI;AAAA,MACF,UAAU,MAAM,OAAO,MAAM,CAAC;AAAA,MAC9B,OAAO,GAAQ;AAAA,MACf,OAAO;AAAA,QACL,SAAS;AAAA,QACT,OAAO,EAAE,MAAM,uBAAuB,SAAS,EAAE,SAAS,aAAa,MAAM;AAAA,MAC/E;AAAA;AAAA,IAIF,MAAM,QAAQ,OAAO,CAAC;AAAA,IACtB,MAAM,UAAmE,CAAC;AAAA,IAE1E,MAAM,QAAQ,IACZ,WAAW,IAAI,CAAC,MAAW,MAAM,YAAY;AAAA,MAC3C,IAAI;AAAA,QACF,MAAM,UAAU,MAAM,EAAE,QAAQ;AAAA,QAChC,IAAI,SAAS;AAAA,UACX,MAAM,OAAO,MAAM,KAAK,aAAa,OAAO;AAAA,UAC5C,OAAO,MAAM,YAAY,EAAE,YAAY,IAAI;AAAA,QAC7C;AAAA,QACA,QAAQ,KAAK;AAAA,UACX,UAAU,EAAE;AAAA,UACZ,OAAO,EAAE,SAAS,EAAE;AAAA,UACpB,KAAK,GAAG,mBAAmB,EAAE;AAAA,QAC/B,CAAC;AAAA,QACD,MAAM;AAAA,KAGT,CAAC,CACJ;AAAA,IAEA,QAAQ,KAAK,CAAC,GAAG,MAAM,EAAE,MAAM,cAAc,EAAE,KAAK,CAAC;AAAA,IAErD,OAAO,EAAE,SAAS,MAAM,KAAK,SAAS,QAAQ;AAAA;AAElD;",
8
+ "debugId": "685E77DF481CF8C964756E2164756E21",
9
+ "names": []
10
+ }
@@ -0,0 +1,246 @@
1
+ import {
2
+ ConsoleUI,
3
+ GcloudHandler,
4
+ execCommand,
5
+ getGcloudConfigPath
6
+ } from "./chunk-7zyv8g2t.js";
7
+ import {
8
+ runSteps
9
+ } from "./chunk-f2hq6bfv.js";
10
+ import {
11
+ icons,
12
+ theme
13
+ } from "./chunk-kbtqrkwh.js";
14
+ import"./chunk-3sfn889r.js";
15
+ import"./chunk-c6ge431q.js";
16
+ import"./chunk-9wyra8hs.js";
17
+
18
+ // src/commands/logout/steps/PrepareStep.ts
19
+ class PrepareStep {
20
+ id = "prepare";
21
+ name = "Preparation";
22
+ async shouldRun(context) {
23
+ return true;
24
+ }
25
+ async run(context) {
26
+ const result = await context.gcloudService.ensureInstalled({
27
+ minVersion: "400.0.0",
28
+ forceLocal: false
29
+ });
30
+ if (!result.success) {
31
+ return {
32
+ success: false,
33
+ error: new Error("Google Cloud CLI not found"),
34
+ errorCode: "GCLOUD_NOT_FOUND",
35
+ shouldExit: true
36
+ };
37
+ }
38
+ context.gcloudPath = result.data.path;
39
+ if (!context.input.force) {
40
+ const shouldLogout = await context.ui.promptConfirm("Are you sure you want to log out? This will revoke all credentials.", false);
41
+ if (!shouldLogout) {
42
+ context.ui.log(`
43
+ Logout cancelled.
44
+ `);
45
+ return { success: true, shouldExit: true, detail: "Cancelled" };
46
+ }
47
+ }
48
+ return { success: true };
49
+ }
50
+ }
51
+
52
+ // src/commands/logout/steps/RevokeUserStep.ts
53
+ class RevokeUserStep {
54
+ id = "revoke-user";
55
+ name = "Revoke user authentication";
56
+ async shouldRun(context) {
57
+ if (!context.gcloudPath) {
58
+ const result = await context.gcloudService.ensureInstalled({ minVersion: "400.0.0", forceLocal: false });
59
+ if (result.success)
60
+ context.gcloudPath = result.data.path;
61
+ else
62
+ return false;
63
+ }
64
+ return true;
65
+ }
66
+ async run(context) {
67
+ const activeAccount = await context.gcloudService.getActiveAccount();
68
+ if (activeAccount) {
69
+ context.ui.log(theme.gray("Revoking user authentication..."));
70
+ const userResult = await execCommand([context.gcloudPath, "auth", "revoke", "--all"], { env: this.getEnvironment() });
71
+ if (userResult.success || userResult.stderr?.includes("No credentialed accounts")) {
72
+ context.ui.log(theme.green(`${icons.success} User authentication revoked`));
73
+ context.userRevoked = true;
74
+ } else {
75
+ context.ui.log(theme.yellow(`${icons.warning} Failed to revoke user authentication`));
76
+ }
77
+ } else {
78
+ context.ui.log(theme.gray("No active user authentication found"));
79
+ context.userRevoked = true;
80
+ }
81
+ return { success: true };
82
+ }
83
+ getEnvironment() {
84
+ const configPath = getGcloudConfigPath();
85
+ const env = { ...process.env };
86
+ env.CLOUDSDK_CONFIG = configPath;
87
+ env.CLOUDSDK_CORE_DISABLE_PROMPTS = "1";
88
+ return env;
89
+ }
90
+ }
91
+
92
+ // src/commands/logout/steps/RevokeAdcStep.ts
93
+ class RevokeAdcStep {
94
+ id = "revoke-adc";
95
+ name = "Revoke Application Default Credentials";
96
+ async shouldRun(context) {
97
+ if (!context.gcloudPath) {
98
+ const result = await context.gcloudService.ensureInstalled({ minVersion: "400.0.0", forceLocal: false });
99
+ if (result.success)
100
+ context.gcloudPath = result.data.path;
101
+ else
102
+ return false;
103
+ }
104
+ return true;
105
+ }
106
+ async run(context) {
107
+ const hasADC = await context.gcloudService.hasADC();
108
+ if (hasADC) {
109
+ context.ui.log(theme.gray("Revoking Application Default Credentials..."));
110
+ const adcResult = await execCommand([context.gcloudPath, "auth", "application-default", "revoke"], { env: this.getEnvironment() });
111
+ if (adcResult.success || adcResult.stderr?.includes("No credentials")) {
112
+ context.ui.log(theme.green(`${icons.success} Application Default Credentials revoked`));
113
+ context.adcRevoked = true;
114
+ } else {
115
+ context.ui.log(theme.yellow(`${icons.warning} Failed to revoke Application Default Credentials`));
116
+ }
117
+ } else {
118
+ context.ui.log(theme.gray("No Application Default Credentials found"));
119
+ context.adcRevoked = true;
120
+ }
121
+ return { success: true };
122
+ }
123
+ getEnvironment() {
124
+ const configPath = getGcloudConfigPath();
125
+ const env = { ...process.env };
126
+ env.CLOUDSDK_CONFIG = configPath;
127
+ env.CLOUDSDK_CORE_DISABLE_PROMPTS = "1";
128
+ return env;
129
+ }
130
+ }
131
+
132
+ // src/commands/logout/steps/ClearConfigStep.ts
133
+ import fs from "node:fs";
134
+
135
+ class ClearConfigStep {
136
+ id = "clear-config";
137
+ name = "Clear configuration directory";
138
+ async shouldRun(context) {
139
+ return context.input.clearConfig;
140
+ }
141
+ async run(context) {
142
+ context.ui.log(theme.gray("Clearing gcloud configuration directory..."));
143
+ const configPath = getGcloudConfigPath();
144
+ try {
145
+ if (fs.existsSync(configPath)) {
146
+ fs.rmSync(configPath, { recursive: true, force: true });
147
+ context.ui.log(theme.green(`${icons.success} Configuration directory cleared`));
148
+ context.configCleared = true;
149
+ } else {
150
+ context.ui.log(theme.gray("Configuration directory does not exist"));
151
+ context.configCleared = true;
152
+ }
153
+ } catch (error) {
154
+ context.ui.log(theme.yellow(`${icons.warning} Failed to clear configuration directory`));
155
+ context.ui.log(theme.gray(` ${error instanceof Error ? error.message : String(error)}`));
156
+ }
157
+ return { success: true };
158
+ }
159
+ }
160
+
161
+ // src/commands/logout/handler.ts
162
+ class LogoutHandler {
163
+ gcloudService;
164
+ steps;
165
+ constructor(gcloudService = new GcloudHandler) {
166
+ this.gcloudService = gcloudService;
167
+ this.steps = [
168
+ new PrepareStep,
169
+ new RevokeUserStep,
170
+ new RevokeAdcStep,
171
+ new ClearConfigStep
172
+ ];
173
+ }
174
+ async execute(input) {
175
+ const context = {
176
+ input,
177
+ ui: new ConsoleUI,
178
+ gcloudService: this.gcloudService,
179
+ userRevoked: false,
180
+ adcRevoked: false,
181
+ configCleared: false
182
+ };
183
+ console.log(`
184
+ ${theme.blue("Logout from Google Cloud")}
185
+ `);
186
+ try {
187
+ const { stoppedAt } = await runSteps(this.steps, context, {
188
+ onAfterStep: (_step, result) => {
189
+ if (!result.success && result.errorCode === "GCLOUD_NOT_FOUND")
190
+ return true;
191
+ if (result.shouldExit)
192
+ return true;
193
+ return false;
194
+ }
195
+ });
196
+ if (stoppedAt) {
197
+ if (stoppedAt.result.errorCode === "GCLOUD_NOT_FOUND") {
198
+ return {
199
+ success: false,
200
+ error: {
201
+ code: "GCLOUD_NOT_FOUND",
202
+ message: stoppedAt.result.error?.message || "Gcloud not found",
203
+ recoverable: true
204
+ }
205
+ };
206
+ }
207
+ return {
208
+ success: true,
209
+ data: {
210
+ userRevoked: context.userRevoked,
211
+ adcRevoked: context.adcRevoked,
212
+ configCleared: context.configCleared
213
+ }
214
+ };
215
+ }
216
+ console.log(`
217
+ ${theme.green("Successfully logged out!")}
218
+ `);
219
+ console.log(theme.gray("To log back in, run:"));
220
+ console.log(theme.cyan(` stitch-mcp init
221
+ `));
222
+ return {
223
+ success: true,
224
+ data: {
225
+ userRevoked: context.userRevoked,
226
+ adcRevoked: context.adcRevoked,
227
+ configCleared: context.configCleared
228
+ }
229
+ };
230
+ } catch (error) {
231
+ return {
232
+ success: false,
233
+ error: {
234
+ code: "UNKNOWN_ERROR",
235
+ message: error instanceof Error ? error.message : String(error),
236
+ recoverable: false
237
+ }
238
+ };
239
+ }
240
+ }
241
+ }
242
+ export {
243
+ LogoutHandler
244
+ };
245
+
246
+ //# debugId=32B390669514CAC064756E2164756E21