@teambit/schema 0.0.888 → 0.0.890

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.
@@ -1764,4 +1764,4 @@
1764
1764
  "name": "button",
1765
1765
  "scope": "org.scope"
1766
1766
  }
1767
- }
1767
+ }
@@ -5,4 +5,11 @@ export interface SchemaExtractor {
5
5
  * extract a semantic schema from a component.
6
6
  */
7
7
  extract(component: Component): Promise<APISchema>;
8
+ /**
9
+ * release resources if no schemas are needed for this process.
10
+ * for typescript, this will kill the tsserver process.
11
+ * for performance reasons, this is not automatically run after "extract". otherwise, running extract on multiple
12
+ * components will be very slow.
13
+ */
14
+ dispose(): void;
8
15
  }
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["schema-extractor.ts"],"sourcesContent":["import { Component } from '@teambit/component';\nimport { APISchema } from '@teambit/semantics.entities.semantic-schema';\n\nexport interface SchemaExtractor {\n /**\n * extract a semantic schema from a component.\n */\n extract(component: Component): Promise<APISchema>;\n}\n"],"mappings":""}
1
+ {"version":3,"names":[],"sources":["schema-extractor.ts"],"sourcesContent":["import { Component } from '@teambit/component';\nimport { APISchema } from '@teambit/semantics.entities.semantic-schema';\n\nexport interface SchemaExtractor {\n /**\n * extract a semantic schema from a component.\n */\n extract(component: Component): Promise<APISchema>;\n\n /**\n * release resources if no schemas are needed for this process.\n * for typescript, this will kill the tsserver process.\n * for performance reasons, this is not automatically run after \"extract\". otherwise, running extract on multiple\n * components will be very slow.\n */\n dispose(): void;\n}\n"],"mappings":""}
@@ -46,8 +46,11 @@ export declare class SchemaMain {
46
46
  /**
47
47
  * get a schema of a component.
48
48
  * @param component target component.
49
+ * @param shouldDisposeResourcesOnceDone for long-running processes, such as bit-start/bit-watch, this is not
50
+ * relevant. for calling the API only to get a schema for one component, this is needed to ensure the ts-server is
51
+ * not kept alive. otherwise, the process will never end.
49
52
  */
50
- getSchema(component: Component): Promise<APISchema>;
53
+ getSchema(component: Component, shouldDisposeResourcesOnceDone?: boolean): Promise<APISchema>;
51
54
  getSchemaFromObject(obj: Record<string, any>): APISchema;
52
55
  /**
53
56
  * register a new parser.
@@ -156,8 +156,11 @@ class SchemaMain {
156
156
  /**
157
157
  * get a schema of a component.
158
158
  * @param component target component.
159
+ * @param shouldDisposeResourcesOnceDone for long-running processes, such as bit-start/bit-watch, this is not
160
+ * relevant. for calling the API only to get a schema for one component, this is needed to ensure the ts-server is
161
+ * not kept alive. otherwise, the process will never end.
159
162
  */
160
- async getSchema(component) {
163
+ async getSchema(component, shouldDisposeResourcesOnceDone = false) {
161
164
  this.logger.debug(`getSchema of ${component.id.toString()}`);
162
165
 
163
166
  // if on workspace get schema from ts server
@@ -167,7 +170,9 @@ class SchemaMain {
167
170
  throw new Error(`No SchemaExtractor defined for ${env.name}`);
168
171
  }
169
172
  const schemaExtractor = env.getSchemaExtractor();
170
- return schemaExtractor.extract(component);
173
+ const result = await schemaExtractor.extract(component);
174
+ if (shouldDisposeResourcesOnceDone) schemaExtractor.dispose();
175
+ return result;
171
176
  }
172
177
 
173
178
  // on scope get schema from builder api
@@ -1 +1 @@
1
- {"version":3,"names":["SchemaMain","constructor","parserSlot","envs","config","builder","workspace","logger","getDefaultParser","get","defaultParser","parseModule","path","parsers","toArray","maybeParser","find","parser","match","extension","getSchemaExtractor","component","env","getEnv","Error","name","getSchema","debug","id","toString","schemaExtractor","extract","schemaArtifact","getArtifactsVinylByAspectAndTaskName","SchemaAspect","SCHEMA_TASK_NAME","length","APISchema","empty","schemaJsonStr","contents","schemaJson","JSON","parse","getSchemaFromObject","e","SyntaxError","error","message","obj","fromObject","registerParser","register","provider","cli","graphql","loggerMain","createLogger","schema","schemaTask","SchemaTask","registerBuildTasks","SchemaCommand","schemaSchema","MainRuntime","EnvsAspect","CLIAspect","ComponentAspect","GraphqlAspect","LoggerAspect","BuilderAspect","WorkspaceAspect","Slot","withType","addRuntime"],"sources":["schema.main.runtime.ts"],"sourcesContent":["import { MainRuntime, CLIMain, CLIAspect } from '@teambit/cli';\nimport ComponentAspect, { Component, ComponentMain } from '@teambit/component';\nimport { Slot, SlotRegistry } from '@teambit/harmony';\nimport GraphqlAspect, { GraphqlMain } from '@teambit/graphql';\nimport { EnvsAspect, EnvsMain } from '@teambit/envs';\nimport { Logger, LoggerAspect, LoggerMain } from '@teambit/logger';\nimport { APISchema, Export } from '@teambit/semantics.entities.semantic-schema';\nimport { BuilderMain, BuilderAspect } from '@teambit/builder';\nimport { Workspace, WorkspaceAspect } from '@teambit/workspace';\nimport { Parser } from './parser';\nimport { SchemaAspect } from './schema.aspect';\nimport { SchemaExtractor } from './schema-extractor';\nimport { SchemaCommand } from './schema.cmd';\nimport { schemaSchema } from './schema.graphql';\nimport { SchemaTask, SCHEMA_TASK_NAME } from './schema.task';\n\nexport type ParserSlot = SlotRegistry<Parser>;\n\nexport type SchemaConfig = {\n /**\n * default parser\n */\n defaultParser: string;\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 * parse a module into a component schema.\n */\n parseModule(path: 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);\n }\n\n getSchemaExtractor(component: Component) {\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();\n }\n\n /**\n * get a schema of a component.\n * @param component target component.\n */\n async getSchema(component: Component): Promise<APISchema> {\n this.logger.debug(`getSchema of ${component.id.toString()}`);\n\n // if on workspace get schema from ts server\n if (this.workspace) {\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 const schemaExtractor: SchemaExtractor = env.getSchemaExtractor();\n return schemaExtractor.extract(component);\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 /**\n * return empty schema\n * when tag/snap without build\n * or backwards compatibility\n */\n return APISchema.empty(component.id);\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 /**\n * register a new parser.\n */\n registerParser(parser: Parser): SchemaMain {\n this.parserSlot.register(parser);\n return this;\n }\n\n static runtime = MainRuntime;\n static dependencies = [\n EnvsAspect,\n CLIAspect,\n ComponentAspect,\n GraphqlAspect,\n LoggerAspect,\n BuilderAspect,\n WorkspaceAspect,\n ];\n static slots = [Slot.withType<Parser>()];\n\n static defaultConfig = {\n defaultParser: 'teambit.typescript/typescript',\n };\n\n static async provider(\n [envs, cli, component, graphql, loggerMain, builder, workspace]: [\n EnvsMain,\n CLIMain,\n ComponentMain,\n GraphqlMain,\n LoggerMain,\n BuilderMain,\n Workspace\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\n // workspace.onComponentLoad(async (component) => {\n // const apiSchema = await schema.getSchema(component);\n // return {};\n // });\n\n return schema;\n }\n}\n\nSchemaAspect.addRuntime(SchemaMain);\n\nexport default SchemaMain;\n"],"mappings":"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"}
1
+ {"version":3,"names":["SchemaMain","constructor","parserSlot","envs","config","builder","workspace","logger","getDefaultParser","get","defaultParser","parseModule","path","parsers","toArray","maybeParser","find","parser","match","extension","getSchemaExtractor","component","env","getEnv","Error","name","getSchema","shouldDisposeResourcesOnceDone","debug","id","toString","schemaExtractor","result","extract","dispose","schemaArtifact","getArtifactsVinylByAspectAndTaskName","SchemaAspect","SCHEMA_TASK_NAME","length","APISchema","empty","schemaJsonStr","contents","schemaJson","JSON","parse","getSchemaFromObject","e","SyntaxError","error","message","obj","fromObject","registerParser","register","provider","cli","graphql","loggerMain","createLogger","schema","schemaTask","SchemaTask","registerBuildTasks","SchemaCommand","schemaSchema","MainRuntime","EnvsAspect","CLIAspect","ComponentAspect","GraphqlAspect","LoggerAspect","BuilderAspect","WorkspaceAspect","Slot","withType","addRuntime"],"sources":["schema.main.runtime.ts"],"sourcesContent":["import { MainRuntime, CLIMain, CLIAspect } from '@teambit/cli';\nimport ComponentAspect, { Component, ComponentMain } from '@teambit/component';\nimport { Slot, SlotRegistry } from '@teambit/harmony';\nimport GraphqlAspect, { GraphqlMain } from '@teambit/graphql';\nimport { EnvsAspect, EnvsMain } from '@teambit/envs';\nimport { Logger, LoggerAspect, LoggerMain } from '@teambit/logger';\nimport { APISchema, Export } from '@teambit/semantics.entities.semantic-schema';\nimport { BuilderMain, BuilderAspect } from '@teambit/builder';\nimport { Workspace, WorkspaceAspect } from '@teambit/workspace';\nimport { Parser } from './parser';\nimport { SchemaAspect } from './schema.aspect';\nimport { SchemaExtractor } from './schema-extractor';\nimport { SchemaCommand } from './schema.cmd';\nimport { schemaSchema } from './schema.graphql';\nimport { SchemaTask, SCHEMA_TASK_NAME } from './schema.task';\n\nexport type ParserSlot = SlotRegistry<Parser>;\n\nexport type SchemaConfig = {\n /**\n * default parser\n */\n defaultParser: string;\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 * parse a module into a component schema.\n */\n parseModule(path: 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);\n }\n\n getSchemaExtractor(component: Component) {\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();\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 async getSchema(component: Component, shouldDisposeResourcesOnceDone = false): Promise<APISchema> {\n this.logger.debug(`getSchema of ${component.id.toString()}`);\n\n // if on workspace get schema from ts server\n if (this.workspace) {\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 const schemaExtractor: SchemaExtractor = env.getSchemaExtractor();\n\n const result = await schemaExtractor.extract(component);\n if (shouldDisposeResourcesOnceDone) schemaExtractor.dispose();\n\n return result;\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 /**\n * return empty schema\n * when tag/snap without build\n * or backwards compatibility\n */\n return APISchema.empty(component.id);\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 /**\n * register a new parser.\n */\n registerParser(parser: Parser): SchemaMain {\n this.parserSlot.register(parser);\n return this;\n }\n\n static runtime = MainRuntime;\n static dependencies = [\n EnvsAspect,\n CLIAspect,\n ComponentAspect,\n GraphqlAspect,\n LoggerAspect,\n BuilderAspect,\n WorkspaceAspect,\n ];\n static slots = [Slot.withType<Parser>()];\n\n static defaultConfig = {\n defaultParser: 'teambit.typescript/typescript',\n };\n\n static async provider(\n [envs, cli, component, graphql, loggerMain, builder, workspace]: [\n EnvsMain,\n CLIMain,\n ComponentMain,\n GraphqlMain,\n LoggerMain,\n BuilderMain,\n Workspace\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\n // workspace.onComponentLoad(async (component) => {\n // const apiSchema = await schema.getSchema(component);\n // return {};\n // });\n\n return schema;\n }\n}\n\nSchemaAspect.addRuntime(SchemaMain);\n\nexport default SchemaMain;\n"],"mappings":"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"}
@@ -16,6 +16,13 @@ function _fsExtra() {
16
16
  };
17
17
  return data;
18
18
  }
19
+ function _chai() {
20
+ const data = _interopRequireWildcard(require("chai"));
21
+ _chai = function () {
22
+ return data;
23
+ };
24
+ return data;
25
+ }
19
26
  function _semanticsEntities() {
20
27
  const data = require("@teambit/semantics.entities.semantic-schema");
21
28
  _semanticsEntities = function () {
@@ -23,6 +30,13 @@ function _semanticsEntities() {
23
30
  };
24
31
  return data;
25
32
  }
33
+ function _chaiSubset() {
34
+ const data = _interopRequireDefault(require("chai-subset"));
35
+ _chaiSubset = function () {
36
+ return data;
37
+ };
38
+ return data;
39
+ }
26
40
  function _harmonyTesting() {
27
41
  const data = require("@teambit/harmony.testing.load-aspect");
28
42
  _harmonyTesting = function () {
@@ -58,11 +72,15 @@ function _() {
58
72
  };
59
73
  return data;
60
74
  }
75
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
76
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
77
+ _chai().default.use(_chaiSubset().default);
61
78
  describe('SchemaAspect', function () {
79
+ this.timeout(0);
62
80
  let schema;
63
81
  let workspace;
64
82
  let workspaceData;
65
- beforeAll(async () => {
83
+ before(async () => {
66
84
  workspaceData = (0, _workspaceTesting().mockWorkspace)();
67
85
  const {
68
86
  workspacePath
@@ -71,12 +89,12 @@ describe('SchemaAspect', function () {
71
89
  console.log('workspace created at ', workspacePath);
72
90
  schema = await (0, _harmonyTesting().loadAspect)(_().SchemaAspect, workspacePath);
73
91
  });
74
- afterAll(async () => {
92
+ after(async () => {
75
93
  await (0, _workspaceTesting().destroyWorkspace)(workspaceData);
76
94
  });
77
95
  describe('getSchema()', () => {
78
96
  let apiSchema;
79
- beforeAll(async () => {
97
+ before(async () => {
80
98
  const {
81
99
  workspacePath
82
100
  } = workspaceData;
@@ -92,7 +110,7 @@ describe('SchemaAspect', function () {
92
110
  schema = await (0, _harmonyTesting().loadAspect)(_().SchemaAspect, workspacePath);
93
111
  const compId = await workspace.resolveComponentId('button');
94
112
  const comp = await workspace.get(compId);
95
- apiSchema = await schema.getSchema(comp);
113
+ apiSchema = await schema.getSchema(comp, true);
96
114
  });
97
115
  it('should be able to generate JSON object with all schemas', async () => {
98
116
  const results = apiSchema.toObject();
@@ -101,7 +119,7 @@ describe('SchemaAspect', function () {
101
119
  // fs.outputFileSync(expectedJsonPath, JSON.stringify(results, undefined, 2));
102
120
  const expectedJson = _fsExtra().default.readJsonSync(expectedJsonPath);
103
121
  // @ts-ignore it exists on Jest. for some reason ts assumes this is Jasmine.
104
- expect(results).toMatchObject(expectedJson);
122
+ (0, _chai().expect)(results).to.to.containSubset(expectedJson);
105
123
  });
106
124
  });
107
125
  describe('getSchemaFromObject', () => {
@@ -109,19 +127,19 @@ describe('SchemaAspect', function () {
109
127
  const jsonPath = _path().default.join(getMockDir(), 'button-schemas.json');
110
128
  const json = _fsExtra().default.readJsonSync(jsonPath);
111
129
  const apiSchema = schema.getSchemaFromObject(json);
112
- expect(apiSchema instanceof _semanticsEntities().APISchema).toBeTruthy();
113
- expect(apiSchema.componentId instanceof _componentId().ComponentID).toBeTruthy();
130
+ (0, _chai().expect)(apiSchema instanceof _semanticsEntities().APISchema).to.be.true;
131
+ (0, _chai().expect)(apiSchema.componentId instanceof _componentId().ComponentID).to.be.true;
114
132
  // @ts-ignore it exists on Jest. for some reason ts assumes this is Jasmine.
115
- expect(apiSchema.toObject()).toMatchObject(json);
133
+ (0, _chai().expect)(apiSchema.toObject()).to.containSubset(json);
116
134
  });
117
135
  it('should not throw when it does not recognize the schema', () => {
118
136
  const jsonPath = _path().default.join(getMockDir(), 'button-old-schema.json');
119
137
  const json = _fsExtra().default.readJsonSync(jsonPath);
120
138
  const apiSchema = schema.getSchemaFromObject(json);
121
- expect(apiSchema instanceof _semanticsEntities().APISchema).toBeTruthy();
122
- expect(apiSchema.module.exports[0] instanceof _semanticsEntities().UnknownSchema).toBeTruthy();
139
+ (0, _chai().expect)(apiSchema instanceof _semanticsEntities().APISchema).to.be.true;
140
+ (0, _chai().expect)(apiSchema.module.exports[0] instanceof _semanticsEntities().UnknownSchema).to.be.true;
123
141
  // @ts-ignore
124
- expect(apiSchema.module.exports[0].location).toMatchObject({
142
+ (0, _chai().expect)(apiSchema.module.exports[0].location).to.deep.equal({
125
143
  file: 'index.ts',
126
144
  line: 21,
127
145
  character: 14
@@ -1 +1 @@
1
- {"version":3,"names":["describe","schema","workspace","workspaceData","beforeAll","mockWorkspace","workspacePath","console","log","loadAspect","SchemaAspect","afterAll","destroyWorkspace","apiSchema","compDir","path","join","src","getMockDir","fs","copy","WorkspaceAspect","track","rootDir","defaultScope","bitMap","write","compId","resolveComponentId","comp","get","getSchema","it","results","toObject","expectedJsonPath","expectedJson","readJsonSync","expect","toMatchObject","jsonPath","json","getSchemaFromObject","APISchema","toBeTruthy","componentId","ComponentID","module","exports","UnknownSchema","location","file","line","character","getCurrentDir","currentDir","__dirname","endsWith","sep","slice"],"sources":["schema.spec.ts"],"sourcesContent":["import path from 'path';\nimport fs from 'fs-extra';\nimport { APISchema, UnknownSchema } from '@teambit/semantics.entities.semantic-schema';\nimport { loadAspect } from '@teambit/harmony.testing.load-aspect';\nimport { mockWorkspace, destroyWorkspace, WorkspaceData } from '@teambit/workspace.testing.mock-workspace';\nimport { ComponentID } from '@teambit/component-id';\nimport WorkspaceAspect, { Workspace } from '@teambit/workspace';\nimport { SchemaMain } from './schema.main.runtime';\nimport { SchemaAspect } from '.';\n\ndescribe('SchemaAspect', function () {\n let schema: SchemaMain;\n let workspace: Workspace;\n let workspaceData: WorkspaceData;\n beforeAll(async () => {\n workspaceData = mockWorkspace();\n const { workspacePath } = workspaceData;\n // eslint-disable-next-line no-console\n console.log('workspace created at ', workspacePath);\n schema = await loadAspect(SchemaAspect, workspacePath);\n });\n afterAll(async () => {\n await destroyWorkspace(workspaceData);\n });\n describe('getSchema()', () => {\n let apiSchema: APISchema;\n beforeAll(async () => {\n const { workspacePath } = workspaceData;\n const compDir = path.join(workspacePath, 'button');\n const src = path.join(getMockDir(), 'button');\n await fs.copy(src, compDir);\n workspace = await loadAspect(WorkspaceAspect, workspacePath);\n await workspace.track({ rootDir: compDir, defaultScope: 'org.scope' });\n await workspace.bitMap.write();\n schema = await loadAspect(SchemaAspect, workspacePath);\n const compId = await workspace.resolveComponentId('button');\n const comp = await workspace.get(compId);\n apiSchema = await schema.getSchema(comp);\n });\n it('should be able to generate JSON object with all schemas', async () => {\n const results = apiSchema.toObject();\n const expectedJsonPath = path.join(getMockDir(), 'button-schemas.json');\n // uncomment the next line temporarily to sync the expected json with new schema changes\n // fs.outputFileSync(expectedJsonPath, JSON.stringify(results, undefined, 2));\n const expectedJson = fs.readJsonSync(expectedJsonPath);\n // @ts-ignore it exists on Jest. for some reason ts assumes this is Jasmine.\n expect(results).toMatchObject(expectedJson);\n });\n });\n describe('getSchemaFromObject', () => {\n it('should be able to deserialize an JSON object to SchemaNode instances', () => {\n const jsonPath = path.join(getMockDir(), 'button-schemas.json');\n const json = fs.readJsonSync(jsonPath);\n const apiSchema = schema.getSchemaFromObject(json);\n expect(apiSchema instanceof APISchema).toBeTruthy();\n expect(apiSchema.componentId instanceof ComponentID).toBeTruthy();\n // @ts-ignore it exists on Jest. for some reason ts assumes this is Jasmine.\n expect(apiSchema.toObject()).toMatchObject(json);\n });\n it('should not throw when it does not recognize the schema', () => {\n const jsonPath = path.join(getMockDir(), 'button-old-schema.json');\n const json = fs.readJsonSync(jsonPath);\n const apiSchema = schema.getSchemaFromObject(json);\n expect(apiSchema instanceof APISchema).toBeTruthy();\n expect(apiSchema.module.exports[0] instanceof UnknownSchema).toBeTruthy();\n // @ts-ignore\n expect(apiSchema.module.exports[0].location).toMatchObject({ file: 'index.ts', line: 21, character: 14 });\n });\n });\n});\n\nfunction getCurrentDir() {\n const currentDir = __dirname;\n if (currentDir.endsWith(`${path.sep}dist`)) return currentDir.slice(0, -5);\n return currentDir;\n}\n\nfunction getMockDir() {\n return path.join(getCurrentDir(), 'mock');\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["chai","use","chaiSubset","describe","timeout","schema","workspace","workspaceData","before","mockWorkspace","workspacePath","console","log","loadAspect","SchemaAspect","after","destroyWorkspace","apiSchema","compDir","path","join","src","getMockDir","fs","copy","WorkspaceAspect","track","rootDir","defaultScope","bitMap","write","compId","resolveComponentId","comp","get","getSchema","it","results","toObject","expectedJsonPath","expectedJson","readJsonSync","expect","to","containSubset","jsonPath","json","getSchemaFromObject","APISchema","be","true","componentId","ComponentID","module","exports","UnknownSchema","location","deep","equal","file","line","character","getCurrentDir","currentDir","__dirname","endsWith","sep","slice"],"sources":["schema.spec.ts"],"sourcesContent":["import path from 'path';\nimport fs from 'fs-extra';\nimport chai, { expect } from 'chai';\nimport { APISchema, UnknownSchema } from '@teambit/semantics.entities.semantic-schema';\nimport chaiSubset from 'chai-subset';\nimport { loadAspect } from '@teambit/harmony.testing.load-aspect';\nimport { mockWorkspace, destroyWorkspace, WorkspaceData } from '@teambit/workspace.testing.mock-workspace';\nimport { ComponentID } from '@teambit/component-id';\nimport WorkspaceAspect, { Workspace } from '@teambit/workspace';\nimport { SchemaMain } from './schema.main.runtime';\nimport { SchemaAspect } from '.';\n\nchai.use(chaiSubset);\n\ndescribe('SchemaAspect', function () {\n this.timeout(0);\n let schema: SchemaMain;\n let workspace: Workspace;\n let workspaceData: WorkspaceData;\n before(async () => {\n workspaceData = mockWorkspace();\n const { workspacePath } = workspaceData;\n // eslint-disable-next-line no-console\n console.log('workspace created at ', workspacePath);\n schema = await loadAspect(SchemaAspect, workspacePath);\n });\n after(async () => {\n await destroyWorkspace(workspaceData);\n });\n describe('getSchema()', () => {\n let apiSchema: APISchema;\n before(async () => {\n const { workspacePath } = workspaceData;\n const compDir = path.join(workspacePath, 'button');\n const src = path.join(getMockDir(), 'button');\n await fs.copy(src, compDir);\n workspace = await loadAspect(WorkspaceAspect, workspacePath);\n await workspace.track({ rootDir: compDir, defaultScope: 'org.scope' });\n await workspace.bitMap.write();\n schema = await loadAspect(SchemaAspect, workspacePath);\n const compId = await workspace.resolveComponentId('button');\n const comp = await workspace.get(compId);\n apiSchema = await schema.getSchema(comp, true);\n });\n it('should be able to generate JSON object with all schemas', async () => {\n const results = apiSchema.toObject();\n const expectedJsonPath = path.join(getMockDir(), 'button-schemas.json');\n // uncomment the next line temporarily to sync the expected json with new schema changes\n // fs.outputFileSync(expectedJsonPath, JSON.stringify(results, undefined, 2));\n const expectedJson = fs.readJsonSync(expectedJsonPath);\n // @ts-ignore it exists on Jest. for some reason ts assumes this is Jasmine.\n expect(results).to.to.containSubset(expectedJson);\n });\n });\n describe('getSchemaFromObject', () => {\n it('should be able to deserialize an JSON object to SchemaNode instances', () => {\n const jsonPath = path.join(getMockDir(), 'button-schemas.json');\n const json = fs.readJsonSync(jsonPath);\n const apiSchema = schema.getSchemaFromObject(json);\n expect(apiSchema instanceof APISchema).to.be.true;\n expect(apiSchema.componentId instanceof ComponentID).to.be.true;\n // @ts-ignore it exists on Jest. for some reason ts assumes this is Jasmine.\n expect(apiSchema.toObject()).to.containSubset(json);\n });\n it('should not throw when it does not recognize the schema', () => {\n const jsonPath = path.join(getMockDir(), 'button-old-schema.json');\n const json = fs.readJsonSync(jsonPath);\n const apiSchema = schema.getSchemaFromObject(json);\n expect(apiSchema instanceof APISchema).to.be.true;\n expect(apiSchema.module.exports[0] instanceof UnknownSchema).to.be.true;\n // @ts-ignore\n expect(apiSchema.module.exports[0].location).to.deep.equal({ file: 'index.ts', line: 21, character: 14 });\n });\n });\n});\n\nfunction getCurrentDir() {\n const currentDir = __dirname;\n if (currentDir.endsWith(`${path.sep}dist`)) return currentDir.slice(0, -5);\n return currentDir;\n}\n\nfunction getMockDir() {\n return path.join(getCurrentDir(), 'mock');\n}\n"],"mappings":"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"}
@@ -1764,4 +1764,4 @@
1764
1764
  "name": "button",
1765
1765
  "scope": "org.scope"
1766
1766
  }
1767
- }
1767
+ }
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/schema",
3
- "version": "0.0.888",
3
+ "version": "0.0.890",
4
4
  "homepage": "https://bit.dev/teambit/semantics/schema",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "teambit.semantics",
8
8
  "name": "schema",
9
- "version": "0.0.888"
9
+ "version": "0.0.890"
10
10
  },
11
11
  "dependencies": {
12
12
  "p-map-series": "2.1.0",
@@ -17,29 +17,32 @@
17
17
  "core-js": "^3.0.0",
18
18
  "@teambit/harmony": "0.3.3",
19
19
  "@teambit/base-react.navigation.link": "2.0.27",
20
- "@teambit/semantics.entities.semantic-schema": "0.0.41",
21
- "@teambit/component": "0.0.888",
22
- "@teambit/cli": "0.0.595",
23
- "@teambit/logger": "0.0.688",
24
- "@teambit/builder": "0.0.888",
25
- "@teambit/envs": "0.0.888",
26
- "@teambit/graphql": "0.0.888",
27
- "@teambit/workspace": "0.0.888"
20
+ "@teambit/semantics.entities.semantic-schema": "0.0.43",
21
+ "@teambit/component": "0.0.890",
22
+ "@teambit/cli": "0.0.597",
23
+ "@teambit/logger": "0.0.690",
24
+ "@teambit/builder": "0.0.890",
25
+ "@teambit/envs": "0.0.890",
26
+ "@teambit/graphql": "0.0.890",
27
+ "@teambit/workspace": "0.0.890"
28
28
  },
29
29
  "devDependencies": {
30
30
  "@types/react": "^17.0.8",
31
+ "chai-subset": "1.6.0",
32
+ "chai": "4.3.0",
33
+ "@types/chai": "4.2.15",
31
34
  "@types/fs-extra": "9.0.7",
32
35
  "@types/mocha": "9.1.0",
33
36
  "@types/testing-library__jest-dom": "5.9.5",
34
37
  "@types/jest": "^26.0.0",
35
38
  "@types/react-dom": "^17.0.5",
36
39
  "@types/node": "12.20.4",
37
- "@teambit/component-id": "0.0.420",
40
+ "@teambit/component-id": "0.0.422",
38
41
  "@teambit/harmony.testing.load-aspect": "0.0.15",
39
42
  "@teambit/workspace.testing.mock-workspace": "0.0.14"
40
43
  },
41
44
  "peerDependencies": {
42
- "@teambit/legacy": "1.0.379",
45
+ "@teambit/legacy": "1.0.380",
43
46
  "react-dom": "^16.8.0 || ^17.0.0",
44
47
  "react": "^16.8.0 || ^17.0.0"
45
48
  },
@@ -1,6 +1,6 @@
1
- import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.semantics_schema@0.0.888/dist/schema.composition.js';
2
- import * as compositions_1 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.semantics_schema@0.0.888/dist/mock/button/button.composition.js';
3
- import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.semantics_schema@0.0.888/dist/schema.docs.mdx';
1
+ import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.semantics_schema@0.0.890/dist/schema.composition.js';
2
+ import * as compositions_1 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.semantics_schema@0.0.890/dist/mock/button/button.composition.js';
3
+ import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.semantics_schema@0.0.890/dist/schema.docs.mdx';
4
4
 
5
5
  export const compositions = [compositions_0, compositions_1];
6
6
  export const overview = [overview_0];