android: Update JSC and compat new api
This commit is contained in:
3
doric-js/lib/index.web.d.ts
vendored
3
doric-js/lib/index.web.d.ts
vendored
@@ -12,6 +12,9 @@ declare type WrappedValue = {
|
||||
declare function _arrayBufferToBase64(arrayBuffer: ArrayBuffer): string;
|
||||
declare function _base64ToArrayBuffer(v: string): ArrayBufferLike;
|
||||
declare function _wrappedValue(v: RawValue): WrappedValue;
|
||||
declare const cachedArrayBuffer: Map<string, ArrayBuffer>;
|
||||
declare let bufferId: number;
|
||||
declare function traverse(obj: object): void;
|
||||
declare function _rawValue(v: WrappedValue): RawValue;
|
||||
declare function __injectGlobalObject(name: string, args: string): void;
|
||||
declare function __injectGlobalFunction(name: string): void;
|
||||
|
@@ -72,12 +72,16 @@ function _wrappedValue(v) {
|
||||
};
|
||||
}
|
||||
else if (v instanceof Array) {
|
||||
v.forEach(e => {
|
||||
traverse(e);
|
||||
});
|
||||
return {
|
||||
type: "array",
|
||||
value: JSON.stringify(v)
|
||||
};
|
||||
}
|
||||
else {
|
||||
traverse(v);
|
||||
return {
|
||||
type: "object",
|
||||
value: JSON.stringify(v)
|
||||
@@ -90,6 +94,30 @@ function _wrappedValue(v) {
|
||||
};
|
||||
}
|
||||
}
|
||||
const cachedArrayBuffer = new Map;
|
||||
let bufferId = 0;
|
||||
function traverse(obj) {
|
||||
if (obj instanceof ArrayBuffer) {
|
||||
return;
|
||||
}
|
||||
if (obj instanceof Array) {
|
||||
obj.forEach(e => { traverse(e); });
|
||||
return;
|
||||
}
|
||||
Object.entries(obj).forEach(([k, v]) => {
|
||||
if (typeof v !== "object") {
|
||||
return;
|
||||
}
|
||||
if (v instanceof ArrayBuffer) {
|
||||
const id = `__buffer_${++bufferId}`;
|
||||
obj[k] = `__buffer_${_arrayBufferToBase64(v)}`;
|
||||
cachedArrayBuffer.set(id, v);
|
||||
}
|
||||
else {
|
||||
traverse(v);
|
||||
}
|
||||
});
|
||||
}
|
||||
function _rawValue(v) {
|
||||
switch (v.type) {
|
||||
case "number":
|
||||
|
9
doric-js/lib/src/util/resource.d.ts
vendored
9
doric-js/lib/src/util/resource.d.ts
vendored
@@ -50,3 +50,12 @@ export declare class MainBundleResource extends iOSResource {
|
||||
export declare class BundleResource extends iOSResource {
|
||||
constructor(bundleName: string, fileName: string);
|
||||
}
|
||||
export declare class ArrayBufferResource extends Resource {
|
||||
data: ArrayBuffer;
|
||||
constructor(data: ArrayBuffer);
|
||||
toModel(): {
|
||||
resId: string;
|
||||
type: string;
|
||||
identifier: string;
|
||||
};
|
||||
}
|
||||
|
@@ -71,3 +71,14 @@ export class BundleResource extends iOSResource {
|
||||
super("bundle", `${bundleName}://${fileName}`);
|
||||
}
|
||||
}
|
||||
export class ArrayBufferResource extends Resource {
|
||||
constructor(data) {
|
||||
super("arrayBuffer", uniqueId("buffer"));
|
||||
this.data = data;
|
||||
}
|
||||
toModel() {
|
||||
const ret = super.toModel();
|
||||
ret.data = this.data;
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user