@bravostudioai/react 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/bin/encore-lib.js +3 -0
  2. package/dist/_virtual/_commonjsHelpers.js +7 -0
  3. package/dist/_virtual/_commonjsHelpers.js.map +1 -0
  4. package/dist/_virtual/main.js +8 -0
  5. package/dist/_virtual/main.js.map +1 -0
  6. package/dist/_virtual/main2.js +5 -0
  7. package/dist/_virtual/main2.js.map +1 -0
  8. package/dist/app.js +9 -0
  9. package/dist/app.js.map +1 -0
  10. package/dist/cli/commands/download.js +82 -0
  11. package/dist/cli/commands/download.js.map +1 -0
  12. package/dist/cli/commands/generate.js +1526 -0
  13. package/dist/cli/commands/generate.js.map +1 -0
  14. package/dist/cli.js +25 -0
  15. package/dist/cli.js.map +1 -0
  16. package/dist/components/DynamicComponent.js +24 -0
  17. package/dist/components/DynamicComponent.js.map +1 -0
  18. package/dist/components/EncoreApp.js +259 -0
  19. package/dist/components/EncoreApp.js.map +1 -0
  20. package/dist/components/EncoreErrorBoundary.js +33 -0
  21. package/dist/components/EncoreErrorBoundary.js.map +1 -0
  22. package/dist/components/EncoreLoadingFallback.js +20 -0
  23. package/dist/components/EncoreLoadingFallback.js.map +1 -0
  24. package/dist/components.js +1454 -0
  25. package/dist/components.js.map +1 -0
  26. package/dist/constants.d.ts +3 -0
  27. package/dist/constants.d.ts.map +1 -0
  28. package/dist/contexts/EncoreActionContext.js +6 -0
  29. package/dist/contexts/EncoreActionContext.js.map +1 -0
  30. package/dist/contexts/EncoreAppContext.js +9 -0
  31. package/dist/contexts/EncoreAppContext.js.map +1 -0
  32. package/dist/contexts/EncoreBindingContext.js +6 -0
  33. package/dist/contexts/EncoreBindingContext.js.map +1 -0
  34. package/dist/contexts/EncoreComponentIdContext.js +8 -0
  35. package/dist/contexts/EncoreComponentIdContext.js.map +1 -0
  36. package/dist/contexts/EncoreRepeatingContainerContext.js +6 -0
  37. package/dist/contexts/EncoreRepeatingContainerContext.js.map +1 -0
  38. package/dist/hooks/usePusherUpdates.js +60 -0
  39. package/dist/hooks/usePusherUpdates.js.map +1 -0
  40. package/dist/index.js +16 -0
  41. package/dist/index.js.map +1 -0
  42. package/dist/lib/dynamicModules.js +132 -0
  43. package/dist/lib/dynamicModules.js.map +1 -0
  44. package/dist/lib/fetcher.js +58 -0
  45. package/dist/lib/fetcher.js.map +1 -0
  46. package/dist/lib/localMode.js +21 -0
  47. package/dist/lib/localMode.js.map +1 -0
  48. package/dist/lib/packages.js +18 -0
  49. package/dist/lib/packages.js.map +1 -0
  50. package/dist/node_modules/dotenv/lib/main.js +198 -0
  51. package/dist/node_modules/dotenv/lib/main.js.map +1 -0
  52. package/dist/node_modules/dotenv/package.json.js +8 -0
  53. package/dist/node_modules/dotenv/package.json.js.map +1 -0
  54. package/dist/packages/encore-lib/constants.js +6 -0
  55. package/dist/packages/encore-lib/constants.js.map +1 -0
  56. package/dist/src/app.d.ts +5 -0
  57. package/dist/src/app.d.ts.map +1 -0
  58. package/dist/src/cli/commands/download.d.ts +2 -0
  59. package/dist/src/cli/commands/download.d.ts.map +1 -0
  60. package/dist/src/cli/commands/generate.d.ts +2 -0
  61. package/dist/src/cli/commands/generate.d.ts.map +1 -0
  62. package/dist/src/cli/index.d.ts +2 -0
  63. package/dist/src/cli/index.d.ts.map +1 -0
  64. package/dist/src/components/DynamicComponent.d.ts +12 -0
  65. package/dist/src/components/DynamicComponent.d.ts.map +1 -0
  66. package/dist/src/components/EncoreApp.d.ts +27 -0
  67. package/dist/src/components/EncoreApp.d.ts.map +1 -0
  68. package/dist/src/components/EncoreErrorBoundary.d.ts +17 -0
  69. package/dist/src/components/EncoreErrorBoundary.d.ts.map +1 -0
  70. package/dist/src/components/EncoreLoadingFallback.d.ts +4 -0
  71. package/dist/src/components/EncoreLoadingFallback.d.ts.map +1 -0
  72. package/dist/src/components.d.ts +4 -0
  73. package/dist/src/components.d.ts.map +1 -0
  74. package/dist/src/contexts/EncoreActionContext.d.ts +13 -0
  75. package/dist/src/contexts/EncoreActionContext.d.ts.map +1 -0
  76. package/dist/src/contexts/EncoreAppContext.d.ts +8 -0
  77. package/dist/src/contexts/EncoreAppContext.d.ts.map +1 -0
  78. package/dist/src/contexts/EncoreBindingContext.d.ts +5 -0
  79. package/dist/src/contexts/EncoreBindingContext.d.ts.map +1 -0
  80. package/dist/src/contexts/EncoreComponentIdContext.d.ts +8 -0
  81. package/dist/src/contexts/EncoreComponentIdContext.d.ts.map +1 -0
  82. package/dist/src/contexts/EncoreRepeatingContainerContext.d.ts +21 -0
  83. package/dist/src/contexts/EncoreRepeatingContainerContext.d.ts.map +1 -0
  84. package/dist/src/hooks/useAuthRedirect.d.ts +3 -0
  85. package/dist/src/hooks/useAuthRedirect.d.ts.map +1 -0
  86. package/dist/src/hooks/usePusherUpdates.d.ts +18 -0
  87. package/dist/src/hooks/usePusherUpdates.d.ts.map +1 -0
  88. package/dist/src/index.d.ts +8 -0
  89. package/dist/src/index.d.ts.map +1 -0
  90. package/dist/src/lib/dynamicModules.d.ts +8 -0
  91. package/dist/src/lib/dynamicModules.d.ts.map +1 -0
  92. package/dist/src/lib/fetcher.d.ts +5 -0
  93. package/dist/src/lib/fetcher.d.ts.map +1 -0
  94. package/dist/src/lib/localMode.d.ts +3 -0
  95. package/dist/src/lib/localMode.d.ts.map +1 -0
  96. package/dist/src/lib/packages.d.ts +6 -0
  97. package/dist/src/lib/packages.d.ts.map +1 -0
  98. package/dist/src/stores/useEncoreState.d.ts +33 -0
  99. package/dist/src/stores/useEncoreState.d.ts.map +1 -0
  100. package/dist/stores/useEncoreState.js +70 -0
  101. package/dist/stores/useEncoreState.js.map +1 -0
  102. package/package.json +60 -0
  103. package/src/AGENTS.md +161 -0
  104. package/src/README.md +110 -0
  105. package/src/app.ts +5 -0
  106. package/src/cli/commands/download.ts +133 -0
  107. package/src/cli/commands/generate.ts +3045 -0
  108. package/src/cli/index.ts +35 -0
  109. package/src/components/DynamicComponent.tsx +40 -0
  110. package/src/components/EncoreApp.tsx +759 -0
  111. package/src/components/EncoreErrorBoundary.tsx +49 -0
  112. package/src/components/EncoreLoadingFallback.tsx +25 -0
  113. package/src/components.tsx +3155 -0
  114. package/src/contexts/EncoreActionContext.ts +18 -0
  115. package/src/contexts/EncoreAppContext.ts +13 -0
  116. package/src/contexts/EncoreBindingContext.ts +6 -0
  117. package/src/contexts/EncoreComponentIdContext.ts +12 -0
  118. package/src/contexts/EncoreRepeatingContainerContext.ts +30 -0
  119. package/src/hooks/useAuthRedirect.ts +63 -0
  120. package/src/hooks/usePusherUpdates.ts +156 -0
  121. package/src/index.ts +16 -0
  122. package/src/lib/dynamicModules.ts +193 -0
  123. package/src/lib/fetcher.ts +108 -0
  124. package/src/lib/localMode.ts +30 -0
  125. package/src/lib/moduleRegistry.ts +24 -0
  126. package/src/lib/packages.ts +33 -0
  127. package/src/stores/useEncoreState.ts +121 -0
@@ -0,0 +1,132 @@
1
+ import p from "./packages.js";
2
+ import { isLocalMode as $ } from "./localMode.js";
3
+ import { CONST_COMPONENTS_CDN_URL as E } from "../packages/encore-lib/constants.js";
4
+ const M = {}, i = Object.keys(p).reduce(
5
+ (e, r) => (e[r] = p[r], e),
6
+ {}
7
+ );
8
+ function _(e, r) {
9
+ i[e] = r;
10
+ }
11
+ function h(e) {
12
+ return i[e]().exports;
13
+ }
14
+ function g(e) {
15
+ return e in i;
16
+ }
17
+ function y(e, r) {
18
+ return new Promise((d, m) => {
19
+ const n = (t, s) => {
20
+ typeof t == "function" && (s = t, t = []), Promise.all(
21
+ t.map(async (c) => c === "require" ? ((o) => {
22
+ if (!g(o))
23
+ throw new Error(`Module ${o} not found`);
24
+ return h(o);
25
+ }) : c === "exports" ? {} : (g(c) || await x(c), h(c)))
26
+ ).then((c) => {
27
+ const o = {}, u = s.apply(null, c) || o;
28
+ d({ default: u });
29
+ }).catch(m);
30
+ };
31
+ n.amd = !0;
32
+ try {
33
+ let t = r;
34
+ t = t.replace(
35
+ /t\.createElement\("undefined",(\{[^}]*nodeData:\{[^}]*type:"container:slider"[^}]*\}[^}]*\})/g,
36
+ (c, o) => `t.createElement(e.SliderComponent,${o}`
37
+ ), t = t.replace(
38
+ /t\.createElement\("undefined",(\{[^}]*nodeData:\{([^}]*type:"([^"]+)")?[^}]*\}[^}]*\})/g,
39
+ (c, o, l, u) => {
40
+ const a = o.match(/type:"([^"]+)"/), f = a ? a[1] : null;
41
+ return `t.createElement(${f ? `(e["${f}"] || e.DefaultLayerComponent)` : "e.DefaultLayerComponent"},${o}`;
42
+ }
43
+ ), t = t.replace(
44
+ /t\.createElement\("undefined"/g,
45
+ "t.createElement(e.DefaultLayerComponent"
46
+ );
47
+ const s = Function(
48
+ "define",
49
+ `
50
+ try {
51
+ ${t}
52
+ //# sourceURL=dynamic-module://${e}.js
53
+ } catch (error) {
54
+ console.error('[Module Evaluation Error]', {
55
+ moduleName: '${e}',
56
+ error: error.message,
57
+ stack: error.stack,
58
+ lineNumber: error.lineNumber,
59
+ columnNumber: error.columnNumber
60
+ });
61
+ throw error;
62
+ }
63
+ `
64
+ );
65
+ console.debug(`[Module Loading] Attempting to load module: ${e}`), s(n), console.debug(`[Module Loading] Successfully loaded module: ${e}`);
66
+ } catch (t) {
67
+ console.error("[Module Loading Failed]", {
68
+ moduleName: e,
69
+ error: t,
70
+ errorType: t.constructor.name,
71
+ message: t.message,
72
+ stack: t.stack,
73
+ code: r.slice(0, 500) + (r.length > 500 ? "..." : "")
74
+ // Show first 500 chars of code
75
+ }), m(t);
76
+ }
77
+ });
78
+ }
79
+ async function L(e) {
80
+ if (console.log(`🔍 fetchDep called for ${e}. isLocalMode: ${$()}`), $()) {
81
+ const n = e.match(/^([^/]+)\/draft\/components\/([^/]+)$/);
82
+ if (n) {
83
+ const t = n[1], s = n[2], c = M?.VITE_FLEX_LAYOUT_ABS || null, o = [
84
+ `/flex-layout/${t}/${s}.js`,
85
+ c ? `/@fs/${c}/${t}/${s}.js` : null
86
+ ].filter(Boolean), l = [];
87
+ for (const u of o)
88
+ try {
89
+ const a = await fetch(u);
90
+ if (!a.ok) {
91
+ l.push(`${u}: ${a.status} ${a.statusText}`);
92
+ continue;
93
+ }
94
+ const f = await a.text();
95
+ return await y(
96
+ `${t}/draft/components/${s}`,
97
+ f
98
+ );
99
+ } catch (a) {
100
+ l.push(`${u}: ${a.message || String(a)}`);
101
+ }
102
+ throw new Error(
103
+ `Local component not found for ${e}. Tried: ${o.join(
104
+ ", "
105
+ )}. Errors: ${l.join("; ")}`
106
+ );
107
+ }
108
+ }
109
+ const r = Math.round(Date.now() / 1e3), d = `${E}/${e}.js?cacheBuster=${r}`;
110
+ console.log(`[Module Loading] Fetching remote component from: ${d}`);
111
+ const m = await fetch(d).then(async (n) => {
112
+ if (!n.ok)
113
+ throw n.status === 403 ? new Error(
114
+ `Error: Could not fetch component '${e}'. Try regenerating components.`
115
+ ) : new Error(`Network error (${n.status}): ${await n.text()}`);
116
+ return n.text();
117
+ });
118
+ return await y(e, m);
119
+ }
120
+ async function x(e) {
121
+ const r = await L(e);
122
+ _(e, () => ({ exports: r.default }));
123
+ }
124
+ function D(e) {
125
+ e in i && (delete i[e], console.log(`[Module Cache] Cleared module: ${e}`));
126
+ }
127
+ export {
128
+ D as clearModuleCache,
129
+ L as fetchDep,
130
+ y as loadAMDModule
131
+ };
132
+ //# sourceMappingURL=dynamicModules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dynamicModules.js","sources":["../../src/lib/dynamicModules.ts"],"sourcesContent":["import packages from \"./packages\";\nimport { isLocalMode } from \"./localMode\";\nimport { CONST_COMPONENTS_CDN_URL } from \"../../constants\";\n\nconst _this = Object.keys(packages).reduce(\n (acc: Record<string, any>, p: string) => {\n acc[p] = packages[p];\n return acc;\n },\n {}\n);\n\nfunction registerModule(name: string, module: any) {\n _this[name] = module;\n}\n\nfunction getModuleExports(name: string) {\n return _this[name]().exports;\n}\n\nfunction haveModule(name: string): boolean {\n return name in _this;\n}\n\nexport function loadAMDModule(name: string, code: string) {\n return new Promise<any>((resolve, reject) => {\n const define = (deps: string[], factory: (...va: unknown[]) => unknown) => {\n if (typeof deps === \"function\") {\n factory = deps;\n deps = [];\n }\n\n Promise.all(\n deps.map(async (dep) => {\n if (dep === \"require\") {\n // Return a mock require function for AMD modules\n return ((id: string) => {\n if (!haveModule(id)) {\n throw new Error(`Module ${id} not found`);\n }\n return getModuleExports(id);\n }) as typeof require;\n }\n if (dep === \"exports\") return {};\n if (!haveModule(dep)) await fetchAndRegister(dep);\n return getModuleExports(dep);\n })\n )\n .then((resolvedDeps: unknown[]) => {\n const exports = {};\n const module = factory.apply(null, resolvedDeps);\n const result = module || exports;\n resolve({ default: result });\n })\n .catch(reject);\n };\n\n define.amd = true;\n\n try {\n // Patch code to replace hardcoded \"undefined\" component references\n // This fixes remote component files that were generated before certain components existed\n let patchedCode = code;\n\n // Replace t.createElement(\"undefined\", props) for container:slider with e.SliderComponent\n // Note: Components are passed as the second parameter 'e' in AMD modules: define([\"react\",\"@/bravo/components\"],(function(t,e){...}))\n patchedCode = patchedCode.replace(\n /t\\.createElement\\(\"undefined\",(\\{[^}]*nodeData:\\{[^}]*type:\"container:slider\"[^}]*\\}[^}]*\\})/g,\n (_match, propsStr) => {\n return `t.createElement(e.SliderComponent,${propsStr}`;\n }\n );\n\n // Fallback for any other undefined components - use the type-based lookup\n patchedCode = patchedCode.replace(\n /t\\.createElement\\(\"undefined\",(\\{[^}]*nodeData:\\{([^}]*type:\"([^\"]+)\")?[^}]*\\}[^}]*\\})/g,\n (_match, propsStr, _typeStr, _type) => {\n const typeMatch = propsStr.match(/type:\"([^\"]+)\"/);\n const componentType = typeMatch ? typeMatch[1] : null;\n const componentLookup = componentType\n ? `(e[\"${componentType}\"] || e.DefaultLayerComponent)`\n : \"e.DefaultLayerComponent\";\n return `t.createElement(${componentLookup},${propsStr}`;\n }\n );\n\n // Final fallback for any remaining \"undefined\"\n patchedCode = patchedCode.replace(\n /t\\.createElement\\(\"undefined\"/g,\n \"t.createElement(e.DefaultLayerComponent\"\n );\n\n // Wrap with error boundary\n // Note: Components are already passed as the second parameter 'e' via AMD dependencies,\n // so we don't need to inject them separately\n const wrapper = Function(\n \"define\",\n `\n try {\n ${patchedCode}\\n//# sourceURL=dynamic-module://${name}.js\n } catch (error) {\n console.error('[Module Evaluation Error]', {\n moduleName: '${name}',\n error: error.message,\n stack: error.stack,\n lineNumber: error.lineNumber,\n columnNumber: error.columnNumber\n });\n throw error;\n }\n `\n );\n\n console.debug(`[Module Loading] Attempting to load module: ${name}`);\n wrapper(define);\n console.debug(`[Module Loading] Successfully loaded module: ${name}`);\n } catch (e: any) {\n // Enhanced error logging\n console.error(\"[Module Loading Failed]\", {\n moduleName: name,\n error: e,\n errorType: e.constructor.name,\n message: e.message,\n stack: e.stack,\n code: code.slice(0, 500) + (code.length > 500 ? \"...\" : \"\"), // Show first 500 chars of code\n });\n reject(e);\n }\n });\n}\n\nexport async function fetchDep(name: string) {\n // Local mode: map Encore component name to local JSX/JS under /flex-layout\n console.log(`🔍 fetchDep called for ${name}. isLocalMode: ${isLocalMode()}`);\n if (isLocalMode()) {\n // Expecting `${appId}/draft/components/${pageId}`\n const m = name.match(/^([^/]+)\\/draft\\/components\\/([^/]+)$/);\n if (m) {\n const appId = m[1];\n const pageId = m[2];\n // Load from public as AMD (do not import() public files; Vite forbids importing from /public)\n const absBase = (import.meta as any)?.env?.VITE_FLEX_LAYOUT_ABS || null;\n const candidates = [\n `/flex-layout/${appId}/${pageId}.js`,\n absBase ? `/@fs/${absBase}/${appId}/${pageId}.js` : null,\n ].filter(Boolean) as string[];\n\n // Fetch as text and evaluate via AMD define shim\n const errors: string[] = [];\n for (const url of candidates) {\n try {\n const response = await fetch(url);\n if (!response.ok) {\n errors.push(`${url}: ${response.status} ${response.statusText}`);\n continue;\n }\n const code = await response.text();\n const amd = await loadAMDModule(\n `${appId}/draft/components/${pageId}`,\n code\n );\n return amd;\n } catch (e: any) {\n errors.push(`${url}: ${e.message || String(e)}`);\n }\n }\n throw new Error(\n `Local component not found for ${name}. Tried: ${candidates.join(\n \", \"\n )}. Errors: ${errors.join(\"; \")}`\n );\n }\n }\n // Remote mode: use AMD loader\n const cacheBuster = Math.round(Date.now() / 1000);\n const url = `${CONST_COMPONENTS_CDN_URL}/${name}.js?cacheBuster=${cacheBuster}`;\n console.log(`[Module Loading] Fetching remote component from: ${url}`);\n const text = await fetch(url).then(async (a) => {\n if (!a.ok) {\n if (a.status === 403) {\n throw new Error(\n `Error: Could not fetch component '${name}'. Try regenerating components.`\n );\n } else {\n throw new Error(`Network error (${a.status}): ${await a.text()}`);\n }\n }\n return a.text();\n });\n\n return await loadAMDModule(name, text);\n // } catch (error) {\n // return {\n // default() {\n // console.log(error);\n // throw new Error(\"Failed to render\");\n // },\n // };\n // }\n}\n\nasync function fetchAndRegister(dep: string) {\n const result = await fetchDep(dep);\n registerModule(dep, () => ({ exports: result.default }));\n}\n\n/**\n * Clear a module from the cache to force reload on next fetch\n * @param name Module name (e.g., `${appId}/draft/components/${pageId}`)\n */\nexport function clearModuleCache(name: string): void {\n if (name in _this) {\n delete _this[name];\n console.log(`[Module Cache] Cleared module: ${name}`);\n }\n}\n"],"names":["_this","packages","acc","p","registerModule","name","module","getModuleExports","haveModule","loadAMDModule","code","resolve","reject","define","deps","factory","dep","id","fetchAndRegister","resolvedDeps","exports","result","patchedCode","_match","propsStr","_typeStr","_type","typeMatch","componentType","wrapper","e","fetchDep","isLocalMode","m","appId","pageId","absBase","__vite_import_meta_env__","candidates","errors","url","response","cacheBuster","CONST_COMPONENTS_CDN_URL","text","a","clearModuleCache"],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ import d from "axios";
2
+ import { isLocalMode as u } from "./localMode.js";
3
+ import h from "../stores/useEncoreState.js";
4
+ const g = () => h.getState().baseURL, l = {}, U = (o) => {
5
+ if (/\buseLocal=1\b/.test(o) || u()) {
6
+ const c = o.split("?")[0], p = c.match(/^\/devices\/apps\/([^/]+)$/);
7
+ if (p) {
8
+ const e = p[1], a = [
9
+ `/flex-layout/${e}/${e}.json`,
10
+ void 0
11
+ ].filter(Boolean);
12
+ return (async () => {
13
+ for (const n of a)
14
+ try {
15
+ const s = await fetch(n);
16
+ if (s.ok) return s.json();
17
+ } catch {
18
+ }
19
+ throw new Error(
20
+ `Local app.json not found for ${e} (tried ${a.join(
21
+ ", "
22
+ )})`
23
+ );
24
+ })();
25
+ }
26
+ const r = c.match(
27
+ /^\/devices\/apps\/([^/]+)\/node\/([^/?#]+)$/
28
+ );
29
+ if (r) {
30
+ const e = r[1], a = r[2], n = [
31
+ `/flex-layout/${e}/${a}.json`,
32
+ void 0
33
+ ].filter(Boolean);
34
+ return fetch(n[0]).then(async (s) => {
35
+ if (s.ok) return s.json();
36
+ if (n[1]) {
37
+ const t = await fetch(n[1]).catch(() => null);
38
+ if (t && t.ok) return t.json();
39
+ }
40
+ const i = await fetch(`/flex-layout/${e}/${e}.json`).then((t) => t.ok ? t.json() : null).catch(() => null) || null;
41
+ return { clientData: (i?.app?.data?.pages || i?.data?.pages || []).find((t) => t?.id === a) || {} };
42
+ }).catch(async () => ({ clientData: null }));
43
+ }
44
+ }
45
+ if (l?.[o])
46
+ return JSON.parse(l?.[o]);
47
+ const f = g();
48
+ return d({
49
+ baseURL: f,
50
+ url: o,
51
+ headers: { "x-app-clientrendered": "true" }
52
+ }).then((c) => c.data);
53
+ };
54
+ export {
55
+ g as appsServiceUrl,
56
+ U as default
57
+ };
58
+ //# sourceMappingURL=fetcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetcher.js","sources":["../../src/lib/fetcher.ts"],"sourcesContent":["import axios from \"axios\";\nimport { isLocalMode } from \"./localMode\";\nimport useEncoreState from \"../stores/useEncoreState\";\n\n// Get baseURL from store at runtime instead of build time\nconst getAppsServiceUrl = () => {\n return useEncoreState.getState().baseURL;\n};\n\nconst bundledResponses: Record<string, string> = {};\n\nconst fetcher = (url: string) => {\n // Local mode: map Encore service URLs to files in /flex-layout\n const forceLocal = /\\buseLocal=1\\b/.test(url);\n if (forceLocal || isLocalMode()) {\n const pathOnly = url.split(\"?\")[0];\n const absBase = null;\n // /devices/apps/:appId\n const appMatch = pathOnly.match(/^\\/devices\\/apps\\/([^/]+)$/);\n if (appMatch) {\n const appId = appMatch[1];\n const tryUrls = [\n `/flex-layout/${appId}/${appId}.json`,\n absBase\n ? `/@fs/${absBase}/${appId}/${appId}.json`\n : undefined,\n ].filter(Boolean) as string[];\n return (async () => {\n for (const u of tryUrls) {\n try {\n const r = await fetch(u);\n if (r.ok) return r.json();\n } catch {\n // try next\n }\n }\n throw new Error(\n `Local app.json not found for ${appId} (tried ${tryUrls.join(\n \", \",\n )})`,\n );\n })();\n }\n // /devices/apps/:appId/node/:pageId\n const pageMatch = pathOnly.match(\n /^\\/devices\\/apps\\/([^/]+)\\/node\\/([^/?#]+)$/,\n );\n if (pageMatch) {\n const appId = pageMatch[1];\n const pageId = pageMatch[2];\n // Try a dedicated page JSON first (if present)\n const tryUrls = [\n `/flex-layout/${appId}/${pageId}.json`,\n absBase\n ? `/@fs/${absBase}/${appId}/${pageId}.json`\n : undefined,\n ].filter(Boolean) as string[];\n return fetch(tryUrls[0])\n .then(async (r) => {\n if (r.ok) return r.json();\n // try secondary url if defined\n if (tryUrls[1]) {\n const r2 = await fetch(tryUrls[1]).catch(() => null);\n if (r2 && r2.ok) return r2.json();\n }\n // Fallback: derive minimal shape from app.json\n const appJson =\n (await fetch(`/flex-layout/${appId}/${appId}.json`)\n .then((a) => (a.ok ? a.json() : null))\n .catch(() => null)) ||\n (absBase\n ? await fetch(\n `/@fs/${absBase}/${appId}/${appId}.json`,\n )\n .then((a) => (a.ok ? a.json() : null))\n .catch(() => null)\n : null);\n // Keep shape compatible with current consumers\n const pages =\n appJson?.app?.data?.pages ||\n appJson?.data?.pages ||\n [];\n const page = pages.find((p: any) => p?.id === pageId) || {};\n return { clientData: page };\n })\n .catch(async () => {\n // Final fallback: minimal object\n return { clientData: null };\n });\n }\n }\n\n if (bundledResponses?.[url]) {\n return JSON.parse(bundledResponses?.[url]);\n }\n\n // Get baseURL at runtime from store\n const appsServiceUrl = getAppsServiceUrl();\n\n return axios({\n baseURL: appsServiceUrl,\n url,\n headers: { \"x-app-clientrendered\": \"true\" },\n }).then((res) => res.data);\n};\n\nexport default fetcher;\nexport { getAppsServiceUrl as appsServiceUrl };\n"],"names":["getAppsServiceUrl","useEncoreState","bundledResponses","fetcher","url","isLocalMode","pathOnly","appMatch","appId","tryUrls","u","r","pageMatch","pageId","r2","appJson","a","p","appsServiceUrl","axios","res"],"mappings":";;;AAKA,MAAMA,IAAoB,MACfC,EAAe,WAAW,SAG/BC,IAA2C,CAAA,GAE3CC,IAAU,CAACC,MAAgB;AAG7B,MADmB,iBAAiB,KAAKA,CAAG,KAC1BC,KAAe;AAC7B,UAAMC,IAAWF,EAAI,MAAM,GAAG,EAAE,CAAC,GAG3BG,IAAWD,EAAS,MAAM,4BAA4B;AAC5D,QAAIC,GAAU;AACV,YAAMC,IAAQD,EAAS,CAAC,GAClBE,IAAU;AAAA,QACZ,gBAAgBD,CAAK,IAAIA,CAAK;AAAA,QAGxB;AAAA,MAAA,EACR,OAAO,OAAO;AAChB,cAAQ,YAAY;AAChB,mBAAWE,KAAKD;AACZ,cAAI;AACA,kBAAME,IAAI,MAAM,MAAMD,CAAC;AACvB,gBAAIC,EAAE,GAAI,QAAOA,EAAE,KAAA;AAAA,UACvB,QAAQ;AAAA,UAER;AAEJ,cAAM,IAAI;AAAA,UACN,gCAAgCH,CAAK,WAAWC,EAAQ;AAAA,YACpD;AAAA,UAAA,CACH;AAAA,QAAA;AAAA,MAET,GAAA;AAAA,IACJ;AAEA,UAAMG,IAAYN,EAAS;AAAA,MACvB;AAAA,IAAA;AAEJ,QAAIM,GAAW;AACX,YAAMJ,IAAQI,EAAU,CAAC,GACnBC,IAASD,EAAU,CAAC,GAEpBH,IAAU;AAAA,QACZ,gBAAgBD,CAAK,IAAIK,CAAM;AAAA,QAGzB;AAAA,MAAA,EACR,OAAO,OAAO;AAChB,aAAO,MAAMJ,EAAQ,CAAC,CAAC,EAClB,KAAK,OAAOE,MAAM;AACf,YAAIA,EAAE,GAAI,QAAOA,EAAE,KAAA;AAEnB,YAAIF,EAAQ,CAAC,GAAG;AACZ,gBAAMK,IAAK,MAAM,MAAML,EAAQ,CAAC,CAAC,EAAE,MAAM,MAAM,IAAI;AACnD,cAAIK,KAAMA,EAAG,GAAI,QAAOA,EAAG,KAAA;AAAA,QAC/B;AAEA,cAAMC,IACD,MAAM,MAAM,gBAAgBP,CAAK,IAAIA,CAAK,OAAO,EAC7C,KAAK,CAACQ,MAAOA,EAAE,KAAKA,EAAE,KAAA,IAAS,IAAK,EACpC,MAAM,MAAM,IAAI,KAOf;AAOV,eAAO,EAAE,aAJLD,GAAS,KAAK,MAAM,SACpBA,GAAS,MAAM,SACf,CAAA,GACe,KAAK,CAACE,MAAWA,GAAG,OAAOJ,CAAM,KAAK,CAAA,EACpC;AAAA,MACzB,CAAC,EACA,MAAM,aAEI,EAAE,YAAY,KAAA,EACxB;AAAA,IACT;AAAA,EACJ;AAEA,MAAIX,IAAmBE,CAAG;AACtB,WAAO,KAAK,MAAMF,IAAmBE,CAAG,CAAC;AAI7C,QAAMc,IAAiBlB,EAAA;AAEvB,SAAOmB,EAAM;AAAA,IACT,SAASD;AAAA,IACT,KAAAd;AAAA,IACA,SAAS,EAAE,wBAAwB,OAAA;AAAA,EAAO,CAC7C,EAAE,KAAK,CAACgB,MAAQA,EAAI,IAAI;AAC7B;"}
@@ -0,0 +1,21 @@
1
+ let e = null;
2
+ function o(r) {
3
+ e = r;
4
+ }
5
+ function n() {
6
+ try {
7
+ if (e === "local") return !0;
8
+ if (e === "remote") return !1;
9
+ if (typeof window < "u") {
10
+ const t = new URLSearchParams(window.location.search).get("useLocal");
11
+ if (t === "1" || t === "true") return !0;
12
+ }
13
+ } catch {
14
+ }
15
+ return !1;
16
+ }
17
+ export {
18
+ n as isLocalMode,
19
+ o as setLocalModeOverride
20
+ };
21
+ //# sourceMappingURL=localMode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"localMode.js","sources":["../../src/lib/localMode.ts"],"sourcesContent":["// Centralized toggle for Local Flex-Layout mode\nlet overrideMode: \"local\" | \"remote\" | null = null;\n\nexport function setLocalModeOverride(\n value: \"local\" | \"remote\" | null,\n): void {\n overrideMode = value;\n}\n\nexport function isLocalMode(): boolean {\n try {\n // Explicit override (per-App instance)\n if (overrideMode === \"local\") return true;\n if (overrideMode === \"remote\") return false;\n // Env toggle\n // if (import.meta?.env?.VITE_BRAVO_LOCAL === \"1\") return true;\n // if (import.meta?.env?.VITE_BRAVO_LOCAL === \"true\") return true;\n // Query-string toggle\n if (typeof window !== \"undefined\") {\n const params = new URLSearchParams(window.location.search);\n const v = params.get(\"useLocal\");\n if (v === \"1\" || v === \"true\") return true;\n }\n } catch {\n // ignore\n }\n return false;\n}\n\n\n"],"names":["overrideMode","setLocalModeOverride","value","isLocalMode","v"],"mappings":"AACA,IAAIA,IAA0C;AAEvC,SAASC,EACZC,GACI;AACJ,EAAAF,IAAeE;AACnB;AAEO,SAASC,IAAuB;AACnC,MAAI;AAEA,QAAIH,MAAiB,QAAS,QAAO;AACrC,QAAIA,MAAiB,SAAU,QAAO;AAKtC,QAAI,OAAO,SAAW,KAAa;AAE/B,YAAMI,IADS,IAAI,gBAAgB,OAAO,SAAS,MAAM,EACxC,IAAI,UAAU;AAC/B,UAAIA,MAAM,OAAOA,MAAM,OAAQ,QAAO;AAAA,IAC1C;AAAA,EACJ,QAAQ;AAAA,EAER;AACA,SAAO;AACX;"}
@@ -0,0 +1,18 @@
1
+ import o from "react";
2
+ import r from "axios";
3
+ import p from "../components.js";
4
+ import * as t from "../app.js";
5
+ const a = {
6
+ "@/bravo/app": () => ({ exports: t }),
7
+ // Disabled: app module doesn't exist
8
+ // "react-router-dom": () => ({
9
+ // exports: { Link, useSearchParams, useNavigate, useLocation },
10
+ // }),
11
+ axios: () => ({ exports: r }),
12
+ react: () => ({ exports: o })
13
+ };
14
+ a["@/bravo/components"] = () => ({ exports: p });
15
+ export {
16
+ a as default
17
+ };
18
+ //# sourceMappingURL=packages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"packages.js","sources":["../../src/lib/packages.ts"],"sourcesContent":["import React from \"react\";\n// import {\n// Link,\n// useSearchParams,\n// useNavigate,\n// useLocation,\n// } from \"react-router-dom\";\nimport axios from \"axios\";\nimport EncoreComponents from \"../components\";\nimport * as EncoreApp from \"../app\"\n// Note: ../app module doesn't exist in encore-lib, commenting out for now\n\nexport type Package = {\n exports: unknown;\n};\n\n// These are the packages that will be available to remotely loaded code\nconst Packages: Record<string, () => Package> = {\n \"@/bravo/app\": () => ({ exports: EncoreApp }), // Disabled: app module doesn't exist\n // \"react-router-dom\": () => ({\n // exports: { Link, useSearchParams, useNavigate, useLocation },\n // }),\n axios: () => ({ exports: axios }),\n react: () => ({ exports: React }),\n};\n\n// Enable this if you want to use components from local project\nconst USE_LOCAL_BRAVO_RN = true;\nif (USE_LOCAL_BRAVO_RN) {\n Packages[\"@/bravo/components\"] = () => ({ exports: EncoreComponents });\n}\n\nexport default Packages;\n"],"names":["Packages","EncoreApp","axios","React","EncoreComponents"],"mappings":";;;;AAiBA,MAAMA,IAA0C;AAAA,EAC5C,eAAe,OAAO,EAAE,SAASC;;;;;EAIjC,OAAO,OAAO,EAAE,SAASC;EACzB,OAAO,OAAO,EAAE,SAASC,EAAA;AAC7B;AAKIH,EAAS,oBAAoB,IAAI,OAAO,EAAE,SAASI,EAAA;"}
@@ -0,0 +1,198 @@
1
+ import { __module as f } from "../../../_virtual/main2.js";
2
+ import R from "fs";
3
+ import q from "path";
4
+ import P from "os";
5
+ import U from "crypto";
6
+ import M from "../package.json.js";
7
+ var V;
8
+ function G() {
9
+ if (V) return f.exports;
10
+ V = 1;
11
+ const g = R, v = q, $ = P, O = U, p = M.version, T = /(?:^|^)\s*(?:export\s+)?([\w.-]+)(?:\s*=\s*?|:\s+?)(\s*'(?:\\'|[^'])*'|\s*"(?:\\"|[^"])*"|\s*`(?:\\`|[^`])*`|[^#\r\n]+)?\s*(?:#.*)?(?:$|$)/mg;
12
+ function I(e) {
13
+ const t = {};
14
+ let n = e.toString();
15
+ n = n.replace(/\r\n?/mg, `
16
+ `);
17
+ let a;
18
+ for (; (a = T.exec(n)) != null; ) {
19
+ const l = a[1];
20
+ let r = a[2] || "";
21
+ r = r.trim();
22
+ const o = r[0];
23
+ r = r.replace(/^(['"`])([\s\S]*)\1$/mg, "$2"), o === '"' && (r = r.replace(/\\n/g, `
24
+ `), r = r.replace(/\\r/g, "\r")), t[l] = r;
25
+ }
26
+ return t;
27
+ }
28
+ function w(e) {
29
+ e = e || {};
30
+ const t = m(e);
31
+ e.path = t;
32
+ const n = s.configDotenv(e);
33
+ if (!n.parsed) {
34
+ const o = new Error(`MISSING_DATA: Cannot parse ${t} for an unknown reason`);
35
+ throw o.code = "MISSING_DATA", o;
36
+ }
37
+ const a = y(e).split(","), l = a.length;
38
+ let r;
39
+ for (let o = 0; o < l; o++)
40
+ try {
41
+ const c = a[o].trim(), u = A(n, c);
42
+ r = s.decrypt(u.ciphertext, u.key);
43
+ break;
44
+ } catch (c) {
45
+ if (o + 1 >= l)
46
+ throw c;
47
+ }
48
+ return s.parse(r);
49
+ }
50
+ function b(e) {
51
+ console.log(`[dotenv@${p}][WARN] ${e}`);
52
+ }
53
+ function h(e) {
54
+ console.log(`[dotenv@${p}][DEBUG] ${e}`);
55
+ }
56
+ function _(e) {
57
+ console.log(`[dotenv@${p}] ${e}`);
58
+ }
59
+ function y(e) {
60
+ return e && e.DOTENV_KEY && e.DOTENV_KEY.length > 0 ? e.DOTENV_KEY : process.env.DOTENV_KEY && process.env.DOTENV_KEY.length > 0 ? process.env.DOTENV_KEY : "";
61
+ }
62
+ function A(e, t) {
63
+ let n;
64
+ try {
65
+ n = new URL(t);
66
+ } catch (c) {
67
+ if (c.code === "ERR_INVALID_URL") {
68
+ const u = new Error("INVALID_DOTENV_KEY: Wrong format. Must be in valid uri format like dotenv://:key_1234@dotenvx.com/vault/.env.vault?environment=development");
69
+ throw u.code = "INVALID_DOTENV_KEY", u;
70
+ }
71
+ throw c;
72
+ }
73
+ const a = n.password;
74
+ if (!a) {
75
+ const c = new Error("INVALID_DOTENV_KEY: Missing key part");
76
+ throw c.code = "INVALID_DOTENV_KEY", c;
77
+ }
78
+ const l = n.searchParams.get("environment");
79
+ if (!l) {
80
+ const c = new Error("INVALID_DOTENV_KEY: Missing environment part");
81
+ throw c.code = "INVALID_DOTENV_KEY", c;
82
+ }
83
+ const r = `DOTENV_VAULT_${l.toUpperCase()}`, o = e.parsed[r];
84
+ if (!o) {
85
+ const c = new Error(`NOT_FOUND_DOTENV_ENVIRONMENT: Cannot locate environment ${r} in your .env.vault file.`);
86
+ throw c.code = "NOT_FOUND_DOTENV_ENVIRONMENT", c;
87
+ }
88
+ return { ciphertext: o, key: a };
89
+ }
90
+ function m(e) {
91
+ let t = null;
92
+ if (e && e.path && e.path.length > 0)
93
+ if (Array.isArray(e.path))
94
+ for (const n of e.path)
95
+ g.existsSync(n) && (t = n.endsWith(".vault") ? n : `${n}.vault`);
96
+ else
97
+ t = e.path.endsWith(".vault") ? e.path : `${e.path}.vault`;
98
+ else
99
+ t = v.resolve(process.cwd(), ".env.vault");
100
+ return g.existsSync(t) ? t : null;
101
+ }
102
+ function D(e) {
103
+ return e[0] === "~" ? v.join($.homedir(), e.slice(1)) : e;
104
+ }
105
+ function k(e) {
106
+ const t = !!(e && e.debug), n = e && "quiet" in e ? e.quiet : !0;
107
+ (t || !n) && _("Loading env from encrypted .env.vault");
108
+ const a = s._parseVault(e);
109
+ let l = process.env;
110
+ return e && e.processEnv != null && (l = e.processEnv), s.populate(l, a, e), { parsed: a };
111
+ }
112
+ function x(e) {
113
+ const t = v.resolve(process.cwd(), ".env");
114
+ let n = "utf8";
115
+ const a = !!(e && e.debug), l = e && "quiet" in e ? e.quiet : !0;
116
+ e && e.encoding ? n = e.encoding : a && h("No encoding is specified. UTF-8 is used by default");
117
+ let r = [t];
118
+ if (e && e.path)
119
+ if (!Array.isArray(e.path))
120
+ r = [D(e.path)];
121
+ else {
122
+ r = [];
123
+ for (const d of e.path)
124
+ r.push(D(d));
125
+ }
126
+ let o;
127
+ const c = {};
128
+ for (const d of r)
129
+ try {
130
+ const i = s.parse(g.readFileSync(d, { encoding: n }));
131
+ s.populate(c, i, e);
132
+ } catch (i) {
133
+ a && h(`Failed to load ${d} ${i.message}`), o = i;
134
+ }
135
+ let u = process.env;
136
+ if (e && e.processEnv != null && (u = e.processEnv), s.populate(u, c, e), a || !l) {
137
+ const d = Object.keys(c).length, i = [];
138
+ for (const N of r)
139
+ try {
140
+ const E = v.relative(process.cwd(), N);
141
+ i.push(E);
142
+ } catch (E) {
143
+ a && h(`Failed to load ${N} ${E.message}`), o = E;
144
+ }
145
+ _(`injecting env (${d}) from ${i.join(",")}`);
146
+ }
147
+ return o ? { parsed: c, error: o } : { parsed: c };
148
+ }
149
+ function K(e) {
150
+ if (y(e).length === 0)
151
+ return s.configDotenv(e);
152
+ const t = m(e);
153
+ return t ? s._configVault(e) : (b(`You set DOTENV_KEY but you are missing a .env.vault file at ${t}. Did you forget to build it?`), s.configDotenv(e));
154
+ }
155
+ function Y(e, t) {
156
+ const n = Buffer.from(t.slice(-64), "hex");
157
+ let a = Buffer.from(e, "base64");
158
+ const l = a.subarray(0, 12), r = a.subarray(-16);
159
+ a = a.subarray(12, -16);
160
+ try {
161
+ const o = O.createDecipheriv("aes-256-gcm", n, l);
162
+ return o.setAuthTag(r), `${o.update(a)}${o.final()}`;
163
+ } catch (o) {
164
+ const c = o instanceof RangeError, u = o.message === "Invalid key length", d = o.message === "Unsupported state or unable to authenticate data";
165
+ if (c || u) {
166
+ const i = new Error("INVALID_DOTENV_KEY: It must be 64 characters long (or more)");
167
+ throw i.code = "INVALID_DOTENV_KEY", i;
168
+ } else if (d) {
169
+ const i = new Error("DECRYPTION_FAILED: Please check your DOTENV_KEY");
170
+ throw i.code = "DECRYPTION_FAILED", i;
171
+ } else
172
+ throw o;
173
+ }
174
+ }
175
+ function L(e, t, n = {}) {
176
+ const a = !!(n && n.debug), l = !!(n && n.override);
177
+ if (typeof t != "object") {
178
+ const r = new Error("OBJECT_REQUIRED: Please check the processEnv argument being passed to populate");
179
+ throw r.code = "OBJECT_REQUIRED", r;
180
+ }
181
+ for (const r of Object.keys(t))
182
+ Object.prototype.hasOwnProperty.call(e, r) ? (l === !0 && (e[r] = t[r]), a && h(l === !0 ? `"${r}" is already defined and WAS overwritten` : `"${r}" is already defined and was NOT overwritten`)) : e[r] = t[r];
183
+ }
184
+ const s = {
185
+ configDotenv: x,
186
+ _configVault: k,
187
+ _parseVault: w,
188
+ config: K,
189
+ decrypt: Y,
190
+ parse: I,
191
+ populate: L
192
+ };
193
+ return f.exports.configDotenv = s.configDotenv, f.exports._configVault = s._configVault, f.exports._parseVault = s._parseVault, f.exports.config = s.config, f.exports.decrypt = s.decrypt, f.exports.parse = s.parse, f.exports.populate = s.populate, f.exports = s, f.exports;
194
+ }
195
+ export {
196
+ G as __require
197
+ };
198
+ //# sourceMappingURL=main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.js","sources":["../../../../../../node_modules/dotenv/lib/main.js"],"sourcesContent":["const fs = require('fs')\nconst path = require('path')\nconst os = require('os')\nconst crypto = require('crypto')\nconst packageJson = require('../package.json')\n\nconst version = packageJson.version\n\nconst LINE = /(?:^|^)\\s*(?:export\\s+)?([\\w.-]+)(?:\\s*=\\s*?|:\\s+?)(\\s*'(?:\\\\'|[^'])*'|\\s*\"(?:\\\\\"|[^\"])*\"|\\s*`(?:\\\\`|[^`])*`|[^#\\r\\n]+)?\\s*(?:#.*)?(?:$|$)/mg\n\n// Parse src into an Object\nfunction parse (src) {\n const obj = {}\n\n // Convert buffer to string\n let lines = src.toString()\n\n // Convert line breaks to same format\n lines = lines.replace(/\\r\\n?/mg, '\\n')\n\n let match\n while ((match = LINE.exec(lines)) != null) {\n const key = match[1]\n\n // Default undefined or null to empty string\n let value = (match[2] || '')\n\n // Remove whitespace\n value = value.trim()\n\n // Check if double quoted\n const maybeQuote = value[0]\n\n // Remove surrounding quotes\n value = value.replace(/^(['\"`])([\\s\\S]*)\\1$/mg, '$2')\n\n // Expand newlines if double quoted\n if (maybeQuote === '\"') {\n value = value.replace(/\\\\n/g, '\\n')\n value = value.replace(/\\\\r/g, '\\r')\n }\n\n // Add to object\n obj[key] = value\n }\n\n return obj\n}\n\nfunction _parseVault (options) {\n options = options || {}\n\n const vaultPath = _vaultPath(options)\n options.path = vaultPath // parse .env.vault\n const result = DotenvModule.configDotenv(options)\n if (!result.parsed) {\n const err = new Error(`MISSING_DATA: Cannot parse ${vaultPath} for an unknown reason`)\n err.code = 'MISSING_DATA'\n throw err\n }\n\n // handle scenario for comma separated keys - for use with key rotation\n // example: DOTENV_KEY=\"dotenv://:key_1234@dotenvx.com/vault/.env.vault?environment=prod,dotenv://:key_7890@dotenvx.com/vault/.env.vault?environment=prod\"\n const keys = _dotenvKey(options).split(',')\n const length = keys.length\n\n let decrypted\n for (let i = 0; i < length; i++) {\n try {\n // Get full key\n const key = keys[i].trim()\n\n // Get instructions for decrypt\n const attrs = _instructions(result, key)\n\n // Decrypt\n decrypted = DotenvModule.decrypt(attrs.ciphertext, attrs.key)\n\n break\n } catch (error) {\n // last key\n if (i + 1 >= length) {\n throw error\n }\n // try next key\n }\n }\n\n // Parse decrypted .env string\n return DotenvModule.parse(decrypted)\n}\n\nfunction _warn (message) {\n console.log(`[dotenv@${version}][WARN] ${message}`)\n}\n\nfunction _debug (message) {\n console.log(`[dotenv@${version}][DEBUG] ${message}`)\n}\n\nfunction _log (message) {\n console.log(`[dotenv@${version}] ${message}`)\n}\n\nfunction _dotenvKey (options) {\n // prioritize developer directly setting options.DOTENV_KEY\n if (options && options.DOTENV_KEY && options.DOTENV_KEY.length > 0) {\n return options.DOTENV_KEY\n }\n\n // secondary infra already contains a DOTENV_KEY environment variable\n if (process.env.DOTENV_KEY && process.env.DOTENV_KEY.length > 0) {\n return process.env.DOTENV_KEY\n }\n\n // fallback to empty string\n return ''\n}\n\nfunction _instructions (result, dotenvKey) {\n // Parse DOTENV_KEY. Format is a URI\n let uri\n try {\n uri = new URL(dotenvKey)\n } catch (error) {\n if (error.code === 'ERR_INVALID_URL') {\n const err = new Error('INVALID_DOTENV_KEY: Wrong format. Must be in valid uri format like dotenv://:key_1234@dotenvx.com/vault/.env.vault?environment=development')\n err.code = 'INVALID_DOTENV_KEY'\n throw err\n }\n\n throw error\n }\n\n // Get decrypt key\n const key = uri.password\n if (!key) {\n const err = new Error('INVALID_DOTENV_KEY: Missing key part')\n err.code = 'INVALID_DOTENV_KEY'\n throw err\n }\n\n // Get environment\n const environment = uri.searchParams.get('environment')\n if (!environment) {\n const err = new Error('INVALID_DOTENV_KEY: Missing environment part')\n err.code = 'INVALID_DOTENV_KEY'\n throw err\n }\n\n // Get ciphertext payload\n const environmentKey = `DOTENV_VAULT_${environment.toUpperCase()}`\n const ciphertext = result.parsed[environmentKey] // DOTENV_VAULT_PRODUCTION\n if (!ciphertext) {\n const err = new Error(`NOT_FOUND_DOTENV_ENVIRONMENT: Cannot locate environment ${environmentKey} in your .env.vault file.`)\n err.code = 'NOT_FOUND_DOTENV_ENVIRONMENT'\n throw err\n }\n\n return { ciphertext, key }\n}\n\nfunction _vaultPath (options) {\n let possibleVaultPath = null\n\n if (options && options.path && options.path.length > 0) {\n if (Array.isArray(options.path)) {\n for (const filepath of options.path) {\n if (fs.existsSync(filepath)) {\n possibleVaultPath = filepath.endsWith('.vault') ? filepath : `${filepath}.vault`\n }\n }\n } else {\n possibleVaultPath = options.path.endsWith('.vault') ? options.path : `${options.path}.vault`\n }\n } else {\n possibleVaultPath = path.resolve(process.cwd(), '.env.vault')\n }\n\n if (fs.existsSync(possibleVaultPath)) {\n return possibleVaultPath\n }\n\n return null\n}\n\nfunction _resolveHome (envPath) {\n return envPath[0] === '~' ? path.join(os.homedir(), envPath.slice(1)) : envPath\n}\n\nfunction _configVault (options) {\n const debug = Boolean(options && options.debug)\n const quiet = options && 'quiet' in options ? options.quiet : true\n\n if (debug || !quiet) {\n _log('Loading env from encrypted .env.vault')\n }\n\n const parsed = DotenvModule._parseVault(options)\n\n let processEnv = process.env\n if (options && options.processEnv != null) {\n processEnv = options.processEnv\n }\n\n DotenvModule.populate(processEnv, parsed, options)\n\n return { parsed }\n}\n\nfunction configDotenv (options) {\n const dotenvPath = path.resolve(process.cwd(), '.env')\n let encoding = 'utf8'\n const debug = Boolean(options && options.debug)\n const quiet = options && 'quiet' in options ? options.quiet : true\n\n if (options && options.encoding) {\n encoding = options.encoding\n } else {\n if (debug) {\n _debug('No encoding is specified. UTF-8 is used by default')\n }\n }\n\n let optionPaths = [dotenvPath] // default, look for .env\n if (options && options.path) {\n if (!Array.isArray(options.path)) {\n optionPaths = [_resolveHome(options.path)]\n } else {\n optionPaths = [] // reset default\n for (const filepath of options.path) {\n optionPaths.push(_resolveHome(filepath))\n }\n }\n }\n\n // Build the parsed data in a temporary object (because we need to return it). Once we have the final\n // parsed data, we will combine it with process.env (or options.processEnv if provided).\n let lastError\n const parsedAll = {}\n for (const path of optionPaths) {\n try {\n // Specifying an encoding returns a string instead of a buffer\n const parsed = DotenvModule.parse(fs.readFileSync(path, { encoding }))\n\n DotenvModule.populate(parsedAll, parsed, options)\n } catch (e) {\n if (debug) {\n _debug(`Failed to load ${path} ${e.message}`)\n }\n lastError = e\n }\n }\n\n let processEnv = process.env\n if (options && options.processEnv != null) {\n processEnv = options.processEnv\n }\n\n DotenvModule.populate(processEnv, parsedAll, options)\n\n if (debug || !quiet) {\n const keysCount = Object.keys(parsedAll).length\n const shortPaths = []\n for (const filePath of optionPaths) {\n try {\n const relative = path.relative(process.cwd(), filePath)\n shortPaths.push(relative)\n } catch (e) {\n if (debug) {\n _debug(`Failed to load ${filePath} ${e.message}`)\n }\n lastError = e\n }\n }\n\n _log(`injecting env (${keysCount}) from ${shortPaths.join(',')}`)\n }\n\n if (lastError) {\n return { parsed: parsedAll, error: lastError }\n } else {\n return { parsed: parsedAll }\n }\n}\n\n// Populates process.env from .env file\nfunction config (options) {\n // fallback to original dotenv if DOTENV_KEY is not set\n if (_dotenvKey(options).length === 0) {\n return DotenvModule.configDotenv(options)\n }\n\n const vaultPath = _vaultPath(options)\n\n // dotenvKey exists but .env.vault file does not exist\n if (!vaultPath) {\n _warn(`You set DOTENV_KEY but you are missing a .env.vault file at ${vaultPath}. Did you forget to build it?`)\n\n return DotenvModule.configDotenv(options)\n }\n\n return DotenvModule._configVault(options)\n}\n\nfunction decrypt (encrypted, keyStr) {\n const key = Buffer.from(keyStr.slice(-64), 'hex')\n let ciphertext = Buffer.from(encrypted, 'base64')\n\n const nonce = ciphertext.subarray(0, 12)\n const authTag = ciphertext.subarray(-16)\n ciphertext = ciphertext.subarray(12, -16)\n\n try {\n const aesgcm = crypto.createDecipheriv('aes-256-gcm', key, nonce)\n aesgcm.setAuthTag(authTag)\n return `${aesgcm.update(ciphertext)}${aesgcm.final()}`\n } catch (error) {\n const isRange = error instanceof RangeError\n const invalidKeyLength = error.message === 'Invalid key length'\n const decryptionFailed = error.message === 'Unsupported state or unable to authenticate data'\n\n if (isRange || invalidKeyLength) {\n const err = new Error('INVALID_DOTENV_KEY: It must be 64 characters long (or more)')\n err.code = 'INVALID_DOTENV_KEY'\n throw err\n } else if (decryptionFailed) {\n const err = new Error('DECRYPTION_FAILED: Please check your DOTENV_KEY')\n err.code = 'DECRYPTION_FAILED'\n throw err\n } else {\n throw error\n }\n }\n}\n\n// Populate process.env with parsed values\nfunction populate (processEnv, parsed, options = {}) {\n const debug = Boolean(options && options.debug)\n const override = Boolean(options && options.override)\n\n if (typeof parsed !== 'object') {\n const err = new Error('OBJECT_REQUIRED: Please check the processEnv argument being passed to populate')\n err.code = 'OBJECT_REQUIRED'\n throw err\n }\n\n // Set process.env\n for (const key of Object.keys(parsed)) {\n if (Object.prototype.hasOwnProperty.call(processEnv, key)) {\n if (override === true) {\n processEnv[key] = parsed[key]\n }\n\n if (debug) {\n if (override === true) {\n _debug(`\"${key}\" is already defined and WAS overwritten`)\n } else {\n _debug(`\"${key}\" is already defined and was NOT overwritten`)\n }\n }\n } else {\n processEnv[key] = parsed[key]\n }\n }\n}\n\nconst DotenvModule = {\n configDotenv,\n _configVault,\n _parseVault,\n config,\n decrypt,\n parse,\n populate\n}\n\nmodule.exports.configDotenv = DotenvModule.configDotenv\nmodule.exports._configVault = DotenvModule._configVault\nmodule.exports._parseVault = DotenvModule._parseVault\nmodule.exports.config = DotenvModule.config\nmodule.exports.decrypt = DotenvModule.decrypt\nmodule.exports.parse = DotenvModule.parse\nmodule.exports.populate = DotenvModule.populate\n\nmodule.exports = DotenvModule\n"],"names":["fs","require$$0","path","require$$1","os","require$$2","crypto","require$$3","version","require$$4","LINE","parse","src","obj","lines","match","key","value","maybeQuote","_parseVault","options","vaultPath","_vaultPath","result","DotenvModule","err","keys","_dotenvKey","length","decrypted","i","attrs","_instructions","error","_warn","message","_debug","_log","dotenvKey","uri","environment","environmentKey","ciphertext","possibleVaultPath","filepath","_resolveHome","envPath","_configVault","debug","quiet","parsed","processEnv","configDotenv","dotenvPath","encoding","optionPaths","lastError","parsedAll","e","keysCount","shortPaths","filePath","relative","config","decrypt","encrypted","keyStr","nonce","authTag","aesgcm","isRange","invalidKeyLength","decryptionFailed","populate","override","mainModule"],"mappings":"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","x_google_ignoreList":[0]}
@@ -0,0 +1,8 @@
1
+ const e = "16.6.1", o = {
2
+ version: e
3
+ };
4
+ export {
5
+ o as default,
6
+ e as version
7
+ };
8
+ //# sourceMappingURL=package.json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
@@ -0,0 +1,6 @@
1
+ const s = "https://apps-service-585087176299.us-central1.run.app", c = "https://bsai-public.sfo3.cdn.digitaloceanspaces.com";
2
+ export {
3
+ s as CONST_APPS_SERVICE_URL,
4
+ c as CONST_COMPONENTS_CDN_URL
5
+ };
6
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sources":["../../../constants.ts"],"sourcesContent":["// export const CONST_APPS_SERVICE_URL = \"http://localhost:3000\";\nexport const CONST_APPS_SERVICE_URL =\n \"https://apps-service-585087176299.us-central1.run.app\";\n// export const CONST_COMPONENTS_CDN_URL = \"http://localhost:3000\";\n\n// export const CONST_APPS_SERVICE_URL = \"https://apps-service-dev.bravostudio.app\"\nexport const CONST_COMPONENTS_CDN_URL =\n \"https://bsai-public.sfo3.cdn.digitaloceanspaces.com\";\n// export const CONST_COMPONENTS_CDN_URL = \"https://local-bravo-apps-public.s3.amazonaws.com\";\n// export const CONST_COMPONENTS_CDN_URL =\n// \"https://apps-public-dev.bravostudio.app\";\n// local-bravo-apps-assets\n"],"names":["CONST_APPS_SERVICE_URL","CONST_COMPONENTS_CDN_URL"],"mappings":"AACO,MAAMA,IACX,yDAIWC,IACX;"}
@@ -0,0 +1,5 @@
1
+ import EncoreAppContext from "./contexts/EncoreAppContext";
2
+ import EncoreBindingContext from "./contexts/EncoreBindingContext";
3
+ import useEncoreState from "./stores/useEncoreState";
4
+ export { EncoreAppContext, EncoreBindingContext, useEncoreState };
5
+ //# sourceMappingURL=app.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,MAAM,6BAA6B,CAAC;AAC3D,OAAO,oBAAoB,MAAM,iCAAiC,CAAC;AACnE,OAAO,cAAc,MAAM,yBAAyB,CAAC;AAErD,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,cAAc,EAAE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function runDownload(args: string[]): Promise<void>;
2
+ //# sourceMappingURL=download.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/download.ts"],"names":[],"mappings":"AA+GA,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,iBAoB/C"}
@@ -0,0 +1,2 @@
1
+ export declare function runGenerate(args: string[]): Promise<void>;
2
+ //# sourceMappingURL=generate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/generate.ts"],"names":[],"mappings":"AAm6FA,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,iBAgE/C"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,12 @@
1
+ import React from "react";
2
+ type Props = {
3
+ name: string;
4
+ children: unknown;
5
+ componentId?: string;
6
+ fallback?: React.ReactNode;
7
+ reloadKey?: string | number;
8
+ componentCode?: string;
9
+ };
10
+ declare const _default: React.NamedExoticComponent<Props>;
11
+ export default _default;
12
+ //# sourceMappingURL=DynamicComponent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DynamicComponent.d.ts","sourceRoot":"","sources":["../../../src/components/DynamicComponent.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAEjD,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;;AA8BF,wBAA4C"}
@@ -0,0 +1,27 @@
1
+ import React from "react";
2
+ import { type EncoreActionPayload } from "../contexts/EncoreActionContext";
3
+ type Props = {
4
+ appId: string;
5
+ pageId?: string;
6
+ componentId?: string;
7
+ fallback?: React.ReactNode;
8
+ onSizeChange?: (size: {
9
+ width: number;
10
+ height: number;
11
+ }) => void;
12
+ onAction?: (payload: EncoreActionPayload) => void | Promise<void>;
13
+ data?: Record<string, string | number | any[]>;
14
+ source?: "remote" | "local";
15
+ repeatingContainerControls?: Record<string, {
16
+ currentIndex?: number;
17
+ onIndexChange?: (index: number) => void;
18
+ }>;
19
+ inputGroups?: Record<string, string>;
20
+ baseURL?: string;
21
+ appDefinition?: any;
22
+ pageDefinition?: any;
23
+ componentCode?: string;
24
+ };
25
+ declare const EncoreApp: ({ appId, pageId, componentId, fallback, onSizeChange, onAction, data, source, repeatingContainerControls, inputGroups, baseURL, appDefinition, pageDefinition, componentCode, }: Props) => import("react/jsx-runtime").JSX.Element;
26
+ export default EncoreApp;
27
+ //# sourceMappingURL=EncoreApp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EncoreApp.d.ts","sourceRoot":"","sources":["../../../src/components/EncoreApp.tsx"],"names":[],"mappings":"AAGA,OAAO,KAON,MAAM,OAAO,CAAC;AAIf,OAA4B,EAC1B,KAAK,mBAAmB,EACzB,MAAM,iCAAiC,CAAC;AAQzC,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACjE,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,GAAG,EAAE,CAAC,CAAC;IAE/C,MAAM,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAE5B,0BAA0B,CAAC,EAAE,MAAM,CACjC,MAAM,EACN;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;KAAE,CACnE,CAAC;IAEF,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAGrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,GAAG,CAAC;IACpB,cAAc,CAAC,EAAE,GAAG,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAeF,QAAA,MAAM,SAAS,GAAI,iLAehB,KAAK,4CAuqBP,CAAC;AAEF,eAAe,SAAS,CAAC"}