@wix/zero-config-implementation 1.69.0 → 1.71.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{index-DIEcXzPZ.js → index-C4cP1dwy.js} +11050 -11169
- package/dist/{index-YRNaMIzt.js → index-DT1jTZEG.js} +1 -1
- package/dist/index.js +1 -1
- package/package.json +2 -2
- package/src/converters/data-item-builder.test.ts +33 -0
- package/src/information-extractors/ts/components.test.ts +52 -0
- package/src/information-extractors/ts/components.ts +3 -1
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { B as t, D as e, E as o, I as n, N as c, P as l, R as i, a as p, V as E, b as m, c as x, d as f, e as d, f as u, h as C, i as I, j as k, k as y, l as A, m as D, n as P, o as R, p as h, q as B, r as M, s as T, t as b, w } from "./index-
|
|
1
|
+
import { B as t, D as e, E as o, I as n, N as c, P as l, R as i, a as p, V as E, b as m, c as x, d as f, e as d, f as u, h as C, i as I, j as k, k as y, l as A, m as D, n as P, o as R, p as h, q as B, r as M, s as T, t as b, w } from "./index-C4cP1dwy.js";
|
|
2
2
|
import "react";
|
|
3
3
|
export {
|
|
4
4
|
t as BaseError,
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"registry": "https://registry.npmjs.org/",
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
7
|
-
"version": "1.
|
|
7
|
+
"version": "1.71.0",
|
|
8
8
|
"description": "Core library for extracting component manifests from JS and CSS files",
|
|
9
9
|
"type": "module",
|
|
10
10
|
"main": "dist/index.js",
|
|
@@ -81,5 +81,5 @@
|
|
|
81
81
|
]
|
|
82
82
|
}
|
|
83
83
|
},
|
|
84
|
-
"falconPackageHash": "
|
|
84
|
+
"falconPackageHash": "d6c8e03493b96fe9947b6b075e997e8ba6e5fea0f79a417f6e26c201"
|
|
85
85
|
}
|
|
@@ -78,3 +78,36 @@ describe('buildDataItem — arrayItems oneof branching', () => {
|
|
|
78
78
|
expect(arrayItems?.dataItem).toBeUndefined()
|
|
79
79
|
})
|
|
80
80
|
})
|
|
81
|
+
|
|
82
|
+
describe('buildDataItem — container dataType', () => {
|
|
83
|
+
const buildProp = (name: string, type: string, resolvedType: ResolvedType): PropInfo => ({
|
|
84
|
+
name,
|
|
85
|
+
type,
|
|
86
|
+
required: false,
|
|
87
|
+
resolvedType,
|
|
88
|
+
})
|
|
89
|
+
|
|
90
|
+
it('maps a React `ReactNode` semantic type to dataType container', () => {
|
|
91
|
+
const result = buildDataItem(
|
|
92
|
+
buildProp('content', 'ReactNode', { kind: 'semantic', value: 'ReactNode', source: '@types/react' }),
|
|
93
|
+
)
|
|
94
|
+
expect(result.isOk()).toBe(true)
|
|
95
|
+
expect(result._unsafeUnwrap().dataType).toBe('container')
|
|
96
|
+
})
|
|
97
|
+
|
|
98
|
+
it('maps a React `ReactElement` semantic type to dataType container', () => {
|
|
99
|
+
const result = buildDataItem(
|
|
100
|
+
buildProp('icon', 'ReactElement', { kind: 'semantic', value: 'ReactElement', source: 'react' }),
|
|
101
|
+
)
|
|
102
|
+
expect(result.isOk()).toBe(true)
|
|
103
|
+
expect(result._unsafeUnwrap().dataType).toBe('container')
|
|
104
|
+
})
|
|
105
|
+
|
|
106
|
+
it('maps a Wix `Container` semantic type to dataType container', () => {
|
|
107
|
+
const result = buildDataItem(
|
|
108
|
+
buildProp('children', 'Container', { kind: 'semantic', value: 'Container', source: '@wix/editor-react-types' }),
|
|
109
|
+
)
|
|
110
|
+
expect(result.isOk()).toBe(true)
|
|
111
|
+
expect(result._unsafeUnwrap().dataType).toBe('container')
|
|
112
|
+
})
|
|
113
|
+
})
|
|
@@ -8,6 +8,16 @@ const propTriggeredFixture = path.resolve(
|
|
|
8
8
|
'../../../../example-components/src/components/DesignStates/Custom/PropTriggered/WithMatchingClass/component.tsx',
|
|
9
9
|
)
|
|
10
10
|
|
|
11
|
+
const childrenContainerFixture = path.resolve(
|
|
12
|
+
__dirname,
|
|
13
|
+
'../../../../example-components/src/components/ChildrenContainer/component.tsx',
|
|
14
|
+
)
|
|
15
|
+
|
|
16
|
+
const inheritedChildrenFixture = path.resolve(
|
|
17
|
+
__dirname,
|
|
18
|
+
'../../../../example-components/src/components/InheritedChildren/component.tsx',
|
|
19
|
+
)
|
|
20
|
+
|
|
11
21
|
describe('TS extractor — ElementState<> trigger detection', () => {
|
|
12
22
|
it('flags an ElementState<>-wrapped prop and unwraps its inner type', async () => {
|
|
13
23
|
const programResult = await compileTsFile(propTriggeredFixture)
|
|
@@ -27,3 +37,45 @@ describe('TS extractor — ElementState<> trigger detection', () => {
|
|
|
27
37
|
expect(component!.props.showLabel.isStateTrigger).toBeUndefined()
|
|
28
38
|
})
|
|
29
39
|
})
|
|
40
|
+
|
|
41
|
+
describe('TS extractor — container children props', () => {
|
|
42
|
+
const containerSemanticType = {
|
|
43
|
+
kind: 'semantic',
|
|
44
|
+
value: 'Container',
|
|
45
|
+
source: '@wix/editor-react-types',
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
it('keeps an undocumented `children: Container` prop and resolves it as a container', async () => {
|
|
49
|
+
const programResult = await compileTsFile(childrenContainerFixture)
|
|
50
|
+
expect(programResult.isOk()).toBe(true)
|
|
51
|
+
const program = programResult._unsafeUnwrap()
|
|
52
|
+
|
|
53
|
+
const components = extractAllComponentInfo(program, childrenContainerFixture)
|
|
54
|
+
const component = components.find((candidate) => candidate.componentName === 'ChildrenContainer')
|
|
55
|
+
expect(component).toBeDefined()
|
|
56
|
+
|
|
57
|
+
// `children` survives even without a JSDoc comment (skipChildrenPropWithoutDoc: false)
|
|
58
|
+
// and resolves to the Wix `Container` semantic type.
|
|
59
|
+
const childrenProp = component!.props.children
|
|
60
|
+
expect(childrenProp).toBeDefined()
|
|
61
|
+
expect(childrenProp.resolvedType).toEqual(containerSemanticType)
|
|
62
|
+
|
|
63
|
+
// A named container prop resolves the same way.
|
|
64
|
+
expect(component!.props.content?.resolvedType).toEqual(containerSemanticType)
|
|
65
|
+
})
|
|
66
|
+
|
|
67
|
+
it('still drops React-implicit `children` from PropsWithChildren (React 17 FC proxy)', async () => {
|
|
68
|
+
const programResult = await compileTsFile(inheritedChildrenFixture)
|
|
69
|
+
expect(programResult.isOk()).toBe(true)
|
|
70
|
+
const program = programResult._unsafeUnwrap()
|
|
71
|
+
|
|
72
|
+
const components = extractAllComponentInfo(program, inheritedChildrenFixture)
|
|
73
|
+
const component = components.find((candidate) => candidate.componentName === 'InheritedChildren')
|
|
74
|
+
expect(component).toBeDefined()
|
|
75
|
+
|
|
76
|
+
// The `children` member comes from `@types/react` (PropsWithChildren), so sharedPropFilter
|
|
77
|
+
// removes it — no spurious container slot. This mirrors React 17's implicit FC children.
|
|
78
|
+
expect(component!.props.children).toBeUndefined()
|
|
79
|
+
expect(component!.props.label).toBeDefined()
|
|
80
|
+
})
|
|
81
|
+
})
|
|
@@ -23,7 +23,9 @@ const sharedPropFilter = (prop: PropItem) => {
|
|
|
23
23
|
const sharedParserOptions = {
|
|
24
24
|
shouldRemoveUndefinedFromOptional: true,
|
|
25
25
|
shouldIncludePropTagMap: true,
|
|
26
|
-
|
|
26
|
+
// historically `children` were skipped as in older versions of React they ALWAYS were present in props
|
|
27
|
+
// as we using newer React versions, we don't need to skip them
|
|
28
|
+
skipChildrenPropWithoutDoc: false,
|
|
27
29
|
propFilter: sharedPropFilter,
|
|
28
30
|
// react-docgen-typescript resolves `commentSource` for known wrapper types (MemoExoticComponent,
|
|
29
31
|
// ForwardRefExoticComponent, etc.) but not for NamedExoticComponent — the base type that
|