@g9tm/lynxcontrols-native 0.0.0-stage → 1.4.0

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.
Files changed (70) hide show
  1. package/README.md +85 -2
  2. package/android/build.gradle.kts +45 -0
  3. package/android/consumer-rules.pro +3 -0
  4. package/android/src/main/AndroidManifest.xml +5 -0
  5. package/android/src/main/java/com/g9lynx/g9native/G9Bridge.kt +67 -0
  6. package/android/src/main/java/com/g9lynx/g9native/G9HostModule.kt +159 -0
  7. package/android/src/main/java/com/g9lynx/g9native/G9SqliteModule.kt +49 -0
  8. package/android/src/main/java/com/g9lynx/g9native/generated/G9HostModuleSpec.java +48 -0
  9. package/android/src/main/java/com/g9lynx/g9native/generated/G9SqliteModuleSpec.java +41 -0
  10. package/android/src/main/java/com/g9lynx/g9native/host/core/G9PreferencesCore.kt +100 -0
  11. package/android/src/main/java/com/g9lynx/g9native/sqlite/androidx/AndroidxSqlEngine.kt +88 -0
  12. package/android/src/main/java/com/g9lynx/g9native/sqlite/core/G9SqlEngine.kt +61 -0
  13. package/android/src/main/java/com/g9lynx/g9native/sqlite/core/G9SqliteCore.kt +260 -0
  14. package/android/src/main/java/com/g9lynx/g9native/sqlite/core/G9SqliteService.kt +131 -0
  15. package/android/src/main/java/com/g9lynx/g9native/sqlite/core/G9SqliteTransport.kt +125 -0
  16. package/android/src/main/java/com/g9lynx/g9native/sqlite/core/G9SqliteValues.kt +71 -0
  17. package/android/src/main/java/com/g9lynx/g9native/video/G9VideoUI.kt +214 -0
  18. package/android/src/main/java/com/g9lynx/g9native/video/core/G9VideoCore.kt +67 -0
  19. package/dist/.tsbuildinfo +1 -0
  20. package/dist/driver.d.ts +20 -0
  21. package/dist/driver.d.ts.map +1 -0
  22. package/dist/driver.js +159 -0
  23. package/dist/driver.js.map +1 -0
  24. package/dist/index.d.ts +5 -0
  25. package/dist/index.d.ts.map +1 -0
  26. package/dist/index.js +3 -0
  27. package/dist/media.d.ts +60 -0
  28. package/dist/media.d.ts.map +1 -0
  29. package/dist/media.jsx +119 -0
  30. package/dist/media.jsx.map +1 -0
  31. package/dist/protocol.d.ts +115 -0
  32. package/dist/protocol.d.ts.map +1 -0
  33. package/dist/protocol.js +1 -0
  34. package/dist/services.d.ts +36 -0
  35. package/dist/services.d.ts.map +1 -0
  36. package/dist/services.js +111 -0
  37. package/dist/services.js.map +1 -0
  38. package/dist/transport.d.ts +10 -0
  39. package/dist/transport.d.ts.map +1 -0
  40. package/dist/transport.js +77 -0
  41. package/dist/transport.js.map +1 -0
  42. package/generated/G9HostModule.ts +71 -0
  43. package/generated/G9SqliteModule.ts +68 -0
  44. package/ios/Tests/G9NativeTestSuite.h +25 -0
  45. package/ios/Tests/G9NativeTestSuite.m +560 -0
  46. package/ios/Tests/G9NativeTests.m +52 -0
  47. package/ios/g9lynx-native.podspec +29 -0
  48. package/ios/src/G9HostModule.h +14 -0
  49. package/ios/src/G9HostModule.m +121 -0
  50. package/ios/src/G9SqliteModule.h +14 -0
  51. package/ios/src/G9SqliteModule.m +167 -0
  52. package/ios/src/G9VideoUI.h +21 -0
  53. package/ios/src/G9VideoUI.m +250 -0
  54. package/ios/src/core/G9HostPaths.h +20 -0
  55. package/ios/src/core/G9HostPaths.m +23 -0
  56. package/ios/src/core/G9PreferencesCore.h +43 -0
  57. package/ios/src/core/G9PreferencesCore.m +114 -0
  58. package/ios/src/core/G9SqliteCore.h +62 -0
  59. package/ios/src/core/G9SqliteCore.m +497 -0
  60. package/ios/src/core/G9SqliteTransport.h +16 -0
  61. package/ios/src/core/G9SqliteTransport.m +85 -0
  62. package/ios/src/core/G9VideoCore.h +26 -0
  63. package/ios/src/core/G9VideoCore.m +37 -0
  64. package/ios/src/generated/G9HostModuleSpec.h +23 -0
  65. package/ios/src/generated/G9HostModuleSpec.m +2 -0
  66. package/ios/src/generated/G9SqliteModuleSpec.h +20 -0
  67. package/ios/src/generated/G9SqliteModuleSpec.m +2 -0
  68. package/lynx.lib.json +12 -0
  69. package/package.json +49 -4
  70. package/types/platform-native-module.d.ts +46 -0
@@ -0,0 +1,71 @@
1
+ package com.g9lynx.g9native.sqlite.core
2
+
3
+ /** A 64-bit integer outside ±(2^53−1), carried as its decimal text (`{ int64: "…" }` in JS). */
4
+ data class G9Int64(val decimal: String)
5
+
6
+ /** JS `undefined` inside a parameter list (marshalled as `{ undefined: true }`): rejected with `misuse`, as in Node. */
7
+ object G9Undefined
8
+
9
+ /** A G9 error as data: the fields of `G9SqliteError` (plan/specs/05 §3). */
10
+ class G9SqliteException(
11
+ val code: String,
12
+ message: String,
13
+ val sqliteCode: Int? = null,
14
+ val sql: String? = null,
15
+ val completedStatements: Int? = null,
16
+ ) : RuntimeException(message) {
17
+ /** The same error with the statement context added where it is still missing. */
18
+ fun withContext(sql: String?, completed: Int?): G9SqliteException =
19
+ G9SqliteException(code, message ?: code, sqliteCode, this.sql ?: sql, completedStatements ?: completed)
20
+ }
21
+
22
+ /** SQLite primary result code → G9 error code (mirrors `sqliteErrorCodeFor` in @g9tm/lynxcontrols-sqlite). */
23
+ fun g9ErrorCode(resultCode: Int): String =
24
+ when (resultCode and 0xff) {
25
+ 5 -> "busy"
26
+ 6 -> "locked"
27
+ 19 -> "constraint"
28
+ 11, 26 -> "corrupt"
29
+ 8 -> "readonly"
30
+ 13 -> "full"
31
+ 9 -> "interrupted"
32
+ 21 -> "misuse"
33
+ 14 -> "not-found"
34
+ else -> "other"
35
+ }
36
+
37
+ /** Any throwable → a [G9SqliteException] (engine errors keep their code; anything else is `misuse`). */
38
+ fun toG9Error(error: Throwable, sql: String? = null, completed: Int? = null): G9SqliteException =
39
+ when (error) {
40
+ is G9SqliteException -> error.withContext(sql, completed)
41
+ is G9SqlEngineException ->
42
+ G9SqliteException(g9ErrorCode(error.resultCode), error.message ?: "SQLite error", error.resultCode, sql, completed)
43
+ else -> G9SqliteException("misuse", error.message ?: error.toString(), null, sql, completed)
44
+ }
45
+
46
+ internal fun misuse(message: String, sql: String? = null): Nothing = throw G9SqliteException("misuse", message, sql = sql)
47
+
48
+ /** Largest integer JS represents exactly (2^53 − 1). */
49
+ const val MAX_SAFE_INTEGER = 9007199254740991L
50
+
51
+ /**
52
+ * A value from the JS bridge → a bindable value. The bridge delivers numbers as `Double` (sometimes `Int`/`Long`),
53
+ * strings, `ByteArray` (ArrayBuffer), `Map` (`{ int64 }` / `{ undefined: true }`) and `null`.
54
+ */
55
+ fun fromBridge(value: Any?): Any? =
56
+ when (value) {
57
+ null, is String, is ByteArray, is Double, is Long -> value
58
+ is Int -> value.toLong()
59
+ is Float -> value.toDouble()
60
+ is Number -> value.toDouble()
61
+ is Map<*, *> ->
62
+ when {
63
+ value["int64"] is String -> G9Int64(value["int64"] as String)
64
+ value["undefined"] == true -> G9Undefined
65
+ else -> value
66
+ }
67
+ else -> value
68
+ }
69
+
70
+ /** A result value → what the bridge carries: safe integers as `Double`, others as [G9Int64]. */
71
+ fun toBridgeNumber(value: Long): Any = if (value in -MAX_SAFE_INTEGER..MAX_SAFE_INTEGER) value.toDouble() else G9Int64(value.toString())
@@ -0,0 +1,214 @@
1
+ package com.g9lynx.g9native.video
2
+
3
+ import android.content.Context
4
+ import android.graphics.Matrix
5
+ import android.os.Handler
6
+ import android.os.Looper
7
+ import android.view.TextureView
8
+ import android.widget.FrameLayout
9
+ import androidx.media3.common.MediaItem
10
+ import androidx.media3.common.PlaybackException
11
+ import androidx.media3.common.Player
12
+ import androidx.media3.common.VideoSize
13
+ import androidx.media3.exoplayer.ExoPlayer
14
+ import com.g9lynx.g9native.video.core.G9VideoLoopTracker
15
+ import com.g9lynx.g9native.video.core.G9VideoMath
16
+ import com.lynx.tasm.behavior.Behavior
17
+ import com.lynx.tasm.behavior.LynxContext
18
+ import com.lynx.tasm.behavior.LynxProp
19
+ import com.lynx.tasm.behavior.ui.LynxUI
20
+ import com.lynx.tasm.event.LynxDetailEvent
21
+
22
+ /**
23
+ * The `<g9-video>` element on Android (plan/specs/06 §7): one Media3 ExoPlayer drawing into a TextureView (a
24
+ * SurfaceView would ignore the opacity fades the intro carousel animates), muted looping playback with MAUI's
25
+ * `Aspect.AspectFill` look. Props: `src` (`asset:///…`, `file://…`, `http(s)://…`), `paused` (default true), `loop`,
26
+ * `muted` (default true), `start-seconds` (one best-effort seek), `near-end-seconds`, `object-fit` (`cover` | `contain`).
27
+ * Events: `ready` (first frame rendered), `nearend` `{ seconds }`, `looped`, `error` `{ code, message }`. The player is
28
+ * released when the element is destroyed or its `src` changes. Register it with {@link G9VideoBehaviors}.
29
+ */
30
+ class G9VideoUI(context: LynxContext) : LynxUI<G9VideoView>(context) {
31
+ private val main = Handler(Looper.getMainLooper())
32
+ private var player: ExoPlayer? = null
33
+ private var src: String? = null
34
+ private var preparedSrc: String? = null
35
+ private var paused = true
36
+ private var loop = true
37
+ private var muted = true
38
+ private var startSeconds = 0.0
39
+ private var startApplied = false
40
+ private var cover = true
41
+ private val tracker = G9VideoLoopTracker()
42
+
43
+ private val poll =
44
+ object : Runnable {
45
+ override fun run() {
46
+ val p = player ?: return
47
+ tracker.progress(p.currentPosition, p.duration)?.let { send("nearend", mapOf("seconds" to it)) }
48
+ if (p.isPlaying) main.postDelayed(this, POLL_MS)
49
+ }
50
+ }
51
+
52
+ private val listener =
53
+ object : Player.Listener {
54
+ override fun onRenderedFirstFrame() = send("ready")
55
+
56
+ override fun onPlayerError(error: PlaybackException) =
57
+ send("error", mapOf("code" to error.errorCodeName, "message" to (error.message ?: error.errorCodeName)))
58
+
59
+ override fun onPositionDiscontinuity(old: Player.PositionInfo, new: Player.PositionInfo, reason: Int) {
60
+ if (reason == Player.DISCONTINUITY_REASON_AUTO_TRANSITION) {
61
+ tracker.looped()
62
+ send("looped")
63
+ }
64
+ }
65
+
66
+ override fun onPlaybackStateChanged(state: Int) {
67
+ val p = player ?: return
68
+ if (state == Player.STATE_READY && !startApplied) {
69
+ startApplied = true
70
+ G9VideoMath.startPositionMs(startSeconds, p.duration)?.let { p.seekTo(it) }
71
+ }
72
+ }
73
+
74
+ override fun onIsPlayingChanged(isPlaying: Boolean) {
75
+ main.removeCallbacks(poll)
76
+ if (isPlaying) main.post(poll)
77
+ }
78
+
79
+ override fun onVideoSizeChanged(size: VideoSize) =
80
+ mView.setVideoSize(size.width * size.pixelWidthHeightRatio, size.height.toFloat())
81
+ }
82
+
83
+ override fun createView(context: Context): G9VideoView = G9VideoView(context)
84
+
85
+ @LynxProp(name = "src")
86
+ fun setSrc(value: String?) {
87
+ src = value?.takeIf { it.isNotBlank() }
88
+ }
89
+
90
+ @LynxProp(name = "paused", defaultBoolean = true)
91
+ fun setPaused(value: Boolean) {
92
+ paused = value
93
+ }
94
+
95
+ @LynxProp(name = "loop", defaultBoolean = true)
96
+ fun setLoop(value: Boolean) {
97
+ loop = value
98
+ }
99
+
100
+ @LynxProp(name = "muted", defaultBoolean = true)
101
+ fun setMuted(value: Boolean) {
102
+ muted = value
103
+ }
104
+
105
+ @LynxProp(name = "start-seconds")
106
+ fun setStartSeconds(value: Double) {
107
+ startSeconds = value
108
+ }
109
+
110
+ @LynxProp(name = "near-end-seconds")
111
+ fun setNearEndSeconds(value: Double) {
112
+ tracker.nearEndSeconds = value
113
+ }
114
+
115
+ @LynxProp(name = "object-fit")
116
+ fun setObjectFit(value: String?) {
117
+ cover = value != "contain"
118
+ }
119
+
120
+ override fun onPropsUpdated() {
121
+ super.onPropsUpdated()
122
+ mView.cover = cover
123
+ if (src != preparedSrc) prepare()
124
+ player?.let {
125
+ it.repeatMode = if (loop) Player.REPEAT_MODE_ONE else Player.REPEAT_MODE_OFF
126
+ it.volume = if (muted) 0f else 1f
127
+ it.playWhenReady = !paused
128
+ }
129
+ }
130
+
131
+ private fun prepare() {
132
+ release()
133
+ preparedSrc = src
134
+ val uri = src ?: return
135
+ startApplied = false
136
+ tracker.looped()
137
+ val p = ExoPlayer.Builder(lynxContext).build()
138
+ player = p
139
+ p.addListener(listener)
140
+ p.setVideoTextureView(mView.texture)
141
+ p.setMediaItem(MediaItem.fromUri(uri))
142
+ p.prepare()
143
+ }
144
+
145
+ private fun release() {
146
+ main.removeCallbacks(poll)
147
+ player?.let {
148
+ it.removeListener(listener)
149
+ it.release()
150
+ }
151
+ player = null
152
+ preparedSrc = null
153
+ }
154
+
155
+ override fun destroy() {
156
+ release()
157
+ super.destroy()
158
+ }
159
+
160
+ private fun send(name: String, detail: Map<String, Any> = emptyMap()) {
161
+ lynxContext.eventEmitter.sendCustomEvent(LynxDetailEvent(sign, name, detail))
162
+ }
163
+
164
+ private companion object {
165
+ const val POLL_MS = 100L
166
+ }
167
+ }
168
+
169
+ /** The element's view: a TextureView scaled to `cover` (crop) or `contain` (letterbox) the video frame. */
170
+ class G9VideoView(context: Context) : FrameLayout(context) {
171
+ val texture = TextureView(context)
172
+ private var videoW = 0f
173
+ private var videoH = 0f
174
+
175
+ var cover = true
176
+ set(value) {
177
+ field = value
178
+ updateTransform()
179
+ }
180
+
181
+ init {
182
+ clipChildren = true
183
+ addView(texture, LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT))
184
+ }
185
+
186
+ fun setVideoSize(width: Float, height: Float) {
187
+ videoW = width
188
+ videoH = height
189
+ updateTransform()
190
+ }
191
+
192
+ override fun onSizeChanged(w: Int, h: Int, oldw: Int, oldh: Int) {
193
+ super.onSizeChanged(w, h, oldw, oldh)
194
+ updateTransform()
195
+ }
196
+
197
+ private fun updateTransform() {
198
+ val (sx, sy) = G9VideoMath.fitScale(width.toFloat(), height.toFloat(), videoW, videoH, cover)
199
+ texture.setTransform(Matrix().apply { setScale(sx, sy, width / 2f, height / 2f) })
200
+ }
201
+ }
202
+
203
+ /**
204
+ * The behaviours `@g9tm/lynxcontrols-native` adds to a LynxView: `<g9-video>`. Add them with the host's own XElements:
205
+ * `LynxViewBuilder().addBehaviors(hostBehaviors + G9VideoBehaviors.create())`.
206
+ */
207
+ object G9VideoBehaviors {
208
+ fun create(): List<Behavior> =
209
+ listOf(
210
+ object : Behavior("g9-video", false, false, false) {
211
+ override fun createUI(context: LynxContext): LynxUI<*> = G9VideoUI(context)
212
+ },
213
+ )
214
+ }
@@ -0,0 +1,67 @@
1
+ package com.g9lynx.g9native.video.core
2
+
3
+ /**
4
+ * The platform-free decisions of `<g9-video>` (plan/specs/06 §7, the intro carousel's media contract): when a looping
5
+ * video reports `nearend` and `looped`, where the one-time start seek lands, and how the frame is scaled to fill or
6
+ * fit the element. Pure Kotlin so the JVM suite runs it; the Media3 element only feeds it positions.
7
+ */
8
+ class G9VideoLoopTracker(nearEndSeconds: Double = 0.0) {
9
+ /** How early `nearend` fires before the end of each loop; `<= 0` turns it off. */
10
+ var nearEndSeconds: Double = nearEndSeconds
11
+ set(value) {
12
+ field = if (value.isFinite() && value > 0) value else 0.0
13
+ }
14
+
15
+ private var nearEndSent = false
16
+
17
+ init {
18
+ this.nearEndSeconds = nearEndSeconds
19
+ }
20
+
21
+ /**
22
+ * Feeds the playback position; returns the seconds left when `nearend` should fire now (once per loop), else null.
23
+ * Unknown durations (`<= 0`, Media3 `C.TIME_UNSET` is negative) never fire.
24
+ */
25
+ fun progress(positionMs: Long, durationMs: Long): Double? {
26
+ if (nearEndSent || nearEndSeconds <= 0 || durationMs <= 0 || positionMs < 0) return null
27
+ val left = (durationMs - positionMs) / 1000.0
28
+ if (left < 0 || left > nearEndSeconds) return null
29
+ nearEndSent = true
30
+ return left
31
+ }
32
+
33
+ /** The video restarted from the beginning: the next loop may report `nearend` again. */
34
+ fun looped() {
35
+ nearEndSent = false
36
+ }
37
+ }
38
+
39
+ object G9VideoMath {
40
+ /**
41
+ * The one-time start seek (MAUI `InitialVideoStartSeconds`, best effort): `startSeconds` in ms, or null when there
42
+ * is nothing to seek or it would land at or past the end (the video then starts at 0).
43
+ */
44
+ fun startPositionMs(startSeconds: Double, durationMs: Long): Long? {
45
+ if (!startSeconds.isFinite() || startSeconds <= 0) return null
46
+ val target = (startSeconds * 1000).toLong()
47
+ if (durationMs > 0 && target >= durationMs) return null
48
+ return target
49
+ }
50
+
51
+ /**
52
+ * The x/y scale that turns a frame stretched over the whole view (what a TextureView draws) into `cover` (fill and
53
+ * crop, MAUI `Aspect.AspectFill`) or `contain` (letterbox). `(1, 1)` while either size is unknown.
54
+ */
55
+ fun fitScale(viewW: Float, viewH: Float, videoW: Float, videoH: Float, cover: Boolean): Pair<Float, Float> {
56
+ if (viewW <= 0 || viewH <= 0 || videoW <= 0 || videoH <= 0) return 1f to 1f
57
+ val viewAspect = viewW / viewH
58
+ val videoAspect = videoW / videoH
59
+ val wider = videoAspect > viewAspect
60
+ return when {
61
+ cover && wider -> (videoAspect / viewAspect) to 1f
62
+ cover -> 1f to (viewAspect / videoAspect)
63
+ wider -> 1f to (viewAspect / videoAspect)
64
+ else -> (videoAspect / viewAspect) to 1f
65
+ }
66
+ }
67
+ }
@@ -0,0 +1 @@
1
+ {"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/@types/react/global.d.ts","../../../node_modules/@types/react/node_modules/csstype/index.d.ts","../../../node_modules/@types/prop-types/index.d.ts","../../../node_modules/@types/react/index.d.ts","../../../node_modules/@lynx-js/types/types/background-thread/animation.d.ts","../../../node_modules/csstype/index.d.ts","../../../node_modules/@lynx-js/types/types/common/csstype.d.ts","../../../node_modules/@lynx-js/types/types/main-thread/animation.d.ts","../../../node_modules/@lynx-js/types/types/main-thread/element.d.ts","../../../node_modules/@lynx-js/types/types/common/events.d.ts","../../../node_modules/@lynx-js/types/types/common/system-info.d.ts","../../../node_modules/@lynx-js/types/types/common/performance.d.ts","../../../node_modules/@lynx-js/types/types/main-thread/lynx.d.ts","../../../node_modules/@lynx-js/types/types/main-thread/events.d.ts","../../../node_modules/@lynx-js/types/types/main-thread/index.d.ts","../../../node_modules/@lynx-js/types/types/common/lynx.d.ts","../../../node_modules/@lynx-js/types/types/common/global.d.ts","../../../node_modules/@lynx-js/types/types/common/props.d.ts","../../../node_modules/@lynx-js/types/types/common/element/component.d.ts","../../../node_modules/@lynx-js/types/types/common/element/filter-image.d.ts","../../../node_modules/@lynx-js/types/types/common/element/image.d.ts","../../../node_modules/@lynx-js/types/types/common/element/common.d.ts","../../../node_modules/@lynx-js/types/types/common/element/list.d.ts","../../../node_modules/@lynx-js/types/types/common/element/list-item.d.ts","../../../node_modules/@lynx-js/types/types/common/element/page.d.ts","../../../node_modules/@lynx-js/types/types/common/element/scroll-view.d.ts","../../../node_modules/@lynx-js/types/types/common/element/text.d.ts","../../../node_modules/@lynx-js/types/types/common/element/view.d.ts","../../../node_modules/@lynx-js/types/types/common/element/input.d.ts","../../../node_modules/@lynx-js/types/types/common/element/textarea.d.ts","../../../node_modules/@lynx-js/types/types/common/element/title-bar-view.d.ts","../../../node_modules/@lynx-js/types/types/common/element/svg.d.ts","../../../node_modules/@lynx-js/types/types/common/element/refresh.d.ts","../../../node_modules/@lynx-js/types/types/common/element/scroll-coordinator.d.ts","../../../node_modules/@lynx-js/types/types/common/element/viewpager.d.ts","../../../node_modules/@lynx-js/types/types/common/element/blur-view.d.ts","../../../node_modules/@lynx-js/types/types/common/element/webview.d.ts","../../../node_modules/@lynx-js/types/types/common/element/markdown.d.ts","../../../node_modules/@lynx-js/types/types/common/element/video.d.ts","../../../node_modules/@lynx-js/types/types/background-thread/lynx-performance-entry.d.ts","../../../node_modules/@lynx-js/types/types/common/element/frame.d.ts","../../../node_modules/@lynx-js/types/types/common/element/overlay.d.ts","../../../node_modules/@lynx-js/types/types/common/element/element.d.ts","../../../node_modules/@lynx-js/types/types/common/element/methods.d.ts","../../../node_modules/@lynx-js/types/types/common/element/attributes.d.ts","../../../node_modules/@lynx-js/types/types/common/element/index.d.ts","../../../node_modules/@lynx-js/types/types/common/console.d.ts","../../../node_modules/@lynx-js/types/types/common/index.d.ts","../../../node_modules/@lynx-js/types/types/background-thread/event.d.ts","../../../node_modules/@lynx-js/types/types/background-thread/nodes-ref.d.ts","../../../node_modules/@lynx-js/types/types/background-thread/app.d.ts","../../../node_modules/@lynx-js/types/types/background-thread/performance.d.ts","../../../node_modules/@lynx-js/types/types/background-thread/fetch.d.ts","../../../node_modules/@lynx-js/types/types/background-thread/lynx.d.ts","../../../node_modules/@lynx-js/types/types/background-thread/native-modules.d.ts","../../../node_modules/@lynx-js/types/types/background-thread/text-encoder-decoder.d.ts","../../../node_modules/@lynx-js/types/types/background-thread/index.d.ts","../../../node_modules/@lynx-js/types/types/index.d.ts","../../../node_modules/@types/react/jsx-runtime.d.ts","../../../node_modules/@lynx-js/react/runtime/jsx-runtime/index.d.ts","../../sqlite/dist/values/ids.d.ts","../../sqlite/dist/values/int64.d.ts","../../sqlite/dist/values/local-date-time.d.ts","../../sqlite/dist/values/sql-value.d.ts","../../sqlite/dist/codecs/codecs.d.ts","../../foundation/dist/collections.d.ts","../../foundation/dist/culture/digits.d.ts","../../foundation/dist/culture/culture.d.ts","../../foundation/dist/culture/calendar.d.ts","../../foundation/dist/culture/date-format.d.ts","../../foundation/dist/culture/duration.d.ts","../../foundation/dist/culture/numbers.d.ts","../../foundation/dist/culture/strings.d.ts","../../foundation/dist/culture/relative-time.d.ts","../../foundation/dist/culture/index.d.ts","../../foundation/dist/enums/index.d.ts","../../foundation/dist/errors.d.ts","../../foundation/dist/exec/diagnostics.d.ts","../../foundation/dist/services/abort.d.ts","../../foundation/dist/exec/options.d.ts","../../foundation/dist/services/clock.d.ts","../../foundation/dist/exec/trace.d.ts","../../foundation/dist/exec/safe-executor.d.ts","../../foundation/dist/exec/index.d.ts","../../foundation/dist/icons/generated/glyph-svg.d.ts","../../foundation/dist/icons/glyph.d.ts","../../foundation/dist/icons/icon.d.ts","../../foundation/dist/icons/glyph-slots.d.ts","../../foundation/dist/icons/icon-fonts.d.ts","../../foundation/dist/icons/svg.d.ts","../../foundation/dist/icons/index.d.ts","../../foundation/dist/services/preferences.d.ts","../../foundation/dist/services/contracts.d.ts","../../foundation/dist/services/index.d.ts","../../foundation/dist/theme/color.d.ts","../../foundation/dist/tokens/generated/palettes.d.ts","../../foundation/dist/theme/theme.d.ts","../../foundation/dist/theme/control-colors.d.ts","../../foundation/dist/theme/variants.d.ts","../../foundation/dist/theme/index.d.ts","../../foundation/dist/tokens/generated/metrics.d.ts","../../foundation/dist/tokens/layout-metrics.d.ts","../../foundation/dist/tokens/css-vars.d.ts","../../foundation/dist/tokens/index.d.ts","../../foundation/dist/index.d.ts","../../sqlite/dist/driver/types.d.ts","../../sqlite/dist/contract/run-contract.d.ts","../../sqlite/dist/errors.d.ts","../../sqlite/dist/schema/columns.d.ts","../../sqlite/dist/query/expr.d.ts","../../sqlite/dist/schema/policies.d.ts","../../sqlite/dist/schema/entity.d.ts","../../sqlite/dist/query/compile.d.ts","../../sqlite/dist/query/builders.d.ts","../../sqlite/dist/repo/audit.d.ts","../../sqlite/dist/session/ambient.d.ts","../../sqlite/dist/session/locator.d.ts","../../sqlite/dist/session/migrations.d.ts","../../sqlite/dist/session/mutex.d.ts","../../sqlite/dist/session/write-hooks.d.ts","../../sqlite/dist/session/database.d.ts","../../sqlite/dist/session/cache.d.ts","../../sqlite/dist/session/scope.d.ts","../../sqlite/dist/repo/repository.d.ts","../../sqlite/dist/session/schema-setup.d.ts","../../sqlite/dist/index.d.ts","../src/protocol.ts","../src/transport.ts","../src/driver.ts","../src/services.ts","../src/index.ts","../../../node_modules/@lynx-js/react/runtime/lib/runtime-marker.d.ts","../../../node_modules/preact/src/jsx.d.ts","../../../node_modules/preact/src/dom.d.ts","../../../node_modules/preact/src/index.d.ts","../../../node_modules/preact/hooks/src/index.d.ts","../../../node_modules/@lynx-js/react/runtime/lib/core/hooks/react.d.ts","../../../node_modules/@lynx-js/react/runtime/lib/snapshot/lynx/runWithForce.d.ts","../../../node_modules/@lynx-js/react/runtime/lib/lynx.d.ts","../../../node_modules/preact/compat/src/suspense.d.ts","../../../node_modules/preact/compat/src/index.d.ts","../../../node_modules/@lynx-js/react/runtime/lib/snapshot/lynx/children.d.ts","../../../node_modules/@lynx-js/react/runtime/lib/snapshot/lynx/element.d.ts","../../../node_modules/@lynx-js/react/runtime/lib/snapshot/lynx/portalsPending.d.ts","../../../node_modules/@lynx-js/react/runtime/lib/snapshot/lynx/portals.d.ts","../../../node_modules/@lynx-js/react/runtime/lib/snapshot/lynx/suspense.d.ts","../../../node_modules/@lynx-js/react/runtime/lib/core/hooks/useLynxGlobalEventListener.d.ts","../../../node_modules/@lynx-js/react/runtime/lib/core/globalProps.d.ts","../../../node_modules/@lynx-js/react/runtime/lib/core/initData.d.ts","../../../node_modules/@lynx-js/react/runtime/lib/core/background-function/run-on-background.d.ts","../../../node_modules/@lynx-js/react/runtime/lib/snapshot/worklet/call/runOnMainThread.d.ts","../../../node_modules/@lynx-js/react/runtime/lib/worklet-runtime/api/animation/effect.d.ts","../../../node_modules/@lynx-js/react/runtime/lib/worklet-runtime/api/animation/animation.d.ts","../../../node_modules/@lynx-js/react/runtime/lib/worklet-runtime/api/element.d.ts","../../../node_modules/@lynx-js/react/runtime/lib/worklet-runtime/bindings/types.d.ts","../../../node_modules/@lynx-js/react/runtime/lib/core/main-thread-ref.d.ts","../../../node_modules/@lynx-js/react/runtime/lib/lynx-api.d.ts","../../../node_modules/@lynx-js/react/runtime/lib/index.d.ts","../../../node_modules/@lynx-js/react/types/react.docs.d.ts","../../../node_modules/@lynx-js/react/types/react.d.ts","../src/media.tsx"],"fileIdsList":[[41,95,96,197,198],[172,173,178,184],[41,173],[41,172,173,178,184],[41,192],[169,172,174,176,178,179,180,182,183,194],[41,184,185,186,187,188,193],[174,175],[172,178],[41,95,197,198],[41,95,172,181,197,198],[172],[189],[191],[190],[41,95,97,196,197,198],[41,174,194,195],[42,85,86,87],[53],[42,77,86,87,88,89,91,92,93],[42,85,86,87,89,90],[85,87],[42,85],[49,77],[43],[44],[51,55],[47],[41,51,55,56,57,58,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,78,79],[47,51,55,77],[47,51,55],[56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,78,79,80,81,82],[47,51,55,59],[47,60,63],[46],[48,52,53,94],[44,47,48,49,51,53,54,55,83,84],[44,47],[52,85,94],[45,85],[46,47,55],[45,46,50,51],[49,85],[38,39,40],[41],[170,172,173,177],[170,171],[105],[104],[104,105,106],[104,105,106,107,108,109,110,111],[110],[115,117,119,120],[116],[110,115,116,117,118,119],[115,118],[124],[123],[122,123,124,125,126,127],[103,112,113,114,121,128,131,137,141],[114,116,118,129],[116,118,129,130],[114],[132,134],[132,134,135,136],[132,133],[113,132,133],[133,138,139],[133,138,139,140],[97,163,164,165],[97,164,165,166,167],[95,97,142,164,197],[97],[97,142,164],[97,163,164],[98,99,100,101],[101,143],[101,142],[142],[98,99,100,101,102,143,144,145,146,147,148,149,150,151,152,153,154,155,157,158,159,160,161,162],[101,102,147,149,150],[101,102,147],[101,102,146],[98,100,149],[100,101,142,143,147,148,149,151,157,158,159,160,163],[99,100,102],[146,147,148],[147],[98,100,142],[148,149,158],[98,100,102,142,143,149,151,153,154,155,156,157,159],[142,149],[102,143,149,158],[143,148,149,151,157,158,159,161],[142,145,147,149],[99]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb5b19b86227ace1d29ea4cf81387279d04bb34051e944bc53df69f58914b788","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac51dd7d31333793807a6abaa5ae168512b6131bd41d9c5b98477fc3b7800f9f","impliedFormat":1},{"version":"87d9d29dbc745f182683f63187bf3d53fd8673e5fca38ad5eaab69798ed29fbc","impliedFormat":1},{"version":"035312d4945d13efa134ae482f6dc56a1a9346f7ac3be7ccbad5741058ce87f3","affectsGlobalScope":true,"impliedFormat":1},{"version":"07b03f752ae52a7130e06c5a8399d3a0dde07a1a634f8430b80cd6236c56b5c8","impliedFormat":1},{"version":"8a8eb4ebffd85e589a1cc7c178e291626c359543403d58c9cd22b81fab5b1fb9","impliedFormat":1},{"version":"acbac4ca6cd4b2b459debc4a274535775cb6278a8315be383fafa623ab78f18e","impliedFormat":1},{"version":"e421d0b097c78304a2597c1f33da586630e1dc665ae381c0c36e5ebc4aaf4566","impliedFormat":1},{"version":"adf624c89a0d509a789f3c0bf522969d2c47033dbeb50920b37cd89be475a65e","impliedFormat":1},{"version":"8ff8dade82d215fba372ec8ca795cb433997a41287e049acf294dd50cba08cc4","impliedFormat":1},{"version":"b32b532dcbe0a91d71fd94cb780e94bdfdce10be21608d914c29fb4b8939b24a","impliedFormat":1},{"version":"eb2b64881998b562a4fe9330e55aa2466cd3a41a1a57e93feac6555218cec06f","impliedFormat":1},{"version":"6db1694d205177322d792d924335b046b80607445a45c0d2de1fcffd190b48c0","impliedFormat":1},{"version":"2b47193137d251e8a5d4cea2d67fe85a68199795ba019e41d635f7cf5f8a35c5","impliedFormat":1},{"version":"f7e5c3960dd9df65d83408b9be446f7119fa1db1dd8266dd343349d90c3bf2ce","impliedFormat":1},{"version":"09c6491ed74af89a4155feafedecaf77780f5751c66d4b65b18d30fc0e053a75","impliedFormat":1},{"version":"188b01044640e5ef65f6edf0dd6e6454f02dd19f4ead66b9e03ebe26cc7298ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"c2be64f223b024c0b70c5096a8c361c9e11c7644f3bd8325d19c2720ee7087cd","impliedFormat":1},{"version":"5bf51107315834a209b08395b141e262b7d143d14f6b4e4d403d8e020cef7e32","impliedFormat":1},{"version":"db0dcbe48d5cb38315083b412c8ab6995b0d42dc73b286833e296827feb0e5b4","impliedFormat":1},{"version":"b3e4a49a3ba19463662e7b821544948b953d2f6708370d42406bda558084000c","impliedFormat":1},{"version":"90bebc017d1c8408719f5a056813cce04e171a53469c263a136c35076121bab0","impliedFormat":1},{"version":"0675f9dddf11b81ec71825d5d97fdd789e445003506255513e0fc829ebfb795a","impliedFormat":1},{"version":"32d1e153cac16ca3a3f5f6b68fae76cddcda509950fa00d038c465776359db0c","impliedFormat":1},{"version":"0d85d0fa55dd433acf924675d7e976c025c8521c91a76079844cd15e52855ccf","impliedFormat":1},{"version":"89da6ea3ee9735e712691227b0e5ee74381779f9ad8b0f4fb7ced0247b16735a","impliedFormat":1},{"version":"37f90d8b4384dae49b873e620b7fff15655c706105104809114ba98df6373124","impliedFormat":1},{"version":"7618f7fdf0abf7f712cefe766ac1ab7fcd1f8e753c513e57d3ada9ada3a57257","impliedFormat":1},{"version":"759df9936f492afeacebec2cea4efafdb647951e0e5edfc4c677ce2441eac9d0","impliedFormat":1},{"version":"8d8848528b40a84ab42200e89d08f3d5cd83efa275de1bb70ae38cb9e6fd5911","impliedFormat":1},{"version":"0e323630cbfda771430e2720f6a2f02f257becd8fb9722aa975ae773fb572210","impliedFormat":1},{"version":"56dbc770513baae28f7cfbadeba5078bb13a37a13132a5292e98a8b103312b98","impliedFormat":1},{"version":"84ff906032fe12e816bfb7441cee6726243e5a7316c4f2d6b0a6c149f1a91a16","impliedFormat":1},{"version":"a8641f25f667160f356c504936576de22899e50ea575d7a4da47fe3b3704dd93","impliedFormat":1},{"version":"dcbbe1fb0f2c0efc12e29db8bbccb5b82513384d01d7a55342065cb0611da272","impliedFormat":1},{"version":"af209189a194cf5ad1f7b22dd680b52843fec2e30f1283be20b2977872fd4424","impliedFormat":1},{"version":"14745f699217e89ff1034f7be978bc28c195472a597b5f36442ef83d954d47b0","impliedFormat":1},{"version":"10c1feac0328f8f90a81f348b7f3c6d3c3b3454e46fc045ba1a706406c58fd8e","impliedFormat":1},{"version":"f64cd565aca17df45f4666473da75e4ce51a2610e2ed1c31198e9f9325747a24","impliedFormat":1},{"version":"e415a17ab6a413d6be640457231e045541405eab1f0f370c7dd1e5567aa25999","impliedFormat":1},{"version":"8c03a41d6dc701b6648db83d71a92dc27147d7677ab5d70f32675e7e37b3795a","impliedFormat":1},{"version":"09c18bc60888c58e8f4568b6ca973af72613a8a01e7b213aab778e910ae18b2f","impliedFormat":1},{"version":"5258d7af58615ea380d959cbcb6d83cb7b9841b8c8267f5a0fcb36c092dadbdb","impliedFormat":1},{"version":"b2d74af681f440a07e714ae9a33e3ea49c79870b9674058114c0404d2aa2f190","impliedFormat":1},{"version":"24f31e43eb3505e5d2946315e7b8ee8b426dfbe92c3031e435a4eb2d9dd8d69f","affectsGlobalScope":true,"impliedFormat":1},{"version":"679f7b45a77210e6dd0d72a4b81fd177868d2eacfd8ee6919ce6babd7512562d","impliedFormat":1},{"version":"c669ee7ba01fa6a60b17c3535f96b65fa82dfd2a475a8760364f2f3952f9bcbd","impliedFormat":1},{"version":"a8b121f6a75d603075e62793ff0c109112e882dd6ca2b70bdccbd8d8f753429b","impliedFormat":1},{"version":"f378d7ed5e3ecbe382ade55127a9c98e826c76f786e06effad6fde91a7023d55","impliedFormat":1},{"version":"4e3e9539df72b3bfcc56fa13140070020dac72f1eff39237b11253482cb99847","impliedFormat":1},{"version":"5a47b3a2bbe2c9b015fe356462afe0abe391c592fffbe277126e2415e0811967","impliedFormat":1},{"version":"a3e797c70a421cda37cdea4349dced37dceb1611669652d9c4c5523467a55cbf","impliedFormat":1},{"version":"9164e652ff4e7cbd993ca20acd0e2ad7e1cb775a7aefc577b506cf588763ec42","impliedFormat":1},{"version":"e52840670587e82e129c9bfc6a2f42d9c2f2e1fd6ce176fea998383a8c941ea5","impliedFormat":1},{"version":"31ca1ee726f5d7c7709913b98be76fc40fdfaaca6ad7fafc222108981e11227c","impliedFormat":1},{"version":"556db73da59f5162cdf5c7ea1bc3b063b6ccb758078ef6517ad6f6e4ae7b199a","impliedFormat":1},{"version":"0a2c8ef08611f5a5f711c7b10ba70d10dc1c6af0c9dba8168cbbf34911b74188","impliedFormat":1},{"version":"1d6ef45145a9939a43062fe18188d4f7bdfdf4547978e1f6b7c9089fe53e81e5","impliedFormat":1},{"version":"42c169fb8c2d42f4f668c624a9a11e719d5d07dacbebb63cbcf7ef365b0a75b3","impliedFormat":1},{"version":"509a86836776d5c821901abc16a2d21de674d2c8943ceb8d018049bf324bc56c","impliedFormat":99},"bbe47f7ebb177015803b69bad47ecf0e5987449cae5dd498664a9e4885d7cdff","4f260a074507a0065f3cd71d1adc1b361f5337b3db9e8d01589d5872e9387a4a","7674dcae15d29bcba5a7e8c26defdb06bf75297bfaa3025037bcc1e4df7b0ae1","97ff954e351fb81e182a8bc0d7c6e3625054e2c37ea5df0ad0ea12952bd5d9c0","c65ecf314f579465ceba2eb45ec7529f977a7809480ff6119c7c129022472cca","d533d1fe3018752aa47ee74ae5dbdca34377441b891176ad99bd33366a64372f","44b82e4f46178400732ea809a906f7ffb9dd38efab331ca23e7ca4586bf903ef","d3dcff003bac57338c3e60be409d0ff167ec1ff513539a5534c7679332dbc992","16d64c89cec74fa23e8cee7c72acc7549f117dcf7845051870c40366c7522d09","11f9f682c02d51de68eed569f8de1e91c56df296a78f3a6c520b93d52aac2308","28b43630d8d29a300e1e5b0f5efb04c8f994d372fff1b653ce8bb70d4e011e1a","b06c48902c3d127098839c1a6500f41d3e21b2f07f277ba7de23ec730df7275d","94659c94bb0ae17efde21aaf59f2beb05d286bea13f2d3b2b288a6df4faeac18","a7a0e658ca429cfb5268d4bf2e2e6e9fe871ffd06b6588d65424ba4eba35338f","ab4c80cb9cf211a7cd100429cb4a823c5bd9f3618bf981e6504c6606abf08656","e60dd3f69310681e28813b910da7d57f5cf0078feccfd683d22a29b45bb7a035","ccd708c3fff99b4ec315e14315dce6b9e85f4c96d10131e9fd219edb6efbdb26","abc924fce33b86b9f8588de3a5be04c609fafa6cb1dc42629b3e9e3e18f7d018","f919e3a8b2d274b631ee4fee0c50eba1d3f39ceaccba04dff915e9f61e9f153c","3ae17ae844491c7326d070c3e70a94a9239394e7a1e84eb203eb1d57470e752e","d1b2970d348eb9f89ef0f0c6730d27e9331067a28f21c8bd667ba1138d5d3e93","b2c4833e6308888c3947953770b3343deaf4276c803bb36148991a3fb90b4f6a","41b7c8204ea79a93e380a228f5c744e9c9a80183133ac62633a4c76e3fdbd7db","d0a441df587b0632c16a813117f110574d903ddd0bc4d28599cc82ff8af7c094","b24ac81f4fcff56ed9827736abcf2f92ea5f86e16d66eb2ee3ccfa0bb8143bc9","068309ff581d08c276c4a772ddf3ab9c8090e591fc9917fdc6cdffc12c95a5bf","5c1d368a451520260ebb6c06121201f18abf86d80540290df6e424d372c5d0ed","bb3ccaacf5c19a7170939b7f735c6a94537fd95ad16b4247a6ad572b23183e74","2c8b86d9d29c4ea62762c3815ffe4fdb0c5dbc0dd096b9703236010f4a17c255","9528dc401d1a2502393af70423c895c3df61ef62240c0dca429a7cd1bd535b82","eebf270ff516980678bf039e03e18a9461f196aee2825d4d65f7d8a1fa362bff","ee4e73f46ce2f6517e82434bd9fc63c8b6b2179d37d74525899f124a76d06669","b04de3a3cd10559130d898b36da5612fda5db2c31c95b502077cad9fe538ed6c","bc4c3476708a74ae09c06bcdbb9765baaa135592e1cf6e25f2ee9a942c6cd5ec","29e6e980f179ac2981d68954462dfd4a4545f73c021f6a4c8a5f442c0e16e56c","faa64d270fa523f80fd31bc7340ee7f6a21632c2ea0cea6535bf5a34bcc6adf7","cbd4ce7ee090549d836cbffac2e76a192ac5b1c5f15bcbe29c06d32dc7006f34","ea5a5d5873c239b97d846fb8c78437e08ffd731924764f746c0ebcb7731d7648","fb6b5b4592e0eca5b8dc2507432e621a18c16d488ae8a610e4d1ddba1edff667","df85ab12f80aced067959d43bd7744017fccb1eb95adcfa343f16cba7c9ef670","613df14d2c8c0ba78286705c4ed01ec701ed03189ca3803dd69bc7086b9c02ff","298f8d2584216932ea238927177ef343d0b8da735eb40a5ba96b1f92e3675e33","7251030d0662b66ffa03f1c75c81ea0e564c9f6c872b0658a25e64f35b68ce7a","c7aae030db999a44577cda213fc5d9b2cac4e55d8572ed5110fe6d187ba502c0","6f1302be2fa00d8a64e3bd48b4ccdf5d77a402441d7728d48c2ecee706c79127","efb30c7f5b1e7e2c8941c95355161907fdd6f3f28941cceacf81edc11db89bad","37700ef2907cfee5d680c1ceb83ba8355223f375c8093f523b9ee2ce108c1044","a244408662b901d15567a5bcff4b29cd13a2a6c9bb2c27329eec616c48c8f144","cf4c01af6890db612fcb2eda144fa7a947a0fd005052f41485459d195cd7396d","770c7abd7f2b17ff392e7179ad9b14518bc284f18834ec6efc00b4c62b8a4846","f29c840652a2d49e5b24debe0c06f9dd6ca15f96421cbac112ba982258b16a94","44a3d19d7e208acb0261a1f718c047854d0794683a0d5c2193522d310e36bdec","090ce3b05198a4c287542354fcedbfd570d87b2f32d0363cab0eb48989aecd2e","ad4b4e5abb5f01f966304dfa08c347137a3fe77329c7ae6c17c824c3d4babf33","b78cb18aa49943470bbab837676a7c35d1dfbfae7241c144f1d7fbd183989022","024aeda8ac048f7b98839a2b806e2034fe2fa1db797418cf8923a06fb32358c8","54f9c37e150e434622cff5d71fb87237c48497141cb379fc1ab4d019a4a43e2e","0d912ede0e33119759d7a3eee223fcbb83f1ca4c229719c62d54aa071487ceca","6f5878e8666a8abbb560dcc15b19c95ac5b0f4f85aabab2e804abb6a145030e4","ac683a7d8aa2506a3d5a3243ed94348867c85307ba54e46e6dd4a440b6a3012d","cf08b5dd44744b109ed2ddb8968bc8cbd4c6192b74180e5fb0fb1671f38d5dbc","efa3706b88ec75d05bfa7fa44d39af58305b7affda1b3789cf6d3688bb83070b","0a589d620f1d4719925c345e3c6e17dde3137765ea8db58c5a790f52ccdc58a6","8a3a12f093b91e0e3ca5f9909fb0cbaed59e2d864f04f103487f8f87095dfbfb","07d6a4c577cad80d9c1a2cf5d0e0ddae1aafadb264f5e41396999edd5963c94d","ba23c12c72c1523b39716c37b20fddaaab05f3f82139c8cdc33d552c3de70684",{"version":"4643eefbe63f810c9a62806874ee74b9f845e3ac41d271302dcbc8b41aa565c0","signature":"ef010a3efd3a152c93ad02fee09ae186c4325672de691cf20c2d5b634d560117"},{"version":"b196a892a7087bc69d5e14a1647aaf5acfcdf995c1935a55afe405253c153b4c","signature":"f63a428eadbfdbc8c9137c4bdaa77a23988f7e82d1b01b5ef7d13e2f37d3d044"},{"version":"bb4df5f784c131c8fc70cfb1868ab99b883347d48c7260450d3c56958a996d60","signature":"b2b0e3e6fd8b425abfb54a11133c8b9abfc186d61ac86adc8deaba0b8c2f4e8f"},{"version":"faf3b4d50980988d8870ec5a63705d314d100f0338e3c9978362acea7a50e825","signature":"bd3f683b47db8bdf2c50f5c3becea6fd0610f1e70ae35e0a2d0605c7200b6719"},{"version":"0763d2dcc3c222b35e5692a428540b531055e3344853e6ec9519cd914f36a1ad","signature":"1b4441c0bc7e477dcec93ac03d68c33a05edd9369a6f1c205f797c325c9f4bf5"},{"version":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","impliedFormat":99},{"version":"8a2ef120c4da7aab664148ed8d283aa0b98df4d5f15c570d830c8998ef05718b","impliedFormat":1},{"version":"4433d18f82991634feae5150a68f9b30f5b05b55416af8ff9f7251fb29431ed5","impliedFormat":1},{"version":"cc5d0b221824b7d8597e8a2bbdad2383af877eb564eaca392992049839e88c9e","impliedFormat":1},{"version":"21898d939444825cee1232af435330610b09171bea22a2f892cf2058d764b63d","impliedFormat":1},{"version":"6ec5f3b496e6f10c4f0a079e3b1102acef9c0bf5e3464909fa6e88b16a26480f","impliedFormat":99},{"version":"d9d320cf31f6d63659484f6c9ca4db4ae673daefa65118dd8589838925ff1397","impliedFormat":99},{"version":"027cf2216d065a97bf5a8ea126b3ea2734fab6cfe32adaff81ab4e94a1b51bbe","impliedFormat":99},{"version":"f6e6313fad233c5141220f7d25eae120cdd6e5079fbe0aba56821a1e99d05df8","impliedFormat":1},{"version":"9534c35b4577c193e499178deb47419fdadddd5e53af5ec8cb88218848013f65","impliedFormat":1},{"version":"804dca323c25404588a6e71d76e52eb09806f05e6013f0be1fcea1fb7eed5fa3","impliedFormat":99},{"version":"aeba529dfa69caa0efcdee1f1455540250d026522e5551b20b8a7ba9eebc707a","impliedFormat":99},{"version":"dfe6945467765f8e7843442a9dfbcf6b5526b6465b07b4c75a54a750329b5f17","impliedFormat":99},{"version":"7f9f6c9fe0e48c401d855d849e28112ffe2425569eca01b08b8c6112b8200695","impliedFormat":99},{"version":"68fcdc663627d12d336b420b19b3e54258844d0cbca0879f711c22aafd853352","impliedFormat":99},{"version":"6e97a7762ca61b836f275a14bf22a1696559bfa01bd6176df9498e717b5ff298","impliedFormat":99},{"version":"86535783bd695ee43e1a403e8cc50b1d643d3741df8074d30fbfae3b0438f996","impliedFormat":99},{"version":"7c94c072f4eef88b15710e2a6dd17036bfd943b390976aecc94af63df2f8a287","impliedFormat":99},{"version":"7e8a2efc54958a4ea7d678671d8703b00ae48a519d0f795a8f44f605abdba3d5","impliedFormat":99},{"version":"1409a9680115403cac91934df0062646e0a77f1b220b60faec5fe26cd775d9ca","impliedFormat":99},{"version":"335226d599a9382c9bea07d37e23bf998c1022c0f67e4d6d2b69633de6ac118f","impliedFormat":99},{"version":"ae430fd9bac320e71c3fe9299d90dcf67555d9a4f97ecaa35947b430ba8648ea","impliedFormat":99},{"version":"9061ff14146280f47d740b344ddd641c16df526ecaa868c348852277a9fb8686","impliedFormat":99},{"version":"7fa70acc5eed701b456f21e33f8f289e9e0e77fdd1f952385c33d6b9ecfb2021","impliedFormat":99},{"version":"16c6bbe197b6bf88db162c620e37218fab4c1c32892132d4aa33e461ae2b990a","impliedFormat":99},{"version":"9778598e1d86d1e544ab77fbc0bb5199d2fbb08ed386b3520732246b90005545","impliedFormat":99},{"version":"feed66ae8815d1981ad575482766fb9a82385e75cce35ae2f13be58e50c4349f","impliedFormat":99},{"version":"7e500d1f51b14c04c6dce8dcbadc5c48f4bec6fca0f321397c165868834916a2","affectsGlobalScope":true,"impliedFormat":99},{"version":"20c1041fbd4f1537686af4b707872b87c90a22201f8979e5def4554d28b46a5b","impliedFormat":99},{"version":"57ff3023920f09ea08ee1fb662518ff60312e81781e03c4e3b50cef3322143be","signature":"495d5d4a044fa18020972e7146c7416e467a364a9b23de05b096335d212ac9bb"}],"root":[[164,168],198],"options":{"composite":true,"declaration":true,"declarationDir":"./","declarationMap":true,"emitDeclarationOnly":true,"exactOptionalPropertyTypes":true,"jsx":4,"jsxImportSource":"@lynx-js/react","module":99,"noFallthroughCasesInSwitch":true,"noImplicitOverride":true,"noUncheckedIndexedAccess":true,"outDir":"./","rootDir":"../src","skipLibCheck":true,"strict":true,"target":6,"tsBuildInfoFile":"./.tsbuildinfo","verbatimModuleSyntax":true},"referencedMap":[[97,1],[185,2],[174,3],[186,4],[193,5],[195,6],[194,7],[176,8],[179,9],[180,10],[182,11],[183,12],[190,13],[189,14],[191,15],[192,14],[197,16],[196,17],[88,18],[90,19],[94,20],[91,21],[92,22],[87,23],[89,24],[44,25],[82,26],[73,27],[59,28],[56,27],[80,29],[57,27],[78,30],[58,31],[83,32],[66,31],[61,27],[60,33],[75,31],[81,34],[79,31],[62,27],[70,31],[71,31],[63,33],[69,31],[64,31],[67,31],[68,27],[76,31],[65,27],[72,31],[74,31],[47,35],[54,36],[85,37],[55,38],[95,39],[45,35],[46,40],[51,41],[52,42],[50,43],[41,44],[96,45],[178,46],[177,12],[173,12],[171,12],[172,47],[170,12],[106,48],[105,49],[107,50],[112,51],[109,49],[111,52],[110,48],[121,53],[117,54],[120,55],[119,56],[125,57],[126,57],[124,58],[128,59],[127,58],[142,60],[130,61],[131,62],[132,63],[135,64],[137,65],[134,66],[136,67],[140,68],[141,69],[166,70],[168,71],[198,72],[164,73],[167,74],[165,75],[102,76],[144,77],[143,78],[145,79],[163,80],[151,81],[150,82],[147,83],[152,84],[161,85],[146,86],[149,87],[148,88],[153,89],[159,90],[158,91],[155,92],[162,93],[160,94],[157,95],[101,96]],"latestChangedDtsFile":"./media.d.ts","version":"5.9.3"}
@@ -0,0 +1,20 @@
1
+ import { type G9SqliteDriver } from '@g9tm/lynxcontrols-sqlite';
2
+ import type { G9NativeTransport, G9SqliteNativeModule } from './protocol.js';
3
+ /** `NativeModules.G9SqliteModule`, or `null` where the native library is not linked. */
4
+ export declare function nativeSqliteModule(): G9SqliteNativeModule | null;
5
+ /** Options of {@link createNativeSqliteDriver}. */
6
+ export interface G9NativeDriverOptions {
7
+ /** The module (default: `NativeModules.G9SqliteModule`). Tests pass a fake. */
8
+ readonly module?: G9SqliteNativeModule;
9
+ /** Result transport (default `'columnar'`, specs/06 §6). */
10
+ readonly transport?: G9NativeTransport;
11
+ readonly name?: string;
12
+ }
13
+ /**
14
+ * The Android/iOS {@link G9SqliteDriver}: androidx.sqlite `BundledSQLiteDriver` on Android, system `sqlite3` on iOS,
15
+ * one native thread/queue per open database. Cancellation: a batch aborted while queued never starts; aborting a running
16
+ * batch interrupts it on iOS (`sqlite3_interrupt`) and lets it finish on Android (`capabilities().interrupt`).
17
+ * Throws `misuse` when the native library is not linked and no module is given.
18
+ */
19
+ export declare function createNativeSqliteDriver(options?: G9NativeDriverOptions): G9SqliteDriver;
20
+ //# sourceMappingURL=driver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"driver.d.ts","sourceRoot":"","sources":["../src/driver.ts"],"names":[],"mappings":"AAGA,OAAO,EAKL,KAAK,cAAc,EAMpB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAKV,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,YAAY,CAAC;AAKpB,wFAAwF;AACxF,wBAAgB,kBAAkB,IAAI,oBAAoB,GAAG,IAAI,CAMhE;AA6BD,mDAAmD;AACnD,MAAM,WAAW,qBAAqB;IACpC,+EAA+E;IAC/E,QAAQ,CAAC,MAAM,CAAC,EAAE,oBAAoB,CAAC;IACvC,4DAA4D;IAC5D,QAAQ,CAAC,SAAS,CAAC,EAAE,iBAAiB,CAAC;IACvC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,GAAE,qBAA0B,GAAG,cAAc,CA8G5F"}
package/dist/driver.js ADDED
@@ -0,0 +1,159 @@
1
+ import { G9SqliteError, pragmaStatements } from "@g9tm/lynxcontrols-sqlite";
2
+ import { decodeRunValue } from "./transport.js";
3
+ function nativeSqliteModule() {
4
+ try {
5
+ var _ref;
6
+ return null != (_ref = "u" < typeof NativeModules ? void 0 : null == NativeModules ? void 0 : NativeModules.G9SqliteModule) ? _ref : null;
7
+ } catch {
8
+ return null;
9
+ }
10
+ }
11
+ function toError(e) {
12
+ return new G9SqliteError(e.code, e.message, {
13
+ ...void 0 !== e.sqliteCode ? {
14
+ sqliteCode: e.sqliteCode
15
+ } : {},
16
+ ...void 0 !== e.sql ? {
17
+ sql: e.sql
18
+ } : {},
19
+ ...void 0 !== e.completedStatements ? {
20
+ completedStatements: e.completedStatements
21
+ } : {}
22
+ });
23
+ }
24
+ function call(invoke) {
25
+ return new Promise((resolve, reject)=>{
26
+ try {
27
+ invoke((envelope)=>{
28
+ var _ref;
29
+ if (null == envelope ? void 0 : envelope.ok) resolve(envelope.value);
30
+ else reject(toError(null != (_ref = null == envelope ? void 0 : envelope.error) ? _ref : {
31
+ code: 'other',
32
+ message: 'The native module sent no reply.'
33
+ }));
34
+ });
35
+ } catch (error) {
36
+ var _ref;
37
+ reject(new G9SqliteError('other', `The native module call failed: ${null != (_ref = null == error ? void 0 : error.message) ? _ref : error}`));
38
+ }
39
+ });
40
+ }
41
+ function param(value) {
42
+ return void 0 === value ? {
43
+ undefined: true
44
+ } : value;
45
+ }
46
+ function createNativeSqliteDriver(options = {}) {
47
+ var _options_module, _options_transport, _options_name;
48
+ const native = null != (_options_module = options.module) ? _options_module : nativeSqliteModule();
49
+ if (!native) throw new G9SqliteError('misuse', 'NativeModules.G9SqliteModule is missing: add @g9tm/lynxcontrols-native to the app so Autolink links it.');
50
+ const transport = null != (_options_transport = options.transport) ? _options_transport : 'columnar';
51
+ const queues = new Map();
52
+ const txSession = new Map();
53
+ function enqueue(session, task) {
54
+ var _queues_get;
55
+ const previous = null != (_queues_get = queues.get(session)) ? _queues_get : Promise.resolve();
56
+ const next = previous.then(task, task);
57
+ queues.set(session, next.then(()=>void 0, ()=>void 0));
58
+ return next;
59
+ }
60
+ const unknownTx = ()=>Promise.reject(new G9SqliteError('misuse', 'The transaction is finished or unknown.'));
61
+ return {
62
+ name: null != (_options_name = options.name) ? _options_name : 'native',
63
+ async capabilities () {
64
+ const value = await call((reply)=>native.capabilities(reply));
65
+ return Object.freeze({
66
+ sqliteVersion: String(value.sqliteVersion),
67
+ maxVariables: Number(value.maxVariables),
68
+ json1: true === value.json1,
69
+ returning: true === value.returning,
70
+ upsert: true === value.upsert,
71
+ interrupt: true === value.interrupt
72
+ });
73
+ },
74
+ async open (open) {
75
+ const token = await call((reply)=>{
76
+ var _open_pragmas;
77
+ return native.open({
78
+ path: open.path,
79
+ ...void 0 !== open.readOnly ? {
80
+ readOnly: open.readOnly
81
+ } : {},
82
+ ...void 0 !== open.create ? {
83
+ create: open.create
84
+ } : {},
85
+ pragmas: pragmaStatements(null != (_open_pragmas = open.pragmas) ? _open_pragmas : {}, open.durability)
86
+ }, reply);
87
+ });
88
+ return token;
89
+ },
90
+ run (session, statements, run = {}) {
91
+ var _run_signal;
92
+ const cancelled = ()=>new G9SqliteError('cancelled', 'Cancelled before the batch started.');
93
+ if (null == (_run_signal = run.signal) ? void 0 : _run_signal.aborted) return Promise.reject(cancelled());
94
+ return enqueue(session, async ()=>{
95
+ var _run_signal, _run_signal1;
96
+ if (null == (_run_signal = run.signal) ? void 0 : _run_signal.aborted) throw cancelled();
97
+ const onAbort = ()=>{
98
+ var _native_interrupt;
99
+ return null == (_native_interrupt = native.interrupt) ? void 0 : _native_interrupt.call(native, session);
100
+ };
101
+ null == (_run_signal1 = run.signal) || _run_signal1.addEventListener('abort', onAbort);
102
+ try {
103
+ const value = await call((reply)=>native.run(session, statements.map((s)=>({
104
+ sql: s.sql,
105
+ params: s.params.map(param)
106
+ })), {
107
+ ...void 0 !== run.tx ? {
108
+ tx: run.tx
109
+ } : {},
110
+ ...void 0 !== run.maxRows ? {
111
+ maxRows: run.maxRows
112
+ } : {},
113
+ ...void 0 !== run.atomic ? {
114
+ atomic: run.atomic
115
+ } : {},
116
+ transport
117
+ }, reply));
118
+ return decodeRunValue(value);
119
+ } finally{
120
+ var _run_signal2;
121
+ null == (_run_signal2 = run.signal) || _run_signal2.removeEventListener('abort', onAbort);
122
+ }
123
+ });
124
+ },
125
+ begin (session, mode) {
126
+ return enqueue(session, async ()=>{
127
+ const tx = await call((reply)=>native.begin(session, mode, reply));
128
+ txSession.set(tx, session);
129
+ return tx;
130
+ });
131
+ },
132
+ commit (tx) {
133
+ var _txSession_get;
134
+ if ('string' != typeof tx) return unknownTx();
135
+ return enqueue(null != (_txSession_get = txSession.get(tx)) ? _txSession_get : `#${tx}`, async ()=>{
136
+ await call((reply)=>native.commit(tx, reply));
137
+ txSession.delete(tx);
138
+ });
139
+ },
140
+ rollback (tx) {
141
+ var _txSession_get;
142
+ if ('string' != typeof tx) return unknownTx();
143
+ return enqueue(null != (_txSession_get = txSession.get(tx)) ? _txSession_get : `#${tx}`, async ()=>{
144
+ txSession.delete(tx);
145
+ await call((reply)=>native.rollback(tx, reply));
146
+ });
147
+ },
148
+ close (session) {
149
+ if ('string' != typeof session) return Promise.reject(new G9SqliteError('misuse', 'The database session is closed or unknown.'));
150
+ return enqueue(session, async ()=>{
151
+ await call((reply)=>native.close(session, reply));
152
+ queues.delete(session);
153
+ });
154
+ }
155
+ };
156
+ }
157
+ export { createNativeSqliteDriver, nativeSqliteModule };
158
+
159
+ //# sourceMappingURL=driver.js.map