@servicetitan/lazy-module 30.3.1 → 31.0.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.
package/dist/index.js CHANGED
@@ -1,14 +1,26 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
1
+ /* eslint-disable react/no-set-state */ function _define_property(obj, key, value) {
2
+ if (key in obj) {
3
+ Object.defineProperty(obj, key, {
4
+ value: value,
5
+ enumerable: true,
6
+ configurable: true,
7
+ writable: true
8
+ });
9
+ } else {
10
+ obj[key] = value;
11
+ }
12
+ return obj;
13
+ }
14
+ function _ts_decorate(decorators, target, key, desc) {
2
15
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
16
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
17
+ else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
18
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- var __metadata = (this && this.__metadata) || function (k, v) {
19
+ }
20
+ function _ts_metadata(k, v) {
8
21
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
- };
22
+ }
10
23
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
11
- /* eslint-disable react/no-set-state */
12
24
  import { Component, Suspense, lazy, Fragment } from 'react';
13
25
  import { injectDependency, optional } from '@servicetitan/react-ioc';
14
26
  import { ErrorBoundary } from '@servicetitan/error-boundary';
@@ -19,83 +31,85 @@ import { Log } from '@servicetitan/log-service';
19
31
  * `loadingComponent` during loading
20
32
  * `loadingErrorComponent` when a loading error occurs
21
33
  * `errorFallbackComponent` when a component lifecycle error occurs
22
- */
23
- export function lazyModule({ loader, name, loadingComponent: Loading = DefaultLoading, loadingErrorComponent: LoadingError = DefaultLoadingError, errorFallbackComponent, }) {
34
+ */ export function lazyModule({ loader, name, loadingComponent: Loading = DefaultLoading, loadingErrorComponent: LoadingError = DefaultLoadingError, errorFallbackComponent }) {
24
35
  class LazyModule extends Component {
25
- constructor() {
26
- super(...arguments);
27
- Object.defineProperty(this, "state", {
28
- enumerable: true,
29
- configurable: true,
30
- writable: true,
31
- value: {
32
- hasError: false,
33
- }
34
- });
35
- Object.defineProperty(this, "Lazy", {
36
- enumerable: true,
37
- configurable: true,
38
- writable: true,
39
- value: this.createLazy()
40
- });
41
- Object.defineProperty(this, "onReload", {
42
- enumerable: true,
43
- configurable: true,
44
- writable: true,
45
- value: () => {
46
- this.Lazy = this.createLazy();
47
- this.setState({ hasError: false });
48
- }
49
- });
50
- Object.defineProperty(this, "onError", {
51
- enumerable: true,
52
- configurable: true,
53
- writable: true,
54
- value: (error) => {
55
- var _a;
56
- (_a = this.logService) === null || _a === void 0 ? void 0 : _a.error({
57
- error,
58
- data: { Module: name },
59
- category: 'ModuleLoad',
60
- });
61
- }
62
- });
63
- }
64
36
  render() {
65
37
  const { hasError } = this.state;
66
- return (_jsx(ErrorBoundary, { fallback: errorFallbackComponent, moduleName: name, children: hasError ? (_jsx(LoadingError, { onReload: this.onReload })) : (_jsx(Suspense, { fallback: _jsx(Loading, {}), children: _jsx(this.Lazy, { ...this.props }) })) }));
38
+ return /*#__PURE__*/ _jsx(ErrorBoundary, {
39
+ fallback: errorFallbackComponent,
40
+ moduleName: name,
41
+ children: hasError ? /*#__PURE__*/ _jsx(LoadingError, {
42
+ onReload: this.onReload
43
+ }) : /*#__PURE__*/ _jsx(Suspense, {
44
+ fallback: /*#__PURE__*/ _jsx(Loading, {}),
45
+ children: /*#__PURE__*/ _jsx(this.Lazy, {
46
+ ...this.props
47
+ })
48
+ })
49
+ });
67
50
  }
68
51
  /**
69
52
  * Creates a onetime Lazy component with an error handler
70
53
  * (it needed to re-create the Lazy component, when a loading error has occurred)
71
- */
72
- createLazy() {
73
- return lazy(async () => {
54
+ */ createLazy() {
55
+ return /*#__PURE__*/ lazy(async ()=>{
74
56
  try {
75
- return { default: await loader() };
76
- }
77
- catch (e) {
57
+ return {
58
+ default: await loader()
59
+ };
60
+ } catch (e) {
78
61
  this.onError(e);
79
- this.setState({ hasError: true });
62
+ this.setState({
63
+ hasError: true
64
+ });
80
65
  }
81
- return { default: Empty };
66
+ return {
67
+ default: Empty
68
+ };
69
+ });
70
+ }
71
+ constructor(...args){
72
+ super(...args), _define_property(this, "state", {
73
+ hasError: false
74
+ }), _define_property(this, "Lazy", this.createLazy()), _define_property(this, "onReload", ()=>{
75
+ this.Lazy = this.createLazy();
76
+ this.setState({
77
+ hasError: false
78
+ });
79
+ }), _define_property(this, "onError", (error)=>{
80
+ var _this_logService;
81
+ (_this_logService = this.logService) === null || _this_logService === void 0 ? void 0 : _this_logService.error({
82
+ error,
83
+ data: {
84
+ Module: name
85
+ },
86
+ category: 'ModuleLoad'
87
+ });
82
88
  });
83
89
  }
84
90
  }
85
- Object.defineProperty(LazyModule, "displayName", {
86
- enumerable: true,
87
- configurable: true,
88
- writable: true,
89
- value: `lazyModule(${name})`
90
- });
91
- __decorate([
91
+ _define_property(LazyModule, "displayName", `lazyModule(${name})`);
92
+ _ts_decorate([
92
93
  optional(),
93
94
  injectDependency(Log),
94
- __metadata("design:type", Log)
95
+ _ts_metadata("design:type", typeof Log === "undefined" ? Object : Log)
95
96
  ], LazyModule.prototype, "logService", void 0);
96
97
  return LazyModule;
97
98
  }
98
- export const DefaultLoading = () => _jsx("h2", { children: "Loading..." });
99
- export const DefaultLoadingError = ({ onReload }) => (_jsxs(Fragment, { children: [_jsx("h2", { children: "Cannot load module..." }), _jsx("button", { onClick: onReload, children: "Reload" })] }));
100
- const Empty = () => null;
99
+ export const DefaultLoading = ()=>/*#__PURE__*/ _jsx("h2", {
100
+ children: "Loading..."
101
+ });
102
+ export const DefaultLoadingError = ({ onReload })=>/*#__PURE__*/ _jsxs(Fragment, {
103
+ children: [
104
+ /*#__PURE__*/ _jsx("h2", {
105
+ children: "Cannot load module..."
106
+ }),
107
+ /*#__PURE__*/ _jsx("button", {
108
+ onClick: onReload,
109
+ children: "Reload"
110
+ })
111
+ ]
112
+ });
113
+ const Empty = ()=>null;
114
+
101
115
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":";;;;;;;;;;AAAA,uCAAuC;AACvC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAqB,MAAM,OAAO,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAErE,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,GAAG,EAAE,MAAM,2BAA2B,CAAC;AAUhD,aAAa;AACb;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAsC,EAC5D,MAAM,EACN,IAAI,EACJ,gBAAgB,EAAE,OAAO,GAAG,cAAc,EAC1C,qBAAqB,EAAE,YAAY,GAAG,mBAAmB,EACzD,sBAAsB,GACJ;IAClB,MAAM,UAAW,SAAQ,SAAY;QAArC;;YAGI;;;;uBAAQ;oBACJ,QAAQ,EAAE,KAAK;iBAClB;eAAC;YAMM;;;;uBAAO,IAAI,CAAC,UAAU,EAAE;eAAC;YAkBzB;;;;uBAAW,GAAG,EAAE;oBACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;oBAC9B,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;gBACvC,CAAC;eAAC;YAEM;;;;uBAAU,CAAC,KAAc,EAAE,EAAE;;oBACjC,MAAA,IAAI,CAAC,UAAU,0CAAE,KAAK,CAAC;wBACnB,KAAK;wBACL,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;wBACtB,QAAQ,EAAE,YAAY;qBACzB,CAAC,CAAC;gBACP,CAAC;eAAC;QAiBN,CAAC;QA5CG,MAAM;YACF,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;YAEhC,OAAO,CACH,KAAC,aAAa,IAAC,QAAQ,EAAE,sBAAsB,EAAE,UAAU,EAAE,IAAI,YAC5D,QAAQ,CAAC,CAAC,CAAC,CACR,KAAC,YAAY,IAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,GAAI,CAC5C,CAAC,CAAC,CAAC,CACA,KAAC,QAAQ,IAAC,QAAQ,EAAE,KAAC,OAAO,KAAG,YAC3B,KAAC,IAAI,CAAC,IAAI,OAAK,IAAI,CAAC,KAAK,GAAI,GACtB,CACd,GACW,CACnB,CAAC;QACN,CAAC;QAeD;;;WAGG;QACK,UAAU;YACd,OAAO,IAAI,CAAmB,KAAK,IAAI,EAAE;gBACrC,IAAI,CAAC;oBACD,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,EAAE,EAAE,CAAC;gBACvC,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACT,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBAChB,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;gBACtC,CAAC;gBACD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;YAC9B,CAAC,CAAC,CAAC;QACP,CAAC;;IAvDM;;;;eAAc,cAAc,IAAI,GAAG;MAAxB,CAAyB;IAQ3B;QAFf,QAAQ,EAAE;QACV,gBAAgB,CAAC,GAAG,CAAC;kCACO,GAAG;kDAAC;IAkDrC,OAAO,UAAU,CAAC;AACtB,CAAC;AAMD,MAAM,CAAC,MAAM,cAAc,GAAO,GAAG,EAAE,CAAC,sCAAmB,CAAC;AAM5D,MAAM,CAAC,MAAM,mBAAmB,GAA0B,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CACxE,MAAC,QAAQ,eACL,iDAA8B,EAC9B,iBAAQ,OAAO,EAAE,QAAQ,uBAAiB,IACnC,CACd,CAAC;AAEF,MAAM,KAAK,GAAY,GAAG,EAAE,CAAC,IAAI,CAAC"}
1
+ {"version":3,"sources":["../src/index.tsx"],"sourcesContent":["/* eslint-disable react/no-set-state */\nimport { Component, Suspense, lazy, Fragment, ComponentType, FC } from 'react';\nimport { injectDependency, optional } from '@servicetitan/react-ioc';\n\nimport { ErrorBoundary } from '@servicetitan/error-boundary';\nimport { Log } from '@servicetitan/log-service';\n\nexport interface LazyModuleParams<T extends ComponentType<any>> {\n loader: Loader<T>;\n name: string;\n loadingComponent?: ComponentType<any>;\n loadingErrorComponent?: ComponentType<LoadingErrorProps>;\n errorFallbackComponent?: ComponentType<any>;\n}\n\n// - Module -\n/**\n * Creates a lazy module wrapper, which renders\n * `loadingComponent` during loading\n * `loadingErrorComponent` when a loading error occurs\n * `errorFallbackComponent` when a component lifecycle error occurs\n */\nexport function lazyModule<T extends ComponentType<P>, P = any>({\n loader,\n name,\n loadingComponent: Loading = DefaultLoading,\n loadingErrorComponent: LoadingError = DefaultLoadingError,\n errorFallbackComponent,\n}: LazyModuleParams<T>): ComponentType<P> {\n class LazyModule extends Component<P> {\n static displayName = `lazyModule(${name})`;\n\n state = {\n hasError: false,\n };\n\n @optional()\n @injectDependency(Log)\n declare private logService?: Log;\n\n private Lazy = this.createLazy();\n\n render() {\n const { hasError } = this.state;\n\n return (\n <ErrorBoundary fallback={errorFallbackComponent} moduleName={name}>\n {hasError ? (\n <LoadingError onReload={this.onReload} />\n ) : (\n <Suspense fallback={<Loading />}>\n <this.Lazy {...this.props} />\n </Suspense>\n )}\n </ErrorBoundary>\n );\n }\n\n private onReload = () => {\n this.Lazy = this.createLazy();\n this.setState({ hasError: false });\n };\n\n private onError = (error: unknown) => {\n this.logService?.error({\n error,\n data: { Module: name },\n category: 'ModuleLoad',\n });\n };\n\n /**\n * Creates a onetime Lazy component with an error handler\n * (it needed to re-create the Lazy component, when a loading error has occurred)\n */\n private createLazy() {\n return lazy<T | typeof Empty>(async () => {\n try {\n return { default: await loader() };\n } catch (e) {\n this.onError(e);\n this.setState({ hasError: true });\n }\n return { default: Empty };\n });\n }\n }\n\n return LazyModule;\n}\n\nexport interface Loader<T extends ComponentType<any>> {\n (): Promise<T>;\n}\n\nexport const DefaultLoading: FC = () => <h2>Loading...</h2>;\n\nexport interface LoadingErrorProps {\n onReload: () => void;\n}\n\nexport const DefaultLoadingError: FC<LoadingErrorProps> = ({ onReload }) => (\n <Fragment>\n <h2>Cannot load module...</h2>\n <button onClick={onReload}>Reload</button>\n </Fragment>\n);\n\nconst Empty: FC<any> = () => null;\n"],"names":["Component","Suspense","lazy","Fragment","injectDependency","optional","ErrorBoundary","Log","lazyModule","loader","name","loadingComponent","Loading","DefaultLoading","loadingErrorComponent","LoadingError","DefaultLoadingError","errorFallbackComponent","LazyModule","render","hasError","state","fallback","moduleName","onReload","this","Lazy","props","createLazy","default","e","onError","setState","Empty","error","logService","data","Module","category","displayName","h2","button","onClick"],"mappings":"AAAA,qCAAqC;;;;;;;;;;;;;;;;;;;;;;;AACrC,SAASA,SAAS,EAAEC,QAAQ,EAAEC,IAAI,EAAEC,QAAQ,QAA2B,QAAQ;AAC/E,SAASC,gBAAgB,EAAEC,QAAQ,QAAQ,0BAA0B;AAErE,SAASC,aAAa,QAAQ,+BAA+B;AAC7D,SAASC,GAAG,QAAQ,4BAA4B;AAUhD,aAAa;AACb;;;;;CAKC,GACD,OAAO,SAASC,WAAgD,EAC5DC,MAAM,EACNC,IAAI,EACJC,kBAAkBC,UAAUC,cAAc,EAC1CC,uBAAuBC,eAAeC,mBAAmB,EACzDC,sBAAsB,EACJ;IAClB,MAAMC,mBAAmBlB;QAarBmB,SAAS;YACL,MAAM,EAAEC,QAAQ,EAAE,GAAG,IAAI,CAACC,KAAK;YAE/B,qBACI,KAACf;gBAAcgB,UAAUL;gBAAwBM,YAAYb;0BACxDU,yBACG,KAACL;oBAAaS,UAAU,IAAI,CAACA,QAAQ;mCAErC,KAACvB;oBAASqB,wBAAU,KAACV;8BACjB,cAAA,KAACa,IAAI,CAACC,IAAI;wBAAE,GAAG,IAAI,CAACC,KAAK;;;;QAK7C;QAeA;;;SAGC,GACD,AAAQC,aAAa;YACjB,qBAAO1B,KAAuB;gBAC1B,IAAI;oBACA,OAAO;wBAAE2B,SAAS,MAAMpB;oBAAS;gBACrC,EAAE,OAAOqB,GAAG;oBACR,IAAI,CAACC,OAAO,CAACD;oBACb,IAAI,CAACE,QAAQ,CAAC;wBAAEZ,UAAU;oBAAK;gBACnC;gBACA,OAAO;oBAAES,SAASI;gBAAM;YAC5B;QACJ;;YAxDJ,gBAGIZ,uBAAAA,SAAQ;gBACJD,UAAU;YACd,IAMA,uBAAQM,QAAO,IAAI,CAACE,UAAU,KAkB9B,uBAAQJ,YAAW;gBACf,IAAI,CAACE,IAAI,GAAG,IAAI,CAACE,UAAU;gBAC3B,IAAI,CAACI,QAAQ,CAAC;oBAAEZ,UAAU;gBAAM;YACpC,IAEA,uBAAQW,WAAU,CAACG;oBACf;iBAAA,mBAAA,IAAI,CAACC,UAAU,cAAf,uCAAA,iBAAiBD,KAAK,CAAC;oBACnBA;oBACAE,MAAM;wBAAEC,QAAQ3B;oBAAK;oBACrB4B,UAAU;gBACd;YACJ;;IAiBJ;IAxDI,iBADEpB,YACKqB,eAAc,CAAC,WAAW,EAAE7B,KAAK,CAAC,CAAC;;;;;;IA0D9C,OAAOQ;AACX;AAMA,OAAO,MAAML,iBAAqB,kBAAM,KAAC2B;kBAAG;OAAgB;AAM5D,OAAO,MAAMxB,sBAA6C,CAAC,EAAEQ,QAAQ,EAAE,iBACnE,MAACrB;;0BACG,KAACqC;0BAAG;;0BACJ,KAACC;gBAAOC,SAASlB;0BAAU;;;OAEjC;AAEF,MAAMS,QAAiB,IAAM"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@servicetitan/lazy-module",
3
- "version": "30.3.1",
3
+ "version": "31.0.0",
4
4
  "description": "",
5
5
  "homepage": "https://docs.st.dev/docs/frontend/lazy-module",
6
6
  "repository": {
@@ -16,16 +16,16 @@
16
16
  "src"
17
17
  ],
18
18
  "devDependencies": {
19
- "@servicetitan/error-boundary": "30.3.1",
20
- "@servicetitan/log-service": "30.3.1",
21
- "@servicetitan/react-ioc": "30.3.1",
19
+ "@servicetitan/error-boundary": "31.0.0",
20
+ "@servicetitan/log-service": "31.0.0",
21
+ "@servicetitan/react-ioc": "31.0.0",
22
22
  "@types/react": "~18.3.3",
23
23
  "react": "~18.3.1"
24
24
  },
25
25
  "peerDependencies": {
26
- "@servicetitan/error-boundary": "30.3.1",
27
- "@servicetitan/log-service": "30.3.1",
28
- "@servicetitan/react-ioc": "30.3.1",
26
+ "@servicetitan/error-boundary": "31.0.0",
27
+ "@servicetitan/log-service": "31.0.0",
28
+ "@servicetitan/react-ioc": "31.0.0",
29
29
  "react": ">=17.0.2"
30
30
  },
31
31
  "publishConfig": {
@@ -34,5 +34,5 @@
34
34
  "cli": {
35
35
  "webpack": false
36
36
  },
37
- "gitHead": "4d7f01d86d64fc00160d63a2e2a3448f28aa7a2d"
37
+ "gitHead": "c52e188a1217df74052774a2eea6a5126089e3d5"
38
38
  }