@openmrs/esm-error-handling 6.3.1-pre.2961 → 6.3.1-pre.2986

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/.swcrc ADDED
@@ -0,0 +1,16 @@
1
+ {
2
+ "$schema": "https://swc.rs/schema.json",
3
+ "exclude": [".*\\.test\\..*", "setup-tests\\..*"],
4
+ "module": {
5
+ "type": "es6",
6
+ "resolveFully": true
7
+ },
8
+ "jsc": {
9
+ "parser": {
10
+ "syntax": "typescript",
11
+ "tsx": false
12
+ },
13
+ "target": "es2020",
14
+ "baseUrl": "src"
15
+ }
16
+ }
@@ -1,6 +1 @@
1
- asset openmrs-esm-error-handling.js 1.84 KiB [emitted] [minimized] (name: main) 1 related asset
2
- runtime modules 670 bytes 3 modules
3
- built modules 2.06 KiB [built]
4
- ./src/index.ts 2.02 KiB [built] [code generated]
5
- external "@openmrs/esm-globals" 42 bytes [built] [code generated]
6
- webpack 5.88.0 compiled successfully in 8995 ms
1
+ Successfully compiled: 1 file with swc (120.78ms)
@@ -0,0 +1,2 @@
1
+ export declare function reportError(err: unknown): void;
2
+ export declare function createErrorHandler(): (incomingErr: unknown) => void;
package/dist/index.js ADDED
@@ -0,0 +1,51 @@
1
+ /** @module @category Error Handling */ import { dispatchToastShown } from "@openmrs/esm-globals";
2
+ window.onerror = function(error) {
3
+ console.error('Unexpected error: ', error);
4
+ dispatchToastShown({
5
+ description: error ?? 'Oops! An unexpected error occurred.',
6
+ kind: 'error',
7
+ title: 'Error'
8
+ });
9
+ return false;
10
+ };
11
+ window.onunhandledrejection = function(event) {
12
+ console.error('Unhandled rejection: ', event.reason);
13
+ dispatchToastShown({
14
+ description: event.reason ?? 'Oops! An unhandled promise rejection occurred.',
15
+ kind: 'error',
16
+ title: 'Error'
17
+ });
18
+ };
19
+ export function reportError(err) {
20
+ const error = ensureErrorObject(err);
21
+ setTimeout(()=>{
22
+ throw error;
23
+ });
24
+ }
25
+ export function createErrorHandler() {
26
+ const outgoingErr = Error();
27
+ return (incomingErr)=>{
28
+ const finalErr = ensureErrorObject(incomingErr);
29
+ finalErr.stack += `\nAsync stacktrace:\n${outgoingErr.stack}`;
30
+ reportError(incomingErr);
31
+ };
32
+ }
33
+ function ensureErrorObject(thing) {
34
+ let message;
35
+ if (thing instanceof Error) {
36
+ return thing;
37
+ } else if (thing === null) {
38
+ return Error(`'null' was thrown as an error`);
39
+ } else if (typeof thing === 'object') {
40
+ try {
41
+ message = `Object thrown as error: ${JSON.stringify(thing)}`;
42
+ } catch (e) {
43
+ message = `Object thrown as error with the following properties: ${Object.keys(thing)}`;
44
+ }
45
+ return Error(message);
46
+ } else if (thing === undefined) {
47
+ return Error(`'undefined' was thrown as an error`);
48
+ } else {
49
+ return Error(thing.toString());
50
+ }
51
+ }
package/package.json CHANGED
@@ -1,17 +1,24 @@
1
1
  {
2
2
  "name": "@openmrs/esm-error-handling",
3
- "version": "6.3.1-pre.2961",
3
+ "version": "6.3.1-pre.2986",
4
4
  "license": "MPL-2.0",
5
5
  "description": "An ES module to help with error handling",
6
- "browser": "dist/openmrs-esm-error-handling.js",
7
- "main": "src/index.ts",
6
+ "type": "module",
7
+ "module": "dist/index.js",
8
+ "types": "dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./src/index.ts",
12
+ "default": "./dist/index.js"
13
+ }
14
+ },
8
15
  "source": true,
9
16
  "scripts": {
10
- "test": "jest --passWithNoTests --color",
11
- "build": "webpack --mode=production",
12
- "build:development": "webpack --mode development",
13
- "analyze": "webpack --mode=production --env analyze=true",
14
- "typescript": "tsc",
17
+ "test": "cross-env TZ=UTC vitest run --passWithNoTests",
18
+ "test:watch": "cross-env TZ=UTC vitest watch --passWithNoTests",
19
+ "build": "rimraf dist && swc --strip-leading-paths src -d dist && tsc --project tsconfig.build.json",
20
+ "build:development": "rimraf dist && swc --strip-leading-paths src -d dist && tsc --project tsconfig.build.json",
21
+ "typescript": "tsc --project tsconfig.build.json",
15
22
  "lint": "eslint src --ext ts,tsx"
16
23
  },
17
24
  "keywords": [
@@ -40,7 +47,13 @@
40
47
  "@openmrs/esm-globals": "6.x"
41
48
  },
42
49
  "devDependencies": {
43
- "@openmrs/esm-globals": "6.3.1-pre.2961"
50
+ "@openmrs/esm-globals": "6.3.1-pre.2986",
51
+ "@swc/cli": "^0.7.7",
52
+ "@swc/core": "^1.11.29",
53
+ "cross-env": "^7.0.3",
54
+ "happy-dom": "^17.4.7",
55
+ "rimraf": "^6.0.1",
56
+ "vitest": "^3.1.4"
44
57
  },
45
58
  "stableVersion": "6.3.0"
46
59
  }
package/src/index.ts CHANGED
@@ -11,7 +11,7 @@ window.onerror = function (error) {
11
11
  return false;
12
12
  };
13
13
 
14
- window.onunhandledrejection = function (event) {
14
+ window.onunhandledrejection = function (event: PromiseRejectionEvent) {
15
15
  console.error('Unhandled rejection: ', event.reason);
16
16
  dispatchToastShown({
17
17
  description: event.reason ?? 'Oops! An unhandled promise rejection occurred.',
@@ -20,7 +20,7 @@ window.onunhandledrejection = function (event) {
20
20
  });
21
21
  };
22
22
 
23
- export function reportError(err) {
23
+ export function reportError(err: unknown) {
24
24
  const error = ensureErrorObject(err);
25
25
  setTimeout(() => {
26
26
  throw error;
@@ -29,7 +29,7 @@ export function reportError(err) {
29
29
 
30
30
  export function createErrorHandler() {
31
31
  const outgoingErr = Error();
32
- return (incomingErr) => {
32
+ return (incomingErr: unknown) => {
33
33
  const finalErr = ensureErrorObject(incomingErr);
34
34
  finalErr.stack += `\nAsync stacktrace:\n${outgoingErr.stack}`;
35
35
  reportError(incomingErr);
@@ -37,7 +37,7 @@ export function createErrorHandler() {
37
37
  }
38
38
 
39
39
  function ensureErrorObject(thing: any) {
40
- let message;
40
+ let message: string;
41
41
 
42
42
  if (thing instanceof Error) {
43
43
  return thing;
@@ -1,32 +1,28 @@
1
- import { jest, describe, it, expect } from '@jest/globals';
2
- import type { reportError as ReportErrorType } from './index';
1
+ import { describe, it, expect, vi } from 'vitest';
2
+ import { reportError } from './index';
3
3
 
4
- jest.mock('./index');
5
-
6
- const { reportError } = jest.requireActual('./index') as { reportError: typeof ReportErrorType };
7
-
8
- jest.useFakeTimers();
4
+ vi.useFakeTimers();
9
5
 
10
6
  describe('error handler', () => {
11
7
  it('transforms non-Error inputs into valid Error objects', () => {
12
8
  expect(() => {
13
9
  reportError('error');
14
- jest.runAllTimers();
10
+ vi.runAllTimers();
15
11
  }).toThrow('error');
16
12
 
17
13
  expect(() => {
18
14
  reportError({ error: 'error' });
19
- jest.runAllTimers();
15
+ vi.runAllTimers();
20
16
  }).toThrow('Object thrown as error: {"error":"error"}');
21
17
 
22
18
  expect(() => {
23
19
  reportError(null);
24
- jest.runAllTimers();
20
+ vi.runAllTimers();
25
21
  }).toThrow("'null' was thrown as an error");
26
22
 
27
23
  expect(() => {
28
24
  reportError(undefined);
29
- jest.runAllTimers();
25
+ vi.runAllTimers();
30
26
  }).toThrow("'undefined' was thrown as an error");
31
27
  });
32
28
  });
@@ -0,0 +1,9 @@
1
+ {
2
+ "$schema": "https://json.schemastore.org/tsconfig.json",
3
+ "compilerOptions": {
4
+ "declarationDir": "dist",
5
+ "emitDeclarationOnly": true
6
+ },
7
+ "extends": "./tsconfig.json",
8
+ "exclude": ["**/*.test.*", "**/setup-tests.*"]
9
+ }
package/tsconfig.json CHANGED
@@ -1,21 +1,5 @@
1
1
  {
2
- "compilerOptions": {
3
- "esModuleInterop": true,
4
- "module": "esnext",
5
- "target": "es2015",
6
- "allowSyntheticDefaultImports": true,
7
- "jsx": "react",
8
- "moduleResolution": "node",
9
- "lib": [
10
- "dom",
11
- "es5",
12
- "scripthost",
13
- "es2015",
14
- "es2015.promise",
15
- "es2016.array.include",
16
- "es2018"
17
- ],
18
- "noEmit": true
19
- },
20
- "include": ["src/**/*", "__mocks__", "__mocks__"]
2
+ "$schema": "https://json.schemastore.org/tsconfig.json",
3
+ "extends": "../tsconfig.json",
4
+ "include": ["src/**/*.ts*"]
21
5
  }
@@ -0,0 +1,8 @@
1
+ import { defineConfig } from 'vitest/config';
2
+
3
+ export default defineConfig({
4
+ test: {
5
+ environment: 'happy-dom',
6
+ mockReset: true,
7
+ },
8
+ });
@@ -1,2 +0,0 @@
1
- System.register(["@openmrs/esm-globals"],(function(r,e){var o={};return{setters:[function(r){o.dispatchToastShown=r.dispatchToastShown}],execute:function(){r((()=>{"use strict";var r={728:r=>{r.exports=o}},e={};function n(o){var t=e[o];if(void 0!==t)return t.exports;var c=e[o]={exports:{}};return r[o](c,c.exports,n),c.exports}n.d=(r,e)=>{for(var o in e)n.o(e,o)&&!n.o(r,o)&&Object.defineProperty(r,o,{enumerable:!0,get:e[o]})},n.o=(r,e)=>Object.prototype.hasOwnProperty.call(r,e),n.r=r=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(r,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(r,"__esModule",{value:!0})};var t={};return(()=>{n.r(t),n.d(t,{createErrorHandler:()=>o,reportError:()=>e});var r=n(728);function e(r){var e=c(r);setTimeout((function(){throw e}))}function o(){var r=Error();return function(o){c(o).stack+="\nAsync stacktrace:\n".concat(r.stack),e(o)}}function c(r){var e,o,n;if(o=r,null!=(n=Error)&&"undefined"!=typeof Symbol&&n[Symbol.hasInstance]?n[Symbol.hasInstance](o):o instanceof n)return r;if(null===r)return Error("'null' was thrown as an error");if("object"==typeof r){try{e="Object thrown as error: ".concat(JSON.stringify(r))}catch(o){e="Object thrown as error with the following properties: ".concat(Object.keys(r))}return Error(e)}return void 0===r?Error("'undefined' was thrown as an error"):Error(r.toString())}window.onerror=function(e){return console.error("Unexpected error: ",e),(0,r.dispatchToastShown)({description:null!=e?e:"Oops! An unexpected error occurred.",kind:"error",title:"Error"}),!1},window.onunhandledrejection=function(e){var o;console.error("Unhandled rejection: ",e.reason),(0,r.dispatchToastShown)({description:null!==(o=e.reason)&&void 0!==o?o:"Oops! An unhandled promise rejection occurred.",kind:"error",title:"Error"})}})(),t})())}}}));
2
- //# sourceMappingURL=openmrs-esm-error-handling.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"openmrs-esm-error-handling.js","mappings":"gMAAAA,EAAOC,QAAUC,C,GCCbC,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBE,IAAjBD,EACH,OAAOA,EAAaL,QAGrB,IAAID,EAASG,EAAyBE,GAAY,CAGjDJ,QAAS,CAAC,GAOX,OAHAO,EAAoBH,GAAUL,EAAQA,EAAOC,QAASG,GAG/CJ,EAAOC,OACf,CCrBAG,EAAoBK,EAAI,CAACR,EAASS,KACjC,IAAI,IAAIC,KAAOD,EACXN,EAAoBQ,EAAEF,EAAYC,KAASP,EAAoBQ,EAAEX,EAASU,IAC5EE,OAAOC,eAAeb,EAASU,EAAK,CAAEI,YAAY,EAAMC,IAAKN,EAAWC,IAE1E,ECNDP,EAAoBQ,EAAI,CAACK,EAAKC,IAAUL,OAAOM,UAAUC,eAAeC,KAAKJ,EAAKC,GCClFd,EAAoBkB,EAAKrB,IACH,oBAAXsB,QAA0BA,OAAOC,aAC1CX,OAAOC,eAAeb,EAASsB,OAAOC,YAAa,CAAEC,MAAO,WAE7DZ,OAAOC,eAAeb,EAAS,aAAc,CAAEwB,OAAO,GAAO,E,6FCiBvD,SAASC,EAAYC,GAC1B,IAAMC,EAAQC,EAAkBF,GAChCG,YAAW,WACT,MAAMF,CACR,GACF,CAEO,SAASG,IACd,IAAMC,EAAcC,QACpB,OAAO,SAACC,GACWL,EAAkBK,GAC1BC,OAAS,wBAA0C,OAAlBH,EAAYG,OACtDT,EAAYQ,EACd,CACF,CAEA,SAASL,EAAkBO,GACzB,IAAIC,EAvC+B,IAyCnC,GAzCmC,EAyC/BD,E,OAzC+B,EAyCdH,Q,0FACnB,OAAOG,EACF,GAAc,OAAVA,EACT,OAAOH,MAAO,iCACT,GAAqB,iBAAVG,EAAoB,CACpC,IACEC,EAAU,2BAAiD,OAAtBC,KAAKC,UAAUH,GACtD,CAAE,MAAOI,GACPH,EAAU,yDAA4E,OAAnBxB,OAAO4B,KAAKL,GACjF,CACA,OAAOH,MAAMI,EACf,CAAO,YAAc9B,IAAV6B,EACFH,MAAO,sCAEPA,MAAMG,EAAMM,WAEvB,CAtDAC,OAAOC,QAAU,SAAUhB,GAOzB,OANAiB,QAAQjB,MAAM,qBAAsBA,IACpCkB,EAAAA,EAAAA,oBAAmB,CACjBC,YAAanB,QAAAA,EAAS,sCACtBoB,KAAM,QACNC,MAAO,WAEF,CACT,EAEAN,OAAOO,qBAAuB,SAAUC,G,IAGvBA,EAFfN,QAAQjB,MAAM,wBAAyBuB,EAAMC,SAC7CN,EAAAA,EAAAA,oBAAmB,CACjBC,YAAyB,QAAZI,EAAAA,EAAMC,cAAND,IAAAA,EAAAA,EAAgB,iDAC7BH,KAAM,QACNC,MAAO,SAEX,C","sources":["webpack://@openmrs/esm-error-handling/external system \"@openmrs/esm-globals\"","webpack://@openmrs/esm-error-handling/webpack/bootstrap","webpack://@openmrs/esm-error-handling/webpack/runtime/define property getters","webpack://@openmrs/esm-error-handling/webpack/runtime/hasOwnProperty shorthand","webpack://@openmrs/esm-error-handling/webpack/runtime/make namespace object","webpack://@openmrs/esm-error-handling/./src/index.ts"],"sourcesContent":["module.exports = __WEBPACK_EXTERNAL_MODULE__728__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/** @module @category Error Handling */\nimport { dispatchToastShown } from '@openmrs/esm-globals';\n\nwindow.onerror = function (error) {\n console.error('Unexpected error: ', error);\n dispatchToastShown({\n description: error ?? 'Oops! An unexpected error occurred.',\n kind: 'error',\n title: 'Error',\n });\n return false;\n};\n\nwindow.onunhandledrejection = function (event) {\n console.error('Unhandled rejection: ', event.reason);\n dispatchToastShown({\n description: event.reason ?? 'Oops! An unhandled promise rejection occurred.',\n kind: 'error',\n title: 'Error',\n });\n};\n\nexport function reportError(err) {\n const error = ensureErrorObject(err);\n setTimeout(() => {\n throw error;\n });\n}\n\nexport function createErrorHandler() {\n const outgoingErr = Error();\n return (incomingErr) => {\n const finalErr = ensureErrorObject(incomingErr);\n finalErr.stack += `\\nAsync stacktrace:\\n${outgoingErr.stack}`;\n reportError(incomingErr);\n };\n}\n\nfunction ensureErrorObject(thing: any) {\n let message;\n\n if (thing instanceof Error) {\n return thing;\n } else if (thing === null) {\n return Error(`'null' was thrown as an error`);\n } else if (typeof thing === 'object') {\n try {\n message = `Object thrown as error: ${JSON.stringify(thing)}`;\n } catch (e) {\n message = `Object thrown as error with the following properties: ${Object.keys(thing)}`;\n }\n return Error(message);\n } else if (thing === undefined) {\n return Error(`'undefined' was thrown as an error`);\n } else {\n return Error(thing.toString());\n }\n}\n"],"names":["module","exports","__WEBPACK_EXTERNAL_MODULE__728__","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","d","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","value","reportError","err","error","ensureErrorObject","setTimeout","createErrorHandler","outgoingErr","Error","incomingErr","stack","thing","message","JSON","stringify","e","keys","toString","window","onerror","console","dispatchToastShown","description","kind","title","onunhandledrejection","event","reason"],"sourceRoot":""}
package/jest.config.js DELETED
@@ -1,14 +0,0 @@
1
- module.exports = {
2
- clearMocks: true,
3
- transform: {
4
- '^.+\\.tsx?$': ['@swc/jest'],
5
- },
6
- setupFiles: [],
7
- moduleNameMapper: {
8
- '@openmrs/esm-globals': '<rootDir>/__mocks__/openmrs-esm-globals.mock.tsx',
9
- },
10
- testEnvironment: 'jsdom',
11
- testEnvironmentOptions: {
12
- url: 'http://localhost/',
13
- },
14
- };
package/webpack.config.js DELETED
@@ -1,43 +0,0 @@
1
- const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin');
2
- const { resolve } = require('path');
3
- const { CleanWebpackPlugin } = require('clean-webpack-plugin');
4
- const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer');
5
-
6
- const { peerDependencies } = require('./package.json');
7
-
8
- module.exports = (env) => ({
9
- entry: [resolve(__dirname, 'src/index.ts')],
10
- output: {
11
- filename: 'openmrs-esm-error-handling.js',
12
- path: resolve(__dirname, 'dist'),
13
- library: { type: 'system' },
14
- },
15
- mode: 'production',
16
- module: {
17
- rules: [
18
- {
19
- test: /\.m?(js|ts|tsx)$/,
20
- exclude: /node_modules/,
21
- use: 'swc-loader',
22
- },
23
- ],
24
- },
25
- devtool: 'source-map',
26
- devServer: {
27
- headers: {
28
- 'Access-Control-Allow-Origin': '*',
29
- },
30
- disableHostCheck: true,
31
- },
32
- externals: Object.keys(peerDependencies || {}),
33
- plugins: [
34
- new ForkTsCheckerWebpackPlugin(),
35
- new CleanWebpackPlugin(),
36
- new BundleAnalyzerPlugin({
37
- analyzerMode: env && env.analyze ? 'static' : 'disabled',
38
- }),
39
- ],
40
- resolve: {
41
- extensions: ['.tsx', '.ts', '.jsx', '.js'],
42
- },
43
- });