@kithinji/orca 1.0.7 → 1.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/index.iife.js +66 -52
- package/dist/browser/index.iife.js.map +3 -3
- package/dist/browser/index.mjs +69 -1236
- package/dist/browser/index.mjs.map +4 -4
- package/dist/node/index.cjs +70 -56
- package/dist/node/index.cjs.map +3 -3
- package/dist/node/index.mjs +70 -56
- package/dist/node/index.mjs.map +3 -3
- package/dist/types/shared/renderers/stream.d.ts +3 -2
- package/dist/types/shared/renderers/stream.d.ts.map +1 -1
- package/package.json +3 -1
package/dist/node/index.mjs
CHANGED
|
@@ -43,7 +43,7 @@ __export(shared_exports, {
|
|
|
43
43
|
Module: () => Module,
|
|
44
44
|
NODE: () => NODE,
|
|
45
45
|
Navigate: () => Navigate,
|
|
46
|
-
Node: () =>
|
|
46
|
+
Node: () => Node,
|
|
47
47
|
ORCA_CLIENT_COMPONENT: () => ORCA_CLIENT_COMPONENT,
|
|
48
48
|
ORCA_ELEMENT_TYPE: () => ORCA_ELEMENT_TYPE,
|
|
49
49
|
ORCA_FRAGMENT_TYPE: () => ORCA_FRAGMENT_TYPE,
|
|
@@ -272,7 +272,7 @@ var ProviderNormalizer = class {
|
|
|
272
272
|
return { scope: "singleton", ...provider };
|
|
273
273
|
}
|
|
274
274
|
};
|
|
275
|
-
var
|
|
275
|
+
var Node = class {
|
|
276
276
|
constructor(name) {
|
|
277
277
|
this.name = name;
|
|
278
278
|
this.children = [];
|
|
@@ -325,7 +325,7 @@ var Compiler = class {
|
|
|
325
325
|
const target = this.isDynamicModule(moduleOrDynamic) ? moduleOrDynamic.module : moduleOrDynamic;
|
|
326
326
|
if (this.nodes.has(target.name))
|
|
327
327
|
return this.nodes.get(target.name);
|
|
328
|
-
const node = new
|
|
328
|
+
const node = new Node(target.name);
|
|
329
329
|
this.nodes.set(target.name, node);
|
|
330
330
|
const imports = this.getImports(moduleOrDynamic);
|
|
331
331
|
node.setChildren(imports.map((imp) => this.createNode(imp)));
|
|
@@ -777,13 +777,14 @@ var StringRenderer = class {
|
|
|
777
777
|
};
|
|
778
778
|
|
|
779
779
|
// src/shared/renderers/stream.ts
|
|
780
|
+
import { JSDOM } from "jsdom";
|
|
780
781
|
var StreamRenderer = class {
|
|
781
782
|
constructor(rootInjector, options = {}) {
|
|
782
783
|
this.rootInjector = rootInjector;
|
|
783
784
|
this.pending = /* @__PURE__ */ new Map();
|
|
784
785
|
this.processedIds = /* @__PURE__ */ new Set();
|
|
785
786
|
this.queueResolvers = [];
|
|
786
|
-
this.
|
|
787
|
+
this.idCounter = 0;
|
|
787
788
|
this.options = {
|
|
788
789
|
timeout: options.timeout ?? 3e4
|
|
789
790
|
};
|
|
@@ -824,25 +825,7 @@ var StreamRenderer = class {
|
|
|
824
825
|
return this.renderClassComponent(vnode, injector);
|
|
825
826
|
}
|
|
826
827
|
if (isIntrinsicElement(vnode)) {
|
|
827
|
-
|
|
828
|
-
let children;
|
|
829
|
-
if (dangerousHTML && dangerousHTML.__html) {
|
|
830
|
-
children = this.parseHTMLToJSX(dangerousHTML.__html, injector);
|
|
831
|
-
} else {
|
|
832
|
-
children = this.mapChildren(vnode.props?.children, injector);
|
|
833
|
-
}
|
|
834
|
-
return {
|
|
835
|
-
$typeof: ORCA_ELEMENT_TYPE,
|
|
836
|
-
type: vnode.type,
|
|
837
|
-
id: vnode.id,
|
|
838
|
-
props: {
|
|
839
|
-
...vnode.props,
|
|
840
|
-
dangerouslySetInnerHTML: void 0,
|
|
841
|
-
// Remove after processing
|
|
842
|
-
children
|
|
843
|
-
},
|
|
844
|
-
key: vnode.key ?? null
|
|
845
|
-
};
|
|
828
|
+
return this.renderIntrinsicElement(vnode, injector);
|
|
846
829
|
}
|
|
847
830
|
if (isFragment(vnode)) {
|
|
848
831
|
return {
|
|
@@ -860,6 +843,28 @@ var StreamRenderer = class {
|
|
|
860
843
|
this.renderingNodes.delete(vnode);
|
|
861
844
|
}
|
|
862
845
|
}
|
|
846
|
+
renderIntrinsicElement(vnode, injector) {
|
|
847
|
+
const { dangerouslySetInnerHTML, children, ...restProps } = vnode.props || {};
|
|
848
|
+
let processedChildren;
|
|
849
|
+
if (dangerouslySetInnerHTML?.__html) {
|
|
850
|
+
processedChildren = this.parseHTMLToJSX(
|
|
851
|
+
dangerouslySetInnerHTML.__html,
|
|
852
|
+
injector
|
|
853
|
+
);
|
|
854
|
+
} else {
|
|
855
|
+
processedChildren = this.mapChildren(children, injector);
|
|
856
|
+
}
|
|
857
|
+
return {
|
|
858
|
+
$$typeof: ORCA_ELEMENT_TYPE,
|
|
859
|
+
type: vnode.type,
|
|
860
|
+
id: vnode.id,
|
|
861
|
+
props: {
|
|
862
|
+
...restProps,
|
|
863
|
+
children: processedChildren
|
|
864
|
+
},
|
|
865
|
+
key: vnode.key ?? null
|
|
866
|
+
};
|
|
867
|
+
}
|
|
863
868
|
renderClassComponent(vnode, injector) {
|
|
864
869
|
const ComponentClass = vnode.type;
|
|
865
870
|
const isComponent = Reflect.getMetadata(COMPONENT, ComponentClass);
|
|
@@ -882,7 +887,9 @@ var StreamRenderer = class {
|
|
|
882
887
|
return this.buildSyncTree(childVNode, componentInjector);
|
|
883
888
|
}
|
|
884
889
|
mapChildren(children, injector) {
|
|
885
|
-
if (children == null
|
|
890
|
+
if (children == null)
|
|
891
|
+
return void 0;
|
|
892
|
+
if (typeof children === "string" || typeof children === "number") {
|
|
886
893
|
return children;
|
|
887
894
|
}
|
|
888
895
|
if (Array.isArray(children)) {
|
|
@@ -891,32 +898,39 @@ var StreamRenderer = class {
|
|
|
891
898
|
return this.buildSyncTree(children, injector);
|
|
892
899
|
}
|
|
893
900
|
parseHTMLToJSX(html, injector) {
|
|
894
|
-
const
|
|
895
|
-
const
|
|
901
|
+
const dom = new JSDOM(html);
|
|
902
|
+
const document2 = dom.window.document;
|
|
896
903
|
const convertNode = (node) => {
|
|
897
|
-
if (node.nodeType ===
|
|
898
|
-
|
|
904
|
+
if (node.nodeType === 3) {
|
|
905
|
+
const text = node.textContent || "";
|
|
906
|
+
return text.trim() ? text : null;
|
|
899
907
|
}
|
|
900
|
-
if (node.nodeType ===
|
|
908
|
+
if (node.nodeType === 1) {
|
|
901
909
|
const element = node;
|
|
902
910
|
const tagName = element.tagName.toLowerCase();
|
|
903
911
|
const props = {};
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
912
|
+
Array.from(element.attributes).forEach((attr) => {
|
|
913
|
+
let name = attr.name;
|
|
914
|
+
if (name === "class")
|
|
915
|
+
name = "className";
|
|
916
|
+
else if (name === "for")
|
|
917
|
+
name = "htmlFor";
|
|
918
|
+
else if (name.startsWith("data-") || name.startsWith("aria-")) {
|
|
919
|
+
} else if (name.includes("-")) {
|
|
920
|
+
name = name.replace(
|
|
921
|
+
/-([a-z])/g,
|
|
922
|
+
(_, letter) => letter.toUpperCase()
|
|
923
|
+
);
|
|
924
|
+
}
|
|
925
|
+
props[name] = attr.value;
|
|
926
|
+
});
|
|
913
927
|
const children = [];
|
|
914
|
-
|
|
915
|
-
const
|
|
916
|
-
if (
|
|
917
|
-
children.push(
|
|
928
|
+
element.childNodes.forEach((child) => {
|
|
929
|
+
const converted = convertNode(child);
|
|
930
|
+
if (converted != null) {
|
|
931
|
+
children.push(converted);
|
|
918
932
|
}
|
|
919
|
-
}
|
|
933
|
+
});
|
|
920
934
|
const jsxElement = {
|
|
921
935
|
$$typeof: ORCA_ELEMENT_TYPE,
|
|
922
936
|
type: tagName,
|
|
@@ -931,17 +945,14 @@ var StreamRenderer = class {
|
|
|
931
945
|
}
|
|
932
946
|
return null;
|
|
933
947
|
};
|
|
934
|
-
const
|
|
935
|
-
|
|
936
|
-
const
|
|
937
|
-
if (
|
|
938
|
-
|
|
948
|
+
const result = [];
|
|
949
|
+
document2.body.childNodes.forEach((node) => {
|
|
950
|
+
const converted = convertNode(node);
|
|
951
|
+
if (converted != null) {
|
|
952
|
+
result.push(converted);
|
|
939
953
|
}
|
|
940
|
-
}
|
|
941
|
-
return
|
|
942
|
-
}
|
|
943
|
-
generateId() {
|
|
944
|
-
return `jsx_${Math.random().toString(36).substr(2, 9)}`;
|
|
954
|
+
});
|
|
955
|
+
return result.length === 0 ? void 0 : result.length === 1 ? result[0] : result;
|
|
945
956
|
}
|
|
946
957
|
createPendingReference(vnode, promise, injector) {
|
|
947
958
|
const id = vnode.id;
|
|
@@ -968,13 +979,13 @@ var StreamRenderer = class {
|
|
|
968
979
|
if (this.processedIds.has(id))
|
|
969
980
|
return;
|
|
970
981
|
this.processedIds.add(id);
|
|
971
|
-
this.
|
|
982
|
+
this.queueResolvers.shift()?.({
|
|
972
983
|
...resolved,
|
|
973
984
|
action: "update"
|
|
974
985
|
});
|
|
975
986
|
this.pending.delete(id);
|
|
976
987
|
}).catch((e) => {
|
|
977
|
-
this.
|
|
988
|
+
this.queueResolvers.shift()?.({
|
|
978
989
|
$$typeof: ERROR_ELEMENT,
|
|
979
990
|
type: "error",
|
|
980
991
|
action: "error",
|
|
@@ -994,6 +1005,9 @@ var StreamRenderer = class {
|
|
|
994
1005
|
key: vnode.key ?? null
|
|
995
1006
|
};
|
|
996
1007
|
}
|
|
1008
|
+
generateId() {
|
|
1009
|
+
return `jsx_${++this.idCounter}`;
|
|
1010
|
+
}
|
|
997
1011
|
cleanup() {
|
|
998
1012
|
for (const { abortController } of this.pending.values()) {
|
|
999
1013
|
abortController.abort();
|
|
@@ -2054,7 +2068,7 @@ export {
|
|
|
2054
2068
|
Module,
|
|
2055
2069
|
NODE,
|
|
2056
2070
|
Navigate,
|
|
2057
|
-
|
|
2071
|
+
Node,
|
|
2058
2072
|
NodeFactory,
|
|
2059
2073
|
ORCA_CLIENT_COMPONENT,
|
|
2060
2074
|
ORCA_ELEMENT_TYPE,
|