@multiplatform.one/core 7.83.1 → 7.84.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 (137) hide show
  1. package/dist/cjs/app/CreateApp.cjs +233 -0
  2. package/dist/cjs/app/CreateApp.native.js +253 -0
  3. package/dist/cjs/app/CreateApp.native.js.map +1 -0
  4. package/dist/cjs/app/CreateRootLayout.cjs +181 -0
  5. package/dist/cjs/app/CreateRootLayout.native.js +115 -0
  6. package/dist/cjs/app/CreateRootLayout.native.js.map +1 -0
  7. package/dist/cjs/app/RuntimePublicConfigScript.cjs +40 -0
  8. package/dist/cjs/app/RuntimePublicConfigScript.native.js +48 -0
  9. package/dist/cjs/app/RuntimePublicConfigScript.native.js.map +1 -0
  10. package/dist/cjs/app/TanstackDevtools.cjs +145 -0
  11. package/dist/cjs/app/TanstackDevtools.native.js +163 -0
  12. package/dist/cjs/app/TanstackDevtools.native.js.map +1 -0
  13. package/dist/cjs/app/TanstackProvider.cjs +81 -0
  14. package/dist/cjs/app/TanstackProvider.native.js +56 -0
  15. package/dist/cjs/app/TanstackProvider.native.js.map +1 -0
  16. package/dist/cjs/app/deepLinkPath.cjs +41 -0
  17. package/dist/cjs/app/deepLinkPath.native.js +46 -0
  18. package/dist/cjs/app/deepLinkPath.native.js.map +1 -0
  19. package/dist/cjs/app/devtoolsTrigger.cjs +281 -0
  20. package/dist/cjs/app/devtoolsTrigger.native.js +338 -0
  21. package/dist/cjs/app/devtoolsTrigger.native.js.map +1 -0
  22. package/dist/cjs/app/frappeSocketPort.cjs +40 -0
  23. package/dist/cjs/app/frappeSocketPort.native.js +45 -0
  24. package/dist/cjs/app/frappeSocketPort.native.js.map +1 -0
  25. package/dist/cjs/app/frappeSyncOptions.cjs +43 -0
  26. package/dist/cjs/app/frappeSyncOptions.native.js +46 -0
  27. package/dist/cjs/app/frappeSyncOptions.native.js.map +1 -0
  28. package/dist/cjs/app/index.cjs +22 -0
  29. package/dist/cjs/app/index.native.js +25 -0
  30. package/dist/cjs/app/index.native.js.map +1 -0
  31. package/dist/cjs/app/loadWalletProvider.cjs +32 -0
  32. package/dist/cjs/app/loadWalletProvider.native.js +44 -0
  33. package/dist/cjs/app/loadWalletProvider.native.js.map +1 -0
  34. package/dist/cjs/app/oneFrappeNavigation.cjs +45 -0
  35. package/dist/cjs/app/oneFrappeNavigation.native.js +52 -0
  36. package/dist/cjs/app/oneFrappeNavigation.native.js.map +1 -0
  37. package/dist/cjs/app/rootLayoutShared.cjs +18 -0
  38. package/dist/cjs/app/rootLayoutShared.native.js +21 -0
  39. package/dist/cjs/app/rootLayoutShared.native.js.map +1 -0
  40. package/dist/cjs/app/runtimePublicConfigMiddleware.cjs +50 -0
  41. package/dist/cjs/app/runtimePublicConfigMiddleware.native.js +55 -0
  42. package/dist/cjs/app/runtimePublicConfigMiddleware.native.js.map +1 -0
  43. package/dist/cjs/app/useNativeDeepLinks.cjs +28 -0
  44. package/dist/cjs/app/useNativeDeepLinks.native.js +56 -0
  45. package/dist/cjs/app/useNativeDeepLinks.native.js.map +1 -0
  46. package/dist/cjs/healthz.cjs +32 -0
  47. package/dist/cjs/healthz.native.js +35 -0
  48. package/dist/cjs/healthz.native.js.map +1 -0
  49. package/dist/cjs/index.cjs +21 -0
  50. package/dist/cjs/index.native.js +24 -0
  51. package/dist/cjs/index.native.js.map +1 -0
  52. package/dist/cjs/layouts/CreateDefaultLayout.cjs +99 -0
  53. package/dist/cjs/layouts/CreateDefaultLayout.native.js +105 -0
  54. package/dist/cjs/layouts/CreateDefaultLayout.native.js.map +1 -0
  55. package/dist/cjs/layouts/index.cjs +28 -0
  56. package/dist/cjs/layouts/index.native.js +31 -0
  57. package/dist/cjs/layouts/index.native.js.map +1 -0
  58. package/dist/esm/app/CreateApp.mjs +196 -0
  59. package/dist/esm/app/CreateApp.mjs.map +1 -0
  60. package/dist/esm/app/CreateApp.native.js +213 -0
  61. package/dist/esm/app/CreateApp.native.js.map +1 -0
  62. package/dist/esm/app/CreateRootLayout.mjs +145 -0
  63. package/dist/esm/app/CreateRootLayout.mjs.map +1 -0
  64. package/dist/esm/app/CreateRootLayout.native.js +76 -0
  65. package/dist/esm/app/CreateRootLayout.native.js.map +1 -0
  66. package/dist/esm/app/RuntimePublicConfigScript.mjs +15 -0
  67. package/dist/esm/app/RuntimePublicConfigScript.mjs.map +1 -0
  68. package/dist/esm/app/RuntimePublicConfigScript.native.js +20 -0
  69. package/dist/esm/app/RuntimePublicConfigScript.native.js.map +1 -0
  70. package/dist/esm/app/TanstackDevtools.mjs +109 -0
  71. package/dist/esm/app/TanstackDevtools.mjs.map +1 -0
  72. package/dist/esm/app/TanstackDevtools.native.js +124 -0
  73. package/dist/esm/app/TanstackDevtools.native.js.map +1 -0
  74. package/dist/esm/app/TanstackProvider.mjs +45 -0
  75. package/dist/esm/app/TanstackProvider.mjs.map +1 -0
  76. package/dist/esm/app/TanstackProvider.native.js +28 -0
  77. package/dist/esm/app/TanstackProvider.native.js.map +1 -0
  78. package/dist/esm/app/deepLinkPath.mjs +16 -0
  79. package/dist/esm/app/deepLinkPath.mjs.map +1 -0
  80. package/dist/esm/app/deepLinkPath.native.js +18 -0
  81. package/dist/esm/app/deepLinkPath.native.js.map +1 -0
  82. package/dist/esm/app/devtoolsTrigger.mjs +238 -0
  83. package/dist/esm/app/devtoolsTrigger.mjs.map +1 -0
  84. package/dist/esm/app/devtoolsTrigger.native.js +292 -0
  85. package/dist/esm/app/devtoolsTrigger.native.js.map +1 -0
  86. package/dist/esm/app/frappeSocketPort.mjs +15 -0
  87. package/dist/esm/app/frappeSocketPort.mjs.map +1 -0
  88. package/dist/esm/app/frappeSocketPort.native.js +17 -0
  89. package/dist/esm/app/frappeSocketPort.native.js.map +1 -0
  90. package/dist/esm/app/frappeSyncOptions.mjs +18 -0
  91. package/dist/esm/app/frappeSyncOptions.mjs.map +1 -0
  92. package/dist/esm/app/frappeSyncOptions.native.js +18 -0
  93. package/dist/esm/app/frappeSyncOptions.native.js.map +1 -0
  94. package/dist/esm/app/index.mjs +4 -0
  95. package/dist/esm/app/index.mjs.map +1 -0
  96. package/dist/esm/app/index.native.js +4 -0
  97. package/dist/esm/app/index.native.js.map +1 -0
  98. package/dist/esm/app/loadWalletProvider.mjs +7 -0
  99. package/dist/esm/app/loadWalletProvider.mjs.map +1 -0
  100. package/dist/esm/app/loadWalletProvider.native.js +16 -0
  101. package/dist/esm/app/loadWalletProvider.native.js.map +1 -0
  102. package/dist/esm/app/oneFrappeNavigation.mjs +20 -0
  103. package/dist/esm/app/oneFrappeNavigation.mjs.map +1 -0
  104. package/dist/esm/app/oneFrappeNavigation.native.js +24 -0
  105. package/dist/esm/app/oneFrappeNavigation.native.js.map +1 -0
  106. package/dist/esm/app/rootLayoutShared.mjs +2 -0
  107. package/dist/esm/app/rootLayoutShared.mjs.map +1 -0
  108. package/dist/esm/app/rootLayoutShared.native.js +2 -0
  109. package/dist/esm/app/rootLayoutShared.native.js.map +1 -0
  110. package/dist/esm/app/runtimePublicConfigMiddleware.mjs +25 -0
  111. package/dist/esm/app/runtimePublicConfigMiddleware.mjs.map +1 -0
  112. package/dist/esm/app/runtimePublicConfigMiddleware.native.js +27 -0
  113. package/dist/esm/app/runtimePublicConfigMiddleware.native.js.map +1 -0
  114. package/dist/esm/app/useNativeDeepLinks.mjs +3 -0
  115. package/dist/esm/app/useNativeDeepLinks.mjs.map +1 -0
  116. package/dist/esm/app/useNativeDeepLinks.native.js +28 -0
  117. package/dist/esm/app/useNativeDeepLinks.native.js.map +1 -0
  118. package/dist/esm/healthz.mjs +7 -0
  119. package/dist/esm/healthz.mjs.map +1 -0
  120. package/dist/esm/healthz.native.js +7 -0
  121. package/dist/esm/healthz.native.js.map +1 -0
  122. package/dist/esm/index.mjs +3 -0
  123. package/dist/esm/index.mjs.map +1 -0
  124. package/dist/esm/index.native.js +3 -0
  125. package/dist/esm/index.native.js.map +1 -0
  126. package/dist/esm/layouts/CreateDefaultLayout.mjs +74 -0
  127. package/dist/esm/layouts/CreateDefaultLayout.mjs.map +1 -0
  128. package/dist/esm/layouts/CreateDefaultLayout.native.js +77 -0
  129. package/dist/esm/layouts/CreateDefaultLayout.native.js.map +1 -0
  130. package/dist/esm/layouts/index.mjs +3 -0
  131. package/dist/esm/layouts/index.mjs.map +1 -0
  132. package/dist/esm/layouts/index.native.js +3 -0
  133. package/dist/esm/layouts/index.native.js.map +1 -0
  134. package/package.json +32 -16
  135. package/src/app/CreateApp.frappeAuth.spec.tsx +73 -0
  136. package/src/app/CreateApp.tsx +23 -23
  137. package/src/app/CreateRootLayout.web.spec.tsx +15 -0
@@ -0,0 +1,233 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all) __defProp(target, name, {
9
+ get: all[name],
10
+ enumerable: true
11
+ });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
16
+ get: () => from[key],
17
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
18
+ });
19
+ }
20
+ return to;
21
+ };
22
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
23
+ // If the importer is in node compatibility mode or this is not an ESM
24
+ // file that has been converted to a CommonJS file using a Babel-
25
+ // compatible transform (i.e. "__esModule" has not been set), then set
26
+ // "default" to the CommonJS "module.exports" for node compatibility.
27
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
28
+ value: mod,
29
+ enumerable: true
30
+ }) : target, mod));
31
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
32
+ value: true
33
+ }), mod);
34
+ var CreateApp_exports = {};
35
+ __export(CreateApp_exports, {
36
+ createApp: () => createApp,
37
+ followPageOriginForLoopback: () => followPageOriginForLoopback
38
+ });
39
+ module.exports = __toCommonJS(CreateApp_exports);
40
+ var import_react = require("react");
41
+ var import_platform = require("@multiplatform.one/platform");
42
+ var import_theme = require("@multiplatform.one/theme");
43
+ var import_frappe_ui = require("@multiplatform.one/frappe-ui");
44
+ var import_frappeSocketPort = require("./frappeSocketPort.cjs");
45
+ var import_frappeSyncOptions = require("./frappeSyncOptions.cjs");
46
+ var import_oneFrappeNavigation = require("./oneFrappeNavigation.cjs");
47
+ var import_TanstackProvider = require("./TanstackProvider.cjs");
48
+ var import_loadWalletProvider = __toESM(require("./loadWalletProvider.cjs"));
49
+ var import_jsx_runtime = require("react/jsx-runtime");
50
+ const LOOPBACK_HOSTS = /* @__PURE__ */new Set(["localhost", "127.0.0.1", "[::1]"]);
51
+ function currentPageLocation() {
52
+ if (typeof window === "undefined" || !window.location?.hostname) return void 0;
53
+ return window.location;
54
+ }
55
+ function followPageOriginForLoopback(configured, page = currentPageLocation(), dev = import_platform.isDev) {
56
+ if (!page?.hostname) return configured;
57
+ try {
58
+ const url = new URL(configured);
59
+ if (!LOOPBACK_HOSTS.has(url.hostname) || LOOPBACK_HOSTS.has(page.hostname)) return configured;
60
+ url.hostname = page.hostname;
61
+ if (!dev && (page.protocol === "https:" || page.protocol === "http:")) {
62
+ url.protocol = page.protocol;
63
+ url.port = page.port;
64
+ }
65
+ return url.toString().replace(/\/$/, "");
66
+ } catch {
67
+ return configured;
68
+ }
69
+ }
70
+ const AppConfigContext = (0, import_react.createContext)({});
71
+ function createApp(appConfig) {
72
+ const builtinProviders = [];
73
+ if (appConfig.tanstack) {
74
+ const cfg = appConfig.tanstack === true ? {} : {
75
+ ...appConfig.tanstack
76
+ };
77
+ if (appConfig.theme?.tamagui && !cfg.tamaguiConfig) {
78
+ cfg.tamaguiConfig = appConfig.theme.tamagui;
79
+ }
80
+ builtinProviders.push((0, import_TanstackProvider.createTanstackProvider)(cfg));
81
+ }
82
+ if (appConfig.web3) {
83
+ let Web3Provider = function ({
84
+ children
85
+ }) {
86
+ const enabled = cfg.enabled ?? import_platform.config.get("WEB3_ENABLED") === "1";
87
+ if (!enabled) return children;
88
+ if (import_platform.isWeb) return children;
89
+ const testnetsEnabled = cfg.enableTestnets ?? import_platform.config.get("WEB3_TESTNETS_ENABLED") === "1";
90
+ const WalletWithChildren = import_loadWalletProvider.default;
91
+ return (
92
+ // fallback must NOT be `children`: rendering web3-consuming screens before
93
+ // the lazy WagmiProvider loads throws "useConfig must be used within WagmiProvider".
94
+ /* @__PURE__ */
95
+ (0, import_jsx_runtime.jsx)(import_react.Suspense, {
96
+ fallback: null,
97
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(WalletWithChildren, {
98
+ config: {
99
+ appName: cfg.appName || "Multiplatform.one",
100
+ appDescription: cfg.appDescription || "Connect your wallet",
101
+ appUrl: cfg.appUrl || (import_platform.isWeb && typeof window !== "undefined" ? window.location.origin : ""),
102
+ appIcon: cfg.appIcon,
103
+ enableTestnets: testnetsEnabled,
104
+ localnet: cfg.localnet ?? import_platform.config.get("WEB3_LOCALNET_ENABLED") === "1",
105
+ localnetRpcUrl: cfg.localnetRpcUrl || import_platform.config.get("WEB3_EVM_RPC") || void 0,
106
+ solanaRpcUrl: cfg.solanaRpcUrl || import_platform.config.get("WEB3_SOLANA_RPC") || void 0,
107
+ suiRpcUrl: cfg.suiRpcUrl || import_platform.config.get("WEB3_SUI_RPC") || void 0,
108
+ webViewUrl: cfg.webViewUrl || import_platform.config.get("WEB3_WEBVIEW_URL") || void 0,
109
+ mockWallet: cfg.mockWallet ?? import_platform.config.get("WEB3_MOCK_WALLET") === "1"
110
+ },
111
+ children
112
+ })
113
+ })
114
+ );
115
+ };
116
+ const cfg = appConfig.web3 === true ? {} : appConfig.web3;
117
+ Web3Provider.displayName = "Web3Provider";
118
+ builtinProviders.push(Web3Provider);
119
+ }
120
+ if (appConfig.keycloak) {
121
+ let KeycloakProviderWrapper = function ({
122
+ children
123
+ }) {
124
+ const enabled = cfg.enabled ?? import_platform.config.get("KEYCLOAK_ENABLED") === "1";
125
+ if (!enabled) return children;
126
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_react.Suspense, {
127
+ fallback: children,
128
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(LazyKeycloakProvider, {
129
+ disabled: false,
130
+ debug: cfg.debug ?? import_platform.config.get("DEBUG") === "1",
131
+ baseUrl: cfg.baseUrl || import_platform.config.get("KEYCLOAK_BASE_URL") || `${import_platform.config.get("BASE_URL") || ""}/auth`,
132
+ clientId: cfg.clientId || import_platform.config.get("KEYCLOAK_CLIENT_ID"),
133
+ publicClientId: cfg.publicClientId || import_platform.config.get("KEYCLOAK_PUBLIC_CLIENT_ID"),
134
+ realm: cfg.realm || import_platform.config.get("KEYCLOAK_REALM") || "",
135
+ iframeSso: cfg.iframeSso,
136
+ loginRedirectUri: cfg.loginRedirectUri,
137
+ messageHandlerKeys: cfg.messageHandlerKeys || [],
138
+ betterAuthBaseUrl: cfg.betterAuthBaseUrl || import_platform.config.get("BETTER_AUTH_BASE_URL") || import_platform.config.get("BASE_URL") || void 0,
139
+ expoScheme: cfg.expoScheme,
140
+ loadingComponent: cfg.loadingComponent,
141
+ children
142
+ })
143
+ });
144
+ };
145
+ const cfg = appConfig.keycloak === true ? {} : appConfig.keycloak;
146
+ const LazyKeycloakProvider = (0, import_react.lazy)(async () => {
147
+ const mod = await import("@multiplatform.one/keycloak");
148
+ return {
149
+ default: mod.KeycloakProvider
150
+ };
151
+ });
152
+ KeycloakProviderWrapper.displayName = "KeycloakProvider";
153
+ builtinProviders.push(KeycloakProviderWrapper);
154
+ }
155
+ if (appConfig.frappe) {
156
+ let FrappeProviderWrapper = function ({
157
+ children
158
+ }) {
159
+ const configuredCatchUp = import_platform.config.get("FRAPPE_CATCH_UP_STRATEGY");
160
+ const configuredWrite = import_platform.config.get("FRAPPE_WRITE_STRATEGY");
161
+ const syncOptions = (0, import_react.useMemo)(() => (0, import_frappeSyncOptions.frappeSyncOptions)(cfg.syncOptions, configuredCatchUp, configuredWrite), [configuredCatchUp, configuredWrite]);
162
+ const enabled = cfg.enabled ?? (!!cfg.fixtures || import_platform.config.get("FRAPPE_ENABLED") === "1");
163
+ if (!enabled) return children;
164
+ const configured = cfg.fixtures ? cfg.baseURL : cfg.baseURL || import_platform.config.get("BASE_URL") || "http://localhost:8000";
165
+ const baseURL = configured ? followPageOriginForLoopback(configured) : void 0;
166
+ const socketPort = cfg.socketPort ?? (0, import_frappeSocketPort.frappeSocketPort)(import_platform.config.get("FRAPPE_SOCKETIO_PORT"), baseURL);
167
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_frappe_ui.FrappeProvider, {
168
+ baseURL,
169
+ realtime: cfg.realtime,
170
+ socketPort,
171
+ auth,
172
+ syncOptions,
173
+ fixtures: cfg.fixtures,
174
+ navigation: import_oneFrappeNavigation.oneFrappeNavigation,
175
+ children
176
+ });
177
+ };
178
+ const cfg = appConfig.frappe === true ? {} : appConfig.frappe;
179
+ const auth = cfg.auth ?? (appConfig.keycloak ? {
180
+ useToken: true,
181
+ type: "Bearer",
182
+ token: async () => {
183
+ const mod = await import("@multiplatform.one/keycloak");
184
+ return (await mod.getKeycloakBearerToken()) || "";
185
+ }
186
+ } : void 0);
187
+ FrappeProviderWrapper.displayName = "FrappeProvider";
188
+ builtinProviders.push(FrappeProviderWrapper);
189
+ }
190
+ const allProviders = [...builtinProviders, ...(appConfig.providers || [])];
191
+ function AppProvider({
192
+ children,
193
+ systemTheme,
194
+ themeConfig
195
+ }) {
196
+ const theme = themeConfig || appConfig.theme;
197
+ let content = theme ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_theme.ThemeProvider, {
198
+ config: theme,
199
+ systemTheme,
200
+ children
201
+ }) : children;
202
+ for (let i = allProviders.length - 1; i >= 0; i--) {
203
+ const Provider = allProviders[i];
204
+ content = /* @__PURE__ */(0, import_jsx_runtime.jsx)(Provider, {
205
+ children: content
206
+ });
207
+ }
208
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(AppConfigContext.Provider, {
209
+ value: appConfig,
210
+ children: content
211
+ });
212
+ }
213
+ AppProvider.displayName = "AppProvider";
214
+ function withApp(Screen) {
215
+ function WrappedScreen(props) {
216
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(AppProvider, {
217
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(Screen, {
218
+ ...props
219
+ })
220
+ });
221
+ }
222
+ WrappedScreen.displayName = `withApp(${Screen.displayName || Screen.name || "Component"})`;
223
+ return WrappedScreen;
224
+ }
225
+ function useAppConfig() {
226
+ return (0, import_react.useContext)(AppConfigContext);
227
+ }
228
+ return {
229
+ AppProvider,
230
+ withApp,
231
+ useAppConfig
232
+ };
233
+ }
@@ -0,0 +1,253 @@
1
+ "use strict";
2
+
3
+ var __create = Object.create;
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getProtoOf = Object.getPrototypeOf;
8
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __export = (target, all) => {
10
+ for (var name in all) __defProp(target, name, {
11
+ get: all[name],
12
+ enumerable: true
13
+ });
14
+ };
15
+ var __copyProps = (to, from, except, desc) => {
16
+ if (from && typeof from === "object" || typeof from === "function") {
17
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
18
+ get: () => from[key],
19
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
20
+ });
21
+ }
22
+ return to;
23
+ };
24
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
25
+ // If the importer is in node compatibility mode or this is not an ESM
26
+ // file that has been converted to a CommonJS file using a Babel-
27
+ // compatible transform (i.e. "__esModule" has not been set), then set
28
+ // "default" to the CommonJS "module.exports" for node compatibility.
29
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
30
+ value: mod,
31
+ enumerable: true
32
+ }) : target, mod));
33
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
34
+ value: true
35
+ }), mod);
36
+ var CreateApp_exports = {};
37
+ __export(CreateApp_exports, {
38
+ createApp: () => createApp,
39
+ followPageOriginForLoopback: () => followPageOriginForLoopback
40
+ });
41
+ module.exports = __toCommonJS(CreateApp_exports);
42
+ var import_jsx_runtime = require("react/jsx-runtime");
43
+ var import_react = __toESM(require("react"));
44
+ var import_platform = require("@multiplatform.one/platform");
45
+ var import_theme = require("@multiplatform.one/theme");
46
+ var import_frappe_ui = require("@multiplatform.one/frappe-ui");
47
+ var import_frappeSocketPort = require("./frappeSocketPort.native.js");
48
+ var import_frappeSyncOptions = require("./frappeSyncOptions.native.js");
49
+ var import_oneFrappeNavigation = require("./oneFrappeNavigation.native.js");
50
+ var import_TanstackProvider = require("./TanstackProvider.native.js");
51
+ var import_loadWalletProvider = __toESM(require("./loadWalletProvider.native.js"));
52
+ var LOOPBACK_HOSTS = /* @__PURE__ */new Set(["localhost", "127.0.0.1", "[::1]"]);
53
+ function currentPageLocation() {
54
+ var _window_location;
55
+ if (typeof window === "undefined" || !((_window_location = window.location) === null || _window_location === void 0 ? void 0 : _window_location.hostname)) return void 0;
56
+ return window.location;
57
+ }
58
+ function followPageOriginForLoopback(configured) {
59
+ var page = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : currentPageLocation(),
60
+ dev = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : import_platform.isDev;
61
+ if (!(page === null || page === void 0 ? void 0 : page.hostname)) return configured;
62
+ try {
63
+ var url = new URL(configured);
64
+ if (!LOOPBACK_HOSTS.has(url.hostname) || LOOPBACK_HOSTS.has(page.hostname)) return configured;
65
+ url.hostname = page.hostname;
66
+ if (!dev && (page.protocol === "https:" || page.protocol === "http:")) {
67
+ url.protocol = page.protocol;
68
+ url.port = page.port;
69
+ }
70
+ return url.toString().replace(/\/$/, "");
71
+ } catch (unused) {
72
+ return configured;
73
+ }
74
+ }
75
+ var AppConfigContext = /* @__PURE__ */(0, import_react.createContext)({});
76
+ function createApp(appConfig) {
77
+ var builtinProviders = [];
78
+ if (appConfig.tanstack) {
79
+ var _appConfig_theme;
80
+ var cfg = appConfig.tanstack === true ? {} : {
81
+ ...appConfig.tanstack
82
+ };
83
+ if (((_appConfig_theme = appConfig.theme) === null || _appConfig_theme === void 0 ? void 0 : _appConfig_theme.tamagui) && !cfg.tamaguiConfig) {
84
+ cfg.tamaguiConfig = appConfig.theme.tamagui;
85
+ }
86
+ builtinProviders.push((0, import_TanstackProvider.createTanstackProvider)(cfg));
87
+ }
88
+ if (appConfig.web3) {
89
+ let Web3Provider2 = function (param) {
90
+ var {
91
+ children
92
+ } = param;
93
+ var _cfg_enabled, _cfg_enableTestnets, _cfg_localnet, _cfg_mockWallet;
94
+ var enabled = (_cfg_enabled = cfg1.enabled) !== null && _cfg_enabled !== void 0 ? _cfg_enabled : import_platform.config.get("WEB3_ENABLED") === "1";
95
+ if (!enabled) return children;
96
+ if (import_platform.isWeb) return children;
97
+ var testnetsEnabled = (_cfg_enableTestnets = cfg1.enableTestnets) !== null && _cfg_enableTestnets !== void 0 ? _cfg_enableTestnets : import_platform.config.get("WEB3_TESTNETS_ENABLED") === "1";
98
+ var WalletWithChildren = import_loadWalletProvider.default;
99
+ return (
100
+ // fallback must NOT be `children`: rendering web3-consuming screens before
101
+ // the lazy WagmiProvider loads throws "useConfig must be used within WagmiProvider".
102
+ /* @__PURE__ */
103
+ (0, import_jsx_runtime.jsx)(import_react.Suspense, {
104
+ fallback: null,
105
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(WalletWithChildren, {
106
+ config: {
107
+ appName: cfg1.appName || "Multiplatform.one",
108
+ appDescription: cfg1.appDescription || "Connect your wallet",
109
+ appUrl: cfg1.appUrl || (import_platform.isWeb && typeof window !== "undefined" ? window.location.origin : ""),
110
+ appIcon: cfg1.appIcon,
111
+ enableTestnets: testnetsEnabled,
112
+ localnet: (_cfg_localnet = cfg1.localnet) !== null && _cfg_localnet !== void 0 ? _cfg_localnet : import_platform.config.get("WEB3_LOCALNET_ENABLED") === "1",
113
+ localnetRpcUrl: cfg1.localnetRpcUrl || import_platform.config.get("WEB3_EVM_RPC") || void 0,
114
+ solanaRpcUrl: cfg1.solanaRpcUrl || import_platform.config.get("WEB3_SOLANA_RPC") || void 0,
115
+ suiRpcUrl: cfg1.suiRpcUrl || import_platform.config.get("WEB3_SUI_RPC") || void 0,
116
+ webViewUrl: cfg1.webViewUrl || import_platform.config.get("WEB3_WEBVIEW_URL") || void 0,
117
+ mockWallet: (_cfg_mockWallet = cfg1.mockWallet) !== null && _cfg_mockWallet !== void 0 ? _cfg_mockWallet : import_platform.config.get("WEB3_MOCK_WALLET") === "1"
118
+ },
119
+ children
120
+ })
121
+ })
122
+ );
123
+ };
124
+ var Web3Provider = Web3Provider2;
125
+ var cfg1 = appConfig.web3 === true ? {} : appConfig.web3;
126
+ Web3Provider2.displayName = "Web3Provider";
127
+ builtinProviders.push(Web3Provider2);
128
+ }
129
+ if (appConfig.keycloak) {
130
+ let KeycloakProviderWrapper2 = function (param) {
131
+ var {
132
+ children
133
+ } = param;
134
+ var _cfg_enabled, _cfg_debug;
135
+ var enabled = (_cfg_enabled = cfg2.enabled) !== null && _cfg_enabled !== void 0 ? _cfg_enabled : import_platform.config.get("KEYCLOAK_ENABLED") === "1";
136
+ if (!enabled) return children;
137
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_react.Suspense, {
138
+ fallback: children,
139
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(LazyKeycloakProvider, {
140
+ disabled: false,
141
+ debug: (_cfg_debug = cfg2.debug) !== null && _cfg_debug !== void 0 ? _cfg_debug : import_platform.config.get("DEBUG") === "1",
142
+ baseUrl: cfg2.baseUrl || import_platform.config.get("KEYCLOAK_BASE_URL") || `${import_platform.config.get("BASE_URL") || ""}/auth`,
143
+ clientId: cfg2.clientId || import_platform.config.get("KEYCLOAK_CLIENT_ID"),
144
+ publicClientId: cfg2.publicClientId || import_platform.config.get("KEYCLOAK_PUBLIC_CLIENT_ID"),
145
+ realm: cfg2.realm || import_platform.config.get("KEYCLOAK_REALM") || "",
146
+ iframeSso: cfg2.iframeSso,
147
+ loginRedirectUri: cfg2.loginRedirectUri,
148
+ messageHandlerKeys: cfg2.messageHandlerKeys || [],
149
+ betterAuthBaseUrl: cfg2.betterAuthBaseUrl || import_platform.config.get("BETTER_AUTH_BASE_URL") || import_platform.config.get("BASE_URL") || void 0,
150
+ expoScheme: cfg2.expoScheme,
151
+ loadingComponent: cfg2.loadingComponent,
152
+ children
153
+ })
154
+ });
155
+ };
156
+ var KeycloakProviderWrapper = KeycloakProviderWrapper2;
157
+ var cfg2 = appConfig.keycloak === true ? {} : appConfig.keycloak;
158
+ var LazyKeycloakProvider = /* @__PURE__ */(0, import_react.lazy)(async function () {
159
+ var mod = await import("@multiplatform.one/keycloak");
160
+ return {
161
+ default: mod.KeycloakProvider
162
+ };
163
+ });
164
+ KeycloakProviderWrapper2.displayName = "KeycloakProvider";
165
+ builtinProviders.push(KeycloakProviderWrapper2);
166
+ }
167
+ if (appConfig.frappe) {
168
+ let FrappeProviderWrapper2 = function (param) {
169
+ var {
170
+ children
171
+ } = param;
172
+ var _cfg_enabled, _cfg_socketPort;
173
+ var configuredCatchUp = import_platform.config.get("FRAPPE_CATCH_UP_STRATEGY");
174
+ var configuredWrite = import_platform.config.get("FRAPPE_WRITE_STRATEGY");
175
+ var syncOptions = (0, import_react.useMemo)(function () {
176
+ return (0, import_frappeSyncOptions.frappeSyncOptions)(cfg3.syncOptions, configuredCatchUp, configuredWrite);
177
+ }, [configuredCatchUp, configuredWrite]);
178
+ var enabled = (_cfg_enabled = cfg3.enabled) !== null && _cfg_enabled !== void 0 ? _cfg_enabled : !!cfg3.fixtures || import_platform.config.get("FRAPPE_ENABLED") === "1";
179
+ if (!enabled) return children;
180
+ var configured = cfg3.fixtures ? cfg3.baseURL : cfg3.baseURL || import_platform.config.get("BASE_URL") || "http://localhost:8000";
181
+ var baseURL = configured ? followPageOriginForLoopback(configured) : void 0;
182
+ var socketPort = (_cfg_socketPort = cfg3.socketPort) !== null && _cfg_socketPort !== void 0 ? _cfg_socketPort : (0, import_frappeSocketPort.frappeSocketPort)(import_platform.config.get("FRAPPE_SOCKETIO_PORT"), baseURL);
183
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_frappe_ui.FrappeProvider, {
184
+ baseURL,
185
+ realtime: cfg3.realtime,
186
+ socketPort,
187
+ auth,
188
+ syncOptions,
189
+ fixtures: cfg3.fixtures,
190
+ navigation: import_oneFrappeNavigation.oneFrappeNavigation,
191
+ children
192
+ });
193
+ };
194
+ var FrappeProviderWrapper = FrappeProviderWrapper2;
195
+ var _cfg_auth;
196
+ var cfg3 = appConfig.frappe === true ? {} : appConfig.frappe;
197
+ var auth = (_cfg_auth = cfg3.auth) !== null && _cfg_auth !== void 0 ? _cfg_auth : appConfig.keycloak ? {
198
+ useToken: true,
199
+ type: "Bearer",
200
+ token: async function token() {
201
+ var mod = await import("@multiplatform.one/keycloak");
202
+ return (await mod.getKeycloakBearerToken()) || "";
203
+ }
204
+ } : void 0;
205
+ FrappeProviderWrapper2.displayName = "FrappeProvider";
206
+ builtinProviders.push(FrappeProviderWrapper2);
207
+ }
208
+ var allProviders = [...builtinProviders, ...(appConfig.providers || [])];
209
+ function AppProvider(param) {
210
+ var {
211
+ children,
212
+ systemTheme,
213
+ themeConfig
214
+ } = param;
215
+ var theme = themeConfig || appConfig.theme;
216
+ var content = theme ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_theme.ThemeProvider, {
217
+ config: theme,
218
+ systemTheme,
219
+ children
220
+ }) : children;
221
+ for (var i = allProviders.length - 1; i >= 0; i--) {
222
+ var Provider = allProviders[i];
223
+ content = /* @__PURE__ */(0, import_jsx_runtime.jsx)(Provider, {
224
+ children: content
225
+ });
226
+ }
227
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(AppConfigContext.Provider, {
228
+ value: appConfig,
229
+ children: content
230
+ });
231
+ }
232
+ AppProvider.displayName = "AppProvider";
233
+ function withApp(Screen) {
234
+ function WrappedScreen(props) {
235
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(AppProvider, {
236
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(Screen, {
237
+ ...props
238
+ })
239
+ });
240
+ }
241
+ WrappedScreen.displayName = `withApp(${Screen.displayName || Screen.name || "Component"})`;
242
+ return WrappedScreen;
243
+ }
244
+ function useAppConfig() {
245
+ return (0, import_react.useContext)(AppConfigContext);
246
+ }
247
+ return {
248
+ AppProvider,
249
+ withApp,
250
+ useAppConfig
251
+ };
252
+ }
253
+ //# sourceMappingURL=CreateApp.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","CreateApp_exports","__export","createApp","followPageOriginForLoopback","module","exports","import_jsx_runtime","require","import_react","__toESM","import_platform","import_theme","import_frappe_ui","import_frappeSocketPort","import_frappeSyncOptions","import_oneFrappeNavigation","import_TanstackProvider","import_loadWalletProvider","LOOPBACK_HOSTS","Set","currentPageLocation","_window_location","window","location","hostname","configured","page","arguments","length","dev","isDev","url","URL","has","protocol","port","toString","replace","unused","AppConfigContext","createContext","appConfig","builtinProviders","tanstack","_appConfig_theme","cfg","theme","tamagui","tamaguiConfig","push","createTanstackProvider","web3","Web3Provider2","param","children","_cfg_enabled","_cfg_enableTestnets","_cfg_localnet","_cfg_mockWallet","enabled","cfg1","config","get","isWeb","testnetsEnabled","enableTestnets","WalletWithChildren","default","jsx","Suspense","fallback","appName","appDescription","appUrl","origin","appIcon","localnet","localnetRpcUrl","solanaRpcUrl","suiRpcUrl","webViewUrl","mockWallet","Web3Provider","displayName","keycloak","KeycloakProviderWrapper2","_cfg_debug","cfg2","LazyKeycloakProvider","disabled","debug","baseUrl","clientId","publicClientId","realm","iframeSso","loginRedirectUri","messageHandlerKeys","betterAuthBaseUrl","expoScheme","loadingComponent","KeycloakProviderWrapper","lazy","KeycloakProvider","frappe","FrappeProviderWrapper2","_cfg_socketPort","configuredCatchUp","configuredWrite","syncOptions","useMemo","frappeSyncOptions","cfg3","fixtures","baseURL","socketPort","frappeSocketPort","FrappeProvider","realtime","auth","navigation","oneFrappeNavigation","FrappeProviderWrapper","_cfg_auth","useToken","type","token","getKeycloakBearerToken","allProviders","providers"],"sources":["../../../src/app/CreateApp.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}