@teambit/schema 1.0.1080 → 1.0.1082

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.
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_chai","data","require","_semanticsEntities","_componentId","_semanticsEntities2","_schemaMain","loc","filePath","line","character","compId","ComponentID","fromString","makeVar","name","type","VariableLikeSchema","KeywordTypeSchema","makeSchema","exports","internals","internalModules","length","ModuleSchema","APISchema","makeAssessor","assessor","ImpactAssessor","registerDefaultRules","DEFAULT_IMPACT_RULES","describe","unavailable","available","reason","it","result","computeAPIDiff","base","compare","expect","status","to","equal","hasChanges","be","false","changes","have","deep","true","added","publicChanges","internalChanges","impact","internalImpact","removed","classExport","ExportSchema","defaultAsUnimplemented","UnImplementedSchema","defaultAsTypeRefAlias","TypeRefSchema","lengthOf","map","c","exportName","include","not","unresolved","unresolvedExports","docs","DocSchema","documentedVar","UnresolvedSchema","modified","changeKind","succeedStatus","loggerStub","warn","debug","error","info","makeComponent","buildStatus","id","makeSchemaMain","disabled","workspace","env","artifacts","envs","getEnv","builder","getArtifactsVinylByAspectAndTaskName","config","defaultParser","SchemaMain","undefined","schemaMain","availability","getSchemaWithAvailability","getSchemaExtractor","extract","Error","dispose","schemaJson","empty","toObject","contents","Buffer","from","JSON","stringify","schema","module","fail","err","message","live","makeDiffSchemaMain","impactRuleSlot","values","makeComp","idStr","artifactOf","extracted","getIdIfExist","isModified","again","changeVersion","makeFn","returnType","signatureReturn","FunctionLikeSchema","InferenceTypeSchema","fact","find","exist"],"sources":["api-diff-compute.spec.ts"],"sourcesContent":["import { expect } from 'chai';\nimport type { Location as SchemaLocation, SchemaNode } from '@teambit/semantics.entities.semantic-schema';\nimport {\n APISchema,\n ModuleSchema,\n VariableLikeSchema,\n KeywordTypeSchema,\n TypeRefSchema,\n ExportSchema,\n UnImplementedSchema,\n UnresolvedSchema,\n DocSchema,\n FunctionLikeSchema,\n InferenceTypeSchema,\n} from '@teambit/semantics.entities.semantic-schema';\nimport { ComponentID } from '@teambit/component-id';\nimport { computeAPIDiff, ImpactAssessor, DEFAULT_IMPACT_RULES } from '@teambit/semantics.entities.semantic-schema-diff';\nimport { SchemaMain } from './schema.main.runtime';\n\nconst loc: SchemaLocation = { filePath: 'index.ts', line: 0, character: 0 };\nconst compId = ComponentID.fromString('org.scope/button');\n\nfunction makeVar(name: string, type: string): VariableLikeSchema {\n return new VariableLikeSchema(loc, name, `${name}: ${type}`, new KeywordTypeSchema(loc, type), false);\n}\n\nfunction makeSchema(exports: SchemaNode[], internals: SchemaNode[] = []): APISchema {\n const internalModules = internals.length > 0 ? [new ModuleSchema(loc, [], internals)] : [];\n return new APISchema(loc, new ModuleSchema(loc, exports, []), internalModules, compId);\n}\n\nfunction makeAssessor(): ImpactAssessor {\n const assessor = new ImpactAssessor();\n assessor.registerDefaultRules(DEFAULT_IMPACT_RULES);\n return assessor;\n}\n\ndescribe('computeAPIDiff', () => {\n describe('availability short-circuit', () => {\n const unavailable = { available: false, reason: 'NOT_BUILT' as const };\n const available = { available: true };\n\n it('should not fabricate a diff when the base schema is unavailable', () => {\n const result = computeAPIDiff(makeSchema([]), makeSchema([makeVar('foo', 'string')]), makeAssessor(), {\n base: unavailable,\n compare: available,\n });\n expect(result.status).to.equal('BASE_UNAVAILABLE');\n expect(result.hasChanges).to.be.false;\n expect(result.changes).to.have.length(0);\n expect(result.base).to.deep.equal(unavailable);\n expect(result.compare).to.deep.equal(available);\n });\n\n it('should not fabricate a diff when the compare schema is unavailable', () => {\n const result = computeAPIDiff(makeSchema([makeVar('foo', 'string')]), makeSchema([]), makeAssessor(), {\n base: available,\n compare: unavailable,\n });\n expect(result.status).to.equal('COMPARE_UNAVAILABLE');\n expect(result.hasChanges).to.be.false;\n expect(result.changes).to.have.length(0);\n });\n\n it('should report UNAVAILABLE when both schemas are unavailable', () => {\n const result = computeAPIDiff(makeSchema([]), makeSchema([]), makeAssessor(), {\n base: unavailable,\n compare: { available: false, reason: 'NO_EXTRACTOR' },\n });\n expect(result.status).to.equal('UNAVAILABLE');\n expect(result.hasChanges).to.be.false;\n expect(result.compare.reason).to.equal('NO_EXTRACTOR');\n });\n\n it('should default to available and report COMPUTED', () => {\n const result = computeAPIDiff(makeSchema([]), makeSchema([makeVar('foo', 'string')]), makeAssessor());\n expect(result.status).to.equal('COMPUTED');\n expect(result.base.available).to.be.true;\n expect(result.compare.available).to.be.true;\n expect(result.hasChanges).to.be.true;\n expect(result.added).to.equal(1);\n });\n });\n\n describe('impact derivation', () => {\n it('should derive impact from public changes only', () => {\n // internal-only breaking change: internal var type narrowed string → number\n const base = makeSchema([makeVar('Button', 'string')], [makeVar('helper', 'string')]);\n const compare = makeSchema([makeVar('Button', 'string')], [makeVar('helper', 'number')]);\n const result = computeAPIDiff(base, compare, makeAssessor());\n\n expect(result.publicChanges).to.have.length(0);\n expect(result.internalChanges).to.have.length(1);\n expect(result.impact).to.equal('PATCH');\n expect(result.internalImpact).to.equal('BREAKING');\n expect(result.hasChanges).to.be.true;\n });\n\n it('should reflect public breaking changes in impact', () => {\n const base = makeSchema([makeVar('Button', 'string')]);\n const compare = makeSchema([]);\n const result = computeAPIDiff(base, compare, makeAssessor());\n\n expect(result.removed).to.equal(1);\n expect(result.impact).to.equal('BREAKING');\n expect(result.internalImpact).to.equal('PATCH');\n });\n });\n});\n\ndescribe('computeAPIDiff default/re-export aliases (extraction-inconsistency robustness)', () => {\n // Repro of a real false positive: `class AttReact` + `export default AttReact`. Across two builds\n // the default export was extracted inconsistently — an UnImplementedSchema one version, a\n // `AttReact (default)` TypeRef alias the next — while only the docs changed. The diff must not\n // report the default re-export alias as a newly added public API.\n const classExport = () => new ExportSchema(loc, 'AttReact', makeVar('AttReact', 'string'));\n const defaultAsUnimplemented = () => new UnImplementedSchema(loc, 'AttReact', 'Identifier');\n const defaultAsTypeRefAlias = () =>\n new ExportSchema(loc, 'AttReact (default)', new TypeRefSchema(loc, 'AttReact'), 'AttReact (default)');\n\n it('should not report an added export when the default re-export alias changes representation', () => {\n const base = makeSchema([classExport(), defaultAsUnimplemented()]);\n const compare = makeSchema([classExport(), defaultAsTypeRefAlias()]);\n const result = computeAPIDiff(base, compare, makeAssessor());\n expect(result.hasChanges).to.equal(false);\n expect(result.added).to.equal(0);\n expect(result.publicChanges).to.have.lengthOf(0);\n });\n\n it('should drop a redundant default type-ref alias to an already-exported symbol', () => {\n const base = makeSchema([classExport()]);\n const compare = makeSchema([classExport(), defaultAsTypeRefAlias()]);\n const result = computeAPIDiff(base, compare, makeAssessor());\n expect(result.added).to.equal(0);\n expect(result.hasChanges).to.equal(false);\n });\n\n it('should still report a genuinely new export alongside a redundant alias', () => {\n const base = makeSchema([classExport()]);\n const compare = makeSchema([classExport(), defaultAsTypeRefAlias(), makeVar('brandNew', 'string')]);\n const result = computeAPIDiff(base, compare, makeAssessor());\n expect(result.added).to.equal(1);\n expect(result.publicChanges.map((c) => c.exportName)).to.include('brandNew');\n expect(result.publicChanges.map((c) => c.exportName)).to.not.include('AttReact (default)');\n });\n});\n\ndescribe('computeAPIDiff unresolved exports (extraction gaps)', () => {\n const unresolved = (name: string) => new UnImplementedSchema(loc, name, 'Identifier');\n\n it('should not report a removal when the export is merely unresolved on the compare side', () => {\n const base = makeSchema([makeVar('Foo', 'string')]);\n const compare = makeSchema([unresolved('Foo')]);\n const result = computeAPIDiff(base, compare, makeAssessor());\n expect(result.removed).to.equal(0);\n expect(result.hasChanges).to.equal(false);\n expect(result.unresolvedExports).to.include('Foo');\n });\n\n it('should not report an addition when the export was merely unresolved on the base side', () => {\n const base = makeSchema([unresolved('Foo')]);\n const compare = makeSchema([makeVar('Foo', 'string')]);\n const result = computeAPIDiff(base, compare, makeAssessor());\n expect(result.added).to.equal(0);\n expect(result.hasChanges).to.equal(false);\n expect(result.unresolvedExports).to.include('Foo');\n });\n\n it('should surface an export unresolved on both sides without diffing it', () => {\n const base = makeSchema([unresolved('Foo'), makeVar('Bar', 'string')]);\n const compare = makeSchema([unresolved('Foo'), makeVar('Bar', 'string')]);\n const result = computeAPIDiff(base, compare, makeAssessor());\n expect(result.hasChanges).to.equal(false);\n expect(result.unresolvedExports).to.include('Foo');\n });\n\n it('should NOT surface a name that is unresolved on one side but resolved elsewhere (real export wins)', () => {\n // mirrors AttReact: a class export + an unresolved default that shares the class name.\n const base = makeSchema([makeVar('AttReact', 'string'), unresolved('AttReact')]);\n const compare = makeSchema([makeVar('AttReact', 'string')]);\n const result = computeAPIDiff(base, compare, makeAssessor());\n expect(result.hasChanges).to.equal(false);\n expect(result.unresolvedExports).to.have.lengthOf(0);\n });\n});\n\ndescribe('computeAPIDiff UnresolvedSchema placeholders (degraded extraction)', () => {\n // Repro of a real false positive: one side's extraction degraded every re-export to an\n // `UnresolvedSchema` placeholder (no structure, no doc) while the other side came from a healthy\n // build. The diff reported every documented export as MODIFIED \"documentation removed\" labeled\n // \"Unresolved\" instead of routing the name to `unresolvedExports`.\n const docs = new DocSchema(loc, '/** backend server interface. */', 'backend server interface.');\n const documentedVar = (name: string) =>\n new VariableLikeSchema(loc, name, `${name}: string`, new KeywordTypeSchema(loc, 'string'), false, docs);\n\n it('should not diff a documented export against an UnresolvedSchema placeholder on the compare side', () => {\n const base = makeSchema([documentedVar('BackendServer')]);\n const compare = makeSchema([new UnresolvedSchema(loc, 'BackendServer')]);\n const result = computeAPIDiff(base, compare, makeAssessor());\n expect(result.modified).to.equal(0);\n expect(result.removed).to.equal(0);\n expect(result.hasChanges).to.equal(false);\n expect(result.unresolvedExports).to.include('BackendServer');\n });\n\n it('should not diff an UnresolvedSchema placeholder on the base side against a real export', () => {\n const base = makeSchema([new UnresolvedSchema(loc, 'BackendServer')]);\n const compare = makeSchema([documentedVar('BackendServer')]);\n const result = computeAPIDiff(base, compare, makeAssessor());\n expect(result.modified).to.equal(0);\n expect(result.added).to.equal(0);\n expect(result.hasChanges).to.equal(false);\n expect(result.unresolvedExports).to.include('BackendServer');\n });\n\n it('should handle an export-wrapped UnresolvedSchema like a bare one', () => {\n const base = makeSchema([documentedVar('Middleware')]);\n const compare = makeSchema([new ExportSchema(loc, 'Middleware', new UnresolvedSchema(loc, 'Middleware'))]);\n const result = computeAPIDiff(base, compare, makeAssessor());\n expect(result.hasChanges).to.equal(false);\n expect(result.unresolvedExports).to.include('Middleware');\n });\n\n it('should suppress internal placeholder-vs-real pairs without surfacing them as unresolved exports', () => {\n const base = makeSchema([], [documentedVar('helper')]);\n const compare = makeSchema([], [new UnresolvedSchema(loc, 'helper')]);\n const result = computeAPIDiff(base, compare, makeAssessor());\n expect(result.internalChanges).to.have.lengthOf(0);\n expect(result.hasChanges).to.equal(false);\n // internal extraction gaps are suppressed, not reported as unresolved *exports*\n expect(result.unresolvedExports).to.have.lengthOf(0);\n });\n});\n\ndescribe('computeAPIDiff visibility moves', () => {\n it('should report a public→internal move as a public BREAKING change (drives impact, not internalImpact)', () => {\n const base = makeSchema([makeVar('foo', 'string')], []);\n const compare = makeSchema([], [makeVar('foo', 'string')]);\n const result = computeAPIDiff(base, compare, makeAssessor());\n\n expect(result.publicChanges).to.have.length(1);\n expect(result.publicChanges[0].changes?.[0]?.changeKind).to.equal('visibility-public-to-internal');\n expect(result.impact).to.equal('BREAKING');\n });\n});\n\ndescribe('SchemaMain.getSchemaWithAvailability reason mapping', () => {\n const succeedStatus = 'succeed';\n const loggerStub = { warn: () => {}, debug: () => {}, error: () => {}, info: () => {} } as any;\n\n function makeComponent(buildStatus = 'pending') {\n return { id: ComponentID.fromString('org.scope/button'), buildStatus } as any;\n }\n\n function makeSchemaMain({\n disabled = false,\n workspace = {} as any,\n env = {} as any,\n artifacts = [] as any[],\n } = {}): SchemaMain {\n const envs = { getEnv: () => ({ env }) } as any;\n const builder = { getArtifactsVinylByAspectAndTaskName: async () => artifacts } as any;\n const config = { defaultParser: 'typescript', disabled } as any;\n return new SchemaMain(\n undefined as any,\n undefined as any,\n envs,\n config,\n builder,\n workspace,\n loggerStub,\n new ImpactAssessor()\n );\n }\n\n it('should report DISABLED when schema extraction is disabled by config', async () => {\n const schemaMain = makeSchemaMain({ disabled: true });\n const { availability } = await schemaMain.getSchemaWithAvailability(makeComponent());\n expect(availability).to.deep.equal({ available: false, reason: 'DISABLED' });\n });\n\n it('should report NO_EXTRACTOR when the env has no schema extractor', async () => {\n const schemaMain = makeSchemaMain({ env: { name: 'stub-env' } });\n const { availability } = await schemaMain.getSchemaWithAvailability(makeComponent());\n expect(availability).to.deep.equal({ available: false, reason: 'NO_EXTRACTOR' });\n });\n\n it('should report FAILED when extraction throws and no artifact exists', async () => {\n const env = {\n name: 'stub-env',\n getSchemaExtractor: () => ({\n extract: async () => {\n throw new Error('boom');\n },\n dispose: () => {},\n }),\n };\n const schemaMain = makeSchemaMain({ env });\n const { availability } = await schemaMain.getSchemaWithAvailability(makeComponent());\n expect(availability).to.deep.equal({ available: false, reason: 'FAILED' });\n });\n\n it('should report NOT_BUILT for a built/scope component without a schema artifact', async () => {\n const schemaMain = makeSchemaMain({ workspace: undefined as any });\n const { availability } = await schemaMain.getSchemaWithAvailability(makeComponent(succeedStatus));\n expect(availability).to.deep.equal({ available: false, reason: 'NOT_BUILT' });\n });\n\n it('should report available when a schema artifact exists', async () => {\n const schemaJson = APISchema.empty(ComponentID.fromString('org.scope/button')).toObject();\n const artifacts = [{ contents: Buffer.from(JSON.stringify(schemaJson)) }];\n const schemaMain = makeSchemaMain({ workspace: undefined as any, artifacts });\n const { schema, availability } = await schemaMain.getSchemaWithAvailability(makeComponent(succeedStatus));\n expect(availability).to.deep.equal({ available: true });\n expect(schema.module.exports).to.have.length(0);\n });\n\n it('should rethrow extraction errors when alwaysRunExtractor is set', async () => {\n const env = {\n name: 'stub-env',\n getSchemaExtractor: () => ({\n extract: async () => {\n throw new Error('boom');\n },\n dispose: () => {},\n }),\n };\n const schemaMain = makeSchemaMain({ env });\n try {\n await schemaMain.getSchemaWithAvailability(makeComponent(), false, true);\n expect.fail('expected getSchemaWithAvailability to rethrow');\n } catch (err: any) {\n expect(err.message).to.equal('boom');\n }\n });\n\n it('should flag a live-extracted schema so version-keyed consumers do not persist it', async () => {\n const env = {\n name: 'stub-env',\n getSchemaExtractor: () => ({\n extract: async () => makeSchema([makeVar('Foo', 'string')]),\n dispose: () => {},\n }),\n };\n const schemaMain = makeSchemaMain({ env });\n const { availability } = await schemaMain.getSchemaWithAvailability(makeComponent());\n expect(availability.available).to.equal(true);\n expect(availability.live).to.equal(true);\n });\n});\n\ndescribe('SchemaMain.computeAPIDiff schema sourcing', () => {\n const loggerStub = { warn: () => {}, debug: () => {}, error: () => {}, info: () => {} } as any;\n\n function makeDiffSchemaMain({ workspace, env, artifacts }: { workspace: any; env: any; artifacts: any[] }) {\n const envs = { getEnv: () => ({ env }) } as any;\n const builder = { getArtifactsVinylByAspectAndTaskName: async () => artifacts } as any;\n const config = { defaultParser: 'typescript', disabled: false } as any;\n const impactRuleSlot = { values: () => [] } as any;\n return new SchemaMain(\n undefined as any,\n impactRuleSlot,\n envs,\n config,\n builder,\n workspace,\n loggerStub,\n new ImpactAssessor()\n );\n }\n\n const makeComp = (idStr: string) => ({ id: ComponentID.fromString(idStr), buildStatus: 'pending' }) as any;\n const artifactOf = (schema: APISchema) => [{ contents: Buffer.from(JSON.stringify(schema.toObject())) }];\n\n it('should read the built artifact — not live-extract — for an unmodified checkout, and memoize', async () => {\n // repro: a checked-out CI-built snap reports buildStatus \"pending\", which used to force a\n // tsserver extraction pass per component per diff (minutes on a cold lane-compare) whose\n // degraded output was then cached under the immutable snap pair.\n let extracted = 0;\n const env = {\n name: 'stub-env',\n getSchemaExtractor: () => ({\n extract: async () => {\n extracted += 1;\n return makeSchema([]);\n },\n dispose: () => {},\n }),\n };\n const workspace = { getIdIfExist: (id: ComponentID) => id, isModified: async () => false } as any;\n const schemaMain = makeDiffSchemaMain({ workspace, env, artifacts: artifactOf(makeSchema([])) });\n\n const result = await schemaMain.computeAPIDiff(\n makeComp('org.scope/button@0.0.1'),\n makeComp('org.scope/button@0.0.2')\n );\n expect(result?.status).to.equal('COMPUTED');\n expect(extracted).to.equal(0);\n expect(result?.base.live).to.equal(undefined);\n\n // artifact-derived result is immutable even with buildStatus \"pending\" — memoized\n const again = await schemaMain.computeAPIDiff(\n makeComp('org.scope/button@0.0.1'),\n makeComp('org.scope/button@0.0.2')\n );\n expect(again).to.equal(result);\n });\n\n it('should live-extract for a modified checkout and never memoize that result', async () => {\n let extracted = 0;\n const env = {\n name: 'stub-env',\n getSchemaExtractor: () => ({\n extract: async () => {\n extracted += 1;\n return makeSchema([makeVar('Foo', 'string')]);\n },\n dispose: () => {},\n }),\n };\n const workspace = { getIdIfExist: (id: ComponentID) => id, isModified: async () => true } as any;\n const schemaMain = makeDiffSchemaMain({ workspace, env, artifacts: artifactOf(makeSchema([])) });\n\n const result = await schemaMain.computeAPIDiff(\n makeComp('org.scope/button@0.0.1'),\n makeComp('org.scope/button@0.0.2')\n );\n expect(result?.status).to.equal('COMPUTED');\n expect(extracted).to.equal(2); // both sides extracted live, artifact bypassed\n expect(result?.base.live).to.equal(true);\n expect(result?.compare.live).to.equal(true);\n\n const again = await schemaMain.computeAPIDiff(\n makeComp('org.scope/button@0.0.1'),\n makeComp('org.scope/button@0.0.2')\n );\n expect(again).to.not.equal(result); // live results are recomputed, never served from memo\n expect(extracted).to.equal(4);\n });\n\n it('should read the artifact for a version that is not checked out in the workspace', async () => {\n let extracted = 0;\n const env = {\n name: 'stub-env',\n getSchemaExtractor: () => ({\n extract: async () => {\n extracted += 1;\n return makeSchema([]);\n },\n dispose: () => {},\n }),\n };\n // checked out at a different version than either diff side\n const workspace = {\n getIdIfExist: (id: ComponentID) => id.changeVersion('9.9.9'),\n isModified: async () => true,\n } as any;\n const schemaMain = makeDiffSchemaMain({ workspace, env, artifacts: artifactOf(makeSchema([])) });\n\n const result = await schemaMain.computeAPIDiff(\n makeComp('org.scope/button@0.0.1'),\n makeComp('org.scope/button@0.0.2')\n );\n expect(result?.status).to.equal('COMPUTED');\n expect(extracted).to.equal(0);\n });\n});\n\ndescribe('computeAPIDiff self-referential returnType (degraded extraction)', () => {\n // Repro of a real artifact: a component fn `Checkbox` extracted while React types were unresolved.\n // quickinfo (and thus the stored signature) said `…): any`, but the extractor's definition-hunt\n // resolved the function's own name and stored returnType = TypeRefSchema('Checkbox'). The diff\n // must trust the signature in that case — showing \"React.JSX.Element → Checkbox\" while the\n // signature snippet right above it shows \"…): any\" reads as nonsense.\n const makeFn = (returnType: SchemaNode, signatureReturn: string) =>\n new FunctionLikeSchema(\n loc,\n 'Checkbox',\n [],\n returnType,\n `function Checkbox(props: CheckboxProps): ${signatureReturn}`,\n []\n );\n\n it('should prefer the signature return annotation when the returnType node is a self-reference', () => {\n const base = makeSchema([makeFn(new InferenceTypeSchema(loc, 'React.JSX.Element'), 'React.JSX.Element')]);\n const compare = makeSchema([makeFn(new TypeRefSchema(loc, 'Checkbox'), 'any')]);\n const result = computeAPIDiff(base, compare, makeAssessor());\n\n const fact = result.publicChanges[0]?.changes?.find((c) => c.changeKind === 'return-type-changed');\n expect(fact, 'expected a return-type-changed fact').to.exist;\n expect(fact?.from).to.equal('React.JSX.Element');\n expect(fact?.to).to.equal('any');\n });\n\n it('should keep the node rendering when a self-named return type agrees with the signature', () => {\n // legit pattern: function merged with a same-named interface, genuinely returning `Checkbox`.\n const base = makeSchema([makeFn(new InferenceTypeSchema(loc, 'React.JSX.Element'), 'React.JSX.Element')]);\n const compare = makeSchema([makeFn(new TypeRefSchema(loc, 'Checkbox'), 'Checkbox')]);\n const result = computeAPIDiff(base, compare, makeAssessor());\n\n const fact = result.publicChanges[0]?.changes?.find((c) => c.changeKind === 'return-type-changed');\n expect(fact?.to).to.equal('Checkbox');\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -3,10 +3,10 @@
3
3
  "impact": "NON_BREAKING",
4
4
  "added": 1,
5
5
  "removed": 0,
6
- "modified": 7,
6
+ "modified": 6,
7
7
  "breaking": 0,
8
8
  "nonBreaking": 6,
9
- "patch": 2,
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",
@@ -366,14 +366,13 @@
366
366
  }
367
367
  ],
368
368
  "returnType": {
369
- "__schema": "TypeRefSchema",
369
+ "__schema": "InferenceTypeSchema",
370
370
  "location": {
371
371
  "filePath": "button.tsx",
372
372
  "line": 25,
373
373
  "character": 1
374
374
  },
375
- "name": "Button",
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": "TypeRefSchema",
427
+ "__schema": "InferenceTypeSchema",
429
428
  "location": {
430
429
  "filePath": "index.ts",
431
430
  "line": 21,
432
431
  "character": 1
433
432
  },
434
- "name": "Hi"
433
+ "type": "void"
435
434
  },
436
435
  "modifiers": [
437
436
  "export"
@@ -576,14 +575,13 @@
576
575
  }
577
576
  ],
578
577
  "returnType": {
579
- "__schema": "TypeRefSchema",
578
+ "__schema": "InferenceTypeSchema",
580
579
  "location": {
581
580
  "filePath": "button.composition.tsx",
582
581
  "line": 14,
583
582
  "character": 1
584
583
  },
585
- "name": "Footer",
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,5 @@
1
+ export declare class Foo {
2
+ name: string;
3
+ build(): string;
4
+ }
5
+ export default Foo;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = exports.Foo = void 0;
7
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
8
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
9
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
10
+ class Foo {
11
+ constructor() {
12
+ _defineProperty(this, "name", 'foo');
13
+ }
14
+ build() {
15
+ return 'built';
16
+ }
17
+ }
18
+ exports.Foo = Foo;
19
+ var _default = exports.default = Foo;
20
+
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Foo","constructor","_defineProperty","build","exports","_default","default"],"sources":["index.ts"],"sourcesContent":["export class Foo {\n name = 'foo';\n\n build(): string {\n return 'built';\n }\n}\n\nexport default Foo;\n"],"mappings":";;;;;;;;;AAAO,MAAMA,GAAG,CAAC;EAAAC,YAAA;IAAAC,eAAA,eACR,KAAK;EAAA;EAEZC,KAAKA,CAAA,EAAW;IACd,OAAO,OAAO;EAChB;AACF;AAACC,OAAA,CAAAJ,GAAA,GAAAA,GAAA;AAAA,IAAAK,QAAA,GAAAD,OAAA,CAAAE,OAAA,GAEcN,GAAG","ignoreList":[]}
@@ -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
+ }
@@ -1,7 +1,7 @@
1
- import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.semantics_schema@1.0.1080/dist/schema.composition.js';
2
- import * as compositions_1 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.semantics_schema@1.0.1080/dist/mock/button/button.composition.js';
3
- import * as compositions_2 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.semantics_schema@1.0.1080/dist/mock/button-v2/button.composition.js';
4
- import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.semantics_schema@1.0.1080/dist/schema.docs.mdx';
1
+ import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.semantics_schema@1.0.1082/dist/schema.composition.js';
2
+ import * as compositions_1 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.semantics_schema@1.0.1082/dist/mock/button-v2/button.composition.js';
3
+ import * as compositions_2 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.semantics_schema@1.0.1082/dist/mock/button/button.composition.js';
4
+ import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.semantics_schema@1.0.1082/dist/schema.docs.mdx';
5
5
 
6
6
  export const compositions = [compositions_0, compositions_1, compositions_2];
7
7
  export const overview = [overview_0];
@@ -16,6 +16,8 @@ export declare class SchemaDiffCommand implements Command {
16
16
  json(args: CLIArgs): Promise<Record<string, any>>;
17
17
  private computeDiff;
18
18
  private toAgentJson;
19
+ private static REASON_TEXT;
20
+ private formatUnavailable;
19
21
  private formatDiffResult;
20
22
  private formatSection;
21
23
  private sortChanges;
@@ -11,6 +11,13 @@ function _chalk() {
11
11
  };
12
12
  return data;
13
13
  }
14
+ function _cli() {
15
+ const data = require("@teambit/cli");
16
+ _cli = function () {
17
+ return data;
18
+ };
19
+ return data;
20
+ }
14
21
  function _semanticsEntities() {
15
22
  const data = require("@teambit/semantics.entities.semantic-schema-diff");
16
23
  _semanticsEntities = function () {
@@ -71,9 +78,13 @@ examples:
71
78
  if (!baseComponent) throw new Error(`could not load ${baseId.toString()}`);
72
79
  if (!compareComponent) throw new Error(`could not load ${compareId.toString()}`);
73
80
  this.logger.debug(`computing API diff: ${baseId.toString()} -> ${compareId.toString()}`);
74
- const [baseSchema, compareSchema] = await Promise.all([this.schema.getSchema(baseComponent), this.schema.getSchema(compareComponent)]);
75
- const assessor = this.schema.getImpactAssessor();
76
- const diff = (0, _semanticsEntities().computeAPIDiff)(baseSchema, compareSchema, assessor);
81
+
82
+ // availability-aware and artifact-first (see SchemaMain.computeAPIDiff): a version without a
83
+ // schema (NOT_BUILT/NO_EXTRACTOR/DISABLED/FAILED) short-circuits with an explicit status —
84
+ // never diffed as an empty API — and built versions read their schema artifact instead of
85
+ // running a live extraction pass.
86
+ const diff = await this.schema.computeAPIDiff(baseComponent, compareComponent);
87
+ if (!diff) throw new Error(`failed computing API diff for ${componentId.toString()}`);
77
88
  return {
78
89
  diff,
79
90
  componentId: componentId.toStringWithoutVersion()
@@ -105,8 +116,15 @@ examples:
105
116
  componentId,
106
117
  baseVersion,
107
118
  compareVersion,
119
+ status: diff.status,
120
+ base: diff.base,
121
+ compare: diff.compare,
108
122
  hasChanges: diff.hasChanges,
123
+ // `impact` is consumer-facing (public changes only); `internalImpact` covers non-exported changes,
124
+ // which still count toward `summary.breaking` — surface both so an internal-only breaking change
125
+ // isn't read as a PATCH from `impact` alone.
109
126
  impact: diff.impact,
127
+ internalImpact: diff.internalImpact,
110
128
  summary: {
111
129
  added: diff.added,
112
130
  removed: diff.removed,
@@ -119,7 +137,23 @@ examples:
119
137
  internal: diff.internalChanges.map(serializeChange)
120
138
  };
121
139
  }
140
+ formatUnavailable(diff, pattern) {
141
+ const lines = ['', ` ${(0, _cli().formatWarningSummary)(`Unable to compute API diff for "${pattern}"`)}`, ''];
142
+ if (!diff.base.available) {
143
+ lines.push(` base version ${SchemaDiffCommand.REASON_TEXT[diff.base.reason || 'FAILED']}`);
144
+ }
145
+ if (!diff.compare.available) {
146
+ lines.push(` compare version ${SchemaDiffCommand.REASON_TEXT[diff.compare.reason || 'FAILED']}`);
147
+ }
148
+ lines.push('');
149
+ return lines.join('\n');
150
+ }
122
151
  formatDiffResult(diff, pattern) {
152
+ // a missing schema is not an empty API — report which side lacks data instead of
153
+ // pretending "no changes" (or worse, a fabricated full-surface diff).
154
+ if (diff.status !== 'COMPUTED') {
155
+ return this.formatUnavailable(diff, pattern);
156
+ }
123
157
  if (!diff.hasChanges) {
124
158
  return _chalk().default.green(`\n No API changes detected for ${pattern}\n`);
125
159
  }
@@ -136,13 +170,18 @@ examples:
136
170
  if (diff.patch > 0) impactParts.push(_chalk().default.dim(`${diff.patch} patch`));
137
171
  lines.push(` ${parts.join(_chalk().default.dim(' · '))} ${_chalk().default.dim('|')} ${impactParts.join(_chalk().default.dim(' · '))}`);
138
172
  lines.push('');
173
+
174
+ // the header badge above is the consumer-facing (public) impact. internal changes carry their own
175
+ // impact — show it on the internal section so an internal-only breaking change is visible and not
176
+ // masked by a PATCH header.
139
177
  this.formatSection(lines, 'Public API', diff.publicChanges);
140
- this.formatSection(lines, 'Internal (non-exported)', diff.internalChanges);
178
+ this.formatSection(lines, 'Internal (non-exported)', diff.internalChanges, diff.internalImpact);
141
179
  return lines.join('\n');
142
180
  }
143
- formatSection(lines, title, changes) {
181
+ formatSection(lines, title, changes, impact) {
144
182
  if (changes.length === 0) return;
145
- lines.push(` ${_chalk().default.bold.underline(title)}`);
183
+ const badge = impact ? ` ${this.impactBadge(impact)}` : '';
184
+ lines.push(` ${(0, _cli().formatTitle)(title)}${badge}`);
146
185
  lines.push('');
147
186
  for (const change of this.sortChanges(changes)) {
148
187
  lines.push(...this.formatChange(change));
@@ -221,6 +260,12 @@ examples:
221
260
  }
222
261
  }
223
262
  exports.SchemaDiffCommand = SchemaDiffCommand;
263
+ _defineProperty(SchemaDiffCommand, "REASON_TEXT", {
264
+ NOT_BUILT: 'was built before API extraction — no API snapshot exists',
265
+ NO_EXTRACTOR: "its env doesn't provide a schema extractor",
266
+ DISABLED: 'has schema extraction disabled',
267
+ FAILED: 'API data could not be loaded'
268
+ });
224
269
  _defineProperty(SchemaDiffCommand, "IMPACT_STYLES", {
225
270
  BREAKING: {
226
271
  badge: _chalk().default.bgRed.white.bold(' BREAKING '),