@knapsack/spec-utils 4.93.2--canary.7717.1130ad7.0 → 4.93.2--canary.40ba128.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/analyze-type.d.ts.map +1 -1
- package/dist/analyze-type.js +22 -13
- package/dist/analyze-type.js.map +1 -1
- package/dist/test-fixtures/index.d.ts +1 -0
- package/dist/test-fixtures/index.d.ts.map +1 -1
- package/dist/test-fixtures/index.js +1 -0
- package/dist/test-fixtures/index.js.map +1 -1
- package/dist/test-fixtures/union-props.d.ts +30 -0
- package/dist/test-fixtures/union-props.d.ts.map +1 -0
- package/dist/test-fixtures/union-props.js +17 -0
- package/dist/test-fixtures/union-props.js.map +1 -0
- package/package.json +10 -10
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyze-type.d.ts","sourceRoot":"","sources":["../src/analyze-type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EACL,KAAK,QAAQ,EAGd,MAAM,YAAY,CAAC;AA6CpB;;GAEG;AACH,wBAAgB,WAAW,CAAC,EAC1B,IAAI,EACJ,OAAO,EACP,UAAU,EACV,YAA0C,EAC1C,KAAS;AACT;;;GAGG;AACH,QAAY,GACb,EAAE;IACD,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC;IACd,OAAO,EAAE,EAAE,CAAC,WAAW,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,QAAQ,
|
|
1
|
+
{"version":3,"file":"analyze-type.d.ts","sourceRoot":"","sources":["../src/analyze-type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EACL,KAAK,QAAQ,EAGd,MAAM,YAAY,CAAC;AA6CpB;;GAEG;AACH,wBAAgB,WAAW,CAAC,EAC1B,IAAI,EACJ,OAAO,EACP,UAAU,EACV,YAA0C,EAC1C,KAAS;AACT;;;GAGG;AACH,QAAY,GACb,EAAE;IACD,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC;IACd,OAAO,EAAE,EAAE,CAAC,WAAW,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,QAAQ,CAqSX"}
|
package/dist/analyze-type.js
CHANGED
|
@@ -58,21 +58,18 @@ maxDepth = 3, }) {
|
|
|
58
58
|
},
|
|
59
59
|
isOptional,
|
|
60
60
|
};
|
|
61
|
-
//
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
return result;
|
|
69
|
-
}
|
|
70
|
-
let result;
|
|
61
|
+
// Classify leaf types BEFORE the max-depth guard. Primitives and literals
|
|
62
|
+
// are terminal (they never recurse), so resolving them at any depth is safe
|
|
63
|
+
// and cannot cause runaway recursion. Doing this first ensures string/number
|
|
64
|
+
// literal unions nested past `maxDepth` are still recognized: e.g. a
|
|
65
|
+
// component whose props is a union type (`A | B`) pushes its enum literals an
|
|
66
|
+
// extra level deep, and if the guard ran first they'd collapse to `misc` and
|
|
67
|
+
// later degrade to a plain `string` instead of an enum.
|
|
71
68
|
// Handle primitive types first
|
|
72
69
|
if (tsRawType === 'number' ||
|
|
73
70
|
tsRawType === 'boolean' ||
|
|
74
71
|
tsRawType === 'string') {
|
|
75
|
-
result = {
|
|
72
|
+
const result = {
|
|
76
73
|
type: tsRawType,
|
|
77
74
|
...typeInfoCommon,
|
|
78
75
|
};
|
|
@@ -81,7 +78,7 @@ maxDepth = 3, }) {
|
|
|
81
78
|
}
|
|
82
79
|
// Handle literal types
|
|
83
80
|
if (type.isStringLiteral()) {
|
|
84
|
-
result = {
|
|
81
|
+
const result = {
|
|
85
82
|
type: 'stringLiteral',
|
|
86
83
|
value: type.value,
|
|
87
84
|
...typeInfoCommon,
|
|
@@ -90,7 +87,7 @@ maxDepth = 3, }) {
|
|
|
90
87
|
return result;
|
|
91
88
|
}
|
|
92
89
|
if (type.isNumberLiteral()) {
|
|
93
|
-
result = {
|
|
90
|
+
const result = {
|
|
94
91
|
type: 'numberLiteral',
|
|
95
92
|
value: type.value,
|
|
96
93
|
...typeInfoCommon,
|
|
@@ -98,6 +95,18 @@ maxDepth = 3, }) {
|
|
|
98
95
|
visitedTypes.set(typeId, result);
|
|
99
96
|
return result;
|
|
100
97
|
}
|
|
98
|
+
// If we've reached max depth, return a simplified type. This now only bounds
|
|
99
|
+
// the recursive/composite branches below (union, array, intersection,
|
|
100
|
+
// object); leaf types are already handled above.
|
|
101
|
+
if (depth >= maxDepth) {
|
|
102
|
+
const result = {
|
|
103
|
+
type: 'misc',
|
|
104
|
+
...typeInfoCommon,
|
|
105
|
+
};
|
|
106
|
+
visitedTypes.set(typeId, result);
|
|
107
|
+
return result;
|
|
108
|
+
}
|
|
109
|
+
let result;
|
|
101
110
|
// Create a placeholder to avoid infinite recursion
|
|
102
111
|
const placeholder = {
|
|
103
112
|
type: 'misc',
|
package/dist/analyze-type.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyze-type.js","sourceRoot":"","sources":["../src/analyze-type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAM5B,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,4CAA4C;AAC5C,MAAM,SAAS,GAAG,IAAI,OAAO,EAAmB,CAAC;AAEjD;;;GAGG;AACH,SAAS,SAAS,CAAC,IAAa,EAAE,OAAuB;IACvD,+CAA+C;IAC/C,MAAM,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,8DAA8D;IAC9D,+CAA+C;IAC/C,MAAM,UAAU,GAAG,OAAO,CAAC,YAAY,CACrC,IAAI,EACJ,SAAS,EAET,EAAE,CAAC,eAAe,CAAC,YAAY,CAChC,CAAC;IAEF,4DAA4D;IAC5D,iDAAiD;IACjD,MAAM,YAAY,GAAG,CAAC,UAAU,CAAC,CAAC;IAElC,+BAA+B;IAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;IAChC,IAAI,MAAM,EAAE,CAAC;QACX,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IACtC,CAAC;IAED,2CAA2C;IAC3C,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAEtC,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACrC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC3B,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,EAC1B,IAAI,EACJ,OAAO,EACP,UAAU,EACV,YAAY,GAAG,IAAI,GAAG,EAAoB,EAC1C,KAAK,GAAG,CAAC;AACT;;;GAGG;AACH,QAAQ,GAAG,CAAC,GAQb;IACC,qCAAqC;IACrC,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAExC,4CAA4C;IAC5C,IAAI,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7B,OAAO,YAAY,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC;IACnC,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,CACpC,IAAI,EACJ,SAAS,EAET,EAAE,CAAC,eAAe,CAAC,uBAAuB;QACxC,EAAE,CAAC,eAAe,CAAC,YAAY,CAClC,CAAC;IACF,MAAM,SAAS,GAAG,WAAW,CAAC;QAC5B,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,UAAU,EAAE,EAAE,CAAC,SAAS;KACzB,CAAC,CAAC;IACH,MAAM,cAAc,GAAmB;QACrC,SAAS;QACT,UAAU,EAAE;YACV,SAAS;SACV;QACD,UAAU;KACX,CAAC;IAEF,
|
|
1
|
+
{"version":3,"file":"analyze-type.js","sourceRoot":"","sources":["../src/analyze-type.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/test-fixtures/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/test-fixtures/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/test-fixtures/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/test-fixtures/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fixtures reproducing the "component whose props is a union type" shape.
|
|
3
|
+
*
|
|
4
|
+
* When a component's props parameter is a union of interfaces (`A | B`) that
|
|
5
|
+
* share enum props, the shared enum literals sit one level deeper than usual
|
|
6
|
+
* (`function → props-union → interface → prop-union → literal`). This is the
|
|
7
|
+
* exact shape of GSK's `Button` (`ButtonVariantProps | LinkVariantProps`) and
|
|
8
|
+
* previously caused `size`/`color` to infer as a plain `string` instead of an
|
|
9
|
+
* enum, because the literals were nested past `maxDepth`.
|
|
10
|
+
*/
|
|
11
|
+
interface UnionButtonCommonProps {
|
|
12
|
+
/** The size variant */
|
|
13
|
+
size?: 'sm' | 'md' | 'lg' | 'xl';
|
|
14
|
+
/** The color variant */
|
|
15
|
+
color?: 'primary' | 'secondary' | 'tertiary';
|
|
16
|
+
isDisabled?: boolean;
|
|
17
|
+
}
|
|
18
|
+
interface UnionButtonVariantProps extends UnionButtonCommonProps {
|
|
19
|
+
type?: 'button' | 'submit' | 'reset';
|
|
20
|
+
}
|
|
21
|
+
interface UnionLinkVariantProps extends UnionButtonCommonProps {
|
|
22
|
+
href?: string;
|
|
23
|
+
}
|
|
24
|
+
export type UnionButtonProps = UnionButtonVariantProps | UnionLinkVariantProps;
|
|
25
|
+
/**
|
|
26
|
+
* A button-like component whose props is a union type.
|
|
27
|
+
*/
|
|
28
|
+
export declare function UnionPropsButton(props: UnionButtonProps): UnionButtonProps;
|
|
29
|
+
export {};
|
|
30
|
+
//# sourceMappingURL=union-props.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"union-props.d.ts","sourceRoot":"","sources":["../../src/test-fixtures/union-props.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,UAAU,sBAAsB;IAC9B,uBAAuB;IACvB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IACjC,wBAAwB;IACxB,KAAK,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,UAAU,CAAC;IAC7C,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,UAAU,uBAAwB,SAAQ,sBAAsB;IAC9D,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;CACtC;AAED,UAAU,qBAAsB,SAAQ,sBAAsB;IAC5D,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,gBAAgB,GAAG,uBAAuB,GAAG,qBAAqB,CAAC;AAE/E;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,oBAEvD"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fixtures reproducing the "component whose props is a union type" shape.
|
|
3
|
+
*
|
|
4
|
+
* When a component's props parameter is a union of interfaces (`A | B`) that
|
|
5
|
+
* share enum props, the shared enum literals sit one level deeper than usual
|
|
6
|
+
* (`function → props-union → interface → prop-union → literal`). This is the
|
|
7
|
+
* exact shape of GSK's `Button` (`ButtonVariantProps | LinkVariantProps`) and
|
|
8
|
+
* previously caused `size`/`color` to infer as a plain `string` instead of an
|
|
9
|
+
* enum, because the literals were nested past `maxDepth`.
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* A button-like component whose props is a union type.
|
|
13
|
+
*/
|
|
14
|
+
export function UnionPropsButton(props) {
|
|
15
|
+
return props;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=union-props.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"union-props.js","sourceRoot":"","sources":["../../src/test-fixtures/union-props.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAoBH;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAuB;IACtD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@knapsack/spec-utils",
|
|
3
3
|
"description": "",
|
|
4
|
-
"version": "4.93.2--canary.
|
|
4
|
+
"version": "4.93.2--canary.40ba128.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
7
7
|
".": {
|
|
@@ -20,19 +20,19 @@
|
|
|
20
20
|
"test": "vitest run"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@knapsack/utils": "4.93.2--canary.
|
|
23
|
+
"@knapsack/utils": "4.93.2--canary.40ba128.0",
|
|
24
24
|
"json-stable-stringify": "^1.3.0",
|
|
25
25
|
"quick-lru": "^7.3.0",
|
|
26
26
|
"typescript": "^5.9.3"
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
29
|
-
"@knapsack/angular-sandbox-components": "4.93.2--canary.
|
|
30
|
-
"@knapsack/eslint-config-starter": "4.93.2--canary.
|
|
31
|
-
"@knapsack/file-utils": "4.93.2--canary.
|
|
32
|
-
"@knapsack/prettier-config": "4.93.2--canary.
|
|
33
|
-
"@knapsack/sandbox-components": "4.93.2--canary.
|
|
34
|
-
"@knapsack/types": "4.93.2--canary.
|
|
35
|
-
"@knapsack/typescript-config-starter": "4.93.2--canary.
|
|
29
|
+
"@knapsack/angular-sandbox-components": "4.93.2--canary.40ba128.0",
|
|
30
|
+
"@knapsack/eslint-config-starter": "4.93.2--canary.40ba128.0",
|
|
31
|
+
"@knapsack/file-utils": "4.93.2--canary.40ba128.0",
|
|
32
|
+
"@knapsack/prettier-config": "4.93.2--canary.40ba128.0",
|
|
33
|
+
"@knapsack/sandbox-components": "4.93.2--canary.40ba128.0",
|
|
34
|
+
"@knapsack/types": "4.93.2--canary.40ba128.0",
|
|
35
|
+
"@knapsack/typescript-config-starter": "4.93.2--canary.40ba128.0",
|
|
36
36
|
"@mui/material": "^5.18.0",
|
|
37
37
|
"@types/node": "^22.19.11",
|
|
38
38
|
"eslint": "^9.20.0",
|
|
@@ -47,5 +47,5 @@
|
|
|
47
47
|
"directory": "apps/client/libs/spec-utils",
|
|
48
48
|
"type": "git"
|
|
49
49
|
},
|
|
50
|
-
"gitHead": "
|
|
50
|
+
"gitHead": "40ba128c2435e26a2879cc55778eb4ec11b50ca6"
|
|
51
51
|
}
|