@teambit/schema 0.0.1079 → 0.0.1081

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.
@@ -1,6 +1,6 @@
1
- import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.semantics_schema@0.0.1079/dist/schema.composition.js';
2
- import * as compositions_1 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.semantics_schema@0.0.1079/dist/mock/button/button.composition.js';
3
- import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.semantics_schema@0.0.1079/dist/schema.docs.mdx';
1
+ import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.semantics_schema@0.0.1081/dist/schema.composition.js';
2
+ import * as compositions_1 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.semantics_schema@0.0.1081/dist/mock/button/button.composition.js';
3
+ import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.semantics_schema@0.0.1081/dist/schema.docs.mdx';
4
4
 
5
5
  export const compositions = [compositions_0, compositions_1];
6
6
  export const overview = [overview_0];
@@ -42,7 +42,7 @@ export declare class SchemaMain {
42
42
  * parse a module into a component schema.
43
43
  */
44
44
  parseModule(path: string): Export[];
45
- getSchemaExtractor(component: Component): SchemaExtractor;
45
+ getSchemaExtractor(component: Component, tsserverPath?: string, contextPath?: string): SchemaExtractor;
46
46
  /**
47
47
  * get a schema of a component.
48
48
  * @param component target component.
@@ -50,7 +50,7 @@ export declare class SchemaMain {
50
50
  * relevant. for calling the API only to get a schema for one component, this is needed to ensure the ts-server is
51
51
  * not kept alive. otherwise, the process will never end.
52
52
  */
53
- getSchema(component: Component, shouldDisposeResourcesOnceDone?: boolean, alwaysRunExtractor?: boolean, path?: string): Promise<APISchema>;
53
+ getSchema(component: Component, shouldDisposeResourcesOnceDone?: boolean, alwaysRunExtractor?: boolean, tsserverPath?: string, contextPath?: string): Promise<APISchema>;
54
54
  getSchemaFromObject(obj: Record<string, any>): APISchema;
55
55
  /**
56
56
  * register a new parser.
@@ -152,12 +152,12 @@ class SchemaMain {
152
152
  const [, parser] = maybeParser;
153
153
  return parser.parseModule(path);
154
154
  }
155
- getSchemaExtractor(component) {
155
+ getSchemaExtractor(component, tsserverPath, contextPath) {
156
156
  const env = this.envs.getEnv(component).env;
157
157
  if (typeof env.getSchemaExtractor === 'undefined') {
158
158
  throw new Error(`No SchemaExtractor defined for ${env.name}`);
159
159
  }
160
- return env.getSchemaExtractor();
160
+ return env.getSchemaExtractor(undefined, tsserverPath, contextPath);
161
161
  }
162
162
 
163
163
  /**
@@ -167,7 +167,7 @@ class SchemaMain {
167
167
  * relevant. for calling the API only to get a schema for one component, this is needed to ensure the ts-server is
168
168
  * not kept alive. otherwise, the process will never end.
169
169
  */
170
- async getSchema(component, shouldDisposeResourcesOnceDone = false, alwaysRunExtractor = false, path) {
170
+ async getSchema(component, shouldDisposeResourcesOnceDone = false, alwaysRunExtractor = false, tsserverPath, contextPath) {
171
171
  if (alwaysRunExtractor || this.workspace) {
172
172
  var _env$getFormatter;
173
173
  const env = this.envs.getEnv(component).env;
@@ -179,7 +179,7 @@ class SchemaMain {
179
179
  if (typeof env.getSchemaExtractor === 'undefined') {
180
180
  throw new Error(`No SchemaExtractor defined for ${env.name}`);
181
181
  }
182
- const schemaExtractor = env.getSchemaExtractor(undefined, path);
182
+ const schemaExtractor = env.getSchemaExtractor(undefined, tsserverPath, contextPath);
183
183
  const result = await schemaExtractor.extract(component, formatter);
184
184
  if (shouldDisposeResourcesOnceDone) schemaExtractor.dispose();
185
185
  return result;
@@ -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","shouldDisposeResourcesOnceDone","alwaysRunExtractor","formatter","getFormatter","setKey","schemaExtractor","undefined","result","extract","dispose","schemaArtifact","getArtifactsVinylByAspectAndTaskName","SchemaAspect","id","SCHEMA_TASK_NAME","length","debug","toString","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","registerService","SchemaService","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 { PrettierConfigMutator } from '@teambit/defender.prettier.config-mutator';\nimport { APISchema, Export } from '@teambit/semantics.entities.semantic-schema';\nimport { BuilderMain, BuilderAspect } from '@teambit/builder';\nimport { Workspace, WorkspaceAspect } from '@teambit/workspace';\nimport { Formatter } from '@teambit/formatter';\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';\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\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(\n component: Component,\n shouldDisposeResourcesOnceDone = false,\n alwaysRunExtractor = false,\n path?: string\n ): Promise<APISchema> {\n if (alwaysRunExtractor || this.workspace) {\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(undefined, path);\n\n const result = await schemaExtractor.extract(component, formatter);\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 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);\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 envs.registerService(new SchemaService());\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","tsserverPath","contextPath","env","getEnv","Error","name","undefined","getSchema","shouldDisposeResourcesOnceDone","alwaysRunExtractor","formatter","getFormatter","setKey","schemaExtractor","result","extract","dispose","schemaArtifact","getArtifactsVinylByAspectAndTaskName","SchemaAspect","id","SCHEMA_TASK_NAME","length","debug","toString","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","registerService","SchemaService","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 { PrettierConfigMutator } from '@teambit/defender.prettier.config-mutator';\nimport { APISchema, Export } from '@teambit/semantics.entities.semantic-schema';\nimport { BuilderMain, BuilderAspect } from '@teambit/builder';\nimport { Workspace, WorkspaceAspect } from '@teambit/workspace';\nimport { Formatter } from '@teambit/formatter';\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';\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\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, 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 async getSchema(\n component: Component,\n shouldDisposeResourcesOnceDone = false,\n alwaysRunExtractor = false,\n tsserverPath?: string,\n contextPath?: string\n ): Promise<APISchema> {\n if (alwaysRunExtractor || this.workspace) {\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(undefined, tsserverPath, contextPath);\n\n const result = await schemaExtractor.extract(component, formatter);\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 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);\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 envs.registerService(new SchemaService());\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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"}
@@ -64,11 +64,11 @@ class SchemaTask {
64
64
  const startTime = Date.now();
65
65
  const capsules = context.capsuleNetwork.seedersCapsules;
66
66
  const schemaResult = [];
67
- // persist schema json
67
+ const rootDir = context.capsuleNetwork.capsulesRootDir;
68
68
  await (0, _pMapSeries().default)(capsules, async capsule => {
69
69
  const component = capsule.component;
70
70
  try {
71
- const schema = await this.schema.getSchema(component, true, true, capsule.path);
71
+ const schema = await this.schema.getSchema(component, false, true, rootDir, capsule.path);
72
72
  const schemaObj = schema.toObject();
73
73
  await _fsExtra().default.outputFile((0, _path().join)(capsule.path, getSchemaArtifactPath()), JSON.stringify(schemaObj, null, 2));
74
74
  schemaResult.push({
@@ -1 +1 @@
1
- {"version":3,"names":["SCHEMA_TASK_NAME","SCHEMA_ARTIFACT_NAME","SchemaTask","constructor","aspectId","schema","logger","execute","context","startTime","Date","now","capsules","capsuleNetwork","seedersCapsules","schemaResult","pMapSeries","capsule","component","getSchema","path","schemaObj","toObject","fs","outputFile","join","getSchemaArtifactPath","JSON","stringify","push","endTime","e","warn","id","toString","Error","warnings","message","artifacts","getSchemaArtifactDef","componentsResults","CAPSULE_ARTIFACTS_DIR","def","name","rootDir","globPatterns"],"sources":["schema.task.ts"],"sourcesContent":["import {\n BuildContext,\n BuiltTaskResult,\n BuildTask,\n TaskLocation,\n CAPSULE_ARTIFACTS_DIR,\n ComponentResult,\n ArtifactDefinition,\n} from '@teambit/builder';\nimport { Logger } from '@teambit/logger';\nimport fs from 'fs-extra';\nimport pMapSeries from 'p-map-series';\nimport { join } from 'path';\nimport { SchemaMain } from './schema.main.runtime';\n\nexport const SCHEMA_TASK_NAME = 'ExtractSchema';\nexport const SCHEMA_ARTIFACT_NAME = 'schema';\n\n/**\n * extract and persist the component schema as a json file\n */\nexport class SchemaTask implements BuildTask {\n readonly name = SCHEMA_TASK_NAME;\n readonly location: TaskLocation = 'end';\n readonly description = 'extract api schema for a set of components';\n\n constructor(readonly aspectId: string, private schema: SchemaMain, private logger: Logger) {}\n\n async execute(context: BuildContext): Promise<BuiltTaskResult> {\n const startTime = Date.now();\n const capsules = context.capsuleNetwork.seedersCapsules;\n const schemaResult: ComponentResult[] = [];\n // persist schema json\n await pMapSeries(capsules, async (capsule) => {\n const component = capsule.component;\n try {\n const schema = await this.schema.getSchema(component, true, true, capsule.path);\n const schemaObj = schema.toObject();\n await fs.outputFile(join(capsule.path, getSchemaArtifactPath()), JSON.stringify(schemaObj, null, 2));\n schemaResult.push({\n component,\n startTime,\n endTime: Date.now(),\n });\n } catch (e) {\n this.logger.warn(`failed extracting schema for ${component.id.toString()}`);\n /**\n * @todo once schema extractor is more stable change this to an error\n */\n if (e instanceof Error) {\n schemaResult.push({\n component,\n startTime,\n endTime: Date.now(),\n warnings: [e.message],\n });\n }\n }\n });\n return {\n artifacts: [getSchemaArtifactDef()],\n componentsResults: schemaResult,\n };\n }\n}\n\nexport function getSchemaArtifactPath() {\n return join(CAPSULE_ARTIFACTS_DIR, 'schema.json');\n}\n\nexport function getSchemaArtifactDef() {\n const def: ArtifactDefinition = {\n name: SCHEMA_ARTIFACT_NAME,\n rootDir: CAPSULE_ARTIFACTS_DIR,\n globPatterns: ['schema.json'],\n };\n\n return def;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAUA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAGO,MAAMA,gBAAgB,GAAG,eAAe;AAAC;AACzC,MAAMC,oBAAoB,GAAG,QAAQ;;AAE5C;AACA;AACA;AAFA;AAGO,MAAMC,UAAU,CAAsB;EAK3CC,WAAW,CAAUC,QAAgB,EAAUC,MAAkB,EAAUC,MAAc,EAAE;IAAA,KAAtEF,QAAgB,GAAhBA,QAAgB;IAAA,KAAUC,MAAkB,GAAlBA,MAAkB;IAAA,KAAUC,MAAc,GAAdA,MAAc;IAAA,8CAJzEN,gBAAgB;IAAA,kDACE,KAAK;IAAA,qDAChB,4CAA4C;EAEyB;EAE5F,MAAMO,OAAO,CAACC,OAAqB,EAA4B;IAC7D,MAAMC,SAAS,GAAGC,IAAI,CAACC,GAAG,EAAE;IAC5B,MAAMC,QAAQ,GAAGJ,OAAO,CAACK,cAAc,CAACC,eAAe;IACvD,MAAMC,YAA+B,GAAG,EAAE;IAC1C;IACA,MAAM,IAAAC,qBAAU,EAACJ,QAAQ,EAAE,MAAOK,OAAO,IAAK;MAC5C,MAAMC,SAAS,GAAGD,OAAO,CAACC,SAAS;MACnC,IAAI;QACF,MAAMb,MAAM,GAAG,MAAM,IAAI,CAACA,MAAM,CAACc,SAAS,CAACD,SAAS,EAAE,IAAI,EAAE,IAAI,EAAED,OAAO,CAACG,IAAI,CAAC;QAC/E,MAAMC,SAAS,GAAGhB,MAAM,CAACiB,QAAQ,EAAE;QACnC,MAAMC,kBAAE,CAACC,UAAU,CAAC,IAAAC,YAAI,EAACR,OAAO,CAACG,IAAI,EAAEM,qBAAqB,EAAE,CAAC,EAAEC,IAAI,CAACC,SAAS,CAACP,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACpGN,YAAY,CAACc,IAAI,CAAC;UAChBX,SAAS;UACTT,SAAS;UACTqB,OAAO,EAAEpB,IAAI,CAACC,GAAG;QACnB,CAAC,CAAC;MACJ,CAAC,CAAC,OAAOoB,CAAC,EAAE;QACV,IAAI,CAACzB,MAAM,CAAC0B,IAAI,CAAE,gCAA+Bd,SAAS,CAACe,EAAE,CAACC,QAAQ,EAAG,EAAC,CAAC;QAC3E;AACR;AACA;QACQ,IAAIH,CAAC,YAAYI,KAAK,EAAE;UACtBpB,YAAY,CAACc,IAAI,CAAC;YAChBX,SAAS;YACTT,SAAS;YACTqB,OAAO,EAAEpB,IAAI,CAACC,GAAG,EAAE;YACnByB,QAAQ,EAAE,CAACL,CAAC,CAACM,OAAO;UACtB,CAAC,CAAC;QACJ;MACF;IACF,CAAC,CAAC;IACF,OAAO;MACLC,SAAS,EAAE,CAACC,oBAAoB,EAAE,CAAC;MACnCC,iBAAiB,EAAEzB;IACrB,CAAC;EACH;AACF;AAAC;AAEM,SAASW,qBAAqB,GAAG;EACtC,OAAO,IAAAD,YAAI,EAACgB,gCAAqB,EAAE,aAAa,CAAC;AACnD;AAEO,SAASF,oBAAoB,GAAG;EACrC,MAAMG,GAAuB,GAAG;IAC9BC,IAAI,EAAE1C,oBAAoB;IAC1B2C,OAAO,EAAEH,gCAAqB;IAC9BI,YAAY,EAAE,CAAC,aAAa;EAC9B,CAAC;EAED,OAAOH,GAAG;AACZ"}
1
+ {"version":3,"names":["SCHEMA_TASK_NAME","SCHEMA_ARTIFACT_NAME","SchemaTask","constructor","aspectId","schema","logger","execute","context","startTime","Date","now","capsules","capsuleNetwork","seedersCapsules","schemaResult","rootDir","capsulesRootDir","pMapSeries","capsule","component","getSchema","path","schemaObj","toObject","fs","outputFile","join","getSchemaArtifactPath","JSON","stringify","push","endTime","e","warn","id","toString","Error","warnings","message","artifacts","getSchemaArtifactDef","componentsResults","CAPSULE_ARTIFACTS_DIR","def","name","globPatterns"],"sources":["schema.task.ts"],"sourcesContent":["import {\n BuildContext,\n BuiltTaskResult,\n BuildTask,\n TaskLocation,\n CAPSULE_ARTIFACTS_DIR,\n ComponentResult,\n ArtifactDefinition,\n} from '@teambit/builder';\nimport { Logger } from '@teambit/logger';\nimport fs from 'fs-extra';\nimport pMapSeries from 'p-map-series';\nimport { join } from 'path';\nimport { SchemaMain } from './schema.main.runtime';\n\nexport const SCHEMA_TASK_NAME = 'ExtractSchema';\nexport const SCHEMA_ARTIFACT_NAME = 'schema';\n\n/**\n * extract and persist the component schema as a json file\n */\nexport class SchemaTask implements BuildTask {\n readonly name = SCHEMA_TASK_NAME;\n readonly location: TaskLocation = 'end';\n readonly description = 'extract api schema for a set of components';\n\n constructor(readonly aspectId: string, private schema: SchemaMain, private logger: Logger) {}\n\n async execute(context: BuildContext): Promise<BuiltTaskResult> {\n const startTime = Date.now();\n const capsules = context.capsuleNetwork.seedersCapsules;\n const schemaResult: ComponentResult[] = [];\n const rootDir = context.capsuleNetwork.capsulesRootDir;\n await pMapSeries(capsules, async (capsule) => {\n const component = capsule.component;\n try {\n const schema = await this.schema.getSchema(component, false, true, rootDir, capsule.path);\n const schemaObj = schema.toObject();\n await fs.outputFile(join(capsule.path, getSchemaArtifactPath()), JSON.stringify(schemaObj, null, 2));\n schemaResult.push({\n component,\n startTime,\n endTime: Date.now(),\n });\n } catch (e) {\n this.logger.warn(`failed extracting schema for ${component.id.toString()}`);\n /**\n * @todo once schema extractor is more stable change this to an error\n */\n if (e instanceof Error) {\n schemaResult.push({\n component,\n startTime,\n endTime: Date.now(),\n warnings: [e.message],\n });\n }\n }\n });\n return {\n artifacts: [getSchemaArtifactDef()],\n componentsResults: schemaResult,\n };\n }\n}\n\nexport function getSchemaArtifactPath() {\n return join(CAPSULE_ARTIFACTS_DIR, 'schema.json');\n}\n\nexport function getSchemaArtifactDef() {\n const def: ArtifactDefinition = {\n name: SCHEMA_ARTIFACT_NAME,\n rootDir: CAPSULE_ARTIFACTS_DIR,\n globPatterns: ['schema.json'],\n };\n\n return def;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAUA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAGO,MAAMA,gBAAgB,GAAG,eAAe;AAAC;AACzC,MAAMC,oBAAoB,GAAG,QAAQ;;AAE5C;AACA;AACA;AAFA;AAGO,MAAMC,UAAU,CAAsB;EAK3CC,WAAW,CAAUC,QAAgB,EAAUC,MAAkB,EAAUC,MAAc,EAAE;IAAA,KAAtEF,QAAgB,GAAhBA,QAAgB;IAAA,KAAUC,MAAkB,GAAlBA,MAAkB;IAAA,KAAUC,MAAc,GAAdA,MAAc;IAAA,8CAJzEN,gBAAgB;IAAA,kDACE,KAAK;IAAA,qDAChB,4CAA4C;EAEyB;EAE5F,MAAMO,OAAO,CAACC,OAAqB,EAA4B;IAC7D,MAAMC,SAAS,GAAGC,IAAI,CAACC,GAAG,EAAE;IAC5B,MAAMC,QAAQ,GAAGJ,OAAO,CAACK,cAAc,CAACC,eAAe;IACvD,MAAMC,YAA+B,GAAG,EAAE;IAC1C,MAAMC,OAAO,GAAGR,OAAO,CAACK,cAAc,CAACI,eAAe;IACtD,MAAM,IAAAC,qBAAU,EAACN,QAAQ,EAAE,MAAOO,OAAO,IAAK;MAC5C,MAAMC,SAAS,GAAGD,OAAO,CAACC,SAAS;MACnC,IAAI;QACF,MAAMf,MAAM,GAAG,MAAM,IAAI,CAACA,MAAM,CAACgB,SAAS,CAACD,SAAS,EAAE,KAAK,EAAE,IAAI,EAAEJ,OAAO,EAAEG,OAAO,CAACG,IAAI,CAAC;QACzF,MAAMC,SAAS,GAAGlB,MAAM,CAACmB,QAAQ,EAAE;QACnC,MAAMC,kBAAE,CAACC,UAAU,CAAC,IAAAC,YAAI,EAACR,OAAO,CAACG,IAAI,EAAEM,qBAAqB,EAAE,CAAC,EAAEC,IAAI,CAACC,SAAS,CAACP,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACpGR,YAAY,CAACgB,IAAI,CAAC;UAChBX,SAAS;UACTX,SAAS;UACTuB,OAAO,EAAEtB,IAAI,CAACC,GAAG;QACnB,CAAC,CAAC;MACJ,CAAC,CAAC,OAAOsB,CAAC,EAAE;QACV,IAAI,CAAC3B,MAAM,CAAC4B,IAAI,CAAE,gCAA+Bd,SAAS,CAACe,EAAE,CAACC,QAAQ,EAAG,EAAC,CAAC;QAC3E;AACR;AACA;QACQ,IAAIH,CAAC,YAAYI,KAAK,EAAE;UACtBtB,YAAY,CAACgB,IAAI,CAAC;YAChBX,SAAS;YACTX,SAAS;YACTuB,OAAO,EAAEtB,IAAI,CAACC,GAAG,EAAE;YACnB2B,QAAQ,EAAE,CAACL,CAAC,CAACM,OAAO;UACtB,CAAC,CAAC;QACJ;MACF;IACF,CAAC,CAAC;IACF,OAAO;MACLC,SAAS,EAAE,CAACC,oBAAoB,EAAE,CAAC;MACnCC,iBAAiB,EAAE3B;IACrB,CAAC;EACH;AACF;AAAC;AAEM,SAASa,qBAAqB,GAAG;EACtC,OAAO,IAAAD,YAAI,EAACgB,gCAAqB,EAAE,aAAa,CAAC;AACnD;AAEO,SAASF,oBAAoB,GAAG;EACrC,MAAMG,GAAuB,GAAG;IAC9BC,IAAI,EAAE5C,oBAAoB;IAC1Be,OAAO,EAAE2B,gCAAqB;IAC9BG,YAAY,EAAE,CAAC,aAAa;EAC9B,CAAC;EAED,OAAOF,GAAG;AACZ"}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/schema",
3
- "version": "0.0.1079",
3
+ "version": "0.0.1081",
4
4
  "homepage": "https://bit.cloud/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.1079"
9
+ "version": "0.0.1081"
10
10
  },
11
11
  "dependencies": {
12
12
  "p-map-series": "2.1.0",
@@ -18,15 +18,15 @@
18
18
  "@teambit/harmony": "0.4.6",
19
19
  "@teambit/base-react.navigation.link": "2.0.27",
20
20
  "@teambit/semantics.entities.semantic-schema": "0.0.53",
21
- "@teambit/envs": "0.0.1079",
22
- "@teambit/component": "0.0.1079",
23
- "@teambit/formatter": "0.0.630",
21
+ "@teambit/envs": "0.0.1081",
22
+ "@teambit/component": "0.0.1081",
23
+ "@teambit/formatter": "0.0.632",
24
24
  "@teambit/cli": "0.0.727",
25
25
  "@teambit/logger": "0.0.820",
26
- "@teambit/builder": "0.0.1079",
26
+ "@teambit/builder": "0.0.1081",
27
27
  "@teambit/defender.prettier.config-mutator": "0.0.90",
28
- "@teambit/graphql": "0.0.1079",
29
- "@teambit/workspace": "0.0.1079"
28
+ "@teambit/graphql": "0.0.1081",
29
+ "@teambit/workspace": "0.0.1081"
30
30
  },
31
31
  "devDependencies": {
32
32
  "@types/react": "^17.0.8",
@@ -41,7 +41,7 @@
41
41
  "@types/testing-library__jest-dom": "5.9.5",
42
42
  "@teambit/component-id": "0.0.427",
43
43
  "@teambit/harmony.testing.load-aspect": "0.0.90",
44
- "@teambit/tracker": "0.0.110",
44
+ "@teambit/tracker": "0.0.112",
45
45
  "@teambit/workspace.testing.mock-workspace": "0.0.14"
46
46
  },
47
47
  "peerDependencies": {