@cloudquery/plugin-sdk-javascript
Version:
This is the high-level package to use for developing CloudQuery plugins in JavaScript
42 lines (41 loc) • 2.31 kB
TypeScript
import type { Writable } from 'node:stream';
import type { RecordBatch } from '@apache-arrow/esnext-esm';
import { Schema } from '@apache-arrow/esnext-esm';
import type { Column } from './column.js';
import type { ClientMeta } from './meta.js';
import type { Resource } from './resource.js';
import type { Nullable } from './types.js';
export type TableResolver = (clientMeta: ClientMeta, parent: Nullable<Resource>, stream: Writable) => Promise<void>;
export type RowResolver = (clientMeta: ClientMeta, resource: Resource) => Promise<void>;
export type Multiplexer = (clientMeta: ClientMeta) => ClientMeta[];
export type Transform = (table: Table) => void;
export type Table = {
name: string;
title: string;
description: string;
columns: Column[];
relations: Table[];
transform: Transform;
resolver: TableResolver;
multiplexer: Multiplexer;
postResourceResolver: RowResolver;
preResourceResolver: RowResolver;
isIncremental: boolean;
ignoreInTests: boolean;
parent: Nullable<Table>;
pkConstraintName: string;
};
export declare const createTable: ({ name, title, description, columns, relations, transform, resolver, multiplexer, postResourceResolver, preResourceResolver, isIncremental, ignoreInTests, parent, pkConstraintName, }?: Partial<Table>) => Table;
export declare const getTablesNames: (tables: Table[]) => string[];
export declare const getTopLevelTableByName: (tables: Table[], name: string) => Table | undefined;
export declare const getTableByName: (tables: Table[], name: string) => Table | undefined;
export declare const getPrimaryKeys: (table: Table) => string[];
export declare const flattenTables: (tables: Table[]) => Table[];
export declare const getAllParents: (table: Table) => Table[];
export declare const filterTables: (tables: Table[], include: string[], skip: string[], skipDependantTables: boolean) => Table[];
export declare const toArrowSchema: (table: Table) => Schema;
export declare const fromArrowSchema: (schema: Schema) => Table;
export declare const encodeTable: (table: Table) => Uint8Array;
export declare const encodeTables: (tables: Table[]) => Uint8Array[];
export declare const decodeTable: (bytes: Uint8Array) => Table;
export declare const decodeRecord: (bytes: Uint8Array) => [string, RecordBatch<any>[]];