@knapsack/renderer-react 4.69.9--canary.011c229.0 → 4.69.9
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/CHANGELOG.md +18 -0
- package/dist/client/init.d.mts +2 -0
- package/dist/client/init.d.ts +2 -0
- package/dist/client/init.js +82 -0
- package/dist/client/init.js.map +1 -0
- package/dist/client/init.mjs +90 -0
- package/dist/client/init.mjs.map +1 -0
- package/dist/demo-wrapper.d.mts +1 -4
- package/dist/demo-wrapper.d.ts +1 -4
- package/dist/demo-wrapper.js.map +1 -1
- package/dist/demo-wrapper.mjs.map +1 -1
- package/dist/index.d.mts +4 -12
- package/dist/index.d.ts +4 -12
- package/dist/index.js +61 -135
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +65 -137
- package/dist/index.mjs.map +1 -1
- package/dist/types-D2eCZXsg.d.mts +13 -0
- package/dist/types-D2eCZXsg.d.ts +13 -0
- package/package.json +19 -14
package/dist/index.mjs
CHANGED
@@ -16,8 +16,10 @@ var __dirname = /* @__PURE__ */ getDirname();
|
|
16
16
|
|
17
17
|
// src/renderer-react.ts
|
18
18
|
import sleep from "sleep-promise";
|
19
|
-
import {
|
20
|
-
|
19
|
+
import {
|
20
|
+
RendererWebpackBase
|
21
|
+
} from "@knapsack/renderer-webpack-base";
|
22
|
+
import { pascalCase, isFirstLetterCapital, groupBy } from "@knapsack/utils";
|
21
23
|
import { knapsackEvents, log as log2 } from "@knapsack/app";
|
22
24
|
import {
|
23
25
|
babelCodeForBrowser,
|
@@ -63,13 +65,14 @@ function renderUsageTemplate({
|
|
63
65
|
`;
|
64
66
|
}
|
65
67
|
__name(renderUsageTemplate, "renderUsageTemplate");
|
68
|
+
var demoAppName = "DemoApp";
|
66
69
|
function renderDemoAppTemplate({
|
67
|
-
imports,
|
70
|
+
imports = "",
|
68
71
|
children
|
69
72
|
}) {
|
70
73
|
return `${imports}
|
71
74
|
|
72
|
-
function
|
75
|
+
function ${demoAppName}() {
|
73
76
|
return (
|
74
77
|
${children}
|
75
78
|
)
|
@@ -128,12 +131,14 @@ async function getUsage(data) {
|
|
128
131
|
__name(getUsage, "getUsage");
|
129
132
|
async function getDemoAppUsage({
|
130
133
|
children,
|
131
|
-
imports
|
134
|
+
imports,
|
135
|
+
format
|
132
136
|
}) {
|
133
137
|
const code = renderDemoAppTemplate({
|
134
138
|
children,
|
135
139
|
imports
|
136
140
|
});
|
141
|
+
if (!format) return code;
|
137
142
|
return formatCode({
|
138
143
|
contents: code,
|
139
144
|
path: "x.tsx"
|
@@ -723,6 +728,9 @@ var createReactPattern = createCreator({
|
|
723
728
|
}, "getTasks")
|
724
729
|
});
|
725
730
|
|
731
|
+
// src/types.ts
|
732
|
+
var rendererMetaScriptTagId = "ks-react-meta";
|
733
|
+
|
726
734
|
// src/renderer-react.ts
|
727
735
|
var { pkg } = findUpPkgJson(__dirname);
|
728
736
|
log2.setupUpdateNotifier({ ...pkg, name: pkg.name, version: pkg.version });
|
@@ -747,7 +755,11 @@ var KnapsackReactRenderer = class _KnapsackReactRenderer extends RendererWebpack
|
|
747
755
|
id,
|
748
756
|
extension: ".jsx",
|
749
757
|
language: "jsx",
|
750
|
-
webpackConfig
|
758
|
+
webpackConfig,
|
759
|
+
extraScripts: [
|
760
|
+
// this is the code in `./client/init.mts`
|
761
|
+
"@knapsack/renderer-react/client"
|
762
|
+
]
|
751
763
|
});
|
752
764
|
this.language = "jsx";
|
753
765
|
this.assets = [];
|
@@ -830,167 +842,82 @@ var KnapsackReactRenderer = class _KnapsackReactRenderer extends RendererWebpack
|
|
830
842
|
imports: xImports,
|
831
843
|
renderOptions: { pattern, template, demo }
|
832
844
|
}) {
|
833
|
-
const
|
834
|
-
(imp) => imp.type === "extra"
|
845
|
+
const extraImports = this.getJsImports().filter(
|
846
|
+
(imp) => imp.type === "extra"
|
835
847
|
);
|
836
|
-
const { imports, isDeclaredVarsUnique, nameCollisions } = this.makeKsJsImportsUnique({ imports: xImports });
|
848
|
+
const { imports, isDeclaredVarsUnique, nameCollisions } = this.makeKsJsImportsUnique({ imports: [...xImports, ...extraImports] });
|
837
849
|
if (!isDeclaredVarsUnique) {
|
838
850
|
log2.error(`${nameCollisions.join(", ")} are declared multiple times`, {
|
839
851
|
imports
|
840
852
|
});
|
841
853
|
}
|
842
|
-
const
|
843
|
-
|
844
|
-
|
845
|
-
|
846
|
-
|
847
|
-
|
848
|
-
|
849
|
-
|
850
|
-
|
851
|
-
|
854
|
+
const importInfos = imports.map(({ importInfo }) => importInfo);
|
855
|
+
const meta = {
|
856
|
+
demo,
|
857
|
+
moduleImports: groupBy(importInfos, (importInfo) => importInfo.path),
|
858
|
+
patternId: pattern.id,
|
859
|
+
templateId: template.id,
|
860
|
+
imports,
|
861
|
+
disableReactStrictMode: this.disableReactStrictMode,
|
862
|
+
demoWrapperProps: {
|
863
|
+
pattern,
|
864
|
+
template,
|
865
|
+
demo,
|
866
|
+
patternsUsed: imports.flatMap((imp) => {
|
867
|
+
if (imp.type === "pattern-template") {
|
868
|
+
return [
|
869
|
+
{
|
870
|
+
patternId: imp.patternId,
|
871
|
+
templateId: imp.templateId
|
872
|
+
}
|
873
|
+
];
|
852
874
|
}
|
853
|
-
|
854
|
-
|
855
|
-
|
856
|
-
|
857
|
-
|
858
|
-
|
859
|
-
|
860
|
-
|
875
|
+
if (imp.type === "pattern-template-demo") {
|
876
|
+
return [
|
877
|
+
{
|
878
|
+
patternId: imp.patternId,
|
879
|
+
templateId: imp.templateId,
|
880
|
+
demoId: imp.demoId
|
881
|
+
}
|
882
|
+
];
|
861
883
|
}
|
862
|
-
|
884
|
+
return [];
|
885
|
+
})
|
863
886
|
}
|
864
|
-
return [];
|
865
|
-
});
|
866
|
-
const demoWrapperProps = {
|
867
|
-
patternsUsed,
|
868
|
-
pattern,
|
869
|
-
template,
|
870
|
-
demo
|
871
887
|
};
|
872
|
-
const demoWrapperCode = await getUsage({
|
873
|
-
templateName: "DemoWrapper",
|
874
|
-
props: demoWrapperProps,
|
875
|
-
children: `<DemoApp />`
|
876
|
-
// extraProps,
|
877
|
-
});
|
878
|
-
async function renderReact({
|
879
|
-
patterns,
|
880
|
-
theExtraImportNames,
|
881
|
-
ksGlobal
|
882
|
-
}) {
|
883
|
-
if (!ksGlobal) {
|
884
|
-
throw new Error('"window.knapsack" is null');
|
885
|
-
}
|
886
|
-
const components = await ksGlobal.getAllImports({
|
887
|
-
patterns,
|
888
|
-
extras: theExtraImportNames.map((name) => ({ name }))
|
889
|
-
});
|
890
|
-
return components;
|
891
|
-
}
|
892
|
-
__name(renderReact, "renderReact");
|
893
888
|
let code = `
|
894
|
-
|
895
|
-
${
|
896
|
-
${
|
897
|
-
|
898
|
-
patterns: ${JSON.stringify(patternsUsed)},
|
899
|
-
theExtraImportNames: ${JSON.stringify(extraImportNames)},
|
900
|
-
}).then((components) => {
|
901
|
-
const { ${importNames.join(", ")} } = components;
|
902
|
-
const root = document.getElementById('render-root');
|
903
|
-
|
904
|
-
${demoApp}
|
905
|
-
|
906
|
-
const reactDomVersion = parseInt(ReactDOM.version.split('.')[0], 10);
|
907
|
-
|
908
|
-
const ReactRendererResult = () => {
|
909
|
-
if (reactDomVersion < 17 || ${this.disableReactStrictMode}){
|
910
|
-
return (
|
911
|
-
<ErrorCatcher>
|
912
|
-
${demoWrapperCode}
|
913
|
-
</ErrorCatcher>
|
914
|
-
)
|
889
|
+
window.knapsack = window.knapsack || {};
|
890
|
+
window.knapsack.getDemoApp = ({ ${imports.map((i) => i.importInfo.name).join(", ")} }) => {
|
891
|
+
${demoApp}
|
892
|
+
return ${demoAppName}
|
915
893
|
}
|
916
|
-
|
917
|
-
return (
|
918
|
-
<React.StrictMode>
|
919
|
-
<ErrorCatcher>
|
920
|
-
${demoWrapperCode}
|
921
|
-
</ErrorCatcher>
|
922
|
-
</React.StrictMode>
|
923
|
-
)
|
924
|
-
};
|
925
|
-
|
926
|
-
|
927
|
-
if (reactDomVersion > 17){
|
928
|
-
ReactDOM.createRoot(root).render(
|
929
|
-
<ReactRendererResult />
|
930
|
-
)
|
931
|
-
} else {
|
932
|
-
ReactDOM.render(
|
933
|
-
<ReactRendererResult />,
|
934
|
-
root
|
935
|
-
);
|
936
|
-
}
|
937
|
-
}).catch((err) => {
|
938
|
-
console.error(err);
|
939
|
-
const root = document.getElementById('render-root');
|
940
|
-
// Create a new <div> element to contain the error message
|
941
|
-
const errorMsgDiv = document.createElement('div');
|
942
|
-
// Insert the new <div> element before the existing element
|
943
|
-
root.parentNode.insertBefore(errorMsgDiv, root);
|
944
|
-
// add error message so users can see it
|
945
|
-
errorMsgDiv.innerHTML = '<h1>Component Error</h1><p>' + err.message + '</p>';
|
946
|
-
});
|
947
894
|
`;
|
948
|
-
let codeHadError = false;
|
949
895
|
let errorHtmlMsg = "";
|
950
896
|
try {
|
951
|
-
code = await babelCodeForBrowser({
|
952
|
-
code
|
953
|
-
});
|
897
|
+
code = await babelCodeForBrowser({ code });
|
954
898
|
} catch (e) {
|
955
|
-
codeHadError = true;
|
956
899
|
console.log(code);
|
957
900
|
console.log("---original code before babel error ^---");
|
958
901
|
console.trace(e.message);
|
959
902
|
code = `console.error(${JSON.stringify(e.message)});`;
|
960
903
|
errorHtmlMsg = `<pre><code>${e.message}</code></pre>`;
|
961
904
|
}
|
962
|
-
if (!codeHadError) {
|
963
|
-
try {
|
964
|
-
code = await formatCode2({
|
965
|
-
contents: code,
|
966
|
-
path: "x.tsx"
|
967
|
-
// doing this to set format language
|
968
|
-
});
|
969
|
-
} catch (e) {
|
970
|
-
codeHadError = true;
|
971
|
-
console.log(code);
|
972
|
-
console.log("---original code before prettier error ^---");
|
973
|
-
console.trace(e.message);
|
974
|
-
code = `console.error(${JSON.stringify(e.message)});`;
|
975
|
-
errorHtmlMsg = `<pre><code>${e.message}</code></pre>`;
|
976
|
-
}
|
977
|
-
}
|
978
905
|
const html = `
|
906
|
+
<script type="application/json" id="${rendererMetaScriptTagId}">${JSON.stringify(
|
907
|
+
meta
|
908
|
+
)}</script>
|
909
|
+
<script type="application/javascript">${code}</script>
|
910
|
+
<div id="render-root" class="knapsack-pattern-direct-parent" data-dev-note="Knapsack React Template Wrapper"></div>
|
979
911
|
${this.assets.map((asset) => `<script src="${asset}"></script>`).join("\n")}
|
980
|
-
|
981
912
|
${this.createHtmlTagsForAssetPaths({
|
982
913
|
assets: this.getWebpackAssetPaths(),
|
983
914
|
// we need the scripts to finish adding methods to the global knapsack object synchronously before the client-side code runs that is in the <script> tag below
|
984
915
|
scriptTagsAreAsync: false
|
985
916
|
})}
|
986
|
-
|
987
|
-
<div id="render-root" class="knapsack-pattern-direct-parent" data-dev-note="Knapsack React Template Wrapper"></div>
|
988
|
-
<script type="application/javascript">${code}</script>
|
989
|
-
${errorHtmlMsg}
|
990
|
-
|
917
|
+
${errorHtmlMsg}
|
991
918
|
`;
|
992
919
|
return {
|
993
|
-
ok: !
|
920
|
+
ok: !errorHtmlMsg,
|
994
921
|
html: await formatCode2({
|
995
922
|
contents: html,
|
996
923
|
path: "x.html"
|
@@ -1051,7 +978,8 @@ ${errorHtmlMsg}
|
|
1051
978
|
const [demoAppUsage, demoApp] = await Promise.all([
|
1052
979
|
getDemoAppUsage({
|
1053
980
|
children: usage,
|
1054
|
-
imports: importCode
|
981
|
+
imports: importCode,
|
982
|
+
format: true
|
1055
983
|
}),
|
1056
984
|
getDemoAppUsage({
|
1057
985
|
children: usage
|