@teambit/semantics.entities.semantic-schema 0.0.100 → 0.0.102

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.
Files changed (41) hide show
  1. package/dist/index.d.ts +2 -0
  2. package/dist/index.js +42 -0
  3. package/dist/index.js.map +1 -1
  4. package/dist/schema-diff-members.d.ts +3 -0
  5. package/dist/schema-diff-members.js +171 -0
  6. package/dist/schema-diff-members.js.map +1 -0
  7. package/dist/schema-diff.d.ts +13 -0
  8. package/dist/schema-diff.js +138 -0
  9. package/dist/schema-diff.js.map +1 -0
  10. package/dist/schema-node.d.ts +10 -2
  11. package/dist/schema-node.js +49 -0
  12. package/dist/schema-node.js.map +1 -1
  13. package/dist/schemas/class.d.ts +2 -0
  14. package/dist/schemas/class.js +11 -0
  15. package/dist/schemas/class.js.map +1 -1
  16. package/dist/schemas/enum.d.ts +2 -0
  17. package/dist/schemas/enum.js +55 -0
  18. package/dist/schemas/enum.js.map +1 -1
  19. package/dist/schemas/function-like.d.ts +9 -0
  20. package/dist/schemas/function-like.js +300 -0
  21. package/dist/schemas/function-like.js.map +1 -1
  22. package/dist/schemas/interface.d.ts +2 -0
  23. package/dist/schemas/interface.js +11 -0
  24. package/dist/schemas/interface.js.map +1 -1
  25. package/dist/schemas/type.d.ts +2 -0
  26. package/dist/schemas/type.js +25 -0
  27. package/dist/schemas/type.js.map +1 -1
  28. package/dist/schemas/variable-like.d.ts +2 -0
  29. package/dist/schemas/variable-like.js +60 -0
  30. package/dist/schemas/variable-like.js.map +1 -1
  31. package/index.ts +2 -0
  32. package/package.json +2 -2
  33. package/schema-diff-members.ts +164 -0
  34. package/schema-diff.ts +168 -0
  35. package/schema-node.ts +37 -2
  36. package/schemas/class.ts +7 -0
  37. package/schemas/enum.ts +46 -0
  38. package/schemas/function-like.ts +277 -0
  39. package/schemas/interface.ts +7 -0
  40. package/schemas/type.ts +18 -0
  41. package/schemas/variable-like.ts +54 -0
@@ -1 +1 @@
1
- {"version":3,"names":["_chalk","data","_interopRequireDefault","require","_schemaNode","_parameter","_docs","_tag","_schemaRegistry","e","__esModule","default","FunctionLikeSchema","SchemaNode","displaySchemaName","constructor","location","name","params","returnType","signature","modifiers","doc","typeParams","decorators","createSignature","getNodes","toString","options","bold","color","chalk","text","paramsStr","map","param","join","typeParamsStr","decoratorsStr","decorator","modifiersToString","toFullSignature","result","showDocs","modifiersStr","paramStr","isSpread","isOptional","type","defaultValue","undefined","isDeprecated","Boolean","hasTag","TagName","deprecated","isPrivate","find","m","private","generateSignature","toObject","fromObject","obj","ParameterSchema","SchemaRegistry","DocSchema","modifiersToPrint","filter","modifier","length","exports"],"sources":["function-like.ts"],"sourcesContent":["import chalk from 'chalk';\nimport type { SchemaLocation } from '../schema-node';\nimport { SchemaNode } from '../schema-node';\nimport { ParameterSchema } from './parameter';\nimport { DocSchema } from './docs';\nimport { TagName } from './docs/tag';\nimport { SchemaRegistry } from '../schema-registry';\n\nexport type Modifier =\n | 'static'\n | 'public'\n | 'private'\n | 'protected'\n | 'readonly'\n | 'abstract'\n | 'async'\n | 'override'\n | 'export';\n\n/**\n * function-like can be a function, method, arrow-function, variable-function, etc.\n */\nexport class FunctionLikeSchema extends SchemaNode {\n readonly returnType: SchemaNode;\n readonly params: ParameterSchema[];\n readonly doc?: DocSchema;\n readonly signature?: string | undefined;\n readonly displaySchemaName = 'Functions';\n\n constructor(\n readonly location: SchemaLocation,\n readonly name: string,\n params: ParameterSchema[],\n returnType: SchemaNode,\n signature: string,\n readonly modifiers: Modifier[] = [],\n doc?: DocSchema,\n readonly typeParams?: string[],\n readonly decorators?: SchemaNode[]\n ) {\n super();\n this.params = params;\n this.returnType = returnType;\n this.doc = doc;\n this.signature = signature || FunctionLikeSchema.createSignature(this.name, this.params, this.returnType);\n }\n\n getNodes() {\n return [...this.params, this.returnType, ...(this.decorators || [])];\n }\n\n toString(options?: { color?: boolean }) {\n const bold = options?.color ? chalk.bold : (text: string) => text;\n const paramsStr = this.params.map((param) => param.toString()).join(', ');\n const typeParamsStr = this.typeParams ? `<${this.typeParams.join(', ')}>` : '';\n const decoratorsStr = this.decorators?.map((decorator) => decorator.toString(options)).join('\\n');\n return `${this.decorators ? `${decoratorsStr}\\n` : ''}${this.modifiersToString()}${typeParamsStr}${bold(\n this.name\n )}(${paramsStr}): ${this.returnType.toString(options)}`;\n }\n\n toFullSignature(options?: { showDocs?: boolean }): string {\n let result = '';\n if (options?.showDocs && this.doc) {\n result += `${this.doc.toFullSignature()}\\n`;\n }\n const decoratorsStr = this.decorators?.map((decorator) => decorator.toString()).join('\\n');\n if (decoratorsStr) {\n result += `${decoratorsStr}\\n`;\n }\n const modifiersStr = this.modifiersToString();\n const typeParamsStr = this.typeParams ? `<${this.typeParams.join(', ')}>` : '';\n const paramsStr = this.params\n .map((param) => {\n let paramStr = '';\n if (param.isSpread) {\n paramStr += '...';\n }\n paramStr += param.name;\n if (param.isOptional) {\n paramStr += '?';\n }\n paramStr += `: ${param.type.toString()}`;\n if (param.defaultValue !== undefined) {\n paramStr += ` = ${param.defaultValue}`;\n }\n return paramStr;\n })\n .join(', ');\n result += `${modifiersStr}${this.name}${typeParamsStr}(${paramsStr}): ${this.returnType.toString()}`;\n return result;\n }\n\n isDeprecated(): boolean {\n return Boolean(this.doc?.hasTag(TagName.deprecated));\n }\n\n isPrivate(): boolean {\n return Boolean(this.modifiers.find((m) => m === 'private') || this.doc?.hasTag(TagName.private));\n }\n\n generateSignature(): string {\n return FunctionLikeSchema.createSignature(this.name, this.params, this.returnType, this.decorators);\n }\n\n static createSignature(\n name: string,\n params: ParameterSchema[],\n returnType: SchemaNode,\n decorators?: SchemaNode[]\n ): string {\n const paramsStr = params\n .map((param) => {\n let type = param.type.toString();\n if (param.isSpread) type = `...${type}`;\n return `${param.name}${param.isOptional ? '?' : ''}: ${type}`;\n })\n .join(', ');\n const decoratorsStr = decorators?.map((decorator) => decorator.toString()).join('\\n');\n return `${decorators ? `${decoratorsStr}\\n` : ''}${name}(${paramsStr}): ${returnType.toString()}`;\n }\n\n toObject() {\n return {\n ...super.toObject(),\n name: this.name,\n params: this.params.map((param) => param.toObject()),\n returnType: this.returnType.toObject(),\n signature: this.signature,\n modifiers: this.modifiers,\n doc: this.doc?.toObject(),\n typeParams: this.typeParams,\n decorators: this.decorators?.map((decorator) => decorator.toObject()),\n };\n }\n\n static fromObject(obj: Record<string, any>) {\n return new FunctionLikeSchema(\n obj.location,\n obj.name,\n obj.params.map((param: Record<string, any>) => ParameterSchema.fromObject(param)),\n SchemaRegistry.fromObject(obj.returnType),\n obj.signature,\n obj.modifiers,\n obj.doc ? DocSchema.fromObject(obj.doc) : undefined,\n obj.typeParams,\n obj.decorators?.map((decorator) => SchemaRegistry.fromObject(decorator))\n );\n }\n\n private modifiersToString() {\n const modifiersToPrint = this.modifiers.filter((modifier) => modifier !== 'export');\n return modifiersToPrint.length ? `${modifiersToPrint.join(' ')} ` : '';\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_chalk","data","_interopRequireDefault","require","_schemaNode","_schemaDiff","_parameter","_docs","_tag","_schemaRegistry","e","__esModule","default","FunctionLikeSchema","SchemaNode","displaySchemaName","constructor","location","name","params","returnType","signature","modifiers","doc","typeParams","decorators","createSignature","getNodes","toString","options","bold","color","chalk","text","paramsStr","map","param","join","typeParamsStr","decoratorsStr","decorator","modifiersToString","toFullSignature","result","showDocs","modifiersStr","paramStr","isSpread","isOptional","type","defaultValue","undefined","isDeprecated","Boolean","hasTag","TagName","deprecated","isPrivate","find","m","private","generateSignature","toObject","fromObject","obj","ParameterSchema","SchemaRegistry","DocSchema","diff","other","facts","baseObj","compareObj","diffParams","typesAreSemanticallyEqual","fromType","typeStr","toType","push","changeKind","description","context","position","from","to","deepEqualNoLocation","diffModifiers","diffDoc","baseMods","compareMods","base","filter","compare","added","includes","removed","parts","length","accessNarrowed","baseParams","compareParams","p","slice","isOpt","paramName","hasDefault","paramType","minLen","Math","min","i","diffOverlappingParam","bp","cp","index","objectBindingNodes","diffDestructuredParam","nameEqual","typeEqual","fromName","toName","diffParamOptionality","diffParamDefault","previousDefault","String","newDefault","baseBindings","compareBindings","baseMap","Map","b","compareMap","has","propertyName","bb","cb","get","diffBindingDefault","parentIsOptional","modifiersToPrint","modifier","exports"],"sources":["function-like.ts"],"sourcesContent":["import chalk from 'chalk';\nimport type { SchemaLocation } from '../schema-node';\nimport { SchemaNode } from '../schema-node';\nimport type { SchemaChangeFact } from '../schema-diff';\nimport { typesAreSemanticallyEqual, typeStr, deepEqualNoLocation, diffDoc } from '../schema-diff';\nimport { ParameterSchema } from './parameter';\nimport { DocSchema } from './docs';\nimport { TagName } from './docs/tag';\nimport { SchemaRegistry } from '../schema-registry';\n\nexport type Modifier =\n | 'static'\n | 'public'\n | 'private'\n | 'protected'\n | 'readonly'\n | 'abstract'\n | 'async'\n | 'override'\n | 'export';\n\n/**\n * function-like can be a function, method, arrow-function, variable-function, etc.\n */\nexport class FunctionLikeSchema extends SchemaNode {\n readonly returnType: SchemaNode;\n readonly params: ParameterSchema[];\n readonly doc?: DocSchema;\n readonly signature?: string | undefined;\n readonly displaySchemaName = 'Functions';\n\n constructor(\n readonly location: SchemaLocation,\n readonly name: string,\n params: ParameterSchema[],\n returnType: SchemaNode,\n signature: string,\n readonly modifiers: Modifier[] = [],\n doc?: DocSchema,\n readonly typeParams?: string[],\n readonly decorators?: SchemaNode[]\n ) {\n super();\n this.params = params;\n this.returnType = returnType;\n this.doc = doc;\n this.signature = signature || FunctionLikeSchema.createSignature(this.name, this.params, this.returnType);\n }\n\n getNodes() {\n return [...this.params, this.returnType, ...(this.decorators || [])];\n }\n\n toString(options?: { color?: boolean }) {\n const bold = options?.color ? chalk.bold : (text: string) => text;\n const paramsStr = this.params.map((param) => param.toString()).join(', ');\n const typeParamsStr = this.typeParams ? `<${this.typeParams.join(', ')}>` : '';\n const decoratorsStr = this.decorators?.map((decorator) => decorator.toString(options)).join('\\n');\n return `${this.decorators ? `${decoratorsStr}\\n` : ''}${this.modifiersToString()}${typeParamsStr}${bold(\n this.name\n )}(${paramsStr}): ${this.returnType.toString(options)}`;\n }\n\n toFullSignature(options?: { showDocs?: boolean }): string {\n let result = '';\n if (options?.showDocs && this.doc) {\n result += `${this.doc.toFullSignature()}\\n`;\n }\n const decoratorsStr = this.decorators?.map((decorator) => decorator.toString()).join('\\n');\n if (decoratorsStr) {\n result += `${decoratorsStr}\\n`;\n }\n const modifiersStr = this.modifiersToString();\n const typeParamsStr = this.typeParams ? `<${this.typeParams.join(', ')}>` : '';\n const paramsStr = this.params\n .map((param) => {\n let paramStr = '';\n if (param.isSpread) {\n paramStr += '...';\n }\n paramStr += param.name;\n if (param.isOptional) {\n paramStr += '?';\n }\n paramStr += `: ${param.type.toString()}`;\n if (param.defaultValue !== undefined) {\n paramStr += ` = ${param.defaultValue}`;\n }\n return paramStr;\n })\n .join(', ');\n result += `${modifiersStr}${this.name}${typeParamsStr}(${paramsStr}): ${this.returnType.toString()}`;\n return result;\n }\n\n isDeprecated(): boolean {\n return Boolean(this.doc?.hasTag(TagName.deprecated));\n }\n\n isPrivate(): boolean {\n return Boolean(this.modifiers.find((m) => m === 'private') || this.doc?.hasTag(TagName.private));\n }\n\n generateSignature(): string {\n return FunctionLikeSchema.createSignature(this.name, this.params, this.returnType, this.decorators);\n }\n\n static createSignature(\n name: string,\n params: ParameterSchema[],\n returnType: SchemaNode,\n decorators?: SchemaNode[]\n ): string {\n const paramsStr = params\n .map((param) => {\n let type = param.type.toString();\n if (param.isSpread) type = `...${type}`;\n return `${param.name}${param.isOptional ? '?' : ''}: ${type}`;\n })\n .join(', ');\n const decoratorsStr = decorators?.map((decorator) => decorator.toString()).join('\\n');\n return `${decorators ? `${decoratorsStr}\\n` : ''}${name}(${paramsStr}): ${returnType.toString()}`;\n }\n\n toObject() {\n return {\n ...super.toObject(),\n name: this.name,\n params: this.params.map((param) => param.toObject()),\n returnType: this.returnType.toObject(),\n signature: this.signature,\n modifiers: this.modifiers,\n doc: this.doc?.toObject(),\n typeParams: this.typeParams,\n decorators: this.decorators?.map((decorator) => decorator.toObject()),\n };\n }\n\n static fromObject(obj: Record<string, any>) {\n return new FunctionLikeSchema(\n obj.location,\n obj.name,\n obj.params.map((param: Record<string, any>) => ParameterSchema.fromObject(param)),\n SchemaRegistry.fromObject(obj.returnType),\n obj.signature,\n obj.modifiers,\n obj.doc ? DocSchema.fromObject(obj.doc) : undefined,\n obj.typeParams,\n obj.decorators?.map((decorator) => SchemaRegistry.fromObject(decorator))\n );\n }\n\n diff(other: SchemaNode): SchemaChangeFact[] {\n if (!(other instanceof FunctionLikeSchema)) return super.diff(other);\n const facts: SchemaChangeFact[] = [];\n const baseObj = this.toObject();\n const compareObj = other.toObject();\n\n FunctionLikeSchema.diffParams(baseObj.params || [], compareObj.params || [], facts);\n\n if (!typesAreSemanticallyEqual(baseObj.returnType, compareObj.returnType)) {\n const fromType = typeStr(baseObj.returnType);\n const toType = typeStr(compareObj.returnType);\n facts.push({\n changeKind: 'return-type-changed',\n description: `return type changed: ${fromType} → ${toType}`,\n context: { fromType, toType, position: 'return-type' },\n from: fromType,\n to: toType,\n });\n }\n\n if (!deepEqualNoLocation(baseObj.typeParams, compareObj.typeParams)) {\n facts.push({\n changeKind: 'type-parameters-changed',\n description: `type parameters changed: <${(baseObj.typeParams || []).join(', ') || 'none'}> → <${(compareObj.typeParams || []).join(', ') || 'none'}>`,\n context: { from: (baseObj.typeParams || []).join(', '), to: (compareObj.typeParams || []).join(', ') },\n from: (baseObj.typeParams || []).join(', '),\n to: (compareObj.typeParams || []).join(', '),\n });\n }\n\n FunctionLikeSchema.diffModifiers(this.modifiers || [], other.modifiers || [], facts);\n facts.push(...diffDoc(baseObj.doc, compareObj.doc));\n return facts;\n }\n\n private static diffModifiers(baseMods: string[], compareMods: string[], facts: SchemaChangeFact[]): void {\n const base = baseMods.filter((m) => m !== 'export');\n const compare = compareMods.filter((m) => m !== 'export');\n if (deepEqualNoLocation(base, compare)) return;\n\n const added = compare.filter((m) => !base.includes(m));\n const removed = base.filter((m) => !compare.includes(m));\n const parts: string[] = [];\n if (added.length) parts.push(`added: ${added.join(', ')}`);\n if (removed.length) parts.push(`removed: ${removed.join(', ')}`);\n const accessNarrowed = removed.includes('public') || added.includes('private') || added.includes('protected');\n\n facts.push({\n changeKind: accessNarrowed ? 'access-narrowed' : 'modifiers-changed',\n description: `modifiers changed (${parts.join('; ')})`,\n context: { added, removed, accessNarrowed },\n from: base.join(', ') || 'none',\n to: compare.join(', ') || 'none',\n });\n }\n\n private static diffParams(\n baseParams: Record<string, any>[],\n compareParams: Record<string, any>[],\n facts: SchemaChangeFact[]\n ): void {\n for (const p of compareParams.slice(baseParams.length)) {\n const isOpt = p.isOptional || p.defaultValue !== undefined;\n facts.push({\n changeKind: 'parameter-added',\n description: `parameter '${p.name}: ${typeStr(p.type)}' added${isOpt ? ' (optional)' : ' (required)'}`,\n context: {\n paramName: p.name,\n isOptional: !!p.isOptional,\n hasDefault: p.defaultValue !== undefined,\n paramType: typeStr(p.type),\n },\n to: `${p.name}${p.isOptional ? '?' : ''}: ${typeStr(p.type)}`,\n });\n }\n\n for (const p of baseParams.slice(compareParams.length)) {\n facts.push({\n changeKind: 'parameter-removed',\n description: `parameter '${p.name}: ${typeStr(p.type)}' removed`,\n context: { paramName: p.name, isOptional: !!p.isOptional, paramType: typeStr(p.type) },\n from: `${p.name}${p.isOptional ? '?' : ''}: ${typeStr(p.type)}`,\n });\n }\n\n const minLen = Math.min(baseParams.length, compareParams.length);\n for (let i = 0; i < minLen; i++) {\n FunctionLikeSchema.diffOverlappingParam(baseParams[i], compareParams[i], i, facts);\n }\n }\n\n private static diffOverlappingParam(\n bp: Record<string, any>,\n cp: Record<string, any>,\n index: number,\n facts: SchemaChangeFact[]\n ): void {\n if (bp.objectBindingNodes || cp.objectBindingNodes) {\n FunctionLikeSchema.diffDestructuredParam(bp, cp, facts);\n if (!typesAreSemanticallyEqual(bp.type, cp.type)) {\n const paramName = cp.name || bp.name;\n facts.push({\n changeKind: 'parameter-type-changed',\n description: `parameter at position ${index} type changed: ${typeStr(bp.type)} → ${typeStr(cp.type)}`,\n context: { paramName, fromType: typeStr(bp.type), toType: typeStr(cp.type), position: 'parameter' },\n from: typeStr(bp.type),\n to: typeStr(cp.type),\n });\n }\n return;\n }\n\n const nameEqual = bp.name === cp.name;\n const typeEqual = typesAreSemanticallyEqual(bp.type, cp.type);\n if (nameEqual && typeEqual && bp.isOptional === cp.isOptional && bp.defaultValue === cp.defaultValue) return;\n\n const paramName = cp.name || bp.name;\n if (!nameEqual) {\n facts.push({\n changeKind: 'parameter-renamed',\n description: `parameter at position ${index} renamed: '${bp.name}' → '${cp.name}'`,\n context: { fromName: bp.name, toName: cp.name, position: index },\n from: bp.name,\n to: cp.name,\n });\n }\n if (!typeEqual) {\n facts.push({\n changeKind: 'parameter-type-changed',\n description: `parameter '${paramName}' type changed: ${typeStr(bp.type)} → ${typeStr(cp.type)}`,\n context: { paramName, fromType: typeStr(bp.type), toType: typeStr(cp.type), position: 'parameter' },\n from: typeStr(bp.type),\n to: typeStr(cp.type),\n });\n }\n FunctionLikeSchema.diffParamOptionality(bp, cp, paramName, facts);\n FunctionLikeSchema.diffParamDefault(bp, cp, paramName, facts);\n }\n\n private static diffParamOptionality(\n bp: Record<string, any>,\n cp: Record<string, any>,\n paramName: string,\n facts: SchemaChangeFact[]\n ): void {\n if (bp.isOptional && !cp.isOptional) {\n facts.push({\n changeKind: 'became-required',\n description: `parameter '${paramName}' became required (was optional)`,\n context: { paramName, position: 'parameter' },\n from: 'optional',\n to: 'required',\n });\n } else if (!bp.isOptional && cp.isOptional) {\n facts.push({\n changeKind: 'became-optional',\n description: `parameter '${paramName}' became optional (was required)`,\n context: { paramName, position: 'parameter' },\n from: 'required',\n to: 'optional',\n });\n }\n }\n\n private static diffParamDefault(\n bp: Record<string, any>,\n cp: Record<string, any>,\n paramName: string,\n facts: SchemaChangeFact[]\n ): void {\n if (bp.defaultValue === cp.defaultValue) return;\n if (bp.defaultValue !== undefined && cp.defaultValue === undefined) {\n facts.push({\n changeKind: 'parameter-default-removed',\n description: `parameter '${paramName}' default value removed (was: ${bp.defaultValue})`,\n context: { paramName, isOptional: !!bp.isOptional, previousDefault: String(bp.defaultValue) },\n from: String(bp.defaultValue),\n });\n } else if (bp.defaultValue === undefined && cp.defaultValue !== undefined) {\n facts.push({\n changeKind: 'parameter-default-added',\n description: `parameter '${paramName}' default value added: ${cp.defaultValue}`,\n context: { paramName, newDefault: String(cp.defaultValue) },\n to: String(cp.defaultValue),\n });\n } else {\n facts.push({\n changeKind: 'parameter-default-changed',\n description: `parameter '${paramName}' default value changed: ${bp.defaultValue} → ${cp.defaultValue}`,\n context: { paramName, previousDefault: String(bp.defaultValue), newDefault: String(cp.defaultValue) },\n from: String(bp.defaultValue),\n to: String(cp.defaultValue),\n });\n }\n }\n\n private static diffDestructuredParam(\n base: Record<string, any>,\n compare: Record<string, any>,\n facts: SchemaChangeFact[]\n ): void {\n const baseBindings: Record<string, any>[] = base.objectBindingNodes || [];\n const compareBindings: Record<string, any>[] = compare.objectBindingNodes || [];\n const baseMap = new Map(baseBindings.map((b) => [b.name || '', b]));\n const compareMap = new Map(compareBindings.map((b) => [b.name || '', b]));\n\n for (const [name] of compareMap) {\n if (!baseMap.has(name)) {\n facts.push({\n changeKind: 'destructured-property-added',\n description: `destructured property '${name}' added`,\n context: { propertyName: name },\n to: name,\n });\n }\n }\n for (const [name] of baseMap) {\n if (!compareMap.has(name)) {\n facts.push({\n changeKind: 'destructured-property-removed',\n description: `destructured property '${name}' removed`,\n context: { propertyName: name },\n from: name,\n });\n }\n }\n for (const [name, bb] of baseMap) {\n const cb = compareMap.get(name);\n if (!cb) continue;\n FunctionLikeSchema.diffBindingDefault(name, bb, cb, !!base.isOptional, facts);\n if (bb.type && cb.type && !typesAreSemanticallyEqual(bb.type, cb.type)) {\n facts.push({\n changeKind: 'destructured-property-type-changed',\n description: `destructured property '${name}' type changed: ${typeStr(bb.type)} → ${typeStr(cb.type)}`,\n context: { propertyName: name, fromType: typeStr(bb.type), toType: typeStr(cb.type), position: 'parameter' },\n from: typeStr(bb.type),\n to: typeStr(cb.type),\n });\n }\n }\n }\n\n private static diffBindingDefault(\n name: string,\n bb: Record<string, any>,\n cb: Record<string, any>,\n parentIsOptional: boolean,\n facts: SchemaChangeFact[]\n ): void {\n if (bb.defaultValue === cb.defaultValue) return;\n if (bb.defaultValue !== undefined && cb.defaultValue === undefined) {\n facts.push({\n changeKind: 'destructured-property-default-removed',\n description: `destructured property '${name}' default value removed (was: ${bb.defaultValue})`,\n context: { propertyName: name, isOptional: parentIsOptional, previousDefault: String(bb.defaultValue) },\n from: String(bb.defaultValue),\n });\n } else if (bb.defaultValue === undefined && cb.defaultValue !== undefined) {\n facts.push({\n changeKind: 'destructured-property-default-added',\n description: `destructured property '${name}' default value added: ${cb.defaultValue}`,\n context: { propertyName: name, newDefault: String(cb.defaultValue) },\n to: String(cb.defaultValue),\n });\n } else {\n facts.push({\n changeKind: 'destructured-property-default-changed',\n description: `destructured property '${name}' default value changed: ${bb.defaultValue} → ${cb.defaultValue}`,\n context: { propertyName: name, previousDefault: String(bb.defaultValue), newDefault: String(cb.defaultValue) },\n from: String(bb.defaultValue),\n to: String(cb.defaultValue),\n });\n }\n }\n\n private modifiersToString() {\n const modifiersToPrint = this.modifiers.filter((modifier) => modifier !== 'export');\n return modifiersToPrint.length ? `${modifiersToPrint.join(' ')} ` : '';\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,6 @@
1
1
  import type { SchemaLocation } from '../schema-node';
2
2
  import { SchemaNode } from '../schema-node';
3
+ import type { SchemaChangeFact } from '../schema-diff';
3
4
  import { DocSchema } from './docs';
4
5
  import { ExpressionWithTypeArgumentsSchema } from './expression-with-arguments';
5
6
  export declare class InterfaceSchema extends SchemaNode {
@@ -46,5 +47,6 @@ export declare class InterfaceSchema extends SchemaNode {
46
47
  }[];
47
48
  typeParams: string[] | undefined;
48
49
  };
50
+ diff(other: SchemaNode): SchemaChangeFact[];
49
51
  static fromObject(obj: Record<string, any>): InterfaceSchema;
50
52
  }
@@ -18,6 +18,13 @@ function _schemaNode() {
18
18
  };
19
19
  return data;
20
20
  }
21
+ function _schemaDiffMembers() {
22
+ const data = require("../schema-diff-members");
23
+ _schemaDiffMembers = function () {
24
+ return data;
25
+ };
26
+ return data;
27
+ }
21
28
  function _docs() {
22
29
  const data = require("./docs");
23
30
  _docs = function () {
@@ -92,6 +99,10 @@ class InterfaceSchema extends _schemaNode().SchemaNode {
92
99
  typeParams: this.typeParams
93
100
  };
94
101
  }
102
+ diff(other) {
103
+ if (!(other instanceof InterfaceSchema)) return super.diff(other);
104
+ return (0, _schemaDiffMembers().diffMembers)(this.toObject(), other.toObject(), this, other);
105
+ }
95
106
  static fromObject(obj) {
96
107
  const location = obj.location;
97
108
  const name = obj.name;
@@ -1 +1 @@
1
- {"version":3,"names":["_chalk","data","_interopRequireDefault","require","_schemaNode","_docs","_expressionWithArguments","_schemaRegistry","e","__esModule","default","InterfaceSchema","SchemaNode","constructor","location","name","signature","extendsNodes","members","doc","typeParams","getNodes","toString","options","boldUnderline","color","chalk","bold","underline","str","membersStr","map","m","join","toFullSignature","result","showDocs","interfaceDeclaration","length","extendsStr","node","member","memberStr","split","line","toObject","fromObject","obj","ExpressionWithTypeArgumentsSchema","SchemaRegistry","DocSchema","undefined","exports"],"sources":["interface.ts"],"sourcesContent":["import chalk from 'chalk';\nimport type { SchemaLocation } from '../schema-node';\nimport { SchemaNode } from '../schema-node';\nimport { DocSchema } from './docs';\nimport { ExpressionWithTypeArgumentsSchema } from './expression-with-arguments';\nimport { SchemaRegistry } from '../schema-registry';\n\nexport class InterfaceSchema extends SchemaNode {\n readonly members: SchemaNode[];\n readonly doc?: DocSchema;\n\n constructor(\n readonly location: SchemaLocation,\n readonly name: string,\n readonly signature: string,\n readonly extendsNodes: ExpressionWithTypeArgumentsSchema[],\n members: SchemaNode[],\n doc?: DocSchema,\n readonly typeParams?: string[]\n ) {\n super();\n this.members = members;\n this.doc = doc;\n }\n\n getNodes() {\n return this.members;\n }\n\n toString(options?: { color?: boolean }): string {\n const boldUnderline = options?.color ? chalk.bold.underline : (str: string) => str;\n const membersStr = this.members.map((m) => `* ${m.toString(options)}`).join('\\n');\n return `${boldUnderline(this.name)}\\n${membersStr}`;\n }\n\n toFullSignature(options?: { showDocs?: boolean }): string {\n let result = '';\n\n if (options?.showDocs && this.doc) {\n result += `${this.doc.toFullSignature()}\\n`;\n }\n\n let interfaceDeclaration = `interface ${this.name}`;\n\n if (this.typeParams && this.typeParams.length > 0) {\n interfaceDeclaration += `<${this.typeParams.join(', ')}>`;\n }\n\n if (this.extendsNodes && this.extendsNodes.length > 0) {\n const extendsStr = this.extendsNodes.map((node) => node.toFullSignature(options)).join(', ');\n interfaceDeclaration += ` extends ${extendsStr}`;\n }\n\n result += `${interfaceDeclaration} {\\n`;\n\n const membersStr = this.members\n .map((member) => {\n const memberStr = member.toFullSignature(options);\n return memberStr\n .split('\\n')\n .map((line) => ` ${line}`)\n .join('\\n');\n })\n .join('\\n');\n\n result += `${membersStr}\\n`;\n\n result += `}`;\n\n return result;\n }\n\n toObject() {\n return {\n ...super.toObject(),\n name: this.name,\n members: this.members.map((member) => member.toObject()),\n doc: this.doc?.toObject(),\n signature: this.signature,\n extendsNodes: this.extendsNodes?.map((node) => node.toObject()),\n typeParams: this.typeParams,\n };\n }\n\n static fromObject(obj: Record<string, any>): InterfaceSchema {\n const location = obj.location;\n const name = obj.name;\n const signature = obj.signature;\n const extendsNodes = obj.extendsNodes?.map((node: any) => ExpressionWithTypeArgumentsSchema.fromObject(node));\n const members = obj.members.map((member: any) => SchemaRegistry.fromObject(member));\n const doc = obj.doc ? DocSchema.fromObject(obj.doc) : undefined;\n const typeParams = obj.typeParams;\n return new InterfaceSchema(location, name, signature, extendsNodes, members, doc, typeParams);\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_chalk","data","_interopRequireDefault","require","_schemaNode","_schemaDiffMembers","_docs","_expressionWithArguments","_schemaRegistry","e","__esModule","default","InterfaceSchema","SchemaNode","constructor","location","name","signature","extendsNodes","members","doc","typeParams","getNodes","toString","options","boldUnderline","color","chalk","bold","underline","str","membersStr","map","m","join","toFullSignature","result","showDocs","interfaceDeclaration","length","extendsStr","node","member","memberStr","split","line","toObject","diff","other","diffMembers","fromObject","obj","ExpressionWithTypeArgumentsSchema","SchemaRegistry","DocSchema","undefined","exports"],"sources":["interface.ts"],"sourcesContent":["import chalk from 'chalk';\nimport type { SchemaLocation } from '../schema-node';\nimport { SchemaNode } from '../schema-node';\nimport type { SchemaChangeFact } from '../schema-diff';\nimport { diffMembers } from '../schema-diff-members';\nimport { DocSchema } from './docs';\nimport { ExpressionWithTypeArgumentsSchema } from './expression-with-arguments';\nimport { SchemaRegistry } from '../schema-registry';\n\nexport class InterfaceSchema extends SchemaNode {\n readonly members: SchemaNode[];\n readonly doc?: DocSchema;\n\n constructor(\n readonly location: SchemaLocation,\n readonly name: string,\n readonly signature: string,\n readonly extendsNodes: ExpressionWithTypeArgumentsSchema[],\n members: SchemaNode[],\n doc?: DocSchema,\n readonly typeParams?: string[]\n ) {\n super();\n this.members = members;\n this.doc = doc;\n }\n\n getNodes() {\n return this.members;\n }\n\n toString(options?: { color?: boolean }): string {\n const boldUnderline = options?.color ? chalk.bold.underline : (str: string) => str;\n const membersStr = this.members.map((m) => `* ${m.toString(options)}`).join('\\n');\n return `${boldUnderline(this.name)}\\n${membersStr}`;\n }\n\n toFullSignature(options?: { showDocs?: boolean }): string {\n let result = '';\n\n if (options?.showDocs && this.doc) {\n result += `${this.doc.toFullSignature()}\\n`;\n }\n\n let interfaceDeclaration = `interface ${this.name}`;\n\n if (this.typeParams && this.typeParams.length > 0) {\n interfaceDeclaration += `<${this.typeParams.join(', ')}>`;\n }\n\n if (this.extendsNodes && this.extendsNodes.length > 0) {\n const extendsStr = this.extendsNodes.map((node) => node.toFullSignature(options)).join(', ');\n interfaceDeclaration += ` extends ${extendsStr}`;\n }\n\n result += `${interfaceDeclaration} {\\n`;\n\n const membersStr = this.members\n .map((member) => {\n const memberStr = member.toFullSignature(options);\n return memberStr\n .split('\\n')\n .map((line) => ` ${line}`)\n .join('\\n');\n })\n .join('\\n');\n\n result += `${membersStr}\\n`;\n\n result += `}`;\n\n return result;\n }\n\n toObject() {\n return {\n ...super.toObject(),\n name: this.name,\n members: this.members.map((member) => member.toObject()),\n doc: this.doc?.toObject(),\n signature: this.signature,\n extendsNodes: this.extendsNodes?.map((node) => node.toObject()),\n typeParams: this.typeParams,\n };\n }\n\n diff(other: SchemaNode): SchemaChangeFact[] {\n if (!(other instanceof InterfaceSchema)) return super.diff(other);\n return diffMembers(this.toObject(), other.toObject(), this, other);\n }\n\n static fromObject(obj: Record<string, any>): InterfaceSchema {\n const location = obj.location;\n const name = obj.name;\n const signature = obj.signature;\n const extendsNodes = obj.extendsNodes?.map((node: any) => ExpressionWithTypeArgumentsSchema.fromObject(node));\n const members = obj.members.map((member: any) => SchemaRegistry.fromObject(member));\n const doc = obj.doc ? DocSchema.fromObject(obj.doc) : undefined;\n const typeParams = obj.typeParams;\n return new InterfaceSchema(location, name, signature, extendsNodes, members, doc, typeParams);\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,6 @@
1
1
  import type { SchemaLocation } from '../schema-node';
2
2
  import { SchemaNode } from '../schema-node';
3
+ import type { SchemaChangeFact } from '../schema-diff';
3
4
  import { DocSchema } from './docs';
4
5
  export declare class TypeSchema extends SchemaNode {
5
6
  readonly location: SchemaLocation;
@@ -20,5 +21,6 @@ export declare class TypeSchema extends SchemaNode {
20
21
  type: Record<string, any>;
21
22
  signature: string;
22
23
  };
24
+ diff(other: SchemaNode): SchemaChangeFact[];
23
25
  static fromObject(obj: Record<string, any>): TypeSchema;
24
26
  }
@@ -18,6 +18,13 @@ function _schemaNode() {
18
18
  };
19
19
  return data;
20
20
  }
21
+ function _schemaDiff() {
22
+ const data = require("../schema-diff");
23
+ _schemaDiff = function () {
24
+ return data;
25
+ };
26
+ return data;
27
+ }
21
28
  function _docs() {
22
29
  const data = require("./docs");
23
30
  _docs = function () {
@@ -66,6 +73,24 @@ class TypeSchema extends _schemaNode().SchemaNode {
66
73
  signature: this.signature
67
74
  };
68
75
  }
76
+ diff(other) {
77
+ if (!(other instanceof TypeSchema)) return super.diff(other);
78
+ const facts = [];
79
+ if (!(0, _schemaDiff().typesAreSemanticallyEqual)(this.type.toObject(), other.type.toObject())) {
80
+ facts.push({
81
+ changeKind: 'type-definition-changed',
82
+ description: 'type definition changed',
83
+ context: {
84
+ fromSignature: this.signature,
85
+ toSignature: other.signature
86
+ },
87
+ from: this.signature,
88
+ to: other.signature
89
+ });
90
+ }
91
+ facts.push(...(0, _schemaDiff().diffDoc)(this.doc?.toObject(), other.doc?.toObject()));
92
+ return facts;
93
+ }
69
94
  static fromObject(obj) {
70
95
  const location = obj.location;
71
96
  const name = obj.name;
@@ -1 +1 @@
1
- {"version":3,"names":["_chalk","data","_interopRequireDefault","require","_schemaNode","_docs","_schemaRegistry","e","__esModule","default","TypeSchema","SchemaNode","constructor","location","name","type","signature","doc","toString","options","bold","color","chalk","str","toFullSignature","typeSignature","showDocs","docString","getNodes","toObject","fromObject","obj","SchemaRegistry","DocSchema","undefined","exports"],"sources":["type.ts"],"sourcesContent":["import chalk from 'chalk';\nimport type { SchemaLocation } from '../schema-node';\nimport { SchemaNode } from '../schema-node';\nimport { DocSchema } from './docs';\nimport { SchemaRegistry } from '../schema-registry';\n\nexport class TypeSchema extends SchemaNode {\n readonly type: SchemaNode;\n readonly doc?: DocSchema;\n\n constructor(\n readonly location: SchemaLocation,\n readonly name: string,\n type: SchemaNode,\n readonly signature: string,\n doc?: DocSchema\n ) {\n super();\n this.type = type;\n this.doc = doc;\n }\n\n toString(options?: { color?: boolean }) {\n const bold = options?.color ? chalk.bold : (str: string) => str;\n return `type ${bold(this.name)}: ${this.type.toString(options)}`;\n }\n\n toFullSignature(options?: { showDocs?: boolean }): string {\n const typeSignature = this.type.toFullSignature(options);\n\n let signature = `type ${this.name}: ${typeSignature}`;\n\n if (options?.showDocs && this.doc) {\n const docString = this.doc.toFullSignature();\n signature = `${docString}\\n${signature}`;\n }\n\n return signature;\n }\n\n getNodes() {\n return [this.type];\n }\n\n toObject() {\n return {\n ...super.toObject(),\n name: this.name,\n type: this.type.toObject(),\n signature: this.signature,\n };\n }\n\n static fromObject(obj: Record<string, any>): TypeSchema {\n const location = obj.location;\n const name = obj.name;\n const type = SchemaRegistry.fromObject(obj.type);\n const signature = obj.signature;\n const doc = obj.doc ? DocSchema.fromObject(obj.doc) : undefined;\n return new TypeSchema(location, name, type, signature, doc);\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_chalk","data","_interopRequireDefault","require","_schemaNode","_schemaDiff","_docs","_schemaRegistry","e","__esModule","default","TypeSchema","SchemaNode","constructor","location","name","type","signature","doc","toString","options","bold","color","chalk","str","toFullSignature","typeSignature","showDocs","docString","getNodes","toObject","diff","other","facts","typesAreSemanticallyEqual","push","changeKind","description","context","fromSignature","toSignature","from","to","diffDoc","fromObject","obj","SchemaRegistry","DocSchema","undefined","exports"],"sources":["type.ts"],"sourcesContent":["import chalk from 'chalk';\nimport type { SchemaLocation } from '../schema-node';\nimport { SchemaNode } from '../schema-node';\nimport type { SchemaChangeFact } from '../schema-diff';\nimport { typesAreSemanticallyEqual, diffDoc } from '../schema-diff';\nimport { DocSchema } from './docs';\nimport { SchemaRegistry } from '../schema-registry';\n\nexport class TypeSchema extends SchemaNode {\n readonly type: SchemaNode;\n readonly doc?: DocSchema;\n\n constructor(\n readonly location: SchemaLocation,\n readonly name: string,\n type: SchemaNode,\n readonly signature: string,\n doc?: DocSchema\n ) {\n super();\n this.type = type;\n this.doc = doc;\n }\n\n toString(options?: { color?: boolean }) {\n const bold = options?.color ? chalk.bold : (str: string) => str;\n return `type ${bold(this.name)}: ${this.type.toString(options)}`;\n }\n\n toFullSignature(options?: { showDocs?: boolean }): string {\n const typeSignature = this.type.toFullSignature(options);\n\n let signature = `type ${this.name}: ${typeSignature}`;\n\n if (options?.showDocs && this.doc) {\n const docString = this.doc.toFullSignature();\n signature = `${docString}\\n${signature}`;\n }\n\n return signature;\n }\n\n getNodes() {\n return [this.type];\n }\n\n toObject() {\n return {\n ...super.toObject(),\n name: this.name,\n type: this.type.toObject(),\n signature: this.signature,\n };\n }\n\n diff(other: SchemaNode): SchemaChangeFact[] {\n if (!(other instanceof TypeSchema)) return super.diff(other);\n const facts: SchemaChangeFact[] = [];\n if (!typesAreSemanticallyEqual(this.type.toObject(), other.type.toObject())) {\n facts.push({\n changeKind: 'type-definition-changed',\n description: 'type definition changed',\n context: { fromSignature: this.signature, toSignature: other.signature },\n from: this.signature,\n to: other.signature,\n });\n }\n facts.push(...diffDoc(this.doc?.toObject(), other.doc?.toObject()));\n return facts;\n }\n\n static fromObject(obj: Record<string, any>): TypeSchema {\n const location = obj.location;\n const name = obj.name;\n const type = SchemaRegistry.fromObject(obj.type);\n const signature = obj.signature;\n const doc = obj.doc ? DocSchema.fromObject(obj.doc) : undefined;\n return new TypeSchema(location, name, type, signature, doc);\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,6 @@
1
1
  import type { SchemaLocation } from '../schema-node';
2
2
  import { SchemaNode } from '../schema-node';
3
+ import type { SchemaChangeFact } from '../schema-diff';
3
4
  import { DocSchema } from './docs';
4
5
  /**
5
6
  * can be also a property or property-signature
@@ -44,5 +45,6 @@ export declare class VariableLikeSchema extends SchemaNode {
44
45
  } | undefined;
45
46
  defaultValue: string | undefined;
46
47
  };
48
+ diff(other: SchemaNode): SchemaChangeFact[];
47
49
  static fromObject(obj: Record<string, any>): VariableLikeSchema;
48
50
  }
@@ -18,6 +18,13 @@ function _schemaNode() {
18
18
  };
19
19
  return data;
20
20
  }
21
+ function _schemaDiff() {
22
+ const data = require("../schema-diff");
23
+ _schemaDiff = function () {
24
+ return data;
25
+ };
26
+ return data;
27
+ }
21
28
  function _docs() {
22
29
  const data = require("./docs");
23
30
  _docs = function () {
@@ -79,6 +86,59 @@ class VariableLikeSchema extends _schemaNode().SchemaNode {
79
86
  defaultValue: this.defaultValue
80
87
  };
81
88
  }
89
+ diff(other) {
90
+ if (!(other instanceof VariableLikeSchema)) return super.diff(other);
91
+ const facts = [];
92
+ if (!(0, _schemaDiff().typesAreSemanticallyEqual)(this.type.toObject(), other.type.toObject())) {
93
+ facts.push({
94
+ changeKind: 'type-annotation-changed',
95
+ description: `type changed: ${(0, _schemaDiff().typeStr)(this.type.toObject())} → ${(0, _schemaDiff().typeStr)(other.type.toObject())}`,
96
+ context: {
97
+ fromType: (0, _schemaDiff().typeStr)(this.type.toObject()),
98
+ toType: (0, _schemaDiff().typeStr)(other.type.toObject()),
99
+ position: 'variable'
100
+ },
101
+ from: (0, _schemaDiff().typeStr)(this.type.toObject()),
102
+ to: (0, _schemaDiff().typeStr)(other.type.toObject())
103
+ });
104
+ }
105
+ if (this.isOptional && !other.isOptional) {
106
+ facts.push({
107
+ changeKind: 'became-required',
108
+ description: 'became required (was optional)',
109
+ context: {
110
+ position: 'variable'
111
+ },
112
+ from: 'optional',
113
+ to: 'required'
114
+ });
115
+ } else if (!this.isOptional && other.isOptional) {
116
+ facts.push({
117
+ changeKind: 'became-optional',
118
+ description: 'became optional (was required)',
119
+ context: {
120
+ position: 'variable'
121
+ },
122
+ from: 'required',
123
+ to: 'optional'
124
+ });
125
+ }
126
+ if (this.defaultValue !== other.defaultValue) {
127
+ const changeKind = this.defaultValue === undefined ? 'parameter-default-added' : other.defaultValue === undefined ? 'parameter-default-removed' : 'parameter-default-changed';
128
+ facts.push({
129
+ changeKind,
130
+ description: `default value changed: ${this.defaultValue ?? 'none'} → ${other.defaultValue ?? 'none'}`,
131
+ context: {
132
+ previousDefault: this.defaultValue,
133
+ newDefault: other.defaultValue
134
+ },
135
+ from: this.defaultValue,
136
+ to: other.defaultValue
137
+ });
138
+ }
139
+ facts.push(...(0, _schemaDiff().diffDoc)(this.doc?.toObject(), other.doc?.toObject()));
140
+ return facts;
141
+ }
82
142
  static fromObject(obj) {
83
143
  const location = obj.location;
84
144
  const name = obj.name;
@@ -1 +1 @@
1
- {"version":3,"names":["_chalk","data","_interopRequireDefault","require","_schemaNode","_docs","_schemaRegistry","e","__esModule","default","VariableLikeSchema","SchemaNode","displaySchemaName","constructor","location","name","signature","type","isOptional","doc","defaultValue","getNodes","toString","options","bold","color","chalk","str","toFullSignature","namePart","typeSignature","undefined","showDocs","docString","toObject","fromObject","obj","SchemaRegistry","DocSchema","exports"],"sources":["variable-like.ts"],"sourcesContent":["import chalk from 'chalk';\nimport type { SchemaLocation } from '../schema-node';\nimport { SchemaNode } from '../schema-node';\nimport { DocSchema } from './docs';\nimport { SchemaRegistry } from '../schema-registry';\n\n/**\n * can be also a property or property-signature\n */\nexport class VariableLikeSchema extends SchemaNode {\n type: SchemaNode;\n readonly doc?: DocSchema;\n readonly displaySchemaName = 'Variables';\n\n constructor(\n readonly location: SchemaLocation,\n readonly name: string,\n readonly signature: string,\n type: SchemaNode,\n readonly isOptional: boolean,\n doc?: DocSchema,\n readonly defaultValue?: string\n ) {\n super();\n this.type = type;\n this.doc = doc;\n }\n\n getNodes() {\n return [this.type];\n }\n\n toString(options?: { color?: boolean }) {\n const bold = options?.color ? chalk.bold : (str: string) => str;\n return `${bold(this.name)}${this.isOptional ? '?' : ''}: ${this.type.toString(options)}`;\n }\n\n toFullSignature(options?: { showDocs?: boolean }): string {\n const namePart = `${this.name}${this.isOptional ? '?' : ''}`;\n const typeSignature = this.type.toFullSignature(options);\n let signature = `${namePart}: ${typeSignature}`;\n\n if (this.defaultValue !== undefined) {\n signature += ` = ${this.defaultValue}`;\n }\n\n if (options?.showDocs && this.doc) {\n const docString = this.doc.toFullSignature();\n signature = `${docString}\\n${signature}`;\n }\n\n return signature;\n }\n\n toObject() {\n return {\n ...super.toObject(),\n name: this.name,\n signature: this.signature,\n type: this.type.toObject(),\n isOptional: this.isOptional,\n doc: this.doc?.toObject(),\n defaultValue: this.defaultValue,\n };\n }\n\n static fromObject(obj: Record<string, any>): VariableLikeSchema {\n const location = obj.location;\n const name = obj.name;\n const signature = obj.signature;\n const type = SchemaRegistry.fromObject(obj.type);\n const isOptional = obj.isOptional;\n const doc = obj.doc ? DocSchema.fromObject(obj.doc) : undefined;\n const defaultValue = obj.defaultValue;\n return new VariableLikeSchema(location, name, signature, type, isOptional, doc, defaultValue);\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_chalk","data","_interopRequireDefault","require","_schemaNode","_schemaDiff","_docs","_schemaRegistry","e","__esModule","default","VariableLikeSchema","SchemaNode","displaySchemaName","constructor","location","name","signature","type","isOptional","doc","defaultValue","getNodes","toString","options","bold","color","chalk","str","toFullSignature","namePart","typeSignature","undefined","showDocs","docString","toObject","diff","other","facts","typesAreSemanticallyEqual","push","changeKind","description","typeStr","context","fromType","toType","position","from","to","previousDefault","newDefault","diffDoc","fromObject","obj","SchemaRegistry","DocSchema","exports"],"sources":["variable-like.ts"],"sourcesContent":["import chalk from 'chalk';\nimport type { SchemaLocation } from '../schema-node';\nimport { SchemaNode } from '../schema-node';\nimport type { SchemaChangeFact } from '../schema-diff';\nimport { typesAreSemanticallyEqual, typeStr, diffDoc } from '../schema-diff';\nimport { DocSchema } from './docs';\nimport { SchemaRegistry } from '../schema-registry';\n\n/**\n * can be also a property or property-signature\n */\nexport class VariableLikeSchema extends SchemaNode {\n type: SchemaNode;\n readonly doc?: DocSchema;\n readonly displaySchemaName = 'Variables';\n\n constructor(\n readonly location: SchemaLocation,\n readonly name: string,\n readonly signature: string,\n type: SchemaNode,\n readonly isOptional: boolean,\n doc?: DocSchema,\n readonly defaultValue?: string\n ) {\n super();\n this.type = type;\n this.doc = doc;\n }\n\n getNodes() {\n return [this.type];\n }\n\n toString(options?: { color?: boolean }) {\n const bold = options?.color ? chalk.bold : (str: string) => str;\n return `${bold(this.name)}${this.isOptional ? '?' : ''}: ${this.type.toString(options)}`;\n }\n\n toFullSignature(options?: { showDocs?: boolean }): string {\n const namePart = `${this.name}${this.isOptional ? '?' : ''}`;\n const typeSignature = this.type.toFullSignature(options);\n let signature = `${namePart}: ${typeSignature}`;\n\n if (this.defaultValue !== undefined) {\n signature += ` = ${this.defaultValue}`;\n }\n\n if (options?.showDocs && this.doc) {\n const docString = this.doc.toFullSignature();\n signature = `${docString}\\n${signature}`;\n }\n\n return signature;\n }\n\n toObject() {\n return {\n ...super.toObject(),\n name: this.name,\n signature: this.signature,\n type: this.type.toObject(),\n isOptional: this.isOptional,\n doc: this.doc?.toObject(),\n defaultValue: this.defaultValue,\n };\n }\n\n diff(other: SchemaNode): SchemaChangeFact[] {\n if (!(other instanceof VariableLikeSchema)) return super.diff(other);\n const facts: SchemaChangeFact[] = [];\n if (!typesAreSemanticallyEqual(this.type.toObject(), other.type.toObject())) {\n facts.push({\n changeKind: 'type-annotation-changed',\n description: `type changed: ${typeStr(this.type.toObject())} → ${typeStr(other.type.toObject())}`,\n context: {\n fromType: typeStr(this.type.toObject()),\n toType: typeStr(other.type.toObject()),\n position: 'variable',\n },\n from: typeStr(this.type.toObject()),\n to: typeStr(other.type.toObject()),\n });\n }\n if (this.isOptional && !other.isOptional) {\n facts.push({\n changeKind: 'became-required',\n description: 'became required (was optional)',\n context: { position: 'variable' },\n from: 'optional',\n to: 'required',\n });\n } else if (!this.isOptional && other.isOptional) {\n facts.push({\n changeKind: 'became-optional',\n description: 'became optional (was required)',\n context: { position: 'variable' },\n from: 'required',\n to: 'optional',\n });\n }\n if (this.defaultValue !== other.defaultValue) {\n const changeKind =\n this.defaultValue === undefined\n ? 'parameter-default-added'\n : other.defaultValue === undefined\n ? 'parameter-default-removed'\n : 'parameter-default-changed';\n facts.push({\n changeKind,\n description: `default value changed: ${this.defaultValue ?? 'none'} → ${other.defaultValue ?? 'none'}`,\n context: { previousDefault: this.defaultValue, newDefault: other.defaultValue },\n from: this.defaultValue,\n to: other.defaultValue,\n });\n }\n facts.push(...diffDoc(this.doc?.toObject(), other.doc?.toObject()));\n return facts;\n }\n\n static fromObject(obj: Record<string, any>): VariableLikeSchema {\n const location = obj.location;\n const name = obj.name;\n const signature = obj.signature;\n const type = SchemaRegistry.fromObject(obj.type);\n const isOptional = obj.isOptional;\n const doc = obj.doc ? DocSchema.fromObject(obj.doc) : undefined;\n const defaultValue = obj.defaultValue;\n return new VariableLikeSchema(location, name, signature, type, isOptional, doc, defaultValue);\n }\n}\n"],"mappings":";;;;;;AAAA,SAAAA,OAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,MAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAG,YAAA;EAAA,MAAAH,IAAA,GAAAE,OAAA;EAAAC,WAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAI,YAAA;EAAA,MAAAJ,IAAA,GAAAE,OAAA;EAAAE,WAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAK,MAAA;EAAA,MAAAL,IAAA,GAAAE,OAAA;EAAAG,KAAA,YAAAA,CAAA;IAAA,OAAAL,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAM,gBAAA;EAAA,MAAAN,IAAA,GAAAE,OAAA;EAAAI,eAAA,YAAAA,CAAA;IAAA,OAAAN,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAAoD,SAAAC,uBAAAM,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEpD;AACA;AACA;AACO,MAAMG,kBAAkB,SAASC,wBAAU,CAAC;EAGxCC,iBAAiB,GAAG,WAAW;EAExCC,WAAWA,CACAC,QAAwB,EACxBC,IAAY,EACZC,SAAiB,EAC1BC,IAAgB,EACPC,UAAmB,EAC5BC,GAAe,EACNC,YAAqB,EAC9B;IACA,KAAK,CAAC,CAAC;IAAC,KARCN,QAAwB,GAAxBA,QAAwB;IAAA,KACxBC,IAAY,GAAZA,IAAY;IAAA,KACZC,SAAiB,GAAjBA,SAAiB;IAAA,KAEjBE,UAAmB,GAAnBA,UAAmB;IAAA,KAEnBE,YAAqB,GAArBA,YAAqB;IAG9B,IAAI,CAACH,IAAI,GAAGA,IAAI;IAChB,IAAI,CAACE,GAAG,GAAGA,GAAG;EAChB;EAEAE,QAAQA,CAAA,EAAG;IACT,OAAO,CAAC,IAAI,CAACJ,IAAI,CAAC;EACpB;EAEAK,QAAQA,CAACC,OAA6B,EAAE;IACtC,MAAMC,IAAI,GAAGD,OAAO,EAAEE,KAAK,GAAGC,gBAAK,CAACF,IAAI,GAAIG,GAAW,IAAKA,GAAG;IAC/D,OAAO,GAAGH,IAAI,CAAC,IAAI,CAACT,IAAI,CAAC,GAAG,IAAI,CAACG,UAAU,GAAG,GAAG,GAAG,EAAE,KAAK,IAAI,CAACD,IAAI,CAACK,QAAQ,CAACC,OAAO,CAAC,EAAE;EAC1F;EAEAK,eAAeA,CAACL,OAAgC,EAAU;IACxD,MAAMM,QAAQ,GAAG,GAAG,IAAI,CAACd,IAAI,GAAG,IAAI,CAACG,UAAU,GAAG,GAAG,GAAG,EAAE,EAAE;IAC5D,MAAMY,aAAa,GAAG,IAAI,CAACb,IAAI,CAACW,eAAe,CAACL,OAAO,CAAC;IACxD,IAAIP,SAAS,GAAG,GAAGa,QAAQ,KAAKC,aAAa,EAAE;IAE/C,IAAI,IAAI,CAACV,YAAY,KAAKW,SAAS,EAAE;MACnCf,SAAS,IAAI,MAAM,IAAI,CAACI,YAAY,EAAE;IACxC;IAEA,IAAIG,OAAO,EAAES,QAAQ,IAAI,IAAI,CAACb,GAAG,EAAE;MACjC,MAAMc,SAAS,GAAG,IAAI,CAACd,GAAG,CAACS,eAAe,CAAC,CAAC;MAC5CZ,SAAS,GAAG,GAAGiB,SAAS,KAAKjB,SAAS,EAAE;IAC1C;IAEA,OAAOA,SAAS;EAClB;EAEAkB,QAAQA,CAAA,EAAG;IACT,OAAO;MACL,GAAG,KAAK,CAACA,QAAQ,CAAC,CAAC;MACnBnB,IAAI,EAAE,IAAI,CAACA,IAAI;MACfC,SAAS,EAAE,IAAI,CAACA,SAAS;MACzBC,IAAI,EAAE,IAAI,CAACA,IAAI,CAACiB,QAAQ,CAAC,CAAC;MAC1BhB,UAAU,EAAE,IAAI,CAACA,UAAU;MAC3BC,GAAG,EAAE,IAAI,CAACA,GAAG,EAAEe,QAAQ,CAAC,CAAC;MACzBd,YAAY,EAAE,IAAI,CAACA;IACrB,CAAC;EACH;EAEAe,IAAIA,CAACC,KAAiB,EAAsB;IAC1C,IAAI,EAAEA,KAAK,YAAY1B,kBAAkB,CAAC,EAAE,OAAO,KAAK,CAACyB,IAAI,CAACC,KAAK,CAAC;IACpE,MAAMC,KAAyB,GAAG,EAAE;IACpC,IAAI,CAAC,IAAAC,uCAAyB,EAAC,IAAI,CAACrB,IAAI,CAACiB,QAAQ,CAAC,CAAC,EAAEE,KAAK,CAACnB,IAAI,CAACiB,QAAQ,CAAC,CAAC,CAAC,EAAE;MAC3EG,KAAK,CAACE,IAAI,CAAC;QACTC,UAAU,EAAE,yBAAyB;QACrCC,WAAW,EAAE,iBAAiB,IAAAC,qBAAO,EAAC,IAAI,CAACzB,IAAI,CAACiB,QAAQ,CAAC,CAAC,CAAC,MAAM,IAAAQ,qBAAO,EAACN,KAAK,CAACnB,IAAI,CAACiB,QAAQ,CAAC,CAAC,CAAC,EAAE;QACjGS,OAAO,EAAE;UACPC,QAAQ,EAAE,IAAAF,qBAAO,EAAC,IAAI,CAACzB,IAAI,CAACiB,QAAQ,CAAC,CAAC,CAAC;UACvCW,MAAM,EAAE,IAAAH,qBAAO,EAACN,KAAK,CAACnB,IAAI,CAACiB,QAAQ,CAAC,CAAC,CAAC;UACtCY,QAAQ,EAAE;QACZ,CAAC;QACDC,IAAI,EAAE,IAAAL,qBAAO,EAAC,IAAI,CAACzB,IAAI,CAACiB,QAAQ,CAAC,CAAC,CAAC;QACnCc,EAAE,EAAE,IAAAN,qBAAO,EAACN,KAAK,CAACnB,IAAI,CAACiB,QAAQ,CAAC,CAAC;MACnC,CAAC,CAAC;IACJ;IACA,IAAI,IAAI,CAAChB,UAAU,IAAI,CAACkB,KAAK,CAAClB,UAAU,EAAE;MACxCmB,KAAK,CAACE,IAAI,CAAC;QACTC,UAAU,EAAE,iBAAiB;QAC7BC,WAAW,EAAE,gCAAgC;QAC7CE,OAAO,EAAE;UAAEG,QAAQ,EAAE;QAAW,CAAC;QACjCC,IAAI,EAAE,UAAU;QAChBC,EAAE,EAAE;MACN,CAAC,CAAC;IACJ,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC9B,UAAU,IAAIkB,KAAK,CAAClB,UAAU,EAAE;MAC/CmB,KAAK,CAACE,IAAI,CAAC;QACTC,UAAU,EAAE,iBAAiB;QAC7BC,WAAW,EAAE,gCAAgC;QAC7CE,OAAO,EAAE;UAAEG,QAAQ,EAAE;QAAW,CAAC;QACjCC,IAAI,EAAE,UAAU;QAChBC,EAAE,EAAE;MACN,CAAC,CAAC;IACJ;IACA,IAAI,IAAI,CAAC5B,YAAY,KAAKgB,KAAK,CAAChB,YAAY,EAAE;MAC5C,MAAMoB,UAAU,GACd,IAAI,CAACpB,YAAY,KAAKW,SAAS,GAC3B,yBAAyB,GACzBK,KAAK,CAAChB,YAAY,KAAKW,SAAS,GAC9B,2BAA2B,GAC3B,2BAA2B;MACnCM,KAAK,CAACE,IAAI,CAAC;QACTC,UAAU;QACVC,WAAW,EAAE,0BAA0B,IAAI,CAACrB,YAAY,IAAI,MAAM,MAAMgB,KAAK,CAAChB,YAAY,IAAI,MAAM,EAAE;QACtGuB,OAAO,EAAE;UAAEM,eAAe,EAAE,IAAI,CAAC7B,YAAY;UAAE8B,UAAU,EAAEd,KAAK,CAAChB;QAAa,CAAC;QAC/E2B,IAAI,EAAE,IAAI,CAAC3B,YAAY;QACvB4B,EAAE,EAAEZ,KAAK,CAAChB;MACZ,CAAC,CAAC;IACJ;IACAiB,KAAK,CAACE,IAAI,CAAC,GAAG,IAAAY,qBAAO,EAAC,IAAI,CAAChC,GAAG,EAAEe,QAAQ,CAAC,CAAC,EAAEE,KAAK,CAACjB,GAAG,EAAEe,QAAQ,CAAC,CAAC,CAAC,CAAC;IACnE,OAAOG,KAAK;EACd;EAEA,OAAOe,UAAUA,CAACC,GAAwB,EAAsB;IAC9D,MAAMvC,QAAQ,GAAGuC,GAAG,CAACvC,QAAQ;IAC7B,MAAMC,IAAI,GAAGsC,GAAG,CAACtC,IAAI;IACrB,MAAMC,SAAS,GAAGqC,GAAG,CAACrC,SAAS;IAC/B,MAAMC,IAAI,GAAGqC,gCAAc,CAACF,UAAU,CAACC,GAAG,CAACpC,IAAI,CAAC;IAChD,MAAMC,UAAU,GAAGmC,GAAG,CAACnC,UAAU;IACjC,MAAMC,GAAG,GAAGkC,GAAG,CAAClC,GAAG,GAAGoC,iBAAS,CAACH,UAAU,CAACC,GAAG,CAAClC,GAAG,CAAC,GAAGY,SAAS;IAC/D,MAAMX,YAAY,GAAGiC,GAAG,CAACjC,YAAY;IACrC,OAAO,IAAIV,kBAAkB,CAACI,QAAQ,EAAEC,IAAI,EAAEC,SAAS,EAAEC,IAAI,EAAEC,UAAU,EAAEC,GAAG,EAAEC,YAAY,CAAC;EAC/F;AACF;AAACoC,OAAA,CAAA9C,kBAAA,GAAAA,kBAAA","ignoreList":[]}
package/index.ts CHANGED
@@ -2,6 +2,8 @@ import * as Schemas from './schemas';
2
2
 
3
3
  export { SchemaNode, ISchemaNode } from './schema-node';
4
4
  export { APISchema } from './api-schema';
5
+ export { schemaDisplayName, typeStr, typesAreSemanticallyEqual, deepEqualNoLocation, diffDoc } from './schema-diff';
6
+ export type { SchemaChangeFact } from './schema-diff';
5
7
  export { Export, StaticProperties } from './export';
6
8
  export type { SchemaLocation as Location } from './schema-node';
7
9
  export { TagName } from './schemas/docs/tag';
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/semantics.entities.semantic-schema",
3
- "version": "0.0.100",
3
+ "version": "0.0.102",
4
4
  "homepage": "https://bit.cloud/teambit/semantics/entities/semantic-schema",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "teambit.semantics",
8
8
  "name": "entities/semantic-schema",
9
- "version": "0.0.100"
9
+ "version": "0.0.102"
10
10
  },
11
11
  "dependencies": {
12
12
  "chalk": "4.1.2",
@@ -0,0 +1,164 @@
1
+ import type { SchemaNode } from './schema-node';
2
+ import type { SchemaChangeFact } from './schema-diff';
3
+ import { deepEqualNoLocation, diffDoc, schemaDisplayName, typeStr } from './schema-diff';
4
+
5
+ type MemberMap = Map<string, Record<string, any>>;
6
+
7
+ const MEMBER_CHANGE_LABELS: Record<string, string> = {
8
+ 'member-documentation-changed': 'documentation changed',
9
+ 'member-signature-changed': 'signature changed',
10
+ 'member-definition-changed': 'internal definition changed',
11
+ };
12
+
13
+ function memberKey(m: Record<string, any>): string {
14
+ return m.name || m.signature || '';
15
+ }
16
+
17
+ function toMemberMap(members: Record<string, any>[]): MemberMap {
18
+ return new Map(members.map((m) => [memberKey(m), m]));
19
+ }
20
+
21
+ function classifyMemberChange(base: Record<string, any>, compare: Record<string, any>): string {
22
+ const baseStripped = { ...base, location: undefined, doc: undefined };
23
+ const compareStripped = { ...compare, location: undefined, doc: undefined };
24
+ if (deepEqualNoLocation(baseStripped, compareStripped)) return 'member-documentation-changed';
25
+ if (base.signature !== compare.signature) return 'member-signature-changed';
26
+ return 'member-definition-changed';
27
+ }
28
+
29
+ function diffAddedMembers(compareMemberMap: MemberMap, baseMemberMap: MemberMap): SchemaChangeFact[] {
30
+ const facts: SchemaChangeFact[] = [];
31
+ for (const [name, member] of compareMemberMap) {
32
+ if (baseMemberMap.has(name)) continue;
33
+ const kind = schemaDisplayName(member.__schema || '', true);
34
+ facts.push({
35
+ changeKind: 'member-added',
36
+ description: `${kind} '${name}' added${member.isOptional ? ' (optional)' : ''}: ${member.signature || name}`,
37
+ context: {
38
+ memberName: name,
39
+ memberKind: kind,
40
+ isOptional: !!member.isOptional,
41
+ signature: member.signature || name,
42
+ },
43
+ to: member.signature || name,
44
+ });
45
+ }
46
+ return facts;
47
+ }
48
+
49
+ function diffRemovedMembers(baseMemberMap: MemberMap, compareMemberMap: MemberMap): SchemaChangeFact[] {
50
+ const facts: SchemaChangeFact[] = [];
51
+ for (const [name, member] of baseMemberMap) {
52
+ if (compareMemberMap.has(name)) continue;
53
+ const kind = schemaDisplayName(member.__schema || '', true);
54
+ const isPublic = !(member.modifiers || []).includes('private');
55
+ facts.push({
56
+ changeKind: 'member-removed',
57
+ description: `${kind} '${name}' removed${isPublic ? ' — consumers using it will break' : ' (was private)'}`,
58
+ context: { memberName: name, memberKind: kind, isPublic, signature: member.signature || name },
59
+ from: member.signature || name,
60
+ });
61
+ }
62
+ return facts;
63
+ }
64
+
65
+ function diffModifiedMembers(
66
+ baseMemberMap: MemberMap,
67
+ compareMemberMap: MemberMap,
68
+ baseNode: SchemaNode,
69
+ compareNode: SchemaNode
70
+ ): SchemaChangeFact[] {
71
+ const facts: SchemaChangeFact[] = [];
72
+ for (const [name, baseMember] of baseMemberMap) {
73
+ const compareMember = compareMemberMap.get(name);
74
+ if (!compareMember) continue;
75
+ if (deepEqualNoLocation({ ...baseMember, location: undefined }, { ...compareMember, location: undefined }))
76
+ continue;
77
+
78
+ const kind = schemaDisplayName(baseMember.__schema || '', true);
79
+
80
+ if (baseMember.__schema === 'FunctionLikeSchema' && compareMember.__schema === 'FunctionLikeSchema') {
81
+ const bNode = ((baseNode as any).members as SchemaNode[])?.find((n: any) => n.name === name);
82
+ const cNode = ((compareNode as any).members as SchemaNode[])?.find((n: any) => n.name === name);
83
+ if (bNode && cNode) {
84
+ for (const d of bNode.diff(cNode)) {
85
+ facts.push({ ...d, description: `${kind} '${name}': ${d.description}` });
86
+ }
87
+ continue;
88
+ }
89
+ }
90
+
91
+ const changeKind = classifyMemberChange(baseMember, compareMember);
92
+ facts.push({
93
+ changeKind,
94
+ description: `${kind} '${name}' ${MEMBER_CHANGE_LABELS[changeKind]}`,
95
+ context: { memberName: name, memberKind: kind },
96
+ from: baseMember.signature || name,
97
+ to: compareMember.signature || name,
98
+ });
99
+ }
100
+ return facts;
101
+ }
102
+
103
+ function diffStructural(baseObj: Record<string, any>, compareObj: Record<string, any>): SchemaChangeFact[] {
104
+ const facts: SchemaChangeFact[] = [];
105
+
106
+ if (!deepEqualNoLocation(baseObj.typeParams, compareObj.typeParams)) {
107
+ const from = (baseObj.typeParams || []).join(', ');
108
+ const to = (compareObj.typeParams || []).join(', ');
109
+ facts.push({
110
+ changeKind: 'type-parameters-changed',
111
+ description: `type parameters changed: <${from || 'none'}> → <${to || 'none'}>`,
112
+ context: { from, to },
113
+ from,
114
+ to,
115
+ });
116
+ }
117
+
118
+ if (!deepEqualNoLocation(baseObj.extendsNodes, compareObj.extendsNodes)) {
119
+ const from = (baseObj.extendsNodes || []).map((n: any) => n.name || typeStr(n)).join(', ') || 'none';
120
+ const to = (compareObj.extendsNodes || []).map((n: any) => n.name || typeStr(n)).join(', ') || 'none';
121
+ facts.push({
122
+ changeKind: 'extends-changed',
123
+ description: `extends changed: ${from} → ${to}`,
124
+ context: { from, to },
125
+ from,
126
+ to,
127
+ });
128
+ }
129
+
130
+ if (
131
+ (baseObj.implementNodes || compareObj.implementNodes) &&
132
+ !deepEqualNoLocation(baseObj.implementNodes, compareObj.implementNodes)
133
+ ) {
134
+ const from = (baseObj.implementNodes || []).map((n: any) => n.name || typeStr(n)).join(', ') || 'none';
135
+ const to = (compareObj.implementNodes || []).map((n: any) => n.name || typeStr(n)).join(', ') || 'none';
136
+ facts.push({
137
+ changeKind: 'implements-changed',
138
+ description: `implements changed: ${from} → ${to}`,
139
+ context: { from, to },
140
+ from,
141
+ to,
142
+ });
143
+ }
144
+
145
+ return facts;
146
+ }
147
+
148
+ export function diffMembers(
149
+ baseObj: Record<string, any>,
150
+ compareObj: Record<string, any>,
151
+ baseNode: SchemaNode,
152
+ compareNode: SchemaNode
153
+ ): SchemaChangeFact[] {
154
+ const baseMemberMap = toMemberMap(baseObj.members || []);
155
+ const compareMemberMap = toMemberMap(compareObj.members || []);
156
+
157
+ return [
158
+ ...diffAddedMembers(compareMemberMap, baseMemberMap),
159
+ ...diffRemovedMembers(baseMemberMap, compareMemberMap),
160
+ ...diffModifiedMembers(baseMemberMap, compareMemberMap, baseNode, compareNode),
161
+ ...diffStructural(baseObj, compareObj),
162
+ ...diffDoc(baseObj.doc, compareObj.doc),
163
+ ];
164
+ }