From 227247c5be1e6c3b4fdf08b6bcc3c34f59239d4f Mon Sep 17 00:00:00 2001 From: Jaap Taal Date: Sun, 4 Nov 2018 15:31:51 +0100 Subject: [PATCH] Adds type definitions for sql-template npm package --- types/sql-template/index.d.ts | 28 ++++++++++++++++++++++++ types/sql-template/sql-template-tests.ts | 21 ++++++++++++++++++ types/sql-template/tsconfig.json | 23 +++++++++++++++++++ types/sql-template/tslint.json | 1 + 4 files changed, 73 insertions(+) create mode 100644 types/sql-template/index.d.ts create mode 100644 types/sql-template/sql-template-tests.ts create mode 100644 types/sql-template/tsconfig.json create mode 100644 types/sql-template/tslint.json diff --git a/types/sql-template/index.d.ts b/types/sql-template/index.d.ts new file mode 100644 index 0000000000..c05ae75516 --- /dev/null +++ b/types/sql-template/index.d.ts @@ -0,0 +1,28 @@ +// Type definitions for sql-template 1.2 +// Project: https://github.com/131/sql-template +// Definitions by: Jaap Taal +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +// TypeScript Version: 2.2 + +export = SQL; +declare function SQL(parts: TemplateStringsArray, ...values: any[]): SQL.Fragment; + +declare namespace SQL { + interface Fragment { + raw: string; + text: string; + values?: any[]; + } + + type ChainFn = (values: any[], part: string) => string; + + type Transformer = (values: any[], str: string, chain: ChainFn) => void; + + function insert(table: string, values: object): Fragment; + function insert_bulk(table: string, keys: string[], values: any[][]): Fragment; + function update(table: string, values: object, where?: any): Fragment; + function select(table: string, where?: any, cols?: string, extra?: string): Fragment; + function search_blob(search_field: string, qs: string, main_field?: string, LIKE?: string): Fragment | false; + + const transformers: {[key: string]: Transformer}; +} diff --git a/types/sql-template/sql-template-tests.ts b/types/sql-template/sql-template-tests.ts new file mode 100644 index 0000000000..4b44f1d3a7 --- /dev/null +++ b/types/sql-template/sql-template-tests.ts @@ -0,0 +1,21 @@ +import SQL = require("sql-template"); + +const query = SQL`INSERT INTO table (column) VALUES (${"value"})`; +SQL.transformers["in"]([], "", () => ""); + +SQL.insert("table", {column: "value"}); +SQL.insert_bulk("table", ["column"], [["value"]]); + +SQL.update("table", {column: "value"}); +SQL.update("table", {column: "value"}, true); +SQL.update("table", {column: "value2"}, {column: "value1"}); +SQL.update("table", {column: "value2"}, SQL`column = ${"value1"}`); + +SQL.select("table"); +SQL.select("table", {column: "value"}); +SQL.select("table", {column: "value"}, "a, b"); +SQL.select("table", {column: "value"}, "a, b", "GROUP BY x"); + +SQL.search_blob("column", "value"); +SQL.search_blob("column", "value #1", "user_id"); +SQL.search_blob("column", "value #1", "user_id", "LIKE"); diff --git a/types/sql-template/tsconfig.json b/types/sql-template/tsconfig.json new file mode 100644 index 0000000000..27ac3eba34 --- /dev/null +++ b/types/sql-template/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "strictFunctionTypes": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "sql-template-tests.ts" + ] +} diff --git a/types/sql-template/tslint.json b/types/sql-template/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/sql-template/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" }