electron-info 1.31.1 → 1.31.3

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.
package/README.md CHANGED
@@ -153,5 +153,5 @@ Found 2 releases.
153
153
 
154
154
  ## TypeScript Usage
155
155
 
156
- - [see definitions](https://unpkg.com/browse/electron-info@latest/dist/ElectronInfo.d.ts)
156
+ - [see definitions](src/interfaces.ts)
157
157
  - [see CLI](./src/cli.ts)
@@ -1,18 +1,18 @@
1
1
  import chalk from 'chalk';
2
- import { format as formatDate } from 'date-fns';
3
- import { table as createTable } from 'table';
4
2
  import logdown from 'logdown';
5
3
  import semver from 'semver';
4
+ import { table as createTable } from 'table';
6
5
  import { FileService } from './FileService.js';
6
+ const TWO_SECONDS_IN_MILLIS = 2000;
7
7
  const defaultOptions = {
8
8
  debug: false,
9
9
  electronPrereleases: true,
10
10
  forceUpdate: false,
11
11
  latest: false,
12
12
  limit: 0,
13
- releasesUrl: 'https://raw.githubusercontent.com/electron/releases/master/lite.json',
13
+ releasesUrl: 'https://releases.electronjs.org/releases.json',
14
14
  tempDirectory: '',
15
- timeout: 2000,
15
+ timeout: TWO_SECONDS_IN_MILLIS,
16
16
  };
17
17
  export const SupportedDependencies = {
18
18
  chrome: 'Chrome',
@@ -47,7 +47,7 @@ export class ElectronInfo {
47
47
  this.logger.log('Getting dependency releases:', { colored, dependency, formatted, version });
48
48
  const allReleases = await this.fileService.getReleases();
49
49
  const dependencyVersions = await this.getVersions(allReleases, dependency, version);
50
- const filteredReleases = allReleases.filter(release => release.deps && dependencyVersions.includes(release.deps[dependency]));
50
+ const filteredReleases = allReleases.filter(release => dependencyVersions.includes(release[dependency]));
51
51
  const limitedReleases = this.limitReleases(filteredReleases);
52
52
  return formatted ? this.formatDependencyReleases(limitedReleases, colored) : limitedReleases;
53
53
  }
@@ -67,24 +67,18 @@ export class ElectronInfo {
67
67
  this.logger.log('Building raw tables:', { colored, releasesLength: releases.length });
68
68
  const coloredOrNot = (text, style) => (colored ? style(text) : text);
69
69
  return releases.map(release => {
70
- const electronVersion = `${release.version}${release.prerelease ? ' (prerelease)' : ''}`;
71
- const parsedDate = new Date(release.published_at);
72
- const releaseDate = formatDate(parsedDate, 'yyyy-MM-dd');
73
70
  const table = [
74
- [coloredOrNot('Electron', chalk.bold), electronVersion],
75
- [coloredOrNot('Published on', chalk.bold), releaseDate],
71
+ [coloredOrNot('Electron', chalk.bold), release.version],
72
+ [coloredOrNot('Published on', chalk.bold), release.date],
76
73
  ];
77
- if (release.deps) {
78
- table.push([coloredOrNot(SupportedDependencies.node, chalk.bold.red), release.deps.node], [coloredOrNot(SupportedDependencies.chrome, chalk.bold.green), release.deps.chrome], [coloredOrNot(SupportedDependencies.openssl, chalk.bold.blue), release.deps.openssl], [coloredOrNot(SupportedDependencies.modules, chalk.bold.yellow), release.deps.modules], [coloredOrNot(SupportedDependencies.uv, chalk.bold.cyan), release.deps.uv],
79
- // eslint-disable-next-line no-magic-numbers
80
- [coloredOrNot(SupportedDependencies.v8, chalk.bold.rgb(150, 150, 150)), release.deps.v8], [coloredOrNot(SupportedDependencies.zlib, chalk.bold.magenta), release.deps.zlib]);
81
- }
74
+ table.push([coloredOrNot(SupportedDependencies.node, chalk.bold.red), release.node], [coloredOrNot(SupportedDependencies.chrome, chalk.bold.green), release.chrome], [coloredOrNot(SupportedDependencies.openssl, chalk.bold.blue), release.openssl], [coloredOrNot(SupportedDependencies.modules, chalk.bold.yellow), release.modules], [coloredOrNot(SupportedDependencies.uv, chalk.bold.cyan), release.uv],
75
+ // eslint-disable-next-line no-magic-numbers
76
+ [coloredOrNot(SupportedDependencies.v8, chalk.bold.rgb(150, 150, 150)), release.v8], [coloredOrNot(SupportedDependencies.zlib, chalk.bold.magenta), release.zlib]);
82
77
  return table;
83
78
  });
84
79
  }
85
80
  formatDependencyReleases(releases, colored) {
86
81
  this.logger.log('Formatting dependency releases:', { colored, releasesLength: releases.length });
87
- releases = releases.filter(release => !!release.deps);
88
82
  if (!releases.length) {
89
83
  return this.buildFoundString(releases);
90
84
  }
@@ -123,20 +117,17 @@ export class ElectronInfo {
123
117
  }
124
118
  dependencyVersions = releases
125
119
  .filter(release => {
126
- if (key !== 'electron' && !release.deps) {
120
+ if (key !== 'electron' && !release[key]) {
127
121
  return false;
128
122
  }
129
123
  if (inputVersion === 'all') {
130
124
  return true;
131
125
  }
132
- if (key === 'electron' && release.npm_dist_tags && release.npm_dist_tags.includes(inputVersion)) {
133
- return true;
134
- }
135
126
  return key === 'electron'
136
127
  ? satisfiesVersion(release.version, inputVersion)
137
- : satisfiesVersion(release.deps[key], inputVersion);
128
+ : satisfiesVersion(release[key], inputVersion);
138
129
  })
139
- .map(release => (key === 'electron' ? release.version : release.deps[key]));
130
+ .map(release => (key === 'electron' ? release.version : release[key]));
140
131
  return dependencyVersions;
141
132
  }
142
133
  limitReleases(releases) {
@@ -1,9 +1,9 @@
1
- import { constants as fsConstants, promises as fs } from 'node:fs';
2
- import os from 'node:os';
3
- import path from 'node:path';
4
- import URL from 'node:url';
5
1
  import { isAfter as isAfterDate, sub as subtractDate } from 'date-fns';
6
2
  import logdown from 'logdown';
3
+ import { promises as fs, constants as fsConstants } from 'node:fs';
4
+ import os from 'node:os';
5
+ import path from 'node:path';
6
+ import { URL } from 'node:url';
7
7
  import { HTTPService } from './HTTPService.js';
8
8
  export class FileService {
9
9
  constructor(options) {
@@ -23,7 +23,7 @@ export class FileService {
23
23
  }
24
24
  async getReleases() {
25
25
  this.logger.log('Parsing releases URL', { releasesUrl: this.options.releasesUrl });
26
- const parsedUrl = URL.parse(this.options.releasesUrl);
26
+ const parsedUrl = new URL(this.options.releasesUrl);
27
27
  if (!parsedUrl.href) {
28
28
  throw new Error('Invalid releases URL provided');
29
29
  }
@@ -1,6 +1,6 @@
1
+ import logdown from 'logdown';
1
2
  import fs from 'node:fs/promises';
2
3
  import { inspect } from 'node:util';
3
- import logdown from 'logdown';
4
4
  export class HTTPService {
5
5
  constructor(options) {
6
6
  this.options = options;
package/dist/cli.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
+ import { program as commander } from 'commander';
2
3
  import fs from 'node:fs/promises';
3
4
  import path from 'node:path';
4
- import { program as commander } from 'commander';
5
5
  import { ElectronInfo, SupportedDependencies } from './ElectronInfo.js';
6
6
  const __dirname = import.meta.dirname;
7
7
  const packageJsonPath = path.join(__dirname, '../package.json');
@@ -1,24 +1,12 @@
1
- export interface RawDeps {
2
- chrome: string;
1
+ export interface BasicReleaseInfo {
2
+ date: string;
3
+ files: string[];
4
+ fullDate: string;
3
5
  modules: string;
4
- node: string;
5
6
  openssl: string;
6
- uv: string;
7
- v8: string;
8
- zlib: string;
9
- }
10
- export interface RawReleaseInfo {
11
- deps?: RawDeps;
12
- name: string;
13
- node_id: string;
14
- npm_dist_tags: string[];
15
- npm_package_name?: string;
16
- prerelease: boolean;
17
- published_at: string;
18
- tag_name: string;
19
- total_downloads: number;
20
7
  version: string;
21
8
  }
9
+ export type HTTPOptions = Pick<Options, 'debug' | 'timeout'>;
22
10
  export interface Options {
23
11
  /** Enable debug logging. Default: `false`. */
24
12
  debug?: boolean;
@@ -38,7 +26,7 @@ export interface Options {
38
26
  limit?: number;
39
27
  /**
40
28
  * Can be a URL or a local path. Default:
41
- * https://raw.githubusercontent.com/electron/releases/master/lite.json.
29
+ * https://releases.electronjs.org/releases.json.
42
30
  */
43
31
  releasesUrl?: string;
44
32
  /**
@@ -49,4 +37,13 @@ export interface Options {
49
37
  /** Use a custom HTTP timeout in milliseconds. Default is `2000`. */
50
38
  timeout?: number;
51
39
  }
52
- export type HTTPOptions = Pick<Options, 'debug' | 'timeout'>;
40
+ export interface RawDeps {
41
+ chrome: string;
42
+ modules: string;
43
+ node: string;
44
+ openssl: string;
45
+ uv: string;
46
+ v8: string;
47
+ zlib: string;
48
+ }
49
+ export type RawReleaseInfo = BasicReleaseInfo & RawDeps;
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "bin": "dist/cli.js",
4
4
  "dependencies": {
5
5
  "chalk": "5.6.2",
6
- "commander": "14.0.2",
6
+ "commander": "14.0.3",
7
7
  "date-fns": "4.1.0",
8
8
  "logdown": "3.3.1",
9
9
  "semver": "7.7.3",
@@ -17,7 +17,7 @@
17
17
  "rimraf": "6.1.2",
18
18
  "tsx": "4.21.0",
19
19
  "typescript": "5.9.3",
20
- "vitest": "4.0.16"
20
+ "vitest": "4.0.18"
21
21
  },
22
22
  "engines": {
23
23
  "node": ">= 21"
@@ -47,6 +47,6 @@
47
47
  "test": "vitest run"
48
48
  },
49
49
  "type": "module",
50
- "version": "1.31.1",
51
- "gitHead": "ba772186f0c4fb05492ef586666b8e44faefe71d"
50
+ "version": "1.31.3",
51
+ "gitHead": "7a18174f4c706e506e8b3aed50a49d54b795206b"
52
52
  }