electron-info 1.21.1 → 1.21.2

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.
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,150 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { expect, describe, test, beforeEach, beforeAll, afterAll, afterEach } from 'vitest';
11
+ import { StatusCodes as HTTP_STATUS } from 'http-status-codes';
12
+ import nock from 'nock';
13
+ import * as fs from 'fs-extra';
14
+ import path from 'node:path';
15
+ import { fileURLToPath } from 'node:url';
16
+ import { v4 as uuid } from 'uuid';
17
+ import { ElectronInfo } from './ElectronInfo.js';
18
+ const __filename = fileURLToPath(import.meta.url);
19
+ const __dirname = path.dirname(__filename);
20
+ const tempDir = path.resolve(__dirname, '.temp');
21
+ const tempDirDownload = path.resolve(__dirname, '.temp/download');
22
+ const mockUrl = 'http://example.com';
23
+ const invalidUrl = 'http://invalid.inv';
24
+ const fixturesDir = path.resolve(__dirname, '../fixtures');
25
+ const fullReleasesFile = path.join(fixturesDir, 'electron-releases-full.json');
26
+ const createRandomBody = () => [
27
+ {
28
+ name: 'electron v8.0.0-nightly.20190820',
29
+ node_id: uuid(),
30
+ npm_dist_tags: [],
31
+ prerelease: !!Math.round(Math.random()),
32
+ published_at: new Date().toUTCString(),
33
+ tag_name: 'v8.0.0-nightly.20190820',
34
+ // eslint-disable-next-line no-magic-numbers
35
+ total_downloads: Math.round(Math.random() * 1000),
36
+ version: '8.0.0-nightly.20190820',
37
+ },
38
+ ];
39
+ const provideReleaseFile = () => __awaiter(void 0, void 0, void 0, function* () {
40
+ yield fs.copy(fullReleasesFile, path.join(tempDirDownload, 'latest.json'));
41
+ });
42
+ describe('ElectronInfo', () => {
43
+ let releases;
44
+ beforeAll(() => __awaiter(void 0, void 0, void 0, function* () {
45
+ yield fs.ensureDir(tempDir);
46
+ releases = yield fs.readFile(fullReleasesFile, 'utf8');
47
+ }));
48
+ beforeEach(() => {
49
+ nock(mockUrl).get('/').reply(HTTP_STATUS.OK, releases);
50
+ });
51
+ afterAll(() => fs.remove(tempDir));
52
+ afterEach(() => nock.cleanAll());
53
+ describe('getElectronReleases', () => {
54
+ test('parses Electron versions', () => __awaiter(void 0, void 0, void 0, function* () {
55
+ const result = yield new ElectronInfo({
56
+ releasesUrl: mockUrl,
57
+ tempDirectory: tempDir,
58
+ }).getElectronReleases('5.0.8');
59
+ expect(result.length).toBe(1);
60
+ expect(result[0].version).toBe('5.0.8');
61
+ }));
62
+ test('parses Electron SemVer', () => __awaiter(void 0, void 0, void 0, function* () {
63
+ const result = yield new ElectronInfo({
64
+ releasesUrl: mockUrl,
65
+ tempDirectory: tempDir,
66
+ }).getElectronReleases('^5');
67
+ // eslint-disable-next-line no-magic-numbers
68
+ expect(result.length).toBe(23);
69
+ }));
70
+ test('parses dist tags', () => __awaiter(void 0, void 0, void 0, function* () {
71
+ const result = yield new ElectronInfo({
72
+ releasesUrl: mockUrl,
73
+ tempDirectory: tempDir,
74
+ }).getElectronReleases('5-0-x');
75
+ expect(result.length).toBe(1);
76
+ }));
77
+ test('returns nothing for invalid versions', () => __awaiter(void 0, void 0, void 0, function* () {
78
+ const result = yield new ElectronInfo({
79
+ releasesUrl: mockUrl,
80
+ tempDirectory: tempDir,
81
+ }).getElectronReleases('invalid');
82
+ expect(result.length).toBe(0);
83
+ }));
84
+ test('forces downloading the release file', () => __awaiter(void 0, void 0, void 0, function* () {
85
+ const customBody = createRandomBody();
86
+ const customUrl = 'http://custom.com';
87
+ yield provideReleaseFile();
88
+ nock(customUrl).get('/').reply(HTTP_STATUS.OK, customBody);
89
+ const result = yield new ElectronInfo({
90
+ forceUpdate: true,
91
+ releasesUrl: customUrl,
92
+ tempDirectory: tempDirDownload,
93
+ }).getElectronReleases('all');
94
+ expect(result).toEqual(customBody);
95
+ }));
96
+ });
97
+ describe('getDependencyReleases', () => {
98
+ test('parses Chrome versions', () => __awaiter(void 0, void 0, void 0, function* () {
99
+ const result = yield new ElectronInfo({
100
+ releasesUrl: mockUrl,
101
+ tempDirectory: tempDir,
102
+ }).getDependencyReleases('chrome', '71.0.3578.98');
103
+ expect(result.length).toBe(2);
104
+ expect(result[0].deps).toBeDefined();
105
+ expect(result[0].deps.chrome).toBe('71.0.3578.98');
106
+ }));
107
+ test('parses Chrome SemVer', () => __awaiter(void 0, void 0, void 0, function* () {
108
+ const result = yield new ElectronInfo({
109
+ releasesUrl: mockUrl,
110
+ tempDirectory: tempDir,
111
+ }).getDependencyReleases('chrome', '~66');
112
+ // eslint-disable-next-line no-magic-numbers
113
+ expect(result.length).toBe(56);
114
+ }));
115
+ test('returns nothing for invalid versions', () => __awaiter(void 0, void 0, void 0, function* () {
116
+ const result = yield new ElectronInfo({
117
+ releasesUrl: mockUrl,
118
+ tempDirectory: tempDir,
119
+ }).getDependencyReleases('chrome', 'invalid');
120
+ expect(result.length).toBe(0);
121
+ }));
122
+ test('limits releases', () => __awaiter(void 0, void 0, void 0, function* () {
123
+ const limit = 2;
124
+ const result = yield new ElectronInfo({
125
+ limit,
126
+ releasesUrl: mockUrl,
127
+ tempDirectory: tempDir,
128
+ }).getDependencyReleases('chrome', 'all');
129
+ expect(result.length).toBe(limit);
130
+ }));
131
+ test('uses a local copy of the releases', () => __awaiter(void 0, void 0, void 0, function* () {
132
+ nock(invalidUrl).get('/').reply(HTTP_STATUS.NOT_FOUND);
133
+ yield provideReleaseFile();
134
+ yield new ElectronInfo({
135
+ releasesUrl: invalidUrl,
136
+ tempDirectory: tempDirDownload,
137
+ }).getDependencyReleases('chrome', 'all');
138
+ }));
139
+ test('uses latest as alias for limit=1', () => __awaiter(void 0, void 0, void 0, function* () {
140
+ const result = yield new ElectronInfo({
141
+ latest: true,
142
+ releasesUrl: mockUrl,
143
+ tempDirectory: tempDir,
144
+ }).getElectronReleases('all');
145
+ expect(result.length).toBe(1);
146
+ expect(result[0].version).toBe('8.0.0-nightly.20190820');
147
+ }));
148
+ });
149
+ });
150
+ //# sourceMappingURL=ElectronInfo.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ElectronInfo.test.js","sourceRoot":"","sources":["../../src/ElectronInfo.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,39 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { assert, describe, test, beforeEach, afterEach } from 'vitest';
11
+ import { StatusCodes as HTTP_STATUS } from 'http-status-codes';
12
+ import nock from 'nock';
13
+ import { HTTPService } from './HTTPService.js';
14
+ const mockUrl = 'http://example.com';
15
+ const FIVE_SECONDS_IN_MILLIS = 5000;
16
+ const HALF_SECOND_IN_MILLIS = 500;
17
+ describe('HTTPService', () => {
18
+ const httpService = new HTTPService({
19
+ debug: false,
20
+ timeout: HALF_SECOND_IN_MILLIS,
21
+ });
22
+ beforeEach(() => {
23
+ nock(mockUrl)
24
+ .get('/')
25
+ .delayConnection(FIVE_SECONDS_IN_MILLIS)
26
+ .reply(HTTP_STATUS.OK, [{ data: 'invalid' }]);
27
+ });
28
+ afterEach(() => nock.cleanAll());
29
+ describe('downloadReleasesFile', () => {
30
+ test('honors a custom timeout', () => __awaiter(void 0, void 0, void 0, function* () {
31
+ try {
32
+ yield httpService.downloadReleasesFile(mockUrl, '');
33
+ assert.fail('Should throw on timeout');
34
+ }
35
+ catch (error) { }
36
+ }));
37
+ });
38
+ });
39
+ //# sourceMappingURL=HTTPService.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HTTPService.test.js","sourceRoot":"","sources":["../../src/HTTPService.test.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAC,MAAM,QAAQ,CAAC;AACrE,OAAO,EAAC,WAAW,IAAI,WAAW,EAAC,MAAM,mBAAmB,CAAC;AAC7D,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAC,WAAW,EAAC,MAAM,kBAAkB,CAAC;AAE7C,MAAM,OAAO,GAAG,oBAAoB,CAAC;AACrC,MAAM,sBAAsB,GAAG,IAAI,CAAC;AACpC,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAElC,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC;QAClC,KAAK,EAAE,KAAK;QACZ,OAAO,EAAE,qBAAqB;KAC/B,CAAC,CAAC;IAEH,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,OAAO,CAAC;aACV,GAAG,CAAC,GAAG,CAAC;aACR,eAAe,CAAC,sBAAsB,CAAC;aACvC,KAAK,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,EAAC,IAAI,EAAE,SAAS,EAAC,CAAC,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IAEjC,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;QACpC,IAAI,CAAC,yBAAyB,EAAE,GAAS,EAAE;YACzC,IAAI;gBACF,MAAM,WAAW,CAAC,oBAAoB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;gBACpD,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;aACxC;YAAC,OAAO,KAAK,EAAE,GAAE;QACpB,CAAC,CAAA,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,141 @@
1
+ import { expect, describe, test, beforeEach, beforeAll, afterAll, afterEach } from 'vitest';
2
+ import { StatusCodes as HTTP_STATUS } from 'http-status-codes';
3
+ import nock from 'nock';
4
+ import * as fs from 'fs-extra';
5
+ import path from 'node:path';
6
+ import { fileURLToPath } from 'node:url';
7
+ import { v4 as uuid } from 'uuid';
8
+ import { ElectronInfo } from './ElectronInfo.js';
9
+ const __filename = fileURLToPath(import.meta.url);
10
+ const __dirname = path.dirname(__filename);
11
+ const tempDir = path.resolve(__dirname, '.temp');
12
+ const tempDirDownload = path.resolve(__dirname, '.temp/download');
13
+ const mockUrl = 'http://example.com';
14
+ const invalidUrl = 'http://invalid.inv';
15
+ const fixturesDir = path.resolve(__dirname, '../fixtures');
16
+ const fullReleasesFile = path.join(fixturesDir, 'electron-releases-full.json');
17
+ const createRandomBody = () => [
18
+ {
19
+ name: 'electron v8.0.0-nightly.20190820',
20
+ node_id: uuid(),
21
+ npm_dist_tags: [],
22
+ prerelease: !!Math.round(Math.random()),
23
+ published_at: new Date().toUTCString(),
24
+ tag_name: 'v8.0.0-nightly.20190820',
25
+ // eslint-disable-next-line no-magic-numbers
26
+ total_downloads: Math.round(Math.random() * 1000),
27
+ version: '8.0.0-nightly.20190820',
28
+ },
29
+ ];
30
+ const provideReleaseFile = async () => {
31
+ await fs.copy(fullReleasesFile, path.join(tempDirDownload, 'latest.json'));
32
+ };
33
+ describe('ElectronInfo', () => {
34
+ let releases;
35
+ beforeAll(async () => {
36
+ await fs.ensureDir(tempDir);
37
+ releases = await fs.readFile(fullReleasesFile, 'utf8');
38
+ });
39
+ beforeEach(() => {
40
+ nock(mockUrl).get('/').reply(HTTP_STATUS.OK, releases);
41
+ });
42
+ afterAll(() => fs.remove(tempDir));
43
+ afterEach(() => nock.cleanAll());
44
+ describe('getElectronReleases', () => {
45
+ test('parses Electron versions', async () => {
46
+ const result = await new ElectronInfo({
47
+ releasesUrl: mockUrl,
48
+ tempDirectory: tempDir,
49
+ }).getElectronReleases('5.0.8');
50
+ expect(result.length).toBe(1);
51
+ expect(result[0].version).toBe('5.0.8');
52
+ });
53
+ test('parses Electron SemVer', async () => {
54
+ const result = await new ElectronInfo({
55
+ releasesUrl: mockUrl,
56
+ tempDirectory: tempDir,
57
+ }).getElectronReleases('^5');
58
+ // eslint-disable-next-line no-magic-numbers
59
+ expect(result.length).toBe(23);
60
+ });
61
+ test('parses dist tags', async () => {
62
+ const result = await new ElectronInfo({
63
+ releasesUrl: mockUrl,
64
+ tempDirectory: tempDir,
65
+ }).getElectronReleases('5-0-x');
66
+ expect(result.length).toBe(1);
67
+ });
68
+ test('returns nothing for invalid versions', async () => {
69
+ const result = await new ElectronInfo({
70
+ releasesUrl: mockUrl,
71
+ tempDirectory: tempDir,
72
+ }).getElectronReleases('invalid');
73
+ expect(result.length).toBe(0);
74
+ });
75
+ test('forces downloading the release file', async () => {
76
+ const customBody = createRandomBody();
77
+ const customUrl = 'http://custom.com';
78
+ await provideReleaseFile();
79
+ nock(customUrl).get('/').reply(HTTP_STATUS.OK, customBody);
80
+ const result = await new ElectronInfo({
81
+ forceUpdate: true,
82
+ releasesUrl: customUrl,
83
+ tempDirectory: tempDirDownload,
84
+ }).getElectronReleases('all');
85
+ expect(result).toEqual(customBody);
86
+ });
87
+ });
88
+ describe('getDependencyReleases', () => {
89
+ test('parses Chrome versions', async () => {
90
+ const result = await new ElectronInfo({
91
+ releasesUrl: mockUrl,
92
+ tempDirectory: tempDir,
93
+ }).getDependencyReleases('chrome', '71.0.3578.98');
94
+ expect(result.length).toBe(2);
95
+ expect(result[0].deps).toBeDefined();
96
+ expect(result[0].deps.chrome).toBe('71.0.3578.98');
97
+ });
98
+ test('parses Chrome SemVer', async () => {
99
+ const result = await new ElectronInfo({
100
+ releasesUrl: mockUrl,
101
+ tempDirectory: tempDir,
102
+ }).getDependencyReleases('chrome', '~66');
103
+ // eslint-disable-next-line no-magic-numbers
104
+ expect(result.length).toBe(56);
105
+ });
106
+ test('returns nothing for invalid versions', async () => {
107
+ const result = await new ElectronInfo({
108
+ releasesUrl: mockUrl,
109
+ tempDirectory: tempDir,
110
+ }).getDependencyReleases('chrome', 'invalid');
111
+ expect(result.length).toBe(0);
112
+ });
113
+ test('limits releases', async () => {
114
+ const limit = 2;
115
+ const result = await new ElectronInfo({
116
+ limit,
117
+ releasesUrl: mockUrl,
118
+ tempDirectory: tempDir,
119
+ }).getDependencyReleases('chrome', 'all');
120
+ expect(result.length).toBe(limit);
121
+ });
122
+ test('uses a local copy of the releases', async () => {
123
+ nock(invalidUrl).get('/').reply(HTTP_STATUS.NOT_FOUND);
124
+ await provideReleaseFile();
125
+ await new ElectronInfo({
126
+ releasesUrl: invalidUrl,
127
+ tempDirectory: tempDirDownload,
128
+ }).getDependencyReleases('chrome', 'all');
129
+ });
130
+ test('uses latest as alias for limit=1', async () => {
131
+ const result = await new ElectronInfo({
132
+ latest: true,
133
+ releasesUrl: mockUrl,
134
+ tempDirectory: tempDir,
135
+ }).getElectronReleases('all');
136
+ expect(result.length).toBe(1);
137
+ expect(result[0].version).toBe('8.0.0-nightly.20190820');
138
+ });
139
+ });
140
+ });
141
+ //# sourceMappingURL=ElectronInfo.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ElectronInfo.test.js","sourceRoot":"","sources":["../../src/ElectronInfo.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,30 @@
1
+ import { assert, describe, test, beforeEach, afterEach } from 'vitest';
2
+ import { StatusCodes as HTTP_STATUS } from 'http-status-codes';
3
+ import nock from 'nock';
4
+ import { HTTPService } from './HTTPService.js';
5
+ const mockUrl = 'http://example.com';
6
+ const FIVE_SECONDS_IN_MILLIS = 5000;
7
+ const HALF_SECOND_IN_MILLIS = 500;
8
+ describe('HTTPService', () => {
9
+ const httpService = new HTTPService({
10
+ debug: false,
11
+ timeout: HALF_SECOND_IN_MILLIS,
12
+ });
13
+ beforeEach(() => {
14
+ nock(mockUrl)
15
+ .get('/')
16
+ .delayConnection(FIVE_SECONDS_IN_MILLIS)
17
+ .reply(HTTP_STATUS.OK, [{ data: 'invalid' }]);
18
+ });
19
+ afterEach(() => nock.cleanAll());
20
+ describe('downloadReleasesFile', () => {
21
+ test('honors a custom timeout', async () => {
22
+ try {
23
+ await httpService.downloadReleasesFile(mockUrl, '');
24
+ assert.fail('Should throw on timeout');
25
+ }
26
+ catch (error) { }
27
+ });
28
+ });
29
+ });
30
+ //# sourceMappingURL=HTTPService.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HTTPService.test.js","sourceRoot":"","sources":["../../src/HTTPService.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAC,MAAM,QAAQ,CAAC;AACrE,OAAO,EAAC,WAAW,IAAI,WAAW,EAAC,MAAM,mBAAmB,CAAC;AAC7D,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAC,WAAW,EAAC,MAAM,kBAAkB,CAAC;AAE7C,MAAM,OAAO,GAAG,oBAAoB,CAAC;AACrC,MAAM,sBAAsB,GAAG,IAAI,CAAC;AACpC,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAElC,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC;QAClC,KAAK,EAAE,KAAK;QACZ,OAAO,EAAE,qBAAqB;KAC/B,CAAC,CAAC;IAEH,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,OAAO,CAAC;aACV,GAAG,CAAC,GAAG,CAAC;aACR,eAAe,CAAC,sBAAsB,CAAC;aACvC,KAAK,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,EAAC,IAAI,EAAE,SAAS,EAAC,CAAC,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IAEjC,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;QACpC,IAAI,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;YACzC,IAAI;gBACF,MAAM,WAAW,CAAC,oBAAoB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;gBACpD,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;aACxC;YAAC,OAAO,KAAK,EAAE,GAAE;QACpB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,10 +1,8 @@
1
1
  {
2
2
  "author": "Florian Imdahl <git@ffflorian.de>",
3
- "bin": {
4
- "electron-info": "dist/cjs/cli.js"
5
- },
3
+ "bin": "dist/cjs/cli.js",
6
4
  "dependencies": {
7
- "axios": "1.6.1",
5
+ "axios": "1.6.2",
8
6
  "chalk": "5.3.0",
9
7
  "commander": "11.1.0",
10
8
  "date-fns": "2.30.0",
@@ -58,9 +56,9 @@
58
56
  "dist": "yarn clean && yarn build",
59
57
  "generate:packagejson": "../../bin/generate-hybrid-package-json.sh",
60
58
  "start": "ts-node-esm src/cli.ts -d",
61
- "test": "ts-node-esm -P tsconfig.jasmine.json ../../node_modules/jasmine/bin/jasmine.js"
59
+ "test": "vitest run"
62
60
  },
63
61
  "type": "module",
64
- "version": "1.21.1",
65
- "gitHead": "bb5b97965f04bba13e813a2998873f974909b68a"
62
+ "version": "1.21.2",
63
+ "gitHead": "f5134e8663185ed1ff19e0291a7a2da86c0aa39e"
66
64
  }