@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/CHANGELOG.md
CHANGED
@@ -1,3 +1,63 @@
|
|
1
|
+
# v4.71.16 (Thu Dec 05 2024)
|
2
|
+
|
3
|
+
#### 🐛 Bug Fix
|
4
|
+
|
5
|
+
- refactor React Renderer to use `tsc` for build [#5224](https://github.com/knapsack-labs/app-monorepo/pull/5224) ([@EvanLovely](https://github.com/EvanLovely) [@mabry1985](https://github.com/mabry1985))
|
6
|
+
- cleanup ([@EvanLovely](https://github.com/EvanLovely))
|
7
|
+
- remove concurrency in CI change ([@EvanLovely](https://github.com/EvanLovely))
|
8
|
+
- remove memory bump ([@EvanLovely](https://github.com/EvanLovely))
|
9
|
+
- set MUI Button test to failing ([@EvanLovely](https://github.com/EvanLovely))
|
10
|
+
- do not mutate arrays ([@EvanLovely](https://github.com/EvanLovely))
|
11
|
+
- Remove use of __dirname ([@EvanLovely](https://github.com/EvanLovely))
|
12
|
+
- bump memory for CI test run ([@EvanLovely](https://github.com/EvanLovely))
|
13
|
+
- restore use of tsconfig ([@EvanLovely](https://github.com/EvanLovely))
|
14
|
+
- serial test run ([@EvanLovely](https://github.com/EvanLovely))
|
15
|
+
- temp disabling possibility of using custom config to help troubleshoot CI issue ([@EvanLovely](https://github.com/EvanLovely))
|
16
|
+
- skip cache during ava tests ([@EvanLovely](https://github.com/EvanLovely))
|
17
|
+
- pass MUI pkg name directly in ([@EvanLovely](https://github.com/EvanLovely))
|
18
|
+
- re-enable MUI test ([@EvanLovely](https://github.com/EvanLovely))
|
19
|
+
- Merge branch 'latest' into feature/react-renderer-build ([@EvanLovely](https://github.com/EvanLovely))
|
20
|
+
- Merge branch 'latest' into feature/react-renderer-build ([@mabry1985](https://github.com/mabry1985))
|
21
|
+
- undo skipping of utils test ([@mabry1985](https://github.com/mabry1985))
|
22
|
+
- skip both mui tests ([@mabry1985](https://github.com/mabry1985))
|
23
|
+
- skip mui test ([@mabry1985](https://github.com/mabry1985))
|
24
|
+
- revert to run all suites ([@mabry1985](https://github.com/mabry1985))
|
25
|
+
- remove utils test for debugging ([@mabry1985](https://github.com/mabry1985))
|
26
|
+
- revert to run tests individually ([@mabry1985](https://github.com/mabry1985))
|
27
|
+
- remove skip ([@mabry1985](https://github.com/mabry1985))
|
28
|
+
- check prop types test for bug ([@mabry1985](https://github.com/mabry1985))
|
29
|
+
- revert to failing ([@mabry1985](https://github.com/mabry1985))
|
30
|
+
- revert to run all tests ([@mabry1985](https://github.com/mabry1985))
|
31
|
+
- skip test using jsx-runtime ([@mabry1985](https://github.com/mabry1985))
|
32
|
+
- add getReactDocs import to testing ([@mabry1985](https://github.com/mabry1985))
|
33
|
+
- add minimal testing file ([@mabry1985](https://github.com/mabry1985))
|
34
|
+
- revert debugging ([@mabry1985](https://github.com/mabry1985))
|
35
|
+
- skip all suites for testing ([@mabry1985](https://github.com/mabry1985))
|
36
|
+
- remove garbage cleanup step ([@mabry1985](https://github.com/mabry1985))
|
37
|
+
- update to use config ([@mabry1985](https://github.com/mabry1985))
|
38
|
+
- update to use serial ([@mabry1985](https://github.com/mabry1985))
|
39
|
+
- add cleanup steps ([@mabry1985](https://github.com/mabry1985))
|
40
|
+
- add concurrency limit to ava test ([@mabry1985](https://github.com/mabry1985))
|
41
|
+
- re-order scripts ([@mabry1985](https://github.com/mabry1985))
|
42
|
+
- revert to individual tests ([@mabry1985](https://github.com/mabry1985))
|
43
|
+
- try garbage cleanup ([@mabry1985](https://github.com/mabry1985))
|
44
|
+
- update to run in serial ([@mabry1985](https://github.com/mabry1985))
|
45
|
+
- revert test script ([@mabry1985](https://github.com/mabry1985))
|
46
|
+
- fix default demo wrapper path resolution ([@EvanLovely](https://github.com/EvanLovely))
|
47
|
+
- break tests up to debug CI ([@EvanLovely](https://github.com/EvanLovely))
|
48
|
+
- set unit tests to run serially to prevent segmentation fault in CI ([@EvanLovely](https://github.com/EvanLovely))
|
49
|
+
- add sideEffects ([@EvanLovely](https://github.com/EvanLovely))
|
50
|
+
- cleanup file ([@EvanLovely](https://github.com/EvanLovely))
|
51
|
+
- adjust line command ([@EvanLovely](https://github.com/EvanLovely))
|
52
|
+
- refactor React Renderer to use `tsc` for build ([@EvanLovely](https://github.com/EvanLovely))
|
53
|
+
|
54
|
+
#### Authors: 2
|
55
|
+
|
56
|
+
- Evan Lovely ([@EvanLovely](https://github.com/EvanLovely))
|
57
|
+
- Josh Mabry ([@mabry1985](https://github.com/mabry1985))
|
58
|
+
|
59
|
+
---
|
60
|
+
|
1
61
|
# v4.71.13 (Wed Dec 04 2024)
|
2
62
|
|
3
63
|
#### 🐛 Bug Fix
|
package/ava.config.cjs
CHANGED
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"infer-spec.test.d.ts","sourceRoot":"","sources":["../../src/analyze/infer-spec.test.ts"],"names":[],"mappings":""}
|
@@ -0,0 +1,112 @@
|
|
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 types_1 = require("@knapsack/types");
|
8
|
+
const renderers_1 = require("@knapsack/app/renderers");
|
9
|
+
const utils_1 = require("../utils");
|
10
|
+
(0, ava_1.default)('infer types in packages with different files name for types', async (t) => {
|
11
|
+
const spec = await (0, utils_1.getReactDocs)({
|
12
|
+
src: '@knapsack/sandbox-components/react',
|
13
|
+
exportName: 'Button',
|
14
|
+
resolveFromDir: __dirname,
|
15
|
+
});
|
16
|
+
if (spec === false) {
|
17
|
+
t.fail(`Spec could not be inferred`);
|
18
|
+
return;
|
19
|
+
}
|
20
|
+
t.truthy(spec);
|
21
|
+
t.deepEqual(Object.keys(spec.props.properties).sort(), ['label', 'mode', 'size', 'type'].sort());
|
22
|
+
if ((0, types_1.isOptionsProp)(spec.props.properties.size)) {
|
23
|
+
t.deepEqual(spec.props.properties.size.enum, ['small', 'medium', 'large']);
|
24
|
+
}
|
25
|
+
else {
|
26
|
+
t.log(spec.props.properties.size);
|
27
|
+
t.fail(`size prop should be an options prop`);
|
28
|
+
}
|
29
|
+
if ((0, types_1.isOptionsProp)(spec.props.properties.type)) {
|
30
|
+
t.deepEqual(spec.props.properties.type.enum, ['filled', 'outlined']);
|
31
|
+
}
|
32
|
+
else {
|
33
|
+
t.log(spec.props.properties.type);
|
34
|
+
t.fail(`type prop should be an options prop`);
|
35
|
+
}
|
36
|
+
if ((0, types_1.isOptionsProp)(spec.props.properties.mode)) {
|
37
|
+
t.deepEqual(spec.props.properties.mode.enum, [
|
38
|
+
'default',
|
39
|
+
'success',
|
40
|
+
'error',
|
41
|
+
'warning',
|
42
|
+
]);
|
43
|
+
}
|
44
|
+
else {
|
45
|
+
t.log(spec.props.properties.mode);
|
46
|
+
t.fail(`mode prop should be an options prop`);
|
47
|
+
}
|
48
|
+
});
|
49
|
+
(0, ava_1.default)('inferDocs card.tsx with types', async (t) => {
|
50
|
+
const spec = await (0, utils_1.getReactDocs)({
|
51
|
+
src: '@knapsack/renderer-react-components/test-fixtures',
|
52
|
+
exportName: 'Card',
|
53
|
+
resolveFromDir: process.cwd(),
|
54
|
+
});
|
55
|
+
const expectedSpec = {
|
56
|
+
props: {
|
57
|
+
$schema: 'http://json-schema.org/draft-07/schema',
|
58
|
+
type: 'object',
|
59
|
+
required: ['cardBody', 'items'],
|
60
|
+
properties: {
|
61
|
+
textAlign: {
|
62
|
+
type: 'string',
|
63
|
+
enum: ['left', 'center', 'right'],
|
64
|
+
// @todo We lost proper default value when the source switched from `.tsx` to being from a package, which results in analyzing a `.d.ts` files... which doesn't have default values.
|
65
|
+
// default: 'left',
|
66
|
+
default: undefined,
|
67
|
+
},
|
68
|
+
imgSrc: {
|
69
|
+
type: 'string',
|
70
|
+
},
|
71
|
+
isDark: {
|
72
|
+
type: 'boolean',
|
73
|
+
// @todo We lost proper default value when the source switched from `.tsx` to being from a package, which results in analyzing a `.d.ts` files... which doesn't have default values.
|
74
|
+
// default: true,
|
75
|
+
},
|
76
|
+
cardTitle: {
|
77
|
+
type: 'string',
|
78
|
+
},
|
79
|
+
cardSubTitle: {
|
80
|
+
type: 'string',
|
81
|
+
},
|
82
|
+
cardBody: {
|
83
|
+
type: 'string',
|
84
|
+
},
|
85
|
+
handleIt: {
|
86
|
+
typeof: 'function',
|
87
|
+
tsType: '(x: string) => boolean',
|
88
|
+
},
|
89
|
+
items: {
|
90
|
+
tsType: '{ id: string; title: string; description?: string; }[]',
|
91
|
+
},
|
92
|
+
},
|
93
|
+
},
|
94
|
+
slots: {
|
95
|
+
children: {
|
96
|
+
description: 'Goes in footer',
|
97
|
+
title: 'children',
|
98
|
+
},
|
99
|
+
header: {
|
100
|
+
title: 'header',
|
101
|
+
},
|
102
|
+
},
|
103
|
+
};
|
104
|
+
if (spec === false) {
|
105
|
+
t.fail('Spec could not be inferred');
|
106
|
+
return;
|
107
|
+
}
|
108
|
+
const { ok, message } = (0, renderers_1.validateSpec)(spec);
|
109
|
+
t.is(ok, true, message);
|
110
|
+
t.deepEqual(spec, expectedSpec);
|
111
|
+
});
|
112
|
+
//# sourceMappingURL=infer-spec.test.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"infer-spec.test.js","sourceRoot":"","sources":["../../src/analyze/infer-spec.test.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"mui.test.d.ts","sourceRoot":"","sources":["../../src/analyze/mui.test.ts"],"names":[],"mappings":""}
|
@@ -0,0 +1,60 @@
|
|
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 types_1 = require("@knapsack/types");
|
8
|
+
const utils_1 = require("../utils");
|
9
|
+
ava_1.default.serial('MUI strings with extra quotes', async (t) => {
|
10
|
+
const results = await (0, utils_1.getReactDocs)({
|
11
|
+
src: '@mui/x-data-grid',
|
12
|
+
exportName: 'DataGrid',
|
13
|
+
resolveFromDir: process.cwd(),
|
14
|
+
});
|
15
|
+
if (results === false) {
|
16
|
+
t.fail('Could not infer spec');
|
17
|
+
return;
|
18
|
+
}
|
19
|
+
Object.entries(results.props.properties).forEach(([propName, prop]) => {
|
20
|
+
if ((0, types_1.isStringProp)(prop) || (0, types_1.isOptionsProp)(prop)) {
|
21
|
+
if (typeof prop.default === 'string') {
|
22
|
+
t.true(!prop.default.startsWith('"') && !prop.default.endsWith('"'), `prop "${propName}" has a default that should not be quoted: ${prop.default} - ${JSON.stringify(prop)}`);
|
23
|
+
}
|
24
|
+
}
|
25
|
+
if ((0, types_1.isOptionsProp)(prop)) {
|
26
|
+
if (prop.default) {
|
27
|
+
t.true(prop.enum.includes(prop.default), `For prop "${propName}", the default value "${prop.default}" is not in the enum: ${prop.enum}`);
|
28
|
+
}
|
29
|
+
prop.enum.forEach((option) => {
|
30
|
+
t.true(!option.startsWith('"') && !option.endsWith('"'), `option should not be quoted: ${prop.default}`);
|
31
|
+
});
|
32
|
+
}
|
33
|
+
if ((0, types_1.isNumberProp)(prop) && prop.default) {
|
34
|
+
const ok = t.is(typeof prop.default, 'number', `prop "${propName}" default should be a number: ${prop.default}`);
|
35
|
+
if (!ok) {
|
36
|
+
t.log(prop);
|
37
|
+
}
|
38
|
+
}
|
39
|
+
if ((0, types_1.isBooleanProp)(prop) && prop.default) {
|
40
|
+
const ok = t.is(typeof prop.default, 'boolean', `prop "${propName}" should be a boolean: ${prop.default}`);
|
41
|
+
if (!ok) {
|
42
|
+
t.log(prop);
|
43
|
+
}
|
44
|
+
}
|
45
|
+
});
|
46
|
+
});
|
47
|
+
ava_1.default.failing('infer types for MUI Component', async (t) => {
|
48
|
+
const spec = await (0, utils_1.getReactDocs)({
|
49
|
+
src: '@mui/material',
|
50
|
+
exportName: 'Button',
|
51
|
+
resolveFromDir: process.cwd(),
|
52
|
+
});
|
53
|
+
if (spec === false) {
|
54
|
+
t.fail('Spec could not be inferred for MUI Component');
|
55
|
+
}
|
56
|
+
else {
|
57
|
+
t.pass('Spec was successfully inferred for MUI Component');
|
58
|
+
}
|
59
|
+
});
|
60
|
+
//# sourceMappingURL=mui.test.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"mui.test.js","sourceRoot":"","sources":["../../src/analyze/mui.test.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"pkg-basic.test.d.ts","sourceRoot":"","sources":["../../src/analyze/pkg-basic.test.ts"],"names":[],"mappings":""}
|
@@ -0,0 +1,33 @@
|
|
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 types_1 = require("@knapsack/types");
|
8
|
+
const utils_1 = require("../utils");
|
9
|
+
(0, ava_1.default)('infer types in basic packages', async (t) => {
|
10
|
+
const spec = await (0, utils_1.getReactDocs)({
|
11
|
+
src: '@knapsack/renderer-react-components/test-fixtures',
|
12
|
+
exportName: 'Button',
|
13
|
+
resolveFromDir: __dirname,
|
14
|
+
});
|
15
|
+
if (spec === false) {
|
16
|
+
t.fail(`Spec could not be inferred`);
|
17
|
+
return;
|
18
|
+
}
|
19
|
+
t.deepEqual(Object.keys(spec.props.properties).sort(), ['size', 'text'].sort());
|
20
|
+
if (!(0, types_1.isStringProp)(spec.props.properties.text)) {
|
21
|
+
t.log(spec.props.properties.text);
|
22
|
+
t.fail(`text prop should be a string`);
|
23
|
+
return;
|
24
|
+
}
|
25
|
+
if (!(0, types_1.isOptionsProp)(spec.props.properties.size)) {
|
26
|
+
t.log(spec.props.properties.size);
|
27
|
+
t.fail(`size prop should be an options prop`);
|
28
|
+
return;
|
29
|
+
}
|
30
|
+
t.deepEqual(spec.props.properties.size.enum, ['small', 'medium', 'large']);
|
31
|
+
t.is(spec.slots.children.title, 'children', `Should detect "children" slot`);
|
32
|
+
});
|
33
|
+
//# sourceMappingURL=pkg-basic.test.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"pkg-basic.test.js","sourceRoot":"","sources":["../../src/analyze/pkg-basic.test.ts"],"names":[],"mappings":";;;;;AAAA,8CAAuB;AACvB,2CAA8D;AAC9D,oCAAwC;AAExC,IAAA,aAAI,EAAC,+BAA+B,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;IAChD,MAAM,IAAI,GAAG,MAAM,IAAA,oBAAY,EAAC;QAC9B,GAAG,EAAE,mDAAmD;QACxD,UAAU,EAAE,QAAQ;QACpB,cAAc,EAAE,SAAS;KAC1B,CAAC,CAAC;IACH,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QACnB,CAAC,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QACrC,OAAO;IACT,CAAC;IACD,CAAC,CAAC,SAAS,CACT,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,EACzC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CACxB,CAAC;IACF,IAAI,CAAC,IAAA,oBAAY,EAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9C,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;QACvC,OAAO;IACT,CAAC;IACD,IAAI,CAAC,IAAA,qBAAa,EAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/C,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;QAC9C,OAAO;IACT,CAAC;IACD,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;IAC3E,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,UAAU,EAAE,+BAA+B,CAAC,CAAC;AAC/E,CAAC,CAAC,CAAC"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"pkg-diff-types.test.d.ts","sourceRoot":"","sources":["../../src/analyze/pkg-diff-types.test.ts"],"names":[],"mappings":""}
|
@@ -0,0 +1,43 @@
|
|
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 path_1 = require("path");
|
8
|
+
const types_1 = require("@knapsack/types");
|
9
|
+
const utils_1 = require("../utils");
|
10
|
+
(0, ava_1.default)('infer types in packages with different files name for types', async (t) => {
|
11
|
+
const spec = await (0, utils_1.getReactDocs)({
|
12
|
+
src: (0, path_1.join)(__dirname, '../../test-fixtures/pkg-diff-types'),
|
13
|
+
exportName: 'Button',
|
14
|
+
resolveFromDir: __dirname,
|
15
|
+
});
|
16
|
+
if (spec === false) {
|
17
|
+
t.fail(`Spec could not be inferred`);
|
18
|
+
return;
|
19
|
+
}
|
20
|
+
t.truthy(spec);
|
21
|
+
if (!spec.props) {
|
22
|
+
t.fail(`Spec should have props`);
|
23
|
+
return;
|
24
|
+
}
|
25
|
+
if (!spec.slots) {
|
26
|
+
t.fail(`Spec should have slots`);
|
27
|
+
return;
|
28
|
+
}
|
29
|
+
t.deepEqual(Object.keys(spec.props.properties).sort(), ['size', 'text'].sort());
|
30
|
+
if (!(0, types_1.isStringProp)(spec.props.properties.text)) {
|
31
|
+
t.log(spec.props.properties.text);
|
32
|
+
t.fail(`text prop should be a string`);
|
33
|
+
return;
|
34
|
+
}
|
35
|
+
if (!(0, types_1.isOptionsProp)(spec.props.properties.size)) {
|
36
|
+
t.log(spec.props.properties.size);
|
37
|
+
t.fail(`size prop should be an options prop`);
|
38
|
+
return;
|
39
|
+
}
|
40
|
+
t.deepEqual(spec.props.properties.size.enum, ['small', 'medium', 'large']);
|
41
|
+
t.is(spec.slots.children.title, 'children', `Should detect "children" slot`);
|
42
|
+
});
|
43
|
+
//# sourceMappingURL=pkg-diff-types.test.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"pkg-diff-types.test.js","sourceRoot":"","sources":["../../src/analyze/pkg-diff-types.test.ts"],"names":[],"mappings":";;;;;AAAA,8CAAuB;AACvB,+BAA4B;AAC5B,2CAA8D;AAC9D,oCAAwC;AAExC,IAAA,aAAI,EAAC,6DAA6D,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;IAC9E,MAAM,IAAI,GAAG,MAAM,IAAA,oBAAY,EAAC;QAC9B,GAAG,EAAE,IAAA,WAAI,EAAC,SAAS,EAAE,oCAAoC,CAAC;QAC1D,UAAU,EAAE,QAAQ;QACpB,cAAc,EAAE,SAAS;KAC1B,CAAC,CAAC;IACH,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QACnB,CAAC,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QACrC,OAAO;IACT,CAAC;IACD,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACf,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAChB,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QACjC,OAAO;IACT,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAChB,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QACjC,OAAO;IACT,CAAC;IACD,CAAC,CAAC,SAAS,CACT,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,EACzC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CACxB,CAAC;IACF,IAAI,CAAC,IAAA,oBAAY,EAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9C,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;QACvC,OAAO;IACT,CAAC;IACD,IAAI,CAAC,IAAA,qBAAa,EAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/C,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;QAC9C,OAAO;IACT,CAAC;IACD,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;IAC3E,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,UAAU,EAAE,+BAA+B,CAAC,CAAC;AAC/E,CAAC,CAAC,CAAC"}
|
package/dist/client/init.d.mts
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
export {};
|
2
|
+
//# sourceMappingURL=init.d.mts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"init.d.mts","sourceRoot":"","sources":["../../src/client/init.mts"],"names":[],"mappings":""}
|
package/dist/client/init.mjs
CHANGED
@@ -1,5 +1,41 @@
|
|
1
|
-
|
1
|
+
/// <reference lib="dom" />
|
2
|
+
import ReactDOM from 'react-dom/client';
|
3
|
+
import { getKsRendererClientUtils } from '@knapsack/renderer-webpack-base/client';
|
4
|
+
import { ReactRendererClientApp } from '@knapsack/renderer-react-components/react-renderer-client-app';
|
5
|
+
import { rendererMetaScriptTagId, } from '../types.js';
|
6
|
+
async function init() {
|
7
|
+
try {
|
8
|
+
const { getNeededImports, getExtraImports, rendererMeta: { disableReactStrictMode, demoWrapperProps }, rendererMethods: { getDemoApp }, } = getKsRendererClientUtils({
|
9
|
+
rendererMetaScriptTagId,
|
10
|
+
});
|
11
|
+
const [neededImports, { DemoWrapper }] = await Promise.all([
|
12
|
+
getNeededImports(),
|
13
|
+
getExtraImports(),
|
14
|
+
]);
|
15
|
+
const root = document.getElementById('render-root');
|
16
|
+
if (!root) {
|
17
|
+
throw new Error('No root element found');
|
18
|
+
}
|
19
|
+
const demoComponents = neededImports;
|
20
|
+
const DemoApp = getDemoApp(demoComponents);
|
21
|
+
const app = ReactRendererClientApp({
|
22
|
+
DemoWrapper,
|
23
|
+
DemoApp,
|
24
|
+
disableReactStrictMode,
|
25
|
+
demoWrapperProps,
|
26
|
+
});
|
27
|
+
ReactDOM.createRoot(root).render(app);
|
28
|
+
}
|
29
|
+
catch (e) {
|
30
|
+
console.error(e);
|
31
|
+
// create html element with error message
|
32
|
+
const errorElement = document.createElement('div');
|
33
|
+
errorElement.innerHTML = `
|
2
34
|
<h1>Error</h1>
|
3
|
-
<p>${
|
4
|
-
|
35
|
+
<p>${e.message}</p>
|
36
|
+
`;
|
37
|
+
document.body.appendChild(errorElement);
|
38
|
+
}
|
39
|
+
}
|
40
|
+
init();
|
5
41
|
//# sourceMappingURL=init.mjs.map
|
package/dist/client/init.mjs.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"
|
1
|
+
{"version":3,"file":"init.mjs","sourceRoot":"","sources":["../../src/client/init.mts"],"names":[],"mappings":"AAAA,2BAA2B;AAC3B,OAAO,QAAQ,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,EAAE,sBAAsB,EAAE,MAAM,+DAA+D,CAAC;AACvG,OAAO,EACL,uBAAuB,GAKxB,MAAM,aAAa,CAAC;AAErB,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC;QACH,MAAM,EACJ,gBAAgB,EAChB,eAAe,EACf,YAAY,EAAE,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,EAC1D,eAAe,EAAE,EAAE,UAAU,EAAE,GAChC,GAAG,wBAAwB,CAK1B;YACA,uBAAuB;SACxB,CAAC,CAAC;QACH,MAAM,CAAC,aAAa,EAAE,EAAE,WAAW,EAAE,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACzD,gBAAgB,EAAE;YAClB,eAAe,EAAE;SAClB,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;QACpD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC3C,CAAC;QACD,MAAM,cAAc,GAAG,aAAa,CAAC;QACrC,MAAM,OAAO,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC;QAC3C,MAAM,GAAG,GAAG,sBAAsB,CAAC;YACjC,WAAW;YACX,OAAO;YACP,sBAAsB;YACtB,gBAAgB;SACjB,CAAC,CAAC;QAEH,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACxC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjB,yCAAyC;QACzC,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACnD,YAAY,CAAC,SAAS,GAAG;;SAEpB,CAAC,CAAC,OAAO;GACf,CAAC;QACA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;IAC1C,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC"}
|
package/dist/index.d.ts
CHANGED
@@ -1,45 +1,3 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
export { D as DemoWrapperProps } from './types-CivTHEEo.js';
|
5
|
-
|
6
|
-
declare class KnapsackReactRenderer extends RendererWebpackBase implements Renderable {
|
7
|
-
#private;
|
8
|
-
/**
|
9
|
-
* `react.js` & `react-dom.js` root relative paths
|
10
|
-
*/
|
11
|
-
assets: string[];
|
12
|
-
babelConfig: Record<string, unknown>;
|
13
|
-
constructor({ webpackConfig, demoWrapperPath, id, disableReactStrictMode, }?: {
|
14
|
-
webpackConfig?: ConstructorParameters<typeof RendererWebpackBase>[0]['webpackConfig'];
|
15
|
-
demoWrapperPath?: string;
|
16
|
-
/** When using React v18+, this option allows a workspace to _disable_ React's Strict Mode from running in Knapsack's React Renderer (StrictMode is enabled by default).
|
17
|
-
*
|
18
|
-
* See https://reactjs.org/docs/strict-mode.html for more info
|
19
|
-
* */
|
20
|
-
disableReactStrictMode?: boolean;
|
21
|
-
/** Don't set if calling from `knapsack.config.js`, only use if creating a new Renderer based on the React Renderer */
|
22
|
-
id?: RendererId;
|
23
|
-
});
|
24
|
-
setConfig: Renderer['setConfig'];
|
25
|
-
init: Renderer['init'];
|
26
|
-
hydrate: Renderer['hydrate'];
|
27
|
-
getMeta: Renderer['getMeta'];
|
28
|
-
changeCase: Renderer['changeCase'];
|
29
|
-
createWebpackConfig: RendererWebpackBase['createWebpackConfig'];
|
30
|
-
prepClientRenderResults({ usage, demoApp, importMap, renderOptions: { demo, state, patternId, templateId }, }: {
|
31
|
-
usage: string;
|
32
|
-
demoApp: string;
|
33
|
-
importMap: KsJsImportMap;
|
34
|
-
renderOptions: Parameters<Renderer['render']>[0];
|
35
|
-
}): ReturnType<Renderer['render']>;
|
36
|
-
render: Renderer['render'];
|
37
|
-
getUsageAndImports: RendererWebpackBase['getUsageAndImports'];
|
38
|
-
inferSpec: Renderer['inferSpec'];
|
39
|
-
watch: Renderer['watch'];
|
40
|
-
getTemplateMeta: Renderer['getTemplateMeta'];
|
41
|
-
alterTemplateMetaFiles: Renderer['alterTemplateMetaFiles'];
|
42
|
-
getTemplateSuggestions: Renderer['getTemplateSuggestions'];
|
43
|
-
}
|
44
|
-
|
45
|
-
export { KnapsackReactRenderer };
|
1
|
+
export * from './renderer-react';
|
2
|
+
export type { DemoWrapperProps, } from '@knapsack/renderer-react-components/demo-wrapper';
|
3
|
+
//# sourceMappingURL=index.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,YAAY,EACV,gBAAgB,GAEjB,MAAM,kDAAkD,CAAC"}
|
package/dist/index.js
CHANGED
@@ -1,33 +1,18 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
`}c(se,"renderUsageTemplate");var M="DemoApp";function ae({imports:a="",children:t}){return `${a}
|
8
|
-
|
9
|
-
function ${M}() {
|
10
|
-
return (
|
11
|
-
${t}
|
12
|
-
)
|
13
|
-
}
|
14
|
-
`}c(ae,"renderDemoAppTemplate");async function O(a){let t=Object.keys(a.props||{}).map(s=>{let n=a.props[s];return {key:s,value:n}}),{templateName:e,children:r,extraProps:o=[]}=a;if(!e)throw new Error('Cannot getUsage of a React Component when no "templateName" is provided.');let i=t.map(({key:s,value:n})=>{switch(typeof n){case"string":return n.startsWith("(")&&n.includes("=>")?`${s}={${n}}`:`${s}="${n}"`;case"boolean":return n?`${s}`:`${s}={${n}}`;default:return `${s}={${JSON.stringify(n)}}`}}),p=[],d={};o.forEach(({key:s,value:n})=>{d[s]=d[s]??[],d[s].push(n);}),Object.entries(d).forEach(([s,n])=>{let f=n.length===1?n[0]:`<>${n.join(`
|
15
|
-
`)}</>`;p.push(`${s}={${f}}`);});let u=se({templateName:e,attributes:[...i,...p].join(" "),children:r});return a.format?fileUtils.formatCode({contents:u,path:"x.tsx"}).then(s=>s.trim()).catch(()=>u.trim()):u.trim()}c(O,"getUsage");async function I({children:a,imports:t,format:e}){let r=ae({children:a,imports:t});return e?fileUtils.formatCode({contents:r,path:"x.tsx"}):r}c(I,"getDemoAppUsage");async function V({src:a}){let t=await fileUtils.findUp("tsconfig.json",{cwd:y__default.default.dirname(a)}),e=await import('react-docgen-typescript'),r={shouldExtractLiteralValuesFromEnum:!0,savePropValueAsString:!0,skipChildrenPropWithoutDoc:!1,customComponentTypes:["VoidFunctionComponent","VFC"]};return {info:(t?e.withCustomConfig(t,r).parse:e.withDefaultConfig(r).parse)(a)}}c(V,"getTypeScriptInfoFromFile");function ne({info:a,exportName:t}){try{if(!a)return !1;let e={props:{$schema:"http://json-schema.org/draft-07/schema",type:"object",required:[],properties:{}},slots:{}},o=!t||t==="default"?a.pop():a.find(p=>p.displayName===t);if(!o)return !1;return Object.entries(o?.props||{}).forEach(([p,d])=>{let{name:u,description:s,defaultValue:n,required:f,type:l,parent:h}=d;switch(l?.name?.replace("| undefined","").replace(/<.*/g,"").trim()){case"string":e.props.properties[p]={type:"string"};break;case"number":e.props.properties[p]={type:"number"};break;case"boolean":case"bool":n&&"value"in n&&(n.value=n.value==="true"),e.props.properties[p]={type:"boolean"};break;case"enum":e.props.properties[p]={type:"string",enum:[...new Set(l.value.flatMap(({value:b})=>{if(!b)return [];let g=utils.removeWrappingDoubleQuotes(b.trim());return g==="undefined"?[]:[g]}))]};break;case"ReactNode":case"React.ReactNode":case"React.ReactElement":case"ReactElement":e.slots[p]={title:p},s&&(e.slots[p]={...e.slots[p],description:s});break;case"VFC":case"FC":e.slots[p]={title:p,description:s||"A reference to a component",isTemplateReference:!0,allowOnlyOne:!0,disallowText:!0};break;default:if(l?.name?.startsWith("("))e.props.properties[p]={typeof:"function",tsType:d?.type?.name};else if(l?.name?.includes("|")){let b=l.name.split("|").flatMap(g=>{if(!g)return [];let T=utils.removeWrappingDoubleQuotes(g.trim());return T==="undefined"?[]:[T]});b?.length&&(e.props.properties[p]={type:"string",enum:[...new Set(b)]});}else e.props.properties[p]={tsType:d?.type?.name};}e.props.properties[p]&&(f&&e.props.required.push(p),s&&!e.props.properties[p].description&&(e.props.properties[p].description=s),n&&"value"in n&&(types.isNumberProp(e.props.properties[p])?e.props.properties[p].default=parseFloat(n.value):e.props.properties[p].default=utils.removeWrappingDoubleQuotes(n.value)));}),e}catch(e){return app.log.verbose("Could not infer spec from React TypeScript file",{exportName:t,error:e},"react renderer"),!1}}c(ne,"extractSpecFromTypeScriptInfo");async function oe({src:a}){let t=await import('react-docgen'),{builtinResolvers:e}=t,r=await fileUtils.readFile(a),{FindExportedDefinitionsResolver:o}=e;return {info:t.parse(r,{resolver:new o,handlers:null,filename:a})}}c(oe,"getPropTypesInfoFromFile");function ie({info:a,exportName:t}){try{let r=!t||t==="default"?a.pop():a.find(i=>i.displayName===t),o={isInferred:!0,props:{$schema:"http://json-schema.org/draft-07/schema",type:"object",required:[],properties:{}},slots:{}};return Object.entries(r?.props||{}).forEach(([i,p])=>{let{required:d,description:u,defaultValue:s}=p;switch(p?.type?.name){case"string":o.props.properties[i]={type:"string"};break;case"func":o.props.properties[i]={type:"string"};break;case"bool":o.props.properties[i]={type:"boolean"};break;case"node":o.slots[i]={title:i,description:u};}o.props.properties[i]&&(d&&o.props.required.push(i),u&&!o.props.properties[i].description&&(o.props.properties[i].description=u),s&&"value"in s&&(o.props.properties[i].default=typeof s.value=="string"?utils.removeWrappingDoubleQuotes(s.value):s.value));}),o}catch(e){return app.log.verbose("Could not infer spec from React PropTypes",{exportName:t,error:e},"react renderer"),!1}}c(ie,"extractSpecFromPropTypesInfo");function pe({spec:a}){return a===!1||Object.entries(a?.props?.properties||{}).forEach(([t,e])=>{types.isOptionsProp(e)&&(e.enum.includes(e.default)||(e.default=void 0));}),a}c(pe,"cleanUpSpec");async function ce({src:a,resolveFromDir:t}){let e=await fileUtils.resolvePath({path:a,resolveFromDir:t,resolveType:"types"});if(e.exists){let i=await V({src:e.absolutePath});if(i)return {type:"typescript",info:i.info}}let r=await fileUtils.resolvePath({path:a,resolveFromDir:t});if(!r.exists)return {type:"unknown"};let{ext:o}=y__default.default.parse(r.absolutePath);switch(o){case".jsx":return {type:"propTypes",info:(await oe({src:r.absolutePath})).info};case".ts":case".tsx":return {type:"typescript",info:(await V({src:r.absolutePath})).info};default:return {type:"unknown"}}}c(ce,"getReactModuleInfoUncached");var $=new Map,N=c(()=>{app.log.info("Clearing React TypeScript inferSpec cache..."),$.clear();},"clearInferSpecCache");async function le(a){let t=JSON.stringify(a);return $.has(t)||$.set(t,ce(a)),$.get(t)}c(le,"getReactModuleInfo");async function de({src:a,exportName:t,resolveFromDir:e}){let r=await le({src:a,resolveFromDir:e});switch(r.type){case"typescript":return ne({info:r.info,exportName:t});case"propTypes":return ie({info:r.info,exportName:t});case"unknown":default:return !1}}c(de,"getReactSpec");async function _(a){return pe({spec:await de(a)})}c(_,"getReactDocs");async function L(a,t){try{let{version:e}=fileUtils.getModulePkgJson("react"),{version:r}=fileUtils.getModulePkgJson("react-dom"),o=y__default.default.dirname(E.resolve("react",{paths:[process.cwd()]})),i=y__default.default.dirname(E.resolve("react-dom",{paths:[process.cwd()]}));await Promise.all([fileUtils.copy(y__default.default.join(o,"umd/react.development.js"),y__default.default.join(a,`react.development.${e}.js`)),fileUtils.copy(y__default.default.join(o,"umd/react.production.min.js"),y__default.default.join(a,`react.production.min.${e}.js`)),fileUtils.copy(y__default.default.join(i,"umd/react-dom.production.min.js"),y__default.default.join(a,`react-dom.production.min.${r}.js`)),fileUtils.copy(y__default.default.join(i,"umd/react-dom.development.js"),y__default.default.join(a,`react-dom.development.${r}.js`))]);let p=process.env.NODE_ENV==="production"?"production.min":"development";return [y__default.default.join(t,`react.${p}.${e}.js`),y__default.default.join(t,`react-dom.${p}.${r}.js`)]}catch(e){app.log.warn('Error trying to copy "react" and "react-dom" JS files, are they installed? We want to use your exact versions.',e,"templateRenderer:react"),process.exit(1);}}c(L,"copyReactAssets");function Re(a){return a.toUpperCase()===a}c(Re,"isCapitalLetter");function be(a){return Re(a[0])}c(be,"startsWithCapitalLetter");function Te({importName:a,id:t,title:e=a,pkgPath:r,initialDemoId:o}){return {id:t,title:e,description:"",statuses:{main:"ready"},templates:[{id:"react",title:"react",path:r,alias:a,templateLanguageId:"react",spec:{isInferred:!0},demoIds:[o],blockIds:[]}],tabs:[{type:"template",id:"react"}],subPages:[]}}c(Te,"createPatternData");var G=creatorUtils.createCreator({id:"react-patterns",title:"React Ks Patterns",description:"Adds React templates as Knapsack Patterns",getQuestions:c(async()=>({pkgPath:{type:"text",title:"Package path"},importPrefix:{type:"text",title:"Import Prefix to Remove"}}),"getQuestions"),getTasks:c(async({answers:{pkgPath:a,importPrefix:t=""},config:e})=>{let r=e.dest,i=(await ksFileUtils.readKsPatternConfigs({dataDir:r})).reduce((d,u)=>{let s=u.templates?.filter(n=>n.templateLanguageId==="react")??[];return d.push(...s.map(n=>n.alias)),d},[]),{exports:p}=await fileUtils.getJsExportNames({path:a});return [{title:"Pick Imports to add",task:c((d,u)=>creatorUtils.tasks.runSubCreator({task:u,config:e,creator:creatorUtils.createCreator({id:"react-pattern-import-names",getQuestions:c(async()=>({importNames:{type:"choices",choices:p.filter(s=>be(s)&&!i.includes(s)).map(s=>({value:s}))}}),"getQuestions"),getTasks:c(async({answers:s})=>{let{importNames:n}=s,f=n.map(l=>({importName:l,patternId:l.startsWith(t)?l.slice(t.length).toLowerCase():l.toLowerCase()}));return [...f.map(({importName:l,patternId:h})=>({title:`Add ${l} React Template`,task:c(async(w,b)=>{let g={type:"data",id:utils.makeShortId(),title:"Main",patternId:h,templateId:"react",data:{props:{},slots:{}}},T=Te({id:h,importName:l,pkgPath:a,initialDemoId:g.id});await Promise.all([ksFileUtils.writeDemo({dataDir:r,demo:g}),ksFileUtils.writeKsPatternConfig({dataDir:r,patternId:h,data:T})]);},"task")})),{title:"Updating Nav",task:c(async(l,h)=>{let{byId:w}=await ksFileUtils.readKsNavConfig({dataDir:r}),b=Object.values(w).find(({path:g,name:T,id:P})=>g?!1:T.toLowerCase()==="patterns"||T.toLowerCase()==="components");await ksFileUtils.addKsNavItems({dataDir:r,navItems:f.map(({patternId:g})=>({navId:g,navPath:`/pattern/${g}`,navParent:b?.id||"root"}))});},"task")}]},"getTasks")})}),"task")}]},"getTasks")});var H="ks-react-meta";var{pkg:j}=fileUtils.findUpPkgJson(__dirname);app.log.setupUpdateNotifier({...j,name:j.name,version:j.version});var K=y.join(__dirname,"./error-catcher.mjs");if(!fileUtils.exists(K))throw new Error(`Could not find error catcher at: ${K}`);var Q=class a extends rendererWebpackBase.RendererWebpackBase{static{c(this,"KnapsackReactRenderer");}assets;babelConfig;#e;#t;constructor({webpackConfig:t,demoWrapperPath:e=y.join(__dirname,"./demo-wrapper.mjs"),id:r=types.rendererIds.react,disableReactStrictMode:o}={}){super({id:r,language:"jsx",webpackConfig:t,extraScripts:["@knapsack/renderer-react/client"]}),this.language="jsx",this.assets=[],this.#e=e,this.#t=o,this.creators=[G];}setConfig=c(t=>{super.setConfig(t);let{absolutePath:e,exists:r,type:o}=this.resolvePathSync({path:this.#e,resolveFromDir:this.userConfigDir});if(!r)throw new Error(`Could not find demo wrapper at: "${this.#e}"
|
16
|
-
Please adjust setting in "knapsack.config.js" or pass a different path when creating the React Renderer.`);this.registerExtraJsImports({DemoWrapper:{exportName:"DemoWrapper",isDefaultExport:!0,path:o==="package"?this.#e:e},ErrorCatcher:{exportName:"ErrorCatcher",isDefaultExport:!0,path:K}});},"setConfig");init=c(async()=>{this.assets=await L(this.outputDir,this.publicPath);},"init");hydrate=c(async t=>{await super.hydrate(t),await this.init({missingFileVerbosity:"silent"});},"hydrate");getMeta=c(()=>({id:this.id,title:"React",aliasUse:"optional",aliasTitle:"Named Export",aliasIsJsNamedExport:!0,aliasDescription:"If `export X` was used instead of `export default`, then provide X.",enableDataDemos:!0,enableTemplateDemos:!0,hasSlotsSupport:!0,hasSlotOptionsSupport:!0,version:j.version,hasInferSpecSupport:!0,syntaxHighlightingLanguage:"jsx",hasTemplateSuggestionsSupport:!0,prototypingTemplate:{path:"@knapsack/renderer-react/prototype-template",spec:{isInferred:!1,props:{type:"object",properties:{}},slots:{children:{title:"Children"}}}}}),"getMeta");changeCase=c(t=>utils.pascalCase(t),"changeCase");createWebpackConfig=c(()=>{let t=super.createWebpackConfig();return t.externals={react:"React","react-dom":"ReactDOM"},t},"createWebpackConfig");async prepClientRenderResults({usage:t,demoApp:e,importMap:r,renderOptions:{demo:o,state:i,patternId:p,templateId:d}}){let u={demo:o,disableReactStrictMode:this.#t,neededImportsByCodeSrcId:rendererWebpackBase.convertImportMapToNeededImportsByCodeSrcId(r),demoWrapperProps:{patternId:p,templateId:d,demo:o}},s=`
|
17
|
-
window.knapsack = window.knapsack || {};
|
18
|
-
window.knapsack.getDemoApp = ({ ${[...r.keys()].join(", ")} }) => {
|
19
|
-
${e}
|
20
|
-
return ${M}
|
1
|
+
"use strict";
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
3
|
+
if (k2 === undefined) k2 = k;
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
21
7
|
}
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
`),encoding:"utf8",path:y.join(e,"react.d.ts")}]},"alterTemplateMetaFiles");getTemplateSuggestions=c(async({newPath:t,state:e})=>{let r=Array.from(new Map(Object.values(e.patterns).reduce((s,{templateDemos:n,templates:f})=>(f.forEach(({path:l,alias:h,templateLanguageId:w})=>{w===this.id&&s.push([JSON.stringify({path:l,alias:h}),{path:l,alias:h}]);}),n.forEach(({templateInfo:{path:l,alias:h},templateLanguageId:w})=>{w===this.id&&s.push([JSON.stringify({path:l,alias:h}),{path:l,alias:h}]);}),s),[])).values()),o=new Set(this.getCodeSrcs().map(({path:s})=>s)),i=[...new Set([t,...Object.keys(this.pkgPathAliases||{}),...o])],d=(await Promise.all(i.map(async s=>{if(!s)return [];try{let{exports:n,errorMsg:f}=await fileUtils.getJsExportNames({path:s,resolveFromDir:this.dataDir,pkgPathAliases:this.pkgPathAliases});if(f)throw new Error(f);return n.filter(l=>l==="default"||utils.isFirstLetterCapital(l)).map(l=>({alias:l,path:s}))}catch(n){return app.log.verbose(`Error getting import names for ${s}: ${n.message}`,null,this.logPrefix),[]}})).then(s=>s.flat())).filter(s=>!r.find(n=>n.alias===s.alias&&n.path===s.path)),u=r.map(s=>({...s,connected:!0}));return {suggestions:[...d,...u]}},"getTemplateSuggestions")};exports.KnapsackReactRenderer=Q;//# sourceMappingURL=index.js.map
|
8
|
+
Object.defineProperty(o, k2, desc);
|
9
|
+
}) : (function(o, m, k, k2) {
|
10
|
+
if (k2 === undefined) k2 = k;
|
11
|
+
o[k2] = m[k];
|
12
|
+
}));
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
15
|
+
};
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
17
|
+
__exportStar(require("./renderer-react"), exports);
|
33
18
|
//# sourceMappingURL=index.js.map
|