@contember/react-multipass-rendering 2.1.0-alpha.8 → 2.1.0-beta.1
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/development/src/ChildrenAnalyzer.cjs +9 -8
- package/dist/development/src/ChildrenAnalyzer.cjs.map +1 -1
- package/dist/development/src/ChildrenAnalyzer.js +9 -8
- package/dist/development/src/ChildrenAnalyzer.js.map +1 -1
- package/dist/development/src/ChildrenAnalyzerError.cjs.map +1 -1
- package/dist/development/src/ChildrenAnalyzerError.js.map +1 -1
- package/dist/development/src/helpers/wrapError.cjs +8 -11
- package/dist/development/src/helpers/wrapError.cjs.map +1 -1
- package/dist/development/src/helpers/wrapError.js +8 -11
- package/dist/development/src/helpers/wrapError.js.map +1 -1
- package/dist/development/src/nodeSpecs/BranchNode.cjs.map +1 -1
- package/dist/development/src/nodeSpecs/BranchNode.js.map +1 -1
- package/dist/development/src/nodeSpecs/Leaf.cjs.map +1 -1
- package/dist/development/src/nodeSpecs/Leaf.js.map +1 -1
- package/dist/production/src/ChildrenAnalyzer.cjs +9 -8
- package/dist/production/src/ChildrenAnalyzer.cjs.map +1 -1
- package/dist/production/src/ChildrenAnalyzer.js +9 -8
- package/dist/production/src/ChildrenAnalyzer.js.map +1 -1
- package/dist/production/src/ChildrenAnalyzerError.cjs.map +1 -1
- package/dist/production/src/ChildrenAnalyzerError.js.map +1 -1
- package/dist/production/src/helpers/wrapError.cjs +8 -11
- package/dist/production/src/helpers/wrapError.cjs.map +1 -1
- package/dist/production/src/helpers/wrapError.js +8 -11
- package/dist/production/src/helpers/wrapError.js.map +1 -1
- package/dist/production/src/nodeSpecs/BranchNode.cjs.map +1 -1
- package/dist/production/src/nodeSpecs/BranchNode.js.map +1 -1
- package/dist/production/src/nodeSpecs/Leaf.cjs.map +1 -1
- package/dist/production/src/nodeSpecs/Leaf.js.map +1 -1
- package/dist/types/ChildrenAnalyzer.d.ts.map +1 -1
- package/dist/types/helpers/wrapError.d.ts.map +1 -1
- package/dist/types/nodeSpecs/BranchNode.d.ts.map +1 -1
- package/dist/types/nodeSpecs/Leaf.d.ts.map +1 -1
- package/dist/types/nodeSpecs/types/UnconstrainedLeafRepresentationFactory.d.ts +2 -2
- package/dist/types/nodeSpecs/types/UnconstrainedLeafRepresentationFactory.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +8 -3
- package/src/ChildrenAnalyzer.ts +26 -25
- package/src/helpers/wrapError.ts +2 -3
- package/src/nodeSpecs/BranchNode.ts +5 -5
- package/src/nodeSpecs/Leaf.ts +3 -7
- package/src/nodeSpecs/types/UnconstrainedLeafRepresentationFactory.ts +2 -2
- package/tests/cases/unit/childrenAnalyzer.spec.tsx +1 -3
|
@@ -31,7 +31,7 @@ const _ChildrenAnalyzer = class _ChildrenAnalyzer2 {
|
|
|
31
31
|
);
|
|
32
32
|
}
|
|
33
33
|
processNode(node, staticContext, componentPath) {
|
|
34
|
-
if (!node || typeof node === "string" || typeof node === "number" || typeof node === "boolean") {
|
|
34
|
+
if (!node || typeof node === "string" || typeof node === "number" || typeof node === "boolean" || typeof node === "bigint") {
|
|
35
35
|
for (const leaf of this.leaves) {
|
|
36
36
|
const specification = leaf.specification;
|
|
37
37
|
if (specification.type === "useSite") {
|
|
@@ -69,11 +69,12 @@ const _ChildrenAnalyzer = class _ChildrenAnalyzer2 {
|
|
|
69
69
|
}
|
|
70
70
|
return mapped;
|
|
71
71
|
}
|
|
72
|
-
let children
|
|
73
|
-
if (!("type" in node)) {
|
|
72
|
+
let children;
|
|
73
|
+
if (typeof node !== "object" || !("type" in node)) {
|
|
74
74
|
return this.processNode(children, staticContext, componentPath);
|
|
75
75
|
}
|
|
76
|
-
|
|
76
|
+
const props = node.props;
|
|
77
|
+
children = props.children;
|
|
77
78
|
if (typeof node.type === "symbol") {
|
|
78
79
|
return this.processNode(children, staticContext, componentPath);
|
|
79
80
|
}
|
|
@@ -83,7 +84,7 @@ const _ChildrenAnalyzer = class _ChildrenAnalyzer2 {
|
|
|
83
84
|
if (this.options.staticContextFactoryName in treeNode) {
|
|
84
85
|
const staticContextFactory = treeNode[this.options.staticContextFactoryName];
|
|
85
86
|
try {
|
|
86
|
-
staticContext = staticContextFactory(
|
|
87
|
+
staticContext = staticContextFactory(props, staticContext);
|
|
87
88
|
} catch (e) {
|
|
88
89
|
wrapError.wrapError(e, treeNode.displayName ?? "???", this.options.staticContextFactoryName, componentPath);
|
|
89
90
|
}
|
|
@@ -91,7 +92,7 @@ const _ChildrenAnalyzer = class _ChildrenAnalyzer2 {
|
|
|
91
92
|
if (this.options.staticRenderFactoryName in treeNode) {
|
|
92
93
|
const factory = treeNode[this.options.staticRenderFactoryName];
|
|
93
94
|
try {
|
|
94
|
-
children = factory(
|
|
95
|
+
children = factory(props, staticContext);
|
|
95
96
|
} catch (e) {
|
|
96
97
|
wrapError.wrapError(e, treeNode.displayName ?? "???", this.options.staticRenderFactoryName, componentPath);
|
|
97
98
|
}
|
|
@@ -104,7 +105,7 @@ const _ChildrenAnalyzer = class _ChildrenAnalyzer2 {
|
|
|
104
105
|
const { factoryMethodName } = specification;
|
|
105
106
|
if (typeof treeNode !== "string" && factoryMethodName in treeNode) {
|
|
106
107
|
const factory = treeNode[factoryMethodName];
|
|
107
|
-
return factory(
|
|
108
|
+
return factory(props, staticContext);
|
|
108
109
|
}
|
|
109
110
|
break;
|
|
110
111
|
}
|
|
@@ -130,7 +131,7 @@ const _ChildrenAnalyzer = class _ChildrenAnalyzer2 {
|
|
|
130
131
|
throw new ChildrenAnalyzerError.ChildrenAnalyzerError(branchNode.options.childrenAbsentErrorMessage);
|
|
131
132
|
}
|
|
132
133
|
const factory = treeNode[factoryMethodName];
|
|
133
|
-
return factory(
|
|
134
|
+
return factory(props, childrenRepresentationReducer(processedChildren), staticContext);
|
|
134
135
|
}
|
|
135
136
|
break;
|
|
136
137
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChildrenAnalyzer.cjs","sources":["../../../../packages/react-multipass-rendering/src/ChildrenAnalyzer.ts"],"sourcesContent":["import { assertNever } from '@contember/utilities'\nimport type { ElementType, ReactElement, ReactNode } from 'react'\nimport type { BranchNodeList } from './BranchNodeList'\nimport { ChildrenAnalyzerError } from './ChildrenAnalyzerError'\nimport type { ChildrenAnalyzerOptions } from './ChildrenAnalyzerOptions'\nimport type { LeafList } from './LeafList'\nimport { getErrorMessage } from './helpers'\nimport { wrapError } from './helpers/wrapError'\nimport type {\n\tDeclarationSiteNodeRepresentationFactory,\n\tRawNodeRepresentation,\n\tStaticContextFactory,\n\tSyntheticChildrenFactory,\n\tUnconstrainedLeafRepresentationFactory,\n\tValidFactoryName,\n} from './nodeSpecs'\n\nexport class ChildrenAnalyzer<\n\tAllLeavesRepresentation = any,\n\tAllBranchNodesRepresentation = never,\n\tStaticContext = undefined,\n> {\n\tprivate static defaultOptions: ChildrenAnalyzerOptions = {\n\t\tignoreRenderProps: true,\n\t\trenderPropsErrorMessage: 'Render props (functions as React component children) are not supported.',\n\n\t\tignoreUnhandledNodes: true,\n\t\tunhandledNodeErrorMessage: 'Encountered an unknown child.',\n\n\t\tstaticContextFactoryName: 'getStaticContext',\n\t\tstaticRenderFactoryName: 'staticRender',\n\t}\n\n\tprivate readonly leaves: LeafList<AllLeavesRepresentation, StaticContext>\n\tprivate readonly branchNodes: BranchNodeList<AllLeavesRepresentation, AllBranchNodesRepresentation, StaticContext>\n\tprivate readonly options: ChildrenAnalyzerOptions<StaticContext>\n\n\tpublic constructor(\n\t\tleaves: LeafList<AllLeavesRepresentation, StaticContext>,\n\t\toptions?: Partial<ChildrenAnalyzerOptions>,\n\t)\n\tpublic constructor(\n\t\tleaves: LeafList<AllLeavesRepresentation, StaticContext>,\n\t\tbranchNodes: BranchNodeList<AllLeavesRepresentation, AllBranchNodesRepresentation, StaticContext>,\n\t\toptions?: Partial<ChildrenAnalyzerOptions>,\n\t)\n\tpublic constructor(\n\t\tleaves: LeafList<AllLeavesRepresentation, StaticContext>,\n\t\tdecider:\n\t\t\t| Partial<ChildrenAnalyzerOptions>\n\t\t\t| BranchNodeList<AllLeavesRepresentation, AllBranchNodesRepresentation, StaticContext> = [],\n\t\toptions: Partial<ChildrenAnalyzerOptions> = {},\n\t) {\n\t\tthis.leaves = leaves\n\n\t\tif (Array.isArray(decider)) {\n\t\t\tthis.branchNodes = decider\n\t\t} else {\n\t\t\tthis.branchNodes = []\n\t\t\toptions = decider\n\t\t}\n\t\tthis.options = { ...ChildrenAnalyzer.defaultOptions, ...options }\n\t}\n\n\tpublic processChildren(\n\t\tchildren: ReactNode,\n\t\tinitialStaticContext: StaticContext,\n\t): Array<AllLeavesRepresentation | AllBranchNodesRepresentation> {\n\t\tconst processed = this.processNode(children, initialStaticContext, [])\n\n\t\tconst rawResult: Array<AllLeavesRepresentation | AllBranchNodesRepresentation | undefined> = Array.isArray(\n\t\t\tprocessed,\n\t\t)\n\t\t\t? processed\n\t\t\t: [processed]\n\n\t\treturn rawResult.filter(\n\t\t\t(item): item is AllLeavesRepresentation | AllBranchNodesRepresentation => item !== undefined,\n\t\t)\n\t}\n\n\tprivate processNode(\n\t\tnode: ReactNode,\n\t\tstaticContext: StaticContext,\n\t\tcomponentPath: ReactElement[],\n\t): RawNodeRepresentation<AllLeavesRepresentation, AllBranchNodesRepresentation> {\n\t\tif (!node || typeof node === 'string' || typeof node === 'number' || typeof node === 'boolean') {\n\t\t\tfor (const leaf of this.leaves) {\n\t\t\t\tconst specification = leaf.specification\n\t\t\t\tif (specification.type === 'useSite') {\n\t\t\t\t\tconst { ComponentType, factory } = specification\n\t\t\t\t\tif (ComponentType === undefined) {\n\t\t\t\t\t\treturn factory(node, staticContext)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (node === false || node === undefined || node === null) {\n\t\t\t\t// This adds seamless support for conditionals and such.\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t\tif (!this.options.ignoreUnhandledNodes) {\n\t\t\t\tthrow new ChildrenAnalyzerError(getErrorMessage(this.options.unhandledNodeErrorMessage, node, staticContext))\n\t\t\t}\n\t\t\treturn undefined\n\t\t}\n\n\t\tif (typeof node === 'function') {\n\t\t\tif (this.options.ignoreRenderProps) {\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t\tthrow new ChildrenAnalyzerError(getErrorMessage(this.options.renderPropsErrorMessage, node, staticContext))\n\t\t}\n\n\t\tif (Array.isArray(node)) {\n\t\t\tlet mapped: Array<AllLeavesRepresentation | AllBranchNodesRepresentation> = []\n\n\t\t\tfor (const subNode of node) {\n\t\t\t\tconst processed = this.processNode(subNode, staticContext, componentPath)\n\n\t\t\t\tif (processed !== undefined) {\n\t\t\t\t\tif (Array.isArray(processed)) {\n\t\t\t\t\t\tmapped = mapped.concat(processed)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmapped.push(processed)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn mapped\n\t\t}\n\n\t\tlet children: ReactNode = undefined\n\n\t\tif (!('type' in node)) {\n\t\t\treturn this.processNode(children, staticContext, componentPath)\n\t\t}\n\t\tchildren = node.props.children\n\n\t\tif (typeof node.type === 'symbol') {\n\t\t\t// Fragment, Portal or other non-component\n\t\t\treturn this.processNode(children, staticContext, componentPath)\n\t\t}\n\t\t// if (typeof node.type === 'string') {\n\t\t// \t// Typically a host component\n\t\t// \tif (!this.options.ignoreUnhandledNodes) {\n\t\t// \t\tthrow new ChildrenAnalyzerError(getErrorMessage(this.options.unhandledNodeErrorMessage, node, staticContext))\n\t\t// \t}\n\t\t// \treturn this.processNode(children, staticContext)\n\t\t// }\n\n\t\t// Component, PureComponent, FunctionComponent\n\n\t\tconst treeNode = node.type as ElementType &\n\t\t{\n\t\t\t[staticMethod in ValidFactoryName]:\n\t\t\t| StaticContextFactory<any, StaticContext>\n\t\t\t| SyntheticChildrenFactory<any, StaticContext>\n\t\t\t| UnconstrainedLeafRepresentationFactory<any, AllLeavesRepresentation, StaticContext>\n\t\t\t| DeclarationSiteNodeRepresentationFactory<any, unknown, AllBranchNodesRepresentation, StaticContext>\n\t\t}\n\n\t\tcomponentPath = [...componentPath, node]\n\t\tif (typeof treeNode !== 'string') {\n\t\t\tif (this.options.staticContextFactoryName in treeNode) {\n\t\t\t\tconst staticContextFactory = treeNode[this.options.staticContextFactoryName] as StaticContextFactory<\n\t\t\t\t\tany,\n\t\t\t\t\tStaticContext\n\t\t\t\t>\n\t\t\t\ttry {\n\t\t\t\t\tstaticContext = staticContextFactory(node.props, staticContext)\n\t\t\t\t} catch (e) {\n\t\t\t\t\twrapError(e, treeNode.displayName ?? '???', this.options.staticContextFactoryName, componentPath)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.options.staticRenderFactoryName in treeNode) {\n\t\t\t\tconst factory = treeNode[this.options.staticRenderFactoryName] as SyntheticChildrenFactory<any, StaticContext>\n\t\t\t\ttry {\n\t\t\t\t\tchildren = factory(node.props, staticContext)\n\t\t\t\t} catch (e) {\n\t\t\t\t\twrapError(e, treeNode.displayName ?? '???', this.options.staticRenderFactoryName, componentPath)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor (const leaf of this.leaves) {\n\t\t\tconst specification = leaf.specification\n\t\t\tswitch (specification.type) {\n\t\t\t\tcase 'declarationSite': {\n\t\t\t\t\tconst { factoryMethodName } = specification\n\n\t\t\t\t\tif (typeof treeNode !== 'string' && factoryMethodName in treeNode) {\n\t\t\t\t\t\tconst factory = treeNode[factoryMethodName] as UnconstrainedLeafRepresentationFactory<\n\t\t\t\t\t\t\tany,\n\t\t\t\t\t\t\tAllBranchNodesRepresentation | AllLeavesRepresentation,\n\t\t\t\t\t\t\tStaticContext\n\t\t\t\t\t\t>\n\t\t\t\t\t\treturn factory(node.props, staticContext)\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tcase 'useSite': {\n\t\t\t\t\tconst { ComponentType, factory } = specification\n\t\t\t\t\tif (ComponentType === undefined || node.type === ComponentType) {\n\t\t\t\t\t\treturn factory(node, staticContext)\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\treturn assertNever(specification)\n\t\t\t}\n\t\t}\n\n\t\tconst processedChildren = this.processNode(children, staticContext, componentPath)\n\n\t\tfor (const branchNode of this.branchNodes) {\n\t\t\tconst specification = branchNode.specification\n\t\t\tswitch (specification.type) {\n\t\t\t\tcase 'declarationSite': {\n\t\t\t\t\tconst { factoryMethodName, childrenRepresentationReducer } = specification\n\n\t\t\t\t\tif (typeof treeNode !== 'string' && factoryMethodName in treeNode) {\n\t\t\t\t\t\tif (processedChildren === undefined && !branchNode.options.childrenAreOptional) {\n\t\t\t\t\t\t\tthrow new ChildrenAnalyzerError(branchNode.options.childrenAbsentErrorMessage)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst factory = treeNode[factoryMethodName] as DeclarationSiteNodeRepresentationFactory<\n\t\t\t\t\t\t\tany,\n\t\t\t\t\t\t\tunknown,\n\t\t\t\t\t\t\tAllBranchNodesRepresentation | AllLeavesRepresentation,\n\t\t\t\t\t\t\tStaticContext\n\t\t\t\t\t\t>\n\t\t\t\t\t\treturn factory(node.props, childrenRepresentationReducer(processedChildren), staticContext)\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tcase 'useSite': {\n\t\t\t\t\tconst { factory, ComponentType } = specification\n\t\t\t\t\tif (ComponentType === undefined || node.type === ComponentType) {\n\t\t\t\t\t\tif (processedChildren === undefined && !branchNode.options.childrenAreOptional) {\n\t\t\t\t\t\t\tthrow new ChildrenAnalyzerError(branchNode.options.childrenAbsentErrorMessage)\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn factory(node, processedChildren, staticContext)\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\treturn assertNever(specification)\n\t\t\t}\n\t\t}\n\n\t\tif (\n\t\t\t!this.options.ignoreUnhandledNodes &&\n\t\t\t!(typeof treeNode !== 'string' && this.options.staticRenderFactoryName in treeNode)\n\t\t) {\n\t\t\tthrow new ChildrenAnalyzerError(getErrorMessage(this.options.unhandledNodeErrorMessage, node, staticContext))\n\t\t}\n\n\t\treturn processedChildren\n\t}\n}\n"],"names":["_ChildrenAnalyzer","ChildrenAnalyzerError","getErrorMessage","wrapError","assertNever"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ChildrenAnalyzer.cjs","sources":["../../../../packages/react-multipass-rendering/src/ChildrenAnalyzer.ts"],"sourcesContent":["import { assertNever } from '@contember/utilities'\nimport type { ElementType, ReactElement, ReactNode } from 'react'\nimport type { BranchNodeList } from './BranchNodeList'\nimport { ChildrenAnalyzerError } from './ChildrenAnalyzerError'\nimport type { ChildrenAnalyzerOptions } from './ChildrenAnalyzerOptions'\nimport type { LeafList } from './LeafList'\nimport { getErrorMessage } from './helpers'\nimport { wrapError } from './helpers/wrapError'\nimport type {\n\tDeclarationSiteNodeRepresentationFactory,\n\tRawNodeRepresentation,\n\tStaticContextFactory,\n\tSyntheticChildrenFactory,\n\tUnconstrainedLeafRepresentationFactory,\n\tValidFactoryName,\n} from './nodeSpecs'\n\nexport class ChildrenAnalyzer<\n\tAllLeavesRepresentation = any,\n\tAllBranchNodesRepresentation = never,\n\tStaticContext = undefined,\n> {\n\tprivate static defaultOptions: ChildrenAnalyzerOptions = {\n\t\tignoreRenderProps: true,\n\t\trenderPropsErrorMessage: 'Render props (functions as React component children) are not supported.',\n\n\t\tignoreUnhandledNodes: true,\n\t\tunhandledNodeErrorMessage: 'Encountered an unknown child.',\n\n\t\tstaticContextFactoryName: 'getStaticContext',\n\t\tstaticRenderFactoryName: 'staticRender',\n\t}\n\n\tprivate readonly leaves: LeafList<AllLeavesRepresentation, StaticContext>\n\tprivate readonly branchNodes: BranchNodeList<AllLeavesRepresentation, AllBranchNodesRepresentation, StaticContext>\n\tprivate readonly options: ChildrenAnalyzerOptions<StaticContext>\n\n\tpublic constructor(\n\t\tleaves: LeafList<AllLeavesRepresentation, StaticContext>,\n\t\toptions?: Partial<ChildrenAnalyzerOptions>,\n\t)\n\tpublic constructor(\n\t\tleaves: LeafList<AllLeavesRepresentation, StaticContext>,\n\t\tbranchNodes: BranchNodeList<AllLeavesRepresentation, AllBranchNodesRepresentation, StaticContext>,\n\t\toptions?: Partial<ChildrenAnalyzerOptions>,\n\t)\n\tpublic constructor(\n\t\tleaves: LeafList<AllLeavesRepresentation, StaticContext>,\n\t\tdecider:\n\t\t\t| Partial<ChildrenAnalyzerOptions>\n\t\t\t| BranchNodeList<AllLeavesRepresentation, AllBranchNodesRepresentation, StaticContext> = [],\n\t\toptions: Partial<ChildrenAnalyzerOptions> = {},\n\t) {\n\t\tthis.leaves = leaves\n\n\t\tif (Array.isArray(decider)) {\n\t\t\tthis.branchNodes = decider\n\t\t} else {\n\t\t\tthis.branchNodes = []\n\t\t\toptions = decider\n\t\t}\n\t\tthis.options = { ...ChildrenAnalyzer.defaultOptions, ...options }\n\t}\n\n\tpublic processChildren(\n\t\tchildren: ReactNode,\n\t\tinitialStaticContext: StaticContext,\n\t): Array<AllLeavesRepresentation | AllBranchNodesRepresentation> {\n\t\tconst processed = this.processNode(children, initialStaticContext, [])\n\n\t\tconst rawResult: Array<AllLeavesRepresentation | AllBranchNodesRepresentation | undefined> = Array.isArray(\n\t\t\t\tprocessed,\n\t\t\t)\n\t\t\t? processed\n\t\t\t: [processed]\n\n\t\treturn rawResult.filter(\n\t\t\t(item): item is AllLeavesRepresentation | AllBranchNodesRepresentation => item !== undefined,\n\t\t)\n\t}\n\n\tprivate processNode(\n\t\tnode: ReactNode,\n\t\tstaticContext: StaticContext,\n\t\tcomponentPath: ReactElement[],\n\t): RawNodeRepresentation<AllLeavesRepresentation, AllBranchNodesRepresentation> {\n\t\tif (!node || typeof node === 'string' || typeof node === 'number' || typeof node === 'boolean' || typeof node === 'bigint') {\n\t\t\tfor (const leaf of this.leaves) {\n\t\t\t\tconst specification = leaf.specification\n\t\t\t\tif (specification.type === 'useSite') {\n\t\t\t\t\tconst { ComponentType, factory } = specification\n\t\t\t\t\tif (ComponentType === undefined) {\n\t\t\t\t\t\treturn factory(node, staticContext)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (node === false || node === undefined || node === null) {\n\t\t\t\t// This adds seamless support for conditionals and such.\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t\tif (!this.options.ignoreUnhandledNodes) {\n\t\t\t\tthrow new ChildrenAnalyzerError(getErrorMessage(this.options.unhandledNodeErrorMessage, node, staticContext))\n\t\t\t}\n\t\t\treturn undefined\n\t\t}\n\n\t\tif (typeof node === 'function') {\n\t\t\tif (this.options.ignoreRenderProps) {\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t\tthrow new ChildrenAnalyzerError(getErrorMessage(this.options.renderPropsErrorMessage, node, staticContext))\n\t\t}\n\n\t\tif (Array.isArray(node)) {\n\t\t\tlet mapped: Array<AllLeavesRepresentation | AllBranchNodesRepresentation> = []\n\n\t\t\tfor (const subNode of node) {\n\t\t\t\tconst processed = this.processNode(subNode, staticContext, componentPath)\n\n\t\t\t\tif (processed !== undefined) {\n\t\t\t\t\tif (Array.isArray(processed)) {\n\t\t\t\t\t\tmapped = mapped.concat(processed)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmapped.push(processed)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn mapped\n\t\t}\n\n\t\tlet children: ReactNode\n\n\t\tif (typeof node !== 'object' || !('type' in node)) {\n\t\t\treturn this.processNode(children, staticContext, componentPath)\n\t\t}\n\t\tconst props = node.props as Record<string, any>\n\t\tchildren = props.children\n\n\t\tif (typeof node.type === 'symbol') {\n\t\t\t// Fragment, Portal or other non-component\n\t\t\treturn this.processNode(children, staticContext, componentPath)\n\t\t}\n\t\t// if (typeof node.type === 'string') {\n\t\t// \t// Typically a host component\n\t\t// \tif (!this.options.ignoreUnhandledNodes) {\n\t\t// \t\tthrow new ChildrenAnalyzerError(getErrorMessage(this.options.unhandledNodeErrorMessage, node, staticContext))\n\t\t// \t}\n\t\t// \treturn this.processNode(children, staticContext)\n\t\t// }\n\n\t\t// Component, PureComponent, FunctionComponent\n\n\t\tconst treeNode = node.type as\n\t\t\t& ElementType\n\t\t\t& {\n\t\t\t\t[staticMethod in ValidFactoryName]:\n\t\t\t\t\t| StaticContextFactory<any, StaticContext>\n\t\t\t\t\t| SyntheticChildrenFactory<any, StaticContext>\n\t\t\t\t\t| UnconstrainedLeafRepresentationFactory<any, AllLeavesRepresentation, StaticContext>\n\t\t\t\t\t| DeclarationSiteNodeRepresentationFactory<any, unknown, AllBranchNodesRepresentation, StaticContext>\n\t\t\t}\n\n\t\tcomponentPath = [...componentPath, node]\n\t\tif (typeof treeNode !== 'string') {\n\t\t\tif (this.options.staticContextFactoryName in treeNode) {\n\t\t\t\tconst staticContextFactory = treeNode[this.options.staticContextFactoryName] as StaticContextFactory<\n\t\t\t\t\tany,\n\t\t\t\t\tStaticContext\n\t\t\t\t>\n\t\t\t\ttry {\n\t\t\t\t\tstaticContext = staticContextFactory(props, staticContext)\n\t\t\t\t} catch (e) {\n\t\t\t\t\twrapError(e, treeNode.displayName ?? '???', this.options.staticContextFactoryName, componentPath)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.options.staticRenderFactoryName in treeNode) {\n\t\t\t\tconst factory = treeNode[this.options.staticRenderFactoryName] as SyntheticChildrenFactory<any, StaticContext>\n\t\t\t\ttry {\n\t\t\t\t\tchildren = factory(props, staticContext)\n\t\t\t\t} catch (e) {\n\t\t\t\t\twrapError(e, treeNode.displayName ?? '???', this.options.staticRenderFactoryName, componentPath)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor (const leaf of this.leaves) {\n\t\t\tconst specification = leaf.specification\n\t\t\tswitch (specification.type) {\n\t\t\t\tcase 'declarationSite': {\n\t\t\t\t\tconst { factoryMethodName } = specification\n\n\t\t\t\t\tif (typeof treeNode !== 'string' && factoryMethodName in treeNode) {\n\t\t\t\t\t\tconst factory = treeNode[factoryMethodName] as (\n\t\t\t\t\t\t\tprops: any,\n\t\t\t\t\t\t\tstaticContext: StaticContext,\n\t\t\t\t\t\t) => AllBranchNodesRepresentation | AllLeavesRepresentation\n\t\t\t\t\t\treturn factory(props, staticContext)\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tcase 'useSite': {\n\t\t\t\t\tconst { ComponentType, factory } = specification\n\t\t\t\t\tif (ComponentType === undefined || node.type === ComponentType) {\n\t\t\t\t\t\treturn factory(node, staticContext)\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\treturn assertNever(specification)\n\t\t\t}\n\t\t}\n\n\t\tconst processedChildren = this.processNode(children, staticContext, componentPath)\n\n\t\tfor (const branchNode of this.branchNodes) {\n\t\t\tconst specification = branchNode.specification\n\t\t\tswitch (specification.type) {\n\t\t\t\tcase 'declarationSite': {\n\t\t\t\t\tconst { factoryMethodName, childrenRepresentationReducer } = specification\n\n\t\t\t\t\tif (typeof treeNode !== 'string' && factoryMethodName in treeNode) {\n\t\t\t\t\t\tif (processedChildren === undefined && !branchNode.options.childrenAreOptional) {\n\t\t\t\t\t\t\tthrow new ChildrenAnalyzerError(branchNode.options.childrenAbsentErrorMessage)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst factory = treeNode[factoryMethodName] as DeclarationSiteNodeRepresentationFactory<\n\t\t\t\t\t\t\tany,\n\t\t\t\t\t\t\tunknown,\n\t\t\t\t\t\t\tAllBranchNodesRepresentation | AllLeavesRepresentation,\n\t\t\t\t\t\t\tStaticContext\n\t\t\t\t\t\t>\n\t\t\t\t\t\treturn factory(props, childrenRepresentationReducer(processedChildren), staticContext)\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tcase 'useSite': {\n\t\t\t\t\tconst { factory, ComponentType } = specification\n\t\t\t\t\tif (ComponentType === undefined || node.type === ComponentType) {\n\t\t\t\t\t\tif (processedChildren === undefined && !branchNode.options.childrenAreOptional) {\n\t\t\t\t\t\t\tthrow new ChildrenAnalyzerError(branchNode.options.childrenAbsentErrorMessage)\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn factory(node, processedChildren, staticContext)\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\treturn assertNever(specification)\n\t\t\t}\n\t\t}\n\n\t\tif (\n\t\t\t!this.options.ignoreUnhandledNodes\n\t\t\t&& !(typeof treeNode !== 'string' && this.options.staticRenderFactoryName in treeNode)\n\t\t) {\n\t\t\tthrow new ChildrenAnalyzerError(getErrorMessage(this.options.unhandledNodeErrorMessage, node, staticContext))\n\t\t}\n\n\t\treturn processedChildren\n\t}\n}\n"],"names":["_ChildrenAnalyzer","ChildrenAnalyzerError","getErrorMessage","wrapError","assertNever"],"mappings":"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"}
|
|
@@ -29,7 +29,7 @@ const _ChildrenAnalyzer = class _ChildrenAnalyzer2 {
|
|
|
29
29
|
);
|
|
30
30
|
}
|
|
31
31
|
processNode(node, staticContext, componentPath) {
|
|
32
|
-
if (!node || typeof node === "string" || typeof node === "number" || typeof node === "boolean") {
|
|
32
|
+
if (!node || typeof node === "string" || typeof node === "number" || typeof node === "boolean" || typeof node === "bigint") {
|
|
33
33
|
for (const leaf of this.leaves) {
|
|
34
34
|
const specification = leaf.specification;
|
|
35
35
|
if (specification.type === "useSite") {
|
|
@@ -67,11 +67,12 @@ const _ChildrenAnalyzer = class _ChildrenAnalyzer2 {
|
|
|
67
67
|
}
|
|
68
68
|
return mapped;
|
|
69
69
|
}
|
|
70
|
-
let children
|
|
71
|
-
if (!("type" in node)) {
|
|
70
|
+
let children;
|
|
71
|
+
if (typeof node !== "object" || !("type" in node)) {
|
|
72
72
|
return this.processNode(children, staticContext, componentPath);
|
|
73
73
|
}
|
|
74
|
-
|
|
74
|
+
const props = node.props;
|
|
75
|
+
children = props.children;
|
|
75
76
|
if (typeof node.type === "symbol") {
|
|
76
77
|
return this.processNode(children, staticContext, componentPath);
|
|
77
78
|
}
|
|
@@ -81,7 +82,7 @@ const _ChildrenAnalyzer = class _ChildrenAnalyzer2 {
|
|
|
81
82
|
if (this.options.staticContextFactoryName in treeNode) {
|
|
82
83
|
const staticContextFactory = treeNode[this.options.staticContextFactoryName];
|
|
83
84
|
try {
|
|
84
|
-
staticContext = staticContextFactory(
|
|
85
|
+
staticContext = staticContextFactory(props, staticContext);
|
|
85
86
|
} catch (e) {
|
|
86
87
|
wrapError(e, treeNode.displayName ?? "???", this.options.staticContextFactoryName, componentPath);
|
|
87
88
|
}
|
|
@@ -89,7 +90,7 @@ const _ChildrenAnalyzer = class _ChildrenAnalyzer2 {
|
|
|
89
90
|
if (this.options.staticRenderFactoryName in treeNode) {
|
|
90
91
|
const factory = treeNode[this.options.staticRenderFactoryName];
|
|
91
92
|
try {
|
|
92
|
-
children = factory(
|
|
93
|
+
children = factory(props, staticContext);
|
|
93
94
|
} catch (e) {
|
|
94
95
|
wrapError(e, treeNode.displayName ?? "???", this.options.staticRenderFactoryName, componentPath);
|
|
95
96
|
}
|
|
@@ -102,7 +103,7 @@ const _ChildrenAnalyzer = class _ChildrenAnalyzer2 {
|
|
|
102
103
|
const { factoryMethodName } = specification;
|
|
103
104
|
if (typeof treeNode !== "string" && factoryMethodName in treeNode) {
|
|
104
105
|
const factory = treeNode[factoryMethodName];
|
|
105
|
-
return factory(
|
|
106
|
+
return factory(props, staticContext);
|
|
106
107
|
}
|
|
107
108
|
break;
|
|
108
109
|
}
|
|
@@ -128,7 +129,7 @@ const _ChildrenAnalyzer = class _ChildrenAnalyzer2 {
|
|
|
128
129
|
throw new ChildrenAnalyzerError(branchNode.options.childrenAbsentErrorMessage);
|
|
129
130
|
}
|
|
130
131
|
const factory = treeNode[factoryMethodName];
|
|
131
|
-
return factory(
|
|
132
|
+
return factory(props, childrenRepresentationReducer(processedChildren), staticContext);
|
|
132
133
|
}
|
|
133
134
|
break;
|
|
134
135
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChildrenAnalyzer.js","sources":["../../../../packages/react-multipass-rendering/src/ChildrenAnalyzer.ts"],"sourcesContent":["import { assertNever } from '@contember/utilities'\nimport type { ElementType, ReactElement, ReactNode } from 'react'\nimport type { BranchNodeList } from './BranchNodeList'\nimport { ChildrenAnalyzerError } from './ChildrenAnalyzerError'\nimport type { ChildrenAnalyzerOptions } from './ChildrenAnalyzerOptions'\nimport type { LeafList } from './LeafList'\nimport { getErrorMessage } from './helpers'\nimport { wrapError } from './helpers/wrapError'\nimport type {\n\tDeclarationSiteNodeRepresentationFactory,\n\tRawNodeRepresentation,\n\tStaticContextFactory,\n\tSyntheticChildrenFactory,\n\tUnconstrainedLeafRepresentationFactory,\n\tValidFactoryName,\n} from './nodeSpecs'\n\nexport class ChildrenAnalyzer<\n\tAllLeavesRepresentation = any,\n\tAllBranchNodesRepresentation = never,\n\tStaticContext = undefined,\n> {\n\tprivate static defaultOptions: ChildrenAnalyzerOptions = {\n\t\tignoreRenderProps: true,\n\t\trenderPropsErrorMessage: 'Render props (functions as React component children) are not supported.',\n\n\t\tignoreUnhandledNodes: true,\n\t\tunhandledNodeErrorMessage: 'Encountered an unknown child.',\n\n\t\tstaticContextFactoryName: 'getStaticContext',\n\t\tstaticRenderFactoryName: 'staticRender',\n\t}\n\n\tprivate readonly leaves: LeafList<AllLeavesRepresentation, StaticContext>\n\tprivate readonly branchNodes: BranchNodeList<AllLeavesRepresentation, AllBranchNodesRepresentation, StaticContext>\n\tprivate readonly options: ChildrenAnalyzerOptions<StaticContext>\n\n\tpublic constructor(\n\t\tleaves: LeafList<AllLeavesRepresentation, StaticContext>,\n\t\toptions?: Partial<ChildrenAnalyzerOptions>,\n\t)\n\tpublic constructor(\n\t\tleaves: LeafList<AllLeavesRepresentation, StaticContext>,\n\t\tbranchNodes: BranchNodeList<AllLeavesRepresentation, AllBranchNodesRepresentation, StaticContext>,\n\t\toptions?: Partial<ChildrenAnalyzerOptions>,\n\t)\n\tpublic constructor(\n\t\tleaves: LeafList<AllLeavesRepresentation, StaticContext>,\n\t\tdecider:\n\t\t\t| Partial<ChildrenAnalyzerOptions>\n\t\t\t| BranchNodeList<AllLeavesRepresentation, AllBranchNodesRepresentation, StaticContext> = [],\n\t\toptions: Partial<ChildrenAnalyzerOptions> = {},\n\t) {\n\t\tthis.leaves = leaves\n\n\t\tif (Array.isArray(decider)) {\n\t\t\tthis.branchNodes = decider\n\t\t} else {\n\t\t\tthis.branchNodes = []\n\t\t\toptions = decider\n\t\t}\n\t\tthis.options = { ...ChildrenAnalyzer.defaultOptions, ...options }\n\t}\n\n\tpublic processChildren(\n\t\tchildren: ReactNode,\n\t\tinitialStaticContext: StaticContext,\n\t): Array<AllLeavesRepresentation | AllBranchNodesRepresentation> {\n\t\tconst processed = this.processNode(children, initialStaticContext, [])\n\n\t\tconst rawResult: Array<AllLeavesRepresentation | AllBranchNodesRepresentation | undefined> = Array.isArray(\n\t\t\tprocessed,\n\t\t)\n\t\t\t? processed\n\t\t\t: [processed]\n\n\t\treturn rawResult.filter(\n\t\t\t(item): item is AllLeavesRepresentation | AllBranchNodesRepresentation => item !== undefined,\n\t\t)\n\t}\n\n\tprivate processNode(\n\t\tnode: ReactNode,\n\t\tstaticContext: StaticContext,\n\t\tcomponentPath: ReactElement[],\n\t): RawNodeRepresentation<AllLeavesRepresentation, AllBranchNodesRepresentation> {\n\t\tif (!node || typeof node === 'string' || typeof node === 'number' || typeof node === 'boolean') {\n\t\t\tfor (const leaf of this.leaves) {\n\t\t\t\tconst specification = leaf.specification\n\t\t\t\tif (specification.type === 'useSite') {\n\t\t\t\t\tconst { ComponentType, factory } = specification\n\t\t\t\t\tif (ComponentType === undefined) {\n\t\t\t\t\t\treturn factory(node, staticContext)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (node === false || node === undefined || node === null) {\n\t\t\t\t// This adds seamless support for conditionals and such.\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t\tif (!this.options.ignoreUnhandledNodes) {\n\t\t\t\tthrow new ChildrenAnalyzerError(getErrorMessage(this.options.unhandledNodeErrorMessage, node, staticContext))\n\t\t\t}\n\t\t\treturn undefined\n\t\t}\n\n\t\tif (typeof node === 'function') {\n\t\t\tif (this.options.ignoreRenderProps) {\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t\tthrow new ChildrenAnalyzerError(getErrorMessage(this.options.renderPropsErrorMessage, node, staticContext))\n\t\t}\n\n\t\tif (Array.isArray(node)) {\n\t\t\tlet mapped: Array<AllLeavesRepresentation | AllBranchNodesRepresentation> = []\n\n\t\t\tfor (const subNode of node) {\n\t\t\t\tconst processed = this.processNode(subNode, staticContext, componentPath)\n\n\t\t\t\tif (processed !== undefined) {\n\t\t\t\t\tif (Array.isArray(processed)) {\n\t\t\t\t\t\tmapped = mapped.concat(processed)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmapped.push(processed)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn mapped\n\t\t}\n\n\t\tlet children: ReactNode = undefined\n\n\t\tif (!('type' in node)) {\n\t\t\treturn this.processNode(children, staticContext, componentPath)\n\t\t}\n\t\tchildren = node.props.children\n\n\t\tif (typeof node.type === 'symbol') {\n\t\t\t// Fragment, Portal or other non-component\n\t\t\treturn this.processNode(children, staticContext, componentPath)\n\t\t}\n\t\t// if (typeof node.type === 'string') {\n\t\t// \t// Typically a host component\n\t\t// \tif (!this.options.ignoreUnhandledNodes) {\n\t\t// \t\tthrow new ChildrenAnalyzerError(getErrorMessage(this.options.unhandledNodeErrorMessage, node, staticContext))\n\t\t// \t}\n\t\t// \treturn this.processNode(children, staticContext)\n\t\t// }\n\n\t\t// Component, PureComponent, FunctionComponent\n\n\t\tconst treeNode = node.type as ElementType &\n\t\t{\n\t\t\t[staticMethod in ValidFactoryName]:\n\t\t\t| StaticContextFactory<any, StaticContext>\n\t\t\t| SyntheticChildrenFactory<any, StaticContext>\n\t\t\t| UnconstrainedLeafRepresentationFactory<any, AllLeavesRepresentation, StaticContext>\n\t\t\t| DeclarationSiteNodeRepresentationFactory<any, unknown, AllBranchNodesRepresentation, StaticContext>\n\t\t}\n\n\t\tcomponentPath = [...componentPath, node]\n\t\tif (typeof treeNode !== 'string') {\n\t\t\tif (this.options.staticContextFactoryName in treeNode) {\n\t\t\t\tconst staticContextFactory = treeNode[this.options.staticContextFactoryName] as StaticContextFactory<\n\t\t\t\t\tany,\n\t\t\t\t\tStaticContext\n\t\t\t\t>\n\t\t\t\ttry {\n\t\t\t\t\tstaticContext = staticContextFactory(node.props, staticContext)\n\t\t\t\t} catch (e) {\n\t\t\t\t\twrapError(e, treeNode.displayName ?? '???', this.options.staticContextFactoryName, componentPath)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.options.staticRenderFactoryName in treeNode) {\n\t\t\t\tconst factory = treeNode[this.options.staticRenderFactoryName] as SyntheticChildrenFactory<any, StaticContext>\n\t\t\t\ttry {\n\t\t\t\t\tchildren = factory(node.props, staticContext)\n\t\t\t\t} catch (e) {\n\t\t\t\t\twrapError(e, treeNode.displayName ?? '???', this.options.staticRenderFactoryName, componentPath)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor (const leaf of this.leaves) {\n\t\t\tconst specification = leaf.specification\n\t\t\tswitch (specification.type) {\n\t\t\t\tcase 'declarationSite': {\n\t\t\t\t\tconst { factoryMethodName } = specification\n\n\t\t\t\t\tif (typeof treeNode !== 'string' && factoryMethodName in treeNode) {\n\t\t\t\t\t\tconst factory = treeNode[factoryMethodName] as UnconstrainedLeafRepresentationFactory<\n\t\t\t\t\t\t\tany,\n\t\t\t\t\t\t\tAllBranchNodesRepresentation | AllLeavesRepresentation,\n\t\t\t\t\t\t\tStaticContext\n\t\t\t\t\t\t>\n\t\t\t\t\t\treturn factory(node.props, staticContext)\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tcase 'useSite': {\n\t\t\t\t\tconst { ComponentType, factory } = specification\n\t\t\t\t\tif (ComponentType === undefined || node.type === ComponentType) {\n\t\t\t\t\t\treturn factory(node, staticContext)\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\treturn assertNever(specification)\n\t\t\t}\n\t\t}\n\n\t\tconst processedChildren = this.processNode(children, staticContext, componentPath)\n\n\t\tfor (const branchNode of this.branchNodes) {\n\t\t\tconst specification = branchNode.specification\n\t\t\tswitch (specification.type) {\n\t\t\t\tcase 'declarationSite': {\n\t\t\t\t\tconst { factoryMethodName, childrenRepresentationReducer } = specification\n\n\t\t\t\t\tif (typeof treeNode !== 'string' && factoryMethodName in treeNode) {\n\t\t\t\t\t\tif (processedChildren === undefined && !branchNode.options.childrenAreOptional) {\n\t\t\t\t\t\t\tthrow new ChildrenAnalyzerError(branchNode.options.childrenAbsentErrorMessage)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst factory = treeNode[factoryMethodName] as DeclarationSiteNodeRepresentationFactory<\n\t\t\t\t\t\t\tany,\n\t\t\t\t\t\t\tunknown,\n\t\t\t\t\t\t\tAllBranchNodesRepresentation | AllLeavesRepresentation,\n\t\t\t\t\t\t\tStaticContext\n\t\t\t\t\t\t>\n\t\t\t\t\t\treturn factory(node.props, childrenRepresentationReducer(processedChildren), staticContext)\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tcase 'useSite': {\n\t\t\t\t\tconst { factory, ComponentType } = specification\n\t\t\t\t\tif (ComponentType === undefined || node.type === ComponentType) {\n\t\t\t\t\t\tif (processedChildren === undefined && !branchNode.options.childrenAreOptional) {\n\t\t\t\t\t\t\tthrow new ChildrenAnalyzerError(branchNode.options.childrenAbsentErrorMessage)\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn factory(node, processedChildren, staticContext)\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\treturn assertNever(specification)\n\t\t\t}\n\t\t}\n\n\t\tif (\n\t\t\t!this.options.ignoreUnhandledNodes &&\n\t\t\t!(typeof treeNode !== 'string' && this.options.staticRenderFactoryName in treeNode)\n\t\t) {\n\t\t\tthrow new ChildrenAnalyzerError(getErrorMessage(this.options.unhandledNodeErrorMessage, node, staticContext))\n\t\t}\n\n\t\treturn processedChildren\n\t}\n}\n"],"names":["_ChildrenAnalyzer"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ChildrenAnalyzer.js","sources":["../../../../packages/react-multipass-rendering/src/ChildrenAnalyzer.ts"],"sourcesContent":["import { assertNever } from '@contember/utilities'\nimport type { ElementType, ReactElement, ReactNode } from 'react'\nimport type { BranchNodeList } from './BranchNodeList'\nimport { ChildrenAnalyzerError } from './ChildrenAnalyzerError'\nimport type { ChildrenAnalyzerOptions } from './ChildrenAnalyzerOptions'\nimport type { LeafList } from './LeafList'\nimport { getErrorMessage } from './helpers'\nimport { wrapError } from './helpers/wrapError'\nimport type {\n\tDeclarationSiteNodeRepresentationFactory,\n\tRawNodeRepresentation,\n\tStaticContextFactory,\n\tSyntheticChildrenFactory,\n\tUnconstrainedLeafRepresentationFactory,\n\tValidFactoryName,\n} from './nodeSpecs'\n\nexport class ChildrenAnalyzer<\n\tAllLeavesRepresentation = any,\n\tAllBranchNodesRepresentation = never,\n\tStaticContext = undefined,\n> {\n\tprivate static defaultOptions: ChildrenAnalyzerOptions = {\n\t\tignoreRenderProps: true,\n\t\trenderPropsErrorMessage: 'Render props (functions as React component children) are not supported.',\n\n\t\tignoreUnhandledNodes: true,\n\t\tunhandledNodeErrorMessage: 'Encountered an unknown child.',\n\n\t\tstaticContextFactoryName: 'getStaticContext',\n\t\tstaticRenderFactoryName: 'staticRender',\n\t}\n\n\tprivate readonly leaves: LeafList<AllLeavesRepresentation, StaticContext>\n\tprivate readonly branchNodes: BranchNodeList<AllLeavesRepresentation, AllBranchNodesRepresentation, StaticContext>\n\tprivate readonly options: ChildrenAnalyzerOptions<StaticContext>\n\n\tpublic constructor(\n\t\tleaves: LeafList<AllLeavesRepresentation, StaticContext>,\n\t\toptions?: Partial<ChildrenAnalyzerOptions>,\n\t)\n\tpublic constructor(\n\t\tleaves: LeafList<AllLeavesRepresentation, StaticContext>,\n\t\tbranchNodes: BranchNodeList<AllLeavesRepresentation, AllBranchNodesRepresentation, StaticContext>,\n\t\toptions?: Partial<ChildrenAnalyzerOptions>,\n\t)\n\tpublic constructor(\n\t\tleaves: LeafList<AllLeavesRepresentation, StaticContext>,\n\t\tdecider:\n\t\t\t| Partial<ChildrenAnalyzerOptions>\n\t\t\t| BranchNodeList<AllLeavesRepresentation, AllBranchNodesRepresentation, StaticContext> = [],\n\t\toptions: Partial<ChildrenAnalyzerOptions> = {},\n\t) {\n\t\tthis.leaves = leaves\n\n\t\tif (Array.isArray(decider)) {\n\t\t\tthis.branchNodes = decider\n\t\t} else {\n\t\t\tthis.branchNodes = []\n\t\t\toptions = decider\n\t\t}\n\t\tthis.options = { ...ChildrenAnalyzer.defaultOptions, ...options }\n\t}\n\n\tpublic processChildren(\n\t\tchildren: ReactNode,\n\t\tinitialStaticContext: StaticContext,\n\t): Array<AllLeavesRepresentation | AllBranchNodesRepresentation> {\n\t\tconst processed = this.processNode(children, initialStaticContext, [])\n\n\t\tconst rawResult: Array<AllLeavesRepresentation | AllBranchNodesRepresentation | undefined> = Array.isArray(\n\t\t\t\tprocessed,\n\t\t\t)\n\t\t\t? processed\n\t\t\t: [processed]\n\n\t\treturn rawResult.filter(\n\t\t\t(item): item is AllLeavesRepresentation | AllBranchNodesRepresentation => item !== undefined,\n\t\t)\n\t}\n\n\tprivate processNode(\n\t\tnode: ReactNode,\n\t\tstaticContext: StaticContext,\n\t\tcomponentPath: ReactElement[],\n\t): RawNodeRepresentation<AllLeavesRepresentation, AllBranchNodesRepresentation> {\n\t\tif (!node || typeof node === 'string' || typeof node === 'number' || typeof node === 'boolean' || typeof node === 'bigint') {\n\t\t\tfor (const leaf of this.leaves) {\n\t\t\t\tconst specification = leaf.specification\n\t\t\t\tif (specification.type === 'useSite') {\n\t\t\t\t\tconst { ComponentType, factory } = specification\n\t\t\t\t\tif (ComponentType === undefined) {\n\t\t\t\t\t\treturn factory(node, staticContext)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (node === false || node === undefined || node === null) {\n\t\t\t\t// This adds seamless support for conditionals and such.\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t\tif (!this.options.ignoreUnhandledNodes) {\n\t\t\t\tthrow new ChildrenAnalyzerError(getErrorMessage(this.options.unhandledNodeErrorMessage, node, staticContext))\n\t\t\t}\n\t\t\treturn undefined\n\t\t}\n\n\t\tif (typeof node === 'function') {\n\t\t\tif (this.options.ignoreRenderProps) {\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t\tthrow new ChildrenAnalyzerError(getErrorMessage(this.options.renderPropsErrorMessage, node, staticContext))\n\t\t}\n\n\t\tif (Array.isArray(node)) {\n\t\t\tlet mapped: Array<AllLeavesRepresentation | AllBranchNodesRepresentation> = []\n\n\t\t\tfor (const subNode of node) {\n\t\t\t\tconst processed = this.processNode(subNode, staticContext, componentPath)\n\n\t\t\t\tif (processed !== undefined) {\n\t\t\t\t\tif (Array.isArray(processed)) {\n\t\t\t\t\t\tmapped = mapped.concat(processed)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmapped.push(processed)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn mapped\n\t\t}\n\n\t\tlet children: ReactNode\n\n\t\tif (typeof node !== 'object' || !('type' in node)) {\n\t\t\treturn this.processNode(children, staticContext, componentPath)\n\t\t}\n\t\tconst props = node.props as Record<string, any>\n\t\tchildren = props.children\n\n\t\tif (typeof node.type === 'symbol') {\n\t\t\t// Fragment, Portal or other non-component\n\t\t\treturn this.processNode(children, staticContext, componentPath)\n\t\t}\n\t\t// if (typeof node.type === 'string') {\n\t\t// \t// Typically a host component\n\t\t// \tif (!this.options.ignoreUnhandledNodes) {\n\t\t// \t\tthrow new ChildrenAnalyzerError(getErrorMessage(this.options.unhandledNodeErrorMessage, node, staticContext))\n\t\t// \t}\n\t\t// \treturn this.processNode(children, staticContext)\n\t\t// }\n\n\t\t// Component, PureComponent, FunctionComponent\n\n\t\tconst treeNode = node.type as\n\t\t\t& ElementType\n\t\t\t& {\n\t\t\t\t[staticMethod in ValidFactoryName]:\n\t\t\t\t\t| StaticContextFactory<any, StaticContext>\n\t\t\t\t\t| SyntheticChildrenFactory<any, StaticContext>\n\t\t\t\t\t| UnconstrainedLeafRepresentationFactory<any, AllLeavesRepresentation, StaticContext>\n\t\t\t\t\t| DeclarationSiteNodeRepresentationFactory<any, unknown, AllBranchNodesRepresentation, StaticContext>\n\t\t\t}\n\n\t\tcomponentPath = [...componentPath, node]\n\t\tif (typeof treeNode !== 'string') {\n\t\t\tif (this.options.staticContextFactoryName in treeNode) {\n\t\t\t\tconst staticContextFactory = treeNode[this.options.staticContextFactoryName] as StaticContextFactory<\n\t\t\t\t\tany,\n\t\t\t\t\tStaticContext\n\t\t\t\t>\n\t\t\t\ttry {\n\t\t\t\t\tstaticContext = staticContextFactory(props, staticContext)\n\t\t\t\t} catch (e) {\n\t\t\t\t\twrapError(e, treeNode.displayName ?? '???', this.options.staticContextFactoryName, componentPath)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.options.staticRenderFactoryName in treeNode) {\n\t\t\t\tconst factory = treeNode[this.options.staticRenderFactoryName] as SyntheticChildrenFactory<any, StaticContext>\n\t\t\t\ttry {\n\t\t\t\t\tchildren = factory(props, staticContext)\n\t\t\t\t} catch (e) {\n\t\t\t\t\twrapError(e, treeNode.displayName ?? '???', this.options.staticRenderFactoryName, componentPath)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor (const leaf of this.leaves) {\n\t\t\tconst specification = leaf.specification\n\t\t\tswitch (specification.type) {\n\t\t\t\tcase 'declarationSite': {\n\t\t\t\t\tconst { factoryMethodName } = specification\n\n\t\t\t\t\tif (typeof treeNode !== 'string' && factoryMethodName in treeNode) {\n\t\t\t\t\t\tconst factory = treeNode[factoryMethodName] as (\n\t\t\t\t\t\t\tprops: any,\n\t\t\t\t\t\t\tstaticContext: StaticContext,\n\t\t\t\t\t\t) => AllBranchNodesRepresentation | AllLeavesRepresentation\n\t\t\t\t\t\treturn factory(props, staticContext)\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tcase 'useSite': {\n\t\t\t\t\tconst { ComponentType, factory } = specification\n\t\t\t\t\tif (ComponentType === undefined || node.type === ComponentType) {\n\t\t\t\t\t\treturn factory(node, staticContext)\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\treturn assertNever(specification)\n\t\t\t}\n\t\t}\n\n\t\tconst processedChildren = this.processNode(children, staticContext, componentPath)\n\n\t\tfor (const branchNode of this.branchNodes) {\n\t\t\tconst specification = branchNode.specification\n\t\t\tswitch (specification.type) {\n\t\t\t\tcase 'declarationSite': {\n\t\t\t\t\tconst { factoryMethodName, childrenRepresentationReducer } = specification\n\n\t\t\t\t\tif (typeof treeNode !== 'string' && factoryMethodName in treeNode) {\n\t\t\t\t\t\tif (processedChildren === undefined && !branchNode.options.childrenAreOptional) {\n\t\t\t\t\t\t\tthrow new ChildrenAnalyzerError(branchNode.options.childrenAbsentErrorMessage)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst factory = treeNode[factoryMethodName] as DeclarationSiteNodeRepresentationFactory<\n\t\t\t\t\t\t\tany,\n\t\t\t\t\t\t\tunknown,\n\t\t\t\t\t\t\tAllBranchNodesRepresentation | AllLeavesRepresentation,\n\t\t\t\t\t\t\tStaticContext\n\t\t\t\t\t\t>\n\t\t\t\t\t\treturn factory(props, childrenRepresentationReducer(processedChildren), staticContext)\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tcase 'useSite': {\n\t\t\t\t\tconst { factory, ComponentType } = specification\n\t\t\t\t\tif (ComponentType === undefined || node.type === ComponentType) {\n\t\t\t\t\t\tif (processedChildren === undefined && !branchNode.options.childrenAreOptional) {\n\t\t\t\t\t\t\tthrow new ChildrenAnalyzerError(branchNode.options.childrenAbsentErrorMessage)\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn factory(node, processedChildren, staticContext)\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\treturn assertNever(specification)\n\t\t\t}\n\t\t}\n\n\t\tif (\n\t\t\t!this.options.ignoreUnhandledNodes\n\t\t\t&& !(typeof treeNode !== 'string' && this.options.staticRenderFactoryName in treeNode)\n\t\t) {\n\t\t\tthrow new ChildrenAnalyzerError(getErrorMessage(this.options.unhandledNodeErrorMessage, node, staticContext))\n\t\t}\n\n\t\treturn processedChildren\n\t}\n}\n"],"names":["_ChildrenAnalyzer"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChildrenAnalyzerError.cjs","sources":["../../../../packages/react-multipass-rendering/src/ChildrenAnalyzerError.ts"],"sourcesContent":["export class ChildrenAnalyzerError extends Error {\n\tpublic details?: string\n\n\tconstructor(message: string, options?: { cause: Error; details?: string }) {\n\t\tsuper(message, options)\n\t\tthis.details = options?.details\n\t}\n}\n"],"names":[],"mappings":";;;;;AAAO,MAAM,8BAA8B,MAAM;AAAA,EAGhD,YAAY,SAAiB,SAA8C;AAC1E,UAAM,SAAS,OAAO;
|
|
1
|
+
{"version":3,"file":"ChildrenAnalyzerError.cjs","sources":["../../../../packages/react-multipass-rendering/src/ChildrenAnalyzerError.ts"],"sourcesContent":["export class ChildrenAnalyzerError extends Error {\n\tpublic details?: string\n\n\tconstructor(message: string, options?: { cause: Error; details?: string }) {\n\t\tsuper(message, options)\n\t\tthis.details = options?.details\n\t}\n}\n"],"names":[],"mappings":";;;;;AAAO,MAAM,8BAA8B,MAAM;AAAA,EAGhD,YAAY,SAAiB,SAA8C;AAC1E,UAAM,SAAS,OAAO;AAHvB,kBAAA,MAAO,SAAA;AAIN,SAAK,UAAU,SAAS;AAAA,EACzB;AACD;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChildrenAnalyzerError.js","sources":["../../../../packages/react-multipass-rendering/src/ChildrenAnalyzerError.ts"],"sourcesContent":["export class ChildrenAnalyzerError extends Error {\n\tpublic details?: string\n\n\tconstructor(message: string, options?: { cause: Error; details?: string }) {\n\t\tsuper(message, options)\n\t\tthis.details = options?.details\n\t}\n}\n"],"names":[],"mappings":";;;AAAO,MAAM,8BAA8B,MAAM;AAAA,EAGhD,YAAY,SAAiB,SAA8C;AAC1E,UAAM,SAAS,OAAO;
|
|
1
|
+
{"version":3,"file":"ChildrenAnalyzerError.js","sources":["../../../../packages/react-multipass-rendering/src/ChildrenAnalyzerError.ts"],"sourcesContent":["export class ChildrenAnalyzerError extends Error {\n\tpublic details?: string\n\n\tconstructor(message: string, options?: { cause: Error; details?: string }) {\n\t\tsuper(message, options)\n\t\tthis.details = options?.details\n\t}\n}\n"],"names":[],"mappings":";;;AAAO,MAAM,8BAA8B,MAAM;AAAA,EAGhD,YAAY,SAAiB,SAA8C;AAC1E,UAAM,SAAS,OAAO;AAHvB,kBAAA,MAAO,SAAA;AAIN,SAAK,UAAU,SAAS;AAAA,EACzB;AACD;"}
|
|
@@ -15,18 +15,15 @@ const wrapError = (e, currentComponentName, methodName, path) => {
|
|
|
15
15
|
continue;
|
|
16
16
|
}
|
|
17
17
|
try {
|
|
18
|
-
const valuePrinted = JSON.stringify(
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
if (typeof value2 === "function") {
|
|
22
|
-
return "(function)";
|
|
23
|
-
}
|
|
24
|
-
if (React.isValidElement(value2)) {
|
|
25
|
-
return "(react element)";
|
|
26
|
-
}
|
|
27
|
-
return value2;
|
|
18
|
+
const valuePrinted = JSON.stringify(value, (key2, value2) => {
|
|
19
|
+
if (typeof value2 === "function") {
|
|
20
|
+
return "(function)";
|
|
28
21
|
}
|
|
29
|
-
|
|
22
|
+
if (React.isValidElement(value2)) {
|
|
23
|
+
return "(react element)";
|
|
24
|
+
}
|
|
25
|
+
return value2;
|
|
26
|
+
});
|
|
30
27
|
result += ` ${key}=${valuePrinted}`;
|
|
31
28
|
} catch {
|
|
32
29
|
result += ` ${key}=(failed to print a value)`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wrapError.cjs","sources":["../../../../../packages/react-multipass-rendering/src/helpers/wrapError.ts"],"sourcesContent":["import React, { ReactElement } from 'react'\nimport { ChildrenAnalyzerError } from '../ChildrenAnalyzerError'\n\nexport const wrapError = (e: unknown, currentComponentName: string, methodName: string, path: ReactElement[]): never => {\n\tif (!(e instanceof Error)) {\n\t\tthrow e\n\t}\n\n\tconst componentPath = path.map((it, index) => {\n\t\tconst { children, ...props } = it.props
|
|
1
|
+
{"version":3,"file":"wrapError.cjs","sources":["../../../../../packages/react-multipass-rendering/src/helpers/wrapError.ts"],"sourcesContent":["import React, { ReactElement } from 'react'\nimport { ChildrenAnalyzerError } from '../ChildrenAnalyzerError'\n\nexport const wrapError = (e: unknown, currentComponentName: string, methodName: string, path: ReactElement[]): never => {\n\tif (!(e instanceof Error)) {\n\t\tthrow e\n\t}\n\n\tconst componentPath = path.map((it, index) => {\n\t\tconst { children, ...props } = it.props as Record<string, any>\n\t\tconst printProps = (props: any) => {\n\t\t\tlet result = ''\n\t\t\tfor (const [key, value] of Object.entries(props)) {\n\t\t\t\tif (value === undefined) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\tconst valuePrinted = JSON.stringify(value, (key, value) => {\n\t\t\t\t\t\tif (typeof value === 'function') {\n\t\t\t\t\t\t\treturn '(function)'\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (React.isValidElement(value)) {\n\t\t\t\t\t\t\treturn '(react element)'\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn value\n\t\t\t\t\t})\n\t\t\t\t\tresult += ` ${key}=${valuePrinted}`\n\t\t\t\t} catch {\n\t\t\t\t\tresult += ` ${key}=(failed to print a value)`\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn result\n\t\t}\n\t\tconst componentName = typeof it.type === 'object' && 'displayName' in it.type ? (it.type as any).displayName : null\n\t\tconst propsPrinted = printProps(props)\n\t\tconst indent = ' '.repeat(index)\n\t\treturn `${indent}<${componentName ?? '???'}${propsPrinted}>`\n\t})\n\tconst errorMessage = `Error during static render of ${currentComponentName} in ${methodName}:\\n${e.message || 'unknown error'}`\n\n\tthrow new ChildrenAnalyzerError(errorMessage, {\n\t\tcause: e,\n\t\tdetails: `Component path:\\n${componentPath.join('\\n')}`,\n\t})\n}\n"],"names":["props","key","value","ChildrenAnalyzerError"],"mappings":";;;;AAGO,MAAM,YAAY,CAAC,GAAY,sBAA8B,YAAoB,SAAgC;AACvH,MAAI,EAAE,aAAa,QAAQ;AAC1B,UAAM;AAAA,EACP;AAEA,QAAM,gBAAgB,KAAK,IAAI,CAAC,IAAI,UAAU;AAC7C,UAAM,EAAE,UAAU,GAAG,MAAA,IAAU,GAAG;AAClC,UAAM,aAAa,CAACA,WAAe;AAClC,UAAI,SAAS;AACb,iBAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQA,MAAK,GAAG;AACjD,YAAI,UAAU,QAAW;AACxB;AAAA,QACD;AACA,YAAI;AACH,gBAAM,eAAe,KAAK,UAAU,OAAO,CAACC,MAAKC,WAAU;AAC1D,gBAAI,OAAOA,WAAU,YAAY;AAChC,qBAAO;AAAA,YACR;AACA,gBAAI,MAAM,eAAeA,MAAK,GAAG;AAChC,qBAAO;AAAA,YACR;AACA,mBAAOA;AAAAA,UACR,CAAC;AACD,oBAAU,IAAI,GAAG,IAAI,YAAY;AAAA,QAClC,QAAQ;AACP,oBAAU,IAAI,GAAG;AAAA,QAClB;AAAA,MACD;AACA,aAAO;AAAA,IACR;AACA,UAAM,gBAAgB,OAAO,GAAG,SAAS,YAAY,iBAAiB,GAAG,OAAQ,GAAG,KAAa,cAAc;AAC/G,UAAM,eAAe,WAAW,KAAK;AACrC,UAAM,SAAS,KAAK,OAAO,KAAK;AAChC,WAAO,GAAG,MAAM,IAAI,iBAAiB,KAAK,GAAG,YAAY;AAAA,EAC1D,CAAC;AACD,QAAM,eAAe,iCAAiC,oBAAoB,OAAO,UAAU;AAAA,EAAM,EAAE,WAAW,eAAe;AAE7H,QAAM,IAAIC,sBAAAA,sBAAsB,cAAc;AAAA,IAC7C,OAAO;AAAA,IACP,SAAS;AAAA,EAAoB,cAAc,KAAK,IAAI,CAAC;AAAA,EAAA,CACrD;AACF;;"}
|
|
@@ -13,18 +13,15 @@ const wrapError = (e, currentComponentName, methodName, path) => {
|
|
|
13
13
|
continue;
|
|
14
14
|
}
|
|
15
15
|
try {
|
|
16
|
-
const valuePrinted = JSON.stringify(
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
if (typeof value2 === "function") {
|
|
20
|
-
return "(function)";
|
|
21
|
-
}
|
|
22
|
-
if (React__default.isValidElement(value2)) {
|
|
23
|
-
return "(react element)";
|
|
24
|
-
}
|
|
25
|
-
return value2;
|
|
16
|
+
const valuePrinted = JSON.stringify(value, (key2, value2) => {
|
|
17
|
+
if (typeof value2 === "function") {
|
|
18
|
+
return "(function)";
|
|
26
19
|
}
|
|
27
|
-
|
|
20
|
+
if (React__default.isValidElement(value2)) {
|
|
21
|
+
return "(react element)";
|
|
22
|
+
}
|
|
23
|
+
return value2;
|
|
24
|
+
});
|
|
28
25
|
result += ` ${key}=${valuePrinted}`;
|
|
29
26
|
} catch {
|
|
30
27
|
result += ` ${key}=(failed to print a value)`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wrapError.js","sources":["../../../../../packages/react-multipass-rendering/src/helpers/wrapError.ts"],"sourcesContent":["import React, { ReactElement } from 'react'\nimport { ChildrenAnalyzerError } from '../ChildrenAnalyzerError'\n\nexport const wrapError = (e: unknown, currentComponentName: string, methodName: string, path: ReactElement[]): never => {\n\tif (!(e instanceof Error)) {\n\t\tthrow e\n\t}\n\n\tconst componentPath = path.map((it, index) => {\n\t\tconst { children, ...props } = it.props
|
|
1
|
+
{"version":3,"file":"wrapError.js","sources":["../../../../../packages/react-multipass-rendering/src/helpers/wrapError.ts"],"sourcesContent":["import React, { ReactElement } from 'react'\nimport { ChildrenAnalyzerError } from '../ChildrenAnalyzerError'\n\nexport const wrapError = (e: unknown, currentComponentName: string, methodName: string, path: ReactElement[]): never => {\n\tif (!(e instanceof Error)) {\n\t\tthrow e\n\t}\n\n\tconst componentPath = path.map((it, index) => {\n\t\tconst { children, ...props } = it.props as Record<string, any>\n\t\tconst printProps = (props: any) => {\n\t\t\tlet result = ''\n\t\t\tfor (const [key, value] of Object.entries(props)) {\n\t\t\t\tif (value === undefined) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\tconst valuePrinted = JSON.stringify(value, (key, value) => {\n\t\t\t\t\t\tif (typeof value === 'function') {\n\t\t\t\t\t\t\treturn '(function)'\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (React.isValidElement(value)) {\n\t\t\t\t\t\t\treturn '(react element)'\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn value\n\t\t\t\t\t})\n\t\t\t\t\tresult += ` ${key}=${valuePrinted}`\n\t\t\t\t} catch {\n\t\t\t\t\tresult += ` ${key}=(failed to print a value)`\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn result\n\t\t}\n\t\tconst componentName = typeof it.type === 'object' && 'displayName' in it.type ? (it.type as any).displayName : null\n\t\tconst propsPrinted = printProps(props)\n\t\tconst indent = ' '.repeat(index)\n\t\treturn `${indent}<${componentName ?? '???'}${propsPrinted}>`\n\t})\n\tconst errorMessage = `Error during static render of ${currentComponentName} in ${methodName}:\\n${e.message || 'unknown error'}`\n\n\tthrow new ChildrenAnalyzerError(errorMessage, {\n\t\tcause: e,\n\t\tdetails: `Component path:\\n${componentPath.join('\\n')}`,\n\t})\n}\n"],"names":["props","key","value","React"],"mappings":";;AAGO,MAAM,YAAY,CAAC,GAAY,sBAA8B,YAAoB,SAAgC;AACvH,MAAI,EAAE,aAAa,QAAQ;AAC1B,UAAM;AAAA,EACP;AAEA,QAAM,gBAAgB,KAAK,IAAI,CAAC,IAAI,UAAU;AAC7C,UAAM,EAAE,UAAU,GAAG,MAAA,IAAU,GAAG;AAClC,UAAM,aAAa,CAACA,WAAe;AAClC,UAAI,SAAS;AACb,iBAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQA,MAAK,GAAG;AACjD,YAAI,UAAU,QAAW;AACxB;AAAA,QACD;AACA,YAAI;AACH,gBAAM,eAAe,KAAK,UAAU,OAAO,CAACC,MAAKC,WAAU;AAC1D,gBAAI,OAAOA,WAAU,YAAY;AAChC,qBAAO;AAAA,YACR;AACA,gBAAIC,eAAM,eAAeD,MAAK,GAAG;AAChC,qBAAO;AAAA,YACR;AACA,mBAAOA;AAAAA,UACR,CAAC;AACD,oBAAU,IAAI,GAAG,IAAI,YAAY;AAAA,QAClC,QAAQ;AACP,oBAAU,IAAI,GAAG;AAAA,QAClB;AAAA,MACD;AACA,aAAO;AAAA,IACR;AACA,UAAM,gBAAgB,OAAO,GAAG,SAAS,YAAY,iBAAiB,GAAG,OAAQ,GAAG,KAAa,cAAc;AAC/G,UAAM,eAAe,WAAW,KAAK;AACrC,UAAM,SAAS,KAAK,OAAO,KAAK;AAChC,WAAO,GAAG,MAAM,IAAI,iBAAiB,KAAK,GAAG,YAAY;AAAA,EAC1D,CAAC;AACD,QAAM,eAAe,iCAAiC,oBAAoB,OAAO,UAAU;AAAA,EAAM,EAAE,WAAW,eAAe;AAE7H,QAAM,IAAI,sBAAsB,cAAc;AAAA,IAC7C,OAAO;AAAA,IACP,SAAS;AAAA,EAAoB,cAAc,KAAK,IAAI,CAAC;AAAA,EAAA,CACrD;AACF;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BranchNode.cjs","sources":["../../../../../packages/react-multipass-rendering/src/nodeSpecs/BranchNode.ts"],"sourcesContent":["import type { ElementType } from 'react'\nimport { ChildrenAnalyzerError } from '../ChildrenAnalyzerError'\nimport type { BranchNodeOptions } from './BranchNodeOptions'\nimport type { ChildrenRepresentationReducer, UseSiteBranchNodeRepresentationFactory, ValidFactoryName } from './types'\n\nclass BranchNode<\n\tProps extends {} = {},\n\tStaticContext = undefined,\n\tFactoryMethodName extends ValidFactoryName = string,\n\tChildrenRepresentation = any,\n\tReducedChildrenRepresentation = any,\n\tRepresentation = any,\n> {\n\tprivate static defaultOptions: BranchNodeOptions = {\n\t\tchildrenAreOptional: false,\n\t\tchildrenAbsentErrorMessage: 'Component must have children!',\n\t}\n\n\tpublic readonly specification: BranchNode.Specification<\n\t\tProps,\n\t\tStaticContext,\n\t\tFactoryMethodName,\n\t\tChildrenRepresentation,\n\t\tReducedChildrenRepresentation,\n\t\tRepresentation\n\t>\n\n\tpublic readonly options: BranchNodeOptions\n\n\tpublic constructor(\n\t\tfactoryMethodName: FactoryMethodName,\n\t\tchildrenRepresentationReducer: ChildrenRepresentationReducer<ChildrenRepresentation, ReducedChildrenRepresentation>,\n\t\toptions?: Partial<BranchNodeOptions>,\n\t)\n\tpublic constructor(\n\t\tuseSiteFactory: UseSiteBranchNodeRepresentationFactory<\n\t\t\tProps,\n\t\t\tChildrenRepresentation,\n\t\t\tRepresentation,\n\t\t\tStaticContext\n\t\t>,\n\t\tComponentType?: ElementType<Props>,\n\t\toptions?: Partial<BranchNodeOptions>,\n\t)\n\tpublic constructor(\n\t\tfactory:\n\t\t\t| FactoryMethodName\n\t\t\t| UseSiteBranchNodeRepresentationFactory<Props, ChildrenRepresentation, Representation, StaticContext>,\n\t\tcomponentOrReducer?:\n\t\t\t| ChildrenRepresentationReducer<ChildrenRepresentation, ReducedChildrenRepresentation>\n\t\t\t| ElementType<Props>,\n\t\toptions?: Partial<BranchNodeOptions>,\n\t) {\n\t\tif (typeof factory !== 'function') {\n\t\t\tthis.specification = {\n\t\t\t\ttype: 'declarationSite',\n\t\t\t\tfactoryMethodName: factory,\n\t\t\t\tchildrenRepresentationReducer: componentOrReducer as ChildrenRepresentationReducer<\n\t\t\t\t\tChildrenRepresentation,\n\t\t\t\t\tReducedChildrenRepresentation\n\t\t\t\t>,\n\t\t\t}\n\t\t} else if (typeof factory === 'function') {\n\t\t\tthis.specification = {\n\t\t\t\ttype: 'useSite',\n\t\t\t\tfactory,\n\t\t\t\tComponentType: componentOrReducer as ElementType<Props>,\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new ChildrenAnalyzerError('Invalid arguments')\n\t\t}\n\t\tthis.options = {\n\t\t\t...BranchNode.defaultOptions,\n\t\t\t...options,\n\t\t}\n\t}\n}\n\nnamespace BranchNode {\n\texport type Specification<\n\t\tProps extends {} = {},\n\t\tStaticContext = any,\n\t\tFactoryMethodName extends ValidFactoryName = string,\n\t\tChildrenRepresentation = any,\n\t\tReducedChildrenRepresentation = any,\n\t\tRepresentation = any,\n\t> =\n\t\t| {\n\t\t\ttype: 'declarationSite'\n\t\t\tfactoryMethodName: FactoryMethodName\n\t\t\tchildrenRepresentationReducer: ChildrenRepresentationReducer<\n\t\t\t\
|
|
1
|
+
{"version":3,"file":"BranchNode.cjs","sources":["../../../../../packages/react-multipass-rendering/src/nodeSpecs/BranchNode.ts"],"sourcesContent":["import type { ElementType } from 'react'\nimport { ChildrenAnalyzerError } from '../ChildrenAnalyzerError'\nimport type { BranchNodeOptions } from './BranchNodeOptions'\nimport type { ChildrenRepresentationReducer, UseSiteBranchNodeRepresentationFactory, ValidFactoryName } from './types'\n\nclass BranchNode<\n\tProps extends {} = {},\n\tStaticContext = undefined,\n\tFactoryMethodName extends ValidFactoryName = string,\n\tChildrenRepresentation = any,\n\tReducedChildrenRepresentation = any,\n\tRepresentation = any,\n> {\n\tprivate static defaultOptions: BranchNodeOptions = {\n\t\tchildrenAreOptional: false,\n\t\tchildrenAbsentErrorMessage: 'Component must have children!',\n\t}\n\n\tpublic readonly specification: BranchNode.Specification<\n\t\tProps,\n\t\tStaticContext,\n\t\tFactoryMethodName,\n\t\tChildrenRepresentation,\n\t\tReducedChildrenRepresentation,\n\t\tRepresentation\n\t>\n\n\tpublic readonly options: BranchNodeOptions\n\n\tpublic constructor(\n\t\tfactoryMethodName: FactoryMethodName,\n\t\tchildrenRepresentationReducer: ChildrenRepresentationReducer<ChildrenRepresentation, ReducedChildrenRepresentation>,\n\t\toptions?: Partial<BranchNodeOptions>,\n\t)\n\tpublic constructor(\n\t\tuseSiteFactory: UseSiteBranchNodeRepresentationFactory<\n\t\t\tProps,\n\t\t\tChildrenRepresentation,\n\t\t\tRepresentation,\n\t\t\tStaticContext\n\t\t>,\n\t\tComponentType?: ElementType<Props>,\n\t\toptions?: Partial<BranchNodeOptions>,\n\t)\n\tpublic constructor(\n\t\tfactory:\n\t\t\t| FactoryMethodName\n\t\t\t| UseSiteBranchNodeRepresentationFactory<Props, ChildrenRepresentation, Representation, StaticContext>,\n\t\tcomponentOrReducer?:\n\t\t\t| ChildrenRepresentationReducer<ChildrenRepresentation, ReducedChildrenRepresentation>\n\t\t\t| ElementType<Props>,\n\t\toptions?: Partial<BranchNodeOptions>,\n\t) {\n\t\tif (typeof factory !== 'function') {\n\t\t\tthis.specification = {\n\t\t\t\ttype: 'declarationSite',\n\t\t\t\tfactoryMethodName: factory,\n\t\t\t\tchildrenRepresentationReducer: componentOrReducer as ChildrenRepresentationReducer<\n\t\t\t\t\tChildrenRepresentation,\n\t\t\t\t\tReducedChildrenRepresentation\n\t\t\t\t>,\n\t\t\t}\n\t\t} else if (typeof factory === 'function') {\n\t\t\tthis.specification = {\n\t\t\t\ttype: 'useSite',\n\t\t\t\tfactory,\n\t\t\t\tComponentType: componentOrReducer as ElementType<Props>,\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new ChildrenAnalyzerError('Invalid arguments')\n\t\t}\n\t\tthis.options = {\n\t\t\t...BranchNode.defaultOptions,\n\t\t\t...options,\n\t\t}\n\t}\n}\n\nnamespace BranchNode {\n\texport type Specification<\n\t\tProps extends {} = {},\n\t\tStaticContext = any,\n\t\tFactoryMethodName extends ValidFactoryName = string,\n\t\tChildrenRepresentation = any,\n\t\tReducedChildrenRepresentation = any,\n\t\tRepresentation = any,\n\t> =\n\t\t| {\n\t\t\ttype: 'declarationSite'\n\t\t\tfactoryMethodName: FactoryMethodName\n\t\t\tchildrenRepresentationReducer: ChildrenRepresentationReducer<\n\t\t\t\tChildrenRepresentation,\n\t\t\t\tReducedChildrenRepresentation\n\t\t\t>\n\t\t}\n\t\t| {\n\t\t\ttype: 'useSite'\n\t\t\tfactory: UseSiteBranchNodeRepresentationFactory<Props, ChildrenRepresentation, Representation, StaticContext>\n\t\t\tComponentType?: ElementType<Props>\n\t\t}\n}\n\nexport { BranchNode }\n"],"names":["_BranchNode","ChildrenAnalyzerError"],"mappings":";;;;;;AAKA,MAAM,cAAN,MAAMA,aAOJ;AAAA,EAgCM,YACN,SAGA,oBAGA,SACC;AAlCF,kBAAA,MAAgB,eAAA;AAShB,kBAAA,MAAgB,SAAA;AA0Bf,QAAI,OAAO,YAAY,YAAY;AAClC,WAAK,gBAAgB;AAAA,QACpB,MAAM;AAAA,QACN,mBAAmB;AAAA,QACnB,+BAA+B;AAAA,MAAA;AAAA,IAKjC,WAAW,OAAO,YAAY,YAAY;AACzC,WAAK,gBAAgB;AAAA,QACpB,MAAM;AAAA,QACN;AAAA,QACA,eAAe;AAAA,MAAA;AAAA,IAEjB,OAAO;AACN,YAAM,IAAIC,sBAAAA,sBAAsB,mBAAmB;AAAA,IACpD;AACA,SAAK,UAAU;AAAA,MACd,GAAGD,aAAW;AAAA,MACd,GAAG;AAAA,IAAA;AAAA,EAEL;AACD;AA/DC,cARK,aAQU,kBAAoC;AAAA,EAClD,qBAAqB;AAAA,EACrB,4BAA4B;AAC7B,CAAA;AAXD,IAAM,aAAN;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BranchNode.js","sources":["../../../../../packages/react-multipass-rendering/src/nodeSpecs/BranchNode.ts"],"sourcesContent":["import type { ElementType } from 'react'\nimport { ChildrenAnalyzerError } from '../ChildrenAnalyzerError'\nimport type { BranchNodeOptions } from './BranchNodeOptions'\nimport type { ChildrenRepresentationReducer, UseSiteBranchNodeRepresentationFactory, ValidFactoryName } from './types'\n\nclass BranchNode<\n\tProps extends {} = {},\n\tStaticContext = undefined,\n\tFactoryMethodName extends ValidFactoryName = string,\n\tChildrenRepresentation = any,\n\tReducedChildrenRepresentation = any,\n\tRepresentation = any,\n> {\n\tprivate static defaultOptions: BranchNodeOptions = {\n\t\tchildrenAreOptional: false,\n\t\tchildrenAbsentErrorMessage: 'Component must have children!',\n\t}\n\n\tpublic readonly specification: BranchNode.Specification<\n\t\tProps,\n\t\tStaticContext,\n\t\tFactoryMethodName,\n\t\tChildrenRepresentation,\n\t\tReducedChildrenRepresentation,\n\t\tRepresentation\n\t>\n\n\tpublic readonly options: BranchNodeOptions\n\n\tpublic constructor(\n\t\tfactoryMethodName: FactoryMethodName,\n\t\tchildrenRepresentationReducer: ChildrenRepresentationReducer<ChildrenRepresentation, ReducedChildrenRepresentation>,\n\t\toptions?: Partial<BranchNodeOptions>,\n\t)\n\tpublic constructor(\n\t\tuseSiteFactory: UseSiteBranchNodeRepresentationFactory<\n\t\t\tProps,\n\t\t\tChildrenRepresentation,\n\t\t\tRepresentation,\n\t\t\tStaticContext\n\t\t>,\n\t\tComponentType?: ElementType<Props>,\n\t\toptions?: Partial<BranchNodeOptions>,\n\t)\n\tpublic constructor(\n\t\tfactory:\n\t\t\t| FactoryMethodName\n\t\t\t| UseSiteBranchNodeRepresentationFactory<Props, ChildrenRepresentation, Representation, StaticContext>,\n\t\tcomponentOrReducer?:\n\t\t\t| ChildrenRepresentationReducer<ChildrenRepresentation, ReducedChildrenRepresentation>\n\t\t\t| ElementType<Props>,\n\t\toptions?: Partial<BranchNodeOptions>,\n\t) {\n\t\tif (typeof factory !== 'function') {\n\t\t\tthis.specification = {\n\t\t\t\ttype: 'declarationSite',\n\t\t\t\tfactoryMethodName: factory,\n\t\t\t\tchildrenRepresentationReducer: componentOrReducer as ChildrenRepresentationReducer<\n\t\t\t\t\tChildrenRepresentation,\n\t\t\t\t\tReducedChildrenRepresentation\n\t\t\t\t>,\n\t\t\t}\n\t\t} else if (typeof factory === 'function') {\n\t\t\tthis.specification = {\n\t\t\t\ttype: 'useSite',\n\t\t\t\tfactory,\n\t\t\t\tComponentType: componentOrReducer as ElementType<Props>,\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new ChildrenAnalyzerError('Invalid arguments')\n\t\t}\n\t\tthis.options = {\n\t\t\t...BranchNode.defaultOptions,\n\t\t\t...options,\n\t\t}\n\t}\n}\n\nnamespace BranchNode {\n\texport type Specification<\n\t\tProps extends {} = {},\n\t\tStaticContext = any,\n\t\tFactoryMethodName extends ValidFactoryName = string,\n\t\tChildrenRepresentation = any,\n\t\tReducedChildrenRepresentation = any,\n\t\tRepresentation = any,\n\t> =\n\t\t| {\n\t\t\ttype: 'declarationSite'\n\t\t\tfactoryMethodName: FactoryMethodName\n\t\t\tchildrenRepresentationReducer: ChildrenRepresentationReducer<\n\t\t\t\
|
|
1
|
+
{"version":3,"file":"BranchNode.js","sources":["../../../../../packages/react-multipass-rendering/src/nodeSpecs/BranchNode.ts"],"sourcesContent":["import type { ElementType } from 'react'\nimport { ChildrenAnalyzerError } from '../ChildrenAnalyzerError'\nimport type { BranchNodeOptions } from './BranchNodeOptions'\nimport type { ChildrenRepresentationReducer, UseSiteBranchNodeRepresentationFactory, ValidFactoryName } from './types'\n\nclass BranchNode<\n\tProps extends {} = {},\n\tStaticContext = undefined,\n\tFactoryMethodName extends ValidFactoryName = string,\n\tChildrenRepresentation = any,\n\tReducedChildrenRepresentation = any,\n\tRepresentation = any,\n> {\n\tprivate static defaultOptions: BranchNodeOptions = {\n\t\tchildrenAreOptional: false,\n\t\tchildrenAbsentErrorMessage: 'Component must have children!',\n\t}\n\n\tpublic readonly specification: BranchNode.Specification<\n\t\tProps,\n\t\tStaticContext,\n\t\tFactoryMethodName,\n\t\tChildrenRepresentation,\n\t\tReducedChildrenRepresentation,\n\t\tRepresentation\n\t>\n\n\tpublic readonly options: BranchNodeOptions\n\n\tpublic constructor(\n\t\tfactoryMethodName: FactoryMethodName,\n\t\tchildrenRepresentationReducer: ChildrenRepresentationReducer<ChildrenRepresentation, ReducedChildrenRepresentation>,\n\t\toptions?: Partial<BranchNodeOptions>,\n\t)\n\tpublic constructor(\n\t\tuseSiteFactory: UseSiteBranchNodeRepresentationFactory<\n\t\t\tProps,\n\t\t\tChildrenRepresentation,\n\t\t\tRepresentation,\n\t\t\tStaticContext\n\t\t>,\n\t\tComponentType?: ElementType<Props>,\n\t\toptions?: Partial<BranchNodeOptions>,\n\t)\n\tpublic constructor(\n\t\tfactory:\n\t\t\t| FactoryMethodName\n\t\t\t| UseSiteBranchNodeRepresentationFactory<Props, ChildrenRepresentation, Representation, StaticContext>,\n\t\tcomponentOrReducer?:\n\t\t\t| ChildrenRepresentationReducer<ChildrenRepresentation, ReducedChildrenRepresentation>\n\t\t\t| ElementType<Props>,\n\t\toptions?: Partial<BranchNodeOptions>,\n\t) {\n\t\tif (typeof factory !== 'function') {\n\t\t\tthis.specification = {\n\t\t\t\ttype: 'declarationSite',\n\t\t\t\tfactoryMethodName: factory,\n\t\t\t\tchildrenRepresentationReducer: componentOrReducer as ChildrenRepresentationReducer<\n\t\t\t\t\tChildrenRepresentation,\n\t\t\t\t\tReducedChildrenRepresentation\n\t\t\t\t>,\n\t\t\t}\n\t\t} else if (typeof factory === 'function') {\n\t\t\tthis.specification = {\n\t\t\t\ttype: 'useSite',\n\t\t\t\tfactory,\n\t\t\t\tComponentType: componentOrReducer as ElementType<Props>,\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new ChildrenAnalyzerError('Invalid arguments')\n\t\t}\n\t\tthis.options = {\n\t\t\t...BranchNode.defaultOptions,\n\t\t\t...options,\n\t\t}\n\t}\n}\n\nnamespace BranchNode {\n\texport type Specification<\n\t\tProps extends {} = {},\n\t\tStaticContext = any,\n\t\tFactoryMethodName extends ValidFactoryName = string,\n\t\tChildrenRepresentation = any,\n\t\tReducedChildrenRepresentation = any,\n\t\tRepresentation = any,\n\t> =\n\t\t| {\n\t\t\ttype: 'declarationSite'\n\t\t\tfactoryMethodName: FactoryMethodName\n\t\t\tchildrenRepresentationReducer: ChildrenRepresentationReducer<\n\t\t\t\tChildrenRepresentation,\n\t\t\t\tReducedChildrenRepresentation\n\t\t\t>\n\t\t}\n\t\t| {\n\t\t\ttype: 'useSite'\n\t\t\tfactory: UseSiteBranchNodeRepresentationFactory<Props, ChildrenRepresentation, Representation, StaticContext>\n\t\t\tComponentType?: ElementType<Props>\n\t\t}\n}\n\nexport { BranchNode }\n"],"names":["_BranchNode"],"mappings":";;;;AAKA,MAAM,cAAN,MAAMA,aAOJ;AAAA,EAgCM,YACN,SAGA,oBAGA,SACC;AAlCF,kBAAA,MAAgB,eAAA;AAShB,kBAAA,MAAgB,SAAA;AA0Bf,QAAI,OAAO,YAAY,YAAY;AAClC,WAAK,gBAAgB;AAAA,QACpB,MAAM;AAAA,QACN,mBAAmB;AAAA,QACnB,+BAA+B;AAAA,MAAA;AAAA,IAKjC,WAAW,OAAO,YAAY,YAAY;AACzC,WAAK,gBAAgB;AAAA,QACpB,MAAM;AAAA,QACN;AAAA,QACA,eAAe;AAAA,MAAA;AAAA,IAEjB,OAAO;AACN,YAAM,IAAI,sBAAsB,mBAAmB;AAAA,IACpD;AACA,SAAK,UAAU;AAAA,MACd,GAAGA,aAAW;AAAA,MACd,GAAG;AAAA,IAAA;AAAA,EAEL;AACD;AA/DC,cARK,aAQU,kBAAoC;AAAA,EAClD,qBAAqB;AAAA,EACrB,4BAA4B;AAC7B,CAAA;AAXD,IAAM,aAAN;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Leaf.cjs","sources":["../../../../../packages/react-multipass-rendering/src/nodeSpecs/Leaf.ts"],"sourcesContent":["import type { ElementType } from 'react'\nimport type {
|
|
1
|
+
{"version":3,"file":"Leaf.cjs","sources":["../../../../../packages/react-multipass-rendering/src/nodeSpecs/Leaf.ts"],"sourcesContent":["import type { ElementType } from 'react'\nimport type { ConstrainedLeafRepresentationFactory, UnconstrainedLeafRepresentationFactory, ValidFactoryName } from './types'\n\nclass Leaf<\n\tProps extends {} = {},\n\tStaticContext = any,\n\tFactoryMethodName extends ValidFactoryName = string,\n\tRepresentation = any,\n> {\n\tpublic readonly specification: Leaf.Specification<FactoryMethodName, Representation, Props, StaticContext>\n\n\tpublic constructor(factoryMethodName: FactoryMethodName)\n\tpublic constructor(staticFactory: UnconstrainedLeafRepresentationFactory<Props, Representation, StaticContext>)\n\tpublic constructor(\n\t\tstaticFactory: ConstrainedLeafRepresentationFactory<Props, Representation, StaticContext>,\n\t\tComponentType: ElementType<Props>,\n\t)\n\tpublic constructor(\n\t\tfactory: FactoryMethodName | UnconstrainedLeafRepresentationFactory<Props, Representation, StaticContext>,\n\t\tComponentType?: ElementType<Props>,\n\t) {\n\t\tif (typeof factory === 'function') {\n\t\t\tthis.specification = {\n\t\t\t\ttype: 'useSite',\n\t\t\t\tComponentType,\n\t\t\t\tfactory,\n\t\t\t}\n\t\t} else {\n\t\t\tthis.specification = {\n\t\t\t\ttype: 'declarationSite',\n\t\t\t\tfactoryMethodName: factory,\n\t\t\t}\n\t\t}\n\t}\n}\n\nnamespace Leaf {\n\texport type Specification<\n\t\tFactoryMethodName extends ValidFactoryName,\n\t\tRepresentation,\n\t\tProps extends {},\n\t\tStaticContext,\n\t> =\n\t\t| {\n\t\t\ttype: 'declarationSite'\n\t\t\tfactoryMethodName: FactoryMethodName\n\t\t}\n\t\t| {\n\t\t\ttype: 'useSite'\n\t\t\tfactory: UnconstrainedLeafRepresentationFactory<Props, Representation, StaticContext>\n\t\t\tComponentType?: ElementType<Props>\n\t\t}\n}\n\nexport { Leaf }\n"],"names":[],"mappings":";;;;;AAGA,MAAM,KAKJ;AAAA,EASM,YACN,SACA,eACC;AAXF,kBAAA,MAAgB,eAAA;AAYf,QAAI,OAAO,YAAY,YAAY;AAClC,WAAK,gBAAgB;AAAA,QACpB,MAAM;AAAA,QACN;AAAA,QACA;AAAA,MAAA;AAAA,IAEF,OAAO;AACN,WAAK,gBAAgB;AAAA,QACpB,MAAM;AAAA,QACN,mBAAmB;AAAA,MAAA;AAAA,IAErB;AAAA,EACD;AACD;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Leaf.js","sources":["../../../../../packages/react-multipass-rendering/src/nodeSpecs/Leaf.ts"],"sourcesContent":["import type { ElementType } from 'react'\nimport type {
|
|
1
|
+
{"version":3,"file":"Leaf.js","sources":["../../../../../packages/react-multipass-rendering/src/nodeSpecs/Leaf.ts"],"sourcesContent":["import type { ElementType } from 'react'\nimport type { ConstrainedLeafRepresentationFactory, UnconstrainedLeafRepresentationFactory, ValidFactoryName } from './types'\n\nclass Leaf<\n\tProps extends {} = {},\n\tStaticContext = any,\n\tFactoryMethodName extends ValidFactoryName = string,\n\tRepresentation = any,\n> {\n\tpublic readonly specification: Leaf.Specification<FactoryMethodName, Representation, Props, StaticContext>\n\n\tpublic constructor(factoryMethodName: FactoryMethodName)\n\tpublic constructor(staticFactory: UnconstrainedLeafRepresentationFactory<Props, Representation, StaticContext>)\n\tpublic constructor(\n\t\tstaticFactory: ConstrainedLeafRepresentationFactory<Props, Representation, StaticContext>,\n\t\tComponentType: ElementType<Props>,\n\t)\n\tpublic constructor(\n\t\tfactory: FactoryMethodName | UnconstrainedLeafRepresentationFactory<Props, Representation, StaticContext>,\n\t\tComponentType?: ElementType<Props>,\n\t) {\n\t\tif (typeof factory === 'function') {\n\t\t\tthis.specification = {\n\t\t\t\ttype: 'useSite',\n\t\t\t\tComponentType,\n\t\t\t\tfactory,\n\t\t\t}\n\t\t} else {\n\t\t\tthis.specification = {\n\t\t\t\ttype: 'declarationSite',\n\t\t\t\tfactoryMethodName: factory,\n\t\t\t}\n\t\t}\n\t}\n}\n\nnamespace Leaf {\n\texport type Specification<\n\t\tFactoryMethodName extends ValidFactoryName,\n\t\tRepresentation,\n\t\tProps extends {},\n\t\tStaticContext,\n\t> =\n\t\t| {\n\t\t\ttype: 'declarationSite'\n\t\t\tfactoryMethodName: FactoryMethodName\n\t\t}\n\t\t| {\n\t\t\ttype: 'useSite'\n\t\t\tfactory: UnconstrainedLeafRepresentationFactory<Props, Representation, StaticContext>\n\t\t\tComponentType?: ElementType<Props>\n\t\t}\n}\n\nexport { Leaf }\n"],"names":[],"mappings":";;;AAGA,MAAM,KAKJ;AAAA,EASM,YACN,SACA,eACC;AAXF,kBAAA,MAAgB,eAAA;AAYf,QAAI,OAAO,YAAY,YAAY;AAClC,WAAK,gBAAgB;AAAA,QACpB,MAAM;AAAA,QACN;AAAA,QACA;AAAA,MAAA;AAAA,IAEF,OAAO;AACN,WAAK,gBAAgB;AAAA,QACpB,MAAM;AAAA,QACN,mBAAmB;AAAA,MAAA;AAAA,IAErB;AAAA,EACD;AACD;"}
|
|
@@ -31,7 +31,7 @@ const _ChildrenAnalyzer = class _ChildrenAnalyzer2 {
|
|
|
31
31
|
);
|
|
32
32
|
}
|
|
33
33
|
processNode(node, staticContext, componentPath) {
|
|
34
|
-
if (!node || typeof node === "string" || typeof node === "number" || typeof node === "boolean") {
|
|
34
|
+
if (!node || typeof node === "string" || typeof node === "number" || typeof node === "boolean" || typeof node === "bigint") {
|
|
35
35
|
for (const leaf of this.leaves) {
|
|
36
36
|
const specification = leaf.specification;
|
|
37
37
|
if (specification.type === "useSite") {
|
|
@@ -69,11 +69,12 @@ const _ChildrenAnalyzer = class _ChildrenAnalyzer2 {
|
|
|
69
69
|
}
|
|
70
70
|
return mapped;
|
|
71
71
|
}
|
|
72
|
-
let children
|
|
73
|
-
if (!("type" in node)) {
|
|
72
|
+
let children;
|
|
73
|
+
if (typeof node !== "object" || !("type" in node)) {
|
|
74
74
|
return this.processNode(children, staticContext, componentPath);
|
|
75
75
|
}
|
|
76
|
-
|
|
76
|
+
const props = node.props;
|
|
77
|
+
children = props.children;
|
|
77
78
|
if (typeof node.type === "symbol") {
|
|
78
79
|
return this.processNode(children, staticContext, componentPath);
|
|
79
80
|
}
|
|
@@ -83,7 +84,7 @@ const _ChildrenAnalyzer = class _ChildrenAnalyzer2 {
|
|
|
83
84
|
if (this.options.staticContextFactoryName in treeNode) {
|
|
84
85
|
const staticContextFactory = treeNode[this.options.staticContextFactoryName];
|
|
85
86
|
try {
|
|
86
|
-
staticContext = staticContextFactory(
|
|
87
|
+
staticContext = staticContextFactory(props, staticContext);
|
|
87
88
|
} catch (e) {
|
|
88
89
|
wrapError.wrapError(e, treeNode.displayName ?? "???", this.options.staticContextFactoryName, componentPath);
|
|
89
90
|
}
|
|
@@ -91,7 +92,7 @@ const _ChildrenAnalyzer = class _ChildrenAnalyzer2 {
|
|
|
91
92
|
if (this.options.staticRenderFactoryName in treeNode) {
|
|
92
93
|
const factory = treeNode[this.options.staticRenderFactoryName];
|
|
93
94
|
try {
|
|
94
|
-
children = factory(
|
|
95
|
+
children = factory(props, staticContext);
|
|
95
96
|
} catch (e) {
|
|
96
97
|
wrapError.wrapError(e, treeNode.displayName ?? "???", this.options.staticRenderFactoryName, componentPath);
|
|
97
98
|
}
|
|
@@ -104,7 +105,7 @@ const _ChildrenAnalyzer = class _ChildrenAnalyzer2 {
|
|
|
104
105
|
const { factoryMethodName } = specification;
|
|
105
106
|
if (typeof treeNode !== "string" && factoryMethodName in treeNode) {
|
|
106
107
|
const factory = treeNode[factoryMethodName];
|
|
107
|
-
return factory(
|
|
108
|
+
return factory(props, staticContext);
|
|
108
109
|
}
|
|
109
110
|
break;
|
|
110
111
|
}
|
|
@@ -130,7 +131,7 @@ const _ChildrenAnalyzer = class _ChildrenAnalyzer2 {
|
|
|
130
131
|
throw new ChildrenAnalyzerError.ChildrenAnalyzerError(branchNode.options.childrenAbsentErrorMessage);
|
|
131
132
|
}
|
|
132
133
|
const factory = treeNode[factoryMethodName];
|
|
133
|
-
return factory(
|
|
134
|
+
return factory(props, childrenRepresentationReducer(processedChildren), staticContext);
|
|
134
135
|
}
|
|
135
136
|
break;
|
|
136
137
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChildrenAnalyzer.cjs","sources":["../../../../packages/react-multipass-rendering/src/ChildrenAnalyzer.ts"],"sourcesContent":["import { assertNever } from '@contember/utilities'\nimport type { ElementType, ReactElement, ReactNode } from 'react'\nimport type { BranchNodeList } from './BranchNodeList'\nimport { ChildrenAnalyzerError } from './ChildrenAnalyzerError'\nimport type { ChildrenAnalyzerOptions } from './ChildrenAnalyzerOptions'\nimport type { LeafList } from './LeafList'\nimport { getErrorMessage } from './helpers'\nimport { wrapError } from './helpers/wrapError'\nimport type {\n\tDeclarationSiteNodeRepresentationFactory,\n\tRawNodeRepresentation,\n\tStaticContextFactory,\n\tSyntheticChildrenFactory,\n\tUnconstrainedLeafRepresentationFactory,\n\tValidFactoryName,\n} from './nodeSpecs'\n\nexport class ChildrenAnalyzer<\n\tAllLeavesRepresentation = any,\n\tAllBranchNodesRepresentation = never,\n\tStaticContext = undefined,\n> {\n\tprivate static defaultOptions: ChildrenAnalyzerOptions = {\n\t\tignoreRenderProps: true,\n\t\trenderPropsErrorMessage: 'Render props (functions as React component children) are not supported.',\n\n\t\tignoreUnhandledNodes: true,\n\t\tunhandledNodeErrorMessage: 'Encountered an unknown child.',\n\n\t\tstaticContextFactoryName: 'getStaticContext',\n\t\tstaticRenderFactoryName: 'staticRender',\n\t}\n\n\tprivate readonly leaves: LeafList<AllLeavesRepresentation, StaticContext>\n\tprivate readonly branchNodes: BranchNodeList<AllLeavesRepresentation, AllBranchNodesRepresentation, StaticContext>\n\tprivate readonly options: ChildrenAnalyzerOptions<StaticContext>\n\n\tpublic constructor(\n\t\tleaves: LeafList<AllLeavesRepresentation, StaticContext>,\n\t\toptions?: Partial<ChildrenAnalyzerOptions>,\n\t)\n\tpublic constructor(\n\t\tleaves: LeafList<AllLeavesRepresentation, StaticContext>,\n\t\tbranchNodes: BranchNodeList<AllLeavesRepresentation, AllBranchNodesRepresentation, StaticContext>,\n\t\toptions?: Partial<ChildrenAnalyzerOptions>,\n\t)\n\tpublic constructor(\n\t\tleaves: LeafList<AllLeavesRepresentation, StaticContext>,\n\t\tdecider:\n\t\t\t| Partial<ChildrenAnalyzerOptions>\n\t\t\t| BranchNodeList<AllLeavesRepresentation, AllBranchNodesRepresentation, StaticContext> = [],\n\t\toptions: Partial<ChildrenAnalyzerOptions> = {},\n\t) {\n\t\tthis.leaves = leaves\n\n\t\tif (Array.isArray(decider)) {\n\t\t\tthis.branchNodes = decider\n\t\t} else {\n\t\t\tthis.branchNodes = []\n\t\t\toptions = decider\n\t\t}\n\t\tthis.options = { ...ChildrenAnalyzer.defaultOptions, ...options }\n\t}\n\n\tpublic processChildren(\n\t\tchildren: ReactNode,\n\t\tinitialStaticContext: StaticContext,\n\t): Array<AllLeavesRepresentation | AllBranchNodesRepresentation> {\n\t\tconst processed = this.processNode(children, initialStaticContext, [])\n\n\t\tconst rawResult: Array<AllLeavesRepresentation | AllBranchNodesRepresentation | undefined> = Array.isArray(\n\t\t\tprocessed,\n\t\t)\n\t\t\t? processed\n\t\t\t: [processed]\n\n\t\treturn rawResult.filter(\n\t\t\t(item): item is AllLeavesRepresentation | AllBranchNodesRepresentation => item !== undefined,\n\t\t)\n\t}\n\n\tprivate processNode(\n\t\tnode: ReactNode,\n\t\tstaticContext: StaticContext,\n\t\tcomponentPath: ReactElement[],\n\t): RawNodeRepresentation<AllLeavesRepresentation, AllBranchNodesRepresentation> {\n\t\tif (!node || typeof node === 'string' || typeof node === 'number' || typeof node === 'boolean') {\n\t\t\tfor (const leaf of this.leaves) {\n\t\t\t\tconst specification = leaf.specification\n\t\t\t\tif (specification.type === 'useSite') {\n\t\t\t\t\tconst { ComponentType, factory } = specification\n\t\t\t\t\tif (ComponentType === undefined) {\n\t\t\t\t\t\treturn factory(node, staticContext)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (node === false || node === undefined || node === null) {\n\t\t\t\t// This adds seamless support for conditionals and such.\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t\tif (!this.options.ignoreUnhandledNodes) {\n\t\t\t\tthrow new ChildrenAnalyzerError(getErrorMessage(this.options.unhandledNodeErrorMessage, node, staticContext))\n\t\t\t}\n\t\t\treturn undefined\n\t\t}\n\n\t\tif (typeof node === 'function') {\n\t\t\tif (this.options.ignoreRenderProps) {\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t\tthrow new ChildrenAnalyzerError(getErrorMessage(this.options.renderPropsErrorMessage, node, staticContext))\n\t\t}\n\n\t\tif (Array.isArray(node)) {\n\t\t\tlet mapped: Array<AllLeavesRepresentation | AllBranchNodesRepresentation> = []\n\n\t\t\tfor (const subNode of node) {\n\t\t\t\tconst processed = this.processNode(subNode, staticContext, componentPath)\n\n\t\t\t\tif (processed !== undefined) {\n\t\t\t\t\tif (Array.isArray(processed)) {\n\t\t\t\t\t\tmapped = mapped.concat(processed)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmapped.push(processed)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn mapped\n\t\t}\n\n\t\tlet children: ReactNode = undefined\n\n\t\tif (!('type' in node)) {\n\t\t\treturn this.processNode(children, staticContext, componentPath)\n\t\t}\n\t\tchildren = node.props.children\n\n\t\tif (typeof node.type === 'symbol') {\n\t\t\t// Fragment, Portal or other non-component\n\t\t\treturn this.processNode(children, staticContext, componentPath)\n\t\t}\n\t\t// if (typeof node.type === 'string') {\n\t\t// \t// Typically a host component\n\t\t// \tif (!this.options.ignoreUnhandledNodes) {\n\t\t// \t\tthrow new ChildrenAnalyzerError(getErrorMessage(this.options.unhandledNodeErrorMessage, node, staticContext))\n\t\t// \t}\n\t\t// \treturn this.processNode(children, staticContext)\n\t\t// }\n\n\t\t// Component, PureComponent, FunctionComponent\n\n\t\tconst treeNode = node.type as ElementType &\n\t\t{\n\t\t\t[staticMethod in ValidFactoryName]:\n\t\t\t| StaticContextFactory<any, StaticContext>\n\t\t\t| SyntheticChildrenFactory<any, StaticContext>\n\t\t\t| UnconstrainedLeafRepresentationFactory<any, AllLeavesRepresentation, StaticContext>\n\t\t\t| DeclarationSiteNodeRepresentationFactory<any, unknown, AllBranchNodesRepresentation, StaticContext>\n\t\t}\n\n\t\tcomponentPath = [...componentPath, node]\n\t\tif (typeof treeNode !== 'string') {\n\t\t\tif (this.options.staticContextFactoryName in treeNode) {\n\t\t\t\tconst staticContextFactory = treeNode[this.options.staticContextFactoryName] as StaticContextFactory<\n\t\t\t\t\tany,\n\t\t\t\t\tStaticContext\n\t\t\t\t>\n\t\t\t\ttry {\n\t\t\t\t\tstaticContext = staticContextFactory(node.props, staticContext)\n\t\t\t\t} catch (e) {\n\t\t\t\t\twrapError(e, treeNode.displayName ?? '???', this.options.staticContextFactoryName, componentPath)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.options.staticRenderFactoryName in treeNode) {\n\t\t\t\tconst factory = treeNode[this.options.staticRenderFactoryName] as SyntheticChildrenFactory<any, StaticContext>\n\t\t\t\ttry {\n\t\t\t\t\tchildren = factory(node.props, staticContext)\n\t\t\t\t} catch (e) {\n\t\t\t\t\twrapError(e, treeNode.displayName ?? '???', this.options.staticRenderFactoryName, componentPath)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor (const leaf of this.leaves) {\n\t\t\tconst specification = leaf.specification\n\t\t\tswitch (specification.type) {\n\t\t\t\tcase 'declarationSite': {\n\t\t\t\t\tconst { factoryMethodName } = specification\n\n\t\t\t\t\tif (typeof treeNode !== 'string' && factoryMethodName in treeNode) {\n\t\t\t\t\t\tconst factory = treeNode[factoryMethodName] as UnconstrainedLeafRepresentationFactory<\n\t\t\t\t\t\t\tany,\n\t\t\t\t\t\t\tAllBranchNodesRepresentation | AllLeavesRepresentation,\n\t\t\t\t\t\t\tStaticContext\n\t\t\t\t\t\t>\n\t\t\t\t\t\treturn factory(node.props, staticContext)\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tcase 'useSite': {\n\t\t\t\t\tconst { ComponentType, factory } = specification\n\t\t\t\t\tif (ComponentType === undefined || node.type === ComponentType) {\n\t\t\t\t\t\treturn factory(node, staticContext)\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\treturn assertNever(specification)\n\t\t\t}\n\t\t}\n\n\t\tconst processedChildren = this.processNode(children, staticContext, componentPath)\n\n\t\tfor (const branchNode of this.branchNodes) {\n\t\t\tconst specification = branchNode.specification\n\t\t\tswitch (specification.type) {\n\t\t\t\tcase 'declarationSite': {\n\t\t\t\t\tconst { factoryMethodName, childrenRepresentationReducer } = specification\n\n\t\t\t\t\tif (typeof treeNode !== 'string' && factoryMethodName in treeNode) {\n\t\t\t\t\t\tif (processedChildren === undefined && !branchNode.options.childrenAreOptional) {\n\t\t\t\t\t\t\tthrow new ChildrenAnalyzerError(branchNode.options.childrenAbsentErrorMessage)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst factory = treeNode[factoryMethodName] as DeclarationSiteNodeRepresentationFactory<\n\t\t\t\t\t\t\tany,\n\t\t\t\t\t\t\tunknown,\n\t\t\t\t\t\t\tAllBranchNodesRepresentation | AllLeavesRepresentation,\n\t\t\t\t\t\t\tStaticContext\n\t\t\t\t\t\t>\n\t\t\t\t\t\treturn factory(node.props, childrenRepresentationReducer(processedChildren), staticContext)\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tcase 'useSite': {\n\t\t\t\t\tconst { factory, ComponentType } = specification\n\t\t\t\t\tif (ComponentType === undefined || node.type === ComponentType) {\n\t\t\t\t\t\tif (processedChildren === undefined && !branchNode.options.childrenAreOptional) {\n\t\t\t\t\t\t\tthrow new ChildrenAnalyzerError(branchNode.options.childrenAbsentErrorMessage)\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn factory(node, processedChildren, staticContext)\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\treturn assertNever(specification)\n\t\t\t}\n\t\t}\n\n\t\tif (\n\t\t\t!this.options.ignoreUnhandledNodes &&\n\t\t\t!(typeof treeNode !== 'string' && this.options.staticRenderFactoryName in treeNode)\n\t\t) {\n\t\t\tthrow new ChildrenAnalyzerError(getErrorMessage(this.options.unhandledNodeErrorMessage, node, staticContext))\n\t\t}\n\n\t\treturn processedChildren\n\t}\n}\n"],"names":["_ChildrenAnalyzer","ChildrenAnalyzerError","getErrorMessage","wrapError","assertNever"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ChildrenAnalyzer.cjs","sources":["../../../../packages/react-multipass-rendering/src/ChildrenAnalyzer.ts"],"sourcesContent":["import { assertNever } from '@contember/utilities'\nimport type { ElementType, ReactElement, ReactNode } from 'react'\nimport type { BranchNodeList } from './BranchNodeList'\nimport { ChildrenAnalyzerError } from './ChildrenAnalyzerError'\nimport type { ChildrenAnalyzerOptions } from './ChildrenAnalyzerOptions'\nimport type { LeafList } from './LeafList'\nimport { getErrorMessage } from './helpers'\nimport { wrapError } from './helpers/wrapError'\nimport type {\n\tDeclarationSiteNodeRepresentationFactory,\n\tRawNodeRepresentation,\n\tStaticContextFactory,\n\tSyntheticChildrenFactory,\n\tUnconstrainedLeafRepresentationFactory,\n\tValidFactoryName,\n} from './nodeSpecs'\n\nexport class ChildrenAnalyzer<\n\tAllLeavesRepresentation = any,\n\tAllBranchNodesRepresentation = never,\n\tStaticContext = undefined,\n> {\n\tprivate static defaultOptions: ChildrenAnalyzerOptions = {\n\t\tignoreRenderProps: true,\n\t\trenderPropsErrorMessage: 'Render props (functions as React component children) are not supported.',\n\n\t\tignoreUnhandledNodes: true,\n\t\tunhandledNodeErrorMessage: 'Encountered an unknown child.',\n\n\t\tstaticContextFactoryName: 'getStaticContext',\n\t\tstaticRenderFactoryName: 'staticRender',\n\t}\n\n\tprivate readonly leaves: LeafList<AllLeavesRepresentation, StaticContext>\n\tprivate readonly branchNodes: BranchNodeList<AllLeavesRepresentation, AllBranchNodesRepresentation, StaticContext>\n\tprivate readonly options: ChildrenAnalyzerOptions<StaticContext>\n\n\tpublic constructor(\n\t\tleaves: LeafList<AllLeavesRepresentation, StaticContext>,\n\t\toptions?: Partial<ChildrenAnalyzerOptions>,\n\t)\n\tpublic constructor(\n\t\tleaves: LeafList<AllLeavesRepresentation, StaticContext>,\n\t\tbranchNodes: BranchNodeList<AllLeavesRepresentation, AllBranchNodesRepresentation, StaticContext>,\n\t\toptions?: Partial<ChildrenAnalyzerOptions>,\n\t)\n\tpublic constructor(\n\t\tleaves: LeafList<AllLeavesRepresentation, StaticContext>,\n\t\tdecider:\n\t\t\t| Partial<ChildrenAnalyzerOptions>\n\t\t\t| BranchNodeList<AllLeavesRepresentation, AllBranchNodesRepresentation, StaticContext> = [],\n\t\toptions: Partial<ChildrenAnalyzerOptions> = {},\n\t) {\n\t\tthis.leaves = leaves\n\n\t\tif (Array.isArray(decider)) {\n\t\t\tthis.branchNodes = decider\n\t\t} else {\n\t\t\tthis.branchNodes = []\n\t\t\toptions = decider\n\t\t}\n\t\tthis.options = { ...ChildrenAnalyzer.defaultOptions, ...options }\n\t}\n\n\tpublic processChildren(\n\t\tchildren: ReactNode,\n\t\tinitialStaticContext: StaticContext,\n\t): Array<AllLeavesRepresentation | AllBranchNodesRepresentation> {\n\t\tconst processed = this.processNode(children, initialStaticContext, [])\n\n\t\tconst rawResult: Array<AllLeavesRepresentation | AllBranchNodesRepresentation | undefined> = Array.isArray(\n\t\t\t\tprocessed,\n\t\t\t)\n\t\t\t? processed\n\t\t\t: [processed]\n\n\t\treturn rawResult.filter(\n\t\t\t(item): item is AllLeavesRepresentation | AllBranchNodesRepresentation => item !== undefined,\n\t\t)\n\t}\n\n\tprivate processNode(\n\t\tnode: ReactNode,\n\t\tstaticContext: StaticContext,\n\t\tcomponentPath: ReactElement[],\n\t): RawNodeRepresentation<AllLeavesRepresentation, AllBranchNodesRepresentation> {\n\t\tif (!node || typeof node === 'string' || typeof node === 'number' || typeof node === 'boolean' || typeof node === 'bigint') {\n\t\t\tfor (const leaf of this.leaves) {\n\t\t\t\tconst specification = leaf.specification\n\t\t\t\tif (specification.type === 'useSite') {\n\t\t\t\t\tconst { ComponentType, factory } = specification\n\t\t\t\t\tif (ComponentType === undefined) {\n\t\t\t\t\t\treturn factory(node, staticContext)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (node === false || node === undefined || node === null) {\n\t\t\t\t// This adds seamless support for conditionals and such.\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t\tif (!this.options.ignoreUnhandledNodes) {\n\t\t\t\tthrow new ChildrenAnalyzerError(getErrorMessage(this.options.unhandledNodeErrorMessage, node, staticContext))\n\t\t\t}\n\t\t\treturn undefined\n\t\t}\n\n\t\tif (typeof node === 'function') {\n\t\t\tif (this.options.ignoreRenderProps) {\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t\tthrow new ChildrenAnalyzerError(getErrorMessage(this.options.renderPropsErrorMessage, node, staticContext))\n\t\t}\n\n\t\tif (Array.isArray(node)) {\n\t\t\tlet mapped: Array<AllLeavesRepresentation | AllBranchNodesRepresentation> = []\n\n\t\t\tfor (const subNode of node) {\n\t\t\t\tconst processed = this.processNode(subNode, staticContext, componentPath)\n\n\t\t\t\tif (processed !== undefined) {\n\t\t\t\t\tif (Array.isArray(processed)) {\n\t\t\t\t\t\tmapped = mapped.concat(processed)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmapped.push(processed)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn mapped\n\t\t}\n\n\t\tlet children: ReactNode\n\n\t\tif (typeof node !== 'object' || !('type' in node)) {\n\t\t\treturn this.processNode(children, staticContext, componentPath)\n\t\t}\n\t\tconst props = node.props as Record<string, any>\n\t\tchildren = props.children\n\n\t\tif (typeof node.type === 'symbol') {\n\t\t\t// Fragment, Portal or other non-component\n\t\t\treturn this.processNode(children, staticContext, componentPath)\n\t\t}\n\t\t// if (typeof node.type === 'string') {\n\t\t// \t// Typically a host component\n\t\t// \tif (!this.options.ignoreUnhandledNodes) {\n\t\t// \t\tthrow new ChildrenAnalyzerError(getErrorMessage(this.options.unhandledNodeErrorMessage, node, staticContext))\n\t\t// \t}\n\t\t// \treturn this.processNode(children, staticContext)\n\t\t// }\n\n\t\t// Component, PureComponent, FunctionComponent\n\n\t\tconst treeNode = node.type as\n\t\t\t& ElementType\n\t\t\t& {\n\t\t\t\t[staticMethod in ValidFactoryName]:\n\t\t\t\t\t| StaticContextFactory<any, StaticContext>\n\t\t\t\t\t| SyntheticChildrenFactory<any, StaticContext>\n\t\t\t\t\t| UnconstrainedLeafRepresentationFactory<any, AllLeavesRepresentation, StaticContext>\n\t\t\t\t\t| DeclarationSiteNodeRepresentationFactory<any, unknown, AllBranchNodesRepresentation, StaticContext>\n\t\t\t}\n\n\t\tcomponentPath = [...componentPath, node]\n\t\tif (typeof treeNode !== 'string') {\n\t\t\tif (this.options.staticContextFactoryName in treeNode) {\n\t\t\t\tconst staticContextFactory = treeNode[this.options.staticContextFactoryName] as StaticContextFactory<\n\t\t\t\t\tany,\n\t\t\t\t\tStaticContext\n\t\t\t\t>\n\t\t\t\ttry {\n\t\t\t\t\tstaticContext = staticContextFactory(props, staticContext)\n\t\t\t\t} catch (e) {\n\t\t\t\t\twrapError(e, treeNode.displayName ?? '???', this.options.staticContextFactoryName, componentPath)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.options.staticRenderFactoryName in treeNode) {\n\t\t\t\tconst factory = treeNode[this.options.staticRenderFactoryName] as SyntheticChildrenFactory<any, StaticContext>\n\t\t\t\ttry {\n\t\t\t\t\tchildren = factory(props, staticContext)\n\t\t\t\t} catch (e) {\n\t\t\t\t\twrapError(e, treeNode.displayName ?? '???', this.options.staticRenderFactoryName, componentPath)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor (const leaf of this.leaves) {\n\t\t\tconst specification = leaf.specification\n\t\t\tswitch (specification.type) {\n\t\t\t\tcase 'declarationSite': {\n\t\t\t\t\tconst { factoryMethodName } = specification\n\n\t\t\t\t\tif (typeof treeNode !== 'string' && factoryMethodName in treeNode) {\n\t\t\t\t\t\tconst factory = treeNode[factoryMethodName] as (\n\t\t\t\t\t\t\tprops: any,\n\t\t\t\t\t\t\tstaticContext: StaticContext,\n\t\t\t\t\t\t) => AllBranchNodesRepresentation | AllLeavesRepresentation\n\t\t\t\t\t\treturn factory(props, staticContext)\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tcase 'useSite': {\n\t\t\t\t\tconst { ComponentType, factory } = specification\n\t\t\t\t\tif (ComponentType === undefined || node.type === ComponentType) {\n\t\t\t\t\t\treturn factory(node, staticContext)\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\treturn assertNever(specification)\n\t\t\t}\n\t\t}\n\n\t\tconst processedChildren = this.processNode(children, staticContext, componentPath)\n\n\t\tfor (const branchNode of this.branchNodes) {\n\t\t\tconst specification = branchNode.specification\n\t\t\tswitch (specification.type) {\n\t\t\t\tcase 'declarationSite': {\n\t\t\t\t\tconst { factoryMethodName, childrenRepresentationReducer } = specification\n\n\t\t\t\t\tif (typeof treeNode !== 'string' && factoryMethodName in treeNode) {\n\t\t\t\t\t\tif (processedChildren === undefined && !branchNode.options.childrenAreOptional) {\n\t\t\t\t\t\t\tthrow new ChildrenAnalyzerError(branchNode.options.childrenAbsentErrorMessage)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst factory = treeNode[factoryMethodName] as DeclarationSiteNodeRepresentationFactory<\n\t\t\t\t\t\t\tany,\n\t\t\t\t\t\t\tunknown,\n\t\t\t\t\t\t\tAllBranchNodesRepresentation | AllLeavesRepresentation,\n\t\t\t\t\t\t\tStaticContext\n\t\t\t\t\t\t>\n\t\t\t\t\t\treturn factory(props, childrenRepresentationReducer(processedChildren), staticContext)\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tcase 'useSite': {\n\t\t\t\t\tconst { factory, ComponentType } = specification\n\t\t\t\t\tif (ComponentType === undefined || node.type === ComponentType) {\n\t\t\t\t\t\tif (processedChildren === undefined && !branchNode.options.childrenAreOptional) {\n\t\t\t\t\t\t\tthrow new ChildrenAnalyzerError(branchNode.options.childrenAbsentErrorMessage)\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn factory(node, processedChildren, staticContext)\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\treturn assertNever(specification)\n\t\t\t}\n\t\t}\n\n\t\tif (\n\t\t\t!this.options.ignoreUnhandledNodes\n\t\t\t&& !(typeof treeNode !== 'string' && this.options.staticRenderFactoryName in treeNode)\n\t\t) {\n\t\t\tthrow new ChildrenAnalyzerError(getErrorMessage(this.options.unhandledNodeErrorMessage, node, staticContext))\n\t\t}\n\n\t\treturn processedChildren\n\t}\n}\n"],"names":["_ChildrenAnalyzer","ChildrenAnalyzerError","getErrorMessage","wrapError","assertNever"],"mappings":"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"}
|