Skip to content

Commit 7bd8379

Browse files
fix serialization root scope
1 parent efe72e8 commit 7bd8379

11 files changed

Lines changed: 131 additions & 44 deletions

src/sandbox/handleToNative/handleToNative.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -204,9 +204,9 @@ export const handleToNative = (ctx: QuickJSContext | QuickJSAsyncContext, handle
204204
handle,
205205
).consume(r => ctx.dump(r))
206206

207-
const serializer = getSerializer(constructorName)
208-
if (serializer) {
209-
const ret = serializer(ctx, handle)
207+
const serializer = getSerializer(constructorName)
208+
if (serializer) {
209+
const ret = serializer(ctx, handle, rootScope)
210210
if (ret) {
211211
return ret
212212
}
Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,16 @@
1-
import type { QuickJSAsyncContext, QuickJSContext, QuickJSHandle } from 'quickjs-emscripten-core'
1+
import type {
2+
QuickJSAsyncContext,
3+
QuickJSContext,
4+
QuickJSHandle,
5+
Scope,
6+
} from 'quickjs-emscripten-core'
27
import type { Serializer } from '../../../types/Serializer.js'
38

4-
export const serializeArrayBuffer: Serializer = (ctx: QuickJSContext | QuickJSAsyncContext, handle: QuickJSHandle) => {
9+
export const serializeArrayBuffer: Serializer = (
10+
ctx: QuickJSContext | QuickJSAsyncContext,
11+
handle: QuickJSHandle,
12+
_rootScope?: Scope,
13+
) => {
514
const b = ctx.getArrayBuffer(handle)
615
return Uint8Array.from(b.value)
716
}

src/sandbox/handleToNative/serializer/serializeBuffer.ts

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,22 @@
1-
import type { QuickJSAsyncContext, QuickJSContext, QuickJSHandle } from 'quickjs-emscripten-core'
1+
import type {
2+
QuickJSAsyncContext,
3+
QuickJSContext,
4+
QuickJSHandle,
5+
Scope,
6+
} from 'quickjs-emscripten-core'
27
import type { Serializer } from '../../../types/Serializer.js'
38
import { call } from '../../helper.js'
49
import { handleToNative } from '../handleToNative.js'
510

6-
export const serializeBuffer: Serializer = (ctx: QuickJSContext | QuickJSAsyncContext, handle: QuickJSHandle) => {
11+
export const serializeBuffer: Serializer = (
12+
ctx: QuickJSContext | QuickJSAsyncContext,
13+
handle: QuickJSHandle,
14+
rootScope?: Scope,
15+
) => {
716
let b: Buffer | undefined
817
ctx
9-
.newFunction('', value => {
10-
const v = handleToNative(ctx, value)
18+
.newFunction('', value => {
19+
const v = handleToNative(ctx, value, rootScope)
1120
b = Buffer.from(v)
1221
})
1322
.consume(f => {

src/sandbox/handleToNative/serializer/serializeDate.ts

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,22 @@
1-
import type { QuickJSAsyncContext, QuickJSContext, QuickJSHandle } from 'quickjs-emscripten-core'
1+
import type {
2+
QuickJSAsyncContext,
3+
QuickJSContext,
4+
QuickJSHandle,
5+
Scope,
6+
} from 'quickjs-emscripten-core'
27
import type { Serializer } from '../../../types/Serializer.js'
38
import { call } from '../../helper.js'
49
import { handleToNative } from '../handleToNative.js'
510

6-
export const serializeDate: Serializer = (ctx: QuickJSContext | QuickJSAsyncContext, handle: QuickJSHandle) => {
11+
export const serializeDate: Serializer = (
12+
ctx: QuickJSContext | QuickJSAsyncContext,
13+
handle: QuickJSHandle,
14+
rootScope?: Scope,
15+
) => {
716
const d = new Date()
817
ctx
9-
.newFunction('', value => {
10-
const v = handleToNative(ctx, value)
18+
.newFunction('', value => {
19+
const v = handleToNative(ctx, value, rootScope)
1120
d.setTime(v)
1221
})
1322
.consume(f => {

src/sandbox/handleToNative/serializer/serializeError.ts

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,24 @@
1-
import type { QuickJSAsyncContext, QuickJSContext, QuickJSHandle } from 'quickjs-emscripten-core'
1+
import type {
2+
QuickJSAsyncContext,
3+
QuickJSContext,
4+
QuickJSHandle,
5+
Scope,
6+
} from 'quickjs-emscripten-core'
27
import type { Serializer } from '../../../types/Serializer.js'
38
import { call } from '../../helper.js'
49
import { handleToNative } from '../handleToNative.js'
510

6-
export const serializeError: Serializer = (ctx: QuickJSContext | QuickJSAsyncContext, handle: QuickJSHandle) => {
11+
export const serializeError: Serializer = (
12+
ctx: QuickJSContext | QuickJSAsyncContext,
13+
handle: QuickJSHandle,
14+
rootScope?: Scope,
15+
) => {
716
const d: Error = new Error()
817

918
ctx
10-
.newFunction('serializeError', (value, name) => {
11-
const v = handleToNative(ctx, value)
12-
const n = handleToNative(ctx, name)
19+
.newFunction('serializeError', (value, name) => {
20+
const v = handleToNative(ctx, value, rootScope)
21+
const n = handleToNative(ctx, name, rootScope)
1322
Object.defineProperties(d, v)
1423
d.name = n
1524
})

src/sandbox/handleToNative/serializer/serializeHeaders.ts

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,23 @@
1-
import type { QuickJSAsyncContext, QuickJSContext, QuickJSHandle } from 'quickjs-emscripten-core'
1+
import type {
2+
QuickJSAsyncContext,
3+
QuickJSContext,
4+
QuickJSHandle,
5+
Scope,
6+
} from 'quickjs-emscripten-core'
27
import type { Serializer } from '../../../types/Serializer.js'
38
import { call } from '../../helper.js'
49
import { handleToNative } from '../handleToNative.js'
510

6-
export const serializeHeaders: Serializer = (ctx: QuickJSContext | QuickJSAsyncContext, handle: QuickJSHandle) => {
11+
export const serializeHeaders: Serializer = (
12+
ctx: QuickJSContext | QuickJSAsyncContext,
13+
handle: QuickJSHandle,
14+
rootScope?: Scope,
15+
) => {
716
const h = new Headers()
817
ctx
9-
.newFunction('', (value, name) => {
10-
const v = handleToNative(ctx, value)
11-
const n = handleToNative(ctx, name)
18+
.newFunction('', (value, name) => {
19+
const v = handleToNative(ctx, value, rootScope)
20+
const n = handleToNative(ctx, name, rootScope)
1221
h.append(n, v)
1322
})
1423
.consume(f => {

src/sandbox/handleToNative/serializer/serializeMap.ts

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,23 @@
1-
import type { QuickJSAsyncContext, QuickJSContext, QuickJSHandle } from 'quickjs-emscripten-core'
1+
import type {
2+
QuickJSAsyncContext,
3+
QuickJSContext,
4+
QuickJSHandle,
5+
Scope,
6+
} from 'quickjs-emscripten-core'
27
import type { Serializer } from '../../../types/Serializer.js'
38
import { call } from '../../helper.js'
49
import { handleToNative } from '../handleToNative.js'
510

6-
export const serializeMap: Serializer = (ctx: QuickJSContext | QuickJSAsyncContext, handle: QuickJSHandle) => {
11+
export const serializeMap: Serializer = (
12+
ctx: QuickJSContext | QuickJSAsyncContext,
13+
handle: QuickJSHandle,
14+
rootScope?: Scope,
15+
) => {
716
const m = new Map()
817
ctx
9-
.newFunction('', (key, value) => {
10-
const k = handleToNative(ctx, key)
11-
const v = handleToNative(ctx, value)
18+
.newFunction('', (key, value) => {
19+
const k = handleToNative(ctx, key, rootScope)
20+
const v = handleToNative(ctx, value, rootScope)
1221
m.set(k, v)
1322
})
1423
.consume(f => {

src/sandbox/handleToNative/serializer/serializeSet.ts

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,22 @@
1-
import type { QuickJSAsyncContext, QuickJSContext, QuickJSHandle } from 'quickjs-emscripten-core'
1+
import type {
2+
QuickJSAsyncContext,
3+
QuickJSContext,
4+
QuickJSHandle,
5+
Scope,
6+
} from 'quickjs-emscripten-core'
27
import type { Serializer } from '../../../types/Serializer.js'
38
import { call } from '../../helper.js'
49
import { handleToNative } from '../handleToNative.js'
510

6-
export const serializeSet: Serializer = (ctx: QuickJSContext | QuickJSAsyncContext, handle: QuickJSHandle) => {
11+
export const serializeSet: Serializer = (
12+
ctx: QuickJSContext | QuickJSAsyncContext,
13+
handle: QuickJSHandle,
14+
rootScope?: Scope,
15+
) => {
716
const s = new Set()
817
ctx
9-
.newFunction('', value => {
10-
const v = handleToNative(ctx, value)
18+
.newFunction('', value => {
19+
const v = handleToNative(ctx, value, rootScope)
1120
s.add(v)
1221
})
1322
.consume(f => {

src/sandbox/handleToNative/serializer/serializeURLSearchParams.ts

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,23 @@
1-
import type { QuickJSAsyncContext, QuickJSContext, QuickJSHandle } from 'quickjs-emscripten-core'
1+
import type {
2+
QuickJSAsyncContext,
3+
QuickJSContext,
4+
QuickJSHandle,
5+
Scope,
6+
} from 'quickjs-emscripten-core'
27
import type { Serializer } from '../../../types/Serializer.js'
38
import { call } from '../../helper.js'
49
import { handleToNative } from '../handleToNative.js'
510

611
export const serializeURLSearchParams: Serializer = (
7-
ctx: QuickJSContext | QuickJSAsyncContext,
8-
handle: QuickJSHandle,
12+
ctx: QuickJSContext | QuickJSAsyncContext,
13+
handle: QuickJSHandle,
14+
rootScope?: Scope,
915
) => {
1016
const h = new URLSearchParams()
1117
ctx
12-
.newFunction('', (value, name) => {
13-
const v = handleToNative(ctx, value)
14-
const n = handleToNative(ctx, name)
18+
.newFunction('', (value, name) => {
19+
const v = handleToNative(ctx, value, rootScope)
20+
const n = handleToNative(ctx, name, rootScope)
1521
h.append(n, v)
1622
})
1723
.consume(f => {

src/sandbox/handleToNative/serializer/serializeUrl.ts

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,22 @@
1-
import type { QuickJSAsyncContext, QuickJSContext, QuickJSHandle } from 'quickjs-emscripten-core'
1+
import type {
2+
QuickJSAsyncContext,
3+
QuickJSContext,
4+
QuickJSHandle,
5+
Scope,
6+
} from 'quickjs-emscripten-core'
27
import type { Serializer } from '../../../types/Serializer.js'
38
import { call } from '../../helper.js'
49
import { handleToNative } from '../handleToNative.js'
510

6-
export const serializeUrl: Serializer = (ctx: QuickJSContext | QuickJSAsyncContext, handle: QuickJSHandle) => {
11+
export const serializeUrl: Serializer = (
12+
ctx: QuickJSContext | QuickJSAsyncContext,
13+
handle: QuickJSHandle,
14+
rootScope?: Scope,
15+
) => {
716
let d: URL | undefined
817
ctx
9-
.newFunction('', value => {
10-
const v = handleToNative(ctx, value)
18+
.newFunction('', value => {
19+
const v = handleToNative(ctx, value, rootScope)
1120
d = new URL(v)
1221
})
1322
.consume(f => {

0 commit comments

Comments
 (0)