@teambit/ui 0.0.737 → 0.0.740
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/create-root.js.map +1 -1
- package/dist/events/index.js.map +1 -1
- package/dist/events/ui-server-started-event.js.map +1 -1
- package/dist/exceptions/index.js.map +1 -1
- package/dist/exceptions/unknown-build-error.js.map +1 -1
- package/dist/exceptions/unknown-ui.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/react-ssr/index.js.map +1 -1
- package/dist/react-ssr/react-ssr.js.map +1 -1
- package/dist/react-ssr/render-lifecycle.js.map +1 -1
- package/dist/react-ssr/request-browser.js.map +1 -1
- package/dist/react-ssr/request-server.js.map +1 -1
- package/dist/react-ssr/ssr-content.js.map +1 -1
- package/dist/ssr-middleware/extract-browser-data.js.map +1 -1
- package/dist/ssr-middleware/index.js.map +1 -1
- package/dist/ssr-middleware/ssr-middleware.js.map +1 -1
- package/dist/start-plugin.js.map +1 -1
- package/dist/start.cmd.js.map +1 -1
- package/dist/ui/client-context.js.map +1 -1
- package/dist/ui-build.cmd.js.map +1 -1
- package/dist/ui-root.js.map +1 -1
- package/dist/ui-root.ui.js.map +1 -1
- package/dist/ui-server.js.map +1 -1
- package/dist/ui.aspect.js.map +1 -1
- package/dist/ui.cli.rt.js.map +1 -1
- package/dist/ui.composition.js.map +1 -1
- package/dist/ui.main.runtime.js.map +1 -1
- package/dist/ui.route.js.map +1 -1
- package/dist/ui.runtime.js.map +1 -1
- package/dist/ui.ui.runtime.js.map +1 -1
- package/dist/webpack/html.js.map +1 -1
- package/dist/webpack/postcss.config.js.map +1 -1
- package/dist/webpack/webpack.base.config.js.map +1 -1
- package/dist/webpack/webpack.browser.config.js.map +1 -1
- package/dist/webpack/webpack.dev.config.js.map +1 -1
- package/dist/webpack/webpack.ssr.config.js.map +1 -1
- package/package-tar/teambit-ui-0.0.740.tgz +0 -0
- package/package.json +17 -17
- package/{preview-1652930732694.js → preview-1653449228788.js} +2 -2
- package/package-tar/teambit-ui-0.0.737.tgz +0 -0
package/dist/create-root.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["createRoot","aspectDefs","rootExtensionName","rootAspect","UIAspect","id","runtime","config","rootId","identifiers","getIdentifiers","idSetters","getIdSetters","stringifiedConfig","toWindowsCompatiblePath","JSON","stringify","replace","createImports","join","defs","filter","def","runtimePath","getImportStatements","pathProp","suffix","map","aspectDef","getIdentifier","getId","undefined","val","component","local","getCoreIdentifier","aspectPath","getRegularAspectIdentifier","camelCase","parse","base","path","name","split"],"sources":["create-root.ts"],"sourcesContent":["import { AspectDefinition } from '@teambit/aspect-loader';\nimport { toWindowsCompatiblePath } from '@teambit/toolbox.path.to-windows-compatible-path';\nimport { camelCase } from 'lodash';\nimport { parse } from 'path';\n\nimport { UIAspect } from './ui.aspect';\n\nexport async function createRoot(\n aspectDefs: AspectDefinition[],\n rootExtensionName?: string,\n rootAspect = UIAspect.id,\n runtime = 'ui',\n config = {}\n) {\n const rootId = rootExtensionName ? `'${rootExtensionName}'` : '';\n const identifiers = getIdentifiers(aspectDefs, 'Aspect');\n\n const idSetters = getIdSetters(aspectDefs, 'Aspect');\n config['teambit.harmony/bit'] = rootExtensionName;\n // Escaping \"'\" in case for example in the config you have something like:\n // description: \"team's scope\"\n const stringifiedConfig = toWindowsCompatiblePath(JSON.stringify(config)).replace(/'/g, \"\\\\'\");\n\n return `\n${createImports(aspectDefs)}\n\nconst isBrowser = typeof window !== \"undefined\";\nconst config = JSON.parse('${stringifiedConfig}');\n${idSetters.join('\\n')}\nexport function render(...props){\n return Harmony.load([${identifiers.join(', ')}], '${runtime}', config)\n .then((harmony) => {\n return harmony\n .run()\n .then(() => {\n const rootExtension = harmony.get('${rootAspect}');\n\n if (isBrowser) {\n return rootExtension.render(${rootId}, ...props);\n } else {\n return rootExtension.renderSsr(${rootId}, ...props);\n }\n })\n .catch((err) => {\n throw err;\n });\n });\n}\n\nif (isBrowser) render();\n`;\n}\n\nfunction createImports(aspectDefs: AspectDefinition[]) {\n const defs = aspectDefs.filter((def) => def.runtimePath);\n\n return `import { Harmony } from '@teambit/harmony';\n${getImportStatements(aspectDefs, 'aspectPath', 'Aspect')}\n${getImportStatements(defs, 'runtimePath', 'Runtime')}`;\n}\n\nfunction getImportStatements(aspectDefs: AspectDefinition[], pathProp: string, suffix: string): string {\n return aspectDefs\n .map(\n (aspectDef) =>\n `import ${getIdentifier(aspectDef, suffix)} from '${toWindowsCompatiblePath(aspectDef[pathProp])}';`\n )\n .join('\\n');\n}\n\nfunction getIdentifiers(aspectDefs: AspectDefinition[], suffix: string): string[] {\n return aspectDefs.map((aspectDef) => `${getIdentifier(aspectDef, suffix)}`);\n}\n\nfunction getIdSetters(defs: AspectDefinition[], suffix: string) {\n return defs\n .map((def) => {\n if (!def.getId) return undefined;\n return `${getIdentifier(def, suffix)}.id = '${def.getId}';`;\n })\n .filter((val) => !!val);\n}\n\nfunction getIdentifier(aspectDef: AspectDefinition, suffix: string): string {\n if (!aspectDef.component && !aspectDef.local) {\n return getCoreIdentifier(aspectDef.aspectPath, suffix);\n }\n return getRegularAspectIdentifier(aspectDef, suffix);\n}\n\nfunction getRegularAspectIdentifier(aspectDef: AspectDefinition, suffix: string): string {\n return camelCase(`${parse(aspectDef.aspectPath).base.replace(/\\./, '__').replace('@', '__')}${suffix}`);\n}\n\nfunction getCoreIdentifier(path: string, suffix: string): string {\n return camelCase(`${parse(path).name.split('.')[0]}${suffix}`);\n}\n"],"mappings":"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"}
|
package/dist/events/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from './ui-server-started-event';\n"],"mappings":";;;;;;AAAA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["UiServerStartedEventData","constructor","targetHost","targetPort","uiRoot","UiServerStartedEvent","BitBaseEvent","timestamp","TYPE"],"sources":["ui-server-started-event.ts"],"sourcesContent":["/* eslint-disable max-classes-per-file */\nimport { BitBaseEvent } from '@teambit/pubsub';\n\nclass UiServerStartedEventData {\n constructor(readonly targetHost, readonly targetPort, readonly uiRoot) {}\n}\n\nexport class UiServerStartedEvent extends BitBaseEvent<UiServerStartedEventData> {\n static readonly TYPE = 'ui-server-started';\n\n constructor(readonly timestamp, readonly targetHost, readonly targetPort, readonly uiRoot) {\n super(UiServerStartedEvent.TYPE, '0.0.1', timestamp, new UiServerStartedEventData(targetHost, targetPort, uiRoot));\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AADA;AAGA,MAAMA,wBAAN,CAA+B;EAC7BC,WAAW,CAAUC,UAAV,EAA+BC,UAA/B,EAAoDC,MAApD,EAA4D;IAAA,KAAlDF,UAAkD,GAAlDA,UAAkD;IAAA,KAA7BC,UAA6B,GAA7BA,UAA6B;IAAA,KAARC,MAAQ,GAARA,MAAQ;EAAE;;AAD5C;;AAIxB,MAAMC,oBAAN,SAAmCC,sBAAnC,CAA0E;EAG/EL,WAAW,CAAUM,SAAV,EAA8BL,UAA9B,EAAmDC,UAAnD,EAAwEC,MAAxE,EAAgF;IACzF,MAAMC,oBAAoB,CAACG,IAA3B,EAAiC,OAAjC,EAA0CD,SAA1C,EAAqD,IAAIP,wBAAJ,CAA6BE,UAA7B,EAAyCC,UAAzC,EAAqDC,MAArD,CAArD;IADyF,KAAtEG,SAAsE,GAAtEA,SAAsE;IAAA,KAAlDL,UAAkD,GAAlDA,UAAkD;IAAA,KAA7BC,UAA6B,GAA7BA,UAA6B;IAAA,KAARC,MAAQ,GAARA,MAAQ;EAE1F;;AAL8E;;;gCAApEC,oB,UACY,mB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export { UnknownUI } from './unknown-ui';\nexport { UnknownBuildError } from './unknown-build-error';\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["UnknownBuildError","Error","constructor"],"sources":["unknown-build-error.ts"],"sourcesContent":["export class UnknownBuildError extends Error {\n constructor() {\n super('unknown UI build error');\n }\n}\n"],"mappings":";;;;;;;AAAO,MAAMA,iBAAN,SAAgCC,KAAhC,CAAsC;EAC3CC,WAAW,GAAG;IACZ,MAAM,wBAAN;EACD;;AAH0C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["UnknownUI","Error","constructor","uiRoot","available","toString","join"],"sources":["unknown-ui.ts"],"sourcesContent":["export class UnknownUI extends Error {\n constructor(readonly uiRoot: string = '', readonly available?: string[]) {\n super();\n }\n\n toString() {\n return `Unknown UI root: \"${this.uiRoot}\". Available ui roots are: [${this.available?.join(', ')}]`;\n }\n}\n"],"mappings":";;;;;;;AAAO,MAAMA,SAAN,SAAwBC,KAAxB,CAA8B;EACnCC,WAAW,CAAUC,MAAc,GAAG,EAA3B,EAAwCC,SAAxC,EAA8D;IACvE;IADuE,KAApDD,MAAoD,GAApDA,MAAoD;IAAA,KAAtBC,SAAsB,GAAtBA,SAAsB;EAExE;;EAEDC,QAAQ,GAAG;IAAA;;IACT,OAAQ,qBAAoB,KAAKF,MAAO,+BAAjC,mBAA+D,KAAKC,SAApE,oDAA+D,gBAAgBE,IAAhB,CAAqB,IAArB,CAA2B,GAAjG;EACD;;AAPkC"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["import { UIAspect, UIRuntime } from './ui.aspect';\n\nexport { UIAspect, UIRuntime, UIAspect as default };\n\nexport * from './events';\nexport { UIRoot, PostStartOptions, ProxyEntry } from './ui-root';\nexport type { UiMain, PreStartOpts } from './ui.main.runtime';\nexport type { UiUI } from './ui.ui.runtime';\nexport type { StartPlugin, StartPluginOptions } from './start-plugin';\nexport type {\n BrowserData,\n RenderPlugins,\n /** @deprecated - legacy name, use RenderPlugins */\n RenderPlugins as RenderLifecycle,\n} from './react-ssr';\nexport type { UIRootUI, UIRootFactory } from './ui-root.ui';\nexport type { UIServer } from './ui-server';\n\n// using `useDataQuery` from this package is deprecated, use `@teambit/ui-foundation.ui.hooks.use-data-query` directly\nexport { DataQueryResult, useDataQuery } from '@teambit/ui-foundation.ui.hooks.use-data-query';\n// temporary. TODO: fix this\nexport { useMutation } from '@apollo/client';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAIA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAcA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export { ReactSSR } from './react-ssr';\n\nexport type { ContextProps, RenderPlugins } from './render-lifecycle';\nexport type { BrowserData, ParsedQuery } from './request-browser';\nexport type { RequestServer } from './request-server';\nexport type { SsrContent } from './ssr-content';\n"],"mappings":";;;;;;;;;;;;AAAA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["react-ssr.tsx"],"names":["ReactSSR","constructor","lifecycleHooks","renderBrowser","children","deserializedState","deserialize","renderContexts","triggerBrowserInit","reactContexts","getReactContexts","app","triggerBeforeHydrateHook","mountPoint","document","getElementById","mountPointId","ReactDOM","render","triggerHydrateHook","renderServer","assets","browser","server","triggerServerInit","triggerBeforeRender","renderedApp","ReactDOMServer","renderToString","realtimeAssets","serialize","totalAssets","html","renderedHtml","renderToStaticMarkup","fullHtml","Html","fillContent","initPromises","map","hooks","idx","state","browserInit","Promise","all","promises","serverInit","ctx","nextCtx","onBeforeHydrate","renderCtx","onHydrate","onBeforeRender","props","reactContext","undefined","rawAssets","popAssets","deserialized","key","raw","get","e","console","error","json","result"],"mappings":";;;;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AASO,MAAMA,QAAN,CAAe;AACpBC,EAAAA,WAAW,EACT;AACQC,EAAAA,cAFC,EAGT;AAAA,SADQA,cACR,GADQA,cACR;AAAE;AAEJ;;;AACmB,QAAbC,aAAa,CAACC,QAAD,EAAsB;AACvC;AACA,UAAMC,iBAAiB,GAAG,MAAM,KAAKC,WAAL,EAAhC,CAFuC,CAIvC;;AACA,QAAIC,cAAc,GAAG,MAAM,KAAKC,kBAAL,CAAwBH,iBAAxB,CAA3B,CALuC,CAOvC;;AACA,UAAMI,aAAa,GAAG,KAAKC,gBAAL,CAAsBH,cAAtB,CAAtB;;AACA,UAAMI,GAAG,gBAAG,+BAAC,uBAAD;AAAU,MAAA,UAAU,EAAEF;AAAtB,OAAsCL,QAAtC,CAAZ;;AAEAG,IAAAA,cAAc,GAAG,MAAM,KAAKK,wBAAL,CAA8BL,cAA9B,EAA8CI,GAA9C,CAAvB,CAXuC,CAavC;;AACA,UAAME,UAAU,GAAGC,QAAQ,CAACC,cAAT,CAAwBC,uCAAxB,CAAnB,CAduC,CAevC;AACA;;AACAC,wBAASC,MAAT,CAAgBP,GAAhB,EAAqBE,UAArB;;AAEA,UAAM,KAAKM,kBAAL,CAAwBZ,cAAxB,EAAwCM,UAAxC,CAAN,CAnBuC,CAqBvC;;AACA;AACD;AAED;;;AACkB,QAAZO,YAAY,CAAChB,QAAD,EAAsB;AAAEiB,IAAAA,MAAF;AAAUC,IAAAA,OAAV;AAAmBC,IAAAA;AAAnB,MAA0C,EAAhE,EAAqF;AACrG;AACA,QAAIhB,cAAc,GAAG,MAAM,KAAKiB,iBAAL,CAAuBF,OAAvB,EAAgCC,MAAhC,CAA3B,CAFqG,CAIrG;;AACA,UAAMd,aAAa,GAAG,KAAKC,gBAAL,CAAsBH,cAAtB,CAAtB;;AACA,UAAMI,GAAG,gBACP,+BAAC,qCAAD,qBACE,+BAAC,uBAAD;AAAU,MAAA,UAAU,EAAEF;AAAtB,OAAsCL,QAAtC,CADF,CADF;;AAMAG,IAAAA,cAAc,GAAG,MAAM,KAAKkB,mBAAL,CAAyBlB,cAAzB,EAAyCI,GAAzC,CAAvB,CAZqG,CAcrG;;AACA,UAAMe,WAAW,GAAGC,kBAAeC,cAAf,CAA8BjB,GAA9B,CAApB,CAfqG,CAiBrG;;;AACA,UAAMkB,cAAc,GAAG,MAAM,KAAKC,SAAL,CAAevB,cAAf,EAA+BI,GAA/B,CAA7B,CAlBqG,CAmBrG;;AACA,UAAMoB,WAAW,GAAG,2BAAMV,MAAN,EAAcQ,cAAd,CAApB,CApBqG,CAsBrG;;AACA,UAAMG,IAAI,gBAAG,+BAAC,+BAAD;AAAM,MAAA,MAAM,EAAED,WAAd;AAA2B,MAAA,YAAY,MAAvC;AAAwC,MAAA,UAAU,MAAlD;AAAmD,MAAA,GAAG;AAAtD,MAAb;;AACA,UAAME,YAAY,GAAI,kBAAiBN,kBAAeO,oBAAf,CAAoCF,IAApC,CAA0C,EAAjF;;AACA,UAAMG,QAAQ,GAAGC,gCAAKC,WAAL,CAAiBJ,YAAjB,EAA+BP,WAA/B,CAAjB,CAzBqG,CA2BrG;;;AACA,WAAOS,QAAP;AACD;;AAEO3B,EAAAA,kBAAkB,CAACH,iBAAD,EAA2B;AACnD,UAAM;AAAEH,MAAAA;AAAF,QAAqB,IAA3B;AAEA,UAAMoC,YAAY,GAAGpC,cAAc,CAACqC,GAAf,CAAmB,CAAC,GAAGC,KAAH,CAAD,EAAYC,GAAZ,KAAoB;AAAA;;AAC1D,YAAMC,KAAK,GAAGrC,iBAAiB,CAACoC,GAAD,CAA/B;AACA,mCAAOD,KAAK,CAACG,WAAb,uDAAO,wBAAAH,KAAK,EAAeE,KAAf,CAAZ;AACD,KAHoB,CAArB;AAIA,WAAOE,OAAO,CAACC,GAAR,CAAYP,YAAZ,CAAP;AACD;;AAEOd,EAAAA,iBAAiB,CAACF,OAAD,EAAwBC,MAAxB,EAAgD;AACvE,UAAM;AAAErB,MAAAA;AAAF,QAAqB,IAA3B;AACA,UAAM4C,QAAQ,GAAG5C,cAAc,CAACqC,GAAf,CAAmB,CAAC,GAAGC,KAAH,CAAD;AAAA;;AAAA,kCAAeA,KAAK,CAACO,UAArB,sDAAe,uBAAAP,KAAK,EAAc;AAAElB,QAAAA,OAAF;AAAWC,QAAAA;AAAX,OAAd,CAApB;AAAA,KAAnB,CAAjB;AACA,WAAOqB,OAAO,CAACC,GAAR,CAAYC,QAAZ,CAAP;AACD;;AAEOlC,EAAAA,wBAAwB,CAACL,cAAD,EAAwBI,GAAxB,EAA0C;AACxE,UAAM;AAAET,MAAAA;AAAF,QAAqB,IAA3B;AAEA,UAAM4C,QAAQ,GAAG5C,cAAc,CAACqC,GAAf,CAAmB,OAAO,GAAGC,KAAH,CAAP,EAAkBC,GAAlB,KAA0B;AAAA;;AAC5D,YAAMO,GAAG,GAAGzC,cAAc,CAACkC,GAAD,CAA1B;AACA,YAAMQ,OAAO,GAAG,gCAAMT,KAAK,CAACU,eAAZ,0DAAM,2BAAAV,KAAK,EAAmBQ,GAAnB,EAAwBrC,GAAxB,CAAX,CAAhB;AACA,aAAOsC,OAAO,IAAID,GAAlB;AACD,KAJgB,CAAjB;AAMA,WAAOJ,OAAO,CAACC,GAAR,CAAYC,QAAZ,CAAP;AACD;;AAE+B,QAAlB3B,kBAAkB,CAACZ,cAAD,EAAwBM,UAAxB,EAAwD;AACtF,UAAM;AAAEX,MAAAA;AAAF,QAAqB,IAA3B;AAEA,UAAM4C,QAAQ,GAAG5C,cAAc,CAACqC,GAAf,CAAmB,CAAC,GAAGC,KAAH,CAAD,EAAYC,GAAZ,KAAoB;AAAA;;AACtD,YAAMU,SAAS,GAAG5C,cAAc,CAACkC,GAAD,CAAhC;AACA,iCAAOD,KAAK,CAACY,SAAb,qDAAO,sBAAAZ,KAAK,EAAaW,SAAb,EAAwBtC,UAAxB,CAAZ;AACD,KAHgB,CAAjB;AAKA,UAAM+B,OAAO,CAACC,GAAR,CAAYC,QAAZ,CAAN;AACD;;AAEgC,QAAnBrB,mBAAmB,CAAClB,cAAD,EAAwBI,GAAxB,EAA0C;AACzE,UAAM;AAAET,MAAAA;AAAF,QAAqB,IAA3B;AAEA,UAAM4C,QAAQ,GAAG5C,cAAc,CAACqC,GAAf,CAAmB,OAAO,GAAGC,KAAH,CAAP,EAAkBC,GAAlB,KAA0B;AAAA;;AAC5D,YAAMO,GAAG,GAAGzC,cAAc,CAACkC,GAAD,CAA1B;AACA,YAAMQ,OAAO,GAAG,gCAAMT,KAAK,CAACa,cAAZ,0DAAM,2BAAAb,KAAK,EAAkBQ,GAAlB,EAAuBrC,GAAvB,CAAX,CAAhB;AACA,aAAOsC,OAAO,IAAID,GAAlB;AACD,KAJgB,CAAjB;AAMA,UAAMJ,OAAO,CAACC,GAAR,CAAYC,QAAZ,CAAN;AAEA,WAAOvC,cAAP;AACD;;AAEOG,EAAAA,gBAAgB,CAACH,cAAD,EAAmC;AACzD,UAAM;AAAEL,MAAAA;AAAF,QAAqB,IAA3B;AAEA,WAAO,uBACLA,cAAc,CAACqC,GAAf,CAAmB,CAAC,GAAGC,KAAH,CAAD,EAAYC,GAAZ,KAAoB;AACrC,YAAMU,SAAS,GAAG5C,cAAc,CAACkC,GAAD,CAAhC;AACA,YAAMa,KAAK,GAAG;AAAEH,QAAAA;AAAF,OAAd;AACA,aAAOX,KAAK,CAACe,YAAN,GAAqB,CAACf,KAAK,CAACe,YAAP,EAAqBD,KAArB,CAArB,GAAmDE,SAA1D;AACD,KAJD,CADK,CAAP;AAOD;;AAEwB,QAAXlD,WAAW,GAAG;AAC1B,UAAM;AAAEJ,MAAAA;AAAF,QAAqB,IAA3B;;AACA,UAAMuD,SAAS,GAAGrB,gCAAKsB,SAAL,EAAlB;;AAEA,UAAMC,YAAY,GAAG,MAAMf,OAAO,CAACC,GAAR,CACzB3C,cAAc,CAACqC,GAAf,CAAmB,OAAO,CAACqB,GAAD,EAAMpB,KAAN,CAAP,KAAwB;AACzC,UAAI;AAAA;;AACF,cAAMqB,GAAG,GAAGJ,SAAS,CAACK,GAAV,CAAcF,GAAd,CAAZ;AACA,qCAAOpB,KAAK,CAAClC,WAAb,uDAAO,wBAAAkC,KAAK,EAAeqB,GAAf,CAAZ;AACD,OAHD,CAGE,OAAOE,CAAP,EAAU;AACV;AACAC,QAAAA,OAAO,CAACC,KAAR,CAAe,gDAA+CL,GAAI,EAAlE,EAAqEG,CAArE;AACA,eAAOP,SAAP;AACD;AACF,KATD,CADyB,CAA3B;AAaA,WAAOG,YAAP;AACD;;AAEsB,QAAT7B,SAAS,CAACvB,cAAD,EAAwBI,GAAxB,EAAyD;AAC9E,UAAM;AAAET,MAAAA;AAAF,QAAqB,IAA3B;AACA,UAAMgE,IAAI,GAAG,EAAb;AAEA,UAAMpB,QAAQ,GAAG5C,cAAc,CAACqC,GAAf,CAAmB,OAAO,CAACqB,GAAD,EAAMpB,KAAN,CAAP,EAAqBC,GAArB,KAA6B;AAAA;;AAC/D,YAAMU,SAAS,GAAG5C,cAAc,CAACkC,GAAD,CAAhC;AACA,YAAM0B,MAAM,GAAG,2BAAM3B,KAAK,CAACV,SAAZ,qDAAM,sBAAAU,KAAK,EAAaW,SAAb,EAAwBxC,GAAxB,CAAX,CAAf;AAEA,UAAI,CAACwD,MAAL,EAAa;AACb,UAAIA,MAAM,CAACD,IAAX,EAAiBA,IAAI,CAACN,GAAD,CAAJ,GAAYO,MAAM,CAACD,IAAnB;AAClB,KANgB,CAAjB;AAQA,UAAMtB,OAAO,CAACC,GAAR,CAAYC,QAAZ,CAAN,CAZ8E,CAc9E;;AACA,WAAO;AAAEoB,MAAAA;AAAF,KAAP;AACD;;AArKmB","sourcesContent":["import React, { ReactNode } from 'react';\nimport { merge } from 'webpack-merge';\nimport compact from 'lodash.compact';\nimport ReactDOM from 'react-dom';\nimport ReactDOMServer from 'react-dom/server';\n\nimport { Html, MountPoint, mountPointId, ssrCleanup, Assets } from '@teambit/ui-foundation.ui.rendering.html';\nimport { Composer, Wrapper } from '@teambit/base-ui.utils.composer';\n\nimport type { RenderPlugins } from './render-lifecycle';\nimport type { SsrContent } from './ssr-content';\nimport type { RequestServer } from './request-server';\nimport type { BrowserData } from './request-browser';\n\ntype RenderPluginsWithId = [key: string, hooks: RenderPlugins];\n\nexport class ReactSSR {\n constructor(\n // create array once to keep consistent indexes\n private lifecycleHooks: RenderPluginsWithId[]\n ) {}\n\n /** render and rehydrate client-side */\n async renderBrowser(children: ReactNode) {\n // (*) load state from the dom\n const deserializedState = await this.deserialize();\n\n // (1) init setup client plugins\n let renderContexts = await this.triggerBrowserInit(deserializedState);\n\n // (2) make react dom\n const reactContexts = this.getReactContexts(renderContexts);\n const app = <Composer components={reactContexts}>{children}</Composer>;\n\n renderContexts = await this.triggerBeforeHydrateHook(renderContexts, app);\n\n // (3) render / rehydrate\n const mountPoint = document.getElementById(mountPointId);\n // .render() already runs `.hydrate()` behind the scenes.\n // in the future, we may want to replace it with .hydrate()\n ReactDOM.render(app, mountPoint);\n\n await this.triggerHydrateHook(renderContexts, mountPoint);\n\n // (3.1) remove ssr only styles\n ssrCleanup();\n }\n\n /** render dehydrated server-side */\n async renderServer(children: ReactNode, { assets, browser, server }: SsrContent = {}): Promise<string> {\n // (1) init\n let renderContexts = await this.triggerServerInit(browser, server);\n\n // (2) make React dom\n const reactContexts = this.getReactContexts(renderContexts);\n const app = (\n <MountPoint>\n <Composer components={reactContexts}>{children}</Composer>\n </MountPoint>\n );\n\n renderContexts = await this.triggerBeforeRender(renderContexts, app);\n\n // (3) render (to string)\n const renderedApp = ReactDOMServer.renderToString(app);\n\n // (*) serialize state\n const realtimeAssets = await this.serialize(renderContexts, app);\n // @ts-ignore // TODO upgrade 'webpack-merge'\n const totalAssets = merge(assets, realtimeAssets) as Assets;\n\n // (4) render html-template (to string)\n const html = <Html assets={totalAssets} withDevTools fullHeight ssr />;\n const renderedHtml = `<!DOCTYPE html>${ReactDOMServer.renderToStaticMarkup(html)}`;\n const fullHtml = Html.fillContent(renderedHtml, renderedApp);\n\n // (5) serve\n return fullHtml;\n }\n\n private triggerBrowserInit(deserializedState: any[]) {\n const { lifecycleHooks } = this;\n\n const initPromises = lifecycleHooks.map(([, hooks], idx) => {\n const state = deserializedState[idx];\n return hooks.browserInit?.(state);\n });\n return Promise.all(initPromises);\n }\n\n private triggerServerInit(browser?: BrowserData, server?: RequestServer) {\n const { lifecycleHooks } = this;\n const promises = lifecycleHooks.map(([, hooks]) => hooks.serverInit?.({ browser, server }));\n return Promise.all(promises);\n }\n\n private triggerBeforeHydrateHook(renderContexts: any[], app: JSX.Element) {\n const { lifecycleHooks } = this;\n\n const promises = lifecycleHooks.map(async ([, hooks], idx) => {\n const ctx = renderContexts[idx];\n const nextCtx = await hooks.onBeforeHydrate?.(ctx, app);\n return nextCtx || ctx;\n });\n\n return Promise.all(promises);\n }\n\n private async triggerHydrateHook(renderContexts: any[], mountPoint: HTMLElement | null) {\n const { lifecycleHooks } = this;\n\n const promises = lifecycleHooks.map(([, hooks], idx) => {\n const renderCtx = renderContexts[idx];\n return hooks.onHydrate?.(renderCtx, mountPoint);\n });\n\n await Promise.all(promises);\n }\n\n private async triggerBeforeRender(renderContexts: any[], app: JSX.Element) {\n const { lifecycleHooks } = this;\n\n const promises = lifecycleHooks.map(async ([, hooks], idx) => {\n const ctx = renderContexts[idx];\n const nextCtx = await hooks.onBeforeRender?.(ctx, app);\n return nextCtx || ctx;\n });\n\n await Promise.all(promises);\n\n return renderContexts;\n }\n\n private getReactContexts(renderContexts: any[]): Wrapper[] {\n const { lifecycleHooks } = this;\n\n return compact(\n lifecycleHooks.map(([, hooks], idx) => {\n const renderCtx = renderContexts[idx];\n const props = { renderCtx };\n return hooks.reactContext ? [hooks.reactContext, props] : undefined;\n })\n );\n }\n\n private async deserialize() {\n const { lifecycleHooks } = this;\n const rawAssets = Html.popAssets();\n\n const deserialized = await Promise.all(\n lifecycleHooks.map(async ([key, hooks]) => {\n try {\n const raw = rawAssets.get(key);\n return hooks.deserialize?.(raw);\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(`failed deserializing server state for aspect ${key}`, e);\n return undefined;\n }\n })\n );\n\n return deserialized;\n }\n\n private async serialize(renderContexts: any[], app: ReactNode): Promise<Assets> {\n const { lifecycleHooks } = this;\n const json = {};\n\n const promises = lifecycleHooks.map(async ([key, hooks], idx) => {\n const renderCtx = renderContexts[idx];\n const result = await hooks.serialize?.(renderCtx, app);\n\n if (!result) return;\n if (result.json) json[key] = result.json;\n });\n\n await Promise.all(promises);\n\n // more assets will be available in the future\n return { json };\n }\n}\n"]}
|
|
1
|
+
{"version":3,"names":["ReactSSR","constructor","lifecycleHooks","renderBrowser","children","deserializedState","deserialize","renderContexts","triggerBrowserInit","reactContexts","getReactContexts","app","triggerBeforeHydrateHook","mountPoint","document","getElementById","mountPointId","ReactDOM","render","triggerHydrateHook","ssrCleanup","renderServer","assets","browser","server","triggerServerInit","triggerBeforeRender","renderedApp","ReactDOMServer","renderToString","realtimeAssets","serialize","totalAssets","merge","html","renderedHtml","renderToStaticMarkup","fullHtml","Html","fillContent","initPromises","map","hooks","idx","state","browserInit","Promise","all","promises","serverInit","ctx","nextCtx","onBeforeHydrate","renderCtx","onHydrate","onBeforeRender","compact","props","reactContext","undefined","rawAssets","popAssets","deserialized","key","raw","get","e","console","error","json","result"],"sources":["react-ssr.tsx"],"sourcesContent":["import React, { ReactNode } from 'react';\nimport { merge } from 'webpack-merge';\nimport compact from 'lodash.compact';\nimport ReactDOM from 'react-dom';\nimport ReactDOMServer from 'react-dom/server';\n\nimport { Html, MountPoint, mountPointId, ssrCleanup, Assets } from '@teambit/ui-foundation.ui.rendering.html';\nimport { Composer, Wrapper } from '@teambit/base-ui.utils.composer';\n\nimport type { RenderPlugins } from './render-lifecycle';\nimport type { SsrContent } from './ssr-content';\nimport type { RequestServer } from './request-server';\nimport type { BrowserData } from './request-browser';\n\ntype RenderPluginsWithId = [key: string, hooks: RenderPlugins];\n\nexport class ReactSSR {\n constructor(\n // create array once to keep consistent indexes\n private lifecycleHooks: RenderPluginsWithId[]\n ) {}\n\n /** render and rehydrate client-side */\n async renderBrowser(children: ReactNode) {\n // (*) load state from the dom\n const deserializedState = await this.deserialize();\n\n // (1) init setup client plugins\n let renderContexts = await this.triggerBrowserInit(deserializedState);\n\n // (2) make react dom\n const reactContexts = this.getReactContexts(renderContexts);\n const app = <Composer components={reactContexts}>{children}</Composer>;\n\n renderContexts = await this.triggerBeforeHydrateHook(renderContexts, app);\n\n // (3) render / rehydrate\n const mountPoint = document.getElementById(mountPointId);\n // .render() already runs `.hydrate()` behind the scenes.\n // in the future, we may want to replace it with .hydrate()\n ReactDOM.render(app, mountPoint);\n\n await this.triggerHydrateHook(renderContexts, mountPoint);\n\n // (3.1) remove ssr only styles\n ssrCleanup();\n }\n\n /** render dehydrated server-side */\n async renderServer(children: ReactNode, { assets, browser, server }: SsrContent = {}): Promise<string> {\n // (1) init\n let renderContexts = await this.triggerServerInit(browser, server);\n\n // (2) make React dom\n const reactContexts = this.getReactContexts(renderContexts);\n const app = (\n <MountPoint>\n <Composer components={reactContexts}>{children}</Composer>\n </MountPoint>\n );\n\n renderContexts = await this.triggerBeforeRender(renderContexts, app);\n\n // (3) render (to string)\n const renderedApp = ReactDOMServer.renderToString(app);\n\n // (*) serialize state\n const realtimeAssets = await this.serialize(renderContexts, app);\n // @ts-ignore // TODO upgrade 'webpack-merge'\n const totalAssets = merge(assets, realtimeAssets) as Assets;\n\n // (4) render html-template (to string)\n const html = <Html assets={totalAssets} withDevTools fullHeight ssr />;\n const renderedHtml = `<!DOCTYPE html>${ReactDOMServer.renderToStaticMarkup(html)}`;\n const fullHtml = Html.fillContent(renderedHtml, renderedApp);\n\n // (5) serve\n return fullHtml;\n }\n\n private triggerBrowserInit(deserializedState: any[]) {\n const { lifecycleHooks } = this;\n\n const initPromises = lifecycleHooks.map(([, hooks], idx) => {\n const state = deserializedState[idx];\n return hooks.browserInit?.(state);\n });\n return Promise.all(initPromises);\n }\n\n private triggerServerInit(browser?: BrowserData, server?: RequestServer) {\n const { lifecycleHooks } = this;\n const promises = lifecycleHooks.map(([, hooks]) => hooks.serverInit?.({ browser, server }));\n return Promise.all(promises);\n }\n\n private triggerBeforeHydrateHook(renderContexts: any[], app: JSX.Element) {\n const { lifecycleHooks } = this;\n\n const promises = lifecycleHooks.map(async ([, hooks], idx) => {\n const ctx = renderContexts[idx];\n const nextCtx = await hooks.onBeforeHydrate?.(ctx, app);\n return nextCtx || ctx;\n });\n\n return Promise.all(promises);\n }\n\n private async triggerHydrateHook(renderContexts: any[], mountPoint: HTMLElement | null) {\n const { lifecycleHooks } = this;\n\n const promises = lifecycleHooks.map(([, hooks], idx) => {\n const renderCtx = renderContexts[idx];\n return hooks.onHydrate?.(renderCtx, mountPoint);\n });\n\n await Promise.all(promises);\n }\n\n private async triggerBeforeRender(renderContexts: any[], app: JSX.Element) {\n const { lifecycleHooks } = this;\n\n const promises = lifecycleHooks.map(async ([, hooks], idx) => {\n const ctx = renderContexts[idx];\n const nextCtx = await hooks.onBeforeRender?.(ctx, app);\n return nextCtx || ctx;\n });\n\n await Promise.all(promises);\n\n return renderContexts;\n }\n\n private getReactContexts(renderContexts: any[]): Wrapper[] {\n const { lifecycleHooks } = this;\n\n return compact(\n lifecycleHooks.map(([, hooks], idx) => {\n const renderCtx = renderContexts[idx];\n const props = { renderCtx };\n return hooks.reactContext ? [hooks.reactContext, props] : undefined;\n })\n );\n }\n\n private async deserialize() {\n const { lifecycleHooks } = this;\n const rawAssets = Html.popAssets();\n\n const deserialized = await Promise.all(\n lifecycleHooks.map(async ([key, hooks]) => {\n try {\n const raw = rawAssets.get(key);\n return hooks.deserialize?.(raw);\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(`failed deserializing server state for aspect ${key}`, e);\n return undefined;\n }\n })\n );\n\n return deserialized;\n }\n\n private async serialize(renderContexts: any[], app: ReactNode): Promise<Assets> {\n const { lifecycleHooks } = this;\n const json = {};\n\n const promises = lifecycleHooks.map(async ([key, hooks], idx) => {\n const renderCtx = renderContexts[idx];\n const result = await hooks.serialize?.(renderCtx, app);\n\n if (!result) return;\n if (result.json) json[key] = result.json;\n });\n\n await Promise.all(promises);\n\n // more assets will be available in the future\n return { json };\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":[],"sources":["render-lifecycle.tsx"],"sourcesContent":["import { ReactNode, ComponentType } from 'react';\nimport { BrowserData } from './request-browser';\nimport { RequestServer } from './request-server';\n\nexport type ContextProps<T = any> = { renderCtx?: T; children: ReactNode };\n\n/** Plugins for each step of the SSR and regular rendering lifecycle */\nexport type RenderPlugins<RenderCtx = any, Serialized = any> = {\n /**\n * Initialize a context state for this specific rendering.\n * Context state will only be available to the current Aspect, in the other hooks, as well as a prop to the react context component.\n */\n serverInit?: (state: {\n browser?: BrowserData;\n server?: RequestServer;\n }) => RenderCtx | void | undefined | Promise<RenderCtx | void | undefined>;\n /**\n * Executes before running ReactDOM.renderToString(). Return value will replace the existing context state.\n */\n onBeforeRender?: (\n ctx: RenderCtx,\n app: ReactNode\n ) => RenderCtx | void | undefined | Promise<RenderCtx | void | undefined>;\n /**\n * Produce html assets. Runs after the body is rendered, and before rendering the final html.\n * @returns\n * json: will be rendered to the dom as a `<script type=\"json\"/>`.\n * More assets will be available in the future.\n */\n serialize?: (ctx: RenderCtx, app: ReactNode) => { json: string } | Promise<{ json: string }> | undefined;\n /**\n * Converts serialized data from raw string back to structured data.\n * @example deserialize: (data) => { const parsed = JSON.parse(data); return { analytics: new AnalyticsService(parsed); } }\n */\n deserialize?: (data?: string) => Serialized;\n /**\n * Initialize the context state for client side rendering.\n * Context state will only be available to the current Aspect, in the other hooks, as well as a prop to the react context component.\n */\n browserInit?: (deserializedData: Serialized) => RenderCtx | void | undefined | Promise<RenderCtx | void | undefined>;\n /**\n * Executes before running ReactDOM.hydrate() (or .render() in case server side rendering is skipped). Receives the context produced by `deserialize()`\n */\n onBeforeHydrate?: (\n context: RenderCtx,\n app: ReactNode\n ) => RenderCtx | void | undefined | Promise<RenderCtx | void | undefined>;\n /**\n * Executes after browser rendering is complete. Receives context from the previous steps.\n * @example onHydrate: (ref, { analytics }) => { analytics.reportPageView() }\n */\n onHydrate?: (context: RenderCtx, ref: HTMLElement | null) => void;\n\n /**\n * Wraps dom with a context. Will receive render context, produced by `onBeforeRender()` (at server-side) or `deserialize()` (at the browser)\n */\n reactContext?: ComponentType<ContextProps<RenderCtx>>;\n};\n"],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":[],"sources":["request-browser.ts"],"sourcesContent":["import type { IncomingHttpHeaders } from 'http';\n\nexport type ParsedQuery = { [key: string]: undefined | string | string[] | ParsedQuery | ParsedQuery[] };\n\nexport type BrowserData = {\n connection: {\n secure: boolean;\n headers: IncomingHttpHeaders;\n body: any;\n };\n /**\n * isomorphic location object, resembling the browser's window.location\n */\n location: {\n /** hostname + port\n * @example localhost:3000\n */\n host: string;\n /**\n * @example localhost\n */\n hostname: string;\n /** full url\n * @example http://localhost:3000/components?q=button\n */\n href: string;\n /** full url without query\n * @example http://localhost:3000/components\n */\n origin: string;\n /**\n * @example /component\n */\n pathname: string;\n /**\n * @example 3000\n */\n port: number;\n /**\n * @example http\n */\n protocol: string;\n /**\n * parsed search params\n * @example { one: 1, two: [2,3]}\n */\n query: ParsedQuery;\n /**\n * full resource path, including query, without hostname\n * @example /components?q=button\n */\n url: string;\n };\n cookie?: string;\n};\n"],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":[],"sources":["request-server.ts"],"sourcesContent":["import type { Request, Response } from 'express';\n\n/**\n * Represents the server configuration for the current request\n */\nexport type RequestServer = {\n port: number;\n request: Request;\n response: Response;\n};\n"],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":[],"sources":["ssr-content.ts"],"sourcesContent":["import type { Assets } from '@teambit/ui-foundation.ui.rendering.html';\nimport { BrowserData } from './request-browser';\nimport { RequestServer } from './request-server';\n\nexport type SsrContent = {\n assets?: Assets;\n browser?: BrowserData;\n server?: RequestServer;\n};\n"],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["extractBrowserData","req","port","browser","connection","secure","headers","body","location","host","hostname","href","protocol","url","origin","pathname","path","query","cookie","header"],"sources":["extract-browser-data.ts"],"sourcesContent":["import { Request } from 'express';\nimport { BrowserData } from '../react-ssr';\n\n/**\n * extract relevant information from Express request.\n */\n\nexport function extractBrowserData(req: Request, port: number) {\n const browser: BrowserData = {\n connection: {\n secure: req.secure,\n headers: req.headers,\n body: req.body,\n },\n // rebuild browser location from request, +port\n location: {\n host: `${req.hostname}:${port}`,\n hostname: req.hostname,\n href: `${req.protocol}://${req.hostname}:${port}${req.url}`,\n origin: `${req.protocol}://${req.hostname}:${port}`,\n pathname: req.path,\n port,\n protocol: `${req.protocol}:`,\n query: req.query,\n url: req.url,\n },\n cookie: req.header('Cookie'),\n };\n\n return browser;\n}\n"],"mappings":";;;;;;;AAGA;AACA;AACA;AAEO,SAASA,kBAAT,CAA4BC,GAA5B,EAA0CC,IAA1C,EAAwD;EAC7D,MAAMC,OAAoB,GAAG;IAC3BC,UAAU,EAAE;MACVC,MAAM,EAAEJ,GAAG,CAACI,MADF;MAEVC,OAAO,EAAEL,GAAG,CAACK,OAFH;MAGVC,IAAI,EAAEN,GAAG,CAACM;IAHA,CADe;IAM3B;IACAC,QAAQ,EAAE;MACRC,IAAI,EAAG,GAAER,GAAG,CAACS,QAAS,IAAGR,IAAK,EADtB;MAERQ,QAAQ,EAAET,GAAG,CAACS,QAFN;MAGRC,IAAI,EAAG,GAAEV,GAAG,CAACW,QAAS,MAAKX,GAAG,CAACS,QAAS,IAAGR,IAAK,GAAED,GAAG,CAACY,GAAI,EAHlD;MAIRC,MAAM,EAAG,GAAEb,GAAG,CAACW,QAAS,MAAKX,GAAG,CAACS,QAAS,IAAGR,IAAK,EAJ1C;MAKRa,QAAQ,EAAEd,GAAG,CAACe,IALN;MAMRd,IANQ;MAORU,QAAQ,EAAG,GAAEX,GAAG,CAACW,QAAS,GAPlB;MAQRK,KAAK,EAAEhB,GAAG,CAACgB,KARH;MASRJ,GAAG,EAAEZ,GAAG,CAACY;IATD,CAPiB;IAkB3BK,MAAM,EAAEjB,GAAG,CAACkB,MAAJ,CAAW,QAAX;EAlBmB,CAA7B;EAqBA,OAAOhB,OAAP;AACD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export { createSsrMiddleware } from './ssr-middleware';\n"],"mappings":";;;;;;;;;;;;AAAA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["denyList","createSsrMiddleware","root","port","title","logger","runtime","loadRuntime","undefined","render","assets","serverRenderMiddleware","req","res","next","query","url","browser","extractBrowserData","test","debug","rendering","method","server","request","response","props","rendered","set","send","e","error","entryFilepath","path","join","fs","existsSync","warn","manifestFilepath","parseManifest","imported","filepath","file","readFile","contents","toString","parsed","JSON","parse","getAssets","process","exit","manifest","css","js","entrypoints","filter","x","endsWith","map"],"sources":["ssr-middleware.ts"],"sourcesContent":["import type { Assets } from '@teambit/ui-foundation.ui.rendering.html';\nimport { Request, Response, NextFunction } from 'express';\nimport path from 'path';\nimport * as fs from 'fs-extra';\nimport type { Logger } from '@teambit/logger';\nimport type { SsrContent } from '../react-ssr';\nimport { extractBrowserData } from './extract-browser-data';\n\nconst denyList = /^\\/favicon.ico$/;\n\ntype ssrRenderProps = {\n root: string;\n port: number;\n title: string;\n logger: Logger;\n};\n\ntype ManifestFile = {\n files?: Record<string, string>;\n entrypoints?: string[];\n};\n\nexport async function createSsrMiddleware({ root, port, title, logger }: ssrRenderProps) {\n const runtime = await loadRuntime(root, { logger });\n if (!runtime) return undefined;\n\n const { render } = runtime;\n const assets = { ...runtime.assets, title };\n\n return async function serverRenderMiddleware(req: Request, res: Response, next: NextFunction) {\n const { query, url } = req;\n\n const browser = extractBrowserData(req, port);\n\n if (denyList.test(url)) {\n logger.debug(`[ssr] skipping static denyList file ${url}`);\n next();\n return;\n }\n\n if (query.rendering === 'client') {\n logger.debug(`[ssr] skipping ${url}`);\n next();\n return;\n }\n\n logger.debug(`[ssr] ${req.method} ${url}`);\n const server = { port, request: req, response: res };\n const props: SsrContent = { assets, browser, server };\n\n try {\n const rendered = await render(props);\n res.set('Cache-Control', 'no-cache');\n res.send(rendered);\n logger.debug(`[ssr] success '${url}'`);\n } catch (e: any) {\n logger.error(`[ssr] failed at '${url}'`, e);\n next();\n }\n };\n}\n\nasync function loadRuntime(root: string, { logger }: { logger: Logger }) {\n let render: (...arg: any[]) => any;\n let assets: Assets | undefined;\n\n try {\n const entryFilepath = path.join(root, 'ssr', 'index.js');\n if (!fs.existsSync(entryFilepath)) {\n logger.warn(`[ssr] - Skipping setup - failed finding ssr bundle at \"${entryFilepath}\"`);\n return undefined;\n }\n\n const manifestFilepath = path.join(root, 'asset-manifest.json');\n if (!fs.existsSync(manifestFilepath)) {\n logger.warn('[ssr] - Skipping setup (cannot find asset manifest file)');\n return undefined;\n }\n\n assets = await parseManifest(manifestFilepath);\n if (!assets) {\n logger.warn('[ssr] - Skipping setup (failed parsing assets manifest)');\n return undefined;\n }\n\n const imported = await import(entryFilepath);\n render = imported?.render;\n\n if (!render || typeof render !== 'function') {\n logger.warn('[ssr] - index file does not export a render() function. Skipping setup.');\n return undefined;\n }\n } catch (e: any) {\n logger.error(e);\n return undefined;\n }\n\n return {\n render,\n assets,\n };\n}\n\nasync function parseManifest(filepath: string, logger?: Logger) {\n try {\n const file = await fs.readFile(filepath);\n logger?.debug('[ssr] - ✓ aread manifest file');\n const contents = file.toString();\n const parsed: ManifestFile = JSON.parse(contents);\n logger?.debug('[ssr] - ✓ prased manifest file', parsed);\n const assets = getAssets(parsed);\n logger?.debug('[ssr] - ✓ extracted data from manifest file', assets);\n\n return assets;\n } catch (e: any) {\n logger?.error('[ssr] - error parsing asset manifest', e);\n process.exit();\n return undefined;\n }\n}\n\nfunction getAssets(manifest: ManifestFile) {\n const assets: Assets = { css: [], js: [] };\n\n assets.css = manifest.entrypoints?.filter((x) => x.endsWith('css')).map((x) => path.join('/', x));\n assets.js = manifest.entrypoints?.filter((x) => x.endsWith('js')).map((x) => path.join('/', x));\n\n return assets;\n}\n"],"mappings":"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"}
|
package/dist/start-plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":[],"sources":["start-plugin.ts"],"sourcesContent":["import { ComponentType } from 'react';\nimport { ProxyEntry } from './ui-root';\n\nexport type StartPluginOptions = {\n /**\n * indicates whether the start in on verbose mode.\n */\n verbose?: boolean;\n\n /**\n * component pattern it applies on.\n */\n pattern?: string;\n};\n\nexport interface StartPlugin {\n initiate(startOptions: StartPluginOptions): void;\n\n getProxy?(): ProxyEntry[];\n\n render: ComponentType;\n\n /** promise that resolves when the plugin completed initiation */\n readonly whenReady: Promise<void>;\n}\n"],"mappings":""}
|
package/dist/start.cmd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["StartCmd","constructor","ui","logger","render","uiRootName","userPattern","dev","port","rebuild","verbose","noBrowser","skipCompilation","off","isHostAvailable","BitError","appName","getUiName","invokePreStart","uiServer","createRuntime","pattern","then","server","buildOptions","launchBrowserOnStart","undefined","whenReady","openBrowser","publicUrl","fullUrl","catch","error","invokeOnStart","clearConsole"],"sources":["start.cmd.tsx"],"sourcesContent":["import React from 'react';\nimport openBrowser from 'react-dev-utils/openBrowser';\nimport { Command, CommandOptions } from '@teambit/cli';\nimport { Logger } from '@teambit/logger';\nimport { BitError } from '@teambit/bit-error';\nimport { UIServerConsole } from '@teambit/ui-foundation.cli.ui-server-console';\nimport type { UiMain } from './ui.main.runtime';\n\ntype StartArgs = [uiName: string, userPattern: string];\ntype StartFlags = {\n dev: boolean;\n port: string;\n rebuild: boolean;\n verbose: boolean;\n noBrowser: boolean;\n skipCompilation: boolean;\n};\n\nexport class StartCmd implements Command {\n name = 'start [type] [pattern]';\n description = 'Start a dev environment for a workspace or a specific component';\n alias = 'c';\n group = 'development';\n shortDescription = '';\n options = [\n ['d', 'dev', 'start UI server in dev mode.'],\n ['p', 'port [number]', 'port of the UI server.'],\n ['r', 'rebuild', 'rebuild the UI'],\n ['v', 'verbose', 'showing verbose output for inspection and prints stack trace'],\n ['', 'no-browser', 'do not automatically open browser when ready'],\n ['', 'skip-compilation', 'skip the auto-compilation before starting the web-server'],\n ] as CommandOptions;\n\n constructor(\n /**\n * access to the extension instance.\n */\n private ui: UiMain,\n\n private logger: Logger\n ) {}\n\n // async report([uiRootName, userPattern]: StartArgs, { dev, port, rebuild, verbose }: StartFlags): Promise<string> {\n // this.logger.off();\n // const pattern = userPattern && userPattern.toString();\n\n // const uiServer = await this.ui.createRuntime({\n // uiRootName,\n // pattern,\n // dev,\n // port: port ? parseInt(port) : undefined,\n // rebuild,\n // verbose,\n // });\n\n // return `Bit server has started on port ${uiServer.port}`;\n // }\n\n async render(\n [uiRootName, userPattern]: StartArgs,\n { dev, port, rebuild, verbose, noBrowser, skipCompilation }: StartFlags\n ): Promise<React.ReactElement> {\n this.logger.off();\n if (!this.ui.isHostAvailable()) {\n throw new BitError(\n `bit start can only be run inside a bit workspace or a bit scope - please ensure you are running the command in the correct directory`\n );\n }\n const appName = this.ui.getUiName(uiRootName);\n await this.ui.invokePreStart({ skipCompilation });\n const uiServer = this.ui.createRuntime({\n uiRootName,\n pattern: userPattern,\n dev,\n port: +port,\n rebuild,\n verbose,\n });\n\n if (!noBrowser) {\n uiServer\n .then(async (server) => {\n if (!server.buildOptions?.launchBrowserOnStart) return undefined;\n\n await server.whenReady;\n\n return openBrowser(this.ui.publicUrl || server.fullUrl);\n })\n .catch((error) => this.logger.error(error));\n }\n\n // DO NOT CHANGE THIS - this meant to be an async hook.\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.ui.invokeOnStart();\n this.ui.clearConsole();\n\n return <UIServerConsole appName={appName} futureUiServer={uiServer} url={this.ui.publicUrl} />;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAGA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAaO,MAAMA,QAAN,CAAkC;EAevCC,WAAW;EACT;AACJ;AACA;EACYC,EAJC,EAMDC,MANC,EAOT;IAAA,KAHQD,EAGR,GAHQA,EAGR;IAAA,KADQC,MACR,GADQA,MACR;IAAA,8CArBK,wBAqBL;IAAA,qDApBY,iEAoBZ;IAAA,+CAnBM,GAmBN;IAAA,+CAlBM,aAkBN;IAAA,0DAjBiB,EAiBjB;IAAA,iDAhBQ,CACR,CAAC,GAAD,EAAM,KAAN,EAAa,8BAAb,CADQ,EAER,CAAC,GAAD,EAAM,eAAN,EAAuB,wBAAvB,CAFQ,EAGR,CAAC,GAAD,EAAM,SAAN,EAAiB,gBAAjB,CAHQ,EAIR,CAAC,GAAD,EAAM,SAAN,EAAiB,8DAAjB,CAJQ,EAKR,CAAC,EAAD,EAAK,YAAL,EAAmB,8CAAnB,CALQ,EAMR,CAAC,EAAD,EAAK,kBAAL,EAAyB,0DAAzB,CANQ,CAgBR;EAAE,CAtBmC,CAwBvC;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;;;EAEY,MAANC,MAAM,CACV,CAACC,UAAD,EAAaC,WAAb,CADU,EAEV;IAAEC,GAAF;IAAOC,IAAP;IAAaC,OAAb;IAAsBC,OAAtB;IAA+BC,SAA/B;IAA0CC;EAA1C,CAFU,EAGmB;IAC7B,KAAKT,MAAL,CAAYU,GAAZ;;IACA,IAAI,CAAC,KAAKX,EAAL,CAAQY,eAAR,EAAL,EAAgC;MAC9B,MAAM,KAAIC,oBAAJ,EACH,sIADG,CAAN;IAGD;;IACD,MAAMC,OAAO,GAAG,KAAKd,EAAL,CAAQe,SAAR,CAAkBZ,UAAlB,CAAhB;IACA,MAAM,KAAKH,EAAL,CAAQgB,cAAR,CAAuB;MAAEN;IAAF,CAAvB,CAAN;IACA,MAAMO,QAAQ,GAAG,KAAKjB,EAAL,CAAQkB,aAAR,CAAsB;MACrCf,UADqC;MAErCgB,OAAO,EAAEf,WAF4B;MAGrCC,GAHqC;MAIrCC,IAAI,EAAE,CAACA,IAJ8B;MAKrCC,OALqC;MAMrCC;IANqC,CAAtB,CAAjB;;IASA,IAAI,CAACC,SAAL,EAAgB;MACdQ,QAAQ,CACLG,IADH,CACQ,MAAOC,MAAP,IAAkB;QAAA;;QACtB,IAAI,0BAACA,MAAM,CAACC,YAAR,iDAAC,qBAAqBC,oBAAtB,CAAJ,EAAgD,OAAOC,SAAP;QAEhD,MAAMH,MAAM,CAACI,SAAb;QAEA,OAAO,IAAAC,sBAAA,EAAY,KAAK1B,EAAL,CAAQ2B,SAAR,IAAqBN,MAAM,CAACO,OAAxC,CAAP;MACD,CAPH,EAQGC,KARH,CAQUC,KAAD,IAAW,KAAK7B,MAAL,CAAY6B,KAAZ,CAAkBA,KAAlB,CARpB;IASD,CA5B4B,CA8B7B;IACA;;;IACA,KAAK9B,EAAL,CAAQ+B,aAAR;IACA,KAAK/B,EAAL,CAAQgC,YAAR;IAEA,oBAAO,+BAAC,kCAAD;MAAiB,OAAO,EAAElB,OAA1B;MAAmC,cAAc,EAAEG,QAAnD;MAA6D,GAAG,EAAE,KAAKjB,EAAL,CAAQ2B;IAA1E,EAAP;EACD;;AA/EsC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["ClientContext","children","loaderApi","isLoading","useLoaderApi","styles","loader"],"sources":["client-context.tsx"],"sourcesContent":["import React, { ReactNode } from 'react';\nimport { Theme } from '@teambit/base-ui.theme.theme-provider';\nimport { IconFont } from '@teambit/design.theme.icons-font';\nimport { LoaderRibbon } from '@teambit/base-ui.loaders.loader-ribbon';\nimport { Roboto } from '@teambit/base-ui.theme.fonts.roboto';\nimport { TooltipMountPoint } from '@teambit/design.ui.tooltip';\n\nimport { LoaderContext, useLoaderApi } from '@teambit/ui-foundation.ui.global-loader';\nimport styles from './client-context.module.scss';\n\nexport function ClientContext({ children }: { children: ReactNode }) {\n const [loaderApi, isLoading] = useLoaderApi();\n\n return (\n <React.StrictMode>\n {/* TODO - try moving LoaderContext to contextSlot, and LoaderRibbon to hudSlot */}\n <LoaderContext.Provider value={loaderApi}>\n <IconFont query=\"q76y7n\" />\n <Theme>\n <Roboto />\n <LoaderRibbon active={isLoading} className={styles.loader} />\n {children}\n <TooltipMountPoint />\n </Theme>\n </LoaderContext.Provider>\n </React.StrictMode>\n );\n}\n"],"mappings":";;;;;;;;;;;AAAA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEO,SAASA,aAAT,CAAuB;EAAEC;AAAF,CAAvB,EAA8D;EACnE,MAAM,CAACC,SAAD,EAAYC,SAAZ,IAAyB,IAAAC,8BAAA,GAA/B;EAEA,oBACE,+BAAC,gBAAD,CAAO,UAAP,qBAEE,+BAAC,+BAAD,CAAe,QAAf;IAAwB,KAAK,EAAEF;EAA/B,gBACE,+BAAC,uBAAD;IAAU,KAAK,EAAC;EAAhB,EADF,eAEE,+BAAC,oBAAD,qBACE,+BAAC,0BAAD,OADF,eAEE,+BAAC,6BAAD;IAAc,MAAM,EAAEC,SAAtB;IAAiC,SAAS,EAAEE,8BAAA,CAAOC;EAAnD,EAFF,EAGGL,QAHH,eAIE,+BAAC,6BAAD,OAJF,CAFF,CAFF,CADF;AAcD"}
|
package/dist/ui-build.cmd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["UIBuildCmd","constructor","ui","report","type","stats","build","UnknownBuildError","toString"],"sources":["ui-build.cmd.tsx"],"sourcesContent":["import { Command } from '@teambit/cli';\nimport { UnknownBuildError } from './exceptions';\n\nimport { UiMain } from './ui.main.runtime';\n\nexport class UIBuildCmd implements Command {\n name = 'ui-build [type]';\n description = 'build production assets for deployment.';\n alias = 'c';\n group = 'development';\n shortDescription = '';\n options = [];\n\n constructor(\n /**\n * access to the extension instance.\n */\n private ui: UiMain\n ) {}\n\n async report([type]: [string]): Promise<string> {\n // teambit.workspace/variants should be the one to take care of component patterns.\n const stats = await this.ui.build(type);\n if (!stats) throw new UnknownBuildError();\n return stats.toString();\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAIO,MAAMA,UAAN,CAAoC;EAQzCC,WAAW;EACT;AACJ;AACA;EACYC,EAJC,EAKT;IAAA,KADQA,EACR,GADQA,EACR;IAAA,8CAZK,iBAYL;IAAA,qDAXY,yCAWZ;IAAA,+CAVM,GAUN;IAAA,+CATM,aASN;IAAA,0DARiB,EAQjB;IAAA,iDAPQ,EAOR;EAAE;;EAEQ,MAANC,MAAM,CAAC,CAACC,IAAD,CAAD,EAAoC;IAC9C;IACA,MAAMC,KAAK,GAAG,MAAM,KAAKH,EAAL,CAAQI,KAAR,CAAcF,IAAd,CAApB;IACA,IAAI,CAACC,KAAL,EAAY,MAAM,KAAIE,+BAAJ,GAAN;IACZ,OAAOF,KAAK,CAACG,QAAN,EAAP;EACD;;AApBwC"}
|
package/dist/ui-root.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":[],"sources":["ui-root.tsx"],"sourcesContent":["import { AspectDefinition } from '@teambit/aspect-loader';\nimport { ComponentDir } from '@teambit/bundler';\nimport { Component } from '@teambit/component';\nimport { ProxyConfigArrayItem } from 'webpack-dev-server';\n\n// TODO: remove this extends \"ComponentDir\", this should be part of the workspace alone since scope\n// would never have componentDir and as it has nothing to do with `UIRoot`.\nexport interface UIRoot extends ComponentDir {\n /**\n * unique name of the ui.\n */\n name: string;\n\n /**\n * path of the ui root.\n */\n path: string;\n\n /**\n * name of the UI root config file.\n */\n configFile: string;\n\n buildOptions?: {\n ssr?: boolean;\n launchBrowserOnStart?: boolean;\n };\n\n /**\n * resolve all aspects in the UI root.\n */\n resolveAspects(runtimeName: string): Promise<AspectDefinition[]>;\n\n /**\n * resolve components from a given pattern.\n */\n resolvePattern?(pattern: string): Promise<Component[]>;\n\n /**\n * listener for when the dev server starts. can be used for running the watcher.\n */\n postStart?(options: PostStartOptions): Promise<void>;\n\n /**\n * determine whether UI should get a priority.\n */\n priority?: boolean;\n}\n\nexport type ProxyEntry = ProxyConfigArrayItem & {\n context: string[]; // limit type to simplify our code. (not required)\n};\n\nexport type PostStartOptions = {\n /**\n * pattern for selecting components in the container.\n */\n pattern?: string;\n};\n"],"mappings":""}
|
package/dist/ui-root.ui.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":[],"sources":["ui-root.ui.ts"],"sourcesContent":["import { RouteProps } from 'react-router-dom';\n\nexport type UIRootUI = {\n routes: RouteProps[];\n};\n\nexport type UIRootFactory = () => UIRootUI;\n"],"mappings":""}
|
package/dist/ui-server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ui-server.ts"],"names":["UIServer","constructor","graphql","expressExtension","ui","uiRoot","uiRootExtension","logger","publicDir","plugins","Promise","resolve","setReady","getName","name","port","_port","host","fullUrl","buildOptions","getDevConfig","aspects","resolveAspects","UIRuntime","path","generateRoot","whenReady","all","startPromise","map","x","start","portRange","app","createApp","root","server","createServer","configureProxy","use","express","static","index","Port","getPortFromRange","setupServerSideRendering","listen","info","getPluginsComponents","plugin","render","ssr","ssrMiddleware","title","warn","get","debug","proxServer","httpProxy","createProxyServer","on","e","error","message","proxyEntries","getProxyFromPlugins","req","socket","head","entry","find","proxy","context","some","item","url","ws","target","forEach","route","res","web","originalUrl","dev","devServerPort","selectPort","expressAppPort","config","compiler","devServerConfig","getDevServerConfig","devServer","WebpackDevServer","proxiesByPlugin","getProxy","gqlProxies","changeOrigin","concat","appPort","gqlPort","devServerConf","create","props","startPlugins"],"mappings":"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","sourcesContent":["import { flatten } from 'lodash';\nimport { ExpressMain } from '@teambit/express';\nimport { GraphqlMain } from '@teambit/graphql';\nimport { Logger } from '@teambit/logger';\nimport express, { Express } from 'express';\nimport fallback from 'express-history-api-fallback';\nimport { Port } from '@teambit/toolbox.network.get-port';\nimport { Server } from 'http';\nimport httpProxy from 'http-proxy';\nimport { join } from 'path';\nimport webpack from 'webpack';\nimport WebpackDevServer, { Configuration as WdsConfiguration } from 'webpack-dev-server';\nimport { createSsrMiddleware } from './ssr-middleware';\nimport { StartPlugin } from './start-plugin';\nimport { ProxyEntry, UIRoot } from './ui-root';\nimport { UIRuntime } from './ui.aspect';\nimport { UiMain } from './ui.main.runtime';\n\nimport { devConfig } from './webpack/webpack.dev.config';\n\nexport type UIServerProps = {\n graphql: GraphqlMain;\n express: ExpressMain;\n ui: UiMain;\n uiRoot: UIRoot;\n uiRootExtension: string;\n logger: Logger;\n publicDir: string;\n startPlugins: StartPlugin[];\n};\n\nexport type StartOptions = {\n /**\n * port range for the UI server to bind. default is a port range of 4000-4200.\n */\n portRange?: number[] | number;\n};\n\nexport class UIServer {\n constructor(\n private graphql: GraphqlMain,\n private expressExtension: ExpressMain,\n private ui: UiMain,\n private uiRoot: UIRoot,\n private uiRootExtension: string,\n private logger: Logger,\n private publicDir: string,\n private plugins: StartPlugin[]\n ) {}\n\n getName() {\n return this.uiRoot.name;\n }\n\n private _port = 0;\n\n get port() {\n return this._port;\n }\n\n /** the hostname for the server to listen at. Currently statically 'localhost' */\n get host() {\n return 'localhost';\n }\n\n /** the server listens at this url */\n get fullUrl() {\n const port = this.port !== 80 ? `:${this.port}` : '';\n return `http://${this.host}${port}`;\n }\n\n get buildOptions() {\n return this.uiRoot.buildOptions;\n }\n\n /**\n * get the webpack configuration of the UI server.\n */\n async getDevConfig() {\n const aspects = await this.uiRoot.resolveAspects(UIRuntime.name);\n\n return devConfig(this.uiRoot.path, [await this.ui.generateRoot(aspects, this.uiRootExtension)], this.uiRoot.name);\n }\n\n private setReady: () => void;\n private startPromise = new Promise<void>((resolve) => (this.setReady = resolve));\n get whenReady() {\n return Promise.all([this.startPromise, ...this.plugins.map((x) => x?.whenReady)]);\n }\n\n /**\n * start a UI server.\n */\n async start({ portRange }: StartOptions = {}) {\n const app = this.expressExtension.createApp();\n const publicDir = `/${this.publicDir}`;\n const root = join(this.uiRoot.path, publicDir);\n const server = await this.graphql.createServer({ app });\n\n // set up proxy, for things like preview, e.g. '/preview/teambit.react/react'\n await this.configureProxy(app, server);\n\n // pass through files from public /folder:\n // setting `index: false` so index.html will be served by the fallback() middleware\n app.use(express.static(root, { index: false }));\n\n const port = await Port.getPortFromRange(portRange || [3100, 3200]);\n\n await this.setupServerSideRendering({ root, port, app });\n\n // in any and all other cases, serve index.html.\n // No any other endpoints past this will execute\n app.use(fallback('index.html', { root }));\n\n server.listen(port);\n this._port = port;\n\n // important: we use the string of the following message for the http.e2e.ts. if you change the message,\n // please make sure you change the `HTTP_SERVER_READY_MSG` const.\n this.logger.info(`UI server of ${this.uiRootExtension} is listening to port ${port}`);\n\n this.setReady();\n }\n\n getPluginsComponents() {\n return this.plugins.map((plugin) => plugin.render);\n }\n\n private async setupServerSideRendering({ root, port, app }: { root: string; port: number; app: Express }) {\n if (!this.buildOptions?.ssr) return;\n\n const ssrMiddleware = await createSsrMiddleware({\n root,\n port,\n title: this.uiRoot.name,\n logger: this.logger,\n });\n\n if (!ssrMiddleware) {\n this.logger.warn('[ssr] middleware failed setup');\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n app.get('*', ssrMiddleware);\n this.logger.debug('[ssr] serving for \"*\"');\n }\n\n private async configureProxy(app: Express, server: Server) {\n const proxServer = httpProxy.createProxyServer();\n proxServer.on('error', (e) => this.logger.error(e.message));\n const proxyEntries = await this.getProxyFromPlugins();\n\n // TODO - should use https://github.com/chimurai/http-proxy-middleware\n server.on('upgrade', function (req, socket, head) {\n const entry = proxyEntries.find((proxy) => proxy.context.some((item) => item === req.url));\n if (!entry) return;\n proxServer.ws(req, socket, head, {\n target: entry.target,\n });\n });\n\n proxyEntries.forEach((entry) => {\n entry.context.forEach((route) => {\n app.use(`${route}/*`, (req, res) => {\n proxServer.web(req, res, { ...entry, target: `${entry.target}/${req.originalUrl}` });\n });\n });\n });\n }\n\n /**\n * start a UI dev server.\n */\n async dev({ portRange }: StartOptions = {}) {\n const devServerPort = await this.selectPort(portRange);\n await this.start({ portRange: [4100, 4200] });\n const expressAppPort = this._port;\n\n const config = await this.getDevConfig();\n const compiler = webpack(config);\n const devServerConfig = await this.getDevServerConfig(devServerPort, expressAppPort, config.devServer);\n // @ts-ignore in the capsules it throws an error about compatibilities issues between webpack.compiler and webpackDevServer/webpack/compiler\n const devServer = new WebpackDevServer(devServerConfig, compiler);\n\n await devServer.start();\n this._port = devServerPort;\n return devServer;\n }\n\n private async selectPort(portRange?: number[] | number) {\n return Port.getPortFromRange(portRange || [3100, 3200]);\n }\n\n private async getProxyFromPlugins(): Promise<ProxyEntry[]> {\n const proxiesByPlugin = this.plugins.map((plugin) => {\n return plugin.getProxy ? plugin.getProxy() : [];\n });\n\n return flatten(await Promise.all(proxiesByPlugin));\n }\n\n private async getProxy(port = 4000) {\n const proxyEntries = await this.getProxyFromPlugins();\n\n const gqlProxies: ProxyEntry[] = [\n {\n context: ['/graphql', '/api'],\n target: `http://${this.host}:${port}`,\n changeOrigin: true,\n },\n {\n context: ['/subscriptions'],\n target: `ws://${this.host}:${port}`,\n ws: true,\n },\n ];\n\n return gqlProxies.concat(proxyEntries);\n }\n\n private async getDevServerConfig(\n appPort: number,\n gqlPort: number,\n config?: WdsConfiguration\n ): Promise<WdsConfiguration> {\n const proxy = await this.getProxy(gqlPort);\n const devServerConf = { ...config, proxy, port: appPort };\n\n return devServerConf;\n }\n\n static create(props: UIServerProps) {\n return new UIServer(\n props.graphql,\n props.express,\n props.ui,\n props.uiRoot,\n props.uiRootExtension,\n props.logger,\n props.publicDir,\n props.startPlugins\n );\n }\n}\n"]}
|
|
1
|
+
{"version":3,"names":["UIServer","constructor","graphql","expressExtension","ui","uiRoot","uiRootExtension","logger","publicDir","plugins","Promise","resolve","setReady","getName","name","port","_port","host","fullUrl","buildOptions","getDevConfig","aspects","resolveAspects","UIRuntime","devConfig","path","generateRoot","whenReady","all","startPromise","map","x","start","portRange","app","createApp","root","join","server","createServer","configureProxy","use","express","static","index","Port","getPortFromRange","setupServerSideRendering","fallback","listen","info","getPluginsComponents","plugin","render","ssr","ssrMiddleware","createSsrMiddleware","title","warn","get","debug","proxServer","httpProxy","createProxyServer","on","e","error","message","proxyEntries","getProxyFromPlugins","req","socket","head","entry","find","proxy","context","some","item","url","ws","target","forEach","route","res","web","originalUrl","dev","devServerPort","selectPort","expressAppPort","config","compiler","webpack","devServerConfig","getDevServerConfig","devServer","WebpackDevServer","proxiesByPlugin","getProxy","flatten","gqlProxies","changeOrigin","concat","appPort","gqlPort","devServerConf","create","props","startPlugins"],"sources":["ui-server.ts"],"sourcesContent":["import { flatten } from 'lodash';\nimport { ExpressMain } from '@teambit/express';\nimport { GraphqlMain } from '@teambit/graphql';\nimport { Logger } from '@teambit/logger';\nimport express, { Express } from 'express';\nimport fallback from 'express-history-api-fallback';\nimport { Port } from '@teambit/toolbox.network.get-port';\nimport { Server } from 'http';\nimport httpProxy from 'http-proxy';\nimport { join } from 'path';\nimport webpack from 'webpack';\nimport WebpackDevServer, { Configuration as WdsConfiguration } from 'webpack-dev-server';\nimport { createSsrMiddleware } from './ssr-middleware';\nimport { StartPlugin } from './start-plugin';\nimport { ProxyEntry, UIRoot } from './ui-root';\nimport { UIRuntime } from './ui.aspect';\nimport { UiMain } from './ui.main.runtime';\n\nimport { devConfig } from './webpack/webpack.dev.config';\n\nexport type UIServerProps = {\n graphql: GraphqlMain;\n express: ExpressMain;\n ui: UiMain;\n uiRoot: UIRoot;\n uiRootExtension: string;\n logger: Logger;\n publicDir: string;\n startPlugins: StartPlugin[];\n};\n\nexport type StartOptions = {\n /**\n * port range for the UI server to bind. default is a port range of 4000-4200.\n */\n portRange?: number[] | number;\n};\n\nexport class UIServer {\n constructor(\n private graphql: GraphqlMain,\n private expressExtension: ExpressMain,\n private ui: UiMain,\n private uiRoot: UIRoot,\n private uiRootExtension: string,\n private logger: Logger,\n private publicDir: string,\n private plugins: StartPlugin[]\n ) {}\n\n getName() {\n return this.uiRoot.name;\n }\n\n private _port = 0;\n\n get port() {\n return this._port;\n }\n\n /** the hostname for the server to listen at. Currently statically 'localhost' */\n get host() {\n return 'localhost';\n }\n\n /** the server listens at this url */\n get fullUrl() {\n const port = this.port !== 80 ? `:${this.port}` : '';\n return `http://${this.host}${port}`;\n }\n\n get buildOptions() {\n return this.uiRoot.buildOptions;\n }\n\n /**\n * get the webpack configuration of the UI server.\n */\n async getDevConfig() {\n const aspects = await this.uiRoot.resolveAspects(UIRuntime.name);\n\n return devConfig(this.uiRoot.path, [await this.ui.generateRoot(aspects, this.uiRootExtension)], this.uiRoot.name);\n }\n\n private setReady: () => void;\n private startPromise = new Promise<void>((resolve) => (this.setReady = resolve));\n get whenReady() {\n return Promise.all([this.startPromise, ...this.plugins.map((x) => x?.whenReady)]);\n }\n\n /**\n * start a UI server.\n */\n async start({ portRange }: StartOptions = {}) {\n const app = this.expressExtension.createApp();\n const publicDir = `/${this.publicDir}`;\n const root = join(this.uiRoot.path, publicDir);\n const server = await this.graphql.createServer({ app });\n\n // set up proxy, for things like preview, e.g. '/preview/teambit.react/react'\n await this.configureProxy(app, server);\n\n // pass through files from public /folder:\n // setting `index: false` so index.html will be served by the fallback() middleware\n app.use(express.static(root, { index: false }));\n\n const port = await Port.getPortFromRange(portRange || [3100, 3200]);\n\n await this.setupServerSideRendering({ root, port, app });\n\n // in any and all other cases, serve index.html.\n // No any other endpoints past this will execute\n app.use(fallback('index.html', { root }));\n\n server.listen(port);\n this._port = port;\n\n // important: we use the string of the following message for the http.e2e.ts. if you change the message,\n // please make sure you change the `HTTP_SERVER_READY_MSG` const.\n this.logger.info(`UI server of ${this.uiRootExtension} is listening to port ${port}`);\n\n this.setReady();\n }\n\n getPluginsComponents() {\n return this.plugins.map((plugin) => plugin.render);\n }\n\n private async setupServerSideRendering({ root, port, app }: { root: string; port: number; app: Express }) {\n if (!this.buildOptions?.ssr) return;\n\n const ssrMiddleware = await createSsrMiddleware({\n root,\n port,\n title: this.uiRoot.name,\n logger: this.logger,\n });\n\n if (!ssrMiddleware) {\n this.logger.warn('[ssr] middleware failed setup');\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n app.get('*', ssrMiddleware);\n this.logger.debug('[ssr] serving for \"*\"');\n }\n\n private async configureProxy(app: Express, server: Server) {\n const proxServer = httpProxy.createProxyServer();\n proxServer.on('error', (e) => this.logger.error(e.message));\n const proxyEntries = await this.getProxyFromPlugins();\n\n // TODO - should use https://github.com/chimurai/http-proxy-middleware\n server.on('upgrade', function (req, socket, head) {\n const entry = proxyEntries.find((proxy) => proxy.context.some((item) => item === req.url));\n if (!entry) return;\n proxServer.ws(req, socket, head, {\n target: entry.target,\n });\n });\n\n proxyEntries.forEach((entry) => {\n entry.context.forEach((route) => {\n app.use(`${route}/*`, (req, res) => {\n proxServer.web(req, res, { ...entry, target: `${entry.target}/${req.originalUrl}` });\n });\n });\n });\n }\n\n /**\n * start a UI dev server.\n */\n async dev({ portRange }: StartOptions = {}) {\n const devServerPort = await this.selectPort(portRange);\n await this.start({ portRange: [4100, 4200] });\n const expressAppPort = this._port;\n\n const config = await this.getDevConfig();\n const compiler = webpack(config);\n const devServerConfig = await this.getDevServerConfig(devServerPort, expressAppPort, config.devServer);\n // @ts-ignore in the capsules it throws an error about compatibilities issues between webpack.compiler and webpackDevServer/webpack/compiler\n const devServer = new WebpackDevServer(devServerConfig, compiler);\n\n await devServer.start();\n this._port = devServerPort;\n return devServer;\n }\n\n private async selectPort(portRange?: number[] | number) {\n return Port.getPortFromRange(portRange || [3100, 3200]);\n }\n\n private async getProxyFromPlugins(): Promise<ProxyEntry[]> {\n const proxiesByPlugin = this.plugins.map((plugin) => {\n return plugin.getProxy ? plugin.getProxy() : [];\n });\n\n return flatten(await Promise.all(proxiesByPlugin));\n }\n\n private async getProxy(port = 4000) {\n const proxyEntries = await this.getProxyFromPlugins();\n\n const gqlProxies: ProxyEntry[] = [\n {\n context: ['/graphql', '/api'],\n target: `http://${this.host}:${port}`,\n changeOrigin: true,\n },\n {\n context: ['/subscriptions'],\n target: `ws://${this.host}:${port}`,\n ws: true,\n },\n ];\n\n return gqlProxies.concat(proxyEntries);\n }\n\n private async getDevServerConfig(\n appPort: number,\n gqlPort: number,\n config?: WdsConfiguration\n ): Promise<WdsConfiguration> {\n const proxy = await this.getProxy(gqlPort);\n const devServerConf = { ...config, proxy, port: appPort };\n\n return devServerConf;\n }\n\n static create(props: UIServerProps) {\n return new UIServer(\n props.graphql,\n props.express,\n props.ui,\n props.uiRoot,\n props.uiRootExtension,\n props.logger,\n props.publicDir,\n props.startPlugins\n );\n }\n}\n"],"mappings":"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"}
|
package/dist/ui.aspect.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["UIRuntime","RuntimeDefinition","UIAspect","Aspect","create","id","declareRuntime"],"sources":["ui.aspect.ts"],"sourcesContent":["import { Aspect, RuntimeDefinition } from '@teambit/harmony';\n\nexport const UIRuntime = new RuntimeDefinition('ui');\n\nexport const UIAspect = Aspect.create({\n id: 'teambit.ui-foundation/ui',\n declareRuntime: UIRuntime,\n});\n\nexport default UIAspect;\n"],"mappings":";;;;;;;AAAA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEO,MAAMA,SAAS,GAAG,KAAIC,4BAAJ,EAAsB,IAAtB,CAAlB;;;AAEA,MAAMC,QAAQ,GAAGC,iBAAA,CAAOC,MAAP,CAAc;EACpCC,EAAE,EAAE,0BADgC;EAEpCC,cAAc,EAAEN;AAFoB,CAAd,CAAjB;;;eAKQE,Q"}
|
package/dist/ui.cli.rt.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ui.cli.rt.tsx"],"
|
|
1
|
+
{"version":3,"names":[],"sources":["ui.cli.rt.tsx"],"sourcesContent":["// import { CLIExtension } from '../cli';\n// import { StartCmd } from './start.cmd';\n// import { Workspace } from '../workspace';\n// import { GraphQLExtension } from '../graphql';\n\n// export default ([cli, envs, workspace, graphql]: [CLIExtension, Environments, Workspace, GraphQLExtension]) => {\n// // const ui = new UIExtension(envs, graphql);\n// cli.register(new StartCmd(ui, workspace));\n// // return ui;\n// }\n"],"mappings":"AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["Logo","height","display","justifyContent","width"],"sources":["ui.composition.tsx"],"sourcesContent":["import React from 'react';\n\nexport const Logo = () => (\n <div style={{ height: '100%', display: 'flex', justifyContent: 'center' }}>\n <img style={{ width: 70 }} src=\"https://static.bit.dev/extensions-icons/ui.svg\" />\n </div>\n);\n"],"mappings":";;;;;;;;;AAAA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEO,MAAMA,IAAI,GAAG,mBAClB;EAAK,KAAK,EAAE;IAAEC,MAAM,EAAE,MAAV;IAAkBC,OAAO,EAAE,MAA3B;IAAmCC,cAAc,EAAE;EAAnD;AAAZ,gBACE;EAAK,KAAK,EAAE;IAAEC,KAAK,EAAE;EAAT,CAAZ;EAA2B,GAAG,EAAC;AAA/B,EADF,CADK"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ui.main.runtime.ts"],"names":["UiMain","constructor","pubsub","config","graphql","uiRootSlot","express","preStartSlot","onStartSlot","publicDirOverwriteSlot","buildMethodOverwriteSlot","componentExtension","cache","logger","harmony","startPluginSlot","targetHost","targetPort","uiRoot","UiServerStartedEvent","Date","now","publicDir","overwriteFn","getOverwritePublic","hasDir","startsWith","substring","getUiByName","name","roots","toArray","root","find","build","uiRootName","debug","maybeUiRoot","getUi","UnknownUI","possibleUis","ssr","buildOptions","mainEntry","generateRoot","resolveAspects","UIRuntime","browserConfig","path","ssrConfig","filter","x","compiler","compilerRun","run","bind","results","UnknownBuildError","hasErrors","clearConsole","Error","toString","registerStartPlugin","startPlugin","register","initiatePlugins","options","plugins","values","Promise","all","map","plugin","initiate","createRuntime","pattern","dev","port","rebuild","verbose","isHost","setHostPriority","uiServer","UIServer","create","uiRootExtension","ui","startPlugins","addSignalListener","portRange","buildUI","start","pub","UIAspect","id","createUiServerStartedEvent","host","process","on","exit","getPort","selectPort","registerPreStart","preStartFn","registerOnStart","onStartFn","registerBuildUIOverwrite","fn","registerPublicDirOverwrite","getOverwriteBuildFn","buildMethodOverwrite","undefined","overwritePublic","invokePreStart","preStartOpts","promises","invokeOnStart","registerUiRoot","get","uis","length","priority","isHostAvailable","Boolean","getHost","getUiName","createLink","aspectDefs","rootExtensionName","runtimeName","rootAspect","contents","toObject","filepath","__dirname","fs","existsSync","outputFileSync","from","to","usedPorts","Port","set","concat","overwrite","hash","buildIfChanged","buildIfNoBundle","buildUiHash","runtime","aspects","sort","a","b","aspectPath","aspect","runtimePath","join","force","hashed","console","chalk","cyan","configFile","stdout","write","platform","output","pathExistsSync","publicUrl","provider","cli","loggerMain","proxyGetterSlot","createLogger","StartCmd","UIBuildCmd","MainRuntime","PubsubAspect","CLIAspect","GraphqlAspect","ExpressAspect","ComponentAspect","CacheAspect","LoggerAspect","Slot","withType","addRuntime"],"mappings":"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","sourcesContent":["import type { AspectMain } from '@teambit/aspect';\nimport { ComponentType } from 'react';\nimport { AspectDefinition } from '@teambit/aspect-loader';\nimport { CacheAspect, CacheMain } from '@teambit/cache';\nimport { CLIAspect, CLIMain, MainRuntime } from '@teambit/cli';\nimport type { ComponentMain } from '@teambit/component';\nimport { ComponentAspect } from '@teambit/component';\nimport { ExpressAspect, ExpressMain } from '@teambit/express';\nimport type { GraphqlMain } from '@teambit/graphql';\nimport { GraphqlAspect } from '@teambit/graphql';\nimport chalk from 'chalk';\nimport { Slot, SlotRegistry, Harmony } from '@teambit/harmony';\nimport { Logger, LoggerAspect, LoggerMain } from '@teambit/logger';\nimport PubsubAspect, { PubsubMain } from '@teambit/pubsub';\nimport { sha1 } from '@teambit/legacy/dist/utils';\nimport fs from 'fs-extra';\nimport { Port } from '@teambit/toolbox.network.get-port';\nimport { join, resolve } from 'path';\nimport { promisify } from 'util';\nimport webpack from 'webpack';\nimport { UiServerStartedEvent } from './events';\nimport { createRoot } from './create-root';\nimport { UnknownUI, UnknownBuildError } from './exceptions';\nimport { StartCmd } from './start.cmd';\nimport { UIBuildCmd } from './ui-build.cmd';\nimport { UIRoot } from './ui-root';\nimport { UIServer } from './ui-server';\nimport { UIAspect, UIRuntime } from './ui.aspect';\nimport createWebpackConfig from './webpack/webpack.browser.config';\nimport createSsrWebpackConfig from './webpack/webpack.ssr.config';\nimport { StartPlugin, StartPluginOptions } from './start-plugin';\n\nexport type UIDeps = [PubsubMain, CLIMain, GraphqlMain, ExpressMain, ComponentMain, CacheMain, LoggerMain, AspectMain];\n\nexport type UIRootRegistry = SlotRegistry<UIRoot>;\n\nexport type PreStart = (preStartOpts: PreStartOpts) => Promise<void>;\n\nexport type PreStartOpts = { skipCompilation?: boolean };\n\nexport type OnStart = () => Promise<undefined | ComponentType<{}>>;\n\nexport type StartPluginSlot = SlotRegistry<StartPlugin>;\n\nexport type PublicDirOverwrite = (uiRoot: UIRoot) => Promise<string | undefined>;\n\nexport type BuildMethodOverwrite = (name: string, uiRoot: UIRoot, rebuild?: boolean) => Promise<string>;\n\nexport type PreStartSlot = SlotRegistry<PreStart>;\n\nexport type OnStartSlot = SlotRegistry<OnStart>;\n\nexport type PublicDirOverwriteSlot = SlotRegistry<PublicDirOverwrite>;\n\nexport type BuildMethodOverwriteSlot = SlotRegistry<BuildMethodOverwrite>;\n\nexport type UIConfig = {\n /**\n * port for the UI root to use.\n */\n port?: number;\n\n /**\n * port range for the UI root to use.\n */\n portRange: [number, number];\n\n /**\n * host for the UI root\n */\n host: string;\n\n /**\n * directory in workspace to use for public assets.\n * always relative to the workspace root directory.\n */\n publicDir: string;\n\n /** the url to display when server is listening. Note that bit does not provide proxying to this url */\n publicUrl?: string;\n};\n\nexport type RuntimeOptions = {\n /**\n * determine whether to initiate on verbose mode.\n */\n verbose?: boolean;\n\n /**\n * name of the UI root to load.\n */\n uiRootName?: string;\n\n /**\n * component selector pattern to load.\n */\n pattern?: string;\n\n /**\n * determine whether to start a dev server (defaults to false).\n */\n dev?: boolean;\n\n /**\n * port of the config.\n */\n port?: number;\n\n /**\n * determine whether to rebuild the UI before start.\n */\n rebuild?: boolean;\n};\n\nexport class UiMain {\n constructor(\n /**\n * Pubsub extension.\n */\n private pubsub: PubsubMain,\n\n private config: UIConfig,\n\n /**\n * graphql extension.\n */\n private graphql: GraphqlMain,\n\n /**\n * slot registry of ui roots.\n */\n private uiRootSlot: UIRootRegistry,\n\n /**\n * express extension.\n */\n private express: ExpressMain,\n\n /**\n * pre-start slot\n */\n private preStartSlot: PreStartSlot,\n\n /**\n * on start slot\n */\n private onStartSlot: OnStartSlot,\n\n /**\n * Overwrite the public dir Slot\n */\n private publicDirOverwriteSlot: PublicDirOverwriteSlot,\n\n /**\n * Overwrite the build ui method\n */\n private buildMethodOverwriteSlot: BuildMethodOverwriteSlot,\n\n /**\n * component extension.\n */\n private componentExtension: ComponentMain,\n\n /**\n * ui logger instance.\n */\n private cache: CacheMain,\n\n /**\n * ui logger instance.\n */\n private logger: Logger,\n\n private harmony: Harmony,\n\n private startPluginSlot: StartPluginSlot\n ) {}\n\n async publicDir(uiRoot: UIRoot) {\n const overwriteFn = this.getOverwritePublic();\n if (overwriteFn) {\n const hasDir = await overwriteFn(uiRoot);\n if (hasDir) return hasDir;\n }\n\n if (this.config.publicDir.startsWith('/')) {\n return this.config.publicDir.substring(1);\n }\n\n return this.config.publicDir;\n }\n\n private getUiByName(name: string) {\n const roots = this.uiRootSlot.toArray();\n const [, root] =\n roots.find(([, uiRoot]) => {\n return uiRoot.name === name;\n }) || [];\n\n return root;\n }\n\n /**\n * create a build of the given UI root.\n */\n async build(uiRootName?: string): Promise<webpack.MultiStats | undefined> {\n // TODO: change to MultiStats from webpack once they export it in their types\n this.logger.debug(`build, uiRootName: \"${uiRootName}\"`);\n const maybeUiRoot = this.getUi(uiRootName);\n\n if (!maybeUiRoot) throw new UnknownUI(uiRootName, this.possibleUis());\n const [name, uiRoot] = maybeUiRoot;\n\n // TODO: @uri refactor all dev server related code to use the bundler extension instead.\n const ssr = uiRoot.buildOptions?.ssr || false;\n const mainEntry = await this.generateRoot(await uiRoot.resolveAspects(UIRuntime.name), name);\n\n const browserConfig = createWebpackConfig(uiRoot.path, [mainEntry], uiRoot.name, await this.publicDir(uiRoot));\n const ssrConfig = ssr && createSsrWebpackConfig(uiRoot.path, [mainEntry], await this.publicDir(uiRoot));\n\n const config = [browserConfig, ssrConfig].filter((x) => !!x) as webpack.Configuration[];\n const compiler = webpack(config);\n this.logger.debug(`build, uiRootName: \"${uiRootName}\" running webpack`);\n const compilerRun = promisify(compiler.run.bind(compiler));\n const results = await compilerRun();\n this.logger.debug(`build, uiRootName: \"${uiRootName}\" completed webpack`);\n if (!results) throw new UnknownBuildError();\n if (results?.hasErrors()) {\n this.clearConsole();\n throw new Error(results?.toString());\n }\n\n return results;\n }\n\n registerStartPlugin(startPlugin: StartPlugin) {\n this.startPluginSlot.register(startPlugin);\n return this;\n }\n\n private async initiatePlugins(options: StartPluginOptions) {\n const plugins = this.startPluginSlot.values();\n await Promise.all(plugins.map((plugin) => plugin.initiate(options)));\n return plugins;\n }\n\n /**\n * create a Bit UI runtime.\n */\n async createRuntime({ uiRootName, pattern, dev, port, rebuild, verbose }: RuntimeOptions) {\n const maybeUiRoot = this.getUi(uiRootName);\n if (!maybeUiRoot) throw new UnknownUI(uiRootName, this.possibleUis());\n\n const [name, uiRoot] = maybeUiRoot;\n\n const plugins = await this.initiatePlugins({\n verbose,\n pattern,\n });\n\n if (this.componentExtension.isHost(name)) this.componentExtension.setHostPriority(name);\n\n const uiServer = UIServer.create({\n express: this.express,\n graphql: this.graphql,\n uiRoot,\n uiRootExtension: name,\n ui: this,\n logger: this.logger,\n publicDir: await this.publicDir(uiRoot),\n startPlugins: plugins,\n });\n\n // Adding signal listeners to make sure we immediately close the process on sigint / sigterm (otherwise webpack dev server closing will take time)\n this.addSignalListener();\n if (dev) {\n await uiServer.dev({ portRange: port || this.config.portRange });\n } else {\n await this.buildUI(name, uiRoot, rebuild);\n await uiServer.start({ portRange: port || this.config.portRange });\n }\n\n this.pubsub.pub(UIAspect.id, this.createUiServerStartedEvent(this.config.host, uiServer.port, uiRoot));\n\n return uiServer;\n }\n\n private addSignalListener() {\n process.on('SIGTERM', () => {\n process.exit();\n });\n\n process.on('SIGINT', () => {\n process.exit();\n });\n }\n\n async getPort(port?: number): Promise<number> {\n if (port) return port;\n return this.config.port || this.selectPort();\n }\n\n /**\n * Events\n */\n private createUiServerStartedEvent = (targetHost, targetPort, uiRoot) => {\n return new UiServerStartedEvent(Date.now(), targetHost, targetPort, uiRoot);\n };\n\n /**\n * pre-start events are triggered and *completed* before the webserver started.\n * (the promise is awaited)\n */\n registerPreStart(preStartFn: PreStart) {\n this.preStartSlot.register(preStartFn);\n }\n\n /**\n * bind to ui server start event.\n */\n registerOnStart(onStartFn: OnStart) {\n this.onStartSlot.register(onStartFn);\n return this;\n }\n\n /**\n * overwrite the build ui function\n */\n registerBuildUIOverwrite(fn: BuildMethodOverwrite) {\n this.buildMethodOverwriteSlot.register(fn);\n return this;\n }\n\n /**\n * overwrite the build ui function\n */\n registerPublicDirOverwrite(fn: PublicDirOverwrite) {\n this.publicDirOverwriteSlot.register(fn);\n return this;\n }\n\n private getOverwriteBuildFn() {\n const buildMethodOverwrite = this.buildMethodOverwriteSlot.toArray();\n if (buildMethodOverwrite[0]) {\n const [, fn] = buildMethodOverwrite[0];\n return fn;\n }\n return undefined;\n }\n\n private getOverwritePublic() {\n const overwritePublic = this.publicDirOverwriteSlot.toArray();\n if (overwritePublic[0]) {\n const [, fn] = overwritePublic[0];\n return fn;\n }\n return undefined;\n }\n\n async invokePreStart(preStartOpts: PreStartOpts): Promise<void> {\n const promises = this.preStartSlot.values().map((fn) => fn(preStartOpts));\n await Promise.all(promises);\n }\n\n async invokeOnStart(): Promise<ComponentType[]> {\n const promises = this.onStartSlot.values().map((fn) => fn());\n const startPlugins = await Promise.all(promises);\n return startPlugins.filter((plugin) => !!plugin) as ComponentType[];\n }\n\n /**\n * register a UI slot.\n */\n registerUiRoot(uiRoot: UIRoot) {\n return this.uiRootSlot.register(uiRoot);\n }\n\n /**\n * get a UI runtime instance.\n */\n getUi(uiRootName?: string): [string, UIRoot] | undefined {\n if (uiRootName) {\n const root = this.uiRootSlot.get(uiRootName) || this.getUiByName(uiRootName);\n if (!root) return undefined;\n return [uiRootName, root];\n }\n const uis = this.uiRootSlot.toArray();\n if (uis.length === 1) return uis[0];\n return uis.find(([, root]) => root.priority);\n }\n\n isHostAvailable(): boolean {\n return Boolean(this.componentExtension.getHost());\n }\n\n getUiName(uiRootName?: string): string | undefined {\n const [, ui] = this.getUi(uiRootName) || [];\n if (!ui) return undefined;\n\n return ui.name;\n }\n\n private possibleUis() {\n return this.uiRootSlot.toArray().map(([id]) => id);\n }\n\n createLink(aspectDefs: AspectDefinition[], rootExtensionName: string) {\n return createRoot(aspectDefs, rootExtensionName);\n }\n\n /**\n * generate the root file of the UI runtime.\n */\n async generateRoot(\n aspectDefs: AspectDefinition[],\n rootExtensionName: string,\n runtimeName = UIRuntime.name,\n rootAspect = UIAspect.id,\n config?: object,\n ) {\n const contents = await createRoot(\n aspectDefs,\n rootExtensionName,\n rootAspect,\n runtimeName,\n config || this.harmony.config.toObject()\n );\n const filepath = resolve(join(__dirname, `${runtimeName}.root${sha1(contents)}.js`));\n if (fs.existsSync(filepath)) return filepath;\n fs.outputFileSync(filepath, contents);\n return filepath;\n }\n\n private async selectPort() {\n const [from, to] = this.config.portRange;\n const usedPorts = (await this.cache.get<number[]>(`${from}${to}`)) || [];\n const port = await Port.getPort(from, to, usedPorts);\n // this will lock the port for 1 min to avoid race conditions\n await this.cache.set(`${from}${to}`, usedPorts.concat(port), 5000);\n return port;\n }\n\n private async buildUI(name: string, uiRoot: UIRoot, rebuild?: boolean): Promise<string> {\n this.logger.debug(`buildUI, name ${name}`);\n const overwrite = this.getOverwriteBuildFn();\n if (overwrite) return overwrite(name, uiRoot, rebuild);\n const hash = await this.buildIfChanged(name, uiRoot, rebuild);\n await this.buildIfNoBundle(name, uiRoot);\n return hash;\n }\n\n async buildUiHash(uiRoot: UIRoot, runtime = 'ui'): Promise<string> {\n const aspects = await uiRoot.resolveAspects(runtime);\n aspects.sort((a, b) => (a.aspectPath > b.aspectPath ? 1 : -1));\n const hash = aspects.map((aspect) => {\n return [aspect.aspectPath, aspect.runtimePath].join('');\n });\n return sha1(hash.join(''));\n }\n\n async buildIfChanged(name: string, uiRoot: UIRoot, force: boolean | undefined): Promise<string> {\n this.logger.debug(`buildIfChanged, name ${name}`);\n const hash = await this.buildUiHash(uiRoot);\n const hashed = await this.cache.get(uiRoot.path);\n if (hash === hashed && !force) {\n this.logger.debug(`buildIfChanged, name ${name}, returned from cache`);\n return hash;\n }\n if (!hashed) {\n this.logger.console(\n `Building UI assets for '${chalk.cyan(uiRoot.name)}' in target directory: ${chalk.cyan(\n await this.publicDir(uiRoot)\n )}. The first time we build the UI it may take a few minutes.`\n );\n } else {\n this.logger.console(\n `Rebuilding UI assets for '${chalk.cyan(uiRoot.name)} in target directory: ${chalk.cyan(\n await this.publicDir(uiRoot)\n )}' as ${uiRoot.configFile} has been changed.`\n );\n }\n\n await this.build(name);\n await this.cache.set(uiRoot.path, hash);\n return hash;\n }\n\n clearConsole() {\n process.stdout.write(process.platform === 'win32' ? '\\x1B[2J\\x1B[0f' : '\\x1B[2J\\x1B[3J\\x1B[H');\n }\n\n async buildIfNoBundle(name: string, uiRoot: UIRoot) {\n const config = createWebpackConfig(\n uiRoot.path,\n [await this.generateRoot(await uiRoot.resolveAspects(UIRuntime.name), name)],\n uiRoot.name,\n await this.publicDir(uiRoot)\n );\n if (config.output?.path && fs.pathExistsSync(config.output.path)) return;\n const hash = await this.buildUiHash(uiRoot);\n await this.build(name);\n await this.cache.set(uiRoot.path, hash);\n }\n\n get publicUrl() {\n return this.config.publicUrl;\n }\n\n static defaultConfig: UIConfig = {\n publicDir: 'public/bit',\n portRange: [3000, 3100],\n host: 'localhost',\n };\n\n static runtime = MainRuntime;\n static dependencies = [\n PubsubAspect,\n CLIAspect,\n GraphqlAspect,\n ExpressAspect,\n ComponentAspect,\n CacheAspect,\n LoggerAspect,\n ];\n\n static slots = [\n Slot.withType<UIRoot>(),\n Slot.withType<PreStart>(),\n Slot.withType<OnStart>(),\n Slot.withType<PublicDirOverwriteSlot>(),\n Slot.withType<BuildMethodOverwriteSlot>(),\n Slot.withType<StartPlugin>(),\n ];\n\n static async provider(\n [pubsub, cli, graphql, express, componentExtension, cache, loggerMain]: UIDeps,\n config,\n [uiRootSlot, preStartSlot, onStartSlot, publicDirOverwriteSlot, buildMethodOverwriteSlot, proxyGetterSlot]: [\n UIRootRegistry,\n PreStartSlot,\n OnStartSlot,\n PublicDirOverwriteSlot,\n BuildMethodOverwriteSlot,\n StartPluginSlot\n ],\n harmony: Harmony\n ) {\n // aspectExtension.registerRuntime(new RuntimeDefinition('ui', []))\n const logger = loggerMain.createLogger(UIAspect.id);\n\n const ui = new UiMain(\n pubsub,\n config,\n graphql,\n uiRootSlot,\n express,\n preStartSlot,\n onStartSlot,\n publicDirOverwriteSlot,\n buildMethodOverwriteSlot,\n componentExtension,\n cache,\n logger,\n harmony,\n proxyGetterSlot\n );\n cli.register(new StartCmd(ui, logger), new UIBuildCmd(ui));\n return ui;\n }\n}\n\nUIAspect.addRuntime(UiMain);\n"]}
|
|
1
|
+
{"version":3,"names":["UiMain","constructor","pubsub","config","graphql","uiRootSlot","express","preStartSlot","onStartSlot","publicDirOverwriteSlot","buildMethodOverwriteSlot","componentExtension","cache","logger","harmony","startPluginSlot","targetHost","targetPort","uiRoot","UiServerStartedEvent","Date","now","publicDir","overwriteFn","getOverwritePublic","hasDir","startsWith","substring","getUiByName","name","roots","toArray","root","find","build","uiRootName","debug","maybeUiRoot","getUi","UnknownUI","possibleUis","ssr","buildOptions","mainEntry","generateRoot","resolveAspects","UIRuntime","browserConfig","createWebpackConfig","path","ssrConfig","createSsrWebpackConfig","filter","x","compiler","webpack","compilerRun","promisify","run","bind","results","UnknownBuildError","hasErrors","clearConsole","Error","toString","registerStartPlugin","startPlugin","register","initiatePlugins","options","plugins","values","Promise","all","map","plugin","initiate","createRuntime","pattern","dev","port","rebuild","verbose","isHost","setHostPriority","uiServer","UIServer","create","uiRootExtension","ui","startPlugins","addSignalListener","portRange","buildUI","start","pub","UIAspect","id","createUiServerStartedEvent","host","process","on","exit","getPort","selectPort","registerPreStart","preStartFn","registerOnStart","onStartFn","registerBuildUIOverwrite","fn","registerPublicDirOverwrite","getOverwriteBuildFn","buildMethodOverwrite","undefined","overwritePublic","invokePreStart","preStartOpts","promises","invokeOnStart","registerUiRoot","get","uis","length","priority","isHostAvailable","Boolean","getHost","getUiName","createLink","aspectDefs","rootExtensionName","createRoot","runtimeName","rootAspect","contents","toObject","filepath","resolve","join","__dirname","sha1","fs","existsSync","outputFileSync","from","to","usedPorts","Port","set","concat","overwrite","hash","buildIfChanged","buildIfNoBundle","buildUiHash","runtime","aspects","sort","a","b","aspectPath","aspect","runtimePath","force","hashed","console","chalk","cyan","configFile","stdout","write","platform","output","pathExistsSync","publicUrl","provider","cli","loggerMain","proxyGetterSlot","createLogger","StartCmd","UIBuildCmd","MainRuntime","PubsubAspect","CLIAspect","GraphqlAspect","ExpressAspect","ComponentAspect","CacheAspect","LoggerAspect","Slot","withType","addRuntime"],"sources":["ui.main.runtime.ts"],"sourcesContent":["import type { AspectMain } from '@teambit/aspect';\nimport { ComponentType } from 'react';\nimport { AspectDefinition } from '@teambit/aspect-loader';\nimport { CacheAspect, CacheMain } from '@teambit/cache';\nimport { CLIAspect, CLIMain, MainRuntime } from '@teambit/cli';\nimport type { ComponentMain } from '@teambit/component';\nimport { ComponentAspect } from '@teambit/component';\nimport { ExpressAspect, ExpressMain } from '@teambit/express';\nimport type { GraphqlMain } from '@teambit/graphql';\nimport { GraphqlAspect } from '@teambit/graphql';\nimport chalk from 'chalk';\nimport { Slot, SlotRegistry, Harmony } from '@teambit/harmony';\nimport { Logger, LoggerAspect, LoggerMain } from '@teambit/logger';\nimport PubsubAspect, { PubsubMain } from '@teambit/pubsub';\nimport { sha1 } from '@teambit/legacy/dist/utils';\nimport fs from 'fs-extra';\nimport { Port } from '@teambit/toolbox.network.get-port';\nimport { join, resolve } from 'path';\nimport { promisify } from 'util';\nimport webpack from 'webpack';\nimport { UiServerStartedEvent } from './events';\nimport { createRoot } from './create-root';\nimport { UnknownUI, UnknownBuildError } from './exceptions';\nimport { StartCmd } from './start.cmd';\nimport { UIBuildCmd } from './ui-build.cmd';\nimport { UIRoot } from './ui-root';\nimport { UIServer } from './ui-server';\nimport { UIAspect, UIRuntime } from './ui.aspect';\nimport createWebpackConfig from './webpack/webpack.browser.config';\nimport createSsrWebpackConfig from './webpack/webpack.ssr.config';\nimport { StartPlugin, StartPluginOptions } from './start-plugin';\n\nexport type UIDeps = [PubsubMain, CLIMain, GraphqlMain, ExpressMain, ComponentMain, CacheMain, LoggerMain, AspectMain];\n\nexport type UIRootRegistry = SlotRegistry<UIRoot>;\n\nexport type PreStart = (preStartOpts: PreStartOpts) => Promise<void>;\n\nexport type PreStartOpts = { skipCompilation?: boolean };\n\nexport type OnStart = () => Promise<undefined | ComponentType<{}>>;\n\nexport type StartPluginSlot = SlotRegistry<StartPlugin>;\n\nexport type PublicDirOverwrite = (uiRoot: UIRoot) => Promise<string | undefined>;\n\nexport type BuildMethodOverwrite = (name: string, uiRoot: UIRoot, rebuild?: boolean) => Promise<string>;\n\nexport type PreStartSlot = SlotRegistry<PreStart>;\n\nexport type OnStartSlot = SlotRegistry<OnStart>;\n\nexport type PublicDirOverwriteSlot = SlotRegistry<PublicDirOverwrite>;\n\nexport type BuildMethodOverwriteSlot = SlotRegistry<BuildMethodOverwrite>;\n\nexport type UIConfig = {\n /**\n * port for the UI root to use.\n */\n port?: number;\n\n /**\n * port range for the UI root to use.\n */\n portRange: [number, number];\n\n /**\n * host for the UI root\n */\n host: string;\n\n /**\n * directory in workspace to use for public assets.\n * always relative to the workspace root directory.\n */\n publicDir: string;\n\n /** the url to display when server is listening. Note that bit does not provide proxying to this url */\n publicUrl?: string;\n};\n\nexport type RuntimeOptions = {\n /**\n * determine whether to initiate on verbose mode.\n */\n verbose?: boolean;\n\n /**\n * name of the UI root to load.\n */\n uiRootName?: string;\n\n /**\n * component selector pattern to load.\n */\n pattern?: string;\n\n /**\n * determine whether to start a dev server (defaults to false).\n */\n dev?: boolean;\n\n /**\n * port of the config.\n */\n port?: number;\n\n /**\n * determine whether to rebuild the UI before start.\n */\n rebuild?: boolean;\n};\n\nexport class UiMain {\n constructor(\n /**\n * Pubsub extension.\n */\n private pubsub: PubsubMain,\n\n private config: UIConfig,\n\n /**\n * graphql extension.\n */\n private graphql: GraphqlMain,\n\n /**\n * slot registry of ui roots.\n */\n private uiRootSlot: UIRootRegistry,\n\n /**\n * express extension.\n */\n private express: ExpressMain,\n\n /**\n * pre-start slot\n */\n private preStartSlot: PreStartSlot,\n\n /**\n * on start slot\n */\n private onStartSlot: OnStartSlot,\n\n /**\n * Overwrite the public dir Slot\n */\n private publicDirOverwriteSlot: PublicDirOverwriteSlot,\n\n /**\n * Overwrite the build ui method\n */\n private buildMethodOverwriteSlot: BuildMethodOverwriteSlot,\n\n /**\n * component extension.\n */\n private componentExtension: ComponentMain,\n\n /**\n * ui logger instance.\n */\n private cache: CacheMain,\n\n /**\n * ui logger instance.\n */\n private logger: Logger,\n\n private harmony: Harmony,\n\n private startPluginSlot: StartPluginSlot\n ) {}\n\n async publicDir(uiRoot: UIRoot) {\n const overwriteFn = this.getOverwritePublic();\n if (overwriteFn) {\n const hasDir = await overwriteFn(uiRoot);\n if (hasDir) return hasDir;\n }\n\n if (this.config.publicDir.startsWith('/')) {\n return this.config.publicDir.substring(1);\n }\n\n return this.config.publicDir;\n }\n\n private getUiByName(name: string) {\n const roots = this.uiRootSlot.toArray();\n const [, root] =\n roots.find(([, uiRoot]) => {\n return uiRoot.name === name;\n }) || [];\n\n return root;\n }\n\n /**\n * create a build of the given UI root.\n */\n async build(uiRootName?: string): Promise<webpack.MultiStats | undefined> {\n // TODO: change to MultiStats from webpack once they export it in their types\n this.logger.debug(`build, uiRootName: \"${uiRootName}\"`);\n const maybeUiRoot = this.getUi(uiRootName);\n\n if (!maybeUiRoot) throw new UnknownUI(uiRootName, this.possibleUis());\n const [name, uiRoot] = maybeUiRoot;\n\n // TODO: @uri refactor all dev server related code to use the bundler extension instead.\n const ssr = uiRoot.buildOptions?.ssr || false;\n const mainEntry = await this.generateRoot(await uiRoot.resolveAspects(UIRuntime.name), name);\n\n const browserConfig = createWebpackConfig(uiRoot.path, [mainEntry], uiRoot.name, await this.publicDir(uiRoot));\n const ssrConfig = ssr && createSsrWebpackConfig(uiRoot.path, [mainEntry], await this.publicDir(uiRoot));\n\n const config = [browserConfig, ssrConfig].filter((x) => !!x) as webpack.Configuration[];\n const compiler = webpack(config);\n this.logger.debug(`build, uiRootName: \"${uiRootName}\" running webpack`);\n const compilerRun = promisify(compiler.run.bind(compiler));\n const results = await compilerRun();\n this.logger.debug(`build, uiRootName: \"${uiRootName}\" completed webpack`);\n if (!results) throw new UnknownBuildError();\n if (results?.hasErrors()) {\n this.clearConsole();\n throw new Error(results?.toString());\n }\n\n return results;\n }\n\n registerStartPlugin(startPlugin: StartPlugin) {\n this.startPluginSlot.register(startPlugin);\n return this;\n }\n\n private async initiatePlugins(options: StartPluginOptions) {\n const plugins = this.startPluginSlot.values();\n await Promise.all(plugins.map((plugin) => plugin.initiate(options)));\n return plugins;\n }\n\n /**\n * create a Bit UI runtime.\n */\n async createRuntime({ uiRootName, pattern, dev, port, rebuild, verbose }: RuntimeOptions) {\n const maybeUiRoot = this.getUi(uiRootName);\n if (!maybeUiRoot) throw new UnknownUI(uiRootName, this.possibleUis());\n\n const [name, uiRoot] = maybeUiRoot;\n\n const plugins = await this.initiatePlugins({\n verbose,\n pattern,\n });\n\n if (this.componentExtension.isHost(name)) this.componentExtension.setHostPriority(name);\n\n const uiServer = UIServer.create({\n express: this.express,\n graphql: this.graphql,\n uiRoot,\n uiRootExtension: name,\n ui: this,\n logger: this.logger,\n publicDir: await this.publicDir(uiRoot),\n startPlugins: plugins,\n });\n\n // Adding signal listeners to make sure we immediately close the process on sigint / sigterm (otherwise webpack dev server closing will take time)\n this.addSignalListener();\n if (dev) {\n await uiServer.dev({ portRange: port || this.config.portRange });\n } else {\n await this.buildUI(name, uiRoot, rebuild);\n await uiServer.start({ portRange: port || this.config.portRange });\n }\n\n this.pubsub.pub(UIAspect.id, this.createUiServerStartedEvent(this.config.host, uiServer.port, uiRoot));\n\n return uiServer;\n }\n\n private addSignalListener() {\n process.on('SIGTERM', () => {\n process.exit();\n });\n\n process.on('SIGINT', () => {\n process.exit();\n });\n }\n\n async getPort(port?: number): Promise<number> {\n if (port) return port;\n return this.config.port || this.selectPort();\n }\n\n /**\n * Events\n */\n private createUiServerStartedEvent = (targetHost, targetPort, uiRoot) => {\n return new UiServerStartedEvent(Date.now(), targetHost, targetPort, uiRoot);\n };\n\n /**\n * pre-start events are triggered and *completed* before the webserver started.\n * (the promise is awaited)\n */\n registerPreStart(preStartFn: PreStart) {\n this.preStartSlot.register(preStartFn);\n }\n\n /**\n * bind to ui server start event.\n */\n registerOnStart(onStartFn: OnStart) {\n this.onStartSlot.register(onStartFn);\n return this;\n }\n\n /**\n * overwrite the build ui function\n */\n registerBuildUIOverwrite(fn: BuildMethodOverwrite) {\n this.buildMethodOverwriteSlot.register(fn);\n return this;\n }\n\n /**\n * overwrite the build ui function\n */\n registerPublicDirOverwrite(fn: PublicDirOverwrite) {\n this.publicDirOverwriteSlot.register(fn);\n return this;\n }\n\n private getOverwriteBuildFn() {\n const buildMethodOverwrite = this.buildMethodOverwriteSlot.toArray();\n if (buildMethodOverwrite[0]) {\n const [, fn] = buildMethodOverwrite[0];\n return fn;\n }\n return undefined;\n }\n\n private getOverwritePublic() {\n const overwritePublic = this.publicDirOverwriteSlot.toArray();\n if (overwritePublic[0]) {\n const [, fn] = overwritePublic[0];\n return fn;\n }\n return undefined;\n }\n\n async invokePreStart(preStartOpts: PreStartOpts): Promise<void> {\n const promises = this.preStartSlot.values().map((fn) => fn(preStartOpts));\n await Promise.all(promises);\n }\n\n async invokeOnStart(): Promise<ComponentType[]> {\n const promises = this.onStartSlot.values().map((fn) => fn());\n const startPlugins = await Promise.all(promises);\n return startPlugins.filter((plugin) => !!plugin) as ComponentType[];\n }\n\n /**\n * register a UI slot.\n */\n registerUiRoot(uiRoot: UIRoot) {\n return this.uiRootSlot.register(uiRoot);\n }\n\n /**\n * get a UI runtime instance.\n */\n getUi(uiRootName?: string): [string, UIRoot] | undefined {\n if (uiRootName) {\n const root = this.uiRootSlot.get(uiRootName) || this.getUiByName(uiRootName);\n if (!root) return undefined;\n return [uiRootName, root];\n }\n const uis = this.uiRootSlot.toArray();\n if (uis.length === 1) return uis[0];\n return uis.find(([, root]) => root.priority);\n }\n\n isHostAvailable(): boolean {\n return Boolean(this.componentExtension.getHost());\n }\n\n getUiName(uiRootName?: string): string | undefined {\n const [, ui] = this.getUi(uiRootName) || [];\n if (!ui) return undefined;\n\n return ui.name;\n }\n\n private possibleUis() {\n return this.uiRootSlot.toArray().map(([id]) => id);\n }\n\n createLink(aspectDefs: AspectDefinition[], rootExtensionName: string) {\n return createRoot(aspectDefs, rootExtensionName);\n }\n\n /**\n * generate the root file of the UI runtime.\n */\n async generateRoot(\n aspectDefs: AspectDefinition[],\n rootExtensionName: string,\n runtimeName = UIRuntime.name,\n rootAspect = UIAspect.id,\n config?: object,\n ) {\n const contents = await createRoot(\n aspectDefs,\n rootExtensionName,\n rootAspect,\n runtimeName,\n config || this.harmony.config.toObject()\n );\n const filepath = resolve(join(__dirname, `${runtimeName}.root${sha1(contents)}.js`));\n if (fs.existsSync(filepath)) return filepath;\n fs.outputFileSync(filepath, contents);\n return filepath;\n }\n\n private async selectPort() {\n const [from, to] = this.config.portRange;\n const usedPorts = (await this.cache.get<number[]>(`${from}${to}`)) || [];\n const port = await Port.getPort(from, to, usedPorts);\n // this will lock the port for 1 min to avoid race conditions\n await this.cache.set(`${from}${to}`, usedPorts.concat(port), 5000);\n return port;\n }\n\n private async buildUI(name: string, uiRoot: UIRoot, rebuild?: boolean): Promise<string> {\n this.logger.debug(`buildUI, name ${name}`);\n const overwrite = this.getOverwriteBuildFn();\n if (overwrite) return overwrite(name, uiRoot, rebuild);\n const hash = await this.buildIfChanged(name, uiRoot, rebuild);\n await this.buildIfNoBundle(name, uiRoot);\n return hash;\n }\n\n async buildUiHash(uiRoot: UIRoot, runtime = 'ui'): Promise<string> {\n const aspects = await uiRoot.resolveAspects(runtime);\n aspects.sort((a, b) => (a.aspectPath > b.aspectPath ? 1 : -1));\n const hash = aspects.map((aspect) => {\n return [aspect.aspectPath, aspect.runtimePath].join('');\n });\n return sha1(hash.join(''));\n }\n\n async buildIfChanged(name: string, uiRoot: UIRoot, force: boolean | undefined): Promise<string> {\n this.logger.debug(`buildIfChanged, name ${name}`);\n const hash = await this.buildUiHash(uiRoot);\n const hashed = await this.cache.get(uiRoot.path);\n if (hash === hashed && !force) {\n this.logger.debug(`buildIfChanged, name ${name}, returned from cache`);\n return hash;\n }\n if (!hashed) {\n this.logger.console(\n `Building UI assets for '${chalk.cyan(uiRoot.name)}' in target directory: ${chalk.cyan(\n await this.publicDir(uiRoot)\n )}. The first time we build the UI it may take a few minutes.`\n );\n } else {\n this.logger.console(\n `Rebuilding UI assets for '${chalk.cyan(uiRoot.name)} in target directory: ${chalk.cyan(\n await this.publicDir(uiRoot)\n )}' as ${uiRoot.configFile} has been changed.`\n );\n }\n\n await this.build(name);\n await this.cache.set(uiRoot.path, hash);\n return hash;\n }\n\n clearConsole() {\n process.stdout.write(process.platform === 'win32' ? '\\x1B[2J\\x1B[0f' : '\\x1B[2J\\x1B[3J\\x1B[H');\n }\n\n async buildIfNoBundle(name: string, uiRoot: UIRoot) {\n const config = createWebpackConfig(\n uiRoot.path,\n [await this.generateRoot(await uiRoot.resolveAspects(UIRuntime.name), name)],\n uiRoot.name,\n await this.publicDir(uiRoot)\n );\n if (config.output?.path && fs.pathExistsSync(config.output.path)) return;\n const hash = await this.buildUiHash(uiRoot);\n await this.build(name);\n await this.cache.set(uiRoot.path, hash);\n }\n\n get publicUrl() {\n return this.config.publicUrl;\n }\n\n static defaultConfig: UIConfig = {\n publicDir: 'public/bit',\n portRange: [3000, 3100],\n host: 'localhost',\n };\n\n static runtime = MainRuntime;\n static dependencies = [\n PubsubAspect,\n CLIAspect,\n GraphqlAspect,\n ExpressAspect,\n ComponentAspect,\n CacheAspect,\n LoggerAspect,\n ];\n\n static slots = [\n Slot.withType<UIRoot>(),\n Slot.withType<PreStart>(),\n Slot.withType<OnStart>(),\n Slot.withType<PublicDirOverwriteSlot>(),\n Slot.withType<BuildMethodOverwriteSlot>(),\n Slot.withType<StartPlugin>(),\n ];\n\n static async provider(\n [pubsub, cli, graphql, express, componentExtension, cache, loggerMain]: UIDeps,\n config,\n [uiRootSlot, preStartSlot, onStartSlot, publicDirOverwriteSlot, buildMethodOverwriteSlot, proxyGetterSlot]: [\n UIRootRegistry,\n PreStartSlot,\n OnStartSlot,\n PublicDirOverwriteSlot,\n BuildMethodOverwriteSlot,\n StartPluginSlot\n ],\n harmony: Harmony\n ) {\n // aspectExtension.registerRuntime(new RuntimeDefinition('ui', []))\n const logger = loggerMain.createLogger(UIAspect.id);\n\n const ui = new UiMain(\n pubsub,\n config,\n graphql,\n uiRootSlot,\n express,\n preStartSlot,\n onStartSlot,\n publicDirOverwriteSlot,\n buildMethodOverwriteSlot,\n componentExtension,\n cache,\n logger,\n harmony,\n proxyGetterSlot\n );\n cli.register(new StartCmd(ui, logger), new UIBuildCmd(ui));\n return ui;\n }\n}\n\nUIAspect.addRuntime(UiMain);\n"],"mappings":"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"}
|
package/dist/ui.route.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":[],"sources":["ui.route.ts"],"sourcesContent":[""],"mappings":""}
|
package/dist/ui.runtime.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ui.runtime.ts"],"
|
|
1
|
+
{"version":3,"names":[],"sources":["ui.runtime.ts"],"sourcesContent":["// import harmony from '@teambit/harmony';\n// import { UIRuntimeExtension } from './ui.ui';\n// import { DocsUI } from '../docs/docs.ui';\n// import { TesterUI } from '../tester/tester.ui';\n// import { ChangeLogUI } from '../changelog/changelog.ui';\n// import { ComponentUI } from '../component';\n// import { CompositionsUI } from '../compositions/compositions.ui';\n\n// /**\n// * configure all core extensions\n// * TODO: pass all other extensions from above.\n// */\n// harmony\n// .run([UIRuntimeExtension, TesterUI, ChangeLogUI, CompositionsUI, DocsUI, ComponentUI])\n// .then(() => {\n// const uiExtension = harmony.get<UIRuntimeExtension>('UIRuntimeExtension');\n// uiExtension.render();\n// })\n// .catch((err) => {\n// throw err;\n// });\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["UiUI","constructor","router","uiRootSlot","hudSlot","renderPluginsSlot","element","register","render","rootExtension","rootFactory","getRoot","Error","uiRoot","routes","renderRoutes","hudItems","values","lifecyclePlugins","getLifecyclePlugins","reactSsr","ReactSSR","renderBrowser","renderSsr","ssrContent","fullHtml","renderServer","registerContext","context","reactContext","registerRoot","registerRenderHooks","plugins","toArray","unshift","ReactRouterAspect","id","renderPlugin","get","provider","GraphqlUi","config","renderLifecycleSlot","uiUi","renderPlugins","Slot","withType","GraphqlAspect","UIRuntime","UIAspect","addRuntime"],"sources":["ui.ui.runtime.tsx"],"sourcesContent":["import type { GraphqlUI } from '@teambit/graphql';\nimport { GraphqlAspect } from '@teambit/graphql';\nimport { Slot, SlotRegistry } from '@teambit/harmony';\nimport type { ReactRouterUI } from '@teambit/react-router';\nimport { ReactRouterAspect } from '@teambit/react-router';\n\nimport React, { ReactNode, ComponentType } from 'react';\n\nimport { UIRootFactory } from './ui-root.ui';\nimport { UIAspect, UIRuntime } from './ui.aspect';\nimport { ClientContext } from './ui/client-context';\nimport type { SsrContent } from './react-ssr/ssr-content';\nimport { ContextProps, RenderPlugins } from './react-ssr/render-lifecycle';\nimport { ReactSSR } from './react-ssr/react-ssr';\n\ntype HudSlot = SlotRegistry<ReactNode>;\ntype RenderPluginsSlot = SlotRegistry<RenderPlugins>;\ntype UIRootRegistry = SlotRegistry<UIRootFactory>;\n\n/**\n * extension\n */\nexport class UiUI {\n constructor(\n /**\n * react-router extension.\n */\n private router: ReactRouterUI,\n /**\n * ui root registry.\n */\n private uiRootSlot: UIRootRegistry,\n /** slot for overlay ui elements */\n private hudSlot: HudSlot,\n /** hooks into the ssr render process */\n private renderPluginsSlot: RenderPluginsSlot\n ) {}\n\n /** render and rehydrate client-side */\n async render(rootExtension: string): Promise<void> {\n const rootFactory = this.getRoot(rootExtension);\n if (!rootFactory) throw new Error(`root: ${rootExtension} was not found`);\n const uiRoot = rootFactory();\n const routes = this.router.renderRoutes(uiRoot.routes);\n const hudItems = this.hudSlot.values();\n const lifecyclePlugins = this.getLifecyclePlugins();\n\n const reactSsr = new ReactSSR(lifecyclePlugins);\n await reactSsr.renderBrowser(\n <ClientContext>\n {hudItems}\n {routes}\n </ClientContext>\n );\n }\n\n /** render dehydrated server-side */\n async renderSsr(rootExtension: string, ssrContent: SsrContent): Promise<string> {\n const rootFactory = this.getRoot(rootExtension);\n if (!rootFactory) throw new Error(`root: ${rootExtension} was not found`);\n\n const uiRoot = rootFactory();\n const routes = this.router.renderRoutes(uiRoot.routes);\n const hudItems = this.hudSlot.values();\n const lifecyclePlugins = this.getLifecyclePlugins();\n\n const reactSsr = new ReactSSR(lifecyclePlugins);\n const fullHtml = await reactSsr.renderServer(\n <ClientContext>\n {hudItems}\n {routes}\n </ClientContext>,\n ssrContent\n );\n\n return fullHtml;\n }\n\n /** adds elements to the Heads Up Display */\n registerHudItem = (element: ReactNode) => {\n this.hudSlot.register(element);\n };\n\n /**\n * adds global context at the ui root\n * @deprecated replace with `.registerRenderHooks({ reactContext })`.\n */\n registerContext<T>(context: ComponentType<ContextProps<T>>) {\n this.renderPluginsSlot.register({\n reactContext: context,\n });\n }\n\n registerRoot(uiRoot: UIRootFactory) {\n return this.uiRootSlot.register(uiRoot);\n }\n\n registerRenderHooks<T, Y>(plugins: RenderPlugins<T, Y>) {\n return this.renderPluginsSlot.register(plugins);\n }\n\n private getLifecyclePlugins() {\n const lifecyclePlugins = this.renderPluginsSlot.toArray();\n // react-router should register its plugin, when we can reverse it's dependency to depend on Ui\n lifecyclePlugins.unshift([ReactRouterAspect.id, this.router.renderPlugin]);\n\n return lifecyclePlugins;\n }\n\n private getRoot(rootExtension: string) {\n return this.uiRootSlot.get(rootExtension);\n }\n\n static slots = [Slot.withType<UIRootFactory>(), Slot.withType<ReactNode>(), Slot.withType<RenderPlugins>()];\n\n static dependencies = [GraphqlAspect, ReactRouterAspect];\n\n static runtime = UIRuntime;\n\n static async provider(\n [GraphqlUi, router]: [GraphqlUI, ReactRouterUI],\n config,\n [uiRootSlot, hudSlot, renderLifecycleSlot]: [UIRootRegistry, HudSlot, RenderPluginsSlot]\n ) {\n const uiUi = new UiUI(router, uiRootSlot, hudSlot, renderLifecycleSlot);\n\n uiUi.registerRenderHooks(GraphqlUi.renderPlugins);\n\n return uiUi;\n }\n}\n\nUIAspect.addRuntime(UiUI);\n"],"mappings":"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"}
|
package/dist/webpack/html.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["html","title","withDevTools"],"sources":["html.ts"],"sourcesContent":["/** fallback html template for the main UI, in case ssr is not active */\nexport function html(title: string, withDevTools?: boolean) {\n return () => `\n <!DOCTYPE html>\n <html lang=\"en\">\n <head>\n <meta charset=\"utf-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n <title>${title}</title>\n <script>\n // Allow to use react dev-tools inside the examples\n ${\n withDevTools\n ? ''\n : 'try { window.__REACT_DEVTOOLS_GLOBAL_HOOK__ = window.parent.__REACT_DEVTOOLS_GLOBAL_HOOK__; } catch {}'\n }\n </script>\n </head>\n <body>\n <div id=\"root\"></div>\n </body>\n </html> \n `;\n}\n"],"mappings":";;;;;;;AAAA;AACO,SAASA,IAAT,CAAcC,KAAd,EAA6BC,YAA7B,EAAqD;EAC1D,OAAO,MAAO;AAChB;AACA;AACA;AACA;AACA;AACA,eAAeD,KAAM;AACrB;AACA;AACA,QACQC,YAAY,GACR,EADQ,GAER,wGACL;AACP;AACA;AACA;AACA;AACA;AACA;AACA,GApBE;AAqBD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["postCssConfig","ident","plugins","require","resolve","autoprefixer","flexbox","stage"],"sources":["postcss.config.ts"],"sourcesContent":["// import postcssFlexbugsFixes from 'postcss-flexbugs-fixes';\n\nexport const postCssConfig = {\n // Necessary for external CSS imports to work\n // https://github.com/facebook/create-react-app/issues/2677\n ident: 'postcss',\n plugins: [\n // eslint-disable-next-line global-require\n require.resolve('postcss-flexbugs-fixes'),\n // eslint-disable-next-line global-require\n require('postcss-preset-env')({\n autoprefixer: {\n flexbox: 'no-2009',\n },\n stage: 3,\n }),\n // Adds PostCSS Normalize as the reset css with default options,\n // so that it honors browserslist config in package.json\n // which in turn let's users customize the target behavior as per their needs.\n require.resolve('postcss-normalize'),\n ],\n};\n"],"mappings":";;;;;;AAAA;AAEO,MAAMA,aAAa,GAAG;EAC3B;EACA;EACAC,KAAK,EAAE,SAHoB;EAI3BC,OAAO,EAAE,CACP;EACAC,OAAO,CAACC,OAAR,CAAgB,wBAAhB,CAFO,EAGP;EACAD,OAAO,CAAC,oBAAD,CAAP,CAA8B;IAC5BE,YAAY,EAAE;MACZC,OAAO,EAAE;IADG,CADc;IAI5BC,KAAK,EAAE;EAJqB,CAA9B,CAJO,EAUP;EACA;EACA;EACAJ,OAAO,CAACC,OAAR,CAAgB,mBAAhB,CAbO;AAJkB,CAAtB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack.base.config.ts"],"names":["baseStyleLoadersOptions","injectingLoader","MiniCssExtractPlugin","loader","cssLoaderPath","require","resolve","postCssLoaderPath","postCssConfig","moduleFileExtensions","shouldUseSourceMap","process","env","GENERATE_SOURCEMAP","imageInlineSizeLimit","parseInt","IMAGE_INLINE_SIZE_LIMIT","isEnvProduction","createWebpackConfig","workspaceDir","entryFiles","publicDir","isEnvProductionProfile","argv","includes","stats","children","errorDetails","mode","entry","main","output","path","join","filename","chunkFilename","extensions","map","ext","alias","react","fallback","module","dgram","dns","fs","stream","http2","net","tls","child_process","strictExportPresence","rules","test","fullySpecified","oneOf","stylesRegexps","cssNoModulesRegex","use","cssLoaderOpts","importLoaders","sourceMap","sideEffects","type","parser","dataUrlCondition","maxSize","options","babelrc","configFile","customize","cacheDirectory","cacheCompression","compact","cssModuleRegex","modules","getLocalIdent","getCSSModuleLocalIdent","sassNoModuleRegex","preProcessOptions","resolveUrlLoaderPath","preProcessorPath","sassModuleRegex","lessNoModuleRegex","lessModuleRegex","exclude","plugins","WebpackManifestPlugin","fileName","generate","seed","files","entrypoints","manifestFiles","reduce","manifest","file","name","entrypointFiles","filter","endsWith","webpack","IgnorePlugin","resourceRegExp","contextRegExp","WorkboxWebpackPlugin","GenerateSW","clientsClaim","maximumFileSizeToCacheInBytes","navigateFallback","navigateFallbackDenylist","RegExp","Boolean","performance"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;;;;;AAEA,MAAMA,uBAAuB,GAAG;AAC9BC,EAAAA,eAAe,EAAEC,gCAAqBC,MADR;AAE9BC,EAAAA,aAAa,EAAEC,OAAO,CAACC,OAAR,CAAgB,YAAhB,CAFe;AAG9BC,EAAAA,iBAAiB,EAAEF,OAAO,CAACC,OAAR,CAAgB,gBAAhB,CAHW;AAI9BE,EAAAA,aAAa,EAAbA;AAJ8B,CAAhC;AAOA,MAAMC,oBAAoB,GAAG,CAC3B,SAD2B,EAE3B,KAF2B,EAG3B,QAH2B,EAI3B,IAJ2B,EAK3B,QAL2B,EAM3B,IAN2B,EAO3B,SAP2B,EAQ3B,KAR2B,EAS3B,MAT2B,EAU3B,SAV2B,EAW3B,KAX2B,CAA7B,C,CAcA;;AACA,MAAMC,kBAAkB,GAAGC,OAAO,CAACC,GAAR,CAAYC,kBAAZ,KAAmC,OAA9D;AAEA,MAAMC,oBAAoB,GAAGC,QAAQ,CAACJ,OAAO,CAACC,GAAR,CAAYI,uBAAZ,IAAuC,OAAxC,CAArC;AAEA,MAAMC,eAAe,GAAG,IAAxB,C,CAEA;AACA;AACA;;AACe,SAASC,mBAAT,CACbC,YADa,EAEbC,UAFa,EAGbC,SAAS,GAAG,QAHC,EAIE;AACf;AACA;AACA,QAAMC,sBAAsB,GAAGX,OAAO,CAACY,IAAR,CAAaC,QAAb,CAAsB,WAAtB,CAA/B,CAHe,CAKf;AACA;AACA;AACA;AACA;;AAEA,SAAO;AACLC,IAAAA,KAAK,EAAE;AACLC,MAAAA,QAAQ,EAAE,IADL;AAELC,MAAAA,YAAY,EAAE;AAFT,KADF;AAKLC,IAAAA,IAAI,EAAE,YALD;AAMLC,IAAAA,KAAK,EAAE;AACLC,MAAAA,IAAI,EAAEV;AADD,KANF;AAULW,IAAAA,MAAM,EAAE;AACN;AACAC,MAAAA,IAAI,EAAEA,gBAAKC,IAAL,CAAUd,YAAV,EAAwBE,SAAxB,CAFA;AAEoC;AAE1Ca,MAAAA,QAAQ,EAAE,qCAJJ;AAKN;AACA;AACA;AACAC,MAAAA,aAAa,EAAE,2CART,CASN;AACA;AACA;AACA;;AAZM,KAVH;AAyBL7B,IAAAA,OAAO,EAAE;AACP;AACA;AACA;AACA;AACA;AACA;AACA8B,MAAAA,UAAU,EAAE3B,oBAAoB,CAAC4B,GAArB,CAA0BC,GAAD,IAAU,IAAGA,GAAI,EAA1C,CAPL;AASPC,MAAAA,KAAK;AACH;AACAC,QAAAA,KAAK,EAAEnC,OAAO,CAACC,OAAR,CAAgB,OAAhB,CAFJ;AAGH,4BAAoBD,OAAO,CAACC,OAAR,CAAgB,kBAAhB,CAHjB;AAIH,qBAAaD,OAAO,CAACC,OAAR,CAAgB,WAAhB;AAJV,SAMCgB,sBAAsB,IAAI;AAC5B,sBAAc,qBADc;AAE5B,6BAAqB;AAFO,OAN3B,CATE;AAoBPmB,MAAAA,QAAQ,EAAE;AACRC,QAAAA,MAAM,EAAE,KADA;AAERV,QAAAA,IAAI,EAAE3B,OAAO,CAACC,OAAR,CAAgB,iBAAhB,CAFE;AAGRqC,QAAAA,KAAK,EAAE,KAHC;AAIRC,QAAAA,GAAG,EAAE,KAJG;AAKRC,QAAAA,EAAE,EAAE,KALI;AAMRC,QAAAA,MAAM,EAAE,KANA;AAORC,QAAAA,KAAK,EAAE,KAPC;AAQRC,QAAAA,GAAG,EAAE,KARG;AASRC,QAAAA,GAAG,EAAE,KATG;AAURC,QAAAA,aAAa,EAAE;AAVP;AApBH,KAzBJ;AA0DLR,IAAAA,MAAM,EAAE;AACNS,MAAAA,oBAAoB,EAAE,IADhB;AAENC,MAAAA,KAAK,EAAE,CACL;AACEC,QAAAA,IAAI,EAAE,QADR;AAEE/C,QAAAA,OAAO,EAAE;AACPgD,UAAAA,cAAc,EAAE;AADT;AAFX,OADK,EAOL;AACA;AACA;AACE;AACA;AACA;AACAC,QAAAA,KAAK,EAAE,CACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACEF,UAAAA,IAAI,EAAEG,aAAa,GAACC,iBADtB;AAEEC,UAAAA,GAAG,EAAE,6CACH,qBAAM,EAAN,EAAU1D,uBAAV,EAAmC;AACjC2D,YAAAA,aAAa,EAAE;AACbC,cAAAA,aAAa,EAAE,CADF;AAEbC,cAAAA,SAAS,EAAE5C,eAAe,IAAIP;AAFjB;AADkB,WAAnC,CADG,CAFP;AAUE;AACA;AACA;AACA;AACAoD,UAAAA,WAAW,EAAE;AAdf,SARK,EAwBL;AACA;AACA;AACA;AACET,UAAAA,IAAI,EAAE,CAAC,QAAD,EAAW,QAAX,EAAqB,UAArB,EAAiC,QAAjC,EAA2C,QAA3C,CADR;AAEEU,UAAAA,IAAI,EAAE,OAFR;AAGEC,UAAAA,MAAM,EAAE;AACNC,YAAAA,gBAAgB,EAAE;AAChBC,cAAAA,OAAO,EAAEpD;AADO;AADZ;AAHV,SA3BK,EAoCL;AACA;AACA;AACEuC,UAAAA,IAAI,EAAE,wBADR;AAEElD,UAAAA,MAAM,EAAEE,OAAO,CAACC,OAAR,CAAgB,cAAhB,CAFV;AAGE6D,UAAAA,OAAO,EAAE;AACPC,YAAAA,OAAO,EAAE,KADF;AAEPC,YAAAA,UAAU,EAAE,KAFL;AAGPC,YAAAA,SAAS,EAAEjE,OAAO,CAACC,OAAR,CAAgB,0CAAhB,CAHJ;AAIP;AACA;AACA;AACAiE,YAAAA,cAAc,EAAE,IAPT;AAQP;AACAC,YAAAA,gBAAgB,EAAE,KATX;AAUPC,YAAAA,OAAO,EAAExD;AAVF;AAHX,SAtCK,EAsDL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACEoC,UAAAA,IAAI,EAAEG,aAAa,GAACkB,cADtB;AAEEhB,UAAAA,GAAG,EAAE,6CACH,qBAAM,EAAN,EAAU1D,uBAAV,EAAmC;AACjC2D,YAAAA,aAAa,EAAE;AACbC,cAAAA,aAAa,EAAE,CADF;AAEbC,cAAAA,SAAS,EAAE5C,eAAe,IAAIP,kBAFjB;AAGbiE,cAAAA,OAAO,EAAE;AACPC,gBAAAA,aAAa,EAAEC;AADR;AAHI,aADkB;AAQjCnE,YAAAA,kBAAkB,EAAEO,eAAe,IAAIP;AARN,WAAnC,CADG;AAFP,SAhFK,EA+FL;AACA;AACA;AACA;AACE2C,UAAAA,IAAI,EAAEG,aAAa,GAACsB,iBADtB;AAEEpB,UAAAA,GAAG,EAAE,6CACH,qBAAM,EAAN,EAAU1D,uBAAV,EAAmC;AACjC2D,YAAAA,aAAa,EAAE;AACbC,cAAAA,aAAa,EAAE,CADF;AAEbC,cAAAA,SAAS,EAAE5C,eAAe,IAAIP;AAFjB,aADkB;AAKjCA,YAAAA,kBAAkB,EAAEO,eAAe,IAAIP,kBALN;AAMjCqE,YAAAA,iBAAiB,EAAE;AACjBC,cAAAA,oBAAoB,EAAE3E,OAAO,CAACC,OAAR,CAAgB,oBAAhB,CADL;AAEjB2E,cAAAA,gBAAgB,EAAE5E,OAAO,CAACC,OAAR,CAAgB,aAAhB;AAFD;AANc,WAAnC,CADG,CAFP;AAeE;AACA;AACA;AACA;AACAwD,UAAAA,WAAW,EAAE;AAnBf,SAlGK,EAuHL;AACA;AACA;AACET,UAAAA,IAAI,EAAEG,aAAa,GAAC0B,eADtB;AAEExB,UAAAA,GAAG,EAAE,6CACH,qBAAM,EAAN,EAAU1D,uBAAV,EAAmC;AACjC2D,YAAAA,aAAa,EAAE;AACbC,cAAAA,aAAa,EAAE,CADF;AAEbC,cAAAA,SAAS,EAAE5C,eAAe,IAAIP,kBAFjB;AAGbiE,cAAAA,OAAO,EAAE;AACPC,gBAAAA,aAAa,EAAEC;AADR;AAHI,aADkB;AAQjCnE,YAAAA,kBAAkB,EAAEO,eAAe,IAAIP,kBARN;AASjCqE,YAAAA,iBAAiB,EAAE;AACjBC,cAAAA,oBAAoB,EAAE3E,OAAO,CAACC,OAAR,CAAgB,oBAAhB,CADL;AAEjB2E,cAAAA,gBAAgB,EAAE5E,OAAO,CAACC,OAAR,CAAgB,aAAhB;AAFD;AATc,WAAnC,CADG;AAFP,SAzHK,EA4IL;AACE+C,UAAAA,IAAI,EAAEG,aAAa,GAAC2B,iBADtB;AAEEzB,UAAAA,GAAG,EAAE,6CACH,qBAAM,EAAN,EAAU1D,uBAAV,EAAmC;AACjC2D,YAAAA,aAAa,EAAE;AACbC,cAAAA,aAAa,EAAE,CADF;AAEbC,cAAAA,SAAS,EAAE5C,eAAe,IAAIP;AAFjB,aADkB;AAKjCA,YAAAA,kBAAkB,EAAEO,eAAe,IAAIP,kBALN;AAMjCqE,YAAAA,iBAAiB,EAAE;AACjBC,cAAAA,oBAAoB,EAAE3E,OAAO,CAACC,OAAR,CAAgB,oBAAhB,CADL;AAEjB2E,cAAAA,gBAAgB,EAAE5E,OAAO,CAACC,OAAR,CAAgB,aAAhB;AAFD;AANc,WAAnC,CADG,CAFP;AAeE;AACA;AACA;AACA;AACAwD,UAAAA,WAAW,EAAE;AAnBf,SA5IK,EAiKL;AACET,UAAAA,IAAI,EAAEG,aAAa,GAAC4B,eADtB;AAEE1B,UAAAA,GAAG,EAAE,6CACH,qBAAM,EAAN,EAAU1D,uBAAV,EAAmC;AACjC2D,YAAAA,aAAa,EAAE;AACbC,cAAAA,aAAa,EAAE,CADF;AAEbC,cAAAA,SAAS,EAAE5C,eAAe,IAAIP,kBAFjB;AAGbiE,cAAAA,OAAO,EAAE;AACPC,gBAAAA,aAAa,EAAEC;AADR;AAHI,aADkB;AAQjCnE,YAAAA,kBAAkB,EAAEO,eAAe,IAAIP,kBARN;AASjCqE,YAAAA,iBAAiB,EAAE;AACjBC,cAAAA,oBAAoB,EAAE3E,OAAO,CAACC,OAAR,CAAgB,oBAAhB,CADL;AAEjB2E,cAAAA,gBAAgB,EAAE5E,OAAO,CAACC,OAAR,CAAgB,aAAhB;AAFD;AATc,WAAnC,CADG;AAFP,SAjKK,EAoLL;AACA;AACA;AACA;AACA;AACA;AACE;AACA;AACA;AACA;AACA+E,UAAAA,OAAO,EAAE,CAAC,wBAAD,EAA2B,SAA3B,EAAsC,SAAtC,EAAiD,QAAjD,CALX;AAMEtB,UAAAA,IAAI,EAAE;AANR,SAzLK,CAiML;AACA;AAlMK;AAJT,OATK;AAFD,KA1DH;AAgRLuB,IAAAA,OAAO,EAAE,CACP,KAAIpF,+BAAJ,EAAyB;AACvB;AACA;AACAgC,MAAAA,QAAQ,EAAE,uCAHa;AAIvBC,MAAAA,aAAa,EAAE;AAJQ,KAAzB,CADO,EAOP;AACA;AACA;AACA;AACA;AACA,SAAIoD,8CAAJ,EAA0B;AACxBC,MAAAA,QAAQ,EAAE,qBADc;AAExBC,MAAAA,QAAQ,EAAE,CAACC,IAAD,EAAOC,KAAP,EAAcC,WAAd,KAA8B;AACtC,cAAMC,aAAa,GAAGF,KAAK,CAACG,MAAN,CAAa,CAACC,QAAD,EAAWC,IAAX,KAAoB;AACrDD,UAAAA,QAAQ,CAACC,IAAI,CAACC,IAAN,CAAR,GAAsBD,IAAI,CAAChE,IAA3B;AACA,iBAAO+D,QAAP;AACD,SAHqB,EAGnBL,IAHmB,CAAtB;AAIA,cAAMQ,eAAe,GAAGN,WAAW,CAAC9D,IAAZ,CAAiBqE,MAAjB,CAAyBX,QAAD,IAAc,CAACA,QAAQ,CAACY,QAAT,CAAkB,MAAlB,CAAvC,CAAxB,CALsC,CAOtC;;AACA,eAAO;AACLT,UAAAA,KAAK,EAAEE,aADF;AAELD,UAAAA,WAAW,EAAEM;AAFR,SAAP;AAID;AAduB,KAA1B,CAZO,EA4BP;AACA;AACA;AACA;AACA;AACA,SAAIG,mBAAQC,YAAZ,EAAyB;AACvBC,MAAAA,cAAc,EAAE,cADO;AAEvBC,MAAAA,aAAa,EAAE;AAFQ,KAAzB,CAjCO,EAqCP;AACA;AACAvF,IAAAA,eAAe,IACb,KAAIwF,gCAAqBC,UAAzB,EAAoC;AAClCC,MAAAA,YAAY,EAAE,IADoB;AAElCC,MAAAA,6BAA6B,EAAE,OAFG;AAGlCvB,MAAAA,OAAO,EAAE,CAAC,QAAD,EAAW,uBAAX,CAHyB;AAIlC;AACAwB,MAAAA,gBAAgB,EAAE,mBALgB;AAMlCC,MAAAA,wBAAwB,EAAE,CACxB;AACA,UAAIC,MAAJ,CAAW,KAAX,CAFwB,EAGxB;AACA;AACA;AACA;AACA,UAAIA,MAAJ,CAAW,kBAAX,CAPwB;AANQ,KAApC,CAxCK,EAwDPZ,MAxDO,CAwDAa,OAxDA,CAhRJ;AAyUL;AACA;AACA;AACA;AACAC,IAAAA,WAAW,EAAE;AA7UR,GAAP;AA+UD","sourcesContent":["import { merge } from 'lodash';\nimport webpack, { Configuration } from 'webpack';\nimport MiniCssExtractPlugin from 'mini-css-extract-plugin';\nimport { WebpackManifestPlugin } from 'webpack-manifest-plugin';\nimport WorkboxWebpackPlugin from 'workbox-webpack-plugin';\nimport getCSSModuleLocalIdent from 'react-dev-utils/getCSSModuleLocalIdent';\nimport path from 'path';\nimport * as stylesRegexps from '@teambit/webpack.modules.style-regexps';\nimport { generateStyleLoaders } from '@teambit/webpack.modules.generate-style-loaders';\nimport { postCssConfig } from './postcss.config';\n\nconst baseStyleLoadersOptions = {\n injectingLoader: MiniCssExtractPlugin.loader,\n cssLoaderPath: require.resolve('css-loader'),\n postCssLoaderPath: require.resolve('postcss-loader'),\n postCssConfig,\n};\n\nconst moduleFileExtensions = [\n 'web.mjs',\n 'mjs',\n 'web.js',\n 'js',\n 'web.ts',\n 'ts',\n 'web.tsx',\n 'tsx',\n 'json',\n 'web.jsx',\n 'jsx',\n];\n\n// Source maps are resource heavy and can cause out of memory issue for large source files.\nconst shouldUseSourceMap = process.env.GENERATE_SOURCEMAP !== 'false';\n\nconst imageInlineSizeLimit = parseInt(process.env.IMAGE_INLINE_SIZE_LIMIT || '10000');\n\nconst isEnvProduction = true;\n\n// This is the production and development configuration.\n// It is focused on developer experience, fast rebuilds, and a minimal bundle.\n// eslint-disable-next-line complexity\nexport default function createWebpackConfig(\n workspaceDir: string,\n entryFiles: string[],\n publicDir = 'public'\n): Configuration {\n // Variable used for enabling profiling in Production\n // passed into alias object. Uses a flag if passed into the build command\n const isEnvProductionProfile = process.argv.includes('--profile');\n\n // We will provide `paths.publicUrlOrPath` to our app\n // as %PUBLIC_URL% in `index.html` and `process.env.PUBLIC_URL` in JavaScript.\n // Omit trailing slash as %PUBLIC_URL%/xyz looks better than %PUBLIC_URL%xyz.\n // Get environment variables to inject into our app.\n // const env = getClientEnvironment(publicUrlOrPath.slice(0, -1));\n\n return {\n stats: {\n children: true,\n errorDetails: true,\n },\n mode: 'production',\n entry: {\n main: entryFiles,\n },\n\n output: {\n // The build folder.\n path: path.join(workspaceDir, publicDir), // default value\n\n filename: 'static/js/[name].[contenthash:8].js',\n // TODO: remove this when upgrading to webpack 5\n // futureEmitAssets: true,\n // There are also additional JS chunk files if you use code splitting.\n chunkFilename: 'static/js/[name].[contenthash:8].chunk.js',\n // this defaults to 'window', but by setting it to 'this' then\n // module chunks which are built will work in web workers as well.\n // Commented out to use the default (self) as according to tobias with webpack5 self is working with workers as well\n // globalObject: 'this',\n },\n\n resolve: {\n // These are the reasonable defaults supported by the Node ecosystem.\n // We also include JSX as a common component filename extension to support\n // some tools, although we do not recommend using it, see:\n // https://github.com/facebook/create-react-app/issues/290\n // `web` extension prefixes have been added for better support\n // for React Native Web.\n extensions: moduleFileExtensions.map((ext) => `.${ext}`),\n\n alias: {\n // TODO: @uri please remember to remove after publishing evangelist and base-ui\n react: require.resolve('react'),\n 'react-dom/server': require.resolve('react-dom/server'),\n 'react-dom': require.resolve('react-dom'),\n // Allows for better profiling with ReactDevTools\n ...(isEnvProductionProfile && {\n 'react-dom$': 'react-dom/profiling',\n 'scheduler/tracing': 'scheduler/tracing-profiling',\n }),\n },\n fallback: {\n module: false,\n path: require.resolve('path-browserify'),\n dgram: false,\n dns: false,\n fs: false,\n stream: false,\n http2: false,\n net: false,\n tls: false,\n child_process: false,\n },\n },\n module: {\n strictExportPresence: true,\n rules: [\n {\n test: /\\.m?js/,\n resolve: {\n fullySpecified: false,\n },\n },\n // Disable require.ensure as it's not a standard language feature.\n // { parser: { requireEnsure: false } },\n {\n // \"oneOf\" will traverse all following loaders until one will\n // match the requirements. When no loader matches it will fall\n // back to the \"file\" loader at the end of the loader list.\n oneOf: [\n // \"postcss\" loader applies autoprefixer to our CSS.\n // \"css\" loader resolves paths in CSS and adds assets as dependencies.\n // \"style\" loader turns CSS into JS modules that inject <style> tags.\n // In production, we use MiniCSSExtractPlugin to extract that CSS\n // to a file, but in development \"style\" loader enables hot editing\n // of CSS.\n // By default we support CSS Modules with the extension .module.css\n {\n test: stylesRegexps.cssNoModulesRegex,\n use: generateStyleLoaders(\n merge({}, baseStyleLoadersOptions, {\n cssLoaderOpts: {\n importLoaders: 1,\n sourceMap: isEnvProduction || shouldUseSourceMap,\n },\n })\n ),\n // Don't consider CSS imports dead code even if the\n // containing package claims to have no side effects.\n // Remove this when webpack adds a warning or an error for this.\n // See https://github.com/webpack/webpack/issues/6571\n sideEffects: true,\n },\n // \"url\" loader works like \"file\" loader except that it embeds assets\n // smaller than specified limit in bytes as data URLs to avoid requests.\n // A missing `test` is equivalent to a match.\n {\n test: [/\\.bmp$/, /\\.gif$/, /\\.jpe?g$/, /\\.png$/, /\\.svg$/],\n type: 'asset',\n parser: {\n dataUrlCondition: {\n maxSize: imageInlineSizeLimit,\n },\n },\n },\n // Process application JS with Babel.\n // The preset includes JSX, Flow, TypeScript, and some ESnext features.\n {\n test: /\\.(js|mjs|jsx|ts|tsx)$/,\n loader: require.resolve('babel-loader'),\n options: {\n babelrc: false,\n configFile: false,\n customize: require.resolve('babel-preset-react-app/webpack-overrides'),\n // This is a feature of `babel-loader` for webpack (not Babel itself).\n // It enables caching results in ./node_modules/.cache/babel-loader/\n // directory for faster rebuilds.\n cacheDirectory: true,\n // See #6846 for context on why cacheCompression is disabled\n cacheCompression: false,\n compact: isEnvProduction,\n },\n },\n // Process any JS outside of the app with Babel.\n // Unlike the application JS, we only compile the standard ES features.\n // Probably not needed in our use case\n // {\n // test: /\\.(js|mjs)$/,\n // exclude: /@babel(?:\\/|\\\\{1,2})runtime/,\n // loader: require.resolve('babel-loader'),\n // options: {\n // babelrc: false,\n // configFile: false,\n // compact: false,\n // presets: [[require.resolve('babel-preset-react-app/dependencies'), { helpers: true }]],\n // cacheDirectory: true,\n // // See #6846 for context on why cacheCompression is disabled\n // cacheCompression: false,\n\n // // Babel sourcemaps are needed for debugging into node_modules\n // // code. Without the options below, debuggers like VSCode\n // // show incorrect code and set breakpoints on the wrong lines.\n // sourceMaps: shouldUseSourceMap,\n // inputSourceMap: shouldUseSourceMap,\n // },\n // },\n\n // Adds support for CSS Modules (https://github.com/css-modules/css-modules)\n // using the extension .module.css\n {\n test: stylesRegexps.cssModuleRegex,\n use: generateStyleLoaders(\n merge({}, baseStyleLoadersOptions, {\n cssLoaderOpts: {\n importLoaders: 1,\n sourceMap: isEnvProduction || shouldUseSourceMap,\n modules: {\n getLocalIdent: getCSSModuleLocalIdent,\n },\n },\n shouldUseSourceMap: isEnvProduction || shouldUseSourceMap,\n })\n ),\n },\n // Opt-in support for SASS (using .scss or .sass extensions).\n // By default we support SASS Modules with the\n // extensions .module.scss or .module.sass\n {\n test: stylesRegexps.sassNoModuleRegex,\n use: generateStyleLoaders(\n merge({}, baseStyleLoadersOptions, {\n cssLoaderOpts: {\n importLoaders: 3,\n sourceMap: isEnvProduction || shouldUseSourceMap,\n },\n shouldUseSourceMap: isEnvProduction || shouldUseSourceMap,\n preProcessOptions: {\n resolveUrlLoaderPath: require.resolve('resolve-url-loader'),\n preProcessorPath: require.resolve('sass-loader'),\n },\n })\n ),\n // Don't consider CSS imports dead code even if the\n // containing package claims to have no side effects.\n // Remove this when webpack adds a warning or an error for this.\n // See https://github.com/webpack/webpack/issues/6571\n sideEffects: true,\n },\n // Adds support for CSS Modules, but using SASS\n // using the extension .module.scss or .module.sass\n {\n test: stylesRegexps.sassModuleRegex,\n use: generateStyleLoaders(\n merge({}, baseStyleLoadersOptions, {\n cssLoaderOpts: {\n importLoaders: 3,\n sourceMap: isEnvProduction || shouldUseSourceMap,\n modules: {\n getLocalIdent: getCSSModuleLocalIdent,\n },\n },\n shouldUseSourceMap: isEnvProduction || shouldUseSourceMap,\n preProcessOptions: {\n resolveUrlLoaderPath: require.resolve('resolve-url-loader'),\n preProcessorPath: require.resolve('sass-loader'),\n },\n })\n ),\n },\n {\n test: stylesRegexps.lessNoModuleRegex,\n use: generateStyleLoaders(\n merge({}, baseStyleLoadersOptions, {\n cssLoaderOpts: {\n importLoaders: 1,\n sourceMap: isEnvProduction || shouldUseSourceMap,\n },\n shouldUseSourceMap: isEnvProduction || shouldUseSourceMap,\n preProcessOptions: {\n resolveUrlLoaderPath: require.resolve('resolve-url-loader'),\n preProcessorPath: require.resolve('less-loader'),\n },\n })\n ),\n // Don't consider CSS imports dead code even if the\n // containing package claims to have no side effects.\n // Remove this when webpack adds a warning or an error for this.\n // See https://github.com/webpack/webpack/issues/6571\n sideEffects: true,\n },\n {\n test: stylesRegexps.lessModuleRegex,\n use: generateStyleLoaders(\n merge({}, baseStyleLoadersOptions, {\n cssLoaderOpts: {\n importLoaders: 1,\n sourceMap: isEnvProduction || shouldUseSourceMap,\n modules: {\n getLocalIdent: getCSSModuleLocalIdent,\n },\n },\n shouldUseSourceMap: isEnvProduction || shouldUseSourceMap,\n preProcessOptions: {\n resolveUrlLoaderPath: require.resolve('resolve-url-loader'),\n preProcessorPath: require.resolve('less-loader'),\n },\n })\n ),\n },\n // \"file\" loader makes sure those assets get served by WebpackDevServer.\n // When you `import` an asset, you get its (virtual) filename.\n // In production, they would get copied to the `build` folder.\n // This loader doesn't use a \"test\" so it will catch all modules\n // that fall through the other loaders.\n {\n // Exclude `js` files to keep \"css\" loader working as it injects\n // its runtime that would otherwise be processed through \"file\" loader.\n // Also exclude `html` and `json` extensions so they get processed\n // by webpacks internal loaders.\n exclude: [/\\.(js|mjs|jsx|ts|tsx)$/, /\\.html$/, /\\.json$/, /\\.css$/],\n type: 'asset/resource',\n },\n // ** STOP ** Are you adding a new loader?\n // Make sure to add the new loader(s) before the \"file\" loader.\n ],\n },\n ],\n },\n plugins: [\n new MiniCssExtractPlugin({\n // Options similar to the same options in webpackOptions.output\n // both options are optional\n filename: 'static/css/[name].[contenthash:8].css',\n chunkFilename: 'static/css/[name].[contenthash:8].chunk.css',\n }),\n // Generate an asset manifest file with the following content:\n // - \"files\" key: Mapping of all asset filenames to their corresponding\n // output file so that tools can pick it up without having to parse\n // `index.html`\n // can be used to reconstruct the HTML if necessary\n new WebpackManifestPlugin({\n fileName: 'asset-manifest.json',\n generate: (seed, files, entrypoints) => {\n const manifestFiles = files.reduce((manifest, file) => {\n manifest[file.name] = file.path;\n return manifest;\n }, seed);\n const entrypointFiles = entrypoints.main.filter((fileName) => !fileName.endsWith('.map'));\n\n // @ts-ignore - https://github.com/shellscape/webpack-manifest-plugin/issues/276\n return {\n files: manifestFiles,\n entrypoints: entrypointFiles,\n } as Record<string, string>;\n },\n }),\n // Moment.js is an extremely popular library that bundles large locale files\n // by default due to how webpack interprets its code. This is a practical\n // solution that requires the user to opt into importing specific locales.\n // https://github.com/jmblog/how-to-optimize-momentjs-with-webpack\n // You can remove this if you don't use Moment.js:\n new webpack.IgnorePlugin({\n resourceRegExp: /^\\.\\/locale$/,\n contextRegExp: /moment$/,\n }),\n // Generate a service worker script that will precache, and keep up to date,\n // the HTML & assets that are part of the webpack build.\n isEnvProduction &&\n new WorkboxWebpackPlugin.GenerateSW({\n clientsClaim: true,\n maximumFileSizeToCacheInBytes: 5000000,\n exclude: [/\\.map$/, /asset-manifest\\.json$/],\n // importWorkboxFrom: 'cdn',\n navigateFallback: 'public/index.html',\n navigateFallbackDenylist: [\n // Exclude URLs starting with /_, as they're likely an API call\n new RegExp('^/_'),\n // Exclude any URLs whose last part seems to be a file extension\n // as they're likely a resource and not a SPA route.\n // URLs containing a \"?\" character won't be blacklisted as they're likely\n // a route with query params (e.g. auth callbacks).\n new RegExp('/[^/?]+\\\\.[^/]+$'),\n ],\n }),\n ].filter(Boolean),\n // Some libraries import Node modules but don't use them in the browser.\n // Tell webpack to provide empty mocks for them so importing them works.\n // Turn off performance processing because we utilize\n // our own hints via the FileSizeReporter\n performance: false,\n };\n}\n"]}
|
|
1
|
+
{"version":3,"names":["baseStyleLoadersOptions","injectingLoader","MiniCssExtractPlugin","loader","cssLoaderPath","require","resolve","postCssLoaderPath","postCssConfig","moduleFileExtensions","shouldUseSourceMap","process","env","GENERATE_SOURCEMAP","imageInlineSizeLimit","parseInt","IMAGE_INLINE_SIZE_LIMIT","isEnvProduction","createWebpackConfig","workspaceDir","entryFiles","publicDir","isEnvProductionProfile","argv","includes","stats","children","errorDetails","mode","entry","main","output","path","join","filename","chunkFilename","extensions","map","ext","alias","react","fallback","module","dgram","dns","fs","stream","http2","net","tls","child_process","strictExportPresence","rules","test","fullySpecified","oneOf","stylesRegexps","cssNoModulesRegex","use","generateStyleLoaders","merge","cssLoaderOpts","importLoaders","sourceMap","sideEffects","type","parser","dataUrlCondition","maxSize","options","babelrc","configFile","customize","cacheDirectory","cacheCompression","compact","cssModuleRegex","modules","getLocalIdent","getCSSModuleLocalIdent","sassNoModuleRegex","preProcessOptions","resolveUrlLoaderPath","preProcessorPath","sassModuleRegex","lessNoModuleRegex","lessModuleRegex","exclude","plugins","WebpackManifestPlugin","fileName","generate","seed","files","entrypoints","manifestFiles","reduce","manifest","file","name","entrypointFiles","filter","endsWith","webpack","IgnorePlugin","resourceRegExp","contextRegExp","WorkboxWebpackPlugin","GenerateSW","clientsClaim","maximumFileSizeToCacheInBytes","navigateFallback","navigateFallbackDenylist","RegExp","Boolean","performance"],"sources":["webpack.base.config.ts"],"sourcesContent":["import { merge } from 'lodash';\nimport webpack, { Configuration } from 'webpack';\nimport MiniCssExtractPlugin from 'mini-css-extract-plugin';\nimport { WebpackManifestPlugin } from 'webpack-manifest-plugin';\nimport WorkboxWebpackPlugin from 'workbox-webpack-plugin';\nimport getCSSModuleLocalIdent from 'react-dev-utils/getCSSModuleLocalIdent';\nimport path from 'path';\nimport * as stylesRegexps from '@teambit/webpack.modules.style-regexps';\nimport { generateStyleLoaders } from '@teambit/webpack.modules.generate-style-loaders';\nimport { postCssConfig } from './postcss.config';\n\nconst baseStyleLoadersOptions = {\n injectingLoader: MiniCssExtractPlugin.loader,\n cssLoaderPath: require.resolve('css-loader'),\n postCssLoaderPath: require.resolve('postcss-loader'),\n postCssConfig,\n};\n\nconst moduleFileExtensions = [\n 'web.mjs',\n 'mjs',\n 'web.js',\n 'js',\n 'web.ts',\n 'ts',\n 'web.tsx',\n 'tsx',\n 'json',\n 'web.jsx',\n 'jsx',\n];\n\n// Source maps are resource heavy and can cause out of memory issue for large source files.\nconst shouldUseSourceMap = process.env.GENERATE_SOURCEMAP !== 'false';\n\nconst imageInlineSizeLimit = parseInt(process.env.IMAGE_INLINE_SIZE_LIMIT || '10000');\n\nconst isEnvProduction = true;\n\n// This is the production and development configuration.\n// It is focused on developer experience, fast rebuilds, and a minimal bundle.\n// eslint-disable-next-line complexity\nexport default function createWebpackConfig(\n workspaceDir: string,\n entryFiles: string[],\n publicDir = 'public'\n): Configuration {\n // Variable used for enabling profiling in Production\n // passed into alias object. Uses a flag if passed into the build command\n const isEnvProductionProfile = process.argv.includes('--profile');\n\n // We will provide `paths.publicUrlOrPath` to our app\n // as %PUBLIC_URL% in `index.html` and `process.env.PUBLIC_URL` in JavaScript.\n // Omit trailing slash as %PUBLIC_URL%/xyz looks better than %PUBLIC_URL%xyz.\n // Get environment variables to inject into our app.\n // const env = getClientEnvironment(publicUrlOrPath.slice(0, -1));\n\n return {\n stats: {\n children: true,\n errorDetails: true,\n },\n mode: 'production',\n entry: {\n main: entryFiles,\n },\n\n output: {\n // The build folder.\n path: path.join(workspaceDir, publicDir), // default value\n\n filename: 'static/js/[name].[contenthash:8].js',\n // TODO: remove this when upgrading to webpack 5\n // futureEmitAssets: true,\n // There are also additional JS chunk files if you use code splitting.\n chunkFilename: 'static/js/[name].[contenthash:8].chunk.js',\n // this defaults to 'window', but by setting it to 'this' then\n // module chunks which are built will work in web workers as well.\n // Commented out to use the default (self) as according to tobias with webpack5 self is working with workers as well\n // globalObject: 'this',\n },\n\n resolve: {\n // These are the reasonable defaults supported by the Node ecosystem.\n // We also include JSX as a common component filename extension to support\n // some tools, although we do not recommend using it, see:\n // https://github.com/facebook/create-react-app/issues/290\n // `web` extension prefixes have been added for better support\n // for React Native Web.\n extensions: moduleFileExtensions.map((ext) => `.${ext}`),\n\n alias: {\n // TODO: @uri please remember to remove after publishing evangelist and base-ui\n react: require.resolve('react'),\n 'react-dom/server': require.resolve('react-dom/server'),\n 'react-dom': require.resolve('react-dom'),\n // Allows for better profiling with ReactDevTools\n ...(isEnvProductionProfile && {\n 'react-dom$': 'react-dom/profiling',\n 'scheduler/tracing': 'scheduler/tracing-profiling',\n }),\n },\n fallback: {\n module: false,\n path: require.resolve('path-browserify'),\n dgram: false,\n dns: false,\n fs: false,\n stream: false,\n http2: false,\n net: false,\n tls: false,\n child_process: false,\n },\n },\n module: {\n strictExportPresence: true,\n rules: [\n {\n test: /\\.m?js/,\n resolve: {\n fullySpecified: false,\n },\n },\n // Disable require.ensure as it's not a standard language feature.\n // { parser: { requireEnsure: false } },\n {\n // \"oneOf\" will traverse all following loaders until one will\n // match the requirements. When no loader matches it will fall\n // back to the \"file\" loader at the end of the loader list.\n oneOf: [\n // \"postcss\" loader applies autoprefixer to our CSS.\n // \"css\" loader resolves paths in CSS and adds assets as dependencies.\n // \"style\" loader turns CSS into JS modules that inject <style> tags.\n // In production, we use MiniCSSExtractPlugin to extract that CSS\n // to a file, but in development \"style\" loader enables hot editing\n // of CSS.\n // By default we support CSS Modules with the extension .module.css\n {\n test: stylesRegexps.cssNoModulesRegex,\n use: generateStyleLoaders(\n merge({}, baseStyleLoadersOptions, {\n cssLoaderOpts: {\n importLoaders: 1,\n sourceMap: isEnvProduction || shouldUseSourceMap,\n },\n })\n ),\n // Don't consider CSS imports dead code even if the\n // containing package claims to have no side effects.\n // Remove this when webpack adds a warning or an error for this.\n // See https://github.com/webpack/webpack/issues/6571\n sideEffects: true,\n },\n // \"url\" loader works like \"file\" loader except that it embeds assets\n // smaller than specified limit in bytes as data URLs to avoid requests.\n // A missing `test` is equivalent to a match.\n {\n test: [/\\.bmp$/, /\\.gif$/, /\\.jpe?g$/, /\\.png$/, /\\.svg$/],\n type: 'asset',\n parser: {\n dataUrlCondition: {\n maxSize: imageInlineSizeLimit,\n },\n },\n },\n // Process application JS with Babel.\n // The preset includes JSX, Flow, TypeScript, and some ESnext features.\n {\n test: /\\.(js|mjs|jsx|ts|tsx)$/,\n loader: require.resolve('babel-loader'),\n options: {\n babelrc: false,\n configFile: false,\n customize: require.resolve('babel-preset-react-app/webpack-overrides'),\n // This is a feature of `babel-loader` for webpack (not Babel itself).\n // It enables caching results in ./node_modules/.cache/babel-loader/\n // directory for faster rebuilds.\n cacheDirectory: true,\n // See #6846 for context on why cacheCompression is disabled\n cacheCompression: false,\n compact: isEnvProduction,\n },\n },\n // Process any JS outside of the app with Babel.\n // Unlike the application JS, we only compile the standard ES features.\n // Probably not needed in our use case\n // {\n // test: /\\.(js|mjs)$/,\n // exclude: /@babel(?:\\/|\\\\{1,2})runtime/,\n // loader: require.resolve('babel-loader'),\n // options: {\n // babelrc: false,\n // configFile: false,\n // compact: false,\n // presets: [[require.resolve('babel-preset-react-app/dependencies'), { helpers: true }]],\n // cacheDirectory: true,\n // // See #6846 for context on why cacheCompression is disabled\n // cacheCompression: false,\n\n // // Babel sourcemaps are needed for debugging into node_modules\n // // code. Without the options below, debuggers like VSCode\n // // show incorrect code and set breakpoints on the wrong lines.\n // sourceMaps: shouldUseSourceMap,\n // inputSourceMap: shouldUseSourceMap,\n // },\n // },\n\n // Adds support for CSS Modules (https://github.com/css-modules/css-modules)\n // using the extension .module.css\n {\n test: stylesRegexps.cssModuleRegex,\n use: generateStyleLoaders(\n merge({}, baseStyleLoadersOptions, {\n cssLoaderOpts: {\n importLoaders: 1,\n sourceMap: isEnvProduction || shouldUseSourceMap,\n modules: {\n getLocalIdent: getCSSModuleLocalIdent,\n },\n },\n shouldUseSourceMap: isEnvProduction || shouldUseSourceMap,\n })\n ),\n },\n // Opt-in support for SASS (using .scss or .sass extensions).\n // By default we support SASS Modules with the\n // extensions .module.scss or .module.sass\n {\n test: stylesRegexps.sassNoModuleRegex,\n use: generateStyleLoaders(\n merge({}, baseStyleLoadersOptions, {\n cssLoaderOpts: {\n importLoaders: 3,\n sourceMap: isEnvProduction || shouldUseSourceMap,\n },\n shouldUseSourceMap: isEnvProduction || shouldUseSourceMap,\n preProcessOptions: {\n resolveUrlLoaderPath: require.resolve('resolve-url-loader'),\n preProcessorPath: require.resolve('sass-loader'),\n },\n })\n ),\n // Don't consider CSS imports dead code even if the\n // containing package claims to have no side effects.\n // Remove this when webpack adds a warning or an error for this.\n // See https://github.com/webpack/webpack/issues/6571\n sideEffects: true,\n },\n // Adds support for CSS Modules, but using SASS\n // using the extension .module.scss or .module.sass\n {\n test: stylesRegexps.sassModuleRegex,\n use: generateStyleLoaders(\n merge({}, baseStyleLoadersOptions, {\n cssLoaderOpts: {\n importLoaders: 3,\n sourceMap: isEnvProduction || shouldUseSourceMap,\n modules: {\n getLocalIdent: getCSSModuleLocalIdent,\n },\n },\n shouldUseSourceMap: isEnvProduction || shouldUseSourceMap,\n preProcessOptions: {\n resolveUrlLoaderPath: require.resolve('resolve-url-loader'),\n preProcessorPath: require.resolve('sass-loader'),\n },\n })\n ),\n },\n {\n test: stylesRegexps.lessNoModuleRegex,\n use: generateStyleLoaders(\n merge({}, baseStyleLoadersOptions, {\n cssLoaderOpts: {\n importLoaders: 1,\n sourceMap: isEnvProduction || shouldUseSourceMap,\n },\n shouldUseSourceMap: isEnvProduction || shouldUseSourceMap,\n preProcessOptions: {\n resolveUrlLoaderPath: require.resolve('resolve-url-loader'),\n preProcessorPath: require.resolve('less-loader'),\n },\n })\n ),\n // Don't consider CSS imports dead code even if the\n // containing package claims to have no side effects.\n // Remove this when webpack adds a warning or an error for this.\n // See https://github.com/webpack/webpack/issues/6571\n sideEffects: true,\n },\n {\n test: stylesRegexps.lessModuleRegex,\n use: generateStyleLoaders(\n merge({}, baseStyleLoadersOptions, {\n cssLoaderOpts: {\n importLoaders: 1,\n sourceMap: isEnvProduction || shouldUseSourceMap,\n modules: {\n getLocalIdent: getCSSModuleLocalIdent,\n },\n },\n shouldUseSourceMap: isEnvProduction || shouldUseSourceMap,\n preProcessOptions: {\n resolveUrlLoaderPath: require.resolve('resolve-url-loader'),\n preProcessorPath: require.resolve('less-loader'),\n },\n })\n ),\n },\n // \"file\" loader makes sure those assets get served by WebpackDevServer.\n // When you `import` an asset, you get its (virtual) filename.\n // In production, they would get copied to the `build` folder.\n // This loader doesn't use a \"test\" so it will catch all modules\n // that fall through the other loaders.\n {\n // Exclude `js` files to keep \"css\" loader working as it injects\n // its runtime that would otherwise be processed through \"file\" loader.\n // Also exclude `html` and `json` extensions so they get processed\n // by webpacks internal loaders.\n exclude: [/\\.(js|mjs|jsx|ts|tsx)$/, /\\.html$/, /\\.json$/, /\\.css$/],\n type: 'asset/resource',\n },\n // ** STOP ** Are you adding a new loader?\n // Make sure to add the new loader(s) before the \"file\" loader.\n ],\n },\n ],\n },\n plugins: [\n new MiniCssExtractPlugin({\n // Options similar to the same options in webpackOptions.output\n // both options are optional\n filename: 'static/css/[name].[contenthash:8].css',\n chunkFilename: 'static/css/[name].[contenthash:8].chunk.css',\n }),\n // Generate an asset manifest file with the following content:\n // - \"files\" key: Mapping of all asset filenames to their corresponding\n // output file so that tools can pick it up without having to parse\n // `index.html`\n // can be used to reconstruct the HTML if necessary\n new WebpackManifestPlugin({\n fileName: 'asset-manifest.json',\n generate: (seed, files, entrypoints) => {\n const manifestFiles = files.reduce((manifest, file) => {\n manifest[file.name] = file.path;\n return manifest;\n }, seed);\n const entrypointFiles = entrypoints.main.filter((fileName) => !fileName.endsWith('.map'));\n\n // @ts-ignore - https://github.com/shellscape/webpack-manifest-plugin/issues/276\n return {\n files: manifestFiles,\n entrypoints: entrypointFiles,\n } as Record<string, string>;\n },\n }),\n // Moment.js is an extremely popular library that bundles large locale files\n // by default due to how webpack interprets its code. This is a practical\n // solution that requires the user to opt into importing specific locales.\n // https://github.com/jmblog/how-to-optimize-momentjs-with-webpack\n // You can remove this if you don't use Moment.js:\n new webpack.IgnorePlugin({\n resourceRegExp: /^\\.\\/locale$/,\n contextRegExp: /moment$/,\n }),\n // Generate a service worker script that will precache, and keep up to date,\n // the HTML & assets that are part of the webpack build.\n isEnvProduction &&\n new WorkboxWebpackPlugin.GenerateSW({\n clientsClaim: true,\n maximumFileSizeToCacheInBytes: 5000000,\n exclude: [/\\.map$/, /asset-manifest\\.json$/],\n // importWorkboxFrom: 'cdn',\n navigateFallback: 'public/index.html',\n navigateFallbackDenylist: [\n // Exclude URLs starting with /_, as they're likely an API call\n new RegExp('^/_'),\n // Exclude any URLs whose last part seems to be a file extension\n // as they're likely a resource and not a SPA route.\n // URLs containing a \"?\" character won't be blacklisted as they're likely\n // a route with query params (e.g. auth callbacks).\n new RegExp('/[^/?]+\\\\.[^/]+$'),\n ],\n }),\n ].filter(Boolean),\n // Some libraries import Node modules but don't use them in the browser.\n // Tell webpack to provide empty mocks for them so importing them works.\n // Turn off performance processing because we utilize\n // our own hints via the FileSizeReporter\n performance: false,\n };\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["createWebpackConfig","workspaceDir","entryFiles","title","publicDir","baseConfig","createBaseConfig","browserConfig","createBrowserConfig","combined","merge","output","path","resolve","publicPath","optimization","minimize","minimizer","TerserPlugin","terserOptions","parse","ecma","compress","warnings","comparisons","inline","mangle","safari10","comments","ascii_only","CssMinimizerPlugin","minimizerOptions","preset","minifyFontValues","removeQuotes","splitChunks","chunks","name","runtimeChunk","entrypoint","plugins","HtmlWebpackPlugin","inject","templateContent","html","minify","removeComments","collapseWhitespace","removeRedundantAttributes","useShortDoctype","removeEmptyAttributes","removeStyleLinkTypeAttributes","keepClosingSlash","minifyJS","minifyCSS","minifyURLs"],"sources":["webpack.browser.config.ts"],"sourcesContent":["import { Configuration } from 'webpack';\nimport TerserPlugin from 'terser-webpack-plugin';\nimport CssMinimizerPlugin from 'css-minimizer-webpack-plugin';\nimport path from 'path';\nimport HtmlWebpackPlugin from 'html-webpack-plugin';\nimport { merge } from 'webpack-merge';\n\nimport { html } from './html';\nimport createBaseConfig from './webpack.base.config';\n\nexport default function createWebpackConfig(\n workspaceDir: string,\n entryFiles: string[],\n title: string,\n publicDir: string\n): Configuration {\n const baseConfig = createBaseConfig(workspaceDir, entryFiles);\n const browserConfig = createBrowserConfig(workspaceDir, title, publicDir);\n\n const combined = merge(baseConfig, browserConfig);\n\n return combined;\n}\n\nfunction createBrowserConfig(workspaceDir: string, title: string, publicDir: string) {\n const browserConfig: Configuration = {\n // target: 'web', // already default\n\n output: {\n path: path.resolve(workspaceDir, publicDir),\n // webpack uses `publicPath` to determine where the app is being served from.\n // It requires a trailing slash, or the file assets will get an incorrect path.\n // We inferred the \"public path\" (such as / or /my-project) from homepage.\n publicPath: '/',\n },\n\n optimization: {\n minimize: true,\n minimizer: [\n // This is only used in production mode\n new TerserPlugin({\n terserOptions: {\n parse: {\n // We want terser to parse ecma 8 code. However, we don't want it\n // to apply any minification steps that turns valid ecma 5 code\n // into invalid ecma 5 code. This is why the 'compress' and 'output'\n // sections only apply transformations that are ecma 5 safe\n // https://github.com/facebook/create-react-app/pull/4234\n ecma: 8,\n },\n compress: {\n ecma: 5,\n warnings: false,\n // Disabled because of an issue with Uglify breaking seemingly valid code:\n // https://github.com/facebook/create-react-app/issues/2376\n // Pending further investigation:\n // https://github.com/mishoo/UglifyJS2/issues/2011\n comparisons: false,\n // Disabled because of an issue with Terser breaking valid code:\n // https://github.com/facebook/create-react-app/issues/5250\n // Pending further investigation:\n // https://github.com/terser-js/terser/issues/120\n inline: 2,\n },\n mangle: {\n safari10: true,\n },\n output: {\n ecma: 5,\n comments: false,\n // Turned on because emoji and regex is not minified properly using default\n // https://github.com/facebook/create-react-app/issues/2488\n ascii_only: true,\n },\n },\n }),\n new CssMinimizerPlugin({\n minimizerOptions: {\n preset: [\n 'default',\n {\n minifyFontValues: { removeQuotes: false },\n },\n ],\n },\n }),\n ],\n // Automatically split vendor and commons\n // https://twitter.com/wSokra/status/969633336732905474\n // https://medium.com/webpack/webpack-4-code-splitting-chunk-graph-and-the-splitchunks-optimization-be739a861366\n splitChunks: {\n chunks: 'all',\n name: false,\n },\n // Keep the runtime chunk separated to enable long term caching\n // https://twitter.com/wSokra/status/969679223278505985\n // https://github.com/facebook/create-react-app/issues/5358\n runtimeChunk: {\n name: (entrypoint) => `runtime-${entrypoint.name}`,\n },\n },\n\n plugins: [\n new HtmlWebpackPlugin({\n inject: true,\n templateContent: html(title),\n\n minify: {\n removeComments: true,\n collapseWhitespace: true,\n removeRedundantAttributes: true,\n useShortDoctype: true,\n removeEmptyAttributes: true,\n removeStyleLinkTypeAttributes: true,\n keepClosingSlash: true,\n minifyJS: true,\n minifyCSS: true,\n minifyURLs: true,\n },\n }),\n ],\n };\n\n return browserConfig;\n}\n"],"mappings":";;;;;;;;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEe,SAASA,mBAAT,CACbC,YADa,EAEbC,UAFa,EAGbC,KAHa,EAIbC,SAJa,EAKE;EACf,MAAMC,UAAU,GAAG,IAAAC,sBAAA,EAAiBL,YAAjB,EAA+BC,UAA/B,CAAnB;EACA,MAAMK,aAAa,GAAGC,mBAAmB,CAACP,YAAD,EAAeE,KAAf,EAAsBC,SAAtB,CAAzC;EAEA,MAAMK,QAAQ,GAAG,IAAAC,qBAAA,EAAML,UAAN,EAAkBE,aAAlB,CAAjB;EAEA,OAAOE,QAAP;AACD;;AAED,SAASD,mBAAT,CAA6BP,YAA7B,EAAmDE,KAAnD,EAAkEC,SAAlE,EAAqF;EACnF,MAAMG,aAA4B,GAAG;IACnC;IAEAI,MAAM,EAAE;MACNC,IAAI,EAAEA,eAAA,CAAKC,OAAL,CAAaZ,YAAb,EAA2BG,SAA3B,CADA;MAEN;MACA;MACA;MACAU,UAAU,EAAE;IALN,CAH2B;IAWnCC,YAAY,EAAE;MACZC,QAAQ,EAAE,IADE;MAEZC,SAAS,EAAE,CACT;MACA,KAAIC,8BAAJ,EAAiB;QACfC,aAAa,EAAE;UACbC,KAAK,EAAE;YACL;YACA;YACA;YACA;YACA;YACAC,IAAI,EAAE;UAND,CADM;UASbC,QAAQ,EAAE;YACRD,IAAI,EAAE,CADE;YAERE,QAAQ,EAAE,KAFF;YAGR;YACA;YACA;YACA;YACAC,WAAW,EAAE,KAPL;YAQR;YACA;YACA;YACA;YACAC,MAAM,EAAE;UAZA,CATG;UAuBbC,MAAM,EAAE;YACNC,QAAQ,EAAE;UADJ,CAvBK;UA0BbhB,MAAM,EAAE;YACNU,IAAI,EAAE,CADA;YAENO,QAAQ,EAAE,KAFJ;YAGN;YACA;YACAC,UAAU,EAAE;UALN;QA1BK;MADA,CAAjB,CAFS,EAsCT,KAAIC,oCAAJ,EAAuB;QACrBC,gBAAgB,EAAE;UAChBC,MAAM,EAAE,CACN,SADM,EAEN;YACEC,gBAAgB,EAAE;cAAEC,YAAY,EAAE;YAAhB;UADpB,CAFM;QADQ;MADG,CAAvB,CAtCS,CAFC;MAmDZ;MACA;MACA;MACAC,WAAW,EAAE;QACXC,MAAM,EAAE,KADG;QAEXC,IAAI,EAAE;MAFK,CAtDD;MA0DZ;MACA;MACA;MACAC,YAAY,EAAE;QACZD,IAAI,EAAGE,UAAD,IAAiB,WAAUA,UAAU,CAACF,IAAK;MADrC;IA7DF,CAXqB;IA6EnCG,OAAO,EAAE,CACP,KAAIC,4BAAJ,EAAsB;MACpBC,MAAM,EAAE,IADY;MAEpBC,eAAe,EAAE,IAAAC,YAAA,EAAKzC,KAAL,CAFG;MAIpB0C,MAAM,EAAE;QACNC,cAAc,EAAE,IADV;QAENC,kBAAkB,EAAE,IAFd;QAGNC,yBAAyB,EAAE,IAHrB;QAINC,eAAe,EAAE,IAJX;QAKNC,qBAAqB,EAAE,IALjB;QAMNC,6BAA6B,EAAE,IANzB;QAONC,gBAAgB,EAAE,IAPZ;QAQNC,QAAQ,EAAE,IARJ;QASNC,SAAS,EAAE,IATL;QAUNC,UAAU,EAAE;MAVN;IAJY,CAAtB,CADO;EA7E0B,CAArC;EAkGA,OAAOhD,aAAP;AACD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack.dev.config.ts"],"names":["matchNothingRegex","clientHost","process","env","WDS_SOCKET_HOST","clientPath","WDS_SOCKET_PATH","port","WDS_SOCKET_PORT","publicUrlOrPath","NODE_ENV","sep","moduleFileExtensions","devConfig","workspaceDir","entryFiles","title","resolveWorkspacePath","relativePath","path","resolve","host","HOST","mode","snapshot","managedPaths","devtool","entry","main","output","filename","pathinfo","publicPath","chunkFilename","devtoolModuleFilenameTemplate","info","absoluteResourcePath","infrastructureLogging","level","stats","errorDetails","devServer","allowedHosts","static","directory","staticOptions","serveIndex","watch","compress","hot","historyApiFallback","disableDotRule","index","client","webSocketURL","hostname","pathname","onBeforeSetupMiddleware","wds","app","use","onAfterSetupMiddleware","devMiddleware","slice","extensions","map","ext","alias","react","require","fallback","fs","stream","module","unsafeCache","rules","test","fullySpecified","enforce","include","descriptionData","componentId","value","exclude","loader","options","configFile","babelrc","presets","plugins","stylesRegexps","sassModuleRegex","modules","localIdentName","sourceMap","sassNoModuleRegex","lessModuleRegex","lessNoModuleRegex","cssModuleRegex","cssNoModulesRegex","ReactRefreshWebpackPlugin","HtmlWebpackPlugin","inject","templateContent","chunks","ProvidePlugin"],"mappings":"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","sourcesContent":["import { ProvidePlugin } from 'webpack';\nimport * as stylesRegexps from '@teambit/webpack.modules.style-regexps';\nimport { pathNormalizeToLinux } from '@teambit/legacy/dist/utils';\nimport { WebpackConfigWithDevServer } from '@teambit/webpack';\n\nimport HtmlWebpackPlugin from 'html-webpack-plugin';\nimport ReactRefreshWebpackPlugin from '@pmmmwh/react-refresh-webpack-plugin';\nimport errorOverlayMiddleware from 'react-dev-utils/errorOverlayMiddleware';\nimport evalSourceMapMiddleware from 'react-dev-utils/evalSourceMapMiddleware';\nimport noopServiceWorkerMiddleware from 'react-dev-utils/noopServiceWorkerMiddleware';\nimport redirectServedPath from 'react-dev-utils/redirectServedPathMiddleware';\nimport getPublicUrlOrPath from 'react-dev-utils/getPublicUrlOrPath';\nimport path, { sep } from 'path';\nimport { html } from './html';\n\n/*\n * Webpack config for the bit ui\n * i.e. `bit start --dev`,\n */\n\nconst matchNothingRegex = 'a^';\nconst clientHost = process.env.WDS_SOCKET_HOST;\nconst clientPath = process.env.WDS_SOCKET_PATH; // default is '/sockjs-node';\nconst port = process.env.WDS_SOCKET_PORT;\n\n// const reactRefreshRuntimeEntry = require.resolve('react-refresh/runtime');\n// const reactRefreshWebpackPluginRuntimeEntry = require.resolve(\n// '@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils'\n// );\n\nconst publicUrlOrPath = getPublicUrlOrPath(process.env.NODE_ENV === 'development', sep, `${sep}public`);\n\nconst moduleFileExtensions = [\n 'web.mjs',\n 'mjs',\n 'web.js',\n 'js',\n 'web.ts',\n 'ts',\n 'web.tsx',\n 'tsx',\n 'json',\n 'web.jsx',\n 'jsx',\n];\n\nexport function devConfig(workspaceDir, entryFiles, title): WebpackConfigWithDevServer {\n const resolveWorkspacePath = (relativePath) => path.resolve(workspaceDir, relativePath);\n\n // Host\n const host = process.env.HOST || 'localhost';\n\n // Required for babel-preset-react-app\n process.env.NODE_ENV = 'development';\n\n return {\n // Environment mode\n mode: 'development',\n // improves HMR - assume node_modules might change\n snapshot: { managedPaths: [] },\n\n devtool: 'inline-source-map',\n\n // Entry point of app\n entry: {\n main: entryFiles,\n },\n\n output: {\n // Development filename output\n filename: 'static/js/[name].bundle.js',\n\n pathinfo: true,\n\n path: resolveWorkspacePath('/'),\n\n publicPath: publicUrlOrPath,\n\n chunkFilename: 'static/js/[name].chunk.js',\n\n // point sourcemap entries to original disk locations (format as URL on windows)\n devtoolModuleFilenameTemplate: (info) => pathNormalizeToLinux(path.resolve(info.absoluteResourcePath)),\n\n // this defaults to 'window', but by setting it to 'this' then\n // module chunks which are built will work in web workers as well.\n // Commented out to use the default (self) as according to tobias with webpack5 self is working with workers as well\n // globalObject: 'this',\n },\n\n infrastructureLogging: {\n level: 'error',\n },\n\n stats: {\n errorDetails: true,\n },\n\n devServer: {\n allowedHosts: 'all',\n\n static: [\n {\n directory: resolveWorkspacePath(publicUrlOrPath),\n staticOptions: {},\n // Don't be confused with `dev.publicPath`, it is `publicPath` for static directory\n // Can be:\n // publicPath: ['/static-public-path-one/', '/static-public-path-two/'],\n publicPath: publicUrlOrPath,\n // Can be:\n // serveIndex: {} (options for the `serveIndex` option you can find https://github.com/expressjs/serve-index)\n serveIndex: true,\n // Can be:\n // watch: {} (options for the `watch` option you can find https://github.com/paulmillr/chokidar)\n watch: true,\n },\n ],\n\n // Enable compression\n compress: true,\n\n // Enable hot reloading\n hot: true,\n\n host,\n\n historyApiFallback: {\n disableDotRule: true,\n index: publicUrlOrPath,\n },\n\n client: {\n webSocketURL: {\n hostname: clientHost,\n pathname: clientPath,\n port,\n },\n },\n\n onBeforeSetupMiddleware(wds) {\n const { app } = wds;\n // Keep `evalSourceMapMiddleware` and `errorOverlayMiddleware`\n // middlewares before `redirectServedPath` otherwise will not have any effect\n // This lets us fetch source contents from webpack for the error overlay\n // @ts-ignore @types/wds mismatch\n app.use(evalSourceMapMiddleware(wds));\n // This lets us open files from the runtime error overlay.\n app.use(errorOverlayMiddleware());\n },\n\n onAfterSetupMiddleware({ app }) {\n // Redirect to `PUBLIC_URL` or `homepage` from `package.json` if url not match\n app.use(redirectServedPath(publicUrlOrPath));\n\n // This service worker file is effectively a 'no-op' that will reset any\n // previous service worker registered for the same host:port combination.\n // We do this in development to avoid hitting the production cache if\n // it used the same host and port.\n // https://github.com/facebook/create-react-app/issues/2272#issuecomment-302832432\n app.use(noopServiceWorkerMiddleware(publicUrlOrPath));\n },\n\n devMiddleware: {\n // forward static files\n publicPath: publicUrlOrPath.slice(0, -1),\n },\n },\n\n resolve: {\n // These are the reasonable defaults supported by the Node ecosystem.\n // We also include JSX as a common component filename extension to support\n // some tools, although we do not recommend using it, see:\n // https://github.com/facebook/create-react-app/issues/290\n // `web` extension prefixes have been added for better support\n // for React Native Web.\n extensions: moduleFileExtensions.map((ext) => `.${ext}`),\n alias: {\n react: require.resolve('react'),\n 'react-dom/server': require.resolve('react-dom/server'),\n 'react-dom': require.resolve('react-dom'),\n // 'react-refresh/runtime': require.resolve('react-refresh/runtime'),\n },\n fallback: {\n fs: false,\n path: require.resolve('path-browserify'),\n stream: false,\n process: false,\n },\n },\n\n module: {\n // Webpack by default includes node_modules under its managed paths which cause the whole directory to be cached\n // Watch mode requires us to turn off unsafeCache as well\n // this de-optimizes the dev build but ensures hmr works when writing/linking into node modules.\n // However we do not lose the caching entirely like cache: false\n unsafeCache: false,\n rules: [\n {\n test: /\\.m?js/,\n resolve: {\n fullySpecified: false,\n },\n },\n {\n test: /\\.js$/,\n enforce: 'pre',\n include: /node_modules/,\n // only apply to packages with componentId in their package.json (ie. bit components)\n descriptionData: { componentId: (value) => !!value },\n use: [require.resolve('@pmmmwh/react-refresh-webpack-plugin/loader'), require.resolve('source-map-loader')],\n },\n {\n test: /\\.(js|jsx|tsx|ts)$/,\n exclude: /node_modules/,\n include: workspaceDir,\n use: [\n require.resolve('@pmmmwh/react-refresh-webpack-plugin/loader'),\n {\n loader: require.resolve('babel-loader'),\n options: {\n configFile: false,\n babelrc: false,\n presets: [\n // Preset includes JSX, TypeScript, and some ESnext features\n require.resolve('babel-preset-react-app'),\n ],\n plugins: [require.resolve('react-refresh/babel')],\n },\n },\n ],\n },\n {\n test: stylesRegexps.sassModuleRegex,\n use: [\n require.resolve('style-loader'),\n {\n loader: require.resolve('css-loader'),\n options: {\n modules: {\n localIdentName: '[name]__[local]--[hash:base64:5]',\n },\n sourceMap: true,\n },\n },\n {\n loader: require.resolve('sass-loader'),\n options: {\n sourceMap: true,\n },\n },\n ],\n },\n {\n test: stylesRegexps.sassNoModuleRegex,\n use: [\n require.resolve('style-loader'),\n require.resolve('css-loader'),\n {\n loader: require.resolve('sass-loader'),\n options: {\n sourceMap: true,\n },\n },\n ],\n },\n {\n test: stylesRegexps.lessModuleRegex,\n use: [\n require.resolve('style-loader'),\n {\n loader: require.resolve('css-loader'),\n options: {\n modules: {\n localIdentName: '[name]__[local]--[hash:base64:5]',\n },\n sourceMap: true,\n },\n },\n {\n loader: require.resolve('less-loader'),\n options: {\n sourceMap: true,\n },\n },\n ],\n },\n {\n test: stylesRegexps.lessNoModuleRegex,\n use: [\n require.resolve('style-loader'),\n require.resolve('css-loader'),\n {\n loader: require.resolve('less-loader'),\n options: {\n sourceMap: true,\n },\n },\n ],\n },\n {\n test: stylesRegexps.cssModuleRegex,\n use: [\n require.resolve('style-loader'),\n {\n loader: require.resolve('css-loader'),\n options: {\n modules: {\n localIdentName: '[name]__[local]--[hash:base64:5]',\n },\n sourceMap: true,\n },\n },\n ],\n },\n {\n test: stylesRegexps.cssNoModulesRegex,\n use: [require.resolve('style-loader'), require.resolve('css-loader')],\n },\n ],\n },\n\n plugins: [\n new ReactRefreshWebpackPlugin({\n // we use '@pmmmwh/react-refresh-webpack-plugin/loader' directly where relevant.\n // FYI, original defaults of the plugin are:\n // include: /\\.([cm]js|[jt]sx?|flow)$/i, exclude: /node_modules/,\n include: matchNothingRegex,\n }),\n // Re-generate index.html with injected script tag.\n // The injected script tag contains a src value of the\n // filename output defined above.\n new HtmlWebpackPlugin({\n inject: true,\n templateContent: html(title || 'My component workspace'),\n chunks: ['main'],\n filename: 'index.html',\n }),\n new ProvidePlugin({\n process: require.resolve('process/browser'),\n }),\n ],\n };\n}\n"]}
|
|
1
|
+
{"version":3,"names":["matchNothingRegex","clientHost","process","env","WDS_SOCKET_HOST","clientPath","WDS_SOCKET_PATH","port","WDS_SOCKET_PORT","publicUrlOrPath","getPublicUrlOrPath","NODE_ENV","sep","moduleFileExtensions","devConfig","workspaceDir","entryFiles","title","resolveWorkspacePath","relativePath","path","resolve","host","HOST","mode","snapshot","managedPaths","devtool","entry","main","output","filename","pathinfo","publicPath","chunkFilename","devtoolModuleFilenameTemplate","info","pathNormalizeToLinux","absoluteResourcePath","infrastructureLogging","level","stats","errorDetails","devServer","allowedHosts","static","directory","staticOptions","serveIndex","watch","compress","hot","historyApiFallback","disableDotRule","index","client","webSocketURL","hostname","pathname","onBeforeSetupMiddleware","wds","app","use","evalSourceMapMiddleware","errorOverlayMiddleware","onAfterSetupMiddleware","redirectServedPath","noopServiceWorkerMiddleware","devMiddleware","slice","extensions","map","ext","alias","react","require","fallback","fs","stream","module","unsafeCache","rules","test","fullySpecified","enforce","include","descriptionData","componentId","value","exclude","loader","options","configFile","babelrc","presets","plugins","stylesRegexps","sassModuleRegex","modules","localIdentName","sourceMap","sassNoModuleRegex","lessModuleRegex","lessNoModuleRegex","cssModuleRegex","cssNoModulesRegex","ReactRefreshWebpackPlugin","HtmlWebpackPlugin","inject","templateContent","html","chunks","ProvidePlugin"],"sources":["webpack.dev.config.ts"],"sourcesContent":["import { ProvidePlugin } from 'webpack';\nimport * as stylesRegexps from '@teambit/webpack.modules.style-regexps';\nimport { pathNormalizeToLinux } from '@teambit/legacy/dist/utils';\nimport { WebpackConfigWithDevServer } from '@teambit/webpack';\n\nimport HtmlWebpackPlugin from 'html-webpack-plugin';\nimport ReactRefreshWebpackPlugin from '@pmmmwh/react-refresh-webpack-plugin';\nimport errorOverlayMiddleware from 'react-dev-utils/errorOverlayMiddleware';\nimport evalSourceMapMiddleware from 'react-dev-utils/evalSourceMapMiddleware';\nimport noopServiceWorkerMiddleware from 'react-dev-utils/noopServiceWorkerMiddleware';\nimport redirectServedPath from 'react-dev-utils/redirectServedPathMiddleware';\nimport getPublicUrlOrPath from 'react-dev-utils/getPublicUrlOrPath';\nimport path, { sep } from 'path';\nimport { html } from './html';\n\n/*\n * Webpack config for the bit ui\n * i.e. `bit start --dev`,\n */\n\nconst matchNothingRegex = 'a^';\nconst clientHost = process.env.WDS_SOCKET_HOST;\nconst clientPath = process.env.WDS_SOCKET_PATH; // default is '/sockjs-node';\nconst port = process.env.WDS_SOCKET_PORT;\n\n// const reactRefreshRuntimeEntry = require.resolve('react-refresh/runtime');\n// const reactRefreshWebpackPluginRuntimeEntry = require.resolve(\n// '@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils'\n// );\n\nconst publicUrlOrPath = getPublicUrlOrPath(process.env.NODE_ENV === 'development', sep, `${sep}public`);\n\nconst moduleFileExtensions = [\n 'web.mjs',\n 'mjs',\n 'web.js',\n 'js',\n 'web.ts',\n 'ts',\n 'web.tsx',\n 'tsx',\n 'json',\n 'web.jsx',\n 'jsx',\n];\n\nexport function devConfig(workspaceDir, entryFiles, title): WebpackConfigWithDevServer {\n const resolveWorkspacePath = (relativePath) => path.resolve(workspaceDir, relativePath);\n\n // Host\n const host = process.env.HOST || 'localhost';\n\n // Required for babel-preset-react-app\n process.env.NODE_ENV = 'development';\n\n return {\n // Environment mode\n mode: 'development',\n // improves HMR - assume node_modules might change\n snapshot: { managedPaths: [] },\n\n devtool: 'inline-source-map',\n\n // Entry point of app\n entry: {\n main: entryFiles,\n },\n\n output: {\n // Development filename output\n filename: 'static/js/[name].bundle.js',\n\n pathinfo: true,\n\n path: resolveWorkspacePath('/'),\n\n publicPath: publicUrlOrPath,\n\n chunkFilename: 'static/js/[name].chunk.js',\n\n // point sourcemap entries to original disk locations (format as URL on windows)\n devtoolModuleFilenameTemplate: (info) => pathNormalizeToLinux(path.resolve(info.absoluteResourcePath)),\n\n // this defaults to 'window', but by setting it to 'this' then\n // module chunks which are built will work in web workers as well.\n // Commented out to use the default (self) as according to tobias with webpack5 self is working with workers as well\n // globalObject: 'this',\n },\n\n infrastructureLogging: {\n level: 'error',\n },\n\n stats: {\n errorDetails: true,\n },\n\n devServer: {\n allowedHosts: 'all',\n\n static: [\n {\n directory: resolveWorkspacePath(publicUrlOrPath),\n staticOptions: {},\n // Don't be confused with `dev.publicPath`, it is `publicPath` for static directory\n // Can be:\n // publicPath: ['/static-public-path-one/', '/static-public-path-two/'],\n publicPath: publicUrlOrPath,\n // Can be:\n // serveIndex: {} (options for the `serveIndex` option you can find https://github.com/expressjs/serve-index)\n serveIndex: true,\n // Can be:\n // watch: {} (options for the `watch` option you can find https://github.com/paulmillr/chokidar)\n watch: true,\n },\n ],\n\n // Enable compression\n compress: true,\n\n // Enable hot reloading\n hot: true,\n\n host,\n\n historyApiFallback: {\n disableDotRule: true,\n index: publicUrlOrPath,\n },\n\n client: {\n webSocketURL: {\n hostname: clientHost,\n pathname: clientPath,\n port,\n },\n },\n\n onBeforeSetupMiddleware(wds) {\n const { app } = wds;\n // Keep `evalSourceMapMiddleware` and `errorOverlayMiddleware`\n // middlewares before `redirectServedPath` otherwise will not have any effect\n // This lets us fetch source contents from webpack for the error overlay\n // @ts-ignore @types/wds mismatch\n app.use(evalSourceMapMiddleware(wds));\n // This lets us open files from the runtime error overlay.\n app.use(errorOverlayMiddleware());\n },\n\n onAfterSetupMiddleware({ app }) {\n // Redirect to `PUBLIC_URL` or `homepage` from `package.json` if url not match\n app.use(redirectServedPath(publicUrlOrPath));\n\n // This service worker file is effectively a 'no-op' that will reset any\n // previous service worker registered for the same host:port combination.\n // We do this in development to avoid hitting the production cache if\n // it used the same host and port.\n // https://github.com/facebook/create-react-app/issues/2272#issuecomment-302832432\n app.use(noopServiceWorkerMiddleware(publicUrlOrPath));\n },\n\n devMiddleware: {\n // forward static files\n publicPath: publicUrlOrPath.slice(0, -1),\n },\n },\n\n resolve: {\n // These are the reasonable defaults supported by the Node ecosystem.\n // We also include JSX as a common component filename extension to support\n // some tools, although we do not recommend using it, see:\n // https://github.com/facebook/create-react-app/issues/290\n // `web` extension prefixes have been added for better support\n // for React Native Web.\n extensions: moduleFileExtensions.map((ext) => `.${ext}`),\n alias: {\n react: require.resolve('react'),\n 'react-dom/server': require.resolve('react-dom/server'),\n 'react-dom': require.resolve('react-dom'),\n // 'react-refresh/runtime': require.resolve('react-refresh/runtime'),\n },\n fallback: {\n fs: false,\n path: require.resolve('path-browserify'),\n stream: false,\n process: false,\n },\n },\n\n module: {\n // Webpack by default includes node_modules under its managed paths which cause the whole directory to be cached\n // Watch mode requires us to turn off unsafeCache as well\n // this de-optimizes the dev build but ensures hmr works when writing/linking into node modules.\n // However we do not lose the caching entirely like cache: false\n unsafeCache: false,\n rules: [\n {\n test: /\\.m?js/,\n resolve: {\n fullySpecified: false,\n },\n },\n {\n test: /\\.js$/,\n enforce: 'pre',\n include: /node_modules/,\n // only apply to packages with componentId in their package.json (ie. bit components)\n descriptionData: { componentId: (value) => !!value },\n use: [require.resolve('@pmmmwh/react-refresh-webpack-plugin/loader'), require.resolve('source-map-loader')],\n },\n {\n test: /\\.(js|jsx|tsx|ts)$/,\n exclude: /node_modules/,\n include: workspaceDir,\n use: [\n require.resolve('@pmmmwh/react-refresh-webpack-plugin/loader'),\n {\n loader: require.resolve('babel-loader'),\n options: {\n configFile: false,\n babelrc: false,\n presets: [\n // Preset includes JSX, TypeScript, and some ESnext features\n require.resolve('babel-preset-react-app'),\n ],\n plugins: [require.resolve('react-refresh/babel')],\n },\n },\n ],\n },\n {\n test: stylesRegexps.sassModuleRegex,\n use: [\n require.resolve('style-loader'),\n {\n loader: require.resolve('css-loader'),\n options: {\n modules: {\n localIdentName: '[name]__[local]--[hash:base64:5]',\n },\n sourceMap: true,\n },\n },\n {\n loader: require.resolve('sass-loader'),\n options: {\n sourceMap: true,\n },\n },\n ],\n },\n {\n test: stylesRegexps.sassNoModuleRegex,\n use: [\n require.resolve('style-loader'),\n require.resolve('css-loader'),\n {\n loader: require.resolve('sass-loader'),\n options: {\n sourceMap: true,\n },\n },\n ],\n },\n {\n test: stylesRegexps.lessModuleRegex,\n use: [\n require.resolve('style-loader'),\n {\n loader: require.resolve('css-loader'),\n options: {\n modules: {\n localIdentName: '[name]__[local]--[hash:base64:5]',\n },\n sourceMap: true,\n },\n },\n {\n loader: require.resolve('less-loader'),\n options: {\n sourceMap: true,\n },\n },\n ],\n },\n {\n test: stylesRegexps.lessNoModuleRegex,\n use: [\n require.resolve('style-loader'),\n require.resolve('css-loader'),\n {\n loader: require.resolve('less-loader'),\n options: {\n sourceMap: true,\n },\n },\n ],\n },\n {\n test: stylesRegexps.cssModuleRegex,\n use: [\n require.resolve('style-loader'),\n {\n loader: require.resolve('css-loader'),\n options: {\n modules: {\n localIdentName: '[name]__[local]--[hash:base64:5]',\n },\n sourceMap: true,\n },\n },\n ],\n },\n {\n test: stylesRegexps.cssNoModulesRegex,\n use: [require.resolve('style-loader'), require.resolve('css-loader')],\n },\n ],\n },\n\n plugins: [\n new ReactRefreshWebpackPlugin({\n // we use '@pmmmwh/react-refresh-webpack-plugin/loader' directly where relevant.\n // FYI, original defaults of the plugin are:\n // include: /\\.([cm]js|[jt]sx?|flow)$/i, exclude: /node_modules/,\n include: matchNothingRegex,\n }),\n // Re-generate index.html with injected script tag.\n // The injected script tag contains a src value of the\n // filename output defined above.\n new HtmlWebpackPlugin({\n inject: true,\n templateContent: html(title || 'My component workspace'),\n chunks: ['main'],\n filename: 'index.html',\n }),\n new ProvidePlugin({\n process: require.resolve('process/browser'),\n }),\n ],\n };\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["createWebpackConfig","workspaceDir","entryFiles","publicDir","baseConfig","createBaseConfig","ssrConfig","createSsrConfig","combined","merge","target","devtool","output","path","resolve","publicPath","libraryTarget","filename"],"sources":["webpack.ssr.config.ts"],"sourcesContent":["import { Configuration } from 'webpack';\nimport path from 'path';\nimport { merge } from 'webpack-merge';\n\nimport createBaseConfig from './webpack.base.config';\n\nexport default function createWebpackConfig(\n workspaceDir: string,\n entryFiles: string[],\n publicDir: string\n): Configuration {\n const baseConfig = createBaseConfig(workspaceDir, entryFiles);\n const ssrConfig = createSsrConfig(workspaceDir, publicDir);\n\n const combined = merge(baseConfig, ssrConfig);\n\n return combined;\n}\n\nfunction createSsrConfig(workspaceDir: string, publicDir: string) {\n const ssrConfig: Configuration = {\n target: 'node',\n devtool: 'eval-cheap-source-map', // TODO\n\n output: {\n path: path.resolve(workspaceDir, publicDir, 'ssr'),\n publicPath: '/public/ssr/',\n libraryTarget: 'commonjs',\n filename: 'index.js',\n },\n\n // // no optimizations for ssr at this point,\n // // especially no chunks.\n // optimization: { },\n };\n\n return ssrConfig;\n}\n"],"mappings":";;;;;;;;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEe,SAASA,mBAAT,CACbC,YADa,EAEbC,UAFa,EAGbC,SAHa,EAIE;EACf,MAAMC,UAAU,GAAG,IAAAC,sBAAA,EAAiBJ,YAAjB,EAA+BC,UAA/B,CAAnB;EACA,MAAMI,SAAS,GAAGC,eAAe,CAACN,YAAD,EAAeE,SAAf,CAAjC;EAEA,MAAMK,QAAQ,GAAG,IAAAC,qBAAA,EAAML,UAAN,EAAkBE,SAAlB,CAAjB;EAEA,OAAOE,QAAP;AACD;;AAED,SAASD,eAAT,CAAyBN,YAAzB,EAA+CE,SAA/C,EAAkE;EAChE,MAAMG,SAAwB,GAAG;IAC/BI,MAAM,EAAE,MADuB;IAE/BC,OAAO,EAAE,uBAFsB;IAEG;IAElCC,MAAM,EAAE;MACNC,IAAI,EAAEA,eAAA,CAAKC,OAAL,CAAab,YAAb,EAA2BE,SAA3B,EAAsC,KAAtC,CADA;MAENY,UAAU,EAAE,cAFN;MAGNC,aAAa,EAAE,UAHT;MAINC,QAAQ,EAAE;IAJJ,CAJuB,CAW/B;IACA;IACA;;EAb+B,CAAjC;EAgBA,OAAOX,SAAP;AACD"}
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@teambit/ui",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.740",
|
|
4
4
|
"homepage": "https://bit.dev/teambit/ui-foundation/ui",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"componentId": {
|
|
7
7
|
"scope": "teambit.ui-foundation",
|
|
8
8
|
"name": "ui",
|
|
9
|
-
"version": "0.0.
|
|
9
|
+
"version": "0.0.740"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"lodash": "4.17.21",
|
|
@@ -48,33 +48,33 @@
|
|
|
48
48
|
"@babel/runtime": "7.12.18",
|
|
49
49
|
"core-js": "^3.0.0",
|
|
50
50
|
"@teambit/harmony": "0.3.3",
|
|
51
|
-
"@teambit/base-ui.utils.composer": "1.0.0",
|
|
52
51
|
"@teambit/base-ui.loaders.loader-ribbon": "1.0.0",
|
|
53
52
|
"@teambit/base-ui.theme.fonts.roboto": "1.0.0",
|
|
54
53
|
"@teambit/base-ui.theme.theme-provider": "1.0.1",
|
|
55
|
-
"@teambit/
|
|
54
|
+
"@teambit/base-ui.utils.composer": "1.0.0",
|
|
55
|
+
"@teambit/aspect-loader": "0.0.740",
|
|
56
56
|
"@teambit/toolbox.path.to-windows-compatible-path": "0.0.483",
|
|
57
57
|
"@teambit/ui-foundation.ui.hooks.use-data-query": "0.0.487",
|
|
58
58
|
"@teambit/bit-error": "0.0.394",
|
|
59
|
-
"@teambit/cli": "0.0.
|
|
60
|
-
"@teambit/logger": "0.0.
|
|
59
|
+
"@teambit/cli": "0.0.492",
|
|
60
|
+
"@teambit/logger": "0.0.584",
|
|
61
61
|
"@teambit/ui-foundation.cli.ui-server-console": "0.0.490",
|
|
62
|
-
"@teambit/bundler": "0.0.
|
|
63
|
-
"@teambit/component": "0.0.
|
|
64
|
-
"@teambit/express": "0.0.
|
|
65
|
-
"@teambit/graphql": "0.0.
|
|
62
|
+
"@teambit/bundler": "0.0.740",
|
|
63
|
+
"@teambit/component": "0.0.740",
|
|
64
|
+
"@teambit/express": "0.0.589",
|
|
65
|
+
"@teambit/graphql": "0.0.740",
|
|
66
66
|
"@teambit/toolbox.network.get-port": "0.0.113",
|
|
67
|
-
"@teambit/aspect": "0.0.
|
|
68
|
-
"@teambit/cache": "0.0.
|
|
69
|
-
"@teambit/pubsub": "0.0.
|
|
70
|
-
"@teambit/react-router": "0.0.
|
|
67
|
+
"@teambit/aspect": "0.0.740",
|
|
68
|
+
"@teambit/cache": "0.0.584",
|
|
69
|
+
"@teambit/pubsub": "0.0.740",
|
|
70
|
+
"@teambit/react-router": "0.0.740",
|
|
71
71
|
"@teambit/ui-foundation.ui.rendering.html": "0.0.69",
|
|
72
72
|
"@teambit/design.theme.icons-font": "2.0.1",
|
|
73
73
|
"@teambit/design.ui.tooltip": "0.0.352",
|
|
74
74
|
"@teambit/ui-foundation.ui.global-loader": "0.0.486",
|
|
75
75
|
"@teambit/webpack.modules.generate-style-loaders": "0.0.103",
|
|
76
76
|
"@teambit/webpack.modules.style-regexps": "0.0.132",
|
|
77
|
-
"@teambit/webpack": "0.0.
|
|
77
|
+
"@teambit/webpack": "0.0.740"
|
|
78
78
|
},
|
|
79
79
|
"devDependencies": {
|
|
80
80
|
"@types/lodash": "4.14.165",
|
|
@@ -96,7 +96,7 @@
|
|
|
96
96
|
},
|
|
97
97
|
"peerDependencies": {
|
|
98
98
|
"@apollo/client": "^3.0.0",
|
|
99
|
-
"@teambit/legacy": "1.0.
|
|
99
|
+
"@teambit/legacy": "1.0.272",
|
|
100
100
|
"react-dom": "^16.8.0 || ^17.0.0",
|
|
101
101
|
"react": "^16.8.0 || ^17.0.0"
|
|
102
102
|
},
|
|
@@ -141,7 +141,7 @@
|
|
|
141
141
|
"react": "-"
|
|
142
142
|
},
|
|
143
143
|
"peerDependencies": {
|
|
144
|
-
"@teambit/legacy": "1.0.
|
|
144
|
+
"@teambit/legacy": "1.0.272",
|
|
145
145
|
"react-dom": "^16.8.0 || ^17.0.0",
|
|
146
146
|
"react": "^16.8.0 || ^17.0.0"
|
|
147
147
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const compositions = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.ui-foundation_ui@0.0.
|
|
2
|
-
export const overview = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.ui-foundation_ui@0.0.
|
|
1
|
+
export const compositions = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.ui-foundation_ui@0.0.740/dist/ui.composition.js')]
|
|
2
|
+
export const overview = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.ui-foundation_ui@0.0.740/dist/ui.docs.mdx')]
|
|
Binary file
|