idb: suggest encoding improvements
This commit is contained in:
parent
28dce57f92
commit
3f4526847b
@ -14,6 +14,29 @@
|
|||||||
permissions and limitations under the License.
|
permissions and limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Encoding (new, compositional version):
|
||||||
|
*
|
||||||
|
* Encapsulate object that itself might contain a "$" field:
|
||||||
|
* { $: { E... } }
|
||||||
|
* Circular reference:
|
||||||
|
* { $: ["ref", uplevel, field...] }
|
||||||
|
* Date:
|
||||||
|
* { $: ["data"], val: datestr }
|
||||||
|
* Bigint:
|
||||||
|
* { $: ["bigint"], val: bigintstr }
|
||||||
|
* Array with special (non-number) attributes:
|
||||||
|
* { $: ["array"], val: arrayobj }
|
||||||
|
* Undefined field
|
||||||
|
* { $: "undef" }
|
||||||
|
*
|
||||||
|
* Legacy (top-level only), for backwards compatibility:
|
||||||
|
* { $types: [...] }
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Imports.
|
||||||
|
*/
|
||||||
import { DataCloneError } from "./errors.js";
|
import { DataCloneError } from "./errors.js";
|
||||||
|
|
||||||
const { toString: toStr } = {};
|
const { toString: toStr } = {};
|
||||||
@ -73,10 +96,6 @@ function isUserObject(val: any): boolean {
|
|||||||
return hasConstructorOf(val, Object) || isUserObject(proto);
|
return hasConstructorOf(val, Object) || isUserObject(proto);
|
||||||
}
|
}
|
||||||
|
|
||||||
function isRegExp(val: any): boolean {
|
|
||||||
return toStringTag(val) === "RegExp";
|
|
||||||
}
|
|
||||||
|
|
||||||
function copyBuffer(cur: any) {
|
function copyBuffer(cur: any) {
|
||||||
if (cur instanceof Buffer) {
|
if (cur instanceof Buffer) {
|
||||||
return Buffer.from(cur);
|
return Buffer.from(cur);
|
||||||
@ -334,8 +353,7 @@ export function structuredEncapsulate(val: any): any {
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function internalStructuredRevive(val: any): any {
|
export function applyLegacyTypeAnnotations(val: any): any {
|
||||||
val = JSON.parse(JSON.stringify(val));
|
|
||||||
if (val === null) {
|
if (val === null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@ -417,8 +435,14 @@ export function internalStructuredRevive(val: any): any {
|
|||||||
return outRoot;
|
return outRoot;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function internalStructuredRevive(val: any): any {
|
||||||
|
// FIXME: Do the newly specified, compositional encoding here.
|
||||||
|
val = JSON.parse(JSON.stringify(val));
|
||||||
|
}
|
||||||
|
|
||||||
export function structuredRevive(val: any): any {
|
export function structuredRevive(val: any): any {
|
||||||
return internalStructuredRevive(val);
|
const r = internalStructuredRevive(val);
|
||||||
|
return applyLegacyTypeAnnotations(r);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user