@teambit/schema 1.0.927 → 1.0.929

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 +1 @@
1
- {"version":3,"names":["_path","data","_interopRequireDefault","require","_fsExtra","_chai","_semanticsEntities","_chaiSubset","_tracker","_harmonyTesting","_workspaceTesting","_componentId","_workspace","_schema","e","__esModule","default","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","get","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 { expect, use } from 'chai';\nimport { APISchema, UnknownSchema } from '@teambit/semantics.entities.semantic-schema';\nimport chaiSubset from 'chai-subset';\nimport type { TrackerMain } from '@teambit/tracker';\nimport { TrackerAspect } from '@teambit/tracker';\nimport { loadAspect, loadManyAspects } from '@teambit/harmony.testing.load-aspect';\nimport type { WorkspaceData } from '@teambit/workspace.testing.mock-workspace';\nimport { mockWorkspace, destroyWorkspace } from '@teambit/workspace.testing.mock-workspace';\nimport { ComponentID } from '@teambit/component-id';\nimport type { Workspace } from '@teambit/workspace';\nimport { WorkspaceAspect } from '@teambit/workspace';\nimport type { SchemaMain } from './schema.main.runtime';\nimport { SchemaAspect } from './schema.aspect';\n\nuse(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 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 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 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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","ignoreList":[]}
1
+ {"version":3,"names":["_path","data","_interopRequireDefault","require","_fsExtra","_chai","_semanticsEntities","_semanticsEntities2","_chaiSubset","_tracker","_harmonyTesting","_workspaceTesting","_componentId","_workspace","_schema","e","__esModule","default","ownKeys","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","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","get","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","diffResult","v1JsonPath","v1Json","baseSchema","compDirV2","srcV2","ws","schemaMain","compIdV2","compV2","compareSchema","assessor","getImpactAssessor","computeAPIDiff","result","serializeDiffResult","hasChanges","added","greaterThan","addedNames","changes","c","status","map","exportName","include","modified","find","impact","diff","serializeChange","change","visibility","schemaType","baseSignature","compareSignature","details","d","changeKind","description","from","undefined","removed","breaking","nonBreaking","patch","publicChanges","internalChanges","getCurrentDir","currentDir","__dirname","endsWith","sep","slice"],"sources":["schema.spec.ts"],"sourcesContent":["import path from 'path';\nimport fs from 'fs-extra';\nimport { expect, use } from 'chai';\nimport { APISchema, UnknownSchema } from '@teambit/semantics.entities.semantic-schema';\nimport { computeAPIDiff } from '@teambit/semantics.entities.semantic-schema-diff';\nimport type { APIDiffResult } from '@teambit/semantics.entities.semantic-schema-diff';\nimport chaiSubset from 'chai-subset';\nimport type { TrackerMain } from '@teambit/tracker';\nimport { TrackerAspect } from '@teambit/tracker';\nimport { loadAspect, loadManyAspects } from '@teambit/harmony.testing.load-aspect';\nimport type { WorkspaceData } from '@teambit/workspace.testing.mock-workspace';\nimport { mockWorkspace, destroyWorkspace } from '@teambit/workspace.testing.mock-workspace';\nimport { ComponentID } from '@teambit/component-id';\nimport type { Workspace } from '@teambit/workspace';\nimport { WorkspaceAspect } from '@teambit/workspace';\nimport type { SchemaMain } from './schema.main.runtime';\nimport { SchemaAspect } from './schema.aspect';\n\nuse(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 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 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 expect(apiSchema.module.exports[0].location).to.deep.equal({ file: 'index.ts', line: 21, character: 14 });\n });\n });\n describe('schema diff', () => {\n let diffResult: APIDiffResult;\n\n before(async () => {\n // Use v1 schema from the golden file (already validated by getSchema test)\n const v1JsonPath = path.join(getMockDir(), 'button-schemas.json');\n const v1Json = fs.readJsonSync(v1JsonPath);\n const baseSchema = schema.getSchemaFromObject(v1Json);\n\n // Extract v2 schema from the button-v2 fixture\n const { workspacePath } = workspaceData;\n const compDirV2 = path.join(workspacePath, 'button-v2');\n const srcV2 = path.join(getMockDir(), 'button-v2');\n await fs.copy(srcV2, compDirV2);\n const harmony = await loadManyAspects([WorkspaceAspect, SchemaAspect, TrackerAspect], workspacePath);\n const ws = harmony.get<Workspace>(WorkspaceAspect.id);\n const tracker = harmony.get<TrackerMain>(TrackerAspect.id);\n await tracker.track({ rootDir: compDirV2, defaultScope: 'org.scope' });\n await ws.bitMap.write();\n const schemaMain = harmony.get<SchemaMain>(SchemaAspect.id);\n const compIdV2 = await ws.resolveComponentId('button-v2');\n const compV2 = await ws.get(compIdV2);\n const compareSchema = await schemaMain.getSchema(compV2, true);\n\n // Compute diff using impact assessor from the aspect\n const assessor = schemaMain.getImpactAssessor();\n diffResult = computeAPIDiff(baseSchema, compareSchema, assessor);\n });\n\n it('should produce a diff result matching the golden file', () => {\n const result = serializeDiffResult(diffResult);\n const expectedJsonPath = path.join(getMockDir(), 'button-diff.json');\n // uncomment the next line temporarily to sync the expected json with new diff changes\n // fs.outputFileSync(expectedJsonPath, JSON.stringify(result, undefined, 2));\n const expectedJson = fs.readJsonSync(expectedJsonPath);\n expect(result).to.containSubset(expectedJson);\n });\n\n it('should detect changes', () => {\n expect(diffResult.hasChanges).to.be.true;\n });\n\n it('should detect added exports', () => {\n expect(diffResult.added).to.be.greaterThan(0);\n const addedNames = diffResult.changes.filter((c) => c.status === 'ADDED').map((c) => c.exportName);\n expect(addedNames).to.include('newUtility');\n });\n\n it('should detect modified exports', () => {\n expect(diffResult.modified).to.be.greaterThan(0);\n });\n\n it('should correctly assess impact of non-breaking additions', () => {\n const added = diffResult.changes.find((c) => c.exportName === 'newUtility');\n expect(added?.impact).to.equal('NON_BREAKING');\n });\n });\n});\n\n/**\n * Serialize a diff result for golden file comparison.\n * Strips raw schema nodes (baseNode/compareNode) since they're large and tested separately.\n */\nfunction serializeDiffResult(diff: APIDiffResult): Record<string, any> {\n const serializeChange = (change: any) => ({\n status: change.status,\n visibility: change.visibility,\n impact: change.impact,\n exportName: change.exportName,\n schemaType: change.schemaType,\n ...(change.baseSignature ? { baseSignature: change.baseSignature } : {}),\n ...(change.compareSignature ? { compareSignature: change.compareSignature } : {}),\n ...(change.changes && change.changes.length > 0\n ? {\n details: change.changes.map((d: any) => ({\n changeKind: d.changeKind,\n description: d.description,\n impact: d.impact,\n ...(d.from !== undefined ? { from: d.from } : {}),\n ...(d.to !== undefined ? { to: d.to } : {}),\n })),\n }\n : {}),\n });\n\n return {\n hasChanges: diff.hasChanges,\n impact: diff.impact,\n added: diff.added,\n removed: diff.removed,\n modified: diff.modified,\n breaking: diff.breaking,\n nonBreaking: diff.nonBreaking,\n patch: diff.patch,\n publicChanges: diff.publicChanges.map(serializeChange),\n internalChanges: diff.internalChanges.map(serializeChange),\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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","ignoreList":[]}
@@ -0,0 +1,139 @@
1
+ {
2
+ "hasChanges": true,
3
+ "impact": "NON_BREAKING",
4
+ "added": 1,
5
+ "removed": 0,
6
+ "modified": 7,
7
+ "breaking": 0,
8
+ "nonBreaking": 6,
9
+ "patch": 2,
10
+ "publicChanges": [
11
+ {
12
+ "status": "MODIFIED",
13
+ "visibility": "public",
14
+ "impact": "NON_BREAKING",
15
+ "exportName": "myFunc",
16
+ "schemaType": "Function",
17
+ "baseSignature": "function myFunc(a?: number, b?: number): number",
18
+ "compareSignature": "function myFunc(a?: number, b?: number, c?: number): number",
19
+ "details": [
20
+ {
21
+ "changeKind": "parameter-added",
22
+ "description": "parameter 'c: number' added (optional)",
23
+ "impact": "NON_BREAKING",
24
+ "to": "c?: number"
25
+ },
26
+ {
27
+ "changeKind": "documentation-changed",
28
+ "description": "documentation description and tags changed",
29
+ "impact": "PATCH",
30
+ "from": "General comment of the myFunc",
31
+ "to": "Updated comment for myFunc"
32
+ }
33
+ ]
34
+ },
35
+ {
36
+ "status": "MODIFIED",
37
+ "visibility": "public",
38
+ "impact": "PATCH",
39
+ "exportName": "ButtonElementType",
40
+ "schemaType": "Type Alias",
41
+ "baseSignature": "type ButtonElementType = \"a\" | \"button\"",
42
+ "compareSignature": "type ButtonElementType = \"a\" | \"button\" | \"div\"",
43
+ "details": [
44
+ {
45
+ "changeKind": "type-definition-changed",
46
+ "description": "type definition changed",
47
+ "impact": "PATCH",
48
+ "from": "type ButtonElementType = \"a\" | \"button\"",
49
+ "to": "type ButtonElementType = \"a\" | \"button\" | \"div\""
50
+ }
51
+ ]
52
+ },
53
+ {
54
+ "status": "MODIFIED",
55
+ "visibility": "public",
56
+ "impact": "PATCH",
57
+ "exportName": "ButtonProps",
58
+ "schemaType": "Type Alias",
59
+ "details": [
60
+ {
61
+ "changeKind": "type-definition-changed",
62
+ "description": "type definition changed",
63
+ "impact": "PATCH",
64
+ "from": "type ButtonProps = any",
65
+ "to": "type ButtonProps = any"
66
+ }
67
+ ]
68
+ },
69
+ {
70
+ "status": "MODIFIED",
71
+ "visibility": "public",
72
+ "impact": "NON_BREAKING",
73
+ "exportName": "Bar",
74
+ "schemaType": "Class",
75
+ "details": [
76
+ {
77
+ "changeKind": "member-added",
78
+ "description": "Function 'bar' added: (method) Bar.bar(): void",
79
+ "impact": "NON_BREAKING",
80
+ "to": "(method) Bar.bar(): void"
81
+ }
82
+ ]
83
+ },
84
+ {
85
+ "status": "MODIFIED",
86
+ "visibility": "public",
87
+ "impact": "NON_BREAKING",
88
+ "exportName": "ClassSomething",
89
+ "schemaType": "Class",
90
+ "details": [
91
+ {
92
+ "changeKind": "member-added",
93
+ "description": "Function 'newMethod' added: (method) ClassSomething.newMethod(): string",
94
+ "impact": "NON_BREAKING",
95
+ "to": "(method) ClassSomething.newMethod(): string"
96
+ }
97
+ ]
98
+ },
99
+ {
100
+ "status": "MODIFIED",
101
+ "visibility": "public",
102
+ "impact": "NON_BREAKING",
103
+ "exportName": "Hello",
104
+ "schemaType": "Interface",
105
+ "details": [
106
+ {
107
+ "changeKind": "member-added",
108
+ "description": "Variable 'newProp' added (optional): (property) Hello.newProp?: number | undefined",
109
+ "impact": "NON_BREAKING",
110
+ "to": "(property) Hello.newProp?: number | undefined"
111
+ }
112
+ ]
113
+ },
114
+ {
115
+ "status": "MODIFIED",
116
+ "visibility": "public",
117
+ "impact": "NON_BREAKING",
118
+ "exportName": "Food",
119
+ "schemaType": "Enum",
120
+ "details": [
121
+ {
122
+ "changeKind": "enum-member-added",
123
+ "description": "enum member 'Shawarma' added",
124
+ "impact": "NON_BREAKING",
125
+ "to": "(enum member) Food.Shawarma = 3"
126
+ }
127
+ ]
128
+ },
129
+ {
130
+ "status": "ADDED",
131
+ "visibility": "public",
132
+ "impact": "NON_BREAKING",
133
+ "exportName": "newUtility",
134
+ "schemaType": "Function",
135
+ "compareSignature": "function newUtility(x: number): number"
136
+ }
137
+ ],
138
+ "internalChanges": []
139
+ }
@@ -0,0 +1,33 @@
1
+ /* eslint-disable no-alert */
2
+ /* eslint-disable @typescript-eslint/no-unused-vars */
3
+ import React from 'react';
4
+ import { Button } from './button';
5
+
6
+ export const BasicButton = () => {
7
+ return <Button>click me</Button>;
8
+ };
9
+
10
+ /**
11
+ * example of passing a JSX Element as a parameter
12
+ */
13
+ // eslint-disable-next-line react/prop-types
14
+ export function Footer({ children = <BasicButton /> }) {
15
+ return <Button>{children}</Button>;
16
+ }
17
+
18
+ export const ButtonWithCustomStyles = () => {
19
+ return <Button style={{ background: 'red' }}>click me</Button>;
20
+ };
21
+
22
+ export const ButtonWithIcon = () => {
23
+ return (
24
+ <Button>
25
+ {/* <Image src="https://static.bit.dev/bit-logo.svg" /> */}
26
+ click me
27
+ </Button>
28
+ );
29
+ };
30
+
31
+ export const ButtonAsALink = () => {
32
+ return <Button href="https://bit.dev">Bit</Button>;
33
+ };
@@ -0,0 +1,58 @@
1
+ import React, { ReactNode, useRef } from 'react';
2
+ // @ts-ignore
3
+ // import { useButton } from '@react-aria/button';
4
+ import { Link } from '@teambit/base-react.navigation.link';
5
+
6
+ export type ButtonElementType = 'a' | 'button' | 'div';
7
+
8
+ export type ButtonProps = {
9
+ /**
10
+ * children of the Button.
11
+ */
12
+ children: ReactNode;
13
+
14
+ /**
15
+ * link to target page. once href is used, Button is considered an A tag.
16
+ */
17
+ href?: string;
18
+
19
+ /**
20
+ * class names to inject.
21
+ */
22
+ className?: string;
23
+
24
+ /**
25
+ * whether the button is disabled.
26
+ */
27
+ disabled?: boolean;
28
+ } & React.ButtonHTMLAttributes<HTMLButtonElement>;
29
+
30
+ export function Button(props: ButtonProps) {
31
+ const ref = useRef();
32
+
33
+ const allProps = {
34
+ ...props,
35
+ };
36
+ const external = props.href?.startsWith('http:') || props.href?.startsWith('https:');
37
+
38
+ return (
39
+ <>
40
+ {!props.href ? (
41
+ // @ts-ignore
42
+ <button className={props.className} ref={ref} {...allProps}>
43
+ {props.children}
44
+ </button>
45
+ ) : (
46
+ // @ts-ignore
47
+ <Link external={external} ref={ref} className={props.className} {...allProps}>
48
+ {props.children}
49
+ </Link>
50
+ )}
51
+ </>
52
+ );
53
+ }
54
+
55
+ export class Bar {
56
+ foo() {}
57
+ bar() {}
58
+ }
@@ -0,0 +1,214 @@
1
+ /* eslint-disable @typescript-eslint/no-empty-function */
2
+ /* eslint-disable @typescript-eslint/no-shadow */
3
+ /* eslint-disable @typescript-eslint/no-unused-vars */
4
+ /* eslint-disable @typescript-eslint/prefer-as-const */
5
+ /* eslint-disable one-var */
6
+ /* eslint-disable max-classes-per-file */
7
+
8
+ /**
9
+ * Updated comment for myFunc
10
+ * @param a { number } this is A
11
+ * @param b this is B
12
+ * @param c this is C
13
+ * @returns { number } results of adding a, b and c
14
+ */
15
+ export function myFunc(a = 4, b = 5, c = 0): number {
16
+ return a + b + c;
17
+ }
18
+
19
+ export * from './button';
20
+
21
+ export function Hi() {}
22
+
23
+ export const a = 4,
24
+ b: 5 = 5;
25
+
26
+ export * as Compositions from './button.composition';
27
+
28
+ export const HiThere = 'HiThere';
29
+
30
+ export const Function = () => {};
31
+
32
+ export const Array = ['hi', 'there'];
33
+
34
+ class Foo {}
35
+
36
+ class ClassSomething {
37
+ app = '';
38
+ constructor(readonly da: 'dsa') {}
39
+
40
+ a() {
41
+ return new Foo();
42
+ }
43
+ get getter() {
44
+ return 'hi';
45
+ }
46
+
47
+ set setter(a: boolean) {}
48
+
49
+ newMethod(): string {
50
+ return 'new';
51
+ }
52
+ }
53
+
54
+ export { ClassSomething };
55
+
56
+ export type IndexSig = { [key: string]: boolean };
57
+
58
+ export interface Hello {
59
+ propertySig: () => void;
60
+ methodSig(): string;
61
+ newProp?: number;
62
+ }
63
+
64
+ const obj = { a: 1, b: 2 };
65
+
66
+ export const a1: typeof obj = { a: 5, b: 9 };
67
+
68
+ export type TypeOperator = keyof typeof obj;
69
+
70
+ // this is for Jump in the definition
71
+ class Bar {
72
+ foo() {}
73
+ }
74
+ export const getBar = (bar: Bar) => new Bar();
75
+
76
+ export const tuple = ([a, b, c]: [string, Function, Record<string, any>]) => {};
77
+
78
+ export enum Food {
79
+ Falafel,
80
+ Hummus,
81
+ Tahini,
82
+ Shawarma,
83
+ }
84
+
85
+ export async function getPromise(): Promise<string> {
86
+ return 'promise';
87
+ }
88
+
89
+ class T1 {}
90
+ class T2 {}
91
+ class T3<T, K> {}
92
+ export type TypeRefWithArgs = T3<T1, T2>;
93
+
94
+ export type ParenthesizedType = (T1 | T2)[];
95
+
96
+ export function typePredicateFn(str: any): str is string {
97
+ return str;
98
+ }
99
+
100
+ export function typePredicateNoTypeFn(condition: any, msg?: string): asserts condition {}
101
+
102
+ export async function objectBindingElements({ prop = 1 }) {
103
+ return prop;
104
+ }
105
+ export async function arrayBindingElements([prop]: [string]) {
106
+ return prop;
107
+ }
108
+
109
+ interface config {
110
+ someField: { a: string; b: boolean };
111
+ }
112
+ export type IndexedAccessType = config['someField'];
113
+
114
+ const computedName = 'str';
115
+ export interface ComputedNameWithType {
116
+ [computedName]: boolean;
117
+ }
118
+ export interface ComputedNameNoType {
119
+ [computedName];
120
+ }
121
+
122
+ type World1 = 'world1-a' | 'world1-b';
123
+ type World2 = 'world2';
124
+ export type templateLiteralType = `hello ${World1} hi ${World2}`;
125
+
126
+ export interface CallSignatureWithTypeParams {
127
+ <T>(a: string): T;
128
+ }
129
+
130
+ /**
131
+ * Conditional Generic Type
132
+ */
133
+ export type If<T, U, Y, N> = T extends U ? Y : N;
134
+
135
+ export function genericFunction<T>(a: T) {
136
+ return function <T>(a: T) {};
137
+ }
138
+
139
+ export const gfnc2 = genericFunction<string>('');
140
+
141
+ export function LogMethod(message: string) {
142
+ return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) {
143
+ const originalMethod = descriptor.value;
144
+ descriptor.value = function (...args: any[]) {
145
+ console.log(`Logging: ${message}`);
146
+ return originalMethod.apply(this, args);
147
+ };
148
+ };
149
+ }
150
+
151
+ export function CustomClassDecorator(config: {
152
+ name: string;
153
+ description: string;
154
+ fn?: () => string;
155
+ class?: ClassSomething;
156
+ arr?: [
157
+ string,
158
+ number,
159
+ boolean,
160
+ boolean,
161
+ number | undefined,
162
+ (a: string) => void,
163
+ { a: string; b: number },
164
+ ClassSomething,
165
+ ];
166
+ }) {
167
+ return function (target: any) {
168
+ console.log(`Class ${config.name} - ${config.description}`);
169
+ };
170
+ }
171
+
172
+ @CustomClassDecorator({ name: 'ExampleClass2', description: 'This is an example class 2' })
173
+ export class ExampleDecoratorOne {
174
+ @LogMethod('This is a log message')
175
+ exampleMethod() {
176
+ // Method logic
177
+ }
178
+ }
179
+
180
+ export function ValidateArgs(config: { type: string; required: boolean }) {
181
+ return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) {
182
+ const originalMethod = descriptor.value;
183
+ descriptor.value = function (...args: any[]) {
184
+ if (args[0] && typeof args[0] !== config.type) {
185
+ throw new Error('Invalid argument type');
186
+ }
187
+ if (config.required && !args[0]) {
188
+ throw new Error('Argument is required');
189
+ }
190
+ return originalMethod.apply(this, args);
191
+ };
192
+ };
193
+ }
194
+
195
+ @CustomClassDecorator({
196
+ name: 'ExampleClass',
197
+ description: 'This is an example class',
198
+ fn: () => 'hi',
199
+ class: new ClassSomething('dsa'),
200
+ arr: ['hi', 5, true, false, undefined, () => {}, { a: 'hi', b: 5 }, new ClassSomething('dsa')],
201
+ })
202
+ export class ExampleDecoratorTwo {
203
+ @ValidateArgs({ type: 'string', required: true })
204
+ exampleMethod(input: string) {
205
+ // Method logic
206
+ }
207
+ }
208
+
209
+ /**
210
+ * A new utility function added in v2
211
+ */
212
+ export function newUtility(x: number): number {
213
+ return x * 2;
214
+ }
@@ -0,0 +1,19 @@
1
+ {
2
+ "compilerOptions": {
3
+ "jsx": "react",
4
+ "experimentalDecorators": true,
5
+ "emitDecoratorMetadata": true,
6
+ "strict": true,
7
+ "moduleResolution": "node",
8
+ "module": "commonjs",
9
+ "target": "es2015",
10
+ "skipLibCheck": true,
11
+ "noImplicitAny": false,
12
+ "preserveConstEnums": true,
13
+ "strictPropertyInitialization": false,
14
+ "esModuleInterop": true,
15
+ "resolveJsonModule": true,
16
+ "sourceMap": true,
17
+ "outDir": "./dist"
18
+ }
19
+ }
package/package.json CHANGED
@@ -1,33 +1,35 @@
1
1
  {
2
2
  "name": "@teambit/schema",
3
- "version": "1.0.927",
3
+ "version": "1.0.929",
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.927"
9
+ "version": "1.0.929"
10
10
  },
11
11
  "dependencies": {
12
+ "chalk": "4.1.2",
12
13
  "p-map-series": "2.1.0",
13
14
  "graphql-tag": "2.12.1",
14
15
  "graphql-type-json": "0.3.2",
15
16
  "fs-extra": "10.0.0",
16
- "@teambit/semantics.entities.semantic-schema": "0.0.100",
17
+ "@teambit/semantics.entities.semantic-schema": "0.0.101",
18
+ "@teambit/semantics.entities.semantic-schema-diff": "0.0.1",
17
19
  "@teambit/harmony": "0.4.7",
18
- "@teambit/cli": "0.0.1307",
19
20
  "@teambit/legacy.constants": "0.0.24",
20
- "@teambit/logger": "0.0.1400",
21
21
  "@teambit/defender.prettier.config-mutator": "0.0.116",
22
22
  "@teambit/scope.network": "0.0.103",
23
- "@teambit/envs": "1.0.927",
24
- "@teambit/component": "1.0.927",
25
- "@teambit/formatter": "1.0.927",
26
- "@teambit/graphql": "1.0.927",
27
- "@teambit/builder": "1.0.927",
28
- "@teambit/scope": "1.0.927",
29
- "@teambit/typescript": "1.0.927",
30
- "@teambit/workspace": "1.0.927"
23
+ "@teambit/cli": "0.0.1308",
24
+ "@teambit/component": "1.0.929",
25
+ "@teambit/logger": "0.0.1401",
26
+ "@teambit/envs": "1.0.929",
27
+ "@teambit/formatter": "1.0.929",
28
+ "@teambit/graphql": "1.0.929",
29
+ "@teambit/builder": "1.0.929",
30
+ "@teambit/scope": "1.0.929",
31
+ "@teambit/typescript": "1.0.929",
32
+ "@teambit/workspace": "1.0.929"
31
33
  },
32
34
  "devDependencies": {
33
35
  "@types/fs-extra": "9.0.7",
@@ -36,8 +38,8 @@
36
38
  "@teambit/component-id": "1.2.4",
37
39
  "@teambit/harmony.testing.load-aspect": "0.0.367",
38
40
  "@teambit/harmony.envs.core-aspect-env": "0.1.4",
39
- "@teambit/tracker": "1.0.927",
40
- "@teambit/workspace.testing.mock-workspace": "0.0.168"
41
+ "@teambit/tracker": "1.0.929",
42
+ "@teambit/workspace.testing.mock-workspace": "0.0.169"
41
43
  },
42
44
  "peerDependencies": {
43
45
  "react": "^17.0.0 || ^18.0.0",
@@ -1,8 +0,0 @@
1
- import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.semantics_schema@1.0.927/dist/schema.composition.js';
2
- import * as compositions_1 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.semantics_schema@1.0.927/dist/mock/button/button.composition.js';
3
- import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.semantics_schema@1.0.927/dist/schema.docs.mdx';
4
-
5
- export const compositions = [compositions_0, compositions_1];
6
- export const overview = [overview_0];
7
-
8
- export const compositions_metadata = {"compositions":[{"displayName":"Logo","identifier":"Logo"},{"displayName":"Basic button","identifier":"BasicButton"},{"displayName":"Footer","identifier":"Footer"},{"displayName":"Button with custom styles","identifier":"ButtonWithCustomStyles"},{"displayName":"Button with icon","identifier":"ButtonWithIcon"},{"displayName":"Button as a link","identifier":"ButtonAsALink"}]};