@@ -1573,7 +1573,7 @@ export type WasmPointer = number;
15731573export type NullPointer = 0 | null | undefined ;
15741574
15751575/** Common envelope for all Worker API #1 messages. */
1576- interface Worker1MessageBusEnvelope {
1576+ type Worker1MessageBusEnvelope = {
15771577 /** One of: 'open', 'close', 'exec', 'export', 'config-get' */
15781578 type : string ;
15791579
@@ -1589,33 +1589,33 @@ interface Worker1MessageBusEnvelope {
15891589 * used.
15901590 */
15911591 dbId ?: string ;
1592- }
1592+ } ;
15931593
15941594/** Worker API #1 input message envelope. */
1595- interface Worker1InputEnvelope <
1595+ type Worker1InputEnvelope <
15961596 T extends string ,
15971597 Args = unknown ,
1598- > extends Worker1MessageBusEnvelope {
1598+ > = Worker1MessageBusEnvelope & {
15991599 type : T ;
16001600 args ?: Args ;
16011601 /** Timestamp set by the promiser before posting a message. */
16021602 departureTime ?: number ;
1603- }
1603+ } ;
16041604
16051605/** Worker API #1 output message envelope. */
1606- interface Worker1OutputEnvelope <
1606+ type Worker1OutputEnvelope <
16071607 T extends string ,
16081608 Result = unknown ,
1609- > extends Worker1MessageBusEnvelope {
1609+ > = Worker1MessageBusEnvelope & {
16101610 type : T ;
16111611 result : Result ;
1612- }
1612+ } ;
16131613
16141614/**
16151615 * Worker API #1 per-row callback payload for promiser `exec()` callback
16161616 * functions.
16171617 */
1618- interface Worker1ExecRowMessage {
1618+ type Worker1ExecRowMessage = {
16191619 /** Internally synthesized callback message type. */
16201620 type : `${string } :row`;
16211621 /** Current row value in the shape implied by `rowMode`. */
@@ -1624,7 +1624,7 @@ interface Worker1ExecRowMessage {
16241624 rowNumber : number | null ;
16251625 /** Column names populated when requested by options. */
16261626 columnNames ?: string [ ] ;
1627- }
1627+ } ;
16281628
16291629/** Worker API #1 exec options accepted by the promiser wrapper. */
16301630type Worker1ExecArgs = Omit < ExecOptions , 'callback' > & {
@@ -1635,36 +1635,16 @@ type Worker1ExecArgs = Omit<ExecOptions, 'callback'> & {
16351635 callback ?: ( row : Worker1ExecRowMessage ) => void ;
16361636} ;
16371637
1638- /** Worker API #1 error response result. */
1639- interface Worker1ErrorResult {
1640- /** Type of the triggering operation: 'open', 'close', ... */
1641- operation : string ;
1642- /** Error message text */
1643- message : string ;
1644- /** The ErrorClass.name property from the thrown exception. */
1645- errorClass : string ;
1646- /** The message object which triggered the error. */
1647- input : Worker1InputEnvelope < string , unknown > ;
1648- /** If available, a stack trace array. */
1649- stack ?: string [ ] ;
1650- }
1651-
1652- /** Worker API #1 error response envelope. */
1653- interface Worker1ErrorEnvelope extends Worker1MessageBusEnvelope {
1654- type : 'error' ;
1655- result : Worker1ErrorResult ;
1656- }
1657-
16581638/** Worker API #1 'open' arguments. */
1659- interface Worker1OpenArgs {
1639+ type Worker1OpenArgs = {
16601640 /** The db filename. */
16611641 filename ?: string ;
16621642 /** Sqlite3_vfs name. */
16631643 vfs ?: string ;
1664- }
1644+ } ;
16651645
16661646/** Worker API #1 'open' result. */
1667- interface Worker1OpenResult {
1647+ type Worker1OpenResult = {
16681648 /** Db filename, possibly differing from the input. */
16691649 filename : string ;
16701650 /** Opaque ID value for the opened db. */
@@ -1673,40 +1653,40 @@ interface Worker1OpenResult {
16731653 persistent : boolean ;
16741654 /** Name of the VFS the "main" db is using. */
16751655 vfs : string ;
1676- }
1656+ } ;
16771657
16781658/** Worker API #1 'close' arguments. */
1679- interface Worker1CloseArgs {
1659+ type Worker1CloseArgs = {
16801660 /** If truthy, the database will be unlinked (deleted) after closing it. */
16811661 unlink ?: boolean ;
1682- }
1662+ } ;
16831663
16841664/** Worker API #1 'close' result. */
1685- interface Worker1CloseResult {
1665+ type Worker1CloseResult = {
16861666 /** Filename of closed db, or undefined if no db was closed. */
16871667 filename ?: string ;
1688- }
1668+ } ;
16891669
16901670/** Worker API #1 'exec' result. */
1691- interface Worker1ExecResult extends ExecOptions {
1671+ type Worker1ExecResult = ExecOptions & {
16921672 /** Number of changes made by the SQL. (v3.43+) */
16931673 changeCount ?: number | bigint ;
16941674 /** Result of sqlite3_last_insert_rowid(). (v3.50.0+) */
16951675 lastInsertRowId ?: bigint ;
1696- }
1676+ } ;
16971677
16981678/** Worker API #1 'export' result. */
1699- interface Worker1ExportResult {
1679+ type Worker1ExportResult = {
17001680 /** The exported database as a byte array. */
17011681 byteArray : Uint8Array ;
17021682 /** The db filename. */
17031683 filename : string ;
17041684 /** "application/x-sqlite3" */
17051685 mimetype : string ;
1706- }
1686+ } ;
17071687
17081688/** Worker API #1 'config-get' result. */
1709- interface Worker1ConfigGetResult {
1689+ type Worker1ConfigGetResult = {
17101690 /** Sqlite3.version object */
17111691 version : {
17121692 libVersion : string ;
@@ -1718,48 +1698,66 @@ interface Worker1ConfigGetResult {
17181698 bigIntEnabled : boolean ;
17191699 /** Result of sqlite3.capi.sqlite3_js_vfs_list() */
17201700 vfsList : string [ ] ;
1721- }
1701+ } ;
17221702
17231703/** Map of Worker API #1 operation types to their argument types. */
1724- interface Worker1ArgsMap {
1704+ type Worker1ArgsMap = {
17251705 open : Worker1OpenArgs ;
17261706 close : Worker1CloseArgs | undefined ;
17271707 exec : Worker1ExecArgs | string ;
17281708 export : undefined ;
1729- 'config-get' : undefined ;
1730- }
1709+ 'config-get' : undefined | Record < string , never > ;
1710+ } ;
1711+
1712+ type Worker1OptionalArgsOp = {
1713+ [ K in keyof Worker1ArgsMap ] : undefined extends Worker1ArgsMap [ K ] ? K : never ;
1714+ } [ keyof Worker1ArgsMap ] ;
1715+
1716+ type Worker1RequiredArgsOp = Exclude <
1717+ keyof Worker1ArgsMap ,
1718+ Worker1OptionalArgsOp
1719+ > ;
17311720
17321721/** Map of Worker API #1 operation types to their result types. */
1733- interface Worker1ResultMap {
1722+ type Worker1ResultMap = {
17341723 open : Worker1OpenResult ;
17351724 close : Worker1CloseResult ;
17361725 exec : Worker1ExecResult ;
17371726 export : Worker1ExportResult ;
17381727 'config-get' : Worker1ConfigGetResult ;
1739- }
1728+ } ;
17401729
17411730/** Function type returned by Worker1PromiserFactory. */
1742- interface Worker1Promiser {
1731+ export type Worker1Promiser = {
17431732 /**
17441733 * Sends a message to the worker and returns a Promise which resolves to the
17451734 * response message.
17461735 */
1747- < T extends keyof Worker1ArgsMap > (
1736+ < T extends Worker1RequiredArgsOp > (
17481737 type : T ,
17491738 args : Worker1ArgsMap [ T ] ,
17501739 ) : Promise < Worker1OutputEnvelope < T , Worker1ResultMap [ T ] > > ;
17511740
1741+ /**
1742+ * Sends a message to the worker and returns a Promise which resolves to the
1743+ * response message.
1744+ */
1745+ < T extends Worker1OptionalArgsOp > (
1746+ type : T ,
1747+ args ?: Worker1ArgsMap [ T ] ,
1748+ ) : Promise < Worker1OutputEnvelope < T , Worker1ResultMap [ T ] > > ;
1749+
17521750 /**
17531751 * Sends a message to the worker and returns a Promise which resolves to the
17541752 * response message.
17551753 */
17561754 < T extends keyof Worker1ArgsMap > (
17571755 msg : Worker1InputEnvelope < T , Worker1ArgsMap [ T ] > ,
17581756 ) : Promise < Worker1OutputEnvelope < T , Worker1ResultMap [ T ] > > ;
1759- }
1757+ } ;
17601758
17611759/** Configuration for Worker1PromiserFactory. */
1762- interface Worker1PromiserConfig {
1760+ type Worker1PromiserConfig = {
17631761 /** A Worker instance or a function which returns one. */
17641762 worker ?: Worker | ( ( ) => Worker ) ;
17651763
@@ -1777,10 +1775,10 @@ interface Worker1PromiserConfig {
17771775
17781776 /** Optional error logging function (undocumented). */
17791777 onerror ?: ( ...args : unknown [ ] ) => void ;
1780- }
1778+ } ;
17811779
17821780/** Factory for creating Worker1Promiser instances. */
1783- interface Worker1PromiserFactory {
1781+ type Worker1PromiserFactory = {
17841782 /** Creates a Worker1Promiser. */
17851783 ( config ?: Worker1PromiserConfig ) : Worker1Promiser ;
17861784
@@ -1796,7 +1794,7 @@ interface Worker1PromiserFactory {
17961794 ( onready : ( promiser : Worker1Promiser ) => void ) : Promise < Worker1Promiser > ;
17971795 defaultConfig : Worker1PromiserConfig ;
17981796 } ;
1799- }
1797+ } ;
18001798
18011799export type StructPtrMapper < T > = {
18021800 StructType : T ;
@@ -2636,6 +2634,8 @@ export type Sqlite3Static = {
26362634 */
26372635export default function init ( ) : Promise < Sqlite3Static > ;
26382636
2637+ export const sqlite3Worker1Promiser : Worker1PromiserFactory ;
2638+
26392639export type ListLike < T > = {
26402640 length : number ;
26412641 forEach : ( cb : ( val : T ) => void ) => void ;
0 commit comments