@octonodes/ui-extensions 0.2.16 → 0.2.38

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 (113) hide show
  1. package/README.md +77 -3
  2. package/dist/app/OctonodeAppProvider/AppAccessScreen/AppAccessScreen.d.ts +3 -0
  3. package/dist/app/OctonodeAppProvider/AppAccessScreen/AppAccessScreen.d.ts.map +1 -0
  4. package/dist/app/OctonodeAppProvider/AppAccessScreen/AppAccessScreen.js +17 -0
  5. package/dist/app/OctonodeAppProvider/AppAccessScreen/AppAccessScreen.js.map +1 -0
  6. package/dist/app/OctonodeAppProvider/AppAccessScreen/AppAccessScreen.types.d.ts +4 -0
  7. package/dist/app/OctonodeAppProvider/AppAccessScreen/AppAccessScreen.types.d.ts.map +1 -0
  8. package/dist/app/OctonodeAppProvider/AppAccessScreen/AppAccessScreen.types.js +2 -0
  9. package/dist/app/OctonodeAppProvider/AppAccessScreen/AppAccessScreen.types.js.map +1 -0
  10. package/dist/app/OctonodeAppProvider/AppAccessScreen/constants.d.ts +3 -0
  11. package/dist/app/OctonodeAppProvider/AppAccessScreen/constants.d.ts.map +1 -0
  12. package/dist/app/OctonodeAppProvider/AppAccessScreen/constants.js +15 -0
  13. package/dist/app/OctonodeAppProvider/AppAccessScreen/constants.js.map +1 -0
  14. package/dist/app/OctonodeAppProvider/AppAccessScreen/index.d.ts +3 -0
  15. package/dist/app/OctonodeAppProvider/AppAccessScreen/index.d.ts.map +1 -0
  16. package/dist/app/OctonodeAppProvider/AppAccessScreen/index.js +3 -0
  17. package/dist/app/OctonodeAppProvider/AppAccessScreen/index.js.map +1 -0
  18. package/dist/app/OctonodeAppProvider/OctonodeAppProvider.d.ts +4 -0
  19. package/dist/app/OctonodeAppProvider/OctonodeAppProvider.d.ts.map +1 -0
  20. package/dist/app/OctonodeAppProvider/OctonodeAppProvider.js +20 -0
  21. package/dist/app/OctonodeAppProvider/OctonodeAppProvider.js.map +1 -0
  22. package/dist/app/OctonodeAppProvider/OctonodeAppProvider.types.d.ts +12 -0
  23. package/dist/app/OctonodeAppProvider/OctonodeAppProvider.types.d.ts.map +1 -0
  24. package/dist/app/OctonodeAppProvider/OctonodeAppProvider.types.js +2 -0
  25. package/dist/app/OctonodeAppProvider/OctonodeAppProvider.types.js.map +1 -0
  26. package/dist/app/OctonodeAppProvider/constants.d.ts +3 -0
  27. package/dist/app/OctonodeAppProvider/constants.d.ts.map +1 -0
  28. package/dist/app/OctonodeAppProvider/constants.js +2 -0
  29. package/dist/app/OctonodeAppProvider/constants.js.map +1 -0
  30. package/dist/app/OctonodeAppProvider/context.d.ts +3 -0
  31. package/dist/app/OctonodeAppProvider/context.d.ts.map +1 -0
  32. package/dist/app/OctonodeAppProvider/context.js +4 -0
  33. package/dist/app/OctonodeAppProvider/context.js.map +1 -0
  34. package/dist/app/OctonodeAppProvider/index.d.ts +4 -0
  35. package/dist/app/OctonodeAppProvider/index.d.ts.map +1 -0
  36. package/dist/app/OctonodeAppProvider/index.js +4 -0
  37. package/dist/app/OctonodeAppProvider/index.js.map +1 -0
  38. package/dist/app/hosted.d.ts.map +1 -1
  39. package/dist/app/hosted.js +19 -2
  40. package/dist/app/hosted.js.map +1 -1
  41. package/dist/app/index.d.ts +4 -4
  42. package/dist/app/index.d.ts.map +1 -1
  43. package/dist/app/index.js +7 -6
  44. package/dist/app/index.js.map +1 -1
  45. package/dist/app/project.d.ts +2 -3
  46. package/dist/app/project.d.ts.map +1 -1
  47. package/dist/app/project.js.map +1 -1
  48. package/dist/app/server.d.ts.map +1 -1
  49. package/dist/app/server.js.map +1 -1
  50. package/dist/app/types.d.ts +10 -4
  51. package/dist/app/types.d.ts.map +1 -1
  52. package/dist/constants.d.ts +9 -0
  53. package/dist/constants.d.ts.map +1 -0
  54. package/dist/constants.js +53 -0
  55. package/dist/constants.js.map +1 -0
  56. package/dist/contributions.d.ts +5 -0
  57. package/dist/contributions.d.ts.map +1 -0
  58. package/dist/contributions.js +71 -0
  59. package/dist/contributions.js.map +1 -0
  60. package/dist/contributions.types.d.ts +93 -0
  61. package/dist/contributions.types.d.ts.map +1 -0
  62. package/dist/contributions.types.js +2 -0
  63. package/dist/contributions.types.js.map +1 -0
  64. package/dist/hooks/general/useExtension.d.ts +3 -0
  65. package/dist/hooks/general/useExtension.d.ts.map +1 -0
  66. package/dist/hooks/general/useExtension.js +7 -0
  67. package/dist/hooks/general/useExtension.js.map +1 -0
  68. package/dist/hooks/general/useHostedApp.d.ts +9 -0
  69. package/dist/hooks/general/useHostedApp.d.ts.map +1 -0
  70. package/dist/hooks/general/useHostedApp.js +53 -0
  71. package/dist/hooks/general/useHostedApp.js.map +1 -0
  72. package/dist/hooks/general/useOctonodeApp.d.ts +3 -0
  73. package/dist/hooks/general/useOctonodeApp.d.ts.map +1 -0
  74. package/dist/hooks/general/useOctonodeApp.js +10 -0
  75. package/dist/hooks/general/useOctonodeApp.js.map +1 -0
  76. package/dist/hooks/types.d.ts +9 -0
  77. package/dist/hooks/types.d.ts.map +1 -0
  78. package/dist/hooks/types.js +2 -0
  79. package/dist/hooks/types.js.map +1 -0
  80. package/dist/index.d.ts +17 -58
  81. package/dist/index.d.ts.map +1 -1
  82. package/dist/index.js +13 -9
  83. package/dist/index.js.map +1 -1
  84. package/dist/locales/de.json +22 -0
  85. package/dist/locales/en.json +22 -0
  86. package/dist/locales/es.json +22 -0
  87. package/dist/locales/fr.json +22 -0
  88. package/dist/locales/index.d.ts +113 -0
  89. package/dist/locales/index.d.ts.map +1 -0
  90. package/dist/locales/index.js +8 -0
  91. package/dist/locales/index.js.map +1 -0
  92. package/dist/locales/ja.json +22 -0
  93. package/dist/react/index.d.ts +25 -0
  94. package/dist/react/index.d.ts.map +1 -0
  95. package/dist/react/index.js +134 -0
  96. package/dist/react/index.js.map +1 -0
  97. package/dist/react.d.ts +2 -0
  98. package/dist/react.d.ts.map +1 -1
  99. package/dist/react.js +16 -4
  100. package/dist/react.js.map +1 -1
  101. package/dist/targets.d.ts +2 -0
  102. package/dist/targets.d.ts.map +1 -0
  103. package/dist/targets.js +46 -0
  104. package/dist/targets.js.map +1 -0
  105. package/dist/testing.d.ts +2 -2
  106. package/dist/testing.d.ts.map +1 -1
  107. package/dist/testing.js +1 -1
  108. package/dist/testing.js.map +1 -1
  109. package/dist/types.d.ts +87 -0
  110. package/dist/types.d.ts.map +1 -0
  111. package/dist/types.js +2 -0
  112. package/dist/types.js.map +1 -0
  113. package/package.json +10 -3
package/README.md CHANGED
@@ -41,6 +41,59 @@ ui: {
41
41
 
42
42
  The first public target is `node.inspector.inputs`. Undeclared or omitted inputs fall back to the standard inspector form.
43
43
 
44
+ ## Native app contributions (v3)
45
+
46
+ Installed apps can add navbar/navigation/search launchers, panels, Octonode tabs,
47
+ workflow node bodies and context-menu actions, task badges/details, document and
48
+ editor operations, Git/table/execution views, and settings sections. A hosted app
49
+ page or backend is optional. These changes require the SDK and CLI built from the
50
+ accompanying branch; they are not published yet.
51
+
52
+ Views use `defineExtension(target, Component)` and `useExtension(target)` from
53
+ `@octonodes/ui-extensions/react`. Actions use `defineAction(target, handler)` from
54
+ `@octonodes/ui-extensions`. The CLI bundles and hashes each immutable browser entry.
55
+ The generated runtime checks the definition's target and action/view kind at startup,
56
+ then calls `startExtension` or `startAction`.
57
+
58
+ ```tsx
59
+ import { defineExtension, useExtension, Section, Button } from "@octonodes/ui-extensions/react";
60
+ export default defineExtension("shell.panel", function Assistant() {
61
+ const api = useExtension("shell.panel");
62
+ return (
63
+ <Section title="Claude Code">
64
+ <Button onPress={() => void api.ui.openAssistant("Help with this resource.")}>Open assistant</Button>
65
+ </Section>
66
+ );
67
+ });
68
+ ```
69
+
70
+ ```ts
71
+ import { defineAction } from "@octonodes/ui-extensions";
72
+ export default defineAction("node.action", async (api) => {
73
+ if (!api.signal.aborted) await api.ui.openAssistant(`Explain node ${api.context.nodeId}`);
74
+ });
75
+ ```
76
+
77
+ The target context contains resource IDs, revisions, selection ranges, and bounded
78
+ metadata batches, never automatic document/file/task bodies. `ui.openPanel`
79
+ opens an own declared view; `ui.openAssistant` hands off to the existing native
80
+ assistant and its authorized tools. `tabs.list/update/undo` operate on registered
81
+ personal layout groups with revision checks. `edits.propose` opens native review
82
+ for a captured file/document draft; native Save owns persistence. Mutating host
83
+ commands require recent native user interaction. No raw filesystem/process or
84
+ private Studio API access is granted.
85
+
86
+ Node views and task badges return display-only sections named for captured IDs,
87
+ using one sandbox per canvas/task view and at most 100 resources. Other views can
88
+ use host-owned controls. An action has a captured invocation ID and abort signal;
89
+ it completes automatically and has a sixty-second deadline. Legacy node input
90
+ extensions still use protocol v1; native app contributions use protocol v2.
91
+
92
+ The full target catalog, runnable example, permissions, limits, and actual native
93
+ screenshots are in the engine's native extensions guide (`docs/app-extensions/README.md` in the engine checkout).
94
+ When using a local engine checkout, open `docs/app-extensions/README.md` for the
95
+ branch version. The older examples below describe the separate v1/v2 contracts.
96
+
44
97
  ## Extension-only apps
45
98
 
46
99
  Apps can contribute only a workspace block; a page and backend are optional. Use the same
@@ -57,9 +110,9 @@ See `examples/workspace-notice-app` and `docs/plugins.md` in the engine reposito
57
110
 
58
111
  ## Self-hosted apps
59
112
 
60
- This is also the SDK selected for Octonode's developer-authored app extensions. The engine owns its source in `packages/ui-extensions`; `scripts/sync-plugin-sdk.mjs` synchronizes the public package into `octonode-devtools`. Do not create a second app UI SDK.
113
+ This is also the SDK selected for Octonode's developer-authored app extensions. The engine owns its source in `packages/ui-extensions`; `scripts/sync/plugin/sdk.mjs` synchronizes the public package into `octonode-devtools`. Do not create a second app UI SDK.
61
114
 
62
- App targets are `app.page` and `workspace.block`. Register an app in Partner → Apps, publish its HTTPS application URL and extension bundle digests, then install it from Studio → App marketplace. Plugin marketplace remains dedicated to executable node plugins.
115
+ Legacy self-hosted app targets are `app.page` and `workspace.block`. Register an app in Partner → Apps, publish its HTTPS application URL and extension bundle digests, then install it from Studio → App marketplace. Plugin marketplace remains dedicated to executable node plugins.
63
116
 
64
117
  App controls use the same host design system: `NodeForm`, `Section`, `Button`, and `TextField`. `InputField` is only for node inspectors. Bundle your entry as a browser IIFE, including React and this SDK, and call `startExtension`:
65
118
 
@@ -110,6 +163,24 @@ short-lived sessions through an origin-checked, window-bound handshake. Tokens s
110
163
  in memory. `app.fetch("/api/projects")` sends the bearer only to your own backend;
111
164
  that backend must still verify it with `connectAppServer` on every request.
112
165
 
166
+ For React apps, wrap the workspace UI in `OctonodeAppProvider` from
167
+ `@octonodes/ui-extensions/app/react`. It verifies `/api/context` before rendering
168
+ children. Pass every page route in `navigation`, including the overview (`/`), to
169
+ display them in Studio's app sidebar. Studio does not discover routes from your
170
+ hosting provider or browser router. An app can render its own top navbar inside
171
+ the provider; this does not replace sidebar registration. The generated React
172
+ app keeps its navbar off by default; render `<App showNavbar />` to enable it.
173
+ The generated server verifies this route with `connectAppServer`. A direct visit
174
+ without a session shows a translated access landing screen and no workspace UI.
175
+ The provider also shows connecting, expired-session, and verification-error states.
176
+ Customizing this UI does not replace backend session and installation checks.
177
+
178
+ In the Octonode source checkout, preview the screen with
179
+ `yarn workspace @octonode/ui-extensions dev` on port 5185, then open `/dev/` in your browser.
180
+ Use `?state=expired`, `?state=connecting`, or `?state=error` to preview the other states.
181
+ With that preview running, run `node --test packages/ui-extensions/tests/app/access.test.mjs`
182
+ to check mobile reflow, private-content protection, and recovery after a refreshed token.
183
+
113
184
  ```ts
114
185
  import { connectHostedApp } from "@octonodes/ui-extensions/app";
115
186
  const app = connectHostedApp();
@@ -128,7 +199,7 @@ actions and projects for one hour; heartbeats extend only the ten-minute idle
128
199
  session, not the consent. Source edits on the same host retain consent; host or
129
200
  action changes clear it. See the [development guide](https://playbook.octonodes.com/docs/apps/development).
130
201
 
131
- For standalone fallback pages, Octonode opens the registered application URL with `#octonode_session=…`. Read the fragment and immediately remove it using `history.replaceState`; keep the credential in memory. App backends can use `POST /api/apps/runtime/data` for consented project/table/row operations, and `POST /api/apps/runtime/executions` on the cloud gateway for workflow execution. Neither credential works as a general Octonode login. See the engine’s `docs/plugins.md` for request examples.
202
+ The hosted page's HTML and static assets must be loadable before the iframe session handoff. Keep private workspace content behind the provider and private backend routes behind bearer verification. App backends can use `POST /api/apps/runtime/data` for consented project/table/row operations, and `POST /api/apps/runtime/executions` on the cloud gateway for workflow execution. Neither credential works as a general Octonode login. See the engine’s `docs/plugins.md` for request examples.
132
203
 
133
204
  For legacy self-hosted v1 apps, developers host app backends and versioned extension assets themselves. Octonode-managed app hosting is reserved for a future paid service. App release metadata pins extension URLs and SHA-256 digests; publishing metadata does not deploy a backend.
134
205
 
@@ -149,6 +220,9 @@ const run = await project.wf.run("sync-products", { source: "app" });
149
220
 
150
221
  A developer-hosted backend can use the same project API after verifying the browser's app bearer. Configure the API URL and your own registered app ID on the server; never accept either from an incoming request.
151
222
 
223
+ The server helper supports Node 20.19+, 22.12+, or newer (`^20.19.0 || >=22.12.0`).
224
+ Your backend code and dependencies must also support the selected runtime.
225
+
152
226
  ```ts
153
227
  import { connectAppServer } from "@octonodes/ui-extensions/app/server";
154
228
 
@@ -0,0 +1,3 @@
1
+ import type { AppAccessScreenProps } from "./AppAccessScreen.types.js";
2
+ export declare function AppAccessScreen({ status }: AppAccessScreenProps): import("react").JSX.Element;
3
+ //# sourceMappingURL=AppAccessScreen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppAccessScreen.d.ts","sourceRoot":"","sources":["../../../../src/app/OctonodeAppProvider/AppAccessScreen/AppAccessScreen.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAEvE,wBAAgB,eAAe,CAAC,EAAE,MAAM,EAAE,EAAE,oBAAoB,+BA+I/D"}
@@ -0,0 +1,17 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ // Generated from packages/ui-extensions/src/app/OctonodeAppProvider/AppAccessScreen/AppAccessScreen.tsx. Do not edit; run the Octonode SDK sync.
3
+ import { useEffect, useState } from "react";
4
+ import { locales } from "../../../locales/index.js";
5
+ import { ACCESS_SCREEN_CSS, OCTONODE_LOGO } from "./constants.js";
6
+ export function AppAccessScreen({ status }) {
7
+ const [language, setLanguage] = useState("en");
8
+ useEffect(() => {
9
+ const lang = (document.documentElement.lang || navigator.language).split("-")[0];
10
+ if (Object.prototype.hasOwnProperty.call(locales, lang))
11
+ setLanguage(lang);
12
+ }, []);
13
+ const t = locales[language];
14
+ const connecting = status === "connecting";
15
+ return (_jsxs("div", { className: `octo-access octo-access-${status}`, lang: language, children: [_jsx("style", { children: ACCESS_SCREEN_CSS }), _jsxs("header", { className: "octo-access-header", children: [_jsxs("a", { className: "octo-access-brand", href: "https://octonodes.com", target: "_blank", rel: "noopener noreferrer", children: [_jsx("img", { src: OCTONODE_LOGO, alt: "" }), "octonode"] }), _jsxs("a", { className: "octo-access-guide", href: "https://playbook.octonodes.com/docs/apps", target: "_blank", rel: "noopener noreferrer", children: [t.guide, _jsx("span", { "aria-hidden": "true", children: "\u2197" })] })] }), _jsxs("main", { className: "octo-access-main", children: [_jsxs("section", { className: "octo-access-copy", "aria-labelledby": "octo-access-title", children: [_jsxs("p", { className: "octo-access-status", role: status === "expired" || status === "error" ? "alert" : "status", children: [_jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.7", "aria-hidden": "true", children: connecting ? (_jsx("path", { d: "M20 12a8 8 0 1 1-8-8" })) : (_jsxs(_Fragment, { children: [_jsx("rect", { x: "6", y: "10", width: "12", height: "10", rx: "2" }), _jsx("path", { d: "M9 10V7a3 3 0 0 1 6 0v3" })] })) }), t[`${status}Status`]] }), _jsx("h1", { id: "octo-access-title", children: t[`${status}Title`] }), _jsx("p", { className: "octo-access-description", children: t[`${status}Description`] }), !connecting && (_jsxs(_Fragment, { children: [_jsxs("div", { className: "octo-access-actions", children: [_jsxs("a", { className: "octo-access-primary", href: "https://octonodes.com/studio", target: "_blank", rel: "noopener noreferrer", children: [t.open, _jsx("span", { "aria-hidden": "true", children: "\u2197" })] }), _jsx("a", { className: "octo-access-secondary", href: "https://playbook.octonodes.com/docs/apps", target: "_blank", rel: "noopener noreferrer", children: t.about })] }), _jsxs("p", { className: "octo-access-hint", children: [_jsxs("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5", "aria-hidden": "true", children: [_jsx("path", { d: "m12 3 8 3v6c0 5-8 9-8 9s-8-4-8-9V6Z" }), _jsx("path", { d: "m8 12 3 3 5-6" })] }), t.hint] })] }))] }), _jsxs("div", { className: "octo-access-visual", "aria-hidden": "true", children: [_jsx("div", { className: "octo-access-orbit" }), _jsxs("div", { className: "octo-access-workspace", children: [_jsxs("div", { className: "octo-access-window", children: [_jsx("i", {}), _jsx("i", {}), _jsx("i", {}), _jsx("span", { children: "octonode / workspace" }), _jsx("b", {})] }), _jsxs("div", { className: "octo-access-body", children: [_jsxs("div", { className: "octo-access-workspace-title", children: [_jsx("img", { src: OCTONODE_LOGO, alt: "" }), t.workspace] }), _jsx("div", { className: "octo-access-skeleton" }), _jsxs("div", { className: "octo-access-flow", children: [_jsx("div", { className: "octo-access-node", children: _jsxs("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5", children: [_jsx("rect", { x: "3", y: "3", width: "7", height: "7", rx: "2" }), _jsx("rect", { x: "14", y: "3", width: "7", height: "7", rx: "2" }), _jsx("rect", { x: "3", y: "14", width: "7", height: "7", rx: "2" }), _jsx("rect", { x: "14", y: "14", width: "7", height: "7", rx: "2" })] }) }), _jsx("div", { className: "octo-access-wire" }), _jsx("div", { className: "octo-access-node active", children: _jsxs("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5", children: [_jsx("path", { d: "m12 3 8 5v8l-8 5-8-5V8Z" }), _jsx("path", { d: "m4 8 8 5 8-5M12 13v8" })] }) }), _jsx("div", { className: "octo-access-wire" }), _jsx("div", { className: "octo-access-node", children: _jsxs("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5", children: [_jsx("ellipse", { cx: "12", cy: "5", rx: "8", ry: "3" }), _jsx("path", { d: "M4 5v14c0 4 16 4 16 0V5M4 12c0 4 16 4 16 0" })] }) })] }), _jsxs("div", { className: "octo-access-placeholder", children: [_jsx("i", {}), _jsx("i", {})] }), _jsxs("div", { className: "octo-access-placeholder", children: [_jsx("i", {}), _jsx("i", {})] })] })] }), _jsx("div", { className: "octo-access-lock", children: _jsxs("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5", children: [_jsx("rect", { x: "5", y: "10", width: "14", height: "11", rx: "3" }), _jsx("path", { d: "M8 10V7a4 4 0 0 1 8 0v3M12 14v3" })] }) }), _jsx("p", { className: "octo-access-caption", children: t.caption })] })] }), _jsxs("footer", { className: "octo-access-footer", children: [_jsx("p", { children: t.footer }), _jsx("a", { href: "https://playbook.octonodes.com/docs/apps", target: "_blank", rel: "noopener noreferrer", children: t.help })] })] }));
16
+ }
17
+ //# sourceMappingURL=AppAccessScreen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppAccessScreen.js","sourceRoot":"","sources":["../../../../src/app/OctonodeAppProvider/AppAccessScreen/AppAccessScreen.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export type AppAccessScreenProps = {
2
+ status: "standalone" | "expired" | "connecting" | "error";
3
+ };
4
+ //# sourceMappingURL=AppAccessScreen.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppAccessScreen.types.d.ts","sourceRoot":"","sources":["../../../../src/app/OctonodeAppProvider/AppAccessScreen/AppAccessScreen.types.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE,YAAY,GAAG,SAAS,GAAG,YAAY,GAAG,OAAO,CAAC;CAC3D,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=AppAccessScreen.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppAccessScreen.types.js","sourceRoot":"","sources":["../../../../src/app/OctonodeAppProvider/AppAccessScreen/AppAccessScreen.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ export declare const ACCESS_SCREEN_CSS = "\n.octo-access{--octo-ink:#252536;--octo-muted:#636374;--octo-coral:#ff765f;box-sizing:border-box;min-height:100svh;background:#f7f8fc;color:var(--octo-ink);font-family:\"Avenir Next\",Avenir,\"Segoe UI\",sans-serif;font-size:16px;line-height:1.5;padding:0 48px;isolation:isolate}\n.octo-access *{box-sizing:border-box}.octo-access a{color:inherit;text-decoration:none}.octo-access a:focus-visible{outline:3px solid #af3e29;outline-offset:5px}.octo-access a:hover{text-decoration:underline}\n.octo-access-header,.octo-access-footer{max-width:1120px;margin:auto;display:flex;justify-content:space-between;align-items:center;gap:24px}.octo-access-header{height:100px;border-bottom:1px solid #e3e5ee}.octo-access-brand{display:flex;align-items:center;gap:10px;font-size:23px;font-weight:750;letter-spacing:-1px}.octo-access-brand img{width:36px;height:36px}.octo-access a.octo-access-guide{font-size:14px;color:var(--octo-muted);display:flex;align-items:center;gap:8px}\n.octo-access-main{max-width:1120px;min-height:calc(100svh - 185px);margin:auto;display:grid;grid-template-columns:1.05fr 1fr;align-items:center;gap:70px;padding:72px 0}.octo-access-copy{max-width:520px}.octo-access-status{display:inline-flex;align-items:center;gap:8px;margin:0 0 24px;padding:6px 11px;border:1px solid #dedeea;background:#eeeff6;border-radius:6px;font-size:12px;font-weight:600;color:#515164}.octo-access-status svg{width:14px;height:14px}.octo-access h1{margin:0;font-size:clamp(40px,4.3vw,62px);font-weight:650;letter-spacing:-2.8px;line-height:1.09;text-wrap:balance}.octo-access-description{max-width:430px;margin:24px 0 30px;font-size:17px;line-height:1.75;color:var(--octo-muted)}.octo-access-actions{display:flex;align-items:center;gap:23px;flex-wrap:wrap}.octo-access a.octo-access-primary{display:inline-flex;align-items:center;justify-content:center;gap:12px;min-height:50px;padding:13px 21px;border-radius:9px;background:var(--octo-ink);color:#fff;font-size:14px;font-weight:650;box-shadow:0 4px 0 #25253612}.octo-access a.octo-access-primary:hover{background:#404056;text-decoration:none}.octo-access-secondary{font-size:14px;font-weight:600}.octo-access-hint{display:flex;align-items:flex-start;gap:9px;max-width:415px;margin:27px 0 0;color:var(--octo-muted);font-size:12px;line-height:1.65}.octo-access-hint svg{flex:none;width:15px;height:15px;margin-top:2px}\n.octo-access-visual{position:relative;aspect-ratio:1;display:grid;place-items:center}.octo-access-orbit{position:absolute;width:87%;aspect-ratio:1;border:1px solid #dfe2ee;border-radius:50%}.octo-access-orbit::before{content:\"\";position:absolute;inset:42px;border:1px dashed #dfe2ee;border-radius:50%}.octo-access-orbit::after{content:\"\";position:absolute;width:10px;height:10px;border-radius:50%;background:#b2b7cf;top:13%;left:13%;box-shadow:285px 240px 0 #ffb7a8}.octo-access-workspace{position:relative;transform:rotate(-5deg);width:90%;max-width:405px;background:#fff;border:1px solid #dee1ed;border-radius:14px;box-shadow:0 24px 65px #373e6510;overflow:hidden}.octo-access-window{height:39px;border-bottom:1px solid #eceef4;display:flex;align-items:center;gap:5px;padding:0 16px;background:#fafbfe}.octo-access-window i{width:6px;height:6px;border-radius:50%;background:#d3d7e3}.octo-access-window span{margin:auto;color:#5e6578;font-size:10px}.octo-access-window b{width:22px}.octo-access-body{padding:25px 24px 22px}.octo-access-workspace-title{font-size:13px;font-weight:650;display:flex;align-items:center;gap:9px}.octo-access-workspace-title img{width:23px;height:23px;border-radius:6px}.octo-access-skeleton{height:6px;width:42%;margin-top:11px;border-radius:3px;background:#eceef5}.octo-access-flow{display:flex;align-items:center;margin:29px 0}.octo-access-node{width:62px;height:61px;display:grid;place-items:center;background:#f4f5fa;border:1px solid #e1e4ef;border-radius:11px}.octo-access-node svg{width:23px;height:23px;color:#9ca3bc}.octo-access-node.active{background:#fff0eb;border-color:#ffc4b7}.octo-access-node.active svg{color:#bd4832}.octo-access-wire{height:1px;background:#d9ddec;flex:1}.octo-access-placeholder{display:flex;gap:8px;margin-top:12px}.octo-access-placeholder i{height:6px;width:35%;border-radius:3px;background:#eceef5}.octo-access-placeholder i+ i{width:20%}.octo-access-lock{position:absolute;bottom:10%;right:0;width:76px;height:76px;display:grid;place-items:center;border:7px solid #f7f8fc;border-radius:22px;background:#fff0eb;transform:rotate(7deg);box-shadow:0 8px 25px #373e650a}.octo-access-lock svg{width:29px;height:29px;color:#bd4832}.octo-access-caption{position:absolute;bottom:0;margin:0;font-size:12px;color:#5e6578;text-align:center}\n.octo-access-footer{min-height:85px;border-top:1px solid #e3e5ee;color:#5e6578;font-size:12px}.octo-access-footer p{margin:0}.octo-access-footer a{padding:10px 0}.octo-access-connecting .octo-access-status svg{animation:octo-turn 2s linear infinite}@keyframes octo-turn{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.octo-access-connecting .octo-access-status svg{animation:none}}\n@media(max-width:850px){.octo-access{padding:0 28px}.octo-access-main{gap:25px}.octo-access h1{font-size:44px}.octo-access-visual{min-width:0}.octo-access-body{padding:18px}.octo-access-orbit::after{box-shadow:none}}@media(max-width:650px){.octo-access{padding:0 24px}.octo-access-header{height:80px}.octo-access-brand{font-size:21px}.octo-access-main{grid-template-columns:1fr;gap:45px;padding:48px 0 40px}.octo-access-copy{max-width:480px}.octo-access h1{font-size:clamp(38px,8vw,46px);letter-spacing:-2px}.octo-access-description{font-size:16px}.octo-access-visual{width:100%;max-width:390px;margin:auto;aspect-ratio:auto;min-height:340px;padding-bottom:40px}.octo-access-footer{align-items:flex-start;padding:22px 0;min-height:80px;font-size:11px}.octo-access a.octo-access-guide{font-size:12px}.octo-access-caption{font-size:11px}.octo-access-lock{right:4%}}\n@media(forced-colors:active){.octo-access,.octo-access *{color:CanvasText!important}.octo-access a,.octo-access a *{color:LinkText!important}}\n";
2
+ export declare const OCTONODE_LOGO: string;
3
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/app/OctonodeAppProvider/AppAccessScreen/constants.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,iBAAiB,87LAS7B,CAAC;AACF,eAAO,MAAM,aAAa,QAIvB,CAAC"}
@@ -0,0 +1,15 @@
1
+ // Generated from packages/ui-extensions/src/app/OctonodeAppProvider/AppAccessScreen/constants.ts. Do not edit; run the Octonode SDK sync.
2
+ // Inline, scoped styles keep the public React SDK independent of host CSS and asset loaders.
3
+ export const ACCESS_SCREEN_CSS = `
4
+ .octo-access{--octo-ink:#252536;--octo-muted:#636374;--octo-coral:#ff765f;box-sizing:border-box;min-height:100svh;background:#f7f8fc;color:var(--octo-ink);font-family:"Avenir Next",Avenir,"Segoe UI",sans-serif;font-size:16px;line-height:1.5;padding:0 48px;isolation:isolate}
5
+ .octo-access *{box-sizing:border-box}.octo-access a{color:inherit;text-decoration:none}.octo-access a:focus-visible{outline:3px solid #af3e29;outline-offset:5px}.octo-access a:hover{text-decoration:underline}
6
+ .octo-access-header,.octo-access-footer{max-width:1120px;margin:auto;display:flex;justify-content:space-between;align-items:center;gap:24px}.octo-access-header{height:100px;border-bottom:1px solid #e3e5ee}.octo-access-brand{display:flex;align-items:center;gap:10px;font-size:23px;font-weight:750;letter-spacing:-1px}.octo-access-brand img{width:36px;height:36px}.octo-access a.octo-access-guide{font-size:14px;color:var(--octo-muted);display:flex;align-items:center;gap:8px}
7
+ .octo-access-main{max-width:1120px;min-height:calc(100svh - 185px);margin:auto;display:grid;grid-template-columns:1.05fr 1fr;align-items:center;gap:70px;padding:72px 0}.octo-access-copy{max-width:520px}.octo-access-status{display:inline-flex;align-items:center;gap:8px;margin:0 0 24px;padding:6px 11px;border:1px solid #dedeea;background:#eeeff6;border-radius:6px;font-size:12px;font-weight:600;color:#515164}.octo-access-status svg{width:14px;height:14px}.octo-access h1{margin:0;font-size:clamp(40px,4.3vw,62px);font-weight:650;letter-spacing:-2.8px;line-height:1.09;text-wrap:balance}.octo-access-description{max-width:430px;margin:24px 0 30px;font-size:17px;line-height:1.75;color:var(--octo-muted)}.octo-access-actions{display:flex;align-items:center;gap:23px;flex-wrap:wrap}.octo-access a.octo-access-primary{display:inline-flex;align-items:center;justify-content:center;gap:12px;min-height:50px;padding:13px 21px;border-radius:9px;background:var(--octo-ink);color:#fff;font-size:14px;font-weight:650;box-shadow:0 4px 0 #25253612}.octo-access a.octo-access-primary:hover{background:#404056;text-decoration:none}.octo-access-secondary{font-size:14px;font-weight:600}.octo-access-hint{display:flex;align-items:flex-start;gap:9px;max-width:415px;margin:27px 0 0;color:var(--octo-muted);font-size:12px;line-height:1.65}.octo-access-hint svg{flex:none;width:15px;height:15px;margin-top:2px}
8
+ .octo-access-visual{position:relative;aspect-ratio:1;display:grid;place-items:center}.octo-access-orbit{position:absolute;width:87%;aspect-ratio:1;border:1px solid #dfe2ee;border-radius:50%}.octo-access-orbit::before{content:"";position:absolute;inset:42px;border:1px dashed #dfe2ee;border-radius:50%}.octo-access-orbit::after{content:"";position:absolute;width:10px;height:10px;border-radius:50%;background:#b2b7cf;top:13%;left:13%;box-shadow:285px 240px 0 #ffb7a8}.octo-access-workspace{position:relative;transform:rotate(-5deg);width:90%;max-width:405px;background:#fff;border:1px solid #dee1ed;border-radius:14px;box-shadow:0 24px 65px #373e6510;overflow:hidden}.octo-access-window{height:39px;border-bottom:1px solid #eceef4;display:flex;align-items:center;gap:5px;padding:0 16px;background:#fafbfe}.octo-access-window i{width:6px;height:6px;border-radius:50%;background:#d3d7e3}.octo-access-window span{margin:auto;color:#5e6578;font-size:10px}.octo-access-window b{width:22px}.octo-access-body{padding:25px 24px 22px}.octo-access-workspace-title{font-size:13px;font-weight:650;display:flex;align-items:center;gap:9px}.octo-access-workspace-title img{width:23px;height:23px;border-radius:6px}.octo-access-skeleton{height:6px;width:42%;margin-top:11px;border-radius:3px;background:#eceef5}.octo-access-flow{display:flex;align-items:center;margin:29px 0}.octo-access-node{width:62px;height:61px;display:grid;place-items:center;background:#f4f5fa;border:1px solid #e1e4ef;border-radius:11px}.octo-access-node svg{width:23px;height:23px;color:#9ca3bc}.octo-access-node.active{background:#fff0eb;border-color:#ffc4b7}.octo-access-node.active svg{color:#bd4832}.octo-access-wire{height:1px;background:#d9ddec;flex:1}.octo-access-placeholder{display:flex;gap:8px;margin-top:12px}.octo-access-placeholder i{height:6px;width:35%;border-radius:3px;background:#eceef5}.octo-access-placeholder i+ i{width:20%}.octo-access-lock{position:absolute;bottom:10%;right:0;width:76px;height:76px;display:grid;place-items:center;border:7px solid #f7f8fc;border-radius:22px;background:#fff0eb;transform:rotate(7deg);box-shadow:0 8px 25px #373e650a}.octo-access-lock svg{width:29px;height:29px;color:#bd4832}.octo-access-caption{position:absolute;bottom:0;margin:0;font-size:12px;color:#5e6578;text-align:center}
9
+ .octo-access-footer{min-height:85px;border-top:1px solid #e3e5ee;color:#5e6578;font-size:12px}.octo-access-footer p{margin:0}.octo-access-footer a{padding:10px 0}.octo-access-connecting .octo-access-status svg{animation:octo-turn 2s linear infinite}@keyframes octo-turn{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.octo-access-connecting .octo-access-status svg{animation:none}}
10
+ @media(max-width:850px){.octo-access{padding:0 28px}.octo-access-main{gap:25px}.octo-access h1{font-size:44px}.octo-access-visual{min-width:0}.octo-access-body{padding:18px}.octo-access-orbit::after{box-shadow:none}}@media(max-width:650px){.octo-access{padding:0 24px}.octo-access-header{height:80px}.octo-access-brand{font-size:21px}.octo-access-main{grid-template-columns:1fr;gap:45px;padding:48px 0 40px}.octo-access-copy{max-width:480px}.octo-access h1{font-size:clamp(38px,8vw,46px);letter-spacing:-2px}.octo-access-description{font-size:16px}.octo-access-visual{width:100%;max-width:390px;margin:auto;aspect-ratio:auto;min-height:340px;padding-bottom:40px}.octo-access-footer{align-items:flex-start;padding:22px 0;min-height:80px;font-size:11px}.octo-access a.octo-access-guide{font-size:12px}.octo-access-caption{font-size:11px}.octo-access-lock{right:4%}}
11
+ @media(forced-colors:active){.octo-access,.octo-access *{color:CanvasText!important}.octo-access a,.octo-access a *{color:LinkText!important}}
12
+ `;
13
+ export const OCTONODE_LOGO = "data:image/svg+xml," +
14
+ encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" fill="none">\n <title>Octonode</title>\n <rect width="64" height="64" rx="16" fill="#181721"/>\n <path d="M24 10h16l14 14v16L40 54H24L10 40V24Z" stroke="#FF765F" stroke-linejoin="round" stroke-width="3.5"/>\n <path d="m21 24 11 8 11-8M32 32v13" stroke="#FF765F" stroke-linecap="round" stroke-linejoin="round" stroke-width="3"/>\n <g fill="#FF765F"><circle cx="21" cy="24" r="3"/><circle cx="43" cy="24" r="3"/><circle cx="32" cy="32" r="4"/><circle cx="32" cy="45" r="3"/></g>\n</svg>\n');
15
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/app/OctonodeAppProvider/AppAccessScreen/constants.ts"],"names":[],"mappings":"AAAA,0IAA0I;AAC1I,6FAA6F;AAC7F,MAAM,CAAC,MAAM,iBAAiB,GAAG;;;;;;;;;CAShC,CAAC;AACF,MAAM,CAAC,MAAM,aAAa,GACxB,qBAAqB;IACrB,kBAAkB,CAChB,yiBAAyiB,CAC1iB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { AppAccessScreen } from "./AppAccessScreen.js";
2
+ export type { AppAccessScreenProps } from "./AppAccessScreen.types.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/app/OctonodeAppProvider/AppAccessScreen/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,YAAY,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,3 @@
1
+ // Generated from packages/ui-extensions/src/app/OctonodeAppProvider/AppAccessScreen/index.ts. Do not edit; run the Octonode SDK sync.
2
+ export { AppAccessScreen } from "./AppAccessScreen.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/app/OctonodeAppProvider/AppAccessScreen/index.ts"],"names":[],"mappings":"AAAA,sIAAsI;AACtI,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { OctonodeAppProviderProps } from "./OctonodeAppProvider.types.js";
2
+ /** Render app content only after the hosted backend verifies the workspace session. */
3
+ export declare function OctonodeAppProvider({ children, navigation }: OctonodeAppProviderProps): import("react").JSX.Element;
4
+ //# sourceMappingURL=OctonodeAppProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OctonodeAppProvider.d.ts","sourceRoot":"","sources":["../../../src/app/OctonodeAppProvider/OctonodeAppProvider.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAE/E,uFAAuF;AACvF,wBAAgB,mBAAmB,CAAC,EAAE,QAAQ,EAAE,UAA+B,EAAE,EAAE,wBAAwB,+BAQ1G"}
@@ -0,0 +1,20 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ // Generated from packages/ui-extensions/src/app/OctonodeAppProvider/OctonodeAppProvider.tsx. Do not edit; run the Octonode SDK sync.
3
+ import { useHostedApp } from "../../hooks/general/useHostedApp.js";
4
+ import { AppAccessScreen } from "./AppAccessScreen/index.js";
5
+ import { DEFAULT_NAVIGATION } from "./constants.js";
6
+ import { Context } from "./context.js";
7
+ /** Render app content only after the hosted backend verifies the workspace session. */
8
+ export function OctonodeAppProvider({ children, navigation = DEFAULT_NAVIGATION }) {
9
+ const { bridge, session, verified, error } = useHostedApp(navigation);
10
+ if (session?.status === "expired")
11
+ return _jsx(AppAccessScreen, { status: "expired" });
12
+ if (error)
13
+ return _jsx(AppAccessScreen, { status: "error" });
14
+ if (session?.status === "standalone")
15
+ return _jsx(AppAccessScreen, { status: "standalone" });
16
+ if (!bridge || !session || !verified || verified.token !== session.token)
17
+ return _jsx(AppAccessScreen, { status: "connecting" });
18
+ return _jsx(Context.Provider, { value: { bridge, session, workspace: verified.workspace }, children: children });
19
+ }
20
+ //# sourceMappingURL=OctonodeAppProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OctonodeAppProvider.js","sourceRoot":"","sources":["../../../src/app/OctonodeAppProvider/OctonodeAppProvider.tsx"],"names":[],"mappings":";AAAA,qIAAqI;AACrI,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAGvC,uFAAuF;AACvF,MAAM,UAAU,mBAAmB,CAAC,EAAE,QAAQ,EAAE,UAAU,GAAG,kBAAkB,EAA4B;IACzG,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;IACtE,IAAI,OAAO,EAAE,MAAM,KAAK,SAAS;QAAE,OAAO,KAAC,eAAe,IAAC,MAAM,EAAC,SAAS,GAAG,CAAC;IAC/E,IAAI,KAAK;QAAE,OAAO,KAAC,eAAe,IAAC,MAAM,EAAC,OAAO,GAAG,CAAC;IACrD,IAAI,OAAO,EAAE,MAAM,KAAK,YAAY;QAAE,OAAO,KAAC,eAAe,IAAC,MAAM,EAAC,YAAY,GAAG,CAAC;IACrF,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK;QACtE,OAAO,KAAC,eAAe,IAAC,MAAM,EAAC,YAAY,GAAG,CAAC;IACjD,OAAO,KAAC,OAAO,CAAC,QAAQ,IAAC,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,YAAG,QAAQ,GAAoB,CAAC;AACpH,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { ReactNode } from "react";
2
+ import type { AppContext, HostedApp, HostedAppNavigationItem, HostedAppState } from "../types.js";
3
+ export type OctonodeAppProviderProps = {
4
+ children: ReactNode;
5
+ navigation?: HostedAppNavigationItem[];
6
+ };
7
+ export type OctonodeAppContext = {
8
+ bridge: HostedApp;
9
+ session: HostedAppState;
10
+ workspace: AppContext["workspace"];
11
+ };
12
+ //# sourceMappingURL=OctonodeAppProvider.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OctonodeAppProvider.types.d.ts","sourceRoot":"","sources":["../../../src/app/OctonodeAppProvider/OctonodeAppProvider.types.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,uBAAuB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElG,MAAM,MAAM,wBAAwB,GAAG;IACrC,QAAQ,EAAE,SAAS,CAAC;IACpB,UAAU,CAAC,EAAE,uBAAuB,EAAE,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE,SAAS,CAAC;IAClB,OAAO,EAAE,cAAc,CAAC;IACxB,SAAS,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;CACpC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=OctonodeAppProvider.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OctonodeAppProvider.types.js","sourceRoot":"","sources":["../../../src/app/OctonodeAppProvider/OctonodeAppProvider.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ import type { OctonodeAppProviderProps } from "./OctonodeAppProvider.types.js";
2
+ export declare const DEFAULT_NAVIGATION: NonNullable<OctonodeAppProviderProps["navigation"]>;
3
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/app/OctonodeAppProvider/constants.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAE/E,eAAO,MAAM,kBAAkB,EAAE,WAAW,CAAC,wBAAwB,CAAC,YAAY,CAAC,CAAM,CAAC"}
@@ -0,0 +1,2 @@
1
+ export const DEFAULT_NAVIGATION = [];
2
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/app/OctonodeAppProvider/constants.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,kBAAkB,GAAwD,EAAE,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { OctonodeAppContext } from "./OctonodeAppProvider.types.js";
2
+ export declare const Context: import("react").Context<OctonodeAppContext | null>;
3
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/app/OctonodeAppProvider/context.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEzE,eAAO,MAAM,OAAO,oDAAiD,CAAC"}
@@ -0,0 +1,4 @@
1
+ // Generated from packages/ui-extensions/src/app/OctonodeAppProvider/context.ts. Do not edit; run the Octonode SDK sync.
2
+ import { createContext } from "react";
3
+ export const Context = createContext(null);
4
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/app/OctonodeAppProvider/context.ts"],"names":[],"mappings":"AAAA,wHAAwH;AACxH,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAGtC,MAAM,CAAC,MAAM,OAAO,GAAG,aAAa,CAA4B,IAAI,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { useOctonodeApp } from "../../hooks/general/useOctonodeApp.js";
2
+ export { OctonodeAppProvider } from "./OctonodeAppProvider.js";
3
+ export type { OctonodeAppContext, OctonodeAppProviderProps } from "./OctonodeAppProvider.types.js";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/app/OctonodeAppProvider/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,YAAY,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC"}
@@ -0,0 +1,4 @@
1
+ // Generated from packages/ui-extensions/src/app/OctonodeAppProvider/index.ts. Do not edit; run the Octonode SDK sync.
2
+ export { useOctonodeApp } from "../../hooks/general/useOctonodeApp.js";
3
+ export { OctonodeAppProvider } from "./OctonodeAppProvider.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/app/OctonodeAppProvider/index.ts"],"names":[],"mappings":"AAAA,sHAAsH;AACtH,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"hosted.d.ts","sourceRoot":"","sources":["../../src/app/hosted.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAkB,MAAM,YAAY,CAAC;AAG5D,8DAA8D;AAC9D,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAWtD;AAED,qFAAqF;AACrF,wBAAgB,gBAAgB,IAAI,SAAS,CAkJ5C"}
1
+ {"version":3,"file":"hosted.d.ts","sourceRoot":"","sources":["../../src/app/hosted.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAA2C,MAAM,YAAY,CAAC;AAGrF,8DAA8D;AAC9D,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAWtD;AAED,qFAAqF;AACrF,wBAAgB,gBAAgB,IAAI,SAAS,CAkK5C"}
@@ -53,7 +53,11 @@ export function connectHostedApp() {
53
53
  path: location.pathname + location.search + location.hash,
54
54
  };
55
55
  let disposed = false;
56
+ let rejectedToken;
57
+ let navigation = [];
56
58
  const publish = (patch) => {
59
+ if (Object.entries(patch).every(([key, value]) => state[key] === value))
60
+ return;
57
61
  state = { ...state, ...patch };
58
62
  listeners.forEach((listener) => listener());
59
63
  };
@@ -89,11 +93,14 @@ export function connectHostedApp() {
89
93
  return;
90
94
  if (message.type === "session" &&
91
95
  typeof message.token === "string" &&
96
+ message.token !== rejectedToken &&
92
97
  /^octo_app_[A-Za-z0-9_-]{43}$/.test(message.token) &&
93
98
  Number.isFinite(message.expiresAt) &&
94
99
  message.expiresAt > Date.now()) {
95
100
  publish({ status: "ready", token: message.token, expiresAt: message.expiresAt });
96
101
  send({ type: "ack" });
102
+ if (navigation.length)
103
+ send({ type: "navigation", items: navigation });
97
104
  }
98
105
  if (message.type === "expired")
99
106
  publish({ status: "expired", token: undefined });
@@ -130,6 +137,14 @@ export function connectHostedApp() {
130
137
  history[options.replace ? "replaceState" : "pushState"](null, "", route);
131
138
  dispatchEvent(new PopStateEvent("popstate"));
132
139
  },
140
+ setNavigation(items) {
141
+ if (items.length > 12 ||
142
+ items.some((item) => !item.label.trim() || item.label.length > 40 || !appRoute(item.path)))
143
+ throw new Error("Expected up to 12 app-relative navigation items");
144
+ navigation = items;
145
+ if (state.status === "ready")
146
+ send({ type: "navigation", items });
147
+ },
133
148
  async fetch(input, init) {
134
149
  const url = new URL(input, location.href);
135
150
  if (url.origin !== location.origin)
@@ -137,9 +152,11 @@ export function connectHostedApp() {
137
152
  if (!state.token || (state.expiresAt && state.expiresAt <= Date.now()))
138
153
  throw new Error("App session expired. Reopen the app from Studio.");
139
154
  const headers = new Headers(init?.headers);
140
- headers.set("authorization", `Bearer ${state.token}`);
155
+ const token = state.token;
156
+ headers.set("authorization", `Bearer ${token}`);
141
157
  const response = await fetch(url, { ...init, headers, redirect: "error" });
142
- if (response.status === 401) {
158
+ if (response.status === 401 && !disposed && state.token === token) {
159
+ rejectedToken = token;
143
160
  publish({ status: "expired", token: undefined });
144
161
  send({ type: "ready" });
145
162
  }
@@ -1 +1 @@
1
- {"version":3,"file":"hosted.js","sourceRoot":"","sources":["../../src/app/hosted.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hosted.js","sourceRoot":"","sources":["../../src/app/hosted.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
- import type { AppContext } from "./types.js";
2
- export type { AppBridgeRequest, AppBridgeResponse, AppContext, AppExecution, AppGrant, AppProject } from "./types.js";
3
- export type { HostedApp, HostedAppState } from "./types.js";
4
- export { connectHostedApp, appRoute } from "./hosted.js";
1
+ import type { AppBridgeRequest, AppContext } from "./types.js";
5
2
  export { HOSTED_APP_PROTOCOL } from "./constants.js";
3
+ export { appRoute, connectHostedApp } from "./hosted.js";
4
+ export type { AppBridgeRequest, AppBridgeResponse, AppContext, AppExecution, AppGrant, AppProject, HostedApp, HostedAppNavigationItem, HostedAppState, } from "./types.js";
5
+ export declare function request<T>(operation: AppBridgeRequest["operation"], body?: unknown): Promise<T>;
6
6
  /** Connects an installed extension to its live workspace and project grants. */
7
7
  export declare function connectApp(): Promise<AppContext>;
8
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/app/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAuC,UAAU,EAAY,MAAM,YAAY,CAAC;AAE5F,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACtH,YAAY,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AA8CrD,gFAAgF;AAChF,wBAAsB,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,CAUtD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/app/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAqB,UAAU,EAAY,MAAM,YAAY,CAAC;AAE5F,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACzD,YAAY,EACV,gBAAgB,EAChB,iBAAiB,EACjB,UAAU,EACV,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,SAAS,EACT,uBAAuB,EACvB,cAAc,GACf,MAAM,YAAY,CAAC;AAEpB,wBAAgB,OAAO,CAAC,CAAC,EAAE,SAAS,EAAE,gBAAgB,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CA0C/F;AAED,gFAAgF;AAChF,wBAAsB,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,CAUtD"}
package/dist/app/index.js CHANGED
@@ -1,10 +1,11 @@
1
1
  // Generated from packages/ui-extensions/src/app/index.ts. Do not edit; run the Octonode SDK sync.
2
- import { getAppSession, UI_EXTENSION_API_VERSION } from "../index.js";
2
+ import { UI_EXTENSION_API_VERSION } from "../constants.js";
3
+ import { getAppSession } from "../index.js";
3
4
  import { appContext } from "./project.js";
4
- export { connectHostedApp, appRoute } from "./hosted.js";
5
5
  export { HOSTED_APP_PROTOCOL } from "./constants.js";
6
- function request(operation, body) {
7
- getAppSession();
6
+ export { appRoute, connectHostedApp } from "./hosted.js";
7
+ export function request(operation, body) {
8
+ const apiVersion = getAppSession().protocolVersion ?? UI_EXTENSION_API_VERSION;
8
9
  if (parent === window)
9
10
  throw new Error("App actions require an installed extension");
10
11
  const requestId = crypto.randomUUID();
@@ -16,7 +17,7 @@ function request(operation, body) {
16
17
  if (event.source !== parent ||
17
18
  message?.octonode !== "ui-extension" ||
18
19
  message.type !== "app-response" ||
19
- message.apiVersion !== UI_EXTENSION_API_VERSION ||
20
+ message.apiVersion !== apiVersion ||
20
21
  message.requestId !== requestId)
21
22
  return;
22
23
  finish(message.ok ? undefined : new Error(message.error || "App action failed"), message.value);
@@ -34,7 +35,7 @@ function request(operation, body) {
34
35
  function send() {
35
36
  parent.postMessage({
36
37
  octonode: "ui-extension",
37
- apiVersion: UI_EXTENSION_API_VERSION,
38
+ apiVersion,
38
39
  type: "app-request",
39
40
  requestId,
40
41
  operation,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/app/index.ts"],"names":[],"mappings":"AAAA,kGAAkG;AAClG,OAAO,EAAE,aAAa,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAK1C,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAErD,SAAS,OAAO,CAAI,SAAwC,EAAE,IAAc;IAC1E,aAAa,EAAE,CAAC;IAChB,IAAI,MAAM,KAAK,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IACrF,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;IACtC,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACxC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QACpF,MAAM,KAAK,GAAG,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC7E,MAAM,OAAO,GAAG,CAAC,KAAmB,EAAE,EAAE;YACtC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAyC,CAAC;YAChE,IACE,KAAK,CAAC,MAAM,KAAK,MAAM;gBACvB,OAAO,EAAE,QAAQ,KAAK,cAAc;gBACpC,OAAO,CAAC,IAAI,KAAK,cAAc;gBAC/B,OAAO,CAAC,UAAU,KAAK,wBAAwB;gBAC/C,OAAO,CAAC,SAAS,KAAK,SAAS;gBAE/B,OAAO;YACT,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,IAAI,mBAAmB,CAAC,EAAE,OAAO,CAAC,KAAU,CAAC,CAAC;QACvG,CAAC,CAAC;QACF,SAAS,MAAM,CAAC,KAAa,EAAE,KAAS;YACtC,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,aAAa,CAAC,KAAK,CAAC,CAAC;YACrB,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACxC,IAAI,KAAK;gBAAE,MAAM,CAAC,KAAK,CAAC,CAAC;;gBACpB,OAAO,CAAC,KAAU,CAAC,CAAC;QAC3B,CAAC;QACD,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACrC,SAAS,IAAI;YACX,MAAM,CAAC,WAAW,CAChB;gBACE,QAAQ,EAAE,cAAc;gBACxB,UAAU,EAAE,wBAAwB;gBACpC,IAAI,EAAE,aAAa;gBACnB,SAAS;gBACT,SAAS;gBACT,IAAI;aACsB,EAC5B,GAAG,CACJ,CAAC;QACJ,CAAC;QACD,IAAI,EAAE,CAAC;IACT,CAAC,CAAC,CAAC;AACL,CAAC;AAED,gFAAgF;AAChF,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;IAChC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAM3B,SAAS,CAAC,CAAC;IACd,OAAO,UAAU,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AAChD,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/app/index.ts"],"names":[],"mappings":"AAAA,kGAAkG;AAClG,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAazD,MAAM,UAAU,OAAO,CAAI,SAAwC,EAAE,IAAc;IACjF,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC,eAAe,IAAI,wBAAwB,CAAC;IAC/E,IAAI,MAAM,KAAK,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IACrF,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;IACtC,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACxC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QACpF,MAAM,KAAK,GAAG,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC7E,MAAM,OAAO,GAAG,CAAC,KAAmB,EAAE,EAAE;YACtC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAyC,CAAC;YAChE,IACE,KAAK,CAAC,MAAM,KAAK,MAAM;gBACvB,OAAO,EAAE,QAAQ,KAAK,cAAc;gBACpC,OAAO,CAAC,IAAI,KAAK,cAAc;gBAC/B,OAAO,CAAC,UAAU,KAAK,UAAU;gBACjC,OAAO,CAAC,SAAS,KAAK,SAAS;gBAE/B,OAAO;YACT,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,IAAI,mBAAmB,CAAC,EAAE,OAAO,CAAC,KAAU,CAAC,CAAC;QACvG,CAAC,CAAC;QACF,SAAS,MAAM,CAAC,KAAa,EAAE,KAAS;YACtC,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,aAAa,CAAC,KAAK,CAAC,CAAC;YACrB,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACxC,IAAI,KAAK;gBAAE,MAAM,CAAC,KAAK,CAAC,CAAC;;gBACpB,OAAO,CAAC,KAAU,CAAC,CAAC;QAC3B,CAAC;QACD,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACrC,SAAS,IAAI;YACX,MAAM,CAAC,WAAW,CAChB;gBACE,QAAQ,EAAE,cAAc;gBACxB,UAAU;gBACV,IAAI,EAAE,aAAa;gBACnB,SAAS;gBACT,SAAS;gBACT,IAAI;aACsB,EAC5B,GAAG,CACJ,CAAC;QACJ,CAAC;QACD,IAAI,EAAE,CAAC;IACT,CAAC,CAAC,CAAC;AACL,CAAC;AAED,gFAAgF;AAChF,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;IAChC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAM3B,SAAS,CAAC,CAAC;IACd,OAAO,UAAU,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AAChD,CAAC"}
@@ -1,6 +1,5 @@
1
- import type { AppSession } from "../index.js";
2
- import type { AppBridgeRequest, AppContext, AppGrant } from "./types.js";
3
- export type AppRequest = <T>(operation: AppBridgeRequest["operation"], body?: unknown) => Promise<T>;
1
+ import type { AppSession } from "../types.js";
2
+ import type { AppContext, AppGrant, AppRequest } from "./types.js";
4
3
  export declare function appContext(session: Pick<AppSession, "appId" | "installationId" | "workspace" | "projectId">, verified: {
5
4
  appId: string;
6
5
  installationId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/app/project.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAgB,QAAQ,EAAc,MAAM,YAAY,CAAC;AAEnG,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,gBAAgB,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;AAoCrG,wBAAgB,UAAU,CACxB,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,GAAG,gBAAgB,GAAG,WAAW,GAAG,WAAW,CAAC,EACjF,QAAQ,EAAE;IACR,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;IACnC,MAAM,EAAE,QAAQ,EAAE,CAAC;CACpB,EACD,OAAO,EAAE,UAAU,GAClB,UAAU,CAyBZ"}
1
+ {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/app/project.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAgB,QAAQ,EAAc,UAAU,EAAE,MAAM,YAAY,CAAC;AAoC7F,wBAAgB,UAAU,CACxB,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,GAAG,gBAAgB,GAAG,WAAW,GAAG,WAAW,CAAC,EACjF,QAAQ,EAAE;IACR,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;IACnC,MAAM,EAAE,QAAQ,EAAE,CAAC;CACpB,EACD,OAAO,EAAE,UAAU,GAClB,UAAU,CAyBZ"}
@@ -1 +1 @@
1
- {"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/app/project.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/app/project.ts"],"names":[],"mappings":"AAIA,SAAS,OAAO,CAAC,EAAU,EAAE,OAAmB;IAC9C,OAAO;QACL,EAAE;QACF,GAAG,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;QACvE,MAAM,EAAE;YACN,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;YACxE,IAAI,EAAE;gBACJ,IAAI,EAAE,CAAC,OAAO,EAAE,KAAK,GAAG,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;gBACzG,MAAM,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CACxB,OAAO,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC;gBACxF,MAAM,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE,CAChD,OAAO,CAAC,MAAM,EAAE;oBACd,SAAS,EAAE,aAAa;oBACxB,SAAS,EAAE,EAAE;oBACb,OAAO;oBACP,KAAK;oBACL,KAAK,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE;iBACjC,CAAC;gBACJ,MAAM,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;aACzG;SACF;QACD,EAAE,EAAE;YACF,GAAG,EAAE,CAAC,UAAU,EAAE,KAAK,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE,EAAE,EAAE,CAC5C,OAAO,CAAe,cAAc,EAAE;gBACpC,SAAS,EAAE,EAAE;gBACb,UAAU;gBACV,KAAK;gBACL,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI,MAAM,CAAC,UAAU,EAAE;gBAC7D,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC7C,CAAC;SACL;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,UAAU,CACxB,OAAiF,EACjF,QAMC,EACD,OAAmB;IAEnB,IACE,OAAO,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK;QAChC,OAAO,CAAC,cAAc,KAAK,QAAQ,CAAC,cAAc;QAClD,OAAO,CAAC,SAAS,CAAC,IAAI,KAAK,QAAQ,CAAC,SAAS,CAAC,IAAI;QAClD,OAAO,CAAC,SAAS,CAAC,EAAE,KAAK,QAAQ,CAAC,SAAS,CAAC,EAAE;QAE9C,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC/E,IAAI,OAAO,CAAC,SAAS,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC;QAC5D,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,MAAM,gBAAgB,GAAG,OAAO,CAAC,SAAS,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAChG,OAAO;QACL,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,cAAc,EAAE,QAAQ,CAAC,cAAc;QACvC,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,QAAQ;QACR,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;QAC1E,UAAU,CAAC,SAAS;YAClB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;YACzF,OAAO,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACrC,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/app/server.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAY,MAAM,YAAY,CAAC;AAEvD,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEjF,qBAAa,eAAgB,SAAQ,KAAK;aAGtB,MAAM,EAAE,MAAM;gBAD9B,OAAO,EAAE,MAAM,EACC,MAAM,EAAE,MAAM;CAKjC;AAED,uFAAuF;AACvF,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9D,OAAO,CAAC,UAAU,CAAC,CAoCrB"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/app/server.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAwB,MAAM,YAAY,CAAC;AAEnE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEjF,qBAAa,eAAgB,SAAQ,KAAK;aAGtB,MAAM,EAAE,MAAM;gBAD9B,OAAO,EAAE,MAAM,EACC,MAAM,EAAE,MAAM;CAKjC;AAED,uFAAuF;AACvF,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9D,OAAO,CAAC,UAAU,CAAC,CAoCrB"}