diff --git a/package-lock.json b/package-lock.json index 0714f889b..3045c4fc4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -33,6 +33,7 @@ "@semantic-release/npm": "12.0.1", "@semantic-release/release-notes-generator": "14.0.3", "@types/facebook-js-sdk": "3.3.11", + "@types/jest": "29.5.14", "babel-jest": "29.5.0", "babel-plugin-inline-package-json": "2.0.0", "babel-plugin-minify-dead-code-elimination": "0.5.2", @@ -7240,6 +7241,16 @@ "@types/istanbul-lib-report": "*" } }, + "node_modules/@types/jest": { + "version": "29.5.14", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.14.tgz", + "integrity": "sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==", + "dev": true, + "dependencies": { + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + } + }, "node_modules/@types/jsdom": { "version": "20.0.1", "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz", @@ -36327,6 +36338,16 @@ "@types/istanbul-lib-report": "*" } }, + "@types/jest": { + "version": "29.5.14", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.14.tgz", + "integrity": "sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==", + "dev": true, + "requires": { + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + } + }, "@types/jsdom": { "version": "20.0.1", "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz", diff --git a/package.json b/package.json index 702d591a4..475ed131c 100644 --- a/package.json +++ b/package.json @@ -55,6 +55,7 @@ "@semantic-release/npm": "12.0.1", "@semantic-release/release-notes-generator": "14.0.3", "@types/facebook-js-sdk": "3.3.11", + "@types/jest": "29.5.14", "babel-jest": "29.5.0", "babel-plugin-inline-package-json": "2.0.0", "babel-plugin-minify-dead-code-elimination": "0.5.2", @@ -108,7 +109,7 @@ "posttest:mongodb": "mongodb-runner stop --all", "lint": "eslint --cache src/ integration/", "lint:fix": "eslint --fix --cache src/ integration/", - "test:types": "eslint types/tests.ts -c eslint.config.test.mjs", + "test:types": "eslint types/tests/ -c ./types/eslint.config.mjs", "watch": "cross-env PARSE_BUILD=${PARSE_BUILD} gulp watch", "watch:browser": "cross-env PARSE_BUILD=browser npm run watch", "watch:node": "cross-env PARSE_BUILD=node npm run watch", diff --git a/eslint.config.test.mjs b/types/eslint.config.mjs similarity index 100% rename from eslint.config.test.mjs rename to types/eslint.config.mjs diff --git a/types/tests.ts b/types/tests/Parse-tests.ts similarity index 98% rename from types/tests.ts rename to types/tests/Parse-tests.ts index 38e5a3fe1..05fb8156a 100644 --- a/types/tests.ts +++ b/types/tests/Parse-tests.ts @@ -2079,40 +2079,6 @@ function testRole() { } } -function testSession() { - async function testConstructor() { - // $ExpectType ParseSession - const session = new Parse.Session(); - - // $ExpectType ParseSession<{ example: number; }> - new Parse.Session({ example: 100 }); - - // $ExpectType ParseSession<{ example: number; }> - new Parse.Session<{ example: number }>(); - - // $ExpectType ParseSession<{ example: number; }> - new Parse.Session<{ example: number }>({ example: 100 }); - - // $ExpectError - new Parse.Session<{ example: number }>({ example: 'hello' }); - - // $ExpectType boolean - Parse.Session.isCurrentSessionRevocable(); - - // $ExpectType string[] - Parse.Session.readOnlyAttributes(); - - // $ExpectType string - session.getSessionToken(); - - // $ExpectType ParseSession - await Parse.Session.current(); - - // $ExpectType ParseSession<{ example: string; }> - await Parse.Session.current>(); - } -} - function testUser() { function testConstructor() { // $ExpectType ParseUser diff --git a/types/tests/ParseSession-tests.ts b/types/tests/ParseSession-tests.ts new file mode 100644 index 000000000..2c8bdf78a --- /dev/null +++ b/types/tests/ParseSession-tests.ts @@ -0,0 +1,41 @@ +import Parse from 'parse'; + +describe('Parse.Session Type Definitions', () => { + it('constructor', () => { + // $ExpectType ParseSession + new Parse.Session(); + + // $ExpectType ParseSession<{ example: number; }> + new Parse.Session({ example: 100 }); + + // $ExpectType ParseSession<{ example: number; }> + new Parse.Session<{ example: number }>(); + + // $ExpectType ParseSession<{ example: number; }> + new Parse.Session<{ example: number }>({ example: 100 }); + + // $ExpectError + new Parse.Session<{ example: number }>({ example: 'hello' }); + }); + + it('instance methods', () => { + const session = new Parse.Session(); + + // $ExpectType string + session.getSessionToken(); + }); + + it('static methods', async () => { + // $ExpectType boolean + Parse.Session.isCurrentSessionRevocable(); + + // $ExpectType string[] + Parse.Session.readOnlyAttributes(); + + // $ExpectType ParseSession + await Parse.Session.current(); + + // $ExpectType ParseSession<{ example: string; }> + await Parse.Session.current>(); + }); +}); diff --git a/types/tsconfig.json b/types/tsconfig.json index 040fee57f..4e4a26706 100644 --- a/types/tsconfig.json +++ b/types/tsconfig.json @@ -6,7 +6,7 @@ "noImplicitThis": true, "strictFunctionTypes": true, "strictNullChecks": true, - "types": [], + "types": ["jest"], "noEmit": true, "forceConsistentCasingInFileNames": true, @@ -20,6 +20,6 @@ } }, "include": [ - "tests.ts" + "tests/**/*.ts" ] }