Skip to content

Commit

Permalink
feat: switch to typescript
Browse files Browse the repository at this point in the history
  • Loading branch information
gajus authored Jan 22, 2021
2 parents b30c0c2 + 41ffc24 commit f7b2424
Show file tree
Hide file tree
Showing 23 changed files with 187 additions and 142 deletions.
25 changes: 0 additions & 25 deletions .babelrc

This file was deleted.

2 changes: 1 addition & 1 deletion .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@ end_of_line = lf
indent_size = 2
indent_style = space
insert_final_newline = true
trim_trailing_whitespace = true
trim_trailing_whitespace = true
63 changes: 61 additions & 2 deletions .eslintrc
Original file line number Diff line number Diff line change
@@ -1,7 +1,66 @@
{
"parserOptions": {
"project": "./tsconfig.json"
},
"extends": [
"canonical",
"canonical/flowtype"
"canonical/typescript"
],
"root": true
"ignorePatterns": [
"dist",
"node_modules",
"coverage"
],
"overrides": [
{
"files": "*.d.ts",
"rules": {
"filenames/match-regex": 0,
"import/no-default-export": 0,
"import/unambiguous": 0
}
}
],
"root": true,
"rules": {
"@typescript-eslint/ban-ts-comment": 0,
"@typescript-eslint/no-empty-function": 0,
"@typescript-eslint/no-explicit-any": 0,
"@typescript-eslint/no-non-null-assertion": 1,
"@typescript-eslint/no-unused-vars": 1,
"@typescript-eslint/prefer-ts-expect-error": 1,
"@typescript-eslint/array-type": 0,
"@typescript-eslint/require-array-sort-compare": 0,
"import/no-cycle": 0,
"import/no-default-export": 0,
"import/no-unresolved": 0,
"linebreak-style": 0,
"no-continue": 0,
"no-extra-parens": 0,
"no-restricted-syntax": 0,
"no-undef": 0,
"no-unused-expressions": [
2,
{
"allowTaggedTemplates": true
}
],
"no-unused-vars": 0,
"object-curly-newline": [
2,
{
"ExportDeclaration": {
"minProperties": 1,
"multiline": true
},
"ImportDeclaration": {
"minProperties": 1,
"multiline": true
}
}
],
"require-await": 0,
"unicorn/numeric-separators-style": 0,
"unicorn/prevent-abbreviations": 0
}
}
3 changes: 0 additions & 3 deletions .flowconfig

This file was deleted.

3 changes: 1 addition & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,11 @@ dist
node_modules
*.log
.*
!.babelrc
!.editorconfig
!.eslintignore
!.eslintrc
!.flowconfig
!.gitignore
!.npmignore
!.travis.yml
!.README
yarn.lock
2 changes: 1 addition & 1 deletion .npmignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@ test
coverage
.*
*.log
!.flowconfig
!.flowconfig
69 changes: 31 additions & 38 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,50 +5,40 @@
"url": "http://gajus.com"
},
"ava": {
"babel": {
"compileAsTests": [
"test/helpers/**/*"
]
},
"extensions": [
"ts"
],
"files": [
"test/slonik-sql-tag-raw/**/*"
],
"require": [
"@babel/register"
]
"ts-node/register/transpile-only"
],
"timeout": "30s"
},
"dependencies": {
"lodash": "^4.17.15",
"roarr": "^2.15.2",
"serialize-error": "^6.0.0"
"lodash": "^4.17.20",
"roarr": "^4.0.1",
"serialize-error": "^8.0.0"
},
"peerDependencies": {
"slonik": ">=22.4.4"
},
"description": "Slonik SQL tag for constructing dynamic queries.",
"devDependencies": {
"@ava/babel": "^1.0.1",
"@babel/cli": "^7.8.4",
"@babel/core": "^7.9.0",
"@babel/plugin-transform-flow-strip-types": "^7.9.0",
"@babel/preset-env": "^7.9.0",
"@babel/register": "^7.9.0",
"ava": "^3.5.0",
"babel-plugin-istanbul": "^6.0.0",
"babel-plugin-macros": "^2.8.0",
"babel-plugin-transform-export-default-name": "^2.0.4",
"coveralls": "^3.0.11",
"eslint": "^6.8.0",
"eslint-config-canonical": "^19.0.3",
"flow-bin": "^0.121.0",
"flow-copy-source": "^2.0.9",
"husky": "^4.2.3",
"inline-loops.macro": "^1.2.2",
"nyc": "^15.0.0",
"semantic-release": "^17.0.4",
"@types/lodash": "^4.14.168",
"@types/sinon": "^9.0.10",
"ava": "^3.15.0",
"coveralls": "^3.1.0",
"eslint": "^7.18.0",
"eslint-config-canonical": "^25.8.9",
"husky": "^4.3.8",
"nyc": "^15.1.0",
"semantic-release": "^17.3.6",
"sinon": "^9.0.1",
"slonik": "^22.4.4",
"eslint-plugin-flowtype": "^5.2.0"
"slonik": "^23.5.4",
"ts-node": "^9.1.1",
"typescript": "^4.1.3"
},
"engines": {
"node": ">=10.0"
Expand All @@ -67,23 +57,24 @@
],
"license": "BSD-3-Clause",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
"name": "slonik-sql-tag-raw",
"nyc": {
"all": true,
"exclude": [
"src/bin",
"src/queries/*.js"
"src/queries/*.ts",
"**/*.d.ts"
],
"include": [
"src/**/*.js"
"src/**/*.ts"
],
"instrument": false,
"reporter": [
"html",
"text-summary"
],
"require": [
"@babel/register"
"ts-node/register/transpile-only"
],
"silent": true,
"sourceMap": false
Expand All @@ -93,9 +84,11 @@
"url": "https://github.com/gajus/slonik-sql-tag-raw"
},
"scripts": {
"build": "rm -fr ./dist && NODE_ENV=production babel ./src --out-dir ./dist --copy-files --source-maps && flow-copy-source src dist",
"lint": "eslint ./src ./test && flow",
"test": "NODE_ENV=test nyc ava --verbose --serial"
"build": "rm -fr ./dist && tsc -p tsconfig.lib.json",
"eslint": "eslint --ext '.ts'",
"lint": "npm run eslint ./src ./test && npm run type-check",
"test": "NODE_ENV=test nyc ava --verbose",
"type-check": "tsc -p ."
},
"version": "1.0.1"
}
2 changes: 0 additions & 2 deletions src/Logger.js → src/Logger.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
// @flow

import Logger from 'roarr';

export default Logger.child({
Expand Down
2 changes: 0 additions & 2 deletions src/index.js → src/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
// @flow

export {
raw,
} from './sqlTags';
3 changes: 0 additions & 3 deletions src/sqlTags/index.js

This file was deleted.

3 changes: 3 additions & 0 deletions src/sqlTags/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
export {
default as raw,
} from './raw';
29 changes: 0 additions & 29 deletions src/sqlTags/raw.js

This file was deleted.

22 changes: 22 additions & 0 deletions src/sqlTags/raw.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import type {
SqlSqlTokenType,
ValueExpressionType,
} from 'slonik';
import type {
NamedParameterValuesType,
} from '../types';
import {
interpolatePositionalParameterReferences,
interpolateNamedParameterReferences,
} from '../utilities';

export default (
sql: string,
values?: NamedParameterValuesType | ReadonlyArray<ValueExpressionType>,
): SqlSqlTokenType => {
if (Array.isArray(values)) {
return interpolatePositionalParameterReferences(sql, values as ValueExpressionType[]);
} else {
return interpolateNamedParameterReferences(sql, values as NamedParameterValuesType);
}
};
6 changes: 2 additions & 4 deletions src/types.js → src/types.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
// @flow

import type {
ValueExpressionType,
createSqlTokenSqlFragment,
} from 'slonik';

export type NamedParameterValuesType = {
[key: string]: ValueExpressionType,
...
};

export type PositionalParameterValuesType = $ReadOnlyArray<ValueExpressionType>;
export type PrimitiveValueExpressionType = ReturnType<typeof createSqlTokenSqlFragment>['values'][number];
4 changes: 0 additions & 4 deletions src/utilities/index.js

This file was deleted.

6 changes: 6 additions & 0 deletions src/utilities/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
export {
default as interpolateNamedParameterReferences,
} from './interpolateNamedParameterReferences';
export {
default as interpolatePositionalParameterReferences,
} from './interpolatePositionalParameterReferences';
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
// @flow

import {
InvalidInputError,
} from 'slonik';
import {
difference,
} from 'lodash';
import type {
SqlSqlTokenType,
} from 'slonik';
import {
InvalidInputError,
} from 'slonik';
import Logger from '../Logger';
import type {
NamedParameterValuesType,
Expand All @@ -27,7 +28,7 @@ const namedPlaceholderRegex = /[\s(,]:([_a-z]+)/g;
export default (
inputSql: string,
inputValues: NamedParameterValuesType = {},
) => {
): SqlSqlTokenType => {
const resultValues = [];
const parameterNames = Object.keys(inputValues);

Expand All @@ -37,7 +38,7 @@ export default (
resultValues.push(parameterValue);
}

const usedParamterNames = [];
const usedParamterNames = [] as string[];

const resultSql = inputSql.replace(namedPlaceholderRegex, (match, g1) => {
if (!parameterNames.includes(g1)) {
Expand All @@ -48,7 +49,7 @@ export default (

const parameterIndex = parameterNames.indexOf(g1) + 1;

return match.slice(0, -g1.length - 1) + '$' + parameterIndex;
return match.slice(0, -g1.length - 1) + `$${parameterIndex}`;
});

const unusedParameterNames = difference(parameterNames, usedParamterNames);
Expand Down
Loading

0 comments on commit f7b2424

Please sign in to comment.