@teambit/schema 1.0.926 → 1.0.928
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 +1 -1
- package/dist/index.js.map +1 -1
- package/dist/mock/button-diff.json +139 -0
- package/dist/mock/button-v2/button.composition.d.ts +10 -0
- package/dist/mock/button-v2/button.composition.js +59 -0
- package/dist/mock/button-v2/button.composition.js.map +1 -0
- package/dist/mock/button-v2/button.d.ts +25 -0
- package/dist/mock/button-v2/button.js +55 -0
- package/dist/mock/button-v2/button.js.map +1 -0
- package/dist/mock/button-v2/index.d.ts +127 -0
- package/dist/mock/button-v2/index.js +238 -0
- package/dist/mock/button-v2/index.js.map +1 -0
- package/dist/mock/button-v2/tsconfig.json +19 -0
- package/dist/preview-1775143204644.js +9 -0
- package/dist/schema-diff.cmd.d.ts +30 -0
- package/dist/schema-diff.cmd.js +252 -0
- package/dist/schema-diff.cmd.js.map +1 -0
- package/dist/schema.cmd.d.ts +1 -0
- package/dist/schema.cmd.js +1 -0
- package/dist/schema.cmd.js.map +1 -1
- package/dist/schema.graphql.js +47 -0
- package/dist/schema.graphql.js.map +1 -1
- package/dist/schema.main.runtime.d.ts +29 -3
- package/dist/schema.main.runtime.js +60 -5
- package/dist/schema.main.runtime.js.map +1 -1
- package/dist/schema.spec.js +108 -0
- package/dist/schema.spec.js.map +1 -1
- package/mock/button-diff.json +139 -0
- package/mock/button-v2/button.composition.tsx +33 -0
- package/mock/button-v2/button.tsx +58 -0
- package/mock/button-v2/index.ts +214 -0
- package/mock/button-v2/tsconfig.json +19 -0
- package/package.json +17 -15
- package/dist/preview-1774991821432.js +0 -8
package/dist/schema.cmd.js
CHANGED
|
@@ -36,6 +36,7 @@ useful for understanding component interfaces and generating documentation.
|
|
|
36
36
|
${(0, _legacy().PATTERN_HELP)('schema')}`);
|
|
37
37
|
_defineProperty(this, "group", 'info-analysis');
|
|
38
38
|
_defineProperty(this, "options", [['r', 'remote', 'fetch schema from remote scope (works for components not in workspace)'], ['j', 'json', 'return the component schema in json format']]);
|
|
39
|
+
_defineProperty(this, "commands", []);
|
|
39
40
|
}
|
|
40
41
|
async report([pattern], {
|
|
41
42
|
remote
|
package/dist/schema.cmd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_pMapSeries","data","_interopRequireDefault","require","_legacy","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","SchemaCommand","constructor","schema","component","logger","PATTERN_HELP","report","pattern","remote","schemas","getSchemas","map","toStringPerType","join","json","toObject","getSchemaFromRemote","host","getHost","ids","idsByPattern","components","getMany","longRunningLog","createLongProcessLogger","length","results","pMapSeries","logProgress","id","toString","getSchema","undefined","end","exports"],"sources":["schema.cmd.ts"],"sourcesContent":["import type { Command, CommandOptions } from '@teambit/cli';\nimport type { ComponentMain } from '@teambit/component';\nimport pMapSeries from 'p-map-series';\nimport type { Logger } from '@teambit/logger';\nimport type { APISchema } from '@teambit/semantics.entities.semantic-schema';\nimport { PATTERN_HELP } from '@teambit/legacy.constants';\nimport type { SchemaMain } from './schema.main.runtime';\n\nexport class SchemaCommand implements Command {\n name = 'schema <pattern>';\n description = 'display component API schema and type definitions';\n extendedDescription = `extracts and displays the public API structure of components including types, functions, classes, and interfaces.\nshows detailed type information, function signatures, and JSDoc documentation for exported elements.\nuseful for understanding component interfaces and generating documentation.\n\n${PATTERN_HELP('schema')}`;\n group = 'info-analysis';\n options = [\n ['r', 'remote', 'fetch schema from remote scope (works for components not in workspace)'],\n ['j', 'json', 'return the component schema in json format'],\n ] as CommandOptions;\n\n constructor(\n private schema: SchemaMain,\n private component: ComponentMain,\n private logger: Logger\n ) {}\n\n async report([pattern]: [string], { remote }: { remote: boolean }): Promise<string> {\n const schemas = await this.getSchemas([pattern], remote);\n return schemas.map((schema) => schema.toStringPerType()).join('\\n\\n\\n');\n }\n\n async json([pattern]: [string], { remote }: { remote: boolean }): Promise<Record<string, any>> {\n const schemas = await this.getSchemas([pattern], remote);\n return schemas.map((schema) => schema.toObject());\n }\n\n private async getSchemas([pattern]: [string], remote = false): Promise<APISchema[]> {\n if (remote) {\n const schema = await this.schema.getSchemaFromRemote(pattern);\n return [schema];\n }\n const host = this.component.getHost();\n const ids = await host.idsByPattern(pattern, true);\n const components = await host.getMany(ids);\n const longRunningLog = this.logger.createLongProcessLogger('generating schema', ids.length);\n const results = await pMapSeries(components, (component) => {\n longRunningLog.logProgress(component.id.toString());\n return this.schema.getSchema(component, undefined, true);\n });\n longRunningLog.end();\n return results;\n }\n}\n"],"mappings":";;;;;;AAEA,SAAAA,YAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,WAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAGA,SAAAG,QAAA;EAAA,MAAAH,IAAA,GAAAE,OAAA;EAAAC,OAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAAyD,SAAAC,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAAG,gBAAAH,CAAA,EAAAI,CAAA,EAAAC,CAAA,YAAAD,CAAA,GAAAE,cAAA,CAAAF,CAAA,MAAAJ,CAAA,GAAAO,MAAA,CAAAC,cAAA,CAAAR,CAAA,EAAAI,CAAA,IAAAK,KAAA,EAAAJ,CAAA,EAAAK,UAAA,MAAAC,YAAA,MAAAC,QAAA,UAAAZ,CAAA,CAAAI,CAAA,IAAAC,CAAA,EAAAL,CAAA;AAAA,SAAAM,eAAAD,CAAA,QAAAQ,CAAA,GAAAC,YAAA,CAAAT,CAAA,uCAAAQ,CAAA,GAAAA,CAAA,GAAAA,CAAA;AAAA,SAAAC,aAAAT,CAAA,EAAAD,CAAA,2BAAAC,CAAA,KAAAA,CAAA,SAAAA,CAAA,MAAAL,CAAA,GAAAK,CAAA,CAAAU,MAAA,CAAAC,WAAA,kBAAAhB,CAAA,QAAAa,CAAA,GAAAb,CAAA,CAAAiB,IAAA,CAAAZ,CAAA,EAAAD,CAAA,uCAAAS,CAAA,SAAAA,CAAA,YAAAK,SAAA,yEAAAd,CAAA,GAAAe,MAAA,GAAAC,MAAA,EAAAf,CAAA;AAGlD,MAAMgB,aAAa,CAAoB;
|
|
1
|
+
{"version":3,"names":["_pMapSeries","data","_interopRequireDefault","require","_legacy","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","SchemaCommand","constructor","schema","component","logger","PATTERN_HELP","report","pattern","remote","schemas","getSchemas","map","toStringPerType","join","json","toObject","getSchemaFromRemote","host","getHost","ids","idsByPattern","components","getMany","longRunningLog","createLongProcessLogger","length","results","pMapSeries","logProgress","id","toString","getSchema","undefined","end","exports"],"sources":["schema.cmd.ts"],"sourcesContent":["import type { Command, CommandOptions } from '@teambit/cli';\nimport type { ComponentMain } from '@teambit/component';\nimport pMapSeries from 'p-map-series';\nimport type { Logger } from '@teambit/logger';\nimport type { APISchema } from '@teambit/semantics.entities.semantic-schema';\nimport { PATTERN_HELP } from '@teambit/legacy.constants';\nimport type { SchemaMain } from './schema.main.runtime';\n\nexport class SchemaCommand implements Command {\n name = 'schema <pattern>';\n description = 'display component API schema and type definitions';\n extendedDescription = `extracts and displays the public API structure of components including types, functions, classes, and interfaces.\nshows detailed type information, function signatures, and JSDoc documentation for exported elements.\nuseful for understanding component interfaces and generating documentation.\n\n${PATTERN_HELP('schema')}`;\n group = 'info-analysis';\n options = [\n ['r', 'remote', 'fetch schema from remote scope (works for components not in workspace)'],\n ['j', 'json', 'return the component schema in json format'],\n ] as CommandOptions;\n commands: Command[] = [];\n\n constructor(\n private schema: SchemaMain,\n private component: ComponentMain,\n private logger: Logger\n ) {}\n\n async report([pattern]: [string], { remote }: { remote: boolean }): Promise<string> {\n const schemas = await this.getSchemas([pattern], remote);\n return schemas.map((schema) => schema.toStringPerType()).join('\\n\\n\\n');\n }\n\n async json([pattern]: [string], { remote }: { remote: boolean }): Promise<Record<string, any>> {\n const schemas = await this.getSchemas([pattern], remote);\n return schemas.map((schema) => schema.toObject());\n }\n\n private async getSchemas([pattern]: [string], remote = false): Promise<APISchema[]> {\n if (remote) {\n const schema = await this.schema.getSchemaFromRemote(pattern);\n return [schema];\n }\n const host = this.component.getHost();\n const ids = await host.idsByPattern(pattern, true);\n const components = await host.getMany(ids);\n const longRunningLog = this.logger.createLongProcessLogger('generating schema', ids.length);\n const results = await pMapSeries(components, (component) => {\n longRunningLog.logProgress(component.id.toString());\n return this.schema.getSchema(component, undefined, true);\n });\n longRunningLog.end();\n return results;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
package/dist/schema.graphql.js
CHANGED
|
@@ -34,8 +34,46 @@ function schemaSchema(schema) {
|
|
|
34
34
|
return {
|
|
35
35
|
typeDefs: (0, _graphqlTag().gql)`
|
|
36
36
|
scalar JSONObject
|
|
37
|
+
|
|
38
|
+
type APIDiffDetail {
|
|
39
|
+
changeKind: String!
|
|
40
|
+
description: String!
|
|
41
|
+
impact: String!
|
|
42
|
+
from: String
|
|
43
|
+
to: String
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
type APIDiffChange {
|
|
47
|
+
status: String!
|
|
48
|
+
visibility: String!
|
|
49
|
+
exportName: String!
|
|
50
|
+
schemaType: String!
|
|
51
|
+
schemaTypeRaw: String!
|
|
52
|
+
impact: String!
|
|
53
|
+
baseSignature: String
|
|
54
|
+
compareSignature: String
|
|
55
|
+
baseNode: JSONObject
|
|
56
|
+
compareNode: JSONObject
|
|
57
|
+
changes: [APIDiffDetail!]
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
type APIDiffResult {
|
|
61
|
+
hasChanges: Boolean!
|
|
62
|
+
impact: String!
|
|
63
|
+
publicChanges: [APIDiffChange!]!
|
|
64
|
+
internalChanges: [APIDiffChange!]!
|
|
65
|
+
changes: [APIDiffChange!]!
|
|
66
|
+
added: Int!
|
|
67
|
+
removed: Int!
|
|
68
|
+
modified: Int!
|
|
69
|
+
breaking: Int!
|
|
70
|
+
nonBreaking: Int!
|
|
71
|
+
patch: Int!
|
|
72
|
+
}
|
|
73
|
+
|
|
37
74
|
extend type ComponentHost {
|
|
38
75
|
getSchema(id: String!, skipInternals: Boolean): JSONObject
|
|
76
|
+
apiDiff(baseId: String!, compareId: String!): APIDiffResult
|
|
39
77
|
}
|
|
40
78
|
`,
|
|
41
79
|
resolvers: {
|
|
@@ -52,6 +90,15 @@ function schemaSchema(schema) {
|
|
|
52
90
|
const api = await schema.getSchema(component, undefined, undefined, undefined, undefined, skipInternals);
|
|
53
91
|
if (!api) return empty;
|
|
54
92
|
return filterUnimplementedAndAddDefaults(api);
|
|
93
|
+
},
|
|
94
|
+
apiDiff: async (host, {
|
|
95
|
+
baseId,
|
|
96
|
+
compareId
|
|
97
|
+
}) => {
|
|
98
|
+
const [baseCompId, compareCompId] = await Promise.all([host.resolveComponentId(baseId), host.resolveComponentId(compareId)]);
|
|
99
|
+
const [baseComp, compareComp] = await Promise.all([host.get(baseCompId), host.get(compareCompId)]);
|
|
100
|
+
if (!baseComp || !compareComp) return null;
|
|
101
|
+
return schema.computeAPIDiff(baseComp, compareComp);
|
|
55
102
|
}
|
|
56
103
|
}
|
|
57
104
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_graphqlTypeJson","data","require","_graphqlTag","_semanticsEntities","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","schemaSchema","schema","typeDefs","gql","resolvers","JSONObject","GraphQLJSONObject","ComponentHost","getSchema","host","id","skipInternals","componentId","resolveComponentId","component","get","empty","APISchema","toObject","api","undefined","filterUnimplementedAndAddDefaults","apiObject","filteredExports","module","exports","exp","exportNode","__schema","UnImplementedSchema","name","filteredInternals","internals","map","internalObject","filteredInternalExports","filteredInternalNodes","filteredTaggedExports","taggedModuleExports","defaultTaggedExports","exportedModule"],"sources":["schema.graphql.ts"],"sourcesContent":["import type { ComponentFactory } from '@teambit/component';\nimport { GraphQLJSONObject } from 'graphql-type-json';\nimport { gql } from 'graphql-tag';\nimport { APISchema, UnImplementedSchema } from '@teambit/semantics.entities.semantic-schema';\nimport type { Schema } from '@teambit/graphql';\nimport type { SchemaMain } from './schema.main.runtime';\n\nexport function schemaSchema(schema: SchemaMain): Schema {\n return {\n typeDefs: gql`\n scalar JSONObject\n extend type ComponentHost {\n getSchema(id: String!, skipInternals: Boolean): JSONObject\n }\n `,\n resolvers: {\n JSONObject: GraphQLJSONObject,\n ComponentHost: {\n getSchema: async (host: ComponentFactory, { id, skipInternals }: { id: string; skipInternals?: boolean }) => {\n const componentId = await host.resolveComponentId(id);\n const component = await host.get(componentId);\n const empty = APISchema.empty(componentId).toObject();\n\n if (!component) return empty;\n const api = await schema.getSchema(component, undefined, undefined, undefined, undefined, skipInternals);\n if (!api) return empty;\n\n return filterUnimplementedAndAddDefaults(api);\n },\n },\n },\n };\n}\n\nfunction filterUnimplementedAndAddDefaults(api: APISchema) {\n const apiObject = api.toObject();\n\n const filteredExports = apiObject.module.exports.filter((exp) => {\n if (exp.exportNode) {\n return exp.exportNode.__schema !== UnImplementedSchema.name;\n }\n return (exp as Record<string, any>).__schema !== UnImplementedSchema.name;\n });\n\n const filteredInternals = apiObject.internals.map((internalObject) => {\n const filteredInternalExports = internalObject.exports.filter((exp) => {\n if (exp.exportNode) {\n return exp.exportNode.__schema !== UnImplementedSchema.name;\n }\n return (exp as Record<string, any>).__schema !== UnImplementedSchema.name;\n });\n const filteredInternalNodes = internalObject.internals.filter((exp) => exp.__schema !== UnImplementedSchema.name);\n return {\n ...internalObject,\n exports: filteredInternalExports,\n internals: filteredInternalNodes,\n };\n });\n\n const filteredTaggedExports = apiObject.taggedModuleExports.filter(\n (exp) => exp.__schema !== UnImplementedSchema.name\n );\n\n const defaultTaggedExports = filteredExports\n .filter((exportedModule) => {\n if (exportedModule.exportNode) {\n return exportedModule.exportNode.__schema === 'ReactSchema';\n }\n return (exportedModule as Record<string, any>).__schema === 'ReactSchema';\n })\n .map((exportedModule) => {\n if (exportedModule.exportNode) {\n return exportedModule.exportNode;\n }\n return exportedModule;\n });\n\n return {\n ...apiObject,\n internals: filteredInternals,\n taggedModuleExports: filteredTaggedExports.length > 0 ? filteredTaggedExports : defaultTaggedExports,\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_graphqlTypeJson","data","require","_graphqlTag","_semanticsEntities","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","schemaSchema","schema","typeDefs","gql","resolvers","JSONObject","GraphQLJSONObject","ComponentHost","getSchema","host","id","skipInternals","componentId","resolveComponentId","component","get","empty","APISchema","toObject","api","undefined","filterUnimplementedAndAddDefaults","apiDiff","baseId","compareId","baseCompId","compareCompId","Promise","all","baseComp","compareComp","computeAPIDiff","apiObject","filteredExports","module","exports","exp","exportNode","__schema","UnImplementedSchema","name","filteredInternals","internals","map","internalObject","filteredInternalExports","filteredInternalNodes","filteredTaggedExports","taggedModuleExports","defaultTaggedExports","exportedModule"],"sources":["schema.graphql.ts"],"sourcesContent":["import type { ComponentFactory } from '@teambit/component';\nimport { GraphQLJSONObject } from 'graphql-type-json';\nimport { gql } from 'graphql-tag';\nimport { APISchema, UnImplementedSchema } from '@teambit/semantics.entities.semantic-schema';\nimport type { Schema } from '@teambit/graphql';\nimport type { SchemaMain } from './schema.main.runtime';\n\nexport function schemaSchema(schema: SchemaMain): Schema {\n return {\n typeDefs: gql`\n scalar JSONObject\n\n type APIDiffDetail {\n changeKind: String!\n description: String!\n impact: String!\n from: String\n to: String\n }\n\n type APIDiffChange {\n status: String!\n visibility: String!\n exportName: String!\n schemaType: String!\n schemaTypeRaw: String!\n impact: String!\n baseSignature: String\n compareSignature: String\n baseNode: JSONObject\n compareNode: JSONObject\n changes: [APIDiffDetail!]\n }\n\n type APIDiffResult {\n hasChanges: Boolean!\n impact: String!\n publicChanges: [APIDiffChange!]!\n internalChanges: [APIDiffChange!]!\n changes: [APIDiffChange!]!\n added: Int!\n removed: Int!\n modified: Int!\n breaking: Int!\n nonBreaking: Int!\n patch: Int!\n }\n\n extend type ComponentHost {\n getSchema(id: String!, skipInternals: Boolean): JSONObject\n apiDiff(baseId: String!, compareId: String!): APIDiffResult\n }\n `,\n resolvers: {\n JSONObject: GraphQLJSONObject,\n ComponentHost: {\n getSchema: async (host: ComponentFactory, { id, skipInternals }: { id: string; skipInternals?: boolean }) => {\n const componentId = await host.resolveComponentId(id);\n const component = await host.get(componentId);\n const empty = APISchema.empty(componentId).toObject();\n\n if (!component) return empty;\n const api = await schema.getSchema(component, undefined, undefined, undefined, undefined, skipInternals);\n if (!api) return empty;\n\n return filterUnimplementedAndAddDefaults(api);\n },\n apiDiff: async (host: ComponentFactory, { baseId, compareId }: { baseId: string; compareId: string }) => {\n const [baseCompId, compareCompId] = await Promise.all([\n host.resolveComponentId(baseId),\n host.resolveComponentId(compareId),\n ]);\n const [baseComp, compareComp] = await Promise.all([host.get(baseCompId), host.get(compareCompId)]);\n if (!baseComp || !compareComp) return null;\n return schema.computeAPIDiff(baseComp, compareComp);\n },\n },\n },\n };\n}\n\nfunction filterUnimplementedAndAddDefaults(api: APISchema) {\n const apiObject = api.toObject();\n\n const filteredExports = apiObject.module.exports.filter((exp) => {\n if (exp.exportNode) {\n return exp.exportNode.__schema !== UnImplementedSchema.name;\n }\n return (exp as Record<string, any>).__schema !== UnImplementedSchema.name;\n });\n\n const filteredInternals = apiObject.internals.map((internalObject) => {\n const filteredInternalExports = internalObject.exports.filter((exp) => {\n if (exp.exportNode) {\n return exp.exportNode.__schema !== UnImplementedSchema.name;\n }\n return (exp as Record<string, any>).__schema !== UnImplementedSchema.name;\n });\n const filteredInternalNodes = internalObject.internals.filter((exp) => exp.__schema !== UnImplementedSchema.name);\n return {\n ...internalObject,\n exports: filteredInternalExports,\n internals: filteredInternalNodes,\n };\n });\n\n const filteredTaggedExports = apiObject.taggedModuleExports.filter(\n (exp) => exp.__schema !== UnImplementedSchema.name\n );\n\n const defaultTaggedExports = filteredExports\n .filter((exportedModule) => {\n if (exportedModule.exportNode) {\n return exportedModule.exportNode.__schema === 'ReactSchema';\n }\n return (exportedModule as Record<string, any>).__schema === 'ReactSchema';\n })\n .map((exportedModule) => {\n if (exportedModule.exportNode) {\n return exportedModule.exportNode;\n }\n return exportedModule;\n });\n\n return {\n ...apiObject,\n internals: filteredInternals,\n taggedModuleExports: filteredTaggedExports.length > 0 ? filteredTaggedExports : defaultTaggedExports,\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -10,9 +10,12 @@ import type { BuilderMain } from '@teambit/builder';
|
|
|
10
10
|
import type { Workspace } from '@teambit/workspace';
|
|
11
11
|
import type { ScopeMain } from '@teambit/scope';
|
|
12
12
|
import type { SchemaNodeTransformer, SchemaTransformer } from '@teambit/typescript';
|
|
13
|
+
import type { ImpactRule, APIDiffResult } from '@teambit/semantics.entities.semantic-schema-diff';
|
|
14
|
+
import { ImpactAssessor } from '@teambit/semantics.entities.semantic-schema-diff';
|
|
13
15
|
import type { Parser } from './parser';
|
|
14
16
|
import type { SchemaExtractor } from './schema-extractor';
|
|
15
17
|
export type ParserSlot = SlotRegistry<Parser>;
|
|
18
|
+
export type ImpactRuleSlot = SlotRegistry<ImpactRule[]>;
|
|
16
19
|
export type SchemaConfig = {
|
|
17
20
|
/**
|
|
18
21
|
* default parser
|
|
@@ -31,16 +34,25 @@ export declare class SchemaMain {
|
|
|
31
34
|
* parsers slot.
|
|
32
35
|
*/
|
|
33
36
|
private parserSlot;
|
|
37
|
+
/**
|
|
38
|
+
* impact rules slot — other aspects register custom rules via registerImpactRules().
|
|
39
|
+
*/
|
|
40
|
+
private impactRuleSlot;
|
|
34
41
|
private envs;
|
|
35
42
|
private config;
|
|
36
43
|
private builder;
|
|
37
44
|
private workspace;
|
|
38
45
|
private logger;
|
|
46
|
+
private impactAssessor;
|
|
39
47
|
constructor(
|
|
40
48
|
/**
|
|
41
49
|
* parsers slot.
|
|
42
50
|
*/
|
|
43
|
-
parserSlot: ParserSlot,
|
|
51
|
+
parserSlot: ParserSlot,
|
|
52
|
+
/**
|
|
53
|
+
* impact rules slot — other aspects register custom rules via registerImpactRules().
|
|
54
|
+
*/
|
|
55
|
+
impactRuleSlot: ImpactRuleSlot, envs: EnvsMain, config: SchemaConfig, builder: BuilderMain, workspace: Workspace, logger: Logger, impactAssessor: ImpactAssessor);
|
|
44
56
|
/**
|
|
45
57
|
* get the default parser.
|
|
46
58
|
*/
|
|
@@ -77,10 +89,24 @@ export declare class SchemaMain {
|
|
|
77
89
|
getSchemaData(component: Component): {
|
|
78
90
|
[key: string]: any;
|
|
79
91
|
} | undefined;
|
|
92
|
+
/**
|
|
93
|
+
* Register custom impact rules for API diff assessment.
|
|
94
|
+
* Custom rules take priority over default rules.
|
|
95
|
+
* This allows environments to customize what constitutes a breaking change.
|
|
96
|
+
*/
|
|
97
|
+
registerImpactRules(rules: ImpactRule[]): void;
|
|
98
|
+
/**
|
|
99
|
+
* Get the ImpactAssessor with default + all registered custom rules from the slot.
|
|
100
|
+
*/
|
|
101
|
+
getImpactAssessor(): ImpactAssessor;
|
|
102
|
+
/**
|
|
103
|
+
* Compute the semantic API diff between two component versions.
|
|
104
|
+
*/
|
|
105
|
+
computeAPIDiff(baseComp: Component, compareComp: Component): Promise<APIDiffResult | null>;
|
|
80
106
|
isSchemaTaskDisabled(component: Component): any;
|
|
81
107
|
static runtime: import("@teambit/harmony").RuntimeDefinition;
|
|
82
108
|
static dependencies: import("@teambit/harmony").Aspect[];
|
|
83
|
-
static slots: ((registerFn: () => string) => SlotRegistry<Parser>)[];
|
|
109
|
+
static slots: (((registerFn: () => string) => SlotRegistry<Parser>) | ((registerFn: () => string) => SlotRegistry<ImpactRule[]>))[];
|
|
84
110
|
static defaultConfig: {
|
|
85
111
|
defaultParser: string;
|
|
86
112
|
disabled: boolean;
|
|
@@ -94,6 +120,6 @@ export declare class SchemaMain {
|
|
|
94
120
|
BuilderMain,
|
|
95
121
|
Workspace,
|
|
96
122
|
ScopeMain
|
|
97
|
-
], config: SchemaConfig, [parserSlot]: [ParserSlot]): Promise<SchemaMain>;
|
|
123
|
+
], config: SchemaConfig, [parserSlot, impactRuleSlot]: [ParserSlot, ImpactRuleSlot]): Promise<SchemaMain>;
|
|
98
124
|
}
|
|
99
125
|
export default SchemaMain;
|
|
@@ -88,6 +88,13 @@ function _scope2() {
|
|
|
88
88
|
};
|
|
89
89
|
return data;
|
|
90
90
|
}
|
|
91
|
+
function _semanticsEntities2() {
|
|
92
|
+
const data = require("@teambit/semantics.entities.semantic-schema-diff");
|
|
93
|
+
_semanticsEntities2 = function () {
|
|
94
|
+
return data;
|
|
95
|
+
};
|
|
96
|
+
return data;
|
|
97
|
+
}
|
|
91
98
|
function _schema() {
|
|
92
99
|
const data = require("./schema.aspect");
|
|
93
100
|
_schema = function () {
|
|
@@ -102,6 +109,13 @@ function _schema2() {
|
|
|
102
109
|
};
|
|
103
110
|
return data;
|
|
104
111
|
}
|
|
112
|
+
function _schemaDiff() {
|
|
113
|
+
const data = require("./schema-diff.cmd");
|
|
114
|
+
_schemaDiff = function () {
|
|
115
|
+
return data;
|
|
116
|
+
};
|
|
117
|
+
return data;
|
|
118
|
+
}
|
|
105
119
|
function _schema3() {
|
|
106
120
|
const data = require("./schema.graphql");
|
|
107
121
|
_schema3 = function () {
|
|
@@ -134,13 +148,19 @@ class SchemaMain {
|
|
|
134
148
|
/**
|
|
135
149
|
* parsers slot.
|
|
136
150
|
*/
|
|
137
|
-
parserSlot,
|
|
151
|
+
parserSlot,
|
|
152
|
+
/**
|
|
153
|
+
* impact rules slot — other aspects register custom rules via registerImpactRules().
|
|
154
|
+
*/
|
|
155
|
+
impactRuleSlot, envs, config, builder, workspace, logger, impactAssessor) {
|
|
138
156
|
this.parserSlot = parserSlot;
|
|
157
|
+
this.impactRuleSlot = impactRuleSlot;
|
|
139
158
|
this.envs = envs;
|
|
140
159
|
this.config = config;
|
|
141
160
|
this.builder = builder;
|
|
142
161
|
this.workspace = workspace;
|
|
143
162
|
this.logger = logger;
|
|
163
|
+
this.impactAssessor = impactAssessor;
|
|
144
164
|
}
|
|
145
165
|
|
|
146
166
|
/**
|
|
@@ -283,15 +303,50 @@ class SchemaMain {
|
|
|
283
303
|
getSchemaData(component) {
|
|
284
304
|
return component.state.aspects.get(_schema().SchemaAspect.id)?.data;
|
|
285
305
|
}
|
|
306
|
+
|
|
307
|
+
/**
|
|
308
|
+
* Register custom impact rules for API diff assessment.
|
|
309
|
+
* Custom rules take priority over default rules.
|
|
310
|
+
* This allows environments to customize what constitutes a breaking change.
|
|
311
|
+
*/
|
|
312
|
+
registerImpactRules(rules) {
|
|
313
|
+
this.impactRuleSlot.register(rules);
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
/**
|
|
317
|
+
* Get the ImpactAssessor with default + all registered custom rules from the slot.
|
|
318
|
+
*/
|
|
319
|
+
getImpactAssessor() {
|
|
320
|
+
this.impactAssessor.registerRules(this.impactRuleSlot.values().flat());
|
|
321
|
+
return this.impactAssessor;
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
/**
|
|
325
|
+
* Compute the semantic API diff between two component versions.
|
|
326
|
+
*/
|
|
327
|
+
async computeAPIDiff(baseComp, compareComp) {
|
|
328
|
+
try {
|
|
329
|
+
const [baseSchema, compareSchema] = await Promise.all([this.getSchema(baseComp), this.getSchema(compareComp)]);
|
|
330
|
+
const assessor = this.getImpactAssessor();
|
|
331
|
+
return (0, _semanticsEntities2().computeAPIDiff)(baseSchema, compareSchema, assessor);
|
|
332
|
+
} catch (err) {
|
|
333
|
+
this.logger.warn(`failed computing API diff: ${err.message}`);
|
|
334
|
+
return null;
|
|
335
|
+
}
|
|
336
|
+
}
|
|
286
337
|
isSchemaTaskDisabled(component) {
|
|
287
338
|
return this.getSchemaData(component)?.disabled;
|
|
288
339
|
}
|
|
289
|
-
static async provider([envs, cli, component, graphql, loggerMain, builder, workspace, scope], config, [parserSlot]) {
|
|
340
|
+
static async provider([envs, cli, component, graphql, loggerMain, builder, workspace, scope], config, [parserSlot, impactRuleSlot]) {
|
|
290
341
|
const logger = loggerMain.createLogger(_schema().SchemaAspect.id);
|
|
291
|
-
const
|
|
342
|
+
const impactAssessor = new (_semanticsEntities2().ImpactAssessor)();
|
|
343
|
+
impactAssessor.registerDefaultRules(_semanticsEntities2().DEFAULT_IMPACT_RULES);
|
|
344
|
+
const schema = new SchemaMain(parserSlot, impactRuleSlot, envs, config, builder, workspace, logger, impactAssessor);
|
|
292
345
|
const schemaTask = new (_schema4().SchemaTask)(_schema().SchemaAspect.id, schema, logger);
|
|
293
346
|
builder.registerBuildTasks([schemaTask]);
|
|
294
|
-
|
|
347
|
+
const schemaCmd = new (_schema2().SchemaCommand)(schema, component, logger);
|
|
348
|
+
schemaCmd.commands = [new (_schemaDiff().SchemaDiffCommand)(schema, component, logger)];
|
|
349
|
+
cli.register(schemaCmd);
|
|
295
350
|
graphql.register(() => (0, _schema3().schemaSchema)(schema));
|
|
296
351
|
envs.registerService(new (_schema5().SchemaService)());
|
|
297
352
|
if (workspace) {
|
|
@@ -308,7 +363,7 @@ class SchemaMain {
|
|
|
308
363
|
exports.SchemaMain = SchemaMain;
|
|
309
364
|
_defineProperty(SchemaMain, "runtime", _cli().MainRuntime);
|
|
310
365
|
_defineProperty(SchemaMain, "dependencies", [_envs().EnvsAspect, _cli().CLIAspect, _component().ComponentAspect, _graphql().GraphqlAspect, _logger().LoggerAspect, _builder().BuilderAspect, _workspace().WorkspaceAspect, _scope().ScopeAspect]);
|
|
311
|
-
_defineProperty(SchemaMain, "slots", [_harmony().Slot.withType()]);
|
|
366
|
+
_defineProperty(SchemaMain, "slots", [_harmony().Slot.withType(), _harmony().Slot.withType()]);
|
|
312
367
|
_defineProperty(SchemaMain, "defaultConfig", {
|
|
313
368
|
defaultParser: 'teambit.typescript/typescript',
|
|
314
369
|
disabled: false
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_cli","data","require","_component","_harmony","_graphql","_envs","_logger","_semanticsEntities","_builder","_workspace","_scope","_legacy","_scope2","_schema","_schema2","_schema3","_schema4","_schema5","_defineProperty","e","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","SchemaMain","constructor","parserSlot","envs","config","builder","workspace","logger","getDefaultParser","get","defaultParser","registerSchemaClass","schema","SchemaRegistry","register","registerSchemaClasses","getSchemas","registerGetSchemas","parseModule","path","content","parsers","toArray","maybeParser","find","parser","match","extension","getSchemaExtractor","component","tsserverPath","contextPath","env","getEnv","Error","name","undefined","getSchema","shouldDisposeResourcesOnceDone","alwaysRunExtractor","skipInternals","schemaTransformers","apiTransformers","includeFiles","disabled","APISchema","empty","id","buildStatus","BuildStatus","Succeed","formatter","getFormatter","setKey","schemaExtractor","result","extract","dispose","err","message","warn","toString","schemaArtifact","getArtifactsVinylByAspectAndTaskName","SchemaAspect","SCHEMA_TASK_NAME","length","debug","schemaJsonStr","contents","schemaJson","JSON","parse","getSchemaFromObject","SyntaxError","error","obj","fromObject","getSchemaFromRemote","isPattern","some","char","includes","getId","startsWith","compId","resolveComponentIdFromPackageName","compIdStr","http","Http","connect","SYMPHONY_GRAPHQL","CENTRAL_BIT_HUB_NAME","response","registerParser","calcSchemaData","getSchemaData","state","aspects","isSchemaTaskDisabled","provider","cli","graphql","loggerMain","scope","createLogger","schemaTask","SchemaTask","registerBuildTasks","SchemaCommand","schemaSchema","registerService","SchemaService","registerOnComponentLoad","registerOnCompAspectReCalc","values","Schemas","exports","MainRuntime","EnvsAspect","CLIAspect","ComponentAspect","GraphqlAspect","LoggerAspect","BuilderAspect","WorkspaceAspect","ScopeAspect","Slot","withType","addRuntime","_default","default"],"sources":["schema.main.runtime.ts"],"sourcesContent":["import type { CLIMain } from '@teambit/cli';\nimport { MainRuntime, CLIAspect } from '@teambit/cli';\nimport type { Component, ComponentMain } from '@teambit/component';\nimport { ComponentAspect } from '@teambit/component';\nimport type { SlotRegistry } from '@teambit/harmony';\nimport { Slot } from '@teambit/harmony';\nimport type { GraphqlMain } from '@teambit/graphql';\nimport { GraphqlAspect } from '@teambit/graphql';\nimport type { EnvsMain } from '@teambit/envs';\nimport { EnvsAspect } from '@teambit/envs';\nimport type { Logger, LoggerMain } from '@teambit/logger';\nimport { LoggerAspect } from '@teambit/logger';\nimport type { PrettierConfigMutator } from '@teambit/defender.prettier.config-mutator';\nimport type { Export, SchemaNodeConstructor } from '@teambit/semantics.entities.semantic-schema';\nimport { APISchema, Schemas, SchemaRegistry } from '@teambit/semantics.entities.semantic-schema';\nimport type { BuilderMain } from '@teambit/builder';\nimport { BuilderAspect } from '@teambit/builder';\nimport type { Workspace } from '@teambit/workspace';\nimport { WorkspaceAspect } from '@teambit/workspace';\nimport type { ScopeMain } from '@teambit/scope';\nimport { ScopeAspect } from '@teambit/scope';\nimport type { Formatter } from '@teambit/formatter';\nimport type { SchemaNodeTransformer, SchemaTransformer } from '@teambit/typescript';\nimport { BuildStatus, CENTRAL_BIT_HUB_NAME, SYMPHONY_GRAPHQL } from '@teambit/legacy.constants';\nimport { Http } from '@teambit/scope.network';\nimport type { Parser } from './parser';\nimport { SchemaAspect } from './schema.aspect';\nimport type { SchemaExtractor } from './schema-extractor';\nimport { SchemaCommand } from './schema.cmd';\nimport { schemaSchema } from './schema.graphql';\nimport { SchemaTask, SCHEMA_TASK_NAME } from './schema.task';\nimport { SchemaService } from './schema.service';\n\nexport type ParserSlot = SlotRegistry<Parser>;\n\nexport type SchemaConfig = {\n /**\n * default parser\n */\n defaultParser: string;\n /**\n * disable extracting schema\n */\n disabled?: boolean;\n};\n\n/**\n * extension for extracting component schemas.\n */\nexport class SchemaMain {\n constructor(\n /**\n * parsers slot.\n */\n private parserSlot: ParserSlot,\n\n private envs: EnvsMain,\n\n private config: SchemaConfig,\n\n private builder: BuilderMain,\n\n private workspace: Workspace,\n\n private logger: Logger\n ) {}\n\n /**\n * get the default parser.\n */\n getDefaultParser(): Parser {\n return this.parserSlot.get(this.config.defaultParser) as Parser;\n }\n\n /**\n * @deprecated use registerSchemaClasses instead\n * registerSchemaClasses is better for performance as it lazy-loads the schemas.\n */\n registerSchemaClass(schema: SchemaNodeConstructor) {\n SchemaRegistry.register(schema);\n }\n\n registerSchemaClasses(getSchemas: () => SchemaNodeConstructor[]) {\n SchemaRegistry.registerGetSchemas(getSchemas);\n }\n\n /**\n * parse a module into a component schema.\n */\n parseModule(path: string, content?: string): Export[] {\n const parsers = this.parserSlot.toArray();\n let maybeParser = parsers.find(([, parser]) => {\n const match = path.match(parser.extension);\n return match;\n });\n\n if (!maybeParser) {\n maybeParser = [this.config.defaultParser, this.getDefaultParser()];\n }\n\n const [, parser] = maybeParser;\n return parser.parseModule(path, content);\n }\n\n getSchemaExtractor(component: Component, tsserverPath?: string, contextPath?: string): SchemaExtractor {\n const env = this.envs.getEnv(component).env;\n if (typeof env.getSchemaExtractor === 'undefined') {\n throw new Error(`No SchemaExtractor defined for ${env.name}`);\n }\n\n return env.getSchemaExtractor(undefined, tsserverPath, contextPath);\n }\n\n /**\n * get a schema of a component.\n * @param component target component.\n * @param shouldDisposeResourcesOnceDone for long-running processes, such as bit-start/bit-watch, this is not\n * relevant. for calling the API only to get a schema for one component, this is needed to ensure the ts-server is\n * not kept alive. otherwise, the process will never end.\n *\n */\n async getSchema(\n component: Component,\n shouldDisposeResourcesOnceDone = false,\n alwaysRunExtractor = false,\n tsserverPath?: string,\n contextPath?: string,\n skipInternals?: boolean,\n schemaTransformers?: SchemaTransformer[],\n apiTransformers?: SchemaNodeTransformer[],\n includeFiles?: string[]\n ): Promise<APISchema> {\n if (this.config.disabled) {\n return APISchema.empty(component.id as any);\n }\n\n if (alwaysRunExtractor || (this.workspace && component.buildStatus !== BuildStatus.Succeed)) {\n try {\n const env = this.envs.getEnv(component).env;\n // types need to be fixed\n const formatter: Formatter | undefined = env.getFormatter?.(null, [\n (config: PrettierConfigMutator) => {\n config.setKey('parser', 'typescript');\n return config;\n },\n ]);\n if (typeof env.getSchemaExtractor === 'undefined') {\n throw new Error(`No SchemaExtractor defined for ${env.name}`);\n }\n const schemaExtractor: SchemaExtractor = env.getSchemaExtractor(\n undefined,\n tsserverPath,\n contextPath,\n schemaTransformers,\n apiTransformers\n );\n\n const result = await schemaExtractor.extract(component, {\n formatter,\n tsserverPath,\n contextPath,\n skipInternals,\n includeFiles,\n });\n if (shouldDisposeResourcesOnceDone) schemaExtractor.dispose();\n\n return result;\n } catch (err) {\n if (alwaysRunExtractor) throw err;\n const message = err instanceof Error ? err.message : String(err);\n this.logger.warn(\n `failed extracting schema for ${component.id.toString()}, falling back to artifacts. extractor error: ${message}`,\n err\n );\n }\n }\n\n // on scope get schema from builder api\n const schemaArtifact = await this.builder.getArtifactsVinylByAspectAndTaskName(\n component,\n SchemaAspect.id,\n SCHEMA_TASK_NAME\n );\n\n if (schemaArtifact.length === 0) {\n this.logger.debug(`no schema found for ${component.id.toString()}`);\n\n /**\n * return empty schema\n * when tag/snap without build\n * or backwards compatibility\n */\n return APISchema.empty(component.id as any);\n }\n\n const schemaJsonStr = schemaArtifact[0].contents.toString('utf-8');\n\n try {\n const schemaJson = JSON.parse(schemaJsonStr);\n return this.getSchemaFromObject(schemaJson);\n } catch (e) {\n if (e instanceof SyntaxError) {\n this.logger.error(e.message);\n throw new Error(`Invalid schema.json for ${component.id}`);\n }\n throw e;\n }\n }\n\n getSchemaFromObject(obj: Record<string, any>): APISchema {\n return APISchema.fromObject(obj);\n }\n\n async getSchemaFromRemote(id: string): Promise<APISchema> {\n const isPattern = ['*', ',', '!', '$', ':'].some((char) => id.includes(char));\n if (isPattern) {\n throw new Error(`remote schema command doesn't support pattern matching. please use a specific component id`);\n }\n const getId = async () => {\n if (!id.startsWith('@')) return id;\n if (!this.workspace) throw new Error(`Please provide a component ID. The ${id} recognized as a package name.`);\n const compId = await this.workspace.resolveComponentIdFromPackageName(id, true);\n return compId.toString();\n };\n const compIdStr = await getId();\n const http = await Http.connect(SYMPHONY_GRAPHQL, CENTRAL_BIT_HUB_NAME);\n const response = await http.getSchema(compIdStr);\n return this.getSchemaFromObject(response);\n }\n\n /**\n * register a new parser.\n */\n registerParser(parser: Parser): SchemaMain {\n this.parserSlot.register(parser);\n return this;\n }\n\n async calcSchemaData(): Promise<{ disabled?: boolean }> {\n return {\n disabled: this.config.disabled,\n };\n }\n\n getSchemaData(component: Component) {\n return component.state.aspects.get(SchemaAspect.id)?.data;\n }\n\n isSchemaTaskDisabled(component: Component) {\n return this.getSchemaData(component)?.disabled;\n }\n\n static runtime = MainRuntime;\n static dependencies = [\n EnvsAspect,\n CLIAspect,\n ComponentAspect,\n GraphqlAspect,\n LoggerAspect,\n BuilderAspect,\n WorkspaceAspect,\n ScopeAspect,\n ];\n static slots = [Slot.withType<Parser>()];\n\n static defaultConfig = {\n defaultParser: 'teambit.typescript/typescript',\n disabled: false,\n };\n\n static async provider(\n [envs, cli, component, graphql, loggerMain, builder, workspace, scope]: [\n EnvsMain,\n CLIMain,\n ComponentMain,\n GraphqlMain,\n LoggerMain,\n BuilderMain,\n Workspace,\n ScopeMain,\n ],\n config: SchemaConfig,\n [parserSlot]: [ParserSlot]\n ) {\n const logger = loggerMain.createLogger(SchemaAspect.id);\n const schema = new SchemaMain(parserSlot, envs, config, builder, workspace, logger);\n const schemaTask = new SchemaTask(SchemaAspect.id, schema, logger);\n builder.registerBuildTasks([schemaTask]);\n cli.register(new SchemaCommand(schema, component, logger));\n graphql.register(() => schemaSchema(schema));\n envs.registerService(new SchemaService());\n if (workspace) {\n workspace.registerOnComponentLoad(async () => schema.calcSchemaData());\n }\n if (scope) {\n scope.registerOnCompAspectReCalc(async () => schema.calcSchemaData());\n }\n // register all default schema classes\n schema.registerSchemaClasses(() => Object.values(Schemas));\n\n return schema;\n }\n}\n\nSchemaAspect.addRuntime(SchemaMain);\n\nexport default SchemaMain;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_cli","data","require","_component","_harmony","_graphql","_envs","_logger","_semanticsEntities","_builder","_workspace","_scope","_legacy","_scope2","_semanticsEntities2","_schema","_schema2","_schemaDiff","_schema3","_schema4","_schema5","_defineProperty","e","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","SchemaMain","constructor","parserSlot","impactRuleSlot","envs","config","builder","workspace","logger","impactAssessor","getDefaultParser","get","defaultParser","registerSchemaClass","schema","SchemaRegistry","register","registerSchemaClasses","getSchemas","registerGetSchemas","parseModule","path","content","parsers","toArray","maybeParser","find","parser","match","extension","getSchemaExtractor","component","tsserverPath","contextPath","env","getEnv","Error","name","undefined","getSchema","shouldDisposeResourcesOnceDone","alwaysRunExtractor","skipInternals","schemaTransformers","apiTransformers","includeFiles","disabled","APISchema","empty","id","buildStatus","BuildStatus","Succeed","formatter","getFormatter","setKey","schemaExtractor","result","extract","dispose","err","message","warn","toString","schemaArtifact","getArtifactsVinylByAspectAndTaskName","SchemaAspect","SCHEMA_TASK_NAME","length","debug","schemaJsonStr","contents","schemaJson","JSON","parse","getSchemaFromObject","SyntaxError","error","obj","fromObject","getSchemaFromRemote","isPattern","some","char","includes","getId","startsWith","compId","resolveComponentIdFromPackageName","compIdStr","http","Http","connect","SYMPHONY_GRAPHQL","CENTRAL_BIT_HUB_NAME","response","registerParser","calcSchemaData","getSchemaData","state","aspects","registerImpactRules","rules","getImpactAssessor","registerRules","values","flat","computeAPIDiff","baseComp","compareComp","baseSchema","compareSchema","Promise","all","assessor","isSchemaTaskDisabled","provider","cli","graphql","loggerMain","scope","createLogger","ImpactAssessor","registerDefaultRules","DEFAULT_IMPACT_RULES","schemaTask","SchemaTask","registerBuildTasks","schemaCmd","SchemaCommand","commands","SchemaDiffCommand","schemaSchema","registerService","SchemaService","registerOnComponentLoad","registerOnCompAspectReCalc","Schemas","exports","MainRuntime","EnvsAspect","CLIAspect","ComponentAspect","GraphqlAspect","LoggerAspect","BuilderAspect","WorkspaceAspect","ScopeAspect","Slot","withType","addRuntime","_default","default"],"sources":["schema.main.runtime.ts"],"sourcesContent":["import type { CLIMain } from '@teambit/cli';\nimport { MainRuntime, CLIAspect } from '@teambit/cli';\nimport type { Component, ComponentMain } from '@teambit/component';\nimport { ComponentAspect } from '@teambit/component';\nimport type { SlotRegistry } from '@teambit/harmony';\nimport { Slot } from '@teambit/harmony';\nimport type { GraphqlMain } from '@teambit/graphql';\nimport { GraphqlAspect } from '@teambit/graphql';\nimport type { EnvsMain } from '@teambit/envs';\nimport { EnvsAspect } from '@teambit/envs';\nimport type { Logger, LoggerMain } from '@teambit/logger';\nimport { LoggerAspect } from '@teambit/logger';\nimport type { PrettierConfigMutator } from '@teambit/defender.prettier.config-mutator';\nimport type { Export, SchemaNodeConstructor } from '@teambit/semantics.entities.semantic-schema';\nimport { APISchema, Schemas, SchemaRegistry } from '@teambit/semantics.entities.semantic-schema';\nimport type { BuilderMain } from '@teambit/builder';\nimport { BuilderAspect } from '@teambit/builder';\nimport type { Workspace } from '@teambit/workspace';\nimport { WorkspaceAspect } from '@teambit/workspace';\nimport type { ScopeMain } from '@teambit/scope';\nimport { ScopeAspect } from '@teambit/scope';\nimport type { Formatter } from '@teambit/formatter';\nimport type { SchemaNodeTransformer, SchemaTransformer } from '@teambit/typescript';\nimport { BuildStatus, CENTRAL_BIT_HUB_NAME, SYMPHONY_GRAPHQL } from '@teambit/legacy.constants';\nimport { Http } from '@teambit/scope.network';\nimport type { ImpactRule, APIDiffResult } from '@teambit/semantics.entities.semantic-schema-diff';\nimport { ImpactAssessor, DEFAULT_IMPACT_RULES, computeAPIDiff } from '@teambit/semantics.entities.semantic-schema-diff';\nimport type { Parser } from './parser';\nimport { SchemaAspect } from './schema.aspect';\nimport type { SchemaExtractor } from './schema-extractor';\nimport { SchemaCommand } from './schema.cmd';\nimport { SchemaDiffCommand } from './schema-diff.cmd';\nimport { schemaSchema } from './schema.graphql';\nimport { SchemaTask, SCHEMA_TASK_NAME } from './schema.task';\nimport { SchemaService } from './schema.service';\n\nexport type ParserSlot = SlotRegistry<Parser>;\nexport type ImpactRuleSlot = SlotRegistry<ImpactRule[]>;\n\nexport type SchemaConfig = {\n /**\n * default parser\n */\n defaultParser: string;\n /**\n * disable extracting schema\n */\n disabled?: boolean;\n};\n\n/**\n * extension for extracting component schemas.\n */\nexport class SchemaMain {\n constructor(\n /**\n * parsers slot.\n */\n private parserSlot: ParserSlot,\n\n /**\n * impact rules slot — other aspects register custom rules via registerImpactRules().\n */\n private impactRuleSlot: ImpactRuleSlot,\n\n private envs: EnvsMain,\n\n private config: SchemaConfig,\n\n private builder: BuilderMain,\n\n private workspace: Workspace,\n\n private logger: Logger,\n\n private impactAssessor: ImpactAssessor\n ) {}\n\n /**\n * get the default parser.\n */\n getDefaultParser(): Parser {\n return this.parserSlot.get(this.config.defaultParser) as Parser;\n }\n\n /**\n * @deprecated use registerSchemaClasses instead\n * registerSchemaClasses is better for performance as it lazy-loads the schemas.\n */\n registerSchemaClass(schema: SchemaNodeConstructor) {\n SchemaRegistry.register(schema);\n }\n\n registerSchemaClasses(getSchemas: () => SchemaNodeConstructor[]) {\n SchemaRegistry.registerGetSchemas(getSchemas);\n }\n\n /**\n * parse a module into a component schema.\n */\n parseModule(path: string, content?: string): Export[] {\n const parsers = this.parserSlot.toArray();\n let maybeParser = parsers.find(([, parser]) => {\n const match = path.match(parser.extension);\n return match;\n });\n\n if (!maybeParser) {\n maybeParser = [this.config.defaultParser, this.getDefaultParser()];\n }\n\n const [, parser] = maybeParser;\n return parser.parseModule(path, content);\n }\n\n getSchemaExtractor(component: Component, tsserverPath?: string, contextPath?: string): SchemaExtractor {\n const env = this.envs.getEnv(component).env;\n if (typeof env.getSchemaExtractor === 'undefined') {\n throw new Error(`No SchemaExtractor defined for ${env.name}`);\n }\n\n return env.getSchemaExtractor(undefined, tsserverPath, contextPath);\n }\n\n /**\n * get a schema of a component.\n * @param component target component.\n * @param shouldDisposeResourcesOnceDone for long-running processes, such as bit-start/bit-watch, this is not\n * relevant. for calling the API only to get a schema for one component, this is needed to ensure the ts-server is\n * not kept alive. otherwise, the process will never end.\n *\n */\n async getSchema(\n component: Component,\n shouldDisposeResourcesOnceDone = false,\n alwaysRunExtractor = false,\n tsserverPath?: string,\n contextPath?: string,\n skipInternals?: boolean,\n schemaTransformers?: SchemaTransformer[],\n apiTransformers?: SchemaNodeTransformer[],\n includeFiles?: string[]\n ): Promise<APISchema> {\n if (this.config.disabled) {\n return APISchema.empty(component.id as any);\n }\n\n if (alwaysRunExtractor || (this.workspace && component.buildStatus !== BuildStatus.Succeed)) {\n try {\n const env = this.envs.getEnv(component).env;\n // types need to be fixed\n const formatter: Formatter | undefined = env.getFormatter?.(null, [\n (config: PrettierConfigMutator) => {\n config.setKey('parser', 'typescript');\n return config;\n },\n ]);\n if (typeof env.getSchemaExtractor === 'undefined') {\n throw new Error(`No SchemaExtractor defined for ${env.name}`);\n }\n const schemaExtractor: SchemaExtractor = env.getSchemaExtractor(\n undefined,\n tsserverPath,\n contextPath,\n schemaTransformers,\n apiTransformers\n );\n\n const result = await schemaExtractor.extract(component, {\n formatter,\n tsserverPath,\n contextPath,\n skipInternals,\n includeFiles,\n });\n if (shouldDisposeResourcesOnceDone) schemaExtractor.dispose();\n\n return result;\n } catch (err) {\n if (alwaysRunExtractor) throw err;\n const message = err instanceof Error ? err.message : String(err);\n this.logger.warn(\n `failed extracting schema for ${component.id.toString()}, falling back to artifacts. extractor error: ${message}`,\n err\n );\n }\n }\n\n // on scope get schema from builder api\n const schemaArtifact = await this.builder.getArtifactsVinylByAspectAndTaskName(\n component,\n SchemaAspect.id,\n SCHEMA_TASK_NAME\n );\n\n if (schemaArtifact.length === 0) {\n this.logger.debug(`no schema found for ${component.id.toString()}`);\n\n /**\n * return empty schema\n * when tag/snap without build\n * or backwards compatibility\n */\n return APISchema.empty(component.id as any);\n }\n\n const schemaJsonStr = schemaArtifact[0].contents.toString('utf-8');\n\n try {\n const schemaJson = JSON.parse(schemaJsonStr);\n return this.getSchemaFromObject(schemaJson);\n } catch (e) {\n if (e instanceof SyntaxError) {\n this.logger.error(e.message);\n throw new Error(`Invalid schema.json for ${component.id}`);\n }\n throw e;\n }\n }\n\n getSchemaFromObject(obj: Record<string, any>): APISchema {\n return APISchema.fromObject(obj);\n }\n\n async getSchemaFromRemote(id: string): Promise<APISchema> {\n const isPattern = ['*', ',', '!', '$', ':'].some((char) => id.includes(char));\n if (isPattern) {\n throw new Error(`remote schema command doesn't support pattern matching. please use a specific component id`);\n }\n const getId = async () => {\n if (!id.startsWith('@')) return id;\n if (!this.workspace) throw new Error(`Please provide a component ID. The ${id} recognized as a package name.`);\n const compId = await this.workspace.resolveComponentIdFromPackageName(id, true);\n return compId.toString();\n };\n const compIdStr = await getId();\n const http = await Http.connect(SYMPHONY_GRAPHQL, CENTRAL_BIT_HUB_NAME);\n const response = await http.getSchema(compIdStr);\n return this.getSchemaFromObject(response);\n }\n\n /**\n * register a new parser.\n */\n registerParser(parser: Parser): SchemaMain {\n this.parserSlot.register(parser);\n return this;\n }\n\n async calcSchemaData(): Promise<{ disabled?: boolean }> {\n return {\n disabled: this.config.disabled,\n };\n }\n\n getSchemaData(component: Component) {\n return component.state.aspects.get(SchemaAspect.id)?.data;\n }\n\n /**\n * Register custom impact rules for API diff assessment.\n * Custom rules take priority over default rules.\n * This allows environments to customize what constitutes a breaking change.\n */\n registerImpactRules(rules: ImpactRule[]): void {\n this.impactRuleSlot.register(rules);\n }\n\n /**\n * Get the ImpactAssessor with default + all registered custom rules from the slot.\n */\n getImpactAssessor(): ImpactAssessor {\n this.impactAssessor.registerRules(this.impactRuleSlot.values().flat());\n return this.impactAssessor;\n }\n\n /**\n * Compute the semantic API diff between two component versions.\n */\n async computeAPIDiff(baseComp: Component, compareComp: Component): Promise<APIDiffResult | null> {\n try {\n const [baseSchema, compareSchema] = await Promise.all([this.getSchema(baseComp), this.getSchema(compareComp)]);\n const assessor = this.getImpactAssessor();\n return computeAPIDiff(baseSchema, compareSchema, assessor);\n } catch (err: any) {\n this.logger.warn(`failed computing API diff: ${err.message}`);\n return null;\n }\n }\n\n isSchemaTaskDisabled(component: Component) {\n return this.getSchemaData(component)?.disabled;\n }\n\n static runtime = MainRuntime;\n static dependencies = [\n EnvsAspect,\n CLIAspect,\n ComponentAspect,\n GraphqlAspect,\n LoggerAspect,\n BuilderAspect,\n WorkspaceAspect,\n ScopeAspect,\n ];\n static slots = [Slot.withType<Parser>(), Slot.withType<ImpactRule[]>()];\n\n static defaultConfig = {\n defaultParser: 'teambit.typescript/typescript',\n disabled: false,\n };\n\n static async provider(\n [envs, cli, component, graphql, loggerMain, builder, workspace, scope]: [\n EnvsMain,\n CLIMain,\n ComponentMain,\n GraphqlMain,\n LoggerMain,\n BuilderMain,\n Workspace,\n ScopeMain,\n ],\n config: SchemaConfig,\n [parserSlot, impactRuleSlot]: [ParserSlot, ImpactRuleSlot]\n ) {\n const logger = loggerMain.createLogger(SchemaAspect.id);\n const impactAssessor = new ImpactAssessor();\n impactAssessor.registerDefaultRules(DEFAULT_IMPACT_RULES);\n const schema = new SchemaMain(parserSlot, impactRuleSlot, envs, config, builder, workspace, logger, impactAssessor);\n const schemaTask = new SchemaTask(SchemaAspect.id, schema, logger);\n builder.registerBuildTasks([schemaTask]);\n const schemaCmd = new SchemaCommand(schema, component, logger);\n schemaCmd.commands = [new SchemaDiffCommand(schema, component, logger)];\n cli.register(schemaCmd);\n graphql.register(() => schemaSchema(schema));\n envs.registerService(new SchemaService());\n if (workspace) {\n workspace.registerOnComponentLoad(async () => schema.calcSchemaData());\n }\n if (scope) {\n scope.registerOnCompAspectReCalc(async () => schema.calcSchemaData());\n }\n // register all default schema classes\n schema.registerSchemaClasses(() => Object.values(Schemas));\n\n return schema;\n }\n}\n\nSchemaAspect.addRuntime(SchemaMain);\n\nexport default SchemaMain;\n"],"mappings":"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","ignoreList":[]}
|
package/dist/schema.spec.js
CHANGED
|
@@ -28,6 +28,13 @@ function _semanticsEntities() {
|
|
|
28
28
|
};
|
|
29
29
|
return data;
|
|
30
30
|
}
|
|
31
|
+
function _semanticsEntities2() {
|
|
32
|
+
const data = require("@teambit/semantics.entities.semantic-schema-diff");
|
|
33
|
+
_semanticsEntities2 = function () {
|
|
34
|
+
return data;
|
|
35
|
+
};
|
|
36
|
+
return data;
|
|
37
|
+
}
|
|
31
38
|
function _chaiSubset() {
|
|
32
39
|
const data = _interopRequireDefault(require("chai-subset"));
|
|
33
40
|
_chaiSubset = function () {
|
|
@@ -78,6 +85,11 @@ function _schema() {
|
|
|
78
85
|
return data;
|
|
79
86
|
}
|
|
80
87
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
88
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
89
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
90
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
91
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
92
|
+
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
81
93
|
(0, _chai().use)(_chaiSubset().default);
|
|
82
94
|
describe('SchemaAspect', function () {
|
|
83
95
|
this.timeout(0);
|
|
@@ -149,7 +161,103 @@ describe('SchemaAspect', function () {
|
|
|
149
161
|
});
|
|
150
162
|
});
|
|
151
163
|
});
|
|
164
|
+
describe('schema diff', () => {
|
|
165
|
+
let diffResult;
|
|
166
|
+
before(async () => {
|
|
167
|
+
// Use v1 schema from the golden file (already validated by getSchema test)
|
|
168
|
+
const v1JsonPath = _path().default.join(getMockDir(), 'button-schemas.json');
|
|
169
|
+
const v1Json = _fsExtra().default.readJsonSync(v1JsonPath);
|
|
170
|
+
const baseSchema = schema.getSchemaFromObject(v1Json);
|
|
171
|
+
|
|
172
|
+
// Extract v2 schema from the button-v2 fixture
|
|
173
|
+
const {
|
|
174
|
+
workspacePath
|
|
175
|
+
} = workspaceData;
|
|
176
|
+
const compDirV2 = _path().default.join(workspacePath, 'button-v2');
|
|
177
|
+
const srcV2 = _path().default.join(getMockDir(), 'button-v2');
|
|
178
|
+
await _fsExtra().default.copy(srcV2, compDirV2);
|
|
179
|
+
const harmony = await (0, _harmonyTesting().loadManyAspects)([_workspace().WorkspaceAspect, _schema().SchemaAspect, _tracker().TrackerAspect], workspacePath);
|
|
180
|
+
const ws = harmony.get(_workspace().WorkspaceAspect.id);
|
|
181
|
+
const tracker = harmony.get(_tracker().TrackerAspect.id);
|
|
182
|
+
await tracker.track({
|
|
183
|
+
rootDir: compDirV2,
|
|
184
|
+
defaultScope: 'org.scope'
|
|
185
|
+
});
|
|
186
|
+
await ws.bitMap.write();
|
|
187
|
+
const schemaMain = harmony.get(_schema().SchemaAspect.id);
|
|
188
|
+
const compIdV2 = await ws.resolveComponentId('button-v2');
|
|
189
|
+
const compV2 = await ws.get(compIdV2);
|
|
190
|
+
const compareSchema = await schemaMain.getSchema(compV2, true);
|
|
191
|
+
|
|
192
|
+
// Compute diff using impact assessor from the aspect
|
|
193
|
+
const assessor = schemaMain.getImpactAssessor();
|
|
194
|
+
diffResult = (0, _semanticsEntities2().computeAPIDiff)(baseSchema, compareSchema, assessor);
|
|
195
|
+
});
|
|
196
|
+
it('should produce a diff result matching the golden file', () => {
|
|
197
|
+
const result = serializeDiffResult(diffResult);
|
|
198
|
+
const expectedJsonPath = _path().default.join(getMockDir(), 'button-diff.json');
|
|
199
|
+
// uncomment the next line temporarily to sync the expected json with new diff changes
|
|
200
|
+
// fs.outputFileSync(expectedJsonPath, JSON.stringify(result, undefined, 2));
|
|
201
|
+
const expectedJson = _fsExtra().default.readJsonSync(expectedJsonPath);
|
|
202
|
+
(0, _chai().expect)(result).to.containSubset(expectedJson);
|
|
203
|
+
});
|
|
204
|
+
it('should detect changes', () => {
|
|
205
|
+
(0, _chai().expect)(diffResult.hasChanges).to.be.true;
|
|
206
|
+
});
|
|
207
|
+
it('should detect added exports', () => {
|
|
208
|
+
(0, _chai().expect)(diffResult.added).to.be.greaterThan(0);
|
|
209
|
+
const addedNames = diffResult.changes.filter(c => c.status === 'ADDED').map(c => c.exportName);
|
|
210
|
+
(0, _chai().expect)(addedNames).to.include('newUtility');
|
|
211
|
+
});
|
|
212
|
+
it('should detect modified exports', () => {
|
|
213
|
+
(0, _chai().expect)(diffResult.modified).to.be.greaterThan(0);
|
|
214
|
+
});
|
|
215
|
+
it('should correctly assess impact of non-breaking additions', () => {
|
|
216
|
+
const added = diffResult.changes.find(c => c.exportName === 'newUtility');
|
|
217
|
+
(0, _chai().expect)(added?.impact).to.equal('NON_BREAKING');
|
|
218
|
+
});
|
|
219
|
+
});
|
|
152
220
|
});
|
|
221
|
+
|
|
222
|
+
/**
|
|
223
|
+
* Serialize a diff result for golden file comparison.
|
|
224
|
+
* Strips raw schema nodes (baseNode/compareNode) since they're large and tested separately.
|
|
225
|
+
*/
|
|
226
|
+
function serializeDiffResult(diff) {
|
|
227
|
+
const serializeChange = change => _objectSpread(_objectSpread(_objectSpread({
|
|
228
|
+
status: change.status,
|
|
229
|
+
visibility: change.visibility,
|
|
230
|
+
impact: change.impact,
|
|
231
|
+
exportName: change.exportName,
|
|
232
|
+
schemaType: change.schemaType
|
|
233
|
+
}, change.baseSignature ? {
|
|
234
|
+
baseSignature: change.baseSignature
|
|
235
|
+
} : {}), change.compareSignature ? {
|
|
236
|
+
compareSignature: change.compareSignature
|
|
237
|
+
} : {}), change.changes && change.changes.length > 0 ? {
|
|
238
|
+
details: change.changes.map(d => _objectSpread(_objectSpread({
|
|
239
|
+
changeKind: d.changeKind,
|
|
240
|
+
description: d.description,
|
|
241
|
+
impact: d.impact
|
|
242
|
+
}, d.from !== undefined ? {
|
|
243
|
+
from: d.from
|
|
244
|
+
} : {}), d.to !== undefined ? {
|
|
245
|
+
to: d.to
|
|
246
|
+
} : {}))
|
|
247
|
+
} : {});
|
|
248
|
+
return {
|
|
249
|
+
hasChanges: diff.hasChanges,
|
|
250
|
+
impact: diff.impact,
|
|
251
|
+
added: diff.added,
|
|
252
|
+
removed: diff.removed,
|
|
253
|
+
modified: diff.modified,
|
|
254
|
+
breaking: diff.breaking,
|
|
255
|
+
nonBreaking: diff.nonBreaking,
|
|
256
|
+
patch: diff.patch,
|
|
257
|
+
publicChanges: diff.publicChanges.map(serializeChange),
|
|
258
|
+
internalChanges: diff.internalChanges.map(serializeChange)
|
|
259
|
+
};
|
|
260
|
+
}
|
|
153
261
|
function getCurrentDir() {
|
|
154
262
|
const currentDir = __dirname;
|
|
155
263
|
if (currentDir.endsWith(`${_path().default.sep}dist`)) return currentDir.slice(0, -5);
|