@empjs/share 0.0.1 → 0.0.2

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/runtime.js CHANGED
@@ -1,188 +1,2 @@
1
- // src/helper/config.ts
2
- var shareGlobalName = "EMP_SHARE_RUNTIME";
3
-
4
- // src/mfRuntime/helper.ts
5
- function deepAssign(target, ...sources) {
6
- for (const source of sources) {
7
- for (const k in source) {
8
- const vs = source[k], vt = target[k];
9
- if (Object(vs) == vs && Object(vt) === vt) {
10
- target[k] = deepAssign(vt, vs);
11
- continue;
12
- }
13
- target[k] = source[k];
14
- }
15
- }
16
- return target;
17
- }
18
- var checkVersion = (version) => version ? Number(version.split(".")[0]) : 0;
19
- var isPromise = (p) => p && Object.prototype.toString.call(p) === "[object Promise]";
20
-
21
- // src/mfRuntime/framework/base.ts
22
- var BaseAdapter = class {
23
- libs;
24
- constructor(libs) {
25
- this.libs = libs;
26
- }
27
- get shared() {
28
- const { React, ReactDOM, scope } = this.libs;
29
- return {
30
- react: {
31
- lib: () => React,
32
- version: React.version,
33
- scope,
34
- shareConfig: {
35
- singleton: true,
36
- requiredVersion: `^${React.version}`
37
- }
38
- },
39
- "react-dom": {
40
- lib: () => ReactDOM,
41
- version: ReactDOM.version,
42
- scope,
43
- shareConfig: {
44
- singleton: true,
45
- requiredVersion: `^${React.version}`
46
- }
47
- }
48
- };
49
- }
50
- };
51
-
52
- // src/mfRuntime/framework/react.tsx
53
- var ReactAdapter = class extends BaseAdapter {
54
- constructor(libs) {
55
- super(libs);
56
- }
57
- adapter(component, scope = this.libs.scope, React = this.libs.React, ReactDOM = this.libs.ReactDOM) {
58
- const reactVersion = checkVersion(React.version);
59
- const self = this;
60
- class WrappedComponent extends React.Component {
61
- containerRef;
62
- root;
63
- constructor(props) {
64
- super(props);
65
- this.containerRef = React.createRef();
66
- }
67
- componentDidMount() {
68
- this.mountOriginalComponent(true);
69
- }
70
- componentDidUpdate() {
71
- this.mountOriginalComponent();
72
- }
73
- componentWillUnmount() {
74
- this.unMountOriginalComponent();
75
- }
76
- unMountOriginalComponent() {
77
- if (!this.containerRef.current) return;
78
- if (reactVersion < 18) {
79
- ReactDOM.unmountComponentAtNode(this.containerRef.current);
80
- } else {
81
- this.root.unmount();
82
- }
83
- }
84
- async mountOriginalComponent(shouldRender) {
85
- if (isPromise(component))
86
- component = await component.then((m) => {
87
- return m[scope];
88
- });
89
- const element = React.createElement(component, this.props);
90
- if (reactVersion < 18) {
91
- const Render = shouldRender ? ReactDOM.render : ReactDOM.hydrate;
92
- Render(element, this.containerRef.current);
93
- } else {
94
- if (shouldRender) {
95
- const { createRoot } = self.libs;
96
- this.root = createRoot(this.containerRef.current);
97
- this.root.render(element);
98
- } else {
99
- const { hydrateRoot } = self.libs;
100
- this.root = hydrateRoot(this.containerRef.current, element);
101
- }
102
- }
103
- }
104
- render() {
105
- return /* @__PURE__ */ React.createElement("div", { ref: this.containerRef });
106
- }
107
- }
108
- return WrappedComponent;
109
- }
110
- };
111
-
112
- // src/mfRuntime/plugins.ts
113
- var catchErrorNextPlugin = function(showLog = false) {
114
- return {
115
- name: "catch-error-next-plugin",
116
- errorLoadRemote(o) {
117
- if (showLog) {
118
- console.log("[@emp/adapter]", o.id, o.lifecycle, o.from);
119
- console.error("[@emp/adapter]", o.error);
120
- }
121
- return {};
122
- }
123
- };
124
- };
125
-
126
- // src/mfRuntime/index.ts
127
- var EMPRuntime = class {
128
- libs = deepAssign(
129
- {
130
- scope: "default"
131
- },
132
- window[shareGlobalName] || {}
133
- );
134
- initOptions;
135
- options = {
136
- showLog: false
137
- };
138
- framework;
139
- isInit = false;
140
- react;
141
- constructor(op) {
142
- if (op) this.setupLibs(op);
143
- }
144
- /**
145
- * 实例化 adapter libs
146
- * @param EMP_ADAPTER
147
- */
148
- setupLibs(o) {
149
- if (o) {
150
- this.libs = o;
151
- }
152
- if (!this.libs.MFRuntime) {
153
- throw new Error("EMP FastMode must load MFRuntime!");
154
- }
155
- if (!this.libs.MFSDK) {
156
- throw new Error("EMP FastMode must load MFSDK!");
157
- }
158
- if (this.libs.React && this.libs.ReactDOM) {
159
- this.framework = "react";
160
- this.react = new ReactAdapter(this.libs);
161
- }
162
- }
163
- init(options = {}) {
164
- if (this.isInit) return;
165
- let op = {
166
- name: "empAdepterProject",
167
- remotes: [],
168
- plugins: [catchErrorNextPlugin(this.options.showLog)]
169
- };
170
- if (this.framework === "react") {
171
- op.shared = this.react.shared;
172
- }
173
- op = deepAssign(op, options);
174
- this.libs.MFRuntime.init(op);
175
- this.isInit = true;
176
- }
177
- load(...args) {
178
- return this.libs.MFRuntime.loadRemote(...args);
179
- }
180
- register = this.libs.MFRuntime.registerRemotes;
181
- preload = this.libs.MFRuntime.preloadRemote;
182
- loadShare = this.libs.MFRuntime.loadShare;
183
- };
184
- var mfRuntime_default = new EMPRuntime();
185
- export {
186
- mfRuntime_default as default
187
- };
1
+ function p(t,...e){for(let n of e)for(let i in n){let r=n[i],o=t[i];if(Object(r)==r&&Object(o)===o){t[i]=p(o,r);continue}t[i]=n[i]}return t}var h=t=>t?Number(t.split(".")[0]):0,f=t=>t&&Object.prototype.toString.call(t)==="[object Promise]";var d="EMP_SHARE_RUNTIME";var y=function(t=!1){return{name:"catch-error-next-plugin",errorLoadRemote(e){return t&&(console.log("[@emp/share]",e.id,e.lifecycle,e.from),console.error("[@emp/share]",e.error)),{}}}};var c=class{libs=p({},window[d]||{});initOptions;options={showLog:!1};isInit=!1;constructor(e){e&&this.setup(e)}setup(e){if(e&&(this.libs=e),!this.libs.MFRuntime||!this.libs.MFSDK)throw new Error("MFRuntime and MFSDK Required!")}init(e={}){if(this.isInit)return;let n={name:"empAdepterProject",remotes:[],plugins:[y(this.options.showLog)]};n=p(n,e),this.libs.MFRuntime.init(n),this.isInit=!0}load(...e){return this.libs.MFRuntime.loadRemote(...e)}register=this.libs.MFRuntime.registerRemotes;preload=this.libs.MFRuntime.preloadRemote;loadShare=this.libs.MFRuntime.loadShare},R=new c;var l=class{libs={scope:"default"};constructor(e){e&&this.setup(e)}setup(e){e&&(typeof e=="string"&&(e=window[e]),this.libs=p(this.libs,e))}get shared(){let{React:e,ReactDOM:n,scope:i}=this.libs;return{react:{lib:()=>e,version:e.version,scope:i,shareConfig:{singleton:!0,requiredVersion:`^${e.version}`}},"react-dom":{lib:()=>n,version:n.version,scope:i,shareConfig:{singleton:!0,requiredVersion:`^${e.version}`}}}}adapter(e,n=this.libs.scope,i=this.libs.React,r=this.libs.ReactDOM){let o=h(i.version),m=this;class b extends i.Component{containerRef;root;constructor(a){super(a),this.containerRef=i.createRef()}componentDidMount(){this.mountOriginalComponent(!0)}componentDidUpdate(){this.mountOriginalComponent()}componentWillUnmount(){this.unMountOriginalComponent()}unMountOriginalComponent(){this.containerRef.current&&(o<18?r.unmountComponentAtNode(this.containerRef.current):this.root.unmount())}async mountOriginalComponent(a){f(e)&&(e=await e.then(s=>s[n]));let u=i.createElement(e,this.props);if(o<18)(a?r.render:r.hydrate)(u,this.containerRef.current);else if(a){let{createRoot:s}=m.libs;this.root=s(this.containerRef.current),this.root.render(u)}else{let{hydrateRoot:s}=m.libs;this.root=s(this.containerRef.current,u)}}render(){return i.createElement("div",{ref:this.containerRef})}}return b}},g=new l;export{R as default,g as reactAdapter};
188
2
  //# sourceMappingURL=runtime.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/helper/config.ts","../src/mfRuntime/helper.ts","../src/mfRuntime/framework/base.ts","../src/mfRuntime/framework/react.tsx","../src/mfRuntime/plugins.ts","../src/mfRuntime/index.ts"],"sourcesContent":["export const shareGlobalName = 'EMP_SHARE_RUNTIME'\n","export function deepAssign<T>(target: any, ...sources: any): T {\n for (const source of sources) {\n for (const k in source) {\n const vs = source[k],\n vt = target[k]\n if (Object(vs) == vs && Object(vt) === vt) {\n target[k] = deepAssign(vt, vs)\n continue\n }\n target[k] = source[k]\n }\n }\n return target\n}\n\nexport const checkVersion = (version: string) => (version ? Number(version.split('.')[0]) : 0)\nexport const isPromise = (p: any) => p && Object.prototype.toString.call(p) === '[object Promise]'\n","import type {EMP_ADAPTER_Type} from '../types'\nexport class BaseAdapter {\n libs: EMP_ADAPTER_Type\n\n constructor(libs: EMP_ADAPTER_Type) {\n this.libs = libs\n }\n get shared() {\n const {React, ReactDOM, scope} = this.libs as EMP_ADAPTER_Type\n return {\n react: {\n lib: () => React,\n version: React.version,\n scope,\n shareConfig: {\n singleton: true,\n requiredVersion: `^${React.version}`,\n },\n },\n 'react-dom': {\n lib: () => ReactDOM,\n version: ReactDOM.version,\n scope,\n shareConfig: {\n singleton: true,\n requiredVersion: `^${React.version}`,\n },\n },\n }\n }\n}\n","import {checkVersion, isPromise} from '../helper'\nimport type {EMP_ADAPTER_Type} from '../types'\nimport {BaseAdapter} from './base'\nexport class ReactAdapter extends BaseAdapter {\n constructor(libs: EMP_ADAPTER_Type) {\n super(libs)\n }\n adapter<P = any>(\n component: any,\n scope: string = this.libs.scope,\n React: any = this.libs.React,\n ReactDOM: any = this.libs.ReactDOM,\n ): P {\n const reactVersion = checkVersion(React.version)\n const self = this\n class WrappedComponent extends React.Component {\n public containerRef: any\n public root: any\n constructor(props: P) {\n super(props as any)\n this.containerRef = React.createRef()\n }\n\n componentDidMount() {\n this.mountOriginalComponent(true)\n }\n\n componentDidUpdate() {\n this.mountOriginalComponent()\n }\n\n componentWillUnmount() {\n this.unMountOriginalComponent()\n }\n unMountOriginalComponent() {\n if (!this.containerRef.current) return\n if (reactVersion < 18) {\n ReactDOM.unmountComponentAtNode(this.containerRef.current)\n } else {\n this.root.unmount()\n }\n }\n async mountOriginalComponent(shouldRender?: boolean) {\n if (isPromise(component))\n component = await component.then((m: any) => {\n return m[scope]\n })\n const element = React.createElement(component, this.props)\n if (reactVersion < 18) {\n const Render = shouldRender ? ReactDOM.render : ReactDOM.hydrate\n Render(element, this.containerRef.current)\n } else {\n if (shouldRender) {\n const {createRoot} = self.libs\n this.root = createRoot(this.containerRef.current!)\n this.root.render(element)\n } else {\n const {hydrateRoot} = self.libs\n this.root = hydrateRoot(this.containerRef.current!, element)\n }\n }\n }\n\n render() {\n return <div ref={this.containerRef} />\n }\n }\n return WrappedComponent as any\n }\n}\n","import type {FederationRuntimePlugin} from '@module-federation/runtime'\nexport const errorLoadPlugin: () => FederationRuntimePlugin = function () {\n return {\n name: 'fallback-plugin',\n errorLoadRemote(...args) {\n console.error('[errorLoadRemote]', ...args)\n const fallback = 'error loading modules'\n return fallback\n },\n }\n}\n\nexport const catchErrorNextPlugin: (showLog?: boolean) => FederationRuntimePlugin = function (showLog = false) {\n return {\n name: 'catch-error-next-plugin',\n errorLoadRemote(o) {\n if (showLog) {\n // console.error('[@emp/adapter]', o)\n console.log('[@emp/adapter]', o.id, o.lifecycle, o.from)\n console.error('[@emp/adapter]', o.error)\n }\n return {}\n },\n }\n}\n","import {shareGlobalName} from 'src/helper/config'\nimport {ReactAdapter} from './framework/react'\nimport {deepAssign} from './helper'\nimport {catchErrorNextPlugin} from './plugins'\nimport type {\n EMP_ADAPTER_OPTIONS_Type,\n EMP_ADAPTER_Type,\n EmpRuntimeOptions,\n FrameworkType,\n InitOptionsType,\n LoadRemoteType,\n} from './types'\ntype EmpInitOptionsType = Partial<InitOptionsType>\nexport class EMPRuntime {\n public libs: EMP_ADAPTER_OPTIONS_Type = deepAssign(\n {\n scope: 'default',\n },\n window[shareGlobalName] || {},\n )\n public initOptions!: InitOptionsType\n public options: EmpRuntimeOptions = {\n showLog: false,\n }\n framework?: FrameworkType\n private isInit = false\n react!: ReactAdapter\n constructor(op?: EMP_ADAPTER_OPTIONS_Type) {\n if (op) this.setupLibs(op)\n }\n /**\n * 实例化 adapter libs\n * @param EMP_ADAPTER\n */\n public setupLibs(o?: EMP_ADAPTER_OPTIONS_Type) {\n if (o) {\n // console.log(this.libs, o)\n // this.libs = deepAssign(this.libs, o)\n this.libs = o\n }\n if (!this.libs.MFRuntime) {\n throw new Error('EMP FastMode must load MFRuntime!')\n }\n if (!this.libs.MFSDK) {\n throw new Error('EMP FastMode must load MFSDK!')\n }\n if (this.libs.React && this.libs.ReactDOM) {\n this.framework = 'react'\n this.react = new ReactAdapter(this.libs as EMP_ADAPTER_Type)\n }\n }\n public init(options: EmpInitOptionsType = {}) {\n if (this.isInit) return\n let op: InitOptionsType = {\n name: 'empAdepterProject',\n remotes: [],\n plugins: [catchErrorNextPlugin(this.options.showLog)],\n }\n if (this.framework === 'react') {\n op.shared = this.react.shared\n }\n op = deepAssign<InitOptionsType>(op, options)\n this.libs.MFRuntime.init(op)\n this.isInit = true\n }\n public load<T = any>(...args: LoadRemoteType) {\n return this.libs.MFRuntime.loadRemote<T>(...args) as Promise<T>\n }\n public register = this.libs.MFRuntime.registerRemotes\n public preload = this.libs.MFRuntime.preloadRemote\n public loadShare = this.libs.MFRuntime.loadShare\n}\n//\nexport default new EMPRuntime()\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/helper/index.ts","../src/helper/config.ts","../src/runtimes/plugins.ts","../src/runtimes/index.ts","../src/adapters/react.tsx"],"sourcesContent":["export const importJsVm = (content: string) => `data:text/javascript,${content}`\n\nexport function deepAssign<T>(target: any, ...sources: any): T {\n for (const source of sources) {\n for (const k in source) {\n const vs = source[k],\n vt = target[k]\n if (Object(vs) == vs && Object(vt) === vt) {\n target[k] = deepAssign(vt, vs)\n continue\n }\n target[k] = source[k]\n }\n }\n return target\n}\n\nexport const checkVersion = (version: string) => (version ? Number(version.split('.')[0]) : 0)\nexport const isPromise = (p: any) => p && Object.prototype.toString.call(p) === '[object Promise]'\n","export const shareGlobalName = 'EMP_SHARE_RUNTIME'\n","import type {FederationRuntimePlugin} from '@module-federation/runtime'\nexport const catchErrorNextPlugin: (showLog?: boolean) => FederationRuntimePlugin = function (showLog = false) {\n return {\n name: 'catch-error-next-plugin',\n errorLoadRemote(o) {\n if (showLog) {\n console.log('[@emp/share]', o.id, o.lifecycle, o.from)\n console.error('[@emp/share]', o.error)\n }\n return {}\n },\n }\n}\n","import {deepAssign} from 'src/helper'\nimport {shareGlobalName} from 'src/helper/config'\nimport type {EMPShareRuntimeType, EmpRuntimeOptions, InitOptionsType, LoadRemoteType} from 'src/types'\nimport {catchErrorNextPlugin} from './plugins'\ntype EmpInitOptionsType = Partial<InitOptionsType>\nexport class EMPRuntime {\n public libs: EMPShareRuntimeType = deepAssign({}, window[shareGlobalName] || {})\n public initOptions!: InitOptionsType\n public options: EmpRuntimeOptions = {\n showLog: false,\n }\n private isInit = false\n constructor(op?: EMPShareRuntimeType) {\n if (op) this.setup(op)\n }\n /**\n * 实例化 adapter libs\n * @param EMP_ADAPTER\n */\n public setup(o?: EMPShareRuntimeType) {\n if (o) {\n this.libs = o\n }\n if (!this.libs.MFRuntime || !this.libs.MFSDK) {\n throw new Error('MFRuntime and MFSDK Required!')\n }\n }\n public init(options: EmpInitOptionsType = {}) {\n if (this.isInit) return\n let op: InitOptionsType = {\n name: 'empAdepterProject',\n remotes: [],\n plugins: [catchErrorNextPlugin(this.options.showLog)],\n }\n op = deepAssign<InitOptionsType>(op, options)\n this.libs.MFRuntime.init(op)\n this.isInit = true\n }\n public load<T = any>(...args: LoadRemoteType) {\n return this.libs.MFRuntime.loadRemote<T>(...args) as Promise<T>\n }\n public register = this.libs.MFRuntime.registerRemotes\n public preload = this.libs.MFRuntime.preloadRemote\n public loadShare = this.libs.MFRuntime.loadShare\n}\n//\nexport default new EMPRuntime()\n","import {checkVersion, deepAssign, isPromise} from 'src/helper'\nimport type {EMPShareRuntimeAdapterReactType, InitOptionsType} from 'src/types'\nexport class ReactAdapter {\n libs: EMPShareRuntimeAdapterReactType = {\n scope: 'default',\n }\n constructor(op?: EMPShareRuntimeAdapterReactType) {\n if (op) this.setup(op)\n }\n public setup(o?: EMPShareRuntimeAdapterReactType | string) {\n if (o) {\n if (typeof o === 'string') o = window[o]\n this.libs = deepAssign(this.libs, o)\n }\n }\n get shared(): InitOptionsType['shared'] {\n const {React, ReactDOM, scope} = this.libs as EMPShareRuntimeAdapterReactType\n return {\n react: {\n lib: () => React,\n version: React.version,\n scope,\n shareConfig: {\n singleton: true,\n requiredVersion: `^${React.version}`,\n },\n },\n 'react-dom': {\n lib: () => ReactDOM,\n version: ReactDOM.version,\n scope,\n shareConfig: {\n singleton: true,\n requiredVersion: `^${React.version}`,\n },\n },\n }\n }\n adapter<P = any>(\n component: any,\n scope: string = this.libs.scope,\n React: any = this.libs.React,\n ReactDOM: any = this.libs.ReactDOM,\n ): P {\n const reactVersion = checkVersion(React.version)\n const self = this\n class WrappedComponent extends React.Component {\n public containerRef: any\n public root: any\n constructor(props: P) {\n super(props as any)\n this.containerRef = React.createRef()\n }\n\n componentDidMount() {\n this.mountOriginalComponent(true)\n }\n\n componentDidUpdate() {\n this.mountOriginalComponent()\n }\n\n componentWillUnmount() {\n this.unMountOriginalComponent()\n }\n unMountOriginalComponent() {\n if (!this.containerRef.current) return\n if (reactVersion < 18) {\n ReactDOM.unmountComponentAtNode(this.containerRef.current)\n } else {\n this.root.unmount()\n }\n }\n async mountOriginalComponent(shouldRender?: boolean) {\n if (isPromise(component))\n component = await component.then((m: any) => {\n return m[scope]\n })\n const element = React.createElement(component, this.props)\n if (reactVersion < 18) {\n const Render = shouldRender ? ReactDOM.render : ReactDOM.hydrate\n Render(element, this.containerRef.current)\n } else {\n if (shouldRender) {\n const {createRoot} = self.libs\n this.root = createRoot(this.containerRef.current!)\n this.root.render(element)\n } else {\n const {hydrateRoot} = self.libs\n this.root = hydrateRoot(this.containerRef.current!, element)\n }\n }\n }\n\n render() {\n return <div ref={this.containerRef} />\n }\n }\n return WrappedComponent as any\n }\n}\n\nexport default new ReactAdapter()\n"],"mappings":"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","names":["deepAssign","target","sources","source","k","vs","vt","checkVersion","version","isPromise","p","shareGlobalName","catchErrorNextPlugin","showLog","o","EMPRuntime","deepAssign","shareGlobalName","op","o","options","catchErrorNextPlugin","args","runtimes_default","ReactAdapter","op","o","deepAssign","React","ReactDOM","scope","component","reactVersion","checkVersion","self","WrappedComponent","props","shouldRender","isPromise","m","element","createRoot","hydrateRoot","react_default"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@empjs/share",
3
- "version": "0.0.1",
3
+ "version": "0.0.2",
4
4
  "description": "emp share and runtime",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -42,6 +42,16 @@
42
42
  "default": "./dist/runtime.cjs"
43
43
  }
44
44
  },
45
+ "./adapter": {
46
+ "import": {
47
+ "types": "./dist/adapter.d.ts",
48
+ "default": "./dist/adapter.js"
49
+ },
50
+ "require": {
51
+ "types": "./dist/adapter.d.cts",
52
+ "default": "./dist/adapter.cjs"
53
+ }
54
+ },
45
55
  "./rspack": {
46
56
  "import": {
47
57
  "types": "./dist/rspack.d.ts",
@@ -57,6 +67,25 @@
57
67
  "default": "./output/index.js"
58
68
  }
59
69
  },
70
+ "typesVersions": {
71
+ "*": {
72
+ ".": [
73
+ "./dist/index.d.ts"
74
+ ],
75
+ "runtime": [
76
+ "./dist/runtime.d.ts"
77
+ ],
78
+ "adapter": [
79
+ "./dist/adapter.d.ts"
80
+ ],
81
+ "rspack": [
82
+ "./dist/rspack.d.ts"
83
+ ],
84
+ "library": [
85
+ "./output/index.d.ts"
86
+ ]
87
+ }
88
+ },
60
89
  "engines": {
61
90
  "node": ">=16.0.0"
62
91
  },
@@ -64,7 +93,6 @@
64
93
  "dependencies": {
65
94
  "@empjs/module-federation-runtime": "0.6.2",
66
95
  "@module-federation/enhanced": "0.6.1",
67
- "@module-federation/runtime": "0.6.1",
68
96
  "@module-federation/sdk": "0.6.1",
69
97
  "core-js": "^3.37.0"
70
98
  },
@@ -73,7 +101,7 @@
73
101
  "@swc/core": "^1.4.14",
74
102
  "tsup": "^8.2.3",
75
103
  "typescript": "^5.5.4",
76
- "@empjs/cli": "3.1.0-rc.9"
104
+ "@empjs/cli": "3.1.0-rc.10"
77
105
  },
78
106
  "scripts": {
79
107
  "dev": "tsup --watch",