@teambit/preview 0.0.780 → 0.0.783
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/preview.preview.runtime.js +8 -2
- package/dist/preview.preview.runtime.js.map +1 -1
- package/package-tar/teambit-preview-0.0.783.tgz +0 -0
- package/package.json +20 -20
- package/{preview-1657039361770.js → preview-1657196598230.js} +2 -2
- package/preview.preview.runtime.tsx +11 -1
- package/package-tar/teambit-preview-0.0.780.tgz +0 -0
|
@@ -275,9 +275,15 @@ class PreviewPreview {
|
|
|
275
275
|
addComponentFileElement(id, previewBundleFileName) {
|
|
276
276
|
if (previewBundleFileName.endsWith('.js')) {
|
|
277
277
|
return this.addComponentFileScriptElement(id, previewBundleFileName);
|
|
278
|
-
}
|
|
278
|
+
} // TODO - should we load assets other than .css / .js?
|
|
279
|
+
// if (previewBundleFileName.endsWith('.css')) {
|
|
280
|
+
|
|
281
|
+
|
|
282
|
+
this.addComponentFileLinkElement(id, previewBundleFileName).catch(err => {
|
|
283
|
+
throw new Error(`[preview.preview] failed loading asset "${previewBundleFileName}". Error - "${err === null || err === void 0 ? void 0 : err.toString()}"`);
|
|
284
|
+
}); // do NOT await non js assets, as they might never load (like images), and not critical for rendering.
|
|
279
285
|
|
|
280
|
-
return
|
|
286
|
+
return undefined;
|
|
281
287
|
}
|
|
282
288
|
|
|
283
289
|
async fetchComponentPreviewFiles(id, previewName) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["PreviewPreview","constructor","pubsub","previewSlot","renderingContextSlot","isReady","Promise","resolve","_setupPromise","PREVIEW_MODULES","onSet","add","rootExt","previewName","componentId","getLocation","name","getDefault","isDev","preview","getPreview","PreviewNotFound","includesAll","all","include","map","inclPreviewName","includedPreview","undefined","inclPreviewModule","getPreviewModule","selectPreviewModel","fullName","includes","filter","module","componentAspects","getComponentAspects","toString","render","getRenderingContext","memoize","fetchComponentAspects","max","maxAge","registerClickPubSub","window","addEventListener","e","timestamp","Date","now","clickEvent","Object","assign","pub","PreviewAspect","id","ClickInsideAnIframeEvent","has","includedReady","every","included","compShortId","relevantModel","get","Error","componentMap","componentPreviews","fetchComponentPreview","loadComponentPreviews","component","mainModule","previewFile","allFiles","fetchComponentPreviewFiles","file","endsWith","addComponentFileElement","loadPreviewScript","previewBundleFileName","addComponentFileScriptElement","addComponentFileLinkElement","previewAssetsRoute","stringId","url","res","crossFetch","status","parsed","json","isBundledWithEnv","files","length","previewRoute","src","loadScript","href","loadLink","globalId","toStringWithoutVersion","componentPreview","registerPreview","register","aspectsFilter","RenderingContext","registerRenderContext","renderContext","previews","values","defaultOne","find","previewCandidate","default","getParam","query","param","params","URLSearchParams","withoutHash","location","hash","substring","before","after","split","ComponentID","tryFromString","provider","config","PreviewRuntime","PubsubAspect","Slot","withType","addRuntime"],"sources":["preview.preview.runtime.tsx"],"sourcesContent":["import PubsubAspect, { PubsubPreview } from '@teambit/pubsub';\nimport { Slot, SlotRegistry } from '@teambit/harmony';\nimport { ComponentID } from '@teambit/component-id';\nimport crossFetch from 'cross-fetch';\nimport memoize from 'memoizee';\n\nimport { PreviewNotFound } from './exceptions';\nimport { PreviewType } from './preview-type';\nimport { PreviewAspect, PreviewRuntime } from './preview.aspect';\nimport { ClickInsideAnIframeEvent } from './events';\nimport { ModuleFile, PreviewModule } from './types/preview-module';\nimport { RenderingContext } from './rendering-context';\nimport { fetchComponentAspects } from './gql/fetch-component-aspects';\nimport { PREVIEW_MODULES } from './preview-modules';\nimport { loadScript, loadLink } from './html-utils';\n\n// forward linkModules() for generate-link.ts\nexport { linkModules } from './preview-modules';\n\nexport type PreviewSlot = SlotRegistry<PreviewType>;\n\nexport type RenderingContextOptions = { aspectsFilter?: string[] };\nexport type RenderingContextProvider = (options: RenderingContextOptions) => { [key: string]: any };\nexport type RenderingContextSlot = SlotRegistry<RenderingContextProvider>;\n\nexport class PreviewPreview {\n constructor(\n /**\n * register to pubsub\n */\n private pubsub: PubsubPreview,\n\n /**\n * preview slot.\n */\n private previewSlot: PreviewSlot,\n\n private renderingContextSlot: RenderingContextSlot\n ) {\n this.registerClickPubSub();\n }\n\n private registerClickPubSub() {\n window.addEventListener('click', (e) => {\n const timestamp = Date.now();\n const clickEvent = Object.assign({}, e);\n this.pubsub.pub(PreviewAspect.id, new ClickInsideAnIframeEvent(timestamp, clickEvent));\n });\n }\n\n private isDev = false;\n\n private isReady() {\n const { previewName } = this.getLocation();\n const name = previewName || this.getDefault();\n\n if (!PREVIEW_MODULES.has(name)) return false;\n const preview = this.getPreview(name);\n if (!preview) return false;\n const includedReady = preview.include?.every((included) => PREVIEW_MODULES.has(included)) ?? true;\n if (!includedReady) return false;\n\n return true;\n }\n\n private _setupPromise?: Promise<void>;\n setup = () => {\n if (this.isReady()) return Promise.resolve();\n\n this._setupPromise ??= new Promise((resolve) => {\n PREVIEW_MODULES.onSet.add(() => {\n if (this.isReady()) resolve();\n });\n });\n\n return this._setupPromise;\n };\n\n /**\n * render the preview.\n */\n render = async (rootExt?: string) => {\n const { previewName, componentId } = this.getLocation();\n const name = previewName || this.getDefault();\n if (rootExt) this.isDev = rootExt === 'teambit.workspace/workspace';\n\n const preview = this.getPreview(name);\n if (!preview || !componentId) {\n throw new PreviewNotFound(previewName);\n }\n\n const includesAll = await Promise.all(\n (preview.include || []).map(async (inclPreviewName) => {\n const includedPreview = this.getPreview(inclPreviewName);\n if (!includedPreview) return undefined;\n\n const inclPreviewModule = await this.getPreviewModule(inclPreviewName, componentId);\n return includedPreview.selectPreviewModel?.(componentId.fullName, inclPreviewModule);\n })\n );\n\n const includes = includesAll.filter((module) => !!module);\n // during build / tag, the component is isolated, so all aspects are relevant, and do not require filtering\n const componentAspects = this.isDev ? await this.getComponentAspects(componentId.toString()) : undefined;\n\n return preview.render(\n componentId,\n await this.getPreviewModule(name, componentId),\n includes,\n this.getRenderingContext(componentAspects)\n );\n };\n\n async getPreviewModule(previewName: string, id: ComponentID): Promise<PreviewModule> {\n const compShortId = id.fullName;\n\n const relevantModel = PREVIEW_MODULES.get(previewName);\n if (!relevantModel) throw new Error(`[preview.preview] missing preview \"${previewName}\"`);\n if (relevantModel.componentMap[compShortId]) return relevantModel;\n\n const componentPreviews = await this.fetchComponentPreview(id, previewName);\n PREVIEW_MODULES.loadComponentPreviews(compShortId, componentPreviews);\n\n const component = componentPreviews[previewName];\n\n return {\n mainModule: relevantModel.mainModule,\n componentMap: {\n [id.fullName]: component,\n },\n };\n }\n\n async fetchComponentPreview(id: ComponentID, name: string): Promise<Record<string, ModuleFile[]>> {\n let previewFile: string | undefined;\n const allFiles = await this.fetchComponentPreviewFiles(id, name);\n // It's a component bundled with the env\n if (allFiles === null) return {};\n\n await Promise.all(\n allFiles.map((file) => {\n // We want to run the preview file always last\n if (file.endsWith('-preview.js')) {\n previewFile = file;\n return undefined;\n }\n\n return this.addComponentFileElement(id, file);\n })\n );\n\n if (!previewFile) return {};\n return this.loadPreviewScript(id, name, previewFile);\n }\n\n private addComponentFileElement(id: ComponentID, previewBundleFileName: string) {\n if (previewBundleFileName.endsWith('.js')) {\n return this.addComponentFileScriptElement(id, previewBundleFileName);\n }\n return this.addComponentFileLinkElement(id, previewBundleFileName);\n }\n\n private async fetchComponentPreviewFiles(id: ComponentID, previewName: string): Promise<string[] | null> {\n const previewAssetsRoute = `~aspect/preview-assets`;\n const stringId = id.toString();\n const url = `/api/${stringId}/${previewAssetsRoute}`;\n\n const res = await crossFetch(url);\n if (res.status >= 400) {\n throw new PreviewNotFound(previewName);\n }\n const parsed = await res.json();\n // This is component bundled with the env, no reason to bring the files, as they will be the files of the env\n if (parsed.isBundledWithEnv) {\n return null;\n }\n if (!parsed.files || !parsed.files.length) {\n throw new PreviewNotFound(previewName);\n }\n return parsed.files;\n }\n\n private addComponentFileScriptElement(id: ComponentID, previewBundleFileName: string) {\n const previewRoute = `~aspect/component-preview`;\n const stringId = id.toString();\n const src = `/api/${stringId}/${previewRoute}/${previewBundleFileName}`;\n return loadScript({ src });\n }\n\n private addComponentFileLinkElement(id: ComponentID, previewBundleFileName: string) {\n const stringId = id.toString();\n const previewRoute = `~aspect/component-preview`;\n const href = `/api/${stringId}/${previewRoute}/${previewBundleFileName}`;\n return loadLink({ href });\n }\n\n private async loadPreviewScript(id: ComponentID, previewName: string, previewBundleFileName: string) {\n const previewRoute = `~aspect/component-preview`;\n const src = `/api/${id.toString()}/${previewRoute}/${previewBundleFileName}`;\n await loadScript({ src });\n\n // TODO - replace with jsonp\n const globalId = `${id.toStringWithoutVersion()}-preview`;\n const componentPreview = window[globalId];\n if (!componentPreview) throw new PreviewNotFound(previewName);\n\n return componentPreview as Record<string, ModuleFile[]>;\n }\n\n private getComponentAspects = memoize(fetchComponentAspects, {\n max: 100,\n maxAge: 12 * 60 * 60 * 1000,\n });\n\n /**\n * register a new preview.\n */\n registerPreview(preview: PreviewType) {\n this.previewSlot.register(preview);\n return this;\n }\n\n /**\n * get the preview rendering context.\n */\n getRenderingContext(aspectsFilter?: string[]) {\n return new RenderingContext(this.renderingContextSlot, { aspectsFilter });\n }\n\n /**\n * allows aspects to add rendering contexts.\n * render context is available through all preview definitions.\n */\n registerRenderContext(renderContext: RenderingContextProvider) {\n this.renderingContextSlot.register(renderContext);\n return this;\n }\n\n getDefault() {\n const previews = this.previewSlot.values();\n const defaultOne = previews.find((previewCandidate) => previewCandidate.default);\n\n return defaultOne?.name || previews[0].name;\n }\n\n private getPreview(previewName: string): undefined | PreviewType {\n const previews = this.previewSlot.values();\n const preview = previews.find((previewCandidate) => previewCandidate.name === previewName);\n\n return preview;\n }\n\n private getParam(query: string, param: string) {\n const params = new URLSearchParams(query);\n return params.get(param);\n }\n\n private getLocation() {\n const withoutHash = window.location.hash.substring(1);\n const [before, after] = withoutHash.split('?');\n\n return {\n previewName: this.getParam(after, 'preview'),\n componentId: ComponentID.tryFromString(before),\n };\n }\n\n static runtime = PreviewRuntime;\n\n static dependencies = [PubsubAspect];\n\n static slots = [Slot.withType<PreviewType>(), Slot.withType<RenderingContextProvider>()];\n\n static async provider(\n [pubsub]: [PubsubPreview],\n config,\n [previewSlot, renderingContextSlot]: [PreviewSlot, RenderingContextSlot]\n ) {\n const preview = new PreviewPreview(pubsub, previewSlot, renderingContextSlot);\n\n window.addEventListener('hashchange', () => {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n preview.render();\n });\n\n return preview;\n }\n}\n\nPreviewAspect.addRuntime(PreviewPreview);\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["PreviewPreview","constructor","pubsub","previewSlot","renderingContextSlot","isReady","Promise","resolve","_setupPromise","PREVIEW_MODULES","onSet","add","rootExt","previewName","componentId","getLocation","name","getDefault","isDev","preview","getPreview","PreviewNotFound","includesAll","all","include","map","inclPreviewName","includedPreview","undefined","inclPreviewModule","getPreviewModule","selectPreviewModel","fullName","includes","filter","module","componentAspects","getComponentAspects","toString","render","getRenderingContext","memoize","fetchComponentAspects","max","maxAge","registerClickPubSub","window","addEventListener","e","timestamp","Date","now","clickEvent","Object","assign","pub","PreviewAspect","id","ClickInsideAnIframeEvent","has","includedReady","every","included","compShortId","relevantModel","get","Error","componentMap","componentPreviews","fetchComponentPreview","loadComponentPreviews","component","mainModule","previewFile","allFiles","fetchComponentPreviewFiles","file","endsWith","addComponentFileElement","loadPreviewScript","previewBundleFileName","addComponentFileScriptElement","addComponentFileLinkElement","catch","err","previewAssetsRoute","stringId","url","res","crossFetch","status","parsed","json","isBundledWithEnv","files","length","previewRoute","src","loadScript","href","loadLink","globalId","toStringWithoutVersion","componentPreview","registerPreview","register","aspectsFilter","RenderingContext","registerRenderContext","renderContext","previews","values","defaultOne","find","previewCandidate","default","getParam","query","param","params","URLSearchParams","withoutHash","location","hash","substring","before","after","split","ComponentID","tryFromString","provider","config","PreviewRuntime","PubsubAspect","Slot","withType","addRuntime"],"sources":["preview.preview.runtime.tsx"],"sourcesContent":["import PubsubAspect, { PubsubPreview } from '@teambit/pubsub';\nimport { Slot, SlotRegistry } from '@teambit/harmony';\nimport { ComponentID } from '@teambit/component-id';\nimport crossFetch from 'cross-fetch';\nimport memoize from 'memoizee';\n\nimport { PreviewNotFound } from './exceptions';\nimport { PreviewType } from './preview-type';\nimport { PreviewAspect, PreviewRuntime } from './preview.aspect';\nimport { ClickInsideAnIframeEvent } from './events';\nimport { ModuleFile, PreviewModule } from './types/preview-module';\nimport { RenderingContext } from './rendering-context';\nimport { fetchComponentAspects } from './gql/fetch-component-aspects';\nimport { PREVIEW_MODULES } from './preview-modules';\nimport { loadScript, loadLink } from './html-utils';\n\n// forward linkModules() for generate-link.ts\nexport { linkModules } from './preview-modules';\n\nexport type PreviewSlot = SlotRegistry<PreviewType>;\n\nexport type RenderingContextOptions = { aspectsFilter?: string[] };\nexport type RenderingContextProvider = (options: RenderingContextOptions) => { [key: string]: any };\nexport type RenderingContextSlot = SlotRegistry<RenderingContextProvider>;\n\nexport class PreviewPreview {\n constructor(\n /**\n * register to pubsub\n */\n private pubsub: PubsubPreview,\n\n /**\n * preview slot.\n */\n private previewSlot: PreviewSlot,\n\n private renderingContextSlot: RenderingContextSlot\n ) {\n this.registerClickPubSub();\n }\n\n private registerClickPubSub() {\n window.addEventListener('click', (e) => {\n const timestamp = Date.now();\n const clickEvent = Object.assign({}, e);\n this.pubsub.pub(PreviewAspect.id, new ClickInsideAnIframeEvent(timestamp, clickEvent));\n });\n }\n\n private isDev = false;\n\n private isReady() {\n const { previewName } = this.getLocation();\n const name = previewName || this.getDefault();\n\n if (!PREVIEW_MODULES.has(name)) return false;\n const preview = this.getPreview(name);\n if (!preview) return false;\n const includedReady = preview.include?.every((included) => PREVIEW_MODULES.has(included)) ?? true;\n if (!includedReady) return false;\n\n return true;\n }\n\n private _setupPromise?: Promise<void>;\n setup = () => {\n if (this.isReady()) return Promise.resolve();\n\n this._setupPromise ??= new Promise((resolve) => {\n PREVIEW_MODULES.onSet.add(() => {\n if (this.isReady()) resolve();\n });\n });\n\n return this._setupPromise;\n };\n\n /**\n * render the preview.\n */\n render = async (rootExt?: string) => {\n const { previewName, componentId } = this.getLocation();\n const name = previewName || this.getDefault();\n if (rootExt) this.isDev = rootExt === 'teambit.workspace/workspace';\n\n const preview = this.getPreview(name);\n if (!preview || !componentId) {\n throw new PreviewNotFound(previewName);\n }\n\n const includesAll = await Promise.all(\n (preview.include || []).map(async (inclPreviewName) => {\n const includedPreview = this.getPreview(inclPreviewName);\n if (!includedPreview) return undefined;\n\n const inclPreviewModule = await this.getPreviewModule(inclPreviewName, componentId);\n return includedPreview.selectPreviewModel?.(componentId.fullName, inclPreviewModule);\n })\n );\n\n const includes = includesAll.filter((module) => !!module);\n // during build / tag, the component is isolated, so all aspects are relevant, and do not require filtering\n const componentAspects = this.isDev ? await this.getComponentAspects(componentId.toString()) : undefined;\n\n return preview.render(\n componentId,\n await this.getPreviewModule(name, componentId),\n includes,\n this.getRenderingContext(componentAspects)\n );\n };\n\n async getPreviewModule(previewName: string, id: ComponentID): Promise<PreviewModule> {\n const compShortId = id.fullName;\n\n const relevantModel = PREVIEW_MODULES.get(previewName);\n if (!relevantModel) throw new Error(`[preview.preview] missing preview \"${previewName}\"`);\n if (relevantModel.componentMap[compShortId]) return relevantModel;\n\n const componentPreviews = await this.fetchComponentPreview(id, previewName);\n PREVIEW_MODULES.loadComponentPreviews(compShortId, componentPreviews);\n\n const component = componentPreviews[previewName];\n\n return {\n mainModule: relevantModel.mainModule,\n componentMap: {\n [id.fullName]: component,\n },\n };\n }\n\n async fetchComponentPreview(id: ComponentID, name: string): Promise<Record<string, ModuleFile[]>> {\n let previewFile: string | undefined;\n const allFiles = await this.fetchComponentPreviewFiles(id, name);\n // It's a component bundled with the env\n if (allFiles === null) return {};\n\n await Promise.all(\n allFiles.map((file) => {\n // We want to run the preview file always last\n if (file.endsWith('-preview.js')) {\n previewFile = file;\n return undefined;\n }\n\n return this.addComponentFileElement(id, file);\n })\n );\n\n if (!previewFile) return {};\n return this.loadPreviewScript(id, name, previewFile);\n }\n\n private addComponentFileElement(id: ComponentID, previewBundleFileName: string) {\n if (previewBundleFileName.endsWith('.js')) {\n return this.addComponentFileScriptElement(id, previewBundleFileName);\n }\n\n // TODO - should we load assets other than .css / .js?\n // if (previewBundleFileName.endsWith('.css')) {\n this.addComponentFileLinkElement(id, previewBundleFileName).catch((err) => {\n throw new Error(\n `[preview.preview] failed loading asset \"${previewBundleFileName}\". Error - \"${err?.toString()}\"`\n );\n });\n\n // do NOT await non js assets, as they might never load (like images), and not critical for rendering.\n return undefined;\n }\n\n private async fetchComponentPreviewFiles(id: ComponentID, previewName: string): Promise<string[] | null> {\n const previewAssetsRoute = `~aspect/preview-assets`;\n const stringId = id.toString();\n const url = `/api/${stringId}/${previewAssetsRoute}`;\n\n const res = await crossFetch(url);\n if (res.status >= 400) {\n throw new PreviewNotFound(previewName);\n }\n const parsed = await res.json();\n // This is component bundled with the env, no reason to bring the files, as they will be the files of the env\n if (parsed.isBundledWithEnv) {\n return null;\n }\n if (!parsed.files || !parsed.files.length) {\n throw new PreviewNotFound(previewName);\n }\n return parsed.files;\n }\n\n private addComponentFileScriptElement(id: ComponentID, previewBundleFileName: string) {\n const previewRoute = `~aspect/component-preview`;\n const stringId = id.toString();\n const src = `/api/${stringId}/${previewRoute}/${previewBundleFileName}`;\n return loadScript({ src });\n }\n\n private addComponentFileLinkElement(id: ComponentID, previewBundleFileName: string) {\n const stringId = id.toString();\n const previewRoute = `~aspect/component-preview`;\n const href = `/api/${stringId}/${previewRoute}/${previewBundleFileName}`;\n return loadLink({ href });\n }\n\n private async loadPreviewScript(id: ComponentID, previewName: string, previewBundleFileName: string) {\n const previewRoute = `~aspect/component-preview`;\n const src = `/api/${id.toString()}/${previewRoute}/${previewBundleFileName}`;\n await loadScript({ src });\n\n // TODO - replace with jsonp\n const globalId = `${id.toStringWithoutVersion()}-preview`;\n const componentPreview = window[globalId];\n if (!componentPreview) throw new PreviewNotFound(previewName);\n\n return componentPreview as Record<string, ModuleFile[]>;\n }\n\n private getComponentAspects = memoize(fetchComponentAspects, {\n max: 100,\n maxAge: 12 * 60 * 60 * 1000,\n });\n\n /**\n * register a new preview.\n */\n registerPreview(preview: PreviewType) {\n this.previewSlot.register(preview);\n return this;\n }\n\n /**\n * get the preview rendering context.\n */\n getRenderingContext(aspectsFilter?: string[]) {\n return new RenderingContext(this.renderingContextSlot, { aspectsFilter });\n }\n\n /**\n * allows aspects to add rendering contexts.\n * render context is available through all preview definitions.\n */\n registerRenderContext(renderContext: RenderingContextProvider) {\n this.renderingContextSlot.register(renderContext);\n return this;\n }\n\n getDefault() {\n const previews = this.previewSlot.values();\n const defaultOne = previews.find((previewCandidate) => previewCandidate.default);\n\n return defaultOne?.name || previews[0].name;\n }\n\n private getPreview(previewName: string): undefined | PreviewType {\n const previews = this.previewSlot.values();\n const preview = previews.find((previewCandidate) => previewCandidate.name === previewName);\n\n return preview;\n }\n\n private getParam(query: string, param: string) {\n const params = new URLSearchParams(query);\n return params.get(param);\n }\n\n private getLocation() {\n const withoutHash = window.location.hash.substring(1);\n const [before, after] = withoutHash.split('?');\n\n return {\n previewName: this.getParam(after, 'preview'),\n componentId: ComponentID.tryFromString(before),\n };\n }\n\n static runtime = PreviewRuntime;\n\n static dependencies = [PubsubAspect];\n\n static slots = [Slot.withType<PreviewType>(), Slot.withType<RenderingContextProvider>()];\n\n static async provider(\n [pubsub]: [PubsubPreview],\n config,\n [previewSlot, renderingContextSlot]: [PreviewSlot, RenderingContextSlot]\n ) {\n const preview = new PreviewPreview(pubsub, previewSlot, renderingContextSlot);\n\n window.addEventListener('hashchange', () => {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n preview.render();\n });\n\n return preview;\n }\n}\n\nPreviewAspect.addRuntime(PreviewPreview);\n"],"mappings":"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"}
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@teambit/preview",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.783",
|
|
4
4
|
"homepage": "https://bit.dev/teambit/preview/preview",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"componentId": {
|
|
7
7
|
"scope": "teambit.preview",
|
|
8
8
|
"name": "preview",
|
|
9
|
-
"version": "0.0.
|
|
9
|
+
"version": "0.0.783"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"mime": "2.5.2",
|
|
@@ -23,28 +23,28 @@
|
|
|
23
23
|
"@babel/runtime": "7.12.18",
|
|
24
24
|
"core-js": "^3.0.0",
|
|
25
25
|
"@teambit/harmony": "0.3.3",
|
|
26
|
-
"@teambit/express": "0.0.
|
|
27
|
-
"@teambit/logger": "0.0.
|
|
26
|
+
"@teambit/express": "0.0.616",
|
|
27
|
+
"@teambit/logger": "0.0.611",
|
|
28
28
|
"@teambit/ui-foundation.ui.pages.static-error": "0.0.74",
|
|
29
|
-
"@teambit/builder": "0.0.
|
|
30
|
-
"@teambit/bundler": "0.0.
|
|
31
|
-
"@teambit/component": "0.0.
|
|
32
|
-
"@teambit/aspect-loader": "0.0.
|
|
33
|
-
"@teambit/dependency-resolver": "0.0.
|
|
34
|
-
"@teambit/envs": "0.0.
|
|
29
|
+
"@teambit/builder": "0.0.783",
|
|
30
|
+
"@teambit/bundler": "0.0.783",
|
|
31
|
+
"@teambit/component": "0.0.783",
|
|
32
|
+
"@teambit/aspect-loader": "0.0.783",
|
|
33
|
+
"@teambit/dependency-resolver": "0.0.783",
|
|
34
|
+
"@teambit/envs": "0.0.783",
|
|
35
35
|
"@teambit/toolbox.path.to-windows-compatible-path": "0.0.483",
|
|
36
36
|
"@teambit/component-id": "0.0.402",
|
|
37
37
|
"@teambit/bit-error": "0.0.394",
|
|
38
|
-
"@teambit/cli": "0.0.
|
|
39
|
-
"@teambit/graphql": "0.0.
|
|
40
|
-
"@teambit/pkg": "0.0.
|
|
41
|
-
"@teambit/pubsub": "0.0.
|
|
42
|
-
"@teambit/ui": "0.0.
|
|
43
|
-
"@teambit/workspace": "0.0.
|
|
44
|
-
"@teambit/compiler": "0.0.
|
|
38
|
+
"@teambit/cli": "0.0.518",
|
|
39
|
+
"@teambit/graphql": "0.0.783",
|
|
40
|
+
"@teambit/pkg": "0.0.783",
|
|
41
|
+
"@teambit/pubsub": "0.0.783",
|
|
42
|
+
"@teambit/ui": "0.0.783",
|
|
43
|
+
"@teambit/workspace": "0.0.783",
|
|
44
|
+
"@teambit/compiler": "0.0.783",
|
|
45
45
|
"@teambit/preview.cli.preview-server-status": "0.0.492",
|
|
46
46
|
"@teambit/preview.cli.webpack-events-listener": "0.0.161",
|
|
47
|
-
"@teambit/isolator": "0.0.
|
|
47
|
+
"@teambit/isolator": "0.0.783"
|
|
48
48
|
},
|
|
49
49
|
"devDependencies": {
|
|
50
50
|
"@types/mime": "2.0.3",
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
"@teambit/preview.aspect-docs.preview": "0.0.139"
|
|
63
63
|
},
|
|
64
64
|
"peerDependencies": {
|
|
65
|
-
"@teambit/legacy": "1.0.
|
|
65
|
+
"@teambit/legacy": "1.0.299",
|
|
66
66
|
"react-dom": "^16.8.0 || ^17.0.0",
|
|
67
67
|
"react": "^16.8.0 || ^17.0.0"
|
|
68
68
|
},
|
|
@@ -90,7 +90,7 @@
|
|
|
90
90
|
"react": "-"
|
|
91
91
|
},
|
|
92
92
|
"peerDependencies": {
|
|
93
|
-
"@teambit/legacy": "1.0.
|
|
93
|
+
"@teambit/legacy": "1.0.299",
|
|
94
94
|
"react-dom": "^16.8.0 || ^17.0.0",
|
|
95
95
|
"react": "^16.8.0 || ^17.0.0"
|
|
96
96
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.preview_preview@0.0.
|
|
2
|
-
import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.preview_preview@0.0.
|
|
1
|
+
import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.preview_preview@0.0.783/dist/preview.composition.js';
|
|
2
|
+
import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.preview_preview@0.0.783/dist/preview.docs.mdx';
|
|
3
3
|
|
|
4
4
|
export const compositions = [compositions_0];
|
|
5
5
|
export const overview = [overview_0];
|
|
@@ -157,7 +157,17 @@ export class PreviewPreview {
|
|
|
157
157
|
if (previewBundleFileName.endsWith('.js')) {
|
|
158
158
|
return this.addComponentFileScriptElement(id, previewBundleFileName);
|
|
159
159
|
}
|
|
160
|
-
|
|
160
|
+
|
|
161
|
+
// TODO - should we load assets other than .css / .js?
|
|
162
|
+
// if (previewBundleFileName.endsWith('.css')) {
|
|
163
|
+
this.addComponentFileLinkElement(id, previewBundleFileName).catch((err) => {
|
|
164
|
+
throw new Error(
|
|
165
|
+
`[preview.preview] failed loading asset "${previewBundleFileName}". Error - "${err?.toString()}"`
|
|
166
|
+
);
|
|
167
|
+
});
|
|
168
|
+
|
|
169
|
+
// do NOT await non js assets, as they might never load (like images), and not critical for rendering.
|
|
170
|
+
return undefined;
|
|
161
171
|
}
|
|
162
172
|
|
|
163
173
|
private async fetchComponentPreviewFiles(id: ComponentID, previewName: string): Promise<string[] | null> {
|
|
Binary file
|