@dooboostore/simple-boot-http-server-ssr 1.0.12 → 1.0.14

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 (59) hide show
  1. package/README.MD +1 -3
  2. package/dist/cjs/filters/IntentSchemeFilter.js.map +2 -2
  3. package/dist/cjs/filters/SSRDomParserFilter.js +186 -0
  4. package/dist/cjs/filters/SSRDomParserFilter.js.map +7 -0
  5. package/dist/cjs/filters/SSRFilter.js +1 -1
  6. package/dist/cjs/filters/SSRFilter.js.map +2 -2
  7. package/dist/cjs/filters/SSRLinkDomDomFilter.js +183 -0
  8. package/dist/cjs/filters/SSRLinkDomDomFilter.js.map +7 -0
  9. package/dist/cjs/initializers/DomParserInitializer.js +79 -0
  10. package/dist/cjs/initializers/DomParserInitializer.js.map +7 -0
  11. package/dist/cjs/initializers/LinkedomInitializer.js +81 -0
  12. package/dist/cjs/initializers/LinkedomInitializer.js.map +7 -0
  13. package/dist/cjs/proxy/SymbolIntentApiServiceProxy.js +85 -73
  14. package/dist/cjs/proxy/SymbolIntentApiServiceProxy.js.map +2 -2
  15. package/dist/cjs/proxy/SymbolIntentApiServiceProxyBase.js +2 -77
  16. package/dist/cjs/proxy/SymbolIntentApiServiceProxyBase.js.map +2 -2
  17. package/dist/esm/filters/IntentSchemeFilter.js.map +2 -2
  18. package/dist/esm/filters/SSRDomParserFilter.js +163 -0
  19. package/dist/esm/filters/SSRDomParserFilter.js.map +7 -0
  20. package/dist/esm/filters/SSRFilter.js +1 -1
  21. package/dist/esm/filters/SSRFilter.js.map +2 -2
  22. package/dist/esm/filters/SSRLinkDomDomFilter.js +160 -0
  23. package/dist/esm/filters/SSRLinkDomDomFilter.js.map +7 -0
  24. package/dist/esm/initializers/DomParserInitializer.js +46 -0
  25. package/dist/esm/initializers/DomParserInitializer.js.map +7 -0
  26. package/dist/esm/initializers/LinkedomInitializer.js +48 -0
  27. package/dist/esm/initializers/LinkedomInitializer.js.map +7 -0
  28. package/dist/esm/proxy/SymbolIntentApiServiceProxy.js +85 -73
  29. package/dist/esm/proxy/SymbolIntentApiServiceProxy.js.map +2 -2
  30. package/dist/esm/proxy/SymbolIntentApiServiceProxyBase.js +2 -77
  31. package/dist/esm/proxy/SymbolIntentApiServiceProxyBase.js.map +2 -2
  32. package/dist/esm-bundle/dooboostore-simple-boot-http-server-ssr.esm.js +1184 -525
  33. package/dist/esm-bundle/dooboostore-simple-boot-http-server-ssr.esm.js.map +4 -4
  34. package/dist/types/filters/IntentSchemeFilter.d.ts.map +1 -1
  35. package/dist/types/filters/SSRDomParserFilter.d.ts +57 -0
  36. package/dist/types/filters/SSRDomParserFilter.d.ts.map +1 -0
  37. package/dist/types/filters/SSRLinkDomDomFilter.d.ts +57 -0
  38. package/dist/types/filters/SSRLinkDomDomFilter.d.ts.map +1 -0
  39. package/dist/types/index.d.ts +0 -19
  40. package/dist/types/initializers/DomParserInitializer.d.ts +11 -0
  41. package/dist/types/initializers/DomParserInitializer.d.ts.map +1 -0
  42. package/dist/types/initializers/LinkedomInitializer.d.ts +11 -0
  43. package/dist/types/initializers/LinkedomInitializer.d.ts.map +1 -0
  44. package/dist/types/proxy/SymbolIntentApiServiceProxy.d.ts +2 -0
  45. package/dist/types/proxy/SymbolIntentApiServiceProxy.d.ts.map +1 -1
  46. package/dist/types/proxy/SymbolIntentApiServiceProxyBase.d.ts +0 -8
  47. package/dist/types/proxy/SymbolIntentApiServiceProxyBase.d.ts.map +1 -1
  48. package/dist/umd-bundle/dooboostore-simple-boot-http-server-ssr.umd.js +1184 -525
  49. package/dist/umd-bundle/dooboostore-simple-boot-http-server-ssr.umd.js.map +4 -4
  50. package/package.json +16 -14
  51. package/src/filters/IntentSchemeFilter.ts +51 -48
  52. package/src/filters/SSRDomParserFilter.ts +233 -0
  53. package/src/filters/SSRFilter.ts +2 -2
  54. package/src/filters/SSRLinkDomDomFilter.ts +227 -0
  55. package/src/initializers/DomParserInitializer.ts +70 -0
  56. package/src/initializers/LinkedomInitializer.ts +69 -0
  57. package/src/proxy/SymbolIntentApiServiceProxy.ts +100 -116
  58. package/src/proxy/SymbolIntentApiServiceProxyBase.ts +7 -85
  59. package/tsconfig.json +2 -1
@@ -0,0 +1,70 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ import { parseHTML } from '@dooboostore/dom-parser';
4
+
5
+ export class DomParserInitializer {
6
+ constructor(
7
+ private frontDistPath: string,
8
+ private frontDistIndexFileName: string,
9
+ private reconfigureSettings?: {url: string}
10
+ ) {}
11
+
12
+ public static loadFile(distPath: string, filePath: string): string {
13
+ return fs.readFileSync(path.join(distPath, filePath), 'utf8');
14
+ }
15
+
16
+ async run(): Promise<Window> {
17
+ // const indexHTML = fs.readFileSync(path.join(this.frontDistPath, 'index.html'), 'utf8');
18
+ // const indexHTML = JsdomInitializer.loadFile(this.frontDistPath, this.frontDistIndexFileName);
19
+ const pathStr = path.join(this.frontDistPath, this.frontDistIndexFileName);
20
+
21
+ const html = fs.readFileSync(pathStr,'utf8');
22
+
23
+ const w = parseHTML(html, {href: this.reconfigureSettings.url}) as unknown as Window & typeof globalThis; ;
24
+
25
+ // @ts-ignore
26
+ w.location ??= { href: 'about:blank'};
27
+ if(this.reconfigureSettings?.url){
28
+ // console.log('--',w,w.location);
29
+ // @ts-ignore
30
+ w.location.href = this.reconfigureSettings.url;
31
+ }
32
+ // console.log('!!!!!!!!!!!', html, w.document);
33
+ // @ts-ignore
34
+ // global.document = w.document;
35
+ // @ts-ignore
36
+ // global.window = w as unknown as Window & typeof globalThis;
37
+ // @ts-ignore
38
+ // global.window.requestAnimationFrame = () => {};
39
+ // global.window.scrollTo = () => {};
40
+ // @ts-ignore
41
+ // global.history = w.history;
42
+ global.Event = w.Event;
43
+ // @ts-ignore
44
+ global.PopStateEvent = w.Event;
45
+ global.IntersectionObserver = w.IntersectionObserver;
46
+ // @ts-ignore
47
+ // global.Error = ErrorBase;
48
+ // @ts-ignore
49
+ // global.navigator = w.navigator;
50
+ global.NodeFilter = w.NodeFilter;
51
+ global.Node = w.Node;
52
+ global.DocumentFragment = w.DocumentFragment;
53
+ global.HTMLElement = w.HTMLElement;
54
+ global.HTMLMetaElement = w.HTMLMetaElement;
55
+ global.Element = w.Element;
56
+ global.HTMLCanvasElement = w.HTMLCanvasElement;
57
+ global.HTMLCanvasElement.prototype.getContext = () => {
58
+ return null;
59
+ };
60
+ global.CanvasRenderingContext2D = w.CanvasRenderingContext2D;
61
+ global.CanvasPattern = w.CanvasPattern;
62
+ global.CanvasGradient = w.CanvasGradient;
63
+ global.Path2D = w.Path2D;
64
+ global.ImageData = w.ImageData;
65
+ // console.log('cvvvvvvvvvvvvvv', w.Node.DOCUMENT_FRAGMENT_NODE);
66
+ return w;
67
+ }
68
+ }
69
+ //
70
+ // export default new JsdomInitializer();
@@ -0,0 +1,69 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ import { parseHTML } from 'linkedom';
4
+
5
+ export class LinkedomInitializer {
6
+ constructor(
7
+ private frontDistPath: string,
8
+ private frontDistIndexFileName: string,
9
+ private reconfigureSettings?: {url: string}
10
+ ) {}
11
+
12
+ public static loadFile(distPath: string, filePath: string): string {
13
+ return fs.readFileSync(path.join(distPath, filePath), 'utf8');
14
+ }
15
+
16
+ async run(): Promise<Window> {
17
+ // const indexHTML = fs.readFileSync(path.join(this.frontDistPath, 'index.html'), 'utf8');
18
+ // const indexHTML = JsdomInitializer.loadFile(this.frontDistPath, this.frontDistIndexFileName);
19
+ const pathStr = path.join(this.frontDistPath, this.frontDistIndexFileName);
20
+
21
+ const html = fs.readFileSync(pathStr,'utf8');
22
+
23
+ const w = parseHTML(html);
24
+ // @ts-ignore
25
+ // w.location ??= { href: 'about:blank'};
26
+ // if(this.reconfigureSettings?.url){
27
+ // console.log('--',w,w.location);
28
+ // @ts-ignore
29
+ // w.location.href = this.reconfigureSettings.url;
30
+ // }
31
+ // console.log('!!!!!!!!!!!', html, w.document);
32
+ // @ts-ignore
33
+ global.document = w.document;
34
+ // @ts-ignore
35
+ global.window = w as unknown as Window & typeof globalThis;
36
+ // @ts-ignore
37
+ global.window.requestAnimationFrame = () => {};
38
+ global.window.scrollTo = () => {};
39
+ // @ts-ignore
40
+ global.history = w.history;
41
+ global.Event = w.Event;
42
+ // @ts-ignore
43
+ global.PopStateEvent = w.Event;
44
+ global.IntersectionObserver = w.IntersectionObserver;
45
+ // @ts-ignore
46
+ // global.Error = ErrorBase;
47
+ // @ts-ignore
48
+ // global.navigator = w.navigator;
49
+ global.NodeFilter = w.NodeFilter;
50
+ global.Node = w.Node;
51
+ global.DocumentFragment = w.DocumentFragment;
52
+ global.HTMLElement = w.HTMLElement;
53
+ global.HTMLMetaElement = w.HTMLMetaElement;
54
+ global.Element = w.Element;
55
+ global.HTMLCanvasElement = w.HTMLCanvasElement;
56
+ global.HTMLCanvasElement.prototype.getContext = () => {
57
+ return null;
58
+ };
59
+ global.CanvasRenderingContext2D = w.CanvasRenderingContext2D;
60
+ global.CanvasPattern = w.CanvasPattern;
61
+ global.CanvasGradient = w.CanvasGradient;
62
+ global.Path2D = w.Path2D;
63
+ global.ImageData = w.ImageData;
64
+ // console.log('cvvvvvvvvvvvvvv', w.Node.DOCUMENT_FRAGMENT_NODE);
65
+ return w;
66
+ }
67
+ }
68
+ //
69
+ // export default new JsdomInitializer();
@@ -1,131 +1,115 @@
1
- import { getSim, Sim } from '@dooboostore/simple-boot/decorators/SimDecorator';
2
- import { makeIntentHeaderBySymbol } from '../codes/HttpHeaders';
3
- import { ConvertUtils } from '@dooboostore/core/convert/ConvertUtils';
4
- import { ApiService } from '@dooboostore/simple-boot/fetch/ApiService';
5
-
6
-
7
- export type Config<T = any> = { method?:'get' | 'post' | 'petch' | 'delete' | 'head', multipartFormData?: boolean, bypassTransform?: boolean; transformText?: boolean, headers?: HeadersInit, body?: T };
1
+ import {getSim, Sim} from '@dooboostore/simple-boot/decorators/SimDecorator';
2
+ import {makeIntentHeaderBySymbol} from '../codes/HttpHeaders';
3
+ import {ConvertUtils} from '@dooboostore/core/convert/ConvertUtils';
4
+ import {ApiService} from '@dooboostore/simple-boot/fetch/ApiService';
5
+
6
+
7
+ export type Config<T = any> = {
8
+ method?: 'get' | 'post' | 'petch' | 'delete' | 'head',
9
+ multipartFormData?: boolean,
10
+ bypassTransform?: boolean;
11
+ transformText?: boolean,
12
+ headers?: HeadersInit,
13
+ body?: T,
14
+ config?: ApiService.ApiServiceConfig
15
+ };
8
16
  const _ = ApiService;
17
+
9
18
  @Sim
10
19
  export class SymbolIntentApiServiceProxy<T extends object> implements ProxyHandler<T> {
11
20
 
12
-
13
21
  constructor(private apiService: ApiService) {
14
- console.log('-------apiService', apiService);
22
+ // console.log('-------apiService', apiService);
15
23
  }
16
24
 
17
- get(target: T, prop: string | symbol, receiver: any): any {
18
- const simConfig = getSim(target)
19
- const apiService = this.apiService;
20
- const value = Reflect.get(target, prop, receiver);
21
- if (typeof value === 'function' && simConfig?.symbol) {
22
- return function (...args: any[]) {
23
- const f = value as Function;
24
- const p = (userConfig: Config) => {
25
-
26
- const headers = {...(userConfig?.headers ?? {}), ...makeIntentHeaderBySymbol(simConfig.symbol as Symbol)};
27
- const method = userConfig?.method ?? 'post';
28
- if(method === 'post' && userConfig?.multipartFormData) {
29
- return apiService.post({
30
- target: `/${String(prop)}`,
31
- config: {
32
- bypassTransform: userConfig?.bypassTransform,
33
- transformText: userConfig?.transformText,
34
- fetch: {
35
- credentials: 'include',
36
- headers: headers,
37
- body: ConvertUtils.toFormData(userConfig?.body)
38
- }
25
+ static createHandler<T extends object>(apiService: ApiService): ProxyHandler<T> {
26
+ return {
27
+ get(target: T, prop: string | symbol, receiver: any): any {
28
+ const simConfig = getSim(target)
29
+ const value = Reflect.get(target, prop, receiver);
30
+ if (typeof value === 'function' && simConfig?.symbol) {
31
+ return function (...args: any[]) {
32
+ const f = value as Function;
33
+ const p = (userConfig: Config) => {
34
+ const headers = {...(userConfig?.headers ?? {}), ...makeIntentHeaderBySymbol(simConfig.symbol as Symbol)};
35
+ const method = userConfig?.method ?? 'post';
36
+ if (method === 'post' && userConfig?.multipartFormData) {
37
+ return apiService.post({
38
+ target: `/${String(prop)}`,
39
+ config: {
40
+ bypassTransform: userConfig?.bypassTransform,
41
+ transformText: userConfig?.transformText,
42
+ config: userConfig?.config,
43
+ fetch: {
44
+ credentials: 'include',
45
+ headers: headers,
46
+ body: ConvertUtils.toFormData(userConfig?.body)
47
+ }
48
+ }
49
+ });
50
+ } else if (method === 'post') {
51
+ return apiService.postJson({
52
+ target: `/${String(prop)}`,
53
+ config: {
54
+ bypassTransform: userConfig?.bypassTransform,
55
+ transformText: userConfig?.transformText,
56
+ config: userConfig?.config,
57
+ fetch: {
58
+ credentials: 'include',
59
+ headers: headers,
60
+ body: userConfig?.body
61
+ }
62
+ }
63
+ });
64
+ } else if (method === 'petch') {
65
+ return apiService.patchJson({
66
+ target: `/${String(prop)}`,
67
+ config: {
68
+ bypassTransform: userConfig?.bypassTransform,
69
+ transformText: userConfig?.transformText,
70
+ config: userConfig?.config,
71
+ fetch: {
72
+ credentials: 'include',
73
+ headers: headers,
74
+ body: userConfig?.body
75
+ }
76
+ }
77
+ });
78
+ } else {
79
+ return apiService[method]({
80
+ target: {url: `/${String(prop)}`, searchParams: userConfig?.body},
81
+ config: {
82
+ bypassTransform: userConfig?.bypassTransform,
83
+ transformText: userConfig?.transformText,
84
+ config: userConfig?.config,
85
+ fetch: {
86
+ credentials: 'include',
87
+ headers: headers,
88
+ }
89
+ }
90
+ });
39
91
  }
40
- });
41
- } else if (method === 'post') {
42
- return apiService.postJson({
43
- target: `/${String(prop)}`,
44
- config: {
45
- bypassTransform: userConfig?.bypassTransform,
46
- transformText: userConfig?.transformText,
47
- fetch: {
48
- credentials: 'include',
49
- headers: headers,
50
- body: userConfig?.body
51
- }
52
- }
53
- });
54
- }else if (method === 'petch') {
55
- return apiService.patchJson({
56
- target: `/${String(prop)}`,
57
- config: {
58
- bypassTransform: userConfig?.bypassTransform,
59
- transformText: userConfig?.transformText,
60
- fetch: {
61
- credentials: 'include',
62
- headers: headers,
63
- body: userConfig?.body
64
- }
65
- }
66
- });
67
- } else {
68
- return apiService[method]({
69
- // return apiService.head({
70
- target: {url: `/${String(prop)}`, searchParams: userConfig?.body},
71
- config: {
72
- bypassTransform: userConfig?.bypassTransform,
73
- transformText: userConfig?.transformText,
74
- fetch: {
75
- credentials: 'include',
76
- headers: headers,
77
- }
78
- }
79
- });
92
+ };
93
+ args.push(p);
94
+ return Reflect.apply(f, target, args);
80
95
  }
81
-
82
-
83
-
84
-
85
- // if (userConfig?.multipartFormData) {
86
- // return apiService.post({
87
- // target: `/${String(prop)}`,
88
- // config: {
89
- // bypassTransform: userConfig?.bypassTransform,
90
- // transformText: userConfig?.transformText,
91
- // fetch: {
92
- // credentials: 'include',
93
- // headers: headers,
94
- // body: ConvertUtils.toFormData(userConfig?.body)
95
- // }
96
- // }
97
- // });
98
- // } else {
99
- // return apiService.postJson({
100
- // target: `/${String(prop)}`,
101
- // config: {
102
- // bypassTransform: userConfig?.bypassTransform,
103
- // transformText: userConfig?.transformText,
104
- // fetch: {
105
- // credentials: 'include',
106
- // headers: headers,
107
- // body: userConfig?.body
108
- // }
109
- // }
110
- // });
111
- // }
112
-
113
- };
114
- args.push(p);
115
- return Reflect.apply(f, target, args);
116
- // return f.apply(target, args);
96
+ }
97
+ return Reflect.get(target, prop, receiver);
98
+ },
99
+
100
+ apply(target: T, thisArg: any, argArray: any[]): any {
101
+ console.log('SymbolIntentApiServiceProxy apply')
102
+ // @ts-ignore
103
+ return Reflect.apply(target, thisArg, argArray);
117
104
  }
118
- }
119
- return Reflect.get(target, prop, receiver);
105
+ };
120
106
  }
121
107
 
122
- apply(target: T, thisArg: any, argArray: any[]): any {
123
- console.log('SymbolIntentApiServiceProxy apply')
124
- // @ts-ignore
125
- return Reflect.apply(target, thisArg, argArray);
108
+ get(target: T, prop: string | symbol, receiver: any): any {
109
+ return SymbolIntentApiServiceProxy.createHandler<T>(this.apiService).get!(target, prop, receiver);
126
110
  }
127
111
 
128
-
129
-
130
-
112
+ apply(target: T, thisArg: any, argArray: any[]): any {
113
+ return SymbolIntentApiServiceProxy.createHandler<T>(this.apiService).apply!(target, thisArg, argArray);
114
+ }
131
115
  }
@@ -1,96 +1,18 @@
1
- import { getSim, Sim } from '@dooboostore/simple-boot/decorators/SimDecorator';
2
- import { makeIntentHeaderBySymbol } from '../codes/HttpHeaders';
3
- import { ConvertUtils } from '@dooboostore/core/convert/ConvertUtils';
4
- import { ApiService } from '@dooboostore/simple-boot/fetch/ApiService';
5
-
6
-
7
- export type SymbolIntentApiServiceProxyBaseConfig<T = any> = { method?:'get' | 'post' | 'petch' | 'delete' | 'head', multipartFormData?: boolean, bypassTransform?: boolean; transformText?: boolean, headers?: HeadersInit, body?: T };
1
+ import {getSim, Sim} from '@dooboostore/simple-boot/decorators/SimDecorator';
2
+ import {makeIntentHeaderBySymbol} from '../codes/HttpHeaders';
3
+ import {ConvertUtils} from '@dooboostore/core/convert/ConvertUtils';
4
+ import {ApiService} from '@dooboostore/simple-boot/fetch/ApiService';
5
+ import {SymbolIntentApiServiceProxy} from './SymbolIntentApiServiceProxy';
8
6
 
9
7
  export class SymbolIntentApiServiceProxyBase<T extends object = any> {
10
8
  // 생성자는 프록시될 대상 객체(target)와 의존성을 주입받습니다.
11
9
  constructor(
12
10
  apiService: ApiService,
13
11
  ) {
14
- // ProxyHandler 객체를 정의합니다.
15
- const handler: ProxyHandler<T> = {
16
- get(target: T, prop: string | symbol, receiver: any): any {
17
- const simConfig = getSim(target)
18
- const value = Reflect.get(target, prop, receiver);
19
- if (typeof value === 'function' && simConfig?.symbol) {
20
- return function (...args: any[]) {
21
- const f = value as Function;
22
- const p = (userConfig: SymbolIntentApiServiceProxyBaseConfig) => {
23
- const headers = {...(userConfig?.headers ?? {}), ...makeIntentHeaderBySymbol(simConfig.symbol as Symbol)};
24
- const method = userConfig?.method ?? 'post';
25
- if(method === 'post' && userConfig?.multipartFormData) {
26
- return apiService.post({
27
- target: `/${String(prop)}`,
28
- config: {
29
- bypassTransform: userConfig?.bypassTransform,
30
- transformText: userConfig?.transformText,
31
- fetch: {
32
- credentials: 'include',
33
- headers: headers,
34
- body: ConvertUtils.toFormData(userConfig?.body)
35
- }
36
- }
37
- });
38
- } else if (method === 'post') {
39
- return apiService.postJson({
40
- target: `/${String(prop)}`,
41
- config: {
42
- bypassTransform: userConfig?.bypassTransform,
43
- transformText: userConfig?.transformText,
44
- fetch: {
45
- credentials: 'include',
46
- headers: headers,
47
- body: userConfig?.body
48
- }
49
- }
50
- });
51
- }else if (method === 'petch') {
52
- return apiService.patchJson({
53
- target: `/${String(prop)}`,
54
- config: {
55
- bypassTransform: userConfig?.bypassTransform,
56
- transformText: userConfig?.transformText,
57
- fetch: {
58
- credentials: 'include',
59
- headers: headers,
60
- body: userConfig?.body
61
- }
62
- }
63
- });
64
- } else {
65
- return apiService[method]({
66
- target: {url: `/${String(prop)}`, searchParams: userConfig?.body},
67
- config: {
68
- bypassTransform: userConfig?.bypassTransform,
69
- transformText: userConfig?.transformText,
70
- fetch: {
71
- credentials: 'include',
72
- headers: headers,
73
- }
74
- }
75
- });
76
- }
77
- };
78
- args.push(p);
79
- return Reflect.apply(f, target, args);
80
- }
81
- }
82
- return Reflect.get(target, prop, receiver);
83
- },
84
-
85
- apply(target: T, thisArg: any, argArray: any[]): any {
86
- console.log('SymbolIntentApiServiceProxyBase apply (from handler)');
87
- // @ts-ignore
88
- return Reflect.apply(target, thisArg, argArray);
89
- }
90
- };
12
+ // SymbolIntentApiServiceProxy의 static handler를 사용합니다.
13
+ const handler = SymbolIntentApiServiceProxy.createHandler<T>(apiService);
91
14
 
92
15
  // 생성자에서 Proxy 객체를 반환합니다.
93
-
94
16
  // @ts-ignore
95
17
  return new Proxy(this, handler);
96
18
  }
package/tsconfig.json CHANGED
@@ -12,7 +12,8 @@
12
12
  "emitDecoratorMetadata": true,
13
13
  "esModuleInterop": true,
14
14
  "skipLibCheck": true,
15
- "moduleResolution": "node",
15
+ "module": "esnext",
16
+ "moduleResolution": "bundler",
16
17
  "baseUrl": ".",
17
18
  "paths": {
18
19
  // "@dooboostore/core/*": ["../../core/src/*"],