@anmiles/google-api-wrapper 17.0.8 → 18.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/.eslintignore +2 -0
  2. package/.eslintrc.js +23 -7
  3. package/.vscode/settings.json +1 -0
  4. package/CHANGELOG.md +10 -0
  5. package/README.md +4 -2
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +1 -0
  8. package/dist/index.js.map +1 -1
  9. package/dist/lib/api.d.ts +16 -16
  10. package/dist/lib/api.d.ts.map +1 -1
  11. package/dist/lib/api.js +9 -7
  12. package/dist/lib/api.js.map +1 -1
  13. package/dist/lib/auth.d.ts +3 -3
  14. package/dist/lib/auth.d.ts.map +1 -1
  15. package/dist/lib/auth.js +1 -1
  16. package/dist/lib/auth.js.map +1 -1
  17. package/dist/lib/paths.d.ts +5 -5
  18. package/dist/lib/paths.d.ts.map +1 -1
  19. package/dist/lib/paths.js +1 -1
  20. package/dist/lib/paths.js.map +1 -1
  21. package/dist/lib/profiles.d.ts +4 -4
  22. package/dist/lib/profiles.d.ts.map +1 -1
  23. package/dist/lib/profiles.js +4 -4
  24. package/dist/lib/profiles.js.map +1 -1
  25. package/dist/lib/renderer.d.ts +2 -2
  26. package/dist/lib/renderer.d.ts.map +1 -1
  27. package/dist/lib/renderer.js +1 -1
  28. package/dist/lib/renderer.js.map +1 -1
  29. package/dist/lib/secrets.d.ts +14 -13
  30. package/dist/lib/secrets.d.ts.map +1 -1
  31. package/dist/lib/secrets.js +13 -12
  32. package/dist/lib/secrets.js.map +1 -1
  33. package/dist/types/options.d.ts +9 -0
  34. package/dist/types/options.d.ts.map +1 -0
  35. package/dist/types/{common.js → options.js} +1 -1
  36. package/dist/types/options.js.map +1 -0
  37. package/dist/types/secrets.d.ts +2 -5
  38. package/dist/types/secrets.d.ts.map +1 -1
  39. package/jest.config.js +3 -11
  40. package/package.json +63 -55
  41. package/src/index.ts +2 -0
  42. package/src/lib/__tests__/api.test.ts +30 -24
  43. package/src/lib/__tests__/auth.test.ts +4 -5
  44. package/src/lib/__tests__/paths.test.ts +6 -5
  45. package/src/lib/__tests__/profiles.test.ts +17 -27
  46. package/src/lib/__tests__/renderer.test.ts +7 -7
  47. package/src/lib/__tests__/secrets.test.ts +54 -77
  48. package/src/lib/api.ts +36 -26
  49. package/src/lib/auth.ts +5 -5
  50. package/src/lib/paths.ts +8 -8
  51. package/src/lib/profiles.ts +6 -6
  52. package/src/lib/renderer.ts +8 -9
  53. package/src/lib/secrets.ts +22 -19
  54. package/src/types/options.ts +10 -0
  55. package/src/types/secrets.ts +9 -13
  56. package/tsconfig.build.json +2 -2
  57. package/tsconfig.json +5 -5
  58. package/tsconfig.test.json +3 -3
  59. package/.gitlab-ci.yml +0 -117
  60. package/dist/types/common.d.ts +0 -4
  61. package/dist/types/common.d.ts.map +0 -1
  62. package/dist/types/common.js.map +0 -1
  63. package/dist/types/index.d.ts +0 -3
  64. package/dist/types/index.d.ts.map +0 -1
  65. package/dist/types/index.js +0 -19
  66. package/dist/types/index.js.map +0 -1
  67. package/src/types/common.ts +0 -3
  68. package/src/types/index.ts +0 -2
@@ -1 +1 @@
1
- {"version":3,"file":"secrets.js","sourceRoot":"","sources":["../../src/lib/secrets.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"secrets.js","sourceRoot":"","sources":["../../src/lib/secrets.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ interface CommonOptions {
2
+ hideProgress?: boolean;
3
+ }
4
+ interface AuthOptions {
5
+ temporary?: boolean;
6
+ scopes?: string[];
7
+ }
8
+ export type { CommonOptions, AuthOptions };
9
+ //# sourceMappingURL=options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/types/options.ts"],"names":[],"mappings":"AAAA,UAAU,aAAa;IACtB,YAAY,CAAC,EAAG,OAAO,CAAC;CACxB;AAED,UAAU,WAAW;IACpB,SAAS,CAAC,EAAG,OAAO,CAAC;IACrB,MAAM,CAAC,EAAM,MAAM,EAAE,CAAC;CACtB;AAED,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,CAAC"}
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=common.js.map
3
+ //# sourceMappingURL=options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/types/options.ts"],"names":[],"mappings":""}
@@ -1,4 +1,4 @@
1
- export interface Secrets {
1
+ interface Secrets {
2
2
  web: {
3
3
  client_id: `${string}.apps.googleusercontent.com`;
4
4
  project_id: string;
@@ -9,8 +9,5 @@ export interface Secrets {
9
9
  redirect_uris: string[];
10
10
  };
11
11
  }
12
- export interface AuthOptions {
13
- temporary?: boolean;
14
- scopes?: string[];
15
- }
12
+ export type { Secrets };
16
13
  //# sourceMappingURL=secrets.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"secrets.d.ts","sourceRoot":"","sources":["../../src/types/secrets.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,OAAO;IACvB,GAAG,EAAE;QACJ,SAAS,EAAE,GAAG,MAAM,6BAA6B,CAAC;QAClD,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,2CAA2C,CAAC;QACtD,SAAS,EAAE,qCAAqC,CAAC;QACjD,2BAA2B,EAAE,4CAA4C,CAAC;QAC1E,aAAa,EAAE,MAAM,CAAC;QACtB,aAAa,EAAE,MAAM,EAAE,CAAC;KACxB,CAAC;CACF;AAED,MAAM,WAAW,WAAW;IAC3B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB"}
1
+ {"version":3,"file":"secrets.d.ts","sourceRoot":"","sources":["../../src/types/secrets.ts"],"names":[],"mappings":"AAAA,UAAU,OAAO;IAChB,GAAG,EAAE;QACJ,SAAS,EAAqB,GAAG,MAAM,6BAA6B,CAAC;QACrE,UAAU,EAAoB,MAAM,CAAC;QACrC,QAAQ,EAAsB,2CAA2C,CAAC;QAC1E,SAAS,EAAqB,qCAAqC,CAAC;QACpE,2BAA2B,EAAG,4CAA4C,CAAC;QAC3E,aAAa,EAAiB,MAAM,CAAC;QACrC,aAAa,EAAiB,MAAM,EAAE,CAAC;KACvC,CAAC;CACF;AAED,YAAY,EAAE,OAAO,EAAE,CAAC"}
package/jest.config.js CHANGED
@@ -10,18 +10,10 @@ module.exports = {
10
10
  clearMocks : true,
11
11
 
12
12
  roots : [ '<rootDir>/src' ],
13
- testMatch : [ '<rootDir>/src/**/__tests__/*.test.ts' ],
13
+ testMatch : [ '<rootDir>/src/**/__tests__/*.test.{ts,tsx}' ],
14
14
 
15
15
  collectCoverageFrom : [
16
- '<rootDir>/src/**/*.ts',
17
- '!<rootDir>/src/**/*.d.ts',
18
- '!<rootDir>/src/*.ts',
19
- '!<rootDir>/src/types/*.ts',
20
-
21
- '!**/node_modules/**',
22
- '!**/__tests__/**',
23
-
24
- '!<rootDir>/coverage/**',
25
- '!<rootDir>/dist/**',
16
+ '<rootDir>/src/**/*.{ts,tsx}',
17
+ '!<rootDir>/src/**/__tests__/**',
26
18
  ],
27
19
  };
package/package.json CHANGED
@@ -1,57 +1,65 @@
1
1
  {
2
- "name": "@anmiles/google-api-wrapper",
3
- "version": "17.0.8",
4
- "description": "Provides quick interface for getting google API data",
5
- "keywords": [
6
- "google",
7
- "api",
8
- "auth"
9
- ],
10
- "author": "Anatoliy Oblaukhov",
11
- "homepage": "https://gitlab.com/anmiles/lib/google-api-wrapper",
12
- "repository": "gitlab:anmiles/lib/google-api-wrapper",
13
- "license": "MIT",
14
- "engines": {
15
- "node": ">=18.14.2"
16
- },
17
- "main": "dist/index.js",
18
- "scripts": {
19
- "build": "rimraf dist && tsc -p ./tsconfig.build.json && copyfiles -u 1 src/templates/* dist/",
20
- "lint": "eslint --ext .js,.ts .",
21
- "lint:fix": "npm run lint -- --fix",
22
- "test": "jest --verbose",
23
- "test:coverage": "npm test -- --coverage",
24
- "test:ci": "npm test -- --ci --coverage",
25
- "test:watch": "npm test -- --watch",
26
- "test:watch:coverage": "npm test -- --watch --coverage",
27
- "test:report:coverage": "nyc report --nycrc-path ./coverage.config.js -t ./coverage --report-dir ./coverage"
28
- },
29
- "dependencies": {
30
- "@anmiles/logger": "^6.0.0",
31
- "@anmiles/prototypes": "^9.0.0",
32
- "@anmiles/sleep": "^3.0.0",
33
- "googleapis": "^130.0.0",
34
- "out-url": "^1.2.2",
35
- "server-destroy": "^1.0.1"
36
- },
37
- "devDependencies": {
38
- "@anmiles/eslint-config": "^5.0.0",
39
- "@anmiles/tsconfig": "^2.0.0",
40
- "@types/event-emitter": "^0.3.5",
41
- "@types/jest": "^29.5.11",
42
- "@types/server-destroy": "^1.0.3",
43
- "@typescript-eslint/eslint-plugin": "^6.19.0",
44
- "@typescript-eslint/parser": "^6.19.0",
45
- "copyfiles": "^2.4.1",
46
- "eslint": "^8.56.0",
47
- "eslint-plugin-align-assignments": "^1.1.2",
48
- "eslint-plugin-import": "^2.29.1",
49
- "eslint-plugin-jest": "^27.6.3",
50
- "event-emitter": "^0.3.5",
51
- "jest": "^29.7.0",
52
- "nyc": "^15.1.0",
53
- "rimraf": "^5.0.5",
54
- "ts-jest": "^29.1.1",
55
- "typescript": "^5.3.3"
56
- }
2
+ "name": "@anmiles/google-api-wrapper",
3
+ "version": "18.0.0",
4
+ "description": "Wrapper around googleapis for getting data shortly",
5
+ "keywords": [
6
+ "google",
7
+ "api",
8
+ "auth"
9
+ ],
10
+ "author": "Anatoliy Oblaukhov",
11
+ "homepage": "https://github.com/anmiles/google-api-wrapper",
12
+ "repository": "github:anmiles/google-api-wrapper",
13
+ "license": "MIT",
14
+ "engines": {
15
+ "node": ">=18.18.0"
16
+ },
17
+ "main": "dist/index.js",
18
+ "scripts": {
19
+ "build": "rimraf dist && tsc -p ./tsconfig.build.json && copyfiles -u 1 src/templates/* dist/",
20
+ "build:ci": "tsc -noEmit -p ./tsconfig.build.json",
21
+ "lint": "eslint .",
22
+ "lint:fix": "npm run lint -- --fix",
23
+ "test": "jest --verbose",
24
+ "test:coverage": "npm test -- --coverage",
25
+ "test:ci": "npm test -- --ci --coverage",
26
+ "test:watch": "npm test -- --watch",
27
+ "test:watch:coverage": "npm test -- --watch --coverage",
28
+ "test:report:coverage": "nyc report --nycrc-path ./coverage.config.js -t ./coverage --report-dir ./coverage"
29
+ },
30
+ "dependencies": {
31
+ "@anmiles/logger": "^7.0.1",
32
+ "@anmiles/prototypes": "^10.0.1",
33
+ "@anmiles/sleep": "^4.0.0",
34
+ "out-url": "^1.2.2",
35
+ "server-destroy": "^1.0.1"
36
+ },
37
+ "peerDependencies": {
38
+ "googleapis": "^130.0.0"
39
+ },
40
+ "devDependencies": {
41
+ "@anmiles/eslint-config": "^7.0.1",
42
+ "@anmiles/tsconfig": "^2.0.1",
43
+ "@stylistic/eslint-plugin": "^1.7.0",
44
+ "@types/event-emitter": "^0.3.5",
45
+ "@types/jest": "^29.5.12",
46
+ "@types/server-destroy": "^1.0.3",
47
+ "@typescript-eslint/eslint-plugin": "^7.2.0",
48
+ "@typescript-eslint/parser": "^7.2.0",
49
+ "copyfiles": "^2.4.1",
50
+ "eslint": "^8.57.0",
51
+ "eslint-import-resolver-typescript": "^3.6.1",
52
+ "eslint-plugin-align-assignments": "^1.1.2",
53
+ "eslint-plugin-import": "^2.29.1",
54
+ "eslint-plugin-jest": "^27.9.0",
55
+ "eslint-plugin-jsonc": "^2.13.0",
56
+ "eslint-plugin-n": "^16.6.2",
57
+ "eslint-plugin-promise": "^6.1.1",
58
+ "event-emitter": "^0.3.5",
59
+ "jest": "^29.7.0",
60
+ "nyc": "^15.1.0",
61
+ "rimraf": "^5.0.5",
62
+ "ts-jest": "^29.1.2",
63
+ "typescript": "^5.4.2"
64
+ }
57
65
  }
package/src/index.ts CHANGED
@@ -1,3 +1,5 @@
1
+ /* istanbul ignore file */
2
+
1
3
  export { getAPI } from './lib/api';
2
4
  export { createProfile, getProfiles, filterProfiles } from './lib/profiles';
3
5
  export { login, getAuth } from './lib/auth';
@@ -1,12 +1,14 @@
1
- // eslint-disable-next-line camelcase
2
- import { calendar, calendar_v3 } from 'googleapis/build/src/apis/calendar';
1
+ import type GoogleApis from 'googleapis';
2
+ import type { calendar_v3 } from 'googleapis/build/src/apis/calendar';
3
+ import { calendar } from 'googleapis/build/src/apis/calendar';
3
4
  import logger from '@anmiles/logger';
4
5
  import sleep from '@anmiles/sleep';
5
6
  import auth from '../auth';
6
7
  import secrets from '../secrets';
8
+ import type { CommonResponse } from '../api';
7
9
  import api from '../api';
8
10
 
9
- const items: Array<{ data: string}> = [
11
+ const items: Array<{ data : string }> = [
10
12
  { data : 'first' },
11
13
  { data : 'second' },
12
14
  { data : 'third' },
@@ -25,8 +27,11 @@ const pageTokens = [
25
27
  'token2',
26
28
  ];
27
29
 
28
- const getAPI = <T>(items: Array<Array<T> | null>, pageTokens: Array<string | undefined>) => ({
29
- list : jest.fn().mockImplementation(async ({ pageToken }: {pageToken?: string}) => {
30
+ const getAPI = <T>(items: Array<Array<T> | null>, pageTokens: Array<string | undefined>): {
31
+ list : jest.Mock;
32
+ update : jest.Mock;
33
+ } => ({
34
+ list : jest.fn().mockImplementation(({ pageToken }: { pageToken? : string }): Pick<GoogleApis.Common.GaxiosResponse<CommonResponse<unknown>>, 'data'> => {
30
35
  const listException = getListException();
31
36
 
32
37
  if (listException) {
@@ -37,10 +42,12 @@ const getAPI = <T>(items: Array<Array<T> | null>, pageTokens: Array<string | und
37
42
 
38
43
  return {
39
44
  data : {
40
- items : items[index],
45
+ items : items[index]!,
41
46
  nextPageToken : pageTokens[index + 1],
42
- pageInfo : !items[index] ? null : {
43
- totalResults : items.reduce((sum, list) => sum + (list?.length || 0), 0),
47
+ pageInfo : {
48
+ totalResults : !items[index]
49
+ ? null
50
+ : items.reduce((sum, list) => sum + (list?.length ?? 0), 0),
44
51
  },
45
52
  },
46
53
  };
@@ -48,7 +55,7 @@ const getAPI = <T>(items: Array<Array<T> | null>, pageTokens: Array<string | und
48
55
  update : jest.fn(),
49
56
  });
50
57
 
51
- const args = { key : 'value' };
58
+ const params = { key : 'value' };
52
59
 
53
60
  const profile = 'username1';
54
61
  const apis = {
@@ -59,13 +66,13 @@ const googleAuth = 'googleAuth';
59
66
 
60
67
  const scopes = [ 'scope1', 'scope2' ];
61
68
 
62
- const getListException: jest.Mock<Error | undefined> = jest.fn();
69
+ const getListException = jest.fn() as jest.Mock<Error | undefined>;
63
70
 
64
71
  beforeEach(() => {
65
72
  getListException.mockReturnValue(undefined);
66
73
  });
67
74
 
68
- jest.mock<{ calendar: typeof calendar }>('googleapis/build/src/apis/calendar', () => ({
75
+ jest.mock<{ calendar : typeof calendar }>('googleapis/build/src/apis/calendar', () => ({
69
76
  calendar : jest.fn().mockImplementation(() => apis),
70
77
  }));
71
78
 
@@ -101,7 +108,7 @@ describe('src/lib/api', () => {
101
108
  it('should warn when creating permanent credentials using non-readonly scopes', async () => {
102
109
  await api.getAPI((auth) => calendar({ version : 'v3', auth }), profile, { scopes });
103
110
 
104
- expect(logger.warn).toHaveBeenCalledWith('WARNING: trying to create permanent credentials using non-readonly scopes (scope1,scope2). Permanent credentials will be stored in the file and potentially might be re-used to modify your data');
111
+ expect(logger.warn).toHaveBeenCalledWith('WARNING: trying to create permanent credentials using non-readonly scopes (scope1, scope2). Permanent credentials will be stored in the file and potentially might be re-used to modify your data');
105
112
  });
106
113
 
107
114
  it('should not warn when creating temporary credentials using non-readonly scopes', async () => {
@@ -118,7 +125,6 @@ describe('src/lib/api', () => {
118
125
  });
119
126
 
120
127
  describe('API', () => {
121
- // eslint-disable-next-line camelcase
122
128
  let instance: InstanceType<typeof api.API<calendar_v3.Calendar>>;
123
129
 
124
130
  beforeEach(async () => {
@@ -127,15 +133,15 @@ describe('src/lib/api', () => {
127
133
 
128
134
  describe('getItems', () => {
129
135
  it('should call API list method for each page', async () => {
130
- await instance.getItems((api) => api.calendarList, args);
136
+ await instance.getItems((api) => api.calendarList, params);
131
137
 
132
138
  pageTokens.forEach((pageToken) => {
133
- expect(apis.calendarList.list).toHaveBeenCalledWith({ ...args, pageToken });
139
+ expect(apis.calendarList.list).toHaveBeenCalledWith({ ...params, pageToken });
134
140
  });
135
141
  });
136
142
 
137
143
  it('should output progress by default', async () => {
138
- await instance.getItems((api) => api.calendarList, args);
144
+ await instance.getItems((api) => api.calendarList, params);
139
145
 
140
146
  expect(logger.log).toHaveBeenCalledTimes(response.length);
141
147
  expect(logger.log).toHaveBeenCalledWith('Getting items (2 of 4)...');
@@ -144,13 +150,13 @@ describe('src/lib/api', () => {
144
150
  });
145
151
 
146
152
  it('should not output progress if hidden', async () => {
147
- await instance.getItems((api) => api.calendarList, args, { hideProgress : true });
153
+ await instance.getItems((api) => api.calendarList, params, { hideProgress : true });
148
154
 
149
155
  expect(logger.log).not.toHaveBeenCalled();
150
156
  });
151
157
 
152
158
  it('should sleep after reach request', async () => {
153
- await instance.getItems((api) => api.calendarList, args);
159
+ await instance.getItems((api) => api.calendarList, params);
154
160
 
155
161
  expect(sleep).toHaveBeenCalledTimes(response.length);
156
162
  expect(sleep).toHaveBeenCalledWith(300);
@@ -160,7 +166,7 @@ describe('src/lib/api', () => {
160
166
  const getAuthSpy = jest.spyOn(auth, 'getAuth');
161
167
  const getItemsSpy = jest.spyOn(instance, 'getItems');
162
168
 
163
- await instance.getItems((api) => api.calendarList, args);
169
+ await instance.getItems((api) => api.calendarList, params);
164
170
 
165
171
  expect(getAuthSpy).toHaveBeenCalledTimes(1);
166
172
  expect(getItemsSpy).toHaveBeenCalledTimes(1);
@@ -177,7 +183,7 @@ describe('src/lib/api', () => {
177
183
  getAuthSpy.mockClear();
178
184
  getItemsSpy.mockClear();
179
185
 
180
- await instance.getItems((api) => api.calendarList, args);
186
+ await instance.getItems((api) => api.calendarList, params);
181
187
 
182
188
  expect(logger.warn).toHaveBeenCalledWith('Access token stored is invalid, re-creating...');
183
189
  expect(secrets.deleteCredentials).toHaveBeenCalledWith(profile);
@@ -193,18 +199,18 @@ describe('src/lib/api', () => {
193
199
  getListException.mockReturnValueOnce(error);
194
200
 
195
201
  const instance = await api.getAPI((auth) => calendar({ version : 'v3', auth }), profile, { temporary : true });
196
- await expect(instance.getItems((api) => api.calendarList, args)).rejects.toEqual(error);
202
+ await expect(instance.getItems((api) => api.calendarList, params)).rejects.toEqual(error);
197
203
  }
198
204
  });
199
205
 
200
206
  it('should re-throw API exception if not invalid_grant or Invalid credentials', async () => {
201
207
  const error = new Error('random exception');
202
208
  getListException.mockReturnValueOnce(error);
203
- await expect(instance.getItems((api) => api.calendarList, args)).rejects.toEqual(error);
209
+ await expect(instance.getItems((api) => api.calendarList, params)).rejects.toEqual(error);
204
210
  });
205
211
 
206
212
  it('should return items data', async () => {
207
- const items = await instance.getItems((api) => api.calendarList, args);
213
+ const items = await instance.getItems((api) => api.calendarList, params);
208
214
 
209
215
  expect(items).toEqual(items);
210
216
  });
@@ -212,7 +218,7 @@ describe('src/lib/api', () => {
212
218
  it('should throw if api was not initialized before getting items', async () => {
213
219
  instance = new api.API((auth) => calendar({ version : 'v3', auth }), profile);
214
220
 
215
- await expect(() => instance.getItems((api) => api.calendarList, args)).rejects.toEqual('API is not initialized. Call `init` before getting items.');
221
+ await expect(async () => instance.getItems((api) => api.calendarList, params)).rejects.toEqual(new Error('API is not initialized. Call `init` before getting items.'));
216
222
  });
217
223
  });
218
224
  });
@@ -5,10 +5,11 @@ import profiles from '../profiles';
5
5
  import secrets from '../secrets';
6
6
 
7
7
  import auth from '../auth';
8
- const original = jest.requireActual('../auth').default as typeof auth;
8
+
9
+ const original = jest.requireActual<{ default : typeof auth }>('../auth').default;
9
10
  jest.mock<typeof auth>('../auth', () => ({
10
11
  login : jest.fn(),
11
- getAuth : jest.fn().mockImplementation(async () => googleAuth),
12
+ getAuth : jest.fn().mockImplementation(() => googleAuth),
12
13
  }));
13
14
 
14
15
  jest.mock<Partial<typeof logger>>('@anmiles/logger', () => ({
@@ -22,7 +23,7 @@ jest.mock<Partial<typeof profiles>>('../profiles', () => ({
22
23
 
23
24
  jest.mock<Partial<typeof secrets>>('../secrets', () => ({
24
25
  getSecrets : jest.fn().mockImplementation(() => secretsObject),
25
- getCredentials : jest.fn().mockImplementation(async () => credentials),
26
+ getCredentials : jest.fn().mockImplementation(() => credentials),
26
27
  }));
27
28
 
28
29
  jest.mock('googleapis', () => ({
@@ -44,11 +45,9 @@ const googleAuth = {
44
45
 
45
46
  const secretsObject = {
46
47
  web : {
47
- /* eslint-disable camelcase */
48
48
  client_id : 'client_id',
49
49
  client_secret : 'client_secret',
50
50
  redirect_uris : [ 'redirect_uri' ],
51
- /* eslint-enable camelcase */
52
51
  },
53
52
  };
54
53
 
@@ -1,8 +1,9 @@
1
- import fs from 'fs';
2
- import path from 'path';
1
+ import type fs from 'fs';
2
+ import type path from 'path';
3
3
 
4
- import paths from '../paths';
5
- const original = jest.requireActual('../paths').default as typeof paths;
4
+ import type paths from '../paths';
5
+
6
+ const original = jest.requireActual<{ default : typeof paths }>('../paths').default;
6
7
  jest.mock<typeof paths>('../paths', () => ({
7
8
  getProfilesFile : jest.fn().mockImplementation(() => profilesFile),
8
9
  getScopesFile : jest.fn().mockImplementation(() => scopesFile),
@@ -18,7 +19,7 @@ jest.mock<Partial<typeof fs>>('fs', () => ({
18
19
  }));
19
20
 
20
21
  jest.mock<Partial<typeof path>>('path', () => ({
21
- join : jest.fn().mockImplementation((...args) => args.join('/')),
22
+ join : jest.fn().mockImplementation((...args: string[]) => args.join('/')),
22
23
  }));
23
24
 
24
25
  const profile = 'username';
@@ -1,9 +1,10 @@
1
1
  import fs from 'fs';
2
- import logger from '@anmiles/logger';
3
- import paths from '../paths';
2
+ import type logger from '@anmiles/logger';
3
+ import type paths from '../paths';
4
4
 
5
5
  import profiles from '../profiles';
6
- const original = jest.requireActual('../profiles').default as typeof profiles;
6
+
7
+ const original = jest.requireActual<{ default : typeof profiles }>('../profiles').default;
7
8
  jest.mock<typeof profiles>('../profiles', () => ({
8
9
  getProfiles : jest.fn().mockImplementation(() => existingProfiles),
9
10
  setProfiles : jest.fn(),
@@ -15,7 +16,7 @@ jest.mock<Partial<typeof fs>>('fs', () => ({
15
16
  mkdirSync : jest.fn(),
16
17
  renameSync : jest.fn(),
17
18
  writeFileSync : jest.fn(),
18
- existsSync : jest.fn().mockImplementation((file) => existingFiles.includes(file)),
19
+ existsSync : jest.fn().mockImplementation((file: string) => existingFiles.includes(file)),
19
20
  }));
20
21
 
21
22
  jest.mock<Partial<typeof logger>>('@anmiles/logger', () => ({
@@ -36,27 +37,14 @@ const allProfiles = [ profile1, profile2 ];
36
37
  let existingProfiles: string[];
37
38
  let existingFiles: string[] = [];
38
39
 
39
- let getJSONSpy: jest.SpyInstance;
40
- let writeJSONSpy: jest.SpyInstance;
41
-
42
- beforeAll(() => {
43
- getJSONSpy = jest.spyOn(fs, 'getJSON');
44
- writeJSONSpy = jest.spyOn(fs, 'writeJSON');
45
- });
40
+ const getJSONSpy = jest.spyOn(fs, 'getJSON').mockImplementation(() => json);
41
+ const writeJSONSpy = jest.spyOn(fs, 'writeJSON').mockImplementation();
46
42
 
47
43
  beforeEach(() => {
48
- getJSONSpy.mockImplementation(() => json);
49
- writeJSONSpy.mockImplementation();
50
-
51
44
  existingFiles = [];
52
45
  existingProfiles = [ 'username1', 'username2' ];
53
46
  });
54
47
 
55
- afterAll(() => {
56
- getJSONSpy.mockRestore();
57
- writeJSONSpy.mockRestore();
58
- });
59
-
60
48
  describe('src/lib/profiles', () => {
61
49
 
62
50
  describe('getProfiles', () => {
@@ -64,15 +52,15 @@ describe('src/lib/profiles', () => {
64
52
  original.getProfiles();
65
53
 
66
54
  expect(getJSONSpy).toHaveBeenCalled();
67
- expect(getJSONSpy.mock.calls[0][0]).toEqual(profilesFile);
55
+ expect(getJSONSpy.mock.calls[0]?.[0]).toEqual(profilesFile);
68
56
  });
69
57
 
70
58
  it('should fallback to empty profiles array', () => {
71
59
  original.getProfiles();
72
60
 
73
- const fallback = getJSONSpy.mock.calls[0][1];
61
+ const fallback = getJSONSpy.mock.calls[0]?.[1];
74
62
 
75
- expect(fallback()).toEqual([]);
63
+ expect(fallback?.()).toEqual([]);
76
64
  });
77
65
 
78
66
  it('should return JSON', () => {
@@ -92,7 +80,9 @@ describe('src/lib/profiles', () => {
92
80
 
93
81
  describe('createProfile', () => {
94
82
  it('should output error and do nothing if profile is falsy', () => {
95
- const func = () => original.createProfile('');
83
+ const func = (): void => {
84
+ original.createProfile('');
85
+ };
96
86
 
97
87
  expect(func).toThrow('Usage: `npm run create <profile>` where `profile` - is any profile name you want');
98
88
  });
@@ -132,17 +122,17 @@ describe('src/lib/profiles', () => {
132
122
  it('should output error if no profiles', () => {
133
123
  existingProfiles = [];
134
124
 
135
- const func = () => original.filterProfiles();
125
+ const func = (): string[] => original.filterProfiles();
136
126
 
137
- expect(func).toThrow('Please `npm run create` at least one profile');
127
+ expect(func).toThrow(new Error('Please `npm run create` at least one profile'));
138
128
  });
139
129
 
140
130
  it('should output error if profile does not exist', () => {
141
131
  const newProfile = 'newProfile';
142
132
 
143
- const func = () => original.filterProfiles(newProfile);
133
+ const func = (): string[] => original.filterProfiles(newProfile);
144
134
 
145
- expect(func).toThrow(`Profile '${newProfile}' does not exist`);
135
+ expect(func).toThrow(new Error(`Profile '${newProfile}' does not exist`));
146
136
  });
147
137
 
148
138
  it('should return array with requested profile if it exists', () => {
@@ -1,9 +1,9 @@
1
1
  import fs from 'fs';
2
- import path from 'path';
3
- import paths from '../paths';
4
- import renderer from '../renderer';
2
+ import type path from 'path';
3
+ import type paths from '../paths';
4
+ import type renderer from '../renderer';
5
5
 
6
- const original = jest.requireActual('../renderer').default as typeof renderer;
6
+ const original = jest.requireActual<{ default : typeof renderer }>('../renderer').default;
7
7
 
8
8
  type TemplateName = keyof typeof original.templates;
9
9
  type GetFileName<T extends TemplateName> = `${T}.html`;
@@ -28,7 +28,7 @@ jest.mock<Partial<typeof fs>>('fs', () => ({
28
28
  }));
29
29
 
30
30
  jest.mock<Partial<typeof path>>('path', () => ({
31
- join : jest.fn().mockImplementation((...args) => args.join('/')),
31
+ join : jest.fn().mockImplementation((...paths: string[]) => paths.join('/')),
32
32
  }));
33
33
 
34
34
  jest.mock<Partial<typeof paths>>('../paths', () => ({
@@ -72,9 +72,9 @@ describe('src/lib/renderer', () => {
72
72
  });
73
73
 
74
74
  it('should replace non-existing template variable with empty string', () => {
75
- const values = { name : 'scope.readonly' };
75
+ const values = { name : 'scope.readonly', type : undefined, title : undefined };
76
76
 
77
- const result = original.render('scope', values as any);
77
+ const result = original.render('scope', values);
78
78
 
79
79
  expect(result).toEqual('scope type = () title = () name = (scope.readonly)');
80
80
  });