@knapsack/renderer-react 4.71.16--canary.5239.d839174.0 → 4.71.16
Sign up to get free protection for your applications and to get access to all the features.
- package/CHANGELOG.md +60 -0
- package/ava.config.cjs +7 -1
- package/dist/analyze/infer-spec.test.d.ts +2 -0
- package/dist/analyze/infer-spec.test.d.ts.map +1 -0
- package/dist/analyze/infer-spec.test.js +112 -0
- package/dist/analyze/infer-spec.test.js.map +1 -0
- package/dist/analyze/mui.test.d.ts +2 -0
- package/dist/analyze/mui.test.d.ts.map +1 -0
- package/dist/analyze/mui.test.js +60 -0
- package/dist/analyze/mui.test.js.map +1 -0
- package/dist/analyze/pkg-basic.test.d.ts +2 -0
- package/dist/analyze/pkg-basic.test.d.ts.map +1 -0
- package/dist/analyze/pkg-basic.test.js +33 -0
- package/dist/analyze/pkg-basic.test.js.map +1 -0
- package/dist/analyze/pkg-diff-types.test.d.ts +2 -0
- package/dist/analyze/pkg-diff-types.test.d.ts.map +1 -0
- package/dist/analyze/pkg-diff-types.test.js +43 -0
- package/dist/analyze/pkg-diff-types.test.js.map +1 -0
- package/dist/client/init.d.mts +2 -2
- package/dist/client/init.d.mts.map +1 -0
- package/dist/client/init.mjs +39 -3
- package/dist/client/init.mjs.map +1 -1
- package/dist/index.d.ts +3 -45
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +16 -31
- package/dist/index.js.map +1 -1
- package/dist/react-creators.d.ts +20 -0
- package/dist/react-creators.d.ts.map +1 -0
- package/dist/react-creators.js +170 -0
- package/dist/react-creators.js.map +1 -0
- package/dist/{index.d.mts → renderer-react.d.ts} +2 -5
- package/dist/renderer-react.d.ts.map +1 -0
- package/dist/renderer-react.js +569 -0
- package/dist/renderer-react.js.map +1 -0
- package/dist/types.d.ts +19 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/dist/utils.d.ts +28 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +500 -0
- package/dist/utils.js.map +1 -0
- package/dist/utils.test.d.ts +2 -0
- package/dist/utils.test.d.ts.map +1 -0
- package/dist/utils.test.js +59 -0
- package/dist/utils.test.js.map +1 -0
- package/package.json +23 -27
- package/prototype-template.d.mts +3 -0
- package/prototype-template.mjs +3 -0
- package/test-fixtures/pkg-diff-types/button.js +10 -0
- package/test-fixtures/pkg-diff-types/package.json +4 -0
- package/test-fixtures/pkg-diff-types/readme.md +1 -0
- package/test-fixtures/pkg-diff-types/types/button.d.ts +5 -0
- package/tsconfig.json +2 -2
- package/dist/client/init.d.ts +0 -2
- package/dist/client/init.js +0 -5
- package/dist/client/init.js.map +0 -1
- package/dist/demo-wrapper.d.mts +0 -7
- package/dist/demo-wrapper.d.ts +0 -7
- package/dist/demo-wrapper.js +0 -2
- package/dist/demo-wrapper.js.map +0 -1
- package/dist/demo-wrapper.mjs +0 -2
- package/dist/demo-wrapper.mjs.map +0 -1
- package/dist/error-catcher.d.mts +0 -20
- package/dist/error-catcher.d.ts +0 -20
- package/dist/error-catcher.js +0 -2
- package/dist/error-catcher.js.map +0 -1
- package/dist/error-catcher.mjs +0 -2
- package/dist/error-catcher.mjs.map +0 -1
- package/dist/index.mjs +0 -33
- package/dist/index.mjs.map +0 -1
- package/dist/prototype-template.d.mts +0 -7
- package/dist/prototype-template.d.ts +0 -7
- package/dist/prototype-template.js +0 -2
- package/dist/prototype-template.js.map +0 -1
- package/dist/prototype-template.mjs +0 -2
- package/dist/prototype-template.mjs.map +0 -1
- package/dist/types-CivTHEEo.d.mts +0 -10
- package/dist/types-CivTHEEo.d.ts +0 -10
- package/tsup.config.cjs +0 -5
package/dist/utils.d.ts
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
import { KsTemplateSpec } from '@knapsack/types';
|
2
|
+
type GetSpecParams = {
|
3
|
+
src: string;
|
4
|
+
exportName?: string;
|
5
|
+
};
|
6
|
+
export declare const demoAppName = "DemoApp";
|
7
|
+
export declare function getUsage(data: {
|
8
|
+
templateName: string;
|
9
|
+
props?: Record<string, unknown>;
|
10
|
+
children?: string;
|
11
|
+
extraProps?: {
|
12
|
+
key: string;
|
13
|
+
value: string;
|
14
|
+
}[];
|
15
|
+
format?: boolean;
|
16
|
+
}): Promise<string>;
|
17
|
+
export declare function getDemoAppUsage({ children, imports, format, }: {
|
18
|
+
children: string;
|
19
|
+
imports?: string;
|
20
|
+
format?: boolean;
|
21
|
+
}): Promise<string>;
|
22
|
+
export declare const clearInferSpecCache: () => void;
|
23
|
+
export declare function getReactDocs(opt: GetSpecParams & {
|
24
|
+
resolveFromDir: string;
|
25
|
+
}): Promise<KsTemplateSpec | false>;
|
26
|
+
export declare function copyReactAssets(distDirAbsolute: string, publicPath: string): Promise<string[]>;
|
27
|
+
export {};
|
28
|
+
//# sourceMappingURL=utils.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,cAAc,EAA+B,MAAM,iBAAiB,CAAC;AAE9E,KAAK,aAAa,GAAG;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAmEF,eAAO,MAAM,WAAW,YAAY,CAAC;AAmBrC,wBAAsB,QAAQ,CAAC,IAAI,EAAE;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE;QACX,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;KACf,EAAE,CAAC;IACJ,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,GAAG,OAAO,CAAC,MAAM,CAAC,CAyDlB;AAED,wBAAsB,eAAe,CAAC,EACpC,QAAQ,EACR,OAAO,EACP,MAAM,GACP,EAAE;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,GAAG,OAAO,CAAC,MAAM,CAAC,CAUlB;AAuZD,eAAO,MAAM,mBAAmB,YAG/B,CAAC;AAuCF,wBAAsB,YAAY,CAChC,GAAG,EAAE,aAAa,GAAG;IACnB,cAAc,EAAE,MAAM,CAAC;CACxB,GACA,OAAO,CAAC,cAAc,GAAG,KAAK,CAAC,CAIjC;AAED,wBAAsB,eAAe,CACnC,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,EAAE,CAAC,CA2DnB"}
|
package/dist/utils.js
ADDED
@@ -0,0 +1,500 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
exports.clearInferSpecCache = exports.demoAppName = void 0;
|
7
|
+
exports.getUsage = getUsage;
|
8
|
+
exports.getDemoAppUsage = getDemoAppUsage;
|
9
|
+
exports.getReactDocs = getReactDocs;
|
10
|
+
exports.copyReactAssets = copyReactAssets;
|
11
|
+
const app_1 = require("@knapsack/app");
|
12
|
+
const file_utils_1 = require("@knapsack/file-utils");
|
13
|
+
const utils_1 = require("@knapsack/utils");
|
14
|
+
const path_1 = __importDefault(require("path"));
|
15
|
+
const types_1 = require("@knapsack/types");
|
16
|
+
function renderUsageTemplate({ templateName, attributes, children, }) {
|
17
|
+
return `
|
18
|
+
<${templateName}
|
19
|
+
${attributes}
|
20
|
+
${children
|
21
|
+
? `>
|
22
|
+
${children}
|
23
|
+
</${templateName}>`
|
24
|
+
: '/>'}
|
25
|
+
`;
|
26
|
+
}
|
27
|
+
exports.demoAppName = 'DemoApp';
|
28
|
+
function renderDemoAppTemplate({ imports = '', children, }) {
|
29
|
+
return `${imports}
|
30
|
+
|
31
|
+
function ${exports.demoAppName}() {
|
32
|
+
return (
|
33
|
+
${children}
|
34
|
+
)
|
35
|
+
}
|
36
|
+
`;
|
37
|
+
}
|
38
|
+
async function getUsage(data) {
|
39
|
+
const props = Object.keys(data.props || {}).map((key) => {
|
40
|
+
const value = data.props[key];
|
41
|
+
return {
|
42
|
+
key,
|
43
|
+
value,
|
44
|
+
};
|
45
|
+
});
|
46
|
+
const { templateName, children, extraProps = [] } = data;
|
47
|
+
if (!templateName) {
|
48
|
+
throw new Error(`Cannot getUsage of a React Component when no "templateName" is provided.`);
|
49
|
+
}
|
50
|
+
const attributes = props.map(({ key, value }) => {
|
51
|
+
switch (typeof value) {
|
52
|
+
case 'string':
|
53
|
+
// Is this a function like `() => {}` but not a "sizes" attribute for an image like `(min-width: 400px) 50vw, 100vw`?
|
54
|
+
if (value.startsWith('(') && value.includes('=>')) {
|
55
|
+
return `${key}={${value}}`;
|
56
|
+
}
|
57
|
+
return `${key}="${value}"`;
|
58
|
+
case 'boolean':
|
59
|
+
return value ? `${key}` : `${key}={${value}}`;
|
60
|
+
default:
|
61
|
+
return `${key}={${JSON.stringify(value)}}`;
|
62
|
+
}
|
63
|
+
});
|
64
|
+
const extraAttributes = [];
|
65
|
+
const slotProps = {};
|
66
|
+
extraProps.forEach(({ key, value }) => {
|
67
|
+
var _a;
|
68
|
+
slotProps[key] = (_a = slotProps[key]) !== null && _a !== void 0 ? _a : [];
|
69
|
+
slotProps[key].push(value);
|
70
|
+
});
|
71
|
+
Object.entries(slotProps).forEach(([key, values]) => {
|
72
|
+
const value = values.length === 1 ? values[0] : `<>${values.join('\n')}</>`;
|
73
|
+
extraAttributes.push(`${key}={${value}}`);
|
74
|
+
});
|
75
|
+
const result = renderUsageTemplate({
|
76
|
+
templateName,
|
77
|
+
attributes: [...attributes, ...extraAttributes].join(' '),
|
78
|
+
children,
|
79
|
+
});
|
80
|
+
return data.format
|
81
|
+
? (0, file_utils_1.formatCode)({
|
82
|
+
contents: result,
|
83
|
+
path: 'x.tsx', // doing this to set format language
|
84
|
+
})
|
85
|
+
.then((code) => code.trim())
|
86
|
+
.catch(() => result.trim()) // if format fails, just return the unformatted code
|
87
|
+
: result.trim();
|
88
|
+
}
|
89
|
+
async function getDemoAppUsage({ children, imports, format, }) {
|
90
|
+
const code = renderDemoAppTemplate({
|
91
|
+
children,
|
92
|
+
imports,
|
93
|
+
});
|
94
|
+
if (!format)
|
95
|
+
return code;
|
96
|
+
return (0, file_utils_1.formatCode)({
|
97
|
+
contents: code,
|
98
|
+
path: 'x.tsx', // doing this to set format language
|
99
|
+
});
|
100
|
+
}
|
101
|
+
async function getTypeScriptInfoFromFile({ src }) {
|
102
|
+
const tsConfigPath = await (0, file_utils_1.findUp)('tsconfig.json', {
|
103
|
+
cwd: path_1.default.dirname(src),
|
104
|
+
});
|
105
|
+
const rdTs = await import('react-docgen-typescript');
|
106
|
+
const config = {
|
107
|
+
shouldExtractLiteralValuesFromEnum: true,
|
108
|
+
savePropValueAsString: true,
|
109
|
+
skipChildrenPropWithoutDoc: false,
|
110
|
+
// In addition to the ones listed here, which had not strangely included these below ~ https://github.com/styleguidist/react-docgen-typescript/blob/287e7012843cb26fed8f4bd8ee24e462c25a1414/src/parser.ts#L308
|
111
|
+
customComponentTypes: ['VoidFunctionComponent', 'VFC'],
|
112
|
+
};
|
113
|
+
const parse = tsConfigPath
|
114
|
+
? rdTs.withCustomConfig(tsConfigPath, config).parse
|
115
|
+
: rdTs.withDefaultConfig(config).parse;
|
116
|
+
return {
|
117
|
+
info: parse(src),
|
118
|
+
};
|
119
|
+
}
|
120
|
+
function extractSpecFromTypeScriptInfo({ info: results, exportName, }) {
|
121
|
+
try {
|
122
|
+
if (!results)
|
123
|
+
return false;
|
124
|
+
const spec = {
|
125
|
+
props: {
|
126
|
+
$schema: 'http://json-schema.org/draft-07/schema',
|
127
|
+
type: 'object',
|
128
|
+
required: [],
|
129
|
+
properties: {},
|
130
|
+
},
|
131
|
+
slots: {
|
132
|
+
// children: {
|
133
|
+
// title: 'children',
|
134
|
+
// },
|
135
|
+
},
|
136
|
+
};
|
137
|
+
const isDefaultExport = !exportName || exportName === 'default';
|
138
|
+
// if `isDefaultExport` then we just grab last result since `export default` TENDS to be last. that'll we can do really...
|
139
|
+
const result = isDefaultExport
|
140
|
+
? results.at(-1)
|
141
|
+
: results.find((r) => r.displayName === exportName);
|
142
|
+
// log.inspect({ result, isDefaultExport, exportName }, 'ts result');
|
143
|
+
if (!result)
|
144
|
+
return false;
|
145
|
+
const { displayName } = result;
|
146
|
+
// log.inspect({ result }, 'result');
|
147
|
+
Object.entries((result === null || result === void 0 ? void 0 : result.props) || {}).forEach(([propName, propDef]) => {
|
148
|
+
var _a, _b, _c, _d, _e;
|
149
|
+
const { name, description, defaultValue, required, type, parent } = propDef;
|
150
|
+
// `type.name` can include `| undefined` if tsConfig has `strict: true`. So we need to handle these scenarios:
|
151
|
+
// `string` or `string | undefined`
|
152
|
+
// `'left' | 'right'` or `'left' | 'right' | undefined`
|
153
|
+
const propType = (_a = type === null || type === void 0 ? void 0 : type.name) === null || _a === void 0 ? void 0 : _a.replace('| undefined', '').replace(/<.*/g, '').trim();
|
154
|
+
switch (propType) {
|
155
|
+
case 'string':
|
156
|
+
spec.props.properties[propName] = {
|
157
|
+
type: 'string',
|
158
|
+
};
|
159
|
+
break;
|
160
|
+
case 'number':
|
161
|
+
spec.props.properties[propName] = {
|
162
|
+
type: 'number',
|
163
|
+
};
|
164
|
+
break;
|
165
|
+
case 'boolean':
|
166
|
+
case 'bool':
|
167
|
+
if (defaultValue && 'value' in defaultValue) {
|
168
|
+
// comes in as `'true'` - this turns it to `true`
|
169
|
+
defaultValue.value = defaultValue.value === 'true';
|
170
|
+
}
|
171
|
+
spec.props.properties[propName] = {
|
172
|
+
type: 'boolean',
|
173
|
+
};
|
174
|
+
break;
|
175
|
+
case 'enum':
|
176
|
+
spec.props.properties[propName] = {
|
177
|
+
type: 'string',
|
178
|
+
// yes there is a double "value" & yes it is confusing
|
179
|
+
enum: [
|
180
|
+
// ensure list is unique
|
181
|
+
...new Set(type.value.flatMap(({ value }) => {
|
182
|
+
if (!value)
|
183
|
+
return [];
|
184
|
+
const item = (0, utils_1.removeWrappingDoubleQuotes)(value.trim());
|
185
|
+
if (item === 'undefined') {
|
186
|
+
return [];
|
187
|
+
}
|
188
|
+
return [item];
|
189
|
+
})),
|
190
|
+
],
|
191
|
+
};
|
192
|
+
break;
|
193
|
+
case 'ReactNode':
|
194
|
+
case 'React.ReactNode':
|
195
|
+
case 'React.ReactElement':
|
196
|
+
case 'ReactElement':
|
197
|
+
spec.slots[propName] = {
|
198
|
+
title: propName,
|
199
|
+
};
|
200
|
+
if (description) {
|
201
|
+
spec.slots[propName] = {
|
202
|
+
...spec.slots[propName],
|
203
|
+
description,
|
204
|
+
};
|
205
|
+
}
|
206
|
+
break;
|
207
|
+
case 'VFC':
|
208
|
+
case 'FC':
|
209
|
+
spec.slots[propName] = {
|
210
|
+
title: propName,
|
211
|
+
description: description || 'A reference to a component',
|
212
|
+
isTemplateReference: true,
|
213
|
+
allowOnlyOne: true,
|
214
|
+
disallowText: true,
|
215
|
+
};
|
216
|
+
break;
|
217
|
+
default: {
|
218
|
+
if ((_b = type === null || type === void 0 ? void 0 : type.name) === null || _b === void 0 ? void 0 : _b.startsWith('(')) {
|
219
|
+
// functions
|
220
|
+
spec.props.properties[propName] = {
|
221
|
+
// description: `\`${type.name}\` ${description}`,
|
222
|
+
typeof: 'function',
|
223
|
+
tsType: (_c = propDef === null || propDef === void 0 ? void 0 : propDef.type) === null || _c === void 0 ? void 0 : _c.name,
|
224
|
+
};
|
225
|
+
}
|
226
|
+
else if ((_d = type === null || type === void 0 ? void 0 : type.name) === null || _d === void 0 ? void 0 : _d.includes('|')) {
|
227
|
+
// enums / unions (multi-choice strings)
|
228
|
+
// comes in like this: `{ name: '"option1" | "option2" | "option3"' }`
|
229
|
+
const options = type.name.split('|').flatMap((enumItem) => {
|
230
|
+
if (!enumItem)
|
231
|
+
return [];
|
232
|
+
const item = (0, utils_1.removeWrappingDoubleQuotes)(enumItem.trim());
|
233
|
+
if (item === 'undefined') {
|
234
|
+
return [];
|
235
|
+
}
|
236
|
+
return [item];
|
237
|
+
});
|
238
|
+
if (options === null || options === void 0 ? void 0 : options.length) {
|
239
|
+
spec.props.properties[propName] = {
|
240
|
+
type: 'string',
|
241
|
+
// ensuring list is unique
|
242
|
+
enum: [...new Set(options)],
|
243
|
+
};
|
244
|
+
}
|
245
|
+
}
|
246
|
+
else {
|
247
|
+
spec.props.properties[propName] = {
|
248
|
+
tsType: (_e = propDef === null || propDef === void 0 ? void 0 : propDef.type) === null || _e === void 0 ? void 0 : _e.name,
|
249
|
+
};
|
250
|
+
}
|
251
|
+
}
|
252
|
+
}
|
253
|
+
// assigning info that all would have
|
254
|
+
if (spec.props.properties[propName]) {
|
255
|
+
if (required)
|
256
|
+
spec.props.required.push(propName);
|
257
|
+
if (description && !spec.props.properties[propName].description) {
|
258
|
+
spec.props.properties[propName].description = description;
|
259
|
+
}
|
260
|
+
if (defaultValue && 'value' in defaultValue) {
|
261
|
+
if ((0, types_1.isNumberProp)(spec.props.properties[propName])) {
|
262
|
+
spec.props.properties[propName].default = parseFloat(defaultValue.value);
|
263
|
+
}
|
264
|
+
else {
|
265
|
+
spec.props.properties[propName].default =
|
266
|
+
(0, utils_1.removeWrappingDoubleQuotes)(defaultValue.value);
|
267
|
+
}
|
268
|
+
}
|
269
|
+
}
|
270
|
+
// console.log('type', type);
|
271
|
+
});
|
272
|
+
return spec;
|
273
|
+
}
|
274
|
+
catch (error) {
|
275
|
+
app_1.log.verbose('Could not infer spec from React TypeScript file', {
|
276
|
+
exportName,
|
277
|
+
error,
|
278
|
+
}, 'react renderer');
|
279
|
+
return false;
|
280
|
+
}
|
281
|
+
}
|
282
|
+
async function getPropTypesInfoFromFile({ src }) {
|
283
|
+
const reactDocs = await import('react-docgen');
|
284
|
+
const { builtinResolvers } = reactDocs;
|
285
|
+
const fileSrc = await (0, file_utils_1.readFile)(src);
|
286
|
+
const { FindExportedDefinitionsResolver } = builtinResolvers;
|
287
|
+
const results = reactDocs.parse(fileSrc, {
|
288
|
+
resolver: new FindExportedDefinitionsResolver(),
|
289
|
+
handlers: null,
|
290
|
+
filename: src,
|
291
|
+
// babelrc: false,
|
292
|
+
});
|
293
|
+
return {
|
294
|
+
info: results,
|
295
|
+
};
|
296
|
+
}
|
297
|
+
function extractSpecFromPropTypesInfo({ info: results, exportName, }) {
|
298
|
+
try {
|
299
|
+
const isDefaultExport = !exportName || exportName === 'default';
|
300
|
+
// if `isDefaultExport` then we just grab last result since `export default` TENDS to be last. that'll we can do really...
|
301
|
+
const result = isDefaultExport
|
302
|
+
? results.pop()
|
303
|
+
: results.find((r) => r.displayName === exportName);
|
304
|
+
// log.inspect(results, 'JSX PropTypes Results');
|
305
|
+
// console.log(JSON.stringify(result, null, ' '));
|
306
|
+
const spec = {
|
307
|
+
isInferred: true,
|
308
|
+
props: {
|
309
|
+
$schema: 'http://json-schema.org/draft-07/schema',
|
310
|
+
type: 'object',
|
311
|
+
required: [],
|
312
|
+
properties: {},
|
313
|
+
},
|
314
|
+
slots: {},
|
315
|
+
};
|
316
|
+
Object.entries((result === null || result === void 0 ? void 0 : result.props) || {}).forEach(([propName, propDef]) => {
|
317
|
+
var _a;
|
318
|
+
const { required, description, defaultValue } = propDef;
|
319
|
+
switch ((_a = propDef === null || propDef === void 0 ? void 0 : propDef.type) === null || _a === void 0 ? void 0 : _a.name) {
|
320
|
+
case 'string':
|
321
|
+
spec.props.properties[propName] = {
|
322
|
+
type: 'string',
|
323
|
+
};
|
324
|
+
break;
|
325
|
+
case 'func':
|
326
|
+
spec.props.properties[propName] = {
|
327
|
+
type: 'string',
|
328
|
+
};
|
329
|
+
break;
|
330
|
+
case 'bool':
|
331
|
+
spec.props.properties[propName] = {
|
332
|
+
type: 'boolean',
|
333
|
+
};
|
334
|
+
break;
|
335
|
+
case 'node':
|
336
|
+
spec.slots[propName] = {
|
337
|
+
title: propName,
|
338
|
+
description,
|
339
|
+
};
|
340
|
+
}
|
341
|
+
// assigning info that all would have
|
342
|
+
if (spec.props.properties[propName]) {
|
343
|
+
if (required)
|
344
|
+
spec.props.required.push(propName);
|
345
|
+
if (description && !spec.props.properties[propName].description) {
|
346
|
+
spec.props.properties[propName].description = description;
|
347
|
+
}
|
348
|
+
if (defaultValue && 'value' in defaultValue) {
|
349
|
+
spec.props.properties[propName].default =
|
350
|
+
typeof defaultValue.value === 'string'
|
351
|
+
? (0, utils_1.removeWrappingDoubleQuotes)(defaultValue.value)
|
352
|
+
: defaultValue.value;
|
353
|
+
}
|
354
|
+
}
|
355
|
+
});
|
356
|
+
return spec;
|
357
|
+
}
|
358
|
+
catch (error) {
|
359
|
+
app_1.log.verbose('Could not infer spec from React PropTypes', {
|
360
|
+
exportName,
|
361
|
+
error,
|
362
|
+
}, 'react renderer');
|
363
|
+
return false;
|
364
|
+
}
|
365
|
+
}
|
366
|
+
function cleanUpSpec({ spec, }) {
|
367
|
+
var _a;
|
368
|
+
if (spec === false)
|
369
|
+
return spec;
|
370
|
+
// ok to mutate b/c spec was just created before passing in here
|
371
|
+
Object.entries(((_a = spec === null || spec === void 0 ? void 0 : spec.props) === null || _a === void 0 ? void 0 : _a.properties) || {}).forEach(([propName, prop]) => {
|
372
|
+
if ((0, types_1.isOptionsProp)(prop)) {
|
373
|
+
// If the default is not in the enum, it should not be there
|
374
|
+
// OR the enum is wrong
|
375
|
+
if (!prop.enum.includes(prop.default)) {
|
376
|
+
prop.default = undefined;
|
377
|
+
}
|
378
|
+
}
|
379
|
+
});
|
380
|
+
return spec;
|
381
|
+
}
|
382
|
+
async function getReactModuleInfoUncached({ src: unknownSrc, resolveFromDir, }) {
|
383
|
+
const typesInfo = await (0, file_utils_1.resolvePath)({
|
384
|
+
path: unknownSrc,
|
385
|
+
resolveFromDir,
|
386
|
+
resolveType: 'types',
|
387
|
+
});
|
388
|
+
if (typesInfo.exists) {
|
389
|
+
const typeScriptInfo = await getTypeScriptInfoFromFile({
|
390
|
+
src: typesInfo.absolutePath,
|
391
|
+
});
|
392
|
+
if (typeScriptInfo) {
|
393
|
+
return {
|
394
|
+
type: 'typescript',
|
395
|
+
info: typeScriptInfo.info,
|
396
|
+
};
|
397
|
+
}
|
398
|
+
}
|
399
|
+
const jsInfo = await (0, file_utils_1.resolvePath)({
|
400
|
+
path: unknownSrc,
|
401
|
+
resolveFromDir,
|
402
|
+
});
|
403
|
+
if (!jsInfo.exists)
|
404
|
+
return { type: 'unknown' };
|
405
|
+
const { ext } = path_1.default.parse(jsInfo.absolutePath);
|
406
|
+
switch (ext) {
|
407
|
+
case '.jsx': {
|
408
|
+
const propTypesInfo = await getPropTypesInfoFromFile({
|
409
|
+
src: jsInfo.absolutePath,
|
410
|
+
});
|
411
|
+
return {
|
412
|
+
type: 'propTypes',
|
413
|
+
info: propTypesInfo.info,
|
414
|
+
};
|
415
|
+
}
|
416
|
+
case '.ts':
|
417
|
+
case '.tsx': {
|
418
|
+
const typeScriptInfo = await getTypeScriptInfoFromFile({
|
419
|
+
src: jsInfo.absolutePath,
|
420
|
+
});
|
421
|
+
return {
|
422
|
+
type: 'typescript',
|
423
|
+
info: typeScriptInfo.info,
|
424
|
+
};
|
425
|
+
}
|
426
|
+
default:
|
427
|
+
return {
|
428
|
+
type: 'unknown',
|
429
|
+
};
|
430
|
+
}
|
431
|
+
}
|
432
|
+
const getReactModuleInfoCache = new Map();
|
433
|
+
const clearInferSpecCache = () => {
|
434
|
+
app_1.log.info(`Clearing React TypeScript inferSpec cache...`);
|
435
|
+
getReactModuleInfoCache.clear();
|
436
|
+
};
|
437
|
+
exports.clearInferSpecCache = clearInferSpecCache;
|
438
|
+
async function getReactModuleInfo(args) {
|
439
|
+
const cacheKey = JSON.stringify(args);
|
440
|
+
if (!getReactModuleInfoCache.has(cacheKey)) {
|
441
|
+
getReactModuleInfoCache.set(cacheKey, getReactModuleInfoUncached(args));
|
442
|
+
}
|
443
|
+
return getReactModuleInfoCache.get(cacheKey);
|
444
|
+
}
|
445
|
+
async function getReactSpec({ src, exportName, resolveFromDir, }) {
|
446
|
+
const reactModuleInfo = await getReactModuleInfo({
|
447
|
+
src,
|
448
|
+
resolveFromDir,
|
449
|
+
});
|
450
|
+
switch (reactModuleInfo.type) {
|
451
|
+
case 'typescript':
|
452
|
+
return extractSpecFromTypeScriptInfo({
|
453
|
+
info: reactModuleInfo.info,
|
454
|
+
exportName,
|
455
|
+
});
|
456
|
+
case 'propTypes':
|
457
|
+
return extractSpecFromPropTypesInfo({
|
458
|
+
info: reactModuleInfo.info,
|
459
|
+
exportName,
|
460
|
+
});
|
461
|
+
case 'unknown':
|
462
|
+
default:
|
463
|
+
return false;
|
464
|
+
}
|
465
|
+
}
|
466
|
+
async function getReactDocs(opt) {
|
467
|
+
return cleanUpSpec({
|
468
|
+
spec: await getReactSpec(opt),
|
469
|
+
});
|
470
|
+
}
|
471
|
+
async function copyReactAssets(distDirAbsolute, publicPath) {
|
472
|
+
try {
|
473
|
+
const { version: reactVersion } = (0, file_utils_1.getModulePkgJson)('react');
|
474
|
+
const { version: reactDomVersion } = (0, file_utils_1.getModulePkgJson)('react-dom');
|
475
|
+
// switch to resolving the root NPM package dir vs the entire file via require.resolve
|
476
|
+
// workaround due to NPM packages using the exports field; prevents these from being auto-resolved
|
477
|
+
const reactRoot = path_1.default.dirname(require.resolve('react', {
|
478
|
+
paths: [process.cwd()],
|
479
|
+
}));
|
480
|
+
const reactDomRoot = path_1.default.dirname(require.resolve('react-dom', {
|
481
|
+
paths: [process.cwd()],
|
482
|
+
}));
|
483
|
+
await Promise.all([
|
484
|
+
(0, file_utils_1.copy)(path_1.default.join(reactRoot, 'umd/react.development.js'), path_1.default.join(distDirAbsolute, `react.development.${reactVersion}.js`)),
|
485
|
+
(0, file_utils_1.copy)(path_1.default.join(reactRoot, 'umd/react.production.min.js'), path_1.default.join(distDirAbsolute, `react.production.min.${reactVersion}.js`)),
|
486
|
+
(0, file_utils_1.copy)(path_1.default.join(reactDomRoot, 'umd/react-dom.production.min.js'), path_1.default.join(distDirAbsolute, `react-dom.production.min.${reactDomVersion}.js`)),
|
487
|
+
(0, file_utils_1.copy)(path_1.default.join(reactDomRoot, 'umd/react-dom.development.js'), path_1.default.join(distDirAbsolute, `react-dom.development.${reactDomVersion}.js`)),
|
488
|
+
]);
|
489
|
+
const reactFileSuffix = process.env.NODE_ENV === 'production' ? 'production.min' : 'development';
|
490
|
+
return [
|
491
|
+
path_1.default.join(publicPath, `react.${reactFileSuffix}.${reactVersion}.js`),
|
492
|
+
path_1.default.join(publicPath, `react-dom.${reactFileSuffix}.${reactDomVersion}.js`),
|
493
|
+
];
|
494
|
+
}
|
495
|
+
catch (error) {
|
496
|
+
app_1.log.warn('Error trying to copy "react" and "react-dom" JS files, are they installed? We want to use your exact versions.', error, 'templateRenderer:react');
|
497
|
+
process.exit(1);
|
498
|
+
}
|
499
|
+
}
|
500
|
+
//# sourceMappingURL=utils.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"utils.test.d.ts","sourceRoot":"","sources":["../src/utils.test.ts"],"names":[],"mappings":""}
|
@@ -0,0 +1,59 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
const ava_1 = __importDefault(require("ava"));
|
7
|
+
const utils_1 = require("./utils");
|
8
|
+
(0, ava_1.default)('renderer-react usage template a', async (t) => {
|
9
|
+
const actual = await (0, utils_1.getUsage)({
|
10
|
+
templateName: 'Button',
|
11
|
+
props: {
|
12
|
+
type: 'primary',
|
13
|
+
isDark: true,
|
14
|
+
data: [
|
15
|
+
{
|
16
|
+
first: 'John',
|
17
|
+
last: 'Doe',
|
18
|
+
},
|
19
|
+
{
|
20
|
+
first: 'Jane',
|
21
|
+
last: 'Doe',
|
22
|
+
},
|
23
|
+
],
|
24
|
+
},
|
25
|
+
children: 'Some Text',
|
26
|
+
format: true,
|
27
|
+
});
|
28
|
+
t.snapshot(actual);
|
29
|
+
});
|
30
|
+
(0, ava_1.default)('renderer-react usage template b', async (t) => {
|
31
|
+
const actual = await (0, utils_1.getUsage)({
|
32
|
+
templateName: 'Button',
|
33
|
+
props: {
|
34
|
+
type: 'primary',
|
35
|
+
isDark: true,
|
36
|
+
},
|
37
|
+
children: 'Click me',
|
38
|
+
extraProps: [
|
39
|
+
{
|
40
|
+
key: 'icon',
|
41
|
+
value: '<Icon type="add" />',
|
42
|
+
},
|
43
|
+
{
|
44
|
+
key: 'handleClick',
|
45
|
+
value: '() => {console.log("Clicked!")}',
|
46
|
+
},
|
47
|
+
],
|
48
|
+
format: true,
|
49
|
+
});
|
50
|
+
t.snapshot(actual);
|
51
|
+
});
|
52
|
+
(0, ava_1.default)('renderer-react usage template c', async (t) => {
|
53
|
+
const actual = await (0, utils_1.getUsage)({
|
54
|
+
templateName: 'Button',
|
55
|
+
format: true,
|
56
|
+
});
|
57
|
+
t.snapshot(actual);
|
58
|
+
});
|
59
|
+
//# sourceMappingURL=utils.test.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"utils.test.js","sourceRoot":"","sources":["../src/utils.test.ts"],"names":[],"mappings":";;;;;AAAA,8CAAuB;AACvB,mCAAmC;AAEnC,IAAA,aAAI,EAAC,iCAAiC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;IAClD,MAAM,MAAM,GAAG,MAAM,IAAA,gBAAQ,EAAC;QAC5B,YAAY,EAAE,QAAQ;QACtB,KAAK,EAAE;YACL,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE;gBACJ;oBACE,KAAK,EAAE,MAAM;oBACb,IAAI,EAAE,KAAK;iBACZ;gBACD;oBACE,KAAK,EAAE,MAAM;oBACb,IAAI,EAAE,KAAK;iBACZ;aACF;SACF;QACD,QAAQ,EAAE,WAAW;QACrB,MAAM,EAAE,IAAI;KACb,CAAC,CAAC;IAEH,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACrB,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,iCAAiC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;IAClD,MAAM,MAAM,GAAG,MAAM,IAAA,gBAAQ,EAAC;QAC5B,YAAY,EAAE,QAAQ;QACtB,KAAK,EAAE;YACL,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,IAAI;SACb;QACD,QAAQ,EAAE,UAAU;QACpB,UAAU,EAAE;YACV;gBACE,GAAG,EAAE,MAAM;gBACX,KAAK,EAAE,qBAAqB;aAC7B;YACD;gBACE,GAAG,EAAE,aAAa;gBAClB,KAAK,EAAE,iCAAiC;aACzC;SACF;QACD,MAAM,EAAE,IAAI;KACb,CAAC,CAAC;IAEH,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACrB,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,iCAAiC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;IAClD,MAAM,MAAM,GAAG,MAAM,IAAA,gBAAQ,EAAC;QAC5B,YAAY,EAAE,QAAQ;QACtB,MAAM,EAAE,IAAI;KACb,CAAC,CAAC;IAEH,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACrB,CAAC,CAAC,CAAC"}
|