roamjs-components 0.80.0 → 0.80.1

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.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "roamjs-components",
3
3
  "description": "Expansive toolset, utilities, & components for developing RoamJS extensions.",
4
- "version": "0.80.0",
4
+ "version": "0.80.1",
5
5
  "main": "index.js",
6
6
  "types": "index.d.ts",
7
7
  "scripts": {
@@ -7,6 +7,7 @@ const env_1 = require("./env");
7
7
  const shim_1 = require("use-sync-external-store/shim");
8
8
  const extensionApiContext_1 = require("./extensionApiContext");
9
9
  const apiPost_1 = tslib_1.__importDefault(require("./apiPost"));
10
+ const Toast_1 = tslib_1.__importDefault(require("../components/Toast"));
10
11
  const runExtension = (run) => {
11
12
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
12
13
  // @ts-ignore React17 shim
@@ -118,7 +119,17 @@ const runExtension = (run) => {
118
119
  stack: error.stack,
119
120
  version: process.env.VERSION,
120
121
  },
121
- }).catch(() => { });
122
+ })
123
+ .then(() => (0, Toast_1.default)({
124
+ id: "roamjs-extension-error",
125
+ content: `Failed to load ${extensionId} extension. An Error Report has been sent to the SamePage team.`,
126
+ }))
127
+ .catch(() => {
128
+ (0, Toast_1.default)({
129
+ id: "roamjs-email-error",
130
+ content: `Failed to load ${extensionId} extension. The Error Report also failed to send to the SamePage team, please reach out to them directly at support@samepage.network.`,
131
+ });
132
+ });
122
133
  });
123
134
  };
124
135
  const onunload = () => {
@@ -1 +1 @@
1
- {"version":3,"file":"runExtension.js","sourceRoot":"","sources":["../../src/util/runExtension.ts"],"names":[],"mappings":"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","sourcesContent":["import addStyle from \"../dom/addStyle\";\nimport { OnloadArgs } from \"../types/native\";\nimport ReactDOM from \"react-dom\";\nimport {\n getNodeEnv,\n getRoamJSExtensionIdEnv,\n getRoamJSVersionEnv,\n} from \"./env\";\nimport type { Registry } from \"../types\";\nimport { useSyncExternalStore } from \"use-sync-external-store/shim\";\nimport { provideExtensionApi } from \"./extensionApiContext\";\nimport apiPost from \"./apiPost\";\n\ntype RunReturn =\n | void\n | (Partial<Registry> & { unload?: () => void })\n | (() => void);\n\ntype RunExtension = (args: OnloadArgs) => Promise<RunReturn>;\n\nconst runExtension = (\n run: RunExtension\n): { onload: (args: OnloadArgs) => void; onunload: () => void } => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore React17 shim\n window.React.useSyncExternalStore = useSyncExternalStore;\n let unload: (() => void) | undefined;\n const extensionId = getRoamJSExtensionIdEnv();\n const registry: Registry = {\n elements: [],\n reactRoots: [],\n observers: [],\n domListeners: [],\n commands: [],\n timeouts: [],\n };\n const register = (res: Partial<Registry>) => {\n Object.keys(res).forEach((k) => {\n const key = k as keyof Registry;\n const val = res[key];\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore this is actually safe, but dont know how to coerce\n registry[key].push(...val);\n });\n };\n const registerListener = ((e: CustomEvent) => {\n const res = e.detail as Partial<Registry>;\n register(res);\n }) as EventListener;\n document.body.addEventListener(\n `roamjs:${extensionId}:register`,\n registerListener\n );\n registry.domListeners.push({\n listener: registerListener,\n el: document.body,\n type: `roamjs:${extensionId}:register`,\n });\n const unregisterListener = ((e: CustomEvent) => {\n const res = e.detail as Partial<Registry>;\n Object.keys(res).forEach((k) => {\n const key = k as keyof Registry;\n const val = res[key];\n if (val) {\n val.forEach((el) => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore this is actually safe, but dont know how to coerce\n const idx = registry[key].indexOf(el);\n if (idx > -1) {\n registry[key].splice(idx, 1);\n }\n });\n }\n });\n }) as EventListener;\n document.body.addEventListener(\n `roamjs:${extensionId}:unregister`,\n unregisterListener\n );\n registry.domListeners.push({\n listener: unregisterListener,\n el: document.body,\n type: `roamjs:${extensionId}:unregister`,\n });\n\n const onload = (args: OnloadArgs) => {\n if (window.roamjs?.loaded?.has?.(extensionId)) {\n return;\n }\n provideExtensionApi(args.extensionAPI);\n window.roamjs = {\n loaded: window.roamjs?.loaded || new Set(),\n extension: window.roamjs?.extension || {},\n version: window.roamjs?.version || {},\n actions: {},\n };\n window.roamjs.loaded.add(extensionId);\n window.roamjs.version[extensionId] = getRoamJSVersionEnv();\n\n registry.elements.push(\n addStyle(\n `.bp3-button:focus {\n outline-width: 2px;\n }`,\n \"roamjs-default\"\n )\n );\n\n run(args)\n .then((res) => {\n if (typeof res === \"function\") {\n unload = res;\n } else if (typeof res === \"object\") {\n const { unload: resUnload, ...registry } = res;\n register(registry);\n unload = resUnload;\n }\n const globalApi = window.roamjs.extension[extensionId];\n if (getNodeEnv() === \"development\") {\n if (globalApi) globalApi.extensionAPI = args.extensionAPI;\n else\n window.roamjs.extension[extensionId] = {\n extensionAPI: args.extensionAPI,\n };\n }\n document.body.dispatchEvent(new Event(`roamjs:${extensionId}:loaded`));\n })\n .catch((e) => {\n const error = e as Error;\n apiPost({\n domain: \"https://api.samepage.network\",\n path: \"errors\",\n data: {\n method: \"extension-error\",\n type: \"RoamJS Extension Failed to Load\",\n data: {\n extensionId,\n settings: args.extensionAPI.settings.getAll(),\n roamDepotVersion: args.extension.version,\n },\n message: error.message,\n stack: error.stack,\n version: process.env.VERSION,\n },\n }).catch(() => {});\n });\n };\n\n const onunload = () => {\n registry.elements.forEach((e) => e.remove());\n registry.reactRoots.forEach((e) => {\n ReactDOM.unmountComponentAtNode(e);\n e.remove();\n });\n registry.observers.forEach((e) => e.disconnect());\n registry.domListeners.forEach((e) =>\n e.el.removeEventListener(e.type, e.listener)\n );\n registry.commands.forEach((label) =>\n window.roamAlphaAPI.ui.commandPalette.removeCommand({ label })\n );\n registry.timeouts.forEach((e) => window.clearTimeout(e.timeout));\n\n delete window.roamjs?.extension[extensionId];\n delete window.roamjs?.version[extensionId];\n window.roamjs?.loaded.delete(extensionId);\n if (!window.roamjs?.loaded.size) {\n document.getElementById(\"roamjs-default\")?.remove();\n }\n unload?.();\n };\n return {\n onload,\n onunload,\n };\n};\n\nexport default runExtension;\n"]}
1
+ {"version":3,"file":"runExtension.js","sourceRoot":"","sources":["../../src/util/runExtension.ts"],"names":[],"mappings":"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","sourcesContent":["import addStyle from \"../dom/addStyle\";\nimport { OnloadArgs } from \"../types/native\";\nimport ReactDOM from \"react-dom\";\nimport {\n getNodeEnv,\n getRoamJSExtensionIdEnv,\n getRoamJSVersionEnv,\n} from \"./env\";\nimport type { Registry } from \"../types\";\nimport { useSyncExternalStore } from \"use-sync-external-store/shim\";\nimport { provideExtensionApi } from \"./extensionApiContext\";\nimport apiPost from \"./apiPost\";\nimport renderToast from \"../components/Toast\";\n\ntype RunReturn =\n | void\n | (Partial<Registry> & { unload?: () => void })\n | (() => void);\n\ntype RunExtension = (args: OnloadArgs) => Promise<RunReturn>;\n\nconst runExtension = (\n run: RunExtension\n): { onload: (args: OnloadArgs) => void; onunload: () => void } => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore React17 shim\n window.React.useSyncExternalStore = useSyncExternalStore;\n let unload: (() => void) | undefined;\n const extensionId = getRoamJSExtensionIdEnv();\n const registry: Registry = {\n elements: [],\n reactRoots: [],\n observers: [],\n domListeners: [],\n commands: [],\n timeouts: [],\n };\n const register = (res: Partial<Registry>) => {\n Object.keys(res).forEach((k) => {\n const key = k as keyof Registry;\n const val = res[key];\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore this is actually safe, but dont know how to coerce\n registry[key].push(...val);\n });\n };\n const registerListener = ((e: CustomEvent) => {\n const res = e.detail as Partial<Registry>;\n register(res);\n }) as EventListener;\n document.body.addEventListener(\n `roamjs:${extensionId}:register`,\n registerListener\n );\n registry.domListeners.push({\n listener: registerListener,\n el: document.body,\n type: `roamjs:${extensionId}:register`,\n });\n const unregisterListener = ((e: CustomEvent) => {\n const res = e.detail as Partial<Registry>;\n Object.keys(res).forEach((k) => {\n const key = k as keyof Registry;\n const val = res[key];\n if (val) {\n val.forEach((el) => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore this is actually safe, but dont know how to coerce\n const idx = registry[key].indexOf(el);\n if (idx > -1) {\n registry[key].splice(idx, 1);\n }\n });\n }\n });\n }) as EventListener;\n document.body.addEventListener(\n `roamjs:${extensionId}:unregister`,\n unregisterListener\n );\n registry.domListeners.push({\n listener: unregisterListener,\n el: document.body,\n type: `roamjs:${extensionId}:unregister`,\n });\n\n const onload = (args: OnloadArgs) => {\n if (window.roamjs?.loaded?.has?.(extensionId)) {\n return;\n }\n provideExtensionApi(args.extensionAPI);\n window.roamjs = {\n loaded: window.roamjs?.loaded || new Set(),\n extension: window.roamjs?.extension || {},\n version: window.roamjs?.version || {},\n actions: {},\n };\n window.roamjs.loaded.add(extensionId);\n window.roamjs.version[extensionId] = getRoamJSVersionEnv();\n\n registry.elements.push(\n addStyle(\n `.bp3-button:focus {\n outline-width: 2px;\n }`,\n \"roamjs-default\"\n )\n );\n\n run(args)\n .then((res) => {\n if (typeof res === \"function\") {\n unload = res;\n } else if (typeof res === \"object\") {\n const { unload: resUnload, ...registry } = res;\n register(registry);\n unload = resUnload;\n }\n const globalApi = window.roamjs.extension[extensionId];\n if (getNodeEnv() === \"development\") {\n if (globalApi) globalApi.extensionAPI = args.extensionAPI;\n else\n window.roamjs.extension[extensionId] = {\n extensionAPI: args.extensionAPI,\n };\n }\n document.body.dispatchEvent(new Event(`roamjs:${extensionId}:loaded`));\n })\n .catch((e) => {\n const error = e as Error;\n apiPost({\n domain: \"https://api.samepage.network\",\n path: \"errors\",\n data: {\n method: \"extension-error\",\n type: \"RoamJS Extension Failed to Load\",\n data: {\n extensionId,\n settings: args.extensionAPI.settings.getAll(),\n roamDepotVersion: args.extension.version,\n },\n message: error.message,\n stack: error.stack,\n version: process.env.VERSION,\n },\n })\n .then(() =>\n renderToast({\n id: \"roamjs-extension-error\",\n content: `Failed to load ${extensionId} extension. An Error Report has been sent to the SamePage team.`,\n })\n )\n .catch(() => {\n renderToast({\n id: \"roamjs-email-error\",\n content: `Failed to load ${extensionId} extension. The Error Report also failed to send to the SamePage team, please reach out to them directly at support@samepage.network.`,\n });\n });\n });\n };\n\n const onunload = () => {\n registry.elements.forEach((e) => e.remove());\n registry.reactRoots.forEach((e) => {\n ReactDOM.unmountComponentAtNode(e);\n e.remove();\n });\n registry.observers.forEach((e) => e.disconnect());\n registry.domListeners.forEach((e) =>\n e.el.removeEventListener(e.type, e.listener)\n );\n registry.commands.forEach((label) =>\n window.roamAlphaAPI.ui.commandPalette.removeCommand({ label })\n );\n registry.timeouts.forEach((e) => window.clearTimeout(e.timeout));\n\n delete window.roamjs?.extension[extensionId];\n delete window.roamjs?.version[extensionId];\n window.roamjs?.loaded.delete(extensionId);\n if (!window.roamjs?.loaded.size) {\n document.getElementById(\"roamjs-default\")?.remove();\n }\n unload?.();\n };\n return {\n onload,\n onunload,\n };\n};\n\nexport default runExtension;\n"]}