From 55b2d1abfd475fd5b4a2859feb4f7adefdbb2a0b Mon Sep 17 00:00:00 2001 From: Mirek Rusin Date: Thu, 22 Aug 2024 13:07:01 +0200 Subject: [PATCH 1/5] chore: updating repo --- .eslintrc | 15 - .npmignore | 5 +- Makefile | 10 +- coverage/clover.xml | 1511 +++++++++ coverage/coverage-final.json | 95 + coverage/lcov-report/base.css | 224 ++ coverage/lcov-report/block-navigation.js | 87 + coverage/lcov-report/favicon.png | Bin 0 -> 445 bytes coverage/lcov-report/index.html | 131 + coverage/lcov-report/prettify.css | 1 + coverage/lcov-report/prettify.js | 2 + coverage/lcov-report/sort-arrow-sprite.png | Bin 0 -> 138 bytes coverage/lcov-report/sorter.js | 196 ++ coverage/lcov-report/src/and.ts.html | 100 + .../lcov-report/src/assign-object.ts.html | 214 ++ coverage/lcov-report/src/assign.ts.html | 169 + coverage/lcov-report/src/auto.ts.html | 265 ++ coverage/lcov-report/src/between.ts.html | 121 + coverage/lcov-report/src/columns.ts.html | 151 + coverage/lcov-report/src/defined.ts.html | 130 + coverage/lcov-report/src/delete.ts.html | 142 + coverage/lcov-report/src/demargin.ts.html | 184 + coverage/lcov-report/src/distinct.ts.html | 151 + coverage/lcov-report/src/eq.ts.html | 169 + coverage/lcov-report/src/exists.ts.html | 133 + coverage/lcov-report/src/fallback.ts.html | 118 + coverage/lcov-report/src/false-value.ts.html | 133 + coverage/lcov-report/src/gt.ts.html | 124 + coverage/lcov-report/src/gte.ts.html | 124 + coverage/lcov-report/src/identifier.ts.html | 331 ++ coverage/lcov-report/src/identifiers.ts.html | 130 + coverage/lcov-report/src/in.ts.html | 157 + coverage/lcov-report/src/indent-tail.ts.html | 115 + coverage/lcov-report/src/index.html | 1496 ++++++++ coverage/lcov-report/src/index.ts.html | 643 ++++ .../src/inline-table-of-column.ts.html | 169 + .../src/inline-table-of-objects.ts.html | 166 + .../lcov-report/src/insert-ignore.ts.html | 265 ++ .../src/insert-not-matched.ts.html | 274 ++ .../lcov-report/src/insert-object.ts.html | 178 + .../lcov-report/src/insert-objects.ts.html | 241 ++ coverage/lcov-report/src/interpolate.ts.html | 277 ++ coverage/lcov-report/src/interpolate1.ts.html | 139 + coverage/lcov-report/src/is-defined.ts.html | 142 + coverage/lcov-report/src/is-null.ts.html | 112 + coverage/lcov-report/src/is-object.ts.html | 106 + coverage/lcov-report/src/is-string.ts.html | 109 + coverage/lcov-report/src/is.ts.html | 133 + coverage/lcov-report/src/json-modify.ts.html | 190 ++ .../lcov-report/src/json-path-exists.ts.html | 91 + coverage/lcov-report/src/json-path.ts.html | 154 + coverage/lcov-report/src/json-query.ts.html | 91 + coverage/lcov-report/src/json-value.ts.html | 91 + coverage/lcov-report/src/json.ts.html | 133 + .../lcov-report/src/keys-of-objects.ts.html | 178 + coverage/lcov-report/src/keywords.ts.html | 3022 +++++++++++++++++ coverage/lcov-report/src/like.ts.html | 160 + .../src/limited-hints-identifier.ts.html | 127 + coverage/lcov-report/src/line.ts.html | 145 + coverage/lcov-report/src/lines.ts.html | 136 + coverage/lcov-report/src/list.ts.html | 154 + .../lcov-report/src/logical-false.ts.html | 133 + coverage/lcov-report/src/logical-true.ts.html | 133 + coverage/lcov-report/src/lt.ts.html | 124 + coverage/lcov-report/src/lte.ts.html | 124 + .../src/margin-of-first-line.ts.html | 124 + .../src/margin-of-last-line.ts.html | 106 + coverage/lcov-report/src/maybe-line.ts.html | 145 + coverage/lcov-report/src/maybe-lines.ts.html | 145 + coverage/lcov-report/src/merge-1n.ts.html | 220 ++ coverage/lcov-report/src/modify-jsons.ts.html | 271 ++ coverage/lcov-report/src/ne.ts.html | 139 + coverage/lcov-report/src/ng.ts.html | 109 + coverage/lcov-report/src/nl.ts.html | 109 + coverage/lcov-report/src/not-between.ts.html | 121 + coverage/lcov-report/src/not-distinct.ts.html | 130 + coverage/lcov-report/src/not-in.ts.html | 133 + coverage/lcov-report/src/not.ts.html | 100 + coverage/lcov-report/src/now.ts.html | 103 + coverage/lcov-report/src/nstring.ts.html | 124 + coverage/lcov-report/src/null.ts.html | 103 + coverage/lcov-report/src/number.ts.html | 121 + coverage/lcov-report/src/object-id.ts.html | 109 + coverage/lcov-report/src/op.ts.html | 136 + coverage/lcov-report/src/or.ts.html | 100 + coverage/lcov-report/src/order-by.ts.html | 112 + coverage/lcov-report/src/pick.ts.html | 127 + .../lcov-report/src/quoted-nstring.ts.html | 184 + .../lcov-report/src/random-identifier.ts.html | 133 + coverage/lcov-report/src/raw.ts.html | 109 + .../lcov-report/src/replace-objects.ts.html | 271 ++ coverage/lcov-report/src/row.ts.html | 118 + coverage/lcov-report/src/rowset.ts.html | 121 + .../src/sanitised-identifier.ts.html | 115 + coverage/lcov-report/src/sanitised.ts.html | 109 + coverage/lcov-report/src/select.ts.html | 166 + coverage/lcov-report/src/star.ts.html | 121 + .../src/table-hint-limited.ts.html | 250 ++ coverage/lcov-report/src/template.ts.html | 118 + coverage/lcov-report/src/test/client.ts.html | 514 +++ coverage/lcov-report/src/test/index.html | 116 + coverage/lcov-report/src/top.ts.html | 175 + coverage/lcov-report/src/true-value.ts.html | 133 + coverage/lcov-report/src/unique.ts.html | 136 + coverage/lcov-report/src/unix.ts.html | 103 + .../lcov-report/src/update-objects.ts.html | 259 ++ coverage/lcov-report/src/update.ts.html | 199 ++ .../lcov-report/src/upsert-objects.ts.html | 295 ++ coverage/lcov-report/src/where.ts.html | 664 ++++ coverage/lcov.info | 2725 +++++++++++++++ eslint.config.mjs | 1 + package.json | 34 +- src/assign-object.test.ts | 1 + src/assign.test.ts | 1 + src/defined.ts | 2 + src/demargin.test.ts | 1 + src/demargin.ts | 12 +- src/identifier.test.ts | 1 + src/identifier.ts | 2 +- src/in.test.ts | 7 +- src/in.ts | 2 +- src/inline-table-of-column.ts | 2 +- src/inline-table-of-objects.test.ts | 1 + src/insert-not-matched.ts | 2 +- src/insert-object.test.ts | 1 + src/insert-object.ts | 2 +- src/insert-objects.test.ts | 9 +- src/insert-objects.ts | 2 +- src/interpolate.test.ts | 1 + src/interpolate.ts | 8 +- src/interpolate1.ts | 2 +- src/is-null.test.ts | 1 + src/json-modify.test.ts | 1 + src/json-path.test.ts | 1 + src/json-path.ts | 2 +- src/keys-of-objects.ts | 2 +- src/keywords.ts | 2 +- src/lines.test.ts | 7 +- src/margin-of-first-line.test.ts | 1 + src/margin-of-last-line.test.ts | 1 + src/margin.test.ts | 1 + src/merge-1n.ts | 2 +- src/merge1n.test.ts | 1 + src/modify-jsons.test.ts | 1 + src/modify-jsons.ts | 2 + src/not-in.ts | 2 +- src/order-by.test.ts | 1 + src/order-by.ts | 2 +- src/random-identifier.ts | 6 +- src/select.ts | 4 +- src/sql.test.ts | 7 +- src/star.ts | 2 +- src/table-hint-limited.ts | 2 +- src/test/{sql.ts => client.ts} | 18 +- src/undefined-propagation.test.ts | 5 +- src/update-object.test.ts | 1 + src/update-objects.ts | 2 +- src/update.test.ts | 1 + src/upsert-objects.ts | 2 +- src/where.test.ts | 1 + src/where.ts | 10 +- tsconfig.cjs.json | 14 +- tsconfig.json | 28 +- tsconfig.mjs.json | 12 + 164 files changed, 25210 insertions(+), 124 deletions(-) delete mode 100644 .eslintrc create mode 100644 coverage/clover.xml create mode 100644 coverage/coverage-final.json create mode 100644 coverage/lcov-report/base.css create mode 100644 coverage/lcov-report/block-navigation.js create mode 100644 coverage/lcov-report/favicon.png create mode 100644 coverage/lcov-report/index.html create mode 100644 coverage/lcov-report/prettify.css create mode 100644 coverage/lcov-report/prettify.js create mode 100644 coverage/lcov-report/sort-arrow-sprite.png create mode 100644 coverage/lcov-report/sorter.js create mode 100644 coverage/lcov-report/src/and.ts.html create mode 100644 coverage/lcov-report/src/assign-object.ts.html create mode 100644 coverage/lcov-report/src/assign.ts.html create mode 100644 coverage/lcov-report/src/auto.ts.html create mode 100644 coverage/lcov-report/src/between.ts.html create mode 100644 coverage/lcov-report/src/columns.ts.html create mode 100644 coverage/lcov-report/src/defined.ts.html create mode 100644 coverage/lcov-report/src/delete.ts.html create mode 100644 coverage/lcov-report/src/demargin.ts.html create mode 100644 coverage/lcov-report/src/distinct.ts.html create mode 100644 coverage/lcov-report/src/eq.ts.html create mode 100644 coverage/lcov-report/src/exists.ts.html create mode 100644 coverage/lcov-report/src/fallback.ts.html create mode 100644 coverage/lcov-report/src/false-value.ts.html create mode 100644 coverage/lcov-report/src/gt.ts.html create mode 100644 coverage/lcov-report/src/gte.ts.html create mode 100644 coverage/lcov-report/src/identifier.ts.html create mode 100644 coverage/lcov-report/src/identifiers.ts.html create mode 100644 coverage/lcov-report/src/in.ts.html create mode 100644 coverage/lcov-report/src/indent-tail.ts.html create mode 100644 coverage/lcov-report/src/index.html create mode 100644 coverage/lcov-report/src/index.ts.html create mode 100644 coverage/lcov-report/src/inline-table-of-column.ts.html create mode 100644 coverage/lcov-report/src/inline-table-of-objects.ts.html create mode 100644 coverage/lcov-report/src/insert-ignore.ts.html create mode 100644 coverage/lcov-report/src/insert-not-matched.ts.html create mode 100644 coverage/lcov-report/src/insert-object.ts.html create mode 100644 coverage/lcov-report/src/insert-objects.ts.html create mode 100644 coverage/lcov-report/src/interpolate.ts.html create mode 100644 coverage/lcov-report/src/interpolate1.ts.html create mode 100644 coverage/lcov-report/src/is-defined.ts.html create mode 100644 coverage/lcov-report/src/is-null.ts.html create mode 100644 coverage/lcov-report/src/is-object.ts.html create mode 100644 coverage/lcov-report/src/is-string.ts.html create mode 100644 coverage/lcov-report/src/is.ts.html create mode 100644 coverage/lcov-report/src/json-modify.ts.html create mode 100644 coverage/lcov-report/src/json-path-exists.ts.html create mode 100644 coverage/lcov-report/src/json-path.ts.html create mode 100644 coverage/lcov-report/src/json-query.ts.html create mode 100644 coverage/lcov-report/src/json-value.ts.html create mode 100644 coverage/lcov-report/src/json.ts.html create mode 100644 coverage/lcov-report/src/keys-of-objects.ts.html create mode 100644 coverage/lcov-report/src/keywords.ts.html create mode 100644 coverage/lcov-report/src/like.ts.html create mode 100644 coverage/lcov-report/src/limited-hints-identifier.ts.html create mode 100644 coverage/lcov-report/src/line.ts.html create mode 100644 coverage/lcov-report/src/lines.ts.html create mode 100644 coverage/lcov-report/src/list.ts.html create mode 100644 coverage/lcov-report/src/logical-false.ts.html create mode 100644 coverage/lcov-report/src/logical-true.ts.html create mode 100644 coverage/lcov-report/src/lt.ts.html create mode 100644 coverage/lcov-report/src/lte.ts.html create mode 100644 coverage/lcov-report/src/margin-of-first-line.ts.html create mode 100644 coverage/lcov-report/src/margin-of-last-line.ts.html create mode 100644 coverage/lcov-report/src/maybe-line.ts.html create mode 100644 coverage/lcov-report/src/maybe-lines.ts.html create mode 100644 coverage/lcov-report/src/merge-1n.ts.html create mode 100644 coverage/lcov-report/src/modify-jsons.ts.html create mode 100644 coverage/lcov-report/src/ne.ts.html create mode 100644 coverage/lcov-report/src/ng.ts.html create mode 100644 coverage/lcov-report/src/nl.ts.html create mode 100644 coverage/lcov-report/src/not-between.ts.html create mode 100644 coverage/lcov-report/src/not-distinct.ts.html create mode 100644 coverage/lcov-report/src/not-in.ts.html create mode 100644 coverage/lcov-report/src/not.ts.html create mode 100644 coverage/lcov-report/src/now.ts.html create mode 100644 coverage/lcov-report/src/nstring.ts.html create mode 100644 coverage/lcov-report/src/null.ts.html create mode 100644 coverage/lcov-report/src/number.ts.html create mode 100644 coverage/lcov-report/src/object-id.ts.html create mode 100644 coverage/lcov-report/src/op.ts.html create mode 100644 coverage/lcov-report/src/or.ts.html create mode 100644 coverage/lcov-report/src/order-by.ts.html create mode 100644 coverage/lcov-report/src/pick.ts.html create mode 100644 coverage/lcov-report/src/quoted-nstring.ts.html create mode 100644 coverage/lcov-report/src/random-identifier.ts.html create mode 100644 coverage/lcov-report/src/raw.ts.html create mode 100644 coverage/lcov-report/src/replace-objects.ts.html create mode 100644 coverage/lcov-report/src/row.ts.html create mode 100644 coverage/lcov-report/src/rowset.ts.html create mode 100644 coverage/lcov-report/src/sanitised-identifier.ts.html create mode 100644 coverage/lcov-report/src/sanitised.ts.html create mode 100644 coverage/lcov-report/src/select.ts.html create mode 100644 coverage/lcov-report/src/star.ts.html create mode 100644 coverage/lcov-report/src/table-hint-limited.ts.html create mode 100644 coverage/lcov-report/src/template.ts.html create mode 100644 coverage/lcov-report/src/test/client.ts.html create mode 100644 coverage/lcov-report/src/test/index.html create mode 100644 coverage/lcov-report/src/top.ts.html create mode 100644 coverage/lcov-report/src/true-value.ts.html create mode 100644 coverage/lcov-report/src/unique.ts.html create mode 100644 coverage/lcov-report/src/unix.ts.html create mode 100644 coverage/lcov-report/src/update-objects.ts.html create mode 100644 coverage/lcov-report/src/update.ts.html create mode 100644 coverage/lcov-report/src/upsert-objects.ts.html create mode 100644 coverage/lcov-report/src/where.ts.html create mode 100644 coverage/lcov.info create mode 100644 eslint.config.mjs rename src/test/{sql.ts => client.ts} (90%) create mode 100644 tsconfig.mjs.json diff --git a/.eslintrc b/.eslintrc deleted file mode 100644 index 16931f1..0000000 --- a/.eslintrc +++ /dev/null @@ -1,15 +0,0 @@ -{ - "root": true, - "parser": "@typescript-eslint/parser", - "plugins": [ - "@typescript-eslint" - ], - "extends": [ - "plugin:@typescript-eslint/recommended", - "@appliedblockchain" - ], - "rules": { - "no-unused-vars": "off", - "@typescript-eslint/no-non-null-assertion": "off" - } -} diff --git a/.npmignore b/.npmignore index 85c3b6f..8bcd23e 100644 --- a/.npmignore +++ b/.npmignore @@ -1,9 +1,8 @@ .github .vscode -*.sh *.test.* jest.* Makefile -src test -tsconfig.json +tsconfig.* +wip diff --git a/Makefile b/Makefile index 05182cf..b32f6ba 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,7 @@ test: - pnpm exec jest + pnpm tsc + pnpm eslint src + pnpm jest --coverage clean: rm -Rf cjs mjs test/*.js @@ -11,7 +13,7 @@ build-cjs: build-mjs: rm -Rf mjs - pnpm exec tsc -d --sourceMap --outDir mjs + pnpm exec tsc -p tsconfig.mjs.json build: build-cjs build-mjs @@ -20,11 +22,11 @@ rebuild: clean build update: pnpm up --latest -preversion: rebuild test +preversion: test rebuild postversion: git push git push --tags - pnpm publish + pnpm publish --access public .PHONY: test diff --git a/coverage/clover.xml b/coverage/clover.xml new file mode 100644 index 0000000..87d8d97 --- /dev/null +++ b/coverage/clover.xml @@ -0,0 +1,1511 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/coverage/coverage-final.json b/coverage/coverage-final.json new file mode 100644 index 0000000..b59059e --- /dev/null +++ b/coverage/coverage-final.json @@ -0,0 +1,95 @@ +{"/Users/Mirek.Rusin/tsql/src/and.ts": {"path":"/Users/Mirek.Rusin/tsql/src/and.ts","statementMap":{"0":{"start":{"line":3,"column":9},"end":{"line":3,"column":null}},"1":{"start":{"line":5,"column":0},"end":{"line":5,"column":15}},"2":{"start":{"line":1,"column":20},"end":{"line":1,"column":null}},"3":{"start":{"line":5,"column":15},"end":{"line":5,"column":18}}},"fnMap":{},"branchMap":{},"s":{"0":0,"1":28,"2":22,"3":22},"f":{},"b":{}} +,"/Users/Mirek.Rusin/tsql/src/assign-object.ts": {"path":"/Users/Mirek.Rusin/tsql/src/assign-object.ts","statementMap":{"0":{"start":{"line":15,"column":16},"end":{"line":15,"column":28}},"1":{"start":{"line":43,"column":0},"end":{"line":43,"column":15}},"2":{"start":{"line":1,"column":19},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":15},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":21},"end":{"line":3,"column":null}},"5":{"start":{"line":4,"column":17},"end":{"line":4,"column":null}},"6":{"start":{"line":5,"column":17},"end":{"line":5,"column":null}},"7":{"start":{"line":16,"column":41},"end":{"line":16,"column":43}},"8":{"start":{"line":17,"column":45},"end":{"line":17,"column":null}},"9":{"start":{"line":18,"column":2},"end":{"line":31,"column":null}},"10":{"start":{"line":19,"column":4},"end":{"line":29,"column":null}},"11":{"start":{"line":20,"column":35},"end":{"line":20,"column":null}},"12":{"start":{"line":21,"column":6},"end":{"line":27,"column":null}},"13":{"start":{"line":28,"column":6},"end":{"line":28,"column":null}},"14":{"start":{"line":30,"column":4},"end":{"line":30,"column":null}},"15":{"start":{"line":32,"column":2},"end":{"line":39,"column":null}},"16":{"start":{"line":33,"column":14},"end":{"line":37,"column":null}},"17":{"start":{"line":38,"column":4},"end":{"line":38,"column":null}},"18":{"start":{"line":40,"column":2},"end":{"line":40,"column":null}},"19":{"start":{"line":43,"column":15},"end":{"line":43,"column":27}}},"fnMap":{"0":{"name":"assignObject","decl":{"start":{"line":15,"column":16},"end":{"line":15,"column":28}},"loc":{"start":{"line":15,"column":60},"end":{"line":41,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":19,"column":4},"end":{"line":29,"column":null}},"type":"if","locations":[{"start":{"line":19,"column":4},"end":{"line":29,"column":null}}]},"1":{"loc":{"start":{"line":23,"column":12},"end":{"line":23,"column":52}},"type":"binary-expr","locations":[{"start":{"line":23,"column":12},"end":{"line":23,"column":36}},{"start":{"line":23,"column":40},"end":{"line":23,"column":52}}]}},"s":{"0":0,"1":10,"2":22,"3":22,"4":22,"5":22,"6":22,"7":10,"8":10,"9":10,"10":22,"11":3,"12":3,"13":3,"14":19,"15":10,"16":1,"17":1,"18":10,"19":22},"f":{"0":10},"b":{"0":[3],"1":[3,1]}} +,"/Users/Mirek.Rusin/tsql/src/assign.ts": {"path":"/Users/Mirek.Rusin/tsql/src/assign.ts","statementMap":{"0":{"start":{"line":14,"column":16},"end":{"line":14,"column":22}},"1":{"start":{"line":28,"column":0},"end":{"line":28,"column":15}},"2":{"start":{"line":1,"column":15},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":21},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":14},"end":{"line":3,"column":null}},"5":{"start":{"line":4,"column":17},"end":{"line":4,"column":null}},"6":{"start":{"line":15,"column":2},"end":{"line":17,"column":null}},"7":{"start":{"line":16,"column":4},"end":{"line":16,"column":null}},"8":{"start":{"line":18,"column":2},"end":{"line":20,"column":null}},"9":{"start":{"line":19,"column":4},"end":{"line":19,"column":null}},"10":{"start":{"line":21,"column":2},"end":{"line":23,"column":null}},"11":{"start":{"line":22,"column":4},"end":{"line":22,"column":null}},"12":{"start":{"line":24,"column":31},"end":{"line":24,"column":null}},"13":{"start":{"line":25,"column":2},"end":{"line":25,"column":null}},"14":{"start":{"line":28,"column":15},"end":{"line":28,"column":21}}},"fnMap":{"0":{"name":"assign","decl":{"start":{"line":14,"column":16},"end":{"line":14,"column":22}},"loc":{"start":{"line":14,"column":60},"end":{"line":26,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":15,"column":2},"end":{"line":17,"column":null}},"type":"if","locations":[{"start":{"line":15,"column":2},"end":{"line":17,"column":null}}]},"1":{"loc":{"start":{"line":18,"column":2},"end":{"line":20,"column":null}},"type":"if","locations":[{"start":{"line":18,"column":2},"end":{"line":20,"column":null}}]},"2":{"loc":{"start":{"line":21,"column":2},"end":{"line":23,"column":null}},"type":"if","locations":[{"start":{"line":21,"column":2},"end":{"line":23,"column":null}}]}},"s":{"0":0,"1":31,"2":22,"3":22,"4":22,"5":22,"6":31,"7":9,"8":22,"9":15,"10":7,"11":6,"12":1,"13":1,"14":22},"f":{"0":31},"b":{"0":[9],"1":[15],"2":[6]}} +,"/Users/Mirek.Rusin/tsql/src/auto.ts": {"path":"/Users/Mirek.Rusin/tsql/src/auto.ts","statementMap":{"0":{"start":{"line":33,"column":13},"end":{"line":33,"column":17}},"1":{"start":{"line":60,"column":0},"end":{"line":60,"column":15}},"2":{"start":{"line":1,"column":23},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":17},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":20},"end":{"line":3,"column":null}},"5":{"start":{"line":4,"column":18},"end":{"line":4,"column":null}},"6":{"start":{"line":5,"column":19},"end":{"line":5,"column":null}},"7":{"start":{"line":6,"column":16},"end":{"line":6,"column":null}},"8":{"start":{"line":7,"column":14},"end":{"line":7,"column":null}},"9":{"start":{"line":8,"column":22},"end":{"line":8,"column":null}},"10":{"start":{"line":34,"column":2},"end":{"line":58,"column":null}},"11":{"start":{"line":35,"column":4},"end":{"line":37,"column":null}},"12":{"start":{"line":36,"column":6},"end":{"line":36,"column":null}},"13":{"start":{"line":38,"column":4},"end":{"line":57,"column":null}},"14":{"start":{"line":39,"column":24},"end":{"line":39,"column":null}},"15":{"start":{"line":40,"column":21},"end":{"line":40,"column":null}},"16":{"start":{"line":41,"column":22},"end":{"line":41,"column":null}},"17":{"start":{"line":42,"column":21},"end":{"line":42,"column":null}},"18":{"start":{"line":44,"column":8},"end":{"line":46,"column":null}},"19":{"start":{"line":45,"column":10},"end":{"line":45,"column":null}},"20":{"start":{"line":47,"column":8},"end":{"line":49,"column":null}},"21":{"start":{"line":48,"column":10},"end":{"line":48,"column":null}},"22":{"start":{"line":50,"column":8},"end":{"line":52,"column":null}},"23":{"start":{"line":51,"column":10},"end":{"line":51,"column":null}},"24":{"start":{"line":53,"column":8},"end":{"line":53,"column":null}},"25":{"start":{"line":56,"column":8},"end":{"line":56,"column":null}},"26":{"start":{"line":60,"column":15},"end":{"line":60,"column":19}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":34,"column":2},"end":{"line":34,"column":3}},"loc":{"start":{"line":34,"column":3},"end":{"line":58,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":35,"column":4},"end":{"line":37,"column":null}},"type":"if","locations":[{"start":{"line":35,"column":4},"end":{"line":37,"column":null}}]},"1":{"loc":{"start":{"line":38,"column":4},"end":{"line":57,"column":null}},"type":"switch","locations":[{"start":{"line":39,"column":6},"end":{"line":39,"column":null}},{"start":{"line":40,"column":6},"end":{"line":40,"column":null}},{"start":{"line":41,"column":6},"end":{"line":41,"column":null}},{"start":{"line":42,"column":6},"end":{"line":42,"column":null}},{"start":{"line":43,"column":6},"end":{"line":54,"column":null}},{"start":{"line":55,"column":6},"end":{"line":56,"column":null}}]},"2":{"loc":{"start":{"line":41,"column":29},"end":{"line":41,"column":59}},"type":"cond-expr","locations":[{"start":{"line":41,"column":37},"end":{"line":41,"column":46}},{"start":{"line":41,"column":49},"end":{"line":41,"column":59}}]},"3":{"loc":{"start":{"line":44,"column":8},"end":{"line":46,"column":null}},"type":"if","locations":[{"start":{"line":44,"column":8},"end":{"line":46,"column":null}}]},"4":{"loc":{"start":{"line":47,"column":8},"end":{"line":49,"column":null}},"type":"if","locations":[{"start":{"line":47,"column":8},"end":{"line":49,"column":null}}]},"5":{"loc":{"start":{"line":50,"column":8},"end":{"line":52,"column":null}},"type":"if","locations":[{"start":{"line":50,"column":8},"end":{"line":52,"column":null}}]},"6":{"loc":{"start":{"line":50,"column":12},"end":{"line":50,"column":70}},"type":"binary-expr","locations":[{"start":{"line":50,"column":12},"end":{"line":50,"column":45}},{"start":{"line":50,"column":45},"end":{"line":50,"column":70}}]}},"s":{"0":0,"1":8879,"2":22,"3":22,"4":22,"5":22,"6":22,"7":22,"8":22,"9":22,"10":22,"11":13442,"12":9096,"13":4346,"14":1,"15":75,"16":9,"17":4246,"18":15,"19":7,"20":8,"21":0,"22":8,"23":0,"24":8,"25":0,"26":22},"f":{"0":13442},"b":{"0":[9096],"1":[1,75,9,4246,15,0],"2":[6,3],"3":[7],"4":[0],"5":[0],"6":[8,8]}} +,"/Users/Mirek.Rusin/tsql/src/between.ts": {"path":"/Users/Mirek.Rusin/tsql/src/between.ts","statementMap":{"0":{"start":{"line":6,"column":13},"end":{"line":6,"column":20}},"1":{"start":{"line":12,"column":0},"end":{"line":12,"column":15}},"2":{"start":{"line":1,"column":21},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":15},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":17},"end":{"line":3,"column":null}},"5":{"start":{"line":7,"column":2},"end":{"line":10,"column":58}},"6":{"start":{"line":8,"column":4},"end":{"line":10,"column":58}},"7":{"start":{"line":12,"column":15},"end":{"line":12,"column":22}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":7,"column":2},"end":{"line":7,"column":6}},"loc":{"start":{"line":8,"column":4},"end":{"line":10,"column":58}}}},"branchMap":{"0":{"loc":{"start":{"line":8,"column":4},"end":{"line":10,"column":58}},"type":"cond-expr","locations":[{"start":{"line":9,"column":6},"end":{"line":9,"column":null}},{"start":{"line":10,"column":6},"end":{"line":10,"column":58}}]},"1":{"loc":{"start":{"line":8,"column":4},"end":{"line":8,"column":null}},"type":"binary-expr","locations":[{"start":{"line":8,"column":4},"end":{"line":8,"column":32}},{"start":{"line":8,"column":32},"end":{"line":8,"column":null}}]}},"s":{"0":0,"1":22,"2":22,"3":22,"4":22,"5":22,"6":1,"7":22},"f":{"0":1},"b":{"0":[0,1],"1":[1,1]}} +,"/Users/Mirek.Rusin/tsql/src/columns.ts": {"path":"/Users/Mirek.Rusin/tsql/src/columns.ts","statementMap":{"0":{"start":{"line":11,"column":13},"end":{"line":11,"column":20}},"1":{"start":{"line":22,"column":0},"end":{"line":22,"column":15}},"2":{"start":{"line":1,"column":15},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":17},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":21},"end":{"line":3,"column":null}},"5":{"start":{"line":12,"column":2},"end":{"line":20,"column":null}},"6":{"start":{"line":13,"column":35},"end":{"line":13,"column":37}},"7":{"start":{"line":14,"column":4},"end":{"line":18,"column":null}},"8":{"start":{"line":15,"column":6},"end":{"line":17,"column":null}},"9":{"start":{"line":16,"column":8},"end":{"line":16,"column":null}},"10":{"start":{"line":19,"column":4},"end":{"line":19,"column":null}},"11":{"start":{"line":19,"column":32},"end":{"line":19,"column":null}},"12":{"start":{"line":22,"column":15},"end":{"line":22,"column":22}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":12,"column":2},"end":{"line":12,"column":3}},"loc":{"start":{"line":12,"column":85},"end":{"line":20,"column":null}}},"1":{"name":"(anonymous_5)","decl":{"start":{"line":19,"column":27},"end":{"line":19,"column":32}},"loc":{"start":{"line":19,"column":32},"end":{"line":19,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":12,"column":49},"end":{"line":12,"column":85}},"type":"default-arg","locations":[{"start":{"line":12,"column":83},"end":{"line":12,"column":85}}]},"1":{"loc":{"start":{"line":15,"column":6},"end":{"line":17,"column":null}},"type":"if","locations":[{"start":{"line":15,"column":6},"end":{"line":17,"column":null}}]},"2":{"loc":{"start":{"line":16,"column":20},"end":{"line":16,"column":60}},"type":"cond-expr","locations":[{"start":{"line":16,"column":43},"end":{"line":16,"column":49}},{"start":{"line":16,"column":49},"end":{"line":16,"column":60}}]}},"s":{"0":0,"1":0,"2":22,"3":22,"4":22,"5":22,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":22},"f":{"0":0,"1":0},"b":{"0":[0],"1":[0],"2":[0,0]}} +,"/Users/Mirek.Rusin/tsql/src/defined.ts": {"path":"/Users/Mirek.Rusin/tsql/src/defined.ts","statementMap":{"0":{"start":{"line":15,"column":0},"end":{"line":15,"column":15}},"1":{"start":{"line":3,"column":2},"end":{"line":13,"column":null}},"2":{"start":{"line":4,"column":20},"end":{"line":4,"column":null}},"3":{"start":{"line":5,"column":4},"end":{"line":11,"column":null}},"4":{"start":{"line":6,"column":6},"end":{"line":10,"column":null}},"5":{"start":{"line":9,"column":8},"end":{"line":9,"column":null}},"6":{"start":{"line":12,"column":4},"end":{"line":12,"column":null}},"7":{"start":{"line":15,"column":15},"end":{"line":15,"column":null}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":3,"column":2},"end":{"line":3,"column":3}},"loc":{"start":{"line":3,"column":3},"end":{"line":13,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":6,"column":6},"end":{"line":10,"column":null}},"type":"if","locations":[{"start":{"line":6,"column":6},"end":{"line":10,"column":null}}]}},"s":{"0":10,"1":22,"2":10,"3":10,"4":24,"5":1,"6":10,"7":22},"f":{"0":10},"b":{"0":[1]}} +,"/Users/Mirek.Rusin/tsql/src/delete.ts": {"path":"/Users/Mirek.Rusin/tsql/src/delete.ts","statementMap":{"0":{"start":{"line":19,"column":0},"end":{"line":19,"column":15}},"1":{"start":{"line":10,"column":13},"end":{"line":10,"column":20}},"2":{"start":{"line":1,"column":21},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":15},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":17},"end":{"line":3,"column":null}},"5":{"start":{"line":6,"column":17},"end":{"line":6,"column":null}},"6":{"start":{"line":7,"column":20},"end":{"line":7,"column":null}},"7":{"start":{"line":11,"column":2},"end":{"line":16,"column":null}},"8":{"start":{"line":12,"column":4},"end":{"line":16,"column":null}},"9":{"start":{"line":19,"column":15},"end":{"line":19,"column":22}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":11,"column":2},"end":{"line":11,"column":3}},"loc":{"start":{"line":12,"column":4},"end":{"line":16,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":14,"column":6},"end":{"line":16,"column":null}},"type":"cond-expr","locations":[{"start":{"line":15,"column":8},"end":{"line":15,"column":47}},{"start":{"line":16,"column":8},"end":{"line":16,"column":null}}]}},"s":{"0":13,"1":0,"2":22,"3":22,"4":22,"5":22,"6":22,"7":22,"8":13,"9":22},"f":{"0":13},"b":{"0":[13,0]}} +,"/Users/Mirek.Rusin/tsql/src/demargin.ts": {"path":"/Users/Mirek.Rusin/tsql/src/demargin.ts","statementMap":{"0":{"start":{"line":33,"column":0},"end":{"line":33,"column":15}},"1":{"start":{"line":4,"column":13},"end":{"line":4,"column":21}},"2":{"start":{"line":1,"column":21},"end":{"line":1,"column":null}},"3":{"start":{"line":5,"column":2},"end":{"line":31,"column":null}},"4":{"start":{"line":6,"column":4},"end":{"line":8,"column":null}},"5":{"start":{"line":7,"column":6},"end":{"line":7,"column":null}},"6":{"start":{"line":9,"column":18},"end":{"line":9,"column":null}},"7":{"start":{"line":10,"column":4},"end":{"line":12,"column":null}},"8":{"start":{"line":10,"column":60},"end":{"line":10,"column":72}},"9":{"start":{"line":11,"column":6},"end":{"line":11,"column":null}},"10":{"start":{"line":13,"column":4},"end":{"line":15,"column":null}},"11":{"start":{"line":13,"column":75},"end":{"line":13,"column":87}},"12":{"start":{"line":14,"column":6},"end":{"line":14,"column":null}},"13":{"start":{"line":16,"column":17},"end":{"line":16,"column":null}},"14":{"start":{"line":17,"column":4},"end":{"line":24,"column":null}},"15":{"start":{"line":18,"column":6},"end":{"line":23,"column":null}},"16":{"start":{"line":18,"column":19},"end":{"line":18,"column":22}},"17":{"start":{"line":19,"column":8},"end":{"line":22,"column":null}},"18":{"start":{"line":20,"column":10},"end":{"line":20,"column":null}},"19":{"start":{"line":21,"column":10},"end":{"line":21,"column":null}},"20":{"start":{"line":25,"column":4},"end":{"line":27,"column":null}},"21":{"start":{"line":26,"column":6},"end":{"line":26,"column":null}},"22":{"start":{"line":28,"column":4},"end":{"line":30,"column":null}},"23":{"start":{"line":29,"column":16},"end":{"line":29,"column":null}},"24":{"start":{"line":33,"column":15},"end":{"line":33,"column":23}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":5,"column":2},"end":{"line":5,"column":3}},"loc":{"start":{"line":5,"column":3},"end":{"line":31,"column":null}}},"1":{"name":"(anonymous_5)","decl":{"start":{"line":10,"column":55},"end":{"line":10,"column":60}},"loc":{"start":{"line":10,"column":60},"end":{"line":10,"column":72}}},"2":{"name":"(anonymous_6)","decl":{"start":{"line":13,"column":70},"end":{"line":13,"column":75}},"loc":{"start":{"line":13,"column":75},"end":{"line":13,"column":87}}},"3":{"name":"(anonymous_7)","decl":{"start":{"line":29,"column":11},"end":{"line":29,"column":16}},"loc":{"start":{"line":29,"column":16},"end":{"line":29,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":6,"column":4},"end":{"line":8,"column":null}},"type":"if","locations":[{"start":{"line":6,"column":4},"end":{"line":8,"column":null}}]},"1":{"loc":{"start":{"line":10,"column":4},"end":{"line":12,"column":null}},"type":"if","locations":[{"start":{"line":10,"column":4},"end":{"line":12,"column":null}}]},"2":{"loc":{"start":{"line":10,"column":8},"end":{"line":10,"column":72}},"type":"binary-expr","locations":[{"start":{"line":10,"column":8},"end":{"line":10,"column":30}},{"start":{"line":10,"column":30},"end":{"line":10,"column":72}}]},"3":{"loc":{"start":{"line":13,"column":4},"end":{"line":15,"column":null}},"type":"if","locations":[{"start":{"line":13,"column":4},"end":{"line":15,"column":null}}]},"4":{"loc":{"start":{"line":13,"column":8},"end":{"line":13,"column":87}},"type":"binary-expr","locations":[{"start":{"line":13,"column":8},"end":{"line":13,"column":30}},{"start":{"line":13,"column":30},"end":{"line":13,"column":87}}]},"5":{"loc":{"start":{"line":19,"column":8},"end":{"line":22,"column":null}},"type":"if","locations":[{"start":{"line":19,"column":8},"end":{"line":22,"column":null}}]},"6":{"loc":{"start":{"line":25,"column":4},"end":{"line":27,"column":null}},"type":"if","locations":[{"start":{"line":25,"column":4},"end":{"line":27,"column":null}}]}},"s":{"0":421,"1":0,"2":22,"3":22,"4":421,"5":0,"6":421,"7":421,"8":340,"9":81,"10":421,"11":683,"12":66,"13":421,"14":421,"15":6910,"16":6910,"17":65027,"18":6909,"19":6909,"20":421,"21":0,"22":421,"23":6910,"24":22},"f":{"0":421,"1":340,"2":683,"3":6910},"b":{"0":[0],"1":[81],"2":[421,421],"3":[66],"4":[421,421],"5":[6909],"6":[0]}} +,"/Users/Mirek.Rusin/tsql/src/distinct.ts": {"path":"/Users/Mirek.Rusin/tsql/src/distinct.ts","statementMap":{"0":{"start":{"line":22,"column":0},"end":{"line":22,"column":15}},"1":{"start":{"line":13,"column":13},"end":{"line":13,"column":21}},"2":{"start":{"line":1,"column":21},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":15},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":21},"end":{"line":3,"column":null}},"5":{"start":{"line":14,"column":2},"end":{"line":20,"column":null}},"6":{"start":{"line":15,"column":4},"end":{"line":17,"column":null}},"7":{"start":{"line":16,"column":6},"end":{"line":16,"column":null}},"8":{"start":{"line":18,"column":17},"end":{"line":18,"column":null}},"9":{"start":{"line":19,"column":4},"end":{"line":19,"column":null}},"10":{"start":{"line":22,"column":15},"end":{"line":22,"column":23}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":14,"column":2},"end":{"line":14,"column":3}},"loc":{"start":{"line":14,"column":20},"end":{"line":20,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":15,"column":4},"end":{"line":17,"column":null}},"type":"if","locations":[{"start":{"line":15,"column":4},"end":{"line":17,"column":null}}]},"1":{"loc":{"start":{"line":15,"column":8},"end":{"line":15,"column":66}},"type":"binary-expr","locations":[{"start":{"line":15,"column":8},"end":{"line":15,"column":38}},{"start":{"line":15,"column":38},"end":{"line":15,"column":66}}]}},"s":{"0":22,"1":0,"2":22,"3":22,"4":22,"5":22,"6":0,"7":0,"8":0,"9":0,"10":22},"f":{"0":0},"b":{"0":[0],"1":[0,0]}} +,"/Users/Mirek.Rusin/tsql/src/eq.ts": {"path":"/Users/Mirek.Rusin/tsql/src/eq.ts","statementMap":{"0":{"start":{"line":28,"column":0},"end":{"line":28,"column":15}},"1":{"start":{"line":22,"column":13},"end":{"line":22,"column":15}},"2":{"start":{"line":1,"column":21},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":15},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":19},"end":{"line":3,"column":null}},"5":{"start":{"line":4,"column":17},"end":{"line":4,"column":null}},"6":{"start":{"line":8,"column":2},"end":{"line":11,"column":20}},"7":{"start":{"line":9,"column":4},"end":{"line":11,"column":20}},"8":{"start":{"line":23,"column":2},"end":{"line":26,"column":46}},"9":{"start":{"line":24,"column":4},"end":{"line":26,"column":46}},"10":{"start":{"line":28,"column":15},"end":{"line":28,"column":17}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":8,"column":2},"end":{"line":8,"column":3}},"loc":{"start":{"line":9,"column":4},"end":{"line":11,"column":20}}},"1":{"name":"(anonymous_5)","decl":{"start":{"line":23,"column":2},"end":{"line":23,"column":3}},"loc":{"start":{"line":24,"column":4},"end":{"line":26,"column":46}}}},"branchMap":{"0":{"loc":{"start":{"line":9,"column":4},"end":{"line":11,"column":20}},"type":"cond-expr","locations":[{"start":{"line":10,"column":6},"end":{"line":10,"column":19}},{"start":{"line":11,"column":6},"end":{"line":11,"column":20}}]},"1":{"loc":{"start":{"line":24,"column":4},"end":{"line":26,"column":46}},"type":"cond-expr","locations":[{"start":{"line":25,"column":6},"end":{"line":25,"column":null}},{"start":{"line":26,"column":6},"end":{"line":26,"column":46}}]}},"s":{"0":85,"1":0,"2":22,"3":22,"4":22,"5":22,"6":22,"7":53,"8":22,"9":64,"10":22},"f":{"0":53,"1":64},"b":{"0":[15,38],"1":[11,53]}} +,"/Users/Mirek.Rusin/tsql/src/exists.ts": {"path":"/Users/Mirek.Rusin/tsql/src/exists.ts","statementMap":{"0":{"start":{"line":16,"column":0},"end":{"line":16,"column":15}},"1":{"start":{"line":9,"column":13},"end":{"line":9,"column":19}},"2":{"start":{"line":1,"column":21},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":15},"end":{"line":2,"column":null}},"4":{"start":{"line":5,"column":17},"end":{"line":5,"column":null}},"5":{"start":{"line":6,"column":20},"end":{"line":6,"column":null}},"6":{"start":{"line":10,"column":2},"end":{"line":14,"column":null}},"7":{"start":{"line":11,"column":19},"end":{"line":11,"column":null}},"8":{"start":{"line":12,"column":19},"end":{"line":12,"column":null}},"9":{"start":{"line":13,"column":4},"end":{"line":13,"column":null}},"10":{"start":{"line":16,"column":15},"end":{"line":16,"column":21}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":10,"column":2},"end":{"line":10,"column":3}},"loc":{"start":{"line":10,"column":24},"end":{"line":14,"column":null}}}},"branchMap":{},"s":{"0":0,"1":0,"2":22,"3":22,"4":22,"5":22,"6":22,"7":0,"8":0,"9":0,"10":22},"f":{"0":0},"b":{}} +,"/Users/Mirek.Rusin/tsql/src/fallback.ts": {"path":"/Users/Mirek.Rusin/tsql/src/fallback.ts","statementMap":{"0":{"start":{"line":11,"column":0},"end":{"line":11,"column":15}},"1":{"start":{"line":5,"column":13},"end":{"line":5,"column":21}},"2":{"start":{"line":1,"column":14},"end":{"line":1,"column":null}},"3":{"start":{"line":6,"column":2},"end":{"line":9,"column":null}},"4":{"start":{"line":7,"column":4},"end":{"line":9,"column":null}},"5":{"start":{"line":11,"column":15},"end":{"line":11,"column":23}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":6,"column":2},"end":{"line":6,"column":6}},"loc":{"start":{"line":7,"column":4},"end":{"line":9,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":7,"column":4},"end":{"line":9,"column":null}},"type":"cond-expr","locations":[{"start":{"line":8,"column":6},"end":{"line":8,"column":null}},{"start":{"line":9,"column":6},"end":{"line":9,"column":null}}]}},"s":{"0":105,"1":0,"2":22,"3":22,"4":105,"5":22},"f":{"0":105},"b":{"0":[35,70]}} +,"/Users/Mirek.Rusin/tsql/src/false-value.ts": {"path":"/Users/Mirek.Rusin/tsql/src/false-value.ts","statementMap":{"0":{"start":{"line":16,"column":0},"end":{"line":16,"column":15}},"1":{"start":{"line":13,"column":13},"end":{"line":13,"column":23}},"2":{"start":{"line":2,"column":16},"end":{"line":2,"column":null}},"3":{"start":{"line":14,"column":2},"end":{"line":14,"column":null}},"4":{"start":{"line":16,"column":15},"end":{"line":16,"column":25}}},"fnMap":{},"branchMap":{},"s":{"0":3,"1":0,"2":22,"3":22,"4":22},"f":{},"b":{}} +,"/Users/Mirek.Rusin/tsql/src/gt.ts": {"path":"/Users/Mirek.Rusin/tsql/src/gt.ts","statementMap":{"0":{"start":{"line":13,"column":0},"end":{"line":13,"column":15}},"1":{"start":{"line":9,"column":13},"end":{"line":9,"column":15}},"2":{"start":{"line":1,"column":15},"end":{"line":1,"column":null}},"3":{"start":{"line":10,"column":2},"end":{"line":11,"column":null}},"4":{"start":{"line":11,"column":4},"end":{"line":11,"column":null}},"5":{"start":{"line":13,"column":15},"end":{"line":13,"column":17}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":10,"column":2},"end":{"line":10,"column":3}},"loc":{"start":{"line":11,"column":4},"end":{"line":11,"column":null}}}},"branchMap":{},"s":{"0":24,"1":0,"2":22,"3":22,"4":5,"5":22},"f":{"0":5},"b":{}} +,"/Users/Mirek.Rusin/tsql/src/gte.ts": {"path":"/Users/Mirek.Rusin/tsql/src/gte.ts","statementMap":{"0":{"start":{"line":13,"column":0},"end":{"line":13,"column":15}},"1":{"start":{"line":9,"column":13},"end":{"line":9,"column":16}},"2":{"start":{"line":1,"column":15},"end":{"line":1,"column":null}},"3":{"start":{"line":10,"column":2},"end":{"line":11,"column":null}},"4":{"start":{"line":11,"column":4},"end":{"line":11,"column":null}},"5":{"start":{"line":13,"column":15},"end":{"line":13,"column":18}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":10,"column":2},"end":{"line":10,"column":3}},"loc":{"start":{"line":11,"column":4},"end":{"line":11,"column":null}}}},"branchMap":{},"s":{"0":22,"1":0,"2":22,"3":22,"4":1,"5":22},"f":{"0":1},"b":{}} +,"/Users/Mirek.Rusin/tsql/src/identifier.ts": {"path":"/Users/Mirek.Rusin/tsql/src/identifier.ts","statementMap":{"0":{"start":{"line":82,"column":0},"end":{"line":82,"column":15}},"1":{"start":{"line":40,"column":16},"end":{"line":40,"column":26}},"2":{"start":{"line":11,"column":16},"end":{"line":11,"column":23}},"3":{"start":{"line":78,"column":16},"end":{"line":78,"column":30}},"4":{"start":{"line":71,"column":16},"end":{"line":71,"column":25}},"5":{"start":{"line":66,"column":16},"end":{"line":66,"column":25}},"6":{"start":{"line":19,"column":16},"end":{"line":19,"column":21}},"7":{"start":{"line":1,"column":20},"end":{"line":1,"column":null}},"8":{"start":{"line":2,"column":16},"end":{"line":2,"column":null}},"9":{"start":{"line":3,"column":21},"end":{"line":3,"column":null}},"10":{"start":{"line":12,"column":2},"end":{"line":14,"column":null}},"11":{"start":{"line":20,"column":2},"end":{"line":20,"column":null}},"12":{"start":{"line":41,"column":2},"end":{"line":43,"column":null}},"13":{"start":{"line":42,"column":4},"end":{"line":42,"column":null}},"14":{"start":{"line":44,"column":2},"end":{"line":58,"column":null}},"15":{"start":{"line":45,"column":4},"end":{"line":48,"column":null}},"16":{"start":{"line":46,"column":35},"end":{"line":46,"column":null}},"17":{"start":{"line":47,"column":6},"end":{"line":47,"column":null}},"18":{"start":{"line":49,"column":4},"end":{"line":52,"column":null}},"19":{"start":{"line":50,"column":35},"end":{"line":50,"column":null}},"20":{"start":{"line":51,"column":6},"end":{"line":51,"column":null}},"21":{"start":{"line":53,"column":4},"end":{"line":56,"column":null}},"22":{"start":{"line":54,"column":35},"end":{"line":54,"column":null}},"23":{"start":{"line":55,"column":6},"end":{"line":55,"column":null}},"24":{"start":{"line":57,"column":4},"end":{"line":57,"column":null}},"25":{"start":{"line":57,"column":45},"end":{"line":57,"column":72}},"26":{"start":{"line":59,"column":2},"end":{"line":61,"column":null}},"27":{"start":{"line":59,"column":47},"end":{"line":59,"column":88}},"28":{"start":{"line":60,"column":4},"end":{"line":60,"column":null}},"29":{"start":{"line":60,"column":50},"end":{"line":60,"column":64}},"30":{"start":{"line":62,"column":2},"end":{"line":62,"column":null}},"31":{"start":{"line":67,"column":2},"end":{"line":67,"column":null}},"32":{"start":{"line":72,"column":2},"end":{"line":74,"column":null}},"33":{"start":{"line":79,"column":2},"end":{"line":79,"column":null}},"34":{"start":{"line":82,"column":15},"end":{"line":82,"column":25}}},"fnMap":{"0":{"name":"isPlain","decl":{"start":{"line":11,"column":16},"end":{"line":11,"column":23}},"loc":{"start":{"line":11,"column":37},"end":{"line":16,"column":null}}},"1":{"name":"quote","decl":{"start":{"line":19,"column":16},"end":{"line":19,"column":21}},"loc":{"start":{"line":19,"column":36},"end":{"line":21,"column":null}}},"2":{"name":"identifier","decl":{"start":{"line":40,"column":16},"end":{"line":40,"column":26}},"loc":{"start":{"line":40,"column":44},"end":{"line":63,"column":null}}},"3":{"name":"(anonymous_12)","decl":{"start":{"line":57,"column":40},"end":{"line":57,"column":45}},"loc":{"start":{"line":57,"column":45},"end":{"line":57,"column":72}}},"4":{"name":"(anonymous_13)","decl":{"start":{"line":59,"column":42},"end":{"line":59,"column":47}},"loc":{"start":{"line":59,"column":47},"end":{"line":59,"column":88}}},"5":{"name":"(anonymous_14)","decl":{"start":{"line":60,"column":45},"end":{"line":60,"column":50}},"loc":{"start":{"line":60,"column":50},"end":{"line":60,"column":64}}},"6":{"name":"jsonValue","decl":{"start":{"line":66,"column":16},"end":{"line":66,"column":25}},"loc":{"start":{"line":66,"column":61},"end":{"line":68,"column":null}}},"7":{"name":"jsonQuery","decl":{"start":{"line":71,"column":16},"end":{"line":71,"column":25}},"loc":{"start":{"line":71,"column":81},"end":{"line":75,"column":null}}},"8":{"name":"jsonPathExists","decl":{"start":{"line":78,"column":16},"end":{"line":78,"column":30}},"loc":{"start":{"line":78,"column":66},"end":{"line":80,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":13,"column":4},"end":{"line":14,"column":null}},"type":"binary-expr","locations":[{"start":{"line":13,"column":4},"end":{"line":13,"column":34}},{"start":{"line":14,"column":4},"end":{"line":14,"column":null}}]},"1":{"loc":{"start":{"line":41,"column":2},"end":{"line":43,"column":null}},"type":"if","locations":[{"start":{"line":41,"column":2},"end":{"line":43,"column":null}}]},"2":{"loc":{"start":{"line":44,"column":2},"end":{"line":58,"column":null}},"type":"if","locations":[{"start":{"line":44,"column":2},"end":{"line":58,"column":null}}]},"3":{"loc":{"start":{"line":45,"column":4},"end":{"line":48,"column":null}},"type":"if","locations":[{"start":{"line":45,"column":4},"end":{"line":48,"column":null}}]},"4":{"loc":{"start":{"line":49,"column":4},"end":{"line":52,"column":null}},"type":"if","locations":[{"start":{"line":49,"column":4},"end":{"line":52,"column":null}}]},"5":{"loc":{"start":{"line":53,"column":4},"end":{"line":56,"column":null}},"type":"if","locations":[{"start":{"line":53,"column":4},"end":{"line":56,"column":null}}]},"6":{"loc":{"start":{"line":57,"column":45},"end":{"line":57,"column":72}},"type":"cond-expr","locations":[{"start":{"line":57,"column":58},"end":{"line":57,"column":62}},{"start":{"line":57,"column":62},"end":{"line":57,"column":72}}]},"7":{"loc":{"start":{"line":59,"column":2},"end":{"line":61,"column":null}},"type":"if","locations":[{"start":{"line":59,"column":2},"end":{"line":61,"column":null}}]},"8":{"loc":{"start":{"line":59,"column":6},"end":{"line":59,"column":91}},"type":"binary-expr","locations":[{"start":{"line":59,"column":6},"end":{"line":59,"column":30}},{"start":{"line":59,"column":30},"end":{"line":59,"column":91}}]},"9":{"loc":{"start":{"line":59,"column":47},"end":{"line":59,"column":88}},"type":"binary-expr","locations":[{"start":{"line":59,"column":47},"end":{"line":59,"column":72}},{"start":{"line":59,"column":72},"end":{"line":59,"column":88}}]},"10":{"loc":{"start":{"line":72,"column":9},"end":{"line":74,"column":null}},"type":"cond-expr","locations":[{"start":{"line":73,"column":4},"end":{"line":73,"column":null}},{"start":{"line":74,"column":4},"end":{"line":74,"column":null}}]}},"s":{"0":343,"1":0,"2":0,"3":22,"4":22,"5":22,"6":0,"7":22,"8":22,"9":22,"10":424,"11":159,"12":485,"13":1,"14":484,"15":425,"16":6,"17":6,"18":419,"19":1,"20":1,"21":418,"22":2,"23":2,"24":416,"25":424,"26":59,"27":118,"28":59,"29":118,"30":0,"31":6,"32":1,"33":2,"34":22},"f":{"0":424,"1":159,"2":485,"3":424,"4":118,"5":118,"6":6,"7":1,"8":2},"b":{"0":[424,282],"1":[1],"2":[425],"3":[6],"4":[1],"5":[2],"6":[265,159],"7":[59],"8":[59,59],"9":[118,0],"10":[1,0]}} +,"/Users/Mirek.Rusin/tsql/src/identifiers.ts": {"path":"/Users/Mirek.Rusin/tsql/src/identifiers.ts","statementMap":{"0":{"start":{"line":15,"column":0},"end":{"line":15,"column":15}},"1":{"start":{"line":11,"column":13},"end":{"line":11,"column":24}},"2":{"start":{"line":1,"column":15},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":17},"end":{"line":2,"column":null}},"4":{"start":{"line":12,"column":2},"end":{"line":13,"column":null}},"5":{"start":{"line":13,"column":4},"end":{"line":13,"column":null}},"6":{"start":{"line":15,"column":15},"end":{"line":15,"column":26}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":12,"column":2},"end":{"line":12,"column":3}},"loc":{"start":{"line":13,"column":4},"end":{"line":13,"column":null}}}},"branchMap":{},"s":{"0":0,"1":0,"2":22,"3":22,"4":22,"5":0,"6":22},"f":{"0":0},"b":{}} +,"/Users/Mirek.Rusin/tsql/src/in.ts": {"path":"/Users/Mirek.Rusin/tsql/src/in.ts","statementMap":{"0":{"start":{"line":24,"column":0},"end":{"line":24,"column":15}},"1":{"start":{"line":16,"column":13},"end":{"line":16,"column":16}},"2":{"start":{"line":1,"column":15},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":17},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":21},"end":{"line":3,"column":null}},"5":{"start":{"line":4,"column":19},"end":{"line":4,"column":null}},"6":{"start":{"line":5,"column":16},"end":{"line":5,"column":null}},"7":{"start":{"line":7,"column":25},"end":{"line":7,"column":null}},"8":{"start":{"line":17,"column":2},"end":{"line":22,"column":20}},"9":{"start":{"line":18,"column":4},"end":{"line":22,"column":20}},"10":{"start":{"line":24,"column":15},"end":{"line":24,"column":18}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":17,"column":2},"end":{"line":17,"column":3}},"loc":{"start":{"line":18,"column":4},"end":{"line":22,"column":20}}}},"branchMap":{"0":{"loc":{"start":{"line":18,"column":4},"end":{"line":22,"column":20}},"type":"cond-expr","locations":[{"start":{"line":19,"column":6},"end":{"line":19,"column":null}},{"start":{"line":20,"column":6},"end":{"line":22,"column":20}}]},"1":{"loc":{"start":{"line":20,"column":6},"end":{"line":22,"column":20}},"type":"cond-expr","locations":[{"start":{"line":21,"column":8},"end":{"line":21,"column":45}},{"start":{"line":22,"column":8},"end":{"line":22,"column":20}}]},"2":{"loc":{"start":{"line":20,"column":6},"end":{"line":20,"column":null}},"type":"binary-expr","locations":[{"start":{"line":20,"column":6},"end":{"line":20,"column":11}},{"start":{"line":20,"column":11},"end":{"line":20,"column":26}},{"start":{"line":20,"column":26},"end":{"line":20,"column":null}}]}},"s":{"0":32,"1":0,"2":22,"3":22,"4":22,"5":22,"6":22,"7":22,"8":22,"9":11,"10":22},"f":{"0":11},"b":{"0":[2,9],"1":[5,4],"2":[9,7,7]}} +,"/Users/Mirek.Rusin/tsql/src/indent-tail.ts": {"path":"/Users/Mirek.Rusin/tsql/src/indent-tail.ts","statementMap":{"0":{"start":{"line":10,"column":0},"end":{"line":10,"column":15}},"1":{"start":{"line":3,"column":2},"end":{"line":8,"column":null}},"2":{"start":{"line":4,"column":4},"end":{"line":8,"column":null}},"3":{"start":{"line":10,"column":15},"end":{"line":10,"column":null}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":3,"column":2},"end":{"line":3,"column":3}},"loc":{"start":{"line":4,"column":4},"end":{"line":8,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":4,"column":4},"end":{"line":8,"column":null}},"type":"cond-expr","locations":[{"start":{"line":5,"column":6},"end":{"line":7,"column":null}},{"start":{"line":8,"column":6},"end":{"line":8,"column":null}}]}},"s":{"0":705,"1":22,"2":705,"3":22},"f":{"0":705},"b":{"0":[236,469]}} +,"/Users/Mirek.Rusin/tsql/src/index.ts": {"path":"/Users/Mirek.Rusin/tsql/src/index.ts","statementMap":{"0":{"start":{"line":184,"column":2},"end":{"line":184,"column":15}},"1":{"start":{"line":164,"column":2},"end":{"line":164,"column":null}},"2":{"start":{"line":165,"column":2},"end":{"line":165,"column":null}},"3":{"start":{"line":185,"column":2},"end":{"line":185,"column":25}},"4":{"start":{"line":168,"column":2},"end":{"line":168,"column":18}},"5":{"start":{"line":91,"column":2},"end":{"line":91,"column":null}},"6":{"start":{"line":92,"column":2},"end":{"line":92,"column":null}},"7":{"start":{"line":93,"column":2},"end":{"line":93,"column":null}},"8":{"start":{"line":94,"column":2},"end":{"line":94,"column":null}},"9":{"start":{"line":95,"column":2},"end":{"line":95,"column":null}},"10":{"start":{"line":96,"column":2},"end":{"line":96,"column":null}},"11":{"start":{"line":97,"column":2},"end":{"line":97,"column":13}},"12":{"start":{"line":98,"column":2},"end":{"line":98,"column":null}},"13":{"start":{"line":99,"column":2},"end":{"line":99,"column":null}},"14":{"start":{"line":100,"column":2},"end":{"line":100,"column":null}},"15":{"start":{"line":101,"column":2},"end":{"line":101,"column":null}},"16":{"start":{"line":102,"column":2},"end":{"line":102,"column":null}},"17":{"start":{"line":103,"column":2},"end":{"line":103,"column":null}},"18":{"start":{"line":104,"column":2},"end":{"line":104,"column":null}},"19":{"start":{"line":105,"column":2},"end":{"line":105,"column":null}},"20":{"start":{"line":181,"column":2},"end":{"line":182,"column":16}},"21":{"start":{"line":106,"column":2},"end":{"line":106,"column":null}},"22":{"start":{"line":107,"column":2},"end":{"line":107,"column":null}},"23":{"start":{"line":183,"column":2},"end":{"line":183,"column":17}},"24":{"start":{"line":108,"column":2},"end":{"line":108,"column":9}},"25":{"start":{"line":109,"column":2},"end":{"line":109,"column":null}},"26":{"start":{"line":110,"column":2},"end":{"line":110,"column":null}},"27":{"start":{"line":111,"column":2},"end":{"line":111,"column":null}},"28":{"start":{"line":112,"column":2},"end":{"line":112,"column":null}},"29":{"start":{"line":113,"column":2},"end":{"line":113,"column":null}},"30":{"start":{"line":114,"column":2},"end":{"line":114,"column":null}},"31":{"start":{"line":115,"column":2},"end":{"line":115,"column":null}},"32":{"start":{"line":116,"column":2},"end":{"line":116,"column":null}},"33":{"start":{"line":117,"column":2},"end":{"line":117,"column":null}},"34":{"start":{"line":118,"column":2},"end":{"line":118,"column":null}},"35":{"start":{"line":119,"column":2},"end":{"line":119,"column":null}},"36":{"start":{"line":120,"column":2},"end":{"line":120,"column":null}},"37":{"start":{"line":121,"column":2},"end":{"line":121,"column":null}},"38":{"start":{"line":122,"column":2},"end":{"line":122,"column":null}},"39":{"start":{"line":123,"column":2},"end":{"line":123,"column":null}},"40":{"start":{"line":124,"column":2},"end":{"line":124,"column":null}},"41":{"start":{"line":125,"column":2},"end":{"line":125,"column":null}},"42":{"start":{"line":126,"column":2},"end":{"line":126,"column":null}},"43":{"start":{"line":127,"column":2},"end":{"line":127,"column":null}},"44":{"start":{"line":128,"column":2},"end":{"line":128,"column":null}},"45":{"start":{"line":129,"column":2},"end":{"line":129,"column":null}},"46":{"start":{"line":130,"column":2},"end":{"line":130,"column":null}},"47":{"start":{"line":131,"column":2},"end":{"line":131,"column":null}},"48":{"start":{"line":132,"column":2},"end":{"line":132,"column":null}},"49":{"start":{"line":133,"column":2},"end":{"line":133,"column":null}},"50":{"start":{"line":134,"column":2},"end":{"line":134,"column":null}},"51":{"start":{"line":135,"column":2},"end":{"line":135,"column":null}},"52":{"start":{"line":136,"column":2},"end":{"line":136,"column":null}},"53":{"start":{"line":137,"column":2},"end":{"line":137,"column":null}},"54":{"start":{"line":138,"column":2},"end":{"line":138,"column":null}},"55":{"start":{"line":139,"column":2},"end":{"line":139,"column":null}},"56":{"start":{"line":140,"column":2},"end":{"line":140,"column":null}},"57":{"start":{"line":141,"column":2},"end":{"line":141,"column":null}},"58":{"start":{"line":142,"column":2},"end":{"line":142,"column":null}},"59":{"start":{"line":143,"column":2},"end":{"line":143,"column":null}},"60":{"start":{"line":144,"column":2},"end":{"line":144,"column":null}},"61":{"start":{"line":145,"column":2},"end":{"line":145,"column":null}},"62":{"start":{"line":146,"column":2},"end":{"line":146,"column":null}},"63":{"start":{"line":147,"column":2},"end":{"line":147,"column":null}},"64":{"start":{"line":148,"column":2},"end":{"line":148,"column":null}},"65":{"start":{"line":149,"column":2},"end":{"line":149,"column":null}},"66":{"start":{"line":150,"column":2},"end":{"line":150,"column":null}},"67":{"start":{"line":151,"column":2},"end":{"line":151,"column":null}},"68":{"start":{"line":152,"column":2},"end":{"line":152,"column":11}},"69":{"start":{"line":153,"column":2},"end":{"line":153,"column":13}},"70":{"start":{"line":154,"column":2},"end":{"line":154,"column":null}},"71":{"start":{"line":155,"column":2},"end":{"line":155,"column":null}},"72":{"start":{"line":156,"column":2},"end":{"line":156,"column":null}},"73":{"start":{"line":157,"column":2},"end":{"line":157,"column":null}},"74":{"start":{"line":158,"column":2},"end":{"line":158,"column":null}},"75":{"start":{"line":159,"column":2},"end":{"line":159,"column":null}},"76":{"start":{"line":160,"column":2},"end":{"line":160,"column":null}},"77":{"start":{"line":161,"column":2},"end":{"line":161,"column":null}},"78":{"start":{"line":162,"column":2},"end":{"line":162,"column":null}},"79":{"start":{"line":163,"column":2},"end":{"line":163,"column":null}},"80":{"start":{"line":166,"column":2},"end":{"line":166,"column":null}},"81":{"start":{"line":167,"column":2},"end":{"line":167,"column":null}},"82":{"start":{"line":169,"column":2},"end":{"line":169,"column":null}},"83":{"start":{"line":170,"column":2},"end":{"line":170,"column":null}},"84":{"start":{"line":171,"column":2},"end":{"line":171,"column":null}},"85":{"start":{"line":172,"column":2},"end":{"line":172,"column":null}},"86":{"start":{"line":173,"column":2},"end":{"line":173,"column":null}},"87":{"start":{"line":174,"column":2},"end":{"line":174,"column":null}},"88":{"start":{"line":176,"column":2},"end":{"line":176,"column":null}},"89":{"start":{"line":177,"column":2},"end":{"line":177,"column":null}},"90":{"start":{"line":178,"column":2},"end":{"line":178,"column":null}},"91":{"start":{"line":1,"column":34},"end":{"line":1,"column":null}},"92":{"start":{"line":2,"column":16},"end":{"line":2,"column":null}},"93":{"start":{"line":3,"column":19},"end":{"line":3,"column":null}},"94":{"start":{"line":4,"column":25},"end":{"line":4,"column":null}},"95":{"start":{"line":5,"column":17},"end":{"line":5,"column":null}},"96":{"start":{"line":6,"column":20},"end":{"line":6,"column":null}},"97":{"start":{"line":7,"column":20},"end":{"line":7,"column":null}},"98":{"start":{"line":8,"column":20},"end":{"line":8,"column":null}},"99":{"start":{"line":9,"column":21},"end":{"line":9,"column":null}},"100":{"start":{"line":10,"column":21},"end":{"line":10,"column":null}},"101":{"start":{"line":11,"column":15},"end":{"line":11,"column":null}},"102":{"start":{"line":12,"column":19},"end":{"line":12,"column":null}},"103":{"start":{"line":13,"column":21},"end":{"line":13,"column":null}},"104":{"start":{"line":14,"column":23},"end":{"line":14,"column":null}},"105":{"start":{"line":15,"column":15},"end":{"line":15,"column":null}},"106":{"start":{"line":16,"column":16},"end":{"line":16,"column":null}},"107":{"start":{"line":17,"column":23},"end":{"line":17,"column":null}},"108":{"start":{"line":18,"column":24},"end":{"line":18,"column":null}},"109":{"start":{"line":19,"column":16},"end":{"line":19,"column":null}},"110":{"start":{"line":20,"column":23},"end":{"line":20,"column":null}},"111":{"start":{"line":21,"column":32},"end":{"line":21,"column":null}},"112":{"start":{"line":22,"column":33},"end":{"line":22,"column":null}},"113":{"start":{"line":23,"column":25},"end":{"line":23,"column":null}},"114":{"start":{"line":24,"column":29},"end":{"line":24,"column":null}},"115":{"start":{"line":25,"column":25},"end":{"line":25,"column":null}},"116":{"start":{"line":26,"column":26},"end":{"line":26,"column":null}},"117":{"start":{"line":27,"column":24},"end":{"line":27,"column":null}},"118":{"start":{"line":28,"column":25},"end":{"line":28,"column":null}},"119":{"start":{"line":29,"column":15},"end":{"line":29,"column":null}},"120":{"start":{"line":30,"column":19},"end":{"line":30,"column":null}},"121":{"start":{"line":31,"column":21},"end":{"line":31,"column":null}},"122":{"start":{"line":32,"column":17},"end":{"line":32,"column":null}},"123":{"start":{"line":33,"column":23},"end":{"line":33,"column":null}},"124":{"start":{"line":34,"column":21},"end":{"line":34,"column":null}},"125":{"start":{"line":35,"column":27},"end":{"line":35,"column":null}},"126":{"start":{"line":36,"column":22},"end":{"line":36,"column":null}},"127":{"start":{"line":37,"column":22},"end":{"line":37,"column":null}},"128":{"start":{"line":38,"column":26},"end":{"line":38,"column":null}},"129":{"start":{"line":39,"column":17},"end":{"line":39,"column":null}},"130":{"start":{"line":40,"column":35},"end":{"line":40,"column":null}},"131":{"start":{"line":41,"column":17},"end":{"line":41,"column":null}},"132":{"start":{"line":42,"column":18},"end":{"line":42,"column":null}},"133":{"start":{"line":43,"column":17},"end":{"line":43,"column":null}},"134":{"start":{"line":44,"column":25},"end":{"line":44,"column":null}},"135":{"start":{"line":45,"column":24},"end":{"line":45,"column":null}},"136":{"start":{"line":46,"column":15},"end":{"line":46,"column":null}},"137":{"start":{"line":47,"column":16},"end":{"line":47,"column":null}},"138":{"start":{"line":48,"column":30},"end":{"line":48,"column":null}},"139":{"start":{"line":49,"column":29},"end":{"line":49,"column":null}},"140":{"start":{"line":50,"column":22},"end":{"line":50,"column":null}},"141":{"start":{"line":51,"column":23},"end":{"line":51,"column":null}},"142":{"start":{"line":52,"column":20},"end":{"line":52,"column":null}},"143":{"start":{"line":53,"column":24},"end":{"line":53,"column":null}},"144":{"start":{"line":54,"column":15},"end":{"line":54,"column":null}},"145":{"start":{"line":55,"column":15},"end":{"line":55,"column":null}},"146":{"start":{"line":56,"column":15},"end":{"line":56,"column":null}},"147":{"start":{"line":57,"column":16},"end":{"line":57,"column":null}},"148":{"start":{"line":58,"column":23},"end":{"line":58,"column":null}},"149":{"start":{"line":59,"column":24},"end":{"line":59,"column":null}},"150":{"start":{"line":60,"column":18},"end":{"line":60,"column":null}},"151":{"start":{"line":61,"column":16},"end":{"line":61,"column":null}},"152":{"start":{"line":62,"column":20},"end":{"line":62,"column":null}},"153":{"start":{"line":63,"column":18},"end":{"line":63,"column":null}},"154":{"start":{"line":64,"column":20},"end":{"line":64,"column":null}},"155":{"start":{"line":65,"column":21},"end":{"line":65,"column":null}},"156":{"start":{"line":66,"column":15},"end":{"line":66,"column":null}},"157":{"start":{"line":67,"column":20},"end":{"line":67,"column":null}},"158":{"start":{"line":68,"column":17},"end":{"line":68,"column":null}},"159":{"start":{"line":69,"column":26},"end":{"line":69,"column":null}},"160":{"start":{"line":70,"column":29},"end":{"line":70,"column":null}},"161":{"start":{"line":71,"column":16},"end":{"line":71,"column":null}},"162":{"start":{"line":72,"column":27},"end":{"line":72,"column":null}},"163":{"start":{"line":73,"column":16},"end":{"line":73,"column":null}},"164":{"start":{"line":74,"column":19},"end":{"line":74,"column":null}},"165":{"start":{"line":75,"column":22},"end":{"line":75,"column":null}},"166":{"start":{"line":76,"column":32},"end":{"line":76,"column":null}},"167":{"start":{"line":77,"column":19},"end":{"line":77,"column":null}},"168":{"start":{"line":78,"column":17},"end":{"line":78,"column":null}},"169":{"start":{"line":79,"column":21},"end":{"line":79,"column":null}},"170":{"start":{"line":80,"column":16},"end":{"line":80,"column":null}},"171":{"start":{"line":81,"column":22},"end":{"line":81,"column":null}},"172":{"start":{"line":83,"column":19},"end":{"line":83,"column":null}},"173":{"start":{"line":84,"column":17},"end":{"line":84,"column":null}},"174":{"start":{"line":85,"column":19},"end":{"line":85,"column":null}},"175":{"start":{"line":86,"column":26},"end":{"line":86,"column":null}},"176":{"start":{"line":87,"column":26},"end":{"line":87,"column":null}},"177":{"start":{"line":88,"column":18},"end":{"line":88,"column":null}}},"fnMap":{},"branchMap":{},"s":{"0":1,"1":0,"2":0,"3":1,"4":0,"5":6,"6":9,"7":5,"8":1,"9":0,"10":0,"11":13,"12":15,"13":0,"14":11,"15":0,"16":0,"17":0,"18":2,"19":0,"20":31,"21":0,"22":0,"23":0,"24":10,"25":0,"26":0,"27":1,"28":10,"29":0,"30":10,"31":7,"32":0,"33":0,"34":6,"35":6,"36":0,"37":0,"38":3,"39":8,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":5,"48":1,"49":0,"50":19,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":5,"58":2,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":1,"69":0,"70":0,"71":6,"72":3,"73":0,"74":0,"75":0,"76":4,"77":0,"78":0,"79":0,"80":0,"81":0,"82":37,"83":0,"84":0,"85":0,"86":0,"87":6,"88":0,"89":0,"90":24,"91":22,"92":22,"93":22,"94":22,"95":22,"96":22,"97":22,"98":22,"99":22,"100":22,"101":22,"102":22,"103":22,"104":22,"105":22,"106":22,"107":22,"108":22,"109":22,"110":22,"111":22,"112":22,"113":22,"114":22,"115":22,"116":22,"117":22,"118":22,"119":22,"120":22,"121":22,"122":22,"123":22,"124":22,"125":22,"126":22,"127":22,"128":22,"129":22,"130":22,"131":22,"132":22,"133":22,"134":22,"135":22,"136":22,"137":22,"138":22,"139":22,"140":22,"141":22,"142":22,"143":22,"144":22,"145":22,"146":22,"147":22,"148":22,"149":22,"150":22,"151":22,"152":22,"153":22,"154":22,"155":22,"156":22,"157":22,"158":22,"159":22,"160":22,"161":22,"162":22,"163":22,"164":22,"165":22,"166":22,"167":22,"168":22,"169":22,"170":22,"171":22,"172":22,"173":22,"174":22,"175":22,"176":22,"177":22},"f":{},"b":{}} +,"/Users/Mirek.Rusin/tsql/src/inline-table-of-column.ts": {"path":"/Users/Mirek.Rusin/tsql/src/inline-table-of-column.ts","statementMap":{"0":{"start":{"line":28,"column":0},"end":{"line":28,"column":15}},"1":{"start":{"line":13,"column":13},"end":{"line":13,"column":32}},"2":{"start":{"line":1,"column":15},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":17},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":16},"end":{"line":3,"column":null}},"5":{"start":{"line":6,"column":17},"end":{"line":6,"column":null}},"6":{"start":{"line":14,"column":2},"end":{"line":26,"column":null}},"7":{"start":{"line":15,"column":4},"end":{"line":17,"column":null}},"8":{"start":{"line":16,"column":6},"end":{"line":16,"column":null}},"9":{"start":{"line":18,"column":19},"end":{"line":18,"column":null}},"10":{"start":{"line":19,"column":20},"end":{"line":19,"column":null}},"11":{"start":{"line":20,"column":20},"end":{"line":20,"column":null}},"12":{"start":{"line":20,"column":41},"end":{"line":20,"column":54}},"13":{"start":{"line":21,"column":4},"end":{"line":25,"column":null}},"14":{"start":{"line":28,"column":15},"end":{"line":28,"column":34}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":14,"column":2},"end":{"line":14,"column":3}},"loc":{"start":{"line":14,"column":46},"end":{"line":26,"column":null}}},"1":{"name":"(anonymous_5)","decl":{"start":{"line":20,"column":36},"end":{"line":20,"column":41}},"loc":{"start":{"line":20,"column":41},"end":{"line":20,"column":54}}}},"branchMap":{"0":{"loc":{"start":{"line":15,"column":4},"end":{"line":17,"column":null}},"type":"if","locations":[{"start":{"line":15,"column":4},"end":{"line":17,"column":null}}]}},"s":{"0":4,"1":0,"2":22,"3":22,"4":22,"5":22,"6":22,"7":4,"8":0,"9":4,"10":4,"11":4,"12":11,"13":4,"14":22},"f":{"0":4,"1":11},"b":{"0":[0]}} +,"/Users/Mirek.Rusin/tsql/src/inline-table-of-objects.ts": {"path":"/Users/Mirek.Rusin/tsql/src/inline-table-of-objects.ts","statementMap":{"0":{"start":{"line":27,"column":0},"end":{"line":27,"column":15}},"1":{"start":{"line":15,"column":13},"end":{"line":15,"column":33}},"2":{"start":{"line":1,"column":17},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":15},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":26},"end":{"line":3,"column":null}},"5":{"start":{"line":4,"column":17},"end":{"line":4,"column":null}},"6":{"start":{"line":5,"column":16},"end":{"line":5,"column":null}},"7":{"start":{"line":8,"column":17},"end":{"line":8,"column":null}},"8":{"start":{"line":16,"column":2},"end":{"line":25,"column":null}},"9":{"start":{"line":17,"column":19},"end":{"line":17,"column":null}},"10":{"start":{"line":18,"column":17},"end":{"line":18,"column":null}},"11":{"start":{"line":19,"column":21},"end":{"line":19,"column":null}},"12":{"start":{"line":20,"column":20},"end":{"line":20,"column":null}},"13":{"start":{"line":20,"column":47},"end":{"line":20,"column":89}},"14":{"start":{"line":20,"column":67},"end":{"line":20,"column":89}},"15":{"start":{"line":21,"column":4},"end":{"line":24,"column":null}},"16":{"start":{"line":27,"column":15},"end":{"line":27,"column":35}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":16,"column":2},"end":{"line":16,"column":3}},"loc":{"start":{"line":16,"column":69},"end":{"line":25,"column":null}}},"1":{"name":"(anonymous_5)","decl":{"start":{"line":20,"column":37},"end":{"line":20,"column":47}},"loc":{"start":{"line":20,"column":47},"end":{"line":20,"column":89}}},"2":{"name":"(anonymous_6)","decl":{"start":{"line":20,"column":60},"end":{"line":20,"column":67}},"loc":{"start":{"line":20,"column":67},"end":{"line":20,"column":89}}}},"branchMap":{"0":{"loc":{"start":{"line":18,"column":17},"end":{"line":18,"column":null}},"type":"binary-expr","locations":[{"start":{"line":18,"column":17},"end":{"line":18,"column":30}},{"start":{"line":18,"column":30},"end":{"line":18,"column":null}}]}},"s":{"0":15,"1":0,"2":22,"3":22,"4":22,"5":22,"6":22,"7":22,"8":22,"9":15,"10":15,"11":15,"12":15,"13":3037,"14":3073,"15":15,"16":22},"f":{"0":15,"1":3037,"2":3073},"b":{"0":[15,1]}} +,"/Users/Mirek.Rusin/tsql/src/insert-ignore.ts": {"path":"/Users/Mirek.Rusin/tsql/src/insert-ignore.ts","statementMap":{"0":{"start":{"line":60,"column":0},"end":{"line":60,"column":15}},"1":{"start":{"line":28,"column":13},"end":{"line":28,"column":25}},"2":{"start":{"line":13,"column":13},"end":{"line":13,"column":27}},"3":{"start":{"line":17,"column":13},"end":{"line":17,"column":27}},"4":{"start":{"line":1,"column":16},"end":{"line":1,"column":null}},"5":{"start":{"line":2,"column":15},"end":{"line":2,"column":null}},"6":{"start":{"line":3,"column":15},"end":{"line":3,"column":null}},"7":{"start":{"line":4,"column":16},"end":{"line":4,"column":null}},"8":{"start":{"line":5,"column":33},"end":{"line":5,"column":null}},"9":{"start":{"line":6,"column":26},"end":{"line":6,"column":null}},"10":{"start":{"line":7,"column":16},"end":{"line":7,"column":null}},"11":{"start":{"line":8,"column":17},"end":{"line":8,"column":null}},"12":{"start":{"line":14,"column":2},"end":{"line":15,"column":null}},"13":{"start":{"line":15,"column":4},"end":{"line":15,"column":null}},"14":{"start":{"line":18,"column":2},"end":{"line":19,"column":null}},"15":{"start":{"line":19,"column":4},"end":{"line":19,"column":null}},"16":{"start":{"line":29,"column":2},"end":{"line":58,"column":null}},"17":{"start":{"line":39,"column":4},"end":{"line":41,"column":null}},"18":{"start":{"line":40,"column":6},"end":{"line":40,"column":null}},"19":{"start":{"line":43,"column":4},"end":{"line":45,"column":null}},"20":{"start":{"line":44,"column":6},"end":{"line":44,"column":null}},"21":{"start":{"line":47,"column":23},"end":{"line":47,"column":null}},"22":{"start":{"line":48,"column":16},"end":{"line":48,"column":null}},"23":{"start":{"line":48,"column":39},"end":{"line":48,"column":null}},"24":{"start":{"line":49,"column":19},"end":{"line":49,"column":null}},"25":{"start":{"line":49,"column":42},"end":{"line":49,"column":null}},"26":{"start":{"line":51,"column":4},"end":{"line":57,"column":null}},"27":{"start":{"line":60,"column":15},"end":{"line":60,"column":27}}},"fnMap":{"0":{"name":"(anonymous_6)","decl":{"start":{"line":14,"column":2},"end":{"line":14,"column":3}},"loc":{"start":{"line":15,"column":4},"end":{"line":15,"column":null}}},"1":{"name":"(anonymous_7)","decl":{"start":{"line":18,"column":2},"end":{"line":18,"column":3}},"loc":{"start":{"line":19,"column":4},"end":{"line":19,"column":null}}},"2":{"name":"(anonymous_8)","decl":{"start":{"line":29,"column":2},"end":{"line":29,"column":null}},"loc":{"start":{"line":36,"column":10},"end":{"line":58,"column":null}}},"3":{"name":"(anonymous_9)","decl":{"start":{"line":48,"column":34},"end":{"line":48,"column":39}},"loc":{"start":{"line":48,"column":39},"end":{"line":48,"column":null}}},"4":{"name":"(anonymous_10)","decl":{"start":{"line":49,"column":37},"end":{"line":49,"column":42}},"loc":{"start":{"line":49,"column":42},"end":{"line":49,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":34,"column":4},"end":{"line":36,"column":10}},"type":"default-arg","locations":[{"start":{"line":36,"column":8},"end":{"line":36,"column":10}}]},"1":{"loc":{"start":{"line":34,"column":6},"end":{"line":34,"column":null}},"type":"default-arg","locations":[{"start":{"line":34,"column":14},"end":{"line":34,"column":null}}]},"2":{"loc":{"start":{"line":39,"column":4},"end":{"line":41,"column":null}},"type":"if","locations":[{"start":{"line":39,"column":4},"end":{"line":41,"column":null}}]},"3":{"loc":{"start":{"line":43,"column":4},"end":{"line":45,"column":null}},"type":"if","locations":[{"start":{"line":43,"column":4},"end":{"line":45,"column":null}}]},"4":{"loc":{"start":{"line":47,"column":23},"end":{"line":47,"column":null}},"type":"binary-expr","locations":[{"start":{"line":47,"column":23},"end":{"line":47,"column":42}},{"start":{"line":47,"column":42},"end":{"line":47,"column":null}}]}},"s":{"0":10,"1":0,"2":0,"3":0,"4":22,"5":22,"6":22,"7":22,"8":22,"9":22,"10":22,"11":22,"12":22,"13":10,"14":22,"15":20,"16":22,"17":10,"18":0,"19":10,"20":0,"21":10,"22":10,"23":10,"24":10,"25":10,"26":10,"27":22},"f":{"0":10,"1":20,"2":10,"3":10,"4":10},"b":{"0":[0],"1":[2],"2":[0],"3":[0],"4":[10,10]}} +,"/Users/Mirek.Rusin/tsql/src/insert-not-matched.ts": {"path":"/Users/Mirek.Rusin/tsql/src/insert-not-matched.ts","statementMap":{"0":{"start":{"line":63,"column":0},"end":{"line":63,"column":15}},"1":{"start":{"line":30,"column":13},"end":{"line":30,"column":29}},"2":{"start":{"line":13,"column":13},"end":{"line":13,"column":27}},"3":{"start":{"line":17,"column":13},"end":{"line":17,"column":27}},"4":{"start":{"line":1,"column":16},"end":{"line":1,"column":null}},"5":{"start":{"line":2,"column":15},"end":{"line":2,"column":null}},"6":{"start":{"line":3,"column":15},"end":{"line":3,"column":null}},"7":{"start":{"line":4,"column":33},"end":{"line":4,"column":null}},"8":{"start":{"line":5,"column":26},"end":{"line":5,"column":null}},"9":{"start":{"line":6,"column":35},"end":{"line":6,"column":null}},"10":{"start":{"line":7,"column":16},"end":{"line":7,"column":null}},"11":{"start":{"line":8,"column":17},"end":{"line":8,"column":null}},"12":{"start":{"line":14,"column":2},"end":{"line":15,"column":null}},"13":{"start":{"line":15,"column":4},"end":{"line":15,"column":null}},"14":{"start":{"line":18,"column":2},"end":{"line":19,"column":null}},"15":{"start":{"line":19,"column":4},"end":{"line":19,"column":null}},"16":{"start":{"line":31,"column":2},"end":{"line":61,"column":null}},"17":{"start":{"line":41,"column":4},"end":{"line":43,"column":null}},"18":{"start":{"line":42,"column":6},"end":{"line":42,"column":null}},"19":{"start":{"line":45,"column":4},"end":{"line":47,"column":null}},"20":{"start":{"line":46,"column":6},"end":{"line":46,"column":null}},"21":{"start":{"line":49,"column":19},"end":{"line":49,"column":null}},"22":{"start":{"line":50,"column":23},"end":{"line":50,"column":null}},"23":{"start":{"line":51,"column":16},"end":{"line":51,"column":null}},"24":{"start":{"line":51,"column":39},"end":{"line":51,"column":null}},"25":{"start":{"line":53,"column":4},"end":{"line":60,"column":null}},"26":{"start":{"line":63,"column":15},"end":{"line":63,"column":31}}},"fnMap":{"0":{"name":"(anonymous_6)","decl":{"start":{"line":14,"column":2},"end":{"line":14,"column":3}},"loc":{"start":{"line":15,"column":4},"end":{"line":15,"column":null}}},"1":{"name":"(anonymous_7)","decl":{"start":{"line":18,"column":2},"end":{"line":18,"column":3}},"loc":{"start":{"line":19,"column":4},"end":{"line":19,"column":null}}},"2":{"name":"(anonymous_8)","decl":{"start":{"line":31,"column":2},"end":{"line":31,"column":null}},"loc":{"start":{"line":38,"column":10},"end":{"line":61,"column":null}}},"3":{"name":"(anonymous_9)","decl":{"start":{"line":51,"column":34},"end":{"line":51,"column":39}},"loc":{"start":{"line":51,"column":39},"end":{"line":51,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":36,"column":4},"end":{"line":38,"column":10}},"type":"default-arg","locations":[{"start":{"line":38,"column":8},"end":{"line":38,"column":10}}]},"1":{"loc":{"start":{"line":36,"column":6},"end":{"line":36,"column":null}},"type":"default-arg","locations":[{"start":{"line":36,"column":14},"end":{"line":36,"column":null}}]},"2":{"loc":{"start":{"line":41,"column":4},"end":{"line":43,"column":null}},"type":"if","locations":[{"start":{"line":41,"column":4},"end":{"line":43,"column":null}}]},"3":{"loc":{"start":{"line":45,"column":4},"end":{"line":47,"column":null}},"type":"if","locations":[{"start":{"line":45,"column":4},"end":{"line":47,"column":null}}]},"4":{"loc":{"start":{"line":50,"column":23},"end":{"line":50,"column":null}},"type":"binary-expr","locations":[{"start":{"line":50,"column":23},"end":{"line":50,"column":42}},{"start":{"line":50,"column":42},"end":{"line":50,"column":null}}]}},"s":{"0":0,"1":0,"2":0,"3":0,"4":22,"5":22,"6":22,"7":22,"8":22,"9":22,"10":22,"11":22,"12":22,"13":0,"14":22,"15":0,"16":22,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":22},"f":{"0":0,"1":0,"2":0,"3":0},"b":{"0":[0],"1":[0],"2":[0],"3":[0],"4":[0,0]}} +,"/Users/Mirek.Rusin/tsql/src/insert-object.ts": {"path":"/Users/Mirek.Rusin/tsql/src/insert-object.ts","statementMap":{"0":{"start":{"line":31,"column":0},"end":{"line":31,"column":15}},"1":{"start":{"line":16,"column":13},"end":{"line":16,"column":25}},"2":{"start":{"line":1,"column":17},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":20},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":15},"end":{"line":3,"column":null}},"5":{"start":{"line":4,"column":17},"end":{"line":4,"column":null}},"6":{"start":{"line":5,"column":17},"end":{"line":5,"column":null}},"7":{"start":{"line":17,"column":2},"end":{"line":29,"column":null}},"8":{"start":{"line":18,"column":20},"end":{"line":18,"column":null}},"9":{"start":{"line":19,"column":17},"end":{"line":19,"column":null}},"10":{"start":{"line":20,"column":4},"end":{"line":22,"column":null}},"11":{"start":{"line":21,"column":6},"end":{"line":21,"column":null}},"12":{"start":{"line":23,"column":19},"end":{"line":23,"column":null}},"13":{"start":{"line":24,"column":18},"end":{"line":24,"column":null}},"14":{"start":{"line":25,"column":20},"end":{"line":25,"column":null}},"15":{"start":{"line":25,"column":39},"end":{"line":25,"column":49}},"16":{"start":{"line":26,"column":4},"end":{"line":28,"column":null}},"17":{"start":{"line":31,"column":15},"end":{"line":31,"column":27}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":17,"column":2},"end":{"line":17,"column":3}},"loc":{"start":{"line":17,"column":57},"end":{"line":29,"column":null}}},"1":{"name":"(anonymous_5)","decl":{"start":{"line":25,"column":34},"end":{"line":25,"column":39}},"loc":{"start":{"line":25,"column":39},"end":{"line":25,"column":49}}}},"branchMap":{"0":{"loc":{"start":{"line":20,"column":4},"end":{"line":22,"column":null}},"type":"if","locations":[{"start":{"line":20,"column":4},"end":{"line":22,"column":null}}]},"1":{"loc":{"start":{"line":26,"column":11},"end":{"line":28,"column":64}},"type":"cond-expr","locations":[{"start":{"line":27,"column":6},"end":{"line":27,"column":81}},{"start":{"line":28,"column":6},"end":{"line":28,"column":64}}]}},"s":{"0":10,"1":0,"2":22,"3":22,"4":22,"5":22,"6":22,"7":22,"8":10,"9":10,"10":10,"11":0,"12":10,"13":10,"14":10,"15":23,"16":10,"17":22},"f":{"0":10,"1":23},"b":{"0":[0],"1":[0,10]}} +,"/Users/Mirek.Rusin/tsql/src/insert-objects.ts": {"path":"/Users/Mirek.Rusin/tsql/src/insert-objects.ts","statementMap":{"0":{"start":{"line":52,"column":0},"end":{"line":52,"column":15}},"1":{"start":{"line":18,"column":13},"end":{"line":18,"column":26}},"2":{"start":{"line":1,"column":17},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":15},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":33},"end":{"line":3,"column":null}},"5":{"start":{"line":4,"column":26},"end":{"line":4,"column":null}},"6":{"start":{"line":5,"column":17},"end":{"line":5,"column":null}},"7":{"start":{"line":6,"column":16},"end":{"line":6,"column":null}},"8":{"start":{"line":7,"column":17},"end":{"line":7,"column":null}},"9":{"start":{"line":19,"column":2},"end":{"line":50,"column":null}},"10":{"start":{"line":25,"column":4},"end":{"line":27,"column":null}},"11":{"start":{"line":26,"column":6},"end":{"line":26,"column":null}},"12":{"start":{"line":29,"column":4},"end":{"line":31,"column":null}},"13":{"start":{"line":30,"column":6},"end":{"line":30,"column":null}},"14":{"start":{"line":33,"column":19},"end":{"line":33,"column":null}},"15":{"start":{"line":34,"column":17},"end":{"line":34,"column":null}},"16":{"start":{"line":35,"column":18},"end":{"line":35,"column":null}},"17":{"start":{"line":37,"column":4},"end":{"line":43,"column":null}},"18":{"start":{"line":38,"column":6},"end":{"line":42,"column":null}},"19":{"start":{"line":45,"column":20},"end":{"line":45,"column":null}},"20":{"start":{"line":45,"column":47},"end":{"line":45,"column":null}},"21":{"start":{"line":45,"column":67},"end":{"line":45,"column":null}},"22":{"start":{"line":46,"column":4},"end":{"line":49,"column":null}},"23":{"start":{"line":52,"column":15},"end":{"line":52,"column":28}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":19,"column":2},"end":{"line":19,"column":null}},"loc":{"start":{"line":22,"column":4},"end":{"line":50,"column":null}}},"1":{"name":"(anonymous_5)","decl":{"start":{"line":45,"column":37},"end":{"line":45,"column":47}},"loc":{"start":{"line":45,"column":47},"end":{"line":45,"column":null}}},"2":{"name":"(anonymous_6)","decl":{"start":{"line":45,"column":60},"end":{"line":45,"column":67}},"loc":{"start":{"line":45,"column":67},"end":{"line":45,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":25,"column":4},"end":{"line":27,"column":null}},"type":"if","locations":[{"start":{"line":25,"column":4},"end":{"line":27,"column":null}}]},"1":{"loc":{"start":{"line":29,"column":4},"end":{"line":31,"column":null}},"type":"if","locations":[{"start":{"line":29,"column":4},"end":{"line":31,"column":null}}]},"2":{"loc":{"start":{"line":34,"column":17},"end":{"line":34,"column":null}},"type":"binary-expr","locations":[{"start":{"line":34,"column":17},"end":{"line":34,"column":30}},{"start":{"line":34,"column":30},"end":{"line":34,"column":null}}]},"3":{"loc":{"start":{"line":37,"column":4},"end":{"line":43,"column":null}},"type":"if","locations":[{"start":{"line":37,"column":4},"end":{"line":43,"column":null}}]}},"s":{"0":7,"1":0,"2":22,"3":22,"4":22,"5":22,"6":22,"7":22,"8":22,"9":22,"10":7,"11":0,"12":7,"13":1,"14":6,"15":6,"16":6,"17":6,"18":2,"19":4,"20":1104,"21":1107,"22":4,"23":22},"f":{"0":7,"1":1104,"2":1107},"b":{"0":[0],"1":[1],"2":[6,6],"3":[2]}} +,"/Users/Mirek.Rusin/tsql/src/interpolate.ts": {"path":"/Users/Mirek.Rusin/tsql/src/interpolate.ts","statementMap":{"0":{"start":{"line":64,"column":0},"end":{"line":64,"column":15}},"1":{"start":{"line":38,"column":13},"end":{"line":38,"column":24}},"2":{"start":{"line":2,"column":23},"end":{"line":2,"column":null}},"3":{"start":{"line":12,"column":16},"end":{"line":12,"column":null}},"4":{"start":{"line":15,"column":20},"end":{"line":15,"column":null}},"5":{"start":{"line":18,"column":12},"end":{"line":18,"column":null}},"6":{"start":{"line":19,"column":2},"end":{"line":21,"column":null}},"7":{"start":{"line":20,"column":4},"end":{"line":20,"column":null}},"8":{"start":{"line":24,"column":17},"end":{"line":24,"column":null}},"9":{"start":{"line":27,"column":17},"end":{"line":27,"column":37}},"10":{"start":{"line":30,"column":2},"end":{"line":30,"column":null}},"11":{"start":{"line":31,"column":2},"end":{"line":31,"column":null}},"12":{"start":{"line":39,"column":2},"end":{"line":62,"column":null}},"13":{"start":{"line":40,"column":4},"end":{"line":42,"column":null}},"14":{"start":{"line":41,"column":6},"end":{"line":41,"column":null}},"15":{"start":{"line":43,"column":4},"end":{"line":45,"column":null}},"16":{"start":{"line":44,"column":6},"end":{"line":44,"column":null}},"17":{"start":{"line":46,"column":4},"end":{"line":48,"column":null}},"18":{"start":{"line":47,"column":6},"end":{"line":47,"column":null}},"19":{"start":{"line":49,"column":19},"end":{"line":49,"column":null}},"20":{"start":{"line":50,"column":25},"end":{"line":50,"column":27}},"21":{"start":{"line":52,"column":6},"end":{"line":55,"column":null}},"22":{"start":{"line":53,"column":8},"end":{"line":53,"column":null}},"23":{"start":{"line":54,"column":8},"end":{"line":54,"column":null}},"24":{"start":{"line":56,"column":4},"end":{"line":56,"column":null}},"25":{"start":{"line":57,"column":4},"end":{"line":60,"column":null}},"26":{"start":{"line":57,"column":17},"end":{"line":57,"column":20}},"27":{"start":{"line":58,"column":6},"end":{"line":58,"column":null}},"28":{"start":{"line":59,"column":6},"end":{"line":59,"column":null}},"29":{"start":{"line":61,"column":4},"end":{"line":61,"column":null}},"30":{"start":{"line":64,"column":15},"end":{"line":64,"column":26}}},"fnMap":{"0":{"name":"updateMargin","decl":{"start":{"line":9,"column":9},"end":{"line":9,"column":22}},"loc":{"start":{"line":9,"column":58},"end":{"line":32,"column":null}}},"1":{"name":"(anonymous_5)","decl":{"start":{"line":39,"column":2},"end":{"line":39,"column":3}},"loc":{"start":{"line":39,"column":29},"end":{"line":62,"column":null}}},"2":{"name":"(anonymous_6)","decl":{"start":{"line":52,"column":6},"end":{"line":52,"column":7}},"loc":{"start":{"line":52,"column":7},"end":{"line":55,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":19,"column":9},"end":{"line":19,"column":51}},"type":"binary-expr","locations":[{"start":{"line":19,"column":9},"end":{"line":19,"column":27}},{"start":{"line":19,"column":31},"end":{"line":19,"column":51}}]},"1":{"loc":{"start":{"line":30,"column":25},"end":{"line":30,"column":null}},"type":"cond-expr","locations":[{"start":{"line":30,"column":37},"end":{"line":30,"column":46}},{"start":{"line":30,"column":46},"end":{"line":30,"column":null}}]},"2":{"loc":{"start":{"line":30,"column":70},"end":{"line":30,"column":null}},"type":"cond-expr","locations":[{"start":{"line":30,"column":91},"end":{"line":30,"column":100}},{"start":{"line":30,"column":100},"end":{"line":30,"column":null}}]},"3":{"loc":{"start":{"line":31,"column":23},"end":{"line":31,"column":null}},"type":"binary-expr","locations":[{"start":{"line":31,"column":24},"end":{"line":31,"column":42}},{"start":{"line":31,"column":46},"end":{"line":31,"column":54}},{"start":{"line":31,"column":60},"end":{"line":31,"column":null}}]},"4":{"loc":{"start":{"line":40,"column":4},"end":{"line":42,"column":null}},"type":"if","locations":[{"start":{"line":40,"column":4},"end":{"line":42,"column":null}}]},"5":{"loc":{"start":{"line":40,"column":8},"end":{"line":40,"column":50}},"type":"binary-expr","locations":[{"start":{"line":40,"column":8},"end":{"line":40,"column":30}},{"start":{"line":40,"column":30},"end":{"line":40,"column":50}}]},"6":{"loc":{"start":{"line":43,"column":4},"end":{"line":45,"column":null}},"type":"if","locations":[{"start":{"line":43,"column":4},"end":{"line":45,"column":null}}]},"7":{"loc":{"start":{"line":43,"column":8},"end":{"line":43,"column":48}},"type":"binary-expr","locations":[{"start":{"line":43,"column":8},"end":{"line":43,"column":30}},{"start":{"line":43,"column":30},"end":{"line":43,"column":48}}]},"8":{"loc":{"start":{"line":46,"column":4},"end":{"line":48,"column":null}},"type":"if","locations":[{"start":{"line":46,"column":4},"end":{"line":48,"column":null}}]}},"s":{"0":406,"1":0,"2":22,"3":1816,"4":1816,"5":1816,"6":1816,"7":2025,"8":1816,"9":1816,"10":1816,"11":1816,"12":22,"13":406,"14":0,"15":406,"16":0,"17":406,"18":0,"19":406,"20":406,"21":406,"22":1816,"23":1816,"24":406,"25":406,"26":406,"27":705,"28":705,"29":406,"30":22},"f":{"0":1816,"1":406,"2":1816},"b":{"0":[3841,3316],"1":[273,1543],"2":[494,1049],"3":[1816,1229,767],"4":[0],"5":[406,406],"6":[0],"7":[406,0],"8":[0]}} +,"/Users/Mirek.Rusin/tsql/src/interpolate1.ts": {"path":"/Users/Mirek.Rusin/tsql/src/interpolate1.ts","statementMap":{"0":{"start":{"line":18,"column":0},"end":{"line":18,"column":15}},"1":{"start":{"line":2,"column":13},"end":{"line":2,"column":25}},"2":{"start":{"line":3,"column":2},"end":{"line":16,"column":null}},"3":{"start":{"line":4,"column":4},"end":{"line":6,"column":null}},"4":{"start":{"line":5,"column":6},"end":{"line":5,"column":null}},"5":{"start":{"line":7,"column":4},"end":{"line":9,"column":null}},"6":{"start":{"line":8,"column":6},"end":{"line":8,"column":null}},"7":{"start":{"line":10,"column":26},"end":{"line":10,"column":null}},"8":{"start":{"line":11,"column":4},"end":{"line":14,"column":null}},"9":{"start":{"line":11,"column":17},"end":{"line":11,"column":20}},"10":{"start":{"line":12,"column":6},"end":{"line":12,"column":null}},"11":{"start":{"line":13,"column":6},"end":{"line":13,"column":null}},"12":{"start":{"line":15,"column":4},"end":{"line":15,"column":null}},"13":{"start":{"line":18,"column":15},"end":{"line":18,"column":27}}},"fnMap":{"0":{"name":"(anonymous_3)","decl":{"start":{"line":3,"column":2},"end":{"line":3,"column":9}},"loc":{"start":{"line":3,"column":18},"end":{"line":16,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":4,"column":4},"end":{"line":6,"column":null}},"type":"if","locations":[{"start":{"line":4,"column":4},"end":{"line":6,"column":null}}]},"1":{"loc":{"start":{"line":7,"column":4},"end":{"line":9,"column":null}},"type":"if","locations":[{"start":{"line":7,"column":4},"end":{"line":9,"column":null}}]}},"s":{"0":78,"1":0,"2":22,"3":78,"4":0,"5":78,"6":0,"7":78,"8":78,"9":78,"10":27,"11":27,"12":78,"13":22},"f":{"0":78},"b":{"0":[0],"1":[0]}} +,"/Users/Mirek.Rusin/tsql/src/is-defined.ts": {"path":"/Users/Mirek.Rusin/tsql/src/is-defined.ts","statementMap":{"0":{"start":{"line":9,"column":16},"end":{"line":9,"column":29}},"1":{"start":{"line":1,"column":25},"end":{"line":1,"column":null}},"2":{"start":{"line":10,"column":2},"end":{"line":12,"column":null}},"3":{"start":{"line":11,"column":4},"end":{"line":11,"column":null}},"4":{"start":{"line":13,"column":2},"end":{"line":17,"column":null}},"5":{"start":{"line":14,"column":4},"end":{"line":16,"column":null}},"6":{"start":{"line":16,"column":17},"end":{"line":16,"column":null}},"7":{"start":{"line":18,"column":2},"end":{"line":18,"column":null}}},"fnMap":{"0":{"name":"isDefined","decl":{"start":{"line":9,"column":16},"end":{"line":9,"column":29}},"loc":{"start":{"line":9,"column":37},"end":{"line":19,"column":null}}},"1":{"name":"(anonymous_2)","decl":{"start":{"line":16,"column":12},"end":{"line":16,"column":17}},"loc":{"start":{"line":16,"column":17},"end":{"line":16,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":10,"column":2},"end":{"line":12,"column":null}},"type":"if","locations":[{"start":{"line":10,"column":2},"end":{"line":12,"column":null}}]},"1":{"loc":{"start":{"line":13,"column":2},"end":{"line":17,"column":null}},"type":"if","locations":[{"start":{"line":13,"column":2},"end":{"line":17,"column":null}}]}},"s":{"0":90,"1":22,"2":127,"3":13,"4":114,"5":114,"6":114,"7":0},"f":{"0":127,"1":114},"b":{"0":[13],"1":[114]}} +,"/Users/Mirek.Rusin/tsql/src/is-null.ts": {"path":"/Users/Mirek.Rusin/tsql/src/is-null.ts","statementMap":{"0":{"start":{"line":9,"column":0},"end":{"line":9,"column":15}},"1":{"start":{"line":4,"column":13},"end":{"line":4,"column":19}},"2":{"start":{"line":1,"column":22},"end":{"line":1,"column":null}},"3":{"start":{"line":5,"column":2},"end":{"line":7,"column":null}},"4":{"start":{"line":6,"column":4},"end":{"line":7,"column":null}},"5":{"start":{"line":9,"column":15},"end":{"line":9,"column":21}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":5,"column":2},"end":{"line":5,"column":3}},"loc":{"start":{"line":6,"column":4},"end":{"line":7,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":6,"column":4},"end":{"line":7,"column":null}},"type":"binary-expr","locations":[{"start":{"line":6,"column":4},"end":{"line":6,"column":null}},{"start":{"line":7,"column":5},"end":{"line":7,"column":31}},{"start":{"line":7,"column":35},"end":{"line":7,"column":null}}]}},"s":{"0":69,"1":0,"2":22,"3":22,"4":69,"5":22},"f":{"0":69},"b":{"0":[69,53,15]}} +,"/Users/Mirek.Rusin/tsql/src/is-object.ts": {"path":"/Users/Mirek.Rusin/tsql/src/is-object.ts","statementMap":{"0":{"start":{"line":1,"column":16},"end":{"line":1,"column":25}},"1":{"start":{"line":2,"column":2},"end":{"line":5,"column":null}}},"fnMap":{"0":{"name":"isObject","decl":{"start":{"line":1,"column":16},"end":{"line":1,"column":25}},"loc":{"start":{"line":1,"column":39},"end":{"line":7,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":3,"column":4},"end":{"line":5,"column":null}},"type":"binary-expr","locations":[{"start":{"line":3,"column":4},"end":{"line":3,"column":null}},{"start":{"line":4,"column":4},"end":{"line":4,"column":null}},{"start":{"line":5,"column":4},"end":{"line":5,"column":null}}]}},"s":{"0":263,"1":263},"f":{"0":263},"b":{"0":[263,239,236]}} +,"/Users/Mirek.Rusin/tsql/src/is-string.ts": {"path":"/Users/Mirek.Rusin/tsql/src/is-string.ts","statementMap":{"0":{"start":{"line":8,"column":0},"end":{"line":8,"column":15}},"1":{"start":{"line":2,"column":13},"end":{"line":2,"column":21}},"2":{"start":{"line":5,"column":2},"end":{"line":6,"column":null}},"3":{"start":{"line":6,"column":4},"end":{"line":6,"column":null}},"4":{"start":{"line":8,"column":15},"end":{"line":8,"column":23}}},"fnMap":{"0":{"name":"(anonymous_3)","decl":{"start":{"line":5,"column":2},"end":{"line":5,"column":3}},"loc":{"start":{"line":6,"column":4},"end":{"line":6,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":6,"column":4},"end":{"line":6,"column":null}},"type":"binary-expr","locations":[{"start":{"line":6,"column":4},"end":{"line":6,"column":33}},{"start":{"line":6,"column":33},"end":{"line":6,"column":null}}]}},"s":{"0":4685,"1":0,"2":22,"3":4685,"4":22},"f":{"0":4685},"b":{"0":[4685,0]}} +,"/Users/Mirek.Rusin/tsql/src/is.ts": {"path":"/Users/Mirek.Rusin/tsql/src/is.ts","statementMap":{"0":{"start":{"line":16,"column":0},"end":{"line":16,"column":15}},"1":{"start":{"line":12,"column":2},"end":{"line":14,"column":null}},"2":{"start":{"line":13,"column":4},"end":{"line":14,"column":null}},"3":{"start":{"line":14,"column":6},"end":{"line":14,"column":null}},"4":{"start":{"line":16,"column":15},"end":{"line":16,"column":null}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":12,"column":2},"end":{"line":12,"column":35}},"loc":{"start":{"line":13,"column":4},"end":{"line":14,"column":null}}},"1":{"name":"(anonymous_2)","decl":{"start":{"line":13,"column":4},"end":{"line":13,"column":5}},"loc":{"start":{"line":14,"column":6},"end":{"line":14,"column":null}}}},"branchMap":{},"s":{"0":6,"1":22,"2":6,"3":6,"4":22},"f":{"0":6,"1":6},"b":{}} +,"/Users/Mirek.Rusin/tsql/src/json-modify.ts": {"path":"/Users/Mirek.Rusin/tsql/src/json-modify.ts","statementMap":{"0":{"start":{"line":35,"column":0},"end":{"line":35,"column":15}},"1":{"start":{"line":7,"column":13},"end":{"line":7,"column":23}},"2":{"start":{"line":1,"column":17},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":21},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":22},"end":{"line":3,"column":null}},"5":{"start":{"line":4,"column":17},"end":{"line":4,"column":null}},"6":{"start":{"line":8,"column":2},"end":{"line":33,"column":null}},"7":{"start":{"line":9,"column":18},"end":{"line":9,"column":null}},"8":{"start":{"line":10,"column":4},"end":{"line":32,"column":null}},"9":{"start":{"line":11,"column":6},"end":{"line":24,"column":null}},"10":{"start":{"line":12,"column":22},"end":{"line":12,"column":null}},"11":{"start":{"line":13,"column":8},"end":{"line":23,"column":null}},"12":{"start":{"line":25,"column":6},"end":{"line":31,"column":null}},"13":{"start":{"line":35,"column":15},"end":{"line":35,"column":25}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":8,"column":2},"end":{"line":8,"column":3}},"loc":{"start":{"line":8,"column":14},"end":{"line":33,"column":null}}},"1":{"name":"(anonymous_5)","decl":{"start":{"line":10,"column":24},"end":{"line":10,"column":25}},"loc":{"start":{"line":10,"column":33},"end":{"line":32,"column":7}}}},"branchMap":{"0":{"loc":{"start":{"line":11,"column":6},"end":{"line":24,"column":null}},"type":"if","locations":[{"start":{"line":11,"column":6},"end":{"line":24,"column":null}}]}},"s":{"0":3,"1":0,"2":22,"3":22,"4":22,"5":22,"6":22,"7":3,"8":3,"9":6,"10":2,"11":2,"12":4,"13":22},"f":{"0":3,"1":6},"b":{"0":[2]}} +,"/Users/Mirek.Rusin/tsql/src/json-path-exists.ts": {"path":"/Users/Mirek.Rusin/tsql/src/json-path-exists.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":15}},"1":{"start":{"line":1,"column":31},"end":{"line":1,"column":null}},"2":{"start":{"line":2,"column":15},"end":{"line":2,"column":29}}},"fnMap":{},"branchMap":{},"s":{"0":0,"1":22,"2":22},"f":{},"b":{}} +,"/Users/Mirek.Rusin/tsql/src/json-path.ts": {"path":"/Users/Mirek.Rusin/tsql/src/json-path.ts","statementMap":{"0":{"start":{"line":23,"column":0},"end":{"line":23,"column":15}},"1":{"start":{"line":5,"column":13},"end":{"line":5,"column":21}},"2":{"start":{"line":2,"column":13},"end":{"line":2,"column":15}},"3":{"start":{"line":2,"column":18},"end":{"line":2,"column":null}},"4":{"start":{"line":6,"column":2},"end":{"line":21,"column":null}},"5":{"start":{"line":7,"column":4},"end":{"line":9,"column":null}},"6":{"start":{"line":8,"column":6},"end":{"line":8,"column":null}},"7":{"start":{"line":10,"column":28},"end":{"line":10,"column":30}},"8":{"start":{"line":11,"column":4},"end":{"line":13,"column":null}},"9":{"start":{"line":12,"column":6},"end":{"line":12,"column":null}},"10":{"start":{"line":14,"column":4},"end":{"line":16,"column":null}},"11":{"start":{"line":15,"column":6},"end":{"line":15,"column":null}},"12":{"start":{"line":17,"column":4},"end":{"line":19,"column":null}},"13":{"start":{"line":18,"column":6},"end":{"line":18,"column":null}},"14":{"start":{"line":20,"column":4},"end":{"line":20,"column":null}},"15":{"start":{"line":23,"column":15},"end":{"line":23,"column":23}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":6,"column":2},"end":{"line":6,"column":3}},"loc":{"start":{"line":6,"column":85},"end":{"line":21,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":6,"column":17},"end":{"line":6,"column":85}},"type":"default-arg","locations":[{"start":{"line":6,"column":83},"end":{"line":6,"column":85}}]},"1":{"loc":{"start":{"line":7,"column":4},"end":{"line":9,"column":null}},"type":"if","locations":[{"start":{"line":7,"column":4},"end":{"line":9,"column":null}}]},"2":{"loc":{"start":{"line":11,"column":4},"end":{"line":13,"column":null}},"type":"if","locations":[{"start":{"line":11,"column":4},"end":{"line":13,"column":null}}]},"3":{"loc":{"start":{"line":14,"column":4},"end":{"line":16,"column":null}},"type":"if","locations":[{"start":{"line":14,"column":4},"end":{"line":16,"column":null}}]},"4":{"loc":{"start":{"line":17,"column":4},"end":{"line":19,"column":null}},"type":"if","locations":[{"start":{"line":17,"column":4},"end":{"line":19,"column":null}}]}},"s":{"0":20,"1":0,"2":0,"3":22,"4":22,"5":20,"6":5,"7":15,"8":15,"9":2,"10":15,"11":1,"12":15,"13":2,"14":13,"15":22},"f":{"0":20},"b":{"0":[18],"1":[5],"2":[2],"3":[1],"4":[2]}} +,"/Users/Mirek.Rusin/tsql/src/json-query.ts": {"path":"/Users/Mirek.Rusin/tsql/src/json-query.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":15}},"1":{"start":{"line":1,"column":26},"end":{"line":1,"column":null}},"2":{"start":{"line":2,"column":15},"end":{"line":2,"column":24}}},"fnMap":{},"branchMap":{},"s":{"0":0,"1":22,"2":22},"f":{},"b":{}} +,"/Users/Mirek.Rusin/tsql/src/json-value.ts": {"path":"/Users/Mirek.Rusin/tsql/src/json-value.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":15}},"1":{"start":{"line":1,"column":26},"end":{"line":1,"column":null}},"2":{"start":{"line":2,"column":15},"end":{"line":2,"column":24}}},"fnMap":{},"branchMap":{},"s":{"0":0,"1":22,"2":22},"f":{},"b":{}} +,"/Users/Mirek.Rusin/tsql/src/json.ts": {"path":"/Users/Mirek.Rusin/tsql/src/json.ts","statementMap":{"0":{"start":{"line":16,"column":0},"end":{"line":16,"column":15}},"1":{"start":{"line":10,"column":13},"end":{"line":10,"column":17}},"2":{"start":{"line":1,"column":18},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":20},"end":{"line":2,"column":null}},"4":{"start":{"line":11,"column":2},"end":{"line":14,"column":null}},"5":{"start":{"line":12,"column":4},"end":{"line":14,"column":null}},"6":{"start":{"line":16,"column":15},"end":{"line":16,"column":19}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":11,"column":2},"end":{"line":11,"column":3}},"loc":{"start":{"line":12,"column":4},"end":{"line":14,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":12,"column":4},"end":{"line":14,"column":null}},"type":"cond-expr","locations":[{"start":{"line":13,"column":6},"end":{"line":13,"column":11}},{"start":{"line":14,"column":6},"end":{"line":14,"column":null}}]}},"s":{"0":8,"1":0,"2":22,"3":22,"4":22,"5":8,"6":22},"f":{"0":8},"b":{"0":[0,8]}} +,"/Users/Mirek.Rusin/tsql/src/keys-of-objects.ts": {"path":"/Users/Mirek.Rusin/tsql/src/keys-of-objects.ts","statementMap":{"0":{"start":{"line":31,"column":0},"end":{"line":31,"column":15}},"1":{"start":{"line":11,"column":13},"end":{"line":11,"column":26}},"2":{"start":{"line":2,"column":13},"end":{"line":2,"column":17}},"3":{"start":{"line":3,"column":2},"end":{"line":4,"column":null}},"4":{"start":{"line":4,"column":4},"end":{"line":4,"column":null}},"5":{"start":{"line":4,"column":50},"end":{"line":4,"column":61}},"6":{"start":{"line":12,"column":2},"end":{"line":29,"column":null}},"7":{"start":{"line":13,"column":4},"end":{"line":15,"column":null}},"8":{"start":{"line":14,"column":6},"end":{"line":14,"column":null}},"9":{"start":{"line":16,"column":4},"end":{"line":18,"column":null}},"10":{"start":{"line":17,"column":6},"end":{"line":17,"column":null}},"11":{"start":{"line":19,"column":17},"end":{"line":19,"column":null}},"12":{"start":{"line":20,"column":4},"end":{"line":25,"column":null}},"13":{"start":{"line":20,"column":17},"end":{"line":20,"column":20}},"14":{"start":{"line":21,"column":20},"end":{"line":21,"column":null}},"15":{"start":{"line":22,"column":6},"end":{"line":24,"column":null}},"16":{"start":{"line":23,"column":8},"end":{"line":23,"column":null}},"17":{"start":{"line":28,"column":4},"end":{"line":28,"column":null}},"18":{"start":{"line":31,"column":15},"end":{"line":31,"column":28}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":3,"column":2},"end":{"line":3,"column":3}},"loc":{"start":{"line":4,"column":4},"end":{"line":4,"column":null}}},"1":{"name":"(anonymous_5)","decl":{"start":{"line":4,"column":40},"end":{"line":4,"column":41}},"loc":{"start":{"line":4,"column":50},"end":{"line":4,"column":61}}},"2":{"name":"(anonymous_6)","decl":{"start":{"line":12,"column":2},"end":{"line":12,"column":3}},"loc":{"start":{"line":12,"column":3},"end":{"line":29,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":4,"column":4},"end":{"line":4,"column":null}},"type":"binary-expr","locations":[{"start":{"line":4,"column":4},"end":{"line":4,"column":27}},{"start":{"line":4,"column":31},"end":{"line":4,"column":null}}]},"1":{"loc":{"start":{"line":13,"column":4},"end":{"line":15,"column":null}},"type":"if","locations":[{"start":{"line":13,"column":4},"end":{"line":15,"column":null}}]},"2":{"loc":{"start":{"line":16,"column":4},"end":{"line":18,"column":null}},"type":"if","locations":[{"start":{"line":16,"column":4},"end":{"line":18,"column":null}}]},"3":{"loc":{"start":{"line":22,"column":6},"end":{"line":24,"column":null}},"type":"if","locations":[{"start":{"line":22,"column":6},"end":{"line":24,"column":null}}]}},"s":{"0":21,"1":0,"2":0,"3":22,"4":4124,"5":4152,"6":22,"7":21,"8":0,"9":21,"10":0,"11":21,"12":21,"13":21,"14":4124,"15":4124,"16":0,"17":21,"18":22},"f":{"0":4124,"1":4152,"2":21},"b":{"0":[4124,4124],"1":[0],"2":[0],"3":[0]}} +,"/Users/Mirek.Rusin/tsql/src/keywords.ts": {"path":"/Users/Mirek.Rusin/tsql/src/keywords.ts","statementMap":{"0":{"start":{"line":979,"column":0},"end":{"line":979,"column":15}},"1":{"start":{"line":1,"column":18},"end":{"line":973,"column":null}},"2":{"start":{"line":977,"column":2},"end":{"line":977,"column":null}},"3":{"start":{"line":977,"column":30},"end":{"line":977,"column":52}},"4":{"start":{"line":979,"column":15},"end":{"line":979,"column":null}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":977,"column":19},"end":{"line":977,"column":20}},"loc":{"start":{"line":977,"column":30},"end":{"line":977,"column":52}}}},"branchMap":{},"s":{"0":424,"1":22,"2":22,"3":21362,"4":22},"f":{"0":21362},"b":{}} +,"/Users/Mirek.Rusin/tsql/src/like.ts": {"path":"/Users/Mirek.Rusin/tsql/src/like.ts","statementMap":{"0":{"start":{"line":25,"column":0},"end":{"line":25,"column":15}},"1":{"start":{"line":19,"column":13},"end":{"line":19,"column":17}},"2":{"start":{"line":1,"column":21},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":15},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":19},"end":{"line":3,"column":null}},"5":{"start":{"line":4,"column":20},"end":{"line":4,"column":null}},"6":{"start":{"line":5,"column":17},"end":{"line":5,"column":null}},"7":{"start":{"line":9,"column":2},"end":{"line":12,"column":40}},"8":{"start":{"line":10,"column":4},"end":{"line":12,"column":40}},"9":{"start":{"line":20,"column":2},"end":{"line":23,"column":48}},"10":{"start":{"line":21,"column":4},"end":{"line":23,"column":48}},"11":{"start":{"line":25,"column":15},"end":{"line":25,"column":19}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":9,"column":2},"end":{"line":9,"column":3}},"loc":{"start":{"line":10,"column":4},"end":{"line":12,"column":40}}},"1":{"name":"(anonymous_5)","decl":{"start":{"line":20,"column":2},"end":{"line":20,"column":3}},"loc":{"start":{"line":21,"column":4},"end":{"line":23,"column":48}}}},"branchMap":{"0":{"loc":{"start":{"line":10,"column":4},"end":{"line":12,"column":40}},"type":"cond-expr","locations":[{"start":{"line":11,"column":6},"end":{"line":11,"column":19}},{"start":{"line":12,"column":6},"end":{"line":12,"column":40}}]},"1":{"loc":{"start":{"line":21,"column":4},"end":{"line":23,"column":48}},"type":"cond-expr","locations":[{"start":{"line":22,"column":6},"end":{"line":22,"column":null}},{"start":{"line":23,"column":6},"end":{"line":23,"column":48}}]}},"s":{"0":22,"1":0,"2":22,"3":22,"4":22,"5":22,"6":22,"7":22,"8":1,"9":22,"10":1,"11":22},"f":{"0":1,"1":1},"b":{"0":[0,1],"1":[0,1]}} +,"/Users/Mirek.Rusin/tsql/src/limited-hints-identifier.ts": {"path":"/Users/Mirek.Rusin/tsql/src/limited-hints-identifier.ts","statementMap":{"0":{"start":{"line":14,"column":0},"end":{"line":14,"column":15}},"1":{"start":{"line":1,"column":34},"end":{"line":1,"column":null}},"2":{"start":{"line":2,"column":23},"end":{"line":2,"column":null}},"3":{"start":{"line":3,"column":17},"end":{"line":3,"column":null}},"4":{"start":{"line":4,"column":21},"end":{"line":4,"column":null}},"5":{"start":{"line":9,"column":2},"end":{"line":12,"column":null}},"6":{"start":{"line":10,"column":4},"end":{"line":12,"column":null}},"7":{"start":{"line":14,"column":15},"end":{"line":14,"column":null}}},"fnMap":{"0":{"name":"(anonymous_5)","decl":{"start":{"line":9,"column":2},"end":{"line":9,"column":3}},"loc":{"start":{"line":10,"column":4},"end":{"line":12,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":10,"column":4},"end":{"line":12,"column":null}},"type":"cond-expr","locations":[{"start":{"line":11,"column":6},"end":{"line":11,"column":86}},{"start":{"line":12,"column":6},"end":{"line":12,"column":null}}]},"1":{"loc":{"start":{"line":10,"column":4},"end":{"line":10,"column":null}},"type":"binary-expr","locations":[{"start":{"line":10,"column":4},"end":{"line":10,"column":13}},{"start":{"line":10,"column":13},"end":{"line":10,"column":null}}]}},"s":{"0":20,"1":22,"2":22,"3":22,"4":22,"5":22,"6":20,"7":22},"f":{"0":20},"b":{"0":[18,2],"1":[20,20]}} +,"/Users/Mirek.Rusin/tsql/src/line.ts": {"path":"/Users/Mirek.Rusin/tsql/src/line.ts","statementMap":{"0":{"start":{"line":20,"column":0},"end":{"line":20,"column":15}},"1":{"start":{"line":14,"column":13},"end":{"line":14,"column":17}},"2":{"start":{"line":1,"column":17},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":16},"end":{"line":2,"column":null}},"4":{"start":{"line":15,"column":2},"end":{"line":18,"column":null}},"5":{"start":{"line":16,"column":22},"end":{"line":16,"column":null}},"6":{"start":{"line":16,"column":43},"end":{"line":16,"column":null}},"7":{"start":{"line":17,"column":4},"end":{"line":17,"column":null}},"8":{"start":{"line":17,"column":44},"end":{"line":17,"column":65}},"9":{"start":{"line":20,"column":15},"end":{"line":20,"column":19}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":15,"column":2},"end":{"line":15,"column":3}},"loc":{"start":{"line":15,"column":6},"end":{"line":18,"column":null}}},"1":{"name":"(anonymous_5)","decl":{"start":{"line":16,"column":38},"end":{"line":16,"column":43}},"loc":{"start":{"line":16,"column":43},"end":{"line":16,"column":null}}},"2":{"name":"(anonymous_6)","decl":{"start":{"line":17,"column":39},"end":{"line":17,"column":44}},"loc":{"start":{"line":17,"column":44},"end":{"line":17,"column":65}}}},"branchMap":{},"s":{"0":13,"1":0,"2":22,"3":22,"4":22,"5":13,"6":26,"7":13,"8":26,"9":22},"f":{"0":13,"1":26,"2":26},"b":{}} +,"/Users/Mirek.Rusin/tsql/src/lines.ts": {"path":"/Users/Mirek.Rusin/tsql/src/lines.ts","statementMap":{"0":{"start":{"line":17,"column":0},"end":{"line":17,"column":15}},"1":{"start":{"line":8,"column":13},"end":{"line":8,"column":18}},"2":{"start":{"line":1,"column":23},"end":{"line":1,"column":null}},"3":{"start":{"line":9,"column":2},"end":{"line":15,"column":null}},"4":{"start":{"line":10,"column":19},"end":{"line":10,"column":null}},"5":{"start":{"line":11,"column":4},"end":{"line":13,"column":null}},"6":{"start":{"line":12,"column":6},"end":{"line":12,"column":null}},"7":{"start":{"line":14,"column":4},"end":{"line":14,"column":null}},"8":{"start":{"line":17,"column":15},"end":{"line":17,"column":20}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":9,"column":2},"end":{"line":9,"column":6}},"loc":{"start":{"line":9,"column":44},"end":{"line":15,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":9,"column":28},"end":{"line":9,"column":44}},"type":"default-arg","locations":[{"start":{"line":9,"column":40},"end":{"line":9,"column":44}}]},"1":{"loc":{"start":{"line":11,"column":4},"end":{"line":13,"column":null}},"type":"if","locations":[{"start":{"line":11,"column":4},"end":{"line":13,"column":null}}]}},"s":{"0":5,"1":0,"2":22,"3":22,"4":5,"5":5,"6":2,"7":3,"8":22},"f":{"0":5},"b":{"0":[4],"1":[2]}} +,"/Users/Mirek.Rusin/tsql/src/list.ts": {"path":"/Users/Mirek.Rusin/tsql/src/list.ts","statementMap":{"0":{"start":{"line":23,"column":0},"end":{"line":23,"column":15}},"1":{"start":{"line":12,"column":13},"end":{"line":12,"column":17}},"2":{"start":{"line":1,"column":17},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":16},"end":{"line":2,"column":null}},"4":{"start":{"line":13,"column":2},"end":{"line":21,"column":null}},"5":{"start":{"line":14,"column":20},"end":{"line":17,"column":null}},"6":{"start":{"line":15,"column":19},"end":{"line":15,"column":null}},"7":{"start":{"line":16,"column":16},"end":{"line":16,"column":null}},"8":{"start":{"line":17,"column":19},"end":{"line":17,"column":null}},"9":{"start":{"line":18,"column":4},"end":{"line":20,"column":null}},"10":{"start":{"line":23,"column":15},"end":{"line":23,"column":19}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":13,"column":2},"end":{"line":13,"column":6}},"loc":{"start":{"line":13,"column":90},"end":{"line":21,"column":null}}},"1":{"name":"(anonymous_5)","decl":{"start":{"line":15,"column":14},"end":{"line":15,"column":19}},"loc":{"start":{"line":15,"column":19},"end":{"line":15,"column":null}}},"2":{"name":"(anonymous_6)","decl":{"start":{"line":16,"column":11},"end":{"line":16,"column":16}},"loc":{"start":{"line":16,"column":16},"end":{"line":16,"column":null}}},"3":{"name":"(anonymous_7)","decl":{"start":{"line":17,"column":14},"end":{"line":17,"column":19}},"loc":{"start":{"line":17,"column":19},"end":{"line":17,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":13,"column":28},"end":{"line":13,"column":72}},"type":"default-arg","locations":[{"start":{"line":13,"column":68},"end":{"line":13,"column":72}}]},"1":{"loc":{"start":{"line":13,"column":74},"end":{"line":13,"column":90}},"type":"default-arg","locations":[{"start":{"line":13,"column":86},"end":{"line":13,"column":90}}]},"2":{"loc":{"start":{"line":18,"column":11},"end":{"line":20,"column":null}},"type":"cond-expr","locations":[{"start":{"line":19,"column":6},"end":{"line":19,"column":null}},{"start":{"line":20,"column":6},"end":{"line":20,"column":null}}]}},"s":{"0":4274,"1":0,"2":22,"3":22,"4":22,"5":4274,"6":8524,"7":8512,"8":8512,"9":4274,"10":22},"f":{"0":4274,"1":8524,"2":8512,"3":8512},"b":{"0":[65],"1":[4245],"2":[4270,4]}} +,"/Users/Mirek.Rusin/tsql/src/logical-false.ts": {"path":"/Users/Mirek.Rusin/tsql/src/logical-false.ts","statementMap":{"0":{"start":{"line":16,"column":0},"end":{"line":16,"column":15}},"1":{"start":{"line":13,"column":13},"end":{"line":13,"column":25}},"2":{"start":{"line":2,"column":16},"end":{"line":2,"column":null}},"3":{"start":{"line":14,"column":2},"end":{"line":14,"column":null}},"4":{"start":{"line":16,"column":15},"end":{"line":16,"column":27}}},"fnMap":{},"branchMap":{},"s":{"0":8,"1":0,"2":22,"3":22,"4":22},"f":{},"b":{}} +,"/Users/Mirek.Rusin/tsql/src/logical-true.ts": {"path":"/Users/Mirek.Rusin/tsql/src/logical-true.ts","statementMap":{"0":{"start":{"line":16,"column":0},"end":{"line":16,"column":15}},"1":{"start":{"line":13,"column":13},"end":{"line":13,"column":24}},"2":{"start":{"line":2,"column":16},"end":{"line":2,"column":null}},"3":{"start":{"line":14,"column":2},"end":{"line":14,"column":null}},"4":{"start":{"line":16,"column":15},"end":{"line":16,"column":26}}},"fnMap":{},"branchMap":{},"s":{"0":25,"1":0,"2":22,"3":22,"4":22},"f":{},"b":{}} +,"/Users/Mirek.Rusin/tsql/src/lt.ts": {"path":"/Users/Mirek.Rusin/tsql/src/lt.ts","statementMap":{"0":{"start":{"line":13,"column":0},"end":{"line":13,"column":15}},"1":{"start":{"line":9,"column":13},"end":{"line":9,"column":15}},"2":{"start":{"line":1,"column":15},"end":{"line":1,"column":null}},"3":{"start":{"line":10,"column":2},"end":{"line":11,"column":null}},"4":{"start":{"line":11,"column":4},"end":{"line":11,"column":null}},"5":{"start":{"line":13,"column":15},"end":{"line":13,"column":17}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":10,"column":2},"end":{"line":10,"column":3}},"loc":{"start":{"line":11,"column":4},"end":{"line":11,"column":null}}}},"branchMap":{},"s":{"0":22,"1":0,"2":22,"3":22,"4":2,"5":22},"f":{"0":2},"b":{}} +,"/Users/Mirek.Rusin/tsql/src/lte.ts": {"path":"/Users/Mirek.Rusin/tsql/src/lte.ts","statementMap":{"0":{"start":{"line":13,"column":0},"end":{"line":13,"column":15}},"1":{"start":{"line":9,"column":13},"end":{"line":9,"column":16}},"2":{"start":{"line":1,"column":15},"end":{"line":1,"column":null}},"3":{"start":{"line":10,"column":2},"end":{"line":11,"column":null}},"4":{"start":{"line":11,"column":4},"end":{"line":11,"column":null}},"5":{"start":{"line":13,"column":15},"end":{"line":13,"column":18}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":10,"column":2},"end":{"line":10,"column":3}},"loc":{"start":{"line":11,"column":4},"end":{"line":11,"column":null}}}},"branchMap":{},"s":{"0":22,"1":0,"2":22,"3":22,"4":2,"5":22},"f":{"0":2},"b":{}} +,"/Users/Mirek.Rusin/tsql/src/margin-of-first-line.ts": {"path":"/Users/Mirek.Rusin/tsql/src/margin-of-first-line.ts","statementMap":{"0":{"start":{"line":13,"column":0},"end":{"line":13,"column":15}},"1":{"start":{"line":3,"column":2},"end":{"line":11,"column":null}},"2":{"start":{"line":4,"column":12},"end":{"line":4,"column":null}},"3":{"start":{"line":5,"column":4},"end":{"line":9,"column":null}},"4":{"start":{"line":6,"column":6},"end":{"line":8,"column":null}},"5":{"start":{"line":7,"column":8},"end":{"line":7,"column":null}},"6":{"start":{"line":10,"column":4},"end":{"line":10,"column":null}},"7":{"start":{"line":13,"column":15},"end":{"line":13,"column":null}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":3,"column":2},"end":{"line":3,"column":3}},"loc":{"start":{"line":3,"column":3},"end":{"line":11,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":6,"column":6},"end":{"line":8,"column":null}},"type":"if","locations":[{"start":{"line":6,"column":6},"end":{"line":8,"column":null}}]},"1":{"loc":{"start":{"line":6,"column":10},"end":{"line":6,"column":47}},"type":"binary-expr","locations":[{"start":{"line":6,"column":10},"end":{"line":6,"column":29}},{"start":{"line":6,"column":29},"end":{"line":6,"column":47}}]}},"s":{"0":14,"1":24,"2":14,"3":14,"4":16,"5":6,"6":14,"7":24},"f":{"0":14},"b":{"0":[6],"1":[16,8]}} +,"/Users/Mirek.Rusin/tsql/src/margin-of-last-line.ts": {"path":"/Users/Mirek.Rusin/tsql/src/margin-of-last-line.ts","statementMap":{"0":{"start":{"line":7,"column":0},"end":{"line":7,"column":15}},"1":{"start":{"line":1,"column":30},"end":{"line":1,"column":null}},"2":{"start":{"line":4,"column":2},"end":{"line":5,"column":null}},"3":{"start":{"line":5,"column":4},"end":{"line":5,"column":null}},"4":{"start":{"line":7,"column":15},"end":{"line":7,"column":null}}},"fnMap":{"0":{"name":"(anonymous_2)","decl":{"start":{"line":4,"column":2},"end":{"line":4,"column":3}},"loc":{"start":{"line":5,"column":4},"end":{"line":5,"column":null}}}},"branchMap":{},"s":{"0":8,"1":23,"2":23,"3":8,"4":23},"f":{"0":8},"b":{}} +,"/Users/Mirek.Rusin/tsql/src/maybe-line.ts": {"path":"/Users/Mirek.Rusin/tsql/src/maybe-line.ts","statementMap":{"0":{"start":{"line":20,"column":0},"end":{"line":20,"column":15}},"1":{"start":{"line":12,"column":13},"end":{"line":12,"column":22}},"2":{"start":{"line":1,"column":17},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":16},"end":{"line":2,"column":null}},"4":{"start":{"line":13,"column":2},"end":{"line":18,"column":null}},"5":{"start":{"line":14,"column":22},"end":{"line":14,"column":null}},"6":{"start":{"line":14,"column":43},"end":{"line":14,"column":null}},"7":{"start":{"line":15,"column":4},"end":{"line":17,"column":null}},"8":{"start":{"line":16,"column":39},"end":{"line":16,"column":60}},"9":{"start":{"line":20,"column":15},"end":{"line":20,"column":24}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":13,"column":2},"end":{"line":13,"column":3}},"loc":{"start":{"line":13,"column":6},"end":{"line":18,"column":null}}},"1":{"name":"(anonymous_5)","decl":{"start":{"line":14,"column":38},"end":{"line":14,"column":43}},"loc":{"start":{"line":14,"column":43},"end":{"line":14,"column":null}}},"2":{"name":"(anonymous_6)","decl":{"start":{"line":16,"column":34},"end":{"line":16,"column":39}},"loc":{"start":{"line":16,"column":39},"end":{"line":16,"column":60}}}},"branchMap":{"0":{"loc":{"start":{"line":15,"column":11},"end":{"line":17,"column":null}},"type":"cond-expr","locations":[{"start":{"line":16,"column":6},"end":{"line":16,"column":null}},{"start":{"line":17,"column":6},"end":{"line":17,"column":null}}]}},"s":{"0":0,"1":0,"2":22,"3":22,"4":22,"5":0,"6":0,"7":0,"8":0,"9":22},"f":{"0":0,"1":0,"2":0},"b":{"0":[0,0]}} +,"/Users/Mirek.Rusin/tsql/src/maybe-lines.ts": {"path":"/Users/Mirek.Rusin/tsql/src/maybe-lines.ts","statementMap":{"0":{"start":{"line":20,"column":0},"end":{"line":20,"column":15}},"1":{"start":{"line":6,"column":13},"end":{"line":6,"column":23}},"2":{"start":{"line":1,"column":17},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":16},"end":{"line":2,"column":null}},"4":{"start":{"line":7,"column":2},"end":{"line":18,"column":null}},"5":{"start":{"line":9,"column":6},"end":{"line":13,"column":null}},"6":{"start":{"line":10,"column":21},"end":{"line":10,"column":null}},"7":{"start":{"line":11,"column":18},"end":{"line":11,"column":null}},"8":{"start":{"line":12,"column":21},"end":{"line":12,"column":null}},"9":{"start":{"line":13,"column":18},"end":{"line":13,"column":null}},"10":{"start":{"line":14,"column":4},"end":{"line":16,"column":null}},"11":{"start":{"line":15,"column":6},"end":{"line":15,"column":null}},"12":{"start":{"line":17,"column":4},"end":{"line":17,"column":null}},"13":{"start":{"line":20,"column":15},"end":{"line":20,"column":25}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":7,"column":2},"end":{"line":7,"column":6}},"loc":{"start":{"line":7,"column":44},"end":{"line":18,"column":null}}},"1":{"name":"(anonymous_5)","decl":{"start":{"line":10,"column":16},"end":{"line":10,"column":21}},"loc":{"start":{"line":10,"column":21},"end":{"line":10,"column":null}}},"2":{"name":"(anonymous_6)","decl":{"start":{"line":11,"column":13},"end":{"line":11,"column":18}},"loc":{"start":{"line":11,"column":18},"end":{"line":11,"column":null}}},"3":{"name":"(anonymous_7)","decl":{"start":{"line":12,"column":16},"end":{"line":12,"column":21}},"loc":{"start":{"line":12,"column":21},"end":{"line":12,"column":null}}},"4":{"name":"(anonymous_8)","decl":{"start":{"line":13,"column":13},"end":{"line":13,"column":18}},"loc":{"start":{"line":13,"column":18},"end":{"line":13,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":7,"column":28},"end":{"line":7,"column":44}},"type":"default-arg","locations":[{"start":{"line":7,"column":40},"end":{"line":7,"column":44}}]},"1":{"loc":{"start":{"line":14,"column":4},"end":{"line":16,"column":null}},"type":"if","locations":[{"start":{"line":14,"column":4},"end":{"line":16,"column":null}}]}},"s":{"0":5,"1":0,"2":22,"3":22,"4":22,"5":5,"6":10,"7":7,"8":7,"9":7,"10":5,"11":2,"12":3,"13":22},"f":{"0":5,"1":10,"2":7,"3":7,"4":7},"b":{"0":[0],"1":[2]}} +,"/Users/Mirek.Rusin/tsql/src/merge-1n.ts": {"path":"/Users/Mirek.Rusin/tsql/src/merge-1n.ts","statementMap":{"0":{"start":{"line":45,"column":0},"end":{"line":45,"column":15}},"1":{"start":{"line":11,"column":13},"end":{"line":11,"column":20}},"2":{"start":{"line":1,"column":15},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":24},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":35},"end":{"line":3,"column":null}},"5":{"start":{"line":4,"column":16},"end":{"line":4,"column":null}},"6":{"start":{"line":5,"column":17},"end":{"line":5,"column":null}},"7":{"start":{"line":12,"column":2},"end":{"line":43,"column":null}},"8":{"start":{"line":21,"column":19},"end":{"line":21,"column":null}},"9":{"start":{"line":22,"column":21},"end":{"line":22,"column":null}},"10":{"start":{"line":23,"column":21},"end":{"line":23,"column":null}},"11":{"start":{"line":24,"column":4},"end":{"line":26,"column":null}},"12":{"start":{"line":25,"column":6},"end":{"line":25,"column":null}},"13":{"start":{"line":27,"column":4},"end":{"line":29,"column":null}},"14":{"start":{"line":28,"column":6},"end":{"line":28,"column":null}},"15":{"start":{"line":30,"column":4},"end":{"line":42,"column":null}},"16":{"start":{"line":45,"column":15},"end":{"line":45,"column":22}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":12,"column":2},"end":{"line":12,"column":null}},"loc":{"start":{"line":19,"column":10},"end":{"line":43,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":17,"column":4},"end":{"line":19,"column":10}},"type":"default-arg","locations":[{"start":{"line":19,"column":8},"end":{"line":19,"column":10}}]},"1":{"loc":{"start":{"line":17,"column":6},"end":{"line":17,"column":null}},"type":"default-arg","locations":[{"start":{"line":17,"column":14},"end":{"line":17,"column":null}}]},"2":{"loc":{"start":{"line":24,"column":4},"end":{"line":26,"column":null}},"type":"if","locations":[{"start":{"line":24,"column":4},"end":{"line":26,"column":null}}]},"3":{"loc":{"start":{"line":27,"column":4},"end":{"line":29,"column":null}},"type":"if","locations":[{"start":{"line":27,"column":4},"end":{"line":29,"column":null}}]}},"s":{"0":5,"1":0,"2":22,"3":22,"4":22,"5":22,"6":22,"7":22,"8":5,"9":5,"10":5,"11":5,"12":0,"13":5,"14":1,"15":4,"16":22},"f":{"0":5},"b":{"0":[1],"1":[1],"2":[0],"3":[1]}} +,"/Users/Mirek.Rusin/tsql/src/modify-jsons.ts": {"path":"/Users/Mirek.Rusin/tsql/src/modify-jsons.ts","statementMap":{"0":{"start":{"line":62,"column":0},"end":{"line":62,"column":15}},"1":{"start":{"line":23,"column":13},"end":{"line":23,"column":19}},"2":{"start":{"line":33,"column":13},"end":{"line":33,"column":24}},"3":{"start":{"line":15,"column":13},"end":{"line":15,"column":27}},"4":{"start":{"line":19,"column":13},"end":{"line":19,"column":27}},"5":{"start":{"line":1,"column":16},"end":{"line":1,"column":null}},"6":{"start":{"line":2,"column":15},"end":{"line":2,"column":null}},"7":{"start":{"line":3,"column":15},"end":{"line":3,"column":null}},"8":{"start":{"line":4,"column":33},"end":{"line":4,"column":null}},"9":{"start":{"line":5,"column":26},"end":{"line":5,"column":null}},"10":{"start":{"line":6,"column":17},"end":{"line":6,"column":null}},"11":{"start":{"line":9,"column":17},"end":{"line":9,"column":null}},"12":{"start":{"line":10,"column":19},"end":{"line":10,"column":null}},"13":{"start":{"line":16,"column":2},"end":{"line":17,"column":null}},"14":{"start":{"line":17,"column":4},"end":{"line":17,"column":null}},"15":{"start":{"line":20,"column":2},"end":{"line":21,"column":null}},"16":{"start":{"line":21,"column":4},"end":{"line":21,"column":null}},"17":{"start":{"line":24,"column":2},"end":{"line":29,"column":null}},"18":{"start":{"line":25,"column":4},"end":{"line":29,"column":null}},"19":{"start":{"line":29,"column":38},"end":{"line":29,"column":138}},"20":{"start":{"line":33,"column":27},"end":{"line":60,"column":null}},"21":{"start":{"line":38,"column":2},"end":{"line":40,"column":null}},"22":{"start":{"line":39,"column":4},"end":{"line":39,"column":null}},"23":{"start":{"line":42,"column":17},"end":{"line":42,"column":null}},"24":{"start":{"line":43,"column":21},"end":{"line":43,"column":null}},"25":{"start":{"line":44,"column":17},"end":{"line":44,"column":null}},"26":{"start":{"line":44,"column":40},"end":{"line":44,"column":null}},"27":{"start":{"line":45,"column":22},"end":{"line":45,"column":null}},"28":{"start":{"line":45,"column":45},"end":{"line":45,"column":null}},"29":{"start":{"line":46,"column":18},"end":{"line":49,"column":null}},"30":{"start":{"line":47,"column":21},"end":{"line":47,"column":null}},"31":{"start":{"line":47,"column":52},"end":{"line":47,"column":65}},"32":{"start":{"line":48,"column":4},"end":{"line":48,"column":null}},"33":{"start":{"line":51,"column":14},"end":{"line":51,"column":null}},"34":{"start":{"line":51,"column":37},"end":{"line":51,"column":null}},"35":{"start":{"line":53,"column":2},"end":{"line":59,"column":null}},"36":{"start":{"line":62,"column":15},"end":{"line":62,"column":26}}},"fnMap":{"0":{"name":"(anonymous_7)","decl":{"start":{"line":16,"column":2},"end":{"line":16,"column":3}},"loc":{"start":{"line":17,"column":4},"end":{"line":17,"column":null}}},"1":{"name":"(anonymous_8)","decl":{"start":{"line":20,"column":2},"end":{"line":20,"column":3}},"loc":{"start":{"line":21,"column":4},"end":{"line":21,"column":null}}},"2":{"name":"(anonymous_9)","decl":{"start":{"line":24,"column":2},"end":{"line":24,"column":3}},"loc":{"start":{"line":25,"column":4},"end":{"line":29,"column":null}}},"3":{"name":"(anonymous_10)","decl":{"start":{"line":29,"column":22},"end":{"line":29,"column":23}},"loc":{"start":{"line":29,"column":38},"end":{"line":29,"column":138}}},"4":{"name":"(anonymous_11)","decl":{"start":{"line":33,"column":27},"end":{"line":33,"column":null}},"loc":{"start":{"line":35,"column":2},"end":{"line":60,"column":null}}},"5":{"name":"(anonymous_12)","decl":{"start":{"line":44,"column":35},"end":{"line":44,"column":40}},"loc":{"start":{"line":44,"column":40},"end":{"line":44,"column":null}}},"6":{"name":"(anonymous_13)","decl":{"start":{"line":45,"column":40},"end":{"line":45,"column":45}},"loc":{"start":{"line":45,"column":45},"end":{"line":45,"column":null}}},"7":{"name":"(anonymous_14)","decl":{"start":{"line":46,"column":39},"end":{"line":46,"column":null}},"loc":{"start":{"line":46,"column":39},"end":{"line":49,"column":null}}},"8":{"name":"(anonymous_15)","decl":{"start":{"line":47,"column":47},"end":{"line":47,"column":52}},"loc":{"start":{"line":47,"column":52},"end":{"line":47,"column":65}}},"9":{"name":"(anonymous_16)","decl":{"start":{"line":51,"column":32},"end":{"line":51,"column":37}},"loc":{"start":{"line":51,"column":37},"end":{"line":51,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":38,"column":2},"end":{"line":40,"column":null}},"type":"if","locations":[{"start":{"line":38,"column":2},"end":{"line":40,"column":null}}]}},"s":{"0":2,"1":0,"2":0,"3":0,"4":0,"5":22,"6":22,"7":22,"8":22,"9":22,"10":22,"11":22,"12":22,"13":22,"14":7,"15":22,"16":6,"17":22,"18":2,"19":5,"20":22,"21":2,"22":0,"23":2,"24":2,"25":2,"26":4,"27":2,"28":4,"29":2,"30":2,"31":4,"32":2,"33":2,"34":2,"35":2,"36":22},"f":{"0":7,"1":6,"2":2,"3":5,"4":2,"5":4,"6":4,"7":2,"8":4,"9":2},"b":{"0":[0]}} +,"/Users/Mirek.Rusin/tsql/src/ne.ts": {"path":"/Users/Mirek.Rusin/tsql/src/ne.ts","statementMap":{"0":{"start":{"line":18,"column":0},"end":{"line":18,"column":15}},"1":{"start":{"line":7,"column":13},"end":{"line":7,"column":15}},"2":{"start":{"line":1,"column":21},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":15},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":19},"end":{"line":3,"column":null}},"5":{"start":{"line":5,"column":17},"end":{"line":5,"column":null}},"6":{"start":{"line":8,"column":2},"end":{"line":16,"column":null}},"7":{"start":{"line":9,"column":4},"end":{"line":11,"column":null}},"8":{"start":{"line":10,"column":6},"end":{"line":10,"column":null}},"9":{"start":{"line":12,"column":15},"end":{"line":12,"column":null}},"10":{"start":{"line":13,"column":4},"end":{"line":15,"column":null}},"11":{"start":{"line":18,"column":15},"end":{"line":18,"column":17}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":8,"column":2},"end":{"line":8,"column":3}},"loc":{"start":{"line":8,"column":20},"end":{"line":16,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":9,"column":4},"end":{"line":11,"column":null}},"type":"if","locations":[{"start":{"line":9,"column":4},"end":{"line":11,"column":null}}]},"1":{"loc":{"start":{"line":13,"column":11},"end":{"line":15,"column":27}},"type":"cond-expr","locations":[{"start":{"line":14,"column":6},"end":{"line":14,"column":29}},{"start":{"line":15,"column":6},"end":{"line":15,"column":27}}]}},"s":{"0":22,"1":0,"2":22,"3":22,"4":22,"5":22,"6":22,"7":1,"8":0,"9":1,"10":1,"11":22},"f":{"0":1},"b":{"0":[0],"1":[0,1]}} +,"/Users/Mirek.Rusin/tsql/src/ng.ts": {"path":"/Users/Mirek.Rusin/tsql/src/ng.ts","statementMap":{"0":{"start":{"line":8,"column":0},"end":{"line":8,"column":15}},"1":{"start":{"line":4,"column":13},"end":{"line":4,"column":15}},"2":{"start":{"line":1,"column":15},"end":{"line":1,"column":null}},"3":{"start":{"line":5,"column":2},"end":{"line":6,"column":null}},"4":{"start":{"line":6,"column":4},"end":{"line":6,"column":null}},"5":{"start":{"line":8,"column":15},"end":{"line":8,"column":17}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":5,"column":2},"end":{"line":5,"column":3}},"loc":{"start":{"line":6,"column":4},"end":{"line":6,"column":null}}}},"branchMap":{},"s":{"0":22,"1":0,"2":22,"3":22,"4":1,"5":22},"f":{"0":1},"b":{}} +,"/Users/Mirek.Rusin/tsql/src/nl.ts": {"path":"/Users/Mirek.Rusin/tsql/src/nl.ts","statementMap":{"0":{"start":{"line":8,"column":0},"end":{"line":8,"column":15}},"1":{"start":{"line":4,"column":13},"end":{"line":4,"column":15}},"2":{"start":{"line":1,"column":15},"end":{"line":1,"column":null}},"3":{"start":{"line":5,"column":2},"end":{"line":6,"column":null}},"4":{"start":{"line":6,"column":4},"end":{"line":6,"column":null}},"5":{"start":{"line":8,"column":15},"end":{"line":8,"column":17}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":5,"column":2},"end":{"line":5,"column":3}},"loc":{"start":{"line":6,"column":4},"end":{"line":6,"column":null}}}},"branchMap":{},"s":{"0":22,"1":0,"2":22,"3":22,"4":1,"5":22},"f":{"0":1},"b":{}} +,"/Users/Mirek.Rusin/tsql/src/not-between.ts": {"path":"/Users/Mirek.Rusin/tsql/src/not-between.ts","statementMap":{"0":{"start":{"line":12,"column":0},"end":{"line":12,"column":15}},"1":{"start":{"line":6,"column":13},"end":{"line":6,"column":23}},"2":{"start":{"line":1,"column":21},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":15},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":17},"end":{"line":3,"column":null}},"5":{"start":{"line":7,"column":2},"end":{"line":10,"column":62}},"6":{"start":{"line":8,"column":4},"end":{"line":10,"column":62}},"7":{"start":{"line":12,"column":15},"end":{"line":12,"column":25}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":7,"column":2},"end":{"line":7,"column":6}},"loc":{"start":{"line":8,"column":4},"end":{"line":10,"column":62}}}},"branchMap":{"0":{"loc":{"start":{"line":8,"column":4},"end":{"line":10,"column":62}},"type":"cond-expr","locations":[{"start":{"line":9,"column":6},"end":{"line":9,"column":null}},{"start":{"line":10,"column":6},"end":{"line":10,"column":62}}]},"1":{"loc":{"start":{"line":8,"column":4},"end":{"line":8,"column":null}},"type":"binary-expr","locations":[{"start":{"line":8,"column":4},"end":{"line":8,"column":32}},{"start":{"line":8,"column":32},"end":{"line":8,"column":null}}]}},"s":{"0":22,"1":0,"2":22,"3":22,"4":22,"5":22,"6":1,"7":22},"f":{"0":1},"b":{"0":[0,1],"1":[1,1]}} +,"/Users/Mirek.Rusin/tsql/src/not-distinct.ts": {"path":"/Users/Mirek.Rusin/tsql/src/not-distinct.ts","statementMap":{"0":{"start":{"line":15,"column":0},"end":{"line":15,"column":15}},"1":{"start":{"line":6,"column":13},"end":{"line":6,"column":24}},"2":{"start":{"line":1,"column":21},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":15},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":21},"end":{"line":3,"column":null}},"5":{"start":{"line":7,"column":2},"end":{"line":13,"column":null}},"6":{"start":{"line":8,"column":4},"end":{"line":10,"column":null}},"7":{"start":{"line":9,"column":6},"end":{"line":9,"column":null}},"8":{"start":{"line":11,"column":17},"end":{"line":11,"column":null}},"9":{"start":{"line":12,"column":4},"end":{"line":12,"column":null}},"10":{"start":{"line":15,"column":15},"end":{"line":15,"column":26}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":7,"column":2},"end":{"line":7,"column":3}},"loc":{"start":{"line":7,"column":20},"end":{"line":13,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":8,"column":4},"end":{"line":10,"column":null}},"type":"if","locations":[{"start":{"line":8,"column":4},"end":{"line":10,"column":null}}]},"1":{"loc":{"start":{"line":8,"column":8},"end":{"line":8,"column":66}},"type":"binary-expr","locations":[{"start":{"line":8,"column":8},"end":{"line":8,"column":38}},{"start":{"line":8,"column":38},"end":{"line":8,"column":66}}]}},"s":{"0":44,"1":0,"2":22,"3":22,"4":22,"5":22,"6":0,"7":0,"8":0,"9":0,"10":22},"f":{"0":0},"b":{"0":[0],"1":[0,0]}} +,"/Users/Mirek.Rusin/tsql/src/not-in.ts": {"path":"/Users/Mirek.Rusin/tsql/src/not-in.ts","statementMap":{"0":{"start":{"line":16,"column":0},"end":{"line":16,"column":15}},"1":{"start":{"line":8,"column":13},"end":{"line":8,"column":18}},"2":{"start":{"line":1,"column":21},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":15},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":19},"end":{"line":3,"column":null}},"5":{"start":{"line":4,"column":16},"end":{"line":4,"column":null}},"6":{"start":{"line":5,"column":17},"end":{"line":5,"column":null}},"7":{"start":{"line":9,"column":2},"end":{"line":14,"column":44}},"8":{"start":{"line":10,"column":4},"end":{"line":14,"column":44}},"9":{"start":{"line":16,"column":15},"end":{"line":16,"column":20}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":9,"column":2},"end":{"line":9,"column":3}},"loc":{"start":{"line":10,"column":4},"end":{"line":14,"column":44}}}},"branchMap":{"0":{"loc":{"start":{"line":10,"column":4},"end":{"line":14,"column":44}},"type":"cond-expr","locations":[{"start":{"line":11,"column":6},"end":{"line":11,"column":null}},{"start":{"line":12,"column":6},"end":{"line":14,"column":44}}]},"1":{"loc":{"start":{"line":12,"column":6},"end":{"line":14,"column":44}},"type":"cond-expr","locations":[{"start":{"line":13,"column":8},"end":{"line":13,"column":49}},{"start":{"line":14,"column":8},"end":{"line":14,"column":44}}]},"2":{"loc":{"start":{"line":12,"column":6},"end":{"line":12,"column":null}},"type":"binary-expr","locations":[{"start":{"line":12,"column":6},"end":{"line":12,"column":11}},{"start":{"line":12,"column":11},"end":{"line":12,"column":26}},{"start":{"line":12,"column":26},"end":{"line":12,"column":null}}]}},"s":{"0":44,"1":0,"2":22,"3":22,"4":22,"5":22,"6":22,"7":22,"8":1,"9":22},"f":{"0":1},"b":{"0":[0,1],"1":[1,0],"2":[1,1,1]}} +,"/Users/Mirek.Rusin/tsql/src/not.ts": {"path":"/Users/Mirek.Rusin/tsql/src/not.ts","statementMap":{"0":{"start":{"line":5,"column":0},"end":{"line":5,"column":15}},"1":{"start":{"line":3,"column":9},"end":{"line":3,"column":null}},"2":{"start":{"line":1,"column":20},"end":{"line":1,"column":null}},"3":{"start":{"line":5,"column":15},"end":{"line":5,"column":18}}},"fnMap":{},"branchMap":{},"s":{"0":0,"1":0,"2":22,"3":22},"f":{},"b":{}} +,"/Users/Mirek.Rusin/tsql/src/now.ts": {"path":"/Users/Mirek.Rusin/tsql/src/now.ts","statementMap":{"0":{"start":{"line":6,"column":0},"end":{"line":6,"column":15}},"1":{"start":{"line":3,"column":13},"end":{"line":3,"column":16}},"2":{"start":{"line":1,"column":16},"end":{"line":1,"column":null}},"3":{"start":{"line":4,"column":2},"end":{"line":4,"column":null}},"4":{"start":{"line":6,"column":15},"end":{"line":6,"column":18}}},"fnMap":{},"branchMap":{},"s":{"0":0,"1":0,"2":22,"3":22,"4":22},"f":{},"b":{}} +,"/Users/Mirek.Rusin/tsql/src/nstring.ts": {"path":"/Users/Mirek.Rusin/tsql/src/nstring.ts","statementMap":{"0":{"start":{"line":13,"column":0},"end":{"line":13,"column":15}},"1":{"start":{"line":5,"column":13},"end":{"line":5,"column":20}},"2":{"start":{"line":1,"column":26},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":14},"end":{"line":2,"column":null}},"4":{"start":{"line":6,"column":2},"end":{"line":11,"column":null}},"5":{"start":{"line":7,"column":4},"end":{"line":11,"column":null}},"6":{"start":{"line":13,"column":15},"end":{"line":13,"column":22}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":6,"column":2},"end":{"line":6,"column":3}},"loc":{"start":{"line":7,"column":4},"end":{"line":11,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":7,"column":4},"end":{"line":11,"column":null}},"type":"cond-expr","locations":[{"start":{"line":8,"column":6},"end":{"line":8,"column":null}},{"start":{"line":9,"column":6},"end":{"line":11,"column":null}}]},"1":{"loc":{"start":{"line":9,"column":6},"end":{"line":11,"column":null}},"type":"cond-expr","locations":[{"start":{"line":10,"column":8},"end":{"line":10,"column":null}},{"start":{"line":11,"column":8},"end":{"line":11,"column":null}}]}},"s":{"0":4264,"1":0,"2":22,"3":22,"4":22,"5":4264,"6":22},"f":{"0":4264},"b":{"0":[0,4264],"1":[0,4264]}} +,"/Users/Mirek.Rusin/tsql/src/null.ts": {"path":"/Users/Mirek.Rusin/tsql/src/null.ts","statementMap":{"0":{"start":{"line":6,"column":0},"end":{"line":6,"column":15}},"1":{"start":{"line":3,"column":13},"end":{"line":3,"column":18}},"2":{"start":{"line":1,"column":16},"end":{"line":1,"column":null}},"3":{"start":{"line":4,"column":2},"end":{"line":4,"column":null}},"4":{"start":{"line":6,"column":15},"end":{"line":6,"column":20}}},"fnMap":{},"branchMap":{},"s":{"0":9,"1":0,"2":22,"3":22,"4":22},"f":{},"b":{}} +,"/Users/Mirek.Rusin/tsql/src/number.ts": {"path":"/Users/Mirek.Rusin/tsql/src/number.ts","statementMap":{"0":{"start":{"line":12,"column":0},"end":{"line":12,"column":15}},"1":{"start":{"line":4,"column":13},"end":{"line":4,"column":19}},"2":{"start":{"line":1,"column":16},"end":{"line":1,"column":null}},"3":{"start":{"line":5,"column":2},"end":{"line":10,"column":null}},"4":{"start":{"line":6,"column":4},"end":{"line":8,"column":null}},"5":{"start":{"line":7,"column":6},"end":{"line":7,"column":null}},"6":{"start":{"line":9,"column":4},"end":{"line":9,"column":null}},"7":{"start":{"line":12,"column":15},"end":{"line":12,"column":21}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":5,"column":2},"end":{"line":5,"column":3}},"loc":{"start":{"line":5,"column":3},"end":{"line":10,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":6,"column":4},"end":{"line":8,"column":null}},"type":"if","locations":[{"start":{"line":6,"column":4},"end":{"line":8,"column":null}}]}},"s":{"0":75,"1":0,"2":22,"3":22,"4":75,"5":0,"6":75,"7":22},"f":{"0":75},"b":{"0":[0]}} +,"/Users/Mirek.Rusin/tsql/src/object-id.ts": {"path":"/Users/Mirek.Rusin/tsql/src/object-id.ts","statementMap":{"0":{"start":{"line":8,"column":0},"end":{"line":8,"column":15}},"1":{"start":{"line":4,"column":13},"end":{"line":4,"column":21}},"2":{"start":{"line":2,"column":17},"end":{"line":2,"column":null}},"3":{"start":{"line":5,"column":2},"end":{"line":6,"column":28}},"4":{"start":{"line":6,"column":4},"end":{"line":6,"column":28}},"5":{"start":{"line":8,"column":15},"end":{"line":8,"column":23}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":5,"column":2},"end":{"line":5,"column":3}},"loc":{"start":{"line":6,"column":4},"end":{"line":6,"column":28}}}},"branchMap":{},"s":{"0":0,"1":0,"2":22,"3":22,"4":0,"5":22},"f":{"0":0},"b":{}} +,"/Users/Mirek.Rusin/tsql/src/op.ts": {"path":"/Users/Mirek.Rusin/tsql/src/op.ts","statementMap":{"0":{"start":{"line":17,"column":0},"end":{"line":17,"column":15}},"1":{"start":{"line":11,"column":13},"end":{"line":11,"column":15}},"2":{"start":{"line":1,"column":21},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":15},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":16},"end":{"line":3,"column":null}},"5":{"start":{"line":5,"column":17},"end":{"line":5,"column":null}},"6":{"start":{"line":12,"column":2},"end":{"line":15,"column":57}},"7":{"start":{"line":13,"column":4},"end":{"line":15,"column":57}},"8":{"start":{"line":17,"column":15},"end":{"line":17,"column":17}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":12,"column":2},"end":{"line":12,"column":3}},"loc":{"start":{"line":13,"column":4},"end":{"line":15,"column":57}}}},"branchMap":{"0":{"loc":{"start":{"line":13,"column":4},"end":{"line":15,"column":57}},"type":"cond-expr","locations":[{"start":{"line":14,"column":6},"end":{"line":14,"column":null}},{"start":{"line":15,"column":6},"end":{"line":15,"column":57}}]}},"s":{"0":12,"1":0,"2":22,"3":22,"4":22,"5":22,"6":22,"7":12,"8":22},"f":{"0":12},"b":{"0":[0,12]}} +,"/Users/Mirek.Rusin/tsql/src/or.ts": {"path":"/Users/Mirek.Rusin/tsql/src/or.ts","statementMap":{"0":{"start":{"line":5,"column":0},"end":{"line":5,"column":15}},"1":{"start":{"line":3,"column":9},"end":{"line":3,"column":null}},"2":{"start":{"line":1,"column":19},"end":{"line":1,"column":null}},"3":{"start":{"line":5,"column":15},"end":{"line":5,"column":17}}},"fnMap":{},"branchMap":{},"s":{"0":6,"1":0,"2":22,"3":22},"f":{},"b":{}} +,"/Users/Mirek.Rusin/tsql/src/order-by.ts": {"path":"/Users/Mirek.Rusin/tsql/src/order-by.ts","statementMap":{"0":{"start":{"line":9,"column":0},"end":{"line":9,"column":15}},"1":{"start":{"line":1,"column":36},"end":{"line":1,"column":null}},"2":{"start":{"line":2,"column":17},"end":{"line":2,"column":null}},"3":{"start":{"line":3,"column":16},"end":{"line":3,"column":null}},"4":{"start":{"line":6,"column":2},"end":{"line":7,"column":null}},"5":{"start":{"line":7,"column":4},"end":{"line":7,"column":null}},"6":{"start":{"line":7,"column":24},"end":{"line":7,"column":null}},"7":{"start":{"line":9,"column":15},"end":{"line":9,"column":null}}},"fnMap":{"0":{"name":"(anonymous_2)","decl":{"start":{"line":6,"column":2},"end":{"line":6,"column":3}},"loc":{"start":{"line":7,"column":4},"end":{"line":7,"column":null}}},"1":{"name":"(anonymous_3)","decl":{"start":{"line":7,"column":19},"end":{"line":7,"column":24}},"loc":{"start":{"line":7,"column":24},"end":{"line":7,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":7,"column":24},"end":{"line":7,"column":null}},"type":"cond-expr","locations":[{"start":{"line":7,"column":41},"end":{"line":7,"column":70}},{"start":{"line":7,"column":70},"end":{"line":7,"column":null}}]}},"s":{"0":3,"1":22,"2":22,"3":22,"4":22,"5":3,"6":4,"7":22},"f":{"0":3,"1":4},"b":{"0":[2,2]}} +,"/Users/Mirek.Rusin/tsql/src/pick.ts": {"path":"/Users/Mirek.Rusin/tsql/src/pick.ts","statementMap":{"0":{"start":{"line":14,"column":0},"end":{"line":14,"column":15}},"1":{"start":{"line":3,"column":13},"end":{"line":3,"column":17}},"2":{"start":{"line":4,"column":2},"end":{"line":12,"column":null}},"3":{"start":{"line":5,"column":44},"end":{"line":5,"column":null}},"4":{"start":{"line":6,"column":4},"end":{"line":10,"column":null}},"5":{"start":{"line":7,"column":6},"end":{"line":9,"column":null}},"6":{"start":{"line":11,"column":4},"end":{"line":11,"column":null}},"7":{"start":{"line":14,"column":15},"end":{"line":14,"column":19}}},"fnMap":{"0":{"name":"(anonymous_3)","decl":{"start":{"line":4,"column":2},"end":{"line":4,"column":3}},"loc":{"start":{"line":4,"column":36},"end":{"line":12,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":7,"column":20},"end":{"line":9,"column":19}},"type":"cond-expr","locations":[{"start":{"line":8,"column":8},"end":{"line":8,"column":null}},{"start":{"line":9,"column":8},"end":{"line":9,"column":19}}]}},"s":{"0":0,"1":0,"2":22,"3":0,"4":0,"5":0,"6":0,"7":22},"f":{"0":0},"b":{"0":[0,0]}} +,"/Users/Mirek.Rusin/tsql/src/quoted-nstring.ts": {"path":"/Users/Mirek.Rusin/tsql/src/quoted-nstring.ts","statementMap":{"0":{"start":{"line":33,"column":0},"end":{"line":33,"column":15}},"1":{"start":{"line":25,"column":13},"end":{"line":25,"column":26}},"2":{"start":{"line":3,"column":21},"end":{"line":3,"column":null}},"3":{"start":{"line":6,"column":2},"end":{"line":7,"column":null}},"4":{"start":{"line":7,"column":4},"end":{"line":7,"column":null}},"5":{"start":{"line":10,"column":2},"end":{"line":15,"column":null}},"6":{"start":{"line":11,"column":4},"end":{"line":13,"column":null}},"7":{"start":{"line":12,"column":6},"end":{"line":12,"column":null}},"8":{"start":{"line":14,"column":4},"end":{"line":14,"column":null}},"9":{"start":{"line":18,"column":2},"end":{"line":23,"column":null}},"10":{"start":{"line":19,"column":4},"end":{"line":21,"column":null}},"11":{"start":{"line":20,"column":6},"end":{"line":20,"column":null}},"12":{"start":{"line":22,"column":4},"end":{"line":22,"column":null}},"13":{"start":{"line":26,"column":2},"end":{"line":31,"column":null}},"14":{"start":{"line":27,"column":4},"end":{"line":29,"column":null}},"15":{"start":{"line":28,"column":6},"end":{"line":28,"column":null}},"16":{"start":{"line":30,"column":4},"end":{"line":30,"column":null}},"17":{"start":{"line":33,"column":15},"end":{"line":33,"column":28}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":6,"column":2},"end":{"line":6,"column":3}},"loc":{"start":{"line":7,"column":4},"end":{"line":7,"column":null}}},"1":{"name":"(anonymous_5)","decl":{"start":{"line":10,"column":2},"end":{"line":10,"column":3}},"loc":{"start":{"line":10,"column":3},"end":{"line":15,"column":null}}},"2":{"name":"(anonymous_6)","decl":{"start":{"line":18,"column":2},"end":{"line":18,"column":3}},"loc":{"start":{"line":18,"column":3},"end":{"line":23,"column":null}}},"3":{"name":"(anonymous_7)","decl":{"start":{"line":26,"column":2},"end":{"line":26,"column":3}},"loc":{"start":{"line":26,"column":3},"end":{"line":31,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":7,"column":13},"end":{"line":7,"column":76}},"type":"cond-expr","locations":[{"start":{"line":7,"column":42},"end":{"line":7,"column":72}},{"start":{"line":7,"column":72},"end":{"line":7,"column":76}}]},"1":{"loc":{"start":{"line":11,"column":4},"end":{"line":13,"column":null}},"type":"if","locations":[{"start":{"line":11,"column":4},"end":{"line":13,"column":null}}]},"2":{"loc":{"start":{"line":19,"column":4},"end":{"line":21,"column":null}},"type":"if","locations":[{"start":{"line":19,"column":4},"end":{"line":21,"column":null}}]},"3":{"loc":{"start":{"line":27,"column":4},"end":{"line":29,"column":null}},"type":"if","locations":[{"start":{"line":27,"column":4},"end":{"line":29,"column":null}}]}},"s":{"0":4264,"1":0,"2":22,"3":22,"4":4267,"5":22,"6":4265,"7":4263,"8":2,"9":22,"10":4264,"11":4263,"12":1,"13":22,"14":4264,"15":0,"16":4264,"17":22},"f":{"0":4267,"1":4265,"2":4264,"3":4264},"b":{"0":[0,4267],"1":[4263],"2":[4263],"3":[0]}} +,"/Users/Mirek.Rusin/tsql/src/random-identifier.ts": {"path":"/Users/Mirek.Rusin/tsql/src/random-identifier.ts","statementMap":{"0":{"start":{"line":16,"column":0},"end":{"line":16,"column":15}},"1":{"start":{"line":1,"column":23},"end":{"line":1,"column":null}},"2":{"start":{"line":4,"column":17},"end":{"line":4,"column":null}},"3":{"start":{"line":7,"column":2},"end":{"line":10,"column":null}},"4":{"start":{"line":8,"column":18},"end":{"line":8,"column":null}},"5":{"start":{"line":9,"column":4},"end":{"line":9,"column":null}},"6":{"start":{"line":13,"column":2},"end":{"line":14,"column":null}},"7":{"start":{"line":14,"column":4},"end":{"line":14,"column":null}},"8":{"start":{"line":14,"column":57},"end":{"line":14,"column":73}},"9":{"start":{"line":16,"column":15},"end":{"line":16,"column":null}}},"fnMap":{"0":{"name":"(anonymous_2)","decl":{"start":{"line":7,"column":2},"end":{"line":7,"column":null}},"loc":{"start":{"line":7,"column":2},"end":{"line":10,"column":null}}},"1":{"name":"(anonymous_3)","decl":{"start":{"line":13,"column":2},"end":{"line":13,"column":3}},"loc":{"start":{"line":14,"column":4},"end":{"line":14,"column":null}}},"2":{"name":"(anonymous_4)","decl":{"start":{"line":14,"column":51},"end":{"line":14,"column":57}},"loc":{"start":{"line":14,"column":57},"end":{"line":14,"column":73}}}},"branchMap":{"0":{"loc":{"start":{"line":13,"column":3},"end":{"line":13,"column":14}},"type":"default-arg","locations":[{"start":{"line":13,"column":12},"end":{"line":13,"column":14}}]},"1":{"loc":{"start":{"line":13,"column":16},"end":{"line":13,"column":27}},"type":"default-arg","locations":[{"start":{"line":13,"column":25},"end":{"line":13,"column":27}}]}},"s":{"0":2,"1":22,"2":22,"3":22,"4":32,"5":32,"6":22,"7":2,"8":32,"9":22},"f":{"0":32,"1":2,"2":32},"b":{"0":[0],"1":[0]}} +,"/Users/Mirek.Rusin/tsql/src/raw.ts": {"path":"/Users/Mirek.Rusin/tsql/src/raw.ts","statementMap":{"0":{"start":{"line":8,"column":0},"end":{"line":8,"column":15}},"1":{"start":{"line":4,"column":13},"end":{"line":4,"column":16}},"2":{"start":{"line":1,"column":14},"end":{"line":1,"column":null}},"3":{"start":{"line":5,"column":2},"end":{"line":6,"column":null}},"4":{"start":{"line":6,"column":4},"end":{"line":6,"column":null}},"5":{"start":{"line":8,"column":15},"end":{"line":8,"column":18}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":5,"column":2},"end":{"line":5,"column":3}},"loc":{"start":{"line":6,"column":4},"end":{"line":6,"column":null}}}},"branchMap":{},"s":{"0":9282,"1":0,"2":22,"3":22,"4":9282,"5":22},"f":{"0":9282},"b":{}} +,"/Users/Mirek.Rusin/tsql/src/replace-objects.ts": {"path":"/Users/Mirek.Rusin/tsql/src/replace-objects.ts","statementMap":{"0":{"start":{"line":62,"column":0},"end":{"line":62,"column":15}},"1":{"start":{"line":19,"column":13},"end":{"line":19,"column":27}},"2":{"start":{"line":1,"column":16},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":19},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":15},"end":{"line":3,"column":null}},"5":{"start":{"line":4,"column":15},"end":{"line":4,"column":null}},"6":{"start":{"line":5,"column":33},"end":{"line":5,"column":null}},"7":{"start":{"line":6,"column":26},"end":{"line":6,"column":null}},"8":{"start":{"line":7,"column":35},"end":{"line":7,"column":null}},"9":{"start":{"line":8,"column":17},"end":{"line":8,"column":null}},"10":{"start":{"line":9,"column":16},"end":{"line":9,"column":null}},"11":{"start":{"line":10,"column":17},"end":{"line":10,"column":null}},"12":{"start":{"line":15,"column":23},"end":{"line":15,"column":null}},"13":{"start":{"line":15,"column":43},"end":{"line":15,"column":null}},"14":{"start":{"line":16,"column":23},"end":{"line":16,"column":null}},"15":{"start":{"line":16,"column":43},"end":{"line":16,"column":null}},"16":{"start":{"line":20,"column":2},"end":{"line":60,"column":null}},"17":{"start":{"line":32,"column":4},"end":{"line":34,"column":null}},"18":{"start":{"line":33,"column":6},"end":{"line":33,"column":null}},"19":{"start":{"line":36,"column":19},"end":{"line":36,"column":null}},"20":{"start":{"line":38,"column":4},"end":{"line":40,"column":null}},"21":{"start":{"line":39,"column":6},"end":{"line":39,"column":null}},"22":{"start":{"line":42,"column":23},"end":{"line":42,"column":null}},"23":{"start":{"line":43,"column":23},"end":{"line":43,"column":null}},"24":{"start":{"line":44,"column":23},"end":{"line":44,"column":null}},"25":{"start":{"line":45,"column":20},"end":{"line":45,"column":null}},"26":{"start":{"line":45,"column":45},"end":{"line":45,"column":null}},"27":{"start":{"line":46,"column":16},"end":{"line":46,"column":null}},"28":{"start":{"line":46,"column":39},"end":{"line":46,"column":null}},"29":{"start":{"line":48,"column":4},"end":{"line":59,"column":null}},"30":{"start":{"line":62,"column":15},"end":{"line":62,"column":29}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":15,"column":23},"end":{"line":15,"column":24}},"loc":{"start":{"line":15,"column":43},"end":{"line":15,"column":null}}},"1":{"name":"(anonymous_5)","decl":{"start":{"line":16,"column":23},"end":{"line":16,"column":24}},"loc":{"start":{"line":16,"column":43},"end":{"line":16,"column":null}}},"2":{"name":"(anonymous_6)","decl":{"start":{"line":20,"column":2},"end":{"line":20,"column":null}},"loc":{"start":{"line":29,"column":10},"end":{"line":60,"column":null}}},"3":{"name":"(anonymous_7)","decl":{"start":{"line":45,"column":40},"end":{"line":45,"column":45}},"loc":{"start":{"line":45,"column":45},"end":{"line":45,"column":null}}},"4":{"name":"(anonymous_8)","decl":{"start":{"line":46,"column":34},"end":{"line":46,"column":39}},"loc":{"start":{"line":46,"column":39},"end":{"line":46,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":27,"column":4},"end":{"line":29,"column":10}},"type":"default-arg","locations":[{"start":{"line":29,"column":8},"end":{"line":29,"column":10}}]},"1":{"loc":{"start":{"line":32,"column":4},"end":{"line":34,"column":null}},"type":"if","locations":[{"start":{"line":32,"column":4},"end":{"line":34,"column":null}}]},"2":{"loc":{"start":{"line":38,"column":4},"end":{"line":40,"column":null}},"type":"if","locations":[{"start":{"line":38,"column":4},"end":{"line":40,"column":null}}]},"3":{"loc":{"start":{"line":42,"column":23},"end":{"line":42,"column":null}},"type":"binary-expr","locations":[{"start":{"line":42,"column":23},"end":{"line":42,"column":42}},{"start":{"line":42,"column":42},"end":{"line":42,"column":null}}]},"4":{"loc":{"start":{"line":43,"column":23},"end":{"line":43,"column":null}},"type":"binary-expr","locations":[{"start":{"line":43,"column":23},"end":{"line":43,"column":42}},{"start":{"line":43,"column":42},"end":{"line":43,"column":null}}]},"5":{"loc":{"start":{"line":44,"column":23},"end":{"line":44,"column":null}},"type":"binary-expr","locations":[{"start":{"line":44,"column":23},"end":{"line":44,"column":42}},{"start":{"line":44,"column":42},"end":{"line":44,"column":null}}]}},"s":{"0":0,"1":0,"2":22,"3":22,"4":22,"5":22,"6":22,"7":22,"8":22,"9":22,"10":22,"11":22,"12":22,"13":0,"14":22,"15":0,"16":22,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":22},"f":{"0":0,"1":0,"2":0,"3":0,"4":0},"b":{"0":[0],"1":[0],"2":[0],"3":[0,0],"4":[0,0],"5":[0,0]}} +,"/Users/Mirek.Rusin/tsql/src/row.ts": {"path":"/Users/Mirek.Rusin/tsql/src/row.ts","statementMap":{"0":{"start":{"line":11,"column":0},"end":{"line":11,"column":15}},"1":{"start":{"line":7,"column":13},"end":{"line":7,"column":16}},"2":{"start":{"line":1,"column":17},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":17},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":16},"end":{"line":3,"column":null}},"5":{"start":{"line":8,"column":2},"end":{"line":9,"column":null}},"6":{"start":{"line":9,"column":4},"end":{"line":9,"column":null}},"7":{"start":{"line":11,"column":15},"end":{"line":11,"column":18}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":8,"column":2},"end":{"line":8,"column":6}},"loc":{"start":{"line":9,"column":4},"end":{"line":9,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":8,"column":15},"end":{"line":8,"column":36}},"type":"default-arg","locations":[{"start":{"line":8,"column":32},"end":{"line":8,"column":36}}]}},"s":{"0":4191,"1":0,"2":22,"3":22,"4":22,"5":22,"6":4191,"7":22},"f":{"0":4191},"b":{"0":[4191]}} +,"/Users/Mirek.Rusin/tsql/src/rowset.ts": {"path":"/Users/Mirek.Rusin/tsql/src/rowset.ts","statementMap":{"0":{"start":{"line":12,"column":0},"end":{"line":12,"column":15}},"1":{"start":{"line":4,"column":13},"end":{"line":4,"column":19}},"2":{"start":{"line":1,"column":16},"end":{"line":1,"column":null}},"3":{"start":{"line":5,"column":2},"end":{"line":10,"column":null}},"4":{"start":{"line":6,"column":4},"end":{"line":8,"column":null}},"5":{"start":{"line":7,"column":6},"end":{"line":7,"column":null}},"6":{"start":{"line":9,"column":4},"end":{"line":9,"column":null}},"7":{"start":{"line":12,"column":15},"end":{"line":12,"column":21}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":5,"column":2},"end":{"line":5,"column":6}},"loc":{"start":{"line":5,"column":6},"end":{"line":10,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":6,"column":4},"end":{"line":8,"column":null}},"type":"if","locations":[{"start":{"line":6,"column":4},"end":{"line":8,"column":null}}]}},"s":{"0":0,"1":0,"2":22,"3":22,"4":0,"5":0,"6":0,"7":22},"f":{"0":0},"b":{"0":[0]}} +,"/Users/Mirek.Rusin/tsql/src/sanitised-identifier.ts": {"path":"/Users/Mirek.Rusin/tsql/src/sanitised-identifier.ts","statementMap":{"0":{"start":{"line":5,"column":13},"end":{"line":5,"column":32}},"1":{"start":{"line":10,"column":0},"end":{"line":10,"column":15}},"2":{"start":{"line":1,"column":14},"end":{"line":1,"column":null}},"3":{"start":{"line":3,"column":12},"end":{"line":3,"column":null}},"4":{"start":{"line":10,"column":15},"end":{"line":10,"column":34}}},"fnMap":{},"branchMap":{},"s":{"0":0,"1":970,"2":22,"3":22,"4":22},"f":{},"b":{}} +,"/Users/Mirek.Rusin/tsql/src/sanitised.ts": {"path":"/Users/Mirek.Rusin/tsql/src/sanitised.ts","statementMap":{"0":{"start":{"line":3,"column":13},"end":{"line":3,"column":22}},"1":{"start":{"line":8,"column":0},"end":{"line":8,"column":15}},"2":{"start":{"line":1,"column":12},"end":{"line":1,"column":null}},"3":{"start":{"line":8,"column":15},"end":{"line":8,"column":24}}},"fnMap":{},"branchMap":{},"s":{"0":0,"1":31625,"2":22,"3":22},"f":{},"b":{}} +,"/Users/Mirek.Rusin/tsql/src/select.ts": {"path":"/Users/Mirek.Rusin/tsql/src/select.ts","statementMap":{"0":{"start":{"line":27,"column":0},"end":{"line":27,"column":15}},"1":{"start":{"line":9,"column":13},"end":{"line":9,"column":16}},"2":{"start":{"line":13,"column":13},"end":{"line":13,"column":19}},"3":{"start":{"line":1,"column":21},"end":{"line":1,"column":null}},"4":{"start":{"line":2,"column":15},"end":{"line":2,"column":null}},"5":{"start":{"line":3,"column":17},"end":{"line":3,"column":null}},"6":{"start":{"line":4,"column":17},"end":{"line":4,"column":null}},"7":{"start":{"line":5,"column":14},"end":{"line":5,"column":null}},"8":{"start":{"line":7,"column":17},"end":{"line":7,"column":null}},"9":{"start":{"line":10,"column":2},"end":{"line":11,"column":null}},"10":{"start":{"line":11,"column":4},"end":{"line":11,"column":null}},"11":{"start":{"line":11,"column":16},"end":{"line":11,"column":null}},"12":{"start":{"line":14,"column":2},"end":{"line":25,"column":null}},"13":{"start":{"line":15,"column":18},"end":{"line":15,"column":null}},"14":{"start":{"line":15,"column":38},"end":{"line":15,"column":null}},"15":{"start":{"line":16,"column":4},"end":{"line":18,"column":null}},"16":{"start":{"line":17,"column":6},"end":{"line":17,"column":null}},"17":{"start":{"line":19,"column":18},"end":{"line":19,"column":null}},"18":{"start":{"line":20,"column":4},"end":{"line":23,"column":null}},"19":{"start":{"line":27,"column":15},"end":{"line":27,"column":21}}},"fnMap":{"0":{"name":"(anonymous_5)","decl":{"start":{"line":10,"column":2},"end":{"line":10,"column":3}},"loc":{"start":{"line":11,"column":4},"end":{"line":11,"column":null}}},"1":{"name":"(anonymous_6)","decl":{"start":{"line":11,"column":11},"end":{"line":11,"column":16}},"loc":{"start":{"line":11,"column":16},"end":{"line":11,"column":null}}},"2":{"name":"(anonymous_7)","decl":{"start":{"line":14,"column":2},"end":{"line":14,"column":3}},"loc":{"start":{"line":14,"column":91},"end":{"line":25,"column":null}}},"3":{"name":"(anonymous_8)","decl":{"start":{"line":15,"column":33},"end":{"line":15,"column":38}},"loc":{"start":{"line":15,"column":38},"end":{"line":15,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":11,"column":16},"end":{"line":11,"column":null}},"type":"cond-expr","locations":[{"start":{"line":11,"column":33},"end":{"line":11,"column":37}},{"start":{"line":11,"column":37},"end":{"line":11,"column":null}}]},"1":{"loc":{"start":{"line":14,"column":29},"end":{"line":14,"column":91}},"type":"default-arg","locations":[{"start":{"line":14,"column":89},"end":{"line":14,"column":91}}]},"2":{"loc":{"start":{"line":16,"column":4},"end":{"line":18,"column":null}},"type":"if","locations":[{"start":{"line":16,"column":4},"end":{"line":18,"column":null}}]},"3":{"loc":{"start":{"line":19,"column":18},"end":{"line":19,"column":null}},"type":"cond-expr","locations":[{"start":{"line":19,"column":33},"end":{"line":19,"column":44}},{"start":{"line":19,"column":44},"end":{"line":19,"column":null}}]},"4":{"loc":{"start":{"line":23,"column":6},"end":{"line":23,"column":null}},"type":"cond-expr","locations":[{"start":{"line":23,"column":22},"end":{"line":23,"column":42}},{"start":{"line":23,"column":45},"end":{"line":23,"column":null}}]}},"s":{"0":0,"1":0,"2":0,"3":22,"4":22,"5":22,"6":22,"7":22,"8":22,"9":22,"10":0,"11":0,"12":22,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":22},"f":{"0":0,"1":0,"2":0,"3":0},"b":{"0":[0,0],"1":[0],"2":[0],"3":[0,0],"4":[0,0]}} +,"/Users/Mirek.Rusin/tsql/src/star.ts": {"path":"/Users/Mirek.Rusin/tsql/src/star.ts","statementMap":{"0":{"start":{"line":12,"column":0},"end":{"line":12,"column":15}},"1":{"start":{"line":6,"column":13},"end":{"line":6,"column":17}},"2":{"start":{"line":1,"column":15},"end":{"line":1,"column":null}},"3":{"start":{"line":4,"column":17},"end":{"line":4,"column":null}},"4":{"start":{"line":7,"column":2},"end":{"line":10,"column":13}},"5":{"start":{"line":8,"column":4},"end":{"line":10,"column":13}},"6":{"start":{"line":12,"column":15},"end":{"line":12,"column":19}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":7,"column":2},"end":{"line":7,"column":3}},"loc":{"start":{"line":8,"column":4},"end":{"line":10,"column":13}}}},"branchMap":{"0":{"loc":{"start":{"line":8,"column":4},"end":{"line":10,"column":13}},"type":"cond-expr","locations":[{"start":{"line":9,"column":6},"end":{"line":9,"column":26}},{"start":{"line":10,"column":6},"end":{"line":10,"column":13}}]}},"s":{"0":0,"1":0,"2":22,"3":22,"4":22,"5":0,"6":22},"f":{"0":0},"b":{"0":[0,0]}} +,"/Users/Mirek.Rusin/tsql/src/table-hint-limited.ts": {"path":"/Users/Mirek.Rusin/tsql/src/table-hint-limited.ts","statementMap":{"0":{"start":{"line":49,"column":13},"end":{"line":49,"column":22}},"1":{"start":{"line":27,"column":13},"end":{"line":27,"column":19}},"2":{"start":{"line":1,"column":16},"end":{"line":1,"column":null}},"3":{"start":{"line":27,"column":22},"end":{"line":47,"column":null}},"4":{"start":{"line":50,"column":2},"end":{"line":55,"column":null}},"5":{"start":{"line":51,"column":4},"end":{"line":53,"column":null}},"6":{"start":{"line":52,"column":6},"end":{"line":52,"column":null}},"7":{"start":{"line":54,"column":4},"end":{"line":54,"column":null}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":50,"column":2},"end":{"line":50,"column":3}},"loc":{"start":{"line":50,"column":3},"end":{"line":55,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":51,"column":4},"end":{"line":53,"column":null}},"type":"if","locations":[{"start":{"line":51,"column":4},"end":{"line":53,"column":null}}]}},"s":{"0":18,"1":0,"2":22,"3":22,"4":22,"5":18,"6":0,"7":18},"f":{"0":18},"b":{"0":[0]}} +,"/Users/Mirek.Rusin/tsql/src/template.ts": {"path":"/Users/Mirek.Rusin/tsql/src/template.ts","statementMap":{"0":{"start":{"line":11,"column":0},"end":{"line":11,"column":15}},"1":{"start":{"line":7,"column":13},"end":{"line":7,"column":21}},"2":{"start":{"line":1,"column":17},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":21},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":24},"end":{"line":3,"column":null}},"5":{"start":{"line":4,"column":16},"end":{"line":4,"column":null}},"6":{"start":{"line":8,"column":2},"end":{"line":9,"column":null}},"7":{"start":{"line":9,"column":4},"end":{"line":9,"column":null}},"8":{"start":{"line":11,"column":15},"end":{"line":11,"column":23}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":8,"column":2},"end":{"line":8,"column":3}},"loc":{"start":{"line":9,"column":4},"end":{"line":9,"column":null}}}},"branchMap":{},"s":{"0":406,"1":0,"2":22,"3":22,"4":22,"5":22,"6":22,"7":406,"8":22},"f":{"0":406},"b":{}} +,"/Users/Mirek.Rusin/tsql/src/top.ts": {"path":"/Users/Mirek.Rusin/tsql/src/top.ts","statementMap":{"0":{"start":{"line":30,"column":0},"end":{"line":30,"column":15}},"1":{"start":{"line":14,"column":13},"end":{"line":14,"column":16}},"2":{"start":{"line":1,"column":17},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":17},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":19},"end":{"line":3,"column":null}},"5":{"start":{"line":4,"column":16},"end":{"line":4,"column":null}},"6":{"start":{"line":15,"column":2},"end":{"line":28,"column":null}},"7":{"start":{"line":16,"column":4},"end":{"line":18,"column":null}},"8":{"start":{"line":17,"column":6},"end":{"line":17,"column":null}},"9":{"start":{"line":19,"column":28},"end":{"line":21,"column":null}},"10":{"start":{"line":22,"column":4},"end":{"line":26,"column":null}},"11":{"start":{"line":30,"column":15},"end":{"line":30,"column":18}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":15,"column":2},"end":{"line":15,"column":3}},"loc":{"start":{"line":15,"column":13},"end":{"line":28,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":15,"column":3},"end":{"line":15,"column":8}},"type":"default-arg","locations":[{"start":{"line":15,"column":7},"end":{"line":15,"column":8}}]},"1":{"loc":{"start":{"line":16,"column":4},"end":{"line":18,"column":null}},"type":"if","locations":[{"start":{"line":16,"column":4},"end":{"line":18,"column":null}}]},"2":{"loc":{"start":{"line":19,"column":28},"end":{"line":21,"column":null}},"type":"cond-expr","locations":[{"start":{"line":20,"column":6},"end":{"line":20,"column":null}},{"start":{"line":21,"column":6},"end":{"line":21,"column":null}}]},"3":{"loc":{"start":{"line":25,"column":6},"end":{"line":25,"column":null}},"type":"cond-expr","locations":[{"start":{"line":25,"column":16},"end":{"line":25,"column":33}},{"start":{"line":25,"column":33},"end":{"line":25,"column":null}}]}},"s":{"0":0,"1":0,"2":22,"3":22,"4":22,"5":22,"6":22,"7":0,"8":0,"9":0,"10":0,"11":22},"f":{"0":0},"b":{"0":[0],"1":[0],"2":[0,0],"3":[0,0]}} +,"/Users/Mirek.Rusin/tsql/src/true-value.ts": {"path":"/Users/Mirek.Rusin/tsql/src/true-value.ts","statementMap":{"0":{"start":{"line":16,"column":0},"end":{"line":16,"column":15}},"1":{"start":{"line":13,"column":13},"end":{"line":13,"column":22}},"2":{"start":{"line":2,"column":16},"end":{"line":2,"column":null}},"3":{"start":{"line":14,"column":2},"end":{"line":14,"column":null}},"4":{"start":{"line":16,"column":15},"end":{"line":16,"column":24}}},"fnMap":{},"branchMap":{},"s":{"0":8,"1":0,"2":22,"3":22,"4":22},"f":{},"b":{}} +,"/Users/Mirek.Rusin/tsql/src/unique.ts": {"path":"/Users/Mirek.Rusin/tsql/src/unique.ts","statementMap":{"0":{"start":{"line":17,"column":0},"end":{"line":17,"column":15}},"1":{"start":{"line":4,"column":16},"end":{"line":4,"column":22}},"2":{"start":{"line":5,"column":14},"end":{"line":5,"column":null}},"3":{"start":{"line":6,"column":22},"end":{"line":6,"column":24}},"4":{"start":{"line":7,"column":2},"end":{"line":13,"column":null}},"5":{"start":{"line":8,"column":24},"end":{"line":8,"column":null}},"6":{"start":{"line":9,"column":4},"end":{"line":12,"column":null}},"7":{"start":{"line":10,"column":6},"end":{"line":10,"column":null}},"8":{"start":{"line":11,"column":6},"end":{"line":11,"column":null}},"9":{"start":{"line":14,"column":2},"end":{"line":14,"column":null}},"10":{"start":{"line":17,"column":15},"end":{"line":17,"column":21}}},"fnMap":{"0":{"name":"unique","decl":{"start":{"line":4,"column":16},"end":{"line":4,"column":22}},"loc":{"start":{"line":4,"column":34},"end":{"line":15,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":9,"column":4},"end":{"line":12,"column":null}},"type":"if","locations":[{"start":{"line":9,"column":4},"end":{"line":12,"column":null}}]}},"s":{"0":78,"1":0,"2":78,"3":78,"4":78,"5":108,"6":108,"7":105,"8":105,"9":78,"10":22},"f":{"0":78},"b":{"0":[105]}} +,"/Users/Mirek.Rusin/tsql/src/unix.ts": {"path":"/Users/Mirek.Rusin/tsql/src/unix.ts","statementMap":{"0":{"start":{"line":6,"column":0},"end":{"line":6,"column":15}},"1":{"start":{"line":1,"column":17},"end":{"line":1,"column":null}},"2":{"start":{"line":4,"column":2},"end":{"line":4,"column":56}},"3":{"start":{"line":6,"column":15},"end":{"line":6,"column":null}}},"fnMap":{},"branchMap":{},"s":{"0":0,"1":22,"2":22,"3":22},"f":{},"b":{}} +,"/Users/Mirek.Rusin/tsql/src/update-objects.ts": {"path":"/Users/Mirek.Rusin/tsql/src/update-objects.ts","statementMap":{"0":{"start":{"line":58,"column":0},"end":{"line":58,"column":15}},"1":{"start":{"line":14,"column":13},"end":{"line":14,"column":27}},"2":{"start":{"line":18,"column":13},"end":{"line":18,"column":27}},"3":{"start":{"line":23,"column":13},"end":{"line":23,"column":26}},"4":{"start":{"line":1,"column":16},"end":{"line":1,"column":null}},"5":{"start":{"line":2,"column":19},"end":{"line":2,"column":null}},"6":{"start":{"line":3,"column":15},"end":{"line":3,"column":null}},"7":{"start":{"line":4,"column":15},"end":{"line":4,"column":null}},"8":{"start":{"line":5,"column":33},"end":{"line":5,"column":null}},"9":{"start":{"line":6,"column":26},"end":{"line":6,"column":null}},"10":{"start":{"line":7,"column":35},"end":{"line":7,"column":null}},"11":{"start":{"line":8,"column":17},"end":{"line":8,"column":null}},"12":{"start":{"line":9,"column":17},"end":{"line":9,"column":null}},"13":{"start":{"line":15,"column":2},"end":{"line":16,"column":null}},"14":{"start":{"line":16,"column":4},"end":{"line":16,"column":null}},"15":{"start":{"line":19,"column":2},"end":{"line":20,"column":null}},"16":{"start":{"line":20,"column":4},"end":{"line":20,"column":null}},"17":{"start":{"line":24,"column":2},"end":{"line":56,"column":null}},"18":{"start":{"line":35,"column":4},"end":{"line":37,"column":null}},"19":{"start":{"line":36,"column":6},"end":{"line":36,"column":null}},"20":{"start":{"line":39,"column":4},"end":{"line":41,"column":null}},"21":{"start":{"line":40,"column":6},"end":{"line":40,"column":null}},"22":{"start":{"line":43,"column":19},"end":{"line":43,"column":null}},"23":{"start":{"line":44,"column":23},"end":{"line":44,"column":null}},"24":{"start":{"line":45,"column":23},"end":{"line":45,"column":null}},"25":{"start":{"line":46,"column":20},"end":{"line":46,"column":null}},"26":{"start":{"line":46,"column":45},"end":{"line":46,"column":null}},"27":{"start":{"line":47,"column":16},"end":{"line":47,"column":null}},"28":{"start":{"line":47,"column":39},"end":{"line":47,"column":null}},"29":{"start":{"line":49,"column":4},"end":{"line":55,"column":null}},"30":{"start":{"line":58,"column":15},"end":{"line":58,"column":28}}},"fnMap":{"0":{"name":"(anonymous_6)","decl":{"start":{"line":15,"column":2},"end":{"line":15,"column":3}},"loc":{"start":{"line":16,"column":4},"end":{"line":16,"column":null}}},"1":{"name":"(anonymous_7)","decl":{"start":{"line":19,"column":2},"end":{"line":19,"column":3}},"loc":{"start":{"line":20,"column":4},"end":{"line":20,"column":null}}},"2":{"name":"(anonymous_8)","decl":{"start":{"line":24,"column":2},"end":{"line":24,"column":null}},"loc":{"start":{"line":32,"column":10},"end":{"line":56,"column":null}}},"3":{"name":"(anonymous_9)","decl":{"start":{"line":46,"column":40},"end":{"line":46,"column":45}},"loc":{"start":{"line":46,"column":45},"end":{"line":46,"column":null}}},"4":{"name":"(anonymous_10)","decl":{"start":{"line":47,"column":34},"end":{"line":47,"column":39}},"loc":{"start":{"line":47,"column":39},"end":{"line":47,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":30,"column":4},"end":{"line":32,"column":10}},"type":"default-arg","locations":[{"start":{"line":32,"column":8},"end":{"line":32,"column":10}}]},"1":{"loc":{"start":{"line":30,"column":6},"end":{"line":30,"column":null}},"type":"default-arg","locations":[{"start":{"line":30,"column":14},"end":{"line":30,"column":null}}]},"2":{"loc":{"start":{"line":35,"column":4},"end":{"line":37,"column":null}},"type":"if","locations":[{"start":{"line":35,"column":4},"end":{"line":37,"column":null}}]},"3":{"loc":{"start":{"line":39,"column":4},"end":{"line":41,"column":null}},"type":"if","locations":[{"start":{"line":39,"column":4},"end":{"line":41,"column":null}}]},"4":{"loc":{"start":{"line":44,"column":23},"end":{"line":44,"column":null}},"type":"binary-expr","locations":[{"start":{"line":44,"column":23},"end":{"line":44,"column":42}},{"start":{"line":44,"column":42},"end":{"line":44,"column":null}}]},"5":{"loc":{"start":{"line":45,"column":23},"end":{"line":45,"column":null}},"type":"binary-expr","locations":[{"start":{"line":45,"column":23},"end":{"line":45,"column":42}},{"start":{"line":45,"column":42},"end":{"line":45,"column":null}}]}},"s":{"0":0,"1":0,"2":0,"3":0,"4":22,"5":22,"6":22,"7":22,"8":22,"9":22,"10":22,"11":22,"12":22,"13":22,"14":0,"15":22,"16":0,"17":22,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":22},"f":{"0":0,"1":0,"2":0,"3":0,"4":0},"b":{"0":[0],"1":[0],"2":[0],"3":[0],"4":[0,0],"5":[0,0]}} +,"/Users/Mirek.Rusin/tsql/src/update.ts": {"path":"/Users/Mirek.Rusin/tsql/src/update.ts","statementMap":{"0":{"start":{"line":38,"column":0},"end":{"line":38,"column":15}},"1":{"start":{"line":12,"column":13},"end":{"line":12,"column":19}},"2":{"start":{"line":1,"column":25},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":21},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":35},"end":{"line":3,"column":null}},"5":{"start":{"line":4,"column":24},"end":{"line":4,"column":null}},"6":{"start":{"line":5,"column":17},"end":{"line":5,"column":null}},"7":{"start":{"line":9,"column":20},"end":{"line":9,"column":null}},"8":{"start":{"line":13,"column":2},"end":{"line":36,"column":null}},"9":{"start":{"line":21,"column":4},"end":{"line":23,"column":null}},"10":{"start":{"line":22,"column":6},"end":{"line":22,"column":null}},"11":{"start":{"line":24,"column":19},"end":{"line":24,"column":null}},"12":{"start":{"line":25,"column":19},"end":{"line":25,"column":58}},"13":{"start":{"line":26,"column":20},"end":{"line":26,"column":null}},"14":{"start":{"line":27,"column":4},"end":{"line":29,"column":null}},"15":{"start":{"line":28,"column":6},"end":{"line":28,"column":null}},"16":{"start":{"line":30,"column":4},"end":{"line":35,"column":null}},"17":{"start":{"line":38,"column":15},"end":{"line":38,"column":21}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":13,"column":2},"end":{"line":13,"column":null}},"loc":{"start":{"line":19,"column":10},"end":{"line":36,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":17,"column":4},"end":{"line":19,"column":10}},"type":"default-arg","locations":[{"start":{"line":19,"column":8},"end":{"line":19,"column":10}}]},"1":{"loc":{"start":{"line":17,"column":6},"end":{"line":17,"column":null}},"type":"default-arg","locations":[{"start":{"line":17,"column":14},"end":{"line":17,"column":null}}]},"2":{"loc":{"start":{"line":21,"column":4},"end":{"line":23,"column":null}},"type":"if","locations":[{"start":{"line":21,"column":4},"end":{"line":23,"column":null}}]},"3":{"loc":{"start":{"line":25,"column":19},"end":{"line":25,"column":58}},"type":"binary-expr","locations":[{"start":{"line":25,"column":19},"end":{"line":25,"column":47}},{"start":{"line":25,"column":47},"end":{"line":25,"column":58}}]},"4":{"loc":{"start":{"line":27,"column":4},"end":{"line":29,"column":null}},"type":"if","locations":[{"start":{"line":27,"column":4},"end":{"line":29,"column":null}}]}},"s":{"0":6,"1":0,"2":22,"3":22,"4":22,"5":22,"6":22,"7":22,"8":22,"9":6,"10":1,"11":5,"12":5,"13":5,"14":5,"15":1,"16":4,"17":22},"f":{"0":6},"b":{"0":[5],"1":[5],"2":[1],"3":[5,0],"4":[1]}} +,"/Users/Mirek.Rusin/tsql/src/upsert-objects.ts": {"path":"/Users/Mirek.Rusin/tsql/src/upsert-objects.ts","statementMap":{"0":{"start":{"line":70,"column":0},"end":{"line":70,"column":15}},"1":{"start":{"line":15,"column":13},"end":{"line":15,"column":27}},"2":{"start":{"line":19,"column":13},"end":{"line":19,"column":27}},"3":{"start":{"line":30,"column":13},"end":{"line":30,"column":26}},"4":{"start":{"line":1,"column":16},"end":{"line":1,"column":null}},"5":{"start":{"line":2,"column":19},"end":{"line":2,"column":null}},"6":{"start":{"line":3,"column":15},"end":{"line":3,"column":null}},"7":{"start":{"line":4,"column":15},"end":{"line":4,"column":null}},"8":{"start":{"line":5,"column":33},"end":{"line":5,"column":null}},"9":{"start":{"line":6,"column":26},"end":{"line":6,"column":null}},"10":{"start":{"line":7,"column":35},"end":{"line":7,"column":null}},"11":{"start":{"line":8,"column":17},"end":{"line":8,"column":null}},"12":{"start":{"line":9,"column":16},"end":{"line":9,"column":null}},"13":{"start":{"line":10,"column":17},"end":{"line":10,"column":null}},"14":{"start":{"line":16,"column":2},"end":{"line":17,"column":null}},"15":{"start":{"line":17,"column":4},"end":{"line":17,"column":null}},"16":{"start":{"line":20,"column":2},"end":{"line":21,"column":null}},"17":{"start":{"line":21,"column":4},"end":{"line":21,"column":null}},"18":{"start":{"line":31,"column":2},"end":{"line":68,"column":null}},"19":{"start":{"line":43,"column":4},"end":{"line":45,"column":null}},"20":{"start":{"line":44,"column":6},"end":{"line":44,"column":null}},"21":{"start":{"line":47,"column":4},"end":{"line":49,"column":null}},"22":{"start":{"line":48,"column":6},"end":{"line":48,"column":null}},"23":{"start":{"line":51,"column":19},"end":{"line":51,"column":null}},"24":{"start":{"line":52,"column":23},"end":{"line":52,"column":null}},"25":{"start":{"line":53,"column":23},"end":{"line":53,"column":null}},"26":{"start":{"line":54,"column":23},"end":{"line":54,"column":null}},"27":{"start":{"line":55,"column":20},"end":{"line":55,"column":null}},"28":{"start":{"line":55,"column":45},"end":{"line":55,"column":null}},"29":{"start":{"line":56,"column":16},"end":{"line":56,"column":null}},"30":{"start":{"line":56,"column":39},"end":{"line":56,"column":null}},"31":{"start":{"line":58,"column":4},"end":{"line":67,"column":null}},"32":{"start":{"line":70,"column":15},"end":{"line":70,"column":28}}},"fnMap":{"0":{"name":"(anonymous_6)","decl":{"start":{"line":16,"column":2},"end":{"line":16,"column":3}},"loc":{"start":{"line":17,"column":4},"end":{"line":17,"column":null}}},"1":{"name":"(anonymous_7)","decl":{"start":{"line":20,"column":2},"end":{"line":20,"column":3}},"loc":{"start":{"line":21,"column":4},"end":{"line":21,"column":null}}},"2":{"name":"(anonymous_8)","decl":{"start":{"line":31,"column":2},"end":{"line":31,"column":null}},"loc":{"start":{"line":40,"column":10},"end":{"line":68,"column":null}}},"3":{"name":"(anonymous_9)","decl":{"start":{"line":55,"column":40},"end":{"line":55,"column":45}},"loc":{"start":{"line":55,"column":45},"end":{"line":55,"column":null}}},"4":{"name":"(anonymous_10)","decl":{"start":{"line":56,"column":34},"end":{"line":56,"column":39}},"loc":{"start":{"line":56,"column":39},"end":{"line":56,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":38,"column":4},"end":{"line":40,"column":10}},"type":"default-arg","locations":[{"start":{"line":40,"column":8},"end":{"line":40,"column":10}}]},"1":{"loc":{"start":{"line":38,"column":6},"end":{"line":38,"column":null}},"type":"default-arg","locations":[{"start":{"line":38,"column":14},"end":{"line":38,"column":null}}]},"2":{"loc":{"start":{"line":43,"column":4},"end":{"line":45,"column":null}},"type":"if","locations":[{"start":{"line":43,"column":4},"end":{"line":45,"column":null}}]},"3":{"loc":{"start":{"line":47,"column":4},"end":{"line":49,"column":null}},"type":"if","locations":[{"start":{"line":47,"column":4},"end":{"line":49,"column":null}}]},"4":{"loc":{"start":{"line":52,"column":23},"end":{"line":52,"column":null}},"type":"binary-expr","locations":[{"start":{"line":52,"column":23},"end":{"line":52,"column":42}},{"start":{"line":52,"column":42},"end":{"line":52,"column":null}}]},"5":{"loc":{"start":{"line":53,"column":23},"end":{"line":53,"column":null}},"type":"binary-expr","locations":[{"start":{"line":53,"column":23},"end":{"line":53,"column":42}},{"start":{"line":53,"column":42},"end":{"line":53,"column":null}}]},"6":{"loc":{"start":{"line":54,"column":23},"end":{"line":54,"column":null}},"type":"binary-expr","locations":[{"start":{"line":54,"column":23},"end":{"line":54,"column":42}},{"start":{"line":54,"column":42},"end":{"line":54,"column":null}}]}},"s":{"0":0,"1":0,"2":0,"3":0,"4":22,"5":22,"6":22,"7":22,"8":22,"9":22,"10":22,"11":22,"12":22,"13":22,"14":22,"15":0,"16":22,"17":0,"18":22,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":22},"f":{"0":0,"1":0,"2":0,"3":0,"4":0},"b":{"0":[0],"1":[0],"2":[0],"3":[0],"4":[0,0],"5":[0,0],"6":[0,0]}} +,"/Users/Mirek.Rusin/tsql/src/where.ts": {"path":"/Users/Mirek.Rusin/tsql/src/where.ts","statementMap":{"0":{"start":{"line":164,"column":16},"end":{"line":164,"column":19}},"1":{"start":{"line":193,"column":0},"end":{"line":193,"column":15}},"2":{"start":{"line":187,"column":16},"end":{"line":187,"column":19}},"3":{"start":{"line":179,"column":16},"end":{"line":179,"column":18}},"4":{"start":{"line":122,"column":16},"end":{"line":122,"column":21}},"5":{"start":{"line":151,"column":16},"end":{"line":151,"column":21}},"6":{"start":{"line":1,"column":26},"end":{"line":1,"column":null}},"7":{"start":{"line":2,"column":25},"end":{"line":2,"column":null}},"8":{"start":{"line":3,"column":17},"end":{"line":3,"column":null}},"9":{"start":{"line":4,"column":20},"end":{"line":4,"column":null}},"10":{"start":{"line":5,"column":21},"end":{"line":5,"column":null}},"11":{"start":{"line":6,"column":15},"end":{"line":6,"column":null}},"12":{"start":{"line":7,"column":15},"end":{"line":7,"column":null}},"13":{"start":{"line":8,"column":16},"end":{"line":8,"column":null}},"14":{"start":{"line":9,"column":16},"end":{"line":9,"column":null}},"15":{"start":{"line":10,"column":25},"end":{"line":10,"column":null}},"16":{"start":{"line":11,"column":17},"end":{"line":11,"column":null}},"17":{"start":{"line":12,"column":25},"end":{"line":12,"column":null}},"18":{"start":{"line":13,"column":24},"end":{"line":13,"column":null}},"19":{"start":{"line":14,"column":15},"end":{"line":14,"column":null}},"20":{"start":{"line":15,"column":16},"end":{"line":15,"column":null}},"21":{"start":{"line":16,"column":15},"end":{"line":16,"column":null}},"22":{"start":{"line":17,"column":15},"end":{"line":17,"column":null}},"23":{"start":{"line":18,"column":15},"end":{"line":18,"column":null}},"24":{"start":{"line":19,"column":23},"end":{"line":19,"column":null}},"25":{"start":{"line":20,"column":24},"end":{"line":20,"column":null}},"26":{"start":{"line":21,"column":18},"end":{"line":21,"column":null}},"27":{"start":{"line":22,"column":16},"end":{"line":22,"column":null}},"28":{"start":{"line":23,"column":14},"end":{"line":23,"column":null}},"29":{"start":{"line":24,"column":21},"end":{"line":24,"column":null}},"30":{"start":{"line":25,"column":19},"end":{"line":25,"column":null}},"31":{"start":{"line":31,"column":14},"end":{"line":33,"column":null}},"32":{"start":{"line":37,"column":15},"end":{"line":55,"column":null}},"33":{"start":{"line":59,"column":16},"end":{"line":62,"column":null}},"34":{"start":{"line":68,"column":2},"end":{"line":70,"column":null}},"35":{"start":{"line":69,"column":4},"end":{"line":69,"column":null}},"36":{"start":{"line":72,"column":2},"end":{"line":78,"column":null}},"37":{"start":{"line":73,"column":4},"end":{"line":76,"column":null}},"38":{"start":{"line":74,"column":6},"end":{"line":74,"column":null}},"39":{"start":{"line":75,"column":6},"end":{"line":75,"column":null}},"40":{"start":{"line":77,"column":4},"end":{"line":77,"column":null}},"41":{"start":{"line":79,"column":2},"end":{"line":79,"column":null}},"42":{"start":{"line":83,"column":2},"end":{"line":85,"column":null}},"43":{"start":{"line":84,"column":4},"end":{"line":84,"column":null}},"44":{"start":{"line":86,"column":15},"end":{"line":86,"column":null}},"45":{"start":{"line":87,"column":2},"end":{"line":118,"column":null}},"46":{"start":{"line":88,"column":19},"end":{"line":88,"column":59}},"47":{"start":{"line":89,"column":4},"end":{"line":117,"column":null}},"48":{"start":{"line":92,"column":8},"end":{"line":94,"column":null}},"49":{"start":{"line":93,"column":10},"end":{"line":93,"column":null}},"50":{"start":{"line":95,"column":8},"end":{"line":97,"column":null}},"51":{"start":{"line":96,"column":10},"end":{"line":96,"column":null}},"52":{"start":{"line":98,"column":8},"end":{"line":98,"column":null}},"53":{"start":{"line":102,"column":8},"end":{"line":104,"column":null}},"54":{"start":{"line":103,"column":10},"end":{"line":103,"column":null}},"55":{"start":{"line":105,"column":8},"end":{"line":107,"column":null}},"56":{"start":{"line":106,"column":10},"end":{"line":106,"column":null}},"57":{"start":{"line":108,"column":8},"end":{"line":108,"column":null}},"58":{"start":{"line":110,"column":8},"end":{"line":116,"column":null}},"59":{"start":{"line":119,"column":2},"end":{"line":119,"column":null}},"60":{"start":{"line":123,"column":2},"end":{"line":125,"column":null}},"61":{"start":{"line":124,"column":4},"end":{"line":124,"column":null}},"62":{"start":{"line":126,"column":14},"end":{"line":126,"column":null}},"63":{"start":{"line":127,"column":2},"end":{"line":138,"column":null}},"64":{"start":{"line":128,"column":19},"end":{"line":128,"column":58}},"65":{"start":{"line":129,"column":4},"end":{"line":134,"column":null}},"66":{"start":{"line":130,"column":6},"end":{"line":132,"column":null}},"67":{"start":{"line":131,"column":8},"end":{"line":131,"column":null}},"68":{"start":{"line":133,"column":6},"end":{"line":133,"column":null}},"69":{"start":{"line":135,"column":4},"end":{"line":137,"column":null}},"70":{"start":{"line":136,"column":6},"end":{"line":136,"column":null}},"71":{"start":{"line":139,"column":2},"end":{"line":142,"column":null}},"72":{"start":{"line":140,"column":20},"end":{"line":140,"column":null}},"73":{"start":{"line":140,"column":51},"end":{"line":140,"column":null}},"74":{"start":{"line":141,"column":4},"end":{"line":141,"column":null}},"75":{"start":{"line":143,"column":2},"end":{"line":143,"column":null}},"76":{"start":{"line":152,"column":2},"end":{"line":152,"column":null}},"77":{"start":{"line":165,"column":14},"end":{"line":165,"column":null}},"78":{"start":{"line":166,"column":2},"end":{"line":168,"column":null}},"79":{"start":{"line":167,"column":4},"end":{"line":167,"column":null}},"80":{"start":{"line":169,"column":2},"end":{"line":169,"column":null}},"81":{"start":{"line":180,"column":14},"end":{"line":180,"column":null}},"82":{"start":{"line":181,"column":2},"end":{"line":183,"column":null}},"83":{"start":{"line":182,"column":4},"end":{"line":182,"column":null}},"84":{"start":{"line":184,"column":2},"end":{"line":184,"column":null}},"85":{"start":{"line":188,"column":2},"end":{"line":190,"column":null}},"86":{"start":{"line":193,"column":15},"end":{"line":193,"column":20}}},"fnMap":{"0":{"name":"single","decl":{"start":{"line":67,"column":9},"end":{"line":67,"column":16}},"loc":{"start":{"line":67,"column":30},"end":{"line":80,"column":null}}},"1":{"name":"visitEntry","decl":{"start":{"line":82,"column":9},"end":{"line":82,"column":20}},"loc":{"start":{"line":82,"column":47},"end":{"line":120,"column":null}}},"2":{"name":"visit","decl":{"start":{"line":122,"column":16},"end":{"line":122,"column":21}},"loc":{"start":{"line":122,"column":36},"end":{"line":144,"column":null}}},"3":{"name":"(anonymous_11)","decl":{"start":{"line":140,"column":46},"end":{"line":140,"column":51}},"loc":{"start":{"line":140,"column":51},"end":{"line":140,"column":null}}},"4":{"name":"where","decl":{"start":{"line":151,"column":16},"end":{"line":151,"column":21}},"loc":{"start":{"line":151,"column":34},"end":{"line":153,"column":null}}},"5":{"name":"and","decl":{"start":{"line":164,"column":16},"end":{"line":164,"column":19}},"loc":{"start":{"line":164,"column":48},"end":{"line":170,"column":null}}},"6":{"name":"or","decl":{"start":{"line":179,"column":16},"end":{"line":179,"column":18}},"loc":{"start":{"line":179,"column":47},"end":{"line":185,"column":null}}},"7":{"name":"not","decl":{"start":{"line":187,"column":16},"end":{"line":187,"column":19}},"loc":{"start":{"line":187,"column":42},"end":{"line":191,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":68,"column":2},"end":{"line":70,"column":null}},"type":"if","locations":[{"start":{"line":68,"column":2},"end":{"line":70,"column":null}}]},"1":{"loc":{"start":{"line":73,"column":4},"end":{"line":76,"column":null}},"type":"if","locations":[{"start":{"line":73,"column":4},"end":{"line":76,"column":null}}]},"2":{"loc":{"start":{"line":83,"column":2},"end":{"line":85,"column":null}},"type":"if","locations":[{"start":{"line":83,"column":2},"end":{"line":85,"column":null}}]},"3":{"loc":{"start":{"line":87,"column":2},"end":{"line":118,"column":null}},"type":"if","locations":[{"start":{"line":87,"column":2},"end":{"line":118,"column":null}}]},"4":{"loc":{"start":{"line":87,"column":6},"end":{"line":87,"column":30}},"type":"binary-expr","locations":[{"start":{"line":87,"column":6},"end":{"line":87,"column":14}},{"start":{"line":87,"column":14},"end":{"line":87,"column":30}}]},"5":{"loc":{"start":{"line":89,"column":4},"end":{"line":117,"column":null}},"type":"switch","locations":[{"start":{"line":90,"column":6},"end":{"line":90,"column":null}},{"start":{"line":91,"column":6},"end":{"line":98,"column":null}},{"start":{"line":99,"column":6},"end":{"line":99,"column":null}},{"start":{"line":100,"column":6},"end":{"line":100,"column":null}},{"start":{"line":101,"column":6},"end":{"line":108,"column":null}},{"start":{"line":109,"column":6},"end":{"line":116,"column":null}}]},"6":{"loc":{"start":{"line":92,"column":8},"end":{"line":94,"column":null}},"type":"if","locations":[{"start":{"line":92,"column":8},"end":{"line":94,"column":null}}]},"7":{"loc":{"start":{"line":95,"column":8},"end":{"line":97,"column":null}},"type":"if","locations":[{"start":{"line":95,"column":8},"end":{"line":97,"column":null}}]},"8":{"loc":{"start":{"line":95,"column":12},"end":{"line":95,"column":57}},"type":"binary-expr","locations":[{"start":{"line":95,"column":12},"end":{"line":95,"column":38}},{"start":{"line":95,"column":38},"end":{"line":95,"column":57}}]},"9":{"loc":{"start":{"line":102,"column":8},"end":{"line":104,"column":null}},"type":"if","locations":[{"start":{"line":102,"column":8},"end":{"line":104,"column":null}}]},"10":{"loc":{"start":{"line":105,"column":8},"end":{"line":107,"column":null}},"type":"if","locations":[{"start":{"line":105,"column":8},"end":{"line":107,"column":null}}]},"11":{"loc":{"start":{"line":123,"column":2},"end":{"line":125,"column":null}},"type":"if","locations":[{"start":{"line":123,"column":2},"end":{"line":125,"column":null}}]},"12":{"loc":{"start":{"line":127,"column":2},"end":{"line":138,"column":null}},"type":"if","locations":[{"start":{"line":127,"column":2},"end":{"line":138,"column":null}}]},"13":{"loc":{"start":{"line":129,"column":4},"end":{"line":134,"column":null}},"type":"if","locations":[{"start":{"line":129,"column":4},"end":{"line":134,"column":null}}]},"14":{"loc":{"start":{"line":129,"column":8},"end":{"line":129,"column":51}},"type":"binary-expr","locations":[{"start":{"line":129,"column":8},"end":{"line":129,"column":28}},{"start":{"line":129,"column":28},"end":{"line":129,"column":51}}]},"15":{"loc":{"start":{"line":130,"column":6},"end":{"line":132,"column":null}},"type":"if","locations":[{"start":{"line":130,"column":6},"end":{"line":132,"column":null}}]},"16":{"loc":{"start":{"line":135,"column":4},"end":{"line":137,"column":null}},"type":"if","locations":[{"start":{"line":135,"column":4},"end":{"line":137,"column":null}}]},"17":{"loc":{"start":{"line":139,"column":2},"end":{"line":142,"column":null}},"type":"if","locations":[{"start":{"line":139,"column":2},"end":{"line":142,"column":null}}]},"18":{"loc":{"start":{"line":166,"column":2},"end":{"line":168,"column":null}},"type":"if","locations":[{"start":{"line":166,"column":2},"end":{"line":168,"column":null}}]},"19":{"loc":{"start":{"line":181,"column":2},"end":{"line":183,"column":null}},"type":"if","locations":[{"start":{"line":181,"column":2},"end":{"line":183,"column":null}}]},"20":{"loc":{"start":{"line":188,"column":9},"end":{"line":190,"column":null}},"type":"cond-expr","locations":[{"start":{"line":189,"column":4},"end":{"line":189,"column":33}},{"start":{"line":190,"column":4},"end":{"line":190,"column":null}}]}},"s":{"0":22,"1":42,"2":22,"3":22,"4":0,"5":0,"6":22,"7":22,"8":22,"9":22,"10":22,"11":22,"12":22,"13":22,"14":22,"15":22,"16":22,"17":22,"18":22,"19":22,"20":22,"21":22,"22":22,"23":22,"24":22,"25":22,"26":22,"27":22,"28":22,"29":22,"30":22,"31":22,"32":22,"33":22,"34":103,"35":27,"36":76,"37":80,"38":74,"39":74,"40":6,"41":70,"42":53,"43":6,"44":47,"45":47,"46":17,"47":17,"48":2,"49":0,"50":2,"51":0,"52":2,"53":2,"54":0,"55":2,"56":0,"57":2,"58":13,"59":30,"60":170,"61":114,"62":56,"63":56,"64":49,"65":49,"66":8,"67":0,"68":8,"69":41,"70":2,"71":46,"72":46,"73":53,"74":46,"75":0,"76":139,"77":79,"78":79,"79":6,"80":73,"81":9,"82":9,"83":4,"84":5,"85":2,"86":22},"f":{"0":103,"1":53,"2":170,"3":53,"4":139,"5":79,"6":9,"7":2},"b":{"0":[27],"1":[74],"2":[6],"3":[17],"4":[47,19],"5":[1,2,1,1,2,13],"6":[0],"7":[0],"8":[2,2],"9":[0],"10":[0],"11":[114],"12":[49],"13":[8],"14":[49,8],"15":[0],"16":[2],"17":[46],"18":[6],"19":[4],"20":[2,0]}} +,"/Users/Mirek.Rusin/tsql/src/test/client.ts": {"path":"/Users/Mirek.Rusin/tsql/src/test/client.ts","statementMap":{"0":{"start":{"line":5,"column":21},"end":{"line":5,"column":null}},"1":{"start":{"line":1,"column":36},"end":{"line":1,"column":null}},"2":{"start":{"line":2,"column":22},"end":{"line":2,"column":null}},"3":{"start":{"line":3,"column":29},"end":{"line":3,"column":null}},"4":{"start":{"line":18,"column":4},"end":{"line":28,"column":null}},"5":{"start":{"line":32,"column":16},"end":{"line":32,"column":null}},"6":{"start":{"line":33,"column":4},"end":{"line":33,"column":null}},"7":{"start":{"line":34,"column":4},"end":{"line":34,"column":null}},"8":{"start":{"line":38,"column":16},"end":{"line":38,"column":null}},"9":{"start":{"line":39,"column":4},"end":{"line":39,"column":null}},"10":{"start":{"line":40,"column":4},"end":{"line":40,"column":null}},"11":{"start":{"line":44,"column":21},"end":{"line":44,"column":null}},"12":{"start":{"line":45,"column":4},"end":{"line":45,"column":null}},"13":{"start":{"line":46,"column":4},"end":{"line":46,"column":null}},"14":{"start":{"line":50,"column":4},"end":{"line":54,"column":null}},"15":{"start":{"line":51,"column":6},"end":{"line":53,"column":null}},"16":{"start":{"line":52,"column":8},"end":{"line":52,"column":null}},"17":{"start":{"line":58,"column":4},"end":{"line":58,"column":null}},"18":{"start":{"line":62,"column":4},"end":{"line":80,"column":null}},"19":{"start":{"line":63,"column":6},"end":{"line":66,"column":null}},"20":{"start":{"line":64,"column":8},"end":{"line":64,"column":null}},"21":{"start":{"line":65,"column":8},"end":{"line":65,"column":null}},"22":{"start":{"line":67,"column":24},"end":{"line":67,"column":null}},"23":{"start":{"line":68,"column":22},"end":{"line":78,"column":null}},"24":{"start":{"line":69,"column":8},"end":{"line":71,"column":null}},"25":{"start":{"line":70,"column":10},"end":{"line":70,"column":null}},"26":{"start":{"line":72,"column":8},"end":{"line":76,"column":null}},"27":{"start":{"line":73,"column":10},"end":{"line":75,"column":null}},"28":{"start":{"line":74,"column":12},"end":{"line":74,"column":null}},"29":{"start":{"line":77,"column":8},"end":{"line":77,"column":null}},"30":{"start":{"line":79,"column":6},"end":{"line":79,"column":null}},"31":{"start":{"line":84,"column":4},"end":{"line":84,"column":null}},"32":{"start":{"line":88,"column":4},"end":{"line":88,"column":null}},"33":{"start":{"line":88,"column":48},"end":{"line":88,"column":54}},"34":{"start":{"line":92,"column":16},"end":{"line":92,"column":null}},"35":{"start":{"line":93,"column":4},"end":{"line":93,"column":null}},"36":{"start":{"line":97,"column":4},"end":{"line":97,"column":null}},"37":{"start":{"line":101,"column":4},"end":{"line":101,"column":null}},"38":{"start":{"line":105,"column":4},"end":{"line":105,"column":null}},"39":{"start":{"line":109,"column":4},"end":{"line":109,"column":null}},"40":{"start":{"line":113,"column":4},"end":{"line":113,"column":null}},"41":{"start":{"line":117,"column":4},"end":{"line":117,"column":null}},"42":{"start":{"line":121,"column":4},"end":{"line":121,"column":null}},"43":{"start":{"line":133,"column":4},"end":{"line":133,"column":null}},"44":{"start":{"line":140,"column":4},"end":{"line":140,"column":null}}},"fnMap":{"0":{"name":"(anonymous_5)","decl":{"start":{"line":9,"column":2},"end":{"line":9,"column":14}},"loc":{"start":{"line":17,"column":10},"end":{"line":29,"column":null}}},"1":{"name":"(anonymous_6)","decl":{"start":{"line":31,"column":2},"end":{"line":31,"column":15}},"loc":{"start":{"line":31,"column":48},"end":{"line":35,"column":null}}},"2":{"name":"(anonymous_7)","decl":{"start":{"line":37,"column":2},"end":{"line":37,"column":15}},"loc":{"start":{"line":37,"column":46},"end":{"line":41,"column":null}}},"3":{"name":"(anonymous_8)","decl":{"start":{"line":43,"column":2},"end":{"line":43,"column":15}},"loc":{"start":{"line":43,"column":24},"end":{"line":47,"column":null}}},"4":{"name":"(anonymous_9)","decl":{"start":{"line":49,"column":2},"end":{"line":49,"column":8}},"loc":{"start":{"line":49,"column":33},"end":{"line":55,"column":null}}},"5":{"name":"(anonymous_10)","decl":{"start":{"line":50,"column":23},"end":{"line":50,"column":24}},"loc":{"start":{"line":50,"column":33},"end":{"line":54,"column":null}}},"6":{"name":"(anonymous_11)","decl":{"start":{"line":51,"column":30},"end":{"line":51,"column":31}},"loc":{"start":{"line":51,"column":31},"end":{"line":53,"column":null}}},"7":{"name":"(anonymous_12)","decl":{"start":{"line":57,"column":2},"end":{"line":57,"column":10}},"loc":{"start":{"line":57,"column":10},"end":{"line":59,"column":null}}},"8":{"name":"(anonymous_13)","decl":{"start":{"line":61,"column":2},"end":{"line":61,"column":8}},"loc":{"start":{"line":61,"column":70},"end":{"line":81,"column":null}}},"9":{"name":"(anonymous_14)","decl":{"start":{"line":62,"column":23},"end":{"line":62,"column":24}},"loc":{"start":{"line":62,"column":33},"end":{"line":80,"column":null}}},"10":{"name":"(anonymous_15)","decl":{"start":{"line":68,"column":45},"end":{"line":68,"column":46}},"loc":{"start":{"line":68,"column":62},"end":{"line":78,"column":null}}},"11":{"name":"(anonymous_16)","decl":{"start":{"line":83,"column":2},"end":{"line":83,"column":8}},"loc":{"start":{"line":83,"column":63},"end":{"line":85,"column":null}}},"12":{"name":"(anonymous_17)","decl":{"start":{"line":87,"column":2},"end":{"line":87,"column":8}},"loc":{"start":{"line":87,"column":62},"end":{"line":89,"column":null}}},"13":{"name":"(anonymous_18)","decl":{"start":{"line":88,"column":43},"end":{"line":88,"column":48}},"loc":{"start":{"line":88,"column":48},"end":{"line":88,"column":54}}},"14":{"name":"(anonymous_19)","decl":{"start":{"line":91,"column":2},"end":{"line":91,"column":8}},"loc":{"start":{"line":91,"column":64},"end":{"line":94,"column":null}}},"15":{"name":"(anonymous_20)","decl":{"start":{"line":96,"column":2},"end":{"line":96,"column":8}},"loc":{"start":{"line":96,"column":78},"end":{"line":98,"column":null}}},"16":{"name":"(anonymous_21)","decl":{"start":{"line":100,"column":2},"end":{"line":100,"column":8}},"loc":{"start":{"line":100,"column":79},"end":{"line":102,"column":null}}},"17":{"name":"(anonymous_22)","decl":{"start":{"line":104,"column":2},"end":{"line":104,"column":8}},"loc":{"start":{"line":104,"column":44},"end":{"line":106,"column":null}}},"18":{"name":"(anonymous_23)","decl":{"start":{"line":108,"column":2},"end":{"line":108,"column":8}},"loc":{"start":{"line":108,"column":71},"end":{"line":110,"column":null}}},"19":{"name":"(anonymous_24)","decl":{"start":{"line":112,"column":2},"end":{"line":112,"column":8}},"loc":{"start":{"line":112,"column":97},"end":{"line":114,"column":null}}},"20":{"name":"(anonymous_25)","decl":{"start":{"line":116,"column":2},"end":{"line":116,"column":8}},"loc":{"start":{"line":116,"column":106},"end":{"line":118,"column":null}}},"21":{"name":"(anonymous_26)","decl":{"start":{"line":120,"column":2},"end":{"line":120,"column":8}},"loc":{"start":{"line":120,"column":93},"end":{"line":122,"column":null}}},"22":{"name":"(anonymous_27)","decl":{"start":{"line":124,"column":2},"end":{"line":124,"column":8}},"loc":{"start":{"line":132,"column":4},"end":{"line":134,"column":null}}},"23":{"name":"(anonymous_28)","decl":{"start":{"line":136,"column":2},"end":{"line":136,"column":8}},"loc":{"start":{"line":139,"column":4},"end":{"line":141,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":9,"column":14},"end":{"line":17,"column":8}},"type":"default-arg","locations":[{"start":{"line":17,"column":6},"end":{"line":17,"column":8}}]},"1":{"loc":{"start":{"line":10,"column":4},"end":{"line":10,"column":21}},"type":"default-arg","locations":[{"start":{"line":10,"column":15},"end":{"line":10,"column":21}}]},"2":{"loc":{"start":{"line":11,"column":4},"end":{"line":11,"column":19}},"type":"default-arg","locations":[{"start":{"line":11,"column":15},"end":{"line":11,"column":19}}]},"3":{"loc":{"start":{"line":12,"column":4},"end":{"line":12,"column":38}},"type":"default-arg","locations":[{"start":{"line":12,"column":15},"end":{"line":12,"column":38}}]},"4":{"loc":{"start":{"line":19,"column":14},"end":{"line":19,"column":null}},"type":"binary-expr","locations":[{"start":{"line":19,"column":14},"end":{"line":19,"column":36}},{"start":{"line":19,"column":40},"end":{"line":19,"column":null}}]},"5":{"loc":{"start":{"line":52,"column":8},"end":{"line":52,"column":null}},"type":"cond-expr","locations":[{"start":{"line":52,"column":22},"end":{"line":52,"column":36}},{"start":{"line":52,"column":36},"end":{"line":52,"column":null}}]},"6":{"loc":{"start":{"line":63,"column":6},"end":{"line":66,"column":null}},"type":"if","locations":[{"start":{"line":63,"column":6},"end":{"line":66,"column":null}}]},"7":{"loc":{"start":{"line":69,"column":8},"end":{"line":71,"column":null}},"type":"if","locations":[{"start":{"line":69,"column":8},"end":{"line":71,"column":null}}]},"8":{"loc":{"start":{"line":96,"column":40},"end":{"line":96,"column":76}},"type":"default-arg","locations":[{"start":{"line":96,"column":60},"end":{"line":96,"column":76}}]},"9":{"loc":{"start":{"line":100,"column":41},"end":{"line":100,"column":77}},"type":"default-arg","locations":[{"start":{"line":100,"column":61},"end":{"line":100,"column":77}}]},"10":{"loc":{"start":{"line":129,"column":4},"end":{"line":131,"column":10}},"type":"default-arg","locations":[{"start":{"line":131,"column":8},"end":{"line":131,"column":10}}]},"11":{"loc":{"start":{"line":129,"column":6},"end":{"line":129,"column":null}},"type":"default-arg","locations":[{"start":{"line":129,"column":14},"end":{"line":129,"column":null}}]}},"s":{"0":2,"1":2,"2":2,"3":2,"4":4,"5":2,"6":2,"7":2,"8":0,"9":0,"10":0,"11":2,"12":2,"13":2,"14":4,"15":4,"16":4,"17":4,"18":69,"19":69,"20":0,"21":0,"22":69,"23":69,"24":69,"25":0,"26":69,"27":50,"28":95,"29":69,"30":69,"31":25,"32":11,"33":11,"34":10,"35":10,"36":9,"37":13,"38":2,"39":10,"40":7,"41":7,"42":0,"43":4,"44":1},"f":{"0":4,"1":2,"2":0,"3":2,"4":4,"5":4,"6":4,"7":4,"8":69,"9":69,"10":69,"11":25,"12":11,"13":11,"14":10,"15":9,"16":13,"17":2,"18":10,"19":7,"20":7,"21":0,"22":4,"23":1},"b":{"0":[0],"1":[0],"2":[4],"3":[4],"4":[4,4],"5":[0,4],"6":[0],"7":[0],"8":[6],"9":[13],"10":[4],"11":[4]}} +} diff --git a/coverage/lcov-report/base.css b/coverage/lcov-report/base.css new file mode 100644 index 0000000..f418035 --- /dev/null +++ b/coverage/lcov-report/base.css @@ -0,0 +1,224 @@ +body, html { + margin:0; padding: 0; + height: 100%; +} +body { + font-family: Helvetica Neue, Helvetica, Arial; + font-size: 14px; + color:#333; +} +.small { font-size: 12px; } +*, *:after, *:before { + -webkit-box-sizing:border-box; + -moz-box-sizing:border-box; + box-sizing:border-box; + } +h1 { font-size: 20px; margin: 0;} +h2 { font-size: 14px; } +pre { + font: 12px/1.4 Consolas, "Liberation Mono", Menlo, Courier, monospace; + margin: 0; + padding: 0; + -moz-tab-size: 2; + -o-tab-size: 2; + tab-size: 2; +} +a { color:#0074D9; text-decoration:none; } +a:hover { text-decoration:underline; } +.strong { font-weight: bold; } +.space-top1 { padding: 10px 0 0 0; } +.pad2y { padding: 20px 0; } +.pad1y { padding: 10px 0; } +.pad2x { padding: 0 20px; } +.pad2 { padding: 20px; } +.pad1 { padding: 10px; } +.space-left2 { padding-left:55px; } +.space-right2 { padding-right:20px; } +.center { text-align:center; } +.clearfix { display:block; } +.clearfix:after { + content:''; + display:block; + height:0; + clear:both; + visibility:hidden; + } +.fl { float: left; } +@media only screen and (max-width:640px) { + .col3 { width:100%; max-width:100%; } + .hide-mobile { display:none!important; } +} + +.quiet { + color: #7f7f7f; + color: rgba(0,0,0,0.5); +} +.quiet a { opacity: 0.7; } + +.fraction { + font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; + font-size: 10px; + color: #555; + background: #E8E8E8; + padding: 4px 5px; + border-radius: 3px; + vertical-align: middle; +} + +div.path a:link, div.path a:visited { color: #333; } +table.coverage { + border-collapse: collapse; + margin: 10px 0 0 0; + padding: 0; +} + +table.coverage td { + margin: 0; + padding: 0; + vertical-align: top; +} +table.coverage td.line-count { + text-align: right; + padding: 0 5px 0 20px; +} +table.coverage td.line-coverage { + text-align: right; + padding-right: 10px; + min-width:20px; +} + +table.coverage td span.cline-any { + display: inline-block; + padding: 0 5px; + width: 100%; +} +.missing-if-branch { + display: inline-block; + margin-right: 5px; + border-radius: 3px; + position: relative; + padding: 0 4px; + background: #333; + color: yellow; +} + +.skip-if-branch { + display: none; + margin-right: 10px; + position: relative; + padding: 0 4px; + background: #ccc; + color: white; +} +.missing-if-branch .typ, .skip-if-branch .typ { + color: inherit !important; +} +.coverage-summary { + border-collapse: collapse; + width: 100%; +} +.coverage-summary tr { border-bottom: 1px solid #bbb; } +.keyline-all { border: 1px solid #ddd; } +.coverage-summary td, .coverage-summary th { padding: 10px; } +.coverage-summary tbody { border: 1px solid #bbb; } +.coverage-summary td { border-right: 1px solid #bbb; } +.coverage-summary td:last-child { border-right: none; } +.coverage-summary th { + text-align: left; + font-weight: normal; + white-space: nowrap; +} +.coverage-summary th.file { border-right: none !important; } +.coverage-summary th.pct { } +.coverage-summary th.pic, +.coverage-summary th.abs, +.coverage-summary td.pct, +.coverage-summary td.abs { text-align: right; } +.coverage-summary td.file { white-space: nowrap; } +.coverage-summary td.pic { min-width: 120px !important; } +.coverage-summary tfoot td { } + +.coverage-summary .sorter { + height: 10px; + width: 7px; + display: inline-block; + margin-left: 0.5em; + background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent; +} +.coverage-summary .sorted .sorter { + background-position: 0 -20px; +} +.coverage-summary .sorted-desc .sorter { + background-position: 0 -10px; +} +.status-line { height: 10px; } +/* yellow */ +.cbranch-no { background: yellow !important; color: #111; } +/* dark red */ +.red.solid, .status-line.low, .low .cover-fill { background:#C21F39 } +.low .chart { border:1px solid #C21F39 } +.highlighted, +.highlighted .cstat-no, .highlighted .fstat-no, .highlighted .cbranch-no{ + background: #C21F39 !important; +} +/* medium red */ +.cstat-no, .fstat-no, .cbranch-no, .cbranch-no { background:#F6C6CE } +/* light red */ +.low, .cline-no { background:#FCE1E5 } +/* light green */ +.high, .cline-yes { background:rgb(230,245,208) } +/* medium green */ +.cstat-yes { background:rgb(161,215,106) } +/* dark green */ +.status-line.high, .high .cover-fill { background:rgb(77,146,33) } +.high .chart { border:1px solid rgb(77,146,33) } +/* dark yellow (gold) */ +.status-line.medium, .medium .cover-fill { background: #f9cd0b; } +.medium .chart { border:1px solid #f9cd0b; } +/* light yellow */ +.medium { background: #fff4c2; } + +.cstat-skip { background: #ddd; color: #111; } +.fstat-skip { background: #ddd; color: #111 !important; } +.cbranch-skip { background: #ddd !important; color: #111; } + +span.cline-neutral { background: #eaeaea; } + +.coverage-summary td.empty { + opacity: .5; + padding-top: 4px; + padding-bottom: 4px; + line-height: 1; + color: #888; +} + +.cover-fill, .cover-empty { + display:inline-block; + height: 12px; +} +.chart { + line-height: 0; +} +.cover-empty { + background: white; +} +.cover-full { + border-right: none !important; +} +pre.prettyprint { + border: none !important; + padding: 0 !important; + margin: 0 !important; +} +.com { color: #999 !important; } +.ignore-none { color: #999; font-weight: normal; } + +.wrapper { + min-height: 100%; + height: auto !important; + height: 100%; + margin: 0 auto -48px; +} +.footer, .push { + height: 48px; +} diff --git a/coverage/lcov-report/block-navigation.js b/coverage/lcov-report/block-navigation.js new file mode 100644 index 0000000..cc12130 --- /dev/null +++ b/coverage/lcov-report/block-navigation.js @@ -0,0 +1,87 @@ +/* eslint-disable */ +var jumpToCode = (function init() { + // Classes of code we would like to highlight in the file view + var missingCoverageClasses = ['.cbranch-no', '.cstat-no', '.fstat-no']; + + // Elements to highlight in the file listing view + var fileListingElements = ['td.pct.low']; + + // We don't want to select elements that are direct descendants of another match + var notSelector = ':not(' + missingCoverageClasses.join('):not(') + ') > '; // becomes `:not(a):not(b) > ` + + // Selecter that finds elements on the page to which we can jump + var selector = + fileListingElements.join(', ') + + ', ' + + notSelector + + missingCoverageClasses.join(', ' + notSelector); // becomes `:not(a):not(b) > a, :not(a):not(b) > b` + + // The NodeList of matching elements + var missingCoverageElements = document.querySelectorAll(selector); + + var currentIndex; + + function toggleClass(index) { + missingCoverageElements + .item(currentIndex) + .classList.remove('highlighted'); + missingCoverageElements.item(index).classList.add('highlighted'); + } + + function makeCurrent(index) { + toggleClass(index); + currentIndex = index; + missingCoverageElements.item(index).scrollIntoView({ + behavior: 'smooth', + block: 'center', + inline: 'center' + }); + } + + function goToPrevious() { + var nextIndex = 0; + if (typeof currentIndex !== 'number' || currentIndex === 0) { + nextIndex = missingCoverageElements.length - 1; + } else if (missingCoverageElements.length > 1) { + nextIndex = currentIndex - 1; + } + + makeCurrent(nextIndex); + } + + function goToNext() { + var nextIndex = 0; + + if ( + typeof currentIndex === 'number' && + currentIndex < missingCoverageElements.length - 1 + ) { + nextIndex = currentIndex + 1; + } + + makeCurrent(nextIndex); + } + + return function jump(event) { + if ( + document.getElementById('fileSearch') === document.activeElement && + document.activeElement != null + ) { + // if we're currently focused on the search input, we don't want to navigate + return; + } + + switch (event.which) { + case 78: // n + case 74: // j + goToNext(); + break; + case 66: // b + case 75: // k + case 80: // p + goToPrevious(); + break; + } + }; +})(); +window.addEventListener('keydown', jumpToCode); diff --git a/coverage/lcov-report/favicon.png b/coverage/lcov-report/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..c1525b811a167671e9de1fa78aab9f5c0b61cef7 GIT binary patch literal 445 zcmV;u0Yd(XP))rP{nL}Ln%S7`m{0DjX9TLF* zFCb$4Oi7vyLOydb!7n&^ItCzb-%BoB`=x@N2jll2Nj`kauio%aw_@fe&*}LqlFT43 z8doAAe))z_%=P%v^@JHp3Hjhj^6*Kr_h|g_Gr?ZAa&y>wxHE99Gk>A)2MplWz2xdG zy8VD2J|Uf#EAw*bo5O*PO_}X2Tob{%bUoO2G~T`@%S6qPyc}VkhV}UifBuRk>%5v( z)x7B{I~z*k<7dv#5tC+m{km(D087J4O%+<<;K|qwefb6@GSX45wCK}Sn*> + + + + Code coverage report for All files + + + + + + + + + +
+
+

All files

+
+ +
+ 77.05% + Statements + 1041/1351 +
+ + +
+ 58.78% + Branches + 174/296 +
+ + +
+ 78.68% + Functions + 144/183 +
+ + +
+ 77.48% + Lines + 943/1217 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
src +
+
76.79%1003/130658.51%165/28276.72%122/15977.23%906/1173
src/test +
+
84.44%38/4564.28%9/1491.66%22/2484.09%37/44
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/prettify.css b/coverage/lcov-report/prettify.css new file mode 100644 index 0000000..b317a7c --- /dev/null +++ b/coverage/lcov-report/prettify.css @@ -0,0 +1 @@ +.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} diff --git a/coverage/lcov-report/prettify.js b/coverage/lcov-report/prettify.js new file mode 100644 index 0000000..b322523 --- /dev/null +++ b/coverage/lcov-report/prettify.js @@ -0,0 +1,2 @@ +/* eslint-disable */ +window.PR_SHOULD_USE_CONTINUATION=true;(function(){var h=["break,continue,do,else,for,if,return,while"];var u=[h,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];var p=[u,"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"];var l=[p,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"];var x=[p,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"];var R=[x,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"];var r="all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes";var w=[p,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"];var s="caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END";var I=[h,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"];var f=[h,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"];var H=[h,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"];var A=[l,R,w,s+I,f,H];var e=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;var C="str";var z="kwd";var j="com";var O="typ";var G="lit";var L="pun";var F="pln";var m="tag";var E="dec";var J="src";var P="atn";var n="atv";var N="nocode";var M="(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*";function k(Z){var ad=0;var S=false;var ac=false;for(var V=0,U=Z.length;V122)){if(!(al<65||ag>90)){af.push([Math.max(65,ag)|32,Math.min(al,90)|32])}if(!(al<97||ag>122)){af.push([Math.max(97,ag)&~32,Math.min(al,122)&~32])}}}}af.sort(function(av,au){return(av[0]-au[0])||(au[1]-av[1])});var ai=[];var ap=[NaN,NaN];for(var ar=0;arat[0]){if(at[1]+1>at[0]){an.push("-")}an.push(T(at[1]))}}an.push("]");return an.join("")}function W(al){var aj=al.source.match(new RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g"));var ah=aj.length;var an=[];for(var ak=0,am=0;ak=2&&ai==="["){aj[ak]=X(ag)}else{if(ai!=="\\"){aj[ak]=ag.replace(/[a-zA-Z]/g,function(ao){var ap=ao.charCodeAt(0);return"["+String.fromCharCode(ap&~32,ap|32)+"]"})}}}}return aj.join("")}var aa=[];for(var V=0,U=Z.length;V=0;){S[ac.charAt(ae)]=Y}}var af=Y[1];var aa=""+af;if(!ag.hasOwnProperty(aa)){ah.push(af);ag[aa]=null}}ah.push(/[\0-\uffff]/);V=k(ah)})();var X=T.length;var W=function(ah){var Z=ah.sourceCode,Y=ah.basePos;var ad=[Y,F];var af=0;var an=Z.match(V)||[];var aj={};for(var ae=0,aq=an.length;ae=5&&"lang-"===ap.substring(0,5);if(am&&!(ai&&typeof ai[1]==="string")){am=false;ap=J}if(!am){aj[ag]=ap}}var ab=af;af+=ag.length;if(!am){ad.push(Y+ab,ap)}else{var al=ai[1];var ak=ag.indexOf(al);var ac=ak+al.length;if(ai[2]){ac=ag.length-ai[2].length;ak=ac-al.length}var ar=ap.substring(5);B(Y+ab,ag.substring(0,ak),W,ad);B(Y+ab+ak,al,q(ar,al),ad);B(Y+ab+ac,ag.substring(ac),W,ad)}}ah.decorations=ad};return W}function i(T){var W=[],S=[];if(T.tripleQuotedStrings){W.push([C,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,null,"'\""])}else{if(T.multiLineStrings){W.push([C,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"])}else{W.push([C,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"])}}if(T.verbatimStrings){S.push([C,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null])}var Y=T.hashComments;if(Y){if(T.cStyleComments){if(Y>1){W.push([j,/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,"#"])}else{W.push([j,/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"])}S.push([C,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,null])}else{W.push([j,/^#[^\r\n]*/,null,"#"])}}if(T.cStyleComments){S.push([j,/^\/\/[^\r\n]*/,null]);S.push([j,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}if(T.regexLiterals){var X=("/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/");S.push(["lang-regex",new RegExp("^"+M+"("+X+")")])}var V=T.types;if(V){S.push([O,V])}var U=(""+T.keywords).replace(/^ | $/g,"");if(U.length){S.push([z,new RegExp("^(?:"+U.replace(/[\s,]+/g,"|")+")\\b"),null])}W.push([F,/^\s+/,null," \r\n\t\xA0"]);S.push([G,/^@[a-z_$][a-z_$@0-9]*/i,null],[O,/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],[F,/^[a-z_$][a-z_$@0-9]*/i,null],[G,new RegExp("^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*","i"),null,"0123456789"],[F,/^\\[\s\S]?/,null],[L,/^.[^\s\w\.$@\'\"\`\/\#\\]*/,null]);return g(W,S)}var K=i({keywords:A,hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true});function Q(V,ag){var U=/(?:^|\s)nocode(?:\s|$)/;var ab=/\r\n?|\n/;var ac=V.ownerDocument;var S;if(V.currentStyle){S=V.currentStyle.whiteSpace}else{if(window.getComputedStyle){S=ac.defaultView.getComputedStyle(V,null).getPropertyValue("white-space")}}var Z=S&&"pre"===S.substring(0,3);var af=ac.createElement("LI");while(V.firstChild){af.appendChild(V.firstChild)}var W=[af];function ae(al){switch(al.nodeType){case 1:if(U.test(al.className)){break}if("BR"===al.nodeName){ad(al);if(al.parentNode){al.parentNode.removeChild(al)}}else{for(var an=al.firstChild;an;an=an.nextSibling){ae(an)}}break;case 3:case 4:if(Z){var am=al.nodeValue;var aj=am.match(ab);if(aj){var ai=am.substring(0,aj.index);al.nodeValue=ai;var ah=am.substring(aj.index+aj[0].length);if(ah){var ak=al.parentNode;ak.insertBefore(ac.createTextNode(ah),al.nextSibling)}ad(al);if(!ai){al.parentNode.removeChild(al)}}}break}}function ad(ak){while(!ak.nextSibling){ak=ak.parentNode;if(!ak){return}}function ai(al,ar){var aq=ar?al.cloneNode(false):al;var ao=al.parentNode;if(ao){var ap=ai(ao,1);var an=al.nextSibling;ap.appendChild(aq);for(var am=an;am;am=an){an=am.nextSibling;ap.appendChild(am)}}return aq}var ah=ai(ak.nextSibling,0);for(var aj;(aj=ah.parentNode)&&aj.nodeType===1;){ah=aj}W.push(ah)}for(var Y=0;Y=S){ah+=2}if(V>=ap){Z+=2}}}var t={};function c(U,V){for(var S=V.length;--S>=0;){var T=V[S];if(!t.hasOwnProperty(T)){t[T]=U}else{if(window.console){console.warn("cannot override language handler %s",T)}}}}function q(T,S){if(!(T&&t.hasOwnProperty(T))){T=/^\s*]*(?:>|$)/],[j,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[L,/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);c(g([[F,/^[\s]+/,null," \t\r\n"],[n,/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[[m,/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],[P,/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[L,/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);c(g([],[[n,/^[\s\S]+/]]),["uq.val"]);c(i({keywords:l,hashComments:true,cStyleComments:true,types:e}),["c","cc","cpp","cxx","cyc","m"]);c(i({keywords:"null,true,false"}),["json"]);c(i({keywords:R,hashComments:true,cStyleComments:true,verbatimStrings:true,types:e}),["cs"]);c(i({keywords:x,cStyleComments:true}),["java"]);c(i({keywords:H,hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);c(i({keywords:I,hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]);c(i({keywords:s,hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);c(i({keywords:f,hashComments:true,multiLineStrings:true,regexLiterals:true}),["rb"]);c(i({keywords:w,cStyleComments:true,regexLiterals:true}),["js"]);c(i({keywords:r,hashComments:3,cStyleComments:true,multilineStrings:true,tripleQuotedStrings:true,regexLiterals:true}),["coffee"]);c(g([],[[C,/^[\s\S]+/]]),["regex"]);function d(V){var U=V.langExtension;try{var S=a(V.sourceNode);var T=S.sourceCode;V.sourceCode=T;V.spans=S.spans;V.basePos=0;q(U,T)(V);D(V)}catch(W){if("console" in window){console.log(W&&W.stack?W.stack:W)}}}function y(W,V,U){var S=document.createElement("PRE");S.innerHTML=W;if(U){Q(S,U)}var T={langExtension:V,numberLines:U,sourceNode:S};d(T);return S.innerHTML}function b(ad){function Y(af){return document.getElementsByTagName(af)}var ac=[Y("pre"),Y("code"),Y("xmp")];var T=[];for(var aa=0;aa=0){var ah=ai.match(ab);var am;if(!ah&&(am=o(aj))&&"CODE"===am.tagName){ah=am.className.match(ab)}if(ah){ah=ah[1]}var al=false;for(var ak=aj.parentNode;ak;ak=ak.parentNode){if((ak.tagName==="pre"||ak.tagName==="code"||ak.tagName==="xmp")&&ak.className&&ak.className.indexOf("prettyprint")>=0){al=true;break}}if(!al){var af=aj.className.match(/\blinenums\b(?::(\d+))?/);af=af?af[1]&&af[1].length?+af[1]:true:false;if(af){Q(aj,af)}S={langExtension:ah,sourceNode:aj,numberLines:af};d(S)}}}if(X]*(?:>|$)/],[PR.PR_COMMENT,/^<\!--[\s\S]*?(?:-\->|$)/],[PR.PR_PUNCTUATION,/^(?:<[%?]|[%?]>)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-handlebars",/^]*type\s*=\s*['"]?text\/x-handlebars-template['"]?\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i],[PR.PR_DECLARATION,/^{{[#^>/]?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{&?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{{>?\s*[\w.][^}]*}}}/],[PR.PR_COMMENT,/^{{![^}]*}}/]]),["handlebars","hbs"]);PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[ \t\r\n\f]+/,null," \t\r\n\f"]],[[PR.PR_STRING,/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],[PR.PR_STRING,/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],["lang-css-str",/^url\(([^\)\"\']*)\)/i],[PR.PR_KEYWORD,/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],[PR.PR_COMMENT,/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],[PR.PR_COMMENT,/^(?:)/],[PR.PR_LITERAL,/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],[PR.PR_LITERAL,/^#(?:[0-9a-f]{3}){1,2}/i],[PR.PR_PLAIN,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],[PR.PR_PUNCTUATION,/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_KEYWORD,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_STRING,/^[^\)\"\']+/]]),["css-str"]); diff --git a/coverage/lcov-report/sort-arrow-sprite.png b/coverage/lcov-report/sort-arrow-sprite.png new file mode 100644 index 0000000000000000000000000000000000000000..6ed68316eb3f65dec9063332d2f69bf3093bbfab GIT binary patch literal 138 zcmeAS@N?(olHy`uVBq!ia0vp^>_9Bd!3HEZxJ@+%Qh}Z>jv*C{$p!i!8j}?a+@3A= zIAGwzjijN=FBi!|L1t?LM;Q;gkwn>2cAy-KV{dn nf0J1DIvEHQu*n~6U}x}qyky7vi4|9XhBJ7&`njxgN@xNA8m%nc literal 0 HcmV?d00001 diff --git a/coverage/lcov-report/sorter.js b/coverage/lcov-report/sorter.js new file mode 100644 index 0000000..2bb296a --- /dev/null +++ b/coverage/lcov-report/sorter.js @@ -0,0 +1,196 @@ +/* eslint-disable */ +var addSorting = (function() { + 'use strict'; + var cols, + currentSort = { + index: 0, + desc: false + }; + + // returns the summary table element + function getTable() { + return document.querySelector('.coverage-summary'); + } + // returns the thead element of the summary table + function getTableHeader() { + return getTable().querySelector('thead tr'); + } + // returns the tbody element of the summary table + function getTableBody() { + return getTable().querySelector('tbody'); + } + // returns the th element for nth column + function getNthColumn(n) { + return getTableHeader().querySelectorAll('th')[n]; + } + + function onFilterInput() { + const searchValue = document.getElementById('fileSearch').value; + const rows = document.getElementsByTagName('tbody')[0].children; + for (let i = 0; i < rows.length; i++) { + const row = rows[i]; + if ( + row.textContent + .toLowerCase() + .includes(searchValue.toLowerCase()) + ) { + row.style.display = ''; + } else { + row.style.display = 'none'; + } + } + } + + // loads the search box + function addSearchBox() { + var template = document.getElementById('filterTemplate'); + var templateClone = template.content.cloneNode(true); + templateClone.getElementById('fileSearch').oninput = onFilterInput; + template.parentElement.appendChild(templateClone); + } + + // loads all columns + function loadColumns() { + var colNodes = getTableHeader().querySelectorAll('th'), + colNode, + cols = [], + col, + i; + + for (i = 0; i < colNodes.length; i += 1) { + colNode = colNodes[i]; + col = { + key: colNode.getAttribute('data-col'), + sortable: !colNode.getAttribute('data-nosort'), + type: colNode.getAttribute('data-type') || 'string' + }; + cols.push(col); + if (col.sortable) { + col.defaultDescSort = col.type === 'number'; + colNode.innerHTML = + colNode.innerHTML + ''; + } + } + return cols; + } + // attaches a data attribute to every tr element with an object + // of data values keyed by column name + function loadRowData(tableRow) { + var tableCols = tableRow.querySelectorAll('td'), + colNode, + col, + data = {}, + i, + val; + for (i = 0; i < tableCols.length; i += 1) { + colNode = tableCols[i]; + col = cols[i]; + val = colNode.getAttribute('data-value'); + if (col.type === 'number') { + val = Number(val); + } + data[col.key] = val; + } + return data; + } + // loads all row data + function loadData() { + var rows = getTableBody().querySelectorAll('tr'), + i; + + for (i = 0; i < rows.length; i += 1) { + rows[i].data = loadRowData(rows[i]); + } + } + // sorts the table using the data for the ith column + function sortByIndex(index, desc) { + var key = cols[index].key, + sorter = function(a, b) { + a = a.data[key]; + b = b.data[key]; + return a < b ? -1 : a > b ? 1 : 0; + }, + finalSorter = sorter, + tableBody = document.querySelector('.coverage-summary tbody'), + rowNodes = tableBody.querySelectorAll('tr'), + rows = [], + i; + + if (desc) { + finalSorter = function(a, b) { + return -1 * sorter(a, b); + }; + } + + for (i = 0; i < rowNodes.length; i += 1) { + rows.push(rowNodes[i]); + tableBody.removeChild(rowNodes[i]); + } + + rows.sort(finalSorter); + + for (i = 0; i < rows.length; i += 1) { + tableBody.appendChild(rows[i]); + } + } + // removes sort indicators for current column being sorted + function removeSortIndicators() { + var col = getNthColumn(currentSort.index), + cls = col.className; + + cls = cls.replace(/ sorted$/, '').replace(/ sorted-desc$/, ''); + col.className = cls; + } + // adds sort indicators for current column being sorted + function addSortIndicators() { + getNthColumn(currentSort.index).className += currentSort.desc + ? ' sorted-desc' + : ' sorted'; + } + // adds event listeners for all sorter widgets + function enableUI() { + var i, + el, + ithSorter = function ithSorter(i) { + var col = cols[i]; + + return function() { + var desc = col.defaultDescSort; + + if (currentSort.index === i) { + desc = !currentSort.desc; + } + sortByIndex(i, desc); + removeSortIndicators(); + currentSort.index = i; + currentSort.desc = desc; + addSortIndicators(); + }; + }; + for (i = 0; i < cols.length; i += 1) { + if (cols[i].sortable) { + // add the click event handler on the th so users + // dont have to click on those tiny arrows + el = getNthColumn(i).querySelector('.sorter').parentElement; + if (el.addEventListener) { + el.addEventListener('click', ithSorter(i)); + } else { + el.attachEvent('onclick', ithSorter(i)); + } + } + } + } + // adds sorting functionality to the UI + return function() { + if (!getTable()) { + return; + } + cols = loadColumns(); + loadData(); + addSearchBox(); + addSortIndicators(); + enableUI(); + }; +})(); + +window.addEventListener('load', addSorting); diff --git a/coverage/lcov-report/src/and.ts.html b/coverage/lcov-report/src/and.ts.html new file mode 100644 index 0000000..8999056 --- /dev/null +++ b/coverage/lcov-report/src/and.ts.html @@ -0,0 +1,100 @@ + + + + + + Code coverage report for src/and.ts + + + + + + + + + +
+
+

All files / src and.ts

+
+ +
+ 75% + Statements + 3/4 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 66.66% + Lines + 2/3 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +622x +  +  +  +28x + 
import { and } from './where.js'
+ 
+export { and }
+ 
+export default and
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/assign-object.ts.html b/coverage/lcov-report/src/assign-object.ts.html new file mode 100644 index 0000000..89162ef --- /dev/null +++ b/coverage/lcov-report/src/assign-object.ts.html @@ -0,0 +1,214 @@ + + + + + + Code coverage report for src/assign-object.ts + + + + + + + + + +
+
+

All files / src assign-object.ts

+
+ +
+ 95% + Statements + 19/20 +
+ + +
+ 100% + Branches + 3/3 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 94.73% + Lines + 18/19 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +4422x +22x +22x +22x +22x +  +  +  +  +  +  +  +  +  +  +10x +10x +10x +22x +3x +3x +  +  +  +  +  +  +3x +  +19x +  +10x +1x +  +  +  +  +1x +  +10x +  +  +22x + 
import assign from './assign.js'
+import id from './identifier.js'
+import jsonPath from './json-path.js'
+import list from './list.js'
+import tsql from './template.js'
+import type S from './sanitised.js'
+ 
+/**
+ * @returns assigment clause based on provided record, ie. for UPDATE SET.
+ *
+ * `undefined` entries are filtered out.
+ *
+ * Propagates undefined if there are no non-undefined entries.
+ */
+export function assignObject(record: Record<string, unknown>): undefined | S {
+  const assignments: (undefined | S)[] = []
+  const jsonAssignments: Record<string, S> = {}
+  for (const [ lvalue, rvalue ] of Object.entries(record)) {
+    if (lvalue.indexOf('->') !== -1) {
+      const [ llvalue, lrvalue ] = lvalue.split('->')
+      jsonAssignments[llvalue] = tsql`
+        json_modify(
+          ${jsonAssignments[llvalue] ?? id(llvalue)},
+          ${jsonPath(lrvalue)},
+          ${rvalue}
+        )
+      `
+      continue
+    }
+    assignments.push(assign(id(lvalue), rvalue))
+  }
+  for (const [ lvalue, rvalue ] of Object.entries(jsonAssignments)) {
+    const a = assign(id(lvalue), tsql`
+      (
+        ${rvalue}
+      )
+    `)
+    assignments.push(a)
+  }
+  return list(assignments, undefined, ',\n')
+}
+ 
+export default assignObject
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/assign.ts.html b/coverage/lcov-report/src/assign.ts.html new file mode 100644 index 0000000..6c64703 --- /dev/null +++ b/coverage/lcov-report/src/assign.ts.html @@ -0,0 +1,169 @@ + + + + + + Code coverage report for src/assign.ts + + + + + + + + + +
+
+

All files / src assign.ts

+
+ +
+ 93.33% + Statements + 14/15 +
+ + +
+ 100% + Branches + 3/3 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 92.85% + Lines + 13/14 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +2922x +22x +22x +22x +  +  +  +  +  +  +  +  +  +  +31x +9x +  +22x +15x +  +7x +6x +  +1x +1x +  +  +31x + 
import id from './identifier.js'
+import jsonPath from './json-path.js'
+import S from './sanitised.js'
+import tsql from './template.js'
+import type Sid from './sanitised-identifier.js'
+ 
+/**
+ * @returns assigment operator LHS = RHS.
+ *
+ * `undefined` RHS is propagated.
+ *
+ * `null` RHS is left as is LHS = null.
+ */
+export function assign(lvalue: Sid | string, rvalue: unknown): undefined | S {
+  if (typeof rvalue === 'undefined') {
+    return undefined
+  }
+  if (lvalue instanceof S) {
+    return tsql`${lvalue} = ${rvalue}`
+  }
+  if (lvalue.indexOf('->') === -1) {
+    return tsql`${id(lvalue)} = ${rvalue}`
+  }
+  const [ llvalue, lrvalue ] = lvalue.split('->')
+  return tsql`${id(llvalue)} = json_modify(${id(llvalue)}, ${jsonPath(lrvalue)}, ${rvalue})`
+}
+ 
+export default assign
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/auto.ts.html b/coverage/lcov-report/src/auto.ts.html new file mode 100644 index 0000000..92adbf3 --- /dev/null +++ b/coverage/lcov-report/src/auto.ts.html @@ -0,0 +1,265 @@ + + + + + + Code coverage report for src/auto.ts + + + + + + + + + +
+
+

All files / src auto.ts

+
+ +
+ 85.18% + Statements + 23/27 +
+ + +
+ 78.57% + Branches + 11/14 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 84.61% + Lines + 22/26 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +6122x +22x +22x +22x +22x +22x +22x +22x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +22x +13442x +9096x +  +4346x +1x +75x +9x +4246x +  +15x +7x +  +8x +  +  +8x +  +  +8x +  +  +  +  +  +  +8879x + 
import falseValue from './false-value.js'
+import json from './json.js'
+import nstring from './nstring.js'
+import null_ from './null.js'
+import number from './number.js'
+import raw from './raw.js'
+import S from './sanitised.js'
+import trueValue from './true-value.js'
+ 
+/**
+ * @returns automatically sanitised value.
+ *
+ * Already sanitised values are returned as is.
+ *
+ * `undefined` and `null` return sanitised `null`.
+ *
+ * Finite numbers return sanitised, decimal numbers.
+ *
+ * Booleans return sanitised `1` (true) or `0` (false).
+ *
+ * Strings return sanitised unicode strings, ie. `N'foo'`.
+ *
+ * Dates return ISO strings.
+ *
+ * Buffers return hex literals.
+ *
+ * Other objects return json-stringified, sanitised unicode strings, ie. `{foo:1}` returns `N'{"foo":1}'`.
+ *
+ * @throws {TypeError} for non-finite numbers (not supported by mssql).
+ *
+ * @throws {TypeError} for all other values.
+ */
+export const auto =
+  (value: unknown): S => {
+    if (value instanceof S) {
+      return value
+    }
+    switch (typeof value) {
+      case 'undefined': return null_
+      case 'number': return number(value)
+      case 'boolean': return value ? trueValue : falseValue
+      case 'string': return nstring(value)
+      case 'object': {
+        if (value === null) {
+          return null_
+        }
+        Iif (value instanceof Date) {
+          return nstring(value.toISOString())
+        }
+        Iif (typeof Buffer !== 'undefined' && value instanceof Buffer) {
+          return raw('0x' + value.toString('hex'))
+        }
+        return json(value)
+      }
+      default:
+        throw new TypeError(`Unable to auto generate sql for ${value}.`)
+    }
+  }
+ 
+export default auto
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/between.ts.html b/coverage/lcov-report/src/between.ts.html new file mode 100644 index 0000000..fe8376a --- /dev/null +++ b/coverage/lcov-report/src/between.ts.html @@ -0,0 +1,121 @@ + + + + + + Code coverage report for src/between.ts + + + + + + + + + +
+
+

All files / src between.ts

+
+ +
+ 87.5% + Statements + 7/8 +
+ + +
+ 75% + Branches + 3/4 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 85.71% + Lines + 6/7 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +1322x +22x +22x +  +  +  +22x +1x +  +  +  +22x + 
import fallback from './fallback.js'
+import id from './identifier.js'
+import tsql from './template.js'
+import type S from './sanitised.js'
+ 
+export const between =
+  <T>(l: string | S, r: undefined | null | [beginExpression: T, endExpression: T]): undefined | S =>
+    typeof l === 'undefined' || r == null ?
+      undefined :
+      tsql`${fallback(l, id)} between ${r[0]} and ${r[1]}`
+ 
+export default between
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/columns.ts.html b/coverage/lcov-report/src/columns.ts.html new file mode 100644 index 0000000..327b7c7 --- /dev/null +++ b/coverage/lcov-report/src/columns.ts.html @@ -0,0 +1,151 @@ + + + + + + Code coverage report for src/columns.ts + + + + + + + + + +
+
+

All files / src columns.ts

+
+ +
+ 38.46% + Statements + 5/13 +
+ + +
+ 0% + Branches + 0/4 +
+ + +
+ 0% + Functions + 0/2 +
+ + +
+ 45.45% + Lines + 5/11 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +2322x +22x +22x +  +  +  +  +  +  +  +  +22x +  +  +  +  +  +  +  +  +  +22x + 
import id from './identifier.js'
+import list from './list.js'
+import fallback from './fallback.js'
+import type S from './sanitised.js'
+ 
+/**
+ * @returns column projection based on provided record and optional filter.
+ *
+ * Propagates `undefined` if there are no non-`undefined` entries.
+ */
+export const columns =
+  (record: Record<string, boolean | string | S>, filter: Record<string, boolean> = {}): undefined | S => {
+    const values: (string | S)[] = []
+    for (const key of Object.keys(record)) {
+      Iif (filter[key] !== false) {
+        values.push(record[key] === true ? key : record[key] as string | S)
+      }
+    }
+    return list(values.map(_ => fallback(_, id)))
+  }
+ 
+export default columns
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/defined.ts.html b/coverage/lcov-report/src/defined.ts.html new file mode 100644 index 0000000..6f5e845 --- /dev/null +++ b/coverage/lcov-report/src/defined.ts.html @@ -0,0 +1,130 @@ + + + + + + Code coverage report for src/defined.ts + + + + + + + + + +
+
+

All files / src defined.ts

+
+ +
+ 100% + Statements + 8/8 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 7/7 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16  +  +22x +10x +10x +24x +  +  +1x +  +  +10x +  +  +22x + 
/** @returns object without undefined values. */
+const defined =
+  (object: Record<string, unknown>): Record<string, unknown> => {
+    const object_ = Object.assign({}, object)
+    for (const key in object) {
+      if (typeof object_[key] === 'undefined') {
+ 
+        // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
+        delete object_[key]
+      }
+    }
+    return object_
+  }
+ 
+export default defined
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/delete.ts.html b/coverage/lcov-report/src/delete.ts.html new file mode 100644 index 0000000..456e608 --- /dev/null +++ b/coverage/lcov-report/src/delete.ts.html @@ -0,0 +1,142 @@ + + + + + + Code coverage report for src/delete.ts + + + + + + + + + +
+
+

All files / src delete.ts

+
+ +
+ 90% + Statements + 9/10 +
+ + +
+ 50% + Branches + 1/2 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 88.88% + Lines + 8/9 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +2022x +22x +22x +  +  +22x +22x +  +  +  +22x +13x +  +  +  +  +  +  +22x + 
import fallback from './fallback.js'
+import id from './identifier.js'
+import line from './line.js'
+import type S from './sanitised.js'
+import type Sid from './sanitised-identifier.js'
+import tsql from './template.js'
+import whereOf from './where.js'
+ 
+/** @returns DELETE DML for table with optional WHERE clause. */
+export const delete_ =
+  (table: Sid | string, where?: S | Record<string, unknown>): S =>
+    line(
+      tsql`delete from ${id(table)}`,
+      where ?
+        tsql`where ${fallback(where, whereOf)}` :
+        undefined
+    )
+ 
+export default delete_
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/demargin.ts.html b/coverage/lcov-report/src/demargin.ts.html new file mode 100644 index 0000000..bd8a944 --- /dev/null +++ b/coverage/lcov-report/src/demargin.ts.html @@ -0,0 +1,184 @@ + + + + + + Code coverage report for src/demargin.ts + + + + + + + + + +
+
+

All files / src demargin.ts

+
+ +
+ 88% + Statements + 22/25 +
+ + +
+ 77.77% + Branches + 7/9 +
+ + +
+ 100% + Functions + 4/4 +
+ + +
+ 85.71% + Lines + 18/21 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +3422x +  +  +  +22x +421x +  +  +421x +421x +81x +  +683x +66x +  +421x +421x +6910x +65027x +6909x +6909x +  +  +  +421x +  +  +421x +6910x +  +  +  +421x + 
import isString from './is-string.js'
+ 
+/** @internal */
+export const demargin =
+  (value: string): string => {
+    Iif (!isString(value)) {
+      throw new TypeError(`Expected value to be string, got ${value}.`)
+    }
+    const lines = value.split('\n')
+    if ((lines.length > 0) && lines[0].split('').every(_ => _ === ' ')) {
+      lines.shift()
+    }
+    if ((lines.length > 0) && lines[lines.length - 1].split('').every(_ => _ === ' ')) {
+      lines.pop()
+    }
+    let margin = Infinity
+    for (const line of lines) {
+      for (let i = 0; i < line.length; i++) {
+        if (line[i] !== ' ') {
+          margin = Math.min(margin, i)
+          break
+        }
+      }
+    }
+    Iif (margin === Infinity) {
+      return lines.join('\n')
+    }
+    return lines
+      .map(_ => _.slice(margin))
+      .join('\n')
+  }
+ 
+export default demargin
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/distinct.ts.html b/coverage/lcov-report/src/distinct.ts.html new file mode 100644 index 0000000..63f07af --- /dev/null +++ b/coverage/lcov-report/src/distinct.ts.html @@ -0,0 +1,151 @@ + + + + + + Code coverage report for src/distinct.ts + + + + + + + + + +
+
+

All files / src distinct.ts

+
+ +
+ 54.54% + Statements + 6/11 +
+ + +
+ 0% + Branches + 0/3 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 50% + Lines + 5/10 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +2322x +22x +22x +  +  +  +  +  +  +  +  +  +  +22x +  +  +  +  +  +  +  +22x + 
import fallback from './fallback.js'
+import id from './identifier.js'
+import template from './template.js'
+import type S from './sanitised.js'
+ 
+/**
+ * @returns emulated NULL aware comparision.
+ *
+ * MSSQL doesn't support IS DISTINCT FROM comparision directly.
+ *
+ * Single invocation of RHS is not guaranteed.
+ */
+export const distinct =
+  (lhs: S | string, rhs: unknown): undefined | S => {
+    Iif (typeof lhs === 'undefined' || typeof rhs === 'undefined') {
+      return undefined
+    }
+    const lhs_ = fallback(lhs, id)
+    return template`((${lhs_} <> ${rhs} or ${lhs_} is null or ${rhs} is null) and not (${lhs_} is null and ${rhs} is null))`
+  }
+ 
+export default distinct
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/eq.ts.html b/coverage/lcov-report/src/eq.ts.html new file mode 100644 index 0000000..19729b4 --- /dev/null +++ b/coverage/lcov-report/src/eq.ts.html @@ -0,0 +1,169 @@ + + + + + + Code coverage report for src/eq.ts + + + + + + + + + +
+
+

All files / src eq.ts

+
+ +
+ 90.9% + Statements + 10/11 +
+ + +
+ 100% + Branches + 4/4 +
+ + +
+ 100% + Functions + 2/2 +
+ + +
+ 90% + Lines + 9/10 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +2922x +22x +22x +22x +  +  +  +22x +53x +  +  +  +  +  +  +  +  +  +  +  +  +  +22x +64x +  +  +  +85x + 
import fallback from './fallback.js'
+import id from './identifier.js'
+import isNull from './is-null.js'
+import tsql from './template.js'
+import type S from './sanitised.js'
+ 
+const rhsEq =
+  (rhs: unknown): S =>
+    isNull(rhs) ?
+      tsql`is null` :
+      tsql`= ${rhs}`
+ 
+/**
+ * @returns comparision expression.
+ *
+ * `null` RHS returns LHS IS NULL.
+ *
+ * `undefined` RHS propagates.
+ *
+ * @see distinct for NULL aware comparision.
+ */
+export const eq =
+  (lhs: S | string, rhs: unknown): undefined | S =>
+    typeof rhs === 'undefined' ?
+      undefined :
+      tsql`${fallback(lhs, id)} ${rhsEq(rhs)}`
+ 
+export default eq
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/exists.ts.html b/coverage/lcov-report/src/exists.ts.html new file mode 100644 index 0000000..e8f22ec --- /dev/null +++ b/coverage/lcov-report/src/exists.ts.html @@ -0,0 +1,133 @@ + + + + + + Code coverage report for src/exists.ts + + + + + + + + + +
+
+

All files / src exists.ts

+
+ +
+ 54.54% + Statements + 6/11 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 60% + Lines + 6/10 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +1722x +22x +  +  +22x +22x +  +  +  +22x +  +  +  +  +  +22x + 
import fallback from './fallback.js'
+import id from './identifier.js'
+import type S from './sanitised.js'
+import type Sid from './sanitised-identifier.js'
+import tsql from './template.js'
+import whereOf from './where.js'
+ 
+/** @returns EXISTS query for table with WHERE clause. */
+export const exists =
+  (table: Sid | string, where: S | Record<string, unknown>): S => {
+    const table_ = id(table)
+    const where_ = fallback(where, whereOf)
+    return tsql`exists (select top 1 1 from ${table_} where ${where_})`
+  }
+ 
+export default exists
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/fallback.ts.html b/coverage/lcov-report/src/fallback.ts.html new file mode 100644 index 0000000..a41fdc9 --- /dev/null +++ b/coverage/lcov-report/src/fallback.ts.html @@ -0,0 +1,118 @@ + + + + + + Code coverage report for src/fallback.ts + + + + + + + + + +
+
+

All files / src fallback.ts

+
+ +
+ 83.33% + Statements + 5/6 +
+ + +
+ 100% + Branches + 2/2 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 80% + Lines + 4/5 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +1222x +  +  +  +  +22x +105x +  +  +  +105x + 
import S from './sanitised.js'
+import type Sid from './sanitised-identifier.js'
+ 
+/** @returns sanitised value as is, otherwise falls back to provided sanitation function. */
+export const fallback =
+  <T>(x: T, f: (_: Exclude<T, S | Sid>) => undefined | S): undefined | S =>
+    x instanceof S ?
+      x :
+      f(x as Exclude<T, S | Sid>)
+ 
+export default fallback
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/false-value.ts.html b/coverage/lcov-report/src/false-value.ts.html new file mode 100644 index 0000000..066488f --- /dev/null +++ b/coverage/lcov-report/src/false-value.ts.html @@ -0,0 +1,133 @@ + + + + + + Code coverage report for src/false-value.ts + + + + + + + + + +
+
+

All files / src false-value.ts

+
+ +
+ 80% + Statements + 4/5 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 75% + Lines + 3/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17  +22x +  +  +  +  +  +  +  +  +  +  +  +22x +  +22x + 
import type S from './sanitised.js'
+import raw from './raw.js'
+ 
+/**
+ * Value boolean false – 0 casted as BIT.
+ *
+ * Logical booleans can be used in condition expressions, ie. WHERE clause.
+ *
+ * Value booleans can be used in assignment statements, ie. UPDATE SET clause.
+ *
+ * @see falseValue for value boolean variant.
+ */
+export const falseValue: S =
+  raw('cast(0 as bit)')
+ 
+export default falseValue
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/gt.ts.html b/coverage/lcov-report/src/gt.ts.html new file mode 100644 index 0000000..9f20729 --- /dev/null +++ b/coverage/lcov-report/src/gt.ts.html @@ -0,0 +1,124 @@ + + + + + + Code coverage report for src/gt.ts + + + + + + + + + +
+
+

All files / src gt.ts

+
+ +
+ 83.33% + Statements + 5/6 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 80% + Lines + 4/5 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +1422x +  +  +  +  +  +  +  +  +22x +5x +  +24x + 
import op from './op.js'
+import type S from './sanitised.js'
+ 
+/**
+ * @returns greater than expression.
+ *
+ * `undefined` RHS is propagated.
+ */
+export const gt =
+  (l: S | string, r: unknown): undefined | S =>
+    op(l, '>', r)
+ 
+export default gt
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/gte.ts.html b/coverage/lcov-report/src/gte.ts.html new file mode 100644 index 0000000..110871a --- /dev/null +++ b/coverage/lcov-report/src/gte.ts.html @@ -0,0 +1,124 @@ + + + + + + Code coverage report for src/gte.ts + + + + + + + + + +
+
+

All files / src gte.ts

+
+ +
+ 83.33% + Statements + 5/6 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 80% + Lines + 4/5 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +1422x +  +  +  +  +  +  +  +  +22x +1x +  +22x + 
import op from './op.js'
+import type S from './sanitised.js'
+ 
+/**
+ * @returns greater than or equal expression.
+ *
+ * `undefined` RHS is propagated.
+ */
+export const gte =
+  (l: S | string, r: unknown): undefined | S =>
+    op(l, '>=', r)
+ 
+export default gte
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/identifier.ts.html b/coverage/lcov-report/src/identifier.ts.html new file mode 100644 index 0000000..04ba58c --- /dev/null +++ b/coverage/lcov-report/src/identifier.ts.html @@ -0,0 +1,331 @@ + + + + + + Code coverage report for src/identifier.ts + + + + + + + + + +
+
+

All files / src identifier.ts

+
+ +
+ 88.57% + Statements + 31/35 +
+ + +
+ 87.5% + Branches + 14/16 +
+ + +
+ 100% + Functions + 9/9 +
+ + +
+ 87.09% + Lines + 27/31 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +8322x +22x +22x +  +  +  +  +  +  +  +  +424x +  +  +  +  +  +  +  +159x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +485x +1x +  +484x +425x +6x +6x +  +419x +1x +1x +  +418x +2x +2x +  +424x +  +118x +118x +  +  +  +  +  +22x +6x +  +  +  +22x +1x +  +  +  +  +  +22x +2x +  +  +343x + 
import nstring from './nstring.js'
+import Sid from './sanitised-identifier.js'
+import keywords from './keywords.js'
+ 
+export type Identifier =
+  | string
+  | Sid
+  | (Sid | string)[]
+ 
+/** @returns `true` if provided string can be used as identifier without quoting, `false` otherwise. */
+export function isPlain(value: string) {
+  return (
+    !keywords[value.toLowerCase()] &&
+    !!String(value).match(/^[a-z_@#]\w*$/i)
+  )
+}
+ 
+/** @returns `[]`-quoted string. */
+export function quote(value: unknown) {
+  return '[' + String(value).replace(/\]/g, ']]') + ']'
+}
+ 
+/**
+ * @returns sanitised identifier.
+ *
+ * Already sanitised identifiers are returned as is.
+ *
+ * String including `->` is returned as JSON_VALUE(LHS, RHS).
+ *
+ * String including `~>` is returned as JSON_QUERY(LHS, RHS?).
+ *
+ * `.`-separated string is split and joined.
+ *
+ * String including `?>` is returned as JSON_PATH_EXISTS(LHS, RHS).
+ *
+ * Strings are quoted if not plain. Non plain string is MSSQL keyword or string containing special characters.
+ *
+ * Above rules are recursive with precedence as listed.
+ */
+export function identifier(value: Identifier): Sid {
+  if (value instanceof Sid) {
+    return value
+  }
+  if (typeof value === 'string') {
+    if (value.includes('->')) {
+      const [ lvalue, jsonPath ] = value.split('->')
+      return jsonValue(lvalue, jsonPath)
+    }
+    if (value.includes('~>')) {
+      const [ lvalue, jsonPath ] = value.split('~>')
+      return jsonQuery(lvalue, jsonPath)
+    }
+    if (value.includes('?>')) {
+      const [ lvalue, jsonPath ] = value.split('?>')
+      return jsonPathExists(lvalue, jsonPath)
+    }
+    return new Sid(value.split('.').map(_ => isPlain(_) ? _ : quote(_)).join('.'))
+  }
+  if (Array.isArray(value) && value.every(_ => typeof _ === 'string' || _ instanceof Sid)) {
+    return new Sid(value.map(identifier).map(_ => _.toString()).join('.'))
+  }
+  throw new TypeError(`Can't sanitise ${value} identifier.`)
+}
+ 
+/** @returns JSON_VALUE(C) built-in function call. */
+export function jsonValue(column: Sid | string, query: string) {
+  return new Sid(`json_value(${identifier(column).toString()}, ${nstring(query).toString()})`)
+}
+ 
+/** @returns JSON_QUERY(C, Q?) built-in function call. */
+export function jsonQuery(column: Sid | string, query?: undefined | null | string) {
+  return query ?
+    new Sid(`json_query(${identifier(column).toString()}, ${nstring(query).toString()})`) :
+    new Sid(`json_query(${identifier(column).toString()})`)
+}
+ 
+/** @returns JSON_PATH_EXISTS(C, Q) built-in function call. */
+export function jsonPathExists(column: Sid | string, query: string) {
+  return new Sid(`json_path_exists(${identifier(column).toString()}, ${nstring(query).toString()})`)
+}
+ 
+export default identifier
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/identifiers.ts.html b/coverage/lcov-report/src/identifiers.ts.html new file mode 100644 index 0000000..138934c --- /dev/null +++ b/coverage/lcov-report/src/identifiers.ts.html @@ -0,0 +1,130 @@ + + + + + + Code coverage report for src/identifiers.ts + + + + + + + + + +
+
+

All files / src identifiers.ts

+
+ +
+ 57.14% + Statements + 4/7 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 66.66% + Lines + 4/6 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +1622x +22x +  +  +  +  +  +  +  +  +  +22x +  +  +22x + 
import id from './identifier.js'
+import list from './list.js'
+import type S from './sanitised.js'
+import type Sid from './sanitised-identifier.js'
+ 
+/**
+ * @returns comma separated list of provided identifiers.
+ *
+ * @see identifier
+ */
+export const identifiers =
+  (...xs: (Sid | string)[]): undefined | S =>
+    list(xs.map(id))
+ 
+export default identifiers
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/in.ts.html b/coverage/lcov-report/src/in.ts.html new file mode 100644 index 0000000..1a3be8e --- /dev/null +++ b/coverage/lcov-report/src/in.ts.html @@ -0,0 +1,157 @@ + + + + + + Code coverage report for src/in.ts + + + + + + + + + +
+
+

All files / src in.ts

+
+ +
+ 90.9% + Statements + 10/11 +
+ + +
+ 100% + Branches + 7/7 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 90% + Lines + 9/10 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +2522x +22x +22x +22x +22x +  +22x +  +  +  +  +  +  +  +  +  +22x +11x +  +  +  +  +  +32x + 
import id from './identifier.js'
+import tsql from './template.js'
+import fallback from './fallback.js'
+import isNull from './is-null.js'
+import row from './row.js'
+import type S from './sanitised.js'
+import logicalFalse from './logical-false.js'
+ 
+/**
+ * @returns LHS in (RHS) expression.
+ *
+ * `undefined` RHS propagates.
+ *
+ * Falsy or empty array RHS returns logical false.
+ */
+export const in_ =
+  (l: S | string, r: undefined | null | unknown[]): undefined | S =>
+    typeof r === 'undefined' ?
+      undefined :
+      r && !isNull(r) && (r.length > 0) ?
+        tsql`${fallback(l, id)} in ${row(r)}` :
+        logicalFalse
+ 
+export default in_
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/indent-tail.ts.html b/coverage/lcov-report/src/indent-tail.ts.html new file mode 100644 index 0000000..1bcfeec --- /dev/null +++ b/coverage/lcov-report/src/indent-tail.ts.html @@ -0,0 +1,115 @@ + + + + + + Code coverage report for src/indent-tail.ts + + + + + + + + + +
+
+

All files / src indent-tail.ts

+
+ +
+ 100% + Statements + 4/4 +
+ + +
+ 100% + Branches + 2/2 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 3/3 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11  +  +22x +705x +  +  +  +  +  +705x + 
/** @returns string with all lines but the first one indented with `margin`. */
+const indentTail =
+  (linesString: string, margin: string): string =>
+    margin ?
+      linesString
+        .split('\n')
+        .join(`\n${margin}`) :
+      linesString
+ 
+export default indentTail
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/index.html b/coverage/lcov-report/src/index.html new file mode 100644 index 0000000..bc691e5 --- /dev/null +++ b/coverage/lcov-report/src/index.html @@ -0,0 +1,1496 @@ + + + + + + Code coverage report for src + + + + + + + + + +
+
+

All files src

+
+ +
+ 76.79% + Statements + 1003/1306 +
+ + +
+ 58.51% + Branches + 165/282 +
+ + +
+ 76.72% + Functions + 122/159 +
+ + +
+ 77.23% + Lines + 906/1173 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
and.ts +
+
75%3/4100%0/0100%0/066.66%2/3
assign-object.ts +
+
95%19/20100%3/3100%1/194.73%18/19
assign.ts +
+
93.33%14/15100%3/3100%1/192.85%13/14
auto.ts +
+
85.18%23/2778.57%11/14100%1/184.61%22/26
between.ts +
+
87.5%7/875%3/4100%1/185.71%6/7
columns.ts +
+
38.46%5/130%0/40%0/245.45%5/11
defined.ts +
+
100%8/8100%1/1100%1/1100%7/7
delete.ts +
+
90%9/1050%1/2100%1/188.88%8/9
demargin.ts +
+
88%22/2577.77%7/9100%4/485.71%18/21
distinct.ts +
+
54.54%6/110%0/30%0/150%5/10
eq.ts +
+
90.9%10/11100%4/4100%2/290%9/10
exists.ts +
+
54.54%6/11100%0/00%0/160%6/10
fallback.ts +
+
83.33%5/6100%2/2100%1/180%4/5
false-value.ts +
+
80%4/5100%0/0100%0/075%3/4
gt.ts +
+
83.33%5/6100%0/0100%1/180%4/5
gte.ts +
+
83.33%5/6100%0/0100%1/180%4/5
identifier.ts +
+
88.57%31/3587.5%14/16100%9/987.09%27/31
identifiers.ts +
+
57.14%4/7100%0/00%0/166.66%4/6
in.ts +
+
90.9%10/11100%7/7100%1/190%9/10
indent-tail.ts +
+
100%4/4100%2/2100%1/1100%3/3
index.ts +
+
66.85%119/178100%0/0100%0/066.85%119/178
inline-table-of-column.ts +
+
86.66%13/150%0/1100%2/284.61%11/13
inline-table-of-objects.ts +
+
94.11%16/17100%2/2100%3/392.85%13/14
insert-ignore.ts +
+
82.14%23/2850%3/6100%5/580%20/25
insert-not-matched.ts +
+
44.44%12/270%0/60%0/448%12/25
insert-object.ts +
+
88.88%16/1833.33%1/3100%2/287.5%14/16
insert-objects.ts +
+
91.66%22/2480%4/5100%3/390.47%19/21
interpolate.ts +
+
87.09%27/3175%12/16100%3/386.2%25/29
interpolate1.ts +
+
78.57%11/140%0/2100%1/175%9/12
is-defined.ts +
+
87.5%7/8100%2/2100%2/287.5%7/8
is-null.ts +
+
83.33%5/6100%3/3100%1/180%4/5
is-object.ts +
+
100%2/2100%3/3100%1/1100%2/2
is-string.ts +
+
80%4/550%1/2100%1/175%3/4
is.ts +
+
100%5/5100%0/0100%2/2100%4/4
json-modify.ts +
+
92.85%13/14100%1/1100%2/292.3%12/13
json-path-exists.ts +
+
66.66%2/3100%0/0100%0/0100%2/2
json-path.ts +
+
87.5%14/16100%5/5100%1/192.85%13/14
json-query.ts +
+
66.66%2/3100%0/0100%0/0100%2/2
json-value.ts +
+
66.66%2/3100%0/0100%0/0100%2/2
json.ts +
+
85.71%6/750%1/2100%1/183.33%5/6
keys-of-objects.ts +
+
73.68%14/1940%2/5100%3/368.75%11/16
keywords.ts +
+
100%5/5100%0/0100%1/1100%3/3
like.ts +
+
91.66%11/1250%2/4100%2/290.9%10/11
limited-hints-identifier.ts +
+
100%8/8100%4/4100%1/1100%7/7
line.ts +
+
90%9/10100%0/0100%3/385.71%6/7
lines.ts +
+
88.88%8/9100%2/2100%1/187.5%7/8
list.ts +
+
90.9%10/11100%4/4100%4/490%9/10
logical-false.ts +
+
80%4/5100%0/0100%0/075%3/4
logical-true.ts +
+
80%4/5100%0/0100%0/075%3/4
lt.ts +
+
83.33%5/6100%0/0100%1/180%4/5
lte.ts +
+
83.33%5/6100%0/0100%1/180%4/5
margin-of-first-line.ts +
+
100%8/8100%3/3100%1/1100%7/7
margin-of-last-line.ts +
+
100%5/5100%0/0100%1/1100%4/4
maybe-line.ts +
+
40%4/100%0/20%0/350%4/8
maybe-lines.ts +
+
92.85%13/1450%1/2100%5/592.3%12/13
merge-1n.ts +
+
88.23%15/1775%3/4100%1/187.5%14/16
modify-jsons.ts +
+
86.48%32/370%0/1100%10/1087.09%27/31
ne.ts +
+
83.33%10/1233.33%1/3100%1/181.81%9/11
ng.ts +
+
83.33%5/6100%0/0100%1/180%4/5
nl.ts +
+
83.33%5/6100%0/0100%1/180%4/5
not-between.ts +
+
87.5%7/875%3/4100%1/185.71%6/7
not-distinct.ts +
+
54.54%6/110%0/30%0/150%5/10
not-in.ts +
+
90%9/1071.42%5/7100%1/188.88%8/9
not.ts +
+
50%2/4100%0/0100%0/066.66%2/3
now.ts +
+
60%3/5100%0/0100%0/075%3/4
nstring.ts +
+
85.71%6/750%2/4100%1/183.33%5/6
null.ts +
+
80%4/5100%0/0100%0/075%3/4
number.ts +
+
75%6/80%0/1100%1/171.42%5/7
object-id.ts +
+
50%3/6100%0/00%0/160%3/5
op.ts +
+
88.88%8/950%1/2100%1/187.5%7/8
or.ts +
+
75%3/4100%0/0100%0/066.66%2/3
order-by.ts +
+
100%8/8100%2/2100%2/2100%6/6
pick.ts +
+
25%2/80%0/20%0/128.57%2/7
quoted-nstring.ts +
+
88.88%16/1860%3/5100%4/488.23%15/17
random-identifier.ts +
+
100%10/100%0/2100%3/3100%8/8
raw.ts +
+
83.33%5/6100%0/0100%1/180%4/5
replace-objects.ts +
+
45.16%14/310%0/90%0/553.84%14/26
row.ts +
+
87.5%7/8100%1/1100%1/185.71%6/7
rowset.ts +
+
37.5%3/80%0/10%0/142.85%3/7
sanitised-identifier.ts +
+
80%4/5100%0/0100%0/075%3/4
sanitised.ts +
+
75%3/4100%0/0100%0/066.66%2/3
select.ts +
+
45%9/200%0/80%0/452.94%9/17
star.ts +
+
57.14%4/70%0/20%0/166.66%4/6
table-hint-limited.ts +
+
75%6/80%0/1100%1/185.71%6/7
template.ts +
+
88.88%8/9100%0/0100%1/187.5%7/8
top.ts +
+
50%6/120%0/60%0/154.54%6/11
true-value.ts +
+
80%4/5100%0/0100%0/075%3/4
unique.ts +
+
90.9%10/11100%1/1100%1/190%9/10
unix.ts +
+
75%3/4100%0/0100%0/0100%3/3
update-objects.ts +
+
41.93%13/310%0/80%0/546.42%13/28
update.ts +
+
94.44%17/1883.33%5/6100%1/194.11%16/17
upsert-objects.ts +
+
42.42%14/330%0/100%0/546.66%14/30
where.ts +
+
90.8%79/8780%24/30100%8/890.58%77/85
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/index.ts.html b/coverage/lcov-report/src/index.ts.html new file mode 100644 index 0000000..ff07a3a --- /dev/null +++ b/coverage/lcov-report/src/index.ts.html @@ -0,0 +1,643 @@ + + + + + + Code coverage report for src/index.ts + + + + + + + + + +
+
+

All files / src index.ts

+
+ +
+ 66.85% + Statements + 119/178 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 66.85% + Lines + 119/178 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +18722x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +  +22x +22x +22x +22x +22x +22x +  +  +6x +9x +5x +1x +  +  +13x +15x +  +11x +  +  +  +2x +  +  +  +10x +  +  +1x +10x +  +10x +7x +  +  +6x +6x +  +  +3x +8x +  +  +  +  +  +  +  +5x +1x +  +19x +  +  +  +  +  +  +5x +2x +  +  +  +  +  +  +  +  +  +1x +  +  +6x +3x +  +  +  +4x +  +  +  +  +  +  +  +  +37x +  +  +  +  +6x +  +  +  +24x +  +  +31x +  +  +1x +1x +  + 
import * as TableHintLimited from './table-hint-limited.js'
+import and from './and.js'
+import assign from './assign.js'
+import assignObject from './assign-object.js'
+import auto from './auto.js'
+import between from './between.js'
+import columns from './columns.js'
+import delete_ from './delete.js'
+import demargin from './demargin.js'
+import distinct from './distinct.js'
+import eq from './eq.js'
+import exists from './exists.js'
+import fallback from './fallback.js'
+import falseValue from './false-value.js'
+import gt from './gt.js'
+import gte from './gte.js'
+import identifier from './identifier.js'
+import identifiers from './identifiers.js'
+import in_ from './in.js'
+import indentTail from './indent-tail.js'
+import inlineTableOfColumn from './inline-table-of-column.js'
+import inlineTableOfObjects from './inline-table-of-objects.js'
+import insertIgnore from './insert-ignore.js'
+import insertNotMatched from './insert-not-matched.js'
+import insertObject from './insert-object.js'
+import insertObjects from './insert-objects.js'
+import interpolate from './interpolate.js'
+import interpolate1 from './interpolate1.js'
+import is from './is.js'
+import isNull from './is-null.js'
+import isString from './is-string.js'
+import json from './json.js'
+import jsonModify from './json-modify.js'
+import jsonPath from './json-path.js'
+import jsonPathExists from './json-path-exists.js'
+import jsonQuery from './json-query.js'
+import jsonValue from './json-value.js'
+import keysOfObjects from './keys-of-objects.js'
+import like from './like.js'
+import limitedHintsIdentifier from './limited-hints-identifier.js'
+import line from './line.js'
+import lines from './lines.js'
+import list from './list.js'
+import logicalFalse from './logical-false.js'
+import logicalTrue from './logical-true.js'
+import lt from './lt.js'
+import lte from './lte.js'
+import marginOfFirstLine from './margin-of-first-line.js'
+import marginOfLastLine from './margin-of-last-line.js'
+import maybeLine from './maybe-line.js'
+import maybeLines from './maybe-lines.js'
+import merge1n from './merge-1n.js'
+import modifyJsons from './modify-jsons.js'
+import ne from './ne.js'
+import ng from './ng.js'
+import nl from './nl.js'
+import not from './not.js'
+import notBetween from './not-between.js'
+import notDistinct from './not-distinct.js'
+import notIn from './not-in.js'
+import now from './now.js'
+import nstring from './nstring.js'
+import null_ from './null.js'
+import number_ from './number.js'
+import objectId from './object-id.js'
+import or from './or.js'
+import orderBy from './order-by.js'
+import pick from './pick.js'
+import quotedNstring from './quoted-nstring.js'
+import randomIdentifier from './random-identifier.js'
+import raw from './raw.js'
+import replaceObjects from './replace-objects.js'
+import row from './row.js'
+import rowset from './rowset.js'
+import Sanitised from './sanitised.js'
+import SanitisedIdentifier from './sanitised-identifier.js'
+import select from './select.js'
+import star from './star.js'
+import template from './template.js'
+import top from './top.js'
+import trueValue from './true-value.js'
+import type { Where } from './where.js'
+import unique from './unique.js'
+import unix from './unix.js'
+import update from './update.js'
+import updateObjects from './update-objects.js'
+import upsertObjects from './upsert-objects.js'
+import where from './where.js'
+ 
+export {
+  and,
+  assign,
+  assignObject,
+  auto,
+  between,
+  columns,
+  delete_ as delete,
+  demargin,
+  distinct,
+  eq,
+  exists,
+  fallback,
+  falseValue,
+  gt,
+  gte,
+  identifier,
+  identifiers,
+  in_ as in,
+  indentTail,
+  inlineTableOfColumn,
+  inlineTableOfObjects,
+  insertIgnore,
+  insertNotMatched,
+  insertObject,
+  insertObjects,
+  interpolate,
+  interpolate1,
+  is,
+  isNull,
+  isString,
+  json,
+  jsonModify,
+  jsonPath,
+  jsonPathExists,
+  jsonQuery,
+  jsonValue,
+  keysOfObjects,
+  like,
+  limitedHintsIdentifier,
+  line,
+  lines,
+  list,
+  logicalFalse,
+  logicalTrue,
+  lt,
+  lte,
+  marginOfFirstLine,
+  marginOfLastLine,
+  maybeLine,
+  maybeLines,
+  merge1n,
+  modifyJsons,
+  ne,
+  ng,
+  nl,
+  not,
+  notBetween,
+  notDistinct,
+  notIn,
+  now,
+  nstring,
+  null_ as null,
+  number_ as number,
+  objectId,
+  or,
+  orderBy,
+  pick,
+  quotedNstring,
+  randomIdentifier,
+  raw,
+  replaceObjects,
+  row,
+  rowset,
+  Sanitised,
+  SanitisedIdentifier,
+  select,
+  star,
+  TableHintLimited,
+  template,
+  top,
+  trueValue,
+  unique,
+  unix,
+  update,
+ 
+  updateObjects,
+  upsertObjects,
+  where,
+  type Where,
+ 
+  // Aliases
+  identifier as id,
+  identifiers as ids,
+  Sanitised as S,
+  SanitisedIdentifier as Sid
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/inline-table-of-column.ts.html b/coverage/lcov-report/src/inline-table-of-column.ts.html new file mode 100644 index 0000000..188237a --- /dev/null +++ b/coverage/lcov-report/src/inline-table-of-column.ts.html @@ -0,0 +1,169 @@ + + + + + + Code coverage report for src/inline-table-of-column.ts + + + + + + + + + +
+
+

All files / src inline-table-of-column.ts

+
+ +
+ 86.66% + Statements + 13/15 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 100% + Functions + 2/2 +
+ + +
+ 84.61% + Lines + 11/13 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +2922x +22x +22x +  +  +22x +  +  +  +  +  +  +  +22x +4x +  +  +4x +4x +11x +4x +  +  +  +  +  +  +22x + 
import id from './identifier.js'
+import list from './list.js'
+import row from './row.js'
+import type S from './sanitised.js'
+import type Sid from './sanitised-identifier.js'
+import tsql from './template.js'
+ 
+/**
+ * @returns single column literal table from provided array of values.
+ *
+ * @throws {Error} if provided values array is empty.
+ */
+export const inlineTableOfColumn =
+  (table: Sid | string, column: Sid | string, values: unknown[]): S => {
+    Iif (values.length === 0) {
+      throw new Error(`Can't generate literal table ${table} using column ${column} with an empty array of values.`)
+    }
+    const table_ = id(table)
+    const column_ = id(column)
+    const values_ = list(values.map(_ => row([ _ ])), undefined, ',\n')
+    return tsql`
+      (values
+        ${values_}
+      ) as ${table_} (${column_})
+    `
+  }
+ 
+export default inlineTableOfColumn
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/inline-table-of-objects.ts.html b/coverage/lcov-report/src/inline-table-of-objects.ts.html new file mode 100644 index 0000000..b0372a7 --- /dev/null +++ b/coverage/lcov-report/src/inline-table-of-objects.ts.html @@ -0,0 +1,166 @@ + + + + + + Code coverage report for src/inline-table-of-objects.ts + + + + + + + + + +
+
+

All files / src inline-table-of-objects.ts

+
+ +
+ 94.11% + Statements + 16/17 +
+ + +
+ 100% + Branches + 2/2 +
+ + +
+ 100% + Functions + 3/3 +
+ + +
+ 92.85% + Lines + 13/14 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +2822x +22x +22x +22x +22x +  +  +22x +  +  +  +  +  +  +  +22x +15x +15x +15x +3073x +15x +  +  +  +  +  +22x + 
import auto from './auto.js'
+import id from './identifier.js'
+import keysOfObjects from './keys-of-objects.js'
+import list from './list.js'
+import row from './row.js'
+import type S from './sanitised.js'
+import type Sid from './sanitised-identifier.js'
+import tsql from './template.js'
+ 
+/**
+ * @returns literal table from provided array of records.
+ *
+ * @throws {Error} if provided values array is empty.
+ */
+export const inlineTableOfObjects =
+  (table: Sid | string, objects: readonly Record<string, unknown>[], maybeKeys?: string[]): S => {
+    const table_ = id(table)
+    const keys = maybeKeys || keysOfObjects(objects)
+    const columns_ = row(keys.map(id))
+    const values_ = list(objects.map(object => row(keys.map(key => auto(object[key])))), undefined, ',\n')
+    return tsql`
+      (values
+        ${values_}
+      ) as ${table_} ${columns_}`
+  }
+ 
+export default inlineTableOfObjects
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/insert-ignore.ts.html b/coverage/lcov-report/src/insert-ignore.ts.html new file mode 100644 index 0000000..d2ce08b --- /dev/null +++ b/coverage/lcov-report/src/insert-ignore.ts.html @@ -0,0 +1,265 @@ + + + + + + Code coverage report for src/insert-ignore.ts + + + + + + + + + +
+
+

All files / src insert-ignore.ts

+
+ +
+ 82.14% + Statements + 23/28 +
+ + +
+ 50% + Branches + 3/6 +
+ + +
+ 100% + Functions + 5/5 +
+ + +
+ 80% + Lines + 20/25 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +6122x +22x +22x +22x +22x +22x +22x +22x +  +  +  +  +  +22x +10x +  +  +22x +20x +  +  +  +  +  +  +  +  +  +22x +  +  +  +  +  +  +  +  +  +10x +  +  +  +10x +  +  +  +10x +10x +10x +  +10x +  +  +  +  +  +  +  +  +22x + 
import and from './and.js'
+import eq from './eq.js'
+import id from './identifier.js'
+import id_ from './limited-hints-identifier.js'
+import inlineTableOfObjects from './inline-table-of-objects.js'
+import keysOfObjects from './keys-of-objects.js'
+import row from './row.js'
+import tsql from './template.js'
+import type { TableHintLimited } from './table-hint-limited.js'
+import type S from './sanitised.js'
+import type Sid from './sanitised-identifier.js'
+ 
+export const sourcePrefixed =
+  (_: Sid | string): Sid =>
+    id([ 'Source', _ ])
+ 
+export const targetPrefixed =
+  (_: Sid | string): Sid =>
+    id([ 'Target', _ ])
+ 
+/**
+ * @returns insert DML ignoring existing rows.
+ *
+ * If provided array of objects is empty, returns SELECT 0.
+ *
+ * Optional hits can be provided. Defaults to SERIALIZABLE hint.
+ */
+export const insertIgnore =
+  (
+    table: Sid | string,
+    onKeys: string[],
+    objects: Record<string, unknown>[],
+    maybeObjectKeys?: string[],
+    { hints = [ 'serializable' ] }: {
+      hints?: TableHintLimited[]
+    } = {}
+  ): S => {
+ 
+    Iif (!Array.isArray(objects)) {
+      throw new TypeError(`Expected array of values, got ${objects}.`)
+    }
+ 
+    Iif (objects.length === 0) {
+      return tsql`select 0;`
+    }
+ 
+    const objectKeys = maybeObjectKeys || keysOfObjects(objects)
+    const on_ = and(...onKeys.map(_ => eq(sourcePrefixed(_), targetPrefixed(_))))
+    const where_ = and(...onKeys.map(_ => eq(targetPrefixed(_), null)))
+ 
+    return tsql`
+      insert into ${id_(table, hints)} ${row(objectKeys.map(id))}
+      select Source.*
+      from ${inlineTableOfObjects('Source', objects, objectKeys)}
+      left join ${id(table)} as Target on ${on_}
+      where ${where_}
+    `
+  }
+ 
+export default insertIgnore
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/insert-not-matched.ts.html b/coverage/lcov-report/src/insert-not-matched.ts.html new file mode 100644 index 0000000..759f6db --- /dev/null +++ b/coverage/lcov-report/src/insert-not-matched.ts.html @@ -0,0 +1,274 @@ + + + + + + Code coverage report for src/insert-not-matched.ts + + + + + + + + + +
+
+

All files / src insert-not-matched.ts

+
+ +
+ 44.44% + Statements + 12/27 +
+ + +
+ 0% + Branches + 0/6 +
+ + +
+ 0% + Functions + 0/4 +
+ + +
+ 48% + Lines + 12/25 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +6422x +22x +22x +22x +22x +22x +22x +22x +  +  +  +  +  +22x +  +  +  +22x +  +  +  +  +  +  +  +  +  +  +  +  +22x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +22x + 
import and from './and.js'
+import eq from './eq.js'
+import id from './identifier.js'
+import inlineTableOfObjects from './inline-table-of-objects.js'
+import keysOfObjects from './keys-of-objects.js'
+import limitedHintsIdentifier from './limited-hints-identifier.js'
+import row from './row.js'
+import tsql from './template.js'
+import type { TableHintLimited } from './table-hint-limited.js'
+import type S from './sanitised.js'
+import type Sid from './sanitised-identifier.js'
+ 
+export const sourcePrefixed =
+  (_: Sid | string): Sid =>
+    id([ 'Source', _ ])
+ 
+export const targetPrefixed =
+  (_: Sid | string): Sid =>
+    id([ 'Target', _ ])
+ 
+/**
+ * @returns merge DML that runs insert operations on target table from the result of a join with source table.
+ *
+ * Already existing records are skipped.
+ *
+ * This DML is using MERGE statement.
+ *
+ * @see insertIgnore for DML based on INSERT and LEFT JOIN.
+ */
+export const insertNotMatched =
+  (
+    table: Sid | string,
+    onKeys: string[],
+    objects: Record<string, unknown>[],
+    maybeObjectKeys?: string[],
+    { hints = [ 'serializable' ] }: {
+      hints?: TableHintLimited[]
+    } = {}
+  ): S => {
+ 
+    Iif (!Array.isArray(objects)) {
+      throw new TypeError(`Expected array of values, got ${objects}.`)
+    }
+ 
+    Iif (objects.length === 0) {
+      return tsql`select 0;`
+    }
+ 
+    const table_ = limitedHintsIdentifier(table, hints)
+    const objectKeys = maybeObjectKeys || keysOfObjects(objects)
+    const on_ = and(...onKeys.map(_ => eq(sourcePrefixed(_), targetPrefixed(_))))
+ 
+    return tsql`
+      merge ${table_} as ${id('Target')}
+      using ${inlineTableOfObjects('Source', objects, objectKeys)}
+      on ${on_}
+      when not matched by target then
+        insert ${row(objectKeys.map(id))}
+        values ${row(objectKeys.map(sourcePrefixed))};
+    `
+  }
+ 
+export default insertNotMatched
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/insert-object.ts.html b/coverage/lcov-report/src/insert-object.ts.html new file mode 100644 index 0000000..70855c5 --- /dev/null +++ b/coverage/lcov-report/src/insert-object.ts.html @@ -0,0 +1,178 @@ + + + + + + Code coverage report for src/insert-object.ts + + + + + + + + + +
+
+

All files / src insert-object.ts

+
+ +
+ 88.88% + Statements + 16/18 +
+ + +
+ 33.33% + Branches + 1/3 +
+ + +
+ 100% + Functions + 2/2 +
+ + +
+ 87.5% + Lines + 14/16 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +3222x +22x +22x +22x +22x +  +  +  +  +  +  +  +  +  +  +  +22x +10x +10x +10x +  +  +10x +10x +23x +10x +  +  +  +  +22x + 
import auto from './auto.js'
+import defined from './defined.js'
+import id from './identifier.js'
+import list from './list.js'
+import tsql from './template.js'
+import type S from './sanitised.js'
+import type Sid from './sanitised-identifier.js'
+ 
+/**
+ * @returns insert DML for single row.
+ *
+ * `undefined` entries are filtered out.
+ *
+ * @throws {TypeError} if there are no non-`undefined` entries.
+ */
+export const insertObject =
+  (table: Sid | string, object: Record<string, unknown>, output?: S): S => {
+    const object_ = defined(object)
+    const keys = Object.keys(object_)
+    Iif (keys.length === 0) {
+      throw new TypeError(`Expected object with keys, got ${object_}.`)
+    }
+    const table_ = id(table)
+    const keys_ = list(keys.map(id))
+    const values_ = list(keys.map(_ => object_[_]).map(auto))
+    return output ?
+      tsql`insert into ${table_} (${keys_}) output ${output} values (${values_})` :
+      tsql`insert into ${table_} (${keys_}) values (${values_})`
+  }
+ 
+export default insertObject
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/insert-objects.ts.html b/coverage/lcov-report/src/insert-objects.ts.html new file mode 100644 index 0000000..3398179 --- /dev/null +++ b/coverage/lcov-report/src/insert-objects.ts.html @@ -0,0 +1,241 @@ + + + + + + Code coverage report for src/insert-objects.ts + + + + + + + + + +
+
+

All files / src insert-objects.ts

+
+ +
+ 91.66% + Statements + 22/24 +
+ + +
+ 80% + Branches + 4/5 +
+ + +
+ 100% + Functions + 3/3 +
+ + +
+ 90.47% + Lines + 19/21 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +5322x +22x +22x +22x +22x +22x +22x +  +  +  +  +  +  +  +  +  +  +  +22x +  +  +  +  +  +7x +  +  +  +7x +1x +  +  +6x +6x +6x +  +6x +2x +  +  +  +  +  +  +1107x +4x +  +  +  +  +  +22x + 
import auto from './auto.js'
+import id from './identifier.js'
+import inlineTableOfObjects from './inline-table-of-objects.js'
+import keysOfObjects from './keys-of-objects.js'
+import list from './list.js'
+import row from './row.js'
+import tsql from './template.js'
+import type S from './sanitised.js'
+import type Sid from './sanitised-identifier.js'
+ 
+/**
+ * @returns multiple row insert DML.
+ *
+ * @see insertIgnore for DML which ignores existing rows.
+ *
+ * @see insertNotMatched for DML which ignores existing rows using MERGE statement.
+ */
+export const insertObjects =
+  (
+    table: Sid | string,
+    objects: Record<string, unknown>[],
+    maybeKeys?: string[]
+  ): S => {
+ 
+    Iif (!Array.isArray(objects)) {
+      throw new TypeError(`Expected array of values, got ${objects}.`)
+    }
+ 
+    if (objects.length === 0) {
+      return tsql`select 0;`
+    }
+ 
+    const table_ = id(table)
+    const keys = maybeKeys ?? keysOfObjects(objects)
+    const keys_ = list(keys.map(id))
+ 
+    if (objects.length > 1000) {
+      return tsql`
+        insert into ${table_} (${keys_})
+        select Source.*
+        from ${inlineTableOfObjects('Source', objects, keys)}
+      `
+    }
+ 
+    const values_ = list(objects.map(object => row(keys.map(key => auto(object[key])))))
+    return tsql`
+      insert into ${table_} (${keys_})
+      values ${values_}
+    `
+  }
+ 
+export default insertObjects
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/interpolate.ts.html b/coverage/lcov-report/src/interpolate.ts.html new file mode 100644 index 0000000..6d2565c --- /dev/null +++ b/coverage/lcov-report/src/interpolate.ts.html @@ -0,0 +1,277 @@ + + + + + + Code coverage report for src/interpolate.ts + + + + + + + + + +
+
+

All files / src interpolate.ts

+
+ +
+ 87.09% + Statements + 27/31 +
+ + +
+ 75% + Branches + 12/16 +
+ + +
+ 100% + Functions + 3/3 +
+ + +
+ 86.2% + Lines + 25/29 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65  +22x +  +  +  +  +  +  +  +  +  +1816x +  +  +1816x +  +  +1816x +1816x +2025x +  +  +  +1816x +  +  +1816x +  +  +1816x +1816x +  +  +  +  +  +  +  +22x +406x +  +  +406x +  +  +406x +  +  +406x +406x +  +406x +1816x +1816x +  +406x +406x +705x +705x +  +406x +  +  +406x + 
import type S from './sanitised.js'
+import indentTail from './indent-tail.js'
+ 
+type Margin = {
+  column: number,
+  open: boolean
+}
+ 
+function updateMargin(mutableMargin: Margin, value: string) {
+ 
+  // Locate start of last line.
+  const start = value.lastIndexOf('\n') + 1
+ 
+  // New value has multiple lines.
+  const multiline = start > 0
+ 
+  // Span of margin on the last line.
+  let end = start
+  while (end < value.length && value[end] === ' ') {
+    end++
+  }
+ 
+  // Margin's column.
+  const column = end - start
+ 
+  // Last line is full of blanks.
+  const blanks = end === value.length
+ 
+  // Update margin.
+  mutableMargin.column = multiline ? column : mutableMargin.column + (mutableMargin.open ? column : 0)
+  mutableMargin.open = (mutableMargin.open || multiline) && blanks
+}
+ 
+/**
+ * @returns interpolated array `xs` with values from `ys`; empty array if both arrays are empty.
+ * @throws if `xs.length - 1 !== ys.length`
+ */
+export const interpolate =
+  (xs: TemplateStringsArray, ys: S[]): string[] => {
+    Iif (!Array.isArray(xs) || !Array.isArray(ys)) {
+      throw new TypeError(`Expected xs and ys to be an array, got ${xs} and ${ys}.`)
+    }
+    Iif ((xs.length === 0) && (ys.length === 0)) {
+      return []
+    }
+    Iif (xs.length - 1 !== ys.length) {
+      throw new TypeError(`Expected xs and ys length to be correct, got ${xs.length} and ${ys.length}.`)
+    }
+    const margin = { column: 0, open: true }
+    const rs: string[] = []
+    const push =
+      (value: string) => {
+        rs.push(value)
+        updateMargin(margin, value)
+      }
+    push(xs[0])
+    for (let i = 0; i < ys.length; i++) {
+      push(indentTail(ys[i].toString(), ' '.repeat(margin.column)))
+      push(xs[i + 1])
+    }
+    return rs
+  }
+ 
+export default interpolate
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/interpolate1.ts.html b/coverage/lcov-report/src/interpolate1.ts.html new file mode 100644 index 0000000..02a7402 --- /dev/null +++ b/coverage/lcov-report/src/interpolate1.ts.html @@ -0,0 +1,139 @@ + + + + + + Code coverage report for src/interpolate1.ts + + + + + + + + + +
+
+

All files / src interpolate1.ts

+
+ +
+ 78.57% + Statements + 11/14 +
+ + +
+ 0% + Branches + 0/2 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 75% + Lines + 9/12 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19  +  +22x +78x +  +  +78x +  +  +78x +78x +27x +27x +  +78x +  +  +78x + 
/** @returns interpolated array with `y` elements. */
+export const interpolate1 =
+  <T, I>(xs: T[], y: I): (T | I)[] => {
+    Iif (!Array.isArray(xs)) {
+      throw new TypeError(`Expected xs to be an array, got ${xs}.`)
+    }
+    Iif (xs.length === 0) {
+      return []
+    }
+    const rs: (T | I)[] = [ xs[0] ]
+    for (let i = 1; i < xs.length; i++) {
+      rs.push(y)
+      rs.push(xs[i])
+    }
+    return rs
+  }
+ 
+export default interpolate1
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/is-defined.ts.html b/coverage/lcov-report/src/is-defined.ts.html new file mode 100644 index 0000000..38a84f6 --- /dev/null +++ b/coverage/lcov-report/src/is-defined.ts.html @@ -0,0 +1,142 @@ + + + + + + Code coverage report for src/is-defined.ts + + + + + + + + + +
+
+

All files / src is-defined.ts

+
+ +
+ 87.5% + Statements + 7/8 +
+ + +
+ 100% + Branches + 2/2 +
+ + +
+ 100% + Functions + 2/2 +
+ + +
+ 87.5% + Lines + 7/8 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +2022x +  +  +  +  +  +  +  +90x +127x +13x +  +114x +114x +  +114x +  +  +  + 
import { isObject } from './is-object.js'
+ 
+export type Defined<T> =
+  T extends undefined ?
+    never :
+    T
+ 
+/** @returns true if values propagates to undefined, false otherwise. */
+export function isDefined<T>(value: T): value is Defined<T> {
+  if (typeof value === 'undefined') {
+    return false
+  }
+  if (isObject(value)) {
+    return Object
+      .values(value)
+      .some(_ => typeof _ !== 'undefined')
+  }
+  return true
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/is-null.ts.html b/coverage/lcov-report/src/is-null.ts.html new file mode 100644 index 0000000..d0e4fb6 --- /dev/null +++ b/coverage/lcov-report/src/is-null.ts.html @@ -0,0 +1,112 @@ + + + + + + Code coverage report for src/is-null.ts + + + + + + + + + +
+
+

All files / src is-null.ts

+
+ +
+ 83.33% + Statements + 5/6 +
+ + +
+ 100% + Branches + 3/3 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 80% + Lines + 4/5 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +1022x +  +  +  +22x +69x +  +  +69x + 
import Sanitised from './sanitised.js'
+ 
+/** @returns `true` if value is `null` or sanitised null, `false` otherwise. */
+export const isNull =
+  (value: unknown) =>
+    value === null ||
+    (value instanceof Sanitised && value.toString() === 'null')
+ 
+export default isNull
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/is-object.ts.html b/coverage/lcov-report/src/is-object.ts.html new file mode 100644 index 0000000..72aed41 --- /dev/null +++ b/coverage/lcov-report/src/is-object.ts.html @@ -0,0 +1,106 @@ + + + + + + Code coverage report for src/is-object.ts + + + + + + + + + +
+
+

All files / src is-object.ts

+
+ +
+ 100% + Statements + 2/2 +
+ + +
+ 100% + Branches + 3/3 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 2/2 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8263x +263x +  +  +  +  +  + 
export function isObject(value: unknown): value is Record<string, unknown> {
+  return (
+    typeof value === 'object' &&
+    value !== null &&
+    !Array.isArray(value)
+  )
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/is-string.ts.html b/coverage/lcov-report/src/is-string.ts.html new file mode 100644 index 0000000..727c2fb --- /dev/null +++ b/coverage/lcov-report/src/is-string.ts.html @@ -0,0 +1,109 @@ + + + + + + Code coverage report for src/is-string.ts + + + + + + + + + +
+
+

All files / src is-string.ts

+
+ +
+ 80% + Statements + 4/5 +
+ + +
+ 50% + Branches + 1/2 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 75% + Lines + 3/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9  +  +  +  +22x +4685x +  +4685x + 
// TODO: Remove this, this is dangerous.
+export const isString =
+ 
+  // eslint-disable-next-line @typescript-eslint/ban-types
+  (value: unknown): value is string | String =>
+    typeof value === 'string' || value instanceof String
+ 
+export default isString
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/is.ts.html b/coverage/lcov-report/src/is.ts.html new file mode 100644 index 0000000..699dff1 --- /dev/null +++ b/coverage/lcov-report/src/is.ts.html @@ -0,0 +1,133 @@ + + + + + + Code coverage report for src/is.ts + + + + + + + + + +
+
+

All files / src is.ts

+
+ +
+ 100% + Statements + 5/5 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 2/2 +
+ + +
+ 100% + Lines + 4/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17  +  +  +  +  +  +  +  +  +  +  +22x +6x +6x +  +22x + 
/**
+ * @returns where clause comparision combinator.
+ *
+ * Usage:
+ *
+ *   ```ts
+ *   Tsql.where({ foo: Tsql.is(Tsql.gt, 3) })
+ *   ```
+ *
+ */
+const is =
+  <Lhs, Rest extends unknown[], R>(f: (lhs: Lhs, ...args: Rest) => R, ...args: Rest): ((lhs: Lhs) => R) =>
+    (lhs: Lhs): R =>
+      f(lhs, ...args)
+ 
+export default is
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/json-modify.ts.html b/coverage/lcov-report/src/json-modify.ts.html new file mode 100644 index 0000000..7e8689f --- /dev/null +++ b/coverage/lcov-report/src/json-modify.ts.html @@ -0,0 +1,190 @@ + + + + + + Code coverage report for src/json-modify.ts + + + + + + + + + +
+
+

All files / src json-modify.ts

+
+ +
+ 92.85% + Statements + 13/14 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 2/2 +
+ + +
+ 92.3% + Lines + 12/13 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +3622x +22x +22x +22x +  +  +  +22x +3x +3x +6x +2x +2x +  +  +  +  +  +  +  +  +  +  +  +4x +  +  +  +  +  +  +  +  +  +22x + 
import auto from './auto.js'
+import jsonPath from './json-path.js'
+import trueValue from './true-value.js'
+import tsql from './template.js'
+import type S from './sanitised.js'
+ 
+export const jsonModify =
+  (target: S, kvs: Record<string, unknown>): S => {
+    const paths = Object.keys(kvs)
+    return paths.reduce((result, path) => {
+      if (path.startsWith('force ')) {
+        const path_ = path.slice('force '.length)
+        return tsql`
+          json_modify(
+            json_modify(
+              ${result},
+              ${'lax ' + jsonPath(path_)},
+              ${trueValue}
+            ),
+            ${'strict ' + jsonPath(path_)},
+            ${auto(kvs[path])}
+          )
+        `
+      }
+      return tsql`
+        json_modify(
+          ${result},
+          ${jsonPath(path)},
+          ${auto(kvs[path])}
+        )
+      `
+    }, target)
+  }
+ 
+export default jsonModify
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/json-path-exists.ts.html b/coverage/lcov-report/src/json-path-exists.ts.html new file mode 100644 index 0000000..5bb6358 --- /dev/null +++ b/coverage/lcov-report/src/json-path-exists.ts.html @@ -0,0 +1,91 @@ + + + + + + Code coverage report for src/json-path-exists.ts + + + + + + + + + +
+
+

All files / src json-path-exists.ts

+
+ +
+ 66.66% + Statements + 2/3 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 2/2 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +322x +22x + 
import { jsonPathExists } from './identifier.js'
+export default jsonPathExists
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/json-path.ts.html b/coverage/lcov-report/src/json-path.ts.html new file mode 100644 index 0000000..fa286fd --- /dev/null +++ b/coverage/lcov-report/src/json-path.ts.html @@ -0,0 +1,154 @@ + + + + + + Code coverage report for src/json-path.ts + + + + + + + + + +
+
+

All files / src json-path.ts

+
+ +
+ 87.5% + Statements + 14/16 +
+ + +
+ 100% + Branches + 5/5 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 92.85% + Lines + 13/14 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24  +22x +  +  +  +22x +20x +5x +  +15x +15x +2x +  +15x +1x +  +15x +2x +  +13x +  +  +22x + 
 
+export const re = /^\s*((append|lax|strict)\s+)*\$\./i
+ 
+/** @returns `[append] [lax | strict] $.<path>` json path from simplified path. */
+export const jsonPath =
+  (path: string, { mode, append }: { append?: boolean, mode?: 'lax' | 'strict' } = {}): string => {
+    if (re.test(path)) {
+      return path
+    }
+    const parts: string[] = []
+    if (append) {
+      parts.push('append')
+    }
+    if (mode) {
+      parts.push(mode)
+    }
+    if (parts.length > 0) {
+      return `${parts.join(' ')} $.${path}`
+    }
+    return `$.${path}`
+  }
+ 
+export default jsonPath
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/json-query.ts.html b/coverage/lcov-report/src/json-query.ts.html new file mode 100644 index 0000000..0b8118d --- /dev/null +++ b/coverage/lcov-report/src/json-query.ts.html @@ -0,0 +1,91 @@ + + + + + + Code coverage report for src/json-query.ts + + + + + + + + + +
+
+

All files / src json-query.ts

+
+ +
+ 66.66% + Statements + 2/3 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 2/2 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +322x +22x + 
import { jsonQuery } from './identifier.js'
+export default jsonQuery
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/json-value.ts.html b/coverage/lcov-report/src/json-value.ts.html new file mode 100644 index 0000000..75165b3 --- /dev/null +++ b/coverage/lcov-report/src/json-value.ts.html @@ -0,0 +1,91 @@ + + + + + + Code coverage report for src/json-value.ts + + + + + + + + + +
+
+

All files / src json-value.ts

+
+ +
+ 66.66% + Statements + 2/3 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 2/2 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +322x +22x + 
import { jsonValue } from './identifier.js'
+export default jsonValue
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/json.ts.html b/coverage/lcov-report/src/json.ts.html new file mode 100644 index 0000000..1c3ad04 --- /dev/null +++ b/coverage/lcov-report/src/json.ts.html @@ -0,0 +1,133 @@ + + + + + + Code coverage report for src/json.ts + + + + + + + + + +
+
+

All files / src json.ts

+
+ +
+ 85.71% + Statements + 6/7 +
+ + +
+ 50% + Branches + 1/2 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 83.33% + Lines + 5/6 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +1722x +22x +  +  +  +  +  +  +  +  +22x +8x +  +  +  +22x + 
import null_ from './null.js'
+import nstring from './nstring.js'
+import type S from './sanitised.js'
+ 
+/**
+ * @returns stringified json.
+ *
+ * `undefined` value is serialised as NULL.
+ */
+export const json =
+  (x: unknown): S =>
+    typeof x === 'undefined' ?
+      null_ :
+      nstring(JSON.stringify(x))
+ 
+export default json
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/keys-of-objects.ts.html b/coverage/lcov-report/src/keys-of-objects.ts.html new file mode 100644 index 0000000..42f9c01 --- /dev/null +++ b/coverage/lcov-report/src/keys-of-objects.ts.html @@ -0,0 +1,178 @@ + + + + + + Code coverage report for src/keys-of-objects.ts + + + + + + + + + +
+
+

All files / src keys-of-objects.ts

+
+ +
+ 73.68% + Statements + 14/19 +
+ + +
+ 40% + Branches + 2/5 +
+ + +
+ 100% + Functions + 3/3 +
+ + +
+ 68.75% + Lines + 11/16 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32  +  +22x +4152x +  +  +  +  +  +  +  +22x +21x +  +  +21x +  +  +21x +21x +4124x +4124x +  +  +  +  +  +21x +  +  +22x + 
/** @returns `true` if boths string arrays are the same. */
+export const same =
+  (xs: string[], ys: string[]): boolean =>
+    xs.length === ys.length && xs.every((x, i) => x === ys[i])
+ 
+/**
+ * @returns keys of all objects in array
+ * @throws if objects have different keys.
+ * @throws if an array is empty.
+ */
+export const keysOfObjects =
+  (objects: readonly Record<string, unknown>[]): string[] => {
+    Iif (!Array.isArray(objects)) {
+      throw new TypeError(`Expected array, got ${objects}.`)
+    }
+    Iif (objects.length === 0) {
+      throw new TypeError('Expected non empty array.')
+    }
+    const keys = Object.keys(objects[0]).sort()
+    for (let i = 1; i < objects.length; i++) {
+      const keys_ = Object.keys(objects[i]).sort()
+      Iif (!same(keys, keys_)) {
+        throw new TypeError(`Expected same keys on all objects, got ${keys} and ${keys_} at ${i} index.`)
+      }
+    }
+ 
+    // Return naturally ordered keys.
+    return Object.keys(objects[0])
+  }
+ 
+export default keysOfObjects
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/keywords.ts.html b/coverage/lcov-report/src/keywords.ts.html new file mode 100644 index 0000000..865f80e --- /dev/null +++ b/coverage/lcov-report/src/keywords.ts.html @@ -0,0 +1,3022 @@ + + + + + + Code coverage report for src/keywords.ts + + + + + + + + + +
+
+

All files / src keywords.ts

+
+ +
+ 100% + Statements + 5/5 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 3/3 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257 +258 +259 +260 +261 +262 +263 +264 +265 +266 +267 +268 +269 +270 +271 +272 +273 +274 +275 +276 +277 +278 +279 +280 +281 +282 +283 +284 +285 +286 +287 +288 +289 +290 +291 +292 +293 +294 +295 +296 +297 +298 +299 +300 +301 +302 +303 +304 +305 +306 +307 +308 +309 +310 +311 +312 +313 +314 +315 +316 +317 +318 +319 +320 +321 +322 +323 +324 +325 +326 +327 +328 +329 +330 +331 +332 +333 +334 +335 +336 +337 +338 +339 +340 +341 +342 +343 +344 +345 +346 +347 +348 +349 +350 +351 +352 +353 +354 +355 +356 +357 +358 +359 +360 +361 +362 +363 +364 +365 +366 +367 +368 +369 +370 +371 +372 +373 +374 +375 +376 +377 +378 +379 +380 +381 +382 +383 +384 +385 +386 +387 +388 +389 +390 +391 +392 +393 +394 +395 +396 +397 +398 +399 +400 +401 +402 +403 +404 +405 +406 +407 +408 +409 +410 +411 +412 +413 +414 +415 +416 +417 +418 +419 +420 +421 +422 +423 +424 +425 +426 +427 +428 +429 +430 +431 +432 +433 +434 +435 +436 +437 +438 +439 +440 +441 +442 +443 +444 +445 +446 +447 +448 +449 +450 +451 +452 +453 +454 +455 +456 +457 +458 +459 +460 +461 +462 +463 +464 +465 +466 +467 +468 +469 +470 +471 +472 +473 +474 +475 +476 +477 +478 +479 +480 +481 +482 +483 +484 +485 +486 +487 +488 +489 +490 +491 +492 +493 +494 +495 +496 +497 +498 +499 +500 +501 +502 +503 +504 +505 +506 +507 +508 +509 +510 +511 +512 +513 +514 +515 +516 +517 +518 +519 +520 +521 +522 +523 +524 +525 +526 +527 +528 +529 +530 +531 +532 +533 +534 +535 +536 +537 +538 +539 +540 +541 +542 +543 +544 +545 +546 +547 +548 +549 +550 +551 +552 +553 +554 +555 +556 +557 +558 +559 +560 +561 +562 +563 +564 +565 +566 +567 +568 +569 +570 +571 +572 +573 +574 +575 +576 +577 +578 +579 +580 +581 +582 +583 +584 +585 +586 +587 +588 +589 +590 +591 +592 +593 +594 +595 +596 +597 +598 +599 +600 +601 +602 +603 +604 +605 +606 +607 +608 +609 +610 +611 +612 +613 +614 +615 +616 +617 +618 +619 +620 +621 +622 +623 +624 +625 +626 +627 +628 +629 +630 +631 +632 +633 +634 +635 +636 +637 +638 +639 +640 +641 +642 +643 +644 +645 +646 +647 +648 +649 +650 +651 +652 +653 +654 +655 +656 +657 +658 +659 +660 +661 +662 +663 +664 +665 +666 +667 +668 +669 +670 +671 +672 +673 +674 +675 +676 +677 +678 +679 +680 +681 +682 +683 +684 +685 +686 +687 +688 +689 +690 +691 +692 +693 +694 +695 +696 +697 +698 +699 +700 +701 +702 +703 +704 +705 +706 +707 +708 +709 +710 +711 +712 +713 +714 +715 +716 +717 +718 +719 +720 +721 +722 +723 +724 +725 +726 +727 +728 +729 +730 +731 +732 +733 +734 +735 +736 +737 +738 +739 +740 +741 +742 +743 +744 +745 +746 +747 +748 +749 +750 +751 +752 +753 +754 +755 +756 +757 +758 +759 +760 +761 +762 +763 +764 +765 +766 +767 +768 +769 +770 +771 +772 +773 +774 +775 +776 +777 +778 +779 +780 +781 +782 +783 +784 +785 +786 +787 +788 +789 +790 +791 +792 +793 +794 +795 +796 +797 +798 +799 +800 +801 +802 +803 +804 +805 +806 +807 +808 +809 +810 +811 +812 +813 +814 +815 +816 +817 +818 +819 +820 +821 +822 +823 +824 +825 +826 +827 +828 +829 +830 +831 +832 +833 +834 +835 +836 +837 +838 +839 +840 +841 +842 +843 +844 +845 +846 +847 +848 +849 +850 +851 +852 +853 +854 +855 +856 +857 +858 +859 +860 +861 +862 +863 +864 +865 +866 +867 +868 +869 +870 +871 +872 +873 +874 +875 +876 +877 +878 +879 +880 +881 +882 +883 +884 +885 +886 +887 +888 +889 +890 +891 +892 +893 +894 +895 +896 +897 +898 +899 +900 +901 +902 +903 +904 +905 +906 +907 +908 +909 +910 +911 +912 +913 +914 +915 +916 +917 +918 +919 +920 +921 +922 +923 +924 +925 +926 +927 +928 +929 +930 +931 +932 +933 +934 +935 +936 +937 +938 +939 +940 +941 +942 +943 +944 +945 +946 +947 +948 +949 +950 +951 +952 +953 +954 +955 +956 +957 +958 +959 +960 +961 +962 +963 +964 +965 +966 +967 +968 +969 +970 +971 +972 +973 +974 +975 +976 +977 +978 +979 +98022x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +21362x +  +424x + 
const keywords_ = [
+  'abort_after_wait',
+  'abort',
+  'absent',
+  'absolute',
+  'accent_sensitivity',
+  'acceptable_cursopt',
+  'acp',
+  'action',
+  'activation',
+  'add',
+  'address',
+  'admin',
+  'aes_128',
+  'aes_192',
+  'aes_256',
+  'affinity',
+  'after',
+  'aggregate',
+  'algorithm',
+  'all_constraints',
+  'all_errormsgs',
+  'all_indexes',
+  'all_levels',
+  'all_results',
+  'all',
+  'allow_connections',
+  'allow_dup_row',
+  'allow_encrypted_value_modifications',
+  'allow_page_locks',
+  'allow_row_locks',
+  'allow_snapshot_isolation',
+  'alter',
+  'altercolumn',
+  'always',
+  'and',
+  'anonymous',
+  'ansi_defaults',
+  'ansi_null_default',
+  'ansi_null_dflt_off',
+  'ansi_null_dflt_on',
+  'ansi_nulls',
+  'ansi_padding',
+  'ansi_warnings',
+  'any',
+  'appdomain',
+  'append',
+  'application',
+  'apply',
+  'arithabort',
+  'arithignore',
+  'as',
+  'asc',
+  'assembly',
+  'asymmetric',
+  'asynchronous_commit',
+  'at',
+  'atan2',
+  'atomic',
+  'attach_force_rebuild_log',
+  'attach_rebuild_log',
+  'attach',
+  'audit',
+  'auth_realm',
+  'authentication',
+  'authorization',
+  'auto_cleanup',
+  'auto_close',
+  'auto_create_statistics',
+  'auto_shrink',
+  'auto_update_statistics_async',
+  'auto_update_statistics',
+  'auto',
+  'automated_backup_preference',
+  'automatic',
+  'autopilot',
+  'availability_mode',
+  'availability',
+  'backup_priority',
+  'backup',
+  'base64',
+  'basic',
+  'batches',
+  'batchsize',
+  'before',
+  'begin',
+  'between',
+  'bigint',
+  'binary',
+  'binding',
+  'bit',
+  'block',
+  'blocksize',
+  'bmk',
+  'break',
+  'broker_instance',
+  'broker',
+  'browse',
+  'bucket_count',
+  'buffer',
+  'buffercount',
+  'bulk_logged',
+  'bulk',
+  'by',
+  'call',
+  'caller',
+  'card',
+  'cascade',
+  'case',
+  'catalog',
+  'catch',
+  'cert',
+  'certificate',
+  'change_retention',
+  'change_tracking_context',
+  'change_tracking',
+  'changes',
+  'char',
+  'character_set',
+  'character',
+  'check_expiration',
+  'check_policy',
+  'check',
+  'checkconstraints',
+  'checkindex',
+  'checkpoint',
+  'cleanup_policy',
+  'clear_port',
+  'clear',
+  'close',
+  'clustered',
+  'coalesce',
+  'codepage',
+  'collate',
+  'collection',
+  'column_encryption_key',
+  'column_master_key',
+  'column',
+  'columnstore_archive',
+  'columnstore',
+  'colv_100_to_80',
+  'colv_80_to_100',
+  'commit_differential_base',
+  'commit',
+  'committed',
+  'compatibility_level',
+  'compress_all_row_groups',
+  'compression_delay',
+  'compression',
+  'compute',
+  'concat_null_yields_null',
+  'concatenate',
+  'configuration',
+  'connect',
+  'constraint',
+  'contains',
+  'containstable',
+  'continue_after_error',
+  'continue',
+  'contract_name',
+  'contract',
+  'control',
+  'conversation_group_id',
+  'conversation_handle',
+  'conversation',
+  'convert',
+  'copy_only',
+  'copy',
+  'count_rows',
+  'counter',
+  'create',
+  'credential',
+  'cross',
+  'cryptographic_provider',
+  'cryptographic',
+  'cube',
+  'current_date',
+  'current_time',
+  'current_timestamp',
+  'current_user',
+  'current',
+  'cursor_close_on_commit',
+  'cursor_default',
+  'cursor',
+  'data_compression',
+  'data_flush_interval_seconds',
+  'data_mirroring',
+  'data_purity',
+  'data_source',
+  'data',
+  'database_name',
+  'database_snapshot',
+  'database',
+  'datafiletype',
+  'date_correlation_optimization',
+  'date_format',
+  'date',
+  'datefirst',
+  'dateformat',
+  'datetime',
+  'datetime2',
+  'datetimeoffset',
+  'days',
+  'db_chaining',
+  'dbcc',
+  'dbid',
+  'dbidexec',
+  'dbo_only',
+  'deadlock_priority',
+  'deallocate',
+  'dec',
+  'decimal',
+  'declare',
+  'decrypt_a',
+  'decrypt',
+  'decryption',
+  'default_database',
+  'default_language',
+  'default_logon_domain',
+  'default_schema',
+  'default',
+  'definition',
+  'delay',
+  'delayed_durability',
+  'delete',
+  'delimitedtext',
+  'density_vector',
+  'deny',
+  'dependent',
+  'des',
+  'desc',
+  'description',
+  'desired_state',
+  'desx',
+  'differential',
+  'digest',
+  'disable_broker',
+  'disable_def_cnst_chk',
+  'disable',
+  'disabled',
+  'disk',
+  'distinct',
+  'distributed',
+  'distribution',
+  'double',
+  'drop_existing',
+  'drop',
+  'dts_buffers',
+  'dump',
+  'durability',
+  'dynamic',
+  'edition',
+  'elements',
+  'else',
+  'emergency',
+  'empty',
+  'enable_broker',
+  'enable',
+  'enabled',
+  'encoding',
+  'encrypted_value',
+  'encrypted',
+  'encryption_type',
+  'encryption',
+  'end',
+  'endpoint_url',
+  'endpoint',
+  'enhancedintegrity',
+  'entry',
+  'errlvl',
+  'error_broker_conversations',
+  'errorfile',
+  'escape',
+  'estimateonly',
+  'event',
+  'except',
+  'exec',
+  'executable',
+  'execute',
+  'exists',
+  'exit',
+  'expand',
+  'expiredate',
+  'expiry_date',
+  'explicit',
+  'external_access',
+  'external',
+  'failover_mode',
+  'failover',
+  'failure_condition_level',
+  'fast_forward',
+  'fast',
+  'fastfirstrow',
+  'federated_service_account',
+  'fetch',
+  'field_terminator',
+  'fieldterminator',
+  'file_format',
+  'file',
+  'filegroup',
+  'filelistonly',
+  'filename',
+  'filestream_log',
+  'filestream_on',
+  'filestream',
+  'filetable',
+  'fillfactor',
+  'filter',
+  'fips_flagger',
+  'fire_triggers',
+  'first_row',
+  'first',
+  'firstrow',
+  'float',
+  'flush_interval_seconds',
+  'fmtonly',
+  'following',
+  'for',
+  'force_failover_allow_data_loss',
+  'force_service_allow_data_loss',
+  'force',
+  'forced',
+  'forceplan',
+  'foreign',
+  'format_options',
+  'format_type',
+  'formatfile',
+  'formsof',
+  'forward_only',
+  'free_cursors',
+  'free_exec_context',
+  'freetext',
+  'freetexttable',
+  'from',
+  'full',
+  'fullscan',
+  'fulltext',
+  'fulltextall',
+  'fulltextkey',
+  'function',
+  'generated',
+  'geography',
+  'geometry',
+  'get',
+  'global',
+  'go',
+  'goto',
+  'governor',
+  'grant',
+  'group',
+  'guid',
+  'hadoop',
+  'hardening',
+  'hash',
+  'hashed',
+  'having',
+  'header_limit',
+  'headeronly',
+  'health_check_timeout',
+  'hidden',
+  'hierarchyid',
+  'histogram_steps',
+  'histogram',
+  'hits_cursors',
+  'hits_exec_context',
+  'holdlock',
+  'hours',
+  'http',
+  'identity_insert',
+  'identity_value',
+  'identity',
+  'identitycol',
+  'if',
+  'ifnull',
+  'ignore_constraints',
+  'ignore_dup_key',
+  'ignore_dup_row',
+  'ignore_triggers',
+  'image',
+  'immediate',
+  'implicit_transactions',
+  'in',
+  'include_null_values',
+  'include',
+  'index',
+  'inflectional',
+  'init',
+  'initiator',
+  'inner',
+  'insensitive',
+  'insert',
+  'instead',
+  'int',
+  'integer',
+  'integrated',
+  'intermediate',
+  'intersect',
+  'interval_length_minutes',
+  'into',
+  'inuse_cursors',
+  'inuse_exec_context',
+  'io',
+  'is',
+  'isabout',
+  'iso_week',
+  'isolation',
+  'job_tracker_location',
+  'join',
+  'json',
+  'keep_nulls',
+  'keep_replication',
+  'keep',
+  'keepdefaults',
+  'keepfixed',
+  'keepidentity',
+  'keepnulls',
+  'kerberos',
+  'key_path',
+  'key_source',
+  'key_store_provider_name',
+  'key',
+  'keyset',
+  'kill',
+  'kilobytes_per_batch',
+  'label',
+  'labelonly',
+  'langid',
+  'language',
+  'last',
+  'lastrow',
+  'left',
+  'legacy_cardinality_estimation',
+  'length',
+  'level',
+  'lifetime',
+  'like',
+  'lineage_100_to_80',
+  'lineage_80_to_100',
+  'lineno',
+  'listener_ip',
+  'listener_port',
+  'load',
+  'loadhistory',
+  'lob_compaction',
+  'local_service_name',
+  'local',
+  'locate',
+  'location',
+  'lock_escalation',
+  'lock_timeout',
+  'lockres',
+  'login_type',
+  'login',
+  'loop',
+  'manual',
+  'mark_in_use_for_removal',
+  'masked',
+  'master',
+  'matched',
+  'max_duration',
+  'max_outstanding_io_per_volume',
+  'max_plans_per_query',
+  'max_queue_readers',
+  'max_storage_size_mb',
+  'maxdop',
+  'maxerrors',
+  'maxlength',
+  'maxtransfersize',
+  'mediadescription',
+  'medianame',
+  'mediapassword',
+  'memogroup',
+  'memory_optimized',
+  'merge',
+  'message_forward_size',
+  'message_forwarding',
+  'message',
+  'microsecond',
+  'millisecond',
+  'minutes',
+  'mirror_address',
+  'misses_cursors',
+  'misses_exec_context',
+  'mixed',
+  'modify',
+  'money',
+  'move',
+  'multi_user',
+  'must_change',
+  'name',
+  'namespace',
+  'nanosecond',
+  'national',
+  'native_compilation',
+  'native',
+  'nchar',
+  'ncharacter',
+  'never',
+  'new_account',
+  'new_broker',
+  'newname',
+  'next',
+  'no_browsetable',
+  'no_checksum',
+  'no_compression',
+  'no_infomsgs',
+  'no_triggers',
+  'no_truncate',
+  'no',
+  'nocheck',
+  'nocount',
+  'noexec',
+  'noexpand',
+  'noformat',
+  'noinit',
+  'nolock',
+  'nonatomic',
+  'nonclustered',
+  'nondurable',
+  'none',
+  'norecompute',
+  'norecovery',
+  'noreset',
+  'norewind',
+  'noskip',
+  'not',
+  'notification',
+  'nounload',
+  'now',
+  'nowait',
+  'ntext',
+  'ntlm',
+  'null',
+  'nullif',
+  'numeric_roundabort',
+  'numeric',
+  'nvarchar',
+  'object',
+  'objid',
+  'oem',
+  'of',
+  'off',
+  'offline',
+  'offsets',
+  'old_account',
+  'on',
+  'online',
+  'open',
+  'opendatasource',
+  'openjson',
+  'openquery',
+  'openrowset',
+  'openxml',
+  'operation_mode',
+  'optimistic',
+  'option',
+  'or',
+  'orc',
+  'order',
+  'out',
+  'outer',
+  'output',
+  'over',
+  'override',
+  'owner',
+  'ownership',
+  'pad_index',
+  'page_checksum',
+  'page_verify',
+  'page',
+  'pagecount',
+  'paglock',
+  'param',
+  'parameter_sniffing',
+  'parameter_type_expansion',
+  'parameterization',
+  'parquet',
+  'parseonly',
+  'partial',
+  'partition',
+  'partner',
+  'password',
+  'path',
+  'pause',
+  'percent',
+  'percentage',
+  'period',
+  'permission_set',
+  'persisted',
+  'physical_only',
+  'pivot',
+  'plan_forcing_mode',
+  'plan',
+  'policy',
+  'pool',
+  'population',
+  'ports',
+  'preceding',
+  'precision',
+  'predicate',
+  'presume_abort',
+  'primary_role',
+  'primary',
+  'print',
+  'prior',
+  'priority_level',
+  'priority',
+  'private',
+  'proc',
+  'procedure_name',
+  'procedure',
+  'profile',
+  'provider',
+  'public',
+  'query_capture_mode',
+  'query_governor_cost_limit',
+  'query_optimizer_hotfixes',
+  'query_store',
+  'queue',
+  'quoted_identifier',
+  'raiserror',
+  'range',
+  'raw',
+  'rc2',
+  'rc4_128',
+  'rc4',
+  'rcfile',
+  'rdbms',
+  'read_committed_snapshot',
+  'read_only',
+  'read_write',
+  'read',
+  'readcommitted',
+  'readcommittedlock',
+  'readonly',
+  'readpast',
+  'readtext',
+  'readuncommitted',
+  'readwrite',
+  'real',
+  'rebuild',
+  'receive',
+  'recmodel_70backcomp',
+  'recompile',
+  'reconfigure',
+  'recovery',
+  'recursive_triggers',
+  'recursive',
+  'redo_queue',
+  'references',
+  'reject_sample_value',
+  'reject_type',
+  'reject_value',
+  'relative',
+  'remote_data_archive',
+  'remote_proc_transactions',
+  'remote_service_name',
+  'remote',
+  'remove',
+  'removed_cursors',
+  'removed_exec_context',
+  'reorganize',
+  'repeat',
+  'repeatable',
+  'repeatableread',
+  'replica',
+  'replicated',
+  'replication',
+  'replnick_100_to_80',
+  'replnickarray_100_to_80',
+  'replnickarray_80_to_100',
+  'required_cursopt',
+  'required',
+  'resample',
+  'reset',
+  'resource_manager_location',
+  'resource',
+  'restart',
+  'restore',
+  'restrict',
+  'restricted_user',
+  'resume',
+  'retaindays',
+  'retention',
+  'return',
+  'returns',
+  'revert',
+  'revoke',
+  'rewind',
+  'rewindonly',
+  'right',
+  'robust',
+  'role',
+  'rollback',
+  'rollup',
+  'root',
+  'round_robin',
+  'route',
+  'row_terminator',
+  'row',
+  'rowcount',
+  'rowdump',
+  'rowguidcol',
+  'rowlock',
+  'rows_per_batch',
+  'rows',
+  'rowsets_only',
+  'rowterminator',
+  'rowversion',
+  'rsa_1024',
+  'rsa_2048',
+  'rsa_3072',
+  'rsa_4096',
+  'rsa_512',
+  'rule',
+  'safe',
+  'safety',
+  'sample',
+  'save',
+  'schema',
+  'schemabinding',
+  'scoped',
+  'scroll_locks',
+  'scroll',
+  'sddl',
+  'secexpr',
+  'secondary_only',
+  'secondary_role',
+  'secondary',
+  'secret',
+  'security',
+  'securityaudit',
+  'select',
+  'selective',
+  'self',
+  'semantickeyphrasetable',
+  'semanticsimilaritydetailstable',
+  'semanticsimilaritytable',
+  'send',
+  'sent',
+  'sequence',
+  'serde_method',
+  'serializable',
+  'server',
+  'service_broker',
+  'service_name',
+  'service_objective',
+  'service',
+  'session_timeout',
+  'session_user',
+  'session',
+  'sessions',
+  'set',
+  'seterror',
+  'setopts',
+  'sets',
+  'setuser',
+  'shard_map_manager',
+  'shard_map_name',
+  'sharded',
+  'shared_memory',
+  'show_statistics',
+  'showplan_all',
+  'showplan_text',
+  'showplan_xml_with_recompile',
+  'showplan_xml',
+  'shrinkdb',
+  'shutdown',
+  'sid',
+  'signature',
+  'simple',
+  'single_blob',
+  'single_clob',
+  'single_nclob',
+  'single_user',
+  'singleton',
+  'site',
+  'size_based_cleanup_mode',
+  'skip',
+  'smalldatetime',
+  'smallint',
+  'smallmoney',
+  'snapshot_import',
+  'snapshot',
+  'snapshotrestorephase',
+  'soap',
+  'softnuma',
+  'some',
+  'sort_in_tempdb',
+  'sorted_data_reorg',
+  'sorted_data',
+  'source',
+  'spatial',
+  'sql_bigint',
+  'sql_binary',
+  'sql_bit',
+  'sql_char',
+  'sql_date',
+  'sql_decimal',
+  'sql_double',
+  'sql_float',
+  'sql_guid',
+  'sql_handle',
+  'sql_longvarbinary',
+  'sql_longvarchar',
+  'sql_numeric',
+  'sql_real',
+  'sql_smallint',
+  'sql_time',
+  'sql_timestamp',
+  'sql_tinyint',
+  'sql_tsi_day',
+  'sql_tsi_frac_second',
+  'sql_tsi_hour',
+  'sql_tsi_minute',
+  'sql_tsi_month',
+  'sql_tsi_quarter',
+  'sql_tsi_second',
+  'sql_tsi_week',
+  'sql_tsi_year',
+  'sql_type_date',
+  'sql_type_time',
+  'sql_type_timestamp',
+  'sql_varbinary',
+  'sql_varchar',
+  'sql_variant',
+  'sql_wchar',
+  'sql_wlongvarchar',
+  'sql',
+  'ssl_port',
+  'ssl',
+  'standard',
+  'standby',
+  'start_date',
+  'start',
+  'started',
+  'stat_header',
+  'state',
+  'statement',
+  'static',
+  'statistics_incremental',
+  'statistics_norecompute',
+  'statistics_only',
+  'statistics',
+  'statman',
+  'stats_stream',
+  'status',
+  'stop_on_error',
+  'stop',
+  'stopat',
+  'stopatmark',
+  'stopbeforemark',
+  'stoplist',
+  'stopped',
+  'string_delimiter',
+  'subject',
+  'supplemental_logging',
+  'supported',
+  'suspend',
+  'symmetric',
+  'synchronous_commit',
+  'synonym',
+  'sysname',
+  'system_time',
+  'system_user',
+  'system_versioning',
+  'system',
+  'table',
+  'tableresults',
+  'tablesample',
+  'tablock',
+  'tablockx',
+  'take',
+  'tape',
+  'target_index',
+  'target_partition',
+  'target',
+  'tcp',
+  'temporal_history_retention',
+  'text',
+  'textimage_on',
+  'textsize',
+  'then',
+  'thesaurus',
+  'throw',
+  'time',
+  'timeout',
+  'timestamp',
+  'tinyint',
+  'to',
+  'top',
+  'torn_page_detection',
+  'track_columns_updated',
+  'tran',
+  'transaction',
+  'transfer',
+  'trigger',
+  'triple_des_3key',
+  'triple_des',
+  'truncate',
+  'trustworthy',
+  'try_convert',
+  'try',
+  'tsequal',
+  'tsql',
+  'type_desc',
+  'type_warning',
+  'type',
+  'tzoffset',
+  'uid',
+  'unbounded',
+  'uncommitted',
+  'union',
+  'unique',
+  'uniqueidentifier',
+  'unlimited',
+  'unload',
+  'unlock',
+  'unpivot',
+  'unsafe',
+  'update',
+  'updatetext',
+  'updlock',
+  'url',
+  'use_type_default',
+  'use',
+  'useplan',
+  'user',
+  'useroptions',
+  'using',
+  'utcdatetime',
+  'valid_xml',
+  'validation',
+  'value',
+  'values',
+  'varbinary',
+  'varchar',
+  'varying',
+  'verbose',
+  'verifyonly',
+  'version',
+  'view_metadata',
+  'view',
+  'virtual_device',
+  'visiblity',
+  'waitfor',
+  'webmethod',
+  'weekday',
+  'weight',
+  'well_formed_xml',
+  'when',
+  'where',
+  'while',
+  'widechar_ansi',
+  'widechar',
+  'widenative',
+  'windows',
+  'with',
+  'within',
+  'without_array_wrapper',
+  'without',
+  'witness',
+  'workload',
+  'writetext',
+  'wsdl',
+  'xact_abort',
+  'xlock',
+  'xml',
+  'xmlschema',
+  'xquery',
+  'xsinil',
+  'zone'
+]
+ 
+/** An array of MSSQL keywords. */
+const keywords: Record<string, undefined | true> =
+  keywords_.reduce((r, _) => ({ ...r, [_]: true }), {})
+ 
+export default keywords
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/like.ts.html b/coverage/lcov-report/src/like.ts.html new file mode 100644 index 0000000..f9b224e --- /dev/null +++ b/coverage/lcov-report/src/like.ts.html @@ -0,0 +1,160 @@ + + + + + + Code coverage report for src/like.ts + + + + + + + + + +
+
+

All files / src like.ts

+
+ +
+ 91.66% + Statements + 11/12 +
+ + +
+ 50% + Branches + 2/4 +
+ + +
+ 100% + Functions + 2/2 +
+ + +
+ 90.9% + Lines + 10/11 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +2622x +22x +22x +22x +22x +  +  +  +22x +1x +  +  +  +  +  +  +  +  +  +22x +1x +  +  +  +22x + 
import fallback from './fallback.js'
+import id from './identifier.js'
+import isNull from './is-null.js'
+import nstring from './nstring.js'
+import tsql from './template.js'
+import type S from './sanitised.js'
+ 
+const rhsLike =
+  (rhs: unknown): S =>
+    isNull(rhs) ?
+      tsql`is null` :
+      tsql`like ${nstring(String(rhs))}`
+ 
+/**
+ * @returns LIKE operator.
+ *
+ * `undefined` is propagated.
+ */
+export const like =
+  (lhs: S | string, rhs: unknown): undefined | S =>
+    typeof rhs === 'undefined' ?
+      undefined :
+      tsql`${fallback(lhs, id)} ${rhsLike(rhs)}`
+ 
+export default like
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/limited-hints-identifier.ts.html b/coverage/lcov-report/src/limited-hints-identifier.ts.html new file mode 100644 index 0000000..f7cc995 --- /dev/null +++ b/coverage/lcov-report/src/limited-hints-identifier.ts.html @@ -0,0 +1,127 @@ + + + + + + Code coverage report for src/limited-hints-identifier.ts + + + + + + + + + +
+
+

All files / src limited-hints-identifier.ts

+
+ +
+ 100% + Statements + 8/8 +
+ + +
+ 100% + Branches + 4/4 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 7/7 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +1522x +22x +22x +22x +  +  +  +  +22x +20x +  +  +  +22x + 
import * as TableHintLimited from './table-hint-limited.js'
+import identifier from './identifier.js'
+import list from './list.js'
+import template from './template.js'
+import type S from './sanitised.js'
+ 
+/** @returns identifier with optional, [limited hints](https://docs.microsoft.com/en-us/sql/t-sql/queries/hints-transact-sql-table). */
+const limitedHintsIdentifier =
+  (table: Parameters<typeof identifier>[0], hints?: TableHintLimited.t[]): S =>
+    hints && hints.length > 0 ?
+      template`${identifier(table)} with (${list(hints, TableHintLimited.sanitized)})` :
+      identifier(table)
+ 
+export default limitedHintsIdentifier
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/line.ts.html b/coverage/lcov-report/src/line.ts.html new file mode 100644 index 0000000..d60c22d --- /dev/null +++ b/coverage/lcov-report/src/line.ts.html @@ -0,0 +1,145 @@ + + + + + + Code coverage report for src/line.ts + + + + + + + + + +
+
+

All files / src line.ts

+
+ +
+ 90% + Statements + 9/10 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 3/3 +
+ + +
+ 85.71% + Lines + 6/7 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +2122x +22x +  +  +  +  +  +  +  +  +  +  +  +  +22x +26x +26x +  +  +22x + 
import auto from './auto.js'
+import raw from './raw.js'
+import type S from './sanitised.js'
+ 
+/**
+ * @returns space delimited line constructed from provided elements.
+ *
+ * `undefined` values are filtered out.
+ *
+ * Empty list returns sanitized empty string.
+ *
+ * @see maybeLine for variant which propagates emtpy list to undefined.
+ */
+export const line =
+  (...elements: unknown[]): S => {
+    const elements_ = elements.filter(_ => typeof _ !== 'undefined')
+    return raw(elements_.map(auto).map(_ => _.toString().trim()).join(' '))
+  }
+ 
+export default line
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/lines.ts.html b/coverage/lcov-report/src/lines.ts.html new file mode 100644 index 0000000..f006bca --- /dev/null +++ b/coverage/lcov-report/src/lines.ts.html @@ -0,0 +1,136 @@ + + + + + + Code coverage report for src/lines.ts + + + + + + + + + +
+
+

All files / src lines.ts

+
+ +
+ 88.88% + Statements + 8/9 +
+ + +
+ 100% + Branches + 2/2 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 87.5% + Lines + 7/8 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +1822x +  +  +  +  +  +  +  +22x +5x +5x +2x +  +3x +  +  +22x + 
import maybeLines from './maybe-lines.js'
+import type S from './sanitised.js'
+ 
+/**
+ * @returns lines joined with provided separator.
+ * @throws if there are no lines on output.
+ */
+export const lines =
+  <T>(inputs: readonly T[], separator = '\n'): S => {
+    const output = maybeLines(inputs, separator)
+    if (typeof output === 'undefined') {
+      throw new Error('Expected at least one line.')
+    }
+    return output
+  }
+ 
+export default lines
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/list.ts.html b/coverage/lcov-report/src/list.ts.html new file mode 100644 index 0000000..03eda74 --- /dev/null +++ b/coverage/lcov-report/src/list.ts.html @@ -0,0 +1,154 @@ + + + + + + Code coverage report for src/list.ts + + + + + + + + + +
+
+

All files / src list.ts

+
+ +
+ 90.9% + Statements + 10/11 +
+ + +
+ 100% + Branches + 4/4 +
+ + +
+ 100% + Functions + 4/4 +
+ + +
+ 90% + Lines + 9/10 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +2422x +22x +  +  +  +  +  +  +  +  +  +  +22x +4274x +8524x +8512x +8512x +4274x +  +  +  +  +4274x + 
import auto from './auto.js'
+import raw from './raw.js'
+import type S from './sanitised.js'
+ 
+/**
+ * @returns comma separated list of values.
+ *
+ * If there are no `undefined` values, `undefined` is propagated.
+ *
+ * Optional element to sanitised string mapping can be provided (defaults to auto-sanitation).
+ */
+export const list =
+  <T>(values: readonly T[], sanitise: (value: T) => undefined | S = auto, separator = ', '): undefined | S => {
+    const values_ = values
+      .filter(_ => typeof _ !== 'undefined')
+      .map(_ => sanitise(_)?.toString().trim())
+      .filter(_ => typeof _ !== 'undefined')
+    return values_.length > 0 ?
+      raw(values_.join(separator)) :
+      undefined
+  }
+ 
+export default list
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/logical-false.ts.html b/coverage/lcov-report/src/logical-false.ts.html new file mode 100644 index 0000000..b3451c8 --- /dev/null +++ b/coverage/lcov-report/src/logical-false.ts.html @@ -0,0 +1,133 @@ + + + + + + Code coverage report for src/logical-false.ts + + + + + + + + + +
+
+

All files / src logical-false.ts

+
+ +
+ 80% + Statements + 4/5 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 75% + Lines + 3/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17  +22x +  +  +  +  +  +  +  +  +  +  +  +22x +  +22x + 
import type S from './sanitised.js'
+import raw from './raw.js'
+ 
+/**
+ * Simulated logical false – 0=1.
+ *
+ * Logical booleans can be used in condition expressions, ie. WHERE clause.
+ *
+ * Value booleans can be used in assignment statements, ie. UPDATE SET clause.
+ *
+ * @see falseValue for value boolean variant.
+ */
+export const logicalFalse: S =
+  raw('0=1')
+ 
+export default logicalFalse
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/logical-true.ts.html b/coverage/lcov-report/src/logical-true.ts.html new file mode 100644 index 0000000..4e8d106 --- /dev/null +++ b/coverage/lcov-report/src/logical-true.ts.html @@ -0,0 +1,133 @@ + + + + + + Code coverage report for src/logical-true.ts + + + + + + + + + +
+
+

All files / src logical-true.ts

+
+ +
+ 80% + Statements + 4/5 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 75% + Lines + 3/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17  +22x +  +  +  +  +  +  +  +  +  +  +  +22x +  +25x + 
import type S from './sanitised.js'
+import raw from './raw.js'
+ 
+/**
+ * Simulated logical true – 1=1.
+ *
+ * Logical booleans can be used in condition expressions, ie. WHERE clause.
+ *
+ * Value booleans can be used in assignment statements, ie. UPDATE SET clause.
+ *
+ * @see trueValue for value boolean variant.
+ */
+export const logicalTrue: S =
+  raw('1=1')
+ 
+export default logicalTrue
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/lt.ts.html b/coverage/lcov-report/src/lt.ts.html new file mode 100644 index 0000000..92cedb9 --- /dev/null +++ b/coverage/lcov-report/src/lt.ts.html @@ -0,0 +1,124 @@ + + + + + + Code coverage report for src/lt.ts + + + + + + + + + +
+
+

All files / src lt.ts

+
+ +
+ 83.33% + Statements + 5/6 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 80% + Lines + 4/5 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +1422x +  +  +  +  +  +  +  +  +22x +2x +  +22x + 
import op from './op.js'
+import type S from './sanitised.js'
+ 
+/**
+ * @returns lower than expression.
+ *
+ * `undefined` RHS is propagated.
+ */
+export const lt =
+  (l: S | string, r: unknown): undefined | S =>
+    op(l, '<', r)
+ 
+export default lt
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/lte.ts.html b/coverage/lcov-report/src/lte.ts.html new file mode 100644 index 0000000..daa2bcb --- /dev/null +++ b/coverage/lcov-report/src/lte.ts.html @@ -0,0 +1,124 @@ + + + + + + Code coverage report for src/lte.ts + + + + + + + + + +
+
+

All files / src lte.ts

+
+ +
+ 83.33% + Statements + 5/6 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 80% + Lines + 4/5 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +1422x +  +  +  +  +  +  +  +  +22x +2x +  +22x + 
import op from './op.js'
+import type S from './sanitised.js'
+ 
+/**
+ * @returns lower than or equal expression.
+ *
+ * `undefined` RHS is propagated.
+ */
+export const lte =
+  (l: S | string, r: unknown): undefined | S =>
+    op(l, '<=', r)
+ 
+export default lte
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/margin-of-first-line.ts.html b/coverage/lcov-report/src/margin-of-first-line.ts.html new file mode 100644 index 0000000..fa63d6e --- /dev/null +++ b/coverage/lcov-report/src/margin-of-first-line.ts.html @@ -0,0 +1,124 @@ + + + + + + Code coverage report for src/margin-of-first-line.ts + + + + + + + + + +
+
+

All files / src margin-of-first-line.ts

+
+ +
+ 100% + Statements + 8/8 +
+ + +
+ 100% + Branches + 3/3 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 7/7 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14  +  +24x +14x +14x +16x +6x +  +  +14x +  +  +24x + 
/** @returns whitespace margin (spaces/tabs) for single/first line. */
+const marginOfFirstLine =
+  (line: string): string => {
+    let i = 0
+    for (; i < line.length; i++) {
+      if (line[i] !== ' ' && line[i] !== '\t') {
+        break
+      }
+    }
+    return line.slice(0, i)
+  }
+ 
+export default marginOfFirstLine
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/margin-of-last-line.ts.html b/coverage/lcov-report/src/margin-of-last-line.ts.html new file mode 100644 index 0000000..ffd017d --- /dev/null +++ b/coverage/lcov-report/src/margin-of-last-line.ts.html @@ -0,0 +1,106 @@ + + + + + + Code coverage report for src/margin-of-last-line.ts + + + + + + + + + +
+
+

All files / src margin-of-last-line.ts

+
+ +
+ 100% + Statements + 5/5 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 4/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +823x +  +  +23x +8x +  +23x + 
import marginOfFirstLine from './margin-of-first-line.js'
+ 
+const marginOfLastLine =
+  (linesString: string): string =>
+    marginOfFirstLine(linesString.substr(1 + linesString.lastIndexOf('\n')))
+ 
+export default marginOfLastLine
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/maybe-line.ts.html b/coverage/lcov-report/src/maybe-line.ts.html new file mode 100644 index 0000000..f076f95 --- /dev/null +++ b/coverage/lcov-report/src/maybe-line.ts.html @@ -0,0 +1,145 @@ + + + + + + Code coverage report for src/maybe-line.ts + + + + + + + + + +
+
+

All files / src maybe-line.ts

+
+ +
+ 40% + Statements + 4/10 +
+ + +
+ 0% + Branches + 0/2 +
+ + +
+ 0% + Functions + 0/3 +
+ + +
+ 50% + Lines + 4/8 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +2122x +22x +  +  +  +  +  +  +  +  +  +  +22x +  +  +  +  +  +  +22x + 
import auto from './auto.js'
+import raw from './raw.js'
+import type S from './sanitised.js'
+ 
+/**
+ * @returns space delimited line constructed from provided elements.
+ *
+ * `undefined` values are filtered out.
+ *
+ * Empty list (after filtering out `undefined`) propagates `undefined`.
+ */
+export const maybeLine =
+  (...elements: unknown[]): undefined | S => {
+    const elements_ = elements.filter(_ => typeof _ !== 'undefined')
+    return elements_.length > 0 ?
+      raw(elements_.map(auto).map(_ => _.toString().trim()).join(' ')) :
+      undefined
+  }
+ 
+export default maybeLine
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/maybe-lines.ts.html b/coverage/lcov-report/src/maybe-lines.ts.html new file mode 100644 index 0000000..dae2388 --- /dev/null +++ b/coverage/lcov-report/src/maybe-lines.ts.html @@ -0,0 +1,145 @@ + + + + + + Code coverage report for src/maybe-lines.ts + + + + + + + + + +
+
+

All files / src maybe-lines.ts

+
+ +
+ 92.85% + Statements + 13/14 +
+ + +
+ 50% + Branches + 1/2 +
+ + +
+ 100% + Functions + 5/5 +
+ + +
+ 92.3% + Lines + 12/13 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +2122x +22x +  +  +  +  +22x +  +5x +10x +7x +7x +7x +5x +2x +  +3x +  +  +22x + 
import auto from './auto.js'
+import raw from './raw.js'
+import type S from './sanitised.js'
+ 
+/** @returns lines joined with provided separator or undefined if there are no lines. */
+export const maybeLines =
+  <T>(inputs: readonly T[], separator = '\n'): undefined | S => {
+    const outputs =
+      inputs
+        .filter(_ => typeof _ !== 'undefined')
+        .map(_ => auto(_))
+        .filter(_ => typeof _ !== 'undefined')
+        .map(_ => _.toString().trim())
+    if (outputs.length === 0) {
+      return
+    }
+    return raw(outputs.join(separator))
+  }
+ 
+export default maybeLines
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/merge-1n.ts.html b/coverage/lcov-report/src/merge-1n.ts.html new file mode 100644 index 0000000..3797172 --- /dev/null +++ b/coverage/lcov-report/src/merge-1n.ts.html @@ -0,0 +1,220 @@ + + + + + + Code coverage report for src/merge-1n.ts + + + + + + + + + +
+
+

All files / src merge-1n.ts

+
+ +
+ 88.23% + Statements + 15/17 +
+ + +
+ 75% + Branches + 3/4 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 87.5% + Lines + 14/16 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +4622x +22x +22x +22x +22x +  +  +  +  +  +  +22x +  +  +  +  +  +  +  +  +5x +5x +5x +5x +  +  +5x +1x +  +4x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +22x + 
import id from './identifier.js'
+import inlineTable from './inline-table-of-column.js'
+import limitedHintsIdentifier from './limited-hints-identifier.js'
+import row from './row.js'
+import tsql from './template.js'
+import type { TableHintLimited } from './table-hint-limited.js'
+import type S from './sanitised.js'
+import type Sid from './sanitised-identifier.js'
+ 
+/** @returns MERGE DML synchronising 1-n relation. */
+export const merge1n =
+  (
+    table: Sid | string,
+    [ lcolumn, rcolumn ]: [ Sid | string, Sid | string ],
+    lid: unknown,
+    values: unknown[],
+    { hints = [ 'serializable' ] }: {
+      hints?: TableHintLimited[]
+    } = {}
+  ): S => {
+    const table_ = limitedHintsIdentifier(table, hints)
+    const lcolumn_ = id(lcolumn)
+    const rcolumn_ = id(rcolumn)
+    Iif (!Array.isArray(values)) {
+      throw new TypeError(`Expected array of values, got ${values}.`)
+    }
+    if (values.length === 0) {
+      return tsql`delete from ${table_} where ${lcolumn_} = ${lid};`
+    }
+    return tsql`
+      merge ${table_} as ${id('Target')}
+      using ${inlineTable('Source', 'id', values)}
+      on (
+        ${id([ 'Target', lcolumn ])} = ${lid} and
+        ${id([ 'Target', rcolumn ])} = ${id([ 'Source', 'id' ])}
+      )
+      when not matched by target then
+        insert ${row([ lcolumn_, rcolumn_ ])}
+        values ${row([ lid, id('Source.id') ])}
+      when not matched by source and ${id([ 'Target', lcolumn ])} = ${lid} then
+        delete;
+    `
+  }
+ 
+export default merge1n
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/modify-jsons.ts.html b/coverage/lcov-report/src/modify-jsons.ts.html new file mode 100644 index 0000000..1daa813 --- /dev/null +++ b/coverage/lcov-report/src/modify-jsons.ts.html @@ -0,0 +1,271 @@ + + + + + + Code coverage report for src/modify-jsons.ts + + + + + + + + + +
+
+

All files / src modify-jsons.ts

+
+ +
+ 86.48% + Statements + 32/37 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 100% + Functions + 10/10 +
+ + +
+ 87.09% + Lines + 27/31 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +6322x +22x +22x +22x +22x +22x +  +  +22x +22x +  +  +  +  +  +22x +7x +  +  +22x +6x +  +  +22x +2x +  +  +  +5x +  +  +  +22x +  +  +  +  +2x +  +  +  +2x +2x +4x +4x +2x +4x +2x +  +  +2x +  +2x +  +  +  +  +  +  +  +  +22x + 
import and from './and.js'
+import eq from './eq.js'
+import id from './identifier.js'
+import inlineTableOfObjects from './inline-table-of-objects.js'
+import keysOfObjects from './keys-of-objects.js'
+import tsql from './template.js'
+import type S from './sanitised.js'
+import type Sid from './sanitised-identifier.js'
+import list from './list.js'
+import assign from './assign.js'
+ 
+export type Where = Record<string, unknown>
+export type Update = Record<string, Record<string, unknown>>
+ 
+export const sourcePrefixed =
+  (_: Sid | string): Sid =>
+    id([ 'Source', _ ])
+ 
+export const targetPrefixed =
+  (_: Sid | string): Sid =>
+    id([ 'Target', _ ])
+ 
+export const modify =
+  (column: string, jsonKeys: string[]): S =>
+    assign(
+      targetPrefixed(column),
+ 
+      // eslint-disable-next-line sonarjs/no-nested-template-literals
+      jsonKeys.reduce((_, jsonKey) => tsql`json_modify(${_}, ${`$.${jsonKey}`}, json_query(${sourcePrefixed(column)}, ${`$.${jsonKey}`}))`, targetPrefixed(column) as S)
+    ) as S
+ 
+/** @returns MERGE DML for json columns, multiple rows via JSON_MODIFY and JSON_QUERY. */
+export const modifyJsons = (
+  table: Sid | string,
+  entries: readonly Record<string, unknown>[]
+): S => {
+ 
+  Iif (entries.length === 0) {
+    return tsql`select 0;`
+  }
+ 
+  const table_ = id(table)
+  const objectKeys = keysOfObjects(entries)
+  const onKeys = objectKeys.filter(_ => !_.endsWith('Json'))
+  const jsonColumns = objectKeys.filter(_ => _.endsWith('Json'))
+  const update_ = list(jsonColumns.map(jsonColumn => {
+    const jsonKeys = keysOfObjects(entries.map(_ => _[jsonColumn] as Record<string, unknown>))
+    return modify(jsonColumn, jsonKeys)
+  }))
+ 
+  const on_ = and(...onKeys.map(_ => eq(sourcePrefixed(_), targetPrefixed(_))))
+ 
+  return tsql`
+    merge ${table_} as ${id('Target')}
+    using ${inlineTableOfObjects('Source', entries, objectKeys)}
+    on ${on_}
+    when matched then
+      update set ${update_};
+  `
+}
+ 
+export default modifyJsons
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/ne.ts.html b/coverage/lcov-report/src/ne.ts.html new file mode 100644 index 0000000..ea2ea04 --- /dev/null +++ b/coverage/lcov-report/src/ne.ts.html @@ -0,0 +1,139 @@ + + + + + + Code coverage report for src/ne.ts + + + + + + + + + +
+
+

All files / src ne.ts

+
+ +
+ 83.33% + Statements + 10/12 +
+ + +
+ 33.33% + Branches + 1/3 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 81.81% + Lines + 9/11 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +1922x +22x +22x +  +22x +  +  +22x +1x +  +  +1x +1x +  +  +  +  +22x + 
import fallback from './fallback.js'
+import id from './identifier.js'
+import isNull from './is-null.js'
+import type S from './sanitised.js'
+import tsql from './template.js'
+ 
+export const ne =
+  (lhs: S | string, rhs: unknown): undefined | S => {
+    Iif (typeof rhs === 'undefined') {
+      return undefined
+    }
+    const l_ = fallback(lhs, id)
+    return isNull(rhs) ?
+      tsql`${l_} is not null` :
+      tsql`${l_} <> ${rhs}`
+  }
+ 
+export default ne
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/ng.ts.html b/coverage/lcov-report/src/ng.ts.html new file mode 100644 index 0000000..68cc593 --- /dev/null +++ b/coverage/lcov-report/src/ng.ts.html @@ -0,0 +1,109 @@ + + + + + + Code coverage report for src/ng.ts + + + + + + + + + +
+
+

All files / src ng.ts

+
+ +
+ 83.33% + Statements + 5/6 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 80% + Lines + 4/5 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +922x +  +  +  +22x +1x +  +22x + 
import op from './op.js'
+import type S from './sanitised.js'
+ 
+export const ng =
+  (lhs: S | string, rhs: unknown): undefined | S =>
+    op(lhs, '!>', rhs)
+ 
+export default ng
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/nl.ts.html b/coverage/lcov-report/src/nl.ts.html new file mode 100644 index 0000000..27bdbee --- /dev/null +++ b/coverage/lcov-report/src/nl.ts.html @@ -0,0 +1,109 @@ + + + + + + Code coverage report for src/nl.ts + + + + + + + + + +
+
+

All files / src nl.ts

+
+ +
+ 83.33% + Statements + 5/6 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 80% + Lines + 4/5 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +922x +  +  +  +22x +1x +  +22x + 
import op from './op.js'
+import type S from './sanitised.js'
+ 
+export const nl =
+  (lhs: S | string, rhs: unknown): undefined | S =>
+    op(lhs, '!<', rhs)
+ 
+export default nl
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/not-between.ts.html b/coverage/lcov-report/src/not-between.ts.html new file mode 100644 index 0000000..329e2aa --- /dev/null +++ b/coverage/lcov-report/src/not-between.ts.html @@ -0,0 +1,121 @@ + + + + + + Code coverage report for src/not-between.ts + + + + + + + + + +
+
+

All files / src not-between.ts

+
+ +
+ 87.5% + Statements + 7/8 +
+ + +
+ 75% + Branches + 3/4 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 85.71% + Lines + 6/7 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +1322x +22x +22x +  +  +  +22x +1x +  +  +  +22x + 
import fallback from './fallback.js'
+import id from './identifier.js'
+import tsql from './template.js'
+import type S from './sanitised.js'
+ 
+export const notBetween =
+  <T>(l: string | S, r: undefined | null | [beginExpression: T, endExpression: T]): undefined | S =>
+    typeof l === 'undefined' || r == null ?
+      undefined :
+      tsql`${fallback(l, id)} not between ${r[0]} and ${r[1]}`
+ 
+export default notBetween
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/not-distinct.ts.html b/coverage/lcov-report/src/not-distinct.ts.html new file mode 100644 index 0000000..f9188d4 --- /dev/null +++ b/coverage/lcov-report/src/not-distinct.ts.html @@ -0,0 +1,130 @@ + + + + + + Code coverage report for src/not-distinct.ts + + + + + + + + + +
+
+

All files / src not-distinct.ts

+
+ +
+ 54.54% + Statements + 6/11 +
+ + +
+ 0% + Branches + 0/3 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 50% + Lines + 5/10 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +1622x +22x +22x +  +  +  +22x +  +  +  +  +  +  +  +44x + 
import fallback from './fallback.js'
+import id from './identifier.js'
+import template from './template.js'
+import type S from './sanitised.js'
+ 
+export const notDistinct =
+  (lhs: S | string, rhs: unknown): undefined | S => {
+    Iif (typeof lhs === 'undefined' || typeof rhs === 'undefined') {
+      return undefined
+    }
+    const lhs_ = fallback(lhs, id)
+    return template`(not (${lhs_} <> ${rhs} or ${lhs_} is null or ${rhs} is null) or (${lhs_} is null and ${rhs} is null))`
+  }
+ 
+export default notDistinct
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/not-in.ts.html b/coverage/lcov-report/src/not-in.ts.html new file mode 100644 index 0000000..9b6bd82 --- /dev/null +++ b/coverage/lcov-report/src/not-in.ts.html @@ -0,0 +1,133 @@ + + + + + + Code coverage report for src/not-in.ts + + + + + + + + + +
+
+

All files / src not-in.ts

+
+ +
+ 90% + Statements + 9/10 +
+ + +
+ 71.42% + Branches + 5/7 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 88.88% + Lines + 8/9 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +1722x +22x +22x +22x +22x +  +  +  +22x +1x +  +  +  +  +  +44x + 
import fallback from './fallback.js'
+import id from './identifier.js'
+import isNull from './is-null.js'
+import row from './row.js'
+import tsql from './template.js'
+import type S from './sanitised.js'
+ 
+export const notIn =
+  (l: S | string, r: undefined | null | unknown[]): undefined | S =>
+    typeof r === 'undefined' ?
+      undefined :
+      r && !isNull(r) && (r.length > 0) ?
+        tsql`${fallback(l, id)} not in ${row(r)}` :
+        tsql`${fallback(l, id)} is not null`
+ 
+export default notIn
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/not.ts.html b/coverage/lcov-report/src/not.ts.html new file mode 100644 index 0000000..9075e37 --- /dev/null +++ b/coverage/lcov-report/src/not.ts.html @@ -0,0 +1,100 @@ + + + + + + Code coverage report for src/not.ts + + + + + + + + + +
+
+

All files / src not.ts

+
+ +
+ 50% + Statements + 2/4 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 66.66% + Lines + 2/3 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +622x +  +  +  +22x + 
import { not } from './where.js'
+ 
+export { not }
+ 
+export default not
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/now.ts.html b/coverage/lcov-report/src/now.ts.html new file mode 100644 index 0000000..90898ef --- /dev/null +++ b/coverage/lcov-report/src/now.ts.html @@ -0,0 +1,103 @@ + + + + + + Code coverage report for src/now.ts + + + + + + + + + +
+
+

All files / src now.ts

+
+ +
+ 60% + Statements + 3/5 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 75% + Lines + 3/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +722x +  +  +22x +  +22x + 
import raw from './raw.js'
+ 
+export const now =
+  raw('sysdatetimeoffset()')
+ 
+export default now
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/nstring.ts.html b/coverage/lcov-report/src/nstring.ts.html new file mode 100644 index 0000000..e5173a4 --- /dev/null +++ b/coverage/lcov-report/src/nstring.ts.html @@ -0,0 +1,124 @@ + + + + + + Code coverage report for src/nstring.ts + + + + + + + + + +
+
+

All files / src nstring.ts

+
+ +
+ 85.71% + Statements + 6/7 +
+ + +
+ 50% + Branches + 2/4 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 83.33% + Lines + 5/6 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +1422x +22x +  +  +  +22x +4264x +  +  +  +  +  +4264x + 
import quotedNstring from './quoted-nstring.js'
+import S from './sanitised.js'
+ 
+// TODO: Add SanitisedValue type?
+export const nstring =
+  (value: undefined | null | string | S): S =>
+    value instanceof S ?
+      value :
+      value == null ?
+        new S('null') :
+        new S(quotedNstring(String(value)))
+ 
+export default nstring
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/null.ts.html b/coverage/lcov-report/src/null.ts.html new file mode 100644 index 0000000..d620b67 --- /dev/null +++ b/coverage/lcov-report/src/null.ts.html @@ -0,0 +1,103 @@ + + + + + + Code coverage report for src/null.ts + + + + + + + + + +
+
+

All files / src null.ts

+
+ +
+ 80% + Statements + 4/5 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 75% + Lines + 3/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +722x +  +  +22x +  +22x + 
import raw from './raw.js'
+ 
+export const null_ =
+  raw('null')
+ 
+export default null_
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/number.ts.html b/coverage/lcov-report/src/number.ts.html new file mode 100644 index 0000000..84bb8f2 --- /dev/null +++ b/coverage/lcov-report/src/number.ts.html @@ -0,0 +1,121 @@ + + + + + + Code coverage report for src/number.ts + + + + + + + + + +
+
+

All files / src number.ts

+
+ +
+ 75% + Statements + 6/8 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 71.42% + Lines + 5/7 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +1322x +  +  +  +22x +75x +  +  +75x +  +  +75x + 
import raw from './raw.js'
+import type S from './sanitised.js'
+ 
+export const number =
+  (x: number): S => {
+    Iif (!Number.isFinite(x)) {
+      throw new TypeError(`Expected finite number, got ${x}.`)
+    }
+    return raw(x.toString(10))
+  }
+ 
+export default number
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/object-id.ts.html b/coverage/lcov-report/src/object-id.ts.html new file mode 100644 index 0000000..2ebfc9b --- /dev/null +++ b/coverage/lcov-report/src/object-id.ts.html @@ -0,0 +1,109 @@ + + + + + + Code coverage report for src/object-id.ts + + + + + + + + + +
+
+

All files / src object-id.ts

+
+ +
+ 50% + Statements + 3/6 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 60% + Lines + 3/5 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9  +22x +  +  +22x +  +  +22x + 
import type S from './sanitised.js'
+import tsql from './template.js'
+ 
+export const objectId =
+  (name: string): S =>
+    tsql`object_id(${name})`
+ 
+export default objectId
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/op.ts.html b/coverage/lcov-report/src/op.ts.html new file mode 100644 index 0000000..24188f4 --- /dev/null +++ b/coverage/lcov-report/src/op.ts.html @@ -0,0 +1,136 @@ + + + + + + Code coverage report for src/op.ts + + + + + + + + + +
+
+

All files / src op.ts

+
+ +
+ 88.88% + Statements + 8/9 +
+ + +
+ 50% + Branches + 1/2 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 87.5% + Lines + 7/8 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +1822x +22x +22x +  +22x +  +  +  +  +  +  +22x +12x +  +  +  +22x + 
import fallback from './fallback.js'
+import id from './identifier.js'
+import raw from './raw.js'
+import type S from './sanitised.js'
+import tsql from './template.js'
+ 
+/**
+ * @internal
+ * @param op_ can leak unsanitised string if misused, hence internal.
+ */
+export const op =
+  (l: S | string, op_: S | string, r: unknown): undefined | S =>
+    typeof r === 'undefined' ?
+      undefined :
+      tsql`${fallback(l, id)} ${fallback(op_, raw)} ${r}`
+ 
+export default op
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/or.ts.html b/coverage/lcov-report/src/or.ts.html new file mode 100644 index 0000000..053150a --- /dev/null +++ b/coverage/lcov-report/src/or.ts.html @@ -0,0 +1,100 @@ + + + + + + Code coverage report for src/or.ts + + + + + + + + + +
+
+

All files / src or.ts

+
+ +
+ 75% + Statements + 3/4 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 66.66% + Lines + 2/3 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +622x +  +  +  +22x + 
import { or } from './where.js'
+ 
+export { or }
+ 
+export default or
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/order-by.ts.html b/coverage/lcov-report/src/order-by.ts.html new file mode 100644 index 0000000..c90092b --- /dev/null +++ b/coverage/lcov-report/src/order-by.ts.html @@ -0,0 +1,112 @@ + + + + + + Code coverage report for src/order-by.ts + + + + + + + + + +
+
+

All files / src order-by.ts

+
+ +
+ 100% + Statements + 8/8 +
+ + +
+ 100% + Branches + 2/2 +
+ + +
+ 100% + Functions + 2/2 +
+ + +
+ 100% + Lines + 6/6 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +1022x +22x +22x +  +  +22x +4x +  +22x + 
import id, { type Identifier } from './identifier.js'
+import list from './list.js'
+import raw from './raw.js'
+ 
+const orderBy =
+  (terms: [identifier: undefined | Identifier, direction: 'asc' | 'desc'][]) =>
+    list(terms.map(_ => _?.[0] != null ? raw(`${id(_[0])} ${_[1]}`) : undefined))
+ 
+export default orderBy
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/pick.ts.html b/coverage/lcov-report/src/pick.ts.html new file mode 100644 index 0000000..5ab3419 --- /dev/null +++ b/coverage/lcov-report/src/pick.ts.html @@ -0,0 +1,127 @@ + + + + + + Code coverage report for src/pick.ts + + + + + + + + + +
+
+

All files / src pick.ts

+
+ +
+ 25% + Statements + 2/8 +
+ + +
+ 0% + Branches + 0/2 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 28.57% + Lines + 2/7 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15  +  +  +22x +  +  +  +  +  +  +  +  +  +22x + 
 
+/** @returns an object with picked keys; `null` is used when value is not defined. */
+export const pick =
+  (object: Record<string, unknown>, keys: string[]): Record<string, unknown> => {
+    const result: Record<string, unknown> = {}
+    for (const key of keys) {
+      result[key] = typeof object[key] === 'undefined' ?
+        null :
+        object[key]
+    }
+    return result
+  }
+ 
+export default pick
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/quoted-nstring.ts.html b/coverage/lcov-report/src/quoted-nstring.ts.html new file mode 100644 index 0000000..a3b9b02 --- /dev/null +++ b/coverage/lcov-report/src/quoted-nstring.ts.html @@ -0,0 +1,184 @@ + + + + + + Code coverage report for src/quoted-nstring.ts + + + + + + + + + +
+
+

All files / src quoted-nstring.ts

+
+ +
+ 88.88% + Statements + 16/18 +
+ + +
+ 60% + Branches + 3/5 +
+ + +
+ 100% + Functions + 4/4 +
+ + +
+ 88.23% + Lines + 15/17 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34  +  +22x +  +  +22x +4267x +  +  +22x +4265x +4263x +  +2x +  +  +  +22x +4264x +4263x +  +1x +  +  +  +22x +4264x +  +  +4264x +  +  +4264x + 
/* eslint-disable @typescript-eslint/ban-types */
+ 
+import isString from './is-string.js'
+ 
+const quoted =
+  (value: string | String): string =>
+    'N\'' + (value.indexOf('\'') !== -1 ? value.replace(/'/g, '\'\'') : value) + '\''
+ 
+const quotedLf =
+  (value: string | String): string => {
+    if (value.indexOf('\n') === -1) {
+      return quoted(value)
+    }
+    return 'concat_ws(nchar(10), ' + value.split('\n').map(quoted).join(', ') + ')'
+  }
+ 
+const quotedCrLf =
+  (value: string | String): string => {
+    if (value.indexOf('\r\n') === -1) {
+      return quotedLf(value)
+    }
+    return 'concat_ws(nchar(13) + nchar(10), ' + value.split('\r\n').map(quotedLf).join(', ') + ')'
+  }
+ 
+export const quotedNstring =
+  (value: string | String): string => {
+    Iif (!isString(value)) {
+      throw new TypeError(`Expected string while trying to quote, got ${value}.`)
+    }
+    return quotedCrLf(value)
+  }
+ 
+export default quotedNstring
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/random-identifier.ts.html b/coverage/lcov-report/src/random-identifier.ts.html new file mode 100644 index 0000000..d31f397 --- /dev/null +++ b/coverage/lcov-report/src/random-identifier.ts.html @@ -0,0 +1,133 @@ + + + + + + Code coverage report for src/random-identifier.ts + + + + + + + + + +
+
+

All files / src random-identifier.ts

+
+ +
+ 100% + Statements + 10/10 +
+ + +
+ 0% + Branches + 0/2 +
+ + +
+ 100% + Functions + 3/3 +
+ + +
+ 100% + Lines + 8/8 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +1722x +  +  +22x +  +  +22x +32x +32x +  +  +  +22x +32x +  +22x + 
import identifier from './identifier.js'
+import type Sid from './sanitised-identifier.js'
+ 
+const alphabet = 'abcdefghijklmnopqrstuvwxyABCDEFGHIJKLMNOPQRSTUVWXYZ'
+ 
+const randomLetter =
+  (): string => {
+    const index = Math.min(alphabet.length - 1, Math.floor(Math.random() * alphabet.length))
+    return alphabet[index]
+  }
+ 
+const randomIdentifier =
+  (prefix = '', length = 32): Sid =>
+    identifier([ prefix, Array.from(Array(length), () => randomLetter()).join('') ].join(''))
+ 
+export default randomIdentifier
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/raw.ts.html b/coverage/lcov-report/src/raw.ts.html new file mode 100644 index 0000000..272266a --- /dev/null +++ b/coverage/lcov-report/src/raw.ts.html @@ -0,0 +1,109 @@ + + + + + + Code coverage report for src/raw.ts + + + + + + + + + +
+
+

All files / src raw.ts

+
+ +
+ 83.33% + Statements + 5/6 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 80% + Lines + 4/5 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +922x +  +  +  +22x +9282x +  +9282x + 
import S from './sanitised.js'
+ 
+/** @returns force `x` string to be sanitised; no sanitation of any kind is performed. */
+export const raw =
+  (x: string): S =>
+    new S(x)
+ 
+export default raw
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/replace-objects.ts.html b/coverage/lcov-report/src/replace-objects.ts.html new file mode 100644 index 0000000..2171c26 --- /dev/null +++ b/coverage/lcov-report/src/replace-objects.ts.html @@ -0,0 +1,271 @@ + + + + + + Code coverage report for src/replace-objects.ts + + + + + + + + + +
+
+

All files / src replace-objects.ts

+
+ +
+ 45.16% + Statements + 14/31 +
+ + +
+ 0% + Branches + 0/9 +
+ + +
+ 0% + Functions + 0/5 +
+ + +
+ 53.84% + Lines + 14/26 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +6322x +22x +22x +22x +22x +22x +22x +22x +22x +22x +  +  +  +  +22x +22x +  +  +  +22x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +22x + 
import and from './and.js'
+import assign from './assign.js'
+import eq from './eq.js'
+import id from './identifier.js'
+import inlineTableOfObjects from './inline-table-of-objects.js'
+import keysOfObjects from './keys-of-objects.js'
+import limitedHintsIdentifier from './limited-hints-identifier.js'
+import list from './list.js'
+import row from './row.js'
+import tsql from './template.js'
+import type { TableHintLimited } from './table-hint-limited.js'
+import type S from './sanitised.js'
+import type Sid from './sanitised-identifier.js'
+ 
+const sourcePrefixed = (_: string): Sid => id([ 'Source', _ ])
+const targetPrefixed = (_: string): Sid => id([ 'Target', _ ])
+ 
+/** @returns merge dml that replaces target table with inlined source table. */
+export const replaceObjects =
+  (
+    table: string | Sid,
+    onKeys: string[],
+    objects: readonly Record<string, unknown>[],
+    maybeObjectKeys?: string[],
+    maybeUpdateKeys?: string[],
+    maybeInsertKeys?: string[],
+    { hints }: {
+      hints?: TableHintLimited[]
+    } = {}
+  ): S => {
+ 
+    Iif (!Array.isArray(objects)) {
+      throw new TypeError(`Expected array of values, got ${objects}.`)
+    }
+ 
+    const table_ = limitedHintsIdentifier(table, hints)
+ 
+    Iif (objects.length === 0) {
+      return tsql`delete from ${table_};`
+    }
+ 
+    const objectKeys = maybeObjectKeys || keysOfObjects(objects)
+    const updateKeys = maybeUpdateKeys || objectKeys
+    const insertKeys = maybeInsertKeys || objectKeys
+    const update_ = list(updateKeys.map(_ => assign(_, sourcePrefixed(_))))
+    const on_ = and(...onKeys.map(_ => eq(sourcePrefixed(_), targetPrefixed(_))))
+ 
+    return tsql`
+      merge ${table_} as Target
+      using ${inlineTableOfObjects('Source', objects, objectKeys)}
+      on ${on_}
+      when not matched by source then
+        delete
+      when matched then
+        update set ${update_}
+      when not matched by target then
+        insert ${row(insertKeys.map(id))}
+        values ${row(insertKeys.map(sourcePrefixed))};
+    `
+  }
+ 
+export default replaceObjects
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/row.ts.html b/coverage/lcov-report/src/row.ts.html new file mode 100644 index 0000000..1241a18 --- /dev/null +++ b/coverage/lcov-report/src/row.ts.html @@ -0,0 +1,118 @@ + + + + + + Code coverage report for src/row.ts + + + + + + + + + +
+
+

All files / src row.ts

+
+ +
+ 87.5% + Statements + 7/8 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 85.71% + Lines + 6/7 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +1222x +22x +22x +  +  +  +  +22x +4191x +  +4191x + 
import auto from './auto.js'
+import list from './list.js'
+import raw from './raw.js'
+import type S from './sanitised.js'
+ 
+/** @returns sanitised */
+export const row =
+  <T>(xs: T[], f: (_: T) => S = auto): S =>
+    raw('(' + String(list(xs, f)) + ')')
+ 
+export default row
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/rowset.ts.html b/coverage/lcov-report/src/rowset.ts.html new file mode 100644 index 0000000..ddc72e4 --- /dev/null +++ b/coverage/lcov-report/src/rowset.ts.html @@ -0,0 +1,121 @@ + + + + + + Code coverage report for src/rowset.ts + + + + + + + + + +
+
+

All files / src rowset.ts

+
+ +
+ 37.5% + Statements + 3/8 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 42.85% + Lines + 3/7 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +1322x +  +  +  +22x +  +  +  +  +  +  +22x + 
import row from './row.js'
+import type S from './sanitised.js'
+ 
+export const rowset =
+  <T>(values: T[][]): S => {
+    Iif (!Array.isArray(values)) {
+      throw new TypeError(`Expected array, got ${values}.`)
+    }
+    return row(values, row)
+  }
+ 
+export default rowset
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/sanitised-identifier.ts.html b/coverage/lcov-report/src/sanitised-identifier.ts.html new file mode 100644 index 0000000..636b8b6 --- /dev/null +++ b/coverage/lcov-report/src/sanitised-identifier.ts.html @@ -0,0 +1,115 @@ + + + + + + Code coverage report for src/sanitised-identifier.ts + + + + + + + + + +
+
+

All files / src sanitised-identifier.ts

+
+ +
+ 80% + Statements + 4/5 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 75% + Lines + 3/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +1122x +  +22x +  +  +  +  +  +  +970x + 
import S from './sanitised.js'
+ 
+const tag = Symbol()
+ 
+export class SanitisedIdentifier extends S {
+  // @ts-expect-error This tag ensures the class is not forgeable
+  private readonly [tag]: 'SanitisedIdentifier'
+}
+ 
+export default SanitisedIdentifier
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/sanitised.ts.html b/coverage/lcov-report/src/sanitised.ts.html new file mode 100644 index 0000000..82313c6 --- /dev/null +++ b/coverage/lcov-report/src/sanitised.ts.html @@ -0,0 +1,109 @@ + + + + + + Code coverage report for src/sanitised.ts + + + + + + + + + +
+
+

All files / src sanitised.ts

+
+ +
+ 75% + Statements + 3/4 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 66.66% + Lines + 2/3 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +922x +  +  +  +  +  +  +31625x + 
const tag = Symbol()
+ 
+export class Sanitised extends String {
+  // @ts-expect-error This tag ensures the class is not forgeable
+  private readonly [tag]: 'Sanitised'
+}
+ 
+export default Sanitised
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/select.ts.html b/coverage/lcov-report/src/select.ts.html new file mode 100644 index 0000000..99793bb --- /dev/null +++ b/coverage/lcov-report/src/select.ts.html @@ -0,0 +1,166 @@ + + + + + + Code coverage report for src/select.ts + + + + + + + + + +
+
+

All files / src select.ts

+
+ +
+ 45% + Statements + 9/20 +
+ + +
+ 0% + Branches + 0/8 +
+ + +
+ 0% + Functions + 0/4 +
+ + +
+ 52.94% + Lines + 9/17 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +2822x +22x +22x +22x +22x +  +22x +  +  +22x +  +  +  +22x +  +  +  +  +  +  +  +  +  +  +  +  +22x + 
import fallback from './fallback.js'
+import id from './identifier.js'
+import line from './line.js'
+import list from './list.js'
+import S from './sanitised.js'
+import type Sid from './sanitised-identifier.js'
+import tsql from './template.js'
+ 
+export const ids =
+  (xs: (S | string)[]): S[] =>
+    xs.map(_ => _ instanceof S ? _ : id(_))
+ 
+export const select =
+  (what: S | (S | string)[], { from, where }: { from?: Sid | string, where?: unknown } = {}): S => {
+    const what_ = fallback(what, _ => list(ids(_)))
+    Iif (typeof what_ === 'undefined') {
+      throw new Error('Empty projection.')
+    }
+    const from_ = from != null ? id(from) : undefined
+    return line(
+      tsql`select ${what_}`,
+      tsql`from ${from_}`,
+      where != null ? tsql`where ${where}` : undefined
+    )
+  }
+ 
+export default select
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/star.ts.html b/coverage/lcov-report/src/star.ts.html new file mode 100644 index 0000000..45a4034 --- /dev/null +++ b/coverage/lcov-report/src/star.ts.html @@ -0,0 +1,121 @@ + + + + + + Code coverage report for src/star.ts + + + + + + + + + +
+
+

All files / src star.ts

+
+ +
+ 57.14% + Statements + 4/7 +
+ + +
+ 0% + Branches + 0/2 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 66.66% + Lines + 4/6 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +1322x +  +  +22x +  +  +22x +  +  +  +  +22x + 
import id from './identifier.js'
+import type S from './sanitised.js'
+import type Sid from './sanitised-identifier.js'
+import tsql from './template.js'
+ 
+export const star =
+  (table?: Sid | string): S =>
+    table != null ?
+      tsql`${id(table)}.*` :
+      tsql`*`
+ 
+export default star
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/table-hint-limited.ts.html b/coverage/lcov-report/src/table-hint-limited.ts.html new file mode 100644 index 0000000..311cb3e --- /dev/null +++ b/coverage/lcov-report/src/table-hint-limited.ts.html @@ -0,0 +1,250 @@ + + + + + + Code coverage report for src/table-hint-limited.ts + + + + + + + + + +
+
+

All files / src table-hint-limited.ts

+
+ +
+ 75% + Statements + 6/8 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 85.71% + Lines + 6/7 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +5622x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +22x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +18x +22x +18x +  +  +18x +  + 
import raw from './raw.js'
+import type S from './sanitised.js'
+ 
+export type TableHintLimited =
+  | 'keepidentity'
+  | 'keepdefaults'
+  | 'holdlock'
+  | 'ignore_constraints'
+  | 'ignore_triggers'
+  | 'nolock'
+  | 'nowait'
+  | 'paglock'
+  | 'readcommitted'
+  | 'readcommittedlock'
+  | 'readpast'
+  | 'repeatableread'
+  | 'rowlock'
+  | 'serializable'
+  | 'snapshot'
+  | 'tablock'
+  | 'tablockx'
+  | 'updlock'
+  | 'xlock'
+ 
+export type t = TableHintLimited
+ 
+export const values = new Set<TableHintLimited>([
+  'keepidentity',
+  'keepdefaults',
+  'holdlock',
+  'ignore_constraints',
+  'ignore_triggers',
+  'nolock',
+  'nowait',
+  'paglock',
+  'readcommitted',
+  'readcommittedlock',
+  'readpast',
+  'repeatableread',
+  'rowlock',
+  'serializable',
+  'snapshot',
+  'tablock',
+  'tablockx',
+  'updlock',
+  'xlock'
+])
+ 
+export const sanitized =
+  (value: string): S => {
+    Iif (!(values as Set<string>).has(value)) {
+      throw new TypeError(`Expected limited table hint, got ${value}.`)
+    }
+    return raw(value)
+  }
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/template.ts.html b/coverage/lcov-report/src/template.ts.html new file mode 100644 index 0000000..8b2d624 --- /dev/null +++ b/coverage/lcov-report/src/template.ts.html @@ -0,0 +1,118 @@ + + + + + + Code coverage report for src/template.ts + + + + + + + + + +
+
+

All files / src template.ts

+
+ +
+ 88.88% + Statements + 8/9 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 87.5% + Lines + 7/8 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +1222x +22x +22x +22x +  +  +  +22x +406x +  +406x + 
import auto from './auto.js'
+import demargin from './demargin.js'
+import interpolate from './interpolate.js'
+import raw from './raw.js'
+import type S from './sanitised.js'
+ 
+export const template =
+  (ts: TemplateStringsArray, ...vs: unknown[]): S =>
+    raw(demargin(interpolate(ts, vs.map(auto)).join('')))
+ 
+export default template
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/test/client.ts.html b/coverage/lcov-report/src/test/client.ts.html new file mode 100644 index 0000000..5641701 --- /dev/null +++ b/coverage/lcov-report/src/test/client.ts.html @@ -0,0 +1,514 @@ + + + + + + Code coverage report for src/test/client.ts + + + + + + + + + +
+
+

All files / src/test client.ts

+
+ +
+ 84.44% + Statements + 38/45 +
+ + +
+ 64.28% + Branches + 9/14 +
+ + +
+ 91.66% + Functions + 22/24 +
+ + +
+ 84.09% + Lines + 37/44 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +1442x +2x +2x +  +2x +  +  +  +  +  +  +  +  +  +  +  +  +4x +  +  +  +  +  +  +  +  +  +  +  +  +  +2x +2x +2x +  +  +  +  +  +  +  +  +  +2x +2x +2x +  +  +  +4x +4x +4x +  +  +  +  +  +4x +  +  +  +69x +69x +  +  +  +69x +69x +69x +  +  +69x +50x +95x +  +  +69x +  +69x +  +  +  +  +25x +  +  +  +11x +  +  +  +10x +10x +  +  +  +9x +  +  +  +13x +  +  +  +2x +  +  +  +10x +  +  +  +7x +  +  +  +7x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +4x +  +  +  +  +  +  +1x +  +  +  + 
import { Connection, Request } from 'tedious'
+import * as Tsql from '../index.js'
+import randomIdentifier from '../random-identifier.js'
+ 
+export default class Client {
+ 
+  connection: Connection
+ 
+  constructor({
+    database = 'test',
+    userName = 'sa',
+    password = 'yourStrong(!)Password'
+  }: {
+    database?: string,
+    userName?: string,
+    password?: string
+  } = {}) {
+    this.connection = new Connection({
+      server: process.env.MSSQL_HOST ?? 'localhost',
+      options: {
+        database,
+        trustServerCertificate: true,
+        rowCollectionOnDone: true,
+        rowCollectionOnRequestCompletion: true,
+        useColumnNames: true
+      },
+      authentication: { type: 'default', options: { userName, password } }
+    })
+  }
+ 
+  static async createDatabase(database: string) {
+    const sql = await new Client({ database: 'master' }).connect()
+    await sql.rows`create database ${Tsql.id(database)}`
+    sql.close()
+  }
+ 
+  static async dropDatabase(database: string) {
+    const sql = await new Client({ database: 'master' }).connect()
+    await sql.rows`drop database ${Tsql.id(database)}`
+    sql.close()
+  }
+ 
+  static async random() {
+    const database = randomIdentifier('test_', 16).toString()
+    await this.createDatabase(database)
+    return new Client({ database }).connect()
+  }
+ 
+  async connect(): Promise<this> {
+    return new Promise((resolve, reject) => {
+      this.connection.connect((err: unknown) => {
+        err != null ? reject(err) : resolve(this)
+      })
+    })
+  }
+ 
+  close() {
+    this.connection.close()
+  }
+ 
+  async query<T>(sql: undefined | Tsql.S): Promise<undefined | (T[])> {
+    return new Promise((resolve, reject) => {
+      Iif (typeof sql === 'undefined') {
+        resolve(undefined)
+        return
+      }
+      const sqlString = sql.toString()
+      const request = new Request(sqlString, (err, _rowCount, rows) => {
+        Iif (err != null) {
+          reject(new Error(err.message + `; ${sqlString}`))
+        }
+        for (const row of rows) {
+          for (const key in row) {
+            row[key] = row[key].value
+          }
+        }
+        resolve(rows)
+      })
+      this.connection.execSql(request)
+    })
+  }
+ 
+  async rows<T>(tsa: TemplateStringsArray, ...rest: unknown[]) {
+    return this.query<T>(Tsql.template(tsa, ...rest))
+  }
+ 
+  async row<T>(tsa: TemplateStringsArray, ...rest: unknown[]) {
+    return this.rows<T>(tsa, ...rest).then(_ => _?.[0])
+  }
+ 
+  async value<T>(tsa: TemplateStringsArray, ...rest: unknown[]) {
+    const row = await this.row<Record<string, T>>(tsa, ...rest)
+    return row?.[Object.keys(row)[0]]
+  }
+ 
+  async count(table: Tsql.Sid | string, where: Tsql.Where = Tsql.logicalTrue) {
+    return this.value`select count(*) from ${Tsql.id(table)} where ${Tsql.where(where)}`
+  }
+ 
+  async delete(table: Tsql.Sid | string, where: Tsql.Where = Tsql.logicalTrue) {
+    await this.query(Tsql.delete(table, where))
+  }
+ 
+  async dropTable(table: Tsql.Sid | string) {
+    await this.query(Tsql.template`drop table ${Tsql.id(table)};`)
+  }
+ 
+  async insertIgnore(...args: Parameters<typeof Tsql['insertIgnore']>) {
+    return this.query(Tsql.insertIgnore(...args))
+  }
+ 
+  async insertObject(table: Tsql.Sid | string, object: Record<string, unknown>, output?: Tsql.S) {
+    return this.query(Tsql.insertObject(table, object, output))
+  }
+ 
+  async insertObjects(table: Tsql.Sid | string, objects: Record<string, unknown>[], maybeKeys?: string[]) {
+    return this.query(Tsql.insertObjects(table, objects, maybeKeys))
+  }
+ 
+  async update(table: Tsql.Sid | string, where: Tsql.Where, object: Record<string, unknown>) {
+    return this.query(Tsql.update(table, where, object))
+  }
+ 
+  async merge1n(
+    table: Tsql.Sid | string,
+    [ lcolumn, rcolumn ]: [ Tsql.Sid | string, Tsql.Sid | string ],
+    lid: unknown,
+    values: unknown[],
+    { hints = [ 'serializable' ] }: {
+      hints?: Tsql.TableHintLimited.t[]
+    } = {}
+  ) {
+    return this.query(Tsql.merge1n(table, [ lcolumn, rcolumn ], lid, values, { hints }))
+  }
+ 
+  async modifyJsons(
+    table: Tsql.Sid | string,
+    entries: readonly Record<string, unknown>[]
+  ) {
+    return this.query(Tsql.modifyJsons(table, entries))
+  }
+ 
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/test/index.html b/coverage/lcov-report/src/test/index.html new file mode 100644 index 0000000..a39fed7 --- /dev/null +++ b/coverage/lcov-report/src/test/index.html @@ -0,0 +1,116 @@ + + + + + + Code coverage report for src/test + + + + + + + + + +
+
+

All files src/test

+
+ +
+ 84.44% + Statements + 38/45 +
+ + +
+ 64.28% + Branches + 9/14 +
+ + +
+ 91.66% + Functions + 22/24 +
+ + +
+ 84.09% + Lines + 37/44 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
client.ts +
+
84.44%38/4564.28%9/1491.66%22/2484.09%37/44
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/top.ts.html b/coverage/lcov-report/src/top.ts.html new file mode 100644 index 0000000..c6ce188 --- /dev/null +++ b/coverage/lcov-report/src/top.ts.html @@ -0,0 +1,175 @@ + + + + + + Code coverage report for src/top.ts + + + + + + + + + +
+
+

All files / src top.ts

+
+ +
+ 50% + Statements + 6/12 +
+ + +
+ 0% + Branches + 0/6 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 54.54% + Lines + 6/11 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +3122x +22x +22x +22x +  +  +  +  +  +  +  +  +  +  +22x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +22x + 
import auto from './auto.js'
+import line from './line.js'
+import number from './number.js'
+import raw from './raw.js'
+import type S from './sanitised.js'
+ 
+/**
+ * @returns top expression.
+ * @example top(1, raw('with ties'))
+ * @example top(1, star)
+ * @example top(0.1, star) // value in <0,1> range returns percent, ie. `top 10 percent`.
+ * @example top(1, ids('foo', 'bar', 'baz'))
+ */
+export const top =
+  (x = 1, ...rest: S[]): S => {
+    Iif (x <= 0) {
+      throw new TypeError(`Expected positive value in top, got ${x}.`)
+    }
+    const [ x_, percent ] = x < 1 ?
+      [ Math.round(x * 100), true ] :
+      [ Math.round(x), false ]
+    return line(
+      raw('top'),
+      number(x_),
+      percent ? raw('percent') : undefined,
+      ...rest.map(auto)
+    )
+  }
+ 
+export default top
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/true-value.ts.html b/coverage/lcov-report/src/true-value.ts.html new file mode 100644 index 0000000..f727f23 --- /dev/null +++ b/coverage/lcov-report/src/true-value.ts.html @@ -0,0 +1,133 @@ + + + + + + Code coverage report for src/true-value.ts + + + + + + + + + +
+
+

All files / src true-value.ts

+
+ +
+ 80% + Statements + 4/5 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 75% + Lines + 3/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17  +22x +  +  +  +  +  +  +  +  +  +  +  +22x +  +22x + 
import type S from './sanitised.js'
+import raw from './raw.js'
+ 
+/**
+ * Value boolean true – 1 casted as BIT.
+ *
+ * Logical booleans can be used in condition expressions, ie. WHERE clause.
+ *
+ * Value booleans can be used in assignment statements, ie. UPDATE SET clause.
+ *
+ * @see trueValue for value boolean variant.
+ */
+export const trueValue: S =
+  raw('cast(1 as bit)')
+ 
+export default trueValue
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/unique.ts.html b/coverage/lcov-report/src/unique.ts.html new file mode 100644 index 0000000..a5041f9 --- /dev/null +++ b/coverage/lcov-report/src/unique.ts.html @@ -0,0 +1,136 @@ + + + + + + Code coverage report for src/unique.ts + + + + + + + + + +
+
+

All files / src unique.ts

+
+ +
+ 90.9% + Statements + 10/11 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 90% + Lines + 9/10 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18  +  +  +  +78x +78x +78x +108x +108x +105x +105x +  +  +78x +  +  +78x + 
import S from './sanitised.js'
+ 
+/** @returns deduplicated values. */
+export function unique(values: S[]): S[] {
+  const set = new Set<string>
+  const result: S[] = []
+  for (const value of values) {
+    const stringValue = value.toString()
+    if (!set.has(stringValue)) {
+      set.add(stringValue)
+      result.push(value)
+    }
+  }
+  return result
+}
+ 
+export default unique
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/unix.ts.html b/coverage/lcov-report/src/unix.ts.html new file mode 100644 index 0000000..00c9a3d --- /dev/null +++ b/coverage/lcov-report/src/unix.ts.html @@ -0,0 +1,103 @@ + + + + + + Code coverage report for src/unix.ts + + + + + + + + + +
+
+

All files / src unix.ts

+
+ +
+ 75% + Statements + 3/4 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 3/3 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +722x +  +  +22x +  +22x + 
import tsql from './template.js'
+ 
+const unix =
+  tsql`datediff(s, '1970-01-01 00:00:00', getutcdate())`
+ 
+export default unix
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/update-objects.ts.html b/coverage/lcov-report/src/update-objects.ts.html new file mode 100644 index 0000000..d4c2a76 --- /dev/null +++ b/coverage/lcov-report/src/update-objects.ts.html @@ -0,0 +1,259 @@ + + + + + + Code coverage report for src/update-objects.ts + + + + + + + + + +
+
+

All files / src update-objects.ts

+
+ +
+ 41.93% + Statements + 13/31 +
+ + +
+ 0% + Branches + 0/8 +
+ + +
+ 0% + Functions + 0/5 +
+ + +
+ 46.42% + Lines + 13/28 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +5922x +22x +22x +22x +22x +22x +22x +22x +22x +  +  +  +  +  +22x +  +  +  +22x +  +  +  +  +22x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +22x + 
import and from './and.js'
+import assign from './assign.js'
+import eq from './eq.js'
+import id from './identifier.js'
+import inlineTableOfObjects from './inline-table-of-objects.js'
+import keysOfObjects from './keys-of-objects.js'
+import limitedHintsIdentifier from './limited-hints-identifier.js'
+import list from './list.js'
+import tsql from './template.js'
+import type { TableHintLimited } from './table-hint-limited.js'
+import type S from './sanitised.js'
+import type Sid from './sanitised-identifier.js'
+ 
+export const sourcePrefixed =
+  (_: Sid | string): Sid =>
+    id([ 'Source', _ ])
+ 
+export const targetPrefixed =
+  (_: Sid | string): Sid =>
+    id([ 'Target', _ ])
+ 
+/** @returns update dml that runs update operations on target table from the result of a join with source table. */
+export const updateObjects =
+  (
+    table: Sid | string,
+    onKeys: string[],
+    objects: Record<string, unknown>[],
+    maybeObjectKeys?: string[],
+    maybeUpdateKeys?: string[],
+    { hints = [ 'repeatableread' ] }: {
+      hints?: TableHintLimited[]
+    } = {}
+  ): S => {
+ 
+    Iif (!Array.isArray(objects)) {
+      throw new TypeError(`Expected array of values, got ${objects}.`)
+    }
+ 
+    Iif (objects.length === 0) {
+      return tsql`select 0;`
+    }
+ 
+    const table_ = limitedHintsIdentifier(table, hints)
+    const objectKeys = maybeObjectKeys || keysOfObjects(objects)
+    const updateKeys = maybeUpdateKeys || objectKeys
+    const update_ = list(updateKeys.map(_ => assign(_, sourcePrefixed(_))))
+    const on_ = and(...onKeys.map(_ => eq(sourcePrefixed(_), targetPrefixed(_))))
+ 
+    return tsql`
+      merge ${table_} as Target
+      using ${inlineTableOfObjects('Source', objects, objectKeys)}
+      on ${on_}
+      when matched then
+        update set ${update_};
+    `
+  }
+ 
+export default updateObjects
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/update.ts.html b/coverage/lcov-report/src/update.ts.html new file mode 100644 index 0000000..f892fa6 --- /dev/null +++ b/coverage/lcov-report/src/update.ts.html @@ -0,0 +1,199 @@ + + + + + + Code coverage report for src/update.ts + + + + + + + + + +
+
+

All files / src update.ts

+
+ +
+ 94.44% + Statements + 17/18 +
+ + +
+ 83.33% + Branches + 5/6 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 94.11% + Lines + 16/17 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +3922x +22x +22x +22x +22x +  +  +  +22x +  +  +  +22x +  +  +  +  +  +  +  +6x +1x +  +5x +5x +5x +5x +1x +  +4x +  +  +  +  +  +  +  +22x + 
import assignObject from './assign-object.js'
+import fallback from './fallback.js'
+import limitedHintsIdentifier from './limited-hints-identifier.js'
+import logicalTrue from './logical-true.js'
+import tsql from './template.js'
+import type { TableHintLimited } from './table-hint-limited.js'
+import type S from './sanitised.js'
+import type Sid from './sanitised-identifier.js'
+import whereOf from './where.js'
+ 
+/** @returns UPDATE DML. */
+export const update =
+  (
+    table: Sid | string,
+    where: S | Record<string, unknown>,
+    object: Record<string, unknown>,
+    { hints = [ 'repeatableread' ] }: {
+      hints?: TableHintLimited[]
+    } = {}
+  ): undefined | S => {
+    if (Object.keys(object).length === 0) {
+      return
+    }
+    const table_ = limitedHintsIdentifier(table, hints)
+    const where_ = fallback(where, whereOf) ?? logicalTrue
+    const object_ = assignObject(object)
+    if (typeof object_ === 'undefined') {
+      return
+    }
+    return tsql`
+      update ${table_}
+      set
+        ${object_}
+      where ${where_}
+    `
+  }
+ 
+export default update
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/upsert-objects.ts.html b/coverage/lcov-report/src/upsert-objects.ts.html new file mode 100644 index 0000000..97a338d --- /dev/null +++ b/coverage/lcov-report/src/upsert-objects.ts.html @@ -0,0 +1,295 @@ + + + + + + Code coverage report for src/upsert-objects.ts + + + + + + + + + +
+
+

All files / src upsert-objects.ts

+
+ +
+ 42.42% + Statements + 14/33 +
+ + +
+ 0% + Branches + 0/10 +
+ + +
+ 0% + Functions + 0/5 +
+ + +
+ 46.66% + Lines + 14/30 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +7122x +22x +22x +22x +22x +22x +22x +22x +22x +22x +  +  +  +  +  +22x +  +  +  +22x +  +  +  +  +  +  +  +  +  +  +22x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +22x + 
import and from './and.js'
+import assign from './assign.js'
+import eq from './eq.js'
+import id from './identifier.js'
+import inlineTableOfObjects from './inline-table-of-objects.js'
+import keysOfObjects from './keys-of-objects.js'
+import limitedHintsIdentifier from './limited-hints-identifier.js'
+import list from './list.js'
+import row from './row.js'
+import tsql from './template.js'
+import type { TableHintLimited } from './table-hint-limited.js'
+import type S from './sanitised.js'
+import type Sid from './sanitised-identifier.js'
+ 
+export const sourcePrefixed =
+  (_: Sid | string): Sid =>
+    id([ 'Source', _ ])
+ 
+export const targetPrefixed =
+  (_: Sid | string): Sid =>
+    id([ 'Target', _ ])
+ 
+/**
+ * @returns MERGE DML.
+ *
+ * Updates existing rows.
+ *
+ * Inserts unmatched rows.
+ */
+export const upsertObjects =
+  (
+    table: Sid | string,
+    onKeys: string[],
+    objects: Record<string, unknown>[],
+    maybeObjectKeys?: string[],
+    maybeUpdateKeys?: string[],
+    maybeInsertKeys?: string[],
+    { hints = [ 'serializable' ] }: {
+      hints?: TableHintLimited[]
+    } = {}
+  ): S => {
+ 
+    Iif (!Array.isArray(objects)) {
+      throw new TypeError(`Expected array of values, got ${objects}.`)
+    }
+ 
+    Iif (objects.length === 0) {
+      return tsql`select 0;`
+    }
+ 
+    const table_ = limitedHintsIdentifier(table, hints)
+    const objectKeys = maybeObjectKeys || keysOfObjects(objects)
+    const updateKeys = maybeUpdateKeys || objectKeys
+    const insertKeys = maybeInsertKeys || objectKeys
+    const update_ = list(updateKeys.map(_ => assign(_, sourcePrefixed(_))))
+    const on_ = and(...onKeys.map(_ => eq(sourcePrefixed(_), targetPrefixed(_))))
+ 
+    return tsql`
+      merge ${table_} as Target
+      using ${inlineTableOfObjects('Source', objects, objectKeys)}
+      on ${on_}
+      when matched then
+        update set ${update_}
+      when not matched by target then
+        insert ${row(insertKeys.map(id))}
+        values ${row(insertKeys.map(sourcePrefixed))};
+    `
+  }
+ 
+export default upsertObjects
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/where.ts.html b/coverage/lcov-report/src/where.ts.html new file mode 100644 index 0000000..d711230 --- /dev/null +++ b/coverage/lcov-report/src/where.ts.html @@ -0,0 +1,664 @@ + + + + + + Code coverage report for src/where.ts + + + + + + + + + +
+
+

All files / src where.ts

+
+ +
+ 90.8% + Statements + 79/87 +
+ + +
+ 80% + Branches + 24/30 +
+ + +
+ 100% + Functions + 8/8 +
+ + +
+ 90.58% + Lines + 77/85 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +19422x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +22x +  +  +  +  +  +22x +  +  +  +  +  +22x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +22x +  +  +  +  +  +  +  +  +103x +27x +  +  +76x +80x +74x +74x +  +6x +  +70x +  +  +  +53x +6x +  +47x +47x +17x +17x +  +  +2x +  +  +2x +  +  +2x +  +  +  +2x +  +  +2x +  +  +2x +  +13x +  +  +  +  +  +  +  +  +30x +  +  +  +170x +114x +  +56x +56x +49x +49x +8x +  +  +8x +  +41x +2x +  +  +46x +53x +46x +  +  +  +  +  +  +  +  +  +  +139x +  +  +  +  +  +  +  +  +  +  +  +22x +79x +79x +6x +  +73x +  +  +  +  +  +  +  +  +  +22x +9x +9x +4x +  +5x +  +  +22x +2x +  +  +  +  +42x + 
import { isDefined } from './is-defined.js'
+import { isObject } from './is-object.js'
+import auto from './auto.js'
+import between from './between.js'
+import distinct from './distinct.js'
+import eq from './eq.js'
+import gt from './gt.js'
+import gte from './gte.js'
+import in_ from './in.js'
+import interpolate1 from './interpolate1.js'
+import like from './like.js'
+import logicalFalse from './logical-false.js'
+import logicalTrue from './logical-true.js'
+import lt from './lt.js'
+import lte from './lte.js'
+import ne from './ne.js'
+import ng from './ng.js'
+import nl from './nl.js'
+import notBetween from './not-between.js'
+import notDistinct from './not-distinct.js'
+import notIn from './not-in.js'
+import raw from './raw.js'
+import S from './sanitised.js'
+import template from './template.js'
+import unique from './unique.js'
+ 
+export type Where = S | Record<string, unknown>
+ 
+export type t = Where
+ 
+const unary = {
+  $not: not
+} as const
+ 
+type Unary = typeof unary
+ 
+const binary = {
+  $between: between,
+  $distinct: distinct,
+  $eq: eq,
+  $gt: gt,
+  $gte: gte,
+  $in: in_,
+  $like: like,
+  $lt: lt,
+  $lte: lte,
+  $ne: ne,
+  $ng: ng,
+  $nl: nl,
+  $notBetween: notBetween,
+  $notDistinct: notDistinct,
+  $ndistinct: notDistinct,
+  $notIn: notIn,
+  $nin: notIn
+} as const
+ 
+type Binary = typeof binary
+ 
+const logical = {
+  $and: and,
+  $or: or
+} as const
+ 
+type Logical = typeof logical
+ 
+/** @returns single key in object iff object has single key, `undefined` otherwise. */
+function single(value: unknown): undefined | string {
+  if (!isObject(value)) {
+    return undefined
+  }
+  let result: undefined | string
+  for (const key in value) {
+    if (result === undefined) {
+      result = key
+      continue
+    }
+    return undefined
+  }
+  return result
+}
+ 
+function visitEntry(key: string, value: unknown): undefined | S {
+  if (typeof value === 'function') {
+    return value(key)
+  }
+  const key_ = single(value)
+  if (key_ && key_ in binary) {
+    const value_ = (value as Record<string, unknown>)[key_]
+    switch (key_) {
+      case '$between':
+      case '$notBetween':
+        Iif (value_ == null) {
+          return binary[key_](key, value_)
+        }
+        Iif (!Array.isArray(value_) || value_.length > 2) {
+          throw new TypeError(`Invalid ${key_} parameters.`)
+        }
+        return binary[key_](key, [ value_[0], value_[1] ])
+      case '$in':
+      case '$nin':
+      case '$notIn':
+        Iif (value_ == null) {
+          return binary[key_](key, value_)
+        }
+        Iif (!Array.isArray(value_)) {
+          throw new TypeError(`Invalid ${key_} parameters.`)
+        }
+        return binary[key_](key, value_)
+      default:
+        return binary[key_ as Exclude<keyof Binary,
+          | '$between'
+          | '$notBetween'
+          | '$in'
+          | '$nin'
+          | '$notIn'
+        >](key, value_)
+    }
+  }
+  return eq(key, value)
+}
+ 
+export function visit(value: unknown): S {
+  if (value instanceof S) {
+    return value
+  }
+  const key = single(value)
+  if (key) {
+    const value_ = (value as Record<string, unknown>)[key]
+    if ((key in logical) && Array.isArray(value_)) {
+      Iif (typeof logical[key as keyof Logical] !== 'function') {
+        console.log('ERROR', key, Object.keys(logical), logical[key as keyof Logical], logical)
+      }
+      return logical[key as keyof Logical](...value_.map(visit))
+    }
+    if ((key in unary)) {
+      return unary[key as keyof Unary](visit(value_)) as S
+    }
+  }
+  if (isObject(value)) {
+    const entries = Object.entries(value).map(_ => visitEntry(..._))
+    return and(...entries)
+  }
+  return auto(value)
+}
+ 
+/**
+ * @returns WHERE clause.
+ *
+ * Supports MondoDB-like query.
+ */
+export function where(value: Where): S {
+  return visit(value)
+}
+ 
+/**
+ * @returns terms joined with AND operator.
+ *
+ * `undefined` terms are filtered out.
+ *
+ * An empty list of terms returns logical true (1=1).
+ *
+ * Terms are deduplicated.
+ */
+export function and(...xs: (undefined | Where)[]): S {
+  const xs_ = xs.filter(isDefined)
+  if (xs_.length === 0) {
+    return logicalTrue
+  }
+  return template`(${raw(interpolate1(unique(xs_.map(where)), raw(' and ')).join(''))})`
+}
+ 
+/**
+ * @returns terms joined with OR operator.
+ *
+ * `undefined` terms are filtered out.
+ *
+ * An empty list of terms returns logical false (0=1).
+ */
+export function or(...xs: (undefined | Where)[]): S {
+  const xs_ = xs.filter(isDefined)
+  if (xs_.length === 0) {
+    return logicalFalse
+  }
+  return template`(${raw(interpolate1(unique(xs_.map(where)), raw(' or ')).join(''))})`
+}
+ 
+export function not(rhs: undefined | Where): undefined | S {
+  return isDefined(rhs) ?
+    template`not (${where(rhs)})` :
+    undefined
+}
+ 
+export default where
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov.info b/coverage/lcov.info new file mode 100644 index 0000000..8bd4bc8 --- /dev/null +++ b/coverage/lcov.info @@ -0,0 +1,2725 @@ +TN: +SF:src/and.ts +FNF:0 +FNH:0 +DA:1,22 +DA:3,0 +DA:5,28 +LF:3 +LH:2 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/assign-object.ts +FN:15,assignObject +FNF:1 +FNH:1 +FNDA:10,assignObject +DA:1,22 +DA:2,22 +DA:3,22 +DA:4,22 +DA:5,22 +DA:15,0 +DA:16,10 +DA:17,10 +DA:18,10 +DA:19,22 +DA:20,3 +DA:21,3 +DA:28,3 +DA:30,19 +DA:32,10 +DA:33,1 +DA:38,1 +DA:40,10 +DA:43,22 +LF:19 +LH:18 +BRDA:19,0,0,3 +BRDA:23,1,0,3 +BRDA:23,1,1,1 +BRF:3 +BRH:3 +end_of_record +TN: +SF:src/assign.ts +FN:14,assign +FNF:1 +FNH:1 +FNDA:31,assign +DA:1,22 +DA:2,22 +DA:3,22 +DA:4,22 +DA:14,0 +DA:15,31 +DA:16,9 +DA:18,22 +DA:19,15 +DA:21,7 +DA:22,6 +DA:24,1 +DA:25,1 +DA:28,31 +LF:14 +LH:13 +BRDA:15,0,0,9 +BRDA:18,1,0,15 +BRDA:21,2,0,6 +BRF:3 +BRH:3 +end_of_record +TN: +SF:src/auto.ts +FN:34,(anonymous_4) +FNF:1 +FNH:1 +FNDA:13442,(anonymous_4) +DA:1,22 +DA:2,22 +DA:3,22 +DA:4,22 +DA:5,22 +DA:6,22 +DA:7,22 +DA:8,22 +DA:33,0 +DA:34,22 +DA:35,13442 +DA:36,9096 +DA:38,4346 +DA:39,1 +DA:40,75 +DA:41,9 +DA:42,4246 +DA:44,15 +DA:45,7 +DA:47,8 +DA:48,0 +DA:50,8 +DA:51,0 +DA:53,8 +DA:56,0 +DA:60,8879 +LF:26 +LH:22 +BRDA:35,0,0,9096 +BRDA:38,1,0,1 +BRDA:38,1,1,75 +BRDA:38,1,2,9 +BRDA:38,1,3,4246 +BRDA:38,1,4,15 +BRDA:38,1,5,0 +BRDA:41,2,0,6 +BRDA:41,2,1,3 +BRDA:44,3,0,7 +BRDA:47,4,0,0 +BRDA:50,5,0,0 +BRDA:50,6,0,8 +BRDA:50,6,1,8 +BRF:14 +BRH:11 +end_of_record +TN: +SF:src/between.ts +FN:7,(anonymous_4) +FNF:1 +FNH:1 +FNDA:1,(anonymous_4) +DA:1,22 +DA:2,22 +DA:3,22 +DA:6,0 +DA:7,22 +DA:8,1 +DA:12,22 +LF:7 +LH:6 +BRDA:8,0,0,0 +BRDA:8,0,1,1 +BRDA:8,1,0,1 +BRDA:8,1,1,1 +BRF:4 +BRH:3 +end_of_record +TN: +SF:src/columns.ts +FN:12,(anonymous_4) +FN:19,(anonymous_5) +FNF:2 +FNH:0 +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +DA:1,22 +DA:2,22 +DA:3,22 +DA:11,0 +DA:12,22 +DA:13,0 +DA:14,0 +DA:15,0 +DA:16,0 +DA:19,0 +DA:22,22 +LF:11 +LH:5 +BRDA:12,0,0,0 +BRDA:15,1,0,0 +BRDA:16,2,0,0 +BRDA:16,2,1,0 +BRF:4 +BRH:0 +end_of_record +TN: +SF:src/defined.ts +FN:3,(anonymous_1) +FNF:1 +FNH:1 +FNDA:10,(anonymous_1) +DA:3,22 +DA:4,10 +DA:5,10 +DA:6,24 +DA:9,1 +DA:12,10 +DA:15,22 +LF:7 +LH:7 +BRDA:6,0,0,1 +BRF:1 +BRH:1 +end_of_record +TN: +SF:src/delete.ts +FN:11,(anonymous_4) +FNF:1 +FNH:1 +FNDA:13,(anonymous_4) +DA:1,22 +DA:2,22 +DA:3,22 +DA:6,22 +DA:7,22 +DA:10,0 +DA:11,22 +DA:12,13 +DA:19,22 +LF:9 +LH:8 +BRDA:14,0,0,13 +BRDA:14,0,1,0 +BRF:2 +BRH:1 +end_of_record +TN: +SF:src/demargin.ts +FN:5,(anonymous_4) +FN:10,(anonymous_5) +FN:13,(anonymous_6) +FN:29,(anonymous_7) +FNF:4 +FNH:4 +FNDA:421,(anonymous_4) +FNDA:340,(anonymous_5) +FNDA:683,(anonymous_6) +FNDA:6910,(anonymous_7) +DA:1,22 +DA:4,0 +DA:5,22 +DA:6,421 +DA:7,0 +DA:9,421 +DA:10,421 +DA:11,81 +DA:13,683 +DA:14,66 +DA:16,421 +DA:17,421 +DA:18,6910 +DA:19,65027 +DA:20,6909 +DA:21,6909 +DA:25,421 +DA:26,0 +DA:28,421 +DA:29,6910 +DA:33,421 +LF:21 +LH:18 +BRDA:6,0,0,0 +BRDA:10,1,0,81 +BRDA:10,2,0,421 +BRDA:10,2,1,421 +BRDA:13,3,0,66 +BRDA:13,4,0,421 +BRDA:13,4,1,421 +BRDA:19,5,0,6909 +BRDA:25,6,0,0 +BRF:9 +BRH:7 +end_of_record +TN: +SF:src/distinct.ts +FN:14,(anonymous_4) +FNF:1 +FNH:0 +FNDA:0,(anonymous_4) +DA:1,22 +DA:2,22 +DA:3,22 +DA:13,0 +DA:14,22 +DA:15,0 +DA:16,0 +DA:18,0 +DA:19,0 +DA:22,22 +LF:10 +LH:5 +BRDA:15,0,0,0 +BRDA:15,1,0,0 +BRDA:15,1,1,0 +BRF:3 +BRH:0 +end_of_record +TN: +SF:src/eq.ts +FN:8,(anonymous_4) +FN:23,(anonymous_5) +FNF:2 +FNH:2 +FNDA:53,(anonymous_4) +FNDA:64,(anonymous_5) +DA:1,22 +DA:2,22 +DA:3,22 +DA:4,22 +DA:8,22 +DA:9,53 +DA:22,0 +DA:23,22 +DA:24,64 +DA:28,85 +LF:10 +LH:9 +BRDA:9,0,0,15 +BRDA:9,0,1,38 +BRDA:24,1,0,11 +BRDA:24,1,1,53 +BRF:4 +BRH:4 +end_of_record +TN: +SF:src/exists.ts +FN:10,(anonymous_4) +FNF:1 +FNH:0 +FNDA:0,(anonymous_4) +DA:1,22 +DA:2,22 +DA:5,22 +DA:6,22 +DA:9,0 +DA:10,22 +DA:11,0 +DA:12,0 +DA:13,0 +DA:16,22 +LF:10 +LH:6 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/fallback.ts +FN:6,(anonymous_4) +FNF:1 +FNH:1 +FNDA:105,(anonymous_4) +DA:1,22 +DA:5,0 +DA:6,22 +DA:7,105 +DA:11,105 +LF:5 +LH:4 +BRDA:7,0,0,35 +BRDA:7,0,1,70 +BRF:2 +BRH:2 +end_of_record +TN: +SF:src/false-value.ts +FNF:0 +FNH:0 +DA:2,22 +DA:13,0 +DA:14,22 +DA:16,22 +LF:4 +LH:3 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/gt.ts +FN:10,(anonymous_4) +FNF:1 +FNH:1 +FNDA:5,(anonymous_4) +DA:1,22 +DA:9,0 +DA:10,22 +DA:11,5 +DA:13,24 +LF:5 +LH:4 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/gte.ts +FN:10,(anonymous_4) +FNF:1 +FNH:1 +FNDA:1,(anonymous_4) +DA:1,22 +DA:9,0 +DA:10,22 +DA:11,1 +DA:13,22 +LF:5 +LH:4 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/identifier.ts +FN:11,isPlain +FN:19,quote +FN:40,identifier +FN:57,(anonymous_12) +FN:59,(anonymous_13) +FN:60,(anonymous_14) +FN:66,jsonValue +FN:71,jsonQuery +FN:78,jsonPathExists +FNF:9 +FNH:9 +FNDA:424,isPlain +FNDA:159,quote +FNDA:485,identifier +FNDA:424,(anonymous_12) +FNDA:118,(anonymous_13) +FNDA:118,(anonymous_14) +FNDA:6,jsonValue +FNDA:1,jsonQuery +FNDA:2,jsonPathExists +DA:1,22 +DA:2,22 +DA:3,22 +DA:11,0 +DA:12,424 +DA:19,0 +DA:20,159 +DA:40,0 +DA:41,485 +DA:42,1 +DA:44,484 +DA:45,425 +DA:46,6 +DA:47,6 +DA:49,419 +DA:50,1 +DA:51,1 +DA:53,418 +DA:54,2 +DA:55,2 +DA:57,424 +DA:59,118 +DA:60,118 +DA:62,0 +DA:66,22 +DA:67,6 +DA:71,22 +DA:72,1 +DA:78,22 +DA:79,2 +DA:82,343 +LF:31 +LH:27 +BRDA:13,0,0,424 +BRDA:13,0,1,282 +BRDA:41,1,0,1 +BRDA:44,2,0,425 +BRDA:45,3,0,6 +BRDA:49,4,0,1 +BRDA:53,5,0,2 +BRDA:57,6,0,265 +BRDA:57,6,1,159 +BRDA:59,7,0,59 +BRDA:59,8,0,59 +BRDA:59,8,1,59 +BRDA:59,9,0,118 +BRDA:59,9,1,0 +BRDA:72,10,0,1 +BRDA:72,10,1,0 +BRF:16 +BRH:14 +end_of_record +TN: +SF:src/identifiers.ts +FN:12,(anonymous_4) +FNF:1 +FNH:0 +FNDA:0,(anonymous_4) +DA:1,22 +DA:2,22 +DA:11,0 +DA:12,22 +DA:13,0 +DA:15,22 +LF:6 +LH:4 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/in.ts +FN:17,(anonymous_4) +FNF:1 +FNH:1 +FNDA:11,(anonymous_4) +DA:1,22 +DA:2,22 +DA:3,22 +DA:4,22 +DA:5,22 +DA:7,22 +DA:16,0 +DA:17,22 +DA:18,11 +DA:24,32 +LF:10 +LH:9 +BRDA:18,0,0,2 +BRDA:18,0,1,9 +BRDA:20,1,0,5 +BRDA:20,1,1,4 +BRDA:20,2,0,9 +BRDA:20,2,1,7 +BRDA:20,2,2,7 +BRF:7 +BRH:7 +end_of_record +TN: +SF:src/indent-tail.ts +FN:3,(anonymous_1) +FNF:1 +FNH:1 +FNDA:705,(anonymous_1) +DA:3,22 +DA:4,705 +DA:10,705 +LF:3 +LH:3 +BRDA:4,0,0,236 +BRDA:4,0,1,469 +BRF:2 +BRH:2 +end_of_record +TN: +SF:src/index.ts +FNF:0 +FNH:0 +DA:1,22 +DA:2,22 +DA:3,22 +DA:4,22 +DA:5,22 +DA:6,22 +DA:7,22 +DA:8,22 +DA:9,22 +DA:10,22 +DA:11,22 +DA:12,22 +DA:13,22 +DA:14,22 +DA:15,22 +DA:16,22 +DA:17,22 +DA:18,22 +DA:19,22 +DA:20,22 +DA:21,22 +DA:22,22 +DA:23,22 +DA:24,22 +DA:25,22 +DA:26,22 +DA:27,22 +DA:28,22 +DA:29,22 +DA:30,22 +DA:31,22 +DA:32,22 +DA:33,22 +DA:34,22 +DA:35,22 +DA:36,22 +DA:37,22 +DA:38,22 +DA:39,22 +DA:40,22 +DA:41,22 +DA:42,22 +DA:43,22 +DA:44,22 +DA:45,22 +DA:46,22 +DA:47,22 +DA:48,22 +DA:49,22 +DA:50,22 +DA:51,22 +DA:52,22 +DA:53,22 +DA:54,22 +DA:55,22 +DA:56,22 +DA:57,22 +DA:58,22 +DA:59,22 +DA:60,22 +DA:61,22 +DA:62,22 +DA:63,22 +DA:64,22 +DA:65,22 +DA:66,22 +DA:67,22 +DA:68,22 +DA:69,22 +DA:70,22 +DA:71,22 +DA:72,22 +DA:73,22 +DA:74,22 +DA:75,22 +DA:76,22 +DA:77,22 +DA:78,22 +DA:79,22 +DA:80,22 +DA:81,22 +DA:83,22 +DA:84,22 +DA:85,22 +DA:86,22 +DA:87,22 +DA:88,22 +DA:91,6 +DA:92,9 +DA:93,5 +DA:94,1 +DA:95,0 +DA:96,0 +DA:97,13 +DA:98,15 +DA:99,0 +DA:100,11 +DA:101,0 +DA:102,0 +DA:103,0 +DA:104,2 +DA:105,0 +DA:106,0 +DA:107,0 +DA:108,10 +DA:109,0 +DA:110,0 +DA:111,1 +DA:112,10 +DA:113,0 +DA:114,10 +DA:115,7 +DA:116,0 +DA:117,0 +DA:118,6 +DA:119,6 +DA:120,0 +DA:121,0 +DA:122,3 +DA:123,8 +DA:124,0 +DA:125,0 +DA:126,0 +DA:127,0 +DA:128,0 +DA:129,0 +DA:130,0 +DA:131,5 +DA:132,1 +DA:133,0 +DA:134,19 +DA:135,0 +DA:136,0 +DA:137,0 +DA:138,0 +DA:139,0 +DA:140,0 +DA:141,5 +DA:142,2 +DA:143,0 +DA:144,0 +DA:145,0 +DA:146,0 +DA:147,0 +DA:148,0 +DA:149,0 +DA:150,0 +DA:151,0 +DA:152,1 +DA:153,0 +DA:154,0 +DA:155,6 +DA:156,3 +DA:157,0 +DA:158,0 +DA:159,0 +DA:160,4 +DA:161,0 +DA:162,0 +DA:163,0 +DA:164,0 +DA:165,0 +DA:166,0 +DA:167,0 +DA:168,0 +DA:169,37 +DA:170,0 +DA:171,0 +DA:172,0 +DA:173,0 +DA:174,6 +DA:176,0 +DA:177,0 +DA:178,24 +DA:181,31 +DA:183,0 +DA:184,1 +DA:185,1 +LF:178 +LH:119 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/inline-table-of-column.ts +FN:14,(anonymous_4) +FN:20,(anonymous_5) +FNF:2 +FNH:2 +FNDA:4,(anonymous_4) +FNDA:11,(anonymous_5) +DA:1,22 +DA:2,22 +DA:3,22 +DA:6,22 +DA:13,0 +DA:14,22 +DA:15,4 +DA:16,0 +DA:18,4 +DA:19,4 +DA:20,11 +DA:21,4 +DA:28,22 +LF:13 +LH:11 +BRDA:15,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:src/inline-table-of-objects.ts +FN:16,(anonymous_4) +FN:20,(anonymous_5) +FN:20,(anonymous_6) +FNF:3 +FNH:3 +FNDA:15,(anonymous_4) +FNDA:3037,(anonymous_5) +FNDA:3073,(anonymous_6) +DA:1,22 +DA:2,22 +DA:3,22 +DA:4,22 +DA:5,22 +DA:8,22 +DA:15,0 +DA:16,22 +DA:17,15 +DA:18,15 +DA:19,15 +DA:20,3073 +DA:21,15 +DA:27,22 +LF:14 +LH:13 +BRDA:18,0,0,15 +BRDA:18,0,1,1 +BRF:2 +BRH:2 +end_of_record +TN: +SF:src/insert-ignore.ts +FN:14,(anonymous_6) +FN:18,(anonymous_7) +FN:29,(anonymous_8) +FN:48,(anonymous_9) +FN:49,(anonymous_10) +FNF:5 +FNH:5 +FNDA:10,(anonymous_6) +FNDA:20,(anonymous_7) +FNDA:10,(anonymous_8) +FNDA:10,(anonymous_9) +FNDA:10,(anonymous_10) +DA:1,22 +DA:2,22 +DA:3,22 +DA:4,22 +DA:5,22 +DA:6,22 +DA:7,22 +DA:8,22 +DA:13,0 +DA:14,22 +DA:15,10 +DA:17,0 +DA:18,22 +DA:19,20 +DA:28,0 +DA:29,22 +DA:39,10 +DA:40,0 +DA:43,10 +DA:44,0 +DA:47,10 +DA:48,10 +DA:49,10 +DA:51,10 +DA:60,22 +LF:25 +LH:20 +BRDA:34,0,0,0 +BRDA:34,1,0,2 +BRDA:39,2,0,0 +BRDA:43,3,0,0 +BRDA:47,4,0,10 +BRDA:47,4,1,10 +BRF:6 +BRH:3 +end_of_record +TN: +SF:src/insert-not-matched.ts +FN:14,(anonymous_6) +FN:18,(anonymous_7) +FN:31,(anonymous_8) +FN:51,(anonymous_9) +FNF:4 +FNH:0 +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +DA:1,22 +DA:2,22 +DA:3,22 +DA:4,22 +DA:5,22 +DA:6,22 +DA:7,22 +DA:8,22 +DA:13,0 +DA:14,22 +DA:15,0 +DA:17,0 +DA:18,22 +DA:19,0 +DA:30,0 +DA:31,22 +DA:41,0 +DA:42,0 +DA:45,0 +DA:46,0 +DA:49,0 +DA:50,0 +DA:51,0 +DA:53,0 +DA:63,22 +LF:25 +LH:12 +BRDA:36,0,0,0 +BRDA:36,1,0,0 +BRDA:41,2,0,0 +BRDA:45,3,0,0 +BRDA:50,4,0,0 +BRDA:50,4,1,0 +BRF:6 +BRH:0 +end_of_record +TN: +SF:src/insert-object.ts +FN:17,(anonymous_4) +FN:25,(anonymous_5) +FNF:2 +FNH:2 +FNDA:10,(anonymous_4) +FNDA:23,(anonymous_5) +DA:1,22 +DA:2,22 +DA:3,22 +DA:4,22 +DA:5,22 +DA:16,0 +DA:17,22 +DA:18,10 +DA:19,10 +DA:20,10 +DA:21,0 +DA:23,10 +DA:24,10 +DA:25,23 +DA:26,10 +DA:31,22 +LF:16 +LH:14 +BRDA:20,0,0,0 +BRDA:26,1,0,0 +BRDA:26,1,1,10 +BRF:3 +BRH:1 +end_of_record +TN: +SF:src/insert-objects.ts +FN:19,(anonymous_4) +FN:45,(anonymous_5) +FN:45,(anonymous_6) +FNF:3 +FNH:3 +FNDA:7,(anonymous_4) +FNDA:1104,(anonymous_5) +FNDA:1107,(anonymous_6) +DA:1,22 +DA:2,22 +DA:3,22 +DA:4,22 +DA:5,22 +DA:6,22 +DA:7,22 +DA:18,0 +DA:19,22 +DA:25,7 +DA:26,0 +DA:29,7 +DA:30,1 +DA:33,6 +DA:34,6 +DA:35,6 +DA:37,6 +DA:38,2 +DA:45,1107 +DA:46,4 +DA:52,22 +LF:21 +LH:19 +BRDA:25,0,0,0 +BRDA:29,1,0,1 +BRDA:34,2,0,6 +BRDA:34,2,1,6 +BRDA:37,3,0,2 +BRF:5 +BRH:4 +end_of_record +TN: +SF:src/interpolate.ts +FN:9,updateMargin +FN:39,(anonymous_5) +FN:52,(anonymous_6) +FNF:3 +FNH:3 +FNDA:1816,updateMargin +FNDA:406,(anonymous_5) +FNDA:1816,(anonymous_6) +DA:2,22 +DA:12,1816 +DA:15,1816 +DA:18,1816 +DA:19,1816 +DA:20,2025 +DA:24,1816 +DA:27,1816 +DA:30,1816 +DA:31,1816 +DA:38,0 +DA:39,22 +DA:40,406 +DA:41,0 +DA:43,406 +DA:44,0 +DA:46,406 +DA:47,0 +DA:49,406 +DA:50,406 +DA:52,406 +DA:53,1816 +DA:54,1816 +DA:56,406 +DA:57,406 +DA:58,705 +DA:59,705 +DA:61,406 +DA:64,406 +LF:29 +LH:25 +BRDA:19,0,0,3841 +BRDA:19,0,1,3316 +BRDA:30,1,0,273 +BRDA:30,1,1,1543 +BRDA:30,2,0,494 +BRDA:30,2,1,1049 +BRDA:31,3,0,1816 +BRDA:31,3,1,1229 +BRDA:31,3,2,767 +BRDA:40,4,0,0 +BRDA:40,5,0,406 +BRDA:40,5,1,406 +BRDA:43,6,0,0 +BRDA:43,7,0,406 +BRDA:43,7,1,0 +BRDA:46,8,0,0 +BRF:16 +BRH:12 +end_of_record +TN: +SF:src/interpolate1.ts +FN:3,(anonymous_3) +FNF:1 +FNH:1 +FNDA:78,(anonymous_3) +DA:2,0 +DA:3,22 +DA:4,78 +DA:5,0 +DA:7,78 +DA:8,0 +DA:10,78 +DA:11,78 +DA:12,27 +DA:13,27 +DA:15,78 +DA:18,78 +LF:12 +LH:9 +BRDA:4,0,0,0 +BRDA:7,1,0,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/is-defined.ts +FN:9,isDefined +FN:16,(anonymous_2) +FNF:2 +FNH:2 +FNDA:127,isDefined +FNDA:114,(anonymous_2) +DA:1,22 +DA:9,90 +DA:10,127 +DA:11,13 +DA:13,114 +DA:14,114 +DA:16,114 +DA:18,0 +LF:8 +LH:7 +BRDA:10,0,0,13 +BRDA:13,1,0,114 +BRF:2 +BRH:2 +end_of_record +TN: +SF:src/is-null.ts +FN:5,(anonymous_4) +FNF:1 +FNH:1 +FNDA:69,(anonymous_4) +DA:1,22 +DA:4,0 +DA:5,22 +DA:6,69 +DA:9,69 +LF:5 +LH:4 +BRDA:6,0,0,69 +BRDA:6,0,1,53 +BRDA:6,0,2,15 +BRF:3 +BRH:3 +end_of_record +TN: +SF:src/is-object.ts +FN:1,isObject +FNF:1 +FNH:1 +FNDA:263,isObject +DA:1,263 +DA:2,263 +LF:2 +LH:2 +BRDA:3,0,0,263 +BRDA:3,0,1,239 +BRDA:3,0,2,236 +BRF:3 +BRH:3 +end_of_record +TN: +SF:src/is-string.ts +FN:5,(anonymous_3) +FNF:1 +FNH:1 +FNDA:4685,(anonymous_3) +DA:2,0 +DA:5,22 +DA:6,4685 +DA:8,4685 +LF:4 +LH:3 +BRDA:6,0,0,4685 +BRDA:6,0,1,0 +BRF:2 +BRH:1 +end_of_record +TN: +SF:src/is.ts +FN:12,(anonymous_1) +FN:13,(anonymous_2) +FNF:2 +FNH:2 +FNDA:6,(anonymous_1) +FNDA:6,(anonymous_2) +DA:12,22 +DA:13,6 +DA:14,6 +DA:16,22 +LF:4 +LH:4 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/json-modify.ts +FN:8,(anonymous_4) +FN:10,(anonymous_5) +FNF:2 +FNH:2 +FNDA:3,(anonymous_4) +FNDA:6,(anonymous_5) +DA:1,22 +DA:2,22 +DA:3,22 +DA:4,22 +DA:7,0 +DA:8,22 +DA:9,3 +DA:10,3 +DA:11,6 +DA:12,2 +DA:13,2 +DA:25,4 +DA:35,22 +LF:13 +LH:12 +BRDA:11,0,0,2 +BRF:1 +BRH:1 +end_of_record +TN: +SF:src/json-path-exists.ts +FNF:0 +FNH:0 +DA:1,22 +DA:2,22 +LF:2 +LH:2 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/json-path.ts +FN:6,(anonymous_4) +FNF:1 +FNH:1 +FNDA:20,(anonymous_4) +DA:2,22 +DA:5,0 +DA:6,22 +DA:7,20 +DA:8,5 +DA:10,15 +DA:11,15 +DA:12,2 +DA:14,15 +DA:15,1 +DA:17,15 +DA:18,2 +DA:20,13 +DA:23,22 +LF:14 +LH:13 +BRDA:6,0,0,18 +BRDA:7,1,0,5 +BRDA:11,2,0,2 +BRDA:14,3,0,1 +BRDA:17,4,0,2 +BRF:5 +BRH:5 +end_of_record +TN: +SF:src/json-query.ts +FNF:0 +FNH:0 +DA:1,22 +DA:2,22 +LF:2 +LH:2 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/json-value.ts +FNF:0 +FNH:0 +DA:1,22 +DA:2,22 +LF:2 +LH:2 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/json.ts +FN:11,(anonymous_4) +FNF:1 +FNH:1 +FNDA:8,(anonymous_4) +DA:1,22 +DA:2,22 +DA:10,0 +DA:11,22 +DA:12,8 +DA:16,22 +LF:6 +LH:5 +BRDA:12,0,0,0 +BRDA:12,0,1,8 +BRF:2 +BRH:1 +end_of_record +TN: +SF:src/keys-of-objects.ts +FN:3,(anonymous_4) +FN:4,(anonymous_5) +FN:12,(anonymous_6) +FNF:3 +FNH:3 +FNDA:4124,(anonymous_4) +FNDA:4152,(anonymous_5) +FNDA:21,(anonymous_6) +DA:2,0 +DA:3,22 +DA:4,4152 +DA:11,0 +DA:12,22 +DA:13,21 +DA:14,0 +DA:16,21 +DA:17,0 +DA:19,21 +DA:20,21 +DA:21,4124 +DA:22,4124 +DA:23,0 +DA:28,21 +DA:31,22 +LF:16 +LH:11 +BRDA:4,0,0,4124 +BRDA:4,0,1,4124 +BRDA:13,1,0,0 +BRDA:16,2,0,0 +BRDA:22,3,0,0 +BRF:5 +BRH:2 +end_of_record +TN: +SF:src/keywords.ts +FN:977,(anonymous_1) +FNF:1 +FNH:1 +FNDA:21362,(anonymous_1) +DA:1,22 +DA:977,21362 +DA:979,424 +LF:3 +LH:3 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/like.ts +FN:9,(anonymous_4) +FN:20,(anonymous_5) +FNF:2 +FNH:2 +FNDA:1,(anonymous_4) +FNDA:1,(anonymous_5) +DA:1,22 +DA:2,22 +DA:3,22 +DA:4,22 +DA:5,22 +DA:9,22 +DA:10,1 +DA:19,0 +DA:20,22 +DA:21,1 +DA:25,22 +LF:11 +LH:10 +BRDA:10,0,0,0 +BRDA:10,0,1,1 +BRDA:21,1,0,0 +BRDA:21,1,1,1 +BRF:4 +BRH:2 +end_of_record +TN: +SF:src/limited-hints-identifier.ts +FN:9,(anonymous_5) +FNF:1 +FNH:1 +FNDA:20,(anonymous_5) +DA:1,22 +DA:2,22 +DA:3,22 +DA:4,22 +DA:9,22 +DA:10,20 +DA:14,22 +LF:7 +LH:7 +BRDA:10,0,0,18 +BRDA:10,0,1,2 +BRDA:10,1,0,20 +BRDA:10,1,1,20 +BRF:4 +BRH:4 +end_of_record +TN: +SF:src/line.ts +FN:15,(anonymous_4) +FN:16,(anonymous_5) +FN:17,(anonymous_6) +FNF:3 +FNH:3 +FNDA:13,(anonymous_4) +FNDA:26,(anonymous_5) +FNDA:26,(anonymous_6) +DA:1,22 +DA:2,22 +DA:14,0 +DA:15,22 +DA:16,26 +DA:17,26 +DA:20,22 +LF:7 +LH:6 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/lines.ts +FN:9,(anonymous_4) +FNF:1 +FNH:1 +FNDA:5,(anonymous_4) +DA:1,22 +DA:8,0 +DA:9,22 +DA:10,5 +DA:11,5 +DA:12,2 +DA:14,3 +DA:17,22 +LF:8 +LH:7 +BRDA:9,0,0,4 +BRDA:11,1,0,2 +BRF:2 +BRH:2 +end_of_record +TN: +SF:src/list.ts +FN:13,(anonymous_4) +FN:15,(anonymous_5) +FN:16,(anonymous_6) +FN:17,(anonymous_7) +FNF:4 +FNH:4 +FNDA:4274,(anonymous_4) +FNDA:8524,(anonymous_5) +FNDA:8512,(anonymous_6) +FNDA:8512,(anonymous_7) +DA:1,22 +DA:2,22 +DA:12,0 +DA:13,22 +DA:14,4274 +DA:15,8524 +DA:16,8512 +DA:17,8512 +DA:18,4274 +DA:23,4274 +LF:10 +LH:9 +BRDA:13,0,0,65 +BRDA:13,1,0,4245 +BRDA:18,2,0,4270 +BRDA:18,2,1,4 +BRF:4 +BRH:4 +end_of_record +TN: +SF:src/logical-false.ts +FNF:0 +FNH:0 +DA:2,22 +DA:13,0 +DA:14,22 +DA:16,22 +LF:4 +LH:3 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/logical-true.ts +FNF:0 +FNH:0 +DA:2,22 +DA:13,0 +DA:14,22 +DA:16,25 +LF:4 +LH:3 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/lt.ts +FN:10,(anonymous_4) +FNF:1 +FNH:1 +FNDA:2,(anonymous_4) +DA:1,22 +DA:9,0 +DA:10,22 +DA:11,2 +DA:13,22 +LF:5 +LH:4 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/lte.ts +FN:10,(anonymous_4) +FNF:1 +FNH:1 +FNDA:2,(anonymous_4) +DA:1,22 +DA:9,0 +DA:10,22 +DA:11,2 +DA:13,22 +LF:5 +LH:4 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/margin-of-first-line.ts +FN:3,(anonymous_1) +FNF:1 +FNH:1 +FNDA:14,(anonymous_1) +DA:3,24 +DA:4,14 +DA:5,14 +DA:6,16 +DA:7,6 +DA:10,14 +DA:13,24 +LF:7 +LH:7 +BRDA:6,0,0,6 +BRDA:6,1,0,16 +BRDA:6,1,1,8 +BRF:3 +BRH:3 +end_of_record +TN: +SF:src/margin-of-last-line.ts +FN:4,(anonymous_2) +FNF:1 +FNH:1 +FNDA:8,(anonymous_2) +DA:1,23 +DA:4,23 +DA:5,8 +DA:7,23 +LF:4 +LH:4 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/maybe-line.ts +FN:13,(anonymous_4) +FN:14,(anonymous_5) +FN:16,(anonymous_6) +FNF:3 +FNH:0 +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +DA:1,22 +DA:2,22 +DA:12,0 +DA:13,22 +DA:14,0 +DA:15,0 +DA:16,0 +DA:20,22 +LF:8 +LH:4 +BRDA:15,0,0,0 +BRDA:15,0,1,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/maybe-lines.ts +FN:7,(anonymous_4) +FN:10,(anonymous_5) +FN:11,(anonymous_6) +FN:12,(anonymous_7) +FN:13,(anonymous_8) +FNF:5 +FNH:5 +FNDA:5,(anonymous_4) +FNDA:10,(anonymous_5) +FNDA:7,(anonymous_6) +FNDA:7,(anonymous_7) +FNDA:7,(anonymous_8) +DA:1,22 +DA:2,22 +DA:6,0 +DA:7,22 +DA:9,5 +DA:10,10 +DA:11,7 +DA:12,7 +DA:13,7 +DA:14,5 +DA:15,2 +DA:17,3 +DA:20,22 +LF:13 +LH:12 +BRDA:7,0,0,0 +BRDA:14,1,0,2 +BRF:2 +BRH:1 +end_of_record +TN: +SF:src/merge-1n.ts +FN:12,(anonymous_4) +FNF:1 +FNH:1 +FNDA:5,(anonymous_4) +DA:1,22 +DA:2,22 +DA:3,22 +DA:4,22 +DA:5,22 +DA:11,0 +DA:12,22 +DA:21,5 +DA:22,5 +DA:23,5 +DA:24,5 +DA:25,0 +DA:27,5 +DA:28,1 +DA:30,4 +DA:45,22 +LF:16 +LH:14 +BRDA:17,0,0,1 +BRDA:17,1,0,1 +BRDA:24,2,0,0 +BRDA:27,3,0,1 +BRF:4 +BRH:3 +end_of_record +TN: +SF:src/modify-jsons.ts +FN:16,(anonymous_7) +FN:20,(anonymous_8) +FN:24,(anonymous_9) +FN:29,(anonymous_10) +FN:33,(anonymous_11) +FN:44,(anonymous_12) +FN:45,(anonymous_13) +FN:46,(anonymous_14) +FN:47,(anonymous_15) +FN:51,(anonymous_16) +FNF:10 +FNH:10 +FNDA:7,(anonymous_7) +FNDA:6,(anonymous_8) +FNDA:2,(anonymous_9) +FNDA:5,(anonymous_10) +FNDA:2,(anonymous_11) +FNDA:4,(anonymous_12) +FNDA:4,(anonymous_13) +FNDA:2,(anonymous_14) +FNDA:4,(anonymous_15) +FNDA:2,(anonymous_16) +DA:1,22 +DA:2,22 +DA:3,22 +DA:4,22 +DA:5,22 +DA:6,22 +DA:9,22 +DA:10,22 +DA:15,0 +DA:16,22 +DA:17,7 +DA:19,0 +DA:20,22 +DA:21,6 +DA:23,0 +DA:24,22 +DA:25,2 +DA:29,5 +DA:33,22 +DA:38,2 +DA:39,0 +DA:42,2 +DA:43,2 +DA:44,4 +DA:45,4 +DA:46,2 +DA:47,4 +DA:48,2 +DA:51,2 +DA:53,2 +DA:62,22 +LF:31 +LH:27 +BRDA:38,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:src/ne.ts +FN:8,(anonymous_4) +FNF:1 +FNH:1 +FNDA:1,(anonymous_4) +DA:1,22 +DA:2,22 +DA:3,22 +DA:5,22 +DA:7,0 +DA:8,22 +DA:9,1 +DA:10,0 +DA:12,1 +DA:13,1 +DA:18,22 +LF:11 +LH:9 +BRDA:9,0,0,0 +BRDA:13,1,0,0 +BRDA:13,1,1,1 +BRF:3 +BRH:1 +end_of_record +TN: +SF:src/ng.ts +FN:5,(anonymous_4) +FNF:1 +FNH:1 +FNDA:1,(anonymous_4) +DA:1,22 +DA:4,0 +DA:5,22 +DA:6,1 +DA:8,22 +LF:5 +LH:4 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/nl.ts +FN:5,(anonymous_4) +FNF:1 +FNH:1 +FNDA:1,(anonymous_4) +DA:1,22 +DA:4,0 +DA:5,22 +DA:6,1 +DA:8,22 +LF:5 +LH:4 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/not-between.ts +FN:7,(anonymous_4) +FNF:1 +FNH:1 +FNDA:1,(anonymous_4) +DA:1,22 +DA:2,22 +DA:3,22 +DA:6,0 +DA:7,22 +DA:8,1 +DA:12,22 +LF:7 +LH:6 +BRDA:8,0,0,0 +BRDA:8,0,1,1 +BRDA:8,1,0,1 +BRDA:8,1,1,1 +BRF:4 +BRH:3 +end_of_record +TN: +SF:src/not-distinct.ts +FN:7,(anonymous_4) +FNF:1 +FNH:0 +FNDA:0,(anonymous_4) +DA:1,22 +DA:2,22 +DA:3,22 +DA:6,0 +DA:7,22 +DA:8,0 +DA:9,0 +DA:11,0 +DA:12,0 +DA:15,44 +LF:10 +LH:5 +BRDA:8,0,0,0 +BRDA:8,1,0,0 +BRDA:8,1,1,0 +BRF:3 +BRH:0 +end_of_record +TN: +SF:src/not-in.ts +FN:9,(anonymous_4) +FNF:1 +FNH:1 +FNDA:1,(anonymous_4) +DA:1,22 +DA:2,22 +DA:3,22 +DA:4,22 +DA:5,22 +DA:8,0 +DA:9,22 +DA:10,1 +DA:16,44 +LF:9 +LH:8 +BRDA:10,0,0,0 +BRDA:10,0,1,1 +BRDA:12,1,0,1 +BRDA:12,1,1,0 +BRDA:12,2,0,1 +BRDA:12,2,1,1 +BRDA:12,2,2,1 +BRF:7 +BRH:5 +end_of_record +TN: +SF:src/not.ts +FNF:0 +FNH:0 +DA:1,22 +DA:3,0 +DA:5,22 +LF:3 +LH:2 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/now.ts +FNF:0 +FNH:0 +DA:1,22 +DA:3,0 +DA:4,22 +DA:6,22 +LF:4 +LH:3 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/nstring.ts +FN:6,(anonymous_4) +FNF:1 +FNH:1 +FNDA:4264,(anonymous_4) +DA:1,22 +DA:2,22 +DA:5,0 +DA:6,22 +DA:7,4264 +DA:13,4264 +LF:6 +LH:5 +BRDA:7,0,0,0 +BRDA:7,0,1,4264 +BRDA:9,1,0,0 +BRDA:9,1,1,4264 +BRF:4 +BRH:2 +end_of_record +TN: +SF:src/null.ts +FNF:0 +FNH:0 +DA:1,22 +DA:3,0 +DA:4,22 +DA:6,22 +LF:4 +LH:3 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/number.ts +FN:5,(anonymous_4) +FNF:1 +FNH:1 +FNDA:75,(anonymous_4) +DA:1,22 +DA:4,0 +DA:5,22 +DA:6,75 +DA:7,0 +DA:9,75 +DA:12,75 +LF:7 +LH:5 +BRDA:6,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:src/object-id.ts +FN:5,(anonymous_4) +FNF:1 +FNH:0 +FNDA:0,(anonymous_4) +DA:2,22 +DA:4,0 +DA:5,22 +DA:6,0 +DA:8,22 +LF:5 +LH:3 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/op.ts +FN:12,(anonymous_4) +FNF:1 +FNH:1 +FNDA:12,(anonymous_4) +DA:1,22 +DA:2,22 +DA:3,22 +DA:5,22 +DA:11,0 +DA:12,22 +DA:13,12 +DA:17,22 +LF:8 +LH:7 +BRDA:13,0,0,0 +BRDA:13,0,1,12 +BRF:2 +BRH:1 +end_of_record +TN: +SF:src/or.ts +FNF:0 +FNH:0 +DA:1,22 +DA:3,0 +DA:5,22 +LF:3 +LH:2 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/order-by.ts +FN:6,(anonymous_2) +FN:7,(anonymous_3) +FNF:2 +FNH:2 +FNDA:3,(anonymous_2) +FNDA:4,(anonymous_3) +DA:1,22 +DA:2,22 +DA:3,22 +DA:6,22 +DA:7,4 +DA:9,22 +LF:6 +LH:6 +BRDA:7,0,0,2 +BRDA:7,0,1,2 +BRF:2 +BRH:2 +end_of_record +TN: +SF:src/pick.ts +FN:4,(anonymous_3) +FNF:1 +FNH:0 +FNDA:0,(anonymous_3) +DA:3,0 +DA:4,22 +DA:5,0 +DA:6,0 +DA:7,0 +DA:11,0 +DA:14,22 +LF:7 +LH:2 +BRDA:7,0,0,0 +BRDA:7,0,1,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/quoted-nstring.ts +FN:6,(anonymous_4) +FN:10,(anonymous_5) +FN:18,(anonymous_6) +FN:26,(anonymous_7) +FNF:4 +FNH:4 +FNDA:4267,(anonymous_4) +FNDA:4265,(anonymous_5) +FNDA:4264,(anonymous_6) +FNDA:4264,(anonymous_7) +DA:3,22 +DA:6,22 +DA:7,4267 +DA:10,22 +DA:11,4265 +DA:12,4263 +DA:14,2 +DA:18,22 +DA:19,4264 +DA:20,4263 +DA:22,1 +DA:25,0 +DA:26,22 +DA:27,4264 +DA:28,0 +DA:30,4264 +DA:33,4264 +LF:17 +LH:15 +BRDA:7,0,0,0 +BRDA:7,0,1,4267 +BRDA:11,1,0,4263 +BRDA:19,2,0,4263 +BRDA:27,3,0,0 +BRF:5 +BRH:3 +end_of_record +TN: +SF:src/random-identifier.ts +FN:7,(anonymous_2) +FN:13,(anonymous_3) +FN:14,(anonymous_4) +FNF:3 +FNH:3 +FNDA:32,(anonymous_2) +FNDA:2,(anonymous_3) +FNDA:32,(anonymous_4) +DA:1,22 +DA:4,22 +DA:7,22 +DA:8,32 +DA:9,32 +DA:13,22 +DA:14,32 +DA:16,22 +LF:8 +LH:8 +BRDA:13,0,0,0 +BRDA:13,1,0,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/raw.ts +FN:5,(anonymous_4) +FNF:1 +FNH:1 +FNDA:9282,(anonymous_4) +DA:1,22 +DA:4,0 +DA:5,22 +DA:6,9282 +DA:8,9282 +LF:5 +LH:4 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/replace-objects.ts +FN:15,(anonymous_4) +FN:16,(anonymous_5) +FN:20,(anonymous_6) +FN:45,(anonymous_7) +FN:46,(anonymous_8) +FNF:5 +FNH:0 +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +DA:1,22 +DA:2,22 +DA:3,22 +DA:4,22 +DA:5,22 +DA:6,22 +DA:7,22 +DA:8,22 +DA:9,22 +DA:10,22 +DA:15,22 +DA:16,22 +DA:19,0 +DA:20,22 +DA:32,0 +DA:33,0 +DA:36,0 +DA:38,0 +DA:39,0 +DA:42,0 +DA:43,0 +DA:44,0 +DA:45,0 +DA:46,0 +DA:48,0 +DA:62,22 +LF:26 +LH:14 +BRDA:27,0,0,0 +BRDA:32,1,0,0 +BRDA:38,2,0,0 +BRDA:42,3,0,0 +BRDA:42,3,1,0 +BRDA:43,4,0,0 +BRDA:43,4,1,0 +BRDA:44,5,0,0 +BRDA:44,5,1,0 +BRF:9 +BRH:0 +end_of_record +TN: +SF:src/row.ts +FN:8,(anonymous_4) +FNF:1 +FNH:1 +FNDA:4191,(anonymous_4) +DA:1,22 +DA:2,22 +DA:3,22 +DA:7,0 +DA:8,22 +DA:9,4191 +DA:11,4191 +LF:7 +LH:6 +BRDA:8,0,0,4191 +BRF:1 +BRH:1 +end_of_record +TN: +SF:src/rowset.ts +FN:5,(anonymous_4) +FNF:1 +FNH:0 +FNDA:0,(anonymous_4) +DA:1,22 +DA:4,0 +DA:5,22 +DA:6,0 +DA:7,0 +DA:9,0 +DA:12,22 +LF:7 +LH:3 +BRDA:6,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:src/sanitised-identifier.ts +FNF:0 +FNH:0 +DA:1,22 +DA:3,22 +DA:5,0 +DA:10,970 +LF:4 +LH:3 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/sanitised.ts +FNF:0 +FNH:0 +DA:1,22 +DA:3,0 +DA:8,31625 +LF:3 +LH:2 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/select.ts +FN:10,(anonymous_5) +FN:11,(anonymous_6) +FN:14,(anonymous_7) +FN:15,(anonymous_8) +FNF:4 +FNH:0 +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +DA:1,22 +DA:2,22 +DA:3,22 +DA:4,22 +DA:5,22 +DA:7,22 +DA:9,0 +DA:10,22 +DA:11,0 +DA:13,0 +DA:14,22 +DA:15,0 +DA:16,0 +DA:17,0 +DA:19,0 +DA:20,0 +DA:27,22 +LF:17 +LH:9 +BRDA:11,0,0,0 +BRDA:11,0,1,0 +BRDA:14,1,0,0 +BRDA:16,2,0,0 +BRDA:19,3,0,0 +BRDA:19,3,1,0 +BRDA:23,4,0,0 +BRDA:23,4,1,0 +BRF:8 +BRH:0 +end_of_record +TN: +SF:src/star.ts +FN:7,(anonymous_4) +FNF:1 +FNH:0 +FNDA:0,(anonymous_4) +DA:1,22 +DA:4,22 +DA:6,0 +DA:7,22 +DA:8,0 +DA:12,22 +LF:6 +LH:4 +BRDA:8,0,0,0 +BRDA:8,0,1,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/table-hint-limited.ts +FN:50,(anonymous_4) +FNF:1 +FNH:1 +FNDA:18,(anonymous_4) +DA:1,22 +DA:27,22 +DA:49,18 +DA:50,22 +DA:51,18 +DA:52,0 +DA:54,18 +LF:7 +LH:6 +BRDA:51,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:src/template.ts +FN:8,(anonymous_4) +FNF:1 +FNH:1 +FNDA:406,(anonymous_4) +DA:1,22 +DA:2,22 +DA:3,22 +DA:4,22 +DA:7,0 +DA:8,22 +DA:9,406 +DA:11,406 +LF:8 +LH:7 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/top.ts +FN:15,(anonymous_4) +FNF:1 +FNH:0 +FNDA:0,(anonymous_4) +DA:1,22 +DA:2,22 +DA:3,22 +DA:4,22 +DA:14,0 +DA:15,22 +DA:16,0 +DA:17,0 +DA:19,0 +DA:22,0 +DA:30,22 +LF:11 +LH:6 +BRDA:15,0,0,0 +BRDA:16,1,0,0 +BRDA:19,2,0,0 +BRDA:19,2,1,0 +BRDA:25,3,0,0 +BRDA:25,3,1,0 +BRF:6 +BRH:0 +end_of_record +TN: +SF:src/true-value.ts +FNF:0 +FNH:0 +DA:2,22 +DA:13,0 +DA:14,22 +DA:16,22 +LF:4 +LH:3 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/unique.ts +FN:4,unique +FNF:1 +FNH:1 +FNDA:78,unique +DA:4,0 +DA:5,78 +DA:6,78 +DA:7,78 +DA:8,108 +DA:9,108 +DA:10,105 +DA:11,105 +DA:14,78 +DA:17,78 +LF:10 +LH:9 +BRDA:9,0,0,105 +BRF:1 +BRH:1 +end_of_record +TN: +SF:src/unix.ts +FNF:0 +FNH:0 +DA:1,22 +DA:4,22 +DA:6,22 +LF:3 +LH:3 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/update-objects.ts +FN:15,(anonymous_6) +FN:19,(anonymous_7) +FN:24,(anonymous_8) +FN:46,(anonymous_9) +FN:47,(anonymous_10) +FNF:5 +FNH:0 +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +DA:1,22 +DA:2,22 +DA:3,22 +DA:4,22 +DA:5,22 +DA:6,22 +DA:7,22 +DA:8,22 +DA:9,22 +DA:14,0 +DA:15,22 +DA:16,0 +DA:18,0 +DA:19,22 +DA:20,0 +DA:23,0 +DA:24,22 +DA:35,0 +DA:36,0 +DA:39,0 +DA:40,0 +DA:43,0 +DA:44,0 +DA:45,0 +DA:46,0 +DA:47,0 +DA:49,0 +DA:58,22 +LF:28 +LH:13 +BRDA:30,0,0,0 +BRDA:30,1,0,0 +BRDA:35,2,0,0 +BRDA:39,3,0,0 +BRDA:44,4,0,0 +BRDA:44,4,1,0 +BRDA:45,5,0,0 +BRDA:45,5,1,0 +BRF:8 +BRH:0 +end_of_record +TN: +SF:src/update.ts +FN:13,(anonymous_4) +FNF:1 +FNH:1 +FNDA:6,(anonymous_4) +DA:1,22 +DA:2,22 +DA:3,22 +DA:4,22 +DA:5,22 +DA:9,22 +DA:12,0 +DA:13,22 +DA:21,6 +DA:22,1 +DA:24,5 +DA:25,5 +DA:26,5 +DA:27,5 +DA:28,1 +DA:30,4 +DA:38,22 +LF:17 +LH:16 +BRDA:17,0,0,5 +BRDA:17,1,0,5 +BRDA:21,2,0,1 +BRDA:25,3,0,5 +BRDA:25,3,1,0 +BRDA:27,4,0,1 +BRF:6 +BRH:5 +end_of_record +TN: +SF:src/upsert-objects.ts +FN:16,(anonymous_6) +FN:20,(anonymous_7) +FN:31,(anonymous_8) +FN:55,(anonymous_9) +FN:56,(anonymous_10) +FNF:5 +FNH:0 +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +DA:1,22 +DA:2,22 +DA:3,22 +DA:4,22 +DA:5,22 +DA:6,22 +DA:7,22 +DA:8,22 +DA:9,22 +DA:10,22 +DA:15,0 +DA:16,22 +DA:17,0 +DA:19,0 +DA:20,22 +DA:21,0 +DA:30,0 +DA:31,22 +DA:43,0 +DA:44,0 +DA:47,0 +DA:48,0 +DA:51,0 +DA:52,0 +DA:53,0 +DA:54,0 +DA:55,0 +DA:56,0 +DA:58,0 +DA:70,22 +LF:30 +LH:14 +BRDA:38,0,0,0 +BRDA:38,1,0,0 +BRDA:43,2,0,0 +BRDA:47,3,0,0 +BRDA:52,4,0,0 +BRDA:52,4,1,0 +BRDA:53,5,0,0 +BRDA:53,5,1,0 +BRDA:54,6,0,0 +BRDA:54,6,1,0 +BRF:10 +BRH:0 +end_of_record +TN: +SF:src/where.ts +FN:67,single +FN:82,visitEntry +FN:122,visit +FN:140,(anonymous_11) +FN:151,where +FN:164,and +FN:179,or +FN:187,not +FNF:8 +FNH:8 +FNDA:103,single +FNDA:53,visitEntry +FNDA:170,visit +FNDA:53,(anonymous_11) +FNDA:139,where +FNDA:79,and +FNDA:9,or +FNDA:2,not +DA:1,22 +DA:2,22 +DA:3,22 +DA:4,22 +DA:5,22 +DA:6,22 +DA:7,22 +DA:8,22 +DA:9,22 +DA:10,22 +DA:11,22 +DA:12,22 +DA:13,22 +DA:14,22 +DA:15,22 +DA:16,22 +DA:17,22 +DA:18,22 +DA:19,22 +DA:20,22 +DA:21,22 +DA:22,22 +DA:23,22 +DA:24,22 +DA:25,22 +DA:31,22 +DA:37,22 +DA:59,22 +DA:68,103 +DA:69,27 +DA:72,76 +DA:73,80 +DA:74,74 +DA:75,74 +DA:77,6 +DA:79,70 +DA:83,53 +DA:84,6 +DA:86,47 +DA:87,47 +DA:88,17 +DA:89,17 +DA:92,2 +DA:93,0 +DA:95,2 +DA:96,0 +DA:98,2 +DA:102,2 +DA:103,0 +DA:105,2 +DA:106,0 +DA:108,2 +DA:110,13 +DA:119,30 +DA:122,0 +DA:123,170 +DA:124,114 +DA:126,56 +DA:127,56 +DA:128,49 +DA:129,49 +DA:130,8 +DA:131,0 +DA:133,8 +DA:135,41 +DA:136,2 +DA:139,46 +DA:140,53 +DA:141,46 +DA:143,0 +DA:151,0 +DA:152,139 +DA:164,22 +DA:165,79 +DA:166,79 +DA:167,6 +DA:169,73 +DA:179,22 +DA:180,9 +DA:181,9 +DA:182,4 +DA:184,5 +DA:187,22 +DA:188,2 +DA:193,42 +LF:85 +LH:77 +BRDA:68,0,0,27 +BRDA:73,1,0,74 +BRDA:83,2,0,6 +BRDA:87,3,0,17 +BRDA:87,4,0,47 +BRDA:87,4,1,19 +BRDA:89,5,0,1 +BRDA:89,5,1,2 +BRDA:89,5,2,1 +BRDA:89,5,3,1 +BRDA:89,5,4,2 +BRDA:89,5,5,13 +BRDA:92,6,0,0 +BRDA:95,7,0,0 +BRDA:95,8,0,2 +BRDA:95,8,1,2 +BRDA:102,9,0,0 +BRDA:105,10,0,0 +BRDA:123,11,0,114 +BRDA:127,12,0,49 +BRDA:129,13,0,8 +BRDA:129,14,0,49 +BRDA:129,14,1,8 +BRDA:130,15,0,0 +BRDA:135,16,0,2 +BRDA:139,17,0,46 +BRDA:166,18,0,6 +BRDA:181,19,0,4 +BRDA:188,20,0,2 +BRDA:188,20,1,0 +BRF:30 +BRH:24 +end_of_record +TN: +SF:src/test/client.ts +FN:9,(anonymous_5) +FN:31,(anonymous_6) +FN:37,(anonymous_7) +FN:43,(anonymous_8) +FN:49,(anonymous_9) +FN:50,(anonymous_10) +FN:51,(anonymous_11) +FN:57,(anonymous_12) +FN:61,(anonymous_13) +FN:62,(anonymous_14) +FN:68,(anonymous_15) +FN:83,(anonymous_16) +FN:87,(anonymous_17) +FN:88,(anonymous_18) +FN:91,(anonymous_19) +FN:96,(anonymous_20) +FN:100,(anonymous_21) +FN:104,(anonymous_22) +FN:108,(anonymous_23) +FN:112,(anonymous_24) +FN:116,(anonymous_25) +FN:120,(anonymous_26) +FN:124,(anonymous_27) +FN:136,(anonymous_28) +FNF:24 +FNH:22 +FNDA:4,(anonymous_5) +FNDA:2,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:2,(anonymous_8) +FNDA:4,(anonymous_9) +FNDA:4,(anonymous_10) +FNDA:4,(anonymous_11) +FNDA:4,(anonymous_12) +FNDA:69,(anonymous_13) +FNDA:69,(anonymous_14) +FNDA:69,(anonymous_15) +FNDA:25,(anonymous_16) +FNDA:11,(anonymous_17) +FNDA:11,(anonymous_18) +FNDA:10,(anonymous_19) +FNDA:9,(anonymous_20) +FNDA:13,(anonymous_21) +FNDA:2,(anonymous_22) +FNDA:10,(anonymous_23) +FNDA:7,(anonymous_24) +FNDA:7,(anonymous_25) +FNDA:0,(anonymous_26) +FNDA:4,(anonymous_27) +FNDA:1,(anonymous_28) +DA:1,2 +DA:2,2 +DA:3,2 +DA:5,2 +DA:18,4 +DA:32,2 +DA:33,2 +DA:34,2 +DA:38,0 +DA:39,0 +DA:40,0 +DA:44,2 +DA:45,2 +DA:46,2 +DA:50,4 +DA:51,4 +DA:52,4 +DA:58,4 +DA:62,69 +DA:63,69 +DA:64,0 +DA:65,0 +DA:67,69 +DA:68,69 +DA:69,69 +DA:70,0 +DA:72,69 +DA:73,50 +DA:74,95 +DA:77,69 +DA:79,69 +DA:84,25 +DA:88,11 +DA:92,10 +DA:93,10 +DA:97,9 +DA:101,13 +DA:105,2 +DA:109,10 +DA:113,7 +DA:117,7 +DA:121,0 +DA:133,4 +DA:140,1 +LF:44 +LH:37 +BRDA:9,0,0,0 +BRDA:10,1,0,0 +BRDA:11,2,0,4 +BRDA:12,3,0,4 +BRDA:19,4,0,4 +BRDA:19,4,1,4 +BRDA:52,5,0,0 +BRDA:52,5,1,4 +BRDA:63,6,0,0 +BRDA:69,7,0,0 +BRDA:96,8,0,6 +BRDA:100,9,0,13 +BRDA:129,10,0,4 +BRDA:129,11,0,4 +BRF:14 +BRH:9 +end_of_record diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 0000000..fedac59 --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1 @@ +export { default } from '@prelude/eslint-config' diff --git a/package.json b/package.json index 2c9c1b7..5469b5f 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,7 @@ }, "scripts": { "test": "make test", + "build": "make build", "preversion": "make preversion", "postversion": "make postversion" }, @@ -34,20 +35,23 @@ "license": "MIT", "devDependencies": { "@appliedblockchain/eslint-config": "3.1.1", - "@babel/core": "7.22.1", - "@swc/core": "1.3.62", - "@swc/jest": "0.2.26", - "@tsconfig/node18": "2.0.1", - "@types/debug": "4.1.8", - "@types/jest": "29.5.2", - "@types/node": "20.2.5", - "@types/tedious": "4.0.9", - "@typescript-eslint/eslint-plugin": "5.59.8", - "@typescript-eslint/parser": "5.59.8", - "debug": "4.3.4", - "eslint": "8.42.0", - "jest": "29.5.0", - "tedious": "16.1.0", - "typescript": "5.1.3" + "@babel/core": "7.25.2", + "@jest/globals": "^29.7.0", + "@prelude/eslint-config": "0.0.1", + "@swc/core": "1.7.14", + "@swc/jest": "0.2.36", + "@tsconfig/node18": "18.2.4", + "@tsconfig/node20": "^20.1.4", + "@types/debug": "4.1.12", + "@types/jest": "29.5.12", + "@types/node": "22.5.0", + "@types/tedious": "4.0.14", + "@typescript-eslint/eslint-plugin": "8.2.0", + "@typescript-eslint/parser": "8.2.0", + "debug": "4.3.6", + "eslint": "9.9.0", + "jest": "29.7.0", + "tedious": "19.0.0", + "typescript": "5.5.4" } } diff --git a/src/assign-object.test.ts b/src/assign-object.test.ts index 20a8ab3..af82290 100644 --- a/src/assign-object.test.ts +++ b/src/assign-object.test.ts @@ -1,3 +1,4 @@ +import { test, expect } from '@jest/globals' import * as Tsql from './index.js' test('assigns auto values', () => { diff --git a/src/assign.test.ts b/src/assign.test.ts index ca79ffd..40cbaac 100644 --- a/src/assign.test.ts +++ b/src/assign.test.ts @@ -1,3 +1,4 @@ +import { test, expect } from '@jest/globals' import * as Tsql from './index.js' test('assigns auto values', () => { diff --git a/src/defined.ts b/src/defined.ts index 44fef24..f458074 100644 --- a/src/defined.ts +++ b/src/defined.ts @@ -4,6 +4,8 @@ const defined = const object_ = Object.assign({}, object) for (const key in object) { if (typeof object_[key] === 'undefined') { + + // eslint-disable-next-line @typescript-eslint/no-dynamic-delete delete object_[key] } } diff --git a/src/demargin.test.ts b/src/demargin.test.ts index cdeaed1..064907a 100644 --- a/src/demargin.test.ts +++ b/src/demargin.test.ts @@ -1,3 +1,4 @@ +import { test, expect } from '@jest/globals' import * as Tsql from './index.js' test('simple', () => { diff --git a/src/demargin.ts b/src/demargin.ts index 3a48a74..d205a5b 100644 --- a/src/demargin.ts +++ b/src/demargin.ts @@ -7,17 +7,17 @@ export const demargin = throw new TypeError(`Expected value to be string, got ${value}.`) } const lines = value.split('\n') - if (lines.length && lines[0].split('').every(_ => _ === ' ')) { + if ((lines.length > 0) && lines[0].split('').every(_ => _ === ' ')) { lines.shift() } - if (lines.length && lines[lines.length - 1].split('').every(_ => _ === ' ')) { + if ((lines.length > 0) && lines[lines.length - 1].split('').every(_ => _ === ' ')) { lines.pop() } let margin = Infinity - for (let i = 0; i < lines.length; i++) { - for (let j = 0; j < lines[i].length; j++) { - if (lines[i][j] !== ' ') { - margin = Math.min(margin, j) + for (const line of lines) { + for (let i = 0; i < line.length; i++) { + if (line[i] !== ' ') { + margin = Math.min(margin, i) break } } diff --git a/src/identifier.test.ts b/src/identifier.test.ts index d0c69da..028e612 100644 --- a/src/identifier.test.ts +++ b/src/identifier.test.ts @@ -1,3 +1,4 @@ +import { test, expect } from '@jest/globals' import * as Tsql from './index.js' test('basic', () => { diff --git a/src/identifier.ts b/src/identifier.ts index b248a3b..1961675 100644 --- a/src/identifier.ts +++ b/src/identifier.ts @@ -11,7 +11,7 @@ export type Identifier = export function isPlain(value: string) { return ( !keywords[value.toLowerCase()] && - !!String(value).match(/^[a-z_@#][a-z0-9_]*$/i) + !!String(value).match(/^[a-z_@#]\w*$/i) ) } diff --git a/src/in.test.ts b/src/in.test.ts index a44742a..65e806a 100644 --- a/src/in.test.ts +++ b/src/in.test.ts @@ -1,9 +1,10 @@ +import { test, expect } from '@jest/globals' import * as Tsql from './index.js' test('in', () => { - expect(Tsql.in('foo', [ 1 ])!.toString()).toEqual('foo in (1)') - expect(Tsql.in('foo', [])!.toString()).toEqual('0=1') - expect(Tsql.in('foo', null)!.toString()).toEqual('0=1') + expect(String(Tsql.in('foo', [ 1 ]))).toEqual('foo in (1)') + expect(String(Tsql.in('foo', []))).toEqual('0=1') + expect(String(Tsql.in('foo', null))).toEqual('0=1') expect(typeof Tsql.in('foo', undefined)).toBe('undefined') expect( Tsql.and( diff --git a/src/in.ts b/src/in.ts index 270b1af..ae9950f 100644 --- a/src/in.ts +++ b/src/in.ts @@ -17,7 +17,7 @@ export const in_ = (l: S | string, r: undefined | null | unknown[]): undefined | S => typeof r === 'undefined' ? undefined : - r && !isNull(r) && r.length ? + r && !isNull(r) && (r.length > 0) ? tsql`${fallback(l, id)} in ${row(r)}` : logicalFalse diff --git a/src/inline-table-of-column.ts b/src/inline-table-of-column.ts index 05996cc..b7ae514 100644 --- a/src/inline-table-of-column.ts +++ b/src/inline-table-of-column.ts @@ -12,7 +12,7 @@ import tsql from './template.js' */ export const inlineTableOfColumn = (table: Sid | string, column: Sid | string, values: unknown[]): S => { - if (!values.length) { + if (values.length === 0) { throw new Error(`Can't generate literal table ${table} using column ${column} with an empty array of values.`) } const table_ = id(table) diff --git a/src/inline-table-of-objects.test.ts b/src/inline-table-of-objects.test.ts index 4085389..ec763b3 100644 --- a/src/inline-table-of-objects.test.ts +++ b/src/inline-table-of-objects.test.ts @@ -1,3 +1,4 @@ +import { test, expect } from '@jest/globals' import * as Tsql from './index.js' test('literalTableOfObjects', () => { diff --git a/src/insert-not-matched.ts b/src/insert-not-matched.ts index 523bdae..5afbb5a 100644 --- a/src/insert-not-matched.ts +++ b/src/insert-not-matched.ts @@ -42,7 +42,7 @@ export const insertNotMatched = throw new TypeError(`Expected array of values, got ${objects}.`) } - if (!objects.length) { + if (objects.length === 0) { return tsql`select 0;` } diff --git a/src/insert-object.test.ts b/src/insert-object.test.ts index 06c9442..c389877 100644 --- a/src/insert-object.test.ts +++ b/src/insert-object.test.ts @@ -1,3 +1,4 @@ +import { test, expect } from '@jest/globals' import * as Tsql from './index.js' test('insert-object', () => { diff --git a/src/insert-object.ts b/src/insert-object.ts index f4be11c..1f3a0a8 100644 --- a/src/insert-object.ts +++ b/src/insert-object.ts @@ -17,7 +17,7 @@ export const insertObject = (table: Sid | string, object: Record, output?: S): S => { const object_ = defined(object) const keys = Object.keys(object_) - if (!keys.length) { + if (keys.length === 0) { throw new TypeError(`Expected object with keys, got ${object_}.`) } const table_ = id(table) diff --git a/src/insert-objects.test.ts b/src/insert-objects.test.ts index 2ed7af5..2217b02 100644 --- a/src/insert-objects.test.ts +++ b/src/insert-objects.test.ts @@ -1,9 +1,10 @@ -import Sql from './test/sql.js' +import { beforeAll, afterAll, afterEach, test, expect } from '@jest/globals' +import Client from './test/client.js' -let sql: Sql +let sql: Client beforeAll(async () => { - sql = await Sql.random() + sql = await Client.random() }, 30 * 1000) afterAll(async () => { @@ -44,7 +45,7 @@ test.each([ 1000, 1001, 2000 -])('insert %i records', async (length) => { +])('insert %i records', async length => { const users = Array.from({ length }, (_, i) => ({ name: `user-${i}` })) await sql.insertObjects('Users', users) await expect(sql.count('Users')).resolves.toBe(length) diff --git a/src/insert-objects.ts b/src/insert-objects.ts index a396af7..43e4786 100644 --- a/src/insert-objects.ts +++ b/src/insert-objects.ts @@ -26,7 +26,7 @@ export const insertObjects = throw new TypeError(`Expected array of values, got ${objects}.`) } - if (!objects.length) { + if (objects.length === 0) { return tsql`select 0;` } diff --git a/src/interpolate.test.ts b/src/interpolate.test.ts index 67d8b78..e22516d 100644 --- a/src/interpolate.test.ts +++ b/src/interpolate.test.ts @@ -1,3 +1,4 @@ +import { test, expect } from '@jest/globals' import * as Tsql from './index.js' test('simple', () => { diff --git a/src/interpolate.ts b/src/interpolate.ts index 0c7dae6..4ccd7e7 100644 --- a/src/interpolate.ts +++ b/src/interpolate.ts @@ -6,7 +6,7 @@ type Margin = { open: boolean } -function updateMargin(margin: Margin, value: string) { +function updateMargin(mutableMargin: Margin, value: string) { // Locate start of last line. const start = value.lastIndexOf('\n') + 1 @@ -27,8 +27,8 @@ function updateMargin(margin: Margin, value: string) { const blanks = end === value.length // Update margin. - margin.column = multiline ? column : margin.column + (margin.open ? column : 0) - margin.open = (margin.open || multiline) && blanks + mutableMargin.column = multiline ? column : mutableMargin.column + (mutableMargin.open ? column : 0) + mutableMargin.open = (mutableMargin.open || multiline) && blanks } /** @@ -40,7 +40,7 @@ export const interpolate = if (!Array.isArray(xs) || !Array.isArray(ys)) { throw new TypeError(`Expected xs and ys to be an array, got ${xs} and ${ys}.`) } - if (!xs.length && !ys.length) { + if ((xs.length === 0) && (ys.length === 0)) { return [] } if (xs.length - 1 !== ys.length) { diff --git a/src/interpolate1.ts b/src/interpolate1.ts index a3e0018..ea5de92 100644 --- a/src/interpolate1.ts +++ b/src/interpolate1.ts @@ -4,7 +4,7 @@ export const interpolate1 = if (!Array.isArray(xs)) { throw new TypeError(`Expected xs to be an array, got ${xs}.`) } - if (!xs.length) { + if (xs.length === 0) { return [] } const rs: (T | I)[] = [ xs[0] ] diff --git a/src/is-null.test.ts b/src/is-null.test.ts index 66681a1..1fdcf25 100644 --- a/src/is-null.test.ts +++ b/src/is-null.test.ts @@ -1,3 +1,4 @@ +import { test, expect } from '@jest/globals' import * as Tsql from './index.js' test('is-null', () => { diff --git a/src/json-modify.test.ts b/src/json-modify.test.ts index 5e0072d..ef2d989 100644 --- a/src/json-modify.test.ts +++ b/src/json-modify.test.ts @@ -1,3 +1,4 @@ +import { test, expect } from '@jest/globals' import * as Tsql from './index.js' test('jsonModify', () => { diff --git a/src/json-path.test.ts b/src/json-path.test.ts index 82ef0b9..3ab199c 100644 --- a/src/json-path.test.ts +++ b/src/json-path.test.ts @@ -1,3 +1,4 @@ +import { test, expect } from '@jest/globals' import * as Tsql from './index.js' test('jsonPath', () => { diff --git a/src/json-path.ts b/src/json-path.ts index 7186781..4d19f1e 100644 --- a/src/json-path.ts +++ b/src/json-path.ts @@ -14,7 +14,7 @@ export const jsonPath = if (mode) { parts.push(mode) } - if (parts.length) { + if (parts.length > 0) { return `${parts.join(' ')} $.${path}` } return `$.${path}` diff --git a/src/keys-of-objects.ts b/src/keys-of-objects.ts index 8f78047..3a8ecca 100644 --- a/src/keys-of-objects.ts +++ b/src/keys-of-objects.ts @@ -13,7 +13,7 @@ export const keysOfObjects = if (!Array.isArray(objects)) { throw new TypeError(`Expected array, got ${objects}.`) } - if (!objects.length) { + if (objects.length === 0) { throw new TypeError('Expected non empty array.') } const keys = Object.keys(objects[0]).sort() diff --git a/src/keywords.ts b/src/keywords.ts index d6a1018..97a150c 100644 --- a/src/keywords.ts +++ b/src/keywords.ts @@ -973,7 +973,7 @@ const keywords_ = [ ] /** An array of MSSQL keywords. */ -const keywords: { [keyword: string]: undefined | true } = +const keywords: Record = keywords_.reduce((r, _) => ({ ...r, [_]: true }), {}) export default keywords diff --git a/src/lines.test.ts b/src/lines.test.ts index 433d453..2d5bff9 100644 --- a/src/lines.test.ts +++ b/src/lines.test.ts @@ -1,8 +1,9 @@ +import { test, expect } from '@jest/globals' import * as Tsql from './index.js' test('simple', () => { expect(() => Tsql.lines([])).toThrow('Expected at least one line.') - expect(() => Tsql.lines([undefined, undefined])).toThrow('Expected at least one line.') - expect(Tsql.lines(['foo', 'bar'])?.toString()).toEqual(`N'foo'\nN'bar'`) - expect(Tsql.lines(['foo', undefined, 'bar'])?.toString()).toEqual(`N'foo'\nN'bar'`) + expect(() => Tsql.lines([ undefined, undefined ])).toThrow('Expected at least one line.') + expect(Tsql.lines([ 'foo', 'bar' ])?.toString()).toEqual('N\'foo\'\nN\'bar\'') + expect(Tsql.lines([ 'foo', undefined, 'bar' ])?.toString()).toEqual('N\'foo\'\nN\'bar\'') }) diff --git a/src/margin-of-first-line.test.ts b/src/margin-of-first-line.test.ts index 66ebfec..72821ca 100644 --- a/src/margin-of-first-line.test.ts +++ b/src/margin-of-first-line.test.ts @@ -1,3 +1,4 @@ +import { test, expect } from '@jest/globals' import marginOfFirstLine from './margin-of-first-line.js' test('marginOfFirstLine', () => { diff --git a/src/margin-of-last-line.test.ts b/src/margin-of-last-line.test.ts index c10e906..59f408c 100644 --- a/src/margin-of-last-line.test.ts +++ b/src/margin-of-last-line.test.ts @@ -1,3 +1,4 @@ +import { test, expect } from '@jest/globals' import marginOfLastLine from './margin-of-last-line.js' test('marginOfLastLine', () => { diff --git a/src/margin.test.ts b/src/margin.test.ts index 9f6ad28..c0e7106 100644 --- a/src/margin.test.ts +++ b/src/margin.test.ts @@ -1,3 +1,4 @@ +import { test, expect } from '@jest/globals' import * as Tsql from './index.js' test('margin', () => { diff --git a/src/merge-1n.ts b/src/merge-1n.ts index f4b461f..2587a83 100644 --- a/src/merge-1n.ts +++ b/src/merge-1n.ts @@ -24,7 +24,7 @@ export const merge1n = if (!Array.isArray(values)) { throw new TypeError(`Expected array of values, got ${values}.`) } - if (!values.length) { + if (values.length === 0) { return tsql`delete from ${table_} where ${lcolumn_} = ${lid};` } return tsql` diff --git a/src/merge1n.test.ts b/src/merge1n.test.ts index 7ffc7e1..ed678ba 100644 --- a/src/merge1n.test.ts +++ b/src/merge1n.test.ts @@ -1,3 +1,4 @@ +import { test, expect } from '@jest/globals' import * as Tsql from './index.js' test('merge1n', () => { diff --git a/src/modify-jsons.test.ts b/src/modify-jsons.test.ts index 181080b..f2d5a95 100644 --- a/src/modify-jsons.test.ts +++ b/src/modify-jsons.test.ts @@ -1,3 +1,4 @@ +import { test, expect } from '@jest/globals' import * as Tsql from './index.js' test('modify-jsons', () => { diff --git a/src/modify-jsons.ts b/src/modify-jsons.ts index c966103..f4613e2 100644 --- a/src/modify-jsons.ts +++ b/src/modify-jsons.ts @@ -24,6 +24,8 @@ export const modify = (column: string, jsonKeys: string[]): S => assign( targetPrefixed(column), + + // eslint-disable-next-line sonarjs/no-nested-template-literals jsonKeys.reduce((_, jsonKey) => tsql`json_modify(${_}, ${`$.${jsonKey}`}, json_query(${sourcePrefixed(column)}, ${`$.${jsonKey}`}))`, targetPrefixed(column) as S) ) as S diff --git a/src/not-in.ts b/src/not-in.ts index 99b4beb..29c2b4a 100644 --- a/src/not-in.ts +++ b/src/not-in.ts @@ -9,7 +9,7 @@ export const notIn = (l: S | string, r: undefined | null | unknown[]): undefined | S => typeof r === 'undefined' ? undefined : - r && !isNull(r) && r.length ? + r && !isNull(r) && (r.length > 0) ? tsql`${fallback(l, id)} not in ${row(r)}` : tsql`${fallback(l, id)} is not null` diff --git a/src/order-by.test.ts b/src/order-by.test.ts index efff24c..783388c 100644 --- a/src/order-by.test.ts +++ b/src/order-by.test.ts @@ -1,3 +1,4 @@ +import { test, expect } from '@jest/globals' import * as Tsql from './index.js' test('order-by', () => { diff --git a/src/order-by.ts b/src/order-by.ts index b936727..9706a40 100644 --- a/src/order-by.ts +++ b/src/order-by.ts @@ -4,6 +4,6 @@ import raw from './raw.js' const orderBy = (terms: [identifier: undefined | Identifier, direction: 'asc' | 'desc'][]) => - list(terms.map(_ => _ && _[0] ? raw(`${id(_[0])} ${_[1]}`) : undefined)) + list(terms.map(_ => _?.[0] != null ? raw(`${id(_[0])} ${_[1]}`) : undefined)) export default orderBy diff --git a/src/random-identifier.ts b/src/random-identifier.ts index 9607161..067f469 100644 --- a/src/random-identifier.ts +++ b/src/random-identifier.ts @@ -5,10 +5,8 @@ const alphabet = 'abcdefghijklmnopqrstuvwxyABCDEFGHIJKLMNOPQRSTUVWXYZ' const randomLetter = (): string => { - while (true) { - const index = Math.min(alphabet.length - 1, Math.floor(Math.random() * alphabet.length)) - return alphabet[index] - } + const index = Math.min(alphabet.length - 1, Math.floor(Math.random() * alphabet.length)) + return alphabet[index] } const randomIdentifier = diff --git a/src/select.ts b/src/select.ts index f035c08..b77e885 100644 --- a/src/select.ts +++ b/src/select.ts @@ -16,11 +16,11 @@ export const select = if (typeof what_ === 'undefined') { throw new Error('Empty projection.') } - const from_ = from ? id(from) : undefined + const from_ = from != null ? id(from) : undefined return line( tsql`select ${what_}`, tsql`from ${from_}`, - where ? tsql`where ${where}` : undefined + where != null ? tsql`where ${where}` : undefined ) } diff --git a/src/sql.test.ts b/src/sql.test.ts index bf52ddb..2857237 100644 --- a/src/sql.test.ts +++ b/src/sql.test.ts @@ -1,10 +1,11 @@ +import { beforeEach, describe, test, expect, afterAll, beforeAll } from '@jest/globals' import * as Tsql from './index.js' -import Sql from './test/sql.js' +import Client from './test/client.js' -let sql: Sql +let sql: Client beforeAll(async () => { - sql = await Sql.random() + sql = await Client.random() }, 30 * 1000) afterAll(async () => { diff --git a/src/star.ts b/src/star.ts index b2abe82..b5912c8 100644 --- a/src/star.ts +++ b/src/star.ts @@ -5,7 +5,7 @@ import tsql from './template.js' export const star = (table?: Sid | string): S => - table ? + table != null ? tsql`${id(table)}.*` : tsql`*` diff --git a/src/table-hint-limited.ts b/src/table-hint-limited.ts index a7c1d5a..eb3d227 100644 --- a/src/table-hint-limited.ts +++ b/src/table-hint-limited.ts @@ -24,7 +24,7 @@ export type TableHintLimited = export type t = TableHintLimited -export const values: Set = new Set([ +export const values = new Set([ 'keepidentity', 'keepdefaults', 'holdlock', diff --git a/src/test/sql.ts b/src/test/client.ts similarity index 90% rename from src/test/sql.ts rename to src/test/client.ts index 6b8a31d..2922fbc 100644 --- a/src/test/sql.ts +++ b/src/test/client.ts @@ -1,11 +1,8 @@ import { Connection, Request } from 'tedious' import * as Tsql from '../index.js' -import debugOf from 'debug' import randomIdentifier from '../random-identifier.js' -const debug = debugOf('sql') - -export default class Sql { +export default class Client { connection: Connection @@ -32,13 +29,13 @@ export default class Sql { } static async createDatabase(database: string) { - const sql = await new Sql({ database: 'master' }).connect() + const sql = await new Client({ database: 'master' }).connect() await sql.rows`create database ${Tsql.id(database)}` sql.close() } static async dropDatabase(database: string) { - const sql = await new Sql({ database: 'master' }).connect() + const sql = await new Client({ database: 'master' }).connect() await sql.rows`drop database ${Tsql.id(database)}` sql.close() } @@ -46,13 +43,13 @@ export default class Sql { static async random() { const database = randomIdentifier('test_', 16).toString() await this.createDatabase(database) - return new Sql({ database }).connect() + return new Client({ database }).connect() } async connect(): Promise { return new Promise((resolve, reject) => { - this.connection.connect(err => { - err ? reject(err) : resolve(this) + this.connection.connect((err: unknown) => { + err != null ? reject(err) : resolve(this) }) }) } @@ -68,9 +65,8 @@ export default class Sql { return } const sqlString = sql.toString() - debug('query', sqlString) const request = new Request(sqlString, (err, _rowCount, rows) => { - if (err) { + if (err != null) { reject(new Error(err.message + `; ${sqlString}`)) } for (const row of rows) { diff --git a/src/undefined-propagation.test.ts b/src/undefined-propagation.test.ts index 21defb2..2bae77f 100644 --- a/src/undefined-propagation.test.ts +++ b/src/undefined-propagation.test.ts @@ -1,3 +1,4 @@ +import { test, expect } from '@jest/globals' import * as Tsql from './index.js' test('or', () => { @@ -58,8 +59,8 @@ test('assign object with undefined propagation', () => { test('assign', () => { expect(Tsql.assign('a', undefined)).toBe(undefined) - expect(Tsql.assign('a', null)!.toString()).toBe('a = null') - expect(Tsql.assign('a', 1)!.toString()).toBe('a = 1') + expect(String(Tsql.assign('a', null))).toBe('a = null') + expect(String(Tsql.assign('a', 1))).toBe('a = 1') }) test('list', () => { diff --git a/src/update-object.test.ts b/src/update-object.test.ts index 2beb1e8..d603821 100644 --- a/src/update-object.test.ts +++ b/src/update-object.test.ts @@ -1,3 +1,4 @@ +import { test, expect } from '@jest/globals' import * as Tsql from './index.js' test('update', () => { diff --git a/src/update-objects.ts b/src/update-objects.ts index 5ca254d..d25dfd1 100644 --- a/src/update-objects.ts +++ b/src/update-objects.ts @@ -36,7 +36,7 @@ export const updateObjects = throw new TypeError(`Expected array of values, got ${objects}.`) } - if (!objects.length) { + if (objects.length === 0) { return tsql`select 0;` } diff --git a/src/update.test.ts b/src/update.test.ts index 4c9211f..75fbf55 100644 --- a/src/update.test.ts +++ b/src/update.test.ts @@ -1,3 +1,4 @@ +import { test, expect } from '@jest/globals' import * as Tsql from './index.js' test('update', () => { diff --git a/src/upsert-objects.ts b/src/upsert-objects.ts index 01a01fe..8f1a9ef 100644 --- a/src/upsert-objects.ts +++ b/src/upsert-objects.ts @@ -44,7 +44,7 @@ export const upsertObjects = throw new TypeError(`Expected array of values, got ${objects}.`) } - if (!objects.length) { + if (objects.length === 0) { return tsql`select 0;` } diff --git a/src/where.test.ts b/src/where.test.ts index 30c8ff1..451758c 100644 --- a/src/where.test.ts +++ b/src/where.test.ts @@ -1,3 +1,4 @@ +import { test, expect } from '@jest/globals' import * as Tsql from './index.js' const t = diff --git a/src/where.ts b/src/where.ts index 4e9ec97..cf77f3f 100644 --- a/src/where.ts +++ b/src/where.ts @@ -126,14 +126,14 @@ export function visit(value: unknown): S { const key = single(value) if (key) { const value_ = (value as Record)[key] - if (key && (key in logical) && Array.isArray(value_)) { + if ((key in logical) && Array.isArray(value_)) { if (typeof logical[key as keyof Logical] !== 'function') { console.log('ERROR', key, Object.keys(logical), logical[key as keyof Logical], logical) } return logical[key as keyof Logical](...value_.map(visit)) } - if (key && (key in unary)) { - return unary[key as keyof Unary](visit(value_))! + if ((key in unary)) { + return unary[key as keyof Unary](visit(value_)) as S } } if (isObject(value)) { @@ -163,7 +163,7 @@ export function where(value: Where): S { */ export function and(...xs: (undefined | Where)[]): S { const xs_ = xs.filter(isDefined) - if (!xs_.length) { + if (xs_.length === 0) { return logicalTrue } return template`(${raw(interpolate1(unique(xs_.map(where)), raw(' and ')).join(''))})` @@ -178,7 +178,7 @@ export function and(...xs: (undefined | Where)[]): S { */ export function or(...xs: (undefined | Where)[]): S { const xs_ = xs.filter(isDefined) - if (!xs_.length) { + if (xs_.length === 0) { return logicalFalse } return template`(${raw(interpolate1(unique(xs_.map(where)), raw(' or ')).join(''))})` diff --git a/tsconfig.cjs.json b/tsconfig.cjs.json index 5bdb3b4..281f72c 100644 --- a/tsconfig.cjs.json +++ b/tsconfig.cjs.json @@ -1,8 +1,14 @@ { "extends": "./tsconfig.json", "compilerOptions": { - "module": "CommonJS", - "verbatimModuleSyntax": false, - "outDir": "cjs" - } + "module": "Node16", + "moduleResolution": "Node16", + "outDir": "cjs", + "noEmit": false, + "declaration": true, + "sourceMap": true + }, + "include": [ + "src" + ] } diff --git a/tsconfig.json b/tsconfig.json index c378230..88d1b92 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,26 +1,16 @@ { - "extends": "@tsconfig/node18/tsconfig.json", + "extends": "@tsconfig/node20/tsconfig.json", "compilerOptions": { - "target": "ES2022", - "lib": [ - "ES2022" - ], + "lib": ["ESNext"], "module": "NodeNext", - "moduleResolution": "nodenext", - "resolveJsonModule": true, - "verbatimModuleSyntax": true, - "strict": true, - "noFallthroughCasesInSwitch": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "noImplicitReturns": true, - "esModuleInterop": true, - "noImplicitAny": true + "target": "ESNext", + "moduleResolution": "NodeNext", + "noImplicitAny": false, + "noEmit": true }, "include": [ - "src" - ], - "exclude": [ - "node_modules" + "eslint.config.mjs", + "src", + "wip" ] } diff --git a/tsconfig.mjs.json b/tsconfig.mjs.json new file mode 100644 index 0000000..95eebb7 --- /dev/null +++ b/tsconfig.mjs.json @@ -0,0 +1,12 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "mjs", + "noEmit": false, + "declaration": true, + "sourceMap": true + }, + "include": [ + "src" + ] +} From 3d87a2b9aef3cf89d7c33c9d1201683d64026f6b Mon Sep 17 00:00:00 2001 From: Mirek Rusin Date: Thu, 22 Aug 2024 13:07:59 +0200 Subject: [PATCH 2/5] cov --- .gitignore | 7 +- coverage/clover.xml | 1511 --------- coverage/coverage-final.json | 95 - coverage/lcov-report/base.css | 224 -- coverage/lcov-report/block-navigation.js | 87 - coverage/lcov-report/favicon.png | Bin 445 -> 0 bytes coverage/lcov-report/index.html | 131 - coverage/lcov-report/prettify.css | 1 - coverage/lcov-report/prettify.js | 2 - coverage/lcov-report/sort-arrow-sprite.png | Bin 138 -> 0 bytes coverage/lcov-report/sorter.js | 196 -- coverage/lcov-report/src/and.ts.html | 100 - .../lcov-report/src/assign-object.ts.html | 214 -- coverage/lcov-report/src/assign.ts.html | 169 - coverage/lcov-report/src/auto.ts.html | 265 -- coverage/lcov-report/src/between.ts.html | 121 - coverage/lcov-report/src/columns.ts.html | 151 - coverage/lcov-report/src/defined.ts.html | 130 - coverage/lcov-report/src/delete.ts.html | 142 - coverage/lcov-report/src/demargin.ts.html | 184 - coverage/lcov-report/src/distinct.ts.html | 151 - coverage/lcov-report/src/eq.ts.html | 169 - coverage/lcov-report/src/exists.ts.html | 133 - coverage/lcov-report/src/fallback.ts.html | 118 - coverage/lcov-report/src/false-value.ts.html | 133 - coverage/lcov-report/src/gt.ts.html | 124 - coverage/lcov-report/src/gte.ts.html | 124 - coverage/lcov-report/src/identifier.ts.html | 331 -- coverage/lcov-report/src/identifiers.ts.html | 130 - coverage/lcov-report/src/in.ts.html | 157 - coverage/lcov-report/src/indent-tail.ts.html | 115 - coverage/lcov-report/src/index.html | 1496 -------- coverage/lcov-report/src/index.ts.html | 643 ---- .../src/inline-table-of-column.ts.html | 169 - .../src/inline-table-of-objects.ts.html | 166 - .../lcov-report/src/insert-ignore.ts.html | 265 -- .../src/insert-not-matched.ts.html | 274 -- .../lcov-report/src/insert-object.ts.html | 178 - .../lcov-report/src/insert-objects.ts.html | 241 -- coverage/lcov-report/src/interpolate.ts.html | 277 -- coverage/lcov-report/src/interpolate1.ts.html | 139 - coverage/lcov-report/src/is-defined.ts.html | 142 - coverage/lcov-report/src/is-null.ts.html | 112 - coverage/lcov-report/src/is-object.ts.html | 106 - coverage/lcov-report/src/is-string.ts.html | 109 - coverage/lcov-report/src/is.ts.html | 133 - coverage/lcov-report/src/json-modify.ts.html | 190 -- .../lcov-report/src/json-path-exists.ts.html | 91 - coverage/lcov-report/src/json-path.ts.html | 154 - coverage/lcov-report/src/json-query.ts.html | 91 - coverage/lcov-report/src/json-value.ts.html | 91 - coverage/lcov-report/src/json.ts.html | 133 - .../lcov-report/src/keys-of-objects.ts.html | 178 - coverage/lcov-report/src/keywords.ts.html | 3022 ----------------- coverage/lcov-report/src/like.ts.html | 160 - .../src/limited-hints-identifier.ts.html | 127 - coverage/lcov-report/src/line.ts.html | 145 - coverage/lcov-report/src/lines.ts.html | 136 - coverage/lcov-report/src/list.ts.html | 154 - .../lcov-report/src/logical-false.ts.html | 133 - coverage/lcov-report/src/logical-true.ts.html | 133 - coverage/lcov-report/src/lt.ts.html | 124 - coverage/lcov-report/src/lte.ts.html | 124 - .../src/margin-of-first-line.ts.html | 124 - .../src/margin-of-last-line.ts.html | 106 - coverage/lcov-report/src/maybe-line.ts.html | 145 - coverage/lcov-report/src/maybe-lines.ts.html | 145 - coverage/lcov-report/src/merge-1n.ts.html | 220 -- coverage/lcov-report/src/modify-jsons.ts.html | 271 -- coverage/lcov-report/src/ne.ts.html | 139 - coverage/lcov-report/src/ng.ts.html | 109 - coverage/lcov-report/src/nl.ts.html | 109 - coverage/lcov-report/src/not-between.ts.html | 121 - coverage/lcov-report/src/not-distinct.ts.html | 130 - coverage/lcov-report/src/not-in.ts.html | 133 - coverage/lcov-report/src/not.ts.html | 100 - coverage/lcov-report/src/now.ts.html | 103 - coverage/lcov-report/src/nstring.ts.html | 124 - coverage/lcov-report/src/null.ts.html | 103 - coverage/lcov-report/src/number.ts.html | 121 - coverage/lcov-report/src/object-id.ts.html | 109 - coverage/lcov-report/src/op.ts.html | 136 - coverage/lcov-report/src/or.ts.html | 100 - coverage/lcov-report/src/order-by.ts.html | 112 - coverage/lcov-report/src/pick.ts.html | 127 - .../lcov-report/src/quoted-nstring.ts.html | 184 - .../lcov-report/src/random-identifier.ts.html | 133 - coverage/lcov-report/src/raw.ts.html | 109 - .../lcov-report/src/replace-objects.ts.html | 271 -- coverage/lcov-report/src/row.ts.html | 118 - coverage/lcov-report/src/rowset.ts.html | 121 - .../src/sanitised-identifier.ts.html | 115 - coverage/lcov-report/src/sanitised.ts.html | 109 - coverage/lcov-report/src/select.ts.html | 166 - coverage/lcov-report/src/star.ts.html | 121 - .../src/table-hint-limited.ts.html | 250 -- coverage/lcov-report/src/template.ts.html | 118 - coverage/lcov-report/src/test/client.ts.html | 514 --- coverage/lcov-report/src/test/index.html | 116 - coverage/lcov-report/src/top.ts.html | 175 - coverage/lcov-report/src/true-value.ts.html | 133 - coverage/lcov-report/src/unique.ts.html | 136 - coverage/lcov-report/src/unix.ts.html | 103 - .../lcov-report/src/update-objects.ts.html | 259 -- coverage/lcov-report/src/update.ts.html | 199 -- .../lcov-report/src/upsert-objects.ts.html | 295 -- coverage/lcov-report/src/where.ts.html | 664 ---- coverage/lcov.info | 2725 --------------- 108 files changed, 4 insertions(+), 25068 deletions(-) delete mode 100644 coverage/clover.xml delete mode 100644 coverage/coverage-final.json delete mode 100644 coverage/lcov-report/base.css delete mode 100644 coverage/lcov-report/block-navigation.js delete mode 100644 coverage/lcov-report/favicon.png delete mode 100644 coverage/lcov-report/index.html delete mode 100644 coverage/lcov-report/prettify.css delete mode 100644 coverage/lcov-report/prettify.js delete mode 100644 coverage/lcov-report/sort-arrow-sprite.png delete mode 100644 coverage/lcov-report/sorter.js delete mode 100644 coverage/lcov-report/src/and.ts.html delete mode 100644 coverage/lcov-report/src/assign-object.ts.html delete mode 100644 coverage/lcov-report/src/assign.ts.html delete mode 100644 coverage/lcov-report/src/auto.ts.html delete mode 100644 coverage/lcov-report/src/between.ts.html delete mode 100644 coverage/lcov-report/src/columns.ts.html delete mode 100644 coverage/lcov-report/src/defined.ts.html delete mode 100644 coverage/lcov-report/src/delete.ts.html delete mode 100644 coverage/lcov-report/src/demargin.ts.html delete mode 100644 coverage/lcov-report/src/distinct.ts.html delete mode 100644 coverage/lcov-report/src/eq.ts.html delete mode 100644 coverage/lcov-report/src/exists.ts.html delete mode 100644 coverage/lcov-report/src/fallback.ts.html delete mode 100644 coverage/lcov-report/src/false-value.ts.html delete mode 100644 coverage/lcov-report/src/gt.ts.html delete mode 100644 coverage/lcov-report/src/gte.ts.html delete mode 100644 coverage/lcov-report/src/identifier.ts.html delete mode 100644 coverage/lcov-report/src/identifiers.ts.html delete mode 100644 coverage/lcov-report/src/in.ts.html delete mode 100644 coverage/lcov-report/src/indent-tail.ts.html delete mode 100644 coverage/lcov-report/src/index.html delete mode 100644 coverage/lcov-report/src/index.ts.html delete mode 100644 coverage/lcov-report/src/inline-table-of-column.ts.html delete mode 100644 coverage/lcov-report/src/inline-table-of-objects.ts.html delete mode 100644 coverage/lcov-report/src/insert-ignore.ts.html delete mode 100644 coverage/lcov-report/src/insert-not-matched.ts.html delete mode 100644 coverage/lcov-report/src/insert-object.ts.html delete mode 100644 coverage/lcov-report/src/insert-objects.ts.html delete mode 100644 coverage/lcov-report/src/interpolate.ts.html delete mode 100644 coverage/lcov-report/src/interpolate1.ts.html delete mode 100644 coverage/lcov-report/src/is-defined.ts.html delete mode 100644 coverage/lcov-report/src/is-null.ts.html delete mode 100644 coverage/lcov-report/src/is-object.ts.html delete mode 100644 coverage/lcov-report/src/is-string.ts.html delete mode 100644 coverage/lcov-report/src/is.ts.html delete mode 100644 coverage/lcov-report/src/json-modify.ts.html delete mode 100644 coverage/lcov-report/src/json-path-exists.ts.html delete mode 100644 coverage/lcov-report/src/json-path.ts.html delete mode 100644 coverage/lcov-report/src/json-query.ts.html delete mode 100644 coverage/lcov-report/src/json-value.ts.html delete mode 100644 coverage/lcov-report/src/json.ts.html delete mode 100644 coverage/lcov-report/src/keys-of-objects.ts.html delete mode 100644 coverage/lcov-report/src/keywords.ts.html delete mode 100644 coverage/lcov-report/src/like.ts.html delete mode 100644 coverage/lcov-report/src/limited-hints-identifier.ts.html delete mode 100644 coverage/lcov-report/src/line.ts.html delete mode 100644 coverage/lcov-report/src/lines.ts.html delete mode 100644 coverage/lcov-report/src/list.ts.html delete mode 100644 coverage/lcov-report/src/logical-false.ts.html delete mode 100644 coverage/lcov-report/src/logical-true.ts.html delete mode 100644 coverage/lcov-report/src/lt.ts.html delete mode 100644 coverage/lcov-report/src/lte.ts.html delete mode 100644 coverage/lcov-report/src/margin-of-first-line.ts.html delete mode 100644 coverage/lcov-report/src/margin-of-last-line.ts.html delete mode 100644 coverage/lcov-report/src/maybe-line.ts.html delete mode 100644 coverage/lcov-report/src/maybe-lines.ts.html delete mode 100644 coverage/lcov-report/src/merge-1n.ts.html delete mode 100644 coverage/lcov-report/src/modify-jsons.ts.html delete mode 100644 coverage/lcov-report/src/ne.ts.html delete mode 100644 coverage/lcov-report/src/ng.ts.html delete mode 100644 coverage/lcov-report/src/nl.ts.html delete mode 100644 coverage/lcov-report/src/not-between.ts.html delete mode 100644 coverage/lcov-report/src/not-distinct.ts.html delete mode 100644 coverage/lcov-report/src/not-in.ts.html delete mode 100644 coverage/lcov-report/src/not.ts.html delete mode 100644 coverage/lcov-report/src/now.ts.html delete mode 100644 coverage/lcov-report/src/nstring.ts.html delete mode 100644 coverage/lcov-report/src/null.ts.html delete mode 100644 coverage/lcov-report/src/number.ts.html delete mode 100644 coverage/lcov-report/src/object-id.ts.html delete mode 100644 coverage/lcov-report/src/op.ts.html delete mode 100644 coverage/lcov-report/src/or.ts.html delete mode 100644 coverage/lcov-report/src/order-by.ts.html delete mode 100644 coverage/lcov-report/src/pick.ts.html delete mode 100644 coverage/lcov-report/src/quoted-nstring.ts.html delete mode 100644 coverage/lcov-report/src/random-identifier.ts.html delete mode 100644 coverage/lcov-report/src/raw.ts.html delete mode 100644 coverage/lcov-report/src/replace-objects.ts.html delete mode 100644 coverage/lcov-report/src/row.ts.html delete mode 100644 coverage/lcov-report/src/rowset.ts.html delete mode 100644 coverage/lcov-report/src/sanitised-identifier.ts.html delete mode 100644 coverage/lcov-report/src/sanitised.ts.html delete mode 100644 coverage/lcov-report/src/select.ts.html delete mode 100644 coverage/lcov-report/src/star.ts.html delete mode 100644 coverage/lcov-report/src/table-hint-limited.ts.html delete mode 100644 coverage/lcov-report/src/template.ts.html delete mode 100644 coverage/lcov-report/src/test/client.ts.html delete mode 100644 coverage/lcov-report/src/test/index.html delete mode 100644 coverage/lcov-report/src/top.ts.html delete mode 100644 coverage/lcov-report/src/true-value.ts.html delete mode 100644 coverage/lcov-report/src/unique.ts.html delete mode 100644 coverage/lcov-report/src/unix.ts.html delete mode 100644 coverage/lcov-report/src/update-objects.ts.html delete mode 100644 coverage/lcov-report/src/update.ts.html delete mode 100644 coverage/lcov-report/src/upsert-objects.ts.html delete mode 100644 coverage/lcov-report/src/where.ts.html delete mode 100644 coverage/lcov.info diff --git a/.gitignore b/.gitignore index 7f4a63d..ebca015 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ -cjs -mjs -node_modules .vscode/configurationCache.log .vscode/dryrun.log .vscode/targets.log +cjs +coverage +mjs +node_modules diff --git a/coverage/clover.xml b/coverage/clover.xml deleted file mode 100644 index 87d8d97..0000000 --- a/coverage/clover.xml +++ /dev/null @@ -1,1511 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/coverage/coverage-final.json b/coverage/coverage-final.json deleted file mode 100644 index b59059e..0000000 --- a/coverage/coverage-final.json +++ /dev/null @@ -1,95 +0,0 @@ -{"/Users/Mirek.Rusin/tsql/src/and.ts": {"path":"/Users/Mirek.Rusin/tsql/src/and.ts","statementMap":{"0":{"start":{"line":3,"column":9},"end":{"line":3,"column":null}},"1":{"start":{"line":5,"column":0},"end":{"line":5,"column":15}},"2":{"start":{"line":1,"column":20},"end":{"line":1,"column":null}},"3":{"start":{"line":5,"column":15},"end":{"line":5,"column":18}}},"fnMap":{},"branchMap":{},"s":{"0":0,"1":28,"2":22,"3":22},"f":{},"b":{}} -,"/Users/Mirek.Rusin/tsql/src/assign-object.ts": {"path":"/Users/Mirek.Rusin/tsql/src/assign-object.ts","statementMap":{"0":{"start":{"line":15,"column":16},"end":{"line":15,"column":28}},"1":{"start":{"line":43,"column":0},"end":{"line":43,"column":15}},"2":{"start":{"line":1,"column":19},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":15},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":21},"end":{"line":3,"column":null}},"5":{"start":{"line":4,"column":17},"end":{"line":4,"column":null}},"6":{"start":{"line":5,"column":17},"end":{"line":5,"column":null}},"7":{"start":{"line":16,"column":41},"end":{"line":16,"column":43}},"8":{"start":{"line":17,"column":45},"end":{"line":17,"column":null}},"9":{"start":{"line":18,"column":2},"end":{"line":31,"column":null}},"10":{"start":{"line":19,"column":4},"end":{"line":29,"column":null}},"11":{"start":{"line":20,"column":35},"end":{"line":20,"column":null}},"12":{"start":{"line":21,"column":6},"end":{"line":27,"column":null}},"13":{"start":{"line":28,"column":6},"end":{"line":28,"column":null}},"14":{"start":{"line":30,"column":4},"end":{"line":30,"column":null}},"15":{"start":{"line":32,"column":2},"end":{"line":39,"column":null}},"16":{"start":{"line":33,"column":14},"end":{"line":37,"column":null}},"17":{"start":{"line":38,"column":4},"end":{"line":38,"column":null}},"18":{"start":{"line":40,"column":2},"end":{"line":40,"column":null}},"19":{"start":{"line":43,"column":15},"end":{"line":43,"column":27}}},"fnMap":{"0":{"name":"assignObject","decl":{"start":{"line":15,"column":16},"end":{"line":15,"column":28}},"loc":{"start":{"line":15,"column":60},"end":{"line":41,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":19,"column":4},"end":{"line":29,"column":null}},"type":"if","locations":[{"start":{"line":19,"column":4},"end":{"line":29,"column":null}}]},"1":{"loc":{"start":{"line":23,"column":12},"end":{"line":23,"column":52}},"type":"binary-expr","locations":[{"start":{"line":23,"column":12},"end":{"line":23,"column":36}},{"start":{"line":23,"column":40},"end":{"line":23,"column":52}}]}},"s":{"0":0,"1":10,"2":22,"3":22,"4":22,"5":22,"6":22,"7":10,"8":10,"9":10,"10":22,"11":3,"12":3,"13":3,"14":19,"15":10,"16":1,"17":1,"18":10,"19":22},"f":{"0":10},"b":{"0":[3],"1":[3,1]}} -,"/Users/Mirek.Rusin/tsql/src/assign.ts": {"path":"/Users/Mirek.Rusin/tsql/src/assign.ts","statementMap":{"0":{"start":{"line":14,"column":16},"end":{"line":14,"column":22}},"1":{"start":{"line":28,"column":0},"end":{"line":28,"column":15}},"2":{"start":{"line":1,"column":15},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":21},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":14},"end":{"line":3,"column":null}},"5":{"start":{"line":4,"column":17},"end":{"line":4,"column":null}},"6":{"start":{"line":15,"column":2},"end":{"line":17,"column":null}},"7":{"start":{"line":16,"column":4},"end":{"line":16,"column":null}},"8":{"start":{"line":18,"column":2},"end":{"line":20,"column":null}},"9":{"start":{"line":19,"column":4},"end":{"line":19,"column":null}},"10":{"start":{"line":21,"column":2},"end":{"line":23,"column":null}},"11":{"start":{"line":22,"column":4},"end":{"line":22,"column":null}},"12":{"start":{"line":24,"column":31},"end":{"line":24,"column":null}},"13":{"start":{"line":25,"column":2},"end":{"line":25,"column":null}},"14":{"start":{"line":28,"column":15},"end":{"line":28,"column":21}}},"fnMap":{"0":{"name":"assign","decl":{"start":{"line":14,"column":16},"end":{"line":14,"column":22}},"loc":{"start":{"line":14,"column":60},"end":{"line":26,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":15,"column":2},"end":{"line":17,"column":null}},"type":"if","locations":[{"start":{"line":15,"column":2},"end":{"line":17,"column":null}}]},"1":{"loc":{"start":{"line":18,"column":2},"end":{"line":20,"column":null}},"type":"if","locations":[{"start":{"line":18,"column":2},"end":{"line":20,"column":null}}]},"2":{"loc":{"start":{"line":21,"column":2},"end":{"line":23,"column":null}},"type":"if","locations":[{"start":{"line":21,"column":2},"end":{"line":23,"column":null}}]}},"s":{"0":0,"1":31,"2":22,"3":22,"4":22,"5":22,"6":31,"7":9,"8":22,"9":15,"10":7,"11":6,"12":1,"13":1,"14":22},"f":{"0":31},"b":{"0":[9],"1":[15],"2":[6]}} -,"/Users/Mirek.Rusin/tsql/src/auto.ts": {"path":"/Users/Mirek.Rusin/tsql/src/auto.ts","statementMap":{"0":{"start":{"line":33,"column":13},"end":{"line":33,"column":17}},"1":{"start":{"line":60,"column":0},"end":{"line":60,"column":15}},"2":{"start":{"line":1,"column":23},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":17},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":20},"end":{"line":3,"column":null}},"5":{"start":{"line":4,"column":18},"end":{"line":4,"column":null}},"6":{"start":{"line":5,"column":19},"end":{"line":5,"column":null}},"7":{"start":{"line":6,"column":16},"end":{"line":6,"column":null}},"8":{"start":{"line":7,"column":14},"end":{"line":7,"column":null}},"9":{"start":{"line":8,"column":22},"end":{"line":8,"column":null}},"10":{"start":{"line":34,"column":2},"end":{"line":58,"column":null}},"11":{"start":{"line":35,"column":4},"end":{"line":37,"column":null}},"12":{"start":{"line":36,"column":6},"end":{"line":36,"column":null}},"13":{"start":{"line":38,"column":4},"end":{"line":57,"column":null}},"14":{"start":{"line":39,"column":24},"end":{"line":39,"column":null}},"15":{"start":{"line":40,"column":21},"end":{"line":40,"column":null}},"16":{"start":{"line":41,"column":22},"end":{"line":41,"column":null}},"17":{"start":{"line":42,"column":21},"end":{"line":42,"column":null}},"18":{"start":{"line":44,"column":8},"end":{"line":46,"column":null}},"19":{"start":{"line":45,"column":10},"end":{"line":45,"column":null}},"20":{"start":{"line":47,"column":8},"end":{"line":49,"column":null}},"21":{"start":{"line":48,"column":10},"end":{"line":48,"column":null}},"22":{"start":{"line":50,"column":8},"end":{"line":52,"column":null}},"23":{"start":{"line":51,"column":10},"end":{"line":51,"column":null}},"24":{"start":{"line":53,"column":8},"end":{"line":53,"column":null}},"25":{"start":{"line":56,"column":8},"end":{"line":56,"column":null}},"26":{"start":{"line":60,"column":15},"end":{"line":60,"column":19}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":34,"column":2},"end":{"line":34,"column":3}},"loc":{"start":{"line":34,"column":3},"end":{"line":58,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":35,"column":4},"end":{"line":37,"column":null}},"type":"if","locations":[{"start":{"line":35,"column":4},"end":{"line":37,"column":null}}]},"1":{"loc":{"start":{"line":38,"column":4},"end":{"line":57,"column":null}},"type":"switch","locations":[{"start":{"line":39,"column":6},"end":{"line":39,"column":null}},{"start":{"line":40,"column":6},"end":{"line":40,"column":null}},{"start":{"line":41,"column":6},"end":{"line":41,"column":null}},{"start":{"line":42,"column":6},"end":{"line":42,"column":null}},{"start":{"line":43,"column":6},"end":{"line":54,"column":null}},{"start":{"line":55,"column":6},"end":{"line":56,"column":null}}]},"2":{"loc":{"start":{"line":41,"column":29},"end":{"line":41,"column":59}},"type":"cond-expr","locations":[{"start":{"line":41,"column":37},"end":{"line":41,"column":46}},{"start":{"line":41,"column":49},"end":{"line":41,"column":59}}]},"3":{"loc":{"start":{"line":44,"column":8},"end":{"line":46,"column":null}},"type":"if","locations":[{"start":{"line":44,"column":8},"end":{"line":46,"column":null}}]},"4":{"loc":{"start":{"line":47,"column":8},"end":{"line":49,"column":null}},"type":"if","locations":[{"start":{"line":47,"column":8},"end":{"line":49,"column":null}}]},"5":{"loc":{"start":{"line":50,"column":8},"end":{"line":52,"column":null}},"type":"if","locations":[{"start":{"line":50,"column":8},"end":{"line":52,"column":null}}]},"6":{"loc":{"start":{"line":50,"column":12},"end":{"line":50,"column":70}},"type":"binary-expr","locations":[{"start":{"line":50,"column":12},"end":{"line":50,"column":45}},{"start":{"line":50,"column":45},"end":{"line":50,"column":70}}]}},"s":{"0":0,"1":8879,"2":22,"3":22,"4":22,"5":22,"6":22,"7":22,"8":22,"9":22,"10":22,"11":13442,"12":9096,"13":4346,"14":1,"15":75,"16":9,"17":4246,"18":15,"19":7,"20":8,"21":0,"22":8,"23":0,"24":8,"25":0,"26":22},"f":{"0":13442},"b":{"0":[9096],"1":[1,75,9,4246,15,0],"2":[6,3],"3":[7],"4":[0],"5":[0],"6":[8,8]}} -,"/Users/Mirek.Rusin/tsql/src/between.ts": {"path":"/Users/Mirek.Rusin/tsql/src/between.ts","statementMap":{"0":{"start":{"line":6,"column":13},"end":{"line":6,"column":20}},"1":{"start":{"line":12,"column":0},"end":{"line":12,"column":15}},"2":{"start":{"line":1,"column":21},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":15},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":17},"end":{"line":3,"column":null}},"5":{"start":{"line":7,"column":2},"end":{"line":10,"column":58}},"6":{"start":{"line":8,"column":4},"end":{"line":10,"column":58}},"7":{"start":{"line":12,"column":15},"end":{"line":12,"column":22}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":7,"column":2},"end":{"line":7,"column":6}},"loc":{"start":{"line":8,"column":4},"end":{"line":10,"column":58}}}},"branchMap":{"0":{"loc":{"start":{"line":8,"column":4},"end":{"line":10,"column":58}},"type":"cond-expr","locations":[{"start":{"line":9,"column":6},"end":{"line":9,"column":null}},{"start":{"line":10,"column":6},"end":{"line":10,"column":58}}]},"1":{"loc":{"start":{"line":8,"column":4},"end":{"line":8,"column":null}},"type":"binary-expr","locations":[{"start":{"line":8,"column":4},"end":{"line":8,"column":32}},{"start":{"line":8,"column":32},"end":{"line":8,"column":null}}]}},"s":{"0":0,"1":22,"2":22,"3":22,"4":22,"5":22,"6":1,"7":22},"f":{"0":1},"b":{"0":[0,1],"1":[1,1]}} -,"/Users/Mirek.Rusin/tsql/src/columns.ts": {"path":"/Users/Mirek.Rusin/tsql/src/columns.ts","statementMap":{"0":{"start":{"line":11,"column":13},"end":{"line":11,"column":20}},"1":{"start":{"line":22,"column":0},"end":{"line":22,"column":15}},"2":{"start":{"line":1,"column":15},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":17},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":21},"end":{"line":3,"column":null}},"5":{"start":{"line":12,"column":2},"end":{"line":20,"column":null}},"6":{"start":{"line":13,"column":35},"end":{"line":13,"column":37}},"7":{"start":{"line":14,"column":4},"end":{"line":18,"column":null}},"8":{"start":{"line":15,"column":6},"end":{"line":17,"column":null}},"9":{"start":{"line":16,"column":8},"end":{"line":16,"column":null}},"10":{"start":{"line":19,"column":4},"end":{"line":19,"column":null}},"11":{"start":{"line":19,"column":32},"end":{"line":19,"column":null}},"12":{"start":{"line":22,"column":15},"end":{"line":22,"column":22}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":12,"column":2},"end":{"line":12,"column":3}},"loc":{"start":{"line":12,"column":85},"end":{"line":20,"column":null}}},"1":{"name":"(anonymous_5)","decl":{"start":{"line":19,"column":27},"end":{"line":19,"column":32}},"loc":{"start":{"line":19,"column":32},"end":{"line":19,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":12,"column":49},"end":{"line":12,"column":85}},"type":"default-arg","locations":[{"start":{"line":12,"column":83},"end":{"line":12,"column":85}}]},"1":{"loc":{"start":{"line":15,"column":6},"end":{"line":17,"column":null}},"type":"if","locations":[{"start":{"line":15,"column":6},"end":{"line":17,"column":null}}]},"2":{"loc":{"start":{"line":16,"column":20},"end":{"line":16,"column":60}},"type":"cond-expr","locations":[{"start":{"line":16,"column":43},"end":{"line":16,"column":49}},{"start":{"line":16,"column":49},"end":{"line":16,"column":60}}]}},"s":{"0":0,"1":0,"2":22,"3":22,"4":22,"5":22,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":22},"f":{"0":0,"1":0},"b":{"0":[0],"1":[0],"2":[0,0]}} -,"/Users/Mirek.Rusin/tsql/src/defined.ts": {"path":"/Users/Mirek.Rusin/tsql/src/defined.ts","statementMap":{"0":{"start":{"line":15,"column":0},"end":{"line":15,"column":15}},"1":{"start":{"line":3,"column":2},"end":{"line":13,"column":null}},"2":{"start":{"line":4,"column":20},"end":{"line":4,"column":null}},"3":{"start":{"line":5,"column":4},"end":{"line":11,"column":null}},"4":{"start":{"line":6,"column":6},"end":{"line":10,"column":null}},"5":{"start":{"line":9,"column":8},"end":{"line":9,"column":null}},"6":{"start":{"line":12,"column":4},"end":{"line":12,"column":null}},"7":{"start":{"line":15,"column":15},"end":{"line":15,"column":null}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":3,"column":2},"end":{"line":3,"column":3}},"loc":{"start":{"line":3,"column":3},"end":{"line":13,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":6,"column":6},"end":{"line":10,"column":null}},"type":"if","locations":[{"start":{"line":6,"column":6},"end":{"line":10,"column":null}}]}},"s":{"0":10,"1":22,"2":10,"3":10,"4":24,"5":1,"6":10,"7":22},"f":{"0":10},"b":{"0":[1]}} -,"/Users/Mirek.Rusin/tsql/src/delete.ts": {"path":"/Users/Mirek.Rusin/tsql/src/delete.ts","statementMap":{"0":{"start":{"line":19,"column":0},"end":{"line":19,"column":15}},"1":{"start":{"line":10,"column":13},"end":{"line":10,"column":20}},"2":{"start":{"line":1,"column":21},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":15},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":17},"end":{"line":3,"column":null}},"5":{"start":{"line":6,"column":17},"end":{"line":6,"column":null}},"6":{"start":{"line":7,"column":20},"end":{"line":7,"column":null}},"7":{"start":{"line":11,"column":2},"end":{"line":16,"column":null}},"8":{"start":{"line":12,"column":4},"end":{"line":16,"column":null}},"9":{"start":{"line":19,"column":15},"end":{"line":19,"column":22}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":11,"column":2},"end":{"line":11,"column":3}},"loc":{"start":{"line":12,"column":4},"end":{"line":16,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":14,"column":6},"end":{"line":16,"column":null}},"type":"cond-expr","locations":[{"start":{"line":15,"column":8},"end":{"line":15,"column":47}},{"start":{"line":16,"column":8},"end":{"line":16,"column":null}}]}},"s":{"0":13,"1":0,"2":22,"3":22,"4":22,"5":22,"6":22,"7":22,"8":13,"9":22},"f":{"0":13},"b":{"0":[13,0]}} -,"/Users/Mirek.Rusin/tsql/src/demargin.ts": {"path":"/Users/Mirek.Rusin/tsql/src/demargin.ts","statementMap":{"0":{"start":{"line":33,"column":0},"end":{"line":33,"column":15}},"1":{"start":{"line":4,"column":13},"end":{"line":4,"column":21}},"2":{"start":{"line":1,"column":21},"end":{"line":1,"column":null}},"3":{"start":{"line":5,"column":2},"end":{"line":31,"column":null}},"4":{"start":{"line":6,"column":4},"end":{"line":8,"column":null}},"5":{"start":{"line":7,"column":6},"end":{"line":7,"column":null}},"6":{"start":{"line":9,"column":18},"end":{"line":9,"column":null}},"7":{"start":{"line":10,"column":4},"end":{"line":12,"column":null}},"8":{"start":{"line":10,"column":60},"end":{"line":10,"column":72}},"9":{"start":{"line":11,"column":6},"end":{"line":11,"column":null}},"10":{"start":{"line":13,"column":4},"end":{"line":15,"column":null}},"11":{"start":{"line":13,"column":75},"end":{"line":13,"column":87}},"12":{"start":{"line":14,"column":6},"end":{"line":14,"column":null}},"13":{"start":{"line":16,"column":17},"end":{"line":16,"column":null}},"14":{"start":{"line":17,"column":4},"end":{"line":24,"column":null}},"15":{"start":{"line":18,"column":6},"end":{"line":23,"column":null}},"16":{"start":{"line":18,"column":19},"end":{"line":18,"column":22}},"17":{"start":{"line":19,"column":8},"end":{"line":22,"column":null}},"18":{"start":{"line":20,"column":10},"end":{"line":20,"column":null}},"19":{"start":{"line":21,"column":10},"end":{"line":21,"column":null}},"20":{"start":{"line":25,"column":4},"end":{"line":27,"column":null}},"21":{"start":{"line":26,"column":6},"end":{"line":26,"column":null}},"22":{"start":{"line":28,"column":4},"end":{"line":30,"column":null}},"23":{"start":{"line":29,"column":16},"end":{"line":29,"column":null}},"24":{"start":{"line":33,"column":15},"end":{"line":33,"column":23}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":5,"column":2},"end":{"line":5,"column":3}},"loc":{"start":{"line":5,"column":3},"end":{"line":31,"column":null}}},"1":{"name":"(anonymous_5)","decl":{"start":{"line":10,"column":55},"end":{"line":10,"column":60}},"loc":{"start":{"line":10,"column":60},"end":{"line":10,"column":72}}},"2":{"name":"(anonymous_6)","decl":{"start":{"line":13,"column":70},"end":{"line":13,"column":75}},"loc":{"start":{"line":13,"column":75},"end":{"line":13,"column":87}}},"3":{"name":"(anonymous_7)","decl":{"start":{"line":29,"column":11},"end":{"line":29,"column":16}},"loc":{"start":{"line":29,"column":16},"end":{"line":29,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":6,"column":4},"end":{"line":8,"column":null}},"type":"if","locations":[{"start":{"line":6,"column":4},"end":{"line":8,"column":null}}]},"1":{"loc":{"start":{"line":10,"column":4},"end":{"line":12,"column":null}},"type":"if","locations":[{"start":{"line":10,"column":4},"end":{"line":12,"column":null}}]},"2":{"loc":{"start":{"line":10,"column":8},"end":{"line":10,"column":72}},"type":"binary-expr","locations":[{"start":{"line":10,"column":8},"end":{"line":10,"column":30}},{"start":{"line":10,"column":30},"end":{"line":10,"column":72}}]},"3":{"loc":{"start":{"line":13,"column":4},"end":{"line":15,"column":null}},"type":"if","locations":[{"start":{"line":13,"column":4},"end":{"line":15,"column":null}}]},"4":{"loc":{"start":{"line":13,"column":8},"end":{"line":13,"column":87}},"type":"binary-expr","locations":[{"start":{"line":13,"column":8},"end":{"line":13,"column":30}},{"start":{"line":13,"column":30},"end":{"line":13,"column":87}}]},"5":{"loc":{"start":{"line":19,"column":8},"end":{"line":22,"column":null}},"type":"if","locations":[{"start":{"line":19,"column":8},"end":{"line":22,"column":null}}]},"6":{"loc":{"start":{"line":25,"column":4},"end":{"line":27,"column":null}},"type":"if","locations":[{"start":{"line":25,"column":4},"end":{"line":27,"column":null}}]}},"s":{"0":421,"1":0,"2":22,"3":22,"4":421,"5":0,"6":421,"7":421,"8":340,"9":81,"10":421,"11":683,"12":66,"13":421,"14":421,"15":6910,"16":6910,"17":65027,"18":6909,"19":6909,"20":421,"21":0,"22":421,"23":6910,"24":22},"f":{"0":421,"1":340,"2":683,"3":6910},"b":{"0":[0],"1":[81],"2":[421,421],"3":[66],"4":[421,421],"5":[6909],"6":[0]}} -,"/Users/Mirek.Rusin/tsql/src/distinct.ts": {"path":"/Users/Mirek.Rusin/tsql/src/distinct.ts","statementMap":{"0":{"start":{"line":22,"column":0},"end":{"line":22,"column":15}},"1":{"start":{"line":13,"column":13},"end":{"line":13,"column":21}},"2":{"start":{"line":1,"column":21},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":15},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":21},"end":{"line":3,"column":null}},"5":{"start":{"line":14,"column":2},"end":{"line":20,"column":null}},"6":{"start":{"line":15,"column":4},"end":{"line":17,"column":null}},"7":{"start":{"line":16,"column":6},"end":{"line":16,"column":null}},"8":{"start":{"line":18,"column":17},"end":{"line":18,"column":null}},"9":{"start":{"line":19,"column":4},"end":{"line":19,"column":null}},"10":{"start":{"line":22,"column":15},"end":{"line":22,"column":23}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":14,"column":2},"end":{"line":14,"column":3}},"loc":{"start":{"line":14,"column":20},"end":{"line":20,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":15,"column":4},"end":{"line":17,"column":null}},"type":"if","locations":[{"start":{"line":15,"column":4},"end":{"line":17,"column":null}}]},"1":{"loc":{"start":{"line":15,"column":8},"end":{"line":15,"column":66}},"type":"binary-expr","locations":[{"start":{"line":15,"column":8},"end":{"line":15,"column":38}},{"start":{"line":15,"column":38},"end":{"line":15,"column":66}}]}},"s":{"0":22,"1":0,"2":22,"3":22,"4":22,"5":22,"6":0,"7":0,"8":0,"9":0,"10":22},"f":{"0":0},"b":{"0":[0],"1":[0,0]}} -,"/Users/Mirek.Rusin/tsql/src/eq.ts": {"path":"/Users/Mirek.Rusin/tsql/src/eq.ts","statementMap":{"0":{"start":{"line":28,"column":0},"end":{"line":28,"column":15}},"1":{"start":{"line":22,"column":13},"end":{"line":22,"column":15}},"2":{"start":{"line":1,"column":21},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":15},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":19},"end":{"line":3,"column":null}},"5":{"start":{"line":4,"column":17},"end":{"line":4,"column":null}},"6":{"start":{"line":8,"column":2},"end":{"line":11,"column":20}},"7":{"start":{"line":9,"column":4},"end":{"line":11,"column":20}},"8":{"start":{"line":23,"column":2},"end":{"line":26,"column":46}},"9":{"start":{"line":24,"column":4},"end":{"line":26,"column":46}},"10":{"start":{"line":28,"column":15},"end":{"line":28,"column":17}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":8,"column":2},"end":{"line":8,"column":3}},"loc":{"start":{"line":9,"column":4},"end":{"line":11,"column":20}}},"1":{"name":"(anonymous_5)","decl":{"start":{"line":23,"column":2},"end":{"line":23,"column":3}},"loc":{"start":{"line":24,"column":4},"end":{"line":26,"column":46}}}},"branchMap":{"0":{"loc":{"start":{"line":9,"column":4},"end":{"line":11,"column":20}},"type":"cond-expr","locations":[{"start":{"line":10,"column":6},"end":{"line":10,"column":19}},{"start":{"line":11,"column":6},"end":{"line":11,"column":20}}]},"1":{"loc":{"start":{"line":24,"column":4},"end":{"line":26,"column":46}},"type":"cond-expr","locations":[{"start":{"line":25,"column":6},"end":{"line":25,"column":null}},{"start":{"line":26,"column":6},"end":{"line":26,"column":46}}]}},"s":{"0":85,"1":0,"2":22,"3":22,"4":22,"5":22,"6":22,"7":53,"8":22,"9":64,"10":22},"f":{"0":53,"1":64},"b":{"0":[15,38],"1":[11,53]}} -,"/Users/Mirek.Rusin/tsql/src/exists.ts": {"path":"/Users/Mirek.Rusin/tsql/src/exists.ts","statementMap":{"0":{"start":{"line":16,"column":0},"end":{"line":16,"column":15}},"1":{"start":{"line":9,"column":13},"end":{"line":9,"column":19}},"2":{"start":{"line":1,"column":21},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":15},"end":{"line":2,"column":null}},"4":{"start":{"line":5,"column":17},"end":{"line":5,"column":null}},"5":{"start":{"line":6,"column":20},"end":{"line":6,"column":null}},"6":{"start":{"line":10,"column":2},"end":{"line":14,"column":null}},"7":{"start":{"line":11,"column":19},"end":{"line":11,"column":null}},"8":{"start":{"line":12,"column":19},"end":{"line":12,"column":null}},"9":{"start":{"line":13,"column":4},"end":{"line":13,"column":null}},"10":{"start":{"line":16,"column":15},"end":{"line":16,"column":21}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":10,"column":2},"end":{"line":10,"column":3}},"loc":{"start":{"line":10,"column":24},"end":{"line":14,"column":null}}}},"branchMap":{},"s":{"0":0,"1":0,"2":22,"3":22,"4":22,"5":22,"6":22,"7":0,"8":0,"9":0,"10":22},"f":{"0":0},"b":{}} -,"/Users/Mirek.Rusin/tsql/src/fallback.ts": {"path":"/Users/Mirek.Rusin/tsql/src/fallback.ts","statementMap":{"0":{"start":{"line":11,"column":0},"end":{"line":11,"column":15}},"1":{"start":{"line":5,"column":13},"end":{"line":5,"column":21}},"2":{"start":{"line":1,"column":14},"end":{"line":1,"column":null}},"3":{"start":{"line":6,"column":2},"end":{"line":9,"column":null}},"4":{"start":{"line":7,"column":4},"end":{"line":9,"column":null}},"5":{"start":{"line":11,"column":15},"end":{"line":11,"column":23}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":6,"column":2},"end":{"line":6,"column":6}},"loc":{"start":{"line":7,"column":4},"end":{"line":9,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":7,"column":4},"end":{"line":9,"column":null}},"type":"cond-expr","locations":[{"start":{"line":8,"column":6},"end":{"line":8,"column":null}},{"start":{"line":9,"column":6},"end":{"line":9,"column":null}}]}},"s":{"0":105,"1":0,"2":22,"3":22,"4":105,"5":22},"f":{"0":105},"b":{"0":[35,70]}} -,"/Users/Mirek.Rusin/tsql/src/false-value.ts": {"path":"/Users/Mirek.Rusin/tsql/src/false-value.ts","statementMap":{"0":{"start":{"line":16,"column":0},"end":{"line":16,"column":15}},"1":{"start":{"line":13,"column":13},"end":{"line":13,"column":23}},"2":{"start":{"line":2,"column":16},"end":{"line":2,"column":null}},"3":{"start":{"line":14,"column":2},"end":{"line":14,"column":null}},"4":{"start":{"line":16,"column":15},"end":{"line":16,"column":25}}},"fnMap":{},"branchMap":{},"s":{"0":3,"1":0,"2":22,"3":22,"4":22},"f":{},"b":{}} -,"/Users/Mirek.Rusin/tsql/src/gt.ts": {"path":"/Users/Mirek.Rusin/tsql/src/gt.ts","statementMap":{"0":{"start":{"line":13,"column":0},"end":{"line":13,"column":15}},"1":{"start":{"line":9,"column":13},"end":{"line":9,"column":15}},"2":{"start":{"line":1,"column":15},"end":{"line":1,"column":null}},"3":{"start":{"line":10,"column":2},"end":{"line":11,"column":null}},"4":{"start":{"line":11,"column":4},"end":{"line":11,"column":null}},"5":{"start":{"line":13,"column":15},"end":{"line":13,"column":17}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":10,"column":2},"end":{"line":10,"column":3}},"loc":{"start":{"line":11,"column":4},"end":{"line":11,"column":null}}}},"branchMap":{},"s":{"0":24,"1":0,"2":22,"3":22,"4":5,"5":22},"f":{"0":5},"b":{}} -,"/Users/Mirek.Rusin/tsql/src/gte.ts": {"path":"/Users/Mirek.Rusin/tsql/src/gte.ts","statementMap":{"0":{"start":{"line":13,"column":0},"end":{"line":13,"column":15}},"1":{"start":{"line":9,"column":13},"end":{"line":9,"column":16}},"2":{"start":{"line":1,"column":15},"end":{"line":1,"column":null}},"3":{"start":{"line":10,"column":2},"end":{"line":11,"column":null}},"4":{"start":{"line":11,"column":4},"end":{"line":11,"column":null}},"5":{"start":{"line":13,"column":15},"end":{"line":13,"column":18}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":10,"column":2},"end":{"line":10,"column":3}},"loc":{"start":{"line":11,"column":4},"end":{"line":11,"column":null}}}},"branchMap":{},"s":{"0":22,"1":0,"2":22,"3":22,"4":1,"5":22},"f":{"0":1},"b":{}} -,"/Users/Mirek.Rusin/tsql/src/identifier.ts": {"path":"/Users/Mirek.Rusin/tsql/src/identifier.ts","statementMap":{"0":{"start":{"line":82,"column":0},"end":{"line":82,"column":15}},"1":{"start":{"line":40,"column":16},"end":{"line":40,"column":26}},"2":{"start":{"line":11,"column":16},"end":{"line":11,"column":23}},"3":{"start":{"line":78,"column":16},"end":{"line":78,"column":30}},"4":{"start":{"line":71,"column":16},"end":{"line":71,"column":25}},"5":{"start":{"line":66,"column":16},"end":{"line":66,"column":25}},"6":{"start":{"line":19,"column":16},"end":{"line":19,"column":21}},"7":{"start":{"line":1,"column":20},"end":{"line":1,"column":null}},"8":{"start":{"line":2,"column":16},"end":{"line":2,"column":null}},"9":{"start":{"line":3,"column":21},"end":{"line":3,"column":null}},"10":{"start":{"line":12,"column":2},"end":{"line":14,"column":null}},"11":{"start":{"line":20,"column":2},"end":{"line":20,"column":null}},"12":{"start":{"line":41,"column":2},"end":{"line":43,"column":null}},"13":{"start":{"line":42,"column":4},"end":{"line":42,"column":null}},"14":{"start":{"line":44,"column":2},"end":{"line":58,"column":null}},"15":{"start":{"line":45,"column":4},"end":{"line":48,"column":null}},"16":{"start":{"line":46,"column":35},"end":{"line":46,"column":null}},"17":{"start":{"line":47,"column":6},"end":{"line":47,"column":null}},"18":{"start":{"line":49,"column":4},"end":{"line":52,"column":null}},"19":{"start":{"line":50,"column":35},"end":{"line":50,"column":null}},"20":{"start":{"line":51,"column":6},"end":{"line":51,"column":null}},"21":{"start":{"line":53,"column":4},"end":{"line":56,"column":null}},"22":{"start":{"line":54,"column":35},"end":{"line":54,"column":null}},"23":{"start":{"line":55,"column":6},"end":{"line":55,"column":null}},"24":{"start":{"line":57,"column":4},"end":{"line":57,"column":null}},"25":{"start":{"line":57,"column":45},"end":{"line":57,"column":72}},"26":{"start":{"line":59,"column":2},"end":{"line":61,"column":null}},"27":{"start":{"line":59,"column":47},"end":{"line":59,"column":88}},"28":{"start":{"line":60,"column":4},"end":{"line":60,"column":null}},"29":{"start":{"line":60,"column":50},"end":{"line":60,"column":64}},"30":{"start":{"line":62,"column":2},"end":{"line":62,"column":null}},"31":{"start":{"line":67,"column":2},"end":{"line":67,"column":null}},"32":{"start":{"line":72,"column":2},"end":{"line":74,"column":null}},"33":{"start":{"line":79,"column":2},"end":{"line":79,"column":null}},"34":{"start":{"line":82,"column":15},"end":{"line":82,"column":25}}},"fnMap":{"0":{"name":"isPlain","decl":{"start":{"line":11,"column":16},"end":{"line":11,"column":23}},"loc":{"start":{"line":11,"column":37},"end":{"line":16,"column":null}}},"1":{"name":"quote","decl":{"start":{"line":19,"column":16},"end":{"line":19,"column":21}},"loc":{"start":{"line":19,"column":36},"end":{"line":21,"column":null}}},"2":{"name":"identifier","decl":{"start":{"line":40,"column":16},"end":{"line":40,"column":26}},"loc":{"start":{"line":40,"column":44},"end":{"line":63,"column":null}}},"3":{"name":"(anonymous_12)","decl":{"start":{"line":57,"column":40},"end":{"line":57,"column":45}},"loc":{"start":{"line":57,"column":45},"end":{"line":57,"column":72}}},"4":{"name":"(anonymous_13)","decl":{"start":{"line":59,"column":42},"end":{"line":59,"column":47}},"loc":{"start":{"line":59,"column":47},"end":{"line":59,"column":88}}},"5":{"name":"(anonymous_14)","decl":{"start":{"line":60,"column":45},"end":{"line":60,"column":50}},"loc":{"start":{"line":60,"column":50},"end":{"line":60,"column":64}}},"6":{"name":"jsonValue","decl":{"start":{"line":66,"column":16},"end":{"line":66,"column":25}},"loc":{"start":{"line":66,"column":61},"end":{"line":68,"column":null}}},"7":{"name":"jsonQuery","decl":{"start":{"line":71,"column":16},"end":{"line":71,"column":25}},"loc":{"start":{"line":71,"column":81},"end":{"line":75,"column":null}}},"8":{"name":"jsonPathExists","decl":{"start":{"line":78,"column":16},"end":{"line":78,"column":30}},"loc":{"start":{"line":78,"column":66},"end":{"line":80,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":13,"column":4},"end":{"line":14,"column":null}},"type":"binary-expr","locations":[{"start":{"line":13,"column":4},"end":{"line":13,"column":34}},{"start":{"line":14,"column":4},"end":{"line":14,"column":null}}]},"1":{"loc":{"start":{"line":41,"column":2},"end":{"line":43,"column":null}},"type":"if","locations":[{"start":{"line":41,"column":2},"end":{"line":43,"column":null}}]},"2":{"loc":{"start":{"line":44,"column":2},"end":{"line":58,"column":null}},"type":"if","locations":[{"start":{"line":44,"column":2},"end":{"line":58,"column":null}}]},"3":{"loc":{"start":{"line":45,"column":4},"end":{"line":48,"column":null}},"type":"if","locations":[{"start":{"line":45,"column":4},"end":{"line":48,"column":null}}]},"4":{"loc":{"start":{"line":49,"column":4},"end":{"line":52,"column":null}},"type":"if","locations":[{"start":{"line":49,"column":4},"end":{"line":52,"column":null}}]},"5":{"loc":{"start":{"line":53,"column":4},"end":{"line":56,"column":null}},"type":"if","locations":[{"start":{"line":53,"column":4},"end":{"line":56,"column":null}}]},"6":{"loc":{"start":{"line":57,"column":45},"end":{"line":57,"column":72}},"type":"cond-expr","locations":[{"start":{"line":57,"column":58},"end":{"line":57,"column":62}},{"start":{"line":57,"column":62},"end":{"line":57,"column":72}}]},"7":{"loc":{"start":{"line":59,"column":2},"end":{"line":61,"column":null}},"type":"if","locations":[{"start":{"line":59,"column":2},"end":{"line":61,"column":null}}]},"8":{"loc":{"start":{"line":59,"column":6},"end":{"line":59,"column":91}},"type":"binary-expr","locations":[{"start":{"line":59,"column":6},"end":{"line":59,"column":30}},{"start":{"line":59,"column":30},"end":{"line":59,"column":91}}]},"9":{"loc":{"start":{"line":59,"column":47},"end":{"line":59,"column":88}},"type":"binary-expr","locations":[{"start":{"line":59,"column":47},"end":{"line":59,"column":72}},{"start":{"line":59,"column":72},"end":{"line":59,"column":88}}]},"10":{"loc":{"start":{"line":72,"column":9},"end":{"line":74,"column":null}},"type":"cond-expr","locations":[{"start":{"line":73,"column":4},"end":{"line":73,"column":null}},{"start":{"line":74,"column":4},"end":{"line":74,"column":null}}]}},"s":{"0":343,"1":0,"2":0,"3":22,"4":22,"5":22,"6":0,"7":22,"8":22,"9":22,"10":424,"11":159,"12":485,"13":1,"14":484,"15":425,"16":6,"17":6,"18":419,"19":1,"20":1,"21":418,"22":2,"23":2,"24":416,"25":424,"26":59,"27":118,"28":59,"29":118,"30":0,"31":6,"32":1,"33":2,"34":22},"f":{"0":424,"1":159,"2":485,"3":424,"4":118,"5":118,"6":6,"7":1,"8":2},"b":{"0":[424,282],"1":[1],"2":[425],"3":[6],"4":[1],"5":[2],"6":[265,159],"7":[59],"8":[59,59],"9":[118,0],"10":[1,0]}} -,"/Users/Mirek.Rusin/tsql/src/identifiers.ts": {"path":"/Users/Mirek.Rusin/tsql/src/identifiers.ts","statementMap":{"0":{"start":{"line":15,"column":0},"end":{"line":15,"column":15}},"1":{"start":{"line":11,"column":13},"end":{"line":11,"column":24}},"2":{"start":{"line":1,"column":15},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":17},"end":{"line":2,"column":null}},"4":{"start":{"line":12,"column":2},"end":{"line":13,"column":null}},"5":{"start":{"line":13,"column":4},"end":{"line":13,"column":null}},"6":{"start":{"line":15,"column":15},"end":{"line":15,"column":26}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":12,"column":2},"end":{"line":12,"column":3}},"loc":{"start":{"line":13,"column":4},"end":{"line":13,"column":null}}}},"branchMap":{},"s":{"0":0,"1":0,"2":22,"3":22,"4":22,"5":0,"6":22},"f":{"0":0},"b":{}} -,"/Users/Mirek.Rusin/tsql/src/in.ts": {"path":"/Users/Mirek.Rusin/tsql/src/in.ts","statementMap":{"0":{"start":{"line":24,"column":0},"end":{"line":24,"column":15}},"1":{"start":{"line":16,"column":13},"end":{"line":16,"column":16}},"2":{"start":{"line":1,"column":15},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":17},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":21},"end":{"line":3,"column":null}},"5":{"start":{"line":4,"column":19},"end":{"line":4,"column":null}},"6":{"start":{"line":5,"column":16},"end":{"line":5,"column":null}},"7":{"start":{"line":7,"column":25},"end":{"line":7,"column":null}},"8":{"start":{"line":17,"column":2},"end":{"line":22,"column":20}},"9":{"start":{"line":18,"column":4},"end":{"line":22,"column":20}},"10":{"start":{"line":24,"column":15},"end":{"line":24,"column":18}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":17,"column":2},"end":{"line":17,"column":3}},"loc":{"start":{"line":18,"column":4},"end":{"line":22,"column":20}}}},"branchMap":{"0":{"loc":{"start":{"line":18,"column":4},"end":{"line":22,"column":20}},"type":"cond-expr","locations":[{"start":{"line":19,"column":6},"end":{"line":19,"column":null}},{"start":{"line":20,"column":6},"end":{"line":22,"column":20}}]},"1":{"loc":{"start":{"line":20,"column":6},"end":{"line":22,"column":20}},"type":"cond-expr","locations":[{"start":{"line":21,"column":8},"end":{"line":21,"column":45}},{"start":{"line":22,"column":8},"end":{"line":22,"column":20}}]},"2":{"loc":{"start":{"line":20,"column":6},"end":{"line":20,"column":null}},"type":"binary-expr","locations":[{"start":{"line":20,"column":6},"end":{"line":20,"column":11}},{"start":{"line":20,"column":11},"end":{"line":20,"column":26}},{"start":{"line":20,"column":26},"end":{"line":20,"column":null}}]}},"s":{"0":32,"1":0,"2":22,"3":22,"4":22,"5":22,"6":22,"7":22,"8":22,"9":11,"10":22},"f":{"0":11},"b":{"0":[2,9],"1":[5,4],"2":[9,7,7]}} -,"/Users/Mirek.Rusin/tsql/src/indent-tail.ts": {"path":"/Users/Mirek.Rusin/tsql/src/indent-tail.ts","statementMap":{"0":{"start":{"line":10,"column":0},"end":{"line":10,"column":15}},"1":{"start":{"line":3,"column":2},"end":{"line":8,"column":null}},"2":{"start":{"line":4,"column":4},"end":{"line":8,"column":null}},"3":{"start":{"line":10,"column":15},"end":{"line":10,"column":null}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":3,"column":2},"end":{"line":3,"column":3}},"loc":{"start":{"line":4,"column":4},"end":{"line":8,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":4,"column":4},"end":{"line":8,"column":null}},"type":"cond-expr","locations":[{"start":{"line":5,"column":6},"end":{"line":7,"column":null}},{"start":{"line":8,"column":6},"end":{"line":8,"column":null}}]}},"s":{"0":705,"1":22,"2":705,"3":22},"f":{"0":705},"b":{"0":[236,469]}} -,"/Users/Mirek.Rusin/tsql/src/index.ts": {"path":"/Users/Mirek.Rusin/tsql/src/index.ts","statementMap":{"0":{"start":{"line":184,"column":2},"end":{"line":184,"column":15}},"1":{"start":{"line":164,"column":2},"end":{"line":164,"column":null}},"2":{"start":{"line":165,"column":2},"end":{"line":165,"column":null}},"3":{"start":{"line":185,"column":2},"end":{"line":185,"column":25}},"4":{"start":{"line":168,"column":2},"end":{"line":168,"column":18}},"5":{"start":{"line":91,"column":2},"end":{"line":91,"column":null}},"6":{"start":{"line":92,"column":2},"end":{"line":92,"column":null}},"7":{"start":{"line":93,"column":2},"end":{"line":93,"column":null}},"8":{"start":{"line":94,"column":2},"end":{"line":94,"column":null}},"9":{"start":{"line":95,"column":2},"end":{"line":95,"column":null}},"10":{"start":{"line":96,"column":2},"end":{"line":96,"column":null}},"11":{"start":{"line":97,"column":2},"end":{"line":97,"column":13}},"12":{"start":{"line":98,"column":2},"end":{"line":98,"column":null}},"13":{"start":{"line":99,"column":2},"end":{"line":99,"column":null}},"14":{"start":{"line":100,"column":2},"end":{"line":100,"column":null}},"15":{"start":{"line":101,"column":2},"end":{"line":101,"column":null}},"16":{"start":{"line":102,"column":2},"end":{"line":102,"column":null}},"17":{"start":{"line":103,"column":2},"end":{"line":103,"column":null}},"18":{"start":{"line":104,"column":2},"end":{"line":104,"column":null}},"19":{"start":{"line":105,"column":2},"end":{"line":105,"column":null}},"20":{"start":{"line":181,"column":2},"end":{"line":182,"column":16}},"21":{"start":{"line":106,"column":2},"end":{"line":106,"column":null}},"22":{"start":{"line":107,"column":2},"end":{"line":107,"column":null}},"23":{"start":{"line":183,"column":2},"end":{"line":183,"column":17}},"24":{"start":{"line":108,"column":2},"end":{"line":108,"column":9}},"25":{"start":{"line":109,"column":2},"end":{"line":109,"column":null}},"26":{"start":{"line":110,"column":2},"end":{"line":110,"column":null}},"27":{"start":{"line":111,"column":2},"end":{"line":111,"column":null}},"28":{"start":{"line":112,"column":2},"end":{"line":112,"column":null}},"29":{"start":{"line":113,"column":2},"end":{"line":113,"column":null}},"30":{"start":{"line":114,"column":2},"end":{"line":114,"column":null}},"31":{"start":{"line":115,"column":2},"end":{"line":115,"column":null}},"32":{"start":{"line":116,"column":2},"end":{"line":116,"column":null}},"33":{"start":{"line":117,"column":2},"end":{"line":117,"column":null}},"34":{"start":{"line":118,"column":2},"end":{"line":118,"column":null}},"35":{"start":{"line":119,"column":2},"end":{"line":119,"column":null}},"36":{"start":{"line":120,"column":2},"end":{"line":120,"column":null}},"37":{"start":{"line":121,"column":2},"end":{"line":121,"column":null}},"38":{"start":{"line":122,"column":2},"end":{"line":122,"column":null}},"39":{"start":{"line":123,"column":2},"end":{"line":123,"column":null}},"40":{"start":{"line":124,"column":2},"end":{"line":124,"column":null}},"41":{"start":{"line":125,"column":2},"end":{"line":125,"column":null}},"42":{"start":{"line":126,"column":2},"end":{"line":126,"column":null}},"43":{"start":{"line":127,"column":2},"end":{"line":127,"column":null}},"44":{"start":{"line":128,"column":2},"end":{"line":128,"column":null}},"45":{"start":{"line":129,"column":2},"end":{"line":129,"column":null}},"46":{"start":{"line":130,"column":2},"end":{"line":130,"column":null}},"47":{"start":{"line":131,"column":2},"end":{"line":131,"column":null}},"48":{"start":{"line":132,"column":2},"end":{"line":132,"column":null}},"49":{"start":{"line":133,"column":2},"end":{"line":133,"column":null}},"50":{"start":{"line":134,"column":2},"end":{"line":134,"column":null}},"51":{"start":{"line":135,"column":2},"end":{"line":135,"column":null}},"52":{"start":{"line":136,"column":2},"end":{"line":136,"column":null}},"53":{"start":{"line":137,"column":2},"end":{"line":137,"column":null}},"54":{"start":{"line":138,"column":2},"end":{"line":138,"column":null}},"55":{"start":{"line":139,"column":2},"end":{"line":139,"column":null}},"56":{"start":{"line":140,"column":2},"end":{"line":140,"column":null}},"57":{"start":{"line":141,"column":2},"end":{"line":141,"column":null}},"58":{"start":{"line":142,"column":2},"end":{"line":142,"column":null}},"59":{"start":{"line":143,"column":2},"end":{"line":143,"column":null}},"60":{"start":{"line":144,"column":2},"end":{"line":144,"column":null}},"61":{"start":{"line":145,"column":2},"end":{"line":145,"column":null}},"62":{"start":{"line":146,"column":2},"end":{"line":146,"column":null}},"63":{"start":{"line":147,"column":2},"end":{"line":147,"column":null}},"64":{"start":{"line":148,"column":2},"end":{"line":148,"column":null}},"65":{"start":{"line":149,"column":2},"end":{"line":149,"column":null}},"66":{"start":{"line":150,"column":2},"end":{"line":150,"column":null}},"67":{"start":{"line":151,"column":2},"end":{"line":151,"column":null}},"68":{"start":{"line":152,"column":2},"end":{"line":152,"column":11}},"69":{"start":{"line":153,"column":2},"end":{"line":153,"column":13}},"70":{"start":{"line":154,"column":2},"end":{"line":154,"column":null}},"71":{"start":{"line":155,"column":2},"end":{"line":155,"column":null}},"72":{"start":{"line":156,"column":2},"end":{"line":156,"column":null}},"73":{"start":{"line":157,"column":2},"end":{"line":157,"column":null}},"74":{"start":{"line":158,"column":2},"end":{"line":158,"column":null}},"75":{"start":{"line":159,"column":2},"end":{"line":159,"column":null}},"76":{"start":{"line":160,"column":2},"end":{"line":160,"column":null}},"77":{"start":{"line":161,"column":2},"end":{"line":161,"column":null}},"78":{"start":{"line":162,"column":2},"end":{"line":162,"column":null}},"79":{"start":{"line":163,"column":2},"end":{"line":163,"column":null}},"80":{"start":{"line":166,"column":2},"end":{"line":166,"column":null}},"81":{"start":{"line":167,"column":2},"end":{"line":167,"column":null}},"82":{"start":{"line":169,"column":2},"end":{"line":169,"column":null}},"83":{"start":{"line":170,"column":2},"end":{"line":170,"column":null}},"84":{"start":{"line":171,"column":2},"end":{"line":171,"column":null}},"85":{"start":{"line":172,"column":2},"end":{"line":172,"column":null}},"86":{"start":{"line":173,"column":2},"end":{"line":173,"column":null}},"87":{"start":{"line":174,"column":2},"end":{"line":174,"column":null}},"88":{"start":{"line":176,"column":2},"end":{"line":176,"column":null}},"89":{"start":{"line":177,"column":2},"end":{"line":177,"column":null}},"90":{"start":{"line":178,"column":2},"end":{"line":178,"column":null}},"91":{"start":{"line":1,"column":34},"end":{"line":1,"column":null}},"92":{"start":{"line":2,"column":16},"end":{"line":2,"column":null}},"93":{"start":{"line":3,"column":19},"end":{"line":3,"column":null}},"94":{"start":{"line":4,"column":25},"end":{"line":4,"column":null}},"95":{"start":{"line":5,"column":17},"end":{"line":5,"column":null}},"96":{"start":{"line":6,"column":20},"end":{"line":6,"column":null}},"97":{"start":{"line":7,"column":20},"end":{"line":7,"column":null}},"98":{"start":{"line":8,"column":20},"end":{"line":8,"column":null}},"99":{"start":{"line":9,"column":21},"end":{"line":9,"column":null}},"100":{"start":{"line":10,"column":21},"end":{"line":10,"column":null}},"101":{"start":{"line":11,"column":15},"end":{"line":11,"column":null}},"102":{"start":{"line":12,"column":19},"end":{"line":12,"column":null}},"103":{"start":{"line":13,"column":21},"end":{"line":13,"column":null}},"104":{"start":{"line":14,"column":23},"end":{"line":14,"column":null}},"105":{"start":{"line":15,"column":15},"end":{"line":15,"column":null}},"106":{"start":{"line":16,"column":16},"end":{"line":16,"column":null}},"107":{"start":{"line":17,"column":23},"end":{"line":17,"column":null}},"108":{"start":{"line":18,"column":24},"end":{"line":18,"column":null}},"109":{"start":{"line":19,"column":16},"end":{"line":19,"column":null}},"110":{"start":{"line":20,"column":23},"end":{"line":20,"column":null}},"111":{"start":{"line":21,"column":32},"end":{"line":21,"column":null}},"112":{"start":{"line":22,"column":33},"end":{"line":22,"column":null}},"113":{"start":{"line":23,"column":25},"end":{"line":23,"column":null}},"114":{"start":{"line":24,"column":29},"end":{"line":24,"column":null}},"115":{"start":{"line":25,"column":25},"end":{"line":25,"column":null}},"116":{"start":{"line":26,"column":26},"end":{"line":26,"column":null}},"117":{"start":{"line":27,"column":24},"end":{"line":27,"column":null}},"118":{"start":{"line":28,"column":25},"end":{"line":28,"column":null}},"119":{"start":{"line":29,"column":15},"end":{"line":29,"column":null}},"120":{"start":{"line":30,"column":19},"end":{"line":30,"column":null}},"121":{"start":{"line":31,"column":21},"end":{"line":31,"column":null}},"122":{"start":{"line":32,"column":17},"end":{"line":32,"column":null}},"123":{"start":{"line":33,"column":23},"end":{"line":33,"column":null}},"124":{"start":{"line":34,"column":21},"end":{"line":34,"column":null}},"125":{"start":{"line":35,"column":27},"end":{"line":35,"column":null}},"126":{"start":{"line":36,"column":22},"end":{"line":36,"column":null}},"127":{"start":{"line":37,"column":22},"end":{"line":37,"column":null}},"128":{"start":{"line":38,"column":26},"end":{"line":38,"column":null}},"129":{"start":{"line":39,"column":17},"end":{"line":39,"column":null}},"130":{"start":{"line":40,"column":35},"end":{"line":40,"column":null}},"131":{"start":{"line":41,"column":17},"end":{"line":41,"column":null}},"132":{"start":{"line":42,"column":18},"end":{"line":42,"column":null}},"133":{"start":{"line":43,"column":17},"end":{"line":43,"column":null}},"134":{"start":{"line":44,"column":25},"end":{"line":44,"column":null}},"135":{"start":{"line":45,"column":24},"end":{"line":45,"column":null}},"136":{"start":{"line":46,"column":15},"end":{"line":46,"column":null}},"137":{"start":{"line":47,"column":16},"end":{"line":47,"column":null}},"138":{"start":{"line":48,"column":30},"end":{"line":48,"column":null}},"139":{"start":{"line":49,"column":29},"end":{"line":49,"column":null}},"140":{"start":{"line":50,"column":22},"end":{"line":50,"column":null}},"141":{"start":{"line":51,"column":23},"end":{"line":51,"column":null}},"142":{"start":{"line":52,"column":20},"end":{"line":52,"column":null}},"143":{"start":{"line":53,"column":24},"end":{"line":53,"column":null}},"144":{"start":{"line":54,"column":15},"end":{"line":54,"column":null}},"145":{"start":{"line":55,"column":15},"end":{"line":55,"column":null}},"146":{"start":{"line":56,"column":15},"end":{"line":56,"column":null}},"147":{"start":{"line":57,"column":16},"end":{"line":57,"column":null}},"148":{"start":{"line":58,"column":23},"end":{"line":58,"column":null}},"149":{"start":{"line":59,"column":24},"end":{"line":59,"column":null}},"150":{"start":{"line":60,"column":18},"end":{"line":60,"column":null}},"151":{"start":{"line":61,"column":16},"end":{"line":61,"column":null}},"152":{"start":{"line":62,"column":20},"end":{"line":62,"column":null}},"153":{"start":{"line":63,"column":18},"end":{"line":63,"column":null}},"154":{"start":{"line":64,"column":20},"end":{"line":64,"column":null}},"155":{"start":{"line":65,"column":21},"end":{"line":65,"column":null}},"156":{"start":{"line":66,"column":15},"end":{"line":66,"column":null}},"157":{"start":{"line":67,"column":20},"end":{"line":67,"column":null}},"158":{"start":{"line":68,"column":17},"end":{"line":68,"column":null}},"159":{"start":{"line":69,"column":26},"end":{"line":69,"column":null}},"160":{"start":{"line":70,"column":29},"end":{"line":70,"column":null}},"161":{"start":{"line":71,"column":16},"end":{"line":71,"column":null}},"162":{"start":{"line":72,"column":27},"end":{"line":72,"column":null}},"163":{"start":{"line":73,"column":16},"end":{"line":73,"column":null}},"164":{"start":{"line":74,"column":19},"end":{"line":74,"column":null}},"165":{"start":{"line":75,"column":22},"end":{"line":75,"column":null}},"166":{"start":{"line":76,"column":32},"end":{"line":76,"column":null}},"167":{"start":{"line":77,"column":19},"end":{"line":77,"column":null}},"168":{"start":{"line":78,"column":17},"end":{"line":78,"column":null}},"169":{"start":{"line":79,"column":21},"end":{"line":79,"column":null}},"170":{"start":{"line":80,"column":16},"end":{"line":80,"column":null}},"171":{"start":{"line":81,"column":22},"end":{"line":81,"column":null}},"172":{"start":{"line":83,"column":19},"end":{"line":83,"column":null}},"173":{"start":{"line":84,"column":17},"end":{"line":84,"column":null}},"174":{"start":{"line":85,"column":19},"end":{"line":85,"column":null}},"175":{"start":{"line":86,"column":26},"end":{"line":86,"column":null}},"176":{"start":{"line":87,"column":26},"end":{"line":87,"column":null}},"177":{"start":{"line":88,"column":18},"end":{"line":88,"column":null}}},"fnMap":{},"branchMap":{},"s":{"0":1,"1":0,"2":0,"3":1,"4":0,"5":6,"6":9,"7":5,"8":1,"9":0,"10":0,"11":13,"12":15,"13":0,"14":11,"15":0,"16":0,"17":0,"18":2,"19":0,"20":31,"21":0,"22":0,"23":0,"24":10,"25":0,"26":0,"27":1,"28":10,"29":0,"30":10,"31":7,"32":0,"33":0,"34":6,"35":6,"36":0,"37":0,"38":3,"39":8,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":5,"48":1,"49":0,"50":19,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":5,"58":2,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":1,"69":0,"70":0,"71":6,"72":3,"73":0,"74":0,"75":0,"76":4,"77":0,"78":0,"79":0,"80":0,"81":0,"82":37,"83":0,"84":0,"85":0,"86":0,"87":6,"88":0,"89":0,"90":24,"91":22,"92":22,"93":22,"94":22,"95":22,"96":22,"97":22,"98":22,"99":22,"100":22,"101":22,"102":22,"103":22,"104":22,"105":22,"106":22,"107":22,"108":22,"109":22,"110":22,"111":22,"112":22,"113":22,"114":22,"115":22,"116":22,"117":22,"118":22,"119":22,"120":22,"121":22,"122":22,"123":22,"124":22,"125":22,"126":22,"127":22,"128":22,"129":22,"130":22,"131":22,"132":22,"133":22,"134":22,"135":22,"136":22,"137":22,"138":22,"139":22,"140":22,"141":22,"142":22,"143":22,"144":22,"145":22,"146":22,"147":22,"148":22,"149":22,"150":22,"151":22,"152":22,"153":22,"154":22,"155":22,"156":22,"157":22,"158":22,"159":22,"160":22,"161":22,"162":22,"163":22,"164":22,"165":22,"166":22,"167":22,"168":22,"169":22,"170":22,"171":22,"172":22,"173":22,"174":22,"175":22,"176":22,"177":22},"f":{},"b":{}} -,"/Users/Mirek.Rusin/tsql/src/inline-table-of-column.ts": {"path":"/Users/Mirek.Rusin/tsql/src/inline-table-of-column.ts","statementMap":{"0":{"start":{"line":28,"column":0},"end":{"line":28,"column":15}},"1":{"start":{"line":13,"column":13},"end":{"line":13,"column":32}},"2":{"start":{"line":1,"column":15},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":17},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":16},"end":{"line":3,"column":null}},"5":{"start":{"line":6,"column":17},"end":{"line":6,"column":null}},"6":{"start":{"line":14,"column":2},"end":{"line":26,"column":null}},"7":{"start":{"line":15,"column":4},"end":{"line":17,"column":null}},"8":{"start":{"line":16,"column":6},"end":{"line":16,"column":null}},"9":{"start":{"line":18,"column":19},"end":{"line":18,"column":null}},"10":{"start":{"line":19,"column":20},"end":{"line":19,"column":null}},"11":{"start":{"line":20,"column":20},"end":{"line":20,"column":null}},"12":{"start":{"line":20,"column":41},"end":{"line":20,"column":54}},"13":{"start":{"line":21,"column":4},"end":{"line":25,"column":null}},"14":{"start":{"line":28,"column":15},"end":{"line":28,"column":34}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":14,"column":2},"end":{"line":14,"column":3}},"loc":{"start":{"line":14,"column":46},"end":{"line":26,"column":null}}},"1":{"name":"(anonymous_5)","decl":{"start":{"line":20,"column":36},"end":{"line":20,"column":41}},"loc":{"start":{"line":20,"column":41},"end":{"line":20,"column":54}}}},"branchMap":{"0":{"loc":{"start":{"line":15,"column":4},"end":{"line":17,"column":null}},"type":"if","locations":[{"start":{"line":15,"column":4},"end":{"line":17,"column":null}}]}},"s":{"0":4,"1":0,"2":22,"3":22,"4":22,"5":22,"6":22,"7":4,"8":0,"9":4,"10":4,"11":4,"12":11,"13":4,"14":22},"f":{"0":4,"1":11},"b":{"0":[0]}} -,"/Users/Mirek.Rusin/tsql/src/inline-table-of-objects.ts": {"path":"/Users/Mirek.Rusin/tsql/src/inline-table-of-objects.ts","statementMap":{"0":{"start":{"line":27,"column":0},"end":{"line":27,"column":15}},"1":{"start":{"line":15,"column":13},"end":{"line":15,"column":33}},"2":{"start":{"line":1,"column":17},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":15},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":26},"end":{"line":3,"column":null}},"5":{"start":{"line":4,"column":17},"end":{"line":4,"column":null}},"6":{"start":{"line":5,"column":16},"end":{"line":5,"column":null}},"7":{"start":{"line":8,"column":17},"end":{"line":8,"column":null}},"8":{"start":{"line":16,"column":2},"end":{"line":25,"column":null}},"9":{"start":{"line":17,"column":19},"end":{"line":17,"column":null}},"10":{"start":{"line":18,"column":17},"end":{"line":18,"column":null}},"11":{"start":{"line":19,"column":21},"end":{"line":19,"column":null}},"12":{"start":{"line":20,"column":20},"end":{"line":20,"column":null}},"13":{"start":{"line":20,"column":47},"end":{"line":20,"column":89}},"14":{"start":{"line":20,"column":67},"end":{"line":20,"column":89}},"15":{"start":{"line":21,"column":4},"end":{"line":24,"column":null}},"16":{"start":{"line":27,"column":15},"end":{"line":27,"column":35}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":16,"column":2},"end":{"line":16,"column":3}},"loc":{"start":{"line":16,"column":69},"end":{"line":25,"column":null}}},"1":{"name":"(anonymous_5)","decl":{"start":{"line":20,"column":37},"end":{"line":20,"column":47}},"loc":{"start":{"line":20,"column":47},"end":{"line":20,"column":89}}},"2":{"name":"(anonymous_6)","decl":{"start":{"line":20,"column":60},"end":{"line":20,"column":67}},"loc":{"start":{"line":20,"column":67},"end":{"line":20,"column":89}}}},"branchMap":{"0":{"loc":{"start":{"line":18,"column":17},"end":{"line":18,"column":null}},"type":"binary-expr","locations":[{"start":{"line":18,"column":17},"end":{"line":18,"column":30}},{"start":{"line":18,"column":30},"end":{"line":18,"column":null}}]}},"s":{"0":15,"1":0,"2":22,"3":22,"4":22,"5":22,"6":22,"7":22,"8":22,"9":15,"10":15,"11":15,"12":15,"13":3037,"14":3073,"15":15,"16":22},"f":{"0":15,"1":3037,"2":3073},"b":{"0":[15,1]}} -,"/Users/Mirek.Rusin/tsql/src/insert-ignore.ts": {"path":"/Users/Mirek.Rusin/tsql/src/insert-ignore.ts","statementMap":{"0":{"start":{"line":60,"column":0},"end":{"line":60,"column":15}},"1":{"start":{"line":28,"column":13},"end":{"line":28,"column":25}},"2":{"start":{"line":13,"column":13},"end":{"line":13,"column":27}},"3":{"start":{"line":17,"column":13},"end":{"line":17,"column":27}},"4":{"start":{"line":1,"column":16},"end":{"line":1,"column":null}},"5":{"start":{"line":2,"column":15},"end":{"line":2,"column":null}},"6":{"start":{"line":3,"column":15},"end":{"line":3,"column":null}},"7":{"start":{"line":4,"column":16},"end":{"line":4,"column":null}},"8":{"start":{"line":5,"column":33},"end":{"line":5,"column":null}},"9":{"start":{"line":6,"column":26},"end":{"line":6,"column":null}},"10":{"start":{"line":7,"column":16},"end":{"line":7,"column":null}},"11":{"start":{"line":8,"column":17},"end":{"line":8,"column":null}},"12":{"start":{"line":14,"column":2},"end":{"line":15,"column":null}},"13":{"start":{"line":15,"column":4},"end":{"line":15,"column":null}},"14":{"start":{"line":18,"column":2},"end":{"line":19,"column":null}},"15":{"start":{"line":19,"column":4},"end":{"line":19,"column":null}},"16":{"start":{"line":29,"column":2},"end":{"line":58,"column":null}},"17":{"start":{"line":39,"column":4},"end":{"line":41,"column":null}},"18":{"start":{"line":40,"column":6},"end":{"line":40,"column":null}},"19":{"start":{"line":43,"column":4},"end":{"line":45,"column":null}},"20":{"start":{"line":44,"column":6},"end":{"line":44,"column":null}},"21":{"start":{"line":47,"column":23},"end":{"line":47,"column":null}},"22":{"start":{"line":48,"column":16},"end":{"line":48,"column":null}},"23":{"start":{"line":48,"column":39},"end":{"line":48,"column":null}},"24":{"start":{"line":49,"column":19},"end":{"line":49,"column":null}},"25":{"start":{"line":49,"column":42},"end":{"line":49,"column":null}},"26":{"start":{"line":51,"column":4},"end":{"line":57,"column":null}},"27":{"start":{"line":60,"column":15},"end":{"line":60,"column":27}}},"fnMap":{"0":{"name":"(anonymous_6)","decl":{"start":{"line":14,"column":2},"end":{"line":14,"column":3}},"loc":{"start":{"line":15,"column":4},"end":{"line":15,"column":null}}},"1":{"name":"(anonymous_7)","decl":{"start":{"line":18,"column":2},"end":{"line":18,"column":3}},"loc":{"start":{"line":19,"column":4},"end":{"line":19,"column":null}}},"2":{"name":"(anonymous_8)","decl":{"start":{"line":29,"column":2},"end":{"line":29,"column":null}},"loc":{"start":{"line":36,"column":10},"end":{"line":58,"column":null}}},"3":{"name":"(anonymous_9)","decl":{"start":{"line":48,"column":34},"end":{"line":48,"column":39}},"loc":{"start":{"line":48,"column":39},"end":{"line":48,"column":null}}},"4":{"name":"(anonymous_10)","decl":{"start":{"line":49,"column":37},"end":{"line":49,"column":42}},"loc":{"start":{"line":49,"column":42},"end":{"line":49,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":34,"column":4},"end":{"line":36,"column":10}},"type":"default-arg","locations":[{"start":{"line":36,"column":8},"end":{"line":36,"column":10}}]},"1":{"loc":{"start":{"line":34,"column":6},"end":{"line":34,"column":null}},"type":"default-arg","locations":[{"start":{"line":34,"column":14},"end":{"line":34,"column":null}}]},"2":{"loc":{"start":{"line":39,"column":4},"end":{"line":41,"column":null}},"type":"if","locations":[{"start":{"line":39,"column":4},"end":{"line":41,"column":null}}]},"3":{"loc":{"start":{"line":43,"column":4},"end":{"line":45,"column":null}},"type":"if","locations":[{"start":{"line":43,"column":4},"end":{"line":45,"column":null}}]},"4":{"loc":{"start":{"line":47,"column":23},"end":{"line":47,"column":null}},"type":"binary-expr","locations":[{"start":{"line":47,"column":23},"end":{"line":47,"column":42}},{"start":{"line":47,"column":42},"end":{"line":47,"column":null}}]}},"s":{"0":10,"1":0,"2":0,"3":0,"4":22,"5":22,"6":22,"7":22,"8":22,"9":22,"10":22,"11":22,"12":22,"13":10,"14":22,"15":20,"16":22,"17":10,"18":0,"19":10,"20":0,"21":10,"22":10,"23":10,"24":10,"25":10,"26":10,"27":22},"f":{"0":10,"1":20,"2":10,"3":10,"4":10},"b":{"0":[0],"1":[2],"2":[0],"3":[0],"4":[10,10]}} -,"/Users/Mirek.Rusin/tsql/src/insert-not-matched.ts": {"path":"/Users/Mirek.Rusin/tsql/src/insert-not-matched.ts","statementMap":{"0":{"start":{"line":63,"column":0},"end":{"line":63,"column":15}},"1":{"start":{"line":30,"column":13},"end":{"line":30,"column":29}},"2":{"start":{"line":13,"column":13},"end":{"line":13,"column":27}},"3":{"start":{"line":17,"column":13},"end":{"line":17,"column":27}},"4":{"start":{"line":1,"column":16},"end":{"line":1,"column":null}},"5":{"start":{"line":2,"column":15},"end":{"line":2,"column":null}},"6":{"start":{"line":3,"column":15},"end":{"line":3,"column":null}},"7":{"start":{"line":4,"column":33},"end":{"line":4,"column":null}},"8":{"start":{"line":5,"column":26},"end":{"line":5,"column":null}},"9":{"start":{"line":6,"column":35},"end":{"line":6,"column":null}},"10":{"start":{"line":7,"column":16},"end":{"line":7,"column":null}},"11":{"start":{"line":8,"column":17},"end":{"line":8,"column":null}},"12":{"start":{"line":14,"column":2},"end":{"line":15,"column":null}},"13":{"start":{"line":15,"column":4},"end":{"line":15,"column":null}},"14":{"start":{"line":18,"column":2},"end":{"line":19,"column":null}},"15":{"start":{"line":19,"column":4},"end":{"line":19,"column":null}},"16":{"start":{"line":31,"column":2},"end":{"line":61,"column":null}},"17":{"start":{"line":41,"column":4},"end":{"line":43,"column":null}},"18":{"start":{"line":42,"column":6},"end":{"line":42,"column":null}},"19":{"start":{"line":45,"column":4},"end":{"line":47,"column":null}},"20":{"start":{"line":46,"column":6},"end":{"line":46,"column":null}},"21":{"start":{"line":49,"column":19},"end":{"line":49,"column":null}},"22":{"start":{"line":50,"column":23},"end":{"line":50,"column":null}},"23":{"start":{"line":51,"column":16},"end":{"line":51,"column":null}},"24":{"start":{"line":51,"column":39},"end":{"line":51,"column":null}},"25":{"start":{"line":53,"column":4},"end":{"line":60,"column":null}},"26":{"start":{"line":63,"column":15},"end":{"line":63,"column":31}}},"fnMap":{"0":{"name":"(anonymous_6)","decl":{"start":{"line":14,"column":2},"end":{"line":14,"column":3}},"loc":{"start":{"line":15,"column":4},"end":{"line":15,"column":null}}},"1":{"name":"(anonymous_7)","decl":{"start":{"line":18,"column":2},"end":{"line":18,"column":3}},"loc":{"start":{"line":19,"column":4},"end":{"line":19,"column":null}}},"2":{"name":"(anonymous_8)","decl":{"start":{"line":31,"column":2},"end":{"line":31,"column":null}},"loc":{"start":{"line":38,"column":10},"end":{"line":61,"column":null}}},"3":{"name":"(anonymous_9)","decl":{"start":{"line":51,"column":34},"end":{"line":51,"column":39}},"loc":{"start":{"line":51,"column":39},"end":{"line":51,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":36,"column":4},"end":{"line":38,"column":10}},"type":"default-arg","locations":[{"start":{"line":38,"column":8},"end":{"line":38,"column":10}}]},"1":{"loc":{"start":{"line":36,"column":6},"end":{"line":36,"column":null}},"type":"default-arg","locations":[{"start":{"line":36,"column":14},"end":{"line":36,"column":null}}]},"2":{"loc":{"start":{"line":41,"column":4},"end":{"line":43,"column":null}},"type":"if","locations":[{"start":{"line":41,"column":4},"end":{"line":43,"column":null}}]},"3":{"loc":{"start":{"line":45,"column":4},"end":{"line":47,"column":null}},"type":"if","locations":[{"start":{"line":45,"column":4},"end":{"line":47,"column":null}}]},"4":{"loc":{"start":{"line":50,"column":23},"end":{"line":50,"column":null}},"type":"binary-expr","locations":[{"start":{"line":50,"column":23},"end":{"line":50,"column":42}},{"start":{"line":50,"column":42},"end":{"line":50,"column":null}}]}},"s":{"0":0,"1":0,"2":0,"3":0,"4":22,"5":22,"6":22,"7":22,"8":22,"9":22,"10":22,"11":22,"12":22,"13":0,"14":22,"15":0,"16":22,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":22},"f":{"0":0,"1":0,"2":0,"3":0},"b":{"0":[0],"1":[0],"2":[0],"3":[0],"4":[0,0]}} -,"/Users/Mirek.Rusin/tsql/src/insert-object.ts": {"path":"/Users/Mirek.Rusin/tsql/src/insert-object.ts","statementMap":{"0":{"start":{"line":31,"column":0},"end":{"line":31,"column":15}},"1":{"start":{"line":16,"column":13},"end":{"line":16,"column":25}},"2":{"start":{"line":1,"column":17},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":20},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":15},"end":{"line":3,"column":null}},"5":{"start":{"line":4,"column":17},"end":{"line":4,"column":null}},"6":{"start":{"line":5,"column":17},"end":{"line":5,"column":null}},"7":{"start":{"line":17,"column":2},"end":{"line":29,"column":null}},"8":{"start":{"line":18,"column":20},"end":{"line":18,"column":null}},"9":{"start":{"line":19,"column":17},"end":{"line":19,"column":null}},"10":{"start":{"line":20,"column":4},"end":{"line":22,"column":null}},"11":{"start":{"line":21,"column":6},"end":{"line":21,"column":null}},"12":{"start":{"line":23,"column":19},"end":{"line":23,"column":null}},"13":{"start":{"line":24,"column":18},"end":{"line":24,"column":null}},"14":{"start":{"line":25,"column":20},"end":{"line":25,"column":null}},"15":{"start":{"line":25,"column":39},"end":{"line":25,"column":49}},"16":{"start":{"line":26,"column":4},"end":{"line":28,"column":null}},"17":{"start":{"line":31,"column":15},"end":{"line":31,"column":27}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":17,"column":2},"end":{"line":17,"column":3}},"loc":{"start":{"line":17,"column":57},"end":{"line":29,"column":null}}},"1":{"name":"(anonymous_5)","decl":{"start":{"line":25,"column":34},"end":{"line":25,"column":39}},"loc":{"start":{"line":25,"column":39},"end":{"line":25,"column":49}}}},"branchMap":{"0":{"loc":{"start":{"line":20,"column":4},"end":{"line":22,"column":null}},"type":"if","locations":[{"start":{"line":20,"column":4},"end":{"line":22,"column":null}}]},"1":{"loc":{"start":{"line":26,"column":11},"end":{"line":28,"column":64}},"type":"cond-expr","locations":[{"start":{"line":27,"column":6},"end":{"line":27,"column":81}},{"start":{"line":28,"column":6},"end":{"line":28,"column":64}}]}},"s":{"0":10,"1":0,"2":22,"3":22,"4":22,"5":22,"6":22,"7":22,"8":10,"9":10,"10":10,"11":0,"12":10,"13":10,"14":10,"15":23,"16":10,"17":22},"f":{"0":10,"1":23},"b":{"0":[0],"1":[0,10]}} -,"/Users/Mirek.Rusin/tsql/src/insert-objects.ts": {"path":"/Users/Mirek.Rusin/tsql/src/insert-objects.ts","statementMap":{"0":{"start":{"line":52,"column":0},"end":{"line":52,"column":15}},"1":{"start":{"line":18,"column":13},"end":{"line":18,"column":26}},"2":{"start":{"line":1,"column":17},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":15},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":33},"end":{"line":3,"column":null}},"5":{"start":{"line":4,"column":26},"end":{"line":4,"column":null}},"6":{"start":{"line":5,"column":17},"end":{"line":5,"column":null}},"7":{"start":{"line":6,"column":16},"end":{"line":6,"column":null}},"8":{"start":{"line":7,"column":17},"end":{"line":7,"column":null}},"9":{"start":{"line":19,"column":2},"end":{"line":50,"column":null}},"10":{"start":{"line":25,"column":4},"end":{"line":27,"column":null}},"11":{"start":{"line":26,"column":6},"end":{"line":26,"column":null}},"12":{"start":{"line":29,"column":4},"end":{"line":31,"column":null}},"13":{"start":{"line":30,"column":6},"end":{"line":30,"column":null}},"14":{"start":{"line":33,"column":19},"end":{"line":33,"column":null}},"15":{"start":{"line":34,"column":17},"end":{"line":34,"column":null}},"16":{"start":{"line":35,"column":18},"end":{"line":35,"column":null}},"17":{"start":{"line":37,"column":4},"end":{"line":43,"column":null}},"18":{"start":{"line":38,"column":6},"end":{"line":42,"column":null}},"19":{"start":{"line":45,"column":20},"end":{"line":45,"column":null}},"20":{"start":{"line":45,"column":47},"end":{"line":45,"column":null}},"21":{"start":{"line":45,"column":67},"end":{"line":45,"column":null}},"22":{"start":{"line":46,"column":4},"end":{"line":49,"column":null}},"23":{"start":{"line":52,"column":15},"end":{"line":52,"column":28}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":19,"column":2},"end":{"line":19,"column":null}},"loc":{"start":{"line":22,"column":4},"end":{"line":50,"column":null}}},"1":{"name":"(anonymous_5)","decl":{"start":{"line":45,"column":37},"end":{"line":45,"column":47}},"loc":{"start":{"line":45,"column":47},"end":{"line":45,"column":null}}},"2":{"name":"(anonymous_6)","decl":{"start":{"line":45,"column":60},"end":{"line":45,"column":67}},"loc":{"start":{"line":45,"column":67},"end":{"line":45,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":25,"column":4},"end":{"line":27,"column":null}},"type":"if","locations":[{"start":{"line":25,"column":4},"end":{"line":27,"column":null}}]},"1":{"loc":{"start":{"line":29,"column":4},"end":{"line":31,"column":null}},"type":"if","locations":[{"start":{"line":29,"column":4},"end":{"line":31,"column":null}}]},"2":{"loc":{"start":{"line":34,"column":17},"end":{"line":34,"column":null}},"type":"binary-expr","locations":[{"start":{"line":34,"column":17},"end":{"line":34,"column":30}},{"start":{"line":34,"column":30},"end":{"line":34,"column":null}}]},"3":{"loc":{"start":{"line":37,"column":4},"end":{"line":43,"column":null}},"type":"if","locations":[{"start":{"line":37,"column":4},"end":{"line":43,"column":null}}]}},"s":{"0":7,"1":0,"2":22,"3":22,"4":22,"5":22,"6":22,"7":22,"8":22,"9":22,"10":7,"11":0,"12":7,"13":1,"14":6,"15":6,"16":6,"17":6,"18":2,"19":4,"20":1104,"21":1107,"22":4,"23":22},"f":{"0":7,"1":1104,"2":1107},"b":{"0":[0],"1":[1],"2":[6,6],"3":[2]}} -,"/Users/Mirek.Rusin/tsql/src/interpolate.ts": {"path":"/Users/Mirek.Rusin/tsql/src/interpolate.ts","statementMap":{"0":{"start":{"line":64,"column":0},"end":{"line":64,"column":15}},"1":{"start":{"line":38,"column":13},"end":{"line":38,"column":24}},"2":{"start":{"line":2,"column":23},"end":{"line":2,"column":null}},"3":{"start":{"line":12,"column":16},"end":{"line":12,"column":null}},"4":{"start":{"line":15,"column":20},"end":{"line":15,"column":null}},"5":{"start":{"line":18,"column":12},"end":{"line":18,"column":null}},"6":{"start":{"line":19,"column":2},"end":{"line":21,"column":null}},"7":{"start":{"line":20,"column":4},"end":{"line":20,"column":null}},"8":{"start":{"line":24,"column":17},"end":{"line":24,"column":null}},"9":{"start":{"line":27,"column":17},"end":{"line":27,"column":37}},"10":{"start":{"line":30,"column":2},"end":{"line":30,"column":null}},"11":{"start":{"line":31,"column":2},"end":{"line":31,"column":null}},"12":{"start":{"line":39,"column":2},"end":{"line":62,"column":null}},"13":{"start":{"line":40,"column":4},"end":{"line":42,"column":null}},"14":{"start":{"line":41,"column":6},"end":{"line":41,"column":null}},"15":{"start":{"line":43,"column":4},"end":{"line":45,"column":null}},"16":{"start":{"line":44,"column":6},"end":{"line":44,"column":null}},"17":{"start":{"line":46,"column":4},"end":{"line":48,"column":null}},"18":{"start":{"line":47,"column":6},"end":{"line":47,"column":null}},"19":{"start":{"line":49,"column":19},"end":{"line":49,"column":null}},"20":{"start":{"line":50,"column":25},"end":{"line":50,"column":27}},"21":{"start":{"line":52,"column":6},"end":{"line":55,"column":null}},"22":{"start":{"line":53,"column":8},"end":{"line":53,"column":null}},"23":{"start":{"line":54,"column":8},"end":{"line":54,"column":null}},"24":{"start":{"line":56,"column":4},"end":{"line":56,"column":null}},"25":{"start":{"line":57,"column":4},"end":{"line":60,"column":null}},"26":{"start":{"line":57,"column":17},"end":{"line":57,"column":20}},"27":{"start":{"line":58,"column":6},"end":{"line":58,"column":null}},"28":{"start":{"line":59,"column":6},"end":{"line":59,"column":null}},"29":{"start":{"line":61,"column":4},"end":{"line":61,"column":null}},"30":{"start":{"line":64,"column":15},"end":{"line":64,"column":26}}},"fnMap":{"0":{"name":"updateMargin","decl":{"start":{"line":9,"column":9},"end":{"line":9,"column":22}},"loc":{"start":{"line":9,"column":58},"end":{"line":32,"column":null}}},"1":{"name":"(anonymous_5)","decl":{"start":{"line":39,"column":2},"end":{"line":39,"column":3}},"loc":{"start":{"line":39,"column":29},"end":{"line":62,"column":null}}},"2":{"name":"(anonymous_6)","decl":{"start":{"line":52,"column":6},"end":{"line":52,"column":7}},"loc":{"start":{"line":52,"column":7},"end":{"line":55,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":19,"column":9},"end":{"line":19,"column":51}},"type":"binary-expr","locations":[{"start":{"line":19,"column":9},"end":{"line":19,"column":27}},{"start":{"line":19,"column":31},"end":{"line":19,"column":51}}]},"1":{"loc":{"start":{"line":30,"column":25},"end":{"line":30,"column":null}},"type":"cond-expr","locations":[{"start":{"line":30,"column":37},"end":{"line":30,"column":46}},{"start":{"line":30,"column":46},"end":{"line":30,"column":null}}]},"2":{"loc":{"start":{"line":30,"column":70},"end":{"line":30,"column":null}},"type":"cond-expr","locations":[{"start":{"line":30,"column":91},"end":{"line":30,"column":100}},{"start":{"line":30,"column":100},"end":{"line":30,"column":null}}]},"3":{"loc":{"start":{"line":31,"column":23},"end":{"line":31,"column":null}},"type":"binary-expr","locations":[{"start":{"line":31,"column":24},"end":{"line":31,"column":42}},{"start":{"line":31,"column":46},"end":{"line":31,"column":54}},{"start":{"line":31,"column":60},"end":{"line":31,"column":null}}]},"4":{"loc":{"start":{"line":40,"column":4},"end":{"line":42,"column":null}},"type":"if","locations":[{"start":{"line":40,"column":4},"end":{"line":42,"column":null}}]},"5":{"loc":{"start":{"line":40,"column":8},"end":{"line":40,"column":50}},"type":"binary-expr","locations":[{"start":{"line":40,"column":8},"end":{"line":40,"column":30}},{"start":{"line":40,"column":30},"end":{"line":40,"column":50}}]},"6":{"loc":{"start":{"line":43,"column":4},"end":{"line":45,"column":null}},"type":"if","locations":[{"start":{"line":43,"column":4},"end":{"line":45,"column":null}}]},"7":{"loc":{"start":{"line":43,"column":8},"end":{"line":43,"column":48}},"type":"binary-expr","locations":[{"start":{"line":43,"column":8},"end":{"line":43,"column":30}},{"start":{"line":43,"column":30},"end":{"line":43,"column":48}}]},"8":{"loc":{"start":{"line":46,"column":4},"end":{"line":48,"column":null}},"type":"if","locations":[{"start":{"line":46,"column":4},"end":{"line":48,"column":null}}]}},"s":{"0":406,"1":0,"2":22,"3":1816,"4":1816,"5":1816,"6":1816,"7":2025,"8":1816,"9":1816,"10":1816,"11":1816,"12":22,"13":406,"14":0,"15":406,"16":0,"17":406,"18":0,"19":406,"20":406,"21":406,"22":1816,"23":1816,"24":406,"25":406,"26":406,"27":705,"28":705,"29":406,"30":22},"f":{"0":1816,"1":406,"2":1816},"b":{"0":[3841,3316],"1":[273,1543],"2":[494,1049],"3":[1816,1229,767],"4":[0],"5":[406,406],"6":[0],"7":[406,0],"8":[0]}} -,"/Users/Mirek.Rusin/tsql/src/interpolate1.ts": {"path":"/Users/Mirek.Rusin/tsql/src/interpolate1.ts","statementMap":{"0":{"start":{"line":18,"column":0},"end":{"line":18,"column":15}},"1":{"start":{"line":2,"column":13},"end":{"line":2,"column":25}},"2":{"start":{"line":3,"column":2},"end":{"line":16,"column":null}},"3":{"start":{"line":4,"column":4},"end":{"line":6,"column":null}},"4":{"start":{"line":5,"column":6},"end":{"line":5,"column":null}},"5":{"start":{"line":7,"column":4},"end":{"line":9,"column":null}},"6":{"start":{"line":8,"column":6},"end":{"line":8,"column":null}},"7":{"start":{"line":10,"column":26},"end":{"line":10,"column":null}},"8":{"start":{"line":11,"column":4},"end":{"line":14,"column":null}},"9":{"start":{"line":11,"column":17},"end":{"line":11,"column":20}},"10":{"start":{"line":12,"column":6},"end":{"line":12,"column":null}},"11":{"start":{"line":13,"column":6},"end":{"line":13,"column":null}},"12":{"start":{"line":15,"column":4},"end":{"line":15,"column":null}},"13":{"start":{"line":18,"column":15},"end":{"line":18,"column":27}}},"fnMap":{"0":{"name":"(anonymous_3)","decl":{"start":{"line":3,"column":2},"end":{"line":3,"column":9}},"loc":{"start":{"line":3,"column":18},"end":{"line":16,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":4,"column":4},"end":{"line":6,"column":null}},"type":"if","locations":[{"start":{"line":4,"column":4},"end":{"line":6,"column":null}}]},"1":{"loc":{"start":{"line":7,"column":4},"end":{"line":9,"column":null}},"type":"if","locations":[{"start":{"line":7,"column":4},"end":{"line":9,"column":null}}]}},"s":{"0":78,"1":0,"2":22,"3":78,"4":0,"5":78,"6":0,"7":78,"8":78,"9":78,"10":27,"11":27,"12":78,"13":22},"f":{"0":78},"b":{"0":[0],"1":[0]}} -,"/Users/Mirek.Rusin/tsql/src/is-defined.ts": {"path":"/Users/Mirek.Rusin/tsql/src/is-defined.ts","statementMap":{"0":{"start":{"line":9,"column":16},"end":{"line":9,"column":29}},"1":{"start":{"line":1,"column":25},"end":{"line":1,"column":null}},"2":{"start":{"line":10,"column":2},"end":{"line":12,"column":null}},"3":{"start":{"line":11,"column":4},"end":{"line":11,"column":null}},"4":{"start":{"line":13,"column":2},"end":{"line":17,"column":null}},"5":{"start":{"line":14,"column":4},"end":{"line":16,"column":null}},"6":{"start":{"line":16,"column":17},"end":{"line":16,"column":null}},"7":{"start":{"line":18,"column":2},"end":{"line":18,"column":null}}},"fnMap":{"0":{"name":"isDefined","decl":{"start":{"line":9,"column":16},"end":{"line":9,"column":29}},"loc":{"start":{"line":9,"column":37},"end":{"line":19,"column":null}}},"1":{"name":"(anonymous_2)","decl":{"start":{"line":16,"column":12},"end":{"line":16,"column":17}},"loc":{"start":{"line":16,"column":17},"end":{"line":16,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":10,"column":2},"end":{"line":12,"column":null}},"type":"if","locations":[{"start":{"line":10,"column":2},"end":{"line":12,"column":null}}]},"1":{"loc":{"start":{"line":13,"column":2},"end":{"line":17,"column":null}},"type":"if","locations":[{"start":{"line":13,"column":2},"end":{"line":17,"column":null}}]}},"s":{"0":90,"1":22,"2":127,"3":13,"4":114,"5":114,"6":114,"7":0},"f":{"0":127,"1":114},"b":{"0":[13],"1":[114]}} -,"/Users/Mirek.Rusin/tsql/src/is-null.ts": {"path":"/Users/Mirek.Rusin/tsql/src/is-null.ts","statementMap":{"0":{"start":{"line":9,"column":0},"end":{"line":9,"column":15}},"1":{"start":{"line":4,"column":13},"end":{"line":4,"column":19}},"2":{"start":{"line":1,"column":22},"end":{"line":1,"column":null}},"3":{"start":{"line":5,"column":2},"end":{"line":7,"column":null}},"4":{"start":{"line":6,"column":4},"end":{"line":7,"column":null}},"5":{"start":{"line":9,"column":15},"end":{"line":9,"column":21}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":5,"column":2},"end":{"line":5,"column":3}},"loc":{"start":{"line":6,"column":4},"end":{"line":7,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":6,"column":4},"end":{"line":7,"column":null}},"type":"binary-expr","locations":[{"start":{"line":6,"column":4},"end":{"line":6,"column":null}},{"start":{"line":7,"column":5},"end":{"line":7,"column":31}},{"start":{"line":7,"column":35},"end":{"line":7,"column":null}}]}},"s":{"0":69,"1":0,"2":22,"3":22,"4":69,"5":22},"f":{"0":69},"b":{"0":[69,53,15]}} -,"/Users/Mirek.Rusin/tsql/src/is-object.ts": {"path":"/Users/Mirek.Rusin/tsql/src/is-object.ts","statementMap":{"0":{"start":{"line":1,"column":16},"end":{"line":1,"column":25}},"1":{"start":{"line":2,"column":2},"end":{"line":5,"column":null}}},"fnMap":{"0":{"name":"isObject","decl":{"start":{"line":1,"column":16},"end":{"line":1,"column":25}},"loc":{"start":{"line":1,"column":39},"end":{"line":7,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":3,"column":4},"end":{"line":5,"column":null}},"type":"binary-expr","locations":[{"start":{"line":3,"column":4},"end":{"line":3,"column":null}},{"start":{"line":4,"column":4},"end":{"line":4,"column":null}},{"start":{"line":5,"column":4},"end":{"line":5,"column":null}}]}},"s":{"0":263,"1":263},"f":{"0":263},"b":{"0":[263,239,236]}} -,"/Users/Mirek.Rusin/tsql/src/is-string.ts": {"path":"/Users/Mirek.Rusin/tsql/src/is-string.ts","statementMap":{"0":{"start":{"line":8,"column":0},"end":{"line":8,"column":15}},"1":{"start":{"line":2,"column":13},"end":{"line":2,"column":21}},"2":{"start":{"line":5,"column":2},"end":{"line":6,"column":null}},"3":{"start":{"line":6,"column":4},"end":{"line":6,"column":null}},"4":{"start":{"line":8,"column":15},"end":{"line":8,"column":23}}},"fnMap":{"0":{"name":"(anonymous_3)","decl":{"start":{"line":5,"column":2},"end":{"line":5,"column":3}},"loc":{"start":{"line":6,"column":4},"end":{"line":6,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":6,"column":4},"end":{"line":6,"column":null}},"type":"binary-expr","locations":[{"start":{"line":6,"column":4},"end":{"line":6,"column":33}},{"start":{"line":6,"column":33},"end":{"line":6,"column":null}}]}},"s":{"0":4685,"1":0,"2":22,"3":4685,"4":22},"f":{"0":4685},"b":{"0":[4685,0]}} -,"/Users/Mirek.Rusin/tsql/src/is.ts": {"path":"/Users/Mirek.Rusin/tsql/src/is.ts","statementMap":{"0":{"start":{"line":16,"column":0},"end":{"line":16,"column":15}},"1":{"start":{"line":12,"column":2},"end":{"line":14,"column":null}},"2":{"start":{"line":13,"column":4},"end":{"line":14,"column":null}},"3":{"start":{"line":14,"column":6},"end":{"line":14,"column":null}},"4":{"start":{"line":16,"column":15},"end":{"line":16,"column":null}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":12,"column":2},"end":{"line":12,"column":35}},"loc":{"start":{"line":13,"column":4},"end":{"line":14,"column":null}}},"1":{"name":"(anonymous_2)","decl":{"start":{"line":13,"column":4},"end":{"line":13,"column":5}},"loc":{"start":{"line":14,"column":6},"end":{"line":14,"column":null}}}},"branchMap":{},"s":{"0":6,"1":22,"2":6,"3":6,"4":22},"f":{"0":6,"1":6},"b":{}} -,"/Users/Mirek.Rusin/tsql/src/json-modify.ts": {"path":"/Users/Mirek.Rusin/tsql/src/json-modify.ts","statementMap":{"0":{"start":{"line":35,"column":0},"end":{"line":35,"column":15}},"1":{"start":{"line":7,"column":13},"end":{"line":7,"column":23}},"2":{"start":{"line":1,"column":17},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":21},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":22},"end":{"line":3,"column":null}},"5":{"start":{"line":4,"column":17},"end":{"line":4,"column":null}},"6":{"start":{"line":8,"column":2},"end":{"line":33,"column":null}},"7":{"start":{"line":9,"column":18},"end":{"line":9,"column":null}},"8":{"start":{"line":10,"column":4},"end":{"line":32,"column":null}},"9":{"start":{"line":11,"column":6},"end":{"line":24,"column":null}},"10":{"start":{"line":12,"column":22},"end":{"line":12,"column":null}},"11":{"start":{"line":13,"column":8},"end":{"line":23,"column":null}},"12":{"start":{"line":25,"column":6},"end":{"line":31,"column":null}},"13":{"start":{"line":35,"column":15},"end":{"line":35,"column":25}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":8,"column":2},"end":{"line":8,"column":3}},"loc":{"start":{"line":8,"column":14},"end":{"line":33,"column":null}}},"1":{"name":"(anonymous_5)","decl":{"start":{"line":10,"column":24},"end":{"line":10,"column":25}},"loc":{"start":{"line":10,"column":33},"end":{"line":32,"column":7}}}},"branchMap":{"0":{"loc":{"start":{"line":11,"column":6},"end":{"line":24,"column":null}},"type":"if","locations":[{"start":{"line":11,"column":6},"end":{"line":24,"column":null}}]}},"s":{"0":3,"1":0,"2":22,"3":22,"4":22,"5":22,"6":22,"7":3,"8":3,"9":6,"10":2,"11":2,"12":4,"13":22},"f":{"0":3,"1":6},"b":{"0":[2]}} -,"/Users/Mirek.Rusin/tsql/src/json-path-exists.ts": {"path":"/Users/Mirek.Rusin/tsql/src/json-path-exists.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":15}},"1":{"start":{"line":1,"column":31},"end":{"line":1,"column":null}},"2":{"start":{"line":2,"column":15},"end":{"line":2,"column":29}}},"fnMap":{},"branchMap":{},"s":{"0":0,"1":22,"2":22},"f":{},"b":{}} -,"/Users/Mirek.Rusin/tsql/src/json-path.ts": {"path":"/Users/Mirek.Rusin/tsql/src/json-path.ts","statementMap":{"0":{"start":{"line":23,"column":0},"end":{"line":23,"column":15}},"1":{"start":{"line":5,"column":13},"end":{"line":5,"column":21}},"2":{"start":{"line":2,"column":13},"end":{"line":2,"column":15}},"3":{"start":{"line":2,"column":18},"end":{"line":2,"column":null}},"4":{"start":{"line":6,"column":2},"end":{"line":21,"column":null}},"5":{"start":{"line":7,"column":4},"end":{"line":9,"column":null}},"6":{"start":{"line":8,"column":6},"end":{"line":8,"column":null}},"7":{"start":{"line":10,"column":28},"end":{"line":10,"column":30}},"8":{"start":{"line":11,"column":4},"end":{"line":13,"column":null}},"9":{"start":{"line":12,"column":6},"end":{"line":12,"column":null}},"10":{"start":{"line":14,"column":4},"end":{"line":16,"column":null}},"11":{"start":{"line":15,"column":6},"end":{"line":15,"column":null}},"12":{"start":{"line":17,"column":4},"end":{"line":19,"column":null}},"13":{"start":{"line":18,"column":6},"end":{"line":18,"column":null}},"14":{"start":{"line":20,"column":4},"end":{"line":20,"column":null}},"15":{"start":{"line":23,"column":15},"end":{"line":23,"column":23}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":6,"column":2},"end":{"line":6,"column":3}},"loc":{"start":{"line":6,"column":85},"end":{"line":21,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":6,"column":17},"end":{"line":6,"column":85}},"type":"default-arg","locations":[{"start":{"line":6,"column":83},"end":{"line":6,"column":85}}]},"1":{"loc":{"start":{"line":7,"column":4},"end":{"line":9,"column":null}},"type":"if","locations":[{"start":{"line":7,"column":4},"end":{"line":9,"column":null}}]},"2":{"loc":{"start":{"line":11,"column":4},"end":{"line":13,"column":null}},"type":"if","locations":[{"start":{"line":11,"column":4},"end":{"line":13,"column":null}}]},"3":{"loc":{"start":{"line":14,"column":4},"end":{"line":16,"column":null}},"type":"if","locations":[{"start":{"line":14,"column":4},"end":{"line":16,"column":null}}]},"4":{"loc":{"start":{"line":17,"column":4},"end":{"line":19,"column":null}},"type":"if","locations":[{"start":{"line":17,"column":4},"end":{"line":19,"column":null}}]}},"s":{"0":20,"1":0,"2":0,"3":22,"4":22,"5":20,"6":5,"7":15,"8":15,"9":2,"10":15,"11":1,"12":15,"13":2,"14":13,"15":22},"f":{"0":20},"b":{"0":[18],"1":[5],"2":[2],"3":[1],"4":[2]}} -,"/Users/Mirek.Rusin/tsql/src/json-query.ts": {"path":"/Users/Mirek.Rusin/tsql/src/json-query.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":15}},"1":{"start":{"line":1,"column":26},"end":{"line":1,"column":null}},"2":{"start":{"line":2,"column":15},"end":{"line":2,"column":24}}},"fnMap":{},"branchMap":{},"s":{"0":0,"1":22,"2":22},"f":{},"b":{}} -,"/Users/Mirek.Rusin/tsql/src/json-value.ts": {"path":"/Users/Mirek.Rusin/tsql/src/json-value.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":15}},"1":{"start":{"line":1,"column":26},"end":{"line":1,"column":null}},"2":{"start":{"line":2,"column":15},"end":{"line":2,"column":24}}},"fnMap":{},"branchMap":{},"s":{"0":0,"1":22,"2":22},"f":{},"b":{}} -,"/Users/Mirek.Rusin/tsql/src/json.ts": {"path":"/Users/Mirek.Rusin/tsql/src/json.ts","statementMap":{"0":{"start":{"line":16,"column":0},"end":{"line":16,"column":15}},"1":{"start":{"line":10,"column":13},"end":{"line":10,"column":17}},"2":{"start":{"line":1,"column":18},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":20},"end":{"line":2,"column":null}},"4":{"start":{"line":11,"column":2},"end":{"line":14,"column":null}},"5":{"start":{"line":12,"column":4},"end":{"line":14,"column":null}},"6":{"start":{"line":16,"column":15},"end":{"line":16,"column":19}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":11,"column":2},"end":{"line":11,"column":3}},"loc":{"start":{"line":12,"column":4},"end":{"line":14,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":12,"column":4},"end":{"line":14,"column":null}},"type":"cond-expr","locations":[{"start":{"line":13,"column":6},"end":{"line":13,"column":11}},{"start":{"line":14,"column":6},"end":{"line":14,"column":null}}]}},"s":{"0":8,"1":0,"2":22,"3":22,"4":22,"5":8,"6":22},"f":{"0":8},"b":{"0":[0,8]}} -,"/Users/Mirek.Rusin/tsql/src/keys-of-objects.ts": {"path":"/Users/Mirek.Rusin/tsql/src/keys-of-objects.ts","statementMap":{"0":{"start":{"line":31,"column":0},"end":{"line":31,"column":15}},"1":{"start":{"line":11,"column":13},"end":{"line":11,"column":26}},"2":{"start":{"line":2,"column":13},"end":{"line":2,"column":17}},"3":{"start":{"line":3,"column":2},"end":{"line":4,"column":null}},"4":{"start":{"line":4,"column":4},"end":{"line":4,"column":null}},"5":{"start":{"line":4,"column":50},"end":{"line":4,"column":61}},"6":{"start":{"line":12,"column":2},"end":{"line":29,"column":null}},"7":{"start":{"line":13,"column":4},"end":{"line":15,"column":null}},"8":{"start":{"line":14,"column":6},"end":{"line":14,"column":null}},"9":{"start":{"line":16,"column":4},"end":{"line":18,"column":null}},"10":{"start":{"line":17,"column":6},"end":{"line":17,"column":null}},"11":{"start":{"line":19,"column":17},"end":{"line":19,"column":null}},"12":{"start":{"line":20,"column":4},"end":{"line":25,"column":null}},"13":{"start":{"line":20,"column":17},"end":{"line":20,"column":20}},"14":{"start":{"line":21,"column":20},"end":{"line":21,"column":null}},"15":{"start":{"line":22,"column":6},"end":{"line":24,"column":null}},"16":{"start":{"line":23,"column":8},"end":{"line":23,"column":null}},"17":{"start":{"line":28,"column":4},"end":{"line":28,"column":null}},"18":{"start":{"line":31,"column":15},"end":{"line":31,"column":28}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":3,"column":2},"end":{"line":3,"column":3}},"loc":{"start":{"line":4,"column":4},"end":{"line":4,"column":null}}},"1":{"name":"(anonymous_5)","decl":{"start":{"line":4,"column":40},"end":{"line":4,"column":41}},"loc":{"start":{"line":4,"column":50},"end":{"line":4,"column":61}}},"2":{"name":"(anonymous_6)","decl":{"start":{"line":12,"column":2},"end":{"line":12,"column":3}},"loc":{"start":{"line":12,"column":3},"end":{"line":29,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":4,"column":4},"end":{"line":4,"column":null}},"type":"binary-expr","locations":[{"start":{"line":4,"column":4},"end":{"line":4,"column":27}},{"start":{"line":4,"column":31},"end":{"line":4,"column":null}}]},"1":{"loc":{"start":{"line":13,"column":4},"end":{"line":15,"column":null}},"type":"if","locations":[{"start":{"line":13,"column":4},"end":{"line":15,"column":null}}]},"2":{"loc":{"start":{"line":16,"column":4},"end":{"line":18,"column":null}},"type":"if","locations":[{"start":{"line":16,"column":4},"end":{"line":18,"column":null}}]},"3":{"loc":{"start":{"line":22,"column":6},"end":{"line":24,"column":null}},"type":"if","locations":[{"start":{"line":22,"column":6},"end":{"line":24,"column":null}}]}},"s":{"0":21,"1":0,"2":0,"3":22,"4":4124,"5":4152,"6":22,"7":21,"8":0,"9":21,"10":0,"11":21,"12":21,"13":21,"14":4124,"15":4124,"16":0,"17":21,"18":22},"f":{"0":4124,"1":4152,"2":21},"b":{"0":[4124,4124],"1":[0],"2":[0],"3":[0]}} -,"/Users/Mirek.Rusin/tsql/src/keywords.ts": {"path":"/Users/Mirek.Rusin/tsql/src/keywords.ts","statementMap":{"0":{"start":{"line":979,"column":0},"end":{"line":979,"column":15}},"1":{"start":{"line":1,"column":18},"end":{"line":973,"column":null}},"2":{"start":{"line":977,"column":2},"end":{"line":977,"column":null}},"3":{"start":{"line":977,"column":30},"end":{"line":977,"column":52}},"4":{"start":{"line":979,"column":15},"end":{"line":979,"column":null}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":977,"column":19},"end":{"line":977,"column":20}},"loc":{"start":{"line":977,"column":30},"end":{"line":977,"column":52}}}},"branchMap":{},"s":{"0":424,"1":22,"2":22,"3":21362,"4":22},"f":{"0":21362},"b":{}} -,"/Users/Mirek.Rusin/tsql/src/like.ts": {"path":"/Users/Mirek.Rusin/tsql/src/like.ts","statementMap":{"0":{"start":{"line":25,"column":0},"end":{"line":25,"column":15}},"1":{"start":{"line":19,"column":13},"end":{"line":19,"column":17}},"2":{"start":{"line":1,"column":21},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":15},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":19},"end":{"line":3,"column":null}},"5":{"start":{"line":4,"column":20},"end":{"line":4,"column":null}},"6":{"start":{"line":5,"column":17},"end":{"line":5,"column":null}},"7":{"start":{"line":9,"column":2},"end":{"line":12,"column":40}},"8":{"start":{"line":10,"column":4},"end":{"line":12,"column":40}},"9":{"start":{"line":20,"column":2},"end":{"line":23,"column":48}},"10":{"start":{"line":21,"column":4},"end":{"line":23,"column":48}},"11":{"start":{"line":25,"column":15},"end":{"line":25,"column":19}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":9,"column":2},"end":{"line":9,"column":3}},"loc":{"start":{"line":10,"column":4},"end":{"line":12,"column":40}}},"1":{"name":"(anonymous_5)","decl":{"start":{"line":20,"column":2},"end":{"line":20,"column":3}},"loc":{"start":{"line":21,"column":4},"end":{"line":23,"column":48}}}},"branchMap":{"0":{"loc":{"start":{"line":10,"column":4},"end":{"line":12,"column":40}},"type":"cond-expr","locations":[{"start":{"line":11,"column":6},"end":{"line":11,"column":19}},{"start":{"line":12,"column":6},"end":{"line":12,"column":40}}]},"1":{"loc":{"start":{"line":21,"column":4},"end":{"line":23,"column":48}},"type":"cond-expr","locations":[{"start":{"line":22,"column":6},"end":{"line":22,"column":null}},{"start":{"line":23,"column":6},"end":{"line":23,"column":48}}]}},"s":{"0":22,"1":0,"2":22,"3":22,"4":22,"5":22,"6":22,"7":22,"8":1,"9":22,"10":1,"11":22},"f":{"0":1,"1":1},"b":{"0":[0,1],"1":[0,1]}} -,"/Users/Mirek.Rusin/tsql/src/limited-hints-identifier.ts": {"path":"/Users/Mirek.Rusin/tsql/src/limited-hints-identifier.ts","statementMap":{"0":{"start":{"line":14,"column":0},"end":{"line":14,"column":15}},"1":{"start":{"line":1,"column":34},"end":{"line":1,"column":null}},"2":{"start":{"line":2,"column":23},"end":{"line":2,"column":null}},"3":{"start":{"line":3,"column":17},"end":{"line":3,"column":null}},"4":{"start":{"line":4,"column":21},"end":{"line":4,"column":null}},"5":{"start":{"line":9,"column":2},"end":{"line":12,"column":null}},"6":{"start":{"line":10,"column":4},"end":{"line":12,"column":null}},"7":{"start":{"line":14,"column":15},"end":{"line":14,"column":null}}},"fnMap":{"0":{"name":"(anonymous_5)","decl":{"start":{"line":9,"column":2},"end":{"line":9,"column":3}},"loc":{"start":{"line":10,"column":4},"end":{"line":12,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":10,"column":4},"end":{"line":12,"column":null}},"type":"cond-expr","locations":[{"start":{"line":11,"column":6},"end":{"line":11,"column":86}},{"start":{"line":12,"column":6},"end":{"line":12,"column":null}}]},"1":{"loc":{"start":{"line":10,"column":4},"end":{"line":10,"column":null}},"type":"binary-expr","locations":[{"start":{"line":10,"column":4},"end":{"line":10,"column":13}},{"start":{"line":10,"column":13},"end":{"line":10,"column":null}}]}},"s":{"0":20,"1":22,"2":22,"3":22,"4":22,"5":22,"6":20,"7":22},"f":{"0":20},"b":{"0":[18,2],"1":[20,20]}} -,"/Users/Mirek.Rusin/tsql/src/line.ts": {"path":"/Users/Mirek.Rusin/tsql/src/line.ts","statementMap":{"0":{"start":{"line":20,"column":0},"end":{"line":20,"column":15}},"1":{"start":{"line":14,"column":13},"end":{"line":14,"column":17}},"2":{"start":{"line":1,"column":17},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":16},"end":{"line":2,"column":null}},"4":{"start":{"line":15,"column":2},"end":{"line":18,"column":null}},"5":{"start":{"line":16,"column":22},"end":{"line":16,"column":null}},"6":{"start":{"line":16,"column":43},"end":{"line":16,"column":null}},"7":{"start":{"line":17,"column":4},"end":{"line":17,"column":null}},"8":{"start":{"line":17,"column":44},"end":{"line":17,"column":65}},"9":{"start":{"line":20,"column":15},"end":{"line":20,"column":19}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":15,"column":2},"end":{"line":15,"column":3}},"loc":{"start":{"line":15,"column":6},"end":{"line":18,"column":null}}},"1":{"name":"(anonymous_5)","decl":{"start":{"line":16,"column":38},"end":{"line":16,"column":43}},"loc":{"start":{"line":16,"column":43},"end":{"line":16,"column":null}}},"2":{"name":"(anonymous_6)","decl":{"start":{"line":17,"column":39},"end":{"line":17,"column":44}},"loc":{"start":{"line":17,"column":44},"end":{"line":17,"column":65}}}},"branchMap":{},"s":{"0":13,"1":0,"2":22,"3":22,"4":22,"5":13,"6":26,"7":13,"8":26,"9":22},"f":{"0":13,"1":26,"2":26},"b":{}} -,"/Users/Mirek.Rusin/tsql/src/lines.ts": {"path":"/Users/Mirek.Rusin/tsql/src/lines.ts","statementMap":{"0":{"start":{"line":17,"column":0},"end":{"line":17,"column":15}},"1":{"start":{"line":8,"column":13},"end":{"line":8,"column":18}},"2":{"start":{"line":1,"column":23},"end":{"line":1,"column":null}},"3":{"start":{"line":9,"column":2},"end":{"line":15,"column":null}},"4":{"start":{"line":10,"column":19},"end":{"line":10,"column":null}},"5":{"start":{"line":11,"column":4},"end":{"line":13,"column":null}},"6":{"start":{"line":12,"column":6},"end":{"line":12,"column":null}},"7":{"start":{"line":14,"column":4},"end":{"line":14,"column":null}},"8":{"start":{"line":17,"column":15},"end":{"line":17,"column":20}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":9,"column":2},"end":{"line":9,"column":6}},"loc":{"start":{"line":9,"column":44},"end":{"line":15,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":9,"column":28},"end":{"line":9,"column":44}},"type":"default-arg","locations":[{"start":{"line":9,"column":40},"end":{"line":9,"column":44}}]},"1":{"loc":{"start":{"line":11,"column":4},"end":{"line":13,"column":null}},"type":"if","locations":[{"start":{"line":11,"column":4},"end":{"line":13,"column":null}}]}},"s":{"0":5,"1":0,"2":22,"3":22,"4":5,"5":5,"6":2,"7":3,"8":22},"f":{"0":5},"b":{"0":[4],"1":[2]}} -,"/Users/Mirek.Rusin/tsql/src/list.ts": {"path":"/Users/Mirek.Rusin/tsql/src/list.ts","statementMap":{"0":{"start":{"line":23,"column":0},"end":{"line":23,"column":15}},"1":{"start":{"line":12,"column":13},"end":{"line":12,"column":17}},"2":{"start":{"line":1,"column":17},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":16},"end":{"line":2,"column":null}},"4":{"start":{"line":13,"column":2},"end":{"line":21,"column":null}},"5":{"start":{"line":14,"column":20},"end":{"line":17,"column":null}},"6":{"start":{"line":15,"column":19},"end":{"line":15,"column":null}},"7":{"start":{"line":16,"column":16},"end":{"line":16,"column":null}},"8":{"start":{"line":17,"column":19},"end":{"line":17,"column":null}},"9":{"start":{"line":18,"column":4},"end":{"line":20,"column":null}},"10":{"start":{"line":23,"column":15},"end":{"line":23,"column":19}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":13,"column":2},"end":{"line":13,"column":6}},"loc":{"start":{"line":13,"column":90},"end":{"line":21,"column":null}}},"1":{"name":"(anonymous_5)","decl":{"start":{"line":15,"column":14},"end":{"line":15,"column":19}},"loc":{"start":{"line":15,"column":19},"end":{"line":15,"column":null}}},"2":{"name":"(anonymous_6)","decl":{"start":{"line":16,"column":11},"end":{"line":16,"column":16}},"loc":{"start":{"line":16,"column":16},"end":{"line":16,"column":null}}},"3":{"name":"(anonymous_7)","decl":{"start":{"line":17,"column":14},"end":{"line":17,"column":19}},"loc":{"start":{"line":17,"column":19},"end":{"line":17,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":13,"column":28},"end":{"line":13,"column":72}},"type":"default-arg","locations":[{"start":{"line":13,"column":68},"end":{"line":13,"column":72}}]},"1":{"loc":{"start":{"line":13,"column":74},"end":{"line":13,"column":90}},"type":"default-arg","locations":[{"start":{"line":13,"column":86},"end":{"line":13,"column":90}}]},"2":{"loc":{"start":{"line":18,"column":11},"end":{"line":20,"column":null}},"type":"cond-expr","locations":[{"start":{"line":19,"column":6},"end":{"line":19,"column":null}},{"start":{"line":20,"column":6},"end":{"line":20,"column":null}}]}},"s":{"0":4274,"1":0,"2":22,"3":22,"4":22,"5":4274,"6":8524,"7":8512,"8":8512,"9":4274,"10":22},"f":{"0":4274,"1":8524,"2":8512,"3":8512},"b":{"0":[65],"1":[4245],"2":[4270,4]}} -,"/Users/Mirek.Rusin/tsql/src/logical-false.ts": {"path":"/Users/Mirek.Rusin/tsql/src/logical-false.ts","statementMap":{"0":{"start":{"line":16,"column":0},"end":{"line":16,"column":15}},"1":{"start":{"line":13,"column":13},"end":{"line":13,"column":25}},"2":{"start":{"line":2,"column":16},"end":{"line":2,"column":null}},"3":{"start":{"line":14,"column":2},"end":{"line":14,"column":null}},"4":{"start":{"line":16,"column":15},"end":{"line":16,"column":27}}},"fnMap":{},"branchMap":{},"s":{"0":8,"1":0,"2":22,"3":22,"4":22},"f":{},"b":{}} -,"/Users/Mirek.Rusin/tsql/src/logical-true.ts": {"path":"/Users/Mirek.Rusin/tsql/src/logical-true.ts","statementMap":{"0":{"start":{"line":16,"column":0},"end":{"line":16,"column":15}},"1":{"start":{"line":13,"column":13},"end":{"line":13,"column":24}},"2":{"start":{"line":2,"column":16},"end":{"line":2,"column":null}},"3":{"start":{"line":14,"column":2},"end":{"line":14,"column":null}},"4":{"start":{"line":16,"column":15},"end":{"line":16,"column":26}}},"fnMap":{},"branchMap":{},"s":{"0":25,"1":0,"2":22,"3":22,"4":22},"f":{},"b":{}} -,"/Users/Mirek.Rusin/tsql/src/lt.ts": {"path":"/Users/Mirek.Rusin/tsql/src/lt.ts","statementMap":{"0":{"start":{"line":13,"column":0},"end":{"line":13,"column":15}},"1":{"start":{"line":9,"column":13},"end":{"line":9,"column":15}},"2":{"start":{"line":1,"column":15},"end":{"line":1,"column":null}},"3":{"start":{"line":10,"column":2},"end":{"line":11,"column":null}},"4":{"start":{"line":11,"column":4},"end":{"line":11,"column":null}},"5":{"start":{"line":13,"column":15},"end":{"line":13,"column":17}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":10,"column":2},"end":{"line":10,"column":3}},"loc":{"start":{"line":11,"column":4},"end":{"line":11,"column":null}}}},"branchMap":{},"s":{"0":22,"1":0,"2":22,"3":22,"4":2,"5":22},"f":{"0":2},"b":{}} -,"/Users/Mirek.Rusin/tsql/src/lte.ts": {"path":"/Users/Mirek.Rusin/tsql/src/lte.ts","statementMap":{"0":{"start":{"line":13,"column":0},"end":{"line":13,"column":15}},"1":{"start":{"line":9,"column":13},"end":{"line":9,"column":16}},"2":{"start":{"line":1,"column":15},"end":{"line":1,"column":null}},"3":{"start":{"line":10,"column":2},"end":{"line":11,"column":null}},"4":{"start":{"line":11,"column":4},"end":{"line":11,"column":null}},"5":{"start":{"line":13,"column":15},"end":{"line":13,"column":18}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":10,"column":2},"end":{"line":10,"column":3}},"loc":{"start":{"line":11,"column":4},"end":{"line":11,"column":null}}}},"branchMap":{},"s":{"0":22,"1":0,"2":22,"3":22,"4":2,"5":22},"f":{"0":2},"b":{}} -,"/Users/Mirek.Rusin/tsql/src/margin-of-first-line.ts": {"path":"/Users/Mirek.Rusin/tsql/src/margin-of-first-line.ts","statementMap":{"0":{"start":{"line":13,"column":0},"end":{"line":13,"column":15}},"1":{"start":{"line":3,"column":2},"end":{"line":11,"column":null}},"2":{"start":{"line":4,"column":12},"end":{"line":4,"column":null}},"3":{"start":{"line":5,"column":4},"end":{"line":9,"column":null}},"4":{"start":{"line":6,"column":6},"end":{"line":8,"column":null}},"5":{"start":{"line":7,"column":8},"end":{"line":7,"column":null}},"6":{"start":{"line":10,"column":4},"end":{"line":10,"column":null}},"7":{"start":{"line":13,"column":15},"end":{"line":13,"column":null}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":3,"column":2},"end":{"line":3,"column":3}},"loc":{"start":{"line":3,"column":3},"end":{"line":11,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":6,"column":6},"end":{"line":8,"column":null}},"type":"if","locations":[{"start":{"line":6,"column":6},"end":{"line":8,"column":null}}]},"1":{"loc":{"start":{"line":6,"column":10},"end":{"line":6,"column":47}},"type":"binary-expr","locations":[{"start":{"line":6,"column":10},"end":{"line":6,"column":29}},{"start":{"line":6,"column":29},"end":{"line":6,"column":47}}]}},"s":{"0":14,"1":24,"2":14,"3":14,"4":16,"5":6,"6":14,"7":24},"f":{"0":14},"b":{"0":[6],"1":[16,8]}} -,"/Users/Mirek.Rusin/tsql/src/margin-of-last-line.ts": {"path":"/Users/Mirek.Rusin/tsql/src/margin-of-last-line.ts","statementMap":{"0":{"start":{"line":7,"column":0},"end":{"line":7,"column":15}},"1":{"start":{"line":1,"column":30},"end":{"line":1,"column":null}},"2":{"start":{"line":4,"column":2},"end":{"line":5,"column":null}},"3":{"start":{"line":5,"column":4},"end":{"line":5,"column":null}},"4":{"start":{"line":7,"column":15},"end":{"line":7,"column":null}}},"fnMap":{"0":{"name":"(anonymous_2)","decl":{"start":{"line":4,"column":2},"end":{"line":4,"column":3}},"loc":{"start":{"line":5,"column":4},"end":{"line":5,"column":null}}}},"branchMap":{},"s":{"0":8,"1":23,"2":23,"3":8,"4":23},"f":{"0":8},"b":{}} -,"/Users/Mirek.Rusin/tsql/src/maybe-line.ts": {"path":"/Users/Mirek.Rusin/tsql/src/maybe-line.ts","statementMap":{"0":{"start":{"line":20,"column":0},"end":{"line":20,"column":15}},"1":{"start":{"line":12,"column":13},"end":{"line":12,"column":22}},"2":{"start":{"line":1,"column":17},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":16},"end":{"line":2,"column":null}},"4":{"start":{"line":13,"column":2},"end":{"line":18,"column":null}},"5":{"start":{"line":14,"column":22},"end":{"line":14,"column":null}},"6":{"start":{"line":14,"column":43},"end":{"line":14,"column":null}},"7":{"start":{"line":15,"column":4},"end":{"line":17,"column":null}},"8":{"start":{"line":16,"column":39},"end":{"line":16,"column":60}},"9":{"start":{"line":20,"column":15},"end":{"line":20,"column":24}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":13,"column":2},"end":{"line":13,"column":3}},"loc":{"start":{"line":13,"column":6},"end":{"line":18,"column":null}}},"1":{"name":"(anonymous_5)","decl":{"start":{"line":14,"column":38},"end":{"line":14,"column":43}},"loc":{"start":{"line":14,"column":43},"end":{"line":14,"column":null}}},"2":{"name":"(anonymous_6)","decl":{"start":{"line":16,"column":34},"end":{"line":16,"column":39}},"loc":{"start":{"line":16,"column":39},"end":{"line":16,"column":60}}}},"branchMap":{"0":{"loc":{"start":{"line":15,"column":11},"end":{"line":17,"column":null}},"type":"cond-expr","locations":[{"start":{"line":16,"column":6},"end":{"line":16,"column":null}},{"start":{"line":17,"column":6},"end":{"line":17,"column":null}}]}},"s":{"0":0,"1":0,"2":22,"3":22,"4":22,"5":0,"6":0,"7":0,"8":0,"9":22},"f":{"0":0,"1":0,"2":0},"b":{"0":[0,0]}} -,"/Users/Mirek.Rusin/tsql/src/maybe-lines.ts": {"path":"/Users/Mirek.Rusin/tsql/src/maybe-lines.ts","statementMap":{"0":{"start":{"line":20,"column":0},"end":{"line":20,"column":15}},"1":{"start":{"line":6,"column":13},"end":{"line":6,"column":23}},"2":{"start":{"line":1,"column":17},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":16},"end":{"line":2,"column":null}},"4":{"start":{"line":7,"column":2},"end":{"line":18,"column":null}},"5":{"start":{"line":9,"column":6},"end":{"line":13,"column":null}},"6":{"start":{"line":10,"column":21},"end":{"line":10,"column":null}},"7":{"start":{"line":11,"column":18},"end":{"line":11,"column":null}},"8":{"start":{"line":12,"column":21},"end":{"line":12,"column":null}},"9":{"start":{"line":13,"column":18},"end":{"line":13,"column":null}},"10":{"start":{"line":14,"column":4},"end":{"line":16,"column":null}},"11":{"start":{"line":15,"column":6},"end":{"line":15,"column":null}},"12":{"start":{"line":17,"column":4},"end":{"line":17,"column":null}},"13":{"start":{"line":20,"column":15},"end":{"line":20,"column":25}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":7,"column":2},"end":{"line":7,"column":6}},"loc":{"start":{"line":7,"column":44},"end":{"line":18,"column":null}}},"1":{"name":"(anonymous_5)","decl":{"start":{"line":10,"column":16},"end":{"line":10,"column":21}},"loc":{"start":{"line":10,"column":21},"end":{"line":10,"column":null}}},"2":{"name":"(anonymous_6)","decl":{"start":{"line":11,"column":13},"end":{"line":11,"column":18}},"loc":{"start":{"line":11,"column":18},"end":{"line":11,"column":null}}},"3":{"name":"(anonymous_7)","decl":{"start":{"line":12,"column":16},"end":{"line":12,"column":21}},"loc":{"start":{"line":12,"column":21},"end":{"line":12,"column":null}}},"4":{"name":"(anonymous_8)","decl":{"start":{"line":13,"column":13},"end":{"line":13,"column":18}},"loc":{"start":{"line":13,"column":18},"end":{"line":13,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":7,"column":28},"end":{"line":7,"column":44}},"type":"default-arg","locations":[{"start":{"line":7,"column":40},"end":{"line":7,"column":44}}]},"1":{"loc":{"start":{"line":14,"column":4},"end":{"line":16,"column":null}},"type":"if","locations":[{"start":{"line":14,"column":4},"end":{"line":16,"column":null}}]}},"s":{"0":5,"1":0,"2":22,"3":22,"4":22,"5":5,"6":10,"7":7,"8":7,"9":7,"10":5,"11":2,"12":3,"13":22},"f":{"0":5,"1":10,"2":7,"3":7,"4":7},"b":{"0":[0],"1":[2]}} -,"/Users/Mirek.Rusin/tsql/src/merge-1n.ts": {"path":"/Users/Mirek.Rusin/tsql/src/merge-1n.ts","statementMap":{"0":{"start":{"line":45,"column":0},"end":{"line":45,"column":15}},"1":{"start":{"line":11,"column":13},"end":{"line":11,"column":20}},"2":{"start":{"line":1,"column":15},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":24},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":35},"end":{"line":3,"column":null}},"5":{"start":{"line":4,"column":16},"end":{"line":4,"column":null}},"6":{"start":{"line":5,"column":17},"end":{"line":5,"column":null}},"7":{"start":{"line":12,"column":2},"end":{"line":43,"column":null}},"8":{"start":{"line":21,"column":19},"end":{"line":21,"column":null}},"9":{"start":{"line":22,"column":21},"end":{"line":22,"column":null}},"10":{"start":{"line":23,"column":21},"end":{"line":23,"column":null}},"11":{"start":{"line":24,"column":4},"end":{"line":26,"column":null}},"12":{"start":{"line":25,"column":6},"end":{"line":25,"column":null}},"13":{"start":{"line":27,"column":4},"end":{"line":29,"column":null}},"14":{"start":{"line":28,"column":6},"end":{"line":28,"column":null}},"15":{"start":{"line":30,"column":4},"end":{"line":42,"column":null}},"16":{"start":{"line":45,"column":15},"end":{"line":45,"column":22}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":12,"column":2},"end":{"line":12,"column":null}},"loc":{"start":{"line":19,"column":10},"end":{"line":43,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":17,"column":4},"end":{"line":19,"column":10}},"type":"default-arg","locations":[{"start":{"line":19,"column":8},"end":{"line":19,"column":10}}]},"1":{"loc":{"start":{"line":17,"column":6},"end":{"line":17,"column":null}},"type":"default-arg","locations":[{"start":{"line":17,"column":14},"end":{"line":17,"column":null}}]},"2":{"loc":{"start":{"line":24,"column":4},"end":{"line":26,"column":null}},"type":"if","locations":[{"start":{"line":24,"column":4},"end":{"line":26,"column":null}}]},"3":{"loc":{"start":{"line":27,"column":4},"end":{"line":29,"column":null}},"type":"if","locations":[{"start":{"line":27,"column":4},"end":{"line":29,"column":null}}]}},"s":{"0":5,"1":0,"2":22,"3":22,"4":22,"5":22,"6":22,"7":22,"8":5,"9":5,"10":5,"11":5,"12":0,"13":5,"14":1,"15":4,"16":22},"f":{"0":5},"b":{"0":[1],"1":[1],"2":[0],"3":[1]}} -,"/Users/Mirek.Rusin/tsql/src/modify-jsons.ts": {"path":"/Users/Mirek.Rusin/tsql/src/modify-jsons.ts","statementMap":{"0":{"start":{"line":62,"column":0},"end":{"line":62,"column":15}},"1":{"start":{"line":23,"column":13},"end":{"line":23,"column":19}},"2":{"start":{"line":33,"column":13},"end":{"line":33,"column":24}},"3":{"start":{"line":15,"column":13},"end":{"line":15,"column":27}},"4":{"start":{"line":19,"column":13},"end":{"line":19,"column":27}},"5":{"start":{"line":1,"column":16},"end":{"line":1,"column":null}},"6":{"start":{"line":2,"column":15},"end":{"line":2,"column":null}},"7":{"start":{"line":3,"column":15},"end":{"line":3,"column":null}},"8":{"start":{"line":4,"column":33},"end":{"line":4,"column":null}},"9":{"start":{"line":5,"column":26},"end":{"line":5,"column":null}},"10":{"start":{"line":6,"column":17},"end":{"line":6,"column":null}},"11":{"start":{"line":9,"column":17},"end":{"line":9,"column":null}},"12":{"start":{"line":10,"column":19},"end":{"line":10,"column":null}},"13":{"start":{"line":16,"column":2},"end":{"line":17,"column":null}},"14":{"start":{"line":17,"column":4},"end":{"line":17,"column":null}},"15":{"start":{"line":20,"column":2},"end":{"line":21,"column":null}},"16":{"start":{"line":21,"column":4},"end":{"line":21,"column":null}},"17":{"start":{"line":24,"column":2},"end":{"line":29,"column":null}},"18":{"start":{"line":25,"column":4},"end":{"line":29,"column":null}},"19":{"start":{"line":29,"column":38},"end":{"line":29,"column":138}},"20":{"start":{"line":33,"column":27},"end":{"line":60,"column":null}},"21":{"start":{"line":38,"column":2},"end":{"line":40,"column":null}},"22":{"start":{"line":39,"column":4},"end":{"line":39,"column":null}},"23":{"start":{"line":42,"column":17},"end":{"line":42,"column":null}},"24":{"start":{"line":43,"column":21},"end":{"line":43,"column":null}},"25":{"start":{"line":44,"column":17},"end":{"line":44,"column":null}},"26":{"start":{"line":44,"column":40},"end":{"line":44,"column":null}},"27":{"start":{"line":45,"column":22},"end":{"line":45,"column":null}},"28":{"start":{"line":45,"column":45},"end":{"line":45,"column":null}},"29":{"start":{"line":46,"column":18},"end":{"line":49,"column":null}},"30":{"start":{"line":47,"column":21},"end":{"line":47,"column":null}},"31":{"start":{"line":47,"column":52},"end":{"line":47,"column":65}},"32":{"start":{"line":48,"column":4},"end":{"line":48,"column":null}},"33":{"start":{"line":51,"column":14},"end":{"line":51,"column":null}},"34":{"start":{"line":51,"column":37},"end":{"line":51,"column":null}},"35":{"start":{"line":53,"column":2},"end":{"line":59,"column":null}},"36":{"start":{"line":62,"column":15},"end":{"line":62,"column":26}}},"fnMap":{"0":{"name":"(anonymous_7)","decl":{"start":{"line":16,"column":2},"end":{"line":16,"column":3}},"loc":{"start":{"line":17,"column":4},"end":{"line":17,"column":null}}},"1":{"name":"(anonymous_8)","decl":{"start":{"line":20,"column":2},"end":{"line":20,"column":3}},"loc":{"start":{"line":21,"column":4},"end":{"line":21,"column":null}}},"2":{"name":"(anonymous_9)","decl":{"start":{"line":24,"column":2},"end":{"line":24,"column":3}},"loc":{"start":{"line":25,"column":4},"end":{"line":29,"column":null}}},"3":{"name":"(anonymous_10)","decl":{"start":{"line":29,"column":22},"end":{"line":29,"column":23}},"loc":{"start":{"line":29,"column":38},"end":{"line":29,"column":138}}},"4":{"name":"(anonymous_11)","decl":{"start":{"line":33,"column":27},"end":{"line":33,"column":null}},"loc":{"start":{"line":35,"column":2},"end":{"line":60,"column":null}}},"5":{"name":"(anonymous_12)","decl":{"start":{"line":44,"column":35},"end":{"line":44,"column":40}},"loc":{"start":{"line":44,"column":40},"end":{"line":44,"column":null}}},"6":{"name":"(anonymous_13)","decl":{"start":{"line":45,"column":40},"end":{"line":45,"column":45}},"loc":{"start":{"line":45,"column":45},"end":{"line":45,"column":null}}},"7":{"name":"(anonymous_14)","decl":{"start":{"line":46,"column":39},"end":{"line":46,"column":null}},"loc":{"start":{"line":46,"column":39},"end":{"line":49,"column":null}}},"8":{"name":"(anonymous_15)","decl":{"start":{"line":47,"column":47},"end":{"line":47,"column":52}},"loc":{"start":{"line":47,"column":52},"end":{"line":47,"column":65}}},"9":{"name":"(anonymous_16)","decl":{"start":{"line":51,"column":32},"end":{"line":51,"column":37}},"loc":{"start":{"line":51,"column":37},"end":{"line":51,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":38,"column":2},"end":{"line":40,"column":null}},"type":"if","locations":[{"start":{"line":38,"column":2},"end":{"line":40,"column":null}}]}},"s":{"0":2,"1":0,"2":0,"3":0,"4":0,"5":22,"6":22,"7":22,"8":22,"9":22,"10":22,"11":22,"12":22,"13":22,"14":7,"15":22,"16":6,"17":22,"18":2,"19":5,"20":22,"21":2,"22":0,"23":2,"24":2,"25":2,"26":4,"27":2,"28":4,"29":2,"30":2,"31":4,"32":2,"33":2,"34":2,"35":2,"36":22},"f":{"0":7,"1":6,"2":2,"3":5,"4":2,"5":4,"6":4,"7":2,"8":4,"9":2},"b":{"0":[0]}} -,"/Users/Mirek.Rusin/tsql/src/ne.ts": {"path":"/Users/Mirek.Rusin/tsql/src/ne.ts","statementMap":{"0":{"start":{"line":18,"column":0},"end":{"line":18,"column":15}},"1":{"start":{"line":7,"column":13},"end":{"line":7,"column":15}},"2":{"start":{"line":1,"column":21},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":15},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":19},"end":{"line":3,"column":null}},"5":{"start":{"line":5,"column":17},"end":{"line":5,"column":null}},"6":{"start":{"line":8,"column":2},"end":{"line":16,"column":null}},"7":{"start":{"line":9,"column":4},"end":{"line":11,"column":null}},"8":{"start":{"line":10,"column":6},"end":{"line":10,"column":null}},"9":{"start":{"line":12,"column":15},"end":{"line":12,"column":null}},"10":{"start":{"line":13,"column":4},"end":{"line":15,"column":null}},"11":{"start":{"line":18,"column":15},"end":{"line":18,"column":17}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":8,"column":2},"end":{"line":8,"column":3}},"loc":{"start":{"line":8,"column":20},"end":{"line":16,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":9,"column":4},"end":{"line":11,"column":null}},"type":"if","locations":[{"start":{"line":9,"column":4},"end":{"line":11,"column":null}}]},"1":{"loc":{"start":{"line":13,"column":11},"end":{"line":15,"column":27}},"type":"cond-expr","locations":[{"start":{"line":14,"column":6},"end":{"line":14,"column":29}},{"start":{"line":15,"column":6},"end":{"line":15,"column":27}}]}},"s":{"0":22,"1":0,"2":22,"3":22,"4":22,"5":22,"6":22,"7":1,"8":0,"9":1,"10":1,"11":22},"f":{"0":1},"b":{"0":[0],"1":[0,1]}} -,"/Users/Mirek.Rusin/tsql/src/ng.ts": {"path":"/Users/Mirek.Rusin/tsql/src/ng.ts","statementMap":{"0":{"start":{"line":8,"column":0},"end":{"line":8,"column":15}},"1":{"start":{"line":4,"column":13},"end":{"line":4,"column":15}},"2":{"start":{"line":1,"column":15},"end":{"line":1,"column":null}},"3":{"start":{"line":5,"column":2},"end":{"line":6,"column":null}},"4":{"start":{"line":6,"column":4},"end":{"line":6,"column":null}},"5":{"start":{"line":8,"column":15},"end":{"line":8,"column":17}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":5,"column":2},"end":{"line":5,"column":3}},"loc":{"start":{"line":6,"column":4},"end":{"line":6,"column":null}}}},"branchMap":{},"s":{"0":22,"1":0,"2":22,"3":22,"4":1,"5":22},"f":{"0":1},"b":{}} -,"/Users/Mirek.Rusin/tsql/src/nl.ts": {"path":"/Users/Mirek.Rusin/tsql/src/nl.ts","statementMap":{"0":{"start":{"line":8,"column":0},"end":{"line":8,"column":15}},"1":{"start":{"line":4,"column":13},"end":{"line":4,"column":15}},"2":{"start":{"line":1,"column":15},"end":{"line":1,"column":null}},"3":{"start":{"line":5,"column":2},"end":{"line":6,"column":null}},"4":{"start":{"line":6,"column":4},"end":{"line":6,"column":null}},"5":{"start":{"line":8,"column":15},"end":{"line":8,"column":17}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":5,"column":2},"end":{"line":5,"column":3}},"loc":{"start":{"line":6,"column":4},"end":{"line":6,"column":null}}}},"branchMap":{},"s":{"0":22,"1":0,"2":22,"3":22,"4":1,"5":22},"f":{"0":1},"b":{}} -,"/Users/Mirek.Rusin/tsql/src/not-between.ts": {"path":"/Users/Mirek.Rusin/tsql/src/not-between.ts","statementMap":{"0":{"start":{"line":12,"column":0},"end":{"line":12,"column":15}},"1":{"start":{"line":6,"column":13},"end":{"line":6,"column":23}},"2":{"start":{"line":1,"column":21},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":15},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":17},"end":{"line":3,"column":null}},"5":{"start":{"line":7,"column":2},"end":{"line":10,"column":62}},"6":{"start":{"line":8,"column":4},"end":{"line":10,"column":62}},"7":{"start":{"line":12,"column":15},"end":{"line":12,"column":25}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":7,"column":2},"end":{"line":7,"column":6}},"loc":{"start":{"line":8,"column":4},"end":{"line":10,"column":62}}}},"branchMap":{"0":{"loc":{"start":{"line":8,"column":4},"end":{"line":10,"column":62}},"type":"cond-expr","locations":[{"start":{"line":9,"column":6},"end":{"line":9,"column":null}},{"start":{"line":10,"column":6},"end":{"line":10,"column":62}}]},"1":{"loc":{"start":{"line":8,"column":4},"end":{"line":8,"column":null}},"type":"binary-expr","locations":[{"start":{"line":8,"column":4},"end":{"line":8,"column":32}},{"start":{"line":8,"column":32},"end":{"line":8,"column":null}}]}},"s":{"0":22,"1":0,"2":22,"3":22,"4":22,"5":22,"6":1,"7":22},"f":{"0":1},"b":{"0":[0,1],"1":[1,1]}} -,"/Users/Mirek.Rusin/tsql/src/not-distinct.ts": {"path":"/Users/Mirek.Rusin/tsql/src/not-distinct.ts","statementMap":{"0":{"start":{"line":15,"column":0},"end":{"line":15,"column":15}},"1":{"start":{"line":6,"column":13},"end":{"line":6,"column":24}},"2":{"start":{"line":1,"column":21},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":15},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":21},"end":{"line":3,"column":null}},"5":{"start":{"line":7,"column":2},"end":{"line":13,"column":null}},"6":{"start":{"line":8,"column":4},"end":{"line":10,"column":null}},"7":{"start":{"line":9,"column":6},"end":{"line":9,"column":null}},"8":{"start":{"line":11,"column":17},"end":{"line":11,"column":null}},"9":{"start":{"line":12,"column":4},"end":{"line":12,"column":null}},"10":{"start":{"line":15,"column":15},"end":{"line":15,"column":26}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":7,"column":2},"end":{"line":7,"column":3}},"loc":{"start":{"line":7,"column":20},"end":{"line":13,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":8,"column":4},"end":{"line":10,"column":null}},"type":"if","locations":[{"start":{"line":8,"column":4},"end":{"line":10,"column":null}}]},"1":{"loc":{"start":{"line":8,"column":8},"end":{"line":8,"column":66}},"type":"binary-expr","locations":[{"start":{"line":8,"column":8},"end":{"line":8,"column":38}},{"start":{"line":8,"column":38},"end":{"line":8,"column":66}}]}},"s":{"0":44,"1":0,"2":22,"3":22,"4":22,"5":22,"6":0,"7":0,"8":0,"9":0,"10":22},"f":{"0":0},"b":{"0":[0],"1":[0,0]}} -,"/Users/Mirek.Rusin/tsql/src/not-in.ts": {"path":"/Users/Mirek.Rusin/tsql/src/not-in.ts","statementMap":{"0":{"start":{"line":16,"column":0},"end":{"line":16,"column":15}},"1":{"start":{"line":8,"column":13},"end":{"line":8,"column":18}},"2":{"start":{"line":1,"column":21},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":15},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":19},"end":{"line":3,"column":null}},"5":{"start":{"line":4,"column":16},"end":{"line":4,"column":null}},"6":{"start":{"line":5,"column":17},"end":{"line":5,"column":null}},"7":{"start":{"line":9,"column":2},"end":{"line":14,"column":44}},"8":{"start":{"line":10,"column":4},"end":{"line":14,"column":44}},"9":{"start":{"line":16,"column":15},"end":{"line":16,"column":20}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":9,"column":2},"end":{"line":9,"column":3}},"loc":{"start":{"line":10,"column":4},"end":{"line":14,"column":44}}}},"branchMap":{"0":{"loc":{"start":{"line":10,"column":4},"end":{"line":14,"column":44}},"type":"cond-expr","locations":[{"start":{"line":11,"column":6},"end":{"line":11,"column":null}},{"start":{"line":12,"column":6},"end":{"line":14,"column":44}}]},"1":{"loc":{"start":{"line":12,"column":6},"end":{"line":14,"column":44}},"type":"cond-expr","locations":[{"start":{"line":13,"column":8},"end":{"line":13,"column":49}},{"start":{"line":14,"column":8},"end":{"line":14,"column":44}}]},"2":{"loc":{"start":{"line":12,"column":6},"end":{"line":12,"column":null}},"type":"binary-expr","locations":[{"start":{"line":12,"column":6},"end":{"line":12,"column":11}},{"start":{"line":12,"column":11},"end":{"line":12,"column":26}},{"start":{"line":12,"column":26},"end":{"line":12,"column":null}}]}},"s":{"0":44,"1":0,"2":22,"3":22,"4":22,"5":22,"6":22,"7":22,"8":1,"9":22},"f":{"0":1},"b":{"0":[0,1],"1":[1,0],"2":[1,1,1]}} -,"/Users/Mirek.Rusin/tsql/src/not.ts": {"path":"/Users/Mirek.Rusin/tsql/src/not.ts","statementMap":{"0":{"start":{"line":5,"column":0},"end":{"line":5,"column":15}},"1":{"start":{"line":3,"column":9},"end":{"line":3,"column":null}},"2":{"start":{"line":1,"column":20},"end":{"line":1,"column":null}},"3":{"start":{"line":5,"column":15},"end":{"line":5,"column":18}}},"fnMap":{},"branchMap":{},"s":{"0":0,"1":0,"2":22,"3":22},"f":{},"b":{}} -,"/Users/Mirek.Rusin/tsql/src/now.ts": {"path":"/Users/Mirek.Rusin/tsql/src/now.ts","statementMap":{"0":{"start":{"line":6,"column":0},"end":{"line":6,"column":15}},"1":{"start":{"line":3,"column":13},"end":{"line":3,"column":16}},"2":{"start":{"line":1,"column":16},"end":{"line":1,"column":null}},"3":{"start":{"line":4,"column":2},"end":{"line":4,"column":null}},"4":{"start":{"line":6,"column":15},"end":{"line":6,"column":18}}},"fnMap":{},"branchMap":{},"s":{"0":0,"1":0,"2":22,"3":22,"4":22},"f":{},"b":{}} -,"/Users/Mirek.Rusin/tsql/src/nstring.ts": {"path":"/Users/Mirek.Rusin/tsql/src/nstring.ts","statementMap":{"0":{"start":{"line":13,"column":0},"end":{"line":13,"column":15}},"1":{"start":{"line":5,"column":13},"end":{"line":5,"column":20}},"2":{"start":{"line":1,"column":26},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":14},"end":{"line":2,"column":null}},"4":{"start":{"line":6,"column":2},"end":{"line":11,"column":null}},"5":{"start":{"line":7,"column":4},"end":{"line":11,"column":null}},"6":{"start":{"line":13,"column":15},"end":{"line":13,"column":22}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":6,"column":2},"end":{"line":6,"column":3}},"loc":{"start":{"line":7,"column":4},"end":{"line":11,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":7,"column":4},"end":{"line":11,"column":null}},"type":"cond-expr","locations":[{"start":{"line":8,"column":6},"end":{"line":8,"column":null}},{"start":{"line":9,"column":6},"end":{"line":11,"column":null}}]},"1":{"loc":{"start":{"line":9,"column":6},"end":{"line":11,"column":null}},"type":"cond-expr","locations":[{"start":{"line":10,"column":8},"end":{"line":10,"column":null}},{"start":{"line":11,"column":8},"end":{"line":11,"column":null}}]}},"s":{"0":4264,"1":0,"2":22,"3":22,"4":22,"5":4264,"6":22},"f":{"0":4264},"b":{"0":[0,4264],"1":[0,4264]}} -,"/Users/Mirek.Rusin/tsql/src/null.ts": {"path":"/Users/Mirek.Rusin/tsql/src/null.ts","statementMap":{"0":{"start":{"line":6,"column":0},"end":{"line":6,"column":15}},"1":{"start":{"line":3,"column":13},"end":{"line":3,"column":18}},"2":{"start":{"line":1,"column":16},"end":{"line":1,"column":null}},"3":{"start":{"line":4,"column":2},"end":{"line":4,"column":null}},"4":{"start":{"line":6,"column":15},"end":{"line":6,"column":20}}},"fnMap":{},"branchMap":{},"s":{"0":9,"1":0,"2":22,"3":22,"4":22},"f":{},"b":{}} -,"/Users/Mirek.Rusin/tsql/src/number.ts": {"path":"/Users/Mirek.Rusin/tsql/src/number.ts","statementMap":{"0":{"start":{"line":12,"column":0},"end":{"line":12,"column":15}},"1":{"start":{"line":4,"column":13},"end":{"line":4,"column":19}},"2":{"start":{"line":1,"column":16},"end":{"line":1,"column":null}},"3":{"start":{"line":5,"column":2},"end":{"line":10,"column":null}},"4":{"start":{"line":6,"column":4},"end":{"line":8,"column":null}},"5":{"start":{"line":7,"column":6},"end":{"line":7,"column":null}},"6":{"start":{"line":9,"column":4},"end":{"line":9,"column":null}},"7":{"start":{"line":12,"column":15},"end":{"line":12,"column":21}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":5,"column":2},"end":{"line":5,"column":3}},"loc":{"start":{"line":5,"column":3},"end":{"line":10,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":6,"column":4},"end":{"line":8,"column":null}},"type":"if","locations":[{"start":{"line":6,"column":4},"end":{"line":8,"column":null}}]}},"s":{"0":75,"1":0,"2":22,"3":22,"4":75,"5":0,"6":75,"7":22},"f":{"0":75},"b":{"0":[0]}} -,"/Users/Mirek.Rusin/tsql/src/object-id.ts": {"path":"/Users/Mirek.Rusin/tsql/src/object-id.ts","statementMap":{"0":{"start":{"line":8,"column":0},"end":{"line":8,"column":15}},"1":{"start":{"line":4,"column":13},"end":{"line":4,"column":21}},"2":{"start":{"line":2,"column":17},"end":{"line":2,"column":null}},"3":{"start":{"line":5,"column":2},"end":{"line":6,"column":28}},"4":{"start":{"line":6,"column":4},"end":{"line":6,"column":28}},"5":{"start":{"line":8,"column":15},"end":{"line":8,"column":23}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":5,"column":2},"end":{"line":5,"column":3}},"loc":{"start":{"line":6,"column":4},"end":{"line":6,"column":28}}}},"branchMap":{},"s":{"0":0,"1":0,"2":22,"3":22,"4":0,"5":22},"f":{"0":0},"b":{}} -,"/Users/Mirek.Rusin/tsql/src/op.ts": {"path":"/Users/Mirek.Rusin/tsql/src/op.ts","statementMap":{"0":{"start":{"line":17,"column":0},"end":{"line":17,"column":15}},"1":{"start":{"line":11,"column":13},"end":{"line":11,"column":15}},"2":{"start":{"line":1,"column":21},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":15},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":16},"end":{"line":3,"column":null}},"5":{"start":{"line":5,"column":17},"end":{"line":5,"column":null}},"6":{"start":{"line":12,"column":2},"end":{"line":15,"column":57}},"7":{"start":{"line":13,"column":4},"end":{"line":15,"column":57}},"8":{"start":{"line":17,"column":15},"end":{"line":17,"column":17}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":12,"column":2},"end":{"line":12,"column":3}},"loc":{"start":{"line":13,"column":4},"end":{"line":15,"column":57}}}},"branchMap":{"0":{"loc":{"start":{"line":13,"column":4},"end":{"line":15,"column":57}},"type":"cond-expr","locations":[{"start":{"line":14,"column":6},"end":{"line":14,"column":null}},{"start":{"line":15,"column":6},"end":{"line":15,"column":57}}]}},"s":{"0":12,"1":0,"2":22,"3":22,"4":22,"5":22,"6":22,"7":12,"8":22},"f":{"0":12},"b":{"0":[0,12]}} -,"/Users/Mirek.Rusin/tsql/src/or.ts": {"path":"/Users/Mirek.Rusin/tsql/src/or.ts","statementMap":{"0":{"start":{"line":5,"column":0},"end":{"line":5,"column":15}},"1":{"start":{"line":3,"column":9},"end":{"line":3,"column":null}},"2":{"start":{"line":1,"column":19},"end":{"line":1,"column":null}},"3":{"start":{"line":5,"column":15},"end":{"line":5,"column":17}}},"fnMap":{},"branchMap":{},"s":{"0":6,"1":0,"2":22,"3":22},"f":{},"b":{}} -,"/Users/Mirek.Rusin/tsql/src/order-by.ts": {"path":"/Users/Mirek.Rusin/tsql/src/order-by.ts","statementMap":{"0":{"start":{"line":9,"column":0},"end":{"line":9,"column":15}},"1":{"start":{"line":1,"column":36},"end":{"line":1,"column":null}},"2":{"start":{"line":2,"column":17},"end":{"line":2,"column":null}},"3":{"start":{"line":3,"column":16},"end":{"line":3,"column":null}},"4":{"start":{"line":6,"column":2},"end":{"line":7,"column":null}},"5":{"start":{"line":7,"column":4},"end":{"line":7,"column":null}},"6":{"start":{"line":7,"column":24},"end":{"line":7,"column":null}},"7":{"start":{"line":9,"column":15},"end":{"line":9,"column":null}}},"fnMap":{"0":{"name":"(anonymous_2)","decl":{"start":{"line":6,"column":2},"end":{"line":6,"column":3}},"loc":{"start":{"line":7,"column":4},"end":{"line":7,"column":null}}},"1":{"name":"(anonymous_3)","decl":{"start":{"line":7,"column":19},"end":{"line":7,"column":24}},"loc":{"start":{"line":7,"column":24},"end":{"line":7,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":7,"column":24},"end":{"line":7,"column":null}},"type":"cond-expr","locations":[{"start":{"line":7,"column":41},"end":{"line":7,"column":70}},{"start":{"line":7,"column":70},"end":{"line":7,"column":null}}]}},"s":{"0":3,"1":22,"2":22,"3":22,"4":22,"5":3,"6":4,"7":22},"f":{"0":3,"1":4},"b":{"0":[2,2]}} -,"/Users/Mirek.Rusin/tsql/src/pick.ts": {"path":"/Users/Mirek.Rusin/tsql/src/pick.ts","statementMap":{"0":{"start":{"line":14,"column":0},"end":{"line":14,"column":15}},"1":{"start":{"line":3,"column":13},"end":{"line":3,"column":17}},"2":{"start":{"line":4,"column":2},"end":{"line":12,"column":null}},"3":{"start":{"line":5,"column":44},"end":{"line":5,"column":null}},"4":{"start":{"line":6,"column":4},"end":{"line":10,"column":null}},"5":{"start":{"line":7,"column":6},"end":{"line":9,"column":null}},"6":{"start":{"line":11,"column":4},"end":{"line":11,"column":null}},"7":{"start":{"line":14,"column":15},"end":{"line":14,"column":19}}},"fnMap":{"0":{"name":"(anonymous_3)","decl":{"start":{"line":4,"column":2},"end":{"line":4,"column":3}},"loc":{"start":{"line":4,"column":36},"end":{"line":12,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":7,"column":20},"end":{"line":9,"column":19}},"type":"cond-expr","locations":[{"start":{"line":8,"column":8},"end":{"line":8,"column":null}},{"start":{"line":9,"column":8},"end":{"line":9,"column":19}}]}},"s":{"0":0,"1":0,"2":22,"3":0,"4":0,"5":0,"6":0,"7":22},"f":{"0":0},"b":{"0":[0,0]}} -,"/Users/Mirek.Rusin/tsql/src/quoted-nstring.ts": {"path":"/Users/Mirek.Rusin/tsql/src/quoted-nstring.ts","statementMap":{"0":{"start":{"line":33,"column":0},"end":{"line":33,"column":15}},"1":{"start":{"line":25,"column":13},"end":{"line":25,"column":26}},"2":{"start":{"line":3,"column":21},"end":{"line":3,"column":null}},"3":{"start":{"line":6,"column":2},"end":{"line":7,"column":null}},"4":{"start":{"line":7,"column":4},"end":{"line":7,"column":null}},"5":{"start":{"line":10,"column":2},"end":{"line":15,"column":null}},"6":{"start":{"line":11,"column":4},"end":{"line":13,"column":null}},"7":{"start":{"line":12,"column":6},"end":{"line":12,"column":null}},"8":{"start":{"line":14,"column":4},"end":{"line":14,"column":null}},"9":{"start":{"line":18,"column":2},"end":{"line":23,"column":null}},"10":{"start":{"line":19,"column":4},"end":{"line":21,"column":null}},"11":{"start":{"line":20,"column":6},"end":{"line":20,"column":null}},"12":{"start":{"line":22,"column":4},"end":{"line":22,"column":null}},"13":{"start":{"line":26,"column":2},"end":{"line":31,"column":null}},"14":{"start":{"line":27,"column":4},"end":{"line":29,"column":null}},"15":{"start":{"line":28,"column":6},"end":{"line":28,"column":null}},"16":{"start":{"line":30,"column":4},"end":{"line":30,"column":null}},"17":{"start":{"line":33,"column":15},"end":{"line":33,"column":28}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":6,"column":2},"end":{"line":6,"column":3}},"loc":{"start":{"line":7,"column":4},"end":{"line":7,"column":null}}},"1":{"name":"(anonymous_5)","decl":{"start":{"line":10,"column":2},"end":{"line":10,"column":3}},"loc":{"start":{"line":10,"column":3},"end":{"line":15,"column":null}}},"2":{"name":"(anonymous_6)","decl":{"start":{"line":18,"column":2},"end":{"line":18,"column":3}},"loc":{"start":{"line":18,"column":3},"end":{"line":23,"column":null}}},"3":{"name":"(anonymous_7)","decl":{"start":{"line":26,"column":2},"end":{"line":26,"column":3}},"loc":{"start":{"line":26,"column":3},"end":{"line":31,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":7,"column":13},"end":{"line":7,"column":76}},"type":"cond-expr","locations":[{"start":{"line":7,"column":42},"end":{"line":7,"column":72}},{"start":{"line":7,"column":72},"end":{"line":7,"column":76}}]},"1":{"loc":{"start":{"line":11,"column":4},"end":{"line":13,"column":null}},"type":"if","locations":[{"start":{"line":11,"column":4},"end":{"line":13,"column":null}}]},"2":{"loc":{"start":{"line":19,"column":4},"end":{"line":21,"column":null}},"type":"if","locations":[{"start":{"line":19,"column":4},"end":{"line":21,"column":null}}]},"3":{"loc":{"start":{"line":27,"column":4},"end":{"line":29,"column":null}},"type":"if","locations":[{"start":{"line":27,"column":4},"end":{"line":29,"column":null}}]}},"s":{"0":4264,"1":0,"2":22,"3":22,"4":4267,"5":22,"6":4265,"7":4263,"8":2,"9":22,"10":4264,"11":4263,"12":1,"13":22,"14":4264,"15":0,"16":4264,"17":22},"f":{"0":4267,"1":4265,"2":4264,"3":4264},"b":{"0":[0,4267],"1":[4263],"2":[4263],"3":[0]}} -,"/Users/Mirek.Rusin/tsql/src/random-identifier.ts": {"path":"/Users/Mirek.Rusin/tsql/src/random-identifier.ts","statementMap":{"0":{"start":{"line":16,"column":0},"end":{"line":16,"column":15}},"1":{"start":{"line":1,"column":23},"end":{"line":1,"column":null}},"2":{"start":{"line":4,"column":17},"end":{"line":4,"column":null}},"3":{"start":{"line":7,"column":2},"end":{"line":10,"column":null}},"4":{"start":{"line":8,"column":18},"end":{"line":8,"column":null}},"5":{"start":{"line":9,"column":4},"end":{"line":9,"column":null}},"6":{"start":{"line":13,"column":2},"end":{"line":14,"column":null}},"7":{"start":{"line":14,"column":4},"end":{"line":14,"column":null}},"8":{"start":{"line":14,"column":57},"end":{"line":14,"column":73}},"9":{"start":{"line":16,"column":15},"end":{"line":16,"column":null}}},"fnMap":{"0":{"name":"(anonymous_2)","decl":{"start":{"line":7,"column":2},"end":{"line":7,"column":null}},"loc":{"start":{"line":7,"column":2},"end":{"line":10,"column":null}}},"1":{"name":"(anonymous_3)","decl":{"start":{"line":13,"column":2},"end":{"line":13,"column":3}},"loc":{"start":{"line":14,"column":4},"end":{"line":14,"column":null}}},"2":{"name":"(anonymous_4)","decl":{"start":{"line":14,"column":51},"end":{"line":14,"column":57}},"loc":{"start":{"line":14,"column":57},"end":{"line":14,"column":73}}}},"branchMap":{"0":{"loc":{"start":{"line":13,"column":3},"end":{"line":13,"column":14}},"type":"default-arg","locations":[{"start":{"line":13,"column":12},"end":{"line":13,"column":14}}]},"1":{"loc":{"start":{"line":13,"column":16},"end":{"line":13,"column":27}},"type":"default-arg","locations":[{"start":{"line":13,"column":25},"end":{"line":13,"column":27}}]}},"s":{"0":2,"1":22,"2":22,"3":22,"4":32,"5":32,"6":22,"7":2,"8":32,"9":22},"f":{"0":32,"1":2,"2":32},"b":{"0":[0],"1":[0]}} -,"/Users/Mirek.Rusin/tsql/src/raw.ts": {"path":"/Users/Mirek.Rusin/tsql/src/raw.ts","statementMap":{"0":{"start":{"line":8,"column":0},"end":{"line":8,"column":15}},"1":{"start":{"line":4,"column":13},"end":{"line":4,"column":16}},"2":{"start":{"line":1,"column":14},"end":{"line":1,"column":null}},"3":{"start":{"line":5,"column":2},"end":{"line":6,"column":null}},"4":{"start":{"line":6,"column":4},"end":{"line":6,"column":null}},"5":{"start":{"line":8,"column":15},"end":{"line":8,"column":18}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":5,"column":2},"end":{"line":5,"column":3}},"loc":{"start":{"line":6,"column":4},"end":{"line":6,"column":null}}}},"branchMap":{},"s":{"0":9282,"1":0,"2":22,"3":22,"4":9282,"5":22},"f":{"0":9282},"b":{}} -,"/Users/Mirek.Rusin/tsql/src/replace-objects.ts": {"path":"/Users/Mirek.Rusin/tsql/src/replace-objects.ts","statementMap":{"0":{"start":{"line":62,"column":0},"end":{"line":62,"column":15}},"1":{"start":{"line":19,"column":13},"end":{"line":19,"column":27}},"2":{"start":{"line":1,"column":16},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":19},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":15},"end":{"line":3,"column":null}},"5":{"start":{"line":4,"column":15},"end":{"line":4,"column":null}},"6":{"start":{"line":5,"column":33},"end":{"line":5,"column":null}},"7":{"start":{"line":6,"column":26},"end":{"line":6,"column":null}},"8":{"start":{"line":7,"column":35},"end":{"line":7,"column":null}},"9":{"start":{"line":8,"column":17},"end":{"line":8,"column":null}},"10":{"start":{"line":9,"column":16},"end":{"line":9,"column":null}},"11":{"start":{"line":10,"column":17},"end":{"line":10,"column":null}},"12":{"start":{"line":15,"column":23},"end":{"line":15,"column":null}},"13":{"start":{"line":15,"column":43},"end":{"line":15,"column":null}},"14":{"start":{"line":16,"column":23},"end":{"line":16,"column":null}},"15":{"start":{"line":16,"column":43},"end":{"line":16,"column":null}},"16":{"start":{"line":20,"column":2},"end":{"line":60,"column":null}},"17":{"start":{"line":32,"column":4},"end":{"line":34,"column":null}},"18":{"start":{"line":33,"column":6},"end":{"line":33,"column":null}},"19":{"start":{"line":36,"column":19},"end":{"line":36,"column":null}},"20":{"start":{"line":38,"column":4},"end":{"line":40,"column":null}},"21":{"start":{"line":39,"column":6},"end":{"line":39,"column":null}},"22":{"start":{"line":42,"column":23},"end":{"line":42,"column":null}},"23":{"start":{"line":43,"column":23},"end":{"line":43,"column":null}},"24":{"start":{"line":44,"column":23},"end":{"line":44,"column":null}},"25":{"start":{"line":45,"column":20},"end":{"line":45,"column":null}},"26":{"start":{"line":45,"column":45},"end":{"line":45,"column":null}},"27":{"start":{"line":46,"column":16},"end":{"line":46,"column":null}},"28":{"start":{"line":46,"column":39},"end":{"line":46,"column":null}},"29":{"start":{"line":48,"column":4},"end":{"line":59,"column":null}},"30":{"start":{"line":62,"column":15},"end":{"line":62,"column":29}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":15,"column":23},"end":{"line":15,"column":24}},"loc":{"start":{"line":15,"column":43},"end":{"line":15,"column":null}}},"1":{"name":"(anonymous_5)","decl":{"start":{"line":16,"column":23},"end":{"line":16,"column":24}},"loc":{"start":{"line":16,"column":43},"end":{"line":16,"column":null}}},"2":{"name":"(anonymous_6)","decl":{"start":{"line":20,"column":2},"end":{"line":20,"column":null}},"loc":{"start":{"line":29,"column":10},"end":{"line":60,"column":null}}},"3":{"name":"(anonymous_7)","decl":{"start":{"line":45,"column":40},"end":{"line":45,"column":45}},"loc":{"start":{"line":45,"column":45},"end":{"line":45,"column":null}}},"4":{"name":"(anonymous_8)","decl":{"start":{"line":46,"column":34},"end":{"line":46,"column":39}},"loc":{"start":{"line":46,"column":39},"end":{"line":46,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":27,"column":4},"end":{"line":29,"column":10}},"type":"default-arg","locations":[{"start":{"line":29,"column":8},"end":{"line":29,"column":10}}]},"1":{"loc":{"start":{"line":32,"column":4},"end":{"line":34,"column":null}},"type":"if","locations":[{"start":{"line":32,"column":4},"end":{"line":34,"column":null}}]},"2":{"loc":{"start":{"line":38,"column":4},"end":{"line":40,"column":null}},"type":"if","locations":[{"start":{"line":38,"column":4},"end":{"line":40,"column":null}}]},"3":{"loc":{"start":{"line":42,"column":23},"end":{"line":42,"column":null}},"type":"binary-expr","locations":[{"start":{"line":42,"column":23},"end":{"line":42,"column":42}},{"start":{"line":42,"column":42},"end":{"line":42,"column":null}}]},"4":{"loc":{"start":{"line":43,"column":23},"end":{"line":43,"column":null}},"type":"binary-expr","locations":[{"start":{"line":43,"column":23},"end":{"line":43,"column":42}},{"start":{"line":43,"column":42},"end":{"line":43,"column":null}}]},"5":{"loc":{"start":{"line":44,"column":23},"end":{"line":44,"column":null}},"type":"binary-expr","locations":[{"start":{"line":44,"column":23},"end":{"line":44,"column":42}},{"start":{"line":44,"column":42},"end":{"line":44,"column":null}}]}},"s":{"0":0,"1":0,"2":22,"3":22,"4":22,"5":22,"6":22,"7":22,"8":22,"9":22,"10":22,"11":22,"12":22,"13":0,"14":22,"15":0,"16":22,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":22},"f":{"0":0,"1":0,"2":0,"3":0,"4":0},"b":{"0":[0],"1":[0],"2":[0],"3":[0,0],"4":[0,0],"5":[0,0]}} -,"/Users/Mirek.Rusin/tsql/src/row.ts": {"path":"/Users/Mirek.Rusin/tsql/src/row.ts","statementMap":{"0":{"start":{"line":11,"column":0},"end":{"line":11,"column":15}},"1":{"start":{"line":7,"column":13},"end":{"line":7,"column":16}},"2":{"start":{"line":1,"column":17},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":17},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":16},"end":{"line":3,"column":null}},"5":{"start":{"line":8,"column":2},"end":{"line":9,"column":null}},"6":{"start":{"line":9,"column":4},"end":{"line":9,"column":null}},"7":{"start":{"line":11,"column":15},"end":{"line":11,"column":18}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":8,"column":2},"end":{"line":8,"column":6}},"loc":{"start":{"line":9,"column":4},"end":{"line":9,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":8,"column":15},"end":{"line":8,"column":36}},"type":"default-arg","locations":[{"start":{"line":8,"column":32},"end":{"line":8,"column":36}}]}},"s":{"0":4191,"1":0,"2":22,"3":22,"4":22,"5":22,"6":4191,"7":22},"f":{"0":4191},"b":{"0":[4191]}} -,"/Users/Mirek.Rusin/tsql/src/rowset.ts": {"path":"/Users/Mirek.Rusin/tsql/src/rowset.ts","statementMap":{"0":{"start":{"line":12,"column":0},"end":{"line":12,"column":15}},"1":{"start":{"line":4,"column":13},"end":{"line":4,"column":19}},"2":{"start":{"line":1,"column":16},"end":{"line":1,"column":null}},"3":{"start":{"line":5,"column":2},"end":{"line":10,"column":null}},"4":{"start":{"line":6,"column":4},"end":{"line":8,"column":null}},"5":{"start":{"line":7,"column":6},"end":{"line":7,"column":null}},"6":{"start":{"line":9,"column":4},"end":{"line":9,"column":null}},"7":{"start":{"line":12,"column":15},"end":{"line":12,"column":21}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":5,"column":2},"end":{"line":5,"column":6}},"loc":{"start":{"line":5,"column":6},"end":{"line":10,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":6,"column":4},"end":{"line":8,"column":null}},"type":"if","locations":[{"start":{"line":6,"column":4},"end":{"line":8,"column":null}}]}},"s":{"0":0,"1":0,"2":22,"3":22,"4":0,"5":0,"6":0,"7":22},"f":{"0":0},"b":{"0":[0]}} -,"/Users/Mirek.Rusin/tsql/src/sanitised-identifier.ts": {"path":"/Users/Mirek.Rusin/tsql/src/sanitised-identifier.ts","statementMap":{"0":{"start":{"line":5,"column":13},"end":{"line":5,"column":32}},"1":{"start":{"line":10,"column":0},"end":{"line":10,"column":15}},"2":{"start":{"line":1,"column":14},"end":{"line":1,"column":null}},"3":{"start":{"line":3,"column":12},"end":{"line":3,"column":null}},"4":{"start":{"line":10,"column":15},"end":{"line":10,"column":34}}},"fnMap":{},"branchMap":{},"s":{"0":0,"1":970,"2":22,"3":22,"4":22},"f":{},"b":{}} -,"/Users/Mirek.Rusin/tsql/src/sanitised.ts": {"path":"/Users/Mirek.Rusin/tsql/src/sanitised.ts","statementMap":{"0":{"start":{"line":3,"column":13},"end":{"line":3,"column":22}},"1":{"start":{"line":8,"column":0},"end":{"line":8,"column":15}},"2":{"start":{"line":1,"column":12},"end":{"line":1,"column":null}},"3":{"start":{"line":8,"column":15},"end":{"line":8,"column":24}}},"fnMap":{},"branchMap":{},"s":{"0":0,"1":31625,"2":22,"3":22},"f":{},"b":{}} -,"/Users/Mirek.Rusin/tsql/src/select.ts": {"path":"/Users/Mirek.Rusin/tsql/src/select.ts","statementMap":{"0":{"start":{"line":27,"column":0},"end":{"line":27,"column":15}},"1":{"start":{"line":9,"column":13},"end":{"line":9,"column":16}},"2":{"start":{"line":13,"column":13},"end":{"line":13,"column":19}},"3":{"start":{"line":1,"column":21},"end":{"line":1,"column":null}},"4":{"start":{"line":2,"column":15},"end":{"line":2,"column":null}},"5":{"start":{"line":3,"column":17},"end":{"line":3,"column":null}},"6":{"start":{"line":4,"column":17},"end":{"line":4,"column":null}},"7":{"start":{"line":5,"column":14},"end":{"line":5,"column":null}},"8":{"start":{"line":7,"column":17},"end":{"line":7,"column":null}},"9":{"start":{"line":10,"column":2},"end":{"line":11,"column":null}},"10":{"start":{"line":11,"column":4},"end":{"line":11,"column":null}},"11":{"start":{"line":11,"column":16},"end":{"line":11,"column":null}},"12":{"start":{"line":14,"column":2},"end":{"line":25,"column":null}},"13":{"start":{"line":15,"column":18},"end":{"line":15,"column":null}},"14":{"start":{"line":15,"column":38},"end":{"line":15,"column":null}},"15":{"start":{"line":16,"column":4},"end":{"line":18,"column":null}},"16":{"start":{"line":17,"column":6},"end":{"line":17,"column":null}},"17":{"start":{"line":19,"column":18},"end":{"line":19,"column":null}},"18":{"start":{"line":20,"column":4},"end":{"line":23,"column":null}},"19":{"start":{"line":27,"column":15},"end":{"line":27,"column":21}}},"fnMap":{"0":{"name":"(anonymous_5)","decl":{"start":{"line":10,"column":2},"end":{"line":10,"column":3}},"loc":{"start":{"line":11,"column":4},"end":{"line":11,"column":null}}},"1":{"name":"(anonymous_6)","decl":{"start":{"line":11,"column":11},"end":{"line":11,"column":16}},"loc":{"start":{"line":11,"column":16},"end":{"line":11,"column":null}}},"2":{"name":"(anonymous_7)","decl":{"start":{"line":14,"column":2},"end":{"line":14,"column":3}},"loc":{"start":{"line":14,"column":91},"end":{"line":25,"column":null}}},"3":{"name":"(anonymous_8)","decl":{"start":{"line":15,"column":33},"end":{"line":15,"column":38}},"loc":{"start":{"line":15,"column":38},"end":{"line":15,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":11,"column":16},"end":{"line":11,"column":null}},"type":"cond-expr","locations":[{"start":{"line":11,"column":33},"end":{"line":11,"column":37}},{"start":{"line":11,"column":37},"end":{"line":11,"column":null}}]},"1":{"loc":{"start":{"line":14,"column":29},"end":{"line":14,"column":91}},"type":"default-arg","locations":[{"start":{"line":14,"column":89},"end":{"line":14,"column":91}}]},"2":{"loc":{"start":{"line":16,"column":4},"end":{"line":18,"column":null}},"type":"if","locations":[{"start":{"line":16,"column":4},"end":{"line":18,"column":null}}]},"3":{"loc":{"start":{"line":19,"column":18},"end":{"line":19,"column":null}},"type":"cond-expr","locations":[{"start":{"line":19,"column":33},"end":{"line":19,"column":44}},{"start":{"line":19,"column":44},"end":{"line":19,"column":null}}]},"4":{"loc":{"start":{"line":23,"column":6},"end":{"line":23,"column":null}},"type":"cond-expr","locations":[{"start":{"line":23,"column":22},"end":{"line":23,"column":42}},{"start":{"line":23,"column":45},"end":{"line":23,"column":null}}]}},"s":{"0":0,"1":0,"2":0,"3":22,"4":22,"5":22,"6":22,"7":22,"8":22,"9":22,"10":0,"11":0,"12":22,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":22},"f":{"0":0,"1":0,"2":0,"3":0},"b":{"0":[0,0],"1":[0],"2":[0],"3":[0,0],"4":[0,0]}} -,"/Users/Mirek.Rusin/tsql/src/star.ts": {"path":"/Users/Mirek.Rusin/tsql/src/star.ts","statementMap":{"0":{"start":{"line":12,"column":0},"end":{"line":12,"column":15}},"1":{"start":{"line":6,"column":13},"end":{"line":6,"column":17}},"2":{"start":{"line":1,"column":15},"end":{"line":1,"column":null}},"3":{"start":{"line":4,"column":17},"end":{"line":4,"column":null}},"4":{"start":{"line":7,"column":2},"end":{"line":10,"column":13}},"5":{"start":{"line":8,"column":4},"end":{"line":10,"column":13}},"6":{"start":{"line":12,"column":15},"end":{"line":12,"column":19}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":7,"column":2},"end":{"line":7,"column":3}},"loc":{"start":{"line":8,"column":4},"end":{"line":10,"column":13}}}},"branchMap":{"0":{"loc":{"start":{"line":8,"column":4},"end":{"line":10,"column":13}},"type":"cond-expr","locations":[{"start":{"line":9,"column":6},"end":{"line":9,"column":26}},{"start":{"line":10,"column":6},"end":{"line":10,"column":13}}]}},"s":{"0":0,"1":0,"2":22,"3":22,"4":22,"5":0,"6":22},"f":{"0":0},"b":{"0":[0,0]}} -,"/Users/Mirek.Rusin/tsql/src/table-hint-limited.ts": {"path":"/Users/Mirek.Rusin/tsql/src/table-hint-limited.ts","statementMap":{"0":{"start":{"line":49,"column":13},"end":{"line":49,"column":22}},"1":{"start":{"line":27,"column":13},"end":{"line":27,"column":19}},"2":{"start":{"line":1,"column":16},"end":{"line":1,"column":null}},"3":{"start":{"line":27,"column":22},"end":{"line":47,"column":null}},"4":{"start":{"line":50,"column":2},"end":{"line":55,"column":null}},"5":{"start":{"line":51,"column":4},"end":{"line":53,"column":null}},"6":{"start":{"line":52,"column":6},"end":{"line":52,"column":null}},"7":{"start":{"line":54,"column":4},"end":{"line":54,"column":null}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":50,"column":2},"end":{"line":50,"column":3}},"loc":{"start":{"line":50,"column":3},"end":{"line":55,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":51,"column":4},"end":{"line":53,"column":null}},"type":"if","locations":[{"start":{"line":51,"column":4},"end":{"line":53,"column":null}}]}},"s":{"0":18,"1":0,"2":22,"3":22,"4":22,"5":18,"6":0,"7":18},"f":{"0":18},"b":{"0":[0]}} -,"/Users/Mirek.Rusin/tsql/src/template.ts": {"path":"/Users/Mirek.Rusin/tsql/src/template.ts","statementMap":{"0":{"start":{"line":11,"column":0},"end":{"line":11,"column":15}},"1":{"start":{"line":7,"column":13},"end":{"line":7,"column":21}},"2":{"start":{"line":1,"column":17},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":21},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":24},"end":{"line":3,"column":null}},"5":{"start":{"line":4,"column":16},"end":{"line":4,"column":null}},"6":{"start":{"line":8,"column":2},"end":{"line":9,"column":null}},"7":{"start":{"line":9,"column":4},"end":{"line":9,"column":null}},"8":{"start":{"line":11,"column":15},"end":{"line":11,"column":23}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":8,"column":2},"end":{"line":8,"column":3}},"loc":{"start":{"line":9,"column":4},"end":{"line":9,"column":null}}}},"branchMap":{},"s":{"0":406,"1":0,"2":22,"3":22,"4":22,"5":22,"6":22,"7":406,"8":22},"f":{"0":406},"b":{}} -,"/Users/Mirek.Rusin/tsql/src/top.ts": {"path":"/Users/Mirek.Rusin/tsql/src/top.ts","statementMap":{"0":{"start":{"line":30,"column":0},"end":{"line":30,"column":15}},"1":{"start":{"line":14,"column":13},"end":{"line":14,"column":16}},"2":{"start":{"line":1,"column":17},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":17},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":19},"end":{"line":3,"column":null}},"5":{"start":{"line":4,"column":16},"end":{"line":4,"column":null}},"6":{"start":{"line":15,"column":2},"end":{"line":28,"column":null}},"7":{"start":{"line":16,"column":4},"end":{"line":18,"column":null}},"8":{"start":{"line":17,"column":6},"end":{"line":17,"column":null}},"9":{"start":{"line":19,"column":28},"end":{"line":21,"column":null}},"10":{"start":{"line":22,"column":4},"end":{"line":26,"column":null}},"11":{"start":{"line":30,"column":15},"end":{"line":30,"column":18}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":15,"column":2},"end":{"line":15,"column":3}},"loc":{"start":{"line":15,"column":13},"end":{"line":28,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":15,"column":3},"end":{"line":15,"column":8}},"type":"default-arg","locations":[{"start":{"line":15,"column":7},"end":{"line":15,"column":8}}]},"1":{"loc":{"start":{"line":16,"column":4},"end":{"line":18,"column":null}},"type":"if","locations":[{"start":{"line":16,"column":4},"end":{"line":18,"column":null}}]},"2":{"loc":{"start":{"line":19,"column":28},"end":{"line":21,"column":null}},"type":"cond-expr","locations":[{"start":{"line":20,"column":6},"end":{"line":20,"column":null}},{"start":{"line":21,"column":6},"end":{"line":21,"column":null}}]},"3":{"loc":{"start":{"line":25,"column":6},"end":{"line":25,"column":null}},"type":"cond-expr","locations":[{"start":{"line":25,"column":16},"end":{"line":25,"column":33}},{"start":{"line":25,"column":33},"end":{"line":25,"column":null}}]}},"s":{"0":0,"1":0,"2":22,"3":22,"4":22,"5":22,"6":22,"7":0,"8":0,"9":0,"10":0,"11":22},"f":{"0":0},"b":{"0":[0],"1":[0],"2":[0,0],"3":[0,0]}} -,"/Users/Mirek.Rusin/tsql/src/true-value.ts": {"path":"/Users/Mirek.Rusin/tsql/src/true-value.ts","statementMap":{"0":{"start":{"line":16,"column":0},"end":{"line":16,"column":15}},"1":{"start":{"line":13,"column":13},"end":{"line":13,"column":22}},"2":{"start":{"line":2,"column":16},"end":{"line":2,"column":null}},"3":{"start":{"line":14,"column":2},"end":{"line":14,"column":null}},"4":{"start":{"line":16,"column":15},"end":{"line":16,"column":24}}},"fnMap":{},"branchMap":{},"s":{"0":8,"1":0,"2":22,"3":22,"4":22},"f":{},"b":{}} -,"/Users/Mirek.Rusin/tsql/src/unique.ts": {"path":"/Users/Mirek.Rusin/tsql/src/unique.ts","statementMap":{"0":{"start":{"line":17,"column":0},"end":{"line":17,"column":15}},"1":{"start":{"line":4,"column":16},"end":{"line":4,"column":22}},"2":{"start":{"line":5,"column":14},"end":{"line":5,"column":null}},"3":{"start":{"line":6,"column":22},"end":{"line":6,"column":24}},"4":{"start":{"line":7,"column":2},"end":{"line":13,"column":null}},"5":{"start":{"line":8,"column":24},"end":{"line":8,"column":null}},"6":{"start":{"line":9,"column":4},"end":{"line":12,"column":null}},"7":{"start":{"line":10,"column":6},"end":{"line":10,"column":null}},"8":{"start":{"line":11,"column":6},"end":{"line":11,"column":null}},"9":{"start":{"line":14,"column":2},"end":{"line":14,"column":null}},"10":{"start":{"line":17,"column":15},"end":{"line":17,"column":21}}},"fnMap":{"0":{"name":"unique","decl":{"start":{"line":4,"column":16},"end":{"line":4,"column":22}},"loc":{"start":{"line":4,"column":34},"end":{"line":15,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":9,"column":4},"end":{"line":12,"column":null}},"type":"if","locations":[{"start":{"line":9,"column":4},"end":{"line":12,"column":null}}]}},"s":{"0":78,"1":0,"2":78,"3":78,"4":78,"5":108,"6":108,"7":105,"8":105,"9":78,"10":22},"f":{"0":78},"b":{"0":[105]}} -,"/Users/Mirek.Rusin/tsql/src/unix.ts": {"path":"/Users/Mirek.Rusin/tsql/src/unix.ts","statementMap":{"0":{"start":{"line":6,"column":0},"end":{"line":6,"column":15}},"1":{"start":{"line":1,"column":17},"end":{"line":1,"column":null}},"2":{"start":{"line":4,"column":2},"end":{"line":4,"column":56}},"3":{"start":{"line":6,"column":15},"end":{"line":6,"column":null}}},"fnMap":{},"branchMap":{},"s":{"0":0,"1":22,"2":22,"3":22},"f":{},"b":{}} -,"/Users/Mirek.Rusin/tsql/src/update-objects.ts": {"path":"/Users/Mirek.Rusin/tsql/src/update-objects.ts","statementMap":{"0":{"start":{"line":58,"column":0},"end":{"line":58,"column":15}},"1":{"start":{"line":14,"column":13},"end":{"line":14,"column":27}},"2":{"start":{"line":18,"column":13},"end":{"line":18,"column":27}},"3":{"start":{"line":23,"column":13},"end":{"line":23,"column":26}},"4":{"start":{"line":1,"column":16},"end":{"line":1,"column":null}},"5":{"start":{"line":2,"column":19},"end":{"line":2,"column":null}},"6":{"start":{"line":3,"column":15},"end":{"line":3,"column":null}},"7":{"start":{"line":4,"column":15},"end":{"line":4,"column":null}},"8":{"start":{"line":5,"column":33},"end":{"line":5,"column":null}},"9":{"start":{"line":6,"column":26},"end":{"line":6,"column":null}},"10":{"start":{"line":7,"column":35},"end":{"line":7,"column":null}},"11":{"start":{"line":8,"column":17},"end":{"line":8,"column":null}},"12":{"start":{"line":9,"column":17},"end":{"line":9,"column":null}},"13":{"start":{"line":15,"column":2},"end":{"line":16,"column":null}},"14":{"start":{"line":16,"column":4},"end":{"line":16,"column":null}},"15":{"start":{"line":19,"column":2},"end":{"line":20,"column":null}},"16":{"start":{"line":20,"column":4},"end":{"line":20,"column":null}},"17":{"start":{"line":24,"column":2},"end":{"line":56,"column":null}},"18":{"start":{"line":35,"column":4},"end":{"line":37,"column":null}},"19":{"start":{"line":36,"column":6},"end":{"line":36,"column":null}},"20":{"start":{"line":39,"column":4},"end":{"line":41,"column":null}},"21":{"start":{"line":40,"column":6},"end":{"line":40,"column":null}},"22":{"start":{"line":43,"column":19},"end":{"line":43,"column":null}},"23":{"start":{"line":44,"column":23},"end":{"line":44,"column":null}},"24":{"start":{"line":45,"column":23},"end":{"line":45,"column":null}},"25":{"start":{"line":46,"column":20},"end":{"line":46,"column":null}},"26":{"start":{"line":46,"column":45},"end":{"line":46,"column":null}},"27":{"start":{"line":47,"column":16},"end":{"line":47,"column":null}},"28":{"start":{"line":47,"column":39},"end":{"line":47,"column":null}},"29":{"start":{"line":49,"column":4},"end":{"line":55,"column":null}},"30":{"start":{"line":58,"column":15},"end":{"line":58,"column":28}}},"fnMap":{"0":{"name":"(anonymous_6)","decl":{"start":{"line":15,"column":2},"end":{"line":15,"column":3}},"loc":{"start":{"line":16,"column":4},"end":{"line":16,"column":null}}},"1":{"name":"(anonymous_7)","decl":{"start":{"line":19,"column":2},"end":{"line":19,"column":3}},"loc":{"start":{"line":20,"column":4},"end":{"line":20,"column":null}}},"2":{"name":"(anonymous_8)","decl":{"start":{"line":24,"column":2},"end":{"line":24,"column":null}},"loc":{"start":{"line":32,"column":10},"end":{"line":56,"column":null}}},"3":{"name":"(anonymous_9)","decl":{"start":{"line":46,"column":40},"end":{"line":46,"column":45}},"loc":{"start":{"line":46,"column":45},"end":{"line":46,"column":null}}},"4":{"name":"(anonymous_10)","decl":{"start":{"line":47,"column":34},"end":{"line":47,"column":39}},"loc":{"start":{"line":47,"column":39},"end":{"line":47,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":30,"column":4},"end":{"line":32,"column":10}},"type":"default-arg","locations":[{"start":{"line":32,"column":8},"end":{"line":32,"column":10}}]},"1":{"loc":{"start":{"line":30,"column":6},"end":{"line":30,"column":null}},"type":"default-arg","locations":[{"start":{"line":30,"column":14},"end":{"line":30,"column":null}}]},"2":{"loc":{"start":{"line":35,"column":4},"end":{"line":37,"column":null}},"type":"if","locations":[{"start":{"line":35,"column":4},"end":{"line":37,"column":null}}]},"3":{"loc":{"start":{"line":39,"column":4},"end":{"line":41,"column":null}},"type":"if","locations":[{"start":{"line":39,"column":4},"end":{"line":41,"column":null}}]},"4":{"loc":{"start":{"line":44,"column":23},"end":{"line":44,"column":null}},"type":"binary-expr","locations":[{"start":{"line":44,"column":23},"end":{"line":44,"column":42}},{"start":{"line":44,"column":42},"end":{"line":44,"column":null}}]},"5":{"loc":{"start":{"line":45,"column":23},"end":{"line":45,"column":null}},"type":"binary-expr","locations":[{"start":{"line":45,"column":23},"end":{"line":45,"column":42}},{"start":{"line":45,"column":42},"end":{"line":45,"column":null}}]}},"s":{"0":0,"1":0,"2":0,"3":0,"4":22,"5":22,"6":22,"7":22,"8":22,"9":22,"10":22,"11":22,"12":22,"13":22,"14":0,"15":22,"16":0,"17":22,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":22},"f":{"0":0,"1":0,"2":0,"3":0,"4":0},"b":{"0":[0],"1":[0],"2":[0],"3":[0],"4":[0,0],"5":[0,0]}} -,"/Users/Mirek.Rusin/tsql/src/update.ts": {"path":"/Users/Mirek.Rusin/tsql/src/update.ts","statementMap":{"0":{"start":{"line":38,"column":0},"end":{"line":38,"column":15}},"1":{"start":{"line":12,"column":13},"end":{"line":12,"column":19}},"2":{"start":{"line":1,"column":25},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":21},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":35},"end":{"line":3,"column":null}},"5":{"start":{"line":4,"column":24},"end":{"line":4,"column":null}},"6":{"start":{"line":5,"column":17},"end":{"line":5,"column":null}},"7":{"start":{"line":9,"column":20},"end":{"line":9,"column":null}},"8":{"start":{"line":13,"column":2},"end":{"line":36,"column":null}},"9":{"start":{"line":21,"column":4},"end":{"line":23,"column":null}},"10":{"start":{"line":22,"column":6},"end":{"line":22,"column":null}},"11":{"start":{"line":24,"column":19},"end":{"line":24,"column":null}},"12":{"start":{"line":25,"column":19},"end":{"line":25,"column":58}},"13":{"start":{"line":26,"column":20},"end":{"line":26,"column":null}},"14":{"start":{"line":27,"column":4},"end":{"line":29,"column":null}},"15":{"start":{"line":28,"column":6},"end":{"line":28,"column":null}},"16":{"start":{"line":30,"column":4},"end":{"line":35,"column":null}},"17":{"start":{"line":38,"column":15},"end":{"line":38,"column":21}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":13,"column":2},"end":{"line":13,"column":null}},"loc":{"start":{"line":19,"column":10},"end":{"line":36,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":17,"column":4},"end":{"line":19,"column":10}},"type":"default-arg","locations":[{"start":{"line":19,"column":8},"end":{"line":19,"column":10}}]},"1":{"loc":{"start":{"line":17,"column":6},"end":{"line":17,"column":null}},"type":"default-arg","locations":[{"start":{"line":17,"column":14},"end":{"line":17,"column":null}}]},"2":{"loc":{"start":{"line":21,"column":4},"end":{"line":23,"column":null}},"type":"if","locations":[{"start":{"line":21,"column":4},"end":{"line":23,"column":null}}]},"3":{"loc":{"start":{"line":25,"column":19},"end":{"line":25,"column":58}},"type":"binary-expr","locations":[{"start":{"line":25,"column":19},"end":{"line":25,"column":47}},{"start":{"line":25,"column":47},"end":{"line":25,"column":58}}]},"4":{"loc":{"start":{"line":27,"column":4},"end":{"line":29,"column":null}},"type":"if","locations":[{"start":{"line":27,"column":4},"end":{"line":29,"column":null}}]}},"s":{"0":6,"1":0,"2":22,"3":22,"4":22,"5":22,"6":22,"7":22,"8":22,"9":6,"10":1,"11":5,"12":5,"13":5,"14":5,"15":1,"16":4,"17":22},"f":{"0":6},"b":{"0":[5],"1":[5],"2":[1],"3":[5,0],"4":[1]}} -,"/Users/Mirek.Rusin/tsql/src/upsert-objects.ts": {"path":"/Users/Mirek.Rusin/tsql/src/upsert-objects.ts","statementMap":{"0":{"start":{"line":70,"column":0},"end":{"line":70,"column":15}},"1":{"start":{"line":15,"column":13},"end":{"line":15,"column":27}},"2":{"start":{"line":19,"column":13},"end":{"line":19,"column":27}},"3":{"start":{"line":30,"column":13},"end":{"line":30,"column":26}},"4":{"start":{"line":1,"column":16},"end":{"line":1,"column":null}},"5":{"start":{"line":2,"column":19},"end":{"line":2,"column":null}},"6":{"start":{"line":3,"column":15},"end":{"line":3,"column":null}},"7":{"start":{"line":4,"column":15},"end":{"line":4,"column":null}},"8":{"start":{"line":5,"column":33},"end":{"line":5,"column":null}},"9":{"start":{"line":6,"column":26},"end":{"line":6,"column":null}},"10":{"start":{"line":7,"column":35},"end":{"line":7,"column":null}},"11":{"start":{"line":8,"column":17},"end":{"line":8,"column":null}},"12":{"start":{"line":9,"column":16},"end":{"line":9,"column":null}},"13":{"start":{"line":10,"column":17},"end":{"line":10,"column":null}},"14":{"start":{"line":16,"column":2},"end":{"line":17,"column":null}},"15":{"start":{"line":17,"column":4},"end":{"line":17,"column":null}},"16":{"start":{"line":20,"column":2},"end":{"line":21,"column":null}},"17":{"start":{"line":21,"column":4},"end":{"line":21,"column":null}},"18":{"start":{"line":31,"column":2},"end":{"line":68,"column":null}},"19":{"start":{"line":43,"column":4},"end":{"line":45,"column":null}},"20":{"start":{"line":44,"column":6},"end":{"line":44,"column":null}},"21":{"start":{"line":47,"column":4},"end":{"line":49,"column":null}},"22":{"start":{"line":48,"column":6},"end":{"line":48,"column":null}},"23":{"start":{"line":51,"column":19},"end":{"line":51,"column":null}},"24":{"start":{"line":52,"column":23},"end":{"line":52,"column":null}},"25":{"start":{"line":53,"column":23},"end":{"line":53,"column":null}},"26":{"start":{"line":54,"column":23},"end":{"line":54,"column":null}},"27":{"start":{"line":55,"column":20},"end":{"line":55,"column":null}},"28":{"start":{"line":55,"column":45},"end":{"line":55,"column":null}},"29":{"start":{"line":56,"column":16},"end":{"line":56,"column":null}},"30":{"start":{"line":56,"column":39},"end":{"line":56,"column":null}},"31":{"start":{"line":58,"column":4},"end":{"line":67,"column":null}},"32":{"start":{"line":70,"column":15},"end":{"line":70,"column":28}}},"fnMap":{"0":{"name":"(anonymous_6)","decl":{"start":{"line":16,"column":2},"end":{"line":16,"column":3}},"loc":{"start":{"line":17,"column":4},"end":{"line":17,"column":null}}},"1":{"name":"(anonymous_7)","decl":{"start":{"line":20,"column":2},"end":{"line":20,"column":3}},"loc":{"start":{"line":21,"column":4},"end":{"line":21,"column":null}}},"2":{"name":"(anonymous_8)","decl":{"start":{"line":31,"column":2},"end":{"line":31,"column":null}},"loc":{"start":{"line":40,"column":10},"end":{"line":68,"column":null}}},"3":{"name":"(anonymous_9)","decl":{"start":{"line":55,"column":40},"end":{"line":55,"column":45}},"loc":{"start":{"line":55,"column":45},"end":{"line":55,"column":null}}},"4":{"name":"(anonymous_10)","decl":{"start":{"line":56,"column":34},"end":{"line":56,"column":39}},"loc":{"start":{"line":56,"column":39},"end":{"line":56,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":38,"column":4},"end":{"line":40,"column":10}},"type":"default-arg","locations":[{"start":{"line":40,"column":8},"end":{"line":40,"column":10}}]},"1":{"loc":{"start":{"line":38,"column":6},"end":{"line":38,"column":null}},"type":"default-arg","locations":[{"start":{"line":38,"column":14},"end":{"line":38,"column":null}}]},"2":{"loc":{"start":{"line":43,"column":4},"end":{"line":45,"column":null}},"type":"if","locations":[{"start":{"line":43,"column":4},"end":{"line":45,"column":null}}]},"3":{"loc":{"start":{"line":47,"column":4},"end":{"line":49,"column":null}},"type":"if","locations":[{"start":{"line":47,"column":4},"end":{"line":49,"column":null}}]},"4":{"loc":{"start":{"line":52,"column":23},"end":{"line":52,"column":null}},"type":"binary-expr","locations":[{"start":{"line":52,"column":23},"end":{"line":52,"column":42}},{"start":{"line":52,"column":42},"end":{"line":52,"column":null}}]},"5":{"loc":{"start":{"line":53,"column":23},"end":{"line":53,"column":null}},"type":"binary-expr","locations":[{"start":{"line":53,"column":23},"end":{"line":53,"column":42}},{"start":{"line":53,"column":42},"end":{"line":53,"column":null}}]},"6":{"loc":{"start":{"line":54,"column":23},"end":{"line":54,"column":null}},"type":"binary-expr","locations":[{"start":{"line":54,"column":23},"end":{"line":54,"column":42}},{"start":{"line":54,"column":42},"end":{"line":54,"column":null}}]}},"s":{"0":0,"1":0,"2":0,"3":0,"4":22,"5":22,"6":22,"7":22,"8":22,"9":22,"10":22,"11":22,"12":22,"13":22,"14":22,"15":0,"16":22,"17":0,"18":22,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":22},"f":{"0":0,"1":0,"2":0,"3":0,"4":0},"b":{"0":[0],"1":[0],"2":[0],"3":[0],"4":[0,0],"5":[0,0],"6":[0,0]}} -,"/Users/Mirek.Rusin/tsql/src/where.ts": {"path":"/Users/Mirek.Rusin/tsql/src/where.ts","statementMap":{"0":{"start":{"line":164,"column":16},"end":{"line":164,"column":19}},"1":{"start":{"line":193,"column":0},"end":{"line":193,"column":15}},"2":{"start":{"line":187,"column":16},"end":{"line":187,"column":19}},"3":{"start":{"line":179,"column":16},"end":{"line":179,"column":18}},"4":{"start":{"line":122,"column":16},"end":{"line":122,"column":21}},"5":{"start":{"line":151,"column":16},"end":{"line":151,"column":21}},"6":{"start":{"line":1,"column":26},"end":{"line":1,"column":null}},"7":{"start":{"line":2,"column":25},"end":{"line":2,"column":null}},"8":{"start":{"line":3,"column":17},"end":{"line":3,"column":null}},"9":{"start":{"line":4,"column":20},"end":{"line":4,"column":null}},"10":{"start":{"line":5,"column":21},"end":{"line":5,"column":null}},"11":{"start":{"line":6,"column":15},"end":{"line":6,"column":null}},"12":{"start":{"line":7,"column":15},"end":{"line":7,"column":null}},"13":{"start":{"line":8,"column":16},"end":{"line":8,"column":null}},"14":{"start":{"line":9,"column":16},"end":{"line":9,"column":null}},"15":{"start":{"line":10,"column":25},"end":{"line":10,"column":null}},"16":{"start":{"line":11,"column":17},"end":{"line":11,"column":null}},"17":{"start":{"line":12,"column":25},"end":{"line":12,"column":null}},"18":{"start":{"line":13,"column":24},"end":{"line":13,"column":null}},"19":{"start":{"line":14,"column":15},"end":{"line":14,"column":null}},"20":{"start":{"line":15,"column":16},"end":{"line":15,"column":null}},"21":{"start":{"line":16,"column":15},"end":{"line":16,"column":null}},"22":{"start":{"line":17,"column":15},"end":{"line":17,"column":null}},"23":{"start":{"line":18,"column":15},"end":{"line":18,"column":null}},"24":{"start":{"line":19,"column":23},"end":{"line":19,"column":null}},"25":{"start":{"line":20,"column":24},"end":{"line":20,"column":null}},"26":{"start":{"line":21,"column":18},"end":{"line":21,"column":null}},"27":{"start":{"line":22,"column":16},"end":{"line":22,"column":null}},"28":{"start":{"line":23,"column":14},"end":{"line":23,"column":null}},"29":{"start":{"line":24,"column":21},"end":{"line":24,"column":null}},"30":{"start":{"line":25,"column":19},"end":{"line":25,"column":null}},"31":{"start":{"line":31,"column":14},"end":{"line":33,"column":null}},"32":{"start":{"line":37,"column":15},"end":{"line":55,"column":null}},"33":{"start":{"line":59,"column":16},"end":{"line":62,"column":null}},"34":{"start":{"line":68,"column":2},"end":{"line":70,"column":null}},"35":{"start":{"line":69,"column":4},"end":{"line":69,"column":null}},"36":{"start":{"line":72,"column":2},"end":{"line":78,"column":null}},"37":{"start":{"line":73,"column":4},"end":{"line":76,"column":null}},"38":{"start":{"line":74,"column":6},"end":{"line":74,"column":null}},"39":{"start":{"line":75,"column":6},"end":{"line":75,"column":null}},"40":{"start":{"line":77,"column":4},"end":{"line":77,"column":null}},"41":{"start":{"line":79,"column":2},"end":{"line":79,"column":null}},"42":{"start":{"line":83,"column":2},"end":{"line":85,"column":null}},"43":{"start":{"line":84,"column":4},"end":{"line":84,"column":null}},"44":{"start":{"line":86,"column":15},"end":{"line":86,"column":null}},"45":{"start":{"line":87,"column":2},"end":{"line":118,"column":null}},"46":{"start":{"line":88,"column":19},"end":{"line":88,"column":59}},"47":{"start":{"line":89,"column":4},"end":{"line":117,"column":null}},"48":{"start":{"line":92,"column":8},"end":{"line":94,"column":null}},"49":{"start":{"line":93,"column":10},"end":{"line":93,"column":null}},"50":{"start":{"line":95,"column":8},"end":{"line":97,"column":null}},"51":{"start":{"line":96,"column":10},"end":{"line":96,"column":null}},"52":{"start":{"line":98,"column":8},"end":{"line":98,"column":null}},"53":{"start":{"line":102,"column":8},"end":{"line":104,"column":null}},"54":{"start":{"line":103,"column":10},"end":{"line":103,"column":null}},"55":{"start":{"line":105,"column":8},"end":{"line":107,"column":null}},"56":{"start":{"line":106,"column":10},"end":{"line":106,"column":null}},"57":{"start":{"line":108,"column":8},"end":{"line":108,"column":null}},"58":{"start":{"line":110,"column":8},"end":{"line":116,"column":null}},"59":{"start":{"line":119,"column":2},"end":{"line":119,"column":null}},"60":{"start":{"line":123,"column":2},"end":{"line":125,"column":null}},"61":{"start":{"line":124,"column":4},"end":{"line":124,"column":null}},"62":{"start":{"line":126,"column":14},"end":{"line":126,"column":null}},"63":{"start":{"line":127,"column":2},"end":{"line":138,"column":null}},"64":{"start":{"line":128,"column":19},"end":{"line":128,"column":58}},"65":{"start":{"line":129,"column":4},"end":{"line":134,"column":null}},"66":{"start":{"line":130,"column":6},"end":{"line":132,"column":null}},"67":{"start":{"line":131,"column":8},"end":{"line":131,"column":null}},"68":{"start":{"line":133,"column":6},"end":{"line":133,"column":null}},"69":{"start":{"line":135,"column":4},"end":{"line":137,"column":null}},"70":{"start":{"line":136,"column":6},"end":{"line":136,"column":null}},"71":{"start":{"line":139,"column":2},"end":{"line":142,"column":null}},"72":{"start":{"line":140,"column":20},"end":{"line":140,"column":null}},"73":{"start":{"line":140,"column":51},"end":{"line":140,"column":null}},"74":{"start":{"line":141,"column":4},"end":{"line":141,"column":null}},"75":{"start":{"line":143,"column":2},"end":{"line":143,"column":null}},"76":{"start":{"line":152,"column":2},"end":{"line":152,"column":null}},"77":{"start":{"line":165,"column":14},"end":{"line":165,"column":null}},"78":{"start":{"line":166,"column":2},"end":{"line":168,"column":null}},"79":{"start":{"line":167,"column":4},"end":{"line":167,"column":null}},"80":{"start":{"line":169,"column":2},"end":{"line":169,"column":null}},"81":{"start":{"line":180,"column":14},"end":{"line":180,"column":null}},"82":{"start":{"line":181,"column":2},"end":{"line":183,"column":null}},"83":{"start":{"line":182,"column":4},"end":{"line":182,"column":null}},"84":{"start":{"line":184,"column":2},"end":{"line":184,"column":null}},"85":{"start":{"line":188,"column":2},"end":{"line":190,"column":null}},"86":{"start":{"line":193,"column":15},"end":{"line":193,"column":20}}},"fnMap":{"0":{"name":"single","decl":{"start":{"line":67,"column":9},"end":{"line":67,"column":16}},"loc":{"start":{"line":67,"column":30},"end":{"line":80,"column":null}}},"1":{"name":"visitEntry","decl":{"start":{"line":82,"column":9},"end":{"line":82,"column":20}},"loc":{"start":{"line":82,"column":47},"end":{"line":120,"column":null}}},"2":{"name":"visit","decl":{"start":{"line":122,"column":16},"end":{"line":122,"column":21}},"loc":{"start":{"line":122,"column":36},"end":{"line":144,"column":null}}},"3":{"name":"(anonymous_11)","decl":{"start":{"line":140,"column":46},"end":{"line":140,"column":51}},"loc":{"start":{"line":140,"column":51},"end":{"line":140,"column":null}}},"4":{"name":"where","decl":{"start":{"line":151,"column":16},"end":{"line":151,"column":21}},"loc":{"start":{"line":151,"column":34},"end":{"line":153,"column":null}}},"5":{"name":"and","decl":{"start":{"line":164,"column":16},"end":{"line":164,"column":19}},"loc":{"start":{"line":164,"column":48},"end":{"line":170,"column":null}}},"6":{"name":"or","decl":{"start":{"line":179,"column":16},"end":{"line":179,"column":18}},"loc":{"start":{"line":179,"column":47},"end":{"line":185,"column":null}}},"7":{"name":"not","decl":{"start":{"line":187,"column":16},"end":{"line":187,"column":19}},"loc":{"start":{"line":187,"column":42},"end":{"line":191,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":68,"column":2},"end":{"line":70,"column":null}},"type":"if","locations":[{"start":{"line":68,"column":2},"end":{"line":70,"column":null}}]},"1":{"loc":{"start":{"line":73,"column":4},"end":{"line":76,"column":null}},"type":"if","locations":[{"start":{"line":73,"column":4},"end":{"line":76,"column":null}}]},"2":{"loc":{"start":{"line":83,"column":2},"end":{"line":85,"column":null}},"type":"if","locations":[{"start":{"line":83,"column":2},"end":{"line":85,"column":null}}]},"3":{"loc":{"start":{"line":87,"column":2},"end":{"line":118,"column":null}},"type":"if","locations":[{"start":{"line":87,"column":2},"end":{"line":118,"column":null}}]},"4":{"loc":{"start":{"line":87,"column":6},"end":{"line":87,"column":30}},"type":"binary-expr","locations":[{"start":{"line":87,"column":6},"end":{"line":87,"column":14}},{"start":{"line":87,"column":14},"end":{"line":87,"column":30}}]},"5":{"loc":{"start":{"line":89,"column":4},"end":{"line":117,"column":null}},"type":"switch","locations":[{"start":{"line":90,"column":6},"end":{"line":90,"column":null}},{"start":{"line":91,"column":6},"end":{"line":98,"column":null}},{"start":{"line":99,"column":6},"end":{"line":99,"column":null}},{"start":{"line":100,"column":6},"end":{"line":100,"column":null}},{"start":{"line":101,"column":6},"end":{"line":108,"column":null}},{"start":{"line":109,"column":6},"end":{"line":116,"column":null}}]},"6":{"loc":{"start":{"line":92,"column":8},"end":{"line":94,"column":null}},"type":"if","locations":[{"start":{"line":92,"column":8},"end":{"line":94,"column":null}}]},"7":{"loc":{"start":{"line":95,"column":8},"end":{"line":97,"column":null}},"type":"if","locations":[{"start":{"line":95,"column":8},"end":{"line":97,"column":null}}]},"8":{"loc":{"start":{"line":95,"column":12},"end":{"line":95,"column":57}},"type":"binary-expr","locations":[{"start":{"line":95,"column":12},"end":{"line":95,"column":38}},{"start":{"line":95,"column":38},"end":{"line":95,"column":57}}]},"9":{"loc":{"start":{"line":102,"column":8},"end":{"line":104,"column":null}},"type":"if","locations":[{"start":{"line":102,"column":8},"end":{"line":104,"column":null}}]},"10":{"loc":{"start":{"line":105,"column":8},"end":{"line":107,"column":null}},"type":"if","locations":[{"start":{"line":105,"column":8},"end":{"line":107,"column":null}}]},"11":{"loc":{"start":{"line":123,"column":2},"end":{"line":125,"column":null}},"type":"if","locations":[{"start":{"line":123,"column":2},"end":{"line":125,"column":null}}]},"12":{"loc":{"start":{"line":127,"column":2},"end":{"line":138,"column":null}},"type":"if","locations":[{"start":{"line":127,"column":2},"end":{"line":138,"column":null}}]},"13":{"loc":{"start":{"line":129,"column":4},"end":{"line":134,"column":null}},"type":"if","locations":[{"start":{"line":129,"column":4},"end":{"line":134,"column":null}}]},"14":{"loc":{"start":{"line":129,"column":8},"end":{"line":129,"column":51}},"type":"binary-expr","locations":[{"start":{"line":129,"column":8},"end":{"line":129,"column":28}},{"start":{"line":129,"column":28},"end":{"line":129,"column":51}}]},"15":{"loc":{"start":{"line":130,"column":6},"end":{"line":132,"column":null}},"type":"if","locations":[{"start":{"line":130,"column":6},"end":{"line":132,"column":null}}]},"16":{"loc":{"start":{"line":135,"column":4},"end":{"line":137,"column":null}},"type":"if","locations":[{"start":{"line":135,"column":4},"end":{"line":137,"column":null}}]},"17":{"loc":{"start":{"line":139,"column":2},"end":{"line":142,"column":null}},"type":"if","locations":[{"start":{"line":139,"column":2},"end":{"line":142,"column":null}}]},"18":{"loc":{"start":{"line":166,"column":2},"end":{"line":168,"column":null}},"type":"if","locations":[{"start":{"line":166,"column":2},"end":{"line":168,"column":null}}]},"19":{"loc":{"start":{"line":181,"column":2},"end":{"line":183,"column":null}},"type":"if","locations":[{"start":{"line":181,"column":2},"end":{"line":183,"column":null}}]},"20":{"loc":{"start":{"line":188,"column":9},"end":{"line":190,"column":null}},"type":"cond-expr","locations":[{"start":{"line":189,"column":4},"end":{"line":189,"column":33}},{"start":{"line":190,"column":4},"end":{"line":190,"column":null}}]}},"s":{"0":22,"1":42,"2":22,"3":22,"4":0,"5":0,"6":22,"7":22,"8":22,"9":22,"10":22,"11":22,"12":22,"13":22,"14":22,"15":22,"16":22,"17":22,"18":22,"19":22,"20":22,"21":22,"22":22,"23":22,"24":22,"25":22,"26":22,"27":22,"28":22,"29":22,"30":22,"31":22,"32":22,"33":22,"34":103,"35":27,"36":76,"37":80,"38":74,"39":74,"40":6,"41":70,"42":53,"43":6,"44":47,"45":47,"46":17,"47":17,"48":2,"49":0,"50":2,"51":0,"52":2,"53":2,"54":0,"55":2,"56":0,"57":2,"58":13,"59":30,"60":170,"61":114,"62":56,"63":56,"64":49,"65":49,"66":8,"67":0,"68":8,"69":41,"70":2,"71":46,"72":46,"73":53,"74":46,"75":0,"76":139,"77":79,"78":79,"79":6,"80":73,"81":9,"82":9,"83":4,"84":5,"85":2,"86":22},"f":{"0":103,"1":53,"2":170,"3":53,"4":139,"5":79,"6":9,"7":2},"b":{"0":[27],"1":[74],"2":[6],"3":[17],"4":[47,19],"5":[1,2,1,1,2,13],"6":[0],"7":[0],"8":[2,2],"9":[0],"10":[0],"11":[114],"12":[49],"13":[8],"14":[49,8],"15":[0],"16":[2],"17":[46],"18":[6],"19":[4],"20":[2,0]}} -,"/Users/Mirek.Rusin/tsql/src/test/client.ts": {"path":"/Users/Mirek.Rusin/tsql/src/test/client.ts","statementMap":{"0":{"start":{"line":5,"column":21},"end":{"line":5,"column":null}},"1":{"start":{"line":1,"column":36},"end":{"line":1,"column":null}},"2":{"start":{"line":2,"column":22},"end":{"line":2,"column":null}},"3":{"start":{"line":3,"column":29},"end":{"line":3,"column":null}},"4":{"start":{"line":18,"column":4},"end":{"line":28,"column":null}},"5":{"start":{"line":32,"column":16},"end":{"line":32,"column":null}},"6":{"start":{"line":33,"column":4},"end":{"line":33,"column":null}},"7":{"start":{"line":34,"column":4},"end":{"line":34,"column":null}},"8":{"start":{"line":38,"column":16},"end":{"line":38,"column":null}},"9":{"start":{"line":39,"column":4},"end":{"line":39,"column":null}},"10":{"start":{"line":40,"column":4},"end":{"line":40,"column":null}},"11":{"start":{"line":44,"column":21},"end":{"line":44,"column":null}},"12":{"start":{"line":45,"column":4},"end":{"line":45,"column":null}},"13":{"start":{"line":46,"column":4},"end":{"line":46,"column":null}},"14":{"start":{"line":50,"column":4},"end":{"line":54,"column":null}},"15":{"start":{"line":51,"column":6},"end":{"line":53,"column":null}},"16":{"start":{"line":52,"column":8},"end":{"line":52,"column":null}},"17":{"start":{"line":58,"column":4},"end":{"line":58,"column":null}},"18":{"start":{"line":62,"column":4},"end":{"line":80,"column":null}},"19":{"start":{"line":63,"column":6},"end":{"line":66,"column":null}},"20":{"start":{"line":64,"column":8},"end":{"line":64,"column":null}},"21":{"start":{"line":65,"column":8},"end":{"line":65,"column":null}},"22":{"start":{"line":67,"column":24},"end":{"line":67,"column":null}},"23":{"start":{"line":68,"column":22},"end":{"line":78,"column":null}},"24":{"start":{"line":69,"column":8},"end":{"line":71,"column":null}},"25":{"start":{"line":70,"column":10},"end":{"line":70,"column":null}},"26":{"start":{"line":72,"column":8},"end":{"line":76,"column":null}},"27":{"start":{"line":73,"column":10},"end":{"line":75,"column":null}},"28":{"start":{"line":74,"column":12},"end":{"line":74,"column":null}},"29":{"start":{"line":77,"column":8},"end":{"line":77,"column":null}},"30":{"start":{"line":79,"column":6},"end":{"line":79,"column":null}},"31":{"start":{"line":84,"column":4},"end":{"line":84,"column":null}},"32":{"start":{"line":88,"column":4},"end":{"line":88,"column":null}},"33":{"start":{"line":88,"column":48},"end":{"line":88,"column":54}},"34":{"start":{"line":92,"column":16},"end":{"line":92,"column":null}},"35":{"start":{"line":93,"column":4},"end":{"line":93,"column":null}},"36":{"start":{"line":97,"column":4},"end":{"line":97,"column":null}},"37":{"start":{"line":101,"column":4},"end":{"line":101,"column":null}},"38":{"start":{"line":105,"column":4},"end":{"line":105,"column":null}},"39":{"start":{"line":109,"column":4},"end":{"line":109,"column":null}},"40":{"start":{"line":113,"column":4},"end":{"line":113,"column":null}},"41":{"start":{"line":117,"column":4},"end":{"line":117,"column":null}},"42":{"start":{"line":121,"column":4},"end":{"line":121,"column":null}},"43":{"start":{"line":133,"column":4},"end":{"line":133,"column":null}},"44":{"start":{"line":140,"column":4},"end":{"line":140,"column":null}}},"fnMap":{"0":{"name":"(anonymous_5)","decl":{"start":{"line":9,"column":2},"end":{"line":9,"column":14}},"loc":{"start":{"line":17,"column":10},"end":{"line":29,"column":null}}},"1":{"name":"(anonymous_6)","decl":{"start":{"line":31,"column":2},"end":{"line":31,"column":15}},"loc":{"start":{"line":31,"column":48},"end":{"line":35,"column":null}}},"2":{"name":"(anonymous_7)","decl":{"start":{"line":37,"column":2},"end":{"line":37,"column":15}},"loc":{"start":{"line":37,"column":46},"end":{"line":41,"column":null}}},"3":{"name":"(anonymous_8)","decl":{"start":{"line":43,"column":2},"end":{"line":43,"column":15}},"loc":{"start":{"line":43,"column":24},"end":{"line":47,"column":null}}},"4":{"name":"(anonymous_9)","decl":{"start":{"line":49,"column":2},"end":{"line":49,"column":8}},"loc":{"start":{"line":49,"column":33},"end":{"line":55,"column":null}}},"5":{"name":"(anonymous_10)","decl":{"start":{"line":50,"column":23},"end":{"line":50,"column":24}},"loc":{"start":{"line":50,"column":33},"end":{"line":54,"column":null}}},"6":{"name":"(anonymous_11)","decl":{"start":{"line":51,"column":30},"end":{"line":51,"column":31}},"loc":{"start":{"line":51,"column":31},"end":{"line":53,"column":null}}},"7":{"name":"(anonymous_12)","decl":{"start":{"line":57,"column":2},"end":{"line":57,"column":10}},"loc":{"start":{"line":57,"column":10},"end":{"line":59,"column":null}}},"8":{"name":"(anonymous_13)","decl":{"start":{"line":61,"column":2},"end":{"line":61,"column":8}},"loc":{"start":{"line":61,"column":70},"end":{"line":81,"column":null}}},"9":{"name":"(anonymous_14)","decl":{"start":{"line":62,"column":23},"end":{"line":62,"column":24}},"loc":{"start":{"line":62,"column":33},"end":{"line":80,"column":null}}},"10":{"name":"(anonymous_15)","decl":{"start":{"line":68,"column":45},"end":{"line":68,"column":46}},"loc":{"start":{"line":68,"column":62},"end":{"line":78,"column":null}}},"11":{"name":"(anonymous_16)","decl":{"start":{"line":83,"column":2},"end":{"line":83,"column":8}},"loc":{"start":{"line":83,"column":63},"end":{"line":85,"column":null}}},"12":{"name":"(anonymous_17)","decl":{"start":{"line":87,"column":2},"end":{"line":87,"column":8}},"loc":{"start":{"line":87,"column":62},"end":{"line":89,"column":null}}},"13":{"name":"(anonymous_18)","decl":{"start":{"line":88,"column":43},"end":{"line":88,"column":48}},"loc":{"start":{"line":88,"column":48},"end":{"line":88,"column":54}}},"14":{"name":"(anonymous_19)","decl":{"start":{"line":91,"column":2},"end":{"line":91,"column":8}},"loc":{"start":{"line":91,"column":64},"end":{"line":94,"column":null}}},"15":{"name":"(anonymous_20)","decl":{"start":{"line":96,"column":2},"end":{"line":96,"column":8}},"loc":{"start":{"line":96,"column":78},"end":{"line":98,"column":null}}},"16":{"name":"(anonymous_21)","decl":{"start":{"line":100,"column":2},"end":{"line":100,"column":8}},"loc":{"start":{"line":100,"column":79},"end":{"line":102,"column":null}}},"17":{"name":"(anonymous_22)","decl":{"start":{"line":104,"column":2},"end":{"line":104,"column":8}},"loc":{"start":{"line":104,"column":44},"end":{"line":106,"column":null}}},"18":{"name":"(anonymous_23)","decl":{"start":{"line":108,"column":2},"end":{"line":108,"column":8}},"loc":{"start":{"line":108,"column":71},"end":{"line":110,"column":null}}},"19":{"name":"(anonymous_24)","decl":{"start":{"line":112,"column":2},"end":{"line":112,"column":8}},"loc":{"start":{"line":112,"column":97},"end":{"line":114,"column":null}}},"20":{"name":"(anonymous_25)","decl":{"start":{"line":116,"column":2},"end":{"line":116,"column":8}},"loc":{"start":{"line":116,"column":106},"end":{"line":118,"column":null}}},"21":{"name":"(anonymous_26)","decl":{"start":{"line":120,"column":2},"end":{"line":120,"column":8}},"loc":{"start":{"line":120,"column":93},"end":{"line":122,"column":null}}},"22":{"name":"(anonymous_27)","decl":{"start":{"line":124,"column":2},"end":{"line":124,"column":8}},"loc":{"start":{"line":132,"column":4},"end":{"line":134,"column":null}}},"23":{"name":"(anonymous_28)","decl":{"start":{"line":136,"column":2},"end":{"line":136,"column":8}},"loc":{"start":{"line":139,"column":4},"end":{"line":141,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":9,"column":14},"end":{"line":17,"column":8}},"type":"default-arg","locations":[{"start":{"line":17,"column":6},"end":{"line":17,"column":8}}]},"1":{"loc":{"start":{"line":10,"column":4},"end":{"line":10,"column":21}},"type":"default-arg","locations":[{"start":{"line":10,"column":15},"end":{"line":10,"column":21}}]},"2":{"loc":{"start":{"line":11,"column":4},"end":{"line":11,"column":19}},"type":"default-arg","locations":[{"start":{"line":11,"column":15},"end":{"line":11,"column":19}}]},"3":{"loc":{"start":{"line":12,"column":4},"end":{"line":12,"column":38}},"type":"default-arg","locations":[{"start":{"line":12,"column":15},"end":{"line":12,"column":38}}]},"4":{"loc":{"start":{"line":19,"column":14},"end":{"line":19,"column":null}},"type":"binary-expr","locations":[{"start":{"line":19,"column":14},"end":{"line":19,"column":36}},{"start":{"line":19,"column":40},"end":{"line":19,"column":null}}]},"5":{"loc":{"start":{"line":52,"column":8},"end":{"line":52,"column":null}},"type":"cond-expr","locations":[{"start":{"line":52,"column":22},"end":{"line":52,"column":36}},{"start":{"line":52,"column":36},"end":{"line":52,"column":null}}]},"6":{"loc":{"start":{"line":63,"column":6},"end":{"line":66,"column":null}},"type":"if","locations":[{"start":{"line":63,"column":6},"end":{"line":66,"column":null}}]},"7":{"loc":{"start":{"line":69,"column":8},"end":{"line":71,"column":null}},"type":"if","locations":[{"start":{"line":69,"column":8},"end":{"line":71,"column":null}}]},"8":{"loc":{"start":{"line":96,"column":40},"end":{"line":96,"column":76}},"type":"default-arg","locations":[{"start":{"line":96,"column":60},"end":{"line":96,"column":76}}]},"9":{"loc":{"start":{"line":100,"column":41},"end":{"line":100,"column":77}},"type":"default-arg","locations":[{"start":{"line":100,"column":61},"end":{"line":100,"column":77}}]},"10":{"loc":{"start":{"line":129,"column":4},"end":{"line":131,"column":10}},"type":"default-arg","locations":[{"start":{"line":131,"column":8},"end":{"line":131,"column":10}}]},"11":{"loc":{"start":{"line":129,"column":6},"end":{"line":129,"column":null}},"type":"default-arg","locations":[{"start":{"line":129,"column":14},"end":{"line":129,"column":null}}]}},"s":{"0":2,"1":2,"2":2,"3":2,"4":4,"5":2,"6":2,"7":2,"8":0,"9":0,"10":0,"11":2,"12":2,"13":2,"14":4,"15":4,"16":4,"17":4,"18":69,"19":69,"20":0,"21":0,"22":69,"23":69,"24":69,"25":0,"26":69,"27":50,"28":95,"29":69,"30":69,"31":25,"32":11,"33":11,"34":10,"35":10,"36":9,"37":13,"38":2,"39":10,"40":7,"41":7,"42":0,"43":4,"44":1},"f":{"0":4,"1":2,"2":0,"3":2,"4":4,"5":4,"6":4,"7":4,"8":69,"9":69,"10":69,"11":25,"12":11,"13":11,"14":10,"15":9,"16":13,"17":2,"18":10,"19":7,"20":7,"21":0,"22":4,"23":1},"b":{"0":[0],"1":[0],"2":[4],"3":[4],"4":[4,4],"5":[0,4],"6":[0],"7":[0],"8":[6],"9":[13],"10":[4],"11":[4]}} -} diff --git a/coverage/lcov-report/base.css b/coverage/lcov-report/base.css deleted file mode 100644 index f418035..0000000 --- a/coverage/lcov-report/base.css +++ /dev/null @@ -1,224 +0,0 @@ -body, html { - margin:0; padding: 0; - height: 100%; -} -body { - font-family: Helvetica Neue, Helvetica, Arial; - font-size: 14px; - color:#333; -} -.small { font-size: 12px; } -*, *:after, *:before { - -webkit-box-sizing:border-box; - -moz-box-sizing:border-box; - box-sizing:border-box; - } -h1 { font-size: 20px; margin: 0;} -h2 { font-size: 14px; } -pre { - font: 12px/1.4 Consolas, "Liberation Mono", Menlo, Courier, monospace; - margin: 0; - padding: 0; - -moz-tab-size: 2; - -o-tab-size: 2; - tab-size: 2; -} -a { color:#0074D9; text-decoration:none; } -a:hover { text-decoration:underline; } -.strong { font-weight: bold; } -.space-top1 { padding: 10px 0 0 0; } -.pad2y { padding: 20px 0; } -.pad1y { padding: 10px 0; } -.pad2x { padding: 0 20px; } -.pad2 { padding: 20px; } -.pad1 { padding: 10px; } -.space-left2 { padding-left:55px; } -.space-right2 { padding-right:20px; } -.center { text-align:center; } -.clearfix { display:block; } -.clearfix:after { - content:''; - display:block; - height:0; - clear:both; - visibility:hidden; - } -.fl { float: left; } -@media only screen and (max-width:640px) { - .col3 { width:100%; max-width:100%; } - .hide-mobile { display:none!important; } -} - -.quiet { - color: #7f7f7f; - color: rgba(0,0,0,0.5); -} -.quiet a { opacity: 0.7; } - -.fraction { - font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; - font-size: 10px; - color: #555; - background: #E8E8E8; - padding: 4px 5px; - border-radius: 3px; - vertical-align: middle; -} - -div.path a:link, div.path a:visited { color: #333; } -table.coverage { - border-collapse: collapse; - margin: 10px 0 0 0; - padding: 0; -} - -table.coverage td { - margin: 0; - padding: 0; - vertical-align: top; -} -table.coverage td.line-count { - text-align: right; - padding: 0 5px 0 20px; -} -table.coverage td.line-coverage { - text-align: right; - padding-right: 10px; - min-width:20px; -} - -table.coverage td span.cline-any { - display: inline-block; - padding: 0 5px; - width: 100%; -} -.missing-if-branch { - display: inline-block; - margin-right: 5px; - border-radius: 3px; - position: relative; - padding: 0 4px; - background: #333; - color: yellow; -} - -.skip-if-branch { - display: none; - margin-right: 10px; - position: relative; - padding: 0 4px; - background: #ccc; - color: white; -} -.missing-if-branch .typ, .skip-if-branch .typ { - color: inherit !important; -} -.coverage-summary { - border-collapse: collapse; - width: 100%; -} -.coverage-summary tr { border-bottom: 1px solid #bbb; } -.keyline-all { border: 1px solid #ddd; } -.coverage-summary td, .coverage-summary th { padding: 10px; } -.coverage-summary tbody { border: 1px solid #bbb; } -.coverage-summary td { border-right: 1px solid #bbb; } -.coverage-summary td:last-child { border-right: none; } -.coverage-summary th { - text-align: left; - font-weight: normal; - white-space: nowrap; -} -.coverage-summary th.file { border-right: none !important; } -.coverage-summary th.pct { } -.coverage-summary th.pic, -.coverage-summary th.abs, -.coverage-summary td.pct, -.coverage-summary td.abs { text-align: right; } -.coverage-summary td.file { white-space: nowrap; } -.coverage-summary td.pic { min-width: 120px !important; } -.coverage-summary tfoot td { } - -.coverage-summary .sorter { - height: 10px; - width: 7px; - display: inline-block; - margin-left: 0.5em; - background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent; -} -.coverage-summary .sorted .sorter { - background-position: 0 -20px; -} -.coverage-summary .sorted-desc .sorter { - background-position: 0 -10px; -} -.status-line { height: 10px; } -/* yellow */ -.cbranch-no { background: yellow !important; color: #111; } -/* dark red */ -.red.solid, .status-line.low, .low .cover-fill { background:#C21F39 } -.low .chart { border:1px solid #C21F39 } -.highlighted, -.highlighted .cstat-no, .highlighted .fstat-no, .highlighted .cbranch-no{ - background: #C21F39 !important; -} -/* medium red */ -.cstat-no, .fstat-no, .cbranch-no, .cbranch-no { background:#F6C6CE } -/* light red */ -.low, .cline-no { background:#FCE1E5 } -/* light green */ -.high, .cline-yes { background:rgb(230,245,208) } -/* medium green */ -.cstat-yes { background:rgb(161,215,106) } -/* dark green */ -.status-line.high, .high .cover-fill { background:rgb(77,146,33) } -.high .chart { border:1px solid rgb(77,146,33) } -/* dark yellow (gold) */ -.status-line.medium, .medium .cover-fill { background: #f9cd0b; } -.medium .chart { border:1px solid #f9cd0b; } -/* light yellow */ -.medium { background: #fff4c2; } - -.cstat-skip { background: #ddd; color: #111; } -.fstat-skip { background: #ddd; color: #111 !important; } -.cbranch-skip { background: #ddd !important; color: #111; } - -span.cline-neutral { background: #eaeaea; } - -.coverage-summary td.empty { - opacity: .5; - padding-top: 4px; - padding-bottom: 4px; - line-height: 1; - color: #888; -} - -.cover-fill, .cover-empty { - display:inline-block; - height: 12px; -} -.chart { - line-height: 0; -} -.cover-empty { - background: white; -} -.cover-full { - border-right: none !important; -} -pre.prettyprint { - border: none !important; - padding: 0 !important; - margin: 0 !important; -} -.com { color: #999 !important; } -.ignore-none { color: #999; font-weight: normal; } - -.wrapper { - min-height: 100%; - height: auto !important; - height: 100%; - margin: 0 auto -48px; -} -.footer, .push { - height: 48px; -} diff --git a/coverage/lcov-report/block-navigation.js b/coverage/lcov-report/block-navigation.js deleted file mode 100644 index cc12130..0000000 --- a/coverage/lcov-report/block-navigation.js +++ /dev/null @@ -1,87 +0,0 @@ -/* eslint-disable */ -var jumpToCode = (function init() { - // Classes of code we would like to highlight in the file view - var missingCoverageClasses = ['.cbranch-no', '.cstat-no', '.fstat-no']; - - // Elements to highlight in the file listing view - var fileListingElements = ['td.pct.low']; - - // We don't want to select elements that are direct descendants of another match - var notSelector = ':not(' + missingCoverageClasses.join('):not(') + ') > '; // becomes `:not(a):not(b) > ` - - // Selecter that finds elements on the page to which we can jump - var selector = - fileListingElements.join(', ') + - ', ' + - notSelector + - missingCoverageClasses.join(', ' + notSelector); // becomes `:not(a):not(b) > a, :not(a):not(b) > b` - - // The NodeList of matching elements - var missingCoverageElements = document.querySelectorAll(selector); - - var currentIndex; - - function toggleClass(index) { - missingCoverageElements - .item(currentIndex) - .classList.remove('highlighted'); - missingCoverageElements.item(index).classList.add('highlighted'); - } - - function makeCurrent(index) { - toggleClass(index); - currentIndex = index; - missingCoverageElements.item(index).scrollIntoView({ - behavior: 'smooth', - block: 'center', - inline: 'center' - }); - } - - function goToPrevious() { - var nextIndex = 0; - if (typeof currentIndex !== 'number' || currentIndex === 0) { - nextIndex = missingCoverageElements.length - 1; - } else if (missingCoverageElements.length > 1) { - nextIndex = currentIndex - 1; - } - - makeCurrent(nextIndex); - } - - function goToNext() { - var nextIndex = 0; - - if ( - typeof currentIndex === 'number' && - currentIndex < missingCoverageElements.length - 1 - ) { - nextIndex = currentIndex + 1; - } - - makeCurrent(nextIndex); - } - - return function jump(event) { - if ( - document.getElementById('fileSearch') === document.activeElement && - document.activeElement != null - ) { - // if we're currently focused on the search input, we don't want to navigate - return; - } - - switch (event.which) { - case 78: // n - case 74: // j - goToNext(); - break; - case 66: // b - case 75: // k - case 80: // p - goToPrevious(); - break; - } - }; -})(); -window.addEventListener('keydown', jumpToCode); diff --git a/coverage/lcov-report/favicon.png b/coverage/lcov-report/favicon.png deleted file mode 100644 index c1525b811a167671e9de1fa78aab9f5c0b61cef7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 445 zcmV;u0Yd(XP))rP{nL}Ln%S7`m{0DjX9TLF* zFCb$4Oi7vyLOydb!7n&^ItCzb-%BoB`=x@N2jll2Nj`kauio%aw_@fe&*}LqlFT43 z8doAAe))z_%=P%v^@JHp3Hjhj^6*Kr_h|g_Gr?ZAa&y>wxHE99Gk>A)2MplWz2xdG zy8VD2J|Uf#EAw*bo5O*PO_}X2Tob{%bUoO2G~T`@%S6qPyc}VkhV}UifBuRk>%5v( z)x7B{I~z*k<7dv#5tC+m{km(D087J4O%+<<;K|qwefb6@GSX45wCK}Sn*> - - - - Code coverage report for All files - - - - - - - - - -
-
-

All files

-
- -
- 77.05% - Statements - 1041/1351 -
- - -
- 58.78% - Branches - 174/296 -
- - -
- 78.68% - Functions - 144/183 -
- - -
- 77.48% - Lines - 943/1217 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
src -
-
76.79%1003/130658.51%165/28276.72%122/15977.23%906/1173
src/test -
-
84.44%38/4564.28%9/1491.66%22/2484.09%37/44
-
-
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/prettify.css b/coverage/lcov-report/prettify.css deleted file mode 100644 index b317a7c..0000000 --- a/coverage/lcov-report/prettify.css +++ /dev/null @@ -1 +0,0 @@ -.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} diff --git a/coverage/lcov-report/prettify.js b/coverage/lcov-report/prettify.js deleted file mode 100644 index b322523..0000000 --- a/coverage/lcov-report/prettify.js +++ /dev/null @@ -1,2 +0,0 @@ -/* eslint-disable */ -window.PR_SHOULD_USE_CONTINUATION=true;(function(){var h=["break,continue,do,else,for,if,return,while"];var u=[h,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];var p=[u,"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"];var l=[p,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"];var x=[p,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"];var R=[x,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"];var r="all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes";var w=[p,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"];var s="caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END";var I=[h,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"];var f=[h,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"];var H=[h,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"];var A=[l,R,w,s+I,f,H];var e=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;var C="str";var z="kwd";var j="com";var O="typ";var G="lit";var L="pun";var F="pln";var m="tag";var E="dec";var J="src";var P="atn";var n="atv";var N="nocode";var M="(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*";function k(Z){var ad=0;var S=false;var ac=false;for(var V=0,U=Z.length;V122)){if(!(al<65||ag>90)){af.push([Math.max(65,ag)|32,Math.min(al,90)|32])}if(!(al<97||ag>122)){af.push([Math.max(97,ag)&~32,Math.min(al,122)&~32])}}}}af.sort(function(av,au){return(av[0]-au[0])||(au[1]-av[1])});var ai=[];var ap=[NaN,NaN];for(var ar=0;arat[0]){if(at[1]+1>at[0]){an.push("-")}an.push(T(at[1]))}}an.push("]");return an.join("")}function W(al){var aj=al.source.match(new RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g"));var ah=aj.length;var an=[];for(var ak=0,am=0;ak=2&&ai==="["){aj[ak]=X(ag)}else{if(ai!=="\\"){aj[ak]=ag.replace(/[a-zA-Z]/g,function(ao){var ap=ao.charCodeAt(0);return"["+String.fromCharCode(ap&~32,ap|32)+"]"})}}}}return aj.join("")}var aa=[];for(var V=0,U=Z.length;V=0;){S[ac.charAt(ae)]=Y}}var af=Y[1];var aa=""+af;if(!ag.hasOwnProperty(aa)){ah.push(af);ag[aa]=null}}ah.push(/[\0-\uffff]/);V=k(ah)})();var X=T.length;var W=function(ah){var Z=ah.sourceCode,Y=ah.basePos;var ad=[Y,F];var af=0;var an=Z.match(V)||[];var aj={};for(var ae=0,aq=an.length;ae=5&&"lang-"===ap.substring(0,5);if(am&&!(ai&&typeof ai[1]==="string")){am=false;ap=J}if(!am){aj[ag]=ap}}var ab=af;af+=ag.length;if(!am){ad.push(Y+ab,ap)}else{var al=ai[1];var ak=ag.indexOf(al);var ac=ak+al.length;if(ai[2]){ac=ag.length-ai[2].length;ak=ac-al.length}var ar=ap.substring(5);B(Y+ab,ag.substring(0,ak),W,ad);B(Y+ab+ak,al,q(ar,al),ad);B(Y+ab+ac,ag.substring(ac),W,ad)}}ah.decorations=ad};return W}function i(T){var W=[],S=[];if(T.tripleQuotedStrings){W.push([C,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,null,"'\""])}else{if(T.multiLineStrings){W.push([C,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"])}else{W.push([C,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"])}}if(T.verbatimStrings){S.push([C,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null])}var Y=T.hashComments;if(Y){if(T.cStyleComments){if(Y>1){W.push([j,/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,"#"])}else{W.push([j,/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"])}S.push([C,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,null])}else{W.push([j,/^#[^\r\n]*/,null,"#"])}}if(T.cStyleComments){S.push([j,/^\/\/[^\r\n]*/,null]);S.push([j,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}if(T.regexLiterals){var X=("/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/");S.push(["lang-regex",new RegExp("^"+M+"("+X+")")])}var V=T.types;if(V){S.push([O,V])}var U=(""+T.keywords).replace(/^ | $/g,"");if(U.length){S.push([z,new RegExp("^(?:"+U.replace(/[\s,]+/g,"|")+")\\b"),null])}W.push([F,/^\s+/,null," \r\n\t\xA0"]);S.push([G,/^@[a-z_$][a-z_$@0-9]*/i,null],[O,/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],[F,/^[a-z_$][a-z_$@0-9]*/i,null],[G,new RegExp("^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*","i"),null,"0123456789"],[F,/^\\[\s\S]?/,null],[L,/^.[^\s\w\.$@\'\"\`\/\#\\]*/,null]);return g(W,S)}var K=i({keywords:A,hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true});function Q(V,ag){var U=/(?:^|\s)nocode(?:\s|$)/;var ab=/\r\n?|\n/;var ac=V.ownerDocument;var S;if(V.currentStyle){S=V.currentStyle.whiteSpace}else{if(window.getComputedStyle){S=ac.defaultView.getComputedStyle(V,null).getPropertyValue("white-space")}}var Z=S&&"pre"===S.substring(0,3);var af=ac.createElement("LI");while(V.firstChild){af.appendChild(V.firstChild)}var W=[af];function ae(al){switch(al.nodeType){case 1:if(U.test(al.className)){break}if("BR"===al.nodeName){ad(al);if(al.parentNode){al.parentNode.removeChild(al)}}else{for(var an=al.firstChild;an;an=an.nextSibling){ae(an)}}break;case 3:case 4:if(Z){var am=al.nodeValue;var aj=am.match(ab);if(aj){var ai=am.substring(0,aj.index);al.nodeValue=ai;var ah=am.substring(aj.index+aj[0].length);if(ah){var ak=al.parentNode;ak.insertBefore(ac.createTextNode(ah),al.nextSibling)}ad(al);if(!ai){al.parentNode.removeChild(al)}}}break}}function ad(ak){while(!ak.nextSibling){ak=ak.parentNode;if(!ak){return}}function ai(al,ar){var aq=ar?al.cloneNode(false):al;var ao=al.parentNode;if(ao){var ap=ai(ao,1);var an=al.nextSibling;ap.appendChild(aq);for(var am=an;am;am=an){an=am.nextSibling;ap.appendChild(am)}}return aq}var ah=ai(ak.nextSibling,0);for(var aj;(aj=ah.parentNode)&&aj.nodeType===1;){ah=aj}W.push(ah)}for(var Y=0;Y=S){ah+=2}if(V>=ap){Z+=2}}}var t={};function c(U,V){for(var S=V.length;--S>=0;){var T=V[S];if(!t.hasOwnProperty(T)){t[T]=U}else{if(window.console){console.warn("cannot override language handler %s",T)}}}}function q(T,S){if(!(T&&t.hasOwnProperty(T))){T=/^\s*]*(?:>|$)/],[j,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[L,/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);c(g([[F,/^[\s]+/,null," \t\r\n"],[n,/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[[m,/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],[P,/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[L,/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);c(g([],[[n,/^[\s\S]+/]]),["uq.val"]);c(i({keywords:l,hashComments:true,cStyleComments:true,types:e}),["c","cc","cpp","cxx","cyc","m"]);c(i({keywords:"null,true,false"}),["json"]);c(i({keywords:R,hashComments:true,cStyleComments:true,verbatimStrings:true,types:e}),["cs"]);c(i({keywords:x,cStyleComments:true}),["java"]);c(i({keywords:H,hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);c(i({keywords:I,hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]);c(i({keywords:s,hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);c(i({keywords:f,hashComments:true,multiLineStrings:true,regexLiterals:true}),["rb"]);c(i({keywords:w,cStyleComments:true,regexLiterals:true}),["js"]);c(i({keywords:r,hashComments:3,cStyleComments:true,multilineStrings:true,tripleQuotedStrings:true,regexLiterals:true}),["coffee"]);c(g([],[[C,/^[\s\S]+/]]),["regex"]);function d(V){var U=V.langExtension;try{var S=a(V.sourceNode);var T=S.sourceCode;V.sourceCode=T;V.spans=S.spans;V.basePos=0;q(U,T)(V);D(V)}catch(W){if("console" in window){console.log(W&&W.stack?W.stack:W)}}}function y(W,V,U){var S=document.createElement("PRE");S.innerHTML=W;if(U){Q(S,U)}var T={langExtension:V,numberLines:U,sourceNode:S};d(T);return S.innerHTML}function b(ad){function Y(af){return document.getElementsByTagName(af)}var ac=[Y("pre"),Y("code"),Y("xmp")];var T=[];for(var aa=0;aa=0){var ah=ai.match(ab);var am;if(!ah&&(am=o(aj))&&"CODE"===am.tagName){ah=am.className.match(ab)}if(ah){ah=ah[1]}var al=false;for(var ak=aj.parentNode;ak;ak=ak.parentNode){if((ak.tagName==="pre"||ak.tagName==="code"||ak.tagName==="xmp")&&ak.className&&ak.className.indexOf("prettyprint")>=0){al=true;break}}if(!al){var af=aj.className.match(/\blinenums\b(?::(\d+))?/);af=af?af[1]&&af[1].length?+af[1]:true:false;if(af){Q(aj,af)}S={langExtension:ah,sourceNode:aj,numberLines:af};d(S)}}}if(X]*(?:>|$)/],[PR.PR_COMMENT,/^<\!--[\s\S]*?(?:-\->|$)/],[PR.PR_PUNCTUATION,/^(?:<[%?]|[%?]>)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-handlebars",/^]*type\s*=\s*['"]?text\/x-handlebars-template['"]?\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i],[PR.PR_DECLARATION,/^{{[#^>/]?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{&?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{{>?\s*[\w.][^}]*}}}/],[PR.PR_COMMENT,/^{{![^}]*}}/]]),["handlebars","hbs"]);PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[ \t\r\n\f]+/,null," \t\r\n\f"]],[[PR.PR_STRING,/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],[PR.PR_STRING,/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],["lang-css-str",/^url\(([^\)\"\']*)\)/i],[PR.PR_KEYWORD,/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],[PR.PR_COMMENT,/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],[PR.PR_COMMENT,/^(?:)/],[PR.PR_LITERAL,/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],[PR.PR_LITERAL,/^#(?:[0-9a-f]{3}){1,2}/i],[PR.PR_PLAIN,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],[PR.PR_PUNCTUATION,/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_KEYWORD,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_STRING,/^[^\)\"\']+/]]),["css-str"]); diff --git a/coverage/lcov-report/sort-arrow-sprite.png b/coverage/lcov-report/sort-arrow-sprite.png deleted file mode 100644 index 6ed68316eb3f65dec9063332d2f69bf3093bbfab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 138 zcmeAS@N?(olHy`uVBq!ia0vp^>_9Bd!3HEZxJ@+%Qh}Z>jv*C{$p!i!8j}?a+@3A= zIAGwzjijN=FBi!|L1t?LM;Q;gkwn>2cAy-KV{dn nf0J1DIvEHQu*n~6U}x}qyky7vi4|9XhBJ7&`njxgN@xNA8m%nc diff --git a/coverage/lcov-report/sorter.js b/coverage/lcov-report/sorter.js deleted file mode 100644 index 2bb296a..0000000 --- a/coverage/lcov-report/sorter.js +++ /dev/null @@ -1,196 +0,0 @@ -/* eslint-disable */ -var addSorting = (function() { - 'use strict'; - var cols, - currentSort = { - index: 0, - desc: false - }; - - // returns the summary table element - function getTable() { - return document.querySelector('.coverage-summary'); - } - // returns the thead element of the summary table - function getTableHeader() { - return getTable().querySelector('thead tr'); - } - // returns the tbody element of the summary table - function getTableBody() { - return getTable().querySelector('tbody'); - } - // returns the th element for nth column - function getNthColumn(n) { - return getTableHeader().querySelectorAll('th')[n]; - } - - function onFilterInput() { - const searchValue = document.getElementById('fileSearch').value; - const rows = document.getElementsByTagName('tbody')[0].children; - for (let i = 0; i < rows.length; i++) { - const row = rows[i]; - if ( - row.textContent - .toLowerCase() - .includes(searchValue.toLowerCase()) - ) { - row.style.display = ''; - } else { - row.style.display = 'none'; - } - } - } - - // loads the search box - function addSearchBox() { - var template = document.getElementById('filterTemplate'); - var templateClone = template.content.cloneNode(true); - templateClone.getElementById('fileSearch').oninput = onFilterInput; - template.parentElement.appendChild(templateClone); - } - - // loads all columns - function loadColumns() { - var colNodes = getTableHeader().querySelectorAll('th'), - colNode, - cols = [], - col, - i; - - for (i = 0; i < colNodes.length; i += 1) { - colNode = colNodes[i]; - col = { - key: colNode.getAttribute('data-col'), - sortable: !colNode.getAttribute('data-nosort'), - type: colNode.getAttribute('data-type') || 'string' - }; - cols.push(col); - if (col.sortable) { - col.defaultDescSort = col.type === 'number'; - colNode.innerHTML = - colNode.innerHTML + ''; - } - } - return cols; - } - // attaches a data attribute to every tr element with an object - // of data values keyed by column name - function loadRowData(tableRow) { - var tableCols = tableRow.querySelectorAll('td'), - colNode, - col, - data = {}, - i, - val; - for (i = 0; i < tableCols.length; i += 1) { - colNode = tableCols[i]; - col = cols[i]; - val = colNode.getAttribute('data-value'); - if (col.type === 'number') { - val = Number(val); - } - data[col.key] = val; - } - return data; - } - // loads all row data - function loadData() { - var rows = getTableBody().querySelectorAll('tr'), - i; - - for (i = 0; i < rows.length; i += 1) { - rows[i].data = loadRowData(rows[i]); - } - } - // sorts the table using the data for the ith column - function sortByIndex(index, desc) { - var key = cols[index].key, - sorter = function(a, b) { - a = a.data[key]; - b = b.data[key]; - return a < b ? -1 : a > b ? 1 : 0; - }, - finalSorter = sorter, - tableBody = document.querySelector('.coverage-summary tbody'), - rowNodes = tableBody.querySelectorAll('tr'), - rows = [], - i; - - if (desc) { - finalSorter = function(a, b) { - return -1 * sorter(a, b); - }; - } - - for (i = 0; i < rowNodes.length; i += 1) { - rows.push(rowNodes[i]); - tableBody.removeChild(rowNodes[i]); - } - - rows.sort(finalSorter); - - for (i = 0; i < rows.length; i += 1) { - tableBody.appendChild(rows[i]); - } - } - // removes sort indicators for current column being sorted - function removeSortIndicators() { - var col = getNthColumn(currentSort.index), - cls = col.className; - - cls = cls.replace(/ sorted$/, '').replace(/ sorted-desc$/, ''); - col.className = cls; - } - // adds sort indicators for current column being sorted - function addSortIndicators() { - getNthColumn(currentSort.index).className += currentSort.desc - ? ' sorted-desc' - : ' sorted'; - } - // adds event listeners for all sorter widgets - function enableUI() { - var i, - el, - ithSorter = function ithSorter(i) { - var col = cols[i]; - - return function() { - var desc = col.defaultDescSort; - - if (currentSort.index === i) { - desc = !currentSort.desc; - } - sortByIndex(i, desc); - removeSortIndicators(); - currentSort.index = i; - currentSort.desc = desc; - addSortIndicators(); - }; - }; - for (i = 0; i < cols.length; i += 1) { - if (cols[i].sortable) { - // add the click event handler on the th so users - // dont have to click on those tiny arrows - el = getNthColumn(i).querySelector('.sorter').parentElement; - if (el.addEventListener) { - el.addEventListener('click', ithSorter(i)); - } else { - el.attachEvent('onclick', ithSorter(i)); - } - } - } - } - // adds sorting functionality to the UI - return function() { - if (!getTable()) { - return; - } - cols = loadColumns(); - loadData(); - addSearchBox(); - addSortIndicators(); - enableUI(); - }; -})(); - -window.addEventListener('load', addSorting); diff --git a/coverage/lcov-report/src/and.ts.html b/coverage/lcov-report/src/and.ts.html deleted file mode 100644 index 8999056..0000000 --- a/coverage/lcov-report/src/and.ts.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - Code coverage report for src/and.ts - - - - - - - - - -
-
-

All files / src and.ts

-
- -
- 75% - Statements - 3/4 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 66.66% - Lines - 2/3 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -622x -  -  -  -28x - 
import { and } from './where.js'
- 
-export { and }
- 
-export default and
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/assign-object.ts.html b/coverage/lcov-report/src/assign-object.ts.html deleted file mode 100644 index 89162ef..0000000 --- a/coverage/lcov-report/src/assign-object.ts.html +++ /dev/null @@ -1,214 +0,0 @@ - - - - - - Code coverage report for src/assign-object.ts - - - - - - - - - -
-
-

All files / src assign-object.ts

-
- -
- 95% - Statements - 19/20 -
- - -
- 100% - Branches - 3/3 -
- - -
- 100% - Functions - 1/1 -
- - -
- 94.73% - Lines - 18/19 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -4422x -22x -22x -22x -22x -  -  -  -  -  -  -  -  -  -  -10x -10x -10x -22x -3x -3x -  -  -  -  -  -  -3x -  -19x -  -10x -1x -  -  -  -  -1x -  -10x -  -  -22x - 
import assign from './assign.js'
-import id from './identifier.js'
-import jsonPath from './json-path.js'
-import list from './list.js'
-import tsql from './template.js'
-import type S from './sanitised.js'
- 
-/**
- * @returns assigment clause based on provided record, ie. for UPDATE SET.
- *
- * `undefined` entries are filtered out.
- *
- * Propagates undefined if there are no non-undefined entries.
- */
-export function assignObject(record: Record<string, unknown>): undefined | S {
-  const assignments: (undefined | S)[] = []
-  const jsonAssignments: Record<string, S> = {}
-  for (const [ lvalue, rvalue ] of Object.entries(record)) {
-    if (lvalue.indexOf('->') !== -1) {
-      const [ llvalue, lrvalue ] = lvalue.split('->')
-      jsonAssignments[llvalue] = tsql`
-        json_modify(
-          ${jsonAssignments[llvalue] ?? id(llvalue)},
-          ${jsonPath(lrvalue)},
-          ${rvalue}
-        )
-      `
-      continue
-    }
-    assignments.push(assign(id(lvalue), rvalue))
-  }
-  for (const [ lvalue, rvalue ] of Object.entries(jsonAssignments)) {
-    const a = assign(id(lvalue), tsql`
-      (
-        ${rvalue}
-      )
-    `)
-    assignments.push(a)
-  }
-  return list(assignments, undefined, ',\n')
-}
- 
-export default assignObject
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/assign.ts.html b/coverage/lcov-report/src/assign.ts.html deleted file mode 100644 index 6c64703..0000000 --- a/coverage/lcov-report/src/assign.ts.html +++ /dev/null @@ -1,169 +0,0 @@ - - - - - - Code coverage report for src/assign.ts - - - - - - - - - -
-
-

All files / src assign.ts

-
- -
- 93.33% - Statements - 14/15 -
- - -
- 100% - Branches - 3/3 -
- - -
- 100% - Functions - 1/1 -
- - -
- 92.85% - Lines - 13/14 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -2922x -22x -22x -22x -  -  -  -  -  -  -  -  -  -  -31x -9x -  -22x -15x -  -7x -6x -  -1x -1x -  -  -31x - 
import id from './identifier.js'
-import jsonPath from './json-path.js'
-import S from './sanitised.js'
-import tsql from './template.js'
-import type Sid from './sanitised-identifier.js'
- 
-/**
- * @returns assigment operator LHS = RHS.
- *
- * `undefined` RHS is propagated.
- *
- * `null` RHS is left as is LHS = null.
- */
-export function assign(lvalue: Sid | string, rvalue: unknown): undefined | S {
-  if (typeof rvalue === 'undefined') {
-    return undefined
-  }
-  if (lvalue instanceof S) {
-    return tsql`${lvalue} = ${rvalue}`
-  }
-  if (lvalue.indexOf('->') === -1) {
-    return tsql`${id(lvalue)} = ${rvalue}`
-  }
-  const [ llvalue, lrvalue ] = lvalue.split('->')
-  return tsql`${id(llvalue)} = json_modify(${id(llvalue)}, ${jsonPath(lrvalue)}, ${rvalue})`
-}
- 
-export default assign
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/auto.ts.html b/coverage/lcov-report/src/auto.ts.html deleted file mode 100644 index 92adbf3..0000000 --- a/coverage/lcov-report/src/auto.ts.html +++ /dev/null @@ -1,265 +0,0 @@ - - - - - - Code coverage report for src/auto.ts - - - - - - - - - -
-
-

All files / src auto.ts

-
- -
- 85.18% - Statements - 23/27 -
- - -
- 78.57% - Branches - 11/14 -
- - -
- 100% - Functions - 1/1 -
- - -
- 84.61% - Lines - 22/26 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -6122x -22x -22x -22x -22x -22x -22x -22x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -22x -13442x -9096x -  -4346x -1x -75x -9x -4246x -  -15x -7x -  -8x -  -  -8x -  -  -8x -  -  -  -  -  -  -8879x - 
import falseValue from './false-value.js'
-import json from './json.js'
-import nstring from './nstring.js'
-import null_ from './null.js'
-import number from './number.js'
-import raw from './raw.js'
-import S from './sanitised.js'
-import trueValue from './true-value.js'
- 
-/**
- * @returns automatically sanitised value.
- *
- * Already sanitised values are returned as is.
- *
- * `undefined` and `null` return sanitised `null`.
- *
- * Finite numbers return sanitised, decimal numbers.
- *
- * Booleans return sanitised `1` (true) or `0` (false).
- *
- * Strings return sanitised unicode strings, ie. `N'foo'`.
- *
- * Dates return ISO strings.
- *
- * Buffers return hex literals.
- *
- * Other objects return json-stringified, sanitised unicode strings, ie. `{foo:1}` returns `N'{"foo":1}'`.
- *
- * @throws {TypeError} for non-finite numbers (not supported by mssql).
- *
- * @throws {TypeError} for all other values.
- */
-export const auto =
-  (value: unknown): S => {
-    if (value instanceof S) {
-      return value
-    }
-    switch (typeof value) {
-      case 'undefined': return null_
-      case 'number': return number(value)
-      case 'boolean': return value ? trueValue : falseValue
-      case 'string': return nstring(value)
-      case 'object': {
-        if (value === null) {
-          return null_
-        }
-        Iif (value instanceof Date) {
-          return nstring(value.toISOString())
-        }
-        Iif (typeof Buffer !== 'undefined' && value instanceof Buffer) {
-          return raw('0x' + value.toString('hex'))
-        }
-        return json(value)
-      }
-      default:
-        throw new TypeError(`Unable to auto generate sql for ${value}.`)
-    }
-  }
- 
-export default auto
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/between.ts.html b/coverage/lcov-report/src/between.ts.html deleted file mode 100644 index fe8376a..0000000 --- a/coverage/lcov-report/src/between.ts.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - Code coverage report for src/between.ts - - - - - - - - - -
-
-

All files / src between.ts

-
- -
- 87.5% - Statements - 7/8 -
- - -
- 75% - Branches - 3/4 -
- - -
- 100% - Functions - 1/1 -
- - -
- 85.71% - Lines - 6/7 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -1322x -22x -22x -  -  -  -22x -1x -  -  -  -22x - 
import fallback from './fallback.js'
-import id from './identifier.js'
-import tsql from './template.js'
-import type S from './sanitised.js'
- 
-export const between =
-  <T>(l: string | S, r: undefined | null | [beginExpression: T, endExpression: T]): undefined | S =>
-    typeof l === 'undefined' || r == null ?
-      undefined :
-      tsql`${fallback(l, id)} between ${r[0]} and ${r[1]}`
- 
-export default between
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/columns.ts.html b/coverage/lcov-report/src/columns.ts.html deleted file mode 100644 index 327b7c7..0000000 --- a/coverage/lcov-report/src/columns.ts.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - Code coverage report for src/columns.ts - - - - - - - - - -
-
-

All files / src columns.ts

-
- -
- 38.46% - Statements - 5/13 -
- - -
- 0% - Branches - 0/4 -
- - -
- 0% - Functions - 0/2 -
- - -
- 45.45% - Lines - 5/11 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -2322x -22x -22x -  -  -  -  -  -  -  -  -22x -  -  -  -  -  -  -  -  -  -22x - 
import id from './identifier.js'
-import list from './list.js'
-import fallback from './fallback.js'
-import type S from './sanitised.js'
- 
-/**
- * @returns column projection based on provided record and optional filter.
- *
- * Propagates `undefined` if there are no non-`undefined` entries.
- */
-export const columns =
-  (record: Record<string, boolean | string | S>, filter: Record<string, boolean> = {}): undefined | S => {
-    const values: (string | S)[] = []
-    for (const key of Object.keys(record)) {
-      Iif (filter[key] !== false) {
-        values.push(record[key] === true ? key : record[key] as string | S)
-      }
-    }
-    return list(values.map(_ => fallback(_, id)))
-  }
- 
-export default columns
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/defined.ts.html b/coverage/lcov-report/src/defined.ts.html deleted file mode 100644 index 6f5e845..0000000 --- a/coverage/lcov-report/src/defined.ts.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - Code coverage report for src/defined.ts - - - - - - - - - -
-
-

All files / src defined.ts

-
- -
- 100% - Statements - 8/8 -
- - -
- 100% - Branches - 1/1 -
- - -
- 100% - Functions - 1/1 -
- - -
- 100% - Lines - 7/7 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16  -  -22x -10x -10x -24x -  -  -1x -  -  -10x -  -  -22x - 
/** @returns object without undefined values. */
-const defined =
-  (object: Record<string, unknown>): Record<string, unknown> => {
-    const object_ = Object.assign({}, object)
-    for (const key in object) {
-      if (typeof object_[key] === 'undefined') {
- 
-        // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
-        delete object_[key]
-      }
-    }
-    return object_
-  }
- 
-export default defined
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/delete.ts.html b/coverage/lcov-report/src/delete.ts.html deleted file mode 100644 index 456e608..0000000 --- a/coverage/lcov-report/src/delete.ts.html +++ /dev/null @@ -1,142 +0,0 @@ - - - - - - Code coverage report for src/delete.ts - - - - - - - - - -
-
-

All files / src delete.ts

-
- -
- 90% - Statements - 9/10 -
- - -
- 50% - Branches - 1/2 -
- - -
- 100% - Functions - 1/1 -
- - -
- 88.88% - Lines - 8/9 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -2022x -22x -22x -  -  -22x -22x -  -  -  -22x -13x -  -  -  -  -  -  -22x - 
import fallback from './fallback.js'
-import id from './identifier.js'
-import line from './line.js'
-import type S from './sanitised.js'
-import type Sid from './sanitised-identifier.js'
-import tsql from './template.js'
-import whereOf from './where.js'
- 
-/** @returns DELETE DML for table with optional WHERE clause. */
-export const delete_ =
-  (table: Sid | string, where?: S | Record<string, unknown>): S =>
-    line(
-      tsql`delete from ${id(table)}`,
-      where ?
-        tsql`where ${fallback(where, whereOf)}` :
-        undefined
-    )
- 
-export default delete_
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/demargin.ts.html b/coverage/lcov-report/src/demargin.ts.html deleted file mode 100644 index bd8a944..0000000 --- a/coverage/lcov-report/src/demargin.ts.html +++ /dev/null @@ -1,184 +0,0 @@ - - - - - - Code coverage report for src/demargin.ts - - - - - - - - - -
-
-

All files / src demargin.ts

-
- -
- 88% - Statements - 22/25 -
- - -
- 77.77% - Branches - 7/9 -
- - -
- 100% - Functions - 4/4 -
- - -
- 85.71% - Lines - 18/21 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -3422x -  -  -  -22x -421x -  -  -421x -421x -81x -  -683x -66x -  -421x -421x -6910x -65027x -6909x -6909x -  -  -  -421x -  -  -421x -6910x -  -  -  -421x - 
import isString from './is-string.js'
- 
-/** @internal */
-export const demargin =
-  (value: string): string => {
-    Iif (!isString(value)) {
-      throw new TypeError(`Expected value to be string, got ${value}.`)
-    }
-    const lines = value.split('\n')
-    if ((lines.length > 0) && lines[0].split('').every(_ => _ === ' ')) {
-      lines.shift()
-    }
-    if ((lines.length > 0) && lines[lines.length - 1].split('').every(_ => _ === ' ')) {
-      lines.pop()
-    }
-    let margin = Infinity
-    for (const line of lines) {
-      for (let i = 0; i < line.length; i++) {
-        if (line[i] !== ' ') {
-          margin = Math.min(margin, i)
-          break
-        }
-      }
-    }
-    Iif (margin === Infinity) {
-      return lines.join('\n')
-    }
-    return lines
-      .map(_ => _.slice(margin))
-      .join('\n')
-  }
- 
-export default demargin
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/distinct.ts.html b/coverage/lcov-report/src/distinct.ts.html deleted file mode 100644 index 63f07af..0000000 --- a/coverage/lcov-report/src/distinct.ts.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - Code coverage report for src/distinct.ts - - - - - - - - - -
-
-

All files / src distinct.ts

-
- -
- 54.54% - Statements - 6/11 -
- - -
- 0% - Branches - 0/3 -
- - -
- 0% - Functions - 0/1 -
- - -
- 50% - Lines - 5/10 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -2322x -22x -22x -  -  -  -  -  -  -  -  -  -  -22x -  -  -  -  -  -  -  -22x - 
import fallback from './fallback.js'
-import id from './identifier.js'
-import template from './template.js'
-import type S from './sanitised.js'
- 
-/**
- * @returns emulated NULL aware comparision.
- *
- * MSSQL doesn't support IS DISTINCT FROM comparision directly.
- *
- * Single invocation of RHS is not guaranteed.
- */
-export const distinct =
-  (lhs: S | string, rhs: unknown): undefined | S => {
-    Iif (typeof lhs === 'undefined' || typeof rhs === 'undefined') {
-      return undefined
-    }
-    const lhs_ = fallback(lhs, id)
-    return template`((${lhs_} <> ${rhs} or ${lhs_} is null or ${rhs} is null) and not (${lhs_} is null and ${rhs} is null))`
-  }
- 
-export default distinct
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/eq.ts.html b/coverage/lcov-report/src/eq.ts.html deleted file mode 100644 index 19729b4..0000000 --- a/coverage/lcov-report/src/eq.ts.html +++ /dev/null @@ -1,169 +0,0 @@ - - - - - - Code coverage report for src/eq.ts - - - - - - - - - -
-
-

All files / src eq.ts

-
- -
- 90.9% - Statements - 10/11 -
- - -
- 100% - Branches - 4/4 -
- - -
- 100% - Functions - 2/2 -
- - -
- 90% - Lines - 9/10 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -2922x -22x -22x -22x -  -  -  -22x -53x -  -  -  -  -  -  -  -  -  -  -  -  -  -22x -64x -  -  -  -85x - 
import fallback from './fallback.js'
-import id from './identifier.js'
-import isNull from './is-null.js'
-import tsql from './template.js'
-import type S from './sanitised.js'
- 
-const rhsEq =
-  (rhs: unknown): S =>
-    isNull(rhs) ?
-      tsql`is null` :
-      tsql`= ${rhs}`
- 
-/**
- * @returns comparision expression.
- *
- * `null` RHS returns LHS IS NULL.
- *
- * `undefined` RHS propagates.
- *
- * @see distinct for NULL aware comparision.
- */
-export const eq =
-  (lhs: S | string, rhs: unknown): undefined | S =>
-    typeof rhs === 'undefined' ?
-      undefined :
-      tsql`${fallback(lhs, id)} ${rhsEq(rhs)}`
- 
-export default eq
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/exists.ts.html b/coverage/lcov-report/src/exists.ts.html deleted file mode 100644 index e8f22ec..0000000 --- a/coverage/lcov-report/src/exists.ts.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - Code coverage report for src/exists.ts - - - - - - - - - -
-
-

All files / src exists.ts

-
- -
- 54.54% - Statements - 6/11 -
- - -
- 100% - Branches - 0/0 -
- - -
- 0% - Functions - 0/1 -
- - -
- 60% - Lines - 6/10 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -1722x -22x -  -  -22x -22x -  -  -  -22x -  -  -  -  -  -22x - 
import fallback from './fallback.js'
-import id from './identifier.js'
-import type S from './sanitised.js'
-import type Sid from './sanitised-identifier.js'
-import tsql from './template.js'
-import whereOf from './where.js'
- 
-/** @returns EXISTS query for table with WHERE clause. */
-export const exists =
-  (table: Sid | string, where: S | Record<string, unknown>): S => {
-    const table_ = id(table)
-    const where_ = fallback(where, whereOf)
-    return tsql`exists (select top 1 1 from ${table_} where ${where_})`
-  }
- 
-export default exists
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/fallback.ts.html b/coverage/lcov-report/src/fallback.ts.html deleted file mode 100644 index a41fdc9..0000000 --- a/coverage/lcov-report/src/fallback.ts.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - Code coverage report for src/fallback.ts - - - - - - - - - -
-
-

All files / src fallback.ts

-
- -
- 83.33% - Statements - 5/6 -
- - -
- 100% - Branches - 2/2 -
- - -
- 100% - Functions - 1/1 -
- - -
- 80% - Lines - 4/5 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -1222x -  -  -  -  -22x -105x -  -  -  -105x - 
import S from './sanitised.js'
-import type Sid from './sanitised-identifier.js'
- 
-/** @returns sanitised value as is, otherwise falls back to provided sanitation function. */
-export const fallback =
-  <T>(x: T, f: (_: Exclude<T, S | Sid>) => undefined | S): undefined | S =>
-    x instanceof S ?
-      x :
-      f(x as Exclude<T, S | Sid>)
- 
-export default fallback
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/false-value.ts.html b/coverage/lcov-report/src/false-value.ts.html deleted file mode 100644 index 066488f..0000000 --- a/coverage/lcov-report/src/false-value.ts.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - Code coverage report for src/false-value.ts - - - - - - - - - -
-
-

All files / src false-value.ts

-
- -
- 80% - Statements - 4/5 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 75% - Lines - 3/4 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17  -22x -  -  -  -  -  -  -  -  -  -  -  -22x -  -22x - 
import type S from './sanitised.js'
-import raw from './raw.js'
- 
-/**
- * Value boolean false – 0 casted as BIT.
- *
- * Logical booleans can be used in condition expressions, ie. WHERE clause.
- *
- * Value booleans can be used in assignment statements, ie. UPDATE SET clause.
- *
- * @see falseValue for value boolean variant.
- */
-export const falseValue: S =
-  raw('cast(0 as bit)')
- 
-export default falseValue
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/gt.ts.html b/coverage/lcov-report/src/gt.ts.html deleted file mode 100644 index 9f20729..0000000 --- a/coverage/lcov-report/src/gt.ts.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - Code coverage report for src/gt.ts - - - - - - - - - -
-
-

All files / src gt.ts

-
- -
- 83.33% - Statements - 5/6 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 1/1 -
- - -
- 80% - Lines - 4/5 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -1422x -  -  -  -  -  -  -  -  -22x -5x -  -24x - 
import op from './op.js'
-import type S from './sanitised.js'
- 
-/**
- * @returns greater than expression.
- *
- * `undefined` RHS is propagated.
- */
-export const gt =
-  (l: S | string, r: unknown): undefined | S =>
-    op(l, '>', r)
- 
-export default gt
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/gte.ts.html b/coverage/lcov-report/src/gte.ts.html deleted file mode 100644 index 110871a..0000000 --- a/coverage/lcov-report/src/gte.ts.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - Code coverage report for src/gte.ts - - - - - - - - - -
-
-

All files / src gte.ts

-
- -
- 83.33% - Statements - 5/6 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 1/1 -
- - -
- 80% - Lines - 4/5 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -1422x -  -  -  -  -  -  -  -  -22x -1x -  -22x - 
import op from './op.js'
-import type S from './sanitised.js'
- 
-/**
- * @returns greater than or equal expression.
- *
- * `undefined` RHS is propagated.
- */
-export const gte =
-  (l: S | string, r: unknown): undefined | S =>
-    op(l, '>=', r)
- 
-export default gte
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/identifier.ts.html b/coverage/lcov-report/src/identifier.ts.html deleted file mode 100644 index 04ba58c..0000000 --- a/coverage/lcov-report/src/identifier.ts.html +++ /dev/null @@ -1,331 +0,0 @@ - - - - - - Code coverage report for src/identifier.ts - - - - - - - - - -
-
-

All files / src identifier.ts

-
- -
- 88.57% - Statements - 31/35 -
- - -
- 87.5% - Branches - 14/16 -
- - -
- 100% - Functions - 9/9 -
- - -
- 87.09% - Lines - 27/31 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -8322x -22x -22x -  -  -  -  -  -  -  -  -424x -  -  -  -  -  -  -  -159x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -485x -1x -  -484x -425x -6x -6x -  -419x -1x -1x -  -418x -2x -2x -  -424x -  -118x -118x -  -  -  -  -  -22x -6x -  -  -  -22x -1x -  -  -  -  -  -22x -2x -  -  -343x - 
import nstring from './nstring.js'
-import Sid from './sanitised-identifier.js'
-import keywords from './keywords.js'
- 
-export type Identifier =
-  | string
-  | Sid
-  | (Sid | string)[]
- 
-/** @returns `true` if provided string can be used as identifier without quoting, `false` otherwise. */
-export function isPlain(value: string) {
-  return (
-    !keywords[value.toLowerCase()] &&
-    !!String(value).match(/^[a-z_@#]\w*$/i)
-  )
-}
- 
-/** @returns `[]`-quoted string. */
-export function quote(value: unknown) {
-  return '[' + String(value).replace(/\]/g, ']]') + ']'
-}
- 
-/**
- * @returns sanitised identifier.
- *
- * Already sanitised identifiers are returned as is.
- *
- * String including `->` is returned as JSON_VALUE(LHS, RHS).
- *
- * String including `~>` is returned as JSON_QUERY(LHS, RHS?).
- *
- * `.`-separated string is split and joined.
- *
- * String including `?>` is returned as JSON_PATH_EXISTS(LHS, RHS).
- *
- * Strings are quoted if not plain. Non plain string is MSSQL keyword or string containing special characters.
- *
- * Above rules are recursive with precedence as listed.
- */
-export function identifier(value: Identifier): Sid {
-  if (value instanceof Sid) {
-    return value
-  }
-  if (typeof value === 'string') {
-    if (value.includes('->')) {
-      const [ lvalue, jsonPath ] = value.split('->')
-      return jsonValue(lvalue, jsonPath)
-    }
-    if (value.includes('~>')) {
-      const [ lvalue, jsonPath ] = value.split('~>')
-      return jsonQuery(lvalue, jsonPath)
-    }
-    if (value.includes('?>')) {
-      const [ lvalue, jsonPath ] = value.split('?>')
-      return jsonPathExists(lvalue, jsonPath)
-    }
-    return new Sid(value.split('.').map(_ => isPlain(_) ? _ : quote(_)).join('.'))
-  }
-  if (Array.isArray(value) && value.every(_ => typeof _ === 'string' || _ instanceof Sid)) {
-    return new Sid(value.map(identifier).map(_ => _.toString()).join('.'))
-  }
-  throw new TypeError(`Can't sanitise ${value} identifier.`)
-}
- 
-/** @returns JSON_VALUE(C) built-in function call. */
-export function jsonValue(column: Sid | string, query: string) {
-  return new Sid(`json_value(${identifier(column).toString()}, ${nstring(query).toString()})`)
-}
- 
-/** @returns JSON_QUERY(C, Q?) built-in function call. */
-export function jsonQuery(column: Sid | string, query?: undefined | null | string) {
-  return query ?
-    new Sid(`json_query(${identifier(column).toString()}, ${nstring(query).toString()})`) :
-    new Sid(`json_query(${identifier(column).toString()})`)
-}
- 
-/** @returns JSON_PATH_EXISTS(C, Q) built-in function call. */
-export function jsonPathExists(column: Sid | string, query: string) {
-  return new Sid(`json_path_exists(${identifier(column).toString()}, ${nstring(query).toString()})`)
-}
- 
-export default identifier
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/identifiers.ts.html b/coverage/lcov-report/src/identifiers.ts.html deleted file mode 100644 index 138934c..0000000 --- a/coverage/lcov-report/src/identifiers.ts.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - Code coverage report for src/identifiers.ts - - - - - - - - - -
-
-

All files / src identifiers.ts

-
- -
- 57.14% - Statements - 4/7 -
- - -
- 100% - Branches - 0/0 -
- - -
- 0% - Functions - 0/1 -
- - -
- 66.66% - Lines - 4/6 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -1622x -22x -  -  -  -  -  -  -  -  -  -22x -  -  -22x - 
import id from './identifier.js'
-import list from './list.js'
-import type S from './sanitised.js'
-import type Sid from './sanitised-identifier.js'
- 
-/**
- * @returns comma separated list of provided identifiers.
- *
- * @see identifier
- */
-export const identifiers =
-  (...xs: (Sid | string)[]): undefined | S =>
-    list(xs.map(id))
- 
-export default identifiers
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/in.ts.html b/coverage/lcov-report/src/in.ts.html deleted file mode 100644 index 1a3be8e..0000000 --- a/coverage/lcov-report/src/in.ts.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - Code coverage report for src/in.ts - - - - - - - - - -
-
-

All files / src in.ts

-
- -
- 90.9% - Statements - 10/11 -
- - -
- 100% - Branches - 7/7 -
- - -
- 100% - Functions - 1/1 -
- - -
- 90% - Lines - 9/10 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -2522x -22x -22x -22x -22x -  -22x -  -  -  -  -  -  -  -  -  -22x -11x -  -  -  -  -  -32x - 
import id from './identifier.js'
-import tsql from './template.js'
-import fallback from './fallback.js'
-import isNull from './is-null.js'
-import row from './row.js'
-import type S from './sanitised.js'
-import logicalFalse from './logical-false.js'
- 
-/**
- * @returns LHS in (RHS) expression.
- *
- * `undefined` RHS propagates.
- *
- * Falsy or empty array RHS returns logical false.
- */
-export const in_ =
-  (l: S | string, r: undefined | null | unknown[]): undefined | S =>
-    typeof r === 'undefined' ?
-      undefined :
-      r && !isNull(r) && (r.length > 0) ?
-        tsql`${fallback(l, id)} in ${row(r)}` :
-        logicalFalse
- 
-export default in_
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/indent-tail.ts.html b/coverage/lcov-report/src/indent-tail.ts.html deleted file mode 100644 index 1bcfeec..0000000 --- a/coverage/lcov-report/src/indent-tail.ts.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - Code coverage report for src/indent-tail.ts - - - - - - - - - -
-
-

All files / src indent-tail.ts

-
- -
- 100% - Statements - 4/4 -
- - -
- 100% - Branches - 2/2 -
- - -
- 100% - Functions - 1/1 -
- - -
- 100% - Lines - 3/3 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11  -  -22x -705x -  -  -  -  -  -705x - 
/** @returns string with all lines but the first one indented with `margin`. */
-const indentTail =
-  (linesString: string, margin: string): string =>
-    margin ?
-      linesString
-        .split('\n')
-        .join(`\n${margin}`) :
-      linesString
- 
-export default indentTail
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/index.html b/coverage/lcov-report/src/index.html deleted file mode 100644 index bc691e5..0000000 --- a/coverage/lcov-report/src/index.html +++ /dev/null @@ -1,1496 +0,0 @@ - - - - - - Code coverage report for src - - - - - - - - - -
-
-

All files src

-
- -
- 76.79% - Statements - 1003/1306 -
- - -
- 58.51% - Branches - 165/282 -
- - -
- 76.72% - Functions - 122/159 -
- - -
- 77.23% - Lines - 906/1173 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
and.ts -
-
75%3/4100%0/0100%0/066.66%2/3
assign-object.ts -
-
95%19/20100%3/3100%1/194.73%18/19
assign.ts -
-
93.33%14/15100%3/3100%1/192.85%13/14
auto.ts -
-
85.18%23/2778.57%11/14100%1/184.61%22/26
between.ts -
-
87.5%7/875%3/4100%1/185.71%6/7
columns.ts -
-
38.46%5/130%0/40%0/245.45%5/11
defined.ts -
-
100%8/8100%1/1100%1/1100%7/7
delete.ts -
-
90%9/1050%1/2100%1/188.88%8/9
demargin.ts -
-
88%22/2577.77%7/9100%4/485.71%18/21
distinct.ts -
-
54.54%6/110%0/30%0/150%5/10
eq.ts -
-
90.9%10/11100%4/4100%2/290%9/10
exists.ts -
-
54.54%6/11100%0/00%0/160%6/10
fallback.ts -
-
83.33%5/6100%2/2100%1/180%4/5
false-value.ts -
-
80%4/5100%0/0100%0/075%3/4
gt.ts -
-
83.33%5/6100%0/0100%1/180%4/5
gte.ts -
-
83.33%5/6100%0/0100%1/180%4/5
identifier.ts -
-
88.57%31/3587.5%14/16100%9/987.09%27/31
identifiers.ts -
-
57.14%4/7100%0/00%0/166.66%4/6
in.ts -
-
90.9%10/11100%7/7100%1/190%9/10
indent-tail.ts -
-
100%4/4100%2/2100%1/1100%3/3
index.ts -
-
66.85%119/178100%0/0100%0/066.85%119/178
inline-table-of-column.ts -
-
86.66%13/150%0/1100%2/284.61%11/13
inline-table-of-objects.ts -
-
94.11%16/17100%2/2100%3/392.85%13/14
insert-ignore.ts -
-
82.14%23/2850%3/6100%5/580%20/25
insert-not-matched.ts -
-
44.44%12/270%0/60%0/448%12/25
insert-object.ts -
-
88.88%16/1833.33%1/3100%2/287.5%14/16
insert-objects.ts -
-
91.66%22/2480%4/5100%3/390.47%19/21
interpolate.ts -
-
87.09%27/3175%12/16100%3/386.2%25/29
interpolate1.ts -
-
78.57%11/140%0/2100%1/175%9/12
is-defined.ts -
-
87.5%7/8100%2/2100%2/287.5%7/8
is-null.ts -
-
83.33%5/6100%3/3100%1/180%4/5
is-object.ts -
-
100%2/2100%3/3100%1/1100%2/2
is-string.ts -
-
80%4/550%1/2100%1/175%3/4
is.ts -
-
100%5/5100%0/0100%2/2100%4/4
json-modify.ts -
-
92.85%13/14100%1/1100%2/292.3%12/13
json-path-exists.ts -
-
66.66%2/3100%0/0100%0/0100%2/2
json-path.ts -
-
87.5%14/16100%5/5100%1/192.85%13/14
json-query.ts -
-
66.66%2/3100%0/0100%0/0100%2/2
json-value.ts -
-
66.66%2/3100%0/0100%0/0100%2/2
json.ts -
-
85.71%6/750%1/2100%1/183.33%5/6
keys-of-objects.ts -
-
73.68%14/1940%2/5100%3/368.75%11/16
keywords.ts -
-
100%5/5100%0/0100%1/1100%3/3
like.ts -
-
91.66%11/1250%2/4100%2/290.9%10/11
limited-hints-identifier.ts -
-
100%8/8100%4/4100%1/1100%7/7
line.ts -
-
90%9/10100%0/0100%3/385.71%6/7
lines.ts -
-
88.88%8/9100%2/2100%1/187.5%7/8
list.ts -
-
90.9%10/11100%4/4100%4/490%9/10
logical-false.ts -
-
80%4/5100%0/0100%0/075%3/4
logical-true.ts -
-
80%4/5100%0/0100%0/075%3/4
lt.ts -
-
83.33%5/6100%0/0100%1/180%4/5
lte.ts -
-
83.33%5/6100%0/0100%1/180%4/5
margin-of-first-line.ts -
-
100%8/8100%3/3100%1/1100%7/7
margin-of-last-line.ts -
-
100%5/5100%0/0100%1/1100%4/4
maybe-line.ts -
-
40%4/100%0/20%0/350%4/8
maybe-lines.ts -
-
92.85%13/1450%1/2100%5/592.3%12/13
merge-1n.ts -
-
88.23%15/1775%3/4100%1/187.5%14/16
modify-jsons.ts -
-
86.48%32/370%0/1100%10/1087.09%27/31
ne.ts -
-
83.33%10/1233.33%1/3100%1/181.81%9/11
ng.ts -
-
83.33%5/6100%0/0100%1/180%4/5
nl.ts -
-
83.33%5/6100%0/0100%1/180%4/5
not-between.ts -
-
87.5%7/875%3/4100%1/185.71%6/7
not-distinct.ts -
-
54.54%6/110%0/30%0/150%5/10
not-in.ts -
-
90%9/1071.42%5/7100%1/188.88%8/9
not.ts -
-
50%2/4100%0/0100%0/066.66%2/3
now.ts -
-
60%3/5100%0/0100%0/075%3/4
nstring.ts -
-
85.71%6/750%2/4100%1/183.33%5/6
null.ts -
-
80%4/5100%0/0100%0/075%3/4
number.ts -
-
75%6/80%0/1100%1/171.42%5/7
object-id.ts -
-
50%3/6100%0/00%0/160%3/5
op.ts -
-
88.88%8/950%1/2100%1/187.5%7/8
or.ts -
-
75%3/4100%0/0100%0/066.66%2/3
order-by.ts -
-
100%8/8100%2/2100%2/2100%6/6
pick.ts -
-
25%2/80%0/20%0/128.57%2/7
quoted-nstring.ts -
-
88.88%16/1860%3/5100%4/488.23%15/17
random-identifier.ts -
-
100%10/100%0/2100%3/3100%8/8
raw.ts -
-
83.33%5/6100%0/0100%1/180%4/5
replace-objects.ts -
-
45.16%14/310%0/90%0/553.84%14/26
row.ts -
-
87.5%7/8100%1/1100%1/185.71%6/7
rowset.ts -
-
37.5%3/80%0/10%0/142.85%3/7
sanitised-identifier.ts -
-
80%4/5100%0/0100%0/075%3/4
sanitised.ts -
-
75%3/4100%0/0100%0/066.66%2/3
select.ts -
-
45%9/200%0/80%0/452.94%9/17
star.ts -
-
57.14%4/70%0/20%0/166.66%4/6
table-hint-limited.ts -
-
75%6/80%0/1100%1/185.71%6/7
template.ts -
-
88.88%8/9100%0/0100%1/187.5%7/8
top.ts -
-
50%6/120%0/60%0/154.54%6/11
true-value.ts -
-
80%4/5100%0/0100%0/075%3/4
unique.ts -
-
90.9%10/11100%1/1100%1/190%9/10
unix.ts -
-
75%3/4100%0/0100%0/0100%3/3
update-objects.ts -
-
41.93%13/310%0/80%0/546.42%13/28
update.ts -
-
94.44%17/1883.33%5/6100%1/194.11%16/17
upsert-objects.ts -
-
42.42%14/330%0/100%0/546.66%14/30
where.ts -
-
90.8%79/8780%24/30100%8/890.58%77/85
-
-
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/index.ts.html b/coverage/lcov-report/src/index.ts.html deleted file mode 100644 index ff07a3a..0000000 --- a/coverage/lcov-report/src/index.ts.html +++ /dev/null @@ -1,643 +0,0 @@ - - - - - - Code coverage report for src/index.ts - - - - - - - - - -
-
-

All files / src index.ts

-
- -
- 66.85% - Statements - 119/178 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 66.85% - Lines - 119/178 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -18722x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -  -22x -22x -22x -22x -22x -22x -  -  -6x -9x -5x -1x -  -  -13x -15x -  -11x -  -  -  -2x -  -  -  -10x -  -  -1x -10x -  -10x -7x -  -  -6x -6x -  -  -3x -8x -  -  -  -  -  -  -  -5x -1x -  -19x -  -  -  -  -  -  -5x -2x -  -  -  -  -  -  -  -  -  -1x -  -  -6x -3x -  -  -  -4x -  -  -  -  -  -  -  -  -37x -  -  -  -  -6x -  -  -  -24x -  -  -31x -  -  -1x -1x -  - 
import * as TableHintLimited from './table-hint-limited.js'
-import and from './and.js'
-import assign from './assign.js'
-import assignObject from './assign-object.js'
-import auto from './auto.js'
-import between from './between.js'
-import columns from './columns.js'
-import delete_ from './delete.js'
-import demargin from './demargin.js'
-import distinct from './distinct.js'
-import eq from './eq.js'
-import exists from './exists.js'
-import fallback from './fallback.js'
-import falseValue from './false-value.js'
-import gt from './gt.js'
-import gte from './gte.js'
-import identifier from './identifier.js'
-import identifiers from './identifiers.js'
-import in_ from './in.js'
-import indentTail from './indent-tail.js'
-import inlineTableOfColumn from './inline-table-of-column.js'
-import inlineTableOfObjects from './inline-table-of-objects.js'
-import insertIgnore from './insert-ignore.js'
-import insertNotMatched from './insert-not-matched.js'
-import insertObject from './insert-object.js'
-import insertObjects from './insert-objects.js'
-import interpolate from './interpolate.js'
-import interpolate1 from './interpolate1.js'
-import is from './is.js'
-import isNull from './is-null.js'
-import isString from './is-string.js'
-import json from './json.js'
-import jsonModify from './json-modify.js'
-import jsonPath from './json-path.js'
-import jsonPathExists from './json-path-exists.js'
-import jsonQuery from './json-query.js'
-import jsonValue from './json-value.js'
-import keysOfObjects from './keys-of-objects.js'
-import like from './like.js'
-import limitedHintsIdentifier from './limited-hints-identifier.js'
-import line from './line.js'
-import lines from './lines.js'
-import list from './list.js'
-import logicalFalse from './logical-false.js'
-import logicalTrue from './logical-true.js'
-import lt from './lt.js'
-import lte from './lte.js'
-import marginOfFirstLine from './margin-of-first-line.js'
-import marginOfLastLine from './margin-of-last-line.js'
-import maybeLine from './maybe-line.js'
-import maybeLines from './maybe-lines.js'
-import merge1n from './merge-1n.js'
-import modifyJsons from './modify-jsons.js'
-import ne from './ne.js'
-import ng from './ng.js'
-import nl from './nl.js'
-import not from './not.js'
-import notBetween from './not-between.js'
-import notDistinct from './not-distinct.js'
-import notIn from './not-in.js'
-import now from './now.js'
-import nstring from './nstring.js'
-import null_ from './null.js'
-import number_ from './number.js'
-import objectId from './object-id.js'
-import or from './or.js'
-import orderBy from './order-by.js'
-import pick from './pick.js'
-import quotedNstring from './quoted-nstring.js'
-import randomIdentifier from './random-identifier.js'
-import raw from './raw.js'
-import replaceObjects from './replace-objects.js'
-import row from './row.js'
-import rowset from './rowset.js'
-import Sanitised from './sanitised.js'
-import SanitisedIdentifier from './sanitised-identifier.js'
-import select from './select.js'
-import star from './star.js'
-import template from './template.js'
-import top from './top.js'
-import trueValue from './true-value.js'
-import type { Where } from './where.js'
-import unique from './unique.js'
-import unix from './unix.js'
-import update from './update.js'
-import updateObjects from './update-objects.js'
-import upsertObjects from './upsert-objects.js'
-import where from './where.js'
- 
-export {
-  and,
-  assign,
-  assignObject,
-  auto,
-  between,
-  columns,
-  delete_ as delete,
-  demargin,
-  distinct,
-  eq,
-  exists,
-  fallback,
-  falseValue,
-  gt,
-  gte,
-  identifier,
-  identifiers,
-  in_ as in,
-  indentTail,
-  inlineTableOfColumn,
-  inlineTableOfObjects,
-  insertIgnore,
-  insertNotMatched,
-  insertObject,
-  insertObjects,
-  interpolate,
-  interpolate1,
-  is,
-  isNull,
-  isString,
-  json,
-  jsonModify,
-  jsonPath,
-  jsonPathExists,
-  jsonQuery,
-  jsonValue,
-  keysOfObjects,
-  like,
-  limitedHintsIdentifier,
-  line,
-  lines,
-  list,
-  logicalFalse,
-  logicalTrue,
-  lt,
-  lte,
-  marginOfFirstLine,
-  marginOfLastLine,
-  maybeLine,
-  maybeLines,
-  merge1n,
-  modifyJsons,
-  ne,
-  ng,
-  nl,
-  not,
-  notBetween,
-  notDistinct,
-  notIn,
-  now,
-  nstring,
-  null_ as null,
-  number_ as number,
-  objectId,
-  or,
-  orderBy,
-  pick,
-  quotedNstring,
-  randomIdentifier,
-  raw,
-  replaceObjects,
-  row,
-  rowset,
-  Sanitised,
-  SanitisedIdentifier,
-  select,
-  star,
-  TableHintLimited,
-  template,
-  top,
-  trueValue,
-  unique,
-  unix,
-  update,
- 
-  updateObjects,
-  upsertObjects,
-  where,
-  type Where,
- 
-  // Aliases
-  identifier as id,
-  identifiers as ids,
-  Sanitised as S,
-  SanitisedIdentifier as Sid
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/inline-table-of-column.ts.html b/coverage/lcov-report/src/inline-table-of-column.ts.html deleted file mode 100644 index 188237a..0000000 --- a/coverage/lcov-report/src/inline-table-of-column.ts.html +++ /dev/null @@ -1,169 +0,0 @@ - - - - - - Code coverage report for src/inline-table-of-column.ts - - - - - - - - - -
-
-

All files / src inline-table-of-column.ts

-
- -
- 86.66% - Statements - 13/15 -
- - -
- 0% - Branches - 0/1 -
- - -
- 100% - Functions - 2/2 -
- - -
- 84.61% - Lines - 11/13 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -2922x -22x -22x -  -  -22x -  -  -  -  -  -  -  -22x -4x -  -  -4x -4x -11x -4x -  -  -  -  -  -  -22x - 
import id from './identifier.js'
-import list from './list.js'
-import row from './row.js'
-import type S from './sanitised.js'
-import type Sid from './sanitised-identifier.js'
-import tsql from './template.js'
- 
-/**
- * @returns single column literal table from provided array of values.
- *
- * @throws {Error} if provided values array is empty.
- */
-export const inlineTableOfColumn =
-  (table: Sid | string, column: Sid | string, values: unknown[]): S => {
-    Iif (values.length === 0) {
-      throw new Error(`Can't generate literal table ${table} using column ${column} with an empty array of values.`)
-    }
-    const table_ = id(table)
-    const column_ = id(column)
-    const values_ = list(values.map(_ => row([ _ ])), undefined, ',\n')
-    return tsql`
-      (values
-        ${values_}
-      ) as ${table_} (${column_})
-    `
-  }
- 
-export default inlineTableOfColumn
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/inline-table-of-objects.ts.html b/coverage/lcov-report/src/inline-table-of-objects.ts.html deleted file mode 100644 index b0372a7..0000000 --- a/coverage/lcov-report/src/inline-table-of-objects.ts.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - Code coverage report for src/inline-table-of-objects.ts - - - - - - - - - -
-
-

All files / src inline-table-of-objects.ts

-
- -
- 94.11% - Statements - 16/17 -
- - -
- 100% - Branches - 2/2 -
- - -
- 100% - Functions - 3/3 -
- - -
- 92.85% - Lines - 13/14 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -2822x -22x -22x -22x -22x -  -  -22x -  -  -  -  -  -  -  -22x -15x -15x -15x -3073x -15x -  -  -  -  -  -22x - 
import auto from './auto.js'
-import id from './identifier.js'
-import keysOfObjects from './keys-of-objects.js'
-import list from './list.js'
-import row from './row.js'
-import type S from './sanitised.js'
-import type Sid from './sanitised-identifier.js'
-import tsql from './template.js'
- 
-/**
- * @returns literal table from provided array of records.
- *
- * @throws {Error} if provided values array is empty.
- */
-export const inlineTableOfObjects =
-  (table: Sid | string, objects: readonly Record<string, unknown>[], maybeKeys?: string[]): S => {
-    const table_ = id(table)
-    const keys = maybeKeys || keysOfObjects(objects)
-    const columns_ = row(keys.map(id))
-    const values_ = list(objects.map(object => row(keys.map(key => auto(object[key])))), undefined, ',\n')
-    return tsql`
-      (values
-        ${values_}
-      ) as ${table_} ${columns_}`
-  }
- 
-export default inlineTableOfObjects
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/insert-ignore.ts.html b/coverage/lcov-report/src/insert-ignore.ts.html deleted file mode 100644 index d2ce08b..0000000 --- a/coverage/lcov-report/src/insert-ignore.ts.html +++ /dev/null @@ -1,265 +0,0 @@ - - - - - - Code coverage report for src/insert-ignore.ts - - - - - - - - - -
-
-

All files / src insert-ignore.ts

-
- -
- 82.14% - Statements - 23/28 -
- - -
- 50% - Branches - 3/6 -
- - -
- 100% - Functions - 5/5 -
- - -
- 80% - Lines - 20/25 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -6122x -22x -22x -22x -22x -22x -22x -22x -  -  -  -  -  -22x -10x -  -  -22x -20x -  -  -  -  -  -  -  -  -  -22x -  -  -  -  -  -  -  -  -  -10x -  -  -  -10x -  -  -  -10x -10x -10x -  -10x -  -  -  -  -  -  -  -  -22x - 
import and from './and.js'
-import eq from './eq.js'
-import id from './identifier.js'
-import id_ from './limited-hints-identifier.js'
-import inlineTableOfObjects from './inline-table-of-objects.js'
-import keysOfObjects from './keys-of-objects.js'
-import row from './row.js'
-import tsql from './template.js'
-import type { TableHintLimited } from './table-hint-limited.js'
-import type S from './sanitised.js'
-import type Sid from './sanitised-identifier.js'
- 
-export const sourcePrefixed =
-  (_: Sid | string): Sid =>
-    id([ 'Source', _ ])
- 
-export const targetPrefixed =
-  (_: Sid | string): Sid =>
-    id([ 'Target', _ ])
- 
-/**
- * @returns insert DML ignoring existing rows.
- *
- * If provided array of objects is empty, returns SELECT 0.
- *
- * Optional hits can be provided. Defaults to SERIALIZABLE hint.
- */
-export const insertIgnore =
-  (
-    table: Sid | string,
-    onKeys: string[],
-    objects: Record<string, unknown>[],
-    maybeObjectKeys?: string[],
-    { hints = [ 'serializable' ] }: {
-      hints?: TableHintLimited[]
-    } = {}
-  ): S => {
- 
-    Iif (!Array.isArray(objects)) {
-      throw new TypeError(`Expected array of values, got ${objects}.`)
-    }
- 
-    Iif (objects.length === 0) {
-      return tsql`select 0;`
-    }
- 
-    const objectKeys = maybeObjectKeys || keysOfObjects(objects)
-    const on_ = and(...onKeys.map(_ => eq(sourcePrefixed(_), targetPrefixed(_))))
-    const where_ = and(...onKeys.map(_ => eq(targetPrefixed(_), null)))
- 
-    return tsql`
-      insert into ${id_(table, hints)} ${row(objectKeys.map(id))}
-      select Source.*
-      from ${inlineTableOfObjects('Source', objects, objectKeys)}
-      left join ${id(table)} as Target on ${on_}
-      where ${where_}
-    `
-  }
- 
-export default insertIgnore
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/insert-not-matched.ts.html b/coverage/lcov-report/src/insert-not-matched.ts.html deleted file mode 100644 index 759f6db..0000000 --- a/coverage/lcov-report/src/insert-not-matched.ts.html +++ /dev/null @@ -1,274 +0,0 @@ - - - - - - Code coverage report for src/insert-not-matched.ts - - - - - - - - - -
-
-

All files / src insert-not-matched.ts

-
- -
- 44.44% - Statements - 12/27 -
- - -
- 0% - Branches - 0/6 -
- - -
- 0% - Functions - 0/4 -
- - -
- 48% - Lines - 12/25 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -6422x -22x -22x -22x -22x -22x -22x -22x -  -  -  -  -  -22x -  -  -  -22x -  -  -  -  -  -  -  -  -  -  -  -  -22x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -22x - 
import and from './and.js'
-import eq from './eq.js'
-import id from './identifier.js'
-import inlineTableOfObjects from './inline-table-of-objects.js'
-import keysOfObjects from './keys-of-objects.js'
-import limitedHintsIdentifier from './limited-hints-identifier.js'
-import row from './row.js'
-import tsql from './template.js'
-import type { TableHintLimited } from './table-hint-limited.js'
-import type S from './sanitised.js'
-import type Sid from './sanitised-identifier.js'
- 
-export const sourcePrefixed =
-  (_: Sid | string): Sid =>
-    id([ 'Source', _ ])
- 
-export const targetPrefixed =
-  (_: Sid | string): Sid =>
-    id([ 'Target', _ ])
- 
-/**
- * @returns merge DML that runs insert operations on target table from the result of a join with source table.
- *
- * Already existing records are skipped.
- *
- * This DML is using MERGE statement.
- *
- * @see insertIgnore for DML based on INSERT and LEFT JOIN.
- */
-export const insertNotMatched =
-  (
-    table: Sid | string,
-    onKeys: string[],
-    objects: Record<string, unknown>[],
-    maybeObjectKeys?: string[],
-    { hints = [ 'serializable' ] }: {
-      hints?: TableHintLimited[]
-    } = {}
-  ): S => {
- 
-    Iif (!Array.isArray(objects)) {
-      throw new TypeError(`Expected array of values, got ${objects}.`)
-    }
- 
-    Iif (objects.length === 0) {
-      return tsql`select 0;`
-    }
- 
-    const table_ = limitedHintsIdentifier(table, hints)
-    const objectKeys = maybeObjectKeys || keysOfObjects(objects)
-    const on_ = and(...onKeys.map(_ => eq(sourcePrefixed(_), targetPrefixed(_))))
- 
-    return tsql`
-      merge ${table_} as ${id('Target')}
-      using ${inlineTableOfObjects('Source', objects, objectKeys)}
-      on ${on_}
-      when not matched by target then
-        insert ${row(objectKeys.map(id))}
-        values ${row(objectKeys.map(sourcePrefixed))};
-    `
-  }
- 
-export default insertNotMatched
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/insert-object.ts.html b/coverage/lcov-report/src/insert-object.ts.html deleted file mode 100644 index 70855c5..0000000 --- a/coverage/lcov-report/src/insert-object.ts.html +++ /dev/null @@ -1,178 +0,0 @@ - - - - - - Code coverage report for src/insert-object.ts - - - - - - - - - -
-
-

All files / src insert-object.ts

-
- -
- 88.88% - Statements - 16/18 -
- - -
- 33.33% - Branches - 1/3 -
- - -
- 100% - Functions - 2/2 -
- - -
- 87.5% - Lines - 14/16 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -3222x -22x -22x -22x -22x -  -  -  -  -  -  -  -  -  -  -  -22x -10x -10x -10x -  -  -10x -10x -23x -10x -  -  -  -  -22x - 
import auto from './auto.js'
-import defined from './defined.js'
-import id from './identifier.js'
-import list from './list.js'
-import tsql from './template.js'
-import type S from './sanitised.js'
-import type Sid from './sanitised-identifier.js'
- 
-/**
- * @returns insert DML for single row.
- *
- * `undefined` entries are filtered out.
- *
- * @throws {TypeError} if there are no non-`undefined` entries.
- */
-export const insertObject =
-  (table: Sid | string, object: Record<string, unknown>, output?: S): S => {
-    const object_ = defined(object)
-    const keys = Object.keys(object_)
-    Iif (keys.length === 0) {
-      throw new TypeError(`Expected object with keys, got ${object_}.`)
-    }
-    const table_ = id(table)
-    const keys_ = list(keys.map(id))
-    const values_ = list(keys.map(_ => object_[_]).map(auto))
-    return output ?
-      tsql`insert into ${table_} (${keys_}) output ${output} values (${values_})` :
-      tsql`insert into ${table_} (${keys_}) values (${values_})`
-  }
- 
-export default insertObject
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/insert-objects.ts.html b/coverage/lcov-report/src/insert-objects.ts.html deleted file mode 100644 index 3398179..0000000 --- a/coverage/lcov-report/src/insert-objects.ts.html +++ /dev/null @@ -1,241 +0,0 @@ - - - - - - Code coverage report for src/insert-objects.ts - - - - - - - - - -
-
-

All files / src insert-objects.ts

-
- -
- 91.66% - Statements - 22/24 -
- - -
- 80% - Branches - 4/5 -
- - -
- 100% - Functions - 3/3 -
- - -
- 90.47% - Lines - 19/21 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -5322x -22x -22x -22x -22x -22x -22x -  -  -  -  -  -  -  -  -  -  -  -22x -  -  -  -  -  -7x -  -  -  -7x -1x -  -  -6x -6x -6x -  -6x -2x -  -  -  -  -  -  -1107x -4x -  -  -  -  -  -22x - 
import auto from './auto.js'
-import id from './identifier.js'
-import inlineTableOfObjects from './inline-table-of-objects.js'
-import keysOfObjects from './keys-of-objects.js'
-import list from './list.js'
-import row from './row.js'
-import tsql from './template.js'
-import type S from './sanitised.js'
-import type Sid from './sanitised-identifier.js'
- 
-/**
- * @returns multiple row insert DML.
- *
- * @see insertIgnore for DML which ignores existing rows.
- *
- * @see insertNotMatched for DML which ignores existing rows using MERGE statement.
- */
-export const insertObjects =
-  (
-    table: Sid | string,
-    objects: Record<string, unknown>[],
-    maybeKeys?: string[]
-  ): S => {
- 
-    Iif (!Array.isArray(objects)) {
-      throw new TypeError(`Expected array of values, got ${objects}.`)
-    }
- 
-    if (objects.length === 0) {
-      return tsql`select 0;`
-    }
- 
-    const table_ = id(table)
-    const keys = maybeKeys ?? keysOfObjects(objects)
-    const keys_ = list(keys.map(id))
- 
-    if (objects.length > 1000) {
-      return tsql`
-        insert into ${table_} (${keys_})
-        select Source.*
-        from ${inlineTableOfObjects('Source', objects, keys)}
-      `
-    }
- 
-    const values_ = list(objects.map(object => row(keys.map(key => auto(object[key])))))
-    return tsql`
-      insert into ${table_} (${keys_})
-      values ${values_}
-    `
-  }
- 
-export default insertObjects
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/interpolate.ts.html b/coverage/lcov-report/src/interpolate.ts.html deleted file mode 100644 index 6d2565c..0000000 --- a/coverage/lcov-report/src/interpolate.ts.html +++ /dev/null @@ -1,277 +0,0 @@ - - - - - - Code coverage report for src/interpolate.ts - - - - - - - - - -
-
-

All files / src interpolate.ts

-
- -
- 87.09% - Statements - 27/31 -
- - -
- 75% - Branches - 12/16 -
- - -
- 100% - Functions - 3/3 -
- - -
- 86.2% - Lines - 25/29 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65  -22x -  -  -  -  -  -  -  -  -  -1816x -  -  -1816x -  -  -1816x -1816x -2025x -  -  -  -1816x -  -  -1816x -  -  -1816x -1816x -  -  -  -  -  -  -  -22x -406x -  -  -406x -  -  -406x -  -  -406x -406x -  -406x -1816x -1816x -  -406x -406x -705x -705x -  -406x -  -  -406x - 
import type S from './sanitised.js'
-import indentTail from './indent-tail.js'
- 
-type Margin = {
-  column: number,
-  open: boolean
-}
- 
-function updateMargin(mutableMargin: Margin, value: string) {
- 
-  // Locate start of last line.
-  const start = value.lastIndexOf('\n') + 1
- 
-  // New value has multiple lines.
-  const multiline = start > 0
- 
-  // Span of margin on the last line.
-  let end = start
-  while (end < value.length && value[end] === ' ') {
-    end++
-  }
- 
-  // Margin's column.
-  const column = end - start
- 
-  // Last line is full of blanks.
-  const blanks = end === value.length
- 
-  // Update margin.
-  mutableMargin.column = multiline ? column : mutableMargin.column + (mutableMargin.open ? column : 0)
-  mutableMargin.open = (mutableMargin.open || multiline) && blanks
-}
- 
-/**
- * @returns interpolated array `xs` with values from `ys`; empty array if both arrays are empty.
- * @throws if `xs.length - 1 !== ys.length`
- */
-export const interpolate =
-  (xs: TemplateStringsArray, ys: S[]): string[] => {
-    Iif (!Array.isArray(xs) || !Array.isArray(ys)) {
-      throw new TypeError(`Expected xs and ys to be an array, got ${xs} and ${ys}.`)
-    }
-    Iif ((xs.length === 0) && (ys.length === 0)) {
-      return []
-    }
-    Iif (xs.length - 1 !== ys.length) {
-      throw new TypeError(`Expected xs and ys length to be correct, got ${xs.length} and ${ys.length}.`)
-    }
-    const margin = { column: 0, open: true }
-    const rs: string[] = []
-    const push =
-      (value: string) => {
-        rs.push(value)
-        updateMargin(margin, value)
-      }
-    push(xs[0])
-    for (let i = 0; i < ys.length; i++) {
-      push(indentTail(ys[i].toString(), ' '.repeat(margin.column)))
-      push(xs[i + 1])
-    }
-    return rs
-  }
- 
-export default interpolate
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/interpolate1.ts.html b/coverage/lcov-report/src/interpolate1.ts.html deleted file mode 100644 index 02a7402..0000000 --- a/coverage/lcov-report/src/interpolate1.ts.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - Code coverage report for src/interpolate1.ts - - - - - - - - - -
-
-

All files / src interpolate1.ts

-
- -
- 78.57% - Statements - 11/14 -
- - -
- 0% - Branches - 0/2 -
- - -
- 100% - Functions - 1/1 -
- - -
- 75% - Lines - 9/12 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19  -  -22x -78x -  -  -78x -  -  -78x -78x -27x -27x -  -78x -  -  -78x - 
/** @returns interpolated array with `y` elements. */
-export const interpolate1 =
-  <T, I>(xs: T[], y: I): (T | I)[] => {
-    Iif (!Array.isArray(xs)) {
-      throw new TypeError(`Expected xs to be an array, got ${xs}.`)
-    }
-    Iif (xs.length === 0) {
-      return []
-    }
-    const rs: (T | I)[] = [ xs[0] ]
-    for (let i = 1; i < xs.length; i++) {
-      rs.push(y)
-      rs.push(xs[i])
-    }
-    return rs
-  }
- 
-export default interpolate1
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/is-defined.ts.html b/coverage/lcov-report/src/is-defined.ts.html deleted file mode 100644 index 38a84f6..0000000 --- a/coverage/lcov-report/src/is-defined.ts.html +++ /dev/null @@ -1,142 +0,0 @@ - - - - - - Code coverage report for src/is-defined.ts - - - - - - - - - -
-
-

All files / src is-defined.ts

-
- -
- 87.5% - Statements - 7/8 -
- - -
- 100% - Branches - 2/2 -
- - -
- 100% - Functions - 2/2 -
- - -
- 87.5% - Lines - 7/8 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -2022x -  -  -  -  -  -  -  -90x -127x -13x -  -114x -114x -  -114x -  -  -  - 
import { isObject } from './is-object.js'
- 
-export type Defined<T> =
-  T extends undefined ?
-    never :
-    T
- 
-/** @returns true if values propagates to undefined, false otherwise. */
-export function isDefined<T>(value: T): value is Defined<T> {
-  if (typeof value === 'undefined') {
-    return false
-  }
-  if (isObject(value)) {
-    return Object
-      .values(value)
-      .some(_ => typeof _ !== 'undefined')
-  }
-  return true
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/is-null.ts.html b/coverage/lcov-report/src/is-null.ts.html deleted file mode 100644 index d0e4fb6..0000000 --- a/coverage/lcov-report/src/is-null.ts.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - Code coverage report for src/is-null.ts - - - - - - - - - -
-
-

All files / src is-null.ts

-
- -
- 83.33% - Statements - 5/6 -
- - -
- 100% - Branches - 3/3 -
- - -
- 100% - Functions - 1/1 -
- - -
- 80% - Lines - 4/5 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -1022x -  -  -  -22x -69x -  -  -69x - 
import Sanitised from './sanitised.js'
- 
-/** @returns `true` if value is `null` or sanitised null, `false` otherwise. */
-export const isNull =
-  (value: unknown) =>
-    value === null ||
-    (value instanceof Sanitised && value.toString() === 'null')
- 
-export default isNull
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/is-object.ts.html b/coverage/lcov-report/src/is-object.ts.html deleted file mode 100644 index 72aed41..0000000 --- a/coverage/lcov-report/src/is-object.ts.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - Code coverage report for src/is-object.ts - - - - - - - - - -
-
-

All files / src is-object.ts

-
- -
- 100% - Statements - 2/2 -
- - -
- 100% - Branches - 3/3 -
- - -
- 100% - Functions - 1/1 -
- - -
- 100% - Lines - 2/2 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8263x -263x -  -  -  -  -  - 
export function isObject(value: unknown): value is Record<string, unknown> {
-  return (
-    typeof value === 'object' &&
-    value !== null &&
-    !Array.isArray(value)
-  )
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/is-string.ts.html b/coverage/lcov-report/src/is-string.ts.html deleted file mode 100644 index 727c2fb..0000000 --- a/coverage/lcov-report/src/is-string.ts.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - Code coverage report for src/is-string.ts - - - - - - - - - -
-
-

All files / src is-string.ts

-
- -
- 80% - Statements - 4/5 -
- - -
- 50% - Branches - 1/2 -
- - -
- 100% - Functions - 1/1 -
- - -
- 75% - Lines - 3/4 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9  -  -  -  -22x -4685x -  -4685x - 
// TODO: Remove this, this is dangerous.
-export const isString =
- 
-  // eslint-disable-next-line @typescript-eslint/ban-types
-  (value: unknown): value is string | String =>
-    typeof value === 'string' || value instanceof String
- 
-export default isString
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/is.ts.html b/coverage/lcov-report/src/is.ts.html deleted file mode 100644 index 699dff1..0000000 --- a/coverage/lcov-report/src/is.ts.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - Code coverage report for src/is.ts - - - - - - - - - -
-
-

All files / src is.ts

-
- -
- 100% - Statements - 5/5 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 2/2 -
- - -
- 100% - Lines - 4/4 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17  -  -  -  -  -  -  -  -  -  -  -22x -6x -6x -  -22x - 
/**
- * @returns where clause comparision combinator.
- *
- * Usage:
- *
- *   ```ts
- *   Tsql.where({ foo: Tsql.is(Tsql.gt, 3) })
- *   ```
- *
- */
-const is =
-  <Lhs, Rest extends unknown[], R>(f: (lhs: Lhs, ...args: Rest) => R, ...args: Rest): ((lhs: Lhs) => R) =>
-    (lhs: Lhs): R =>
-      f(lhs, ...args)
- 
-export default is
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/json-modify.ts.html b/coverage/lcov-report/src/json-modify.ts.html deleted file mode 100644 index 7e8689f..0000000 --- a/coverage/lcov-report/src/json-modify.ts.html +++ /dev/null @@ -1,190 +0,0 @@ - - - - - - Code coverage report for src/json-modify.ts - - - - - - - - - -
-
-

All files / src json-modify.ts

-
- -
- 92.85% - Statements - 13/14 -
- - -
- 100% - Branches - 1/1 -
- - -
- 100% - Functions - 2/2 -
- - -
- 92.3% - Lines - 12/13 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -3622x -22x -22x -22x -  -  -  -22x -3x -3x -6x -2x -2x -  -  -  -  -  -  -  -  -  -  -  -4x -  -  -  -  -  -  -  -  -  -22x - 
import auto from './auto.js'
-import jsonPath from './json-path.js'
-import trueValue from './true-value.js'
-import tsql from './template.js'
-import type S from './sanitised.js'
- 
-export const jsonModify =
-  (target: S, kvs: Record<string, unknown>): S => {
-    const paths = Object.keys(kvs)
-    return paths.reduce((result, path) => {
-      if (path.startsWith('force ')) {
-        const path_ = path.slice('force '.length)
-        return tsql`
-          json_modify(
-            json_modify(
-              ${result},
-              ${'lax ' + jsonPath(path_)},
-              ${trueValue}
-            ),
-            ${'strict ' + jsonPath(path_)},
-            ${auto(kvs[path])}
-          )
-        `
-      }
-      return tsql`
-        json_modify(
-          ${result},
-          ${jsonPath(path)},
-          ${auto(kvs[path])}
-        )
-      `
-    }, target)
-  }
- 
-export default jsonModify
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/json-path-exists.ts.html b/coverage/lcov-report/src/json-path-exists.ts.html deleted file mode 100644 index 5bb6358..0000000 --- a/coverage/lcov-report/src/json-path-exists.ts.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - Code coverage report for src/json-path-exists.ts - - - - - - - - - -
-
-

All files / src json-path-exists.ts

-
- -
- 66.66% - Statements - 2/3 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 100% - Lines - 2/2 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -322x -22x - 
import { jsonPathExists } from './identifier.js'
-export default jsonPathExists
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/json-path.ts.html b/coverage/lcov-report/src/json-path.ts.html deleted file mode 100644 index fa286fd..0000000 --- a/coverage/lcov-report/src/json-path.ts.html +++ /dev/null @@ -1,154 +0,0 @@ - - - - - - Code coverage report for src/json-path.ts - - - - - - - - - -
-
-

All files / src json-path.ts

-
- -
- 87.5% - Statements - 14/16 -
- - -
- 100% - Branches - 5/5 -
- - -
- 100% - Functions - 1/1 -
- - -
- 92.85% - Lines - 13/14 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24  -22x -  -  -  -22x -20x -5x -  -15x -15x -2x -  -15x -1x -  -15x -2x -  -13x -  -  -22x - 
 
-export const re = /^\s*((append|lax|strict)\s+)*\$\./i
- 
-/** @returns `[append] [lax | strict] $.<path>` json path from simplified path. */
-export const jsonPath =
-  (path: string, { mode, append }: { append?: boolean, mode?: 'lax' | 'strict' } = {}): string => {
-    if (re.test(path)) {
-      return path
-    }
-    const parts: string[] = []
-    if (append) {
-      parts.push('append')
-    }
-    if (mode) {
-      parts.push(mode)
-    }
-    if (parts.length > 0) {
-      return `${parts.join(' ')} $.${path}`
-    }
-    return `$.${path}`
-  }
- 
-export default jsonPath
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/json-query.ts.html b/coverage/lcov-report/src/json-query.ts.html deleted file mode 100644 index 0b8118d..0000000 --- a/coverage/lcov-report/src/json-query.ts.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - Code coverage report for src/json-query.ts - - - - - - - - - -
-
-

All files / src json-query.ts

-
- -
- 66.66% - Statements - 2/3 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 100% - Lines - 2/2 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -322x -22x - 
import { jsonQuery } from './identifier.js'
-export default jsonQuery
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/json-value.ts.html b/coverage/lcov-report/src/json-value.ts.html deleted file mode 100644 index 75165b3..0000000 --- a/coverage/lcov-report/src/json-value.ts.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - Code coverage report for src/json-value.ts - - - - - - - - - -
-
-

All files / src json-value.ts

-
- -
- 66.66% - Statements - 2/3 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 100% - Lines - 2/2 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -322x -22x - 
import { jsonValue } from './identifier.js'
-export default jsonValue
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/json.ts.html b/coverage/lcov-report/src/json.ts.html deleted file mode 100644 index 1c3ad04..0000000 --- a/coverage/lcov-report/src/json.ts.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - Code coverage report for src/json.ts - - - - - - - - - -
-
-

All files / src json.ts

-
- -
- 85.71% - Statements - 6/7 -
- - -
- 50% - Branches - 1/2 -
- - -
- 100% - Functions - 1/1 -
- - -
- 83.33% - Lines - 5/6 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -1722x -22x -  -  -  -  -  -  -  -  -22x -8x -  -  -  -22x - 
import null_ from './null.js'
-import nstring from './nstring.js'
-import type S from './sanitised.js'
- 
-/**
- * @returns stringified json.
- *
- * `undefined` value is serialised as NULL.
- */
-export const json =
-  (x: unknown): S =>
-    typeof x === 'undefined' ?
-      null_ :
-      nstring(JSON.stringify(x))
- 
-export default json
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/keys-of-objects.ts.html b/coverage/lcov-report/src/keys-of-objects.ts.html deleted file mode 100644 index 42f9c01..0000000 --- a/coverage/lcov-report/src/keys-of-objects.ts.html +++ /dev/null @@ -1,178 +0,0 @@ - - - - - - Code coverage report for src/keys-of-objects.ts - - - - - - - - - -
-
-

All files / src keys-of-objects.ts

-
- -
- 73.68% - Statements - 14/19 -
- - -
- 40% - Branches - 2/5 -
- - -
- 100% - Functions - 3/3 -
- - -
- 68.75% - Lines - 11/16 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32  -  -22x -4152x -  -  -  -  -  -  -  -22x -21x -  -  -21x -  -  -21x -21x -4124x -4124x -  -  -  -  -  -21x -  -  -22x - 
/** @returns `true` if boths string arrays are the same. */
-export const same =
-  (xs: string[], ys: string[]): boolean =>
-    xs.length === ys.length && xs.every((x, i) => x === ys[i])
- 
-/**
- * @returns keys of all objects in array
- * @throws if objects have different keys.
- * @throws if an array is empty.
- */
-export const keysOfObjects =
-  (objects: readonly Record<string, unknown>[]): string[] => {
-    Iif (!Array.isArray(objects)) {
-      throw new TypeError(`Expected array, got ${objects}.`)
-    }
-    Iif (objects.length === 0) {
-      throw new TypeError('Expected non empty array.')
-    }
-    const keys = Object.keys(objects[0]).sort()
-    for (let i = 1; i < objects.length; i++) {
-      const keys_ = Object.keys(objects[i]).sort()
-      Iif (!same(keys, keys_)) {
-        throw new TypeError(`Expected same keys on all objects, got ${keys} and ${keys_} at ${i} index.`)
-      }
-    }
- 
-    // Return naturally ordered keys.
-    return Object.keys(objects[0])
-  }
- 
-export default keysOfObjects
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/keywords.ts.html b/coverage/lcov-report/src/keywords.ts.html deleted file mode 100644 index 865f80e..0000000 --- a/coverage/lcov-report/src/keywords.ts.html +++ /dev/null @@ -1,3022 +0,0 @@ - - - - - - Code coverage report for src/keywords.ts - - - - - - - - - -
-
-

All files / src keywords.ts

-
- -
- 100% - Statements - 5/5 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 1/1 -
- - -
- 100% - Lines - 3/3 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198 -199 -200 -201 -202 -203 -204 -205 -206 -207 -208 -209 -210 -211 -212 -213 -214 -215 -216 -217 -218 -219 -220 -221 -222 -223 -224 -225 -226 -227 -228 -229 -230 -231 -232 -233 -234 -235 -236 -237 -238 -239 -240 -241 -242 -243 -244 -245 -246 -247 -248 -249 -250 -251 -252 -253 -254 -255 -256 -257 -258 -259 -260 -261 -262 -263 -264 -265 -266 -267 -268 -269 -270 -271 -272 -273 -274 -275 -276 -277 -278 -279 -280 -281 -282 -283 -284 -285 -286 -287 -288 -289 -290 -291 -292 -293 -294 -295 -296 -297 -298 -299 -300 -301 -302 -303 -304 -305 -306 -307 -308 -309 -310 -311 -312 -313 -314 -315 -316 -317 -318 -319 -320 -321 -322 -323 -324 -325 -326 -327 -328 -329 -330 -331 -332 -333 -334 -335 -336 -337 -338 -339 -340 -341 -342 -343 -344 -345 -346 -347 -348 -349 -350 -351 -352 -353 -354 -355 -356 -357 -358 -359 -360 -361 -362 -363 -364 -365 -366 -367 -368 -369 -370 -371 -372 -373 -374 -375 -376 -377 -378 -379 -380 -381 -382 -383 -384 -385 -386 -387 -388 -389 -390 -391 -392 -393 -394 -395 -396 -397 -398 -399 -400 -401 -402 -403 -404 -405 -406 -407 -408 -409 -410 -411 -412 -413 -414 -415 -416 -417 -418 -419 -420 -421 -422 -423 -424 -425 -426 -427 -428 -429 -430 -431 -432 -433 -434 -435 -436 -437 -438 -439 -440 -441 -442 -443 -444 -445 -446 -447 -448 -449 -450 -451 -452 -453 -454 -455 -456 -457 -458 -459 -460 -461 -462 -463 -464 -465 -466 -467 -468 -469 -470 -471 -472 -473 -474 -475 -476 -477 -478 -479 -480 -481 -482 -483 -484 -485 -486 -487 -488 -489 -490 -491 -492 -493 -494 -495 -496 -497 -498 -499 -500 -501 -502 -503 -504 -505 -506 -507 -508 -509 -510 -511 -512 -513 -514 -515 -516 -517 -518 -519 -520 -521 -522 -523 -524 -525 -526 -527 -528 -529 -530 -531 -532 -533 -534 -535 -536 -537 -538 -539 -540 -541 -542 -543 -544 -545 -546 -547 -548 -549 -550 -551 -552 -553 -554 -555 -556 -557 -558 -559 -560 -561 -562 -563 -564 -565 -566 -567 -568 -569 -570 -571 -572 -573 -574 -575 -576 -577 -578 -579 -580 -581 -582 -583 -584 -585 -586 -587 -588 -589 -590 -591 -592 -593 -594 -595 -596 -597 -598 -599 -600 -601 -602 -603 -604 -605 -606 -607 -608 -609 -610 -611 -612 -613 -614 -615 -616 -617 -618 -619 -620 -621 -622 -623 -624 -625 -626 -627 -628 -629 -630 -631 -632 -633 -634 -635 -636 -637 -638 -639 -640 -641 -642 -643 -644 -645 -646 -647 -648 -649 -650 -651 -652 -653 -654 -655 -656 -657 -658 -659 -660 -661 -662 -663 -664 -665 -666 -667 -668 -669 -670 -671 -672 -673 -674 -675 -676 -677 -678 -679 -680 -681 -682 -683 -684 -685 -686 -687 -688 -689 -690 -691 -692 -693 -694 -695 -696 -697 -698 -699 -700 -701 -702 -703 -704 -705 -706 -707 -708 -709 -710 -711 -712 -713 -714 -715 -716 -717 -718 -719 -720 -721 -722 -723 -724 -725 -726 -727 -728 -729 -730 -731 -732 -733 -734 -735 -736 -737 -738 -739 -740 -741 -742 -743 -744 -745 -746 -747 -748 -749 -750 -751 -752 -753 -754 -755 -756 -757 -758 -759 -760 -761 -762 -763 -764 -765 -766 -767 -768 -769 -770 -771 -772 -773 -774 -775 -776 -777 -778 -779 -780 -781 -782 -783 -784 -785 -786 -787 -788 -789 -790 -791 -792 -793 -794 -795 -796 -797 -798 -799 -800 -801 -802 -803 -804 -805 -806 -807 -808 -809 -810 -811 -812 -813 -814 -815 -816 -817 -818 -819 -820 -821 -822 -823 -824 -825 -826 -827 -828 -829 -830 -831 -832 -833 -834 -835 -836 -837 -838 -839 -840 -841 -842 -843 -844 -845 -846 -847 -848 -849 -850 -851 -852 -853 -854 -855 -856 -857 -858 -859 -860 -861 -862 -863 -864 -865 -866 -867 -868 -869 -870 -871 -872 -873 -874 -875 -876 -877 -878 -879 -880 -881 -882 -883 -884 -885 -886 -887 -888 -889 -890 -891 -892 -893 -894 -895 -896 -897 -898 -899 -900 -901 -902 -903 -904 -905 -906 -907 -908 -909 -910 -911 -912 -913 -914 -915 -916 -917 -918 -919 -920 -921 -922 -923 -924 -925 -926 -927 -928 -929 -930 -931 -932 -933 -934 -935 -936 -937 -938 -939 -940 -941 -942 -943 -944 -945 -946 -947 -948 -949 -950 -951 -952 -953 -954 -955 -956 -957 -958 -959 -960 -961 -962 -963 -964 -965 -966 -967 -968 -969 -970 -971 -972 -973 -974 -975 -976 -977 -978 -979 -98022x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -21362x -  -424x - 
const keywords_ = [
-  'abort_after_wait',
-  'abort',
-  'absent',
-  'absolute',
-  'accent_sensitivity',
-  'acceptable_cursopt',
-  'acp',
-  'action',
-  'activation',
-  'add',
-  'address',
-  'admin',
-  'aes_128',
-  'aes_192',
-  'aes_256',
-  'affinity',
-  'after',
-  'aggregate',
-  'algorithm',
-  'all_constraints',
-  'all_errormsgs',
-  'all_indexes',
-  'all_levels',
-  'all_results',
-  'all',
-  'allow_connections',
-  'allow_dup_row',
-  'allow_encrypted_value_modifications',
-  'allow_page_locks',
-  'allow_row_locks',
-  'allow_snapshot_isolation',
-  'alter',
-  'altercolumn',
-  'always',
-  'and',
-  'anonymous',
-  'ansi_defaults',
-  'ansi_null_default',
-  'ansi_null_dflt_off',
-  'ansi_null_dflt_on',
-  'ansi_nulls',
-  'ansi_padding',
-  'ansi_warnings',
-  'any',
-  'appdomain',
-  'append',
-  'application',
-  'apply',
-  'arithabort',
-  'arithignore',
-  'as',
-  'asc',
-  'assembly',
-  'asymmetric',
-  'asynchronous_commit',
-  'at',
-  'atan2',
-  'atomic',
-  'attach_force_rebuild_log',
-  'attach_rebuild_log',
-  'attach',
-  'audit',
-  'auth_realm',
-  'authentication',
-  'authorization',
-  'auto_cleanup',
-  'auto_close',
-  'auto_create_statistics',
-  'auto_shrink',
-  'auto_update_statistics_async',
-  'auto_update_statistics',
-  'auto',
-  'automated_backup_preference',
-  'automatic',
-  'autopilot',
-  'availability_mode',
-  'availability',
-  'backup_priority',
-  'backup',
-  'base64',
-  'basic',
-  'batches',
-  'batchsize',
-  'before',
-  'begin',
-  'between',
-  'bigint',
-  'binary',
-  'binding',
-  'bit',
-  'block',
-  'blocksize',
-  'bmk',
-  'break',
-  'broker_instance',
-  'broker',
-  'browse',
-  'bucket_count',
-  'buffer',
-  'buffercount',
-  'bulk_logged',
-  'bulk',
-  'by',
-  'call',
-  'caller',
-  'card',
-  'cascade',
-  'case',
-  'catalog',
-  'catch',
-  'cert',
-  'certificate',
-  'change_retention',
-  'change_tracking_context',
-  'change_tracking',
-  'changes',
-  'char',
-  'character_set',
-  'character',
-  'check_expiration',
-  'check_policy',
-  'check',
-  'checkconstraints',
-  'checkindex',
-  'checkpoint',
-  'cleanup_policy',
-  'clear_port',
-  'clear',
-  'close',
-  'clustered',
-  'coalesce',
-  'codepage',
-  'collate',
-  'collection',
-  'column_encryption_key',
-  'column_master_key',
-  'column',
-  'columnstore_archive',
-  'columnstore',
-  'colv_100_to_80',
-  'colv_80_to_100',
-  'commit_differential_base',
-  'commit',
-  'committed',
-  'compatibility_level',
-  'compress_all_row_groups',
-  'compression_delay',
-  'compression',
-  'compute',
-  'concat_null_yields_null',
-  'concatenate',
-  'configuration',
-  'connect',
-  'constraint',
-  'contains',
-  'containstable',
-  'continue_after_error',
-  'continue',
-  'contract_name',
-  'contract',
-  'control',
-  'conversation_group_id',
-  'conversation_handle',
-  'conversation',
-  'convert',
-  'copy_only',
-  'copy',
-  'count_rows',
-  'counter',
-  'create',
-  'credential',
-  'cross',
-  'cryptographic_provider',
-  'cryptographic',
-  'cube',
-  'current_date',
-  'current_time',
-  'current_timestamp',
-  'current_user',
-  'current',
-  'cursor_close_on_commit',
-  'cursor_default',
-  'cursor',
-  'data_compression',
-  'data_flush_interval_seconds',
-  'data_mirroring',
-  'data_purity',
-  'data_source',
-  'data',
-  'database_name',
-  'database_snapshot',
-  'database',
-  'datafiletype',
-  'date_correlation_optimization',
-  'date_format',
-  'date',
-  'datefirst',
-  'dateformat',
-  'datetime',
-  'datetime2',
-  'datetimeoffset',
-  'days',
-  'db_chaining',
-  'dbcc',
-  'dbid',
-  'dbidexec',
-  'dbo_only',
-  'deadlock_priority',
-  'deallocate',
-  'dec',
-  'decimal',
-  'declare',
-  'decrypt_a',
-  'decrypt',
-  'decryption',
-  'default_database',
-  'default_language',
-  'default_logon_domain',
-  'default_schema',
-  'default',
-  'definition',
-  'delay',
-  'delayed_durability',
-  'delete',
-  'delimitedtext',
-  'density_vector',
-  'deny',
-  'dependent',
-  'des',
-  'desc',
-  'description',
-  'desired_state',
-  'desx',
-  'differential',
-  'digest',
-  'disable_broker',
-  'disable_def_cnst_chk',
-  'disable',
-  'disabled',
-  'disk',
-  'distinct',
-  'distributed',
-  'distribution',
-  'double',
-  'drop_existing',
-  'drop',
-  'dts_buffers',
-  'dump',
-  'durability',
-  'dynamic',
-  'edition',
-  'elements',
-  'else',
-  'emergency',
-  'empty',
-  'enable_broker',
-  'enable',
-  'enabled',
-  'encoding',
-  'encrypted_value',
-  'encrypted',
-  'encryption_type',
-  'encryption',
-  'end',
-  'endpoint_url',
-  'endpoint',
-  'enhancedintegrity',
-  'entry',
-  'errlvl',
-  'error_broker_conversations',
-  'errorfile',
-  'escape',
-  'estimateonly',
-  'event',
-  'except',
-  'exec',
-  'executable',
-  'execute',
-  'exists',
-  'exit',
-  'expand',
-  'expiredate',
-  'expiry_date',
-  'explicit',
-  'external_access',
-  'external',
-  'failover_mode',
-  'failover',
-  'failure_condition_level',
-  'fast_forward',
-  'fast',
-  'fastfirstrow',
-  'federated_service_account',
-  'fetch',
-  'field_terminator',
-  'fieldterminator',
-  'file_format',
-  'file',
-  'filegroup',
-  'filelistonly',
-  'filename',
-  'filestream_log',
-  'filestream_on',
-  'filestream',
-  'filetable',
-  'fillfactor',
-  'filter',
-  'fips_flagger',
-  'fire_triggers',
-  'first_row',
-  'first',
-  'firstrow',
-  'float',
-  'flush_interval_seconds',
-  'fmtonly',
-  'following',
-  'for',
-  'force_failover_allow_data_loss',
-  'force_service_allow_data_loss',
-  'force',
-  'forced',
-  'forceplan',
-  'foreign',
-  'format_options',
-  'format_type',
-  'formatfile',
-  'formsof',
-  'forward_only',
-  'free_cursors',
-  'free_exec_context',
-  'freetext',
-  'freetexttable',
-  'from',
-  'full',
-  'fullscan',
-  'fulltext',
-  'fulltextall',
-  'fulltextkey',
-  'function',
-  'generated',
-  'geography',
-  'geometry',
-  'get',
-  'global',
-  'go',
-  'goto',
-  'governor',
-  'grant',
-  'group',
-  'guid',
-  'hadoop',
-  'hardening',
-  'hash',
-  'hashed',
-  'having',
-  'header_limit',
-  'headeronly',
-  'health_check_timeout',
-  'hidden',
-  'hierarchyid',
-  'histogram_steps',
-  'histogram',
-  'hits_cursors',
-  'hits_exec_context',
-  'holdlock',
-  'hours',
-  'http',
-  'identity_insert',
-  'identity_value',
-  'identity',
-  'identitycol',
-  'if',
-  'ifnull',
-  'ignore_constraints',
-  'ignore_dup_key',
-  'ignore_dup_row',
-  'ignore_triggers',
-  'image',
-  'immediate',
-  'implicit_transactions',
-  'in',
-  'include_null_values',
-  'include',
-  'index',
-  'inflectional',
-  'init',
-  'initiator',
-  'inner',
-  'insensitive',
-  'insert',
-  'instead',
-  'int',
-  'integer',
-  'integrated',
-  'intermediate',
-  'intersect',
-  'interval_length_minutes',
-  'into',
-  'inuse_cursors',
-  'inuse_exec_context',
-  'io',
-  'is',
-  'isabout',
-  'iso_week',
-  'isolation',
-  'job_tracker_location',
-  'join',
-  'json',
-  'keep_nulls',
-  'keep_replication',
-  'keep',
-  'keepdefaults',
-  'keepfixed',
-  'keepidentity',
-  'keepnulls',
-  'kerberos',
-  'key_path',
-  'key_source',
-  'key_store_provider_name',
-  'key',
-  'keyset',
-  'kill',
-  'kilobytes_per_batch',
-  'label',
-  'labelonly',
-  'langid',
-  'language',
-  'last',
-  'lastrow',
-  'left',
-  'legacy_cardinality_estimation',
-  'length',
-  'level',
-  'lifetime',
-  'like',
-  'lineage_100_to_80',
-  'lineage_80_to_100',
-  'lineno',
-  'listener_ip',
-  'listener_port',
-  'load',
-  'loadhistory',
-  'lob_compaction',
-  'local_service_name',
-  'local',
-  'locate',
-  'location',
-  'lock_escalation',
-  'lock_timeout',
-  'lockres',
-  'login_type',
-  'login',
-  'loop',
-  'manual',
-  'mark_in_use_for_removal',
-  'masked',
-  'master',
-  'matched',
-  'max_duration',
-  'max_outstanding_io_per_volume',
-  'max_plans_per_query',
-  'max_queue_readers',
-  'max_storage_size_mb',
-  'maxdop',
-  'maxerrors',
-  'maxlength',
-  'maxtransfersize',
-  'mediadescription',
-  'medianame',
-  'mediapassword',
-  'memogroup',
-  'memory_optimized',
-  'merge',
-  'message_forward_size',
-  'message_forwarding',
-  'message',
-  'microsecond',
-  'millisecond',
-  'minutes',
-  'mirror_address',
-  'misses_cursors',
-  'misses_exec_context',
-  'mixed',
-  'modify',
-  'money',
-  'move',
-  'multi_user',
-  'must_change',
-  'name',
-  'namespace',
-  'nanosecond',
-  'national',
-  'native_compilation',
-  'native',
-  'nchar',
-  'ncharacter',
-  'never',
-  'new_account',
-  'new_broker',
-  'newname',
-  'next',
-  'no_browsetable',
-  'no_checksum',
-  'no_compression',
-  'no_infomsgs',
-  'no_triggers',
-  'no_truncate',
-  'no',
-  'nocheck',
-  'nocount',
-  'noexec',
-  'noexpand',
-  'noformat',
-  'noinit',
-  'nolock',
-  'nonatomic',
-  'nonclustered',
-  'nondurable',
-  'none',
-  'norecompute',
-  'norecovery',
-  'noreset',
-  'norewind',
-  'noskip',
-  'not',
-  'notification',
-  'nounload',
-  'now',
-  'nowait',
-  'ntext',
-  'ntlm',
-  'null',
-  'nullif',
-  'numeric_roundabort',
-  'numeric',
-  'nvarchar',
-  'object',
-  'objid',
-  'oem',
-  'of',
-  'off',
-  'offline',
-  'offsets',
-  'old_account',
-  'on',
-  'online',
-  'open',
-  'opendatasource',
-  'openjson',
-  'openquery',
-  'openrowset',
-  'openxml',
-  'operation_mode',
-  'optimistic',
-  'option',
-  'or',
-  'orc',
-  'order',
-  'out',
-  'outer',
-  'output',
-  'over',
-  'override',
-  'owner',
-  'ownership',
-  'pad_index',
-  'page_checksum',
-  'page_verify',
-  'page',
-  'pagecount',
-  'paglock',
-  'param',
-  'parameter_sniffing',
-  'parameter_type_expansion',
-  'parameterization',
-  'parquet',
-  'parseonly',
-  'partial',
-  'partition',
-  'partner',
-  'password',
-  'path',
-  'pause',
-  'percent',
-  'percentage',
-  'period',
-  'permission_set',
-  'persisted',
-  'physical_only',
-  'pivot',
-  'plan_forcing_mode',
-  'plan',
-  'policy',
-  'pool',
-  'population',
-  'ports',
-  'preceding',
-  'precision',
-  'predicate',
-  'presume_abort',
-  'primary_role',
-  'primary',
-  'print',
-  'prior',
-  'priority_level',
-  'priority',
-  'private',
-  'proc',
-  'procedure_name',
-  'procedure',
-  'profile',
-  'provider',
-  'public',
-  'query_capture_mode',
-  'query_governor_cost_limit',
-  'query_optimizer_hotfixes',
-  'query_store',
-  'queue',
-  'quoted_identifier',
-  'raiserror',
-  'range',
-  'raw',
-  'rc2',
-  'rc4_128',
-  'rc4',
-  'rcfile',
-  'rdbms',
-  'read_committed_snapshot',
-  'read_only',
-  'read_write',
-  'read',
-  'readcommitted',
-  'readcommittedlock',
-  'readonly',
-  'readpast',
-  'readtext',
-  'readuncommitted',
-  'readwrite',
-  'real',
-  'rebuild',
-  'receive',
-  'recmodel_70backcomp',
-  'recompile',
-  'reconfigure',
-  'recovery',
-  'recursive_triggers',
-  'recursive',
-  'redo_queue',
-  'references',
-  'reject_sample_value',
-  'reject_type',
-  'reject_value',
-  'relative',
-  'remote_data_archive',
-  'remote_proc_transactions',
-  'remote_service_name',
-  'remote',
-  'remove',
-  'removed_cursors',
-  'removed_exec_context',
-  'reorganize',
-  'repeat',
-  'repeatable',
-  'repeatableread',
-  'replica',
-  'replicated',
-  'replication',
-  'replnick_100_to_80',
-  'replnickarray_100_to_80',
-  'replnickarray_80_to_100',
-  'required_cursopt',
-  'required',
-  'resample',
-  'reset',
-  'resource_manager_location',
-  'resource',
-  'restart',
-  'restore',
-  'restrict',
-  'restricted_user',
-  'resume',
-  'retaindays',
-  'retention',
-  'return',
-  'returns',
-  'revert',
-  'revoke',
-  'rewind',
-  'rewindonly',
-  'right',
-  'robust',
-  'role',
-  'rollback',
-  'rollup',
-  'root',
-  'round_robin',
-  'route',
-  'row_terminator',
-  'row',
-  'rowcount',
-  'rowdump',
-  'rowguidcol',
-  'rowlock',
-  'rows_per_batch',
-  'rows',
-  'rowsets_only',
-  'rowterminator',
-  'rowversion',
-  'rsa_1024',
-  'rsa_2048',
-  'rsa_3072',
-  'rsa_4096',
-  'rsa_512',
-  'rule',
-  'safe',
-  'safety',
-  'sample',
-  'save',
-  'schema',
-  'schemabinding',
-  'scoped',
-  'scroll_locks',
-  'scroll',
-  'sddl',
-  'secexpr',
-  'secondary_only',
-  'secondary_role',
-  'secondary',
-  'secret',
-  'security',
-  'securityaudit',
-  'select',
-  'selective',
-  'self',
-  'semantickeyphrasetable',
-  'semanticsimilaritydetailstable',
-  'semanticsimilaritytable',
-  'send',
-  'sent',
-  'sequence',
-  'serde_method',
-  'serializable',
-  'server',
-  'service_broker',
-  'service_name',
-  'service_objective',
-  'service',
-  'session_timeout',
-  'session_user',
-  'session',
-  'sessions',
-  'set',
-  'seterror',
-  'setopts',
-  'sets',
-  'setuser',
-  'shard_map_manager',
-  'shard_map_name',
-  'sharded',
-  'shared_memory',
-  'show_statistics',
-  'showplan_all',
-  'showplan_text',
-  'showplan_xml_with_recompile',
-  'showplan_xml',
-  'shrinkdb',
-  'shutdown',
-  'sid',
-  'signature',
-  'simple',
-  'single_blob',
-  'single_clob',
-  'single_nclob',
-  'single_user',
-  'singleton',
-  'site',
-  'size_based_cleanup_mode',
-  'skip',
-  'smalldatetime',
-  'smallint',
-  'smallmoney',
-  'snapshot_import',
-  'snapshot',
-  'snapshotrestorephase',
-  'soap',
-  'softnuma',
-  'some',
-  'sort_in_tempdb',
-  'sorted_data_reorg',
-  'sorted_data',
-  'source',
-  'spatial',
-  'sql_bigint',
-  'sql_binary',
-  'sql_bit',
-  'sql_char',
-  'sql_date',
-  'sql_decimal',
-  'sql_double',
-  'sql_float',
-  'sql_guid',
-  'sql_handle',
-  'sql_longvarbinary',
-  'sql_longvarchar',
-  'sql_numeric',
-  'sql_real',
-  'sql_smallint',
-  'sql_time',
-  'sql_timestamp',
-  'sql_tinyint',
-  'sql_tsi_day',
-  'sql_tsi_frac_second',
-  'sql_tsi_hour',
-  'sql_tsi_minute',
-  'sql_tsi_month',
-  'sql_tsi_quarter',
-  'sql_tsi_second',
-  'sql_tsi_week',
-  'sql_tsi_year',
-  'sql_type_date',
-  'sql_type_time',
-  'sql_type_timestamp',
-  'sql_varbinary',
-  'sql_varchar',
-  'sql_variant',
-  'sql_wchar',
-  'sql_wlongvarchar',
-  'sql',
-  'ssl_port',
-  'ssl',
-  'standard',
-  'standby',
-  'start_date',
-  'start',
-  'started',
-  'stat_header',
-  'state',
-  'statement',
-  'static',
-  'statistics_incremental',
-  'statistics_norecompute',
-  'statistics_only',
-  'statistics',
-  'statman',
-  'stats_stream',
-  'status',
-  'stop_on_error',
-  'stop',
-  'stopat',
-  'stopatmark',
-  'stopbeforemark',
-  'stoplist',
-  'stopped',
-  'string_delimiter',
-  'subject',
-  'supplemental_logging',
-  'supported',
-  'suspend',
-  'symmetric',
-  'synchronous_commit',
-  'synonym',
-  'sysname',
-  'system_time',
-  'system_user',
-  'system_versioning',
-  'system',
-  'table',
-  'tableresults',
-  'tablesample',
-  'tablock',
-  'tablockx',
-  'take',
-  'tape',
-  'target_index',
-  'target_partition',
-  'target',
-  'tcp',
-  'temporal_history_retention',
-  'text',
-  'textimage_on',
-  'textsize',
-  'then',
-  'thesaurus',
-  'throw',
-  'time',
-  'timeout',
-  'timestamp',
-  'tinyint',
-  'to',
-  'top',
-  'torn_page_detection',
-  'track_columns_updated',
-  'tran',
-  'transaction',
-  'transfer',
-  'trigger',
-  'triple_des_3key',
-  'triple_des',
-  'truncate',
-  'trustworthy',
-  'try_convert',
-  'try',
-  'tsequal',
-  'tsql',
-  'type_desc',
-  'type_warning',
-  'type',
-  'tzoffset',
-  'uid',
-  'unbounded',
-  'uncommitted',
-  'union',
-  'unique',
-  'uniqueidentifier',
-  'unlimited',
-  'unload',
-  'unlock',
-  'unpivot',
-  'unsafe',
-  'update',
-  'updatetext',
-  'updlock',
-  'url',
-  'use_type_default',
-  'use',
-  'useplan',
-  'user',
-  'useroptions',
-  'using',
-  'utcdatetime',
-  'valid_xml',
-  'validation',
-  'value',
-  'values',
-  'varbinary',
-  'varchar',
-  'varying',
-  'verbose',
-  'verifyonly',
-  'version',
-  'view_metadata',
-  'view',
-  'virtual_device',
-  'visiblity',
-  'waitfor',
-  'webmethod',
-  'weekday',
-  'weight',
-  'well_formed_xml',
-  'when',
-  'where',
-  'while',
-  'widechar_ansi',
-  'widechar',
-  'widenative',
-  'windows',
-  'with',
-  'within',
-  'without_array_wrapper',
-  'without',
-  'witness',
-  'workload',
-  'writetext',
-  'wsdl',
-  'xact_abort',
-  'xlock',
-  'xml',
-  'xmlschema',
-  'xquery',
-  'xsinil',
-  'zone'
-]
- 
-/** An array of MSSQL keywords. */
-const keywords: Record<string, undefined | true> =
-  keywords_.reduce((r, _) => ({ ...r, [_]: true }), {})
- 
-export default keywords
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/like.ts.html b/coverage/lcov-report/src/like.ts.html deleted file mode 100644 index f9b224e..0000000 --- a/coverage/lcov-report/src/like.ts.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - Code coverage report for src/like.ts - - - - - - - - - -
-
-

All files / src like.ts

-
- -
- 91.66% - Statements - 11/12 -
- - -
- 50% - Branches - 2/4 -
- - -
- 100% - Functions - 2/2 -
- - -
- 90.9% - Lines - 10/11 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -2622x -22x -22x -22x -22x -  -  -  -22x -1x -  -  -  -  -  -  -  -  -  -22x -1x -  -  -  -22x - 
import fallback from './fallback.js'
-import id from './identifier.js'
-import isNull from './is-null.js'
-import nstring from './nstring.js'
-import tsql from './template.js'
-import type S from './sanitised.js'
- 
-const rhsLike =
-  (rhs: unknown): S =>
-    isNull(rhs) ?
-      tsql`is null` :
-      tsql`like ${nstring(String(rhs))}`
- 
-/**
- * @returns LIKE operator.
- *
- * `undefined` is propagated.
- */
-export const like =
-  (lhs: S | string, rhs: unknown): undefined | S =>
-    typeof rhs === 'undefined' ?
-      undefined :
-      tsql`${fallback(lhs, id)} ${rhsLike(rhs)}`
- 
-export default like
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/limited-hints-identifier.ts.html b/coverage/lcov-report/src/limited-hints-identifier.ts.html deleted file mode 100644 index f7cc995..0000000 --- a/coverage/lcov-report/src/limited-hints-identifier.ts.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - Code coverage report for src/limited-hints-identifier.ts - - - - - - - - - -
-
-

All files / src limited-hints-identifier.ts

-
- -
- 100% - Statements - 8/8 -
- - -
- 100% - Branches - 4/4 -
- - -
- 100% - Functions - 1/1 -
- - -
- 100% - Lines - 7/7 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -1522x -22x -22x -22x -  -  -  -  -22x -20x -  -  -  -22x - 
import * as TableHintLimited from './table-hint-limited.js'
-import identifier from './identifier.js'
-import list from './list.js'
-import template from './template.js'
-import type S from './sanitised.js'
- 
-/** @returns identifier with optional, [limited hints](https://docs.microsoft.com/en-us/sql/t-sql/queries/hints-transact-sql-table). */
-const limitedHintsIdentifier =
-  (table: Parameters<typeof identifier>[0], hints?: TableHintLimited.t[]): S =>
-    hints && hints.length > 0 ?
-      template`${identifier(table)} with (${list(hints, TableHintLimited.sanitized)})` :
-      identifier(table)
- 
-export default limitedHintsIdentifier
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/line.ts.html b/coverage/lcov-report/src/line.ts.html deleted file mode 100644 index d60c22d..0000000 --- a/coverage/lcov-report/src/line.ts.html +++ /dev/null @@ -1,145 +0,0 @@ - - - - - - Code coverage report for src/line.ts - - - - - - - - - -
-
-

All files / src line.ts

-
- -
- 90% - Statements - 9/10 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 3/3 -
- - -
- 85.71% - Lines - 6/7 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -2122x -22x -  -  -  -  -  -  -  -  -  -  -  -  -22x -26x -26x -  -  -22x - 
import auto from './auto.js'
-import raw from './raw.js'
-import type S from './sanitised.js'
- 
-/**
- * @returns space delimited line constructed from provided elements.
- *
- * `undefined` values are filtered out.
- *
- * Empty list returns sanitized empty string.
- *
- * @see maybeLine for variant which propagates emtpy list to undefined.
- */
-export const line =
-  (...elements: unknown[]): S => {
-    const elements_ = elements.filter(_ => typeof _ !== 'undefined')
-    return raw(elements_.map(auto).map(_ => _.toString().trim()).join(' '))
-  }
- 
-export default line
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/lines.ts.html b/coverage/lcov-report/src/lines.ts.html deleted file mode 100644 index f006bca..0000000 --- a/coverage/lcov-report/src/lines.ts.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - Code coverage report for src/lines.ts - - - - - - - - - -
-
-

All files / src lines.ts

-
- -
- 88.88% - Statements - 8/9 -
- - -
- 100% - Branches - 2/2 -
- - -
- 100% - Functions - 1/1 -
- - -
- 87.5% - Lines - 7/8 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -1822x -  -  -  -  -  -  -  -22x -5x -5x -2x -  -3x -  -  -22x - 
import maybeLines from './maybe-lines.js'
-import type S from './sanitised.js'
- 
-/**
- * @returns lines joined with provided separator.
- * @throws if there are no lines on output.
- */
-export const lines =
-  <T>(inputs: readonly T[], separator = '\n'): S => {
-    const output = maybeLines(inputs, separator)
-    if (typeof output === 'undefined') {
-      throw new Error('Expected at least one line.')
-    }
-    return output
-  }
- 
-export default lines
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/list.ts.html b/coverage/lcov-report/src/list.ts.html deleted file mode 100644 index 03eda74..0000000 --- a/coverage/lcov-report/src/list.ts.html +++ /dev/null @@ -1,154 +0,0 @@ - - - - - - Code coverage report for src/list.ts - - - - - - - - - -
-
-

All files / src list.ts

-
- -
- 90.9% - Statements - 10/11 -
- - -
- 100% - Branches - 4/4 -
- - -
- 100% - Functions - 4/4 -
- - -
- 90% - Lines - 9/10 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -2422x -22x -  -  -  -  -  -  -  -  -  -  -22x -4274x -8524x -8512x -8512x -4274x -  -  -  -  -4274x - 
import auto from './auto.js'
-import raw from './raw.js'
-import type S from './sanitised.js'
- 
-/**
- * @returns comma separated list of values.
- *
- * If there are no `undefined` values, `undefined` is propagated.
- *
- * Optional element to sanitised string mapping can be provided (defaults to auto-sanitation).
- */
-export const list =
-  <T>(values: readonly T[], sanitise: (value: T) => undefined | S = auto, separator = ', '): undefined | S => {
-    const values_ = values
-      .filter(_ => typeof _ !== 'undefined')
-      .map(_ => sanitise(_)?.toString().trim())
-      .filter(_ => typeof _ !== 'undefined')
-    return values_.length > 0 ?
-      raw(values_.join(separator)) :
-      undefined
-  }
- 
-export default list
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/logical-false.ts.html b/coverage/lcov-report/src/logical-false.ts.html deleted file mode 100644 index b3451c8..0000000 --- a/coverage/lcov-report/src/logical-false.ts.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - Code coverage report for src/logical-false.ts - - - - - - - - - -
-
-

All files / src logical-false.ts

-
- -
- 80% - Statements - 4/5 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 75% - Lines - 3/4 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17  -22x -  -  -  -  -  -  -  -  -  -  -  -22x -  -22x - 
import type S from './sanitised.js'
-import raw from './raw.js'
- 
-/**
- * Simulated logical false – 0=1.
- *
- * Logical booleans can be used in condition expressions, ie. WHERE clause.
- *
- * Value booleans can be used in assignment statements, ie. UPDATE SET clause.
- *
- * @see falseValue for value boolean variant.
- */
-export const logicalFalse: S =
-  raw('0=1')
- 
-export default logicalFalse
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/logical-true.ts.html b/coverage/lcov-report/src/logical-true.ts.html deleted file mode 100644 index 4e8d106..0000000 --- a/coverage/lcov-report/src/logical-true.ts.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - Code coverage report for src/logical-true.ts - - - - - - - - - -
-
-

All files / src logical-true.ts

-
- -
- 80% - Statements - 4/5 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 75% - Lines - 3/4 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17  -22x -  -  -  -  -  -  -  -  -  -  -  -22x -  -25x - 
import type S from './sanitised.js'
-import raw from './raw.js'
- 
-/**
- * Simulated logical true – 1=1.
- *
- * Logical booleans can be used in condition expressions, ie. WHERE clause.
- *
- * Value booleans can be used in assignment statements, ie. UPDATE SET clause.
- *
- * @see trueValue for value boolean variant.
- */
-export const logicalTrue: S =
-  raw('1=1')
- 
-export default logicalTrue
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/lt.ts.html b/coverage/lcov-report/src/lt.ts.html deleted file mode 100644 index 92cedb9..0000000 --- a/coverage/lcov-report/src/lt.ts.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - Code coverage report for src/lt.ts - - - - - - - - - -
-
-

All files / src lt.ts

-
- -
- 83.33% - Statements - 5/6 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 1/1 -
- - -
- 80% - Lines - 4/5 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -1422x -  -  -  -  -  -  -  -  -22x -2x -  -22x - 
import op from './op.js'
-import type S from './sanitised.js'
- 
-/**
- * @returns lower than expression.
- *
- * `undefined` RHS is propagated.
- */
-export const lt =
-  (l: S | string, r: unknown): undefined | S =>
-    op(l, '<', r)
- 
-export default lt
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/lte.ts.html b/coverage/lcov-report/src/lte.ts.html deleted file mode 100644 index daa2bcb..0000000 --- a/coverage/lcov-report/src/lte.ts.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - Code coverage report for src/lte.ts - - - - - - - - - -
-
-

All files / src lte.ts

-
- -
- 83.33% - Statements - 5/6 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 1/1 -
- - -
- 80% - Lines - 4/5 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -1422x -  -  -  -  -  -  -  -  -22x -2x -  -22x - 
import op from './op.js'
-import type S from './sanitised.js'
- 
-/**
- * @returns lower than or equal expression.
- *
- * `undefined` RHS is propagated.
- */
-export const lte =
-  (l: S | string, r: unknown): undefined | S =>
-    op(l, '<=', r)
- 
-export default lte
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/margin-of-first-line.ts.html b/coverage/lcov-report/src/margin-of-first-line.ts.html deleted file mode 100644 index fa63d6e..0000000 --- a/coverage/lcov-report/src/margin-of-first-line.ts.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - Code coverage report for src/margin-of-first-line.ts - - - - - - - - - -
-
-

All files / src margin-of-first-line.ts

-
- -
- 100% - Statements - 8/8 -
- - -
- 100% - Branches - 3/3 -
- - -
- 100% - Functions - 1/1 -
- - -
- 100% - Lines - 7/7 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14  -  -24x -14x -14x -16x -6x -  -  -14x -  -  -24x - 
/** @returns whitespace margin (spaces/tabs) for single/first line. */
-const marginOfFirstLine =
-  (line: string): string => {
-    let i = 0
-    for (; i < line.length; i++) {
-      if (line[i] !== ' ' && line[i] !== '\t') {
-        break
-      }
-    }
-    return line.slice(0, i)
-  }
- 
-export default marginOfFirstLine
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/margin-of-last-line.ts.html b/coverage/lcov-report/src/margin-of-last-line.ts.html deleted file mode 100644 index ffd017d..0000000 --- a/coverage/lcov-report/src/margin-of-last-line.ts.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - Code coverage report for src/margin-of-last-line.ts - - - - - - - - - -
-
-

All files / src margin-of-last-line.ts

-
- -
- 100% - Statements - 5/5 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 1/1 -
- - -
- 100% - Lines - 4/4 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -823x -  -  -23x -8x -  -23x - 
import marginOfFirstLine from './margin-of-first-line.js'
- 
-const marginOfLastLine =
-  (linesString: string): string =>
-    marginOfFirstLine(linesString.substr(1 + linesString.lastIndexOf('\n')))
- 
-export default marginOfLastLine
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/maybe-line.ts.html b/coverage/lcov-report/src/maybe-line.ts.html deleted file mode 100644 index f076f95..0000000 --- a/coverage/lcov-report/src/maybe-line.ts.html +++ /dev/null @@ -1,145 +0,0 @@ - - - - - - Code coverage report for src/maybe-line.ts - - - - - - - - - -
-
-

All files / src maybe-line.ts

-
- -
- 40% - Statements - 4/10 -
- - -
- 0% - Branches - 0/2 -
- - -
- 0% - Functions - 0/3 -
- - -
- 50% - Lines - 4/8 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -2122x -22x -  -  -  -  -  -  -  -  -  -  -22x -  -  -  -  -  -  -22x - 
import auto from './auto.js'
-import raw from './raw.js'
-import type S from './sanitised.js'
- 
-/**
- * @returns space delimited line constructed from provided elements.
- *
- * `undefined` values are filtered out.
- *
- * Empty list (after filtering out `undefined`) propagates `undefined`.
- */
-export const maybeLine =
-  (...elements: unknown[]): undefined | S => {
-    const elements_ = elements.filter(_ => typeof _ !== 'undefined')
-    return elements_.length > 0 ?
-      raw(elements_.map(auto).map(_ => _.toString().trim()).join(' ')) :
-      undefined
-  }
- 
-export default maybeLine
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/maybe-lines.ts.html b/coverage/lcov-report/src/maybe-lines.ts.html deleted file mode 100644 index dae2388..0000000 --- a/coverage/lcov-report/src/maybe-lines.ts.html +++ /dev/null @@ -1,145 +0,0 @@ - - - - - - Code coverage report for src/maybe-lines.ts - - - - - - - - - -
-
-

All files / src maybe-lines.ts

-
- -
- 92.85% - Statements - 13/14 -
- - -
- 50% - Branches - 1/2 -
- - -
- 100% - Functions - 5/5 -
- - -
- 92.3% - Lines - 12/13 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -2122x -22x -  -  -  -  -22x -  -5x -10x -7x -7x -7x -5x -2x -  -3x -  -  -22x - 
import auto from './auto.js'
-import raw from './raw.js'
-import type S from './sanitised.js'
- 
-/** @returns lines joined with provided separator or undefined if there are no lines. */
-export const maybeLines =
-  <T>(inputs: readonly T[], separator = '\n'): undefined | S => {
-    const outputs =
-      inputs
-        .filter(_ => typeof _ !== 'undefined')
-        .map(_ => auto(_))
-        .filter(_ => typeof _ !== 'undefined')
-        .map(_ => _.toString().trim())
-    if (outputs.length === 0) {
-      return
-    }
-    return raw(outputs.join(separator))
-  }
- 
-export default maybeLines
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/merge-1n.ts.html b/coverage/lcov-report/src/merge-1n.ts.html deleted file mode 100644 index 3797172..0000000 --- a/coverage/lcov-report/src/merge-1n.ts.html +++ /dev/null @@ -1,220 +0,0 @@ - - - - - - Code coverage report for src/merge-1n.ts - - - - - - - - - -
-
-

All files / src merge-1n.ts

-
- -
- 88.23% - Statements - 15/17 -
- - -
- 75% - Branches - 3/4 -
- - -
- 100% - Functions - 1/1 -
- - -
- 87.5% - Lines - 14/16 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -4622x -22x -22x -22x -22x -  -  -  -  -  -  -22x -  -  -  -  -  -  -  -  -5x -5x -5x -5x -  -  -5x -1x -  -4x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -22x - 
import id from './identifier.js'
-import inlineTable from './inline-table-of-column.js'
-import limitedHintsIdentifier from './limited-hints-identifier.js'
-import row from './row.js'
-import tsql from './template.js'
-import type { TableHintLimited } from './table-hint-limited.js'
-import type S from './sanitised.js'
-import type Sid from './sanitised-identifier.js'
- 
-/** @returns MERGE DML synchronising 1-n relation. */
-export const merge1n =
-  (
-    table: Sid | string,
-    [ lcolumn, rcolumn ]: [ Sid | string, Sid | string ],
-    lid: unknown,
-    values: unknown[],
-    { hints = [ 'serializable' ] }: {
-      hints?: TableHintLimited[]
-    } = {}
-  ): S => {
-    const table_ = limitedHintsIdentifier(table, hints)
-    const lcolumn_ = id(lcolumn)
-    const rcolumn_ = id(rcolumn)
-    Iif (!Array.isArray(values)) {
-      throw new TypeError(`Expected array of values, got ${values}.`)
-    }
-    if (values.length === 0) {
-      return tsql`delete from ${table_} where ${lcolumn_} = ${lid};`
-    }
-    return tsql`
-      merge ${table_} as ${id('Target')}
-      using ${inlineTable('Source', 'id', values)}
-      on (
-        ${id([ 'Target', lcolumn ])} = ${lid} and
-        ${id([ 'Target', rcolumn ])} = ${id([ 'Source', 'id' ])}
-      )
-      when not matched by target then
-        insert ${row([ lcolumn_, rcolumn_ ])}
-        values ${row([ lid, id('Source.id') ])}
-      when not matched by source and ${id([ 'Target', lcolumn ])} = ${lid} then
-        delete;
-    `
-  }
- 
-export default merge1n
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/modify-jsons.ts.html b/coverage/lcov-report/src/modify-jsons.ts.html deleted file mode 100644 index 1daa813..0000000 --- a/coverage/lcov-report/src/modify-jsons.ts.html +++ /dev/null @@ -1,271 +0,0 @@ - - - - - - Code coverage report for src/modify-jsons.ts - - - - - - - - - -
-
-

All files / src modify-jsons.ts

-
- -
- 86.48% - Statements - 32/37 -
- - -
- 0% - Branches - 0/1 -
- - -
- 100% - Functions - 10/10 -
- - -
- 87.09% - Lines - 27/31 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -6322x -22x -22x -22x -22x -22x -  -  -22x -22x -  -  -  -  -  -22x -7x -  -  -22x -6x -  -  -22x -2x -  -  -  -5x -  -  -  -22x -  -  -  -  -2x -  -  -  -2x -2x -4x -4x -2x -4x -2x -  -  -2x -  -2x -  -  -  -  -  -  -  -  -22x - 
import and from './and.js'
-import eq from './eq.js'
-import id from './identifier.js'
-import inlineTableOfObjects from './inline-table-of-objects.js'
-import keysOfObjects from './keys-of-objects.js'
-import tsql from './template.js'
-import type S from './sanitised.js'
-import type Sid from './sanitised-identifier.js'
-import list from './list.js'
-import assign from './assign.js'
- 
-export type Where = Record<string, unknown>
-export type Update = Record<string, Record<string, unknown>>
- 
-export const sourcePrefixed =
-  (_: Sid | string): Sid =>
-    id([ 'Source', _ ])
- 
-export const targetPrefixed =
-  (_: Sid | string): Sid =>
-    id([ 'Target', _ ])
- 
-export const modify =
-  (column: string, jsonKeys: string[]): S =>
-    assign(
-      targetPrefixed(column),
- 
-      // eslint-disable-next-line sonarjs/no-nested-template-literals
-      jsonKeys.reduce((_, jsonKey) => tsql`json_modify(${_}, ${`$.${jsonKey}`}, json_query(${sourcePrefixed(column)}, ${`$.${jsonKey}`}))`, targetPrefixed(column) as S)
-    ) as S
- 
-/** @returns MERGE DML for json columns, multiple rows via JSON_MODIFY and JSON_QUERY. */
-export const modifyJsons = (
-  table: Sid | string,
-  entries: readonly Record<string, unknown>[]
-): S => {
- 
-  Iif (entries.length === 0) {
-    return tsql`select 0;`
-  }
- 
-  const table_ = id(table)
-  const objectKeys = keysOfObjects(entries)
-  const onKeys = objectKeys.filter(_ => !_.endsWith('Json'))
-  const jsonColumns = objectKeys.filter(_ => _.endsWith('Json'))
-  const update_ = list(jsonColumns.map(jsonColumn => {
-    const jsonKeys = keysOfObjects(entries.map(_ => _[jsonColumn] as Record<string, unknown>))
-    return modify(jsonColumn, jsonKeys)
-  }))
- 
-  const on_ = and(...onKeys.map(_ => eq(sourcePrefixed(_), targetPrefixed(_))))
- 
-  return tsql`
-    merge ${table_} as ${id('Target')}
-    using ${inlineTableOfObjects('Source', entries, objectKeys)}
-    on ${on_}
-    when matched then
-      update set ${update_};
-  `
-}
- 
-export default modifyJsons
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/ne.ts.html b/coverage/lcov-report/src/ne.ts.html deleted file mode 100644 index ea2ea04..0000000 --- a/coverage/lcov-report/src/ne.ts.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - Code coverage report for src/ne.ts - - - - - - - - - -
-
-

All files / src ne.ts

-
- -
- 83.33% - Statements - 10/12 -
- - -
- 33.33% - Branches - 1/3 -
- - -
- 100% - Functions - 1/1 -
- - -
- 81.81% - Lines - 9/11 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -1922x -22x -22x -  -22x -  -  -22x -1x -  -  -1x -1x -  -  -  -  -22x - 
import fallback from './fallback.js'
-import id from './identifier.js'
-import isNull from './is-null.js'
-import type S from './sanitised.js'
-import tsql from './template.js'
- 
-export const ne =
-  (lhs: S | string, rhs: unknown): undefined | S => {
-    Iif (typeof rhs === 'undefined') {
-      return undefined
-    }
-    const l_ = fallback(lhs, id)
-    return isNull(rhs) ?
-      tsql`${l_} is not null` :
-      tsql`${l_} <> ${rhs}`
-  }
- 
-export default ne
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/ng.ts.html b/coverage/lcov-report/src/ng.ts.html deleted file mode 100644 index 68cc593..0000000 --- a/coverage/lcov-report/src/ng.ts.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - Code coverage report for src/ng.ts - - - - - - - - - -
-
-

All files / src ng.ts

-
- -
- 83.33% - Statements - 5/6 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 1/1 -
- - -
- 80% - Lines - 4/5 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -922x -  -  -  -22x -1x -  -22x - 
import op from './op.js'
-import type S from './sanitised.js'
- 
-export const ng =
-  (lhs: S | string, rhs: unknown): undefined | S =>
-    op(lhs, '!>', rhs)
- 
-export default ng
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/nl.ts.html b/coverage/lcov-report/src/nl.ts.html deleted file mode 100644 index 27bdbee..0000000 --- a/coverage/lcov-report/src/nl.ts.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - Code coverage report for src/nl.ts - - - - - - - - - -
-
-

All files / src nl.ts

-
- -
- 83.33% - Statements - 5/6 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 1/1 -
- - -
- 80% - Lines - 4/5 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -922x -  -  -  -22x -1x -  -22x - 
import op from './op.js'
-import type S from './sanitised.js'
- 
-export const nl =
-  (lhs: S | string, rhs: unknown): undefined | S =>
-    op(lhs, '!<', rhs)
- 
-export default nl
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/not-between.ts.html b/coverage/lcov-report/src/not-between.ts.html deleted file mode 100644 index 329e2aa..0000000 --- a/coverage/lcov-report/src/not-between.ts.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - Code coverage report for src/not-between.ts - - - - - - - - - -
-
-

All files / src not-between.ts

-
- -
- 87.5% - Statements - 7/8 -
- - -
- 75% - Branches - 3/4 -
- - -
- 100% - Functions - 1/1 -
- - -
- 85.71% - Lines - 6/7 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -1322x -22x -22x -  -  -  -22x -1x -  -  -  -22x - 
import fallback from './fallback.js'
-import id from './identifier.js'
-import tsql from './template.js'
-import type S from './sanitised.js'
- 
-export const notBetween =
-  <T>(l: string | S, r: undefined | null | [beginExpression: T, endExpression: T]): undefined | S =>
-    typeof l === 'undefined' || r == null ?
-      undefined :
-      tsql`${fallback(l, id)} not between ${r[0]} and ${r[1]}`
- 
-export default notBetween
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/not-distinct.ts.html b/coverage/lcov-report/src/not-distinct.ts.html deleted file mode 100644 index f9188d4..0000000 --- a/coverage/lcov-report/src/not-distinct.ts.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - Code coverage report for src/not-distinct.ts - - - - - - - - - -
-
-

All files / src not-distinct.ts

-
- -
- 54.54% - Statements - 6/11 -
- - -
- 0% - Branches - 0/3 -
- - -
- 0% - Functions - 0/1 -
- - -
- 50% - Lines - 5/10 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -1622x -22x -22x -  -  -  -22x -  -  -  -  -  -  -  -44x - 
import fallback from './fallback.js'
-import id from './identifier.js'
-import template from './template.js'
-import type S from './sanitised.js'
- 
-export const notDistinct =
-  (lhs: S | string, rhs: unknown): undefined | S => {
-    Iif (typeof lhs === 'undefined' || typeof rhs === 'undefined') {
-      return undefined
-    }
-    const lhs_ = fallback(lhs, id)
-    return template`(not (${lhs_} <> ${rhs} or ${lhs_} is null or ${rhs} is null) or (${lhs_} is null and ${rhs} is null))`
-  }
- 
-export default notDistinct
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/not-in.ts.html b/coverage/lcov-report/src/not-in.ts.html deleted file mode 100644 index 9b6bd82..0000000 --- a/coverage/lcov-report/src/not-in.ts.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - Code coverage report for src/not-in.ts - - - - - - - - - -
-
-

All files / src not-in.ts

-
- -
- 90% - Statements - 9/10 -
- - -
- 71.42% - Branches - 5/7 -
- - -
- 100% - Functions - 1/1 -
- - -
- 88.88% - Lines - 8/9 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -1722x -22x -22x -22x -22x -  -  -  -22x -1x -  -  -  -  -  -44x - 
import fallback from './fallback.js'
-import id from './identifier.js'
-import isNull from './is-null.js'
-import row from './row.js'
-import tsql from './template.js'
-import type S from './sanitised.js'
- 
-export const notIn =
-  (l: S | string, r: undefined | null | unknown[]): undefined | S =>
-    typeof r === 'undefined' ?
-      undefined :
-      r && !isNull(r) && (r.length > 0) ?
-        tsql`${fallback(l, id)} not in ${row(r)}` :
-        tsql`${fallback(l, id)} is not null`
- 
-export default notIn
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/not.ts.html b/coverage/lcov-report/src/not.ts.html deleted file mode 100644 index 9075e37..0000000 --- a/coverage/lcov-report/src/not.ts.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - Code coverage report for src/not.ts - - - - - - - - - -
-
-

All files / src not.ts

-
- -
- 50% - Statements - 2/4 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 66.66% - Lines - 2/3 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -622x -  -  -  -22x - 
import { not } from './where.js'
- 
-export { not }
- 
-export default not
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/now.ts.html b/coverage/lcov-report/src/now.ts.html deleted file mode 100644 index 90898ef..0000000 --- a/coverage/lcov-report/src/now.ts.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - Code coverage report for src/now.ts - - - - - - - - - -
-
-

All files / src now.ts

-
- -
- 60% - Statements - 3/5 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 75% - Lines - 3/4 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -722x -  -  -22x -  -22x - 
import raw from './raw.js'
- 
-export const now =
-  raw('sysdatetimeoffset()')
- 
-export default now
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/nstring.ts.html b/coverage/lcov-report/src/nstring.ts.html deleted file mode 100644 index e5173a4..0000000 --- a/coverage/lcov-report/src/nstring.ts.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - Code coverage report for src/nstring.ts - - - - - - - - - -
-
-

All files / src nstring.ts

-
- -
- 85.71% - Statements - 6/7 -
- - -
- 50% - Branches - 2/4 -
- - -
- 100% - Functions - 1/1 -
- - -
- 83.33% - Lines - 5/6 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -1422x -22x -  -  -  -22x -4264x -  -  -  -  -  -4264x - 
import quotedNstring from './quoted-nstring.js'
-import S from './sanitised.js'
- 
-// TODO: Add SanitisedValue type?
-export const nstring =
-  (value: undefined | null | string | S): S =>
-    value instanceof S ?
-      value :
-      value == null ?
-        new S('null') :
-        new S(quotedNstring(String(value)))
- 
-export default nstring
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/null.ts.html b/coverage/lcov-report/src/null.ts.html deleted file mode 100644 index d620b67..0000000 --- a/coverage/lcov-report/src/null.ts.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - Code coverage report for src/null.ts - - - - - - - - - -
-
-

All files / src null.ts

-
- -
- 80% - Statements - 4/5 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 75% - Lines - 3/4 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -722x -  -  -22x -  -22x - 
import raw from './raw.js'
- 
-export const null_ =
-  raw('null')
- 
-export default null_
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/number.ts.html b/coverage/lcov-report/src/number.ts.html deleted file mode 100644 index 84bb8f2..0000000 --- a/coverage/lcov-report/src/number.ts.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - Code coverage report for src/number.ts - - - - - - - - - -
-
-

All files / src number.ts

-
- -
- 75% - Statements - 6/8 -
- - -
- 0% - Branches - 0/1 -
- - -
- 100% - Functions - 1/1 -
- - -
- 71.42% - Lines - 5/7 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -1322x -  -  -  -22x -75x -  -  -75x -  -  -75x - 
import raw from './raw.js'
-import type S from './sanitised.js'
- 
-export const number =
-  (x: number): S => {
-    Iif (!Number.isFinite(x)) {
-      throw new TypeError(`Expected finite number, got ${x}.`)
-    }
-    return raw(x.toString(10))
-  }
- 
-export default number
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/object-id.ts.html b/coverage/lcov-report/src/object-id.ts.html deleted file mode 100644 index 2ebfc9b..0000000 --- a/coverage/lcov-report/src/object-id.ts.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - Code coverage report for src/object-id.ts - - - - - - - - - -
-
-

All files / src object-id.ts

-
- -
- 50% - Statements - 3/6 -
- - -
- 100% - Branches - 0/0 -
- - -
- 0% - Functions - 0/1 -
- - -
- 60% - Lines - 3/5 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9  -22x -  -  -22x -  -  -22x - 
import type S from './sanitised.js'
-import tsql from './template.js'
- 
-export const objectId =
-  (name: string): S =>
-    tsql`object_id(${name})`
- 
-export default objectId
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/op.ts.html b/coverage/lcov-report/src/op.ts.html deleted file mode 100644 index 24188f4..0000000 --- a/coverage/lcov-report/src/op.ts.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - Code coverage report for src/op.ts - - - - - - - - - -
-
-

All files / src op.ts

-
- -
- 88.88% - Statements - 8/9 -
- - -
- 50% - Branches - 1/2 -
- - -
- 100% - Functions - 1/1 -
- - -
- 87.5% - Lines - 7/8 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -1822x -22x -22x -  -22x -  -  -  -  -  -  -22x -12x -  -  -  -22x - 
import fallback from './fallback.js'
-import id from './identifier.js'
-import raw from './raw.js'
-import type S from './sanitised.js'
-import tsql from './template.js'
- 
-/**
- * @internal
- * @param op_ can leak unsanitised string if misused, hence internal.
- */
-export const op =
-  (l: S | string, op_: S | string, r: unknown): undefined | S =>
-    typeof r === 'undefined' ?
-      undefined :
-      tsql`${fallback(l, id)} ${fallback(op_, raw)} ${r}`
- 
-export default op
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/or.ts.html b/coverage/lcov-report/src/or.ts.html deleted file mode 100644 index 053150a..0000000 --- a/coverage/lcov-report/src/or.ts.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - Code coverage report for src/or.ts - - - - - - - - - -
-
-

All files / src or.ts

-
- -
- 75% - Statements - 3/4 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 66.66% - Lines - 2/3 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -622x -  -  -  -22x - 
import { or } from './where.js'
- 
-export { or }
- 
-export default or
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/order-by.ts.html b/coverage/lcov-report/src/order-by.ts.html deleted file mode 100644 index c90092b..0000000 --- a/coverage/lcov-report/src/order-by.ts.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - Code coverage report for src/order-by.ts - - - - - - - - - -
-
-

All files / src order-by.ts

-
- -
- 100% - Statements - 8/8 -
- - -
- 100% - Branches - 2/2 -
- - -
- 100% - Functions - 2/2 -
- - -
- 100% - Lines - 6/6 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -1022x -22x -22x -  -  -22x -4x -  -22x - 
import id, { type Identifier } from './identifier.js'
-import list from './list.js'
-import raw from './raw.js'
- 
-const orderBy =
-  (terms: [identifier: undefined | Identifier, direction: 'asc' | 'desc'][]) =>
-    list(terms.map(_ => _?.[0] != null ? raw(`${id(_[0])} ${_[1]}`) : undefined))
- 
-export default orderBy
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/pick.ts.html b/coverage/lcov-report/src/pick.ts.html deleted file mode 100644 index 5ab3419..0000000 --- a/coverage/lcov-report/src/pick.ts.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - Code coverage report for src/pick.ts - - - - - - - - - -
-
-

All files / src pick.ts

-
- -
- 25% - Statements - 2/8 -
- - -
- 0% - Branches - 0/2 -
- - -
- 0% - Functions - 0/1 -
- - -
- 28.57% - Lines - 2/7 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15  -  -  -22x -  -  -  -  -  -  -  -  -  -22x - 
 
-/** @returns an object with picked keys; `null` is used when value is not defined. */
-export const pick =
-  (object: Record<string, unknown>, keys: string[]): Record<string, unknown> => {
-    const result: Record<string, unknown> = {}
-    for (const key of keys) {
-      result[key] = typeof object[key] === 'undefined' ?
-        null :
-        object[key]
-    }
-    return result
-  }
- 
-export default pick
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/quoted-nstring.ts.html b/coverage/lcov-report/src/quoted-nstring.ts.html deleted file mode 100644 index a3b9b02..0000000 --- a/coverage/lcov-report/src/quoted-nstring.ts.html +++ /dev/null @@ -1,184 +0,0 @@ - - - - - - Code coverage report for src/quoted-nstring.ts - - - - - - - - - -
-
-

All files / src quoted-nstring.ts

-
- -
- 88.88% - Statements - 16/18 -
- - -
- 60% - Branches - 3/5 -
- - -
- 100% - Functions - 4/4 -
- - -
- 88.23% - Lines - 15/17 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34  -  -22x -  -  -22x -4267x -  -  -22x -4265x -4263x -  -2x -  -  -  -22x -4264x -4263x -  -1x -  -  -  -22x -4264x -  -  -4264x -  -  -4264x - 
/* eslint-disable @typescript-eslint/ban-types */
- 
-import isString from './is-string.js'
- 
-const quoted =
-  (value: string | String): string =>
-    'N\'' + (value.indexOf('\'') !== -1 ? value.replace(/'/g, '\'\'') : value) + '\''
- 
-const quotedLf =
-  (value: string | String): string => {
-    if (value.indexOf('\n') === -1) {
-      return quoted(value)
-    }
-    return 'concat_ws(nchar(10), ' + value.split('\n').map(quoted).join(', ') + ')'
-  }
- 
-const quotedCrLf =
-  (value: string | String): string => {
-    if (value.indexOf('\r\n') === -1) {
-      return quotedLf(value)
-    }
-    return 'concat_ws(nchar(13) + nchar(10), ' + value.split('\r\n').map(quotedLf).join(', ') + ')'
-  }
- 
-export const quotedNstring =
-  (value: string | String): string => {
-    Iif (!isString(value)) {
-      throw new TypeError(`Expected string while trying to quote, got ${value}.`)
-    }
-    return quotedCrLf(value)
-  }
- 
-export default quotedNstring
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/random-identifier.ts.html b/coverage/lcov-report/src/random-identifier.ts.html deleted file mode 100644 index d31f397..0000000 --- a/coverage/lcov-report/src/random-identifier.ts.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - Code coverage report for src/random-identifier.ts - - - - - - - - - -
-
-

All files / src random-identifier.ts

-
- -
- 100% - Statements - 10/10 -
- - -
- 0% - Branches - 0/2 -
- - -
- 100% - Functions - 3/3 -
- - -
- 100% - Lines - 8/8 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -1722x -  -  -22x -  -  -22x -32x -32x -  -  -  -22x -32x -  -22x - 
import identifier from './identifier.js'
-import type Sid from './sanitised-identifier.js'
- 
-const alphabet = 'abcdefghijklmnopqrstuvwxyABCDEFGHIJKLMNOPQRSTUVWXYZ'
- 
-const randomLetter =
-  (): string => {
-    const index = Math.min(alphabet.length - 1, Math.floor(Math.random() * alphabet.length))
-    return alphabet[index]
-  }
- 
-const randomIdentifier =
-  (prefix = '', length = 32): Sid =>
-    identifier([ prefix, Array.from(Array(length), () => randomLetter()).join('') ].join(''))
- 
-export default randomIdentifier
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/raw.ts.html b/coverage/lcov-report/src/raw.ts.html deleted file mode 100644 index 272266a..0000000 --- a/coverage/lcov-report/src/raw.ts.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - Code coverage report for src/raw.ts - - - - - - - - - -
-
-

All files / src raw.ts

-
- -
- 83.33% - Statements - 5/6 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 1/1 -
- - -
- 80% - Lines - 4/5 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -922x -  -  -  -22x -9282x -  -9282x - 
import S from './sanitised.js'
- 
-/** @returns force `x` string to be sanitised; no sanitation of any kind is performed. */
-export const raw =
-  (x: string): S =>
-    new S(x)
- 
-export default raw
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/replace-objects.ts.html b/coverage/lcov-report/src/replace-objects.ts.html deleted file mode 100644 index 2171c26..0000000 --- a/coverage/lcov-report/src/replace-objects.ts.html +++ /dev/null @@ -1,271 +0,0 @@ - - - - - - Code coverage report for src/replace-objects.ts - - - - - - - - - -
-
-

All files / src replace-objects.ts

-
- -
- 45.16% - Statements - 14/31 -
- - -
- 0% - Branches - 0/9 -
- - -
- 0% - Functions - 0/5 -
- - -
- 53.84% - Lines - 14/26 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -6322x -22x -22x -22x -22x -22x -22x -22x -22x -22x -  -  -  -  -22x -22x -  -  -  -22x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -22x - 
import and from './and.js'
-import assign from './assign.js'
-import eq from './eq.js'
-import id from './identifier.js'
-import inlineTableOfObjects from './inline-table-of-objects.js'
-import keysOfObjects from './keys-of-objects.js'
-import limitedHintsIdentifier from './limited-hints-identifier.js'
-import list from './list.js'
-import row from './row.js'
-import tsql from './template.js'
-import type { TableHintLimited } from './table-hint-limited.js'
-import type S from './sanitised.js'
-import type Sid from './sanitised-identifier.js'
- 
-const sourcePrefixed = (_: string): Sid => id([ 'Source', _ ])
-const targetPrefixed = (_: string): Sid => id([ 'Target', _ ])
- 
-/** @returns merge dml that replaces target table with inlined source table. */
-export const replaceObjects =
-  (
-    table: string | Sid,
-    onKeys: string[],
-    objects: readonly Record<string, unknown>[],
-    maybeObjectKeys?: string[],
-    maybeUpdateKeys?: string[],
-    maybeInsertKeys?: string[],
-    { hints }: {
-      hints?: TableHintLimited[]
-    } = {}
-  ): S => {
- 
-    Iif (!Array.isArray(objects)) {
-      throw new TypeError(`Expected array of values, got ${objects}.`)
-    }
- 
-    const table_ = limitedHintsIdentifier(table, hints)
- 
-    Iif (objects.length === 0) {
-      return tsql`delete from ${table_};`
-    }
- 
-    const objectKeys = maybeObjectKeys || keysOfObjects(objects)
-    const updateKeys = maybeUpdateKeys || objectKeys
-    const insertKeys = maybeInsertKeys || objectKeys
-    const update_ = list(updateKeys.map(_ => assign(_, sourcePrefixed(_))))
-    const on_ = and(...onKeys.map(_ => eq(sourcePrefixed(_), targetPrefixed(_))))
- 
-    return tsql`
-      merge ${table_} as Target
-      using ${inlineTableOfObjects('Source', objects, objectKeys)}
-      on ${on_}
-      when not matched by source then
-        delete
-      when matched then
-        update set ${update_}
-      when not matched by target then
-        insert ${row(insertKeys.map(id))}
-        values ${row(insertKeys.map(sourcePrefixed))};
-    `
-  }
- 
-export default replaceObjects
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/row.ts.html b/coverage/lcov-report/src/row.ts.html deleted file mode 100644 index 1241a18..0000000 --- a/coverage/lcov-report/src/row.ts.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - Code coverage report for src/row.ts - - - - - - - - - -
-
-

All files / src row.ts

-
- -
- 87.5% - Statements - 7/8 -
- - -
- 100% - Branches - 1/1 -
- - -
- 100% - Functions - 1/1 -
- - -
- 85.71% - Lines - 6/7 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -1222x -22x -22x -  -  -  -  -22x -4191x -  -4191x - 
import auto from './auto.js'
-import list from './list.js'
-import raw from './raw.js'
-import type S from './sanitised.js'
- 
-/** @returns sanitised */
-export const row =
-  <T>(xs: T[], f: (_: T) => S = auto): S =>
-    raw('(' + String(list(xs, f)) + ')')
- 
-export default row
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/rowset.ts.html b/coverage/lcov-report/src/rowset.ts.html deleted file mode 100644 index ddc72e4..0000000 --- a/coverage/lcov-report/src/rowset.ts.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - Code coverage report for src/rowset.ts - - - - - - - - - -
-
-

All files / src rowset.ts

-
- -
- 37.5% - Statements - 3/8 -
- - -
- 0% - Branches - 0/1 -
- - -
- 0% - Functions - 0/1 -
- - -
- 42.85% - Lines - 3/7 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -1322x -  -  -  -22x -  -  -  -  -  -  -22x - 
import row from './row.js'
-import type S from './sanitised.js'
- 
-export const rowset =
-  <T>(values: T[][]): S => {
-    Iif (!Array.isArray(values)) {
-      throw new TypeError(`Expected array, got ${values}.`)
-    }
-    return row(values, row)
-  }
- 
-export default rowset
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/sanitised-identifier.ts.html b/coverage/lcov-report/src/sanitised-identifier.ts.html deleted file mode 100644 index 636b8b6..0000000 --- a/coverage/lcov-report/src/sanitised-identifier.ts.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - Code coverage report for src/sanitised-identifier.ts - - - - - - - - - -
-
-

All files / src sanitised-identifier.ts

-
- -
- 80% - Statements - 4/5 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 75% - Lines - 3/4 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -1122x -  -22x -  -  -  -  -  -  -970x - 
import S from './sanitised.js'
- 
-const tag = Symbol()
- 
-export class SanitisedIdentifier extends S {
-  // @ts-expect-error This tag ensures the class is not forgeable
-  private readonly [tag]: 'SanitisedIdentifier'
-}
- 
-export default SanitisedIdentifier
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/sanitised.ts.html b/coverage/lcov-report/src/sanitised.ts.html deleted file mode 100644 index 82313c6..0000000 --- a/coverage/lcov-report/src/sanitised.ts.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - Code coverage report for src/sanitised.ts - - - - - - - - - -
-
-

All files / src sanitised.ts

-
- -
- 75% - Statements - 3/4 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 66.66% - Lines - 2/3 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -922x -  -  -  -  -  -  -31625x - 
const tag = Symbol()
- 
-export class Sanitised extends String {
-  // @ts-expect-error This tag ensures the class is not forgeable
-  private readonly [tag]: 'Sanitised'
-}
- 
-export default Sanitised
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/select.ts.html b/coverage/lcov-report/src/select.ts.html deleted file mode 100644 index 99793bb..0000000 --- a/coverage/lcov-report/src/select.ts.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - Code coverage report for src/select.ts - - - - - - - - - -
-
-

All files / src select.ts

-
- -
- 45% - Statements - 9/20 -
- - -
- 0% - Branches - 0/8 -
- - -
- 0% - Functions - 0/4 -
- - -
- 52.94% - Lines - 9/17 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -2822x -22x -22x -22x -22x -  -22x -  -  -22x -  -  -  -22x -  -  -  -  -  -  -  -  -  -  -  -  -22x - 
import fallback from './fallback.js'
-import id from './identifier.js'
-import line from './line.js'
-import list from './list.js'
-import S from './sanitised.js'
-import type Sid from './sanitised-identifier.js'
-import tsql from './template.js'
- 
-export const ids =
-  (xs: (S | string)[]): S[] =>
-    xs.map(_ => _ instanceof S ? _ : id(_))
- 
-export const select =
-  (what: S | (S | string)[], { from, where }: { from?: Sid | string, where?: unknown } = {}): S => {
-    const what_ = fallback(what, _ => list(ids(_)))
-    Iif (typeof what_ === 'undefined') {
-      throw new Error('Empty projection.')
-    }
-    const from_ = from != null ? id(from) : undefined
-    return line(
-      tsql`select ${what_}`,
-      tsql`from ${from_}`,
-      where != null ? tsql`where ${where}` : undefined
-    )
-  }
- 
-export default select
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/star.ts.html b/coverage/lcov-report/src/star.ts.html deleted file mode 100644 index 45a4034..0000000 --- a/coverage/lcov-report/src/star.ts.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - Code coverage report for src/star.ts - - - - - - - - - -
-
-

All files / src star.ts

-
- -
- 57.14% - Statements - 4/7 -
- - -
- 0% - Branches - 0/2 -
- - -
- 0% - Functions - 0/1 -
- - -
- 66.66% - Lines - 4/6 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -1322x -  -  -22x -  -  -22x -  -  -  -  -22x - 
import id from './identifier.js'
-import type S from './sanitised.js'
-import type Sid from './sanitised-identifier.js'
-import tsql from './template.js'
- 
-export const star =
-  (table?: Sid | string): S =>
-    table != null ?
-      tsql`${id(table)}.*` :
-      tsql`*`
- 
-export default star
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/table-hint-limited.ts.html b/coverage/lcov-report/src/table-hint-limited.ts.html deleted file mode 100644 index 311cb3e..0000000 --- a/coverage/lcov-report/src/table-hint-limited.ts.html +++ /dev/null @@ -1,250 +0,0 @@ - - - - - - Code coverage report for src/table-hint-limited.ts - - - - - - - - - -
-
-

All files / src table-hint-limited.ts

-
- -
- 75% - Statements - 6/8 -
- - -
- 0% - Branches - 0/1 -
- - -
- 100% - Functions - 1/1 -
- - -
- 85.71% - Lines - 6/7 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -5622x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -22x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -18x -22x -18x -  -  -18x -  - 
import raw from './raw.js'
-import type S from './sanitised.js'
- 
-export type TableHintLimited =
-  | 'keepidentity'
-  | 'keepdefaults'
-  | 'holdlock'
-  | 'ignore_constraints'
-  | 'ignore_triggers'
-  | 'nolock'
-  | 'nowait'
-  | 'paglock'
-  | 'readcommitted'
-  | 'readcommittedlock'
-  | 'readpast'
-  | 'repeatableread'
-  | 'rowlock'
-  | 'serializable'
-  | 'snapshot'
-  | 'tablock'
-  | 'tablockx'
-  | 'updlock'
-  | 'xlock'
- 
-export type t = TableHintLimited
- 
-export const values = new Set<TableHintLimited>([
-  'keepidentity',
-  'keepdefaults',
-  'holdlock',
-  'ignore_constraints',
-  'ignore_triggers',
-  'nolock',
-  'nowait',
-  'paglock',
-  'readcommitted',
-  'readcommittedlock',
-  'readpast',
-  'repeatableread',
-  'rowlock',
-  'serializable',
-  'snapshot',
-  'tablock',
-  'tablockx',
-  'updlock',
-  'xlock'
-])
- 
-export const sanitized =
-  (value: string): S => {
-    Iif (!(values as Set<string>).has(value)) {
-      throw new TypeError(`Expected limited table hint, got ${value}.`)
-    }
-    return raw(value)
-  }
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/template.ts.html b/coverage/lcov-report/src/template.ts.html deleted file mode 100644 index 8b2d624..0000000 --- a/coverage/lcov-report/src/template.ts.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - Code coverage report for src/template.ts - - - - - - - - - -
-
-

All files / src template.ts

-
- -
- 88.88% - Statements - 8/9 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 1/1 -
- - -
- 87.5% - Lines - 7/8 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -1222x -22x -22x -22x -  -  -  -22x -406x -  -406x - 
import auto from './auto.js'
-import demargin from './demargin.js'
-import interpolate from './interpolate.js'
-import raw from './raw.js'
-import type S from './sanitised.js'
- 
-export const template =
-  (ts: TemplateStringsArray, ...vs: unknown[]): S =>
-    raw(demargin(interpolate(ts, vs.map(auto)).join('')))
- 
-export default template
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/test/client.ts.html b/coverage/lcov-report/src/test/client.ts.html deleted file mode 100644 index 5641701..0000000 --- a/coverage/lcov-report/src/test/client.ts.html +++ /dev/null @@ -1,514 +0,0 @@ - - - - - - Code coverage report for src/test/client.ts - - - - - - - - - -
-
-

All files / src/test client.ts

-
- -
- 84.44% - Statements - 38/45 -
- - -
- 64.28% - Branches - 9/14 -
- - -
- 91.66% - Functions - 22/24 -
- - -
- 84.09% - Lines - 37/44 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -1442x -2x -2x -  -2x -  -  -  -  -  -  -  -  -  -  -  -  -4x -  -  -  -  -  -  -  -  -  -  -  -  -  -2x -2x -2x -  -  -  -  -  -  -  -  -  -2x -2x -2x -  -  -  -4x -4x -4x -  -  -  -  -  -4x -  -  -  -69x -69x -  -  -  -69x -69x -69x -  -  -69x -50x -95x -  -  -69x -  -69x -  -  -  -  -25x -  -  -  -11x -  -  -  -10x -10x -  -  -  -9x -  -  -  -13x -  -  -  -2x -  -  -  -10x -  -  -  -7x -  -  -  -7x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -4x -  -  -  -  -  -  -1x -  -  -  - 
import { Connection, Request } from 'tedious'
-import * as Tsql from '../index.js'
-import randomIdentifier from '../random-identifier.js'
- 
-export default class Client {
- 
-  connection: Connection
- 
-  constructor({
-    database = 'test',
-    userName = 'sa',
-    password = 'yourStrong(!)Password'
-  }: {
-    database?: string,
-    userName?: string,
-    password?: string
-  } = {}) {
-    this.connection = new Connection({
-      server: process.env.MSSQL_HOST ?? 'localhost',
-      options: {
-        database,
-        trustServerCertificate: true,
-        rowCollectionOnDone: true,
-        rowCollectionOnRequestCompletion: true,
-        useColumnNames: true
-      },
-      authentication: { type: 'default', options: { userName, password } }
-    })
-  }
- 
-  static async createDatabase(database: string) {
-    const sql = await new Client({ database: 'master' }).connect()
-    await sql.rows`create database ${Tsql.id(database)}`
-    sql.close()
-  }
- 
-  static async dropDatabase(database: string) {
-    const sql = await new Client({ database: 'master' }).connect()
-    await sql.rows`drop database ${Tsql.id(database)}`
-    sql.close()
-  }
- 
-  static async random() {
-    const database = randomIdentifier('test_', 16).toString()
-    await this.createDatabase(database)
-    return new Client({ database }).connect()
-  }
- 
-  async connect(): Promise<this> {
-    return new Promise((resolve, reject) => {
-      this.connection.connect((err: unknown) => {
-        err != null ? reject(err) : resolve(this)
-      })
-    })
-  }
- 
-  close() {
-    this.connection.close()
-  }
- 
-  async query<T>(sql: undefined | Tsql.S): Promise<undefined | (T[])> {
-    return new Promise((resolve, reject) => {
-      Iif (typeof sql === 'undefined') {
-        resolve(undefined)
-        return
-      }
-      const sqlString = sql.toString()
-      const request = new Request(sqlString, (err, _rowCount, rows) => {
-        Iif (err != null) {
-          reject(new Error(err.message + `; ${sqlString}`))
-        }
-        for (const row of rows) {
-          for (const key in row) {
-            row[key] = row[key].value
-          }
-        }
-        resolve(rows)
-      })
-      this.connection.execSql(request)
-    })
-  }
- 
-  async rows<T>(tsa: TemplateStringsArray, ...rest: unknown[]) {
-    return this.query<T>(Tsql.template(tsa, ...rest))
-  }
- 
-  async row<T>(tsa: TemplateStringsArray, ...rest: unknown[]) {
-    return this.rows<T>(tsa, ...rest).then(_ => _?.[0])
-  }
- 
-  async value<T>(tsa: TemplateStringsArray, ...rest: unknown[]) {
-    const row = await this.row<Record<string, T>>(tsa, ...rest)
-    return row?.[Object.keys(row)[0]]
-  }
- 
-  async count(table: Tsql.Sid | string, where: Tsql.Where = Tsql.logicalTrue) {
-    return this.value`select count(*) from ${Tsql.id(table)} where ${Tsql.where(where)}`
-  }
- 
-  async delete(table: Tsql.Sid | string, where: Tsql.Where = Tsql.logicalTrue) {
-    await this.query(Tsql.delete(table, where))
-  }
- 
-  async dropTable(table: Tsql.Sid | string) {
-    await this.query(Tsql.template`drop table ${Tsql.id(table)};`)
-  }
- 
-  async insertIgnore(...args: Parameters<typeof Tsql['insertIgnore']>) {
-    return this.query(Tsql.insertIgnore(...args))
-  }
- 
-  async insertObject(table: Tsql.Sid | string, object: Record<string, unknown>, output?: Tsql.S) {
-    return this.query(Tsql.insertObject(table, object, output))
-  }
- 
-  async insertObjects(table: Tsql.Sid | string, objects: Record<string, unknown>[], maybeKeys?: string[]) {
-    return this.query(Tsql.insertObjects(table, objects, maybeKeys))
-  }
- 
-  async update(table: Tsql.Sid | string, where: Tsql.Where, object: Record<string, unknown>) {
-    return this.query(Tsql.update(table, where, object))
-  }
- 
-  async merge1n(
-    table: Tsql.Sid | string,
-    [ lcolumn, rcolumn ]: [ Tsql.Sid | string, Tsql.Sid | string ],
-    lid: unknown,
-    values: unknown[],
-    { hints = [ 'serializable' ] }: {
-      hints?: Tsql.TableHintLimited.t[]
-    } = {}
-  ) {
-    return this.query(Tsql.merge1n(table, [ lcolumn, rcolumn ], lid, values, { hints }))
-  }
- 
-  async modifyJsons(
-    table: Tsql.Sid | string,
-    entries: readonly Record<string, unknown>[]
-  ) {
-    return this.query(Tsql.modifyJsons(table, entries))
-  }
- 
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/test/index.html b/coverage/lcov-report/src/test/index.html deleted file mode 100644 index a39fed7..0000000 --- a/coverage/lcov-report/src/test/index.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - - - Code coverage report for src/test - - - - - - - - - -
-
-

All files src/test

-
- -
- 84.44% - Statements - 38/45 -
- - -
- 64.28% - Branches - 9/14 -
- - -
- 91.66% - Functions - 22/24 -
- - -
- 84.09% - Lines - 37/44 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
client.ts -
-
84.44%38/4564.28%9/1491.66%22/2484.09%37/44
-
-
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/top.ts.html b/coverage/lcov-report/src/top.ts.html deleted file mode 100644 index c6ce188..0000000 --- a/coverage/lcov-report/src/top.ts.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - Code coverage report for src/top.ts - - - - - - - - - -
-
-

All files / src top.ts

-
- -
- 50% - Statements - 6/12 -
- - -
- 0% - Branches - 0/6 -
- - -
- 0% - Functions - 0/1 -
- - -
- 54.54% - Lines - 6/11 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -3122x -22x -22x -22x -  -  -  -  -  -  -  -  -  -  -22x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -22x - 
import auto from './auto.js'
-import line from './line.js'
-import number from './number.js'
-import raw from './raw.js'
-import type S from './sanitised.js'
- 
-/**
- * @returns top expression.
- * @example top(1, raw('with ties'))
- * @example top(1, star)
- * @example top(0.1, star) // value in <0,1> range returns percent, ie. `top 10 percent`.
- * @example top(1, ids('foo', 'bar', 'baz'))
- */
-export const top =
-  (x = 1, ...rest: S[]): S => {
-    Iif (x <= 0) {
-      throw new TypeError(`Expected positive value in top, got ${x}.`)
-    }
-    const [ x_, percent ] = x < 1 ?
-      [ Math.round(x * 100), true ] :
-      [ Math.round(x), false ]
-    return line(
-      raw('top'),
-      number(x_),
-      percent ? raw('percent') : undefined,
-      ...rest.map(auto)
-    )
-  }
- 
-export default top
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/true-value.ts.html b/coverage/lcov-report/src/true-value.ts.html deleted file mode 100644 index f727f23..0000000 --- a/coverage/lcov-report/src/true-value.ts.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - Code coverage report for src/true-value.ts - - - - - - - - - -
-
-

All files / src true-value.ts

-
- -
- 80% - Statements - 4/5 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 75% - Lines - 3/4 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17  -22x -  -  -  -  -  -  -  -  -  -  -  -22x -  -22x - 
import type S from './sanitised.js'
-import raw from './raw.js'
- 
-/**
- * Value boolean true – 1 casted as BIT.
- *
- * Logical booleans can be used in condition expressions, ie. WHERE clause.
- *
- * Value booleans can be used in assignment statements, ie. UPDATE SET clause.
- *
- * @see trueValue for value boolean variant.
- */
-export const trueValue: S =
-  raw('cast(1 as bit)')
- 
-export default trueValue
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/unique.ts.html b/coverage/lcov-report/src/unique.ts.html deleted file mode 100644 index a5041f9..0000000 --- a/coverage/lcov-report/src/unique.ts.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - Code coverage report for src/unique.ts - - - - - - - - - -
-
-

All files / src unique.ts

-
- -
- 90.9% - Statements - 10/11 -
- - -
- 100% - Branches - 1/1 -
- - -
- 100% - Functions - 1/1 -
- - -
- 90% - Lines - 9/10 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18  -  -  -  -78x -78x -78x -108x -108x -105x -105x -  -  -78x -  -  -78x - 
import S from './sanitised.js'
- 
-/** @returns deduplicated values. */
-export function unique(values: S[]): S[] {
-  const set = new Set<string>
-  const result: S[] = []
-  for (const value of values) {
-    const stringValue = value.toString()
-    if (!set.has(stringValue)) {
-      set.add(stringValue)
-      result.push(value)
-    }
-  }
-  return result
-}
- 
-export default unique
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/unix.ts.html b/coverage/lcov-report/src/unix.ts.html deleted file mode 100644 index 00c9a3d..0000000 --- a/coverage/lcov-report/src/unix.ts.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - Code coverage report for src/unix.ts - - - - - - - - - -
-
-

All files / src unix.ts

-
- -
- 75% - Statements - 3/4 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 100% - Lines - 3/3 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -722x -  -  -22x -  -22x - 
import tsql from './template.js'
- 
-const unix =
-  tsql`datediff(s, '1970-01-01 00:00:00', getutcdate())`
- 
-export default unix
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/update-objects.ts.html b/coverage/lcov-report/src/update-objects.ts.html deleted file mode 100644 index d4c2a76..0000000 --- a/coverage/lcov-report/src/update-objects.ts.html +++ /dev/null @@ -1,259 +0,0 @@ - - - - - - Code coverage report for src/update-objects.ts - - - - - - - - - -
-
-

All files / src update-objects.ts

-
- -
- 41.93% - Statements - 13/31 -
- - -
- 0% - Branches - 0/8 -
- - -
- 0% - Functions - 0/5 -
- - -
- 46.42% - Lines - 13/28 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -5922x -22x -22x -22x -22x -22x -22x -22x -22x -  -  -  -  -  -22x -  -  -  -22x -  -  -  -  -22x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -22x - 
import and from './and.js'
-import assign from './assign.js'
-import eq from './eq.js'
-import id from './identifier.js'
-import inlineTableOfObjects from './inline-table-of-objects.js'
-import keysOfObjects from './keys-of-objects.js'
-import limitedHintsIdentifier from './limited-hints-identifier.js'
-import list from './list.js'
-import tsql from './template.js'
-import type { TableHintLimited } from './table-hint-limited.js'
-import type S from './sanitised.js'
-import type Sid from './sanitised-identifier.js'
- 
-export const sourcePrefixed =
-  (_: Sid | string): Sid =>
-    id([ 'Source', _ ])
- 
-export const targetPrefixed =
-  (_: Sid | string): Sid =>
-    id([ 'Target', _ ])
- 
-/** @returns update dml that runs update operations on target table from the result of a join with source table. */
-export const updateObjects =
-  (
-    table: Sid | string,
-    onKeys: string[],
-    objects: Record<string, unknown>[],
-    maybeObjectKeys?: string[],
-    maybeUpdateKeys?: string[],
-    { hints = [ 'repeatableread' ] }: {
-      hints?: TableHintLimited[]
-    } = {}
-  ): S => {
- 
-    Iif (!Array.isArray(objects)) {
-      throw new TypeError(`Expected array of values, got ${objects}.`)
-    }
- 
-    Iif (objects.length === 0) {
-      return tsql`select 0;`
-    }
- 
-    const table_ = limitedHintsIdentifier(table, hints)
-    const objectKeys = maybeObjectKeys || keysOfObjects(objects)
-    const updateKeys = maybeUpdateKeys || objectKeys
-    const update_ = list(updateKeys.map(_ => assign(_, sourcePrefixed(_))))
-    const on_ = and(...onKeys.map(_ => eq(sourcePrefixed(_), targetPrefixed(_))))
- 
-    return tsql`
-      merge ${table_} as Target
-      using ${inlineTableOfObjects('Source', objects, objectKeys)}
-      on ${on_}
-      when matched then
-        update set ${update_};
-    `
-  }
- 
-export default updateObjects
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/update.ts.html b/coverage/lcov-report/src/update.ts.html deleted file mode 100644 index f892fa6..0000000 --- a/coverage/lcov-report/src/update.ts.html +++ /dev/null @@ -1,199 +0,0 @@ - - - - - - Code coverage report for src/update.ts - - - - - - - - - -
-
-

All files / src update.ts

-
- -
- 94.44% - Statements - 17/18 -
- - -
- 83.33% - Branches - 5/6 -
- - -
- 100% - Functions - 1/1 -
- - -
- 94.11% - Lines - 16/17 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -3922x -22x -22x -22x -22x -  -  -  -22x -  -  -  -22x -  -  -  -  -  -  -  -6x -1x -  -5x -5x -5x -5x -1x -  -4x -  -  -  -  -  -  -  -22x - 
import assignObject from './assign-object.js'
-import fallback from './fallback.js'
-import limitedHintsIdentifier from './limited-hints-identifier.js'
-import logicalTrue from './logical-true.js'
-import tsql from './template.js'
-import type { TableHintLimited } from './table-hint-limited.js'
-import type S from './sanitised.js'
-import type Sid from './sanitised-identifier.js'
-import whereOf from './where.js'
- 
-/** @returns UPDATE DML. */
-export const update =
-  (
-    table: Sid | string,
-    where: S | Record<string, unknown>,
-    object: Record<string, unknown>,
-    { hints = [ 'repeatableread' ] }: {
-      hints?: TableHintLimited[]
-    } = {}
-  ): undefined | S => {
-    if (Object.keys(object).length === 0) {
-      return
-    }
-    const table_ = limitedHintsIdentifier(table, hints)
-    const where_ = fallback(where, whereOf) ?? logicalTrue
-    const object_ = assignObject(object)
-    if (typeof object_ === 'undefined') {
-      return
-    }
-    return tsql`
-      update ${table_}
-      set
-        ${object_}
-      where ${where_}
-    `
-  }
- 
-export default update
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/upsert-objects.ts.html b/coverage/lcov-report/src/upsert-objects.ts.html deleted file mode 100644 index 97a338d..0000000 --- a/coverage/lcov-report/src/upsert-objects.ts.html +++ /dev/null @@ -1,295 +0,0 @@ - - - - - - Code coverage report for src/upsert-objects.ts - - - - - - - - - -
-
-

All files / src upsert-objects.ts

-
- -
- 42.42% - Statements - 14/33 -
- - -
- 0% - Branches - 0/10 -
- - -
- 0% - Functions - 0/5 -
- - -
- 46.66% - Lines - 14/30 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -7122x -22x -22x -22x -22x -22x -22x -22x -22x -22x -  -  -  -  -  -22x -  -  -  -22x -  -  -  -  -  -  -  -  -  -  -22x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -22x - 
import and from './and.js'
-import assign from './assign.js'
-import eq from './eq.js'
-import id from './identifier.js'
-import inlineTableOfObjects from './inline-table-of-objects.js'
-import keysOfObjects from './keys-of-objects.js'
-import limitedHintsIdentifier from './limited-hints-identifier.js'
-import list from './list.js'
-import row from './row.js'
-import tsql from './template.js'
-import type { TableHintLimited } from './table-hint-limited.js'
-import type S from './sanitised.js'
-import type Sid from './sanitised-identifier.js'
- 
-export const sourcePrefixed =
-  (_: Sid | string): Sid =>
-    id([ 'Source', _ ])
- 
-export const targetPrefixed =
-  (_: Sid | string): Sid =>
-    id([ 'Target', _ ])
- 
-/**
- * @returns MERGE DML.
- *
- * Updates existing rows.
- *
- * Inserts unmatched rows.
- */
-export const upsertObjects =
-  (
-    table: Sid | string,
-    onKeys: string[],
-    objects: Record<string, unknown>[],
-    maybeObjectKeys?: string[],
-    maybeUpdateKeys?: string[],
-    maybeInsertKeys?: string[],
-    { hints = [ 'serializable' ] }: {
-      hints?: TableHintLimited[]
-    } = {}
-  ): S => {
- 
-    Iif (!Array.isArray(objects)) {
-      throw new TypeError(`Expected array of values, got ${objects}.`)
-    }
- 
-    Iif (objects.length === 0) {
-      return tsql`select 0;`
-    }
- 
-    const table_ = limitedHintsIdentifier(table, hints)
-    const objectKeys = maybeObjectKeys || keysOfObjects(objects)
-    const updateKeys = maybeUpdateKeys || objectKeys
-    const insertKeys = maybeInsertKeys || objectKeys
-    const update_ = list(updateKeys.map(_ => assign(_, sourcePrefixed(_))))
-    const on_ = and(...onKeys.map(_ => eq(sourcePrefixed(_), targetPrefixed(_))))
- 
-    return tsql`
-      merge ${table_} as Target
-      using ${inlineTableOfObjects('Source', objects, objectKeys)}
-      on ${on_}
-      when matched then
-        update set ${update_}
-      when not matched by target then
-        insert ${row(insertKeys.map(id))}
-        values ${row(insertKeys.map(sourcePrefixed))};
-    `
-  }
- 
-export default upsertObjects
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/src/where.ts.html b/coverage/lcov-report/src/where.ts.html deleted file mode 100644 index d711230..0000000 --- a/coverage/lcov-report/src/where.ts.html +++ /dev/null @@ -1,664 +0,0 @@ - - - - - - Code coverage report for src/where.ts - - - - - - - - - -
-
-

All files / src where.ts

-
- -
- 90.8% - Statements - 79/87 -
- - -
- 80% - Branches - 24/30 -
- - -
- 100% - Functions - 8/8 -
- - -
- 90.58% - Lines - 77/85 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -19422x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -22x -  -  -  -  -  -22x -  -  -  -  -  -22x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -22x -  -  -  -  -  -  -  -  -103x -27x -  -  -76x -80x -74x -74x -  -6x -  -70x -  -  -  -53x -6x -  -47x -47x -17x -17x -  -  -2x -  -  -2x -  -  -2x -  -  -  -2x -  -  -2x -  -  -2x -  -13x -  -  -  -  -  -  -  -  -30x -  -  -  -170x -114x -  -56x -56x -49x -49x -8x -  -  -8x -  -41x -2x -  -  -46x -53x -46x -  -  -  -  -  -  -  -  -  -  -139x -  -  -  -  -  -  -  -  -  -  -  -22x -79x -79x -6x -  -73x -  -  -  -  -  -  -  -  -  -22x -9x -9x -4x -  -5x -  -  -22x -2x -  -  -  -  -42x - 
import { isDefined } from './is-defined.js'
-import { isObject } from './is-object.js'
-import auto from './auto.js'
-import between from './between.js'
-import distinct from './distinct.js'
-import eq from './eq.js'
-import gt from './gt.js'
-import gte from './gte.js'
-import in_ from './in.js'
-import interpolate1 from './interpolate1.js'
-import like from './like.js'
-import logicalFalse from './logical-false.js'
-import logicalTrue from './logical-true.js'
-import lt from './lt.js'
-import lte from './lte.js'
-import ne from './ne.js'
-import ng from './ng.js'
-import nl from './nl.js'
-import notBetween from './not-between.js'
-import notDistinct from './not-distinct.js'
-import notIn from './not-in.js'
-import raw from './raw.js'
-import S from './sanitised.js'
-import template from './template.js'
-import unique from './unique.js'
- 
-export type Where = S | Record<string, unknown>
- 
-export type t = Where
- 
-const unary = {
-  $not: not
-} as const
- 
-type Unary = typeof unary
- 
-const binary = {
-  $between: between,
-  $distinct: distinct,
-  $eq: eq,
-  $gt: gt,
-  $gte: gte,
-  $in: in_,
-  $like: like,
-  $lt: lt,
-  $lte: lte,
-  $ne: ne,
-  $ng: ng,
-  $nl: nl,
-  $notBetween: notBetween,
-  $notDistinct: notDistinct,
-  $ndistinct: notDistinct,
-  $notIn: notIn,
-  $nin: notIn
-} as const
- 
-type Binary = typeof binary
- 
-const logical = {
-  $and: and,
-  $or: or
-} as const
- 
-type Logical = typeof logical
- 
-/** @returns single key in object iff object has single key, `undefined` otherwise. */
-function single(value: unknown): undefined | string {
-  if (!isObject(value)) {
-    return undefined
-  }
-  let result: undefined | string
-  for (const key in value) {
-    if (result === undefined) {
-      result = key
-      continue
-    }
-    return undefined
-  }
-  return result
-}
- 
-function visitEntry(key: string, value: unknown): undefined | S {
-  if (typeof value === 'function') {
-    return value(key)
-  }
-  const key_ = single(value)
-  if (key_ && key_ in binary) {
-    const value_ = (value as Record<string, unknown>)[key_]
-    switch (key_) {
-      case '$between':
-      case '$notBetween':
-        Iif (value_ == null) {
-          return binary[key_](key, value_)
-        }
-        Iif (!Array.isArray(value_) || value_.length > 2) {
-          throw new TypeError(`Invalid ${key_} parameters.`)
-        }
-        return binary[key_](key, [ value_[0], value_[1] ])
-      case '$in':
-      case '$nin':
-      case '$notIn':
-        Iif (value_ == null) {
-          return binary[key_](key, value_)
-        }
-        Iif (!Array.isArray(value_)) {
-          throw new TypeError(`Invalid ${key_} parameters.`)
-        }
-        return binary[key_](key, value_)
-      default:
-        return binary[key_ as Exclude<keyof Binary,
-          | '$between'
-          | '$notBetween'
-          | '$in'
-          | '$nin'
-          | '$notIn'
-        >](key, value_)
-    }
-  }
-  return eq(key, value)
-}
- 
-export function visit(value: unknown): S {
-  if (value instanceof S) {
-    return value
-  }
-  const key = single(value)
-  if (key) {
-    const value_ = (value as Record<string, unknown>)[key]
-    if ((key in logical) && Array.isArray(value_)) {
-      Iif (typeof logical[key as keyof Logical] !== 'function') {
-        console.log('ERROR', key, Object.keys(logical), logical[key as keyof Logical], logical)
-      }
-      return logical[key as keyof Logical](...value_.map(visit))
-    }
-    if ((key in unary)) {
-      return unary[key as keyof Unary](visit(value_)) as S
-    }
-  }
-  if (isObject(value)) {
-    const entries = Object.entries(value).map(_ => visitEntry(..._))
-    return and(...entries)
-  }
-  return auto(value)
-}
- 
-/**
- * @returns WHERE clause.
- *
- * Supports MondoDB-like query.
- */
-export function where(value: Where): S {
-  return visit(value)
-}
- 
-/**
- * @returns terms joined with AND operator.
- *
- * `undefined` terms are filtered out.
- *
- * An empty list of terms returns logical true (1=1).
- *
- * Terms are deduplicated.
- */
-export function and(...xs: (undefined | Where)[]): S {
-  const xs_ = xs.filter(isDefined)
-  if (xs_.length === 0) {
-    return logicalTrue
-  }
-  return template`(${raw(interpolate1(unique(xs_.map(where)), raw(' and ')).join(''))})`
-}
- 
-/**
- * @returns terms joined with OR operator.
- *
- * `undefined` terms are filtered out.
- *
- * An empty list of terms returns logical false (0=1).
- */
-export function or(...xs: (undefined | Where)[]): S {
-  const xs_ = xs.filter(isDefined)
-  if (xs_.length === 0) {
-    return logicalFalse
-  }
-  return template`(${raw(interpolate1(unique(xs_.map(where)), raw(' or ')).join(''))})`
-}
- 
-export function not(rhs: undefined | Where): undefined | S {
-  return isDefined(rhs) ?
-    template`not (${where(rhs)})` :
-    undefined
-}
- 
-export default where
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov.info b/coverage/lcov.info deleted file mode 100644 index 8bd4bc8..0000000 --- a/coverage/lcov.info +++ /dev/null @@ -1,2725 +0,0 @@ -TN: -SF:src/and.ts -FNF:0 -FNH:0 -DA:1,22 -DA:3,0 -DA:5,28 -LF:3 -LH:2 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/assign-object.ts -FN:15,assignObject -FNF:1 -FNH:1 -FNDA:10,assignObject -DA:1,22 -DA:2,22 -DA:3,22 -DA:4,22 -DA:5,22 -DA:15,0 -DA:16,10 -DA:17,10 -DA:18,10 -DA:19,22 -DA:20,3 -DA:21,3 -DA:28,3 -DA:30,19 -DA:32,10 -DA:33,1 -DA:38,1 -DA:40,10 -DA:43,22 -LF:19 -LH:18 -BRDA:19,0,0,3 -BRDA:23,1,0,3 -BRDA:23,1,1,1 -BRF:3 -BRH:3 -end_of_record -TN: -SF:src/assign.ts -FN:14,assign -FNF:1 -FNH:1 -FNDA:31,assign -DA:1,22 -DA:2,22 -DA:3,22 -DA:4,22 -DA:14,0 -DA:15,31 -DA:16,9 -DA:18,22 -DA:19,15 -DA:21,7 -DA:22,6 -DA:24,1 -DA:25,1 -DA:28,31 -LF:14 -LH:13 -BRDA:15,0,0,9 -BRDA:18,1,0,15 -BRDA:21,2,0,6 -BRF:3 -BRH:3 -end_of_record -TN: -SF:src/auto.ts -FN:34,(anonymous_4) -FNF:1 -FNH:1 -FNDA:13442,(anonymous_4) -DA:1,22 -DA:2,22 -DA:3,22 -DA:4,22 -DA:5,22 -DA:6,22 -DA:7,22 -DA:8,22 -DA:33,0 -DA:34,22 -DA:35,13442 -DA:36,9096 -DA:38,4346 -DA:39,1 -DA:40,75 -DA:41,9 -DA:42,4246 -DA:44,15 -DA:45,7 -DA:47,8 -DA:48,0 -DA:50,8 -DA:51,0 -DA:53,8 -DA:56,0 -DA:60,8879 -LF:26 -LH:22 -BRDA:35,0,0,9096 -BRDA:38,1,0,1 -BRDA:38,1,1,75 -BRDA:38,1,2,9 -BRDA:38,1,3,4246 -BRDA:38,1,4,15 -BRDA:38,1,5,0 -BRDA:41,2,0,6 -BRDA:41,2,1,3 -BRDA:44,3,0,7 -BRDA:47,4,0,0 -BRDA:50,5,0,0 -BRDA:50,6,0,8 -BRDA:50,6,1,8 -BRF:14 -BRH:11 -end_of_record -TN: -SF:src/between.ts -FN:7,(anonymous_4) -FNF:1 -FNH:1 -FNDA:1,(anonymous_4) -DA:1,22 -DA:2,22 -DA:3,22 -DA:6,0 -DA:7,22 -DA:8,1 -DA:12,22 -LF:7 -LH:6 -BRDA:8,0,0,0 -BRDA:8,0,1,1 -BRDA:8,1,0,1 -BRDA:8,1,1,1 -BRF:4 -BRH:3 -end_of_record -TN: -SF:src/columns.ts -FN:12,(anonymous_4) -FN:19,(anonymous_5) -FNF:2 -FNH:0 -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -DA:1,22 -DA:2,22 -DA:3,22 -DA:11,0 -DA:12,22 -DA:13,0 -DA:14,0 -DA:15,0 -DA:16,0 -DA:19,0 -DA:22,22 -LF:11 -LH:5 -BRDA:12,0,0,0 -BRDA:15,1,0,0 -BRDA:16,2,0,0 -BRDA:16,2,1,0 -BRF:4 -BRH:0 -end_of_record -TN: -SF:src/defined.ts -FN:3,(anonymous_1) -FNF:1 -FNH:1 -FNDA:10,(anonymous_1) -DA:3,22 -DA:4,10 -DA:5,10 -DA:6,24 -DA:9,1 -DA:12,10 -DA:15,22 -LF:7 -LH:7 -BRDA:6,0,0,1 -BRF:1 -BRH:1 -end_of_record -TN: -SF:src/delete.ts -FN:11,(anonymous_4) -FNF:1 -FNH:1 -FNDA:13,(anonymous_4) -DA:1,22 -DA:2,22 -DA:3,22 -DA:6,22 -DA:7,22 -DA:10,0 -DA:11,22 -DA:12,13 -DA:19,22 -LF:9 -LH:8 -BRDA:14,0,0,13 -BRDA:14,0,1,0 -BRF:2 -BRH:1 -end_of_record -TN: -SF:src/demargin.ts -FN:5,(anonymous_4) -FN:10,(anonymous_5) -FN:13,(anonymous_6) -FN:29,(anonymous_7) -FNF:4 -FNH:4 -FNDA:421,(anonymous_4) -FNDA:340,(anonymous_5) -FNDA:683,(anonymous_6) -FNDA:6910,(anonymous_7) -DA:1,22 -DA:4,0 -DA:5,22 -DA:6,421 -DA:7,0 -DA:9,421 -DA:10,421 -DA:11,81 -DA:13,683 -DA:14,66 -DA:16,421 -DA:17,421 -DA:18,6910 -DA:19,65027 -DA:20,6909 -DA:21,6909 -DA:25,421 -DA:26,0 -DA:28,421 -DA:29,6910 -DA:33,421 -LF:21 -LH:18 -BRDA:6,0,0,0 -BRDA:10,1,0,81 -BRDA:10,2,0,421 -BRDA:10,2,1,421 -BRDA:13,3,0,66 -BRDA:13,4,0,421 -BRDA:13,4,1,421 -BRDA:19,5,0,6909 -BRDA:25,6,0,0 -BRF:9 -BRH:7 -end_of_record -TN: -SF:src/distinct.ts -FN:14,(anonymous_4) -FNF:1 -FNH:0 -FNDA:0,(anonymous_4) -DA:1,22 -DA:2,22 -DA:3,22 -DA:13,0 -DA:14,22 -DA:15,0 -DA:16,0 -DA:18,0 -DA:19,0 -DA:22,22 -LF:10 -LH:5 -BRDA:15,0,0,0 -BRDA:15,1,0,0 -BRDA:15,1,1,0 -BRF:3 -BRH:0 -end_of_record -TN: -SF:src/eq.ts -FN:8,(anonymous_4) -FN:23,(anonymous_5) -FNF:2 -FNH:2 -FNDA:53,(anonymous_4) -FNDA:64,(anonymous_5) -DA:1,22 -DA:2,22 -DA:3,22 -DA:4,22 -DA:8,22 -DA:9,53 -DA:22,0 -DA:23,22 -DA:24,64 -DA:28,85 -LF:10 -LH:9 -BRDA:9,0,0,15 -BRDA:9,0,1,38 -BRDA:24,1,0,11 -BRDA:24,1,1,53 -BRF:4 -BRH:4 -end_of_record -TN: -SF:src/exists.ts -FN:10,(anonymous_4) -FNF:1 -FNH:0 -FNDA:0,(anonymous_4) -DA:1,22 -DA:2,22 -DA:5,22 -DA:6,22 -DA:9,0 -DA:10,22 -DA:11,0 -DA:12,0 -DA:13,0 -DA:16,22 -LF:10 -LH:6 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/fallback.ts -FN:6,(anonymous_4) -FNF:1 -FNH:1 -FNDA:105,(anonymous_4) -DA:1,22 -DA:5,0 -DA:6,22 -DA:7,105 -DA:11,105 -LF:5 -LH:4 -BRDA:7,0,0,35 -BRDA:7,0,1,70 -BRF:2 -BRH:2 -end_of_record -TN: -SF:src/false-value.ts -FNF:0 -FNH:0 -DA:2,22 -DA:13,0 -DA:14,22 -DA:16,22 -LF:4 -LH:3 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/gt.ts -FN:10,(anonymous_4) -FNF:1 -FNH:1 -FNDA:5,(anonymous_4) -DA:1,22 -DA:9,0 -DA:10,22 -DA:11,5 -DA:13,24 -LF:5 -LH:4 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/gte.ts -FN:10,(anonymous_4) -FNF:1 -FNH:1 -FNDA:1,(anonymous_4) -DA:1,22 -DA:9,0 -DA:10,22 -DA:11,1 -DA:13,22 -LF:5 -LH:4 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/identifier.ts -FN:11,isPlain -FN:19,quote -FN:40,identifier -FN:57,(anonymous_12) -FN:59,(anonymous_13) -FN:60,(anonymous_14) -FN:66,jsonValue -FN:71,jsonQuery -FN:78,jsonPathExists -FNF:9 -FNH:9 -FNDA:424,isPlain -FNDA:159,quote -FNDA:485,identifier -FNDA:424,(anonymous_12) -FNDA:118,(anonymous_13) -FNDA:118,(anonymous_14) -FNDA:6,jsonValue -FNDA:1,jsonQuery -FNDA:2,jsonPathExists -DA:1,22 -DA:2,22 -DA:3,22 -DA:11,0 -DA:12,424 -DA:19,0 -DA:20,159 -DA:40,0 -DA:41,485 -DA:42,1 -DA:44,484 -DA:45,425 -DA:46,6 -DA:47,6 -DA:49,419 -DA:50,1 -DA:51,1 -DA:53,418 -DA:54,2 -DA:55,2 -DA:57,424 -DA:59,118 -DA:60,118 -DA:62,0 -DA:66,22 -DA:67,6 -DA:71,22 -DA:72,1 -DA:78,22 -DA:79,2 -DA:82,343 -LF:31 -LH:27 -BRDA:13,0,0,424 -BRDA:13,0,1,282 -BRDA:41,1,0,1 -BRDA:44,2,0,425 -BRDA:45,3,0,6 -BRDA:49,4,0,1 -BRDA:53,5,0,2 -BRDA:57,6,0,265 -BRDA:57,6,1,159 -BRDA:59,7,0,59 -BRDA:59,8,0,59 -BRDA:59,8,1,59 -BRDA:59,9,0,118 -BRDA:59,9,1,0 -BRDA:72,10,0,1 -BRDA:72,10,1,0 -BRF:16 -BRH:14 -end_of_record -TN: -SF:src/identifiers.ts -FN:12,(anonymous_4) -FNF:1 -FNH:0 -FNDA:0,(anonymous_4) -DA:1,22 -DA:2,22 -DA:11,0 -DA:12,22 -DA:13,0 -DA:15,22 -LF:6 -LH:4 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/in.ts -FN:17,(anonymous_4) -FNF:1 -FNH:1 -FNDA:11,(anonymous_4) -DA:1,22 -DA:2,22 -DA:3,22 -DA:4,22 -DA:5,22 -DA:7,22 -DA:16,0 -DA:17,22 -DA:18,11 -DA:24,32 -LF:10 -LH:9 -BRDA:18,0,0,2 -BRDA:18,0,1,9 -BRDA:20,1,0,5 -BRDA:20,1,1,4 -BRDA:20,2,0,9 -BRDA:20,2,1,7 -BRDA:20,2,2,7 -BRF:7 -BRH:7 -end_of_record -TN: -SF:src/indent-tail.ts -FN:3,(anonymous_1) -FNF:1 -FNH:1 -FNDA:705,(anonymous_1) -DA:3,22 -DA:4,705 -DA:10,705 -LF:3 -LH:3 -BRDA:4,0,0,236 -BRDA:4,0,1,469 -BRF:2 -BRH:2 -end_of_record -TN: -SF:src/index.ts -FNF:0 -FNH:0 -DA:1,22 -DA:2,22 -DA:3,22 -DA:4,22 -DA:5,22 -DA:6,22 -DA:7,22 -DA:8,22 -DA:9,22 -DA:10,22 -DA:11,22 -DA:12,22 -DA:13,22 -DA:14,22 -DA:15,22 -DA:16,22 -DA:17,22 -DA:18,22 -DA:19,22 -DA:20,22 -DA:21,22 -DA:22,22 -DA:23,22 -DA:24,22 -DA:25,22 -DA:26,22 -DA:27,22 -DA:28,22 -DA:29,22 -DA:30,22 -DA:31,22 -DA:32,22 -DA:33,22 -DA:34,22 -DA:35,22 -DA:36,22 -DA:37,22 -DA:38,22 -DA:39,22 -DA:40,22 -DA:41,22 -DA:42,22 -DA:43,22 -DA:44,22 -DA:45,22 -DA:46,22 -DA:47,22 -DA:48,22 -DA:49,22 -DA:50,22 -DA:51,22 -DA:52,22 -DA:53,22 -DA:54,22 -DA:55,22 -DA:56,22 -DA:57,22 -DA:58,22 -DA:59,22 -DA:60,22 -DA:61,22 -DA:62,22 -DA:63,22 -DA:64,22 -DA:65,22 -DA:66,22 -DA:67,22 -DA:68,22 -DA:69,22 -DA:70,22 -DA:71,22 -DA:72,22 -DA:73,22 -DA:74,22 -DA:75,22 -DA:76,22 -DA:77,22 -DA:78,22 -DA:79,22 -DA:80,22 -DA:81,22 -DA:83,22 -DA:84,22 -DA:85,22 -DA:86,22 -DA:87,22 -DA:88,22 -DA:91,6 -DA:92,9 -DA:93,5 -DA:94,1 -DA:95,0 -DA:96,0 -DA:97,13 -DA:98,15 -DA:99,0 -DA:100,11 -DA:101,0 -DA:102,0 -DA:103,0 -DA:104,2 -DA:105,0 -DA:106,0 -DA:107,0 -DA:108,10 -DA:109,0 -DA:110,0 -DA:111,1 -DA:112,10 -DA:113,0 -DA:114,10 -DA:115,7 -DA:116,0 -DA:117,0 -DA:118,6 -DA:119,6 -DA:120,0 -DA:121,0 -DA:122,3 -DA:123,8 -DA:124,0 -DA:125,0 -DA:126,0 -DA:127,0 -DA:128,0 -DA:129,0 -DA:130,0 -DA:131,5 -DA:132,1 -DA:133,0 -DA:134,19 -DA:135,0 -DA:136,0 -DA:137,0 -DA:138,0 -DA:139,0 -DA:140,0 -DA:141,5 -DA:142,2 -DA:143,0 -DA:144,0 -DA:145,0 -DA:146,0 -DA:147,0 -DA:148,0 -DA:149,0 -DA:150,0 -DA:151,0 -DA:152,1 -DA:153,0 -DA:154,0 -DA:155,6 -DA:156,3 -DA:157,0 -DA:158,0 -DA:159,0 -DA:160,4 -DA:161,0 -DA:162,0 -DA:163,0 -DA:164,0 -DA:165,0 -DA:166,0 -DA:167,0 -DA:168,0 -DA:169,37 -DA:170,0 -DA:171,0 -DA:172,0 -DA:173,0 -DA:174,6 -DA:176,0 -DA:177,0 -DA:178,24 -DA:181,31 -DA:183,0 -DA:184,1 -DA:185,1 -LF:178 -LH:119 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/inline-table-of-column.ts -FN:14,(anonymous_4) -FN:20,(anonymous_5) -FNF:2 -FNH:2 -FNDA:4,(anonymous_4) -FNDA:11,(anonymous_5) -DA:1,22 -DA:2,22 -DA:3,22 -DA:6,22 -DA:13,0 -DA:14,22 -DA:15,4 -DA:16,0 -DA:18,4 -DA:19,4 -DA:20,11 -DA:21,4 -DA:28,22 -LF:13 -LH:11 -BRDA:15,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/inline-table-of-objects.ts -FN:16,(anonymous_4) -FN:20,(anonymous_5) -FN:20,(anonymous_6) -FNF:3 -FNH:3 -FNDA:15,(anonymous_4) -FNDA:3037,(anonymous_5) -FNDA:3073,(anonymous_6) -DA:1,22 -DA:2,22 -DA:3,22 -DA:4,22 -DA:5,22 -DA:8,22 -DA:15,0 -DA:16,22 -DA:17,15 -DA:18,15 -DA:19,15 -DA:20,3073 -DA:21,15 -DA:27,22 -LF:14 -LH:13 -BRDA:18,0,0,15 -BRDA:18,0,1,1 -BRF:2 -BRH:2 -end_of_record -TN: -SF:src/insert-ignore.ts -FN:14,(anonymous_6) -FN:18,(anonymous_7) -FN:29,(anonymous_8) -FN:48,(anonymous_9) -FN:49,(anonymous_10) -FNF:5 -FNH:5 -FNDA:10,(anonymous_6) -FNDA:20,(anonymous_7) -FNDA:10,(anonymous_8) -FNDA:10,(anonymous_9) -FNDA:10,(anonymous_10) -DA:1,22 -DA:2,22 -DA:3,22 -DA:4,22 -DA:5,22 -DA:6,22 -DA:7,22 -DA:8,22 -DA:13,0 -DA:14,22 -DA:15,10 -DA:17,0 -DA:18,22 -DA:19,20 -DA:28,0 -DA:29,22 -DA:39,10 -DA:40,0 -DA:43,10 -DA:44,0 -DA:47,10 -DA:48,10 -DA:49,10 -DA:51,10 -DA:60,22 -LF:25 -LH:20 -BRDA:34,0,0,0 -BRDA:34,1,0,2 -BRDA:39,2,0,0 -BRDA:43,3,0,0 -BRDA:47,4,0,10 -BRDA:47,4,1,10 -BRF:6 -BRH:3 -end_of_record -TN: -SF:src/insert-not-matched.ts -FN:14,(anonymous_6) -FN:18,(anonymous_7) -FN:31,(anonymous_8) -FN:51,(anonymous_9) -FNF:4 -FNH:0 -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -DA:1,22 -DA:2,22 -DA:3,22 -DA:4,22 -DA:5,22 -DA:6,22 -DA:7,22 -DA:8,22 -DA:13,0 -DA:14,22 -DA:15,0 -DA:17,0 -DA:18,22 -DA:19,0 -DA:30,0 -DA:31,22 -DA:41,0 -DA:42,0 -DA:45,0 -DA:46,0 -DA:49,0 -DA:50,0 -DA:51,0 -DA:53,0 -DA:63,22 -LF:25 -LH:12 -BRDA:36,0,0,0 -BRDA:36,1,0,0 -BRDA:41,2,0,0 -BRDA:45,3,0,0 -BRDA:50,4,0,0 -BRDA:50,4,1,0 -BRF:6 -BRH:0 -end_of_record -TN: -SF:src/insert-object.ts -FN:17,(anonymous_4) -FN:25,(anonymous_5) -FNF:2 -FNH:2 -FNDA:10,(anonymous_4) -FNDA:23,(anonymous_5) -DA:1,22 -DA:2,22 -DA:3,22 -DA:4,22 -DA:5,22 -DA:16,0 -DA:17,22 -DA:18,10 -DA:19,10 -DA:20,10 -DA:21,0 -DA:23,10 -DA:24,10 -DA:25,23 -DA:26,10 -DA:31,22 -LF:16 -LH:14 -BRDA:20,0,0,0 -BRDA:26,1,0,0 -BRDA:26,1,1,10 -BRF:3 -BRH:1 -end_of_record -TN: -SF:src/insert-objects.ts -FN:19,(anonymous_4) -FN:45,(anonymous_5) -FN:45,(anonymous_6) -FNF:3 -FNH:3 -FNDA:7,(anonymous_4) -FNDA:1104,(anonymous_5) -FNDA:1107,(anonymous_6) -DA:1,22 -DA:2,22 -DA:3,22 -DA:4,22 -DA:5,22 -DA:6,22 -DA:7,22 -DA:18,0 -DA:19,22 -DA:25,7 -DA:26,0 -DA:29,7 -DA:30,1 -DA:33,6 -DA:34,6 -DA:35,6 -DA:37,6 -DA:38,2 -DA:45,1107 -DA:46,4 -DA:52,22 -LF:21 -LH:19 -BRDA:25,0,0,0 -BRDA:29,1,0,1 -BRDA:34,2,0,6 -BRDA:34,2,1,6 -BRDA:37,3,0,2 -BRF:5 -BRH:4 -end_of_record -TN: -SF:src/interpolate.ts -FN:9,updateMargin -FN:39,(anonymous_5) -FN:52,(anonymous_6) -FNF:3 -FNH:3 -FNDA:1816,updateMargin -FNDA:406,(anonymous_5) -FNDA:1816,(anonymous_6) -DA:2,22 -DA:12,1816 -DA:15,1816 -DA:18,1816 -DA:19,1816 -DA:20,2025 -DA:24,1816 -DA:27,1816 -DA:30,1816 -DA:31,1816 -DA:38,0 -DA:39,22 -DA:40,406 -DA:41,0 -DA:43,406 -DA:44,0 -DA:46,406 -DA:47,0 -DA:49,406 -DA:50,406 -DA:52,406 -DA:53,1816 -DA:54,1816 -DA:56,406 -DA:57,406 -DA:58,705 -DA:59,705 -DA:61,406 -DA:64,406 -LF:29 -LH:25 -BRDA:19,0,0,3841 -BRDA:19,0,1,3316 -BRDA:30,1,0,273 -BRDA:30,1,1,1543 -BRDA:30,2,0,494 -BRDA:30,2,1,1049 -BRDA:31,3,0,1816 -BRDA:31,3,1,1229 -BRDA:31,3,2,767 -BRDA:40,4,0,0 -BRDA:40,5,0,406 -BRDA:40,5,1,406 -BRDA:43,6,0,0 -BRDA:43,7,0,406 -BRDA:43,7,1,0 -BRDA:46,8,0,0 -BRF:16 -BRH:12 -end_of_record -TN: -SF:src/interpolate1.ts -FN:3,(anonymous_3) -FNF:1 -FNH:1 -FNDA:78,(anonymous_3) -DA:2,0 -DA:3,22 -DA:4,78 -DA:5,0 -DA:7,78 -DA:8,0 -DA:10,78 -DA:11,78 -DA:12,27 -DA:13,27 -DA:15,78 -DA:18,78 -LF:12 -LH:9 -BRDA:4,0,0,0 -BRDA:7,1,0,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/is-defined.ts -FN:9,isDefined -FN:16,(anonymous_2) -FNF:2 -FNH:2 -FNDA:127,isDefined -FNDA:114,(anonymous_2) -DA:1,22 -DA:9,90 -DA:10,127 -DA:11,13 -DA:13,114 -DA:14,114 -DA:16,114 -DA:18,0 -LF:8 -LH:7 -BRDA:10,0,0,13 -BRDA:13,1,0,114 -BRF:2 -BRH:2 -end_of_record -TN: -SF:src/is-null.ts -FN:5,(anonymous_4) -FNF:1 -FNH:1 -FNDA:69,(anonymous_4) -DA:1,22 -DA:4,0 -DA:5,22 -DA:6,69 -DA:9,69 -LF:5 -LH:4 -BRDA:6,0,0,69 -BRDA:6,0,1,53 -BRDA:6,0,2,15 -BRF:3 -BRH:3 -end_of_record -TN: -SF:src/is-object.ts -FN:1,isObject -FNF:1 -FNH:1 -FNDA:263,isObject -DA:1,263 -DA:2,263 -LF:2 -LH:2 -BRDA:3,0,0,263 -BRDA:3,0,1,239 -BRDA:3,0,2,236 -BRF:3 -BRH:3 -end_of_record -TN: -SF:src/is-string.ts -FN:5,(anonymous_3) -FNF:1 -FNH:1 -FNDA:4685,(anonymous_3) -DA:2,0 -DA:5,22 -DA:6,4685 -DA:8,4685 -LF:4 -LH:3 -BRDA:6,0,0,4685 -BRDA:6,0,1,0 -BRF:2 -BRH:1 -end_of_record -TN: -SF:src/is.ts -FN:12,(anonymous_1) -FN:13,(anonymous_2) -FNF:2 -FNH:2 -FNDA:6,(anonymous_1) -FNDA:6,(anonymous_2) -DA:12,22 -DA:13,6 -DA:14,6 -DA:16,22 -LF:4 -LH:4 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/json-modify.ts -FN:8,(anonymous_4) -FN:10,(anonymous_5) -FNF:2 -FNH:2 -FNDA:3,(anonymous_4) -FNDA:6,(anonymous_5) -DA:1,22 -DA:2,22 -DA:3,22 -DA:4,22 -DA:7,0 -DA:8,22 -DA:9,3 -DA:10,3 -DA:11,6 -DA:12,2 -DA:13,2 -DA:25,4 -DA:35,22 -LF:13 -LH:12 -BRDA:11,0,0,2 -BRF:1 -BRH:1 -end_of_record -TN: -SF:src/json-path-exists.ts -FNF:0 -FNH:0 -DA:1,22 -DA:2,22 -LF:2 -LH:2 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/json-path.ts -FN:6,(anonymous_4) -FNF:1 -FNH:1 -FNDA:20,(anonymous_4) -DA:2,22 -DA:5,0 -DA:6,22 -DA:7,20 -DA:8,5 -DA:10,15 -DA:11,15 -DA:12,2 -DA:14,15 -DA:15,1 -DA:17,15 -DA:18,2 -DA:20,13 -DA:23,22 -LF:14 -LH:13 -BRDA:6,0,0,18 -BRDA:7,1,0,5 -BRDA:11,2,0,2 -BRDA:14,3,0,1 -BRDA:17,4,0,2 -BRF:5 -BRH:5 -end_of_record -TN: -SF:src/json-query.ts -FNF:0 -FNH:0 -DA:1,22 -DA:2,22 -LF:2 -LH:2 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/json-value.ts -FNF:0 -FNH:0 -DA:1,22 -DA:2,22 -LF:2 -LH:2 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/json.ts -FN:11,(anonymous_4) -FNF:1 -FNH:1 -FNDA:8,(anonymous_4) -DA:1,22 -DA:2,22 -DA:10,0 -DA:11,22 -DA:12,8 -DA:16,22 -LF:6 -LH:5 -BRDA:12,0,0,0 -BRDA:12,0,1,8 -BRF:2 -BRH:1 -end_of_record -TN: -SF:src/keys-of-objects.ts -FN:3,(anonymous_4) -FN:4,(anonymous_5) -FN:12,(anonymous_6) -FNF:3 -FNH:3 -FNDA:4124,(anonymous_4) -FNDA:4152,(anonymous_5) -FNDA:21,(anonymous_6) -DA:2,0 -DA:3,22 -DA:4,4152 -DA:11,0 -DA:12,22 -DA:13,21 -DA:14,0 -DA:16,21 -DA:17,0 -DA:19,21 -DA:20,21 -DA:21,4124 -DA:22,4124 -DA:23,0 -DA:28,21 -DA:31,22 -LF:16 -LH:11 -BRDA:4,0,0,4124 -BRDA:4,0,1,4124 -BRDA:13,1,0,0 -BRDA:16,2,0,0 -BRDA:22,3,0,0 -BRF:5 -BRH:2 -end_of_record -TN: -SF:src/keywords.ts -FN:977,(anonymous_1) -FNF:1 -FNH:1 -FNDA:21362,(anonymous_1) -DA:1,22 -DA:977,21362 -DA:979,424 -LF:3 -LH:3 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/like.ts -FN:9,(anonymous_4) -FN:20,(anonymous_5) -FNF:2 -FNH:2 -FNDA:1,(anonymous_4) -FNDA:1,(anonymous_5) -DA:1,22 -DA:2,22 -DA:3,22 -DA:4,22 -DA:5,22 -DA:9,22 -DA:10,1 -DA:19,0 -DA:20,22 -DA:21,1 -DA:25,22 -LF:11 -LH:10 -BRDA:10,0,0,0 -BRDA:10,0,1,1 -BRDA:21,1,0,0 -BRDA:21,1,1,1 -BRF:4 -BRH:2 -end_of_record -TN: -SF:src/limited-hints-identifier.ts -FN:9,(anonymous_5) -FNF:1 -FNH:1 -FNDA:20,(anonymous_5) -DA:1,22 -DA:2,22 -DA:3,22 -DA:4,22 -DA:9,22 -DA:10,20 -DA:14,22 -LF:7 -LH:7 -BRDA:10,0,0,18 -BRDA:10,0,1,2 -BRDA:10,1,0,20 -BRDA:10,1,1,20 -BRF:4 -BRH:4 -end_of_record -TN: -SF:src/line.ts -FN:15,(anonymous_4) -FN:16,(anonymous_5) -FN:17,(anonymous_6) -FNF:3 -FNH:3 -FNDA:13,(anonymous_4) -FNDA:26,(anonymous_5) -FNDA:26,(anonymous_6) -DA:1,22 -DA:2,22 -DA:14,0 -DA:15,22 -DA:16,26 -DA:17,26 -DA:20,22 -LF:7 -LH:6 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/lines.ts -FN:9,(anonymous_4) -FNF:1 -FNH:1 -FNDA:5,(anonymous_4) -DA:1,22 -DA:8,0 -DA:9,22 -DA:10,5 -DA:11,5 -DA:12,2 -DA:14,3 -DA:17,22 -LF:8 -LH:7 -BRDA:9,0,0,4 -BRDA:11,1,0,2 -BRF:2 -BRH:2 -end_of_record -TN: -SF:src/list.ts -FN:13,(anonymous_4) -FN:15,(anonymous_5) -FN:16,(anonymous_6) -FN:17,(anonymous_7) -FNF:4 -FNH:4 -FNDA:4274,(anonymous_4) -FNDA:8524,(anonymous_5) -FNDA:8512,(anonymous_6) -FNDA:8512,(anonymous_7) -DA:1,22 -DA:2,22 -DA:12,0 -DA:13,22 -DA:14,4274 -DA:15,8524 -DA:16,8512 -DA:17,8512 -DA:18,4274 -DA:23,4274 -LF:10 -LH:9 -BRDA:13,0,0,65 -BRDA:13,1,0,4245 -BRDA:18,2,0,4270 -BRDA:18,2,1,4 -BRF:4 -BRH:4 -end_of_record -TN: -SF:src/logical-false.ts -FNF:0 -FNH:0 -DA:2,22 -DA:13,0 -DA:14,22 -DA:16,22 -LF:4 -LH:3 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/logical-true.ts -FNF:0 -FNH:0 -DA:2,22 -DA:13,0 -DA:14,22 -DA:16,25 -LF:4 -LH:3 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/lt.ts -FN:10,(anonymous_4) -FNF:1 -FNH:1 -FNDA:2,(anonymous_4) -DA:1,22 -DA:9,0 -DA:10,22 -DA:11,2 -DA:13,22 -LF:5 -LH:4 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/lte.ts -FN:10,(anonymous_4) -FNF:1 -FNH:1 -FNDA:2,(anonymous_4) -DA:1,22 -DA:9,0 -DA:10,22 -DA:11,2 -DA:13,22 -LF:5 -LH:4 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/margin-of-first-line.ts -FN:3,(anonymous_1) -FNF:1 -FNH:1 -FNDA:14,(anonymous_1) -DA:3,24 -DA:4,14 -DA:5,14 -DA:6,16 -DA:7,6 -DA:10,14 -DA:13,24 -LF:7 -LH:7 -BRDA:6,0,0,6 -BRDA:6,1,0,16 -BRDA:6,1,1,8 -BRF:3 -BRH:3 -end_of_record -TN: -SF:src/margin-of-last-line.ts -FN:4,(anonymous_2) -FNF:1 -FNH:1 -FNDA:8,(anonymous_2) -DA:1,23 -DA:4,23 -DA:5,8 -DA:7,23 -LF:4 -LH:4 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/maybe-line.ts -FN:13,(anonymous_4) -FN:14,(anonymous_5) -FN:16,(anonymous_6) -FNF:3 -FNH:0 -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -DA:1,22 -DA:2,22 -DA:12,0 -DA:13,22 -DA:14,0 -DA:15,0 -DA:16,0 -DA:20,22 -LF:8 -LH:4 -BRDA:15,0,0,0 -BRDA:15,0,1,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/maybe-lines.ts -FN:7,(anonymous_4) -FN:10,(anonymous_5) -FN:11,(anonymous_6) -FN:12,(anonymous_7) -FN:13,(anonymous_8) -FNF:5 -FNH:5 -FNDA:5,(anonymous_4) -FNDA:10,(anonymous_5) -FNDA:7,(anonymous_6) -FNDA:7,(anonymous_7) -FNDA:7,(anonymous_8) -DA:1,22 -DA:2,22 -DA:6,0 -DA:7,22 -DA:9,5 -DA:10,10 -DA:11,7 -DA:12,7 -DA:13,7 -DA:14,5 -DA:15,2 -DA:17,3 -DA:20,22 -LF:13 -LH:12 -BRDA:7,0,0,0 -BRDA:14,1,0,2 -BRF:2 -BRH:1 -end_of_record -TN: -SF:src/merge-1n.ts -FN:12,(anonymous_4) -FNF:1 -FNH:1 -FNDA:5,(anonymous_4) -DA:1,22 -DA:2,22 -DA:3,22 -DA:4,22 -DA:5,22 -DA:11,0 -DA:12,22 -DA:21,5 -DA:22,5 -DA:23,5 -DA:24,5 -DA:25,0 -DA:27,5 -DA:28,1 -DA:30,4 -DA:45,22 -LF:16 -LH:14 -BRDA:17,0,0,1 -BRDA:17,1,0,1 -BRDA:24,2,0,0 -BRDA:27,3,0,1 -BRF:4 -BRH:3 -end_of_record -TN: -SF:src/modify-jsons.ts -FN:16,(anonymous_7) -FN:20,(anonymous_8) -FN:24,(anonymous_9) -FN:29,(anonymous_10) -FN:33,(anonymous_11) -FN:44,(anonymous_12) -FN:45,(anonymous_13) -FN:46,(anonymous_14) -FN:47,(anonymous_15) -FN:51,(anonymous_16) -FNF:10 -FNH:10 -FNDA:7,(anonymous_7) -FNDA:6,(anonymous_8) -FNDA:2,(anonymous_9) -FNDA:5,(anonymous_10) -FNDA:2,(anonymous_11) -FNDA:4,(anonymous_12) -FNDA:4,(anonymous_13) -FNDA:2,(anonymous_14) -FNDA:4,(anonymous_15) -FNDA:2,(anonymous_16) -DA:1,22 -DA:2,22 -DA:3,22 -DA:4,22 -DA:5,22 -DA:6,22 -DA:9,22 -DA:10,22 -DA:15,0 -DA:16,22 -DA:17,7 -DA:19,0 -DA:20,22 -DA:21,6 -DA:23,0 -DA:24,22 -DA:25,2 -DA:29,5 -DA:33,22 -DA:38,2 -DA:39,0 -DA:42,2 -DA:43,2 -DA:44,4 -DA:45,4 -DA:46,2 -DA:47,4 -DA:48,2 -DA:51,2 -DA:53,2 -DA:62,22 -LF:31 -LH:27 -BRDA:38,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/ne.ts -FN:8,(anonymous_4) -FNF:1 -FNH:1 -FNDA:1,(anonymous_4) -DA:1,22 -DA:2,22 -DA:3,22 -DA:5,22 -DA:7,0 -DA:8,22 -DA:9,1 -DA:10,0 -DA:12,1 -DA:13,1 -DA:18,22 -LF:11 -LH:9 -BRDA:9,0,0,0 -BRDA:13,1,0,0 -BRDA:13,1,1,1 -BRF:3 -BRH:1 -end_of_record -TN: -SF:src/ng.ts -FN:5,(anonymous_4) -FNF:1 -FNH:1 -FNDA:1,(anonymous_4) -DA:1,22 -DA:4,0 -DA:5,22 -DA:6,1 -DA:8,22 -LF:5 -LH:4 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/nl.ts -FN:5,(anonymous_4) -FNF:1 -FNH:1 -FNDA:1,(anonymous_4) -DA:1,22 -DA:4,0 -DA:5,22 -DA:6,1 -DA:8,22 -LF:5 -LH:4 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/not-between.ts -FN:7,(anonymous_4) -FNF:1 -FNH:1 -FNDA:1,(anonymous_4) -DA:1,22 -DA:2,22 -DA:3,22 -DA:6,0 -DA:7,22 -DA:8,1 -DA:12,22 -LF:7 -LH:6 -BRDA:8,0,0,0 -BRDA:8,0,1,1 -BRDA:8,1,0,1 -BRDA:8,1,1,1 -BRF:4 -BRH:3 -end_of_record -TN: -SF:src/not-distinct.ts -FN:7,(anonymous_4) -FNF:1 -FNH:0 -FNDA:0,(anonymous_4) -DA:1,22 -DA:2,22 -DA:3,22 -DA:6,0 -DA:7,22 -DA:8,0 -DA:9,0 -DA:11,0 -DA:12,0 -DA:15,44 -LF:10 -LH:5 -BRDA:8,0,0,0 -BRDA:8,1,0,0 -BRDA:8,1,1,0 -BRF:3 -BRH:0 -end_of_record -TN: -SF:src/not-in.ts -FN:9,(anonymous_4) -FNF:1 -FNH:1 -FNDA:1,(anonymous_4) -DA:1,22 -DA:2,22 -DA:3,22 -DA:4,22 -DA:5,22 -DA:8,0 -DA:9,22 -DA:10,1 -DA:16,44 -LF:9 -LH:8 -BRDA:10,0,0,0 -BRDA:10,0,1,1 -BRDA:12,1,0,1 -BRDA:12,1,1,0 -BRDA:12,2,0,1 -BRDA:12,2,1,1 -BRDA:12,2,2,1 -BRF:7 -BRH:5 -end_of_record -TN: -SF:src/not.ts -FNF:0 -FNH:0 -DA:1,22 -DA:3,0 -DA:5,22 -LF:3 -LH:2 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/now.ts -FNF:0 -FNH:0 -DA:1,22 -DA:3,0 -DA:4,22 -DA:6,22 -LF:4 -LH:3 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/nstring.ts -FN:6,(anonymous_4) -FNF:1 -FNH:1 -FNDA:4264,(anonymous_4) -DA:1,22 -DA:2,22 -DA:5,0 -DA:6,22 -DA:7,4264 -DA:13,4264 -LF:6 -LH:5 -BRDA:7,0,0,0 -BRDA:7,0,1,4264 -BRDA:9,1,0,0 -BRDA:9,1,1,4264 -BRF:4 -BRH:2 -end_of_record -TN: -SF:src/null.ts -FNF:0 -FNH:0 -DA:1,22 -DA:3,0 -DA:4,22 -DA:6,22 -LF:4 -LH:3 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/number.ts -FN:5,(anonymous_4) -FNF:1 -FNH:1 -FNDA:75,(anonymous_4) -DA:1,22 -DA:4,0 -DA:5,22 -DA:6,75 -DA:7,0 -DA:9,75 -DA:12,75 -LF:7 -LH:5 -BRDA:6,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/object-id.ts -FN:5,(anonymous_4) -FNF:1 -FNH:0 -FNDA:0,(anonymous_4) -DA:2,22 -DA:4,0 -DA:5,22 -DA:6,0 -DA:8,22 -LF:5 -LH:3 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/op.ts -FN:12,(anonymous_4) -FNF:1 -FNH:1 -FNDA:12,(anonymous_4) -DA:1,22 -DA:2,22 -DA:3,22 -DA:5,22 -DA:11,0 -DA:12,22 -DA:13,12 -DA:17,22 -LF:8 -LH:7 -BRDA:13,0,0,0 -BRDA:13,0,1,12 -BRF:2 -BRH:1 -end_of_record -TN: -SF:src/or.ts -FNF:0 -FNH:0 -DA:1,22 -DA:3,0 -DA:5,22 -LF:3 -LH:2 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/order-by.ts -FN:6,(anonymous_2) -FN:7,(anonymous_3) -FNF:2 -FNH:2 -FNDA:3,(anonymous_2) -FNDA:4,(anonymous_3) -DA:1,22 -DA:2,22 -DA:3,22 -DA:6,22 -DA:7,4 -DA:9,22 -LF:6 -LH:6 -BRDA:7,0,0,2 -BRDA:7,0,1,2 -BRF:2 -BRH:2 -end_of_record -TN: -SF:src/pick.ts -FN:4,(anonymous_3) -FNF:1 -FNH:0 -FNDA:0,(anonymous_3) -DA:3,0 -DA:4,22 -DA:5,0 -DA:6,0 -DA:7,0 -DA:11,0 -DA:14,22 -LF:7 -LH:2 -BRDA:7,0,0,0 -BRDA:7,0,1,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/quoted-nstring.ts -FN:6,(anonymous_4) -FN:10,(anonymous_5) -FN:18,(anonymous_6) -FN:26,(anonymous_7) -FNF:4 -FNH:4 -FNDA:4267,(anonymous_4) -FNDA:4265,(anonymous_5) -FNDA:4264,(anonymous_6) -FNDA:4264,(anonymous_7) -DA:3,22 -DA:6,22 -DA:7,4267 -DA:10,22 -DA:11,4265 -DA:12,4263 -DA:14,2 -DA:18,22 -DA:19,4264 -DA:20,4263 -DA:22,1 -DA:25,0 -DA:26,22 -DA:27,4264 -DA:28,0 -DA:30,4264 -DA:33,4264 -LF:17 -LH:15 -BRDA:7,0,0,0 -BRDA:7,0,1,4267 -BRDA:11,1,0,4263 -BRDA:19,2,0,4263 -BRDA:27,3,0,0 -BRF:5 -BRH:3 -end_of_record -TN: -SF:src/random-identifier.ts -FN:7,(anonymous_2) -FN:13,(anonymous_3) -FN:14,(anonymous_4) -FNF:3 -FNH:3 -FNDA:32,(anonymous_2) -FNDA:2,(anonymous_3) -FNDA:32,(anonymous_4) -DA:1,22 -DA:4,22 -DA:7,22 -DA:8,32 -DA:9,32 -DA:13,22 -DA:14,32 -DA:16,22 -LF:8 -LH:8 -BRDA:13,0,0,0 -BRDA:13,1,0,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/raw.ts -FN:5,(anonymous_4) -FNF:1 -FNH:1 -FNDA:9282,(anonymous_4) -DA:1,22 -DA:4,0 -DA:5,22 -DA:6,9282 -DA:8,9282 -LF:5 -LH:4 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/replace-objects.ts -FN:15,(anonymous_4) -FN:16,(anonymous_5) -FN:20,(anonymous_6) -FN:45,(anonymous_7) -FN:46,(anonymous_8) -FNF:5 -FNH:0 -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -DA:1,22 -DA:2,22 -DA:3,22 -DA:4,22 -DA:5,22 -DA:6,22 -DA:7,22 -DA:8,22 -DA:9,22 -DA:10,22 -DA:15,22 -DA:16,22 -DA:19,0 -DA:20,22 -DA:32,0 -DA:33,0 -DA:36,0 -DA:38,0 -DA:39,0 -DA:42,0 -DA:43,0 -DA:44,0 -DA:45,0 -DA:46,0 -DA:48,0 -DA:62,22 -LF:26 -LH:14 -BRDA:27,0,0,0 -BRDA:32,1,0,0 -BRDA:38,2,0,0 -BRDA:42,3,0,0 -BRDA:42,3,1,0 -BRDA:43,4,0,0 -BRDA:43,4,1,0 -BRDA:44,5,0,0 -BRDA:44,5,1,0 -BRF:9 -BRH:0 -end_of_record -TN: -SF:src/row.ts -FN:8,(anonymous_4) -FNF:1 -FNH:1 -FNDA:4191,(anonymous_4) -DA:1,22 -DA:2,22 -DA:3,22 -DA:7,0 -DA:8,22 -DA:9,4191 -DA:11,4191 -LF:7 -LH:6 -BRDA:8,0,0,4191 -BRF:1 -BRH:1 -end_of_record -TN: -SF:src/rowset.ts -FN:5,(anonymous_4) -FNF:1 -FNH:0 -FNDA:0,(anonymous_4) -DA:1,22 -DA:4,0 -DA:5,22 -DA:6,0 -DA:7,0 -DA:9,0 -DA:12,22 -LF:7 -LH:3 -BRDA:6,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/sanitised-identifier.ts -FNF:0 -FNH:0 -DA:1,22 -DA:3,22 -DA:5,0 -DA:10,970 -LF:4 -LH:3 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/sanitised.ts -FNF:0 -FNH:0 -DA:1,22 -DA:3,0 -DA:8,31625 -LF:3 -LH:2 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/select.ts -FN:10,(anonymous_5) -FN:11,(anonymous_6) -FN:14,(anonymous_7) -FN:15,(anonymous_8) -FNF:4 -FNH:0 -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -DA:1,22 -DA:2,22 -DA:3,22 -DA:4,22 -DA:5,22 -DA:7,22 -DA:9,0 -DA:10,22 -DA:11,0 -DA:13,0 -DA:14,22 -DA:15,0 -DA:16,0 -DA:17,0 -DA:19,0 -DA:20,0 -DA:27,22 -LF:17 -LH:9 -BRDA:11,0,0,0 -BRDA:11,0,1,0 -BRDA:14,1,0,0 -BRDA:16,2,0,0 -BRDA:19,3,0,0 -BRDA:19,3,1,0 -BRDA:23,4,0,0 -BRDA:23,4,1,0 -BRF:8 -BRH:0 -end_of_record -TN: -SF:src/star.ts -FN:7,(anonymous_4) -FNF:1 -FNH:0 -FNDA:0,(anonymous_4) -DA:1,22 -DA:4,22 -DA:6,0 -DA:7,22 -DA:8,0 -DA:12,22 -LF:6 -LH:4 -BRDA:8,0,0,0 -BRDA:8,0,1,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/table-hint-limited.ts -FN:50,(anonymous_4) -FNF:1 -FNH:1 -FNDA:18,(anonymous_4) -DA:1,22 -DA:27,22 -DA:49,18 -DA:50,22 -DA:51,18 -DA:52,0 -DA:54,18 -LF:7 -LH:6 -BRDA:51,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/template.ts -FN:8,(anonymous_4) -FNF:1 -FNH:1 -FNDA:406,(anonymous_4) -DA:1,22 -DA:2,22 -DA:3,22 -DA:4,22 -DA:7,0 -DA:8,22 -DA:9,406 -DA:11,406 -LF:8 -LH:7 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/top.ts -FN:15,(anonymous_4) -FNF:1 -FNH:0 -FNDA:0,(anonymous_4) -DA:1,22 -DA:2,22 -DA:3,22 -DA:4,22 -DA:14,0 -DA:15,22 -DA:16,0 -DA:17,0 -DA:19,0 -DA:22,0 -DA:30,22 -LF:11 -LH:6 -BRDA:15,0,0,0 -BRDA:16,1,0,0 -BRDA:19,2,0,0 -BRDA:19,2,1,0 -BRDA:25,3,0,0 -BRDA:25,3,1,0 -BRF:6 -BRH:0 -end_of_record -TN: -SF:src/true-value.ts -FNF:0 -FNH:0 -DA:2,22 -DA:13,0 -DA:14,22 -DA:16,22 -LF:4 -LH:3 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/unique.ts -FN:4,unique -FNF:1 -FNH:1 -FNDA:78,unique -DA:4,0 -DA:5,78 -DA:6,78 -DA:7,78 -DA:8,108 -DA:9,108 -DA:10,105 -DA:11,105 -DA:14,78 -DA:17,78 -LF:10 -LH:9 -BRDA:9,0,0,105 -BRF:1 -BRH:1 -end_of_record -TN: -SF:src/unix.ts -FNF:0 -FNH:0 -DA:1,22 -DA:4,22 -DA:6,22 -LF:3 -LH:3 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/update-objects.ts -FN:15,(anonymous_6) -FN:19,(anonymous_7) -FN:24,(anonymous_8) -FN:46,(anonymous_9) -FN:47,(anonymous_10) -FNF:5 -FNH:0 -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -DA:1,22 -DA:2,22 -DA:3,22 -DA:4,22 -DA:5,22 -DA:6,22 -DA:7,22 -DA:8,22 -DA:9,22 -DA:14,0 -DA:15,22 -DA:16,0 -DA:18,0 -DA:19,22 -DA:20,0 -DA:23,0 -DA:24,22 -DA:35,0 -DA:36,0 -DA:39,0 -DA:40,0 -DA:43,0 -DA:44,0 -DA:45,0 -DA:46,0 -DA:47,0 -DA:49,0 -DA:58,22 -LF:28 -LH:13 -BRDA:30,0,0,0 -BRDA:30,1,0,0 -BRDA:35,2,0,0 -BRDA:39,3,0,0 -BRDA:44,4,0,0 -BRDA:44,4,1,0 -BRDA:45,5,0,0 -BRDA:45,5,1,0 -BRF:8 -BRH:0 -end_of_record -TN: -SF:src/update.ts -FN:13,(anonymous_4) -FNF:1 -FNH:1 -FNDA:6,(anonymous_4) -DA:1,22 -DA:2,22 -DA:3,22 -DA:4,22 -DA:5,22 -DA:9,22 -DA:12,0 -DA:13,22 -DA:21,6 -DA:22,1 -DA:24,5 -DA:25,5 -DA:26,5 -DA:27,5 -DA:28,1 -DA:30,4 -DA:38,22 -LF:17 -LH:16 -BRDA:17,0,0,5 -BRDA:17,1,0,5 -BRDA:21,2,0,1 -BRDA:25,3,0,5 -BRDA:25,3,1,0 -BRDA:27,4,0,1 -BRF:6 -BRH:5 -end_of_record -TN: -SF:src/upsert-objects.ts -FN:16,(anonymous_6) -FN:20,(anonymous_7) -FN:31,(anonymous_8) -FN:55,(anonymous_9) -FN:56,(anonymous_10) -FNF:5 -FNH:0 -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -DA:1,22 -DA:2,22 -DA:3,22 -DA:4,22 -DA:5,22 -DA:6,22 -DA:7,22 -DA:8,22 -DA:9,22 -DA:10,22 -DA:15,0 -DA:16,22 -DA:17,0 -DA:19,0 -DA:20,22 -DA:21,0 -DA:30,0 -DA:31,22 -DA:43,0 -DA:44,0 -DA:47,0 -DA:48,0 -DA:51,0 -DA:52,0 -DA:53,0 -DA:54,0 -DA:55,0 -DA:56,0 -DA:58,0 -DA:70,22 -LF:30 -LH:14 -BRDA:38,0,0,0 -BRDA:38,1,0,0 -BRDA:43,2,0,0 -BRDA:47,3,0,0 -BRDA:52,4,0,0 -BRDA:52,4,1,0 -BRDA:53,5,0,0 -BRDA:53,5,1,0 -BRDA:54,6,0,0 -BRDA:54,6,1,0 -BRF:10 -BRH:0 -end_of_record -TN: -SF:src/where.ts -FN:67,single -FN:82,visitEntry -FN:122,visit -FN:140,(anonymous_11) -FN:151,where -FN:164,and -FN:179,or -FN:187,not -FNF:8 -FNH:8 -FNDA:103,single -FNDA:53,visitEntry -FNDA:170,visit -FNDA:53,(anonymous_11) -FNDA:139,where -FNDA:79,and -FNDA:9,or -FNDA:2,not -DA:1,22 -DA:2,22 -DA:3,22 -DA:4,22 -DA:5,22 -DA:6,22 -DA:7,22 -DA:8,22 -DA:9,22 -DA:10,22 -DA:11,22 -DA:12,22 -DA:13,22 -DA:14,22 -DA:15,22 -DA:16,22 -DA:17,22 -DA:18,22 -DA:19,22 -DA:20,22 -DA:21,22 -DA:22,22 -DA:23,22 -DA:24,22 -DA:25,22 -DA:31,22 -DA:37,22 -DA:59,22 -DA:68,103 -DA:69,27 -DA:72,76 -DA:73,80 -DA:74,74 -DA:75,74 -DA:77,6 -DA:79,70 -DA:83,53 -DA:84,6 -DA:86,47 -DA:87,47 -DA:88,17 -DA:89,17 -DA:92,2 -DA:93,0 -DA:95,2 -DA:96,0 -DA:98,2 -DA:102,2 -DA:103,0 -DA:105,2 -DA:106,0 -DA:108,2 -DA:110,13 -DA:119,30 -DA:122,0 -DA:123,170 -DA:124,114 -DA:126,56 -DA:127,56 -DA:128,49 -DA:129,49 -DA:130,8 -DA:131,0 -DA:133,8 -DA:135,41 -DA:136,2 -DA:139,46 -DA:140,53 -DA:141,46 -DA:143,0 -DA:151,0 -DA:152,139 -DA:164,22 -DA:165,79 -DA:166,79 -DA:167,6 -DA:169,73 -DA:179,22 -DA:180,9 -DA:181,9 -DA:182,4 -DA:184,5 -DA:187,22 -DA:188,2 -DA:193,42 -LF:85 -LH:77 -BRDA:68,0,0,27 -BRDA:73,1,0,74 -BRDA:83,2,0,6 -BRDA:87,3,0,17 -BRDA:87,4,0,47 -BRDA:87,4,1,19 -BRDA:89,5,0,1 -BRDA:89,5,1,2 -BRDA:89,5,2,1 -BRDA:89,5,3,1 -BRDA:89,5,4,2 -BRDA:89,5,5,13 -BRDA:92,6,0,0 -BRDA:95,7,0,0 -BRDA:95,8,0,2 -BRDA:95,8,1,2 -BRDA:102,9,0,0 -BRDA:105,10,0,0 -BRDA:123,11,0,114 -BRDA:127,12,0,49 -BRDA:129,13,0,8 -BRDA:129,14,0,49 -BRDA:129,14,1,8 -BRDA:130,15,0,0 -BRDA:135,16,0,2 -BRDA:139,17,0,46 -BRDA:166,18,0,6 -BRDA:181,19,0,4 -BRDA:188,20,0,2 -BRDA:188,20,1,0 -BRF:30 -BRH:24 -end_of_record -TN: -SF:src/test/client.ts -FN:9,(anonymous_5) -FN:31,(anonymous_6) -FN:37,(anonymous_7) -FN:43,(anonymous_8) -FN:49,(anonymous_9) -FN:50,(anonymous_10) -FN:51,(anonymous_11) -FN:57,(anonymous_12) -FN:61,(anonymous_13) -FN:62,(anonymous_14) -FN:68,(anonymous_15) -FN:83,(anonymous_16) -FN:87,(anonymous_17) -FN:88,(anonymous_18) -FN:91,(anonymous_19) -FN:96,(anonymous_20) -FN:100,(anonymous_21) -FN:104,(anonymous_22) -FN:108,(anonymous_23) -FN:112,(anonymous_24) -FN:116,(anonymous_25) -FN:120,(anonymous_26) -FN:124,(anonymous_27) -FN:136,(anonymous_28) -FNF:24 -FNH:22 -FNDA:4,(anonymous_5) -FNDA:2,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:2,(anonymous_8) -FNDA:4,(anonymous_9) -FNDA:4,(anonymous_10) -FNDA:4,(anonymous_11) -FNDA:4,(anonymous_12) -FNDA:69,(anonymous_13) -FNDA:69,(anonymous_14) -FNDA:69,(anonymous_15) -FNDA:25,(anonymous_16) -FNDA:11,(anonymous_17) -FNDA:11,(anonymous_18) -FNDA:10,(anonymous_19) -FNDA:9,(anonymous_20) -FNDA:13,(anonymous_21) -FNDA:2,(anonymous_22) -FNDA:10,(anonymous_23) -FNDA:7,(anonymous_24) -FNDA:7,(anonymous_25) -FNDA:0,(anonymous_26) -FNDA:4,(anonymous_27) -FNDA:1,(anonymous_28) -DA:1,2 -DA:2,2 -DA:3,2 -DA:5,2 -DA:18,4 -DA:32,2 -DA:33,2 -DA:34,2 -DA:38,0 -DA:39,0 -DA:40,0 -DA:44,2 -DA:45,2 -DA:46,2 -DA:50,4 -DA:51,4 -DA:52,4 -DA:58,4 -DA:62,69 -DA:63,69 -DA:64,0 -DA:65,0 -DA:67,69 -DA:68,69 -DA:69,69 -DA:70,0 -DA:72,69 -DA:73,50 -DA:74,95 -DA:77,69 -DA:79,69 -DA:84,25 -DA:88,11 -DA:92,10 -DA:93,10 -DA:97,9 -DA:101,13 -DA:105,2 -DA:109,10 -DA:113,7 -DA:117,7 -DA:121,0 -DA:133,4 -DA:140,1 -LF:44 -LH:37 -BRDA:9,0,0,0 -BRDA:10,1,0,0 -BRDA:11,2,0,4 -BRDA:12,3,0,4 -BRDA:19,4,0,4 -BRDA:19,4,1,4 -BRDA:52,5,0,0 -BRDA:52,5,1,4 -BRDA:63,6,0,0 -BRDA:69,7,0,0 -BRDA:96,8,0,6 -BRDA:100,9,0,13 -BRDA:129,10,0,4 -BRDA:129,11,0,4 -BRF:14 -BRH:9 -end_of_record From 15c3193e534401b8ccd4d06d9b3dc5a6080eccfc Mon Sep 17 00:00:00 2001 From: Mirek Rusin Date: Thu, 22 Aug 2024 13:10:51 +0200 Subject: [PATCH 3/5] cjs --- tsconfig.cjs.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tsconfig.cjs.json b/tsconfig.cjs.json index 281f72c..9c3c6f8 100644 --- a/tsconfig.cjs.json +++ b/tsconfig.cjs.json @@ -1,8 +1,8 @@ { "extends": "./tsconfig.json", "compilerOptions": { - "module": "Node16", - "moduleResolution": "Node16", + "module": "CommonJS", + "moduleResolution": "Node", "outDir": "cjs", "noEmit": false, "declaration": true, From 113650e5a267880b6c31431c42e6c2ced9025dea Mon Sep 17 00:00:00 2001 From: Mirek Rusin Date: Thu, 22 Aug 2024 13:11:16 +0200 Subject: [PATCH 4/5] drop unused dep --- package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/package.json b/package.json index 5469b5f..78d5c78 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,6 @@ "@prelude/eslint-config": "0.0.1", "@swc/core": "1.7.14", "@swc/jest": "0.2.36", - "@tsconfig/node18": "18.2.4", "@tsconfig/node20": "^20.1.4", "@types/debug": "4.1.12", "@types/jest": "29.5.12", From e9cc7cc66991658ca67de58675696159cde60ae8 Mon Sep 17 00:00:00 2001 From: Mirek Rusin Date: Thu, 22 Aug 2024 13:21:33 +0200 Subject: [PATCH 5/5] drop unused deps --- package.json | 7 ------- 1 file changed, 7 deletions(-) diff --git a/package.json b/package.json index 78d5c78..9e82905 100644 --- a/package.json +++ b/package.json @@ -34,20 +34,13 @@ "author": "Mirek Rusin ", "license": "MIT", "devDependencies": { - "@appliedblockchain/eslint-config": "3.1.1", - "@babel/core": "7.25.2", "@jest/globals": "^29.7.0", "@prelude/eslint-config": "0.0.1", "@swc/core": "1.7.14", "@swc/jest": "0.2.36", "@tsconfig/node20": "^20.1.4", - "@types/debug": "4.1.12", - "@types/jest": "29.5.12", "@types/node": "22.5.0", "@types/tedious": "4.0.14", - "@typescript-eslint/eslint-plugin": "8.2.0", - "@typescript-eslint/parser": "8.2.0", - "debug": "4.3.6", "eslint": "9.9.0", "jest": "29.7.0", "tedious": "19.0.0",