orez 0.2.26 → 0.2.29
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/cf-do/worker.d.ts.map +1 -1
- package/dist/cf-do/worker.js +9 -1
- package/dist/cf-do/worker.js.map +1 -1
- package/dist/pg-proxy-do-backend.d.ts +2 -0
- package/dist/pg-proxy-do-backend.d.ts.map +1 -1
- package/dist/pg-proxy-do-backend.js +49 -7
- package/dist/pg-proxy-do-backend.js.map +1 -1
- package/dist/pg-sqlite-compiler/catalog/seed.d.ts +67 -0
- package/dist/pg-sqlite-compiler/catalog/seed.d.ts.map +1 -0
- package/dist/pg-sqlite-compiler/catalog/seed.js +436 -0
- package/dist/pg-sqlite-compiler/catalog/seed.js.map +1 -0
- package/dist/pg-sqlite-compiler/index.d.ts +12 -0
- package/dist/pg-sqlite-compiler/index.d.ts.map +1 -0
- package/dist/pg-sqlite-compiler/index.js +59 -0
- package/dist/pg-sqlite-compiler/index.js.map +1 -0
- package/dist/pg-sqlite-compiler/passes/ast-utils.d.ts +48 -0
- package/dist/pg-sqlite-compiler/passes/ast-utils.d.ts.map +1 -0
- package/dist/pg-sqlite-compiler/passes/ast-utils.js +93 -0
- package/dist/pg-sqlite-compiler/passes/ast-utils.js.map +1 -0
- package/dist/pg-sqlite-compiler/passes/catalog.d.ts +34 -0
- package/dist/pg-sqlite-compiler/passes/catalog.d.ts.map +1 -0
- package/dist/pg-sqlite-compiler/passes/catalog.js +30 -0
- package/dist/pg-sqlite-compiler/passes/catalog.js.map +1 -0
- package/dist/pg-sqlite-compiler/passes/datetime.d.ts +21 -0
- package/dist/pg-sqlite-compiler/passes/datetime.d.ts.map +1 -0
- package/dist/pg-sqlite-compiler/passes/datetime.js +53 -0
- package/dist/pg-sqlite-compiler/passes/datetime.js.map +1 -0
- package/dist/pg-sqlite-compiler/passes/index.d.ts +21 -0
- package/dist/pg-sqlite-compiler/passes/index.d.ts.map +1 -0
- package/dist/pg-sqlite-compiler/passes/index.js +39 -0
- package/dist/pg-sqlite-compiler/passes/index.js.map +1 -0
- package/dist/pg-sqlite-compiler/passes/types.d.ts +41 -0
- package/dist/pg-sqlite-compiler/passes/types.d.ts.map +1 -0
- package/dist/pg-sqlite-compiler/passes/types.js +103 -0
- package/dist/pg-sqlite-compiler/passes/types.js.map +1 -0
- package/dist/pg-sqlite-compiler/test/oracle.d.ts +34 -0
- package/dist/pg-sqlite-compiler/test/oracle.d.ts.map +1 -0
- package/dist/pg-sqlite-compiler/test/oracle.js +204 -0
- package/dist/pg-sqlite-compiler/test/oracle.js.map +1 -0
- package/dist/pg-sqlite-compiler/types.d.ts +55 -0
- package/dist/pg-sqlite-compiler/types.d.ts.map +1 -0
- package/dist/pg-sqlite-compiler/types.js +2 -0
- package/dist/pg-sqlite-compiler/types.js.map +1 -0
- package/package.json +8 -4
- package/src/admin/admin-data.test.ts +0 -348
- package/src/admin/http-proxy.ts +0 -252
- package/src/admin/log-store.ts +0 -192
- package/src/admin/server.ts +0 -471
- package/src/admin/ui.ts +0 -1322
- package/src/bench/proxy-throughput.bench.ts +0 -343
- package/src/bench/serial-mutations.bench.ts +0 -270
- package/src/browser.ts +0 -203
- package/src/cf-do/.wrangler/cache/cf.json +0 -1
- package/src/cf-do/.wrangler/state/v3/cache/miniflare-CacheObject/metadata.sqlite +0 -0
- package/src/cf-do/.wrangler/state/v3/cache/miniflare-CacheObject/metadata.sqlite-shm +0 -0
- package/src/cf-do/.wrangler/state/v3/cache/miniflare-CacheObject/metadata.sqlite-wal +0 -0
- package/src/cf-do/.wrangler/state/v3/do/zero-do-ZeroDO/0f0f3bdf0abda097eb6f1246db4657d9fc622081362d894d82c1a1ce067b05b6.sqlite +0 -0
- package/src/cf-do/.wrangler/state/v3/do/zero-do-ZeroDO/1ddd3a4a48a11b51658444f5458a1fb175194b1d5b6a5bda20ef3fe3205b900c.sqlite +0 -0
- package/src/cf-do/.wrangler/state/v3/do/zero-do-ZeroDO/204a39120310d37e972c5914cfd71ad55c151bdb9e8ed289a5f8c5b052dd60e4.sqlite +0 -0
- package/src/cf-do/.wrangler/state/v3/do/zero-do-ZeroDO/3835f242df9728adba3d127a238793fd054ed3e51df3f60749ee744c469bf2a2.sqlite +0 -0
- package/src/cf-do/.wrangler/state/v3/do/zero-do-ZeroDO/4aa9c80eb716cf55b8995ccf7afab0b36c683e6da07d7c37a3f9c570136036df.sqlite +0 -0
- package/src/cf-do/.wrangler/state/v3/do/zero-do-ZeroDO/533e2fd1d6ea46e7a9a0017916ef341802d438d72583462755f2c1f8225e9bf2.sqlite +0 -0
- package/src/cf-do/.wrangler/state/v3/do/zero-do-ZeroDO/5ffa1aced1225ecaeac6366f7586aa3de92761cdff8711d81fbd81f248076abd.sqlite +0 -0
- package/src/cf-do/.wrangler/state/v3/do/zero-do-ZeroDO/686c3a9f0d7e59ed2ab607efd4b76d779c97cafeb3818380033bf7c7eb86c819.sqlite +0 -0
- package/src/cf-do/.wrangler/state/v3/do/zero-do-ZeroDO/6e8214e8dcfadd0deb52d64e5e9ca85c6b329ace11193909845995396914c473.sqlite +0 -0
- package/src/cf-do/.wrangler/state/v3/do/zero-do-ZeroDO/78d9ec9ff873d3fe3507ff53c2a6f6dfc408b4268eb0db3f2a146c0678965366.sqlite +0 -0
- package/src/cf-do/.wrangler/state/v3/do/zero-do-ZeroDO/7eff9f0ed7e27ad0d3f9d923de0682fab1928591172c1ba336c5f79a134a5d85.sqlite +0 -0
- package/src/cf-do/.wrangler/state/v3/do/zero-do-ZeroDO/836cda5b995b25867d722ed4f4c2292167e80351a3c6038db626648eb247dd8b.sqlite +0 -0
- package/src/cf-do/.wrangler/state/v3/do/zero-do-ZeroDO/91ef63b112209ab30172763acd8a0935106c248f7f1bcae5545ce37a9f201551.sqlite +0 -0
- package/src/cf-do/.wrangler/state/v3/do/zero-do-ZeroDO/a66ea4293a5f5938bc6d116edfa2522bb85bc37aea3541fbc09c3b613b9b32c0.sqlite +0 -0
- package/src/cf-do/.wrangler/state/v3/do/zero-do-ZeroDO/ceb2ab26b80590840b65651deb6e948d3bf81565c6751f3a58752cf4bf4aecae.sqlite +0 -0
- package/src/cf-do/.wrangler/state/v3/do/zero-do-ZeroDO/metadata.sqlite +0 -0
- package/src/cf-do/.wrangler/state/v3/do/zero-do-ZeroDO/metadata.sqlite-shm +0 -0
- package/src/cf-do/.wrangler/state/v3/do/zero-do-ZeroDO/metadata.sqlite-wal +0 -0
- package/src/cf-do/ARCHITECTURE.md +0 -83
- package/src/cf-do/watermark.test.ts +0 -103
- package/src/cf-do/watermark.ts +0 -118
- package/src/cf-do/worker.ts +0 -1033
- package/src/cf-do/wrangler.toml +0 -11
- package/src/cf-pglite/README.md +0 -19
- package/src/change-tracking.ts +0 -25
- package/src/child-process.test.ts +0 -147
- package/src/child-process.ts +0 -90
- package/src/cli-entry.ts +0 -72
- package/src/cli.test.ts +0 -38
- package/src/cli.ts +0 -1214
- package/src/config.ts +0 -150
- package/src/do-sql-tracking.test.ts +0 -19
- package/src/do-sql-tracking.ts +0 -19
- package/src/index.ts +0 -1215
- package/src/integration/integration.test.ts +0 -517
- package/src/integration/native-binary.guard.test.ts +0 -13
- package/src/integration/native-startup.test.ts +0 -44
- package/src/integration/replication-latency.test.ts +0 -428
- package/src/integration/restore-live-stress.test.ts +0 -433
- package/src/integration/restore-reset.test.ts +0 -400
- package/src/integration/restore.test.ts +0 -274
- package/src/integration/test-permissions.ts +0 -147
- package/src/load-config.ts +0 -46
- package/src/log.ts +0 -96
- package/src/mutex.ts +0 -47
- package/src/pg-proxy-browser.singledb.test.ts +0 -233
- package/src/pg-proxy-browser.ts +0 -2022
- package/src/pg-proxy-do-backend.test.ts +0 -3890
- package/src/pg-proxy-do-backend.ts +0 -7157
- package/src/pg-proxy.ts +0 -1087
- package/src/pglite-ipc.test.ts +0 -116
- package/src/pglite-ipc.ts +0 -266
- package/src/pglite-manager.ts +0 -557
- package/src/pglite-web-proxy.test.ts +0 -57
- package/src/pglite-web-proxy.ts +0 -221
- package/src/pglite-web-worker.ts +0 -152
- package/src/pglite-worker-thread.ts +0 -253
- package/src/port.ts +0 -25
- package/src/process-title.ts +0 -9
- package/src/recovery.ts +0 -155
- package/src/replication/change-tracker.test.ts +0 -357
- package/src/replication/change-tracker.ts +0 -279
- package/src/replication/handler.test.ts +0 -511
- package/src/replication/handler.ts +0 -1190
- package/src/replication/pgoutput-encoder.test.ts +0 -697
- package/src/replication/pgoutput-encoder.ts +0 -373
- package/src/replication/tcp-replication.test.ts +0 -876
- package/src/replication/zero-compat.test.ts +0 -1150
- package/src/restore-stress.test.ts +0 -188
- package/src/s3-local.ts +0 -203
- package/src/shim/hooks.mjs +0 -120
- package/src/shim/register.mjs +0 -4
- package/src/sqlite-mode/apply-mode.ts +0 -224
- package/src/sqlite-mode/index.ts +0 -15
- package/src/sqlite-mode/native-binary.ts +0 -89
- package/src/sqlite-mode/package-resolve.ts +0 -17
- package/src/sqlite-mode/resolve-mode.ts +0 -80
- package/src/sqlite-mode/shim-template.ts +0 -159
- package/src/sqlite-mode/sqlite-mode.test.ts +0 -427
- package/src/sqlite-mode/types.ts +0 -30
- package/src/vite-plugin.ts +0 -67
- package/src/wasm-sqlite.test.ts +0 -537
- package/src/worker/browser-admin.ts +0 -52
- package/src/worker/browser-build-config.test.ts +0 -71
- package/src/worker/browser-build-config.ts +0 -109
- package/src/worker/browser-embed-admin.test.ts +0 -75
- package/src/worker/browser-embed.ts +0 -345
- package/src/worker/cf-patches.ts +0 -384
- package/src/worker/embed-integration.test.ts +0 -321
- package/src/worker/index.ts +0 -138
- package/src/worker/shims/fastify.test.ts +0 -255
- package/src/worker/shims/fastify.ts +0 -306
- package/src/worker/shims/http-service.test.ts +0 -355
- package/src/worker/shims/http-service.ts +0 -293
- package/src/worker/shims/node-stub.ts +0 -290
- package/src/worker/shims/oxfmt.ts +0 -3
- package/src/worker/shims/postgres-browser.ts +0 -59
- package/src/worker/shims/postgres-socket.test.ts +0 -576
- package/src/worker/shims/postgres-socket.ts +0 -310
- package/src/worker/shims/postgres.test.ts +0 -364
- package/src/worker/shims/postgres.ts +0 -1454
- package/src/worker/shims/sqlite-browser.test.ts +0 -233
- package/src/worker/shims/sqlite-browser.ts +0 -175
- package/src/worker/shims/sqlite.test.ts +0 -786
- package/src/worker/shims/sqlite.ts +0 -978
- package/src/worker/shims/stream-browser.ts +0 -15
- package/src/worker/shims/ws-browser.test.ts +0 -205
- package/src/worker/shims/ws-browser.ts +0 -248
- package/src/worker/shims/ws.test.ts +0 -288
- package/src/worker/shims/ws.ts +0 -467
- package/src/worker/shims/zero-process-env.ts +0 -11
- package/src/worker/types.ts +0 -75
- package/src/worker/worker-integration.test.ts +0 -223
- package/src/worker/worker.test.ts +0 -136
- package/src/worker/zero-cache-embed-cf.ts +0 -463
- package/src/worker/zero-cache-embed.ts +0 -277
package/src/config.ts
DELETED
|
@@ -1,150 +0,0 @@
|
|
|
1
|
-
import { availableParallelism } from 'node:os'
|
|
2
|
-
|
|
3
|
-
import type { PGliteOptions } from '@electric-sql/pglite'
|
|
4
|
-
|
|
5
|
-
export type LogLevel = 'error' | 'warn' | 'info' | 'debug'
|
|
6
|
-
|
|
7
|
-
// lifecycle hooks - can be shell command string (CLI) or callback (programmatic)
|
|
8
|
-
export type Hook = string | (() => void | Promise<void>)
|
|
9
|
-
|
|
10
|
-
export interface ZeroLiteConfig {
|
|
11
|
-
dataDir: string
|
|
12
|
-
pgPort: number
|
|
13
|
-
zeroPort: number
|
|
14
|
-
adminPort: number
|
|
15
|
-
pgUser: string
|
|
16
|
-
pgPassword: string
|
|
17
|
-
migrationsDir: string
|
|
18
|
-
seedFile: string
|
|
19
|
-
skipZeroCache: boolean
|
|
20
|
-
disableWasmSqlite: boolean
|
|
21
|
-
forceWasmSqlite: boolean
|
|
22
|
-
useWorkerThreads: boolean
|
|
23
|
-
singleDb: boolean
|
|
24
|
-
readReplicas: number
|
|
25
|
-
logLevel: LogLevel
|
|
26
|
-
pgliteOptions: Partial<PGliteOptions>
|
|
27
|
-
zeroPublications?: string
|
|
28
|
-
zeroMutateUrl?: string
|
|
29
|
-
zeroQueryUrl?: string
|
|
30
|
-
// storage controls
|
|
31
|
-
checkpointIntervalMs: number // WAL checkpoint interval (default: 5min)
|
|
32
|
-
maxLogFileSize: number // log rotation threshold in bytes (default: 2MB)
|
|
33
|
-
/** DO backend URL — replaces PGlite with Durable Object SQLite */
|
|
34
|
-
doBackendUrl?: string
|
|
35
|
-
disableDiskLogs: boolean // skip writing logs to disk (default: false)
|
|
36
|
-
// lifecycle hooks
|
|
37
|
-
onDbReady?: Hook // after db+proxy ready, before zero-cache
|
|
38
|
-
onHealthy?: Hook // after all services ready
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* user-facing config for orez.config.ts
|
|
43
|
-
*
|
|
44
|
-
* mirrors CLI flags in camelCase. all fields optional — defaults
|
|
45
|
-
* match the CLI defaults.
|
|
46
|
-
*/
|
|
47
|
-
export interface OrezConfig {
|
|
48
|
-
/** data directory (default: ".orez") */
|
|
49
|
-
dataDir?: string
|
|
50
|
-
/** postgresql proxy port (default: 6434) */
|
|
51
|
-
pgPort?: number
|
|
52
|
-
/** zero-cache port (default: 5849) */
|
|
53
|
-
zeroPort?: number
|
|
54
|
-
/** admin dashboard port (default: 6477) */
|
|
55
|
-
adminPort?: number
|
|
56
|
-
/** s3 server port (default: 9200) */
|
|
57
|
-
s3Port?: number
|
|
58
|
-
/** postgresql user (default: "user") */
|
|
59
|
-
pgUser?: string
|
|
60
|
-
/** postgresql password (default: "password") */
|
|
61
|
-
pgPassword?: string
|
|
62
|
-
/** migrations directory */
|
|
63
|
-
migrationsDir?: string
|
|
64
|
-
/** alias for migrationsDir */
|
|
65
|
-
migrations?: string
|
|
66
|
-
/** seed file path */
|
|
67
|
-
seedFile?: string
|
|
68
|
-
/** alias for seedFile */
|
|
69
|
-
seed?: string
|
|
70
|
-
/** run pglite + proxy only, skip zero-cache */
|
|
71
|
-
skipZeroCache?: boolean
|
|
72
|
-
/** also start a local s3-compatible server */
|
|
73
|
-
s3?: boolean
|
|
74
|
-
/** disable admin dashboard */
|
|
75
|
-
disableAdmin?: boolean
|
|
76
|
-
/** force native @rocicorp/zero-sqlite3 */
|
|
77
|
-
disableWasmSqlite?: boolean
|
|
78
|
-
/** force wasm bedrock-sqlite even if native is available */
|
|
79
|
-
forceWasmSqlite?: boolean
|
|
80
|
-
/** run pglite in-process instead of worker threads */
|
|
81
|
-
noWorkerThreads?: boolean
|
|
82
|
-
/** use worker threads for pglite (default: true) — inverse of noWorkerThreads */
|
|
83
|
-
useWorkerThreads?: boolean
|
|
84
|
-
/** single pglite instance for all databases */
|
|
85
|
-
singleDb?: boolean
|
|
86
|
-
/** log level: error, warn, info, debug (default: "warn") */
|
|
87
|
-
logLevel?: LogLevel
|
|
88
|
-
/** command to run after db+proxy ready, before zero-cache */
|
|
89
|
-
onDbReady?: Hook
|
|
90
|
-
/** command to run once all services healthy */
|
|
91
|
-
onHealthy?: Hook
|
|
92
|
-
/** number of pglite read replicas for postgres (default: auto, 0 to disable) */
|
|
93
|
-
readReplicas?: number
|
|
94
|
-
/** pglite options */
|
|
95
|
-
pgliteOptions?: Partial<PGliteOptions>
|
|
96
|
-
/** ZERO_APP_PUBLICATIONS — comma-separated publication names */
|
|
97
|
-
zeroPublications?: string
|
|
98
|
-
/** ZERO_MUTATE_URL — push/mutate endpoint for zero-cache */
|
|
99
|
-
zeroMutateUrl?: string
|
|
100
|
-
/** ZERO_QUERY_URL — pull/query endpoint for zero-cache */
|
|
101
|
-
zeroQueryUrl?: string
|
|
102
|
-
/** WAL checkpoint interval in ms (default: 300000 = 5min, 0 to disable) */
|
|
103
|
-
checkpointIntervalMs?: number
|
|
104
|
-
/** max log file size in bytes before rotation (default: 2097152 = 2MB) */
|
|
105
|
-
maxLogFileSize?: number
|
|
106
|
-
/** disable writing logs to disk (default: false) */
|
|
107
|
-
disableDiskLogs?: boolean
|
|
108
|
-
/** DO backend URL — replaces PGlite with Durable Object SQLite */
|
|
109
|
-
doBackendUrl?: string
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
/** type-safe helper for orez.config.ts */
|
|
113
|
-
export function defineConfig(config: OrezConfig): OrezConfig {
|
|
114
|
-
return config
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
export function getConfig(overrides: Partial<ZeroLiteConfig> = {}): ZeroLiteConfig {
|
|
118
|
-
return {
|
|
119
|
-
dataDir: overrides.dataDir || '.orez',
|
|
120
|
-
pgPort: overrides.pgPort || 6434,
|
|
121
|
-
zeroPort: overrides.zeroPort || 5849,
|
|
122
|
-
adminPort: overrides.adminPort || 0,
|
|
123
|
-
pgUser: overrides.pgUser || 'user',
|
|
124
|
-
pgPassword: overrides.pgPassword || 'password',
|
|
125
|
-
migrationsDir: overrides.migrationsDir || '',
|
|
126
|
-
seedFile: overrides.seedFile || 'src/database/seed.sql',
|
|
127
|
-
skipZeroCache: overrides.skipZeroCache || false,
|
|
128
|
-
disableWasmSqlite: overrides.disableWasmSqlite ?? false,
|
|
129
|
-
forceWasmSqlite: overrides.forceWasmSqlite ?? false,
|
|
130
|
-
useWorkerThreads: overrides.useWorkerThreads ?? true,
|
|
131
|
-
singleDb: overrides.singleDb ?? false,
|
|
132
|
-
// singleDb shares one pglite instance for all databases — replicas make no sense
|
|
133
|
-
readReplicas: overrides.readReplicas ?? 0,
|
|
134
|
-
logLevel: overrides.logLevel || (process.env.OREZ_LOG_LEVEL as LogLevel) || 'warn',
|
|
135
|
-
pgliteOptions: overrides.pgliteOptions || {},
|
|
136
|
-
zeroPublications: overrides.zeroPublications,
|
|
137
|
-
zeroMutateUrl: overrides.zeroMutateUrl,
|
|
138
|
-
zeroQueryUrl: overrides.zeroQueryUrl,
|
|
139
|
-
checkpointIntervalMs: overrides.checkpointIntervalMs ?? 5 * 60 * 1000,
|
|
140
|
-
maxLogFileSize: overrides.maxLogFileSize ?? 2 * 1024 * 1024,
|
|
141
|
-
disableDiskLogs: overrides.disableDiskLogs ?? false,
|
|
142
|
-
doBackendUrl: overrides.doBackendUrl ?? process.env.DO_BACKEND_URL,
|
|
143
|
-
onDbReady: overrides.onDbReady,
|
|
144
|
-
onHealthy: overrides.onHealthy,
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
export function getConnectionString(config: ZeroLiteConfig, dbName = 'postgres'): string {
|
|
149
|
-
return `postgresql://${config.pgUser}:${config.pgPassword}@127.0.0.1:${config.pgPort}/${dbName}`
|
|
150
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it } from 'vitest'
|
|
2
|
-
|
|
3
|
-
import { trackedChangeRow } from './do-sql-tracking.js'
|
|
4
|
-
|
|
5
|
-
describe('trackedChangeRow', () => {
|
|
6
|
-
it('keeps only table columns and strips internal returning expressions', () => {
|
|
7
|
-
expect(
|
|
8
|
-
trackedChangeRow(
|
|
9
|
-
{
|
|
10
|
-
id: 't1',
|
|
11
|
-
body: 'hello',
|
|
12
|
-
__orez_returning_1: 'HELLO',
|
|
13
|
-
extra: 'client-visible only',
|
|
14
|
-
},
|
|
15
|
-
{ rowColumns: ['id', 'body'] }
|
|
16
|
-
)
|
|
17
|
-
).toEqual({ id: 't1', body: 'hello' })
|
|
18
|
-
})
|
|
19
|
-
})
|
package/src/do-sql-tracking.ts
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
export const RETURNING_INTERNAL_PREFIX = '__orez_returning_'
|
|
2
|
-
|
|
3
|
-
export interface TrackedRowFilter {
|
|
4
|
-
rowColumns?: string[]
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
export function trackedChangeRow(
|
|
8
|
-
row: Record<string, unknown>,
|
|
9
|
-
track: TrackedRowFilter
|
|
10
|
-
): Record<string, unknown> {
|
|
11
|
-
const allowed = track.rowColumns ? new Set(track.rowColumns) : null
|
|
12
|
-
const out: Record<string, unknown> = {}
|
|
13
|
-
for (const [key, value] of Object.entries(row)) {
|
|
14
|
-
if (key.startsWith(RETURNING_INTERNAL_PREFIX)) continue
|
|
15
|
-
if (allowed && !allowed.has(key)) continue
|
|
16
|
-
out[key] = value
|
|
17
|
-
}
|
|
18
|
-
return out
|
|
19
|
-
}
|