@teambit/docs 1.0.1263 → 1.0.1265

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.
@@ -63,6 +63,17 @@ export declare class DocsMain {
63
63
  * compute a doc for a component.
64
64
  */
65
65
  computeDoc(component: Component): Promise<Doc | null>;
66
+ /**
67
+ * the docs data of a component that a scope re-calculates (e.g. when it snaps a lane merge).
68
+ * a scope can fail to read a docs file that a workspace reads. e.g. the default doc reader loads the compiled docs
69
+ * file from the workspace node_modules. then, return undefined to keep the stored doc, instead of an empty one.
70
+ */
71
+ computeDocDataInScope(component: Component): Promise<{
72
+ doc: {
73
+ filePath: string;
74
+ props: import("@teambit/docs.entities.doc").DocProp[];
75
+ } | undefined;
76
+ } | undefined>;
66
77
  getDoc(component: IComponent): Doc | null;
67
78
  getPatterns(): string[];
68
79
  getComponentDevPatterns(component: Component): {
@@ -214,6 +214,19 @@ class DocsMain {
214
214
  }
215
215
  return null;
216
216
  }
217
+
218
+ /**
219
+ * the docs data of a component that a scope re-calculates (e.g. when it snaps a lane merge).
220
+ * a scope can fail to read a docs file that a workspace reads. e.g. the default doc reader loads the compiled docs
221
+ * file from the workspace node_modules. then, return undefined to keep the stored doc, instead of an empty one.
222
+ */
223
+ async computeDocDataInScope(component) {
224
+ const doc = await this.computeDoc(component);
225
+ if (!doc && this.getDocsFiles(component).length) return undefined;
226
+ return {
227
+ doc: doc?.toObject()
228
+ };
229
+ }
217
230
  getDoc(component) {
218
231
  const docData = component.get(_docs().DocsAspect.id)?.data?.doc;
219
232
  if (!docData) return null;
@@ -262,7 +275,7 @@ class DocsMain {
262
275
  workspace.registerOnComponentLoad(computeDocsOnLoad);
263
276
  }
264
277
  if (scope) {
265
- scope.registerOnCompAspectReCalc(computeDocsOnLoad);
278
+ scope.registerOnCompAspectReCalc(component => docs.computeDocDataInScope(component));
266
279
  }
267
280
  graphql.register(() => (0, _docs3().docsSchema)(docs));
268
281
  preview.registerDefinition(new (_docs2().DocsPreviewDefinition)(docs));
@@ -1 +1 @@
1
- {"version":3,"names":["_harmony","data","require","_harmonyModules","_logger","_compiler","_component","_scope","_pkg","_graphql","_preview","_devFiles","_workspace","_docsEntities","_lodash","_envs","_docs","_docs2","_docs3","_defaultDocReader","_exceptions","_defineProperty","e","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","DocsMain","constructor","patterns","preview","pkg","compiler","workspace","logger","devFiles","envs","docPropSlot","docReaderSlot","getDocsMap","components","ComponentMap","as","component","getDocsFiles","getDevFiles","docFiles","get","DocsAspect","id","state","filesystem","files","filter","file","includes","relative","getDescription","componentDoc","getDoc","desc","description","getTemplate","env","getDocsTemplate","isFunction","undefined","getDocReader","extension","values","find","docReader","isFormatSupported","computeDoc","length","docFile","extname","FileExtensionNotSupported","doc","read","contents","err","debug","message","docData","Doc","filePath","DocPropList","props","getPatterns","getComponentDevPatterns","calculateEnv","skipWarnings","inInstallContext","componentEnvDocsDevPatterns","getDocsDevPatterns","componentPatterns","concat","name","pattern","getDevPatternToRegister","bind","registerDocReader","register","provider","graphql","loggerAspect","scope","config","createLogger","docs","DefaultDocReader","registerDevPattern","computeDocsOnLoad","opts","loadDocs","toObject","registerOnComponentLoad","registerOnCompAspectReCalc","docsSchema","registerDefinition","DocsPreviewDefinition","exports","Slot","withType","MainRuntime","PreviewAspect","GraphqlAspect","WorkspaceAspect","PkgAspect","CompilerAspect","LoggerAspect","DevFilesAspect","EnvsAspect","ScopeAspect","addRuntime"],"sources":["docs.main.runtime.ts"],"sourcesContent":["import type { SlotRegistry } from '@teambit/harmony';\nimport { Slot } from '@teambit/harmony';\nimport { MainRuntime } from '@teambit/harmony.modules.runtimes';\nimport type { LoggerMain, Logger } from '@teambit/logger';\nimport { LoggerAspect } from '@teambit/logger';\nimport type { CompilerMain } from '@teambit/compiler';\nimport { CompilerAspect } from '@teambit/compiler';\nimport type { Component, IComponent } from '@teambit/component';\nimport { ComponentMap } from '@teambit/component';\nimport type { ScopeMain } from '@teambit/scope';\nimport { ScopeAspect } from '@teambit/scope';\nimport type { PkgMain } from '@teambit/pkg';\nimport { PkgAspect } from '@teambit/pkg';\nimport type { Environment, EnvsMain } from '@teambit/envs';\nimport type { GraphqlMain } from '@teambit/graphql';\nimport { GraphqlAspect } from '@teambit/graphql';\nimport type { PreviewMain } from '@teambit/preview';\nimport { PreviewAspect } from '@teambit/preview';\nimport type { DevFilesMain } from '@teambit/dev-files';\nimport { DevFilesAspect } from '@teambit/dev-files';\nimport type { ComponentLoadOptions } from '@teambit/legacy.consumer-component';\nimport type { AbstractVinyl } from '@teambit/component.sources';\nimport type { Workspace } from '@teambit/workspace';\nimport { WorkspaceAspect } from '@teambit/workspace';\nimport { Doc, DocPropList } from '@teambit/docs.entities.doc';\nimport { isFunction } from 'lodash';\nimport { EnvsAspect } from '@teambit/envs';\nimport { DocsAspect } from './docs.aspect';\nimport { DocsPreviewDefinition } from './docs.preview-definition';\nimport { docsSchema } from './docs.graphql';\nimport type { DocReader } from './doc-reader';\nimport { DefaultDocReader } from './default-doc-reader';\nimport { FileExtensionNotSupported } from './exceptions';\n\nexport type ComponentDocs = {\n files: string[];\n component: Component;\n};\n\nexport type DocProp = {};\n\nexport type DocPropSlot = SlotRegistry<DocProp>;\n\nexport type DocReaderSlot = SlotRegistry<DocReader>;\n\nexport type DocsConfig = {\n /**\n * glob patterns to identify doc files.\n */\n patterns: string[];\n};\n\n/**\n * the component documentation extension.\n */\nexport class DocsMain {\n constructor(\n private patterns: string[],\n /**\n * envs extension.\n */\n private preview: PreviewMain,\n\n private pkg: PkgMain,\n\n private compiler: CompilerMain,\n\n private workspace: Workspace,\n\n private logger: Logger,\n\n private devFiles: DevFilesMain,\n\n private envs: EnvsMain,\n\n private docPropSlot: DocPropSlot,\n\n private docReaderSlot: DocReaderSlot\n ) {}\n\n /**\n * returns an array of doc file paths for a set of components.\n */\n getDocsMap(components: Component[]): ComponentMap<AbstractVinyl[]> {\n return ComponentMap.as<AbstractVinyl[]>(components, (component) => {\n return this.getDocsFiles(component);\n });\n }\n\n getDocsFiles(component: Component): AbstractVinyl[] {\n const devFiles = this.devFiles.getDevFiles(component);\n const docFiles = devFiles.get(DocsAspect.id);\n return component.state.filesystem.files.filter((file) => docFiles.includes(file.relative));\n }\n\n /**\n * compute the description of the component from its source code and docs file.\n */\n async getDescription(component: Component): Promise<string> {\n const componentDoc = this.getDoc(component);\n const desc = componentDoc?.description;\n return desc || '';\n }\n\n async getTemplate(env: Environment): Promise<string | undefined> {\n if (env.getDocsTemplate && isFunction(env.getDocsTemplate)) {\n return env.getDocsTemplate();\n }\n return undefined;\n }\n\n getDocReader(extension: string) {\n return this.docReaderSlot.values().find((docReader) => docReader.isFormatSupported(extension));\n }\n\n /**\n * compute a doc for a component.\n */\n async computeDoc(component: Component) {\n const docFiles = this.getDocsFiles(component);\n if (docFiles.length) {\n // currently taking the the first docs file found with an abstract. (we support only one)\n const docFile = docFiles[0];\n\n try {\n const docReader = this.getDocReader(docFile.extname);\n if (!docReader) throw new FileExtensionNotSupported(docFile.relative, docFile.extname);\n const doc = await docReader.read(docFile.relative, docFile.contents, component);\n return doc;\n } catch (err: any) {\n // it's ok to fail here.\n this.logger.debug(`docs.main.runtime.computeDoc caught an error: ${err.message}`);\n return null;\n }\n }\n\n return null;\n }\n\n getDoc(component: IComponent) {\n const docData = component.get(DocsAspect.id)?.data?.doc;\n if (!docData) return null;\n return new Doc(docData.filePath, new DocPropList(docData.props));\n }\n\n getPatterns() {\n return this.patterns;\n }\n\n getComponentDevPatterns(component: Component) {\n const env = this.envs.calculateEnv(component, { skipWarnings: !!this.workspace?.inInstallContext }).env;\n const componentEnvDocsDevPatterns: string[] = env.getDocsDevPatterns ? env.getDocsDevPatterns(component) : [];\n const componentPatterns = componentEnvDocsDevPatterns.concat(this.getPatterns());\n return { name: 'docs', pattern: componentPatterns };\n }\n\n getDevPatternToRegister() {\n return this.getComponentDevPatterns.bind(this);\n }\n /**\n * register a new doc reader. this allows to support further\n * documentation file formats.\n */\n registerDocReader(docReader: DocReader) {\n this.docReaderSlot.register(docReader);\n return this;\n }\n\n static slots = [Slot.withType<DocProp>(), Slot.withType<DocReader>()];\n\n static runtime = MainRuntime;\n static dependencies = [\n PreviewAspect,\n GraphqlAspect,\n WorkspaceAspect,\n PkgAspect,\n CompilerAspect,\n LoggerAspect,\n DevFilesAspect,\n EnvsAspect,\n ScopeAspect,\n ];\n\n static defaultConfig = {\n patterns: ['**/*.docs.*'],\n };\n\n static async provider(\n [preview, graphql, workspace, pkg, compiler, loggerAspect, devFiles, envs, scope]: [\n PreviewMain,\n GraphqlMain,\n Workspace,\n PkgMain,\n CompilerMain,\n LoggerMain,\n DevFilesMain,\n EnvsMain,\n ScopeMain,\n ],\n config: DocsConfig,\n [docPropSlot, docReaderSlot]: [DocPropSlot, DocReaderSlot]\n ) {\n const logger = loggerAspect.createLogger(DocsAspect.id);\n const docs = new DocsMain(\n config.patterns,\n preview,\n pkg,\n compiler,\n workspace,\n logger,\n devFiles,\n envs,\n docPropSlot,\n docReaderSlot\n );\n docs.registerDocReader(new DefaultDocReader(pkg, compiler, workspace));\n devFiles.registerDevPattern(docs.getDevPatternToRegister());\n\n const computeDocsOnLoad = async (component: Component, opts?: ComponentLoadOptions) => {\n if (opts?.loadDocs === false) return undefined;\n // const docFiles = await docs.computeDocs(component);\n const doc = await docs.computeDoc(component);\n\n return {\n doc: doc?.toObject(),\n // docFiles\n };\n };\n\n if (workspace) {\n workspace.registerOnComponentLoad(computeDocsOnLoad);\n }\n if (scope) {\n scope.registerOnCompAspectReCalc(computeDocsOnLoad);\n }\n\n graphql.register(() => docsSchema(docs));\n\n preview.registerDefinition(new DocsPreviewDefinition(docs));\n return docs;\n }\n}\n\nDocsAspect.addRuntime(DocsMain);\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_harmony","data","require","_harmonyModules","_logger","_compiler","_component","_scope","_pkg","_graphql","_preview","_devFiles","_workspace","_docsEntities","_lodash","_envs","_docs","_docs2","_docs3","_defaultDocReader","_exceptions","_defineProperty","e","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","DocsMain","constructor","patterns","preview","pkg","compiler","workspace","logger","devFiles","envs","docPropSlot","docReaderSlot","getDocsMap","components","ComponentMap","as","component","getDocsFiles","getDevFiles","docFiles","get","DocsAspect","id","state","filesystem","files","filter","file","includes","relative","getDescription","componentDoc","getDoc","desc","description","getTemplate","env","getDocsTemplate","isFunction","undefined","getDocReader","extension","values","find","docReader","isFormatSupported","computeDoc","length","docFile","extname","FileExtensionNotSupported","doc","read","contents","err","debug","message","computeDocDataInScope","toObject","docData","Doc","filePath","DocPropList","props","getPatterns","getComponentDevPatterns","calculateEnv","skipWarnings","inInstallContext","componentEnvDocsDevPatterns","getDocsDevPatterns","componentPatterns","concat","name","pattern","getDevPatternToRegister","bind","registerDocReader","register","provider","graphql","loggerAspect","scope","config","createLogger","docs","DefaultDocReader","registerDevPattern","computeDocsOnLoad","opts","loadDocs","registerOnComponentLoad","registerOnCompAspectReCalc","docsSchema","registerDefinition","DocsPreviewDefinition","exports","Slot","withType","MainRuntime","PreviewAspect","GraphqlAspect","WorkspaceAspect","PkgAspect","CompilerAspect","LoggerAspect","DevFilesAspect","EnvsAspect","ScopeAspect","addRuntime"],"sources":["docs.main.runtime.ts"],"sourcesContent":["import type { SlotRegistry } from '@teambit/harmony';\nimport { Slot } from '@teambit/harmony';\nimport { MainRuntime } from '@teambit/harmony.modules.runtimes';\nimport type { LoggerMain, Logger } from '@teambit/logger';\nimport { LoggerAspect } from '@teambit/logger';\nimport type { CompilerMain } from '@teambit/compiler';\nimport { CompilerAspect } from '@teambit/compiler';\nimport type { Component, IComponent } from '@teambit/component';\nimport { ComponentMap } from '@teambit/component';\nimport type { ScopeMain } from '@teambit/scope';\nimport { ScopeAspect } from '@teambit/scope';\nimport type { PkgMain } from '@teambit/pkg';\nimport { PkgAspect } from '@teambit/pkg';\nimport type { Environment, EnvsMain } from '@teambit/envs';\nimport type { GraphqlMain } from '@teambit/graphql';\nimport { GraphqlAspect } from '@teambit/graphql';\nimport type { PreviewMain } from '@teambit/preview';\nimport { PreviewAspect } from '@teambit/preview';\nimport type { DevFilesMain } from '@teambit/dev-files';\nimport { DevFilesAspect } from '@teambit/dev-files';\nimport type { ComponentLoadOptions } from '@teambit/legacy.consumer-component';\nimport type { AbstractVinyl } from '@teambit/component.sources';\nimport type { Workspace } from '@teambit/workspace';\nimport { WorkspaceAspect } from '@teambit/workspace';\nimport { Doc, DocPropList } from '@teambit/docs.entities.doc';\nimport { isFunction } from 'lodash';\nimport { EnvsAspect } from '@teambit/envs';\nimport { DocsAspect } from './docs.aspect';\nimport { DocsPreviewDefinition } from './docs.preview-definition';\nimport { docsSchema } from './docs.graphql';\nimport type { DocReader } from './doc-reader';\nimport { DefaultDocReader } from './default-doc-reader';\nimport { FileExtensionNotSupported } from './exceptions';\n\nexport type ComponentDocs = {\n files: string[];\n component: Component;\n};\n\nexport type DocProp = {};\n\nexport type DocPropSlot = SlotRegistry<DocProp>;\n\nexport type DocReaderSlot = SlotRegistry<DocReader>;\n\nexport type DocsConfig = {\n /**\n * glob patterns to identify doc files.\n */\n patterns: string[];\n};\n\n/**\n * the component documentation extension.\n */\nexport class DocsMain {\n constructor(\n private patterns: string[],\n /**\n * envs extension.\n */\n private preview: PreviewMain,\n\n private pkg: PkgMain,\n\n private compiler: CompilerMain,\n\n private workspace: Workspace,\n\n private logger: Logger,\n\n private devFiles: DevFilesMain,\n\n private envs: EnvsMain,\n\n private docPropSlot: DocPropSlot,\n\n private docReaderSlot: DocReaderSlot\n ) {}\n\n /**\n * returns an array of doc file paths for a set of components.\n */\n getDocsMap(components: Component[]): ComponentMap<AbstractVinyl[]> {\n return ComponentMap.as<AbstractVinyl[]>(components, (component) => {\n return this.getDocsFiles(component);\n });\n }\n\n getDocsFiles(component: Component): AbstractVinyl[] {\n const devFiles = this.devFiles.getDevFiles(component);\n const docFiles = devFiles.get(DocsAspect.id);\n return component.state.filesystem.files.filter((file) => docFiles.includes(file.relative));\n }\n\n /**\n * compute the description of the component from its source code and docs file.\n */\n async getDescription(component: Component): Promise<string> {\n const componentDoc = this.getDoc(component);\n const desc = componentDoc?.description;\n return desc || '';\n }\n\n async getTemplate(env: Environment): Promise<string | undefined> {\n if (env.getDocsTemplate && isFunction(env.getDocsTemplate)) {\n return env.getDocsTemplate();\n }\n return undefined;\n }\n\n getDocReader(extension: string) {\n return this.docReaderSlot.values().find((docReader) => docReader.isFormatSupported(extension));\n }\n\n /**\n * compute a doc for a component.\n */\n async computeDoc(component: Component) {\n const docFiles = this.getDocsFiles(component);\n if (docFiles.length) {\n // currently taking the the first docs file found with an abstract. (we support only one)\n const docFile = docFiles[0];\n\n try {\n const docReader = this.getDocReader(docFile.extname);\n if (!docReader) throw new FileExtensionNotSupported(docFile.relative, docFile.extname);\n const doc = await docReader.read(docFile.relative, docFile.contents, component);\n return doc;\n } catch (err: any) {\n // it's ok to fail here.\n this.logger.debug(`docs.main.runtime.computeDoc caught an error: ${err.message}`);\n return null;\n }\n }\n\n return null;\n }\n\n /**\n * the docs data of a component that a scope re-calculates (e.g. when it snaps a lane merge).\n * a scope can fail to read a docs file that a workspace reads. e.g. the default doc reader loads the compiled docs\n * file from the workspace node_modules. then, return undefined to keep the stored doc, instead of an empty one.\n */\n async computeDocDataInScope(component: Component) {\n const doc = await this.computeDoc(component);\n if (!doc && this.getDocsFiles(component).length) return undefined;\n return { doc: doc?.toObject() };\n }\n\n getDoc(component: IComponent) {\n const docData = component.get(DocsAspect.id)?.data?.doc;\n if (!docData) return null;\n return new Doc(docData.filePath, new DocPropList(docData.props));\n }\n\n getPatterns() {\n return this.patterns;\n }\n\n getComponentDevPatterns(component: Component) {\n const env = this.envs.calculateEnv(component, { skipWarnings: !!this.workspace?.inInstallContext }).env;\n const componentEnvDocsDevPatterns: string[] = env.getDocsDevPatterns ? env.getDocsDevPatterns(component) : [];\n const componentPatterns = componentEnvDocsDevPatterns.concat(this.getPatterns());\n return { name: 'docs', pattern: componentPatterns };\n }\n\n getDevPatternToRegister() {\n return this.getComponentDevPatterns.bind(this);\n }\n /**\n * register a new doc reader. this allows to support further\n * documentation file formats.\n */\n registerDocReader(docReader: DocReader) {\n this.docReaderSlot.register(docReader);\n return this;\n }\n\n static slots = [Slot.withType<DocProp>(), Slot.withType<DocReader>()];\n\n static runtime = MainRuntime;\n static dependencies = [\n PreviewAspect,\n GraphqlAspect,\n WorkspaceAspect,\n PkgAspect,\n CompilerAspect,\n LoggerAspect,\n DevFilesAspect,\n EnvsAspect,\n ScopeAspect,\n ];\n\n static defaultConfig = {\n patterns: ['**/*.docs.*'],\n };\n\n static async provider(\n [preview, graphql, workspace, pkg, compiler, loggerAspect, devFiles, envs, scope]: [\n PreviewMain,\n GraphqlMain,\n Workspace,\n PkgMain,\n CompilerMain,\n LoggerMain,\n DevFilesMain,\n EnvsMain,\n ScopeMain,\n ],\n config: DocsConfig,\n [docPropSlot, docReaderSlot]: [DocPropSlot, DocReaderSlot]\n ) {\n const logger = loggerAspect.createLogger(DocsAspect.id);\n const docs = new DocsMain(\n config.patterns,\n preview,\n pkg,\n compiler,\n workspace,\n logger,\n devFiles,\n envs,\n docPropSlot,\n docReaderSlot\n );\n docs.registerDocReader(new DefaultDocReader(pkg, compiler, workspace));\n devFiles.registerDevPattern(docs.getDevPatternToRegister());\n\n const computeDocsOnLoad = async (component: Component, opts?: ComponentLoadOptions) => {\n if (opts?.loadDocs === false) return undefined;\n // const docFiles = await docs.computeDocs(component);\n const doc = await docs.computeDoc(component);\n\n return {\n doc: doc?.toObject(),\n // docFiles\n };\n };\n\n if (workspace) {\n workspace.registerOnComponentLoad(computeDocsOnLoad);\n }\n if (scope) {\n scope.registerOnCompAspectReCalc((component) => docs.computeDocDataInScope(component));\n }\n\n graphql.register(() => docsSchema(docs));\n\n preview.registerDefinition(new DocsPreviewDefinition(docs));\n return docs;\n }\n}\n\nDocsAspect.addRuntime(DocsMain);\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+
3
+ function _chai() {
4
+ const data = require("chai");
5
+ _chai = function () {
6
+ return data;
7
+ };
8
+ return data;
9
+ }
10
+ function _docsEntities() {
11
+ const data = require("@teambit/docs.entities.doc");
12
+ _docsEntities = function () {
13
+ return data;
14
+ };
15
+ return data;
16
+ }
17
+ function _docsMain() {
18
+ const data = require("./docs.main.runtime");
19
+ _docsMain = function () {
20
+ return data;
21
+ };
22
+ return data;
23
+ }
24
+ function createDocsMain(docFiles, docReader) {
25
+ const devFiles = {
26
+ getDevFiles: () => ({
27
+ get: () => docFiles
28
+ })
29
+ };
30
+ const logger = {
31
+ debug: () => {}
32
+ };
33
+ const docReaderSlot = {
34
+ values: () => [docReader]
35
+ };
36
+ return Object.assign(Object.create(_docsMain().DocsMain.prototype), {
37
+ logger,
38
+ devFiles,
39
+ docReaderSlot
40
+ });
41
+ }
42
+ function createComponent(filePaths) {
43
+ const files = filePaths.map(relative => ({
44
+ relative,
45
+ extname: '.tsx',
46
+ contents: Buffer.from('')
47
+ }));
48
+ return {
49
+ state: {
50
+ filesystem: {
51
+ files
52
+ }
53
+ }
54
+ };
55
+ }
56
+ const failingReader = {
57
+ read: async () => {
58
+ throw new Error('the compiled docs file is not in node_modules');
59
+ },
60
+ isFormatSupported: () => true
61
+ };
62
+ describe('DocsMain.computeDocDataInScope', () => {
63
+ it('should return undefined, to keep the stored doc, when a docs file exists but cannot be read', async () => {
64
+ const docs = createDocsMain(['button.docs.tsx'], failingReader);
65
+ (0, _chai().expect)(await docs.computeDocDataInScope(createComponent(['button.tsx', 'button.docs.tsx']))).to.be.undefined;
66
+ });
67
+ it('should return an empty doc when the component has no docs file', async () => {
68
+ const docs = createDocsMain([], failingReader);
69
+ (0, _chai().expect)(await docs.computeDocDataInScope(createComponent(['button.tsx']))).to.deep.equal({
70
+ doc: undefined
71
+ });
72
+ });
73
+ it('should return the doc when the docs file is read', async () => {
74
+ const reader = {
75
+ read: async path => _docsEntities().Doc.from(path, {
76
+ description: 'a button',
77
+ displayName: 'Button'
78
+ }),
79
+ isFormatSupported: () => true
80
+ };
81
+ const docs = createDocsMain(['button.docs.tsx'], reader);
82
+ const data = await docs.computeDocDataInScope(createComponent(['button.tsx', 'button.docs.tsx']));
83
+ (0, _chai().expect)(data?.doc?.filePath).to.equal('button.docs.tsx');
84
+ });
85
+ });
86
+
87
+ //# sourceMappingURL=docs.main.runtime.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_chai","data","require","_docsEntities","_docsMain","createDocsMain","docFiles","docReader","devFiles","getDevFiles","get","logger","debug","docReaderSlot","values","Object","assign","create","DocsMain","prototype","createComponent","filePaths","files","map","relative","extname","contents","Buffer","from","state","filesystem","failingReader","read","Error","isFormatSupported","describe","it","docs","expect","computeDocDataInScope","to","be","undefined","deep","equal","doc","reader","path","Doc","description","displayName","filePath"],"sources":["docs.main.runtime.spec.ts"],"sourcesContent":["import { expect } from 'chai';\nimport type { Component } from '@teambit/component';\nimport { Doc } from '@teambit/docs.entities.doc';\nimport { DocsMain } from './docs.main.runtime';\nimport type { DocReader } from './doc-reader';\n\nfunction createDocsMain(docFiles: string[], docReader: DocReader) {\n const devFiles: any = { getDevFiles: () => ({ get: () => docFiles }) };\n const logger: any = { debug: () => {} };\n const docReaderSlot: any = { values: () => [docReader] };\n return Object.assign(Object.create(DocsMain.prototype), { logger, devFiles, docReaderSlot }) as DocsMain;\n}\n\nfunction createComponent(filePaths: string[]): Component {\n const files = filePaths.map((relative) => ({ relative, extname: '.tsx', contents: Buffer.from('') }));\n return { state: { filesystem: { files } } } as any;\n}\n\nconst failingReader: DocReader = {\n read: async () => {\n throw new Error('the compiled docs file is not in node_modules');\n },\n isFormatSupported: () => true,\n};\n\ndescribe('DocsMain.computeDocDataInScope', () => {\n it('should return undefined, to keep the stored doc, when a docs file exists but cannot be read', async () => {\n const docs = createDocsMain(['button.docs.tsx'], failingReader);\n expect(await docs.computeDocDataInScope(createComponent(['button.tsx', 'button.docs.tsx']))).to.be.undefined;\n });\n it('should return an empty doc when the component has no docs file', async () => {\n const docs = createDocsMain([], failingReader);\n expect(await docs.computeDocDataInScope(createComponent(['button.tsx']))).to.deep.equal({ doc: undefined });\n });\n it('should return the doc when the docs file is read', async () => {\n const reader: DocReader = {\n read: async (path: string) => Doc.from(path, { description: 'a button', displayName: 'Button' }),\n isFormatSupported: () => true,\n };\n const docs = createDocsMain(['button.docs.tsx'], reader);\n const data = await docs.computeDocDataInScope(createComponent(['button.tsx', 'button.docs.tsx']));\n expect(data?.doc?.filePath).to.equal('button.docs.tsx');\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,5 @@
1
- import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.docs_docs@1.0.1263/dist/docs.composition.js';
2
- import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.docs_docs@1.0.1263/dist/docs.docs.mdx';
1
+ import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.docs_docs@1.0.1265/dist/docs.composition.js';
2
+ import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.docs_docs@1.0.1265/dist/docs.docs.mdx';
3
3
 
4
4
  export const compositions = [compositions_0];
5
5
  export const overview = [overview_0];
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/docs",
3
- "version": "1.0.1263",
3
+ "version": "1.0.1265",
4
4
  "homepage": "https://bit.cloud/teambit/docs/docs",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "teambit.docs",
8
8
  "name": "docs",
9
- "version": "1.0.1263"
9
+ "version": "1.0.1265"
10
10
  },
11
11
  "dependencies": {
12
12
  "graphql-tag": "2.12.1",
@@ -29,17 +29,17 @@
29
29
  "@teambit/design.ui.surfaces.status-message-card": "0.0.18",
30
30
  "@teambit/workspace.ui.use-workspace-mode": "0.0.8",
31
31
  "@teambit/base-ui.loaders.skeleton": "1.0.2",
32
- "@teambit/compiler": "1.0.1260",
33
- "@teambit/component": "1.0.1243",
34
- "@teambit/pkg": "1.0.1260",
35
- "@teambit/workspace": "1.0.1260",
36
- "@teambit/dev-files": "1.0.1260",
37
- "@teambit/envs": "1.0.1243",
38
- "@teambit/preview": "1.0.1261",
39
- "@teambit/scope": "1.0.1259",
40
- "@teambit/api-reference": "1.0.1263",
41
- "@teambit/component-compare": "1.0.1261",
42
- "@teambit/compositions": "1.0.1262"
32
+ "@teambit/compiler": "1.0.1261",
33
+ "@teambit/component": "1.0.1244",
34
+ "@teambit/pkg": "1.0.1261",
35
+ "@teambit/workspace": "1.0.1261",
36
+ "@teambit/dev-files": "1.0.1261",
37
+ "@teambit/envs": "1.0.1244",
38
+ "@teambit/preview": "1.0.1262",
39
+ "@teambit/scope": "1.0.1260",
40
+ "@teambit/api-reference": "1.0.1264",
41
+ "@teambit/component-compare": "1.0.1262",
42
+ "@teambit/compositions": "1.0.1263"
43
43
  },
44
44
  "devDependencies": {
45
45
  "@types/lodash": "4.14.165",
@@ -50,7 +50,8 @@
50
50
  },
51
51
  "peerDependencies": {
52
52
  "react": "^17.0.0 || ^18.0.0 || ^19.0.0",
53
- "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0"
53
+ "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0",
54
+ "chai": "5.2.1"
54
55
  },
55
56
  "license": "Apache-2.0",
56
57
  "optionalDependencies": {},