@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.
- package/dist/index.d.ts +2 -0
- package/dist/index.js +42 -0
- package/dist/index.js.map +1 -1
- package/dist/schema-diff-members.d.ts +3 -0
- package/dist/schema-diff-members.js +171 -0
- package/dist/schema-diff-members.js.map +1 -0
- package/dist/schema-diff.d.ts +13 -0
- package/dist/schema-diff.js +138 -0
- package/dist/schema-diff.js.map +1 -0
- package/dist/schema-node.d.ts +10 -2
- package/dist/schema-node.js +49 -0
- package/dist/schema-node.js.map +1 -1
- package/dist/schemas/class.d.ts +2 -0
- package/dist/schemas/class.js +11 -0
- package/dist/schemas/class.js.map +1 -1
- package/dist/schemas/enum.d.ts +2 -0
- package/dist/schemas/enum.js +55 -0
- package/dist/schemas/enum.js.map +1 -1
- package/dist/schemas/function-like.d.ts +9 -0
- package/dist/schemas/function-like.js +300 -0
- package/dist/schemas/function-like.js.map +1 -1
- package/dist/schemas/interface.d.ts +2 -0
- package/dist/schemas/interface.js +11 -0
- package/dist/schemas/interface.js.map +1 -1
- package/dist/schemas/type.d.ts +2 -0
- package/dist/schemas/type.js +25 -0
- package/dist/schemas/type.js.map +1 -1
- package/dist/schemas/variable-like.d.ts +2 -0
- package/dist/schemas/variable-like.js +60 -0
- package/dist/schemas/variable-like.js.map +1 -1
- package/index.ts +2 -0
- package/package.json +2 -2
- package/schema-diff-members.ts +164 -0
- package/schema-diff.ts +168 -0
- package/schema-node.ts +37 -2
- package/schemas/class.ts +7 -0
- package/schemas/enum.ts +46 -0
- package/schemas/function-like.ts +277 -0
- package/schemas/interface.ts +7 -0
- package/schemas/type.ts +18 -0
- package/schemas/variable-like.ts +54 -0
package/dist/schemas/class.js
CHANGED
|
@@ -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 () {
|
|
@@ -117,6 +124,10 @@ class ClassSchema extends _schemaNode().SchemaNode {
|
|
|
117
124
|
const decorators = obj.decorators?.map(decorator => _schemaRegistry().SchemaRegistry.fromObject(decorator));
|
|
118
125
|
return new ClassSchema(name, members, location, signature, doc, typeParams, extendsNodes, implementNodes, decorators);
|
|
119
126
|
}
|
|
127
|
+
diff(other) {
|
|
128
|
+
if (!(other instanceof ClassSchema)) return super.diff(other);
|
|
129
|
+
return (0, _schemaDiffMembers().diffMembers)(this.toObject(), other.toObject(), this, other);
|
|
130
|
+
}
|
|
120
131
|
static fromSchema(node, memberTransformer = _node => _node) {
|
|
121
132
|
return new ClassSchema(node.name, node.members.map(memberTransformer), node.location, node.signature, node.doc, node.typeParams, node.extendsNodes, node.implementNodes, node.decorators);
|
|
122
133
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_chalk","data","_interopRequireDefault","require","_schemaNode","_docs","_expressionWithArguments","_schemaRegistry","e","__esModule","default","ClassSchema","SchemaNode","constructor","name","members","location","signature","doc","typeParams","extendsNodes","implementNodes","decorators","getNodes","toString","options","boldUnderline","color","chalk","bold","underline","str","membersStr","map","m","join","decoratorsStr","decorator","toFullSignature","result","showDocs","classDeclaration","length","extendsStr","node","implementsStr","member","memberStr","split","line","toObject","fromObject","obj","SchemaRegistry","DocSchema","undefined","ExpressionWithTypeArgumentsSchema","fromSchema","memberTransformer","_node","exports"],"sources":["class.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 ClassSchema extends SchemaNode {\n readonly members: SchemaNode[];\n readonly doc?: DocSchema;\n\n constructor(\n readonly name: string,\n members: SchemaNode[],\n readonly location: SchemaLocation,\n readonly signature: string,\n doc?: DocSchema,\n readonly typeParams?: string[],\n readonly extendsNodes?: ExpressionWithTypeArgumentsSchema[],\n readonly implementNodes?: ExpressionWithTypeArgumentsSchema[],\n readonly decorators?: SchemaNode[]\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 const decoratorsStr = this.decorators?.map((decorator) => decorator.toString(options)).join('\\n');\n return `${this.decorators ? `${decoratorsStr}\\n` : ''}${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 const decoratorsStr = this.decorators?.map((decorator) => decorator.toFullSignature(options)).join('\\n');\n if (decoratorsStr) {\n result += `${decoratorsStr}\\n`;\n }\n\n let classDeclaration = `class ${this.name}`;\n\n if (this.typeParams && this.typeParams.length > 0) {\n classDeclaration += `<${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 classDeclaration += ` extends ${extendsStr}`;\n }\n\n if (this.implementNodes && this.implementNodes.length > 0) {\n const implementsStr = this.implementNodes.map((node) => node.toFullSignature(options)).join(', ');\n classDeclaration += ` implements ${implementsStr}`;\n }\n\n result += `${classDeclaration} {\\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 typeParams: this.typeParams,\n extendsNodes: this.extendsNodes?.map((node) => node.toObject()),\n implementNodes: this.implementNodes?.map((node) => node.toObject()),\n decorators: this.decorators?.map((decorator) => decorator.toObject()),\n };\n }\n\n static fromObject(obj: Record<string, any>): ClassSchema {\n const name = obj.name;\n const members = obj.members.map((member: any) => SchemaRegistry.fromObject(member));\n const location = obj.location;\n const signature = obj.signature;\n const doc = obj.doc ? DocSchema.fromObject(obj.doc) : undefined;\n const typeParams = obj.typeParams;\n const extendsNodes = obj.extendsNodes?.map((node: any) => ExpressionWithTypeArgumentsSchema.fromObject(node));\n const implementNodes = obj.implementNodes?.map((node: any) => ExpressionWithTypeArgumentsSchema.fromObject(node));\n const decorators = obj.decorators?.map((decorator: any) => SchemaRegistry.fromObject(decorator));\n return new ClassSchema(\n name,\n members,\n location,\n signature,\n doc,\n typeParams,\n extendsNodes,\n implementNodes,\n decorators\n );\n }\n\n static fromSchema(node: ClassSchema, memberTransformer: (_node: SchemaNode) => SchemaNode = (_node) => _node) {\n return new ClassSchema(\n node.name,\n node.members.map(memberTransformer),\n node.location,\n node.signature,\n node.doc,\n node.typeParams,\n node.extendsNodes,\n node.implementNodes,\n node.decorators\n );\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","ClassSchema","SchemaNode","constructor","name","members","location","signature","doc","typeParams","extendsNodes","implementNodes","decorators","getNodes","toString","options","boldUnderline","color","chalk","bold","underline","str","membersStr","map","m","join","decoratorsStr","decorator","toFullSignature","result","showDocs","classDeclaration","length","extendsStr","node","implementsStr","member","memberStr","split","line","toObject","fromObject","obj","SchemaRegistry","DocSchema","undefined","ExpressionWithTypeArgumentsSchema","diff","other","diffMembers","fromSchema","memberTransformer","_node","exports"],"sources":["class.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 ClassSchema extends SchemaNode {\n readonly members: SchemaNode[];\n readonly doc?: DocSchema;\n\n constructor(\n readonly name: string,\n members: SchemaNode[],\n readonly location: SchemaLocation,\n readonly signature: string,\n doc?: DocSchema,\n readonly typeParams?: string[],\n readonly extendsNodes?: ExpressionWithTypeArgumentsSchema[],\n readonly implementNodes?: ExpressionWithTypeArgumentsSchema[],\n readonly decorators?: SchemaNode[]\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 const decoratorsStr = this.decorators?.map((decorator) => decorator.toString(options)).join('\\n');\n return `${this.decorators ? `${decoratorsStr}\\n` : ''}${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 const decoratorsStr = this.decorators?.map((decorator) => decorator.toFullSignature(options)).join('\\n');\n if (decoratorsStr) {\n result += `${decoratorsStr}\\n`;\n }\n\n let classDeclaration = `class ${this.name}`;\n\n if (this.typeParams && this.typeParams.length > 0) {\n classDeclaration += `<${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 classDeclaration += ` extends ${extendsStr}`;\n }\n\n if (this.implementNodes && this.implementNodes.length > 0) {\n const implementsStr = this.implementNodes.map((node) => node.toFullSignature(options)).join(', ');\n classDeclaration += ` implements ${implementsStr}`;\n }\n\n result += `${classDeclaration} {\\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 typeParams: this.typeParams,\n extendsNodes: this.extendsNodes?.map((node) => node.toObject()),\n implementNodes: this.implementNodes?.map((node) => node.toObject()),\n decorators: this.decorators?.map((decorator) => decorator.toObject()),\n };\n }\n\n static fromObject(obj: Record<string, any>): ClassSchema {\n const name = obj.name;\n const members = obj.members.map((member: any) => SchemaRegistry.fromObject(member));\n const location = obj.location;\n const signature = obj.signature;\n const doc = obj.doc ? DocSchema.fromObject(obj.doc) : undefined;\n const typeParams = obj.typeParams;\n const extendsNodes = obj.extendsNodes?.map((node: any) => ExpressionWithTypeArgumentsSchema.fromObject(node));\n const implementNodes = obj.implementNodes?.map((node: any) => ExpressionWithTypeArgumentsSchema.fromObject(node));\n const decorators = obj.decorators?.map((decorator: any) => SchemaRegistry.fromObject(decorator));\n return new ClassSchema(\n name,\n members,\n location,\n signature,\n doc,\n typeParams,\n extendsNodes,\n implementNodes,\n decorators\n );\n }\n\n diff(other: SchemaNode): SchemaChangeFact[] {\n if (!(other instanceof ClassSchema)) return super.diff(other);\n return diffMembers(this.toObject(), other.toObject(), this, other);\n }\n\n static fromSchema(node: ClassSchema, memberTransformer: (_node: SchemaNode) => SchemaNode = (_node) => _node) {\n return new ClassSchema(\n node.name,\n node.members.map(memberTransformer),\n node.location,\n node.signature,\n node.doc,\n node.typeParams,\n node.extendsNodes,\n node.implementNodes,\n node.decorators\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
package/dist/schemas/enum.d.ts
CHANGED
|
@@ -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 EnumSchema extends SchemaNode {
|
|
5
6
|
readonly location: SchemaLocation;
|
|
@@ -34,5 +35,6 @@ export declare class EnumSchema extends SchemaNode {
|
|
|
34
35
|
} | undefined;
|
|
35
36
|
signature: string;
|
|
36
37
|
};
|
|
38
|
+
diff(other: SchemaNode): SchemaChangeFact[];
|
|
37
39
|
static fromObject(obj: Record<string, any>): EnumSchema;
|
|
38
40
|
}
|
package/dist/schemas/enum.js
CHANGED
|
@@ -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 () {
|
|
@@ -73,6 +80,54 @@ class EnumSchema extends _schemaNode().SchemaNode {
|
|
|
73
80
|
signature: this.signature
|
|
74
81
|
};
|
|
75
82
|
}
|
|
83
|
+
diff(other) {
|
|
84
|
+
if (!(other instanceof EnumSchema)) return super.diff(other);
|
|
85
|
+
const facts = [];
|
|
86
|
+
const baseMembers = this.toObject().members || [];
|
|
87
|
+
const compareMembers = other.toObject().members || [];
|
|
88
|
+
const baseMap = new Map(baseMembers.map(m => [m.name || '', m]));
|
|
89
|
+
const compareMap = new Map(compareMembers.map(m => [m.name || '', m]));
|
|
90
|
+
for (const [name, member] of compareMap) {
|
|
91
|
+
if (!baseMap.has(name)) {
|
|
92
|
+
facts.push({
|
|
93
|
+
changeKind: 'enum-member-added',
|
|
94
|
+
description: `enum member '${name}' added`,
|
|
95
|
+
context: {
|
|
96
|
+
memberName: name
|
|
97
|
+
},
|
|
98
|
+
to: member.signature || name
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
for (const [name, member] of baseMap) {
|
|
103
|
+
if (!compareMap.has(name)) {
|
|
104
|
+
facts.push({
|
|
105
|
+
changeKind: 'enum-member-removed',
|
|
106
|
+
description: `enum member '${name}' removed`,
|
|
107
|
+
context: {
|
|
108
|
+
memberName: name
|
|
109
|
+
},
|
|
110
|
+
from: member.signature || name
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
for (const [name, bm] of baseMap) {
|
|
115
|
+
const cm = compareMap.get(name);
|
|
116
|
+
if (cm && !(0, _schemaDiff().deepEqualNoLocation)(bm, cm)) {
|
|
117
|
+
facts.push({
|
|
118
|
+
changeKind: 'enum-member-value-changed',
|
|
119
|
+
description: `enum member '${name}' value changed`,
|
|
120
|
+
context: {
|
|
121
|
+
memberName: name
|
|
122
|
+
},
|
|
123
|
+
from: bm.signature || name,
|
|
124
|
+
to: cm.signature || name
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
facts.push(...(0, _schemaDiff().diffDoc)(this.doc?.toObject(), other.doc?.toObject()));
|
|
129
|
+
return facts;
|
|
130
|
+
}
|
|
76
131
|
static fromObject(obj) {
|
|
77
132
|
const location = obj.location;
|
|
78
133
|
const name = obj.name;
|
package/dist/schemas/enum.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_chalk","data","_interopRequireDefault","require","_schemaNode","_docs","_","e","__esModule","default","EnumSchema","SchemaNode","constructor","location","name","members","signature","doc","getNodes","toString","options","boldUnderline","color","chalk","bold","underline","str","membersStr","map","m","join","toFullSignature","result","showDocs","member","memberStr","toObject","fromObject","obj","SchemaRegistry","DocSchema","undefined","exports"],"sources":["enum.ts"],"sourcesContent":["import chalk from 'chalk';\nimport type { SchemaLocation } from '../schema-node';\nimport { SchemaNode } from '../schema-node';\nimport { DocSchema } from './docs';\nimport { SchemaRegistry } from '..';\n\nexport class EnumSchema extends SchemaNode {\n readonly doc?: DocSchema;\n readonly members: SchemaNode[];\n\n constructor(\n readonly location: SchemaLocation,\n readonly name: string,\n members: SchemaNode[],\n readonly signature: string,\n doc?: DocSchema\n ) {\n super();\n this.doc = doc;\n this.members = members;\n }\n\n getNodes() {\n return this.members;\n }\n\n toString(options) {\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 result += `enum ${this.name} {\\n`;\n\n const membersStr = this.members\n .map((member) => {\n const memberStr = member.toFullSignature(options);\n return ` ${memberStr}`;\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 };\n }\n\n static fromObject(obj: Record<string, any>): EnumSchema {\n const location = obj.location;\n const name = obj.name;\n const members = obj.members.map((member: any) => SchemaRegistry.fromObject(member));\n const signature = obj.signature;\n const doc = obj.doc ? DocSchema.fromObject(obj.doc) : undefined;\n return new EnumSchema(location, name, members, signature, doc);\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;
|
|
1
|
+
{"version":3,"names":["_chalk","data","_interopRequireDefault","require","_schemaNode","_schemaDiff","_docs","_","e","__esModule","default","EnumSchema","SchemaNode","constructor","location","name","members","signature","doc","getNodes","toString","options","boldUnderline","color","chalk","bold","underline","str","membersStr","map","m","join","toFullSignature","result","showDocs","member","memberStr","toObject","diff","other","facts","baseMembers","compareMembers","baseMap","Map","compareMap","has","push","changeKind","description","context","memberName","to","from","bm","cm","get","deepEqualNoLocation","diffDoc","fromObject","obj","SchemaRegistry","DocSchema","undefined","exports"],"sources":["enum.ts"],"sourcesContent":["import chalk from 'chalk';\nimport type { SchemaLocation } from '../schema-node';\nimport { SchemaNode } from '../schema-node';\nimport type { SchemaChangeFact } from '../schema-diff';\nimport { deepEqualNoLocation, diffDoc } from '../schema-diff';\nimport { DocSchema } from './docs';\nimport { SchemaRegistry } from '..';\n\nexport class EnumSchema extends SchemaNode {\n readonly doc?: DocSchema;\n readonly members: SchemaNode[];\n\n constructor(\n readonly location: SchemaLocation,\n readonly name: string,\n members: SchemaNode[],\n readonly signature: string,\n doc?: DocSchema\n ) {\n super();\n this.doc = doc;\n this.members = members;\n }\n\n getNodes() {\n return this.members;\n }\n\n toString(options) {\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 result += `enum ${this.name} {\\n`;\n\n const membersStr = this.members\n .map((member) => {\n const memberStr = member.toFullSignature(options);\n return ` ${memberStr}`;\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 };\n }\n\n diff(other: SchemaNode): SchemaChangeFact[] {\n if (!(other instanceof EnumSchema)) return super.diff(other);\n const facts: SchemaChangeFact[] = [];\n const baseMembers: Record<string, any>[] = this.toObject().members || [];\n const compareMembers: Record<string, any>[] = other.toObject().members || [];\n const baseMap = new Map(baseMembers.map((m) => [m.name || '', m]));\n const compareMap = new Map(compareMembers.map((m) => [m.name || '', m]));\n\n for (const [name, member] of compareMap) {\n if (!baseMap.has(name)) {\n facts.push({\n changeKind: 'enum-member-added',\n description: `enum member '${name}' added`,\n context: { memberName: name },\n to: member.signature || name,\n });\n }\n }\n for (const [name, member] of baseMap) {\n if (!compareMap.has(name)) {\n facts.push({\n changeKind: 'enum-member-removed',\n description: `enum member '${name}' removed`,\n context: { memberName: name },\n from: member.signature || name,\n });\n }\n }\n for (const [name, bm] of baseMap) {\n const cm = compareMap.get(name);\n if (cm && !deepEqualNoLocation(bm, cm)) {\n facts.push({\n changeKind: 'enum-member-value-changed',\n description: `enum member '${name}' value changed`,\n context: { memberName: name },\n from: bm.signature || name,\n to: cm.signature || name,\n });\n }\n }\n facts.push(...diffDoc(this.doc?.toObject(), other.doc?.toObject()));\n return facts;\n }\n\n static fromObject(obj: Record<string, any>): EnumSchema {\n const location = obj.location;\n const name = obj.name;\n const members = obj.members.map((member: any) => SchemaRegistry.fromObject(member));\n const signature = obj.signature;\n const doc = obj.doc ? DocSchema.fromObject(obj.doc) : undefined;\n return new EnumSchema(location, name, members, 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 { ParameterSchema } from './parameter';
|
|
4
5
|
import { DocSchema } from './docs';
|
|
5
6
|
export type Modifier = 'static' | 'public' | 'private' | 'protected' | 'readonly' | 'abstract' | 'async' | 'override' | 'export';
|
|
@@ -63,5 +64,13 @@ export declare class FunctionLikeSchema extends SchemaNode {
|
|
|
63
64
|
decorators: Record<string, any>[] | undefined;
|
|
64
65
|
};
|
|
65
66
|
static fromObject(obj: Record<string, any>): FunctionLikeSchema;
|
|
67
|
+
diff(other: SchemaNode): SchemaChangeFact[];
|
|
68
|
+
private static diffModifiers;
|
|
69
|
+
private static diffParams;
|
|
70
|
+
private static diffOverlappingParam;
|
|
71
|
+
private static diffParamOptionality;
|
|
72
|
+
private static diffParamDefault;
|
|
73
|
+
private static diffDestructuredParam;
|
|
74
|
+
private static diffBindingDefault;
|
|
66
75
|
private modifiersToString;
|
|
67
76
|
}
|
|
@@ -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 _parameter() {
|
|
22
29
|
const data = require("./parameter");
|
|
23
30
|
_parameter = function () {
|
|
@@ -137,6 +144,299 @@ class FunctionLikeSchema extends _schemaNode().SchemaNode {
|
|
|
137
144
|
static fromObject(obj) {
|
|
138
145
|
return new FunctionLikeSchema(obj.location, obj.name, obj.params.map(param => _parameter().ParameterSchema.fromObject(param)), _schemaRegistry().SchemaRegistry.fromObject(obj.returnType), obj.signature, obj.modifiers, obj.doc ? _docs().DocSchema.fromObject(obj.doc) : undefined, obj.typeParams, obj.decorators?.map(decorator => _schemaRegistry().SchemaRegistry.fromObject(decorator)));
|
|
139
146
|
}
|
|
147
|
+
diff(other) {
|
|
148
|
+
if (!(other instanceof FunctionLikeSchema)) return super.diff(other);
|
|
149
|
+
const facts = [];
|
|
150
|
+
const baseObj = this.toObject();
|
|
151
|
+
const compareObj = other.toObject();
|
|
152
|
+
FunctionLikeSchema.diffParams(baseObj.params || [], compareObj.params || [], facts);
|
|
153
|
+
if (!(0, _schemaDiff().typesAreSemanticallyEqual)(baseObj.returnType, compareObj.returnType)) {
|
|
154
|
+
const fromType = (0, _schemaDiff().typeStr)(baseObj.returnType);
|
|
155
|
+
const toType = (0, _schemaDiff().typeStr)(compareObj.returnType);
|
|
156
|
+
facts.push({
|
|
157
|
+
changeKind: 'return-type-changed',
|
|
158
|
+
description: `return type changed: ${fromType} → ${toType}`,
|
|
159
|
+
context: {
|
|
160
|
+
fromType,
|
|
161
|
+
toType,
|
|
162
|
+
position: 'return-type'
|
|
163
|
+
},
|
|
164
|
+
from: fromType,
|
|
165
|
+
to: toType
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
if (!(0, _schemaDiff().deepEqualNoLocation)(baseObj.typeParams, compareObj.typeParams)) {
|
|
169
|
+
facts.push({
|
|
170
|
+
changeKind: 'type-parameters-changed',
|
|
171
|
+
description: `type parameters changed: <${(baseObj.typeParams || []).join(', ') || 'none'}> → <${(compareObj.typeParams || []).join(', ') || 'none'}>`,
|
|
172
|
+
context: {
|
|
173
|
+
from: (baseObj.typeParams || []).join(', '),
|
|
174
|
+
to: (compareObj.typeParams || []).join(', ')
|
|
175
|
+
},
|
|
176
|
+
from: (baseObj.typeParams || []).join(', '),
|
|
177
|
+
to: (compareObj.typeParams || []).join(', ')
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
FunctionLikeSchema.diffModifiers(this.modifiers || [], other.modifiers || [], facts);
|
|
181
|
+
facts.push(...(0, _schemaDiff().diffDoc)(baseObj.doc, compareObj.doc));
|
|
182
|
+
return facts;
|
|
183
|
+
}
|
|
184
|
+
static diffModifiers(baseMods, compareMods, facts) {
|
|
185
|
+
const base = baseMods.filter(m => m !== 'export');
|
|
186
|
+
const compare = compareMods.filter(m => m !== 'export');
|
|
187
|
+
if ((0, _schemaDiff().deepEqualNoLocation)(base, compare)) return;
|
|
188
|
+
const added = compare.filter(m => !base.includes(m));
|
|
189
|
+
const removed = base.filter(m => !compare.includes(m));
|
|
190
|
+
const parts = [];
|
|
191
|
+
if (added.length) parts.push(`added: ${added.join(', ')}`);
|
|
192
|
+
if (removed.length) parts.push(`removed: ${removed.join(', ')}`);
|
|
193
|
+
const accessNarrowed = removed.includes('public') || added.includes('private') || added.includes('protected');
|
|
194
|
+
facts.push({
|
|
195
|
+
changeKind: accessNarrowed ? 'access-narrowed' : 'modifiers-changed',
|
|
196
|
+
description: `modifiers changed (${parts.join('; ')})`,
|
|
197
|
+
context: {
|
|
198
|
+
added,
|
|
199
|
+
removed,
|
|
200
|
+
accessNarrowed
|
|
201
|
+
},
|
|
202
|
+
from: base.join(', ') || 'none',
|
|
203
|
+
to: compare.join(', ') || 'none'
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
static diffParams(baseParams, compareParams, facts) {
|
|
207
|
+
for (const p of compareParams.slice(baseParams.length)) {
|
|
208
|
+
const isOpt = p.isOptional || p.defaultValue !== undefined;
|
|
209
|
+
facts.push({
|
|
210
|
+
changeKind: 'parameter-added',
|
|
211
|
+
description: `parameter '${p.name}: ${(0, _schemaDiff().typeStr)(p.type)}' added${isOpt ? ' (optional)' : ' (required)'}`,
|
|
212
|
+
context: {
|
|
213
|
+
paramName: p.name,
|
|
214
|
+
isOptional: !!p.isOptional,
|
|
215
|
+
hasDefault: p.defaultValue !== undefined,
|
|
216
|
+
paramType: (0, _schemaDiff().typeStr)(p.type)
|
|
217
|
+
},
|
|
218
|
+
to: `${p.name}${p.isOptional ? '?' : ''}: ${(0, _schemaDiff().typeStr)(p.type)}`
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
for (const p of baseParams.slice(compareParams.length)) {
|
|
222
|
+
facts.push({
|
|
223
|
+
changeKind: 'parameter-removed',
|
|
224
|
+
description: `parameter '${p.name}: ${(0, _schemaDiff().typeStr)(p.type)}' removed`,
|
|
225
|
+
context: {
|
|
226
|
+
paramName: p.name,
|
|
227
|
+
isOptional: !!p.isOptional,
|
|
228
|
+
paramType: (0, _schemaDiff().typeStr)(p.type)
|
|
229
|
+
},
|
|
230
|
+
from: `${p.name}${p.isOptional ? '?' : ''}: ${(0, _schemaDiff().typeStr)(p.type)}`
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
const minLen = Math.min(baseParams.length, compareParams.length);
|
|
234
|
+
for (let i = 0; i < minLen; i++) {
|
|
235
|
+
FunctionLikeSchema.diffOverlappingParam(baseParams[i], compareParams[i], i, facts);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
static diffOverlappingParam(bp, cp, index, facts) {
|
|
239
|
+
if (bp.objectBindingNodes || cp.objectBindingNodes) {
|
|
240
|
+
FunctionLikeSchema.diffDestructuredParam(bp, cp, facts);
|
|
241
|
+
if (!(0, _schemaDiff().typesAreSemanticallyEqual)(bp.type, cp.type)) {
|
|
242
|
+
const paramName = cp.name || bp.name;
|
|
243
|
+
facts.push({
|
|
244
|
+
changeKind: 'parameter-type-changed',
|
|
245
|
+
description: `parameter at position ${index} type changed: ${(0, _schemaDiff().typeStr)(bp.type)} → ${(0, _schemaDiff().typeStr)(cp.type)}`,
|
|
246
|
+
context: {
|
|
247
|
+
paramName,
|
|
248
|
+
fromType: (0, _schemaDiff().typeStr)(bp.type),
|
|
249
|
+
toType: (0, _schemaDiff().typeStr)(cp.type),
|
|
250
|
+
position: 'parameter'
|
|
251
|
+
},
|
|
252
|
+
from: (0, _schemaDiff().typeStr)(bp.type),
|
|
253
|
+
to: (0, _schemaDiff().typeStr)(cp.type)
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
return;
|
|
257
|
+
}
|
|
258
|
+
const nameEqual = bp.name === cp.name;
|
|
259
|
+
const typeEqual = (0, _schemaDiff().typesAreSemanticallyEqual)(bp.type, cp.type);
|
|
260
|
+
if (nameEqual && typeEqual && bp.isOptional === cp.isOptional && bp.defaultValue === cp.defaultValue) return;
|
|
261
|
+
const paramName = cp.name || bp.name;
|
|
262
|
+
if (!nameEqual) {
|
|
263
|
+
facts.push({
|
|
264
|
+
changeKind: 'parameter-renamed',
|
|
265
|
+
description: `parameter at position ${index} renamed: '${bp.name}' → '${cp.name}'`,
|
|
266
|
+
context: {
|
|
267
|
+
fromName: bp.name,
|
|
268
|
+
toName: cp.name,
|
|
269
|
+
position: index
|
|
270
|
+
},
|
|
271
|
+
from: bp.name,
|
|
272
|
+
to: cp.name
|
|
273
|
+
});
|
|
274
|
+
}
|
|
275
|
+
if (!typeEqual) {
|
|
276
|
+
facts.push({
|
|
277
|
+
changeKind: 'parameter-type-changed',
|
|
278
|
+
description: `parameter '${paramName}' type changed: ${(0, _schemaDiff().typeStr)(bp.type)} → ${(0, _schemaDiff().typeStr)(cp.type)}`,
|
|
279
|
+
context: {
|
|
280
|
+
paramName,
|
|
281
|
+
fromType: (0, _schemaDiff().typeStr)(bp.type),
|
|
282
|
+
toType: (0, _schemaDiff().typeStr)(cp.type),
|
|
283
|
+
position: 'parameter'
|
|
284
|
+
},
|
|
285
|
+
from: (0, _schemaDiff().typeStr)(bp.type),
|
|
286
|
+
to: (0, _schemaDiff().typeStr)(cp.type)
|
|
287
|
+
});
|
|
288
|
+
}
|
|
289
|
+
FunctionLikeSchema.diffParamOptionality(bp, cp, paramName, facts);
|
|
290
|
+
FunctionLikeSchema.diffParamDefault(bp, cp, paramName, facts);
|
|
291
|
+
}
|
|
292
|
+
static diffParamOptionality(bp, cp, paramName, facts) {
|
|
293
|
+
if (bp.isOptional && !cp.isOptional) {
|
|
294
|
+
facts.push({
|
|
295
|
+
changeKind: 'became-required',
|
|
296
|
+
description: `parameter '${paramName}' became required (was optional)`,
|
|
297
|
+
context: {
|
|
298
|
+
paramName,
|
|
299
|
+
position: 'parameter'
|
|
300
|
+
},
|
|
301
|
+
from: 'optional',
|
|
302
|
+
to: 'required'
|
|
303
|
+
});
|
|
304
|
+
} else if (!bp.isOptional && cp.isOptional) {
|
|
305
|
+
facts.push({
|
|
306
|
+
changeKind: 'became-optional',
|
|
307
|
+
description: `parameter '${paramName}' became optional (was required)`,
|
|
308
|
+
context: {
|
|
309
|
+
paramName,
|
|
310
|
+
position: 'parameter'
|
|
311
|
+
},
|
|
312
|
+
from: 'required',
|
|
313
|
+
to: 'optional'
|
|
314
|
+
});
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
static diffParamDefault(bp, cp, paramName, facts) {
|
|
318
|
+
if (bp.defaultValue === cp.defaultValue) return;
|
|
319
|
+
if (bp.defaultValue !== undefined && cp.defaultValue === undefined) {
|
|
320
|
+
facts.push({
|
|
321
|
+
changeKind: 'parameter-default-removed',
|
|
322
|
+
description: `parameter '${paramName}' default value removed (was: ${bp.defaultValue})`,
|
|
323
|
+
context: {
|
|
324
|
+
paramName,
|
|
325
|
+
isOptional: !!bp.isOptional,
|
|
326
|
+
previousDefault: String(bp.defaultValue)
|
|
327
|
+
},
|
|
328
|
+
from: String(bp.defaultValue)
|
|
329
|
+
});
|
|
330
|
+
} else if (bp.defaultValue === undefined && cp.defaultValue !== undefined) {
|
|
331
|
+
facts.push({
|
|
332
|
+
changeKind: 'parameter-default-added',
|
|
333
|
+
description: `parameter '${paramName}' default value added: ${cp.defaultValue}`,
|
|
334
|
+
context: {
|
|
335
|
+
paramName,
|
|
336
|
+
newDefault: String(cp.defaultValue)
|
|
337
|
+
},
|
|
338
|
+
to: String(cp.defaultValue)
|
|
339
|
+
});
|
|
340
|
+
} else {
|
|
341
|
+
facts.push({
|
|
342
|
+
changeKind: 'parameter-default-changed',
|
|
343
|
+
description: `parameter '${paramName}' default value changed: ${bp.defaultValue} → ${cp.defaultValue}`,
|
|
344
|
+
context: {
|
|
345
|
+
paramName,
|
|
346
|
+
previousDefault: String(bp.defaultValue),
|
|
347
|
+
newDefault: String(cp.defaultValue)
|
|
348
|
+
},
|
|
349
|
+
from: String(bp.defaultValue),
|
|
350
|
+
to: String(cp.defaultValue)
|
|
351
|
+
});
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
static diffDestructuredParam(base, compare, facts) {
|
|
355
|
+
const baseBindings = base.objectBindingNodes || [];
|
|
356
|
+
const compareBindings = compare.objectBindingNodes || [];
|
|
357
|
+
const baseMap = new Map(baseBindings.map(b => [b.name || '', b]));
|
|
358
|
+
const compareMap = new Map(compareBindings.map(b => [b.name || '', b]));
|
|
359
|
+
for (const [name] of compareMap) {
|
|
360
|
+
if (!baseMap.has(name)) {
|
|
361
|
+
facts.push({
|
|
362
|
+
changeKind: 'destructured-property-added',
|
|
363
|
+
description: `destructured property '${name}' added`,
|
|
364
|
+
context: {
|
|
365
|
+
propertyName: name
|
|
366
|
+
},
|
|
367
|
+
to: name
|
|
368
|
+
});
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
for (const [name] of baseMap) {
|
|
372
|
+
if (!compareMap.has(name)) {
|
|
373
|
+
facts.push({
|
|
374
|
+
changeKind: 'destructured-property-removed',
|
|
375
|
+
description: `destructured property '${name}' removed`,
|
|
376
|
+
context: {
|
|
377
|
+
propertyName: name
|
|
378
|
+
},
|
|
379
|
+
from: name
|
|
380
|
+
});
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
for (const [name, bb] of baseMap) {
|
|
384
|
+
const cb = compareMap.get(name);
|
|
385
|
+
if (!cb) continue;
|
|
386
|
+
FunctionLikeSchema.diffBindingDefault(name, bb, cb, !!base.isOptional, facts);
|
|
387
|
+
if (bb.type && cb.type && !(0, _schemaDiff().typesAreSemanticallyEqual)(bb.type, cb.type)) {
|
|
388
|
+
facts.push({
|
|
389
|
+
changeKind: 'destructured-property-type-changed',
|
|
390
|
+
description: `destructured property '${name}' type changed: ${(0, _schemaDiff().typeStr)(bb.type)} → ${(0, _schemaDiff().typeStr)(cb.type)}`,
|
|
391
|
+
context: {
|
|
392
|
+
propertyName: name,
|
|
393
|
+
fromType: (0, _schemaDiff().typeStr)(bb.type),
|
|
394
|
+
toType: (0, _schemaDiff().typeStr)(cb.type),
|
|
395
|
+
position: 'parameter'
|
|
396
|
+
},
|
|
397
|
+
from: (0, _schemaDiff().typeStr)(bb.type),
|
|
398
|
+
to: (0, _schemaDiff().typeStr)(cb.type)
|
|
399
|
+
});
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
static diffBindingDefault(name, bb, cb, parentIsOptional, facts) {
|
|
404
|
+
if (bb.defaultValue === cb.defaultValue) return;
|
|
405
|
+
if (bb.defaultValue !== undefined && cb.defaultValue === undefined) {
|
|
406
|
+
facts.push({
|
|
407
|
+
changeKind: 'destructured-property-default-removed',
|
|
408
|
+
description: `destructured property '${name}' default value removed (was: ${bb.defaultValue})`,
|
|
409
|
+
context: {
|
|
410
|
+
propertyName: name,
|
|
411
|
+
isOptional: parentIsOptional,
|
|
412
|
+
previousDefault: String(bb.defaultValue)
|
|
413
|
+
},
|
|
414
|
+
from: String(bb.defaultValue)
|
|
415
|
+
});
|
|
416
|
+
} else if (bb.defaultValue === undefined && cb.defaultValue !== undefined) {
|
|
417
|
+
facts.push({
|
|
418
|
+
changeKind: 'destructured-property-default-added',
|
|
419
|
+
description: `destructured property '${name}' default value added: ${cb.defaultValue}`,
|
|
420
|
+
context: {
|
|
421
|
+
propertyName: name,
|
|
422
|
+
newDefault: String(cb.defaultValue)
|
|
423
|
+
},
|
|
424
|
+
to: String(cb.defaultValue)
|
|
425
|
+
});
|
|
426
|
+
} else {
|
|
427
|
+
facts.push({
|
|
428
|
+
changeKind: 'destructured-property-default-changed',
|
|
429
|
+
description: `destructured property '${name}' default value changed: ${bb.defaultValue} → ${cb.defaultValue}`,
|
|
430
|
+
context: {
|
|
431
|
+
propertyName: name,
|
|
432
|
+
previousDefault: String(bb.defaultValue),
|
|
433
|
+
newDefault: String(cb.defaultValue)
|
|
434
|
+
},
|
|
435
|
+
from: String(bb.defaultValue),
|
|
436
|
+
to: String(cb.defaultValue)
|
|
437
|
+
});
|
|
438
|
+
}
|
|
439
|
+
}
|
|
140
440
|
modifiersToString() {
|
|
141
441
|
const modifiersToPrint = this.modifiers.filter(modifier => modifier !== 'export');
|
|
142
442
|
return modifiersToPrint.length ? `${modifiersToPrint.join(' ')} ` : '';
|