@base44-preview/vite-plugin 0.1.2-dev.7ef5e97 → 0.1.3-pr.1.68b9fd5

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAc,MAAM,MAAM,CAAC;AAO/C,MAAM,CAAC,OAAO,UAAU,UAAU,CAChC,IAAI,GAAE;IACJ,gBAAgB,CAAC,EAAE,OAAO,CAAC;CACvB,iBAgIP"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAc,MAAM,MAAM,CAAC;AAO/C,MAAM,CAAC,OAAO,UAAU,UAAU,CAChC,IAAI,GAAE;IACJ,gBAAgB,CAAC,EAAE,OAAO,CAAC;CACvB,iBAgJP"}
package/dist/index.js CHANGED
@@ -65,6 +65,22 @@ export default function vitePlugin(opts = {}) {
65
65
  },
66
66
  };
67
67
  },
68
+ ...(isRunningInSandbox
69
+ ? {
70
+ transformIndexHtml() {
71
+ return [
72
+ {
73
+ tag: "script",
74
+ attrs: {
75
+ src: "/node_modules/@base44/vite-plugin/dist/injections/unhandled-errors-handlers.js",
76
+ type: "module",
77
+ },
78
+ injectTo: "body",
79
+ },
80
+ ];
81
+ },
82
+ }
83
+ : {}),
68
84
  resolveId(source, importer, options) {
69
85
  if (legacySDKImports) {
70
86
  if (source.includes("/entities")) {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=unhandled-errors-handlers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unhandled-errors-handlers.d.ts","sourceRoot":"","sources":["../../src/injections/unhandled-errors-handlers.ts"],"names":[],"mappings":""}
@@ -0,0 +1,56 @@
1
+ /// <reference types="vite/client" />
2
+ window.removeEventListener("unhandledrejection", handleUnhandledRejection);
3
+ window.removeEventListener("error", handleWindowError);
4
+ window.addEventListener("unhandledrejection", handleUnhandledRejection);
5
+ window.addEventListener("error", handleWindowError);
6
+ let shouldPropagateErrors = true;
7
+ if (import.meta.hot) {
8
+ import.meta.hot.on("vite:beforeFullReload", () => {
9
+ shouldPropagateErrors = false;
10
+ });
11
+ }
12
+ function onAppError({ title, details, componentName, originalError, }) {
13
+ if (originalError?.response?.status === 402 || !shouldPropagateErrors) {
14
+ return;
15
+ }
16
+ window.parent?.postMessage({
17
+ type: "app_error",
18
+ error: {
19
+ title: title.toString(),
20
+ details: details?.toString(),
21
+ componentName: componentName?.toString(),
22
+ },
23
+ }, "*");
24
+ }
25
+ function handleUnhandledRejection(event) {
26
+ const stack = event.reason.stack;
27
+ // extract function name from "at X (eval" where x is the function name
28
+ const functionName = stack.match(/at\s+(\w+)\s+\(eval/)?.[1];
29
+ const msg = functionName
30
+ ? `Error in ${functionName}: ${event.reason.toString()}`
31
+ : event.reason.toString();
32
+ onAppError({
33
+ title: msg,
34
+ details: event.reason.toString(),
35
+ componentName: functionName,
36
+ originalError: event.reason,
37
+ });
38
+ }
39
+ function handleWindowError(event) {
40
+ const stack = event.error?.stack;
41
+ let functionName = stack.match(/at\s+(\w+)\s+\(eval/)?.[1];
42
+ if (functionName === "eval") {
43
+ functionName = null;
44
+ }
45
+ const msg = functionName
46
+ ? `in ${functionName}: ${event.error.toString()}`
47
+ : event.error.toString();
48
+ onAppError({
49
+ title: msg,
50
+ details: event.error.toString(),
51
+ componentName: functionName,
52
+ originalError: event.error,
53
+ });
54
+ }
55
+ export {};
56
+ //# sourceMappingURL=unhandled-errors-handlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unhandled-errors-handlers.js","sourceRoot":"","sources":["../../src/injections/unhandled-errors-handlers.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAErC,MAAM,CAAC,mBAAmB,CAAC,oBAAoB,EAAE,wBAAwB,CAAC,CAAC;AAC3E,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;AAEvD,MAAM,CAAC,gBAAgB,CAAC,oBAAoB,EAAE,wBAAwB,CAAC,CAAC;AACxE,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;AAEpD,IAAI,qBAAqB,GAAG,IAAI,CAAC;AAEjC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;IACpB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;QAC/C,qBAAqB,GAAG,KAAK,CAAC;IAChC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,UAAU,CAAC,EAClB,KAAK,EACL,OAAO,EACP,aAAa,EACb,aAAa,GAMd;IACC,IAAI,aAAa,EAAE,QAAQ,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QACtE,OAAO;IACT,CAAC;IACD,MAAM,CAAC,MAAM,EAAE,WAAW,CACxB;QACE,IAAI,EAAE,WAAW;QACjB,KAAK,EAAE;YACL,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE;YACvB,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE;YAC5B,aAAa,EAAE,aAAa,EAAE,QAAQ,EAAE;SACzC;KACF,EACD,GAAG,CACJ,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAAC,KAAU;IAC1C,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;IACjC,uEAAuE;IACvE,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7D,MAAM,GAAG,GAAG,YAAY;QACtB,CAAC,CAAC,YAAY,YAAY,KAAK,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE;QACxD,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC5B,UAAU,CAAC;QACT,KAAK,EAAE,GAAG;QACV,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE;QAChC,aAAa,EAAE,YAAY;QAC3B,aAAa,EAAE,KAAK,CAAC,MAAM;KAC5B,CAAC,CAAC;AACL,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAU;IACnC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC;IACjC,IAAI,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3D,IAAI,YAAY,KAAK,MAAM,EAAE,CAAC;QAC5B,YAAY,GAAG,IAAI,CAAC;IACtB,CAAC;IAED,MAAM,GAAG,GAAG,YAAY;QACtB,CAAC,CAAC,MAAM,YAAY,KAAK,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE;QACjD,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC3B,UAAU,CAAC;QACT,KAAK,EAAE,GAAG;QACV,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE;QAC/B,aAAa,EAAE,YAAY;QAC3B,aAAa,EAAE,KAAK,CAAC,KAAK;KAC3B,CAAC,CAAC;AACL,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@base44-preview/vite-plugin",
3
- "version": "0.1.2-dev.7ef5e97",
3
+ "version": "0.1.3-pr.1.68b9fd5",
4
4
  "description": "The Vite plugin for base44 based applications",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -14,7 +14,8 @@
14
14
  "compat"
15
15
  ],
16
16
  "scripts": {
17
- "build": "tsc"
17
+ "build": "tsc",
18
+ "prepublishOnly": "rm -rf ./dist && npm run build"
18
19
  },
19
20
  "devDependencies": {
20
21
  "@types/babel__generator": "^7.27.0",
package/src/index.ts CHANGED
@@ -80,6 +80,22 @@ export default function vitePlugin(
80
80
  },
81
81
  };
82
82
  },
83
+ ...(isRunningInSandbox
84
+ ? {
85
+ transformIndexHtml() {
86
+ return [
87
+ {
88
+ tag: "script",
89
+ attrs: {
90
+ src: "/node_modules/@base44/vite-plugin/dist/injections/unhandled-errors-handlers.js",
91
+ type: "module",
92
+ },
93
+ injectTo: "body",
94
+ },
95
+ ];
96
+ },
97
+ }
98
+ : {}),
83
99
  resolveId(source, importer, options) {
84
100
  if (legacySDKImports) {
85
101
  if (source.includes("/entities")) {
@@ -0,0 +1,75 @@
1
+ /// <reference types="vite/client" />
2
+
3
+ window.removeEventListener("unhandledrejection", handleUnhandledRejection);
4
+ window.removeEventListener("error", handleWindowError);
5
+
6
+ window.addEventListener("unhandledrejection", handleUnhandledRejection);
7
+ window.addEventListener("error", handleWindowError);
8
+
9
+ let shouldPropagateErrors = true;
10
+
11
+ if (import.meta.hot) {
12
+ import.meta.hot.on("vite:beforeFullReload", () => {
13
+ shouldPropagateErrors = false;
14
+ });
15
+ }
16
+
17
+ function onAppError({
18
+ title,
19
+ details,
20
+ componentName,
21
+ originalError,
22
+ }: {
23
+ title: string;
24
+ details: string;
25
+ componentName: string;
26
+ originalError: any;
27
+ }) {
28
+ if (originalError?.response?.status === 402 || !shouldPropagateErrors) {
29
+ return;
30
+ }
31
+ window.parent?.postMessage(
32
+ {
33
+ type: "app_error",
34
+ error: {
35
+ title: title.toString(),
36
+ details: details?.toString(),
37
+ componentName: componentName?.toString(),
38
+ },
39
+ },
40
+ "*"
41
+ );
42
+ }
43
+
44
+ function handleUnhandledRejection(event: any) {
45
+ const stack = event.reason.stack;
46
+ // extract function name from "at X (eval" where x is the function name
47
+ const functionName = stack.match(/at\s+(\w+)\s+\(eval/)?.[1];
48
+ const msg = functionName
49
+ ? `Error in ${functionName}: ${event.reason.toString()}`
50
+ : event.reason.toString();
51
+ onAppError({
52
+ title: msg,
53
+ details: event.reason.toString(),
54
+ componentName: functionName,
55
+ originalError: event.reason,
56
+ });
57
+ }
58
+
59
+ function handleWindowError(event: any) {
60
+ const stack = event.error?.stack;
61
+ let functionName = stack.match(/at\s+(\w+)\s+\(eval/)?.[1];
62
+ if (functionName === "eval") {
63
+ functionName = null;
64
+ }
65
+
66
+ const msg = functionName
67
+ ? `in ${functionName}: ${event.error.toString()}`
68
+ : event.error.toString();
69
+ onAppError({
70
+ title: msg,
71
+ details: event.error.toString(),
72
+ componentName: functionName,
73
+ originalError: event.error,
74
+ });
75
+ }