@teambit/schema 1.0.107 → 1.0.108

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,11 +1,11 @@
1
- import React from 'react';
2
- export declare const BasicButton: () => React.JSX.Element;
1
+ /// <reference types="react" />
2
+ export declare const BasicButton: () => JSX.Element;
3
3
  /**
4
4
  * example of passing a JSX Element as a parameter
5
5
  */
6
6
  export declare function Footer({ children }: {
7
- children?: React.JSX.Element | undefined;
8
- }): React.JSX.Element;
9
- export declare const ButtonWithCustomStyles: () => React.JSX.Element;
10
- export declare const ButtonWithIcon: () => React.JSX.Element;
11
- export declare const ButtonAsALink: () => React.JSX.Element;
7
+ children?: JSX.Element;
8
+ }): JSX.Element;
9
+ export declare const ButtonWithCustomStyles: () => JSX.Element;
10
+ export declare const ButtonWithIcon: () => JSX.Element;
11
+ export declare const ButtonAsALink: () => JSX.Element;
@@ -1,6 +1,6 @@
1
1
  import React, { ReactNode } from 'react';
2
- export declare type ButtonElementType = 'a' | 'button';
3
- export declare type ButtonProps = {
2
+ export type ButtonElementType = 'a' | 'button';
3
+ export type ButtonProps = {
4
4
  /**
5
5
  * children of the Button.
6
6
  */
@@ -14,7 +14,7 @@ export declare type ButtonProps = {
14
14
  */
15
15
  className?: string;
16
16
  } & React.ButtonHTMLAttributes<HTMLButtonElement>;
17
- export declare function Button(props: ButtonProps): React.JSX.Element;
17
+ export declare function Button(props: ButtonProps): JSX.Element;
18
18
  export declare class Bar {
19
19
  foo(): void;
20
20
  }
@@ -29,7 +29,6 @@ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol"
29
29
  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); } // @ts-ignore
30
30
  // import { useButton } from '@react-aria/button';
31
31
  function Button(props) {
32
- var _props$href, _props$href2;
33
32
  const ref = (0, _react().useRef)();
34
33
 
35
34
  // const { buttonProps } = useButton(
@@ -42,7 +41,7 @@ function Button(props) {
42
41
  // );
43
42
 
44
43
  const allProps = _objectSpread({}, props);
45
- const external = ((_props$href = props.href) === null || _props$href === void 0 ? void 0 : _props$href.startsWith('http:')) || ((_props$href2 = props.href) === null || _props$href2 === void 0 ? void 0 : _props$href2.startsWith('https:'));
44
+ const external = props.href?.startsWith('http:') || props.href?.startsWith('https:');
46
45
  return /*#__PURE__*/_react().default.createElement(_react().default.Fragment, null, !props.href ?
47
46
  /*#__PURE__*/
48
47
  // @ts-ignore
@@ -1 +1 @@
1
- {"version":3,"names":["_react","data","_interopRequireWildcard","require","_baseReactNavigation","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","_extends","assign","bind","target","arguments","length","source","key","apply","ownKeys","keys","getOwnPropertySymbols","o","filter","enumerable","push","_objectSpread","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","obj","value","_toPropertyKey","configurable","writable","_toPrimitive","String","Symbol","toPrimitive","TypeError","Number","Button","props","_props$href","_props$href2","ref","useRef","allProps","external","href","startsWith","createElement","Fragment","className","children","Link","Bar","foo","exports"],"sources":["button.tsx"],"sourcesContent":["import React, { ReactNode, useRef } from 'react';\n// @ts-ignore\n// import { useButton } from '@react-aria/button';\nimport { Link } from '@teambit/base-react.navigation.link';\n\nexport type ButtonElementType = 'a' | 'button';\n\nexport type ButtonProps = {\n /**\n * children of the Button.\n */\n children: ReactNode;\n\n /**\n * link to target page. once href is used, Button is considered an A tag.\n */\n href?: string;\n\n /**\n * class names to inject.\n */\n className?: string;\n} & React.ButtonHTMLAttributes<HTMLButtonElement>;\n\nexport function Button(props: ButtonProps) {\n const ref = useRef();\n\n // const { buttonProps } = useButton(\n // {\n // ...props,\n // elementType: props.href ? 'a' : undefined,\n // },\n // // @ts-ignore figure this out.\n // ref\n // );\n\n const allProps = {\n // ...buttonProps,\n ...props,\n };\n const external = props.href?.startsWith('http:') || props.href?.startsWith('https:');\n\n return (\n <>\n {!props.href ? (\n // @ts-ignore\n <button className={props.className} ref={ref} {...allProps}>\n {props.children}\n </button>\n ) : (\n // @ts-ignore\n <Link external={external} ref={ref} className={props.className} {...allProps}>\n {props.children}\n </Link>\n )}\n </>\n );\n}\n\nexport class Bar {\n foo() {}\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","data","_interopRequireWildcard","require","_baseReactNavigation","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","_extends","assign","bind","target","arguments","length","source","key","apply","ownKeys","keys","getOwnPropertySymbols","o","filter","enumerable","push","_objectSpread","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","obj","value","_toPropertyKey","configurable","writable","_toPrimitive","String","Symbol","toPrimitive","TypeError","Number","Button","props","ref","useRef","allProps","external","href","startsWith","createElement","Fragment","className","children","Link","Bar","foo","exports"],"sources":["button.tsx"],"sourcesContent":["import React, { ReactNode, useRef } from 'react';\n// @ts-ignore\n// import { useButton } from '@react-aria/button';\nimport { Link } from '@teambit/base-react.navigation.link';\n\nexport type ButtonElementType = 'a' | 'button';\n\nexport type ButtonProps = {\n /**\n * children of the Button.\n */\n children: ReactNode;\n\n /**\n * link to target page. once href is used, Button is considered an A tag.\n */\n href?: string;\n\n /**\n * class names to inject.\n */\n className?: string;\n} & React.ButtonHTMLAttributes<HTMLButtonElement>;\n\nexport function Button(props: ButtonProps) {\n const ref = useRef();\n\n // const { buttonProps } = useButton(\n // {\n // ...props,\n // elementType: props.href ? 'a' : undefined,\n // },\n // // @ts-ignore figure this out.\n // ref\n // );\n\n const allProps = {\n // ...buttonProps,\n ...props,\n };\n const external = props.href?.startsWith('http:') || props.href?.startsWith('https:');\n\n return (\n <>\n {!props.href ? (\n // @ts-ignore\n <button className={props.className} ref={ref} {...allProps}>\n {props.children}\n </button>\n ) : (\n // @ts-ignore\n <Link external={external} ref={ref} className={props.className} {...allProps}>\n {props.children}\n </Link>\n )}\n </>\n );\n}\n\nexport class Bar {\n foo() {}\n}\n"],"mappings":"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"}
@@ -24,7 +24,7 @@ declare class ClassSomething {
24
24
  set setter(a: boolean);
25
25
  }
26
26
  export { ClassSomething };
27
- export declare type IndexSig = {
27
+ export type IndexSig = {
28
28
  [key: string]: boolean;
29
29
  };
30
30
  export interface Hello {
@@ -36,7 +36,7 @@ declare const obj: {
36
36
  b: number;
37
37
  };
38
38
  export declare const a1: typeof obj;
39
- export declare type TypeOperator = keyof typeof obj;
39
+ export type TypeOperator = keyof typeof obj;
40
40
  declare class Bar {
41
41
  foo(): void;
42
42
  }
@@ -54,12 +54,12 @@ declare class T2 {
54
54
  }
55
55
  declare class T3<T, K> {
56
56
  }
57
- export declare type TypeRefWithArgs = T3<T1, T2>;
58
- export declare type ParenthesizedType = (T1 | T2)[];
57
+ export type TypeRefWithArgs = T3<T1, T2>;
58
+ export type ParenthesizedType = (T1 | T2)[];
59
59
  export declare function typePredicateFn(str: any): str is string;
60
60
  export declare function typePredicateNoTypeFn(condition: any, msg?: string): asserts condition;
61
61
  export declare function objectBindingElements({ prop }: {
62
- prop?: number | undefined;
62
+ prop?: number;
63
63
  }): Promise<number>;
64
64
  export declare function arrayBindingElements([prop]: [string]): Promise<string>;
65
65
  interface config {
@@ -68,7 +68,7 @@ interface config {
68
68
  b: boolean;
69
69
  };
70
70
  }
71
- export declare type IndexedAccessType = config['someField'];
71
+ export type IndexedAccessType = config['someField'];
72
72
  declare const computedName = "str";
73
73
  export interface ComputedNameWithType {
74
74
  [computedName]: boolean;
@@ -76,15 +76,15 @@ export interface ComputedNameWithType {
76
76
  export interface ComputedNameNoType {
77
77
  [computedName]: any;
78
78
  }
79
- declare type World1 = 'world1-a' | 'world1-b';
80
- declare type World2 = 'world2';
81
- export declare type templateLiteralType = `hello ${World1} hi ${World2}`;
79
+ type World1 = 'world1-a' | 'world1-b';
80
+ type World2 = 'world2';
81
+ export type templateLiteralType = `hello ${World1} hi ${World2}`;
82
82
  export interface CallSignatureWithTypeParams {
83
83
  <T>(a: string): T;
84
84
  }
85
85
  /**
86
86
  * Conditional Generic Type
87
87
  */
88
- export declare type If<T, U, Y, N> = T extends U ? Y : N;
88
+ export type If<T, U, Y, N> = T extends U ? Y : N;
89
89
  export declare function genericFunction<T>(a: T): <T_1>(a: T_1) => void;
90
90
  export declare const gfnc2: <T>(a: T) => void;
@@ -1,6 +1,6 @@
1
- import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.semantics_schema@1.0.107/dist/schema.composition.js';
2
- import * as compositions_1 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.semantics_schema@1.0.107/dist/mock/button/button.composition.js';
3
- import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.semantics_schema@1.0.107/dist/schema.docs.mdx';
1
+ import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.semantics_schema@1.0.108/dist/schema.composition.js';
2
+ import * as compositions_1 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.semantics_schema@1.0.108/dist/mock/button/button.composition.js';
3
+ import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.semantics_schema@1.0.108/dist/schema.docs.mdx';
4
4
 
5
5
  export const compositions = [compositions_0, compositions_1];
6
6
  export const overview = [overview_0];
@@ -14,7 +14,7 @@ export interface SchemaExtractor {
14
14
  */
15
15
  dispose(): void;
16
16
  }
17
- export declare type SchemaExtractorOptions = {
17
+ export type SchemaExtractorOptions = {
18
18
  formatter?: Formatter;
19
19
  tsserverPath?: string;
20
20
  contextPath?: string;
@@ -1,2 +1,2 @@
1
- import React from 'react';
2
- export declare const Logo: () => React.JSX.Element;
1
+ /// <reference types="react" />
2
+ export declare const Logo: () => JSX.Element;
@@ -9,8 +9,8 @@ import { BuilderMain } from '@teambit/builder';
9
9
  import { Workspace } from '@teambit/workspace';
10
10
  import { Parser } from './parser';
11
11
  import { SchemaExtractor } from './schema-extractor';
12
- export declare type ParserSlot = SlotRegistry<Parser>;
13
- export declare type SchemaConfig = {
12
+ export type ParserSlot = SlotRegistry<Parser>;
13
+ export type SchemaConfig = {
14
14
  /**
15
15
  * default parser
16
16
  */
@@ -166,10 +166,9 @@ class SchemaMain {
166
166
  */
167
167
  async getSchema(component, shouldDisposeResourcesOnceDone = false, alwaysRunExtractor = false, tsserverPath, contextPath) {
168
168
  if (alwaysRunExtractor || this.workspace) {
169
- var _env$getFormatter;
170
169
  const env = this.envs.getEnv(component).env;
171
170
  // types need to be fixed
172
- const formatter = (_env$getFormatter = env.getFormatter) === null || _env$getFormatter === void 0 ? void 0 : _env$getFormatter.call(env, null, [config => {
171
+ const formatter = env.getFormatter?.(null, [config => {
173
172
  config.setKey('parser', 'typescript');
174
173
  return config;
175
174
  }]);
@@ -1 +1 @@
1
- {"version":3,"names":["_cli","data","require","_component","_interopRequireDefault","_harmony","_graphql","_envs","_logger","_semanticsEntities","_builder","_workspace","_schema","_schema2","_schema3","_schema4","_schema5","obj","__esModule","default","_defineProperty","key","value","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","t","i","_toPrimitive","String","r","e","Symbol","toPrimitive","call","TypeError","Number","SchemaMain","constructor","parserSlot","envs","config","builder","workspace","logger","getDefaultParser","get","defaultParser","registerSchemaClass","schema","SchemaRegistry","register","parseModule","path","content","parsers","toArray","maybeParser","find","parser","match","extension","getSchemaExtractor","component","tsserverPath","contextPath","env","getEnv","Error","name","undefined","getSchema","shouldDisposeResourcesOnceDone","alwaysRunExtractor","_env$getFormatter","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","SyntaxError","error","message","fromObject","registerParser","provider","cli","graphql","loggerMain","createLogger","schemaTask","SchemaTask","registerBuildTasks","SchemaCommand","schemaSchema","registerService","SchemaService","values","Schemas","forEach","Schema","exports","MainRuntime","EnvsAspect","CLIAspect","ComponentAspect","GraphqlAspect","LoggerAspect","BuilderAspect","WorkspaceAspect","Slot","withType","addRuntime","_default"],"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 {\n APISchema,\n Export,\n Schemas,\n SchemaNodeConstructor,\n SchemaRegistry,\n} 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 registerSchemaClass(schema: SchemaNodeConstructor) {\n SchemaRegistry.register(schema);\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 ): 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, tsserverPath, contextPath });\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 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 /**\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 // register all default schema classes\n Object.values(Schemas).forEach((Schema) => {\n schema.registerSchemaClass(Schema);\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":["_cli","data","require","_component","_interopRequireDefault","_harmony","_graphql","_envs","_logger","_semanticsEntities","_builder","_workspace","_schema","_schema2","_schema3","_schema4","_schema5","obj","__esModule","default","_defineProperty","key","value","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","t","i","_toPrimitive","String","r","e","Symbol","toPrimitive","call","TypeError","Number","SchemaMain","constructor","parserSlot","envs","config","builder","workspace","logger","getDefaultParser","get","defaultParser","registerSchemaClass","schema","SchemaRegistry","register","parseModule","path","content","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","SyntaxError","error","message","fromObject","registerParser","provider","cli","graphql","loggerMain","createLogger","schemaTask","SchemaTask","registerBuildTasks","SchemaCommand","schemaSchema","registerService","SchemaService","values","Schemas","forEach","Schema","exports","MainRuntime","EnvsAspect","CLIAspect","ComponentAspect","GraphqlAspect","LoggerAspect","BuilderAspect","WorkspaceAspect","Slot","withType","addRuntime","_default"],"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 {\n APISchema,\n Export,\n Schemas,\n SchemaNodeConstructor,\n SchemaRegistry,\n} 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 registerSchemaClass(schema: SchemaNodeConstructor) {\n SchemaRegistry.register(schema);\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 ): 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, tsserverPath, contextPath });\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 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 /**\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 // register all default schema classes\n Object.values(Schemas).forEach((Schema) => {\n schema.registerSchemaClass(Schema);\n });\n\n return schema;\n }\n}\n\nSchemaAspect.addRuntime(SchemaMain);\n\nexport default SchemaMain;\n"],"mappings":"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"}
@@ -1,12 +1,12 @@
1
1
  import { EnvService, ExecutionContext, Env, EnvContext, ServiceTransformationMap } from '@teambit/envs';
2
2
  import { SchemaExtractor } from './schema-extractor';
3
- declare type SchemaTransformationMap = ServiceTransformationMap & {
3
+ type SchemaTransformationMap = ServiceTransformationMap & {
4
4
  getSchemaExtractor: () => SchemaExtractor;
5
5
  };
6
6
  export declare class SchemaService implements EnvService<{}> {
7
7
  name: string;
8
8
  run(context: ExecutionContext): Promise<{
9
- errors: never[];
9
+ errors: any[];
10
10
  context: ExecutionContext;
11
11
  }>;
12
12
  transform(env: Env, context: EnvContext): SchemaTransformationMap | undefined;
@@ -21,7 +21,7 @@ class SchemaService {
21
21
  }
22
22
  transform(env, context) {
23
23
  // Old env
24
- if (!(env !== null && env !== void 0 && env.schemaExtractor)) return undefined;
24
+ if (!env?.schemaExtractor) return undefined;
25
25
  return {
26
26
  getSchemaExtractor: () => env.schemaExtractor()(context)
27
27
  };
@@ -1 +1 @@
1
- {"version":3,"names":["SchemaService","constructor","_defineProperty","run","context","errors","transform","env","schemaExtractor","undefined","getSchemaExtractor","exports"],"sources":["schema.service.ts"],"sourcesContent":["import { EnvService, ExecutionContext, Env, EnvContext, ServiceTransformationMap } from '@teambit/envs';\nimport { SchemaExtractor } from './schema-extractor';\n// import { APISchema } from './schema';\n\ntype SchemaTransformationMap = ServiceTransformationMap & {\n getSchemaExtractor: () => SchemaExtractor;\n};\nexport class SchemaService implements EnvService<{}> {\n name = 'schema';\n\n async run(context: ExecutionContext) {\n return { errors: [], context };\n }\n\n transform(env: Env, context: EnvContext): SchemaTransformationMap | undefined {\n // Old env\n if (!env?.schemaExtractor) return undefined;\n return {\n getSchemaExtractor: () => env.schemaExtractor()(context),\n };\n }\n}\n"],"mappings":";;;;;;;;;AAEA;;AAKO,MAAMA,aAAa,CAA2B;EAAAC,YAAA;IAAAC,eAAA,eAC5C,QAAQ;EAAA;EAEf,MAAMC,GAAGA,CAACC,OAAyB,EAAE;IACnC,OAAO;MAAEC,MAAM,EAAE,EAAE;MAAED;IAAQ,CAAC;EAChC;EAEAE,SAASA,CAACC,GAAQ,EAAEH,OAAmB,EAAuC;IAC5E;IACA,IAAI,EAACG,GAAG,aAAHA,GAAG,eAAHA,GAAG,CAAEC,eAAe,GAAE,OAAOC,SAAS;IAC3C,OAAO;MACLC,kBAAkB,EAAEA,CAAA,KAAMH,GAAG,CAACC,eAAe,CAAC,CAAC,CAACJ,OAAO;IACzD,CAAC;EACH;AACF;AAACO,OAAA,CAAAX,aAAA,GAAAA,aAAA"}
1
+ {"version":3,"names":["SchemaService","constructor","_defineProperty","run","context","errors","transform","env","schemaExtractor","undefined","getSchemaExtractor","exports"],"sources":["schema.service.ts"],"sourcesContent":["import { EnvService, ExecutionContext, Env, EnvContext, ServiceTransformationMap } from '@teambit/envs';\nimport { SchemaExtractor } from './schema-extractor';\n// import { APISchema } from './schema';\n\ntype SchemaTransformationMap = ServiceTransformationMap & {\n getSchemaExtractor: () => SchemaExtractor;\n};\nexport class SchemaService implements EnvService<{}> {\n name = 'schema';\n\n async run(context: ExecutionContext) {\n return { errors: [], context };\n }\n\n transform(env: Env, context: EnvContext): SchemaTransformationMap | undefined {\n // Old env\n if (!env?.schemaExtractor) return undefined;\n return {\n getSchemaExtractor: () => env.schemaExtractor()(context),\n };\n }\n}\n"],"mappings":";;;;;;;;;AAEA;;AAKO,MAAMA,aAAa,CAA2B;EAAAC,YAAA;IAAAC,eAAA,eAC5C,QAAQ;EAAA;EAEf,MAAMC,GAAGA,CAACC,OAAyB,EAAE;IACnC,OAAO;MAAEC,MAAM,EAAE,EAAE;MAAED;IAAQ,CAAC;EAChC;EAEAE,SAASA,CAACC,GAAQ,EAAEH,OAAmB,EAAuC;IAC5E;IACA,IAAI,CAACG,GAAG,EAAEC,eAAe,EAAE,OAAOC,SAAS;IAC3C,OAAO;MACLC,kBAAkB,EAAEA,CAAA,KAAMH,GAAG,CAACC,eAAe,CAAC,CAAC,CAACJ,OAAO;IACzD,CAAC;EACH;AACF;AAACO,OAAA,CAAAX,aAAA,GAAAA,aAAA"}
@@ -14,13 +14,6 @@ function _fsExtra() {
14
14
  };
15
15
  return data;
16
16
  }
17
- function _chai() {
18
- const data = _interopRequireWildcard(require("chai"));
19
- _chai = function () {
20
- return data;
21
- };
22
- return data;
23
- }
24
17
  function _semanticsEntities() {
25
18
  const data = require("@teambit/semantics.entities.semantic-schema");
26
19
  _semanticsEntities = function () {
@@ -28,13 +21,6 @@ function _semanticsEntities() {
28
21
  };
29
22
  return data;
30
23
  }
31
- function _chaiSubset() {
32
- const data = _interopRequireDefault(require("chai-subset"));
33
- _chaiSubset = function () {
34
- return data;
35
- };
36
- return data;
37
- }
38
24
  function _tracker() {
39
25
  const data = _interopRequireDefault(require("@teambit/tracker"));
40
26
  _tracker = function () {
@@ -77,16 +63,12 @@ function _() {
77
63
  };
78
64
  return data;
79
65
  }
80
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
81
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
82
66
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
83
- _chai().default.use(_chaiSubset().default);
84
67
  describe('SchemaAspect', function () {
85
- this.timeout(0);
86
68
  let schema;
87
69
  let workspace;
88
70
  let workspaceData;
89
- before(async () => {
71
+ beforeAll(async () => {
90
72
  workspaceData = (0, _workspaceTesting().mockWorkspace)();
91
73
  const {
92
74
  workspacePath
@@ -94,13 +76,13 @@ describe('SchemaAspect', function () {
94
76
  // eslint-disable-next-line no-console
95
77
  console.log('workspace created at ', workspacePath);
96
78
  schema = await (0, _harmonyTesting().loadAspect)(_().SchemaAspect, workspacePath);
97
- });
98
- after(async () => {
79
+ }, 30000);
80
+ afterAll(async () => {
99
81
  await (0, _workspaceTesting().destroyWorkspace)(workspaceData);
100
82
  });
101
83
  describe('getSchema()', () => {
102
84
  let apiSchema;
103
- before(async () => {
85
+ beforeAll(async () => {
104
86
  const {
105
87
  workspacePath
106
88
  } = workspaceData;
@@ -119,7 +101,7 @@ describe('SchemaAspect', function () {
119
101
  const compId = await workspace.resolveComponentId('button');
120
102
  const comp = await workspace.get(compId);
121
103
  apiSchema = await schema.getSchema(comp, true);
122
- });
104
+ }, 30000);
123
105
  it('should be able to generate JSON object with all schemas', async () => {
124
106
  const results = apiSchema.toObject();
125
107
  const expectedJsonPath = _path().default.join(getMockDir(), 'button-schemas.json');
@@ -127,7 +109,7 @@ describe('SchemaAspect', function () {
127
109
  // fs.outputFileSync(expectedJsonPath, JSON.stringify(results, undefined, 2));
128
110
  const expectedJson = _fsExtra().default.readJsonSync(expectedJsonPath);
129
111
  // @ts-ignore it exists on Jest. for some reason ts assumes this is Jasmine.
130
- (0, _chai().expect)(results).to.to.containSubset(expectedJson);
112
+ expect(results).toMatchObject(expectedJson);
131
113
  });
132
114
  });
133
115
  describe('getSchemaFromObject', () => {
@@ -135,19 +117,19 @@ describe('SchemaAspect', function () {
135
117
  const jsonPath = _path().default.join(getMockDir(), 'button-schemas.json');
136
118
  const json = _fsExtra().default.readJsonSync(jsonPath);
137
119
  const apiSchema = schema.getSchemaFromObject(json);
138
- (0, _chai().expect)(apiSchema instanceof _semanticsEntities().APISchema).to.be.true;
139
- (0, _chai().expect)(apiSchema.componentId.constructor.name).to.equal(_componentId().ComponentID.name);
120
+ expect(apiSchema instanceof _semanticsEntities().APISchema).toEqual(true);
121
+ expect(apiSchema.componentId.constructor.name).toEqual(_componentId().ComponentID.name);
140
122
  // @ts-ignore it exists on Jest. for some reason ts assumes this is Jasmine.
141
- (0, _chai().expect)(apiSchema.toObject()).to.containSubset(json);
123
+ expect(apiSchema.toObject()).toMatchObject(json);
142
124
  });
143
125
  it('should not throw when it does not recognize the schema', () => {
144
126
  const jsonPath = _path().default.join(getMockDir(), 'button-old-schema.json');
145
127
  const json = _fsExtra().default.readJsonSync(jsonPath);
146
128
  const apiSchema = schema.getSchemaFromObject(json);
147
- (0, _chai().expect)(apiSchema instanceof _semanticsEntities().APISchema).to.be.true;
148
- (0, _chai().expect)(apiSchema.module.exports[0] instanceof _semanticsEntities().UnknownSchema).to.be.true;
129
+ expect(apiSchema instanceof _semanticsEntities().APISchema).toEqual(true);
130
+ expect(apiSchema.module.exports[0] instanceof _semanticsEntities().UnknownSchema).toEqual(true);
149
131
  // @ts-ignore
150
- (0, _chai().expect)(apiSchema.module.exports[0].location).to.deep.equal({
132
+ expect(apiSchema.module.exports[0].location).toMatchObject({
151
133
  file: 'index.ts',
152
134
  line: 21,
153
135
  character: 14
@@ -1 +1 @@
1
- {"version":3,"names":["_path","data","_interopRequireDefault","require","_fsExtra","_chai","_interopRequireWildcard","_semanticsEntities","_chaiSubset","_tracker","_harmonyTesting","_workspaceTesting","_componentId","_workspace","_","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","obj","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","harmony","loadManyAspects","WorkspaceAspect","TrackerAspect","id","tracker","track","rootDir","defaultScope","bitMap","write","compId","resolveComponentId","comp","getSchema","it","results","toObject","expectedJsonPath","expectedJson","readJsonSync","expect","to","containSubset","jsonPath","json","getSchemaFromObject","APISchema","be","true","componentId","constructor","name","equal","ComponentID","module","exports","UnknownSchema","location","deep","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 TrackerAspect, { TrackerMain } from '@teambit/tracker';\nimport { loadAspect, loadManyAspects } 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 const harmony = await loadManyAspects([WorkspaceAspect, SchemaAspect, TrackerAspect], workspacePath);\n workspace = harmony.get<Workspace>(WorkspaceAspect.id);\n const tracker = harmony.get<TrackerMain>(TrackerAspect.id);\n await tracker.track({ rootDir: compDir, defaultScope: 'org.scope' });\n await workspace.bitMap.write();\n schema = harmony.get<SchemaMain>(SchemaAspect.id);\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.constructor.name).to.equal(ComponentID.name);\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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"}
1
+ {"version":3,"names":["_path","data","_interopRequireDefault","require","_fsExtra","_semanticsEntities","_tracker","_harmonyTesting","_workspaceTesting","_componentId","_workspace","_","obj","__esModule","default","describe","schema","workspace","workspaceData","beforeAll","mockWorkspace","workspacePath","console","log","loadAspect","SchemaAspect","afterAll","destroyWorkspace","apiSchema","compDir","path","join","src","getMockDir","fs","copy","harmony","loadManyAspects","WorkspaceAspect","TrackerAspect","get","id","tracker","track","rootDir","defaultScope","bitMap","write","compId","resolveComponentId","comp","getSchema","it","results","toObject","expectedJsonPath","expectedJson","readJsonSync","expect","toMatchObject","jsonPath","json","getSchemaFromObject","APISchema","toEqual","componentId","constructor","name","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 TrackerAspect, { TrackerMain } from '@teambit/tracker';\nimport { loadAspect, loadManyAspects } 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 }, 30000);\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 const harmony = await loadManyAspects([WorkspaceAspect, SchemaAspect, TrackerAspect], workspacePath);\n workspace = harmony.get<Workspace>(WorkspaceAspect.id);\n const tracker = harmony.get<TrackerMain>(TrackerAspect.id);\n await tracker.track({ rootDir: compDir, defaultScope: 'org.scope' });\n await workspace.bitMap.write();\n schema = harmony.get<SchemaMain>(SchemaAspect.id);\n const compId = await workspace.resolveComponentId('button');\n const comp = await workspace.get(compId);\n apiSchema = await schema.getSchema(comp, true);\n }, 30000);\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).toEqual(true);\n expect(apiSchema.componentId.constructor.name).toEqual(ComponentID.name);\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).toEqual(true);\n expect(apiSchema.module.exports[0] instanceof UnknownSchema).toEqual(true);\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":";;AAAA,SAAAA,MAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,KAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,SAAA;EAAA,MAAAH,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAC,QAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAI,mBAAA;EAAA,MAAAJ,IAAA,GAAAE,OAAA;EAAAE,kBAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAK,SAAA;EAAA,MAAAL,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAG,QAAA,YAAAA,CAAA;IAAA,OAAAL,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAM,gBAAA;EAAA,MAAAN,IAAA,GAAAE,OAAA;EAAAI,eAAA,YAAAA,CAAA;IAAA,OAAAN,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAO,kBAAA;EAAA,MAAAP,IAAA,GAAAE,OAAA;EAAAK,iBAAA,YAAAA,CAAA;IAAA,OAAAP,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAQ,aAAA;EAAA,MAAAR,IAAA,GAAAE,OAAA;EAAAM,YAAA,YAAAA,CAAA;IAAA,OAAAR,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAS,WAAA;EAAA,MAAAT,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAO,UAAA,YAAAA,CAAA;IAAA,OAAAT,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAU,EAAA;EAAA,MAAAV,IAAA,GAAAE,OAAA;EAAAQ,CAAA,YAAAA,CAAA;IAAA,OAAAV,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAAiC,SAAAC,uBAAAU,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAEjCG,QAAQ,CAAC,cAAc,EAAE,YAAY;EACnC,IAAIC,MAAkB;EACtB,IAAIC,SAAoB;EACxB,IAAIC,aAA4B;EAChCC,SAAS,CAAC,YAAY;IACpBD,aAAa,GAAG,IAAAE,iCAAa,EAAC,CAAC;IAC/B,MAAM;MAAEC;IAAc,CAAC,GAAGH,aAAa;IACvC;IACAI,OAAO,CAACC,GAAG,CAAC,uBAAuB,EAAEF,aAAa,CAAC;IACnDL,MAAM,GAAG,MAAM,IAAAQ,4BAAU,EAACC,gBAAY,EAAEJ,aAAa,CAAC;EACxD,CAAC,EAAE,KAAK,CAAC;EACTK,QAAQ,CAAC,YAAY;IACnB,MAAM,IAAAC,oCAAgB,EAACT,aAAa,CAAC;EACvC,CAAC,CAAC;EACFH,QAAQ,CAAC,aAAa,EAAE,MAAM;IAC5B,IAAIa,SAAoB;IACxBT,SAAS,CAAC,YAAY;MACpB,MAAM;QAAEE;MAAc,CAAC,GAAGH,aAAa;MACvC,MAAMW,OAAO,GAAGC,eAAI,CAACC,IAAI,CAACV,aAAa,EAAE,QAAQ,CAAC;MAClD,MAAMW,GAAG,GAAGF,eAAI,CAACC,IAAI,CAACE,UAAU,CAAC,CAAC,EAAE,QAAQ,CAAC;MAC7C,MAAMC,kBAAE,CAACC,IAAI,CAACH,GAAG,EAAEH,OAAO,CAAC;MAC3B,MAAMO,OAAO,GAAG,MAAM,IAAAC,iCAAe,EAAC,CAACC,oBAAe,EAAEb,gBAAY,EAAEc,kBAAa,CAAC,EAAElB,aAAa,CAAC;MACpGJ,SAAS,GAAGmB,OAAO,CAACI,GAAG,CAAYF,oBAAe,CAACG,EAAE,CAAC;MACtD,MAAMC,OAAO,GAAGN,OAAO,CAACI,GAAG,CAAcD,kBAAa,CAACE,EAAE,CAAC;MAC1D,MAAMC,OAAO,CAACC,KAAK,CAAC;QAAEC,OAAO,EAAEf,OAAO;QAAEgB,YAAY,EAAE;MAAY,CAAC,CAAC;MACpE,MAAM5B,SAAS,CAAC6B,MAAM,CAACC,KAAK,CAAC,CAAC;MAC9B/B,MAAM,GAAGoB,OAAO,CAACI,GAAG,CAAaf,gBAAY,CAACgB,EAAE,CAAC;MACjD,MAAMO,MAAM,GAAG,MAAM/B,SAAS,CAACgC,kBAAkB,CAAC,QAAQ,CAAC;MAC3D,MAAMC,IAAI,GAAG,MAAMjC,SAAS,CAACuB,GAAG,CAACQ,MAAM,CAAC;MACxCpB,SAAS,GAAG,MAAMZ,MAAM,CAACmC,SAAS,CAACD,IAAI,EAAE,IAAI,CAAC;IAChD,CAAC,EAAE,KAAK,CAAC;IACTE,EAAE,CAAC,yDAAyD,EAAE,YAAY;MACxE,MAAMC,OAAO,GAAGzB,SAAS,CAAC0B,QAAQ,CAAC,CAAC;MACpC,MAAMC,gBAAgB,GAAGzB,eAAI,CAACC,IAAI,CAACE,UAAU,CAAC,CAAC,EAAE,qBAAqB,CAAC;MACvE;MACA;MACA,MAAMuB,YAAY,GAAGtB,kBAAE,CAACuB,YAAY,CAACF,gBAAgB,CAAC;MACtD;MACAG,MAAM,CAACL,OAAO,CAAC,CAACM,aAAa,CAACH,YAAY,CAAC;IAC7C,CAAC,CAAC;EACJ,CAAC,CAAC;EACFzC,QAAQ,CAAC,qBAAqB,EAAE,MAAM;IACpCqC,EAAE,CAAC,sEAAsE,EAAE,MAAM;MAC/E,MAAMQ,QAAQ,GAAG9B,eAAI,CAACC,IAAI,CAACE,UAAU,CAAC,CAAC,EAAE,qBAAqB,CAAC;MAC/D,MAAM4B,IAAI,GAAG3B,kBAAE,CAACuB,YAAY,CAACG,QAAQ,CAAC;MACtC,MAAMhC,SAAS,GAAGZ,MAAM,CAAC8C,mBAAmB,CAACD,IAAI,CAAC;MAClDH,MAAM,CAAC9B,SAAS,YAAYmC,8BAAS,CAAC,CAACC,OAAO,CAAC,IAAI,CAAC;MACpDN,MAAM,CAAC9B,SAAS,CAACqC,WAAW,CAACC,WAAW,CAACC,IAAI,CAAC,CAACH,OAAO,CAACI,0BAAW,CAACD,IAAI,CAAC;MACxE;MACAT,MAAM,CAAC9B,SAAS,CAAC0B,QAAQ,CAAC,CAAC,CAAC,CAACK,aAAa,CAACE,IAAI,CAAC;IAClD,CAAC,CAAC;IACFT,EAAE,CAAC,wDAAwD,EAAE,MAAM;MACjE,MAAMQ,QAAQ,GAAG9B,eAAI,CAACC,IAAI,CAACE,UAAU,CAAC,CAAC,EAAE,wBAAwB,CAAC;MAClE,MAAM4B,IAAI,GAAG3B,kBAAE,CAACuB,YAAY,CAACG,QAAQ,CAAC;MACtC,MAAMhC,SAAS,GAAGZ,MAAM,CAAC8C,mBAAmB,CAACD,IAAI,CAAC;MAClDH,MAAM,CAAC9B,SAAS,YAAYmC,8BAAS,CAAC,CAACC,OAAO,CAAC,IAAI,CAAC;MACpDN,MAAM,CAAC9B,SAAS,CAACyC,MAAM,CAACC,OAAO,CAAC,CAAC,CAAC,YAAYC,kCAAa,CAAC,CAACP,OAAO,CAAC,IAAI,CAAC;MAC1E;MACAN,MAAM,CAAC9B,SAAS,CAACyC,MAAM,CAACC,OAAO,CAAC,CAAC,CAAC,CAACE,QAAQ,CAAC,CAACb,aAAa,CAAC;QAAEc,IAAI,EAAE,UAAU;QAAEC,IAAI,EAAE,EAAE;QAAEC,SAAS,EAAE;MAAG,CAAC,CAAC;IAC3G,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,SAASC,aAAaA,CAAA,EAAG;EACvB,MAAMC,UAAU,GAAGC,SAAS;EAC5B,IAAID,UAAU,CAACE,QAAQ,CAAE,GAAEjD,eAAI,CAACkD,GAAI,MAAK,CAAC,EAAE,OAAOH,UAAU,CAACI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAC1E,OAAOJ,UAAU;AACnB;AAEA,SAAS5C,UAAUA,CAAA,EAAG;EACpB,OAAOH,eAAI,CAACC,IAAI,CAAC6C,aAAa,CAAC,CAAC,EAAE,MAAM,CAAC;AAC3C"}
package/index.ts ADDED
@@ -0,0 +1,16 @@
1
+ import { SchemaAspect } from './schema.aspect';
2
+
3
+ export type { Parser } from './parser';
4
+ export type { SchemaExtractor } from './schema-extractor';
5
+ export type { SchemaExtractorOptions } from './schema-extractor';
6
+ export {
7
+ SchemaTask,
8
+ SCHEMA_ARTIFACT_NAME,
9
+ SCHEMA_TASK_NAME,
10
+ getSchemaArtifactDef,
11
+ getSchemaArtifactPath,
12
+ } from './schema.task';
13
+ export type { SchemaEnv } from './schema-env';
14
+ export type { SchemaMain } from './schema.main.runtime';
15
+ export default SchemaAspect;
16
+ export { SchemaAspect };
package/package.json CHANGED
@@ -1,53 +1,46 @@
1
1
  {
2
2
  "name": "@teambit/schema",
3
- "version": "1.0.107",
3
+ "version": "1.0.108",
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": "1.0.107"
9
+ "version": "1.0.108"
10
10
  },
11
11
  "dependencies": {
12
12
  "p-map-series": "2.1.0",
13
13
  "graphql-tag": "2.12.1",
14
14
  "graphql-type-json": "0.3.2",
15
15
  "fs-extra": "10.0.0",
16
- "core-js": "^3.0.0",
17
- "@babel/runtime": "7.20.0",
18
16
  "@teambit/semantics.entities.semantic-schema": "0.0.59",
19
17
  "@teambit/harmony": "0.4.6",
20
18
  "@teambit/base-react.navigation.link": "2.0.27",
21
- "@teambit/envs": "1.0.107",
22
- "@teambit/component": "1.0.107",
23
- "@teambit/formatter": "1.0.107",
24
- "@teambit/cli": "0.0.839",
25
- "@teambit/logger": "0.0.932",
26
- "@teambit/graphql": "1.0.107",
27
- "@teambit/builder": "1.0.107",
19
+ "@teambit/envs": "1.0.108",
20
+ "@teambit/component": "1.0.108",
21
+ "@teambit/formatter": "1.0.108",
22
+ "@teambit/cli": "0.0.840",
23
+ "@teambit/logger": "0.0.933",
24
+ "@teambit/graphql": "1.0.108",
25
+ "@teambit/builder": "1.0.108",
28
26
  "@teambit/defender.prettier.config-mutator": "0.0.94",
29
- "@teambit/workspace": "1.0.107"
27
+ "@teambit/workspace": "1.0.108"
30
28
  },
31
29
  "devDependencies": {
32
- "@types/react": "^17.0.8",
33
- "@types/chai": "4.2.15",
34
30
  "@types/fs-extra": "9.0.7",
35
- "chai-subset": "1.6.0",
36
- "chai": "4.3.0",
37
31
  "@types/mocha": "9.1.0",
38
- "@types/node": "12.20.4",
39
- "@types/react-dom": "^17.0.5",
40
- "@types/jest": "^26.0.0",
41
- "@types/testing-library__jest-dom": "5.9.5",
32
+ "@types/jest": "^29.2.2",
33
+ "@types/testing-library__jest-dom": "^5.9.5",
42
34
  "@teambit/component-id": "1.2.0",
43
- "@teambit/harmony.testing.load-aspect": "0.0.178",
44
- "@teambit/tracker": "1.0.107",
35
+ "@teambit/harmony.envs.core-aspect-env": "0.0.13",
36
+ "@teambit/harmony.testing.load-aspect": "0.0.179",
37
+ "@teambit/tracker": "1.0.108",
45
38
  "@teambit/workspace.testing.mock-workspace": "0.0.18"
46
39
  },
47
40
  "peerDependencies": {
48
- "@teambit/legacy": "1.0.624",
49
- "react": "^16.8.0 || ^17.0.0",
50
- "react-dom": "^16.8.0 || ^17.0.0"
41
+ "react": "^17.0.0 || ^18.0.0",
42
+ "@types/react": "^18.2.12",
43
+ "@teambit/legacy": "1.0.624"
51
44
  },
52
45
  "license": "Apache-2.0",
53
46
  "optionalDependencies": {},
@@ -61,7 +54,7 @@
61
54
  },
62
55
  "private": false,
63
56
  "engines": {
64
- "node": ">=12.22.0"
57
+ "node": ">=16.0.0"
65
58
  },
66
59
  "repository": {
67
60
  "type": "git",
@@ -70,12 +63,9 @@
70
63
  "keywords": [
71
64
  "bit",
72
65
  "bit-aspect",
66
+ "bit-core-aspect",
73
67
  "components",
74
68
  "collaboration",
75
- "web",
76
- "react",
77
- "react-components",
78
- "angular",
79
- "angular-components"
69
+ "web"
80
70
  ]
81
71
  }
package/parser.ts ADDED
@@ -0,0 +1,13 @@
1
+ import { Export } from '@teambit/semantics.entities.semantic-schema';
2
+
3
+ export interface Parser {
4
+ /**
5
+ * regex to apply on which components compiler applies.
6
+ */
7
+ extension: RegExp;
8
+
9
+ /**
10
+ * parse a module.
11
+ */
12
+ parseModule(modulePath: string, content?: string): Export[];
13
+ }
package/schema-env.ts ADDED
@@ -0,0 +1,10 @@
1
+ import { EnvHandler } from '@teambit/envs';
2
+ import { SchemaExtractor } from './schema-extractor';
3
+
4
+ /**
5
+ * define a schema extractor to extract type information
6
+ * and docs for your components.
7
+ */
8
+ export interface SchemaEnv {
9
+ schemaExtractor(): EnvHandler<SchemaExtractor>;
10
+ }
@@ -0,0 +1,23 @@
1
+ import { Component } from '@teambit/component';
2
+ import { APISchema } from '@teambit/semantics.entities.semantic-schema';
3
+ import { Formatter } from '@teambit/formatter';
4
+
5
+ export interface SchemaExtractor {
6
+ /**
7
+ * extract a semantic schema from a component.
8
+ */
9
+ extract(component: Component, options?: SchemaExtractorOptions): Promise<APISchema>;
10
+ /**
11
+ * release resources if no schemas are needed for this process.
12
+ * for typescript, this will kill the tsserver process.
13
+ * for performance reasons, this is not automatically run after "extract". otherwise, running extract on multiple
14
+ * components will be very slow.
15
+ */
16
+ dispose(): void;
17
+ }
18
+
19
+ export type SchemaExtractorOptions = {
20
+ formatter?: Formatter;
21
+ tsserverPath?: string;
22
+ contextPath?: string;
23
+ };
@@ -0,0 +1,5 @@
1
+ import { Aspect } from '@teambit/harmony';
2
+
3
+ export const SchemaAspect = Aspect.create({
4
+ id: 'teambit.semantics/schema',
5
+ });
package/schema.cmd.ts ADDED
@@ -0,0 +1,40 @@
1
+ import { Command, CommandOptions } from '@teambit/cli';
2
+ import { ComponentMain } from '@teambit/component';
3
+ import pMapSeries from 'p-map-series';
4
+ import { Logger } from '@teambit/logger';
5
+ import { APISchema } from '@teambit/semantics.entities.semantic-schema';
6
+ import { PATTERN_HELP } from '@teambit/legacy/dist/constants';
7
+ import type { SchemaMain } from './schema.main.runtime';
8
+
9
+ export class SchemaCommand implements Command {
10
+ name = 'schema <pattern>';
11
+ description = 'shows the API schema of the specified component/s.';
12
+ extendedDescription = `${PATTERN_HELP('schema')}`;
13
+ group = 'development';
14
+ options = [['j', 'json', 'return the component schema in json format']] as CommandOptions;
15
+
16
+ constructor(private schema: SchemaMain, private component: ComponentMain, private logger: Logger) {}
17
+
18
+ async report([pattern]: [string]) {
19
+ const schemas = await this.getSchemas([pattern]);
20
+ return schemas.map((schema) => schema.toStringPerType()).join('\n\n\n');
21
+ }
22
+
23
+ async json([pattern]: [string]): Promise<Record<string, any>> {
24
+ const schemas = await this.getSchemas([pattern]);
25
+ return schemas.map((schema) => schema.toObject());
26
+ }
27
+
28
+ private async getSchemas([pattern]: [string]): Promise<APISchema[]> {
29
+ const host = this.component.getHost();
30
+ const ids = await host.idsByPattern(pattern, true);
31
+ const components = await host.getMany(ids);
32
+ const longRunningLog = this.logger.createLongProcessLogger('generating schema', ids.length);
33
+ const results = await pMapSeries(components, (component) => {
34
+ longRunningLog.logProgress(component.id.toString());
35
+ return this.schema.getSchema(component, undefined, true);
36
+ });
37
+ longRunningLog.end();
38
+ return results;
39
+ }
40
+ }
@@ -0,0 +1,58 @@
1
+ import { ComponentFactory } from '@teambit/component';
2
+ import { GraphQLJSONObject } from 'graphql-type-json';
3
+ import gql from 'graphql-tag';
4
+ import { APISchema, UnImplementedSchema } from '@teambit/semantics.entities.semantic-schema';
5
+ import { Schema } from '@teambit/graphql';
6
+ import { SchemaMain } from './schema.main.runtime';
7
+
8
+ export function schemaSchema(schema: SchemaMain): Schema {
9
+ return {
10
+ typeDefs: gql`
11
+ scalar JSONObject
12
+ extend type ComponentHost {
13
+ getSchema(id: String!): JSONObject
14
+ }
15
+ `,
16
+ resolvers: {
17
+ JSONObject: GraphQLJSONObject,
18
+ ComponentHost: {
19
+ getSchema: async (host: ComponentFactory, { id }: { id: string }) => {
20
+ const componentId = await host.resolveComponentId(id);
21
+ const component = await host.get(componentId);
22
+ const empty = {
23
+ exports: [],
24
+ };
25
+
26
+ if (!component) return empty;
27
+ const api = await schema.getSchema(component);
28
+ if (!api) return empty;
29
+
30
+ return filterUnimplementedSchemaNodes(api);
31
+ },
32
+ },
33
+ },
34
+ };
35
+ }
36
+
37
+ function filterUnimplementedSchemaNodes(api: APISchema) {
38
+ const apiObject = api.toObject();
39
+ const filteredExports = apiObject.module.exports.filter((exp) => exp.__schema !== UnImplementedSchema.name);
40
+ const filteredInternals = apiObject.internals.map((internalObject) => {
41
+ const filteredInternalExports = internalObject.exports.filter((exp) => exp.__schema !== UnImplementedSchema.name);
42
+ const filteredInternalNodes = internalObject.internals.filter((exp) => exp.__schema !== UnImplementedSchema.name);
43
+ return {
44
+ ...internalObject,
45
+ exports: filteredInternalExports,
46
+ internals: filteredInternalNodes,
47
+ };
48
+ });
49
+ const filteredTaggedExports = apiObject.taggedModuleExports.filter(
50
+ (exp) => exp.__schema !== UnImplementedSchema.name
51
+ );
52
+ return {
53
+ ...apiObject,
54
+ exports: filteredExports,
55
+ internals: filteredInternals,
56
+ taggedModuleExports: filteredTaggedExports,
57
+ };
58
+ }
@@ -0,0 +1,221 @@
1
+ import { MainRuntime, CLIMain, CLIAspect } from '@teambit/cli';
2
+ import ComponentAspect, { Component, ComponentMain } from '@teambit/component';
3
+ import { Slot, SlotRegistry } from '@teambit/harmony';
4
+ import GraphqlAspect, { GraphqlMain } from '@teambit/graphql';
5
+ import { EnvsAspect, EnvsMain } from '@teambit/envs';
6
+ import { Logger, LoggerAspect, LoggerMain } from '@teambit/logger';
7
+ import { PrettierConfigMutator } from '@teambit/defender.prettier.config-mutator';
8
+ import {
9
+ APISchema,
10
+ Export,
11
+ Schemas,
12
+ SchemaNodeConstructor,
13
+ SchemaRegistry,
14
+ } from '@teambit/semantics.entities.semantic-schema';
15
+ import { BuilderMain, BuilderAspect } from '@teambit/builder';
16
+ import { Workspace, WorkspaceAspect } from '@teambit/workspace';
17
+ import { Formatter } from '@teambit/formatter';
18
+ import { Parser } from './parser';
19
+ import { SchemaAspect } from './schema.aspect';
20
+ import { SchemaExtractor } from './schema-extractor';
21
+ import { SchemaCommand } from './schema.cmd';
22
+ import { schemaSchema } from './schema.graphql';
23
+ import { SchemaTask, SCHEMA_TASK_NAME } from './schema.task';
24
+ import { SchemaService } from './schema.service';
25
+
26
+ export type ParserSlot = SlotRegistry<Parser>;
27
+
28
+ export type SchemaConfig = {
29
+ /**
30
+ * default parser
31
+ */
32
+ defaultParser: string;
33
+ };
34
+
35
+ /**
36
+ * extension for extracting component schemas.
37
+ */
38
+ export class SchemaMain {
39
+ constructor(
40
+ /**
41
+ * parsers slot.
42
+ */
43
+ private parserSlot: ParserSlot,
44
+
45
+ private envs: EnvsMain,
46
+
47
+ private config: SchemaConfig,
48
+
49
+ private builder: BuilderMain,
50
+
51
+ private workspace: Workspace,
52
+
53
+ private logger: Logger
54
+ ) {}
55
+
56
+ /**
57
+ * get the default parser.
58
+ */
59
+ getDefaultParser(): Parser {
60
+ return this.parserSlot.get(this.config.defaultParser) as Parser;
61
+ }
62
+
63
+ registerSchemaClass(schema: SchemaNodeConstructor) {
64
+ SchemaRegistry.register(schema);
65
+ }
66
+
67
+ /**
68
+ * parse a module into a component schema.
69
+ */
70
+ parseModule(path: string, content?: string): Export[] {
71
+ const parsers = this.parserSlot.toArray();
72
+ let maybeParser = parsers.find(([, parser]) => {
73
+ const match = path.match(parser.extension);
74
+ return match;
75
+ });
76
+
77
+ if (!maybeParser) {
78
+ maybeParser = [this.config.defaultParser, this.getDefaultParser()];
79
+ }
80
+
81
+ const [, parser] = maybeParser;
82
+ return parser.parseModule(path, content);
83
+ }
84
+
85
+ getSchemaExtractor(component: Component, tsserverPath?: string, contextPath?: string): SchemaExtractor {
86
+ const env = this.envs.getEnv(component).env;
87
+ if (typeof env.getSchemaExtractor === 'undefined') {
88
+ throw new Error(`No SchemaExtractor defined for ${env.name}`);
89
+ }
90
+
91
+ return env.getSchemaExtractor(undefined, tsserverPath, contextPath);
92
+ }
93
+
94
+ /**
95
+ * get a schema of a component.
96
+ * @param component target component.
97
+ * @param shouldDisposeResourcesOnceDone for long-running processes, such as bit-start/bit-watch, this is not
98
+ * relevant. for calling the API only to get a schema for one component, this is needed to ensure the ts-server is
99
+ * not kept alive. otherwise, the process will never end.
100
+ *
101
+ */
102
+ async getSchema(
103
+ component: Component,
104
+ shouldDisposeResourcesOnceDone = false,
105
+ alwaysRunExtractor = false,
106
+ tsserverPath?: string,
107
+ contextPath?: string
108
+ ): Promise<APISchema> {
109
+ if (alwaysRunExtractor || this.workspace) {
110
+ const env = this.envs.getEnv(component).env;
111
+ // types need to be fixed
112
+ const formatter: Formatter | undefined = env.getFormatter?.(null, [
113
+ (config: PrettierConfigMutator) => {
114
+ config.setKey('parser', 'typescript');
115
+ return config;
116
+ },
117
+ ]);
118
+ if (typeof env.getSchemaExtractor === 'undefined') {
119
+ throw new Error(`No SchemaExtractor defined for ${env.name}`);
120
+ }
121
+ const schemaExtractor: SchemaExtractor = env.getSchemaExtractor(undefined, tsserverPath, contextPath);
122
+
123
+ const result = await schemaExtractor.extract(component, { formatter, tsserverPath, contextPath });
124
+ if (shouldDisposeResourcesOnceDone) schemaExtractor.dispose();
125
+
126
+ return result;
127
+ }
128
+
129
+ // on scope get schema from builder api
130
+ const schemaArtifact = await this.builder.getArtifactsVinylByAspectAndTaskName(
131
+ component,
132
+ SchemaAspect.id,
133
+ SCHEMA_TASK_NAME
134
+ );
135
+
136
+ if (schemaArtifact.length === 0) {
137
+ this.logger.debug(`no schema found for ${component.id.toString()}`);
138
+
139
+ /**
140
+ * return empty schema
141
+ * when tag/snap without build
142
+ * or backwards compatibility
143
+ */
144
+ return APISchema.empty(component.id as any);
145
+ }
146
+
147
+ const schemaJsonStr = schemaArtifact[0].contents.toString('utf-8');
148
+
149
+ try {
150
+ const schemaJson = JSON.parse(schemaJsonStr);
151
+ return this.getSchemaFromObject(schemaJson);
152
+ } catch (e) {
153
+ if (e instanceof SyntaxError) {
154
+ this.logger.error(e.message);
155
+ throw new Error(`Invalid schema.json for ${component.id}`);
156
+ }
157
+ throw e;
158
+ }
159
+ }
160
+
161
+ getSchemaFromObject(obj: Record<string, any>): APISchema {
162
+ return APISchema.fromObject(obj);
163
+ }
164
+
165
+ /**
166
+ * register a new parser.
167
+ */
168
+ registerParser(parser: Parser): SchemaMain {
169
+ this.parserSlot.register(parser);
170
+ return this;
171
+ }
172
+
173
+ static runtime = MainRuntime;
174
+ static dependencies = [
175
+ EnvsAspect,
176
+ CLIAspect,
177
+ ComponentAspect,
178
+ GraphqlAspect,
179
+ LoggerAspect,
180
+ BuilderAspect,
181
+ WorkspaceAspect,
182
+ ];
183
+ static slots = [Slot.withType<Parser>()];
184
+
185
+ static defaultConfig = {
186
+ defaultParser: 'teambit.typescript/typescript',
187
+ };
188
+
189
+ static async provider(
190
+ [envs, cli, component, graphql, loggerMain, builder, workspace]: [
191
+ EnvsMain,
192
+ CLIMain,
193
+ ComponentMain,
194
+ GraphqlMain,
195
+ LoggerMain,
196
+ BuilderMain,
197
+ Workspace
198
+ ],
199
+ config: SchemaConfig,
200
+ [parserSlot]: [ParserSlot]
201
+ ) {
202
+ const logger = loggerMain.createLogger(SchemaAspect.id);
203
+ const schema = new SchemaMain(parserSlot, envs, config, builder, workspace, logger);
204
+ const schemaTask = new SchemaTask(SchemaAspect.id, schema, logger);
205
+ builder.registerBuildTasks([schemaTask]);
206
+ cli.register(new SchemaCommand(schema, component, logger));
207
+ graphql.register(schemaSchema(schema));
208
+ envs.registerService(new SchemaService());
209
+
210
+ // register all default schema classes
211
+ Object.values(Schemas).forEach((Schema) => {
212
+ schema.registerSchemaClass(Schema);
213
+ });
214
+
215
+ return schema;
216
+ }
217
+ }
218
+
219
+ SchemaAspect.addRuntime(SchemaMain);
220
+
221
+ export default SchemaMain;
@@ -0,0 +1,22 @@
1
+ import { EnvService, ExecutionContext, Env, EnvContext, ServiceTransformationMap } from '@teambit/envs';
2
+ import { SchemaExtractor } from './schema-extractor';
3
+ // import { APISchema } from './schema';
4
+
5
+ type SchemaTransformationMap = ServiceTransformationMap & {
6
+ getSchemaExtractor: () => SchemaExtractor;
7
+ };
8
+ export class SchemaService implements EnvService<{}> {
9
+ name = 'schema';
10
+
11
+ async run(context: ExecutionContext) {
12
+ return { errors: [], context };
13
+ }
14
+
15
+ transform(env: Env, context: EnvContext): SchemaTransformationMap | undefined {
16
+ // Old env
17
+ if (!env?.schemaExtractor) return undefined;
18
+ return {
19
+ getSchemaExtractor: () => env.schemaExtractor()(context),
20
+ };
21
+ }
22
+ }
package/schema.spec.ts ADDED
@@ -0,0 +1,83 @@
1
+ import path from 'path';
2
+ import fs from 'fs-extra';
3
+ import { APISchema, UnknownSchema } from '@teambit/semantics.entities.semantic-schema';
4
+ import TrackerAspect, { TrackerMain } from '@teambit/tracker';
5
+ import { loadAspect, loadManyAspects } from '@teambit/harmony.testing.load-aspect';
6
+ import { mockWorkspace, destroyWorkspace, WorkspaceData } from '@teambit/workspace.testing.mock-workspace';
7
+ import { ComponentID } from '@teambit/component-id';
8
+ import WorkspaceAspect, { Workspace } from '@teambit/workspace';
9
+ import { SchemaMain } from './schema.main.runtime';
10
+ import { SchemaAspect } from '.';
11
+
12
+ describe('SchemaAspect', function () {
13
+ let schema: SchemaMain;
14
+ let workspace: Workspace;
15
+ let workspaceData: WorkspaceData;
16
+ beforeAll(async () => {
17
+ workspaceData = mockWorkspace();
18
+ const { workspacePath } = workspaceData;
19
+ // eslint-disable-next-line no-console
20
+ console.log('workspace created at ', workspacePath);
21
+ schema = await loadAspect(SchemaAspect, workspacePath);
22
+ }, 30000);
23
+ afterAll(async () => {
24
+ await destroyWorkspace(workspaceData);
25
+ });
26
+ describe('getSchema()', () => {
27
+ let apiSchema: APISchema;
28
+ beforeAll(async () => {
29
+ const { workspacePath } = workspaceData;
30
+ const compDir = path.join(workspacePath, 'button');
31
+ const src = path.join(getMockDir(), 'button');
32
+ await fs.copy(src, compDir);
33
+ const harmony = await loadManyAspects([WorkspaceAspect, SchemaAspect, TrackerAspect], workspacePath);
34
+ workspace = harmony.get<Workspace>(WorkspaceAspect.id);
35
+ const tracker = harmony.get<TrackerMain>(TrackerAspect.id);
36
+ await tracker.track({ rootDir: compDir, defaultScope: 'org.scope' });
37
+ await workspace.bitMap.write();
38
+ schema = harmony.get<SchemaMain>(SchemaAspect.id);
39
+ const compId = await workspace.resolveComponentId('button');
40
+ const comp = await workspace.get(compId);
41
+ apiSchema = await schema.getSchema(comp, true);
42
+ }, 30000);
43
+ it('should be able to generate JSON object with all schemas', async () => {
44
+ const results = apiSchema.toObject();
45
+ const expectedJsonPath = path.join(getMockDir(), 'button-schemas.json');
46
+ // uncomment the next line temporarily to sync the expected json with new schema changes
47
+ // fs.outputFileSync(expectedJsonPath, JSON.stringify(results, undefined, 2));
48
+ const expectedJson = fs.readJsonSync(expectedJsonPath);
49
+ // @ts-ignore it exists on Jest. for some reason ts assumes this is Jasmine.
50
+ expect(results).toMatchObject(expectedJson);
51
+ });
52
+ });
53
+ describe('getSchemaFromObject', () => {
54
+ it('should be able to deserialize an JSON object to SchemaNode instances', () => {
55
+ const jsonPath = path.join(getMockDir(), 'button-schemas.json');
56
+ const json = fs.readJsonSync(jsonPath);
57
+ const apiSchema = schema.getSchemaFromObject(json);
58
+ expect(apiSchema instanceof APISchema).toEqual(true);
59
+ expect(apiSchema.componentId.constructor.name).toEqual(ComponentID.name);
60
+ // @ts-ignore it exists on Jest. for some reason ts assumes this is Jasmine.
61
+ expect(apiSchema.toObject()).toMatchObject(json);
62
+ });
63
+ it('should not throw when it does not recognize the schema', () => {
64
+ const jsonPath = path.join(getMockDir(), 'button-old-schema.json');
65
+ const json = fs.readJsonSync(jsonPath);
66
+ const apiSchema = schema.getSchemaFromObject(json);
67
+ expect(apiSchema instanceof APISchema).toEqual(true);
68
+ expect(apiSchema.module.exports[0] instanceof UnknownSchema).toEqual(true);
69
+ // @ts-ignore
70
+ expect(apiSchema.module.exports[0].location).toMatchObject({ file: 'index.ts', line: 21, character: 14 });
71
+ });
72
+ });
73
+ });
74
+
75
+ function getCurrentDir() {
76
+ const currentDir = __dirname;
77
+ if (currentDir.endsWith(`${path.sep}dist`)) return currentDir.slice(0, -5);
78
+ return currentDir;
79
+ }
80
+
81
+ function getMockDir() {
82
+ return path.join(getCurrentDir(), 'mock');
83
+ }
package/schema.task.ts ADDED
@@ -0,0 +1,79 @@
1
+ import {
2
+ BuildContext,
3
+ BuiltTaskResult,
4
+ BuildTask,
5
+ TaskLocation,
6
+ CAPSULE_ARTIFACTS_DIR,
7
+ ComponentResult,
8
+ ArtifactDefinition,
9
+ } from '@teambit/builder';
10
+ import { Logger } from '@teambit/logger';
11
+ import fs from 'fs-extra';
12
+ import pMapSeries from 'p-map-series';
13
+ import { join } from 'path';
14
+ import { SchemaMain } from './schema.main.runtime';
15
+
16
+ export const SCHEMA_TASK_NAME = 'ExtractSchema';
17
+ export const SCHEMA_ARTIFACT_NAME = 'schema';
18
+
19
+ /**
20
+ * extract and persist the component schema as a json file
21
+ */
22
+ export class SchemaTask implements BuildTask {
23
+ readonly name = SCHEMA_TASK_NAME;
24
+ readonly location: TaskLocation = 'end';
25
+ readonly description = 'extract api schema for a set of components';
26
+
27
+ constructor(readonly aspectId: string, private schema: SchemaMain, private logger: Logger) {}
28
+
29
+ async execute(context: BuildContext): Promise<BuiltTaskResult> {
30
+ const startTime = Date.now();
31
+ const capsules = context.capsuleNetwork.seedersCapsules;
32
+ const schemaResult: ComponentResult[] = [];
33
+ const rootDir = context.capsuleNetwork.capsulesRootDir;
34
+ await pMapSeries(capsules, async (capsule) => {
35
+ const component = capsule.component;
36
+ try {
37
+ const schema = await this.schema.getSchema(component, false, true, rootDir, capsule.path);
38
+ const schemaObj = schema.toObject();
39
+ await fs.outputFile(join(capsule.path, getSchemaArtifactPath()), JSON.stringify(schemaObj, null, 2));
40
+ schemaResult.push({
41
+ component,
42
+ startTime,
43
+ endTime: Date.now(),
44
+ });
45
+ } catch (e) {
46
+ this.logger.warn(`failed extracting schema for ${component.id.toString()}`);
47
+ /**
48
+ * @todo once schema extractor is more stable change this to an error
49
+ */
50
+ if (e instanceof Error) {
51
+ schemaResult.push({
52
+ component,
53
+ startTime,
54
+ endTime: Date.now(),
55
+ warnings: [e.message],
56
+ });
57
+ }
58
+ }
59
+ });
60
+ return {
61
+ artifacts: [getSchemaArtifactDef()],
62
+ componentsResults: schemaResult,
63
+ };
64
+ }
65
+ }
66
+
67
+ export function getSchemaArtifactPath() {
68
+ return join(CAPSULE_ARTIFACTS_DIR, 'schema.json');
69
+ }
70
+
71
+ export function getSchemaArtifactDef() {
72
+ const def: ArtifactDefinition = {
73
+ name: SCHEMA_ARTIFACT_NAME,
74
+ rootDir: CAPSULE_ARTIFACTS_DIR,
75
+ globPatterns: ['schema.json'],
76
+ };
77
+
78
+ return def;
79
+ }
package/tsconfig.json CHANGED
@@ -1,38 +1,33 @@
1
1
  {
2
2
  "compilerOptions": {
3
3
  "lib": [
4
- "es2019",
5
- "DOM",
6
- "ES6",
7
- "DOM.Iterable",
8
- "ScriptHost"
4
+ "esnext",
5
+ "dom",
6
+ "dom.Iterable"
9
7
  ],
10
- "target": "es2015",
11
- "module": "CommonJS",
12
- "jsx": "react",
13
- "allowJs": true,
14
- "composite": true,
8
+ "target": "es2020",
9
+ "module": "es2020",
10
+ "jsx": "react-jsx",
15
11
  "declaration": true,
16
12
  "sourceMap": true,
17
- "skipLibCheck": true,
18
13
  "experimentalDecorators": true,
19
- "outDir": "dist",
14
+ "skipLibCheck": true,
20
15
  "moduleResolution": "node",
21
16
  "esModuleInterop": true,
22
- "rootDir": ".",
23
17
  "resolveJsonModule": true,
24
- "emitDeclarationOnly": true,
25
- "emitDecoratorMetadata": true,
26
- "allowSyntheticDefaultImports": true,
27
- "strictPropertyInitialization": false,
28
- "strict": true,
29
- "noImplicitAny": false,
30
- "preserveConstEnums": true
18
+ "allowJs": true,
19
+ "outDir": "dist",
20
+ "emitDeclarationOnly": true
31
21
  },
32
22
  "exclude": [
23
+ "artifacts",
24
+ "public",
33
25
  "dist",
26
+ "node_modules",
27
+ "package.json",
34
28
  "esm.mjs",
35
- "package.json"
29
+ "**/*.cjs",
30
+ "./dist"
36
31
  ],
37
32
  "include": [
38
33
  "**/*",
package/types/asset.d.ts CHANGED
@@ -5,12 +5,12 @@ declare module '*.png' {
5
5
  declare module '*.svg' {
6
6
  import type { FunctionComponent, SVGProps } from 'react';
7
7
 
8
- export const ReactComponent: FunctionComponent<SVGProps<SVGSVGElement> & { title?: string }>;
8
+ export const ReactComponent: FunctionComponent<
9
+ SVGProps<SVGSVGElement> & { title?: string }
10
+ >;
9
11
  const src: string;
10
12
  export default src;
11
13
  }
12
-
13
- // @TODO Gilad
14
14
  declare module '*.jpg' {
15
15
  const value: any;
16
16
  export = value;
@@ -27,3 +27,15 @@ declare module '*.bmp' {
27
27
  const value: any;
28
28
  export = value;
29
29
  }
30
+ declare module '*.otf' {
31
+ const value: any;
32
+ export = value;
33
+ }
34
+ declare module '*.woff' {
35
+ const value: any;
36
+ export = value;
37
+ }
38
+ declare module '*.woff2' {
39
+ const value: any;
40
+ export = value;
41
+ }