@teambit/schema 1.0.1079 → 1.0.1081
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/api-diff-compute.spec.d.ts +1 -0
- package/dist/api-diff-compute.spec.js +547 -0
- package/dist/api-diff-compute.spec.js.map +1 -0
- package/dist/mock/button-diff.json +4 -20
- package/dist/mock/button-schemas.json +6 -146
- package/dist/mock/default-export/index.d.ts +5 -0
- package/dist/mock/default-export/index.js +21 -0
- package/dist/mock/default-export/index.js.map +1 -0
- package/dist/mock/default-export/tsconfig.json +19 -0
- package/dist/{preview-1785260578779.js → preview-1785278532531.js} +4 -4
- package/dist/schema-diff.cmd.d.ts +2 -0
- package/dist/schema-diff.cmd.js +51 -6
- package/dist/schema-diff.cmd.js.map +1 -1
- package/dist/schema.graphql.js +11 -0
- package/dist/schema.graphql.js.map +1 -1
- package/dist/schema.main.runtime.d.ts +33 -1
- package/dist/schema.main.runtime.js +157 -9
- package/dist/schema.main.runtime.js.map +1 -1
- package/dist/schema.spec.js +37 -0
- package/dist/schema.spec.js.map +1 -1
- package/mock/button-diff.json +4 -20
- package/mock/button-schemas.json +6 -146
- package/mock/default-export/index.ts +9 -0
- package/mock/default-export/tsconfig.json +19 -0
- package/package.json +21 -21
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_cli","data","require","_component","_harmony","_graphql","_envs","_logger","_semanticsEntities","_builder","_workspace","_scope","_legacy","_scope2","_semanticsEntities2","_schema","_schema2","_schemaDiff","_schema3","_schema4","_schema5","_defineProperty","e","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","SchemaMain","constructor","parserSlot","impactRuleSlot","envs","config","builder","workspace","logger","impactAssessor","getDefaultParser","get","defaultParser","registerSchemaClass","schema","SchemaRegistry","register","registerSchemaClasses","getSchemas","registerGetSchemas","parseModule","path","content","parsers","toArray","maybeParser","find","parser","match","extension","getSchemaExtractor","component","tsserverPath","contextPath","env","getEnv","Error","name","undefined","getSchema","shouldDisposeResourcesOnceDone","alwaysRunExtractor","skipInternals","schemaTransformers","apiTransformers","includeFiles","disabled","APISchema","empty","id","buildStatus","BuildStatus","Succeed","formatter","getFormatter","setKey","schemaExtractor","result","extract","dispose","err","message","warn","toString","schemaArtifact","getArtifactsVinylByAspectAndTaskName","SchemaAspect","SCHEMA_TASK_NAME","length","debug","schemaJsonStr","contents","schemaJson","JSON","parse","getSchemaFromObject","SyntaxError","error","obj","fromObject","getSchemaFromRemote","isPattern","some","char","includes","getId","startsWith","compId","resolveComponentIdFromPackageName","compIdStr","http","Http","connect","SYMPHONY_GRAPHQL","CENTRAL_BIT_HUB_NAME","response","registerParser","calcSchemaData","getSchemaData","state","aspects","registerImpactRules","rules","getImpactAssessor","registerRules","values","flat","computeAPIDiff","baseComp","compareComp","baseSchema","compareSchema","Promise","all","assessor","isSchemaTaskDisabled","provider","cli","graphql","loggerMain","scope","createLogger","ImpactAssessor","registerDefaultRules","DEFAULT_IMPACT_RULES","schemaTask","SchemaTask","registerBuildTasks","schemaCmd","SchemaCommand","commands","SchemaDiffCommand","schemaSchema","registerService","SchemaService","registerOnComponentLoad","registerOnCompAspectReCalc","Schemas","exports","MainRuntime","EnvsAspect","CLIAspect","ComponentAspect","GraphqlAspect","LoggerAspect","BuilderAspect","WorkspaceAspect","ScopeAspect","Slot","withType","addRuntime","_default","default"],"sources":["schema.main.runtime.ts"],"sourcesContent":["import type { CLIMain } from '@teambit/cli';\nimport { MainRuntime, CLIAspect } from '@teambit/cli';\nimport type { Component, ComponentMain } from '@teambit/component';\nimport { ComponentAspect } from '@teambit/component';\nimport type { SlotRegistry } from '@teambit/harmony';\nimport { Slot } from '@teambit/harmony';\nimport type { GraphqlMain } from '@teambit/graphql';\nimport { GraphqlAspect } from '@teambit/graphql';\nimport type { EnvsMain } from '@teambit/envs';\nimport { EnvsAspect } from '@teambit/envs';\nimport type { Logger, LoggerMain } from '@teambit/logger';\nimport { LoggerAspect } from '@teambit/logger';\nimport type { PrettierConfigMutator } from '@teambit/defender.prettier.config-mutator';\nimport type { Export, SchemaNodeConstructor } from '@teambit/semantics.entities.semantic-schema';\nimport { APISchema, Schemas, SchemaRegistry } from '@teambit/semantics.entities.semantic-schema';\nimport type { BuilderMain } from '@teambit/builder';\nimport { BuilderAspect } from '@teambit/builder';\nimport type { Workspace } from '@teambit/workspace';\nimport { WorkspaceAspect } from '@teambit/workspace';\nimport type { ScopeMain } from '@teambit/scope';\nimport { ScopeAspect } from '@teambit/scope';\nimport type { Formatter } from '@teambit/formatter';\nimport type { SchemaNodeTransformer, SchemaTransformer } from '@teambit/typescript';\nimport { BuildStatus, CENTRAL_BIT_HUB_NAME, SYMPHONY_GRAPHQL } from '@teambit/legacy.constants';\nimport { Http } from '@teambit/scope.network';\nimport type { ImpactRule, APIDiffResult } from '@teambit/semantics.entities.semantic-schema-diff';\nimport { ImpactAssessor, DEFAULT_IMPACT_RULES, computeAPIDiff } from '@teambit/semantics.entities.semantic-schema-diff';\nimport type { Parser } from './parser';\nimport { SchemaAspect } from './schema.aspect';\nimport type { SchemaExtractor } from './schema-extractor';\nimport { SchemaCommand } from './schema.cmd';\nimport { SchemaDiffCommand } from './schema-diff.cmd';\nimport { schemaSchema } from './schema.graphql';\nimport { SchemaTask, SCHEMA_TASK_NAME } from './schema.task';\nimport { SchemaService } from './schema.service';\n\nexport type ParserSlot = SlotRegistry<Parser>;\nexport type ImpactRuleSlot = SlotRegistry<ImpactRule[]>;\n\nexport type SchemaConfig = {\n /**\n * default parser\n */\n defaultParser: string;\n /**\n * disable extracting schema\n */\n disabled?: boolean;\n};\n\n/**\n * extension for extracting component schemas.\n */\nexport class SchemaMain {\n constructor(\n /**\n * parsers slot.\n */\n private parserSlot: ParserSlot,\n\n /**\n * impact rules slot — other aspects register custom rules via registerImpactRules().\n */\n private impactRuleSlot: ImpactRuleSlot,\n\n private envs: EnvsMain,\n\n private config: SchemaConfig,\n\n private builder: BuilderMain,\n\n private workspace: Workspace,\n\n private logger: Logger,\n\n private impactAssessor: ImpactAssessor\n ) {}\n\n /**\n * get the default parser.\n */\n getDefaultParser(): Parser {\n return this.parserSlot.get(this.config.defaultParser) as Parser;\n }\n\n /**\n * @deprecated use registerSchemaClasses instead\n * registerSchemaClasses is better for performance as it lazy-loads the schemas.\n */\n registerSchemaClass(schema: SchemaNodeConstructor) {\n SchemaRegistry.register(schema);\n }\n\n registerSchemaClasses(getSchemas: () => SchemaNodeConstructor[]) {\n SchemaRegistry.registerGetSchemas(getSchemas);\n }\n\n /**\n * parse a module into a component schema.\n */\n parseModule(path: string, content?: string): Export[] {\n const parsers = this.parserSlot.toArray();\n let maybeParser = parsers.find(([, parser]) => {\n const match = path.match(parser.extension);\n return match;\n });\n\n if (!maybeParser) {\n maybeParser = [this.config.defaultParser, this.getDefaultParser()];\n }\n\n const [, parser] = maybeParser;\n return parser.parseModule(path, content);\n }\n\n getSchemaExtractor(component: Component, tsserverPath?: string, contextPath?: string): SchemaExtractor {\n const env = this.envs.getEnv(component).env;\n if (typeof env.getSchemaExtractor === 'undefined') {\n throw new Error(`No SchemaExtractor defined for ${env.name}`);\n }\n\n return env.getSchemaExtractor(undefined, tsserverPath, contextPath);\n }\n\n /**\n * get a schema of a component.\n * @param component target component.\n * @param shouldDisposeResourcesOnceDone for long-running processes, such as bit-start/bit-watch, this is not\n * relevant. for calling the API only to get a schema for one component, this is needed to ensure the ts-server is\n * not kept alive. otherwise, the process will never end.\n *\n */\n async getSchema(\n component: Component,\n shouldDisposeResourcesOnceDone = false,\n alwaysRunExtractor = false,\n tsserverPath?: string,\n contextPath?: string,\n skipInternals?: boolean,\n schemaTransformers?: SchemaTransformer[],\n apiTransformers?: SchemaNodeTransformer[],\n includeFiles?: string[]\n ): Promise<APISchema> {\n if (this.config.disabled) {\n return APISchema.empty(component.id as any);\n }\n\n if (alwaysRunExtractor || (this.workspace && component.buildStatus !== BuildStatus.Succeed)) {\n try {\n const env = this.envs.getEnv(component).env;\n // types need to be fixed\n const formatter: Formatter | undefined = env.getFormatter?.(null, [\n (config: PrettierConfigMutator) => {\n config.setKey('parser', 'typescript');\n return config;\n },\n ]);\n if (typeof env.getSchemaExtractor === 'undefined') {\n throw new Error(`No SchemaExtractor defined for ${env.name}`);\n }\n const schemaExtractor: SchemaExtractor = env.getSchemaExtractor(\n undefined,\n tsserverPath,\n contextPath,\n schemaTransformers,\n apiTransformers\n );\n\n const result = await schemaExtractor.extract(component, {\n formatter,\n tsserverPath,\n contextPath,\n skipInternals,\n includeFiles,\n });\n if (shouldDisposeResourcesOnceDone) schemaExtractor.dispose();\n\n return result;\n } catch (err) {\n if (alwaysRunExtractor) throw err;\n const message = err instanceof Error ? err.message : String(err);\n this.logger.warn(\n `failed extracting schema for ${component.id.toString()}, falling back to artifacts. extractor error: ${message}`,\n err\n );\n }\n }\n\n // on scope get schema from builder api\n const schemaArtifact = await this.builder.getArtifactsVinylByAspectAndTaskName(\n component,\n SchemaAspect.id,\n SCHEMA_TASK_NAME\n );\n\n if (schemaArtifact.length === 0) {\n this.logger.debug(`no schema found for ${component.id.toString()}`);\n\n /**\n * return empty schema\n * when tag/snap without build\n * or backwards compatibility\n */\n return APISchema.empty(component.id as any);\n }\n\n const schemaJsonStr = schemaArtifact[0].contents.toString('utf-8');\n\n try {\n const schemaJson = JSON.parse(schemaJsonStr);\n return this.getSchemaFromObject(schemaJson);\n } catch (e) {\n if (e instanceof SyntaxError) {\n this.logger.error(e.message);\n throw new Error(`Invalid schema.json for ${component.id}`);\n }\n throw e;\n }\n }\n\n getSchemaFromObject(obj: Record<string, any>): APISchema {\n return APISchema.fromObject(obj);\n }\n\n async getSchemaFromRemote(id: string): Promise<APISchema> {\n const isPattern = ['*', ',', '!', '$', ':'].some((char) => id.includes(char));\n if (isPattern) {\n throw new Error(`remote schema command doesn't support pattern matching. please use a specific component id`);\n }\n const getId = async () => {\n if (!id.startsWith('@')) return id;\n if (!this.workspace) throw new Error(`Please provide a component ID. The ${id} recognized as a package name.`);\n const compId = await this.workspace.resolveComponentIdFromPackageName(id, true);\n return compId.toString();\n };\n const compIdStr = await getId();\n const http = await Http.connect(SYMPHONY_GRAPHQL, CENTRAL_BIT_HUB_NAME);\n const response = await http.getSchema(compIdStr);\n return this.getSchemaFromObject(response);\n }\n\n /**\n * register a new parser.\n */\n registerParser(parser: Parser): SchemaMain {\n this.parserSlot.register(parser);\n return this;\n }\n\n async calcSchemaData(): Promise<{ disabled?: boolean }> {\n return {\n disabled: this.config.disabled,\n };\n }\n\n getSchemaData(component: Component) {\n return component.state.aspects.get(SchemaAspect.id)?.data;\n }\n\n /**\n * Register custom impact rules for API diff assessment.\n * Custom rules take priority over default rules.\n * This allows environments to customize what constitutes a breaking change.\n */\n registerImpactRules(rules: ImpactRule[]): void {\n this.impactRuleSlot.register(rules);\n }\n\n /**\n * Get the ImpactAssessor with default + all registered custom rules from the slot.\n */\n getImpactAssessor(): ImpactAssessor {\n this.impactAssessor.registerRules(this.impactRuleSlot.values().flat());\n return this.impactAssessor;\n }\n\n /**\n * Compute the semantic API diff between two component versions.\n */\n async computeAPIDiff(baseComp: Component, compareComp: Component): Promise<APIDiffResult | null> {\n try {\n const [baseSchema, compareSchema] = await Promise.all([this.getSchema(baseComp), this.getSchema(compareComp)]);\n const assessor = this.getImpactAssessor();\n return computeAPIDiff(baseSchema, compareSchema, assessor);\n } catch (err: any) {\n this.logger.warn(`failed computing API diff: ${err.message}`);\n return null;\n }\n }\n\n isSchemaTaskDisabled(component: Component) {\n return this.getSchemaData(component)?.disabled;\n }\n\n static runtime = MainRuntime;\n static dependencies = [\n EnvsAspect,\n CLIAspect,\n ComponentAspect,\n GraphqlAspect,\n LoggerAspect,\n BuilderAspect,\n WorkspaceAspect,\n ScopeAspect,\n ];\n static slots = [Slot.withType<Parser>(), Slot.withType<ImpactRule[]>()];\n\n static defaultConfig = {\n defaultParser: 'teambit.typescript/typescript',\n disabled: false,\n };\n\n static async provider(\n [envs, cli, component, graphql, loggerMain, builder, workspace, scope]: [\n EnvsMain,\n CLIMain,\n ComponentMain,\n GraphqlMain,\n LoggerMain,\n BuilderMain,\n Workspace,\n ScopeMain,\n ],\n config: SchemaConfig,\n [parserSlot, impactRuleSlot]: [ParserSlot, ImpactRuleSlot]\n ) {\n const logger = loggerMain.createLogger(SchemaAspect.id);\n const impactAssessor = new ImpactAssessor();\n impactAssessor.registerDefaultRules(DEFAULT_IMPACT_RULES);\n const schema = new SchemaMain(parserSlot, impactRuleSlot, envs, config, builder, workspace, logger, impactAssessor);\n const schemaTask = new SchemaTask(SchemaAspect.id, schema, logger);\n builder.registerBuildTasks([schemaTask]);\n const schemaCmd = new SchemaCommand(schema, component, logger);\n schemaCmd.commands = [new SchemaDiffCommand(schema, component, logger)];\n cli.register(schemaCmd);\n graphql.register(() => schemaSchema(schema));\n envs.registerService(new SchemaService());\n if (workspace) {\n workspace.registerOnComponentLoad(async () => schema.calcSchemaData());\n }\n if (scope) {\n scope.registerOnCompAspectReCalc(async () => schema.calcSchemaData());\n }\n // register all default schema classes\n schema.registerSchemaClasses(() => Object.values(Schemas));\n\n return schema;\n }\n}\n\nSchemaAspect.addRuntime(SchemaMain);\n\nexport default SchemaMain;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_cli","data","require","_component","_harmony","_graphql","_envs","_logger","_semanticsEntities","_builder","_workspace","_scope","_legacy","_scope2","_semanticsEntities2","_schema","_schema2","_schemaDiff","_schema3","_schema4","_schema5","_defineProperty","e","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","SchemaMain","constructor","parserSlot","impactRuleSlot","envs","config","builder","workspace","logger","impactAssessor","Map","getDefaultParser","get","defaultParser","registerSchemaClass","schema","SchemaRegistry","register","registerSchemaClasses","getSchemas","registerGetSchemas","parseModule","path","content","parsers","toArray","maybeParser","find","parser","match","extension","getSchemaExtractor","component","tsserverPath","contextPath","env","getEnv","Error","name","undefined","getSchema","shouldDisposeResourcesOnceDone","alwaysRunExtractor","skipInternals","schemaTransformers","apiTransformers","includeFiles","getSchemaWithAvailability","disabled","APISchema","empty","id","availability","available","reason","extractionFailure","buildStatus","BuildStatus","Succeed","formatter","getFormatter","setKey","schemaExtractor","result","extract","dispose","live","err","message","warn","toString","fromArtifact","readSchemaFromArtifact","debug","schemaArtifact","getArtifactsVinylByAspectAndTaskName","SchemaAspect","SCHEMA_TASK_NAME","length","schemaJsonStr","contents","schemaJson","JSON","parse","getSchemaFromObject","SyntaxError","error","obj","fromObject","getSchemaFromRemote","isPattern","some","char","includes","getId","startsWith","compId","resolveComponentIdFromPackageName","compIdStr","http","Http","connect","SYMPHONY_GRAPHQL","CENTRAL_BIT_HUB_NAME","response","registerParser","calcSchemaData","getSchemaData","state","aspects","registerImpactRules","rules","getImpactAssessor","registerRules","values","flat","computeAPIDiff","baseComp","compareComp","memoKey","cached","apiDiffMemo","pending","apiDiffInflight","immutable","promise","doComputeAPIDiff","then","transient","status","base","compare","Boolean","memoizable","size","API_DIFF_MEMO_MAX","firstKey","keys","next","delete","set","finally","isModifiedCheckoutOf","checkedOut","getIdIfExist","version","isModified","getSide","comp","Promise","all","assessor","isSchemaTaskDisabled","provider","cli","graphql","loggerMain","scope","createLogger","ImpactAssessor","registerDefaultRules","DEFAULT_IMPACT_RULES","schemaTask","SchemaTask","registerBuildTasks","schemaCmd","SchemaCommand","commands","SchemaDiffCommand","schemaSchema","registerService","SchemaService","registerOnComponentLoad","registerOnCompAspectReCalc","Schemas","exports","MainRuntime","EnvsAspect","CLIAspect","ComponentAspect","GraphqlAspect","LoggerAspect","BuilderAspect","WorkspaceAspect","ScopeAspect","Slot","withType","addRuntime","_default","default"],"sources":["schema.main.runtime.ts"],"sourcesContent":["import type { CLIMain } from '@teambit/cli';\nimport { MainRuntime, CLIAspect } from '@teambit/cli';\nimport type { Component, ComponentMain } from '@teambit/component';\nimport { ComponentAspect } from '@teambit/component';\nimport type { SlotRegistry } from '@teambit/harmony';\nimport { Slot } from '@teambit/harmony';\nimport type { GraphqlMain } from '@teambit/graphql';\nimport { GraphqlAspect } from '@teambit/graphql';\nimport type { EnvsMain } from '@teambit/envs';\nimport { EnvsAspect } from '@teambit/envs';\nimport type { Logger, LoggerMain } from '@teambit/logger';\nimport { LoggerAspect } from '@teambit/logger';\nimport type { PrettierConfigMutator } from '@teambit/defender.prettier.config-mutator';\nimport type { Export, SchemaNodeConstructor } from '@teambit/semantics.entities.semantic-schema';\nimport { APISchema, Schemas, SchemaRegistry } from '@teambit/semantics.entities.semantic-schema';\nimport type { BuilderMain } from '@teambit/builder';\nimport { BuilderAspect } from '@teambit/builder';\nimport type { Workspace } from '@teambit/workspace';\nimport { WorkspaceAspect } from '@teambit/workspace';\nimport type { ScopeMain } from '@teambit/scope';\nimport { ScopeAspect } from '@teambit/scope';\nimport type { Formatter } from '@teambit/formatter';\nimport type { SchemaNodeTransformer, SchemaTransformer } from '@teambit/typescript';\nimport { BuildStatus, CENTRAL_BIT_HUB_NAME, SYMPHONY_GRAPHQL } from '@teambit/legacy.constants';\nimport { Http } from '@teambit/scope.network';\nimport type {\n ImpactRule,\n APIDiffResult,\n SchemaAvailability,\n SchemaUnavailableReason,\n} from '@teambit/semantics.entities.semantic-schema-diff';\nimport { ImpactAssessor, DEFAULT_IMPACT_RULES, computeAPIDiff } from '@teambit/semantics.entities.semantic-schema-diff';\nimport type { Parser } from './parser';\nimport { SchemaAspect } from './schema.aspect';\nimport type { SchemaExtractor } from './schema-extractor';\nimport { SchemaCommand } from './schema.cmd';\nimport { SchemaDiffCommand } from './schema-diff.cmd';\nimport { schemaSchema } from './schema.graphql';\nimport { SchemaTask, SCHEMA_TASK_NAME } from './schema.task';\nimport { SchemaService } from './schema.service';\n\nexport type ParserSlot = SlotRegistry<Parser>;\nexport type ImpactRuleSlot = SlotRegistry<ImpactRule[]>;\n\nexport type SchemaConfig = {\n /**\n * default parser\n */\n defaultParser: string;\n /**\n * disable extracting schema\n */\n disabled?: boolean;\n};\n\n/**\n * extension for extracting component schemas.\n */\nexport class SchemaMain {\n constructor(\n /**\n * parsers slot.\n */\n private parserSlot: ParserSlot,\n\n /**\n * impact rules slot — other aspects register custom rules via registerImpactRules().\n */\n private impactRuleSlot: ImpactRuleSlot,\n\n private envs: EnvsMain,\n\n private config: SchemaConfig,\n\n private builder: BuilderMain,\n\n private workspace: Workspace,\n\n private logger: Logger,\n\n private impactAssessor: ImpactAssessor\n ) {}\n\n /**\n * get the default parser.\n */\n getDefaultParser(): Parser {\n return this.parserSlot.get(this.config.defaultParser) as Parser;\n }\n\n /**\n * @deprecated use registerSchemaClasses instead\n * registerSchemaClasses is better for performance as it lazy-loads the schemas.\n */\n registerSchemaClass(schema: SchemaNodeConstructor) {\n SchemaRegistry.register(schema);\n }\n\n registerSchemaClasses(getSchemas: () => SchemaNodeConstructor[]) {\n SchemaRegistry.registerGetSchemas(getSchemas);\n }\n\n /**\n * parse a module into a component schema.\n */\n parseModule(path: string, content?: string): Export[] {\n const parsers = this.parserSlot.toArray();\n let maybeParser = parsers.find(([, parser]) => {\n const match = path.match(parser.extension);\n return match;\n });\n\n if (!maybeParser) {\n maybeParser = [this.config.defaultParser, this.getDefaultParser()];\n }\n\n const [, parser] = maybeParser;\n return parser.parseModule(path, content);\n }\n\n getSchemaExtractor(component: Component, tsserverPath?: string, contextPath?: string): SchemaExtractor {\n const env = this.envs.getEnv(component).env;\n if (typeof env.getSchemaExtractor === 'undefined') {\n throw new Error(`No SchemaExtractor defined for ${env.name}`);\n }\n\n return env.getSchemaExtractor(undefined, tsserverPath, contextPath);\n }\n\n /**\n * get a schema of a component.\n * @param component target component.\n * @param shouldDisposeResourcesOnceDone for long-running processes, such as bit-start/bit-watch, this is not\n * relevant. for calling the API only to get a schema for one component, this is needed to ensure the ts-server is\n * not kept alive. otherwise, the process will never end.\n *\n */\n async getSchema(\n component: Component,\n shouldDisposeResourcesOnceDone = false,\n alwaysRunExtractor = false,\n tsserverPath?: string,\n contextPath?: string,\n skipInternals?: boolean,\n schemaTransformers?: SchemaTransformer[],\n apiTransformers?: SchemaNodeTransformer[],\n includeFiles?: string[]\n ): Promise<APISchema> {\n const { schema } = await this.getSchemaWithAvailability(\n component,\n shouldDisposeResourcesOnceDone,\n alwaysRunExtractor,\n tsserverPath,\n contextPath,\n skipInternals,\n schemaTransformers,\n apiTransformers,\n includeFiles\n );\n return schema;\n }\n\n /**\n * like getSchema, but reports whether a real schema was obtained. an empty schema\n * with `available: false` means \"no schema data exists for this version\" — callers\n * (e.g. API diff) must not treat it as an empty API surface.\n */\n async getSchemaWithAvailability(\n component: Component,\n shouldDisposeResourcesOnceDone = false,\n alwaysRunExtractor = false,\n tsserverPath?: string,\n contextPath?: string,\n skipInternals?: boolean,\n schemaTransformers?: SchemaTransformer[],\n apiTransformers?: SchemaNodeTransformer[],\n includeFiles?: string[]\n ): Promise<{ schema: APISchema; availability: SchemaAvailability }> {\n if (this.config.disabled) {\n return { schema: APISchema.empty(component.id as any), availability: { available: false, reason: 'DISABLED' } };\n }\n\n // when extraction is attempted and fails, remember why so the artifact-fallback\n // miss below reports the actual cause rather than a generic NOT_BUILT.\n let extractionFailure: SchemaUnavailableReason | undefined;\n\n if (alwaysRunExtractor || (this.workspace && component.buildStatus !== BuildStatus.Succeed)) {\n try {\n const env = this.envs.getEnv(component).env;\n // types need to be fixed\n const formatter: Formatter | undefined = env.getFormatter?.(null, [\n (config: PrettierConfigMutator) => {\n config.setKey('parser', 'typescript');\n return config;\n },\n ]);\n if (typeof env.getSchemaExtractor === 'undefined') {\n extractionFailure = 'NO_EXTRACTOR';\n throw new Error(`No SchemaExtractor defined for ${env.name}`);\n }\n const schemaExtractor: SchemaExtractor = env.getSchemaExtractor(\n undefined,\n tsserverPath,\n contextPath,\n schemaTransformers,\n apiTransformers\n );\n\n const result = await schemaExtractor.extract(component, {\n formatter,\n tsserverPath,\n contextPath,\n skipInternals,\n includeFiles,\n });\n if (shouldDisposeResourcesOnceDone) schemaExtractor.dispose();\n\n // `live`: extracted from source at call time, not read from the version's built artifact —\n // consumers that key results by version (API diff memo/cache) must not persist it.\n return { schema: result, availability: { available: true, live: true } };\n } catch (err) {\n if (alwaysRunExtractor) throw err;\n extractionFailure = extractionFailure || 'FAILED';\n const message = err instanceof Error ? err.message : String(err);\n this.logger.warn(\n `failed extracting schema for ${component.id.toString()}, falling back to artifacts. extractor error: ${message}`,\n err\n );\n }\n }\n\n // on scope get schema from builder api\n const fromArtifact = await this.readSchemaFromArtifact(component);\n\n if (!fromArtifact) {\n this.logger.debug(`no schema found for ${component.id.toString()}`);\n\n /**\n * return empty schema\n * when tag/snap without build\n * or backwards compatibility\n */\n return {\n schema: APISchema.empty(component.id as any),\n availability: { available: false, reason: extractionFailure || 'NOT_BUILT' },\n };\n }\n\n return { schema: fromArtifact, availability: { available: true } };\n }\n\n /**\n * read the schema.json artifact the schema build task produced for this exact version.\n * returns null when the version has no such artifact (never built, or built before API\n * extraction existed). throws on a corrupt artifact.\n */\n private async readSchemaFromArtifact(component: Component): Promise<APISchema | null> {\n const schemaArtifact = await this.builder.getArtifactsVinylByAspectAndTaskName(\n component,\n SchemaAspect.id,\n SCHEMA_TASK_NAME\n );\n if (schemaArtifact.length === 0) return null;\n\n const schemaJsonStr = schemaArtifact[0].contents.toString('utf-8');\n try {\n const schemaJson = JSON.parse(schemaJsonStr);\n return this.getSchemaFromObject(schemaJson);\n } catch (e) {\n if (e instanceof SyntaxError) {\n this.logger.error(e.message);\n throw new Error(`Invalid schema.json for ${component.id}`);\n }\n throw e;\n }\n }\n\n getSchemaFromObject(obj: Record<string, any>): APISchema {\n return APISchema.fromObject(obj);\n }\n\n async getSchemaFromRemote(id: string): Promise<APISchema> {\n const isPattern = ['*', ',', '!', '$', ':'].some((char) => id.includes(char));\n if (isPattern) {\n throw new Error(`remote schema command doesn't support pattern matching. please use a specific component id`);\n }\n const getId = async () => {\n if (!id.startsWith('@')) return id;\n if (!this.workspace) throw new Error(`Please provide a component ID. The ${id} recognized as a package name.`);\n const compId = await this.workspace.resolveComponentIdFromPackageName(id, true);\n return compId.toString();\n };\n const compIdStr = await getId();\n const http = await Http.connect(SYMPHONY_GRAPHQL, CENTRAL_BIT_HUB_NAME);\n const response = await http.getSchema(compIdStr);\n return this.getSchemaFromObject(response);\n }\n\n /**\n * register a new parser.\n */\n registerParser(parser: Parser): SchemaMain {\n this.parserSlot.register(parser);\n return this;\n }\n\n async calcSchemaData(): Promise<{ disabled?: boolean }> {\n return {\n disabled: this.config.disabled,\n };\n }\n\n getSchemaData(component: Component) {\n return component.state.aspects.get(SchemaAspect.id)?.data;\n }\n\n /**\n * Register custom impact rules for API diff assessment.\n * Custom rules take priority over default rules.\n * This allows environments to customize what constitutes a breaking change.\n */\n registerImpactRules(rules: ImpactRule[]): void {\n this.impactRuleSlot.register(rules);\n }\n\n /**\n * Get the ImpactAssessor with default + all registered custom rules from the slot.\n */\n getImpactAssessor(): ImpactAssessor {\n this.impactAssessor.registerRules(this.impactRuleSlot.values().flat());\n return this.impactAssessor;\n }\n\n /**\n * Compute the semantic API diff between two component versions.\n */\n /**\n * in-memory memo + single-flight for computed diffs. several consumers hit this for the\n * same immutable version pair (lane-diff status via component-compare, the compare UI's\n * apiDiff GraphQL field) — without this, a cold page load runs schema extraction twice\n * per pair. transient failures (FAILED availability / null) are never memoized.\n */\n private apiDiffMemo = new Map<string, APIDiffResult>();\n private apiDiffInflight = new Map<string, Promise<APIDiffResult | null>>();\n private static API_DIFF_MEMO_MAX = 500;\n\n async computeAPIDiff(baseComp: Component, compareComp: Component): Promise<APIDiffResult | null> {\n const memoKey = `${baseComp.id.toString()}|${compareComp.id.toString()}`;\n const cached = this.apiDiffMemo.get(memoKey);\n if (cached) return cached;\n const pending = this.apiDiffInflight.get(memoKey);\n if (pending) return pending;\n\n // un-built workspace components extract their schema from live source — the same id can\n // yield different schemas as the user edits, so those results must not be memoized.\n const immutable = baseComp.buildStatus === BuildStatus.Succeed && compareComp.buildStatus === BuildStatus.Succeed;\n\n const promise = this.doComputeAPIDiff(baseComp, compareComp)\n .then((result) => {\n const transient =\n !result ||\n (result.status !== 'COMPUTED' && (result.base.reason === 'FAILED' || result.compare.reason === 'FAILED'));\n // artifact-derived sides are immutable even when the local buildStatus says otherwise (a\n // checked-out component reports \"pending\" for a CI-built snap), so a COMPUTED result whose\n // sides are not live-extracted is safe to memoize regardless of buildStatus. a live side\n // reflects the working tree and must never be memoized under the version pair.\n const live = Boolean(result && (result.base.live || result.compare.live));\n const memoizable = !transient && !live && (immutable || result!.status === 'COMPUTED');\n if (memoizable) {\n if (this.apiDiffMemo.size >= SchemaMain.API_DIFF_MEMO_MAX) {\n const firstKey = this.apiDiffMemo.keys().next().value;\n if (firstKey) this.apiDiffMemo.delete(firstKey);\n }\n this.apiDiffMemo.set(memoKey, result);\n }\n return result;\n })\n .finally(() => {\n this.apiDiffInflight.delete(memoKey);\n });\n this.apiDiffInflight.set(memoKey, promise);\n return promise;\n }\n\n /**\n * is this component the version currently checked out in the workspace, with local modifications\n * on top? that's the one case where the live source — not the version's built artifact — is the\n * authoritative API surface for a diff side. errs toward true when modification state can't be\n * determined, so local changes are never masked by a stale artifact.\n */\n private async isModifiedCheckoutOf(component: Component): Promise<boolean> {\n if (!this.workspace) return false;\n const checkedOut = this.workspace.getIdIfExist(component.id);\n if (!checkedOut) return false;\n if (component.id.version && checkedOut.version !== component.id.version) return false;\n try {\n return await this.workspace.isModified(component);\n } catch {\n return true;\n }\n }\n\n private async doComputeAPIDiff(baseComp: Component, compareComp: Component): Promise<APIDiffResult | null> {\n try {\n // a side whose schema retrieval throws is reported as FAILED availability rather than\n // failing the whole diff — the result then carries an explicit status instead of null.\n const getSide = async (comp: Component) => {\n try {\n // both sides are pinned versions, so the snap's built schema artifact is authoritative and\n // cheap to read. `getSchemaWithAvailability` instead runs the live extractor for any\n // checked-out component whose local buildStatus isn't \"succeed\" (which a plain checkout of\n // a CI-built snap reports) — a tsserver pass per component, reflecting the working tree\n // rather than the snap; a degraded workspace then fabricates placeholder schemas that get\n // diffed and cached under the immutable pair. the working tree is only authoritative for a\n // *modified* checkout of the exact version; everything else prefers the artifact.\n if (!(await this.isModifiedCheckoutOf(comp))) {\n const fromArtifact = await this.readSchemaFromArtifact(comp);\n if (fromArtifact) return { schema: fromArtifact, availability: { available: true } };\n }\n return await this.getSchemaWithAvailability(comp);\n } catch (err: any) {\n this.logger.warn(`failed getting schema for ${comp.id.toString()}: ${err.message}`);\n return {\n schema: APISchema.empty(comp.id as any),\n availability: { available: false, reason: 'FAILED' as SchemaUnavailableReason },\n };\n }\n };\n const [base, compare] = await Promise.all([getSide(baseComp), getSide(compareComp)]);\n const assessor = this.getImpactAssessor();\n return computeAPIDiff(base.schema, compare.schema, assessor, {\n base: base.availability,\n compare: compare.availability,\n });\n } catch (err: any) {\n this.logger.warn(`failed computing API diff: ${err.message}`);\n return null;\n }\n }\n\n isSchemaTaskDisabled(component: Component) {\n return this.getSchemaData(component)?.disabled;\n }\n\n static runtime = MainRuntime;\n static dependencies = [\n EnvsAspect,\n CLIAspect,\n ComponentAspect,\n GraphqlAspect,\n LoggerAspect,\n BuilderAspect,\n WorkspaceAspect,\n ScopeAspect,\n ];\n static slots = [Slot.withType<Parser>(), Slot.withType<ImpactRule[]>()];\n\n static defaultConfig = {\n defaultParser: 'teambit.typescript/typescript',\n disabled: false,\n };\n\n static async provider(\n [envs, cli, component, graphql, loggerMain, builder, workspace, scope]: [\n EnvsMain,\n CLIMain,\n ComponentMain,\n GraphqlMain,\n LoggerMain,\n BuilderMain,\n Workspace,\n ScopeMain,\n ],\n config: SchemaConfig,\n [parserSlot, impactRuleSlot]: [ParserSlot, ImpactRuleSlot]\n ) {\n const logger = loggerMain.createLogger(SchemaAspect.id);\n const impactAssessor = new ImpactAssessor();\n impactAssessor.registerDefaultRules(DEFAULT_IMPACT_RULES);\n const schema = new SchemaMain(parserSlot, impactRuleSlot, envs, config, builder, workspace, logger, impactAssessor);\n const schemaTask = new SchemaTask(SchemaAspect.id, schema, logger);\n builder.registerBuildTasks([schemaTask]);\n const schemaCmd = new SchemaCommand(schema, component, logger);\n schemaCmd.commands = [new SchemaDiffCommand(schema, component, logger)];\n cli.register(schemaCmd);\n graphql.register(() => schemaSchema(schema));\n envs.registerService(new SchemaService());\n if (workspace) {\n workspace.registerOnComponentLoad(async () => schema.calcSchemaData());\n }\n if (scope) {\n scope.registerOnCompAspectReCalc(async () => schema.calcSchemaData());\n }\n // register all default schema classes\n schema.registerSchemaClasses(() => Object.values(Schemas));\n\n return schema;\n }\n}\n\nSchemaAspect.addRuntime(SchemaMain);\n\nexport default SchemaMain;\n"],"mappings":"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","ignoreList":[]}
|
package/dist/schema.spec.js
CHANGED
|
@@ -139,6 +139,43 @@ describe('SchemaAspect', function () {
|
|
|
139
139
|
(0, _chai().expect)(results).to.to.containSubset(expectedJson);
|
|
140
140
|
});
|
|
141
141
|
});
|
|
142
|
+
describe('default export extraction', () => {
|
|
143
|
+
// Regression: `export class Foo` + `export default Foo` must extract the default as a stable,
|
|
144
|
+
// valid `default` re-reference to Foo — not a `"Foo (default)"` alias (invalid signature +
|
|
145
|
+
// unstable diff key). Empirically driven via the real extractor on the `default-export` fixture.
|
|
146
|
+
let exports;
|
|
147
|
+
before(async () => {
|
|
148
|
+
const {
|
|
149
|
+
workspacePath
|
|
150
|
+
} = workspaceData;
|
|
151
|
+
const compDir = _path().default.join(workspacePath, 'default-export');
|
|
152
|
+
const src = _path().default.join(getMockDir(), 'default-export');
|
|
153
|
+
await _fsExtra().default.copy(src, compDir);
|
|
154
|
+
const harmony = await (0, _harmonyTesting().loadManyAspects)([_workspace().WorkspaceAspect, _schema().SchemaAspect, _tracker().TrackerAspect], workspacePath);
|
|
155
|
+
const ws = harmony.get(_workspace().WorkspaceAspect.id);
|
|
156
|
+
const tracker = harmony.get(_tracker().TrackerAspect.id);
|
|
157
|
+
await tracker.track({
|
|
158
|
+
rootDir: compDir,
|
|
159
|
+
defaultScope: 'org.scope'
|
|
160
|
+
});
|
|
161
|
+
await ws.bitMap.write();
|
|
162
|
+
const schemaMain = harmony.get(_schema().SchemaAspect.id);
|
|
163
|
+
const compId = await ws.resolveComponentId('default-export');
|
|
164
|
+
const comp = await ws.get(compId);
|
|
165
|
+
const api = await schemaMain.getSchema(comp, true);
|
|
166
|
+
exports = api.toObject().module.exports || [];
|
|
167
|
+
});
|
|
168
|
+
it('should resolve the default export to a TypeRef named "default" pointing at the class', () => {
|
|
169
|
+
const def = exports.find(e => (e.alias || e.name) === 'default');
|
|
170
|
+
(0, _chai().expect)(def, 'a `default` export should exist').to.exist;
|
|
171
|
+
(0, _chai().expect)(def.exportNode.__schema).to.equal('TypeRefSchema');
|
|
172
|
+
(0, _chai().expect)(def.exportNode.name).to.equal('Foo');
|
|
173
|
+
});
|
|
174
|
+
it('should NOT bake "(default)" into any export name/alias (keeps the signature valid)', () => {
|
|
175
|
+
const withSuffix = exports.filter(e => `${e.alias || e.name}`.includes('(default)'));
|
|
176
|
+
(0, _chai().expect)(withSuffix, 'no export should carry a "(default)" suffix in its name').to.have.lengthOf(0);
|
|
177
|
+
});
|
|
178
|
+
});
|
|
142
179
|
describe('getSchemaFromObject', () => {
|
|
143
180
|
it('should be able to deserialize an JSON object to SchemaNode instances', () => {
|
|
144
181
|
const jsonPath = _path().default.join(getMockDir(), 'button-schemas.json');
|
package/dist/schema.spec.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_path","data","_interopRequireDefault","require","_fsExtra","_chai","_semanticsEntities","_semanticsEntities2","_chaiSubset","_tracker","_harmonyTesting","_workspaceTesting","_componentId","_workspace","_schema","e","__esModule","default","ownKeys","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","use","chaiSubset","describe","timeout","schema","workspace","workspaceData","before","mockWorkspace","workspacePath","console","log","loadAspect","SchemaAspect","after","destroyWorkspace","apiSchema","compDir","path","join","src","getMockDir","fs","copy","harmony","loadManyAspects","WorkspaceAspect","TrackerAspect","get","id","tracker","track","rootDir","defaultScope","bitMap","write","compId","resolveComponentId","comp","getSchema","it","results","toObject","expectedJsonPath","expectedJson","readJsonSync","expect","to","containSubset","jsonPath","json","getSchemaFromObject","APISchema","be","true","componentId","constructor","name","equal","ComponentID","module","exports","UnknownSchema","location","deep","file","line","character","diffResult","v1JsonPath","v1Json","baseSchema","compDirV2","srcV2","ws","schemaMain","compIdV2","compV2","compareSchema","assessor","getImpactAssessor","computeAPIDiff","result","serializeDiffResult","hasChanges","added","greaterThan","addedNames","changes","c","status","map","exportName","include","modified","find","impact","diff","serializeChange","change","visibility","schemaType","baseSignature","compareSignature","details","d","changeKind","description","from","undefined","removed","breaking","nonBreaking","patch","publicChanges","internalChanges","getCurrentDir","currentDir","__dirname","endsWith","sep","slice"],"sources":["schema.spec.ts"],"sourcesContent":["import path from 'path';\nimport fs from 'fs-extra';\nimport { expect, use } from 'chai';\nimport { APISchema, UnknownSchema } from '@teambit/semantics.entities.semantic-schema';\nimport { computeAPIDiff } from '@teambit/semantics.entities.semantic-schema-diff';\nimport type { APIDiffResult } from '@teambit/semantics.entities.semantic-schema-diff';\nimport chaiSubset from 'chai-subset';\nimport type { TrackerMain } from '@teambit/tracker';\nimport { TrackerAspect } from '@teambit/tracker';\nimport { loadAspect, loadManyAspects } from '@teambit/harmony.testing.load-aspect';\nimport type { WorkspaceData } from '@teambit/workspace.testing.mock-workspace';\nimport { mockWorkspace, destroyWorkspace } from '@teambit/workspace.testing.mock-workspace';\nimport { ComponentID } from '@teambit/component-id';\nimport type { Workspace } from '@teambit/workspace';\nimport { WorkspaceAspect } from '@teambit/workspace';\nimport type { SchemaMain } from './schema.main.runtime';\nimport { SchemaAspect } from './schema.aspect';\n\nuse(chaiSubset);\n\ndescribe('SchemaAspect', function () {\n this.timeout(0);\n let schema: SchemaMain;\n let workspace: Workspace;\n let workspaceData: WorkspaceData;\n before(async () => {\n workspaceData = mockWorkspace();\n const { workspacePath } = workspaceData;\n // eslint-disable-next-line no-console\n console.log('workspace created at ', workspacePath);\n schema = await loadAspect(SchemaAspect, workspacePath);\n });\n after(async () => {\n await destroyWorkspace(workspaceData);\n });\n describe('getSchema()', () => {\n let apiSchema: APISchema;\n before(async () => {\n const { workspacePath } = workspaceData;\n const compDir = path.join(workspacePath, 'button');\n const src = path.join(getMockDir(), 'button');\n await fs.copy(src, compDir);\n const harmony = await loadManyAspects([WorkspaceAspect, SchemaAspect, TrackerAspect], workspacePath);\n workspace = harmony.get<Workspace>(WorkspaceAspect.id);\n const tracker = harmony.get<TrackerMain>(TrackerAspect.id);\n await tracker.track({ rootDir: compDir, defaultScope: 'org.scope' });\n await workspace.bitMap.write();\n schema = harmony.get<SchemaMain>(SchemaAspect.id);\n const compId = await workspace.resolveComponentId('button');\n const comp = await workspace.get(compId);\n apiSchema = await schema.getSchema(comp, true);\n });\n it('should be able to generate JSON object with all schemas', async () => {\n const results = apiSchema.toObject();\n const expectedJsonPath = path.join(getMockDir(), 'button-schemas.json');\n // uncomment the next line temporarily to sync the expected json with new schema changes\n // fs.outputFileSync(expectedJsonPath, JSON.stringify(results, undefined, 2));\n const expectedJson = fs.readJsonSync(expectedJsonPath);\n expect(results).to.to.containSubset(expectedJson);\n });\n });\n describe('getSchemaFromObject', () => {\n it('should be able to deserialize an JSON object to SchemaNode instances', () => {\n const jsonPath = path.join(getMockDir(), 'button-schemas.json');\n const json = fs.readJsonSync(jsonPath);\n const apiSchema = schema.getSchemaFromObject(json);\n expect(apiSchema instanceof APISchema).to.be.true;\n expect(apiSchema.componentId.constructor.name).to.equal(ComponentID.name);\n expect(apiSchema.toObject()).to.containSubset(json);\n });\n it('should not throw when it does not recognize the schema', () => {\n const jsonPath = path.join(getMockDir(), 'button-old-schema.json');\n const json = fs.readJsonSync(jsonPath);\n const apiSchema = schema.getSchemaFromObject(json);\n expect(apiSchema instanceof APISchema).to.be.true;\n expect(apiSchema.module.exports[0] instanceof UnknownSchema).to.be.true;\n expect(apiSchema.module.exports[0].location).to.deep.equal({ file: 'index.ts', line: 21, character: 14 });\n });\n });\n describe('schema diff', () => {\n let diffResult: APIDiffResult;\n\n before(async () => {\n // Use v1 schema from the golden file (already validated by getSchema test)\n const v1JsonPath = path.join(getMockDir(), 'button-schemas.json');\n const v1Json = fs.readJsonSync(v1JsonPath);\n const baseSchema = schema.getSchemaFromObject(v1Json);\n\n // Extract v2 schema from the button-v2 fixture\n const { workspacePath } = workspaceData;\n const compDirV2 = path.join(workspacePath, 'button-v2');\n const srcV2 = path.join(getMockDir(), 'button-v2');\n await fs.copy(srcV2, compDirV2);\n const harmony = await loadManyAspects([WorkspaceAspect, SchemaAspect, TrackerAspect], workspacePath);\n const ws = harmony.get<Workspace>(WorkspaceAspect.id);\n const tracker = harmony.get<TrackerMain>(TrackerAspect.id);\n await tracker.track({ rootDir: compDirV2, defaultScope: 'org.scope' });\n await ws.bitMap.write();\n const schemaMain = harmony.get<SchemaMain>(SchemaAspect.id);\n const compIdV2 = await ws.resolveComponentId('button-v2');\n const compV2 = await ws.get(compIdV2);\n const compareSchema = await schemaMain.getSchema(compV2, true);\n\n // Compute diff using impact assessor from the aspect\n const assessor = schemaMain.getImpactAssessor();\n diffResult = computeAPIDiff(baseSchema, compareSchema, assessor);\n });\n\n it('should produce a diff result matching the golden file', () => {\n const result = serializeDiffResult(diffResult);\n const expectedJsonPath = path.join(getMockDir(), 'button-diff.json');\n // uncomment the next line temporarily to sync the expected json with new diff changes\n // fs.outputFileSync(expectedJsonPath, JSON.stringify(result, undefined, 2));\n const expectedJson = fs.readJsonSync(expectedJsonPath);\n expect(result).to.containSubset(expectedJson);\n });\n\n it('should detect changes', () => {\n expect(diffResult.hasChanges).to.be.true;\n });\n\n it('should detect added exports', () => {\n expect(diffResult.added).to.be.greaterThan(0);\n const addedNames = diffResult.changes.filter((c) => c.status === 'ADDED').map((c) => c.exportName);\n expect(addedNames).to.include('newUtility');\n });\n\n it('should detect modified exports', () => {\n expect(diffResult.modified).to.be.greaterThan(0);\n });\n\n it('should correctly assess impact of non-breaking additions', () => {\n const added = diffResult.changes.find((c) => c.exportName === 'newUtility');\n expect(added?.impact).to.equal('NON_BREAKING');\n });\n });\n});\n\n/**\n * Serialize a diff result for golden file comparison.\n * Strips raw schema nodes (baseNode/compareNode) since they're large and tested separately.\n */\nfunction serializeDiffResult(diff: APIDiffResult): Record<string, any> {\n const serializeChange = (change: any) => ({\n status: change.status,\n visibility: change.visibility,\n impact: change.impact,\n exportName: change.exportName,\n schemaType: change.schemaType,\n ...(change.baseSignature ? { baseSignature: change.baseSignature } : {}),\n ...(change.compareSignature ? { compareSignature: change.compareSignature } : {}),\n ...(change.changes && change.changes.length > 0\n ? {\n details: change.changes.map((d: any) => ({\n changeKind: d.changeKind,\n description: d.description,\n impact: d.impact,\n ...(d.from !== undefined ? { from: d.from } : {}),\n ...(d.to !== undefined ? { to: d.to } : {}),\n })),\n }\n : {}),\n });\n\n return {\n hasChanges: diff.hasChanges,\n impact: diff.impact,\n added: diff.added,\n removed: diff.removed,\n modified: diff.modified,\n breaking: diff.breaking,\n nonBreaking: diff.nonBreaking,\n patch: diff.patch,\n publicChanges: diff.publicChanges.map(serializeChange),\n internalChanges: diff.internalChanges.map(serializeChange),\n };\n}\n\nfunction getCurrentDir() {\n const currentDir = __dirname;\n if (currentDir.endsWith(`${path.sep}dist`)) return currentDir.slice(0, -5);\n return currentDir;\n}\n\nfunction getMockDir() {\n return path.join(getCurrentDir(), 'mock');\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_path","data","_interopRequireDefault","require","_fsExtra","_chai","_semanticsEntities","_semanticsEntities2","_chaiSubset","_tracker","_harmonyTesting","_workspaceTesting","_componentId","_workspace","_schema","e","__esModule","default","ownKeys","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","use","chaiSubset","describe","timeout","schema","workspace","workspaceData","before","mockWorkspace","workspacePath","console","log","loadAspect","SchemaAspect","after","destroyWorkspace","apiSchema","compDir","path","join","src","getMockDir","fs","copy","harmony","loadManyAspects","WorkspaceAspect","TrackerAspect","get","id","tracker","track","rootDir","defaultScope","bitMap","write","compId","resolveComponentId","comp","getSchema","it","results","toObject","expectedJsonPath","expectedJson","readJsonSync","expect","to","containSubset","exports","ws","schemaMain","api","module","def","find","alias","name","exist","exportNode","__schema","equal","withSuffix","includes","have","lengthOf","jsonPath","json","getSchemaFromObject","APISchema","be","true","componentId","constructor","ComponentID","UnknownSchema","location","deep","file","line","character","diffResult","v1JsonPath","v1Json","baseSchema","compDirV2","srcV2","compIdV2","compV2","compareSchema","assessor","getImpactAssessor","computeAPIDiff","result","serializeDiffResult","hasChanges","added","greaterThan","addedNames","changes","c","status","map","exportName","include","modified","impact","diff","serializeChange","change","visibility","schemaType","baseSignature","compareSignature","details","d","changeKind","description","from","undefined","removed","breaking","nonBreaking","patch","publicChanges","internalChanges","getCurrentDir","currentDir","__dirname","endsWith","sep","slice"],"sources":["schema.spec.ts"],"sourcesContent":["import path from 'path';\nimport fs from 'fs-extra';\nimport { expect, use } from 'chai';\nimport { APISchema, UnknownSchema } from '@teambit/semantics.entities.semantic-schema';\nimport { computeAPIDiff } from '@teambit/semantics.entities.semantic-schema-diff';\nimport type { APIDiffResult } from '@teambit/semantics.entities.semantic-schema-diff';\nimport chaiSubset from 'chai-subset';\nimport type { TrackerMain } from '@teambit/tracker';\nimport { TrackerAspect } from '@teambit/tracker';\nimport { loadAspect, loadManyAspects } from '@teambit/harmony.testing.load-aspect';\nimport type { WorkspaceData } from '@teambit/workspace.testing.mock-workspace';\nimport { mockWorkspace, destroyWorkspace } from '@teambit/workspace.testing.mock-workspace';\nimport { ComponentID } from '@teambit/component-id';\nimport type { Workspace } from '@teambit/workspace';\nimport { WorkspaceAspect } from '@teambit/workspace';\nimport type { SchemaMain } from './schema.main.runtime';\nimport { SchemaAspect } from './schema.aspect';\n\nuse(chaiSubset);\n\ndescribe('SchemaAspect', function () {\n this.timeout(0);\n let schema: SchemaMain;\n let workspace: Workspace;\n let workspaceData: WorkspaceData;\n before(async () => {\n workspaceData = mockWorkspace();\n const { workspacePath } = workspaceData;\n // eslint-disable-next-line no-console\n console.log('workspace created at ', workspacePath);\n schema = await loadAspect(SchemaAspect, workspacePath);\n });\n after(async () => {\n await destroyWorkspace(workspaceData);\n });\n describe('getSchema()', () => {\n let apiSchema: APISchema;\n before(async () => {\n const { workspacePath } = workspaceData;\n const compDir = path.join(workspacePath, 'button');\n const src = path.join(getMockDir(), 'button');\n await fs.copy(src, compDir);\n const harmony = await loadManyAspects([WorkspaceAspect, SchemaAspect, TrackerAspect], workspacePath);\n workspace = harmony.get<Workspace>(WorkspaceAspect.id);\n const tracker = harmony.get<TrackerMain>(TrackerAspect.id);\n await tracker.track({ rootDir: compDir, defaultScope: 'org.scope' });\n await workspace.bitMap.write();\n schema = harmony.get<SchemaMain>(SchemaAspect.id);\n const compId = await workspace.resolveComponentId('button');\n const comp = await workspace.get(compId);\n apiSchema = await schema.getSchema(comp, true);\n });\n it('should be able to generate JSON object with all schemas', async () => {\n const results = apiSchema.toObject();\n const expectedJsonPath = path.join(getMockDir(), 'button-schemas.json');\n // uncomment the next line temporarily to sync the expected json with new schema changes\n // fs.outputFileSync(expectedJsonPath, JSON.stringify(results, undefined, 2));\n const expectedJson = fs.readJsonSync(expectedJsonPath);\n expect(results).to.to.containSubset(expectedJson);\n });\n });\n describe('default export extraction', () => {\n // Regression: `export class Foo` + `export default Foo` must extract the default as a stable,\n // valid `default` re-reference to Foo — not a `\"Foo (default)\"` alias (invalid signature +\n // unstable diff key). Empirically driven via the real extractor on the `default-export` fixture.\n let exports: any[];\n before(async () => {\n const { workspacePath } = workspaceData;\n const compDir = path.join(workspacePath, 'default-export');\n const src = path.join(getMockDir(), 'default-export');\n await fs.copy(src, compDir);\n const harmony = await loadManyAspects([WorkspaceAspect, SchemaAspect, TrackerAspect], workspacePath);\n const ws = harmony.get<Workspace>(WorkspaceAspect.id);\n const tracker = harmony.get<TrackerMain>(TrackerAspect.id);\n await tracker.track({ rootDir: compDir, defaultScope: 'org.scope' });\n await ws.bitMap.write();\n const schemaMain = harmony.get<SchemaMain>(SchemaAspect.id);\n const compId = await ws.resolveComponentId('default-export');\n const comp = await ws.get(compId);\n const api = await schemaMain.getSchema(comp, true);\n exports = (api.toObject() as any).module.exports || [];\n });\n\n it('should resolve the default export to a TypeRef named \"default\" pointing at the class', () => {\n const def = exports.find((e) => (e.alias || e.name) === 'default');\n expect(def, 'a `default` export should exist').to.exist;\n expect(def.exportNode.__schema).to.equal('TypeRefSchema');\n expect(def.exportNode.name).to.equal('Foo');\n });\n\n it('should NOT bake \"(default)\" into any export name/alias (keeps the signature valid)', () => {\n const withSuffix = exports.filter((e) => `${e.alias || e.name}`.includes('(default)'));\n expect(withSuffix, 'no export should carry a \"(default)\" suffix in its name').to.have.lengthOf(0);\n });\n });\n\n describe('getSchemaFromObject', () => {\n it('should be able to deserialize an JSON object to SchemaNode instances', () => {\n const jsonPath = path.join(getMockDir(), 'button-schemas.json');\n const json = fs.readJsonSync(jsonPath);\n const apiSchema = schema.getSchemaFromObject(json);\n expect(apiSchema instanceof APISchema).to.be.true;\n expect(apiSchema.componentId.constructor.name).to.equal(ComponentID.name);\n expect(apiSchema.toObject()).to.containSubset(json);\n });\n it('should not throw when it does not recognize the schema', () => {\n const jsonPath = path.join(getMockDir(), 'button-old-schema.json');\n const json = fs.readJsonSync(jsonPath);\n const apiSchema = schema.getSchemaFromObject(json);\n expect(apiSchema instanceof APISchema).to.be.true;\n expect(apiSchema.module.exports[0] instanceof UnknownSchema).to.be.true;\n expect(apiSchema.module.exports[0].location).to.deep.equal({ file: 'index.ts', line: 21, character: 14 });\n });\n });\n describe('schema diff', () => {\n let diffResult: APIDiffResult;\n\n before(async () => {\n // Use v1 schema from the golden file (already validated by getSchema test)\n const v1JsonPath = path.join(getMockDir(), 'button-schemas.json');\n const v1Json = fs.readJsonSync(v1JsonPath);\n const baseSchema = schema.getSchemaFromObject(v1Json);\n\n // Extract v2 schema from the button-v2 fixture\n const { workspacePath } = workspaceData;\n const compDirV2 = path.join(workspacePath, 'button-v2');\n const srcV2 = path.join(getMockDir(), 'button-v2');\n await fs.copy(srcV2, compDirV2);\n const harmony = await loadManyAspects([WorkspaceAspect, SchemaAspect, TrackerAspect], workspacePath);\n const ws = harmony.get<Workspace>(WorkspaceAspect.id);\n const tracker = harmony.get<TrackerMain>(TrackerAspect.id);\n await tracker.track({ rootDir: compDirV2, defaultScope: 'org.scope' });\n await ws.bitMap.write();\n const schemaMain = harmony.get<SchemaMain>(SchemaAspect.id);\n const compIdV2 = await ws.resolveComponentId('button-v2');\n const compV2 = await ws.get(compIdV2);\n const compareSchema = await schemaMain.getSchema(compV2, true);\n\n // Compute diff using impact assessor from the aspect\n const assessor = schemaMain.getImpactAssessor();\n diffResult = computeAPIDiff(baseSchema, compareSchema, assessor);\n });\n\n it('should produce a diff result matching the golden file', () => {\n const result = serializeDiffResult(diffResult);\n const expectedJsonPath = path.join(getMockDir(), 'button-diff.json');\n // uncomment the next line temporarily to sync the expected json with new diff changes\n // fs.outputFileSync(expectedJsonPath, JSON.stringify(result, undefined, 2));\n const expectedJson = fs.readJsonSync(expectedJsonPath);\n expect(result).to.containSubset(expectedJson);\n });\n\n it('should detect changes', () => {\n expect(diffResult.hasChanges).to.be.true;\n });\n\n it('should detect added exports', () => {\n expect(diffResult.added).to.be.greaterThan(0);\n const addedNames = diffResult.changes.filter((c) => c.status === 'ADDED').map((c) => c.exportName);\n expect(addedNames).to.include('newUtility');\n });\n\n it('should detect modified exports', () => {\n expect(diffResult.modified).to.be.greaterThan(0);\n });\n\n it('should correctly assess impact of non-breaking additions', () => {\n const added = diffResult.changes.find((c) => c.exportName === 'newUtility');\n expect(added?.impact).to.equal('NON_BREAKING');\n });\n });\n});\n\n/**\n * Serialize a diff result for golden file comparison.\n * Strips raw schema nodes (baseNode/compareNode) since they're large and tested separately.\n */\nfunction serializeDiffResult(diff: APIDiffResult): Record<string, any> {\n const serializeChange = (change: any) => ({\n status: change.status,\n visibility: change.visibility,\n impact: change.impact,\n exportName: change.exportName,\n schemaType: change.schemaType,\n ...(change.baseSignature ? { baseSignature: change.baseSignature } : {}),\n ...(change.compareSignature ? { compareSignature: change.compareSignature } : {}),\n ...(change.changes && change.changes.length > 0\n ? {\n details: change.changes.map((d: any) => ({\n changeKind: d.changeKind,\n description: d.description,\n impact: d.impact,\n ...(d.from !== undefined ? { from: d.from } : {}),\n ...(d.to !== undefined ? { to: d.to } : {}),\n })),\n }\n : {}),\n });\n\n return {\n hasChanges: diff.hasChanges,\n impact: diff.impact,\n added: diff.added,\n removed: diff.removed,\n modified: diff.modified,\n breaking: diff.breaking,\n nonBreaking: diff.nonBreaking,\n patch: diff.patch,\n publicChanges: diff.publicChanges.map(serializeChange),\n internalChanges: diff.internalChanges.map(serializeChange),\n };\n}\n\nfunction getCurrentDir() {\n const currentDir = __dirname;\n if (currentDir.endsWith(`${path.sep}dist`)) return currentDir.slice(0, -5);\n return currentDir;\n}\n\nfunction getMockDir() {\n return path.join(getCurrentDir(), 'mock');\n}\n"],"mappings":"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","ignoreList":[]}
|
package/mock/button-diff.json
CHANGED
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
"impact": "NON_BREAKING",
|
|
4
4
|
"added": 1,
|
|
5
5
|
"removed": 0,
|
|
6
|
-
"modified":
|
|
6
|
+
"modified": 6,
|
|
7
7
|
"breaking": 0,
|
|
8
8
|
"nonBreaking": 6,
|
|
9
|
-
"patch":
|
|
9
|
+
"patch": 1,
|
|
10
10
|
"publicChanges": [
|
|
11
11
|
{
|
|
12
12
|
"status": "MODIFIED",
|
|
@@ -27,8 +27,8 @@
|
|
|
27
27
|
"changeKind": "documentation-changed",
|
|
28
28
|
"description": "documentation description and tags changed",
|
|
29
29
|
"impact": "PATCH",
|
|
30
|
-
"from": "General comment of the myFunc",
|
|
31
|
-
"to": "Updated comment for myFunc"
|
|
30
|
+
"from": "General comment of the myFunc\n@deprecate example of deprecation tag\n@parameter this is A\n@parameter this is B\n@return results of adding a to b",
|
|
31
|
+
"to": "Updated comment for myFunc\n@parameter this is A\n@parameter this is B\n@parameter this is C\n@return results of adding a, b and c"
|
|
32
32
|
}
|
|
33
33
|
]
|
|
34
34
|
},
|
|
@@ -50,22 +50,6 @@
|
|
|
50
50
|
}
|
|
51
51
|
]
|
|
52
52
|
},
|
|
53
|
-
{
|
|
54
|
-
"status": "MODIFIED",
|
|
55
|
-
"visibility": "public",
|
|
56
|
-
"impact": "PATCH",
|
|
57
|
-
"exportName": "ButtonProps",
|
|
58
|
-
"schemaType": "Type Alias",
|
|
59
|
-
"details": [
|
|
60
|
-
{
|
|
61
|
-
"changeKind": "type-definition-changed",
|
|
62
|
-
"description": "type definition changed",
|
|
63
|
-
"impact": "PATCH",
|
|
64
|
-
"from": "type ButtonProps = any",
|
|
65
|
-
"to": "type ButtonProps = any"
|
|
66
|
-
}
|
|
67
|
-
]
|
|
68
|
-
},
|
|
69
53
|
{
|
|
70
54
|
"status": "MODIFIED",
|
|
71
55
|
"visibility": "public",
|
package/mock/button-schemas.json
CHANGED
|
@@ -366,14 +366,13 @@
|
|
|
366
366
|
}
|
|
367
367
|
],
|
|
368
368
|
"returnType": {
|
|
369
|
-
"__schema": "
|
|
369
|
+
"__schema": "InferenceTypeSchema",
|
|
370
370
|
"location": {
|
|
371
371
|
"filePath": "button.tsx",
|
|
372
372
|
"line": 25,
|
|
373
373
|
"character": 1
|
|
374
374
|
},
|
|
375
|
-
"
|
|
376
|
-
"internalFilePath": "button.tsx"
|
|
375
|
+
"type": "any"
|
|
377
376
|
},
|
|
378
377
|
"modifiers": [
|
|
379
378
|
"export"
|
|
@@ -425,13 +424,13 @@
|
|
|
425
424
|
"name": "Hi",
|
|
426
425
|
"params": [],
|
|
427
426
|
"returnType": {
|
|
428
|
-
"__schema": "
|
|
427
|
+
"__schema": "InferenceTypeSchema",
|
|
429
428
|
"location": {
|
|
430
429
|
"filePath": "index.ts",
|
|
431
430
|
"line": 21,
|
|
432
431
|
"character": 1
|
|
433
432
|
},
|
|
434
|
-
"
|
|
433
|
+
"type": "void"
|
|
435
434
|
},
|
|
436
435
|
"modifiers": [
|
|
437
436
|
"export"
|
|
@@ -576,14 +575,13 @@
|
|
|
576
575
|
}
|
|
577
576
|
],
|
|
578
577
|
"returnType": {
|
|
579
|
-
"__schema": "
|
|
578
|
+
"__schema": "InferenceTypeSchema",
|
|
580
579
|
"location": {
|
|
581
580
|
"filePath": "button.composition.tsx",
|
|
582
581
|
"line": 14,
|
|
583
582
|
"character": 1
|
|
584
583
|
},
|
|
585
|
-
"
|
|
586
|
-
"internalFilePath": "button.composition.tsx"
|
|
584
|
+
"type": "any"
|
|
587
585
|
},
|
|
588
586
|
"modifiers": [
|
|
589
587
|
"export"
|
|
@@ -3580,144 +3578,6 @@
|
|
|
3580
3578
|
}
|
|
3581
3579
|
]
|
|
3582
3580
|
}
|
|
3583
|
-
},
|
|
3584
|
-
{
|
|
3585
|
-
"__schema": "FunctionLikeSchema",
|
|
3586
|
-
"location": {
|
|
3587
|
-
"filePath": "button.tsx",
|
|
3588
|
-
"line": 25,
|
|
3589
|
-
"character": 1
|
|
3590
|
-
},
|
|
3591
|
-
"signature": "function Button(props: ButtonProps): any",
|
|
3592
|
-
"name": "Button",
|
|
3593
|
-
"params": [
|
|
3594
|
-
{
|
|
3595
|
-
"__schema": "ParameterSchema",
|
|
3596
|
-
"location": {
|
|
3597
|
-
"filePath": "button.tsx",
|
|
3598
|
-
"line": 25,
|
|
3599
|
-
"character": 24
|
|
3600
|
-
},
|
|
3601
|
-
"name": "props",
|
|
3602
|
-
"type": {
|
|
3603
|
-
"__schema": "TypeRefSchema",
|
|
3604
|
-
"location": {
|
|
3605
|
-
"filePath": "button.tsx",
|
|
3606
|
-
"line": 25,
|
|
3607
|
-
"character": 31
|
|
3608
|
-
},
|
|
3609
|
-
"name": "ButtonProps",
|
|
3610
|
-
"internalFilePath": "button.tsx"
|
|
3611
|
-
},
|
|
3612
|
-
"isOptional": false,
|
|
3613
|
-
"isSpread": false
|
|
3614
|
-
}
|
|
3615
|
-
],
|
|
3616
|
-
"returnType": {
|
|
3617
|
-
"__schema": "TypeRefSchema",
|
|
3618
|
-
"location": {
|
|
3619
|
-
"filePath": "button.tsx",
|
|
3620
|
-
"line": 25,
|
|
3621
|
-
"character": 1
|
|
3622
|
-
},
|
|
3623
|
-
"name": "Button",
|
|
3624
|
-
"internalFilePath": "button.tsx"
|
|
3625
|
-
},
|
|
3626
|
-
"modifiers": [
|
|
3627
|
-
"export"
|
|
3628
|
-
]
|
|
3629
|
-
}
|
|
3630
|
-
]
|
|
3631
|
-
},
|
|
3632
|
-
{
|
|
3633
|
-
"__schema": "ModuleSchema",
|
|
3634
|
-
"location": {
|
|
3635
|
-
"filePath": "button.composition.tsx",
|
|
3636
|
-
"line": 3,
|
|
3637
|
-
"character": 1
|
|
3638
|
-
},
|
|
3639
|
-
"exports": [],
|
|
3640
|
-
"internals": [
|
|
3641
|
-
{
|
|
3642
|
-
"__schema": "FunctionLikeSchema",
|
|
3643
|
-
"location": {
|
|
3644
|
-
"filePath": "button.composition.tsx",
|
|
3645
|
-
"line": 14,
|
|
3646
|
-
"character": 1
|
|
3647
|
-
},
|
|
3648
|
-
"doc": {
|
|
3649
|
-
"__schema": "DocSchema",
|
|
3650
|
-
"location": {
|
|
3651
|
-
"filePath": "button.composition.tsx",
|
|
3652
|
-
"line": 10,
|
|
3653
|
-
"character": 1
|
|
3654
|
-
},
|
|
3655
|
-
"raw": "/**\n * example of passing a JSX Element as a parameter\n */",
|
|
3656
|
-
"comment": "example of passing a JSX Element as a parameter",
|
|
3657
|
-
"tags": []
|
|
3658
|
-
},
|
|
3659
|
-
"signature": "function Footer({ children }: {\n children?: any;\n}): any",
|
|
3660
|
-
"name": "Footer",
|
|
3661
|
-
"params": [
|
|
3662
|
-
{
|
|
3663
|
-
"__schema": "ParameterSchema",
|
|
3664
|
-
"location": {
|
|
3665
|
-
"filePath": "button.composition.tsx",
|
|
3666
|
-
"line": 14,
|
|
3667
|
-
"character": 24
|
|
3668
|
-
},
|
|
3669
|
-
"name": "{ children = <BasicButton /> }",
|
|
3670
|
-
"type": {
|
|
3671
|
-
"__schema": "TypeLiteralSchema",
|
|
3672
|
-
"location": {
|
|
3673
|
-
"filePath": "button.composition.tsx",
|
|
3674
|
-
"line": 14,
|
|
3675
|
-
"character": 24
|
|
3676
|
-
},
|
|
3677
|
-
"members": [
|
|
3678
|
-
{
|
|
3679
|
-
"__schema": "InferenceTypeSchema",
|
|
3680
|
-
"location": {
|
|
3681
|
-
"filePath": "button.composition.tsx",
|
|
3682
|
-
"line": 14,
|
|
3683
|
-
"character": 24
|
|
3684
|
-
},
|
|
3685
|
-
"name": "children",
|
|
3686
|
-
"type": "any"
|
|
3687
|
-
}
|
|
3688
|
-
]
|
|
3689
|
-
},
|
|
3690
|
-
"isOptional": false,
|
|
3691
|
-
"objectBindingNodes": [
|
|
3692
|
-
{
|
|
3693
|
-
"__schema": "InferenceTypeSchema",
|
|
3694
|
-
"location": {
|
|
3695
|
-
"filePath": "button.composition.tsx",
|
|
3696
|
-
"line": 14,
|
|
3697
|
-
"character": 26
|
|
3698
|
-
},
|
|
3699
|
-
"name": "children",
|
|
3700
|
-
"type": "any",
|
|
3701
|
-
"defaultValue": "<BasicButton />",
|
|
3702
|
-
"isSpread": false
|
|
3703
|
-
}
|
|
3704
|
-
],
|
|
3705
|
-
"isSpread": false
|
|
3706
|
-
}
|
|
3707
|
-
],
|
|
3708
|
-
"returnType": {
|
|
3709
|
-
"__schema": "TypeRefSchema",
|
|
3710
|
-
"location": {
|
|
3711
|
-
"filePath": "button.composition.tsx",
|
|
3712
|
-
"line": 14,
|
|
3713
|
-
"character": 1
|
|
3714
|
-
},
|
|
3715
|
-
"name": "Footer",
|
|
3716
|
-
"internalFilePath": "button.composition.tsx"
|
|
3717
|
-
},
|
|
3718
|
-
"modifiers": [
|
|
3719
|
-
"export"
|
|
3720
|
-
]
|
|
3721
3581
|
}
|
|
3722
3582
|
]
|
|
3723
3583
|
},
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"jsx": "react",
|
|
4
|
+
"experimentalDecorators": true,
|
|
5
|
+
"emitDecoratorMetadata": true,
|
|
6
|
+
"strict": true,
|
|
7
|
+
"moduleResolution": "node",
|
|
8
|
+
"module": "commonjs",
|
|
9
|
+
"target": "es2015",
|
|
10
|
+
"skipLibCheck": true,
|
|
11
|
+
"noImplicitAny": false,
|
|
12
|
+
"preserveConstEnums": true,
|
|
13
|
+
"strictPropertyInitialization": false,
|
|
14
|
+
"esModuleInterop": true,
|
|
15
|
+
"resolveJsonModule": true,
|
|
16
|
+
"sourceMap": true,
|
|
17
|
+
"outDir": "./dist"
|
|
18
|
+
}
|
|
19
|
+
}
|