Skip to content

Commit 11ac6d0

Browse files
Ceddy Muhozanodkz
Ceddy Muhoza
authored andcommitted
feat: add TypeScript definitions
* TypeScript support * TypeScript support
1 parent 122ab44 commit 11ac6d0

File tree

8 files changed

+197
-14
lines changed

8 files changed

+197
-14
lines changed

package.json

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,12 @@
55
"files": [
66
"lib",
77
"mjs",
8-
"README.md"
8+
"README.md",
9+
"types"
910
],
1011
"main": "lib/index.js",
1112
"module": "mjs/index.mjs",
13+
"types": "types/index.d.ts",
1214
"repository": {
1315
"type": "git",
1416
"url": "https://github.com/graphql-compose/graphql-compose-pagination.git"
@@ -36,6 +38,7 @@
3638
"@babel/plugin-transform-runtime": "^7.3.4",
3739
"@babel/preset-env": "^7.3.4",
3840
"@babel/preset-flow": "^7.0.0",
41+
"@types/graphql": "^14.0.7",
3942
"babel-core": "^7.0.0-bridge.0",
4043
"babel-eslint": "^10.0.1",
4144
"babel-jest": "^24.5.0",
@@ -52,7 +55,9 @@
5255
"jest": "^24.5.0",
5356
"prettier": "^1.16.4",
5457
"rimraf": "^2.6.3",
55-
"semantic-release": "^15.13.3"
58+
"semantic-release": "^15.13.3",
59+
"tslint": "^5.14.0",
60+
"typescript": "^3.3.4000"
5661
},
5762
"config": {
5863
"commitizen": {
@@ -73,8 +78,10 @@
7378
"watch": "jest --watch",
7479
"coverage": "jest --coverage",
7580
"lint": "eslint --ext .js ./src",
81+
"tslint": "tslint -p . \"types/**/*.d.ts\"",
82+
"check-ts": "tsc",
7683
"flow": "./node_modules/.bin/flow",
77-
"test": "npm run coverage && npm run lint && npm run flow",
84+
"test": "npm run coverage && npm run lint && npm run flow && npm run check-ts",
7885
"link": "yarn build && yarn link graphql-compose && yarn link",
7986
"unlink": "rimraf node_modules && yarn install",
8087
"semantic-release": "semantic-release"

tsconfig.json

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{
2+
"compilerOptions": {
3+
"target": "es5",
4+
"module": "commonjs",
5+
"strict": true,
6+
"lib": [
7+
"es2017",
8+
"esnext.asynciterable"
9+
]
10+
},
11+
"include": [
12+
"types/**/*.d.ts"
13+
],
14+
"exclude": [
15+
"./node_modules"
16+
]
17+
}

tslint.json

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{
2+
"defaultSeverity": "error",
3+
"extends": [
4+
"tslint:recommended"
5+
],
6+
"jsRules": {},
7+
"rules": {
8+
"quotemark": [true, "single"],
9+
"trailing-comma": [false],
10+
"ordered-imports": false,
11+
"member-ordering": [true, { "order": "fields-first" }],
12+
"variable-name": false,
13+
"interface-name": ["never-prefix"],
14+
"no-reference-import": false
15+
},
16+
"rulesDirectory": []
17+
}

types/composeWithPagination.d.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import { ObjectTypeComposer } from 'graphql-compose';
2+
import { ComposeWithPaginationOpts } from './paginationResolver';
3+
export declare function composeWithPagination<TSource, TContext>(typeComposer: ObjectTypeComposer<TSource, TContext>, opts: ComposeWithPaginationOpts): ObjectTypeComposer<TSource, TContext>;

types/index.d.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import { composeWithPagination } from './composeWithPagination';
2+
import { preparePaginationResolver } from './paginationResolver';
3+
export default composeWithPagination;
4+
export { composeWithPagination, preparePaginationResolver };
5+
export { ComposeWithPaginationOpts } from './paginationResolver';

types/paginationResolver.d.ts

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import { ProjectionType, Resolver, ObjectTypeComposer } from 'graphql-compose';
2+
import { GraphQLResolveInfo } from 'graphql-compose/lib/graphql';
3+
export declare const DEFAULT_RESOLVER_NAME = "pagination";
4+
export declare const DEFAULT_PER_PAGE = 20;
5+
export interface ComposeWithPaginationOpts {
6+
paginationResolverName?: string;
7+
findResolverName: string;
8+
countResolverName: string;
9+
perPage?: number;
10+
}
11+
export interface PaginationResolveParams<TContext> {
12+
source: any;
13+
args: {
14+
page?: number;
15+
perPage?: number;
16+
sort?: any;
17+
filter?: {
18+
[fieldName: string]: any;
19+
};
20+
[argName: string]: any;
21+
};
22+
context: TContext;
23+
info: GraphQLResolveInfo;
24+
projection: ProjectionType;
25+
[opt: string]: any;
26+
}
27+
export interface PaginationType {
28+
count: number;
29+
items: any[];
30+
pageInfo: PaginationInfoType;
31+
}
32+
export interface PaginationInfoType {
33+
currentPage: number;
34+
perPage: number;
35+
itemCount: number;
36+
pageCount: number;
37+
hasPreviousPage: boolean;
38+
hasNextPage: boolean;
39+
}
40+
export declare function preparePaginationResolver<TSource, TContext>(tc: ObjectTypeComposer<TSource, TContext>, opts: ComposeWithPaginationOpts): Resolver<TSource, TContext>;

types/preparePaginationType.d.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import { SchemaComposer, ObjectTypeComposer } from 'graphql-compose';
2+
export declare function preparePaginationInfoTC<TContext>(schemaComposer: SchemaComposer<TContext>): ObjectTypeComposer<any, TContext>;
3+
export declare function preparePaginationTC<TSource, TContext>(tc: ObjectTypeComposer<TSource, TContext>, resolverName?: string): ObjectTypeComposer<TSource, TContext>;

yarn.lock

Lines changed: 102 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1014,6 +1014,11 @@
10141014
"@types/minimatch" "*"
10151015
"@types/node" "*"
10161016

1017+
"@types/graphql@^14.0.7":
1018+
version "14.0.7"
1019+
resolved "https://registry.yarnpkg.com/@types/graphql/-/graphql-14.0.7.tgz#daa09397220a68ce1cbb3f76a315ff3cd92312f6"
1020+
integrity sha512-BoLDjdvLQsXPZLJux3lEZANwGr3Xag56Ngy0U3y8uoRSDdeLcn43H3oBcgZlnd++iOQElBpaRVDHPzEDekyvXQ==
1021+
10171022
"@types/istanbul-lib-coverage@^1.1.0":
10181023
version "1.1.0"
10191024
resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.0.tgz#2cc2ca41051498382b43157c8227fea60363f94a"
@@ -1181,6 +1186,11 @@ ansi-regex@^4.0.0, ansi-regex@^4.1.0:
11811186
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997"
11821187
integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==
11831188

1189+
ansi-styles@^2.2.1:
1190+
version "2.2.1"
1191+
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
1192+
integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=
1193+
11841194
ansi-styles@^3.1.0, ansi-styles@^3.2.0:
11851195
version "3.2.0"
11861196
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88"
@@ -1351,6 +1361,15 @@ aws4@^1.8.0:
13511361
version "1.8.0"
13521362
resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f"
13531363

1364+
babel-code-frame@^6.22.0:
1365+
version "6.26.0"
1366+
resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b"
1367+
integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=
1368+
dependencies:
1369+
chalk "^1.1.3"
1370+
esutils "^2.0.2"
1371+
js-tokens "^3.0.2"
1372+
13541373
babel-core@^7.0.0-bridge.0:
13551374
version "7.0.0-bridge.0"
13561375
resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece"
@@ -1560,7 +1579,7 @@ buffer-from@^1.0.0:
15601579
version "1.1.0"
15611580
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.0.tgz#87fcaa3a298358e0ade6e442cfce840740d1ad04"
15621581

1563-
builtin-modules@^1.0.0:
1582+
builtin-modules@^1.0.0, builtin-modules@^1.1.1:
15641583
version "1.1.1"
15651584
resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
15661585

@@ -1696,6 +1715,17 @@ center-align@^0.1.1:
16961715
align-text "^0.1.3"
16971716
lazy-cache "^1.0.3"
16981717

1718+
chalk@^1.1.3:
1719+
version "1.1.3"
1720+
resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
1721+
integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=
1722+
dependencies:
1723+
ansi-styles "^2.2.1"
1724+
escape-string-regexp "^1.0.2"
1725+
has-ansi "^2.0.0"
1726+
strip-ansi "^3.0.0"
1727+
supports-color "^2.0.0"
1728+
16991729
chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0:
17001730
version "2.2.0"
17011731
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.2.0.tgz#477b3bf2f9b8fd5ca9e429747e37f724ee7af240"
@@ -1704,18 +1734,18 @@ chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0:
17041734
escape-string-regexp "^1.0.5"
17051735
supports-color "^4.0.0"
17061736

1707-
chalk@^2.3.2:
1708-
version "2.4.1"
1709-
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e"
1737+
chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2:
1738+
version "2.4.2"
1739+
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
1740+
integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
17101741
dependencies:
17111742
ansi-styles "^3.2.1"
17121743
escape-string-regexp "^1.0.5"
17131744
supports-color "^5.3.0"
17141745

1715-
chalk@^2.4.1, chalk@^2.4.2:
1716-
version "2.4.2"
1717-
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
1718-
integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
1746+
chalk@^2.3.2:
1747+
version "2.4.1"
1748+
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e"
17191749
dependencies:
17201750
ansi-styles "^3.2.1"
17211751
escape-string-regexp "^1.0.5"
@@ -1902,6 +1932,11 @@ combined-stream@^1.0.5, combined-stream@~1.0.5:
19021932
dependencies:
19031933
delayed-stream "~1.0.0"
19041934

1935+
commander@^2.12.1:
1936+
version "2.19.0"
1937+
resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a"
1938+
integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==
1939+
19051940
commander@^2.8.1, commander@~2.17.1:
19061941
version "2.17.1"
19071942
resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf"
@@ -2261,6 +2296,11 @@ diff-sequences@^24.3.0:
22612296
resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.3.0.tgz#0f20e8a1df1abddaf4d9c226680952e64118b975"
22622297
integrity sha512-xLqpez+Zj9GKSnPWS0WZw1igGocZ+uua8+y+5dDNTT934N3QuY1sp2LkHzwiaYQGz60hMq0pjAshdeXm5VUOEw==
22632298

2299+
diff@^3.2.0:
2300+
version "3.5.0"
2301+
resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12"
2302+
integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==
2303+
22642304
dir-glob@^2.0.0:
22652305
version "2.0.0"
22662306
resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034"
@@ -2424,7 +2464,7 @@ es6-promisify@^5.0.0:
24242464
dependencies:
24252465
es6-promise "^4.0.3"
24262466

2427-
escape-string-regexp@^1.0.5:
2467+
escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
24282468
version "1.0.5"
24292469
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
24302470

@@ -3179,6 +3219,13 @@ har-validator@~5.1.0:
31793219
ajv "^5.3.0"
31803220
har-schema "^2.0.0"
31813221

3222+
has-ansi@^2.0.0:
3223+
version "2.0.0"
3224+
resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
3225+
integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=
3226+
dependencies:
3227+
ansi-regex "^2.0.0"
3228+
31823229
has-flag@^2.0.0:
31833230
version "2.0.0"
31843231
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51"
@@ -4148,7 +4195,7 @@ js-levenshtein@^1.1.3:
41484195
version "1.1.3"
41494196
resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.3.tgz#3ef627df48ec8cf24bacf05c0f184ff30ef413c5"
41504197

4151-
js-tokens@^3.0.0:
4198+
js-tokens@^3.0.0, js-tokens@^3.0.2:
41524199
version "3.0.2"
41534200
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
41544201

@@ -4163,6 +4210,14 @@ js-yaml@^3.12.0:
41634210
argparse "^1.0.7"
41644211
esprima "^4.0.0"
41654212

4213+
js-yaml@^3.7.0:
4214+
version "3.13.0"
4215+
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.0.tgz#38ee7178ac0eea2c97ff6d96fff4b18c7d8cf98e"
4216+
integrity sha512-pZZoSxcCYco+DIKBTimr67J6Hy+EYGZDY/HCWC+iAEA9h1ByhMXAIVUXMcMFpOCxQ/xjXmPI2MkDL5HRm5eFrQ==
4217+
dependencies:
4218+
argparse "^1.0.7"
4219+
esprima "^4.0.0"
4220+
41664221
js-yaml@^3.9.0:
41674222
version "3.10.0"
41684223
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc"
@@ -6796,6 +6851,11 @@ strip-json-comments@^2.0.1, strip-json-comments@~2.0.1:
67966851
version "2.0.1"
67976852
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
67986853

6854+
supports-color@^2.0.0:
6855+
version "2.0.0"
6856+
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
6857+
integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=
6858+
67996859
supports-color@^4.0.0:
68006860
version "4.5.0"
68016861
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b"
@@ -6988,10 +7048,36 @@ trim-right@^1.0.1:
69887048
version "1.0.1"
69897049
resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003"
69907050

6991-
tslib@^1.9.0:
7051+
tslib@^1.8.0, tslib@^1.8.1, tslib@^1.9.0:
69927052
version "1.9.3"
69937053
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286"
69947054

7055+
tslint@^5.14.0:
7056+
version "5.14.0"
7057+
resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.14.0.tgz#be62637135ac244fc9b37ed6ea5252c9eba1616e"
7058+
integrity sha512-IUla/ieHVnB8Le7LdQFRGlVJid2T/gaJe5VkjzRVSRR6pA2ODYrnfR1hmxi+5+au9l50jBwpbBL34txgv4NnTQ==
7059+
dependencies:
7060+
babel-code-frame "^6.22.0"
7061+
builtin-modules "^1.1.1"
7062+
chalk "^2.3.0"
7063+
commander "^2.12.1"
7064+
diff "^3.2.0"
7065+
glob "^7.1.1"
7066+
js-yaml "^3.7.0"
7067+
minimatch "^3.0.4"
7068+
mkdirp "^0.5.1"
7069+
resolve "^1.3.2"
7070+
semver "^5.3.0"
7071+
tslib "^1.8.0"
7072+
tsutils "^2.29.0"
7073+
7074+
tsutils@^2.29.0:
7075+
version "2.29.0"
7076+
resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.29.0.tgz#32b488501467acbedd4b85498673a0812aca0b99"
7077+
integrity sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==
7078+
dependencies:
7079+
tslib "^1.8.1"
7080+
69957081
tunnel-agent@^0.6.0:
69967082
version "0.6.0"
69977083
resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
@@ -7012,6 +7098,11 @@ typedarray@^0.0.6:
70127098
version "0.0.6"
70137099
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
70147100

7101+
typescript@^3.3.4000:
7102+
version "3.3.4000"
7103+
resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.3.4000.tgz#76b0f89cfdbf97827e1112d64f283f1151d6adf0"
7104+
integrity sha512-jjOcCZvpkl2+z7JFn0yBOoLQyLoIkNZAs/fYJkUG6VKy6zLPHJGfQJYFHzibB6GJaF/8QrcECtlQ5cpvRHSMEA==
7105+
70157106
uglify-js@^2.6:
70167107
version "2.8.29"
70177108
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd"

0 commit comments

Comments
 (0)