Launch Week Day 3: Introducing Organization Notifications in Socket.Learn More
Socket
Book a DemoSign in
Socket

forgo

Package Overview
Dependencies
Maintainers
1
Versions
140
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

forgo - npm Package Compare versions

Comparing version
0.0.14
to
0.0.15
+6
-0
dist/index.d.ts

@@ -16,3 +16,8 @@ export declare type ForgoRef<T> = {

};
export declare type ForgoErrorArgs = {
element: ForgoElementArg;
error: any;
};
export declare type ForgoComponent<TProps extends ForgoElementProps> = {
error?: (props: TProps, args: ForgoErrorArgs) => ForgoElement<ForgoComponentCtor<TProps>, TProps>;
render: (props: TProps, args: ForgoRenderArgs) => ForgoElement<ForgoComponentCtor<TProps>, TProps>;

@@ -46,2 +51,3 @@ unmount?: () => void;

node: ChildNode;
boundary?: ForgoComponent<any> | undefined;
};

@@ -48,0 +54,0 @@ export declare function rerender(element: ForgoElementArg | undefined, props?: undefined, fullRerender?: boolean): void;

+43
-19

@@ -30,3 +30,3 @@ "use strict";

*/
function internalRender(forgoNode, node, pendingAttachStates, fullRerender) {
function internalRender(forgoNode, node, pendingAttachStates, fullRerender, boundary) {
// Just a string

@@ -38,3 +38,3 @@ if (!isForgoElement(forgoNode)) {

else if (typeof forgoNode.type === "string") {
return renderDOMElement(forgoNode, node, pendingAttachStates, fullRerender);
return renderDOMElement(forgoNode, node, pendingAttachStates, fullRerender, boundary);
}

@@ -44,3 +44,3 @@ // Custom Component.

else {
return renderCustomComponent(forgoNode, node, pendingAttachStates, fullRerender);
return renderCustomComponent(forgoNode, node, pendingAttachStates, fullRerender, boundary);
}

@@ -88,3 +88,3 @@ }

*/
function renderDOMElement(forgoElement, node, pendingAttachStates, fullRerender) {
function renderDOMElement(forgoElement, node, pendingAttachStates, fullRerender, boundary) {
var _a;

@@ -111,3 +111,3 @@ if (node) {

attachProps(forgoElement, nodeToBindTo, pendingAttachStates);
renderChildNodes(forgoElement, nodeToBindTo, fullRerender);
renderChildNodes(forgoElement, nodeToBindTo, fullRerender, boundary);
return { node: nodeToBindTo };

@@ -122,6 +122,21 @@ }

attachProps(forgoElement, newElement, pendingAttachStates);
renderChildNodes(forgoElement, newElement, fullRerender);
renderChildNodes(forgoElement, newElement, fullRerender, boundary);
return { node: newElement };
}
}
function boundaryFallback(node, props, args, statesToAttach, fullRerender, boundary, exec) {
try {
return exec();
}
catch (error) {
if (boundary && boundary.error) {
const errorArgs = Object.assign(Object.assign({}, args), { error });
const newForgoElement = boundary.error(props, errorArgs);
return internalRender(newForgoElement, node, statesToAttach, fullRerender, boundary);
}
else {
throw error;
}
}
}
/*

@@ -131,3 +146,3 @@ Render a Custom Component

*/
function renderCustomComponent(forgoElement, node, pendingAttachStates, fullRerender) {
function renderCustomComponent(forgoElement, node, pendingAttachStates, fullRerender, boundary) {
if (node) {

@@ -143,2 +158,3 @@ const state = getExistingForgoState(node);

const component = ctor(forgoElement.props);
boundary = component.error ? component : boundary;
// Create new component state

@@ -154,6 +170,8 @@ // ... and push it to pendingAttachStates

const statesToAttach = pendingAttachStates.concat(componentState);
// Create an element by rendering the component
const newForgoElement = component.render(forgoElement.props, args);
// Pass it on for rendering...
return internalRender(newForgoElement, node, statesToAttach, fullRerender);
return boundaryFallback(node, forgoElement.props, args, statesToAttach, fullRerender, boundary, () => {
// Create an element by rendering the component
const newForgoElement = component.render(forgoElement.props, args);
// Pass it on for rendering...
return internalRender(newForgoElement, node, statesToAttach, fullRerender, boundary);
});
}

@@ -172,7 +190,9 @@ // We have compatible state, and this is a rerender

const newForgoElement = savedComponentState.component.render(forgoElement.props, args);
// Pass it on for rendering...
return internalRender(newForgoElement, node, statesToAttach, fullRerender);
return boundaryFallback(node, forgoElement.props, args, statesToAttach, fullRerender, boundary, () => {
// Pass it on for rendering...
return internalRender(newForgoElement, node, statesToAttach, fullRerender, boundary);
});
}
else {
return { node };
return { node, boundary };
}

@@ -186,2 +206,3 @@ }

const component = ctor(forgoElement.props);
boundary = component.error ? component : boundary;
// We'll have to create a new component state

@@ -197,5 +218,8 @@ // ... and push it to pendingAttachStates

const statesToAttach = pendingAttachStates.concat(componentState);
const newForgoElement = component.render(forgoElement.props, args);
// We have no node to render to yet. So pass undefined for the node.
return internalRender(newForgoElement, undefined, statesToAttach, fullRerender);
return boundaryFallback(undefined, forgoElement.props, args, statesToAttach, fullRerender, boundary, () => {
const newForgoElement = component.render(forgoElement.props, args);
// Pass it on for rendering...
return internalRender(newForgoElement, undefined, statesToAttach, fullRerender, boundary);
});
}

@@ -216,3 +240,3 @@ }

*/
function renderChildNodes(forgoElement, parentElement, fullRerender) {
function renderChildNodes(forgoElement, parentElement, fullRerender, boundary) {
const { children: forgoChildrenObj } = forgoElement.props;

@@ -236,7 +260,7 @@ const childNodes = parentElement.childNodes;

childNodes[forgoChildIndex].nodeType === TEXT_NODE_TYPE) {
internalRender(stringOfPrimitiveNode(forgoChild), childNodes[forgoChildIndex], [], fullRerender);
internalRender(stringOfPrimitiveNode(forgoChild), childNodes[forgoChildIndex], [], fullRerender, boundary);
}
// But otherwise, don't pass a replacement node. Just insert instead.
else {
const { node } = internalRender(stringOfPrimitiveNode(forgoChild), undefined, [], fullRerender);
const { node } = internalRender(stringOfPrimitiveNode(forgoChild), undefined, [], fullRerender, boundary);
parentElement.insertBefore(node, childNodes[forgoChildIndex]);

@@ -243,0 +267,0 @@ }

@@ -1,1 +0,1 @@

{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
{
"name": "forgo",
"version": "0.0.14",
"version": "0.0.15",
"main": "./dist",

@@ -5,0 +5,0 @@ "devDependencies": {

@@ -132,2 +132,35 @@ # forgo

## Error handling
By defining the error() function, Forgo lets you catch errors in child components (at any level, and not necessarily immediate children).
```jsx
// Here's a component which throws an error.
function BadComponent() {
return {
render() {
throw new Error("Some error occurred :(");
},
};
}
// Parent can catch the error by defining the error() function.
function Parent(
props
) {
return {
render() {
return <div><BadComponent /></div>;
},
error(props, args) {
return (
<p>
Error in {props.name}: {args.error.message}
</p>
);
},
};
}
```
## Additional Rerender options

@@ -134,0 +167,0 @@

@@ -33,2 +33,7 @@ /*

export type ForgoErrorArgs = {
element: ForgoElementArg;
error: any;
};
/*

@@ -40,2 +45,6 @@ ForgoComponent contains three functions.

export type ForgoComponent<TProps extends ForgoElementProps> = {
error?: (
props: TProps,
args: ForgoErrorArgs
) => ForgoElement<ForgoComponentCtor<TProps>, TProps>;
render: (

@@ -148,4 +157,5 @@ props: TProps,

pendingAttachStates: NodeAttachedComponentState<any>[],
fullRerender: boolean
): { node: ChildNode } {
fullRerender: boolean,
boundary?: ForgoComponent<any>
): { node: ChildNode; boundary?: ForgoComponent<any> } {
// Just a string

@@ -166,3 +176,4 @@ if (!isForgoElement(forgoNode)) {

pendingAttachStates,
fullRerender
fullRerender,
boundary
);

@@ -177,3 +188,4 @@ }

pendingAttachStates,
fullRerender
fullRerender,
boundary
);

@@ -233,3 +245,4 @@ }

pendingAttachStates: NodeAttachedComponentState<any>[],
fullRerender: boolean
fullRerender: boolean,
boundary?: ForgoComponent<any>
): { node: ChildNode } {

@@ -260,3 +273,8 @@ if (node) {

renderChildNodes(forgoElement, nodeToBindTo as HTMLElement, fullRerender);
renderChildNodes(
forgoElement,
nodeToBindTo as HTMLElement,
fullRerender,
boundary
);
return { node: nodeToBindTo };

@@ -270,3 +288,3 @@ } else {

attachProps(forgoElement, newElement, pendingAttachStates);
renderChildNodes(forgoElement, newElement, fullRerender);
renderChildNodes(forgoElement, newElement, fullRerender, boundary);
return { node: newElement };

@@ -276,2 +294,30 @@ }

function boundaryFallback<T>(
node: ChildNode | undefined,
props: any,
args: ForgoRenderArgs,
statesToAttach: NodeAttachedComponentState<any>[],
fullRerender: boolean,
boundary: ForgoComponent<any> | undefined,
exec: () => T
) {
try {
return exec();
} catch (error) {
if (boundary && boundary.error) {
const errorArgs = { ...args, error };
const newForgoElement = boundary.error(props, errorArgs);
return internalRender(
newForgoElement,
node,
statesToAttach,
fullRerender,
boundary
);
} else {
throw error;
}
}
}
/*

@@ -285,4 +331,5 @@ Render a Custom Component

pendingAttachStates: NodeAttachedComponentState<any>[],
fullRerender: boolean
): { node: ChildNode } {
fullRerender: boolean,
boundary?: ForgoComponent<any>
): { node: ChildNode; boundary?: ForgoComponent<any> } {
if (node) {

@@ -301,2 +348,3 @@ const state = getExistingForgoState(node);

const component = ctor(forgoElement.props);
boundary = component.error ? component : boundary;

@@ -314,11 +362,22 @@ // Create new component state

// Create an element by rendering the component
const newForgoElement = component.render(forgoElement.props, args);
// Pass it on for rendering...
return internalRender(
newForgoElement,
return boundaryFallback(
node,
forgoElement.props,
args,
statesToAttach,
fullRerender
fullRerender,
boundary,
() => {
// Create an element by rendering the component
const newForgoElement = component.render(forgoElement.props, args);
// Pass it on for rendering...
return internalRender(
newForgoElement,
node,
statesToAttach,
fullRerender,
boundary
);
}
);

@@ -332,3 +391,3 @@ }

) {
const args = {
const args: ForgoRenderArgs = {
element: { componentIndex: pendingAttachStates.length },

@@ -350,11 +409,22 @@ };

// Pass it on for rendering...
return internalRender(
newForgoElement,
return boundaryFallback(
node,
forgoElement.props,
args,
statesToAttach,
fullRerender
fullRerender,
boundary,
() => {
// Pass it on for rendering...
return internalRender(
newForgoElement,
node,
statesToAttach,
fullRerender,
boundary
);
}
);
} else {
return { node };
return { node, boundary };
}

@@ -368,2 +438,3 @@ }

const component = ctor(forgoElement.props);
boundary = component.error ? component : boundary;

@@ -381,10 +452,22 @@ // We'll have to create a new component state

const statesToAttach = pendingAttachStates.concat(componentState);
const newForgoElement = component.render(forgoElement.props, args);
// We have no node to render to yet. So pass undefined for the node.
return internalRender(
newForgoElement,
return boundaryFallback(
undefined,
forgoElement.props,
args,
statesToAttach,
fullRerender
fullRerender,
boundary,
() => {
const newForgoElement = component.render(forgoElement.props, args);
// Pass it on for rendering...
return internalRender(
newForgoElement,
undefined,
statesToAttach,
fullRerender,
boundary
);
}
);

@@ -410,3 +493,4 @@ }

parentElement: HTMLElement,
fullRerender: boolean
fullRerender: boolean,
boundary?: ForgoComponent<any>
) {

@@ -445,3 +529,4 @@ const { children: forgoChildrenObj } = forgoElement.props;

[],
fullRerender
fullRerender,
boundary
);

@@ -455,3 +540,4 @@ }

[],
fullRerender
fullRerender,
boundary
);

@@ -458,0 +544,0 @@ parentElement.insertBefore(node, childNodes[forgoChildIndex]);