UNPKG

@electric-sql/pglite

Version:

PGlite is a WASM Postgres build packaged into a TypeScript client library that enables you to run Postgres in the browser, Node.js and Bun, with no need to install any other dependencies. It is only 3.7mb gzipped.

70 lines (68 loc) 2.36 kB
declare const TemplateType: { readonly part: "part"; readonly container: "container"; }; interface TemplatePart { _templateType: typeof TemplateType.part; str: string; } interface TemplateContainer { _templateType: typeof TemplateType.container; strings: TemplateStringsArray; values: any[]; } interface TemplatedQuery { query: string; params: any[]; } /** * Templating utility that allows nesting multiple SQL strings without * losing the automatic parametrization capabilities of {@link query}. * * @example * ```ts * query`SELECT * FROM tale ${withFilter ? sql`WHERE foo = ${fooVar}` : sql``}` * // > { query: 'SELECT * FROM tale WHERE foo = $1', params: [fooVar] } * // or * // > { query: 'SELECT * FROM tale', params: [] } * ``` */ declare function sql(strings: TemplateStringsArray, ...values: any[]): TemplateContainer; /** * Allows adding identifiers into a query template string without * parametrizing them. This method will automatically escape identifiers. * * @example * ```ts * query`SELECT * FROM ${identifier`foo`} WHERE ${identifier`id`} = ${id}` * // > { query: 'SELECT * FROM "foo" WHERE "id" = $1', params: [id] } * ``` */ declare function identifier(strings: TemplateStringsArray, ...values: any[]): TemplatePart; /** * Allows adding raw strings into a query template string without * parametrizing or modifying them in any way. * * @example * ```ts * query`SELECT * FROM foo ${raw`WHERE id = ${2+3}`}` * // > { query: 'SELECT * FROM foo WHERE id = 5', params: [] } * ``` */ declare function raw(strings: TemplateStringsArray, ...values: any[]): TemplatePart; /** * Generates a parametrized query from a templated query string, assigning * the provided values to the appropriate named parameters. * * You can use templating helpers like {@link identifier} and {@link raw} to * add identifiers and raw strings to the query without making them parameters, * and you can use {@link sql} to nest multiple queries and create utilities. * * @example * ```ts * query`SELECT * FROM ${identifier`foo`} WHERE id = ${id} and name = ${name}` * // > { query: 'SELECT * FROM "foo" WHERE id = $1 and name = $2', params: [id, name] } * ``` */ declare function query(strings: TemplateStringsArray, ...values: any[]): TemplatedQuery; export { identifier, query, raw, sql };