@oxy-hq/sdk 0.1.6 → 0.2.1
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/README.md +281 -171
- package/dist/index.cjs +523 -57
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +416 -33
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +416 -33
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +519 -58
- package/dist/index.mjs.map +1 -1
- package/dist/postMessage-B1J0jDRN.cjs.map +1 -1
- package/dist/postMessage-BxdgtX8j.mjs.map +1 -1
- package/package.json +11 -6
package/dist/index.d.mts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
|
|
2
2
|
import * as duckdb from "@duckdb/duckdb-wasm";
|
|
3
|
+
import React, { ReactNode } from "react";
|
|
3
4
|
|
|
4
5
|
//#region src/config.d.ts
|
|
5
6
|
/**
|
|
@@ -139,14 +140,6 @@ interface DisplayData {
|
|
|
139
140
|
interface GetDisplaysResponse {
|
|
140
141
|
displays: DisplayWithError[];
|
|
141
142
|
}
|
|
142
|
-
/**
|
|
143
|
-
* Query result from ParquetReader
|
|
144
|
-
*/
|
|
145
|
-
interface QueryResult$1 {
|
|
146
|
-
columns: string[];
|
|
147
|
-
rows: unknown[][];
|
|
148
|
-
rowCount: number;
|
|
149
|
-
}
|
|
150
143
|
/**
|
|
151
144
|
* PostMessage authentication protocol types
|
|
152
145
|
*/
|
|
@@ -403,26 +396,59 @@ interface QueryResult {
|
|
|
403
396
|
rowCount: number;
|
|
404
397
|
}
|
|
405
398
|
/**
|
|
406
|
-
* ParquetReader provides methods to read and query Parquet files
|
|
399
|
+
* ParquetReader provides methods to read and query Parquet files.
|
|
400
|
+
* Supports registering multiple Parquet files with different table names.
|
|
407
401
|
*/
|
|
408
402
|
declare class ParquetReader {
|
|
409
|
-
private
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
403
|
+
private tableMap;
|
|
404
|
+
constructor();
|
|
405
|
+
/**
|
|
406
|
+
* Generate a unique internal table name to prevent conflicts
|
|
407
|
+
*/
|
|
408
|
+
private generateInternalTableName;
|
|
413
409
|
/**
|
|
414
|
-
* Register a Parquet file from a Blob
|
|
410
|
+
* Register a Parquet file from a Blob with a specific table name
|
|
415
411
|
*
|
|
416
412
|
* @param blob - Parquet file as Blob
|
|
413
|
+
* @param tableName - Name to use for the table in queries (required)
|
|
417
414
|
*
|
|
418
415
|
* @example
|
|
419
416
|
* ```typescript
|
|
420
417
|
* const blob = await client.getFile('data/sales.parquet');
|
|
421
|
-
* const reader = new ParquetReader(
|
|
422
|
-
* await reader.registerParquet(blob);
|
|
418
|
+
* const reader = new ParquetReader();
|
|
419
|
+
* await reader.registerParquet(blob, 'sales');
|
|
420
|
+
* ```
|
|
421
|
+
*
|
|
422
|
+
* @example
|
|
423
|
+
* ```typescript
|
|
424
|
+
* // Register multiple files
|
|
425
|
+
* const reader = new ParquetReader();
|
|
426
|
+
* await reader.registerParquet(salesBlob, 'sales');
|
|
427
|
+
* await reader.registerParquet(customersBlob, 'customers');
|
|
428
|
+
* const result = await reader.query('SELECT * FROM sales JOIN customers ON sales.customer_id = customers.id');
|
|
423
429
|
* ```
|
|
424
430
|
*/
|
|
425
|
-
registerParquet(blob: Blob): Promise<void>;
|
|
431
|
+
registerParquet(blob: Blob, tableName: string): Promise<void>;
|
|
432
|
+
/**
|
|
433
|
+
* Register multiple Parquet files at once
|
|
434
|
+
*
|
|
435
|
+
* @param files - Array of objects containing blob and tableName
|
|
436
|
+
*
|
|
437
|
+
* @example
|
|
438
|
+
* ```typescript
|
|
439
|
+
* const reader = new ParquetReader();
|
|
440
|
+
* await reader.registerMultipleParquet([
|
|
441
|
+
* { blob: salesBlob, tableName: 'sales' },
|
|
442
|
+
* { blob: customersBlob, tableName: 'customers' },
|
|
443
|
+
* { blob: productsBlob, tableName: 'products' }
|
|
444
|
+
* ]);
|
|
445
|
+
* const result = await reader.query('SELECT * FROM sales JOIN customers ON sales.customer_id = customers.id');
|
|
446
|
+
* ```
|
|
447
|
+
*/
|
|
448
|
+
registerMultipleParquet(files: Array<{
|
|
449
|
+
blob: Blob;
|
|
450
|
+
tableName: string;
|
|
451
|
+
}>): Promise<void>;
|
|
426
452
|
/**
|
|
427
453
|
* Execute a SQL query against the registered Parquet data
|
|
428
454
|
*
|
|
@@ -435,48 +461,63 @@ declare class ParquetReader {
|
|
|
435
461
|
* console.log(result.columns);
|
|
436
462
|
* console.log(result.rows);
|
|
437
463
|
* ```
|
|
464
|
+
*
|
|
465
|
+
* @example
|
|
466
|
+
* ```typescript
|
|
467
|
+
* // Query multiple tables
|
|
468
|
+
* await reader.registerParquet(salesBlob, 'sales');
|
|
469
|
+
* await reader.registerParquet(customersBlob, 'customers');
|
|
470
|
+
* const result = await reader.query(`
|
|
471
|
+
* SELECT s.*, c.name
|
|
472
|
+
* FROM sales s
|
|
473
|
+
* JOIN customers c ON s.customer_id = c.id
|
|
474
|
+
* `);
|
|
475
|
+
* ```
|
|
438
476
|
*/
|
|
439
477
|
query(sql: string): Promise<QueryResult>;
|
|
440
478
|
/**
|
|
441
|
-
* Get all data from
|
|
479
|
+
* Get all data from a registered table
|
|
442
480
|
*
|
|
481
|
+
* @param tableName - Name of the table to query
|
|
443
482
|
* @param limit - Maximum number of rows to return (default: all)
|
|
444
483
|
* @returns Query result
|
|
445
484
|
*
|
|
446
485
|
* @example
|
|
447
486
|
* ```typescript
|
|
448
|
-
* const allData = await reader.getAll();
|
|
449
|
-
* const first100 = await reader.getAll(100);
|
|
487
|
+
* const allData = await reader.getAll('sales');
|
|
488
|
+
* const first100 = await reader.getAll('sales', 100);
|
|
450
489
|
* ```
|
|
451
490
|
*/
|
|
452
|
-
getAll(limit?: number): Promise<QueryResult>;
|
|
491
|
+
getAll(tableName: string, limit?: number): Promise<QueryResult>;
|
|
453
492
|
/**
|
|
454
493
|
* Get table schema information
|
|
455
494
|
*
|
|
495
|
+
* @param tableName - Name of the table to describe
|
|
456
496
|
* @returns Schema information
|
|
457
497
|
*
|
|
458
498
|
* @example
|
|
459
499
|
* ```typescript
|
|
460
|
-
* const schema = await reader.getSchema();
|
|
500
|
+
* const schema = await reader.getSchema('sales');
|
|
461
501
|
* console.log(schema.columns); // ['id', 'name', 'sales']
|
|
462
502
|
* console.log(schema.rows); // [['id', 'INTEGER'], ['name', 'VARCHAR'], ...]
|
|
463
503
|
* ```
|
|
464
504
|
*/
|
|
465
|
-
getSchema(): Promise<QueryResult>;
|
|
505
|
+
getSchema(tableName: string): Promise<QueryResult>;
|
|
466
506
|
/**
|
|
467
|
-
* Get row count
|
|
507
|
+
* Get row count for a table
|
|
468
508
|
*
|
|
509
|
+
* @param tableName - Name of the table to count
|
|
469
510
|
* @returns Number of rows in the table
|
|
470
511
|
*
|
|
471
512
|
* @example
|
|
472
513
|
* ```typescript
|
|
473
|
-
* const count = await reader.count();
|
|
514
|
+
* const count = await reader.count('sales');
|
|
474
515
|
* console.log(`Total rows: ${count}`);
|
|
475
516
|
* ```
|
|
476
517
|
*/
|
|
477
|
-
count(): Promise<number>;
|
|
518
|
+
count(tableName: string): Promise<number>;
|
|
478
519
|
/**
|
|
479
|
-
* Close and cleanup resources
|
|
520
|
+
* Close and cleanup all registered resources
|
|
480
521
|
*/
|
|
481
522
|
close(): Promise<void>;
|
|
482
523
|
}
|
|
@@ -484,32 +525,374 @@ declare class ParquetReader {
|
|
|
484
525
|
* Helper function to quickly read a Parquet blob and execute a query
|
|
485
526
|
*
|
|
486
527
|
* @param blob - Parquet file as Blob
|
|
487
|
-
* @param
|
|
528
|
+
* @param tableName - Name to use for the table in queries (default: 'data')
|
|
529
|
+
* @param sql - SQL query to execute (optional, defaults to SELECT * FROM tableName)
|
|
488
530
|
* @returns Query result
|
|
489
531
|
*
|
|
490
532
|
* @example
|
|
491
533
|
* ```typescript
|
|
492
534
|
* const blob = await client.getFile('data/sales.parquet');
|
|
493
|
-
* const result = await queryParquet(blob, 'SELECT product, SUM(amount) as total FROM
|
|
535
|
+
* const result = await queryParquet(blob, 'sales', 'SELECT product, SUM(amount) as total FROM sales GROUP BY product');
|
|
494
536
|
* console.log(result);
|
|
495
537
|
* ```
|
|
496
538
|
*/
|
|
497
|
-
declare function queryParquet(blob: Blob, sql?: string): Promise<QueryResult>;
|
|
539
|
+
declare function queryParquet(blob: Blob, tableName?: string, sql?: string): Promise<QueryResult>;
|
|
498
540
|
/**
|
|
499
541
|
* Helper function to read Parquet file and get all data
|
|
500
542
|
*
|
|
501
543
|
* @param blob - Parquet file as Blob
|
|
544
|
+
* @param tableName - Name to use for the table (default: 'data')
|
|
502
545
|
* @param limit - Maximum number of rows (optional)
|
|
503
546
|
* @returns Query result
|
|
504
547
|
*
|
|
505
548
|
* @example
|
|
506
549
|
* ```typescript
|
|
507
550
|
* const blob = await client.getFile('data/sales.parquet');
|
|
508
|
-
* const data = await readParquet(blob, 1000);
|
|
551
|
+
* const data = await readParquet(blob, 'sales', 1000);
|
|
509
552
|
* console.log(`Loaded ${data.rowCount} rows`);
|
|
510
553
|
* ```
|
|
511
554
|
*/
|
|
512
|
-
declare function readParquet(blob: Blob, limit?: number): Promise<QueryResult>;
|
|
555
|
+
declare function readParquet(blob: Blob, tableName?: string, limit?: number): Promise<QueryResult>;
|
|
556
|
+
//#endregion
|
|
557
|
+
//#region src/sdk.d.ts
|
|
558
|
+
/**
|
|
559
|
+
* OxySDK provides a unified interface for fetching data from Oxy and querying it with SQL.
|
|
560
|
+
* It combines OxyClient (for API calls) and ParquetReader (for SQL queries) into a single,
|
|
561
|
+
* easy-to-use interface.
|
|
562
|
+
*
|
|
563
|
+
* @example
|
|
564
|
+
* ```typescript
|
|
565
|
+
* // Create SDK instance
|
|
566
|
+
* const sdk = new OxySDK({ apiKey: 'your-key', projectId: 'your-project' });
|
|
567
|
+
*
|
|
568
|
+
* // Load a parquet file and query it
|
|
569
|
+
* await sdk.loadFile('data/sales.parquet', 'sales');
|
|
570
|
+
* const result = await sdk.query('SELECT * FROM sales WHERE amount > 1000');
|
|
571
|
+
* console.log(result.rows);
|
|
572
|
+
*
|
|
573
|
+
* // Clean up when done
|
|
574
|
+
* await sdk.close();
|
|
575
|
+
* ```
|
|
576
|
+
*/
|
|
577
|
+
declare class OxySDK {
|
|
578
|
+
private client;
|
|
579
|
+
private reader;
|
|
580
|
+
constructor(config: OxyConfig);
|
|
581
|
+
/**
|
|
582
|
+
* Creates an OxySDK instance asynchronously with support for postMessage authentication
|
|
583
|
+
*
|
|
584
|
+
* @param config - Optional configuration overrides
|
|
585
|
+
* @returns Promise resolving to OxySDK instance
|
|
586
|
+
*
|
|
587
|
+
* @example
|
|
588
|
+
* ```typescript
|
|
589
|
+
* // In an iframe - automatic postMessage auth
|
|
590
|
+
* const sdk = await OxySDK.create({
|
|
591
|
+
* parentOrigin: 'https://app.example.com',
|
|
592
|
+
* projectId: 'my-project-id'
|
|
593
|
+
* });
|
|
594
|
+
* ```
|
|
595
|
+
*/
|
|
596
|
+
static create(config?: Partial<OxyConfig>): Promise<OxySDK>;
|
|
597
|
+
/**
|
|
598
|
+
* Load a Parquet file from Oxy and register it for SQL queries
|
|
599
|
+
*
|
|
600
|
+
* @param filePath - Path to the parquet file in the app state directory
|
|
601
|
+
* @param tableName - Name to use for the table in SQL queries
|
|
602
|
+
*
|
|
603
|
+
* @example
|
|
604
|
+
* ```typescript
|
|
605
|
+
* await sdk.loadFile('data/sales.parquet', 'sales');
|
|
606
|
+
* await sdk.loadFile('data/customers.parquet', 'customers');
|
|
607
|
+
*
|
|
608
|
+
* const result = await sdk.query(`
|
|
609
|
+
* SELECT s.*, c.name
|
|
610
|
+
* FROM sales s
|
|
611
|
+
* JOIN customers c ON s.customer_id = c.id
|
|
612
|
+
* `);
|
|
613
|
+
* ```
|
|
614
|
+
*/
|
|
615
|
+
loadFile(filePath: string, tableName: string): Promise<void>;
|
|
616
|
+
/**
|
|
617
|
+
* Load multiple Parquet files at once
|
|
618
|
+
*
|
|
619
|
+
* @param files - Array of file paths and table names
|
|
620
|
+
*
|
|
621
|
+
* @example
|
|
622
|
+
* ```typescript
|
|
623
|
+
* await sdk.loadFiles([
|
|
624
|
+
* { filePath: 'data/sales.parquet', tableName: 'sales' },
|
|
625
|
+
* { filePath: 'data/customers.parquet', tableName: 'customers' },
|
|
626
|
+
* { filePath: 'data/products.parquet', tableName: 'products' }
|
|
627
|
+
* ]);
|
|
628
|
+
*
|
|
629
|
+
* const result = await sdk.query('SELECT * FROM sales');
|
|
630
|
+
* ```
|
|
631
|
+
*/
|
|
632
|
+
loadFiles(files: Array<{
|
|
633
|
+
filePath: string;
|
|
634
|
+
tableName: string;
|
|
635
|
+
}>): Promise<void>;
|
|
636
|
+
/**
|
|
637
|
+
* Load all data from an app's data container
|
|
638
|
+
*
|
|
639
|
+
* This fetches the app's data and registers all parquet files using their container keys as table names.
|
|
640
|
+
*
|
|
641
|
+
* @param appPath - Path to the app file
|
|
642
|
+
* @returns DataContainer with file references
|
|
643
|
+
*
|
|
644
|
+
* @example
|
|
645
|
+
* ```typescript
|
|
646
|
+
* // If app has data: { sales: { file_path: 'data/sales.parquet' } }
|
|
647
|
+
* const data = await sdk.loadAppData('dashboard.app.yml');
|
|
648
|
+
* // Now you can query the 'sales' table
|
|
649
|
+
* const result = await sdk.query('SELECT * FROM sales LIMIT 10');
|
|
650
|
+
* ```
|
|
651
|
+
*/
|
|
652
|
+
loadAppData(appPath: string): Promise<DataContainer | null>;
|
|
653
|
+
/**
|
|
654
|
+
* Execute a SQL query against loaded data
|
|
655
|
+
*
|
|
656
|
+
* @param sql - SQL query to execute
|
|
657
|
+
* @returns Query result with columns and rows
|
|
658
|
+
*
|
|
659
|
+
* @example
|
|
660
|
+
* ```typescript
|
|
661
|
+
* await sdk.loadFile('data/sales.parquet', 'sales');
|
|
662
|
+
*
|
|
663
|
+
* const result = await sdk.query('SELECT product, SUM(amount) as total FROM sales GROUP BY product');
|
|
664
|
+
* console.log(result.columns); // ['product', 'total']
|
|
665
|
+
* console.log(result.rows); // [['Product A', 1000], ['Product B', 2000]]
|
|
666
|
+
* console.log(result.rowCount); // 2
|
|
667
|
+
* ```
|
|
668
|
+
*/
|
|
669
|
+
query(sql: string): Promise<QueryResult>;
|
|
670
|
+
/**
|
|
671
|
+
* Get all data from a loaded table
|
|
672
|
+
*
|
|
673
|
+
* @param tableName - Name of the table
|
|
674
|
+
* @param limit - Maximum number of rows (optional)
|
|
675
|
+
* @returns Query result
|
|
676
|
+
*
|
|
677
|
+
* @example
|
|
678
|
+
* ```typescript
|
|
679
|
+
* await sdk.loadFile('data/sales.parquet', 'sales');
|
|
680
|
+
* const allData = await sdk.getAll('sales');
|
|
681
|
+
* const first100 = await sdk.getAll('sales', 100);
|
|
682
|
+
* ```
|
|
683
|
+
*/
|
|
684
|
+
getAll(tableName: string, limit?: number): Promise<QueryResult>;
|
|
685
|
+
/**
|
|
686
|
+
* Get schema information for a loaded table
|
|
687
|
+
*
|
|
688
|
+
* @param tableName - Name of the table
|
|
689
|
+
* @returns Schema information
|
|
690
|
+
*
|
|
691
|
+
* @example
|
|
692
|
+
* ```typescript
|
|
693
|
+
* await sdk.loadFile('data/sales.parquet', 'sales');
|
|
694
|
+
* const schema = await sdk.getSchema('sales');
|
|
695
|
+
* console.log(schema.columns); // ['column_name', 'column_type', ...]
|
|
696
|
+
* console.log(schema.rows); // [['id', 'INTEGER'], ['name', 'VARCHAR'], ...]
|
|
697
|
+
* ```
|
|
698
|
+
*/
|
|
699
|
+
getSchema(tableName: string): Promise<QueryResult>;
|
|
700
|
+
/**
|
|
701
|
+
* Get row count for a loaded table
|
|
702
|
+
*
|
|
703
|
+
* @param tableName - Name of the table
|
|
704
|
+
* @returns Number of rows
|
|
705
|
+
*
|
|
706
|
+
* @example
|
|
707
|
+
* ```typescript
|
|
708
|
+
* await sdk.loadFile('data/sales.parquet', 'sales');
|
|
709
|
+
* const count = await sdk.count('sales');
|
|
710
|
+
* console.log(`Total rows: ${count}`);
|
|
711
|
+
* ```
|
|
712
|
+
*/
|
|
713
|
+
count(tableName: string): Promise<number>;
|
|
714
|
+
/**
|
|
715
|
+
* Get direct access to the underlying OxyClient
|
|
716
|
+
*
|
|
717
|
+
* Useful for advanced operations like listing apps, getting displays, etc.
|
|
718
|
+
*
|
|
719
|
+
* @returns The OxyClient instance
|
|
720
|
+
*
|
|
721
|
+
* @example
|
|
722
|
+
* ```typescript
|
|
723
|
+
* const apps = await sdk.getClient().listApps();
|
|
724
|
+
* const displays = await sdk.getClient().getDisplays('my-app.app.yml');
|
|
725
|
+
* ```
|
|
726
|
+
*/
|
|
727
|
+
getClient(): OxyClient;
|
|
728
|
+
/**
|
|
729
|
+
* Get direct access to the underlying ParquetReader
|
|
730
|
+
*
|
|
731
|
+
* Useful for advanced operations like registering blobs directly.
|
|
732
|
+
*
|
|
733
|
+
* @returns The ParquetReader instance
|
|
734
|
+
*
|
|
735
|
+
* @example
|
|
736
|
+
* ```typescript
|
|
737
|
+
* const myBlob = new Blob([parquetData]);
|
|
738
|
+
* await sdk.getReader().registerParquet(myBlob, 'mydata');
|
|
739
|
+
* ```
|
|
740
|
+
*/
|
|
741
|
+
getReader(): ParquetReader;
|
|
742
|
+
/**
|
|
743
|
+
* Close and cleanup all resources
|
|
744
|
+
*
|
|
745
|
+
* This clears all loaded data and releases resources. Call this when you're done with the SDK.
|
|
746
|
+
*
|
|
747
|
+
* @example
|
|
748
|
+
* ```typescript
|
|
749
|
+
* const sdk = new OxySDK({ apiKey: 'key', projectId: 'project' });
|
|
750
|
+
* await sdk.loadFile('data/sales.parquet', 'sales');
|
|
751
|
+
* const result = await sdk.query('SELECT * FROM sales');
|
|
752
|
+
* await sdk.close(); // Clean up
|
|
753
|
+
* ```
|
|
754
|
+
*/
|
|
755
|
+
close(): Promise<void>;
|
|
756
|
+
}
|
|
757
|
+
//#endregion
|
|
758
|
+
//#region src/react.d.ts
|
|
759
|
+
/**
|
|
760
|
+
* Context value provided to child components
|
|
761
|
+
*/
|
|
762
|
+
interface OxyContextValue {
|
|
763
|
+
sdk: OxySDK | null;
|
|
764
|
+
isLoading: boolean;
|
|
765
|
+
error: Error | null;
|
|
766
|
+
}
|
|
767
|
+
/**
|
|
768
|
+
* Props for OxyProvider component
|
|
769
|
+
*/
|
|
770
|
+
interface OxyProviderProps {
|
|
771
|
+
children: ReactNode;
|
|
772
|
+
config?: Partial<OxyConfig>;
|
|
773
|
+
/**
|
|
774
|
+
* If true, uses async initialization (supports postMessage auth in iframes)
|
|
775
|
+
* If false, uses synchronous initialization with provided config
|
|
776
|
+
*/
|
|
777
|
+
useAsync?: boolean;
|
|
778
|
+
/**
|
|
779
|
+
* Called when SDK is successfully initialized
|
|
780
|
+
*/
|
|
781
|
+
onReady?: (sdk: OxySDK) => void;
|
|
782
|
+
/**
|
|
783
|
+
* Called when initialization fails
|
|
784
|
+
*/
|
|
785
|
+
onError?: (error: Error) => void;
|
|
786
|
+
}
|
|
787
|
+
/**
|
|
788
|
+
* Provider component that initializes and provides OxySDK to child components
|
|
789
|
+
*
|
|
790
|
+
* @example
|
|
791
|
+
* ```tsx
|
|
792
|
+
* // Synchronous initialization with config
|
|
793
|
+
* function App() {
|
|
794
|
+
* return (
|
|
795
|
+
* <OxyProvider config={{
|
|
796
|
+
* apiKey: 'your-key',
|
|
797
|
+
* projectId: 'your-project',
|
|
798
|
+
* baseUrl: 'https://api.oxy.tech'
|
|
799
|
+
* }}>
|
|
800
|
+
* <Dashboard />
|
|
801
|
+
* </OxyProvider>
|
|
802
|
+
* );
|
|
803
|
+
* }
|
|
804
|
+
* ```
|
|
805
|
+
*
|
|
806
|
+
* @example
|
|
807
|
+
* ```tsx
|
|
808
|
+
* // Async initialization (for iframe/postMessage auth)
|
|
809
|
+
* function App() {
|
|
810
|
+
* return (
|
|
811
|
+
* <OxyProvider
|
|
812
|
+
* useAsync
|
|
813
|
+
* config={{ parentOrigin: 'https://app.example.com' }}
|
|
814
|
+
* >
|
|
815
|
+
* <Dashboard />
|
|
816
|
+
* </OxyProvider>
|
|
817
|
+
* );
|
|
818
|
+
* }
|
|
819
|
+
* ```
|
|
820
|
+
*
|
|
821
|
+
* @example
|
|
822
|
+
* ```tsx
|
|
823
|
+
* // With environment variables
|
|
824
|
+
* import { createConfig } from '@oxy/sdk';
|
|
825
|
+
*
|
|
826
|
+
* function App() {
|
|
827
|
+
* return (
|
|
828
|
+
* <OxyProvider config={createConfig()}>
|
|
829
|
+
* <Dashboard />
|
|
830
|
+
* </OxyProvider>
|
|
831
|
+
* );
|
|
832
|
+
* }
|
|
833
|
+
* ```
|
|
834
|
+
*/
|
|
835
|
+
declare function OxyProvider({
|
|
836
|
+
children,
|
|
837
|
+
config,
|
|
838
|
+
useAsync,
|
|
839
|
+
onReady,
|
|
840
|
+
onError
|
|
841
|
+
}: OxyProviderProps): React.JSX.Element;
|
|
842
|
+
/**
|
|
843
|
+
* Hook to access OxySDK from child components
|
|
844
|
+
*
|
|
845
|
+
* @throws {Error} If used outside of OxyProvider
|
|
846
|
+
* @returns {OxyContextValue} The SDK instance, loading state, and error
|
|
847
|
+
*
|
|
848
|
+
* @example
|
|
849
|
+
* ```tsx
|
|
850
|
+
* function Dashboard() {
|
|
851
|
+
* const { sdk, isLoading, error } = useOxy();
|
|
852
|
+
*
|
|
853
|
+
* useEffect(() => {
|
|
854
|
+
* if (sdk) {
|
|
855
|
+
* sdk.loadAppData('dashboard.app.yml')
|
|
856
|
+
* .then(() => sdk.query('SELECT * FROM my_table'))
|
|
857
|
+
* .then(result => console.log(result));
|
|
858
|
+
* }
|
|
859
|
+
* }, [sdk]);
|
|
860
|
+
*
|
|
861
|
+
* if (isLoading) return <div>Loading SDK...</div>;
|
|
862
|
+
* if (error) return <div>Error: {error.message}</div>;
|
|
863
|
+
* if (!sdk) return null;
|
|
864
|
+
*
|
|
865
|
+
* return <div>Dashboard</div>;
|
|
866
|
+
* }
|
|
867
|
+
* ```
|
|
868
|
+
*/
|
|
869
|
+
declare function useOxy(): OxyContextValue;
|
|
870
|
+
/**
|
|
871
|
+
* Hook to access OxySDK that throws if not ready
|
|
872
|
+
*
|
|
873
|
+
* This is a convenience hook that returns the SDK directly or throws an error if not initialized.
|
|
874
|
+
* Use this when you know the SDK should be ready.
|
|
875
|
+
*
|
|
876
|
+
* @throws {Error} If used outside of OxyProvider or if SDK is not initialized
|
|
877
|
+
* @returns {OxySDK} The SDK instance
|
|
878
|
+
*
|
|
879
|
+
* @example
|
|
880
|
+
* ```tsx
|
|
881
|
+
* function DataTable() {
|
|
882
|
+
* const sdk = useOxySDK();
|
|
883
|
+
* const [data, setData] = useState(null);
|
|
884
|
+
*
|
|
885
|
+
* useEffect(() => {
|
|
886
|
+
* sdk.loadFile('data.parquet', 'data')
|
|
887
|
+
* .then(() => sdk.query('SELECT * FROM data LIMIT 100'))
|
|
888
|
+
* .then(setData);
|
|
889
|
+
* }, [sdk]);
|
|
890
|
+
*
|
|
891
|
+
* return <table>...</table>;
|
|
892
|
+
* }
|
|
893
|
+
* ```
|
|
894
|
+
*/
|
|
895
|
+
declare function useOxySDK(): OxySDK;
|
|
513
896
|
//#endregion
|
|
514
897
|
//#region src/auth/postMessage.d.ts
|
|
515
898
|
/**
|
|
@@ -542,5 +925,5 @@ declare function isInIframe(): boolean;
|
|
|
542
925
|
*/
|
|
543
926
|
declare function requestAuthFromParent(options?: PostMessageAuthOptions): Promise<PostMessageAuthResult>;
|
|
544
927
|
//#endregion
|
|
545
|
-
export { type AppDataResponse, type AppItem, type DataContainer, type DisplayData, type DisplayWithError, type FileReference, type OxyAuthRequestMessage, type OxyAuthResponseMessage, OxyClient, type OxyConfig, type
|
|
928
|
+
export { type AppDataResponse, type AppItem, type DataContainer, type DisplayData, type DisplayWithError, type FileReference, type OxyAuthRequestMessage, type OxyAuthResponseMessage, OxyClient, type OxyConfig, type OxyContextValue, OxyProvider, type OxyProviderProps, OxySDK, ParquetReader, PostMessageAuthInvalidOriginError, PostMessageAuthInvalidResponseError, PostMessageAuthNotInIframeError, type PostMessageAuthOptions, type PostMessageAuthResult, PostMessageAuthTimeoutError, type QueryResult, type TableData, createConfig, createConfigAsync, initializeDuckDB, isInIframe, queryParquet, readParquet, requestAuthFromParent, useOxy, useOxySDK };
|
|
546
929
|
//# sourceMappingURL=index.d.mts.map
|
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/config.ts","../src/types.ts","../src/client.ts","../src/parquet.ts","../src/auth/postMessage.ts"],"sourcesContent":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/config.ts","../src/types.ts","../src/client.ts","../src/parquet.ts","../src/sdk.ts","../src/react.tsx","../src/auth/postMessage.ts"],"sourcesContent":[],"mappings":"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"}
|