apple-version-history 1.6.72 → 1.6.86

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
@@ -1,80 +1,136 @@
1
1
  [![Node CI CD](https://github.com/gordey4doronin/apple-version-history/actions/workflows/node-ci-cd.yml/badge.svg)](https://github.com/gordey4doronin/apple-version-history/actions/workflows/node-ci-cd.yml)
2
2
  [![Pull RSS on schedule](https://github.com/gordey4doronin/apple-version-history/actions/workflows/schedule-pull-rss.yml/badge.svg)](https://github.com/gordey4doronin/apple-version-history/actions/workflows/schedule-pull-rss.yml)
3
+ [![npm](https://img.shields.io/npm/v/apple-version-history)](https://www.npmjs.com/package/apple-version-history)
3
4
 
4
5
  # apple-version-history
5
6
 
6
- ### Build (under macOS)
7
- ```bash
8
- npm run build
9
- ```
7
+ An automatically maintained list of Apple OS releases and their build numbers, running since 2018.
10
8
 
11
- ### Build and run (under macOS)
9
+ Covers iOS (back to iPhone OS 1.0), macOS (back to Mac OS X 10.0), tvOS, watchOS and visionOS.
10
+ **JSON first:** the data is plain JSON, so services in any language can use it directly.
11
+ It's also published as a dependency-free npm package for JS/TS.
12
12
 
13
- ```bash
14
- npm run build && node examples/examples.js
15
- ```
13
+ ## Why
16
14
 
17
- ### Examples
15
+ ### Origin: crash symbolication at App Center
18
16
 
19
- #### iOS
17
+ I started this in 2018, while working on [Visual Studio App Center](https://appcenter.ms/), Microsoft's service for building, testing and monitoring mobile apps.
18
+ To [symbolicate](https://developer.apple.com/documentation/xcode/adding-identifiable-symbol-names-to-a-crash-report) an iOS crash log, you need the system symbols for the exact OS build the device was running.
19
+ So we had to know every build Apple shipped, and notice new ones quickly.
20
20
 
21
- ```js
22
- const appleVersionHistory = require('./../dist/index');
23
- appleVersionHistory.listIosVersionsBuilds().forEach(group => {
24
- group.forEach(x => console.log(x));
25
- console.log(); // newline
26
- });
21
+ Apple doesn't publish this data in a machine-readable form.
22
+ Keeping the list up to date by hand was tedious, so I built something that maintains it automatically.
27
23
 
28
- // iPhone OS 1.0 (1A543a)
29
- // ...
24
+ ### Today: kept running for fun, and as a testbed
30
25
 
31
- // ...
32
- // ...
33
- // ...
26
+ App Center has since been [retired by Microsoft](https://learn.microsoft.com/en-us/appcenter/retirement), and I've moved on, but the project keeps running.
27
+ Partly because it's fun.
28
+ Mostly because it's a small, real, always-on workload, which makes it a handy way to try new technologies and dogfood the products I work on:
34
29
 
35
- // iOS 11.4 (15F79)
36
- ```
30
+ - **npm.** While I was at npm, I used it to dogfood npm features, since the package is published there.
31
+ - **GitHub.** While I was at GitHub, it dogfooded GitHub features. The repo, CI and the scheduled updater all run on GitHub Actions.
32
+ - **Codesphere.** Nowadays I also use it privately on [Codesphere](https://codesphere.com),
33
+ to test features such as the [Cloud IDE](https://docs.codesphere.com/workspace-toolkit/development/cloud-ide) and [running Landscapes](https://docs.codesphere.com/workspace-toolkit/deployment/landscape-lifecycle).
37
34
 
38
- #### macOS
35
+ The data is accurate and updated daily, so it's still useful if you need Apple OS builds.
39
36
 
40
- ```js
41
- const appleVersionHistory = require('./../dist/index');
42
- appleVersionHistory.listMacosVersionsBuilds().forEach(group => {
43
- group.forEach(x => console.log(x));
44
- console.log(); // newline
45
- });
37
+ ## Data
46
38
 
47
- // Mac OS X 10.0 (4K78)
48
- // ...
39
+ The `*-version-history.json` files in the repo root are the source of truth.
40
+ You can use them directly from any language, without the npm package.
49
41
 
50
- // ...
51
- // ...
52
- // ...
42
+ | File | Starts at |
43
+ | ------------------------------ | ----------------- |
44
+ | `ios-version-history.json` | iPhone OS 1.0 |
45
+ | `macos-version-history.json` | Mac OS X 10.0 |
46
+ | `tvos-version-history.json` | tvOS 9.0 |
47
+ | `watchos-version-history.json` | watchOS 7.0 |
48
+ | `visionos-version-history.json` | visionOS 1.0 |
53
49
 
54
- // OS X 10.11 (15A284)
55
- // ...
56
- // ...
50
+ There is also `audioos-version-history.json`, an early draft for HomePod.
51
+ I never ended up needing audioOS, so it's unmaintained and stops at audioOS 14.3.
57
52
 
58
- // ...
59
- // macOS 10.13.5 (17F77)
53
+ Each file groups versions by minor line, then maps each version to its build numbers:
54
+
55
+ ```json
56
+ {
57
+ "iOS 26.6.x": {
58
+ "26.6": [ "23G71" ],
59
+ "26.6.1": [ "23G82", "23G83" ],
60
+ "26.6.2": [ "23G90" ]
61
+ }
62
+ }
60
63
  ```
61
64
 
62
- #### tvOS
65
+ Some details:
66
+
67
+ - A version can have several builds, for example one per device family.
68
+ - An empty array means the version is known, but its build number isn't recorded.
69
+ - Entries are in the order they were added, not sorted by version.
70
+ When Apple ships an update to an older line after a new major release, it appears after the new major.
71
+ - Betas are skipped.
72
+ Release candidates are kept, because the RC build is often the one that ships.
73
+ - iPadOS releases are merged into iOS.
74
+ Apple ships them separately, but they share version numbers and almost always build numbers.
75
+
76
+ ## Using the npm package
77
+
78
+ ```bash
79
+ npm install apple-version-history
80
+ ```
63
81
 
64
82
  ```js
65
- const appleVersionHistory = require('./../dist/index');
66
- appleVersionHistory.listTvosVersionsBuilds().forEach(group => {
67
- group.forEach(x => console.log(x));
68
- console.log(); // newline
69
- });
83
+ const avh = require('apple-version-history');
70
84
 
71
- // tvOS 9.0 (13T396)
72
- // ...
85
+ avh.flatlistIosVersionsBuilds();
86
+ // [ 'iPhone OS 1.0.1 (1C25)', 'iPhone OS 1.0.2 (1C28)', ..., 'iOS 26.7 (23H24)' ]
73
87
 
74
- // ...
75
- // ...
76
- // ...
88
+ avh.listMacosVersions();
89
+ // [ 'Mac OS X 10.0.x', ..., 'macOS 27.0.x' ]
77
90
 
78
- // ...
79
- // tvOS 11.4 (15L577)
91
+ avh.iosVersionHistory; // the raw JSON object
80
92
  ```
93
+
94
+ Every helper exists for `Ios`, `Macos`, `Tvos`, `Watchos` and `Visionos`:
95
+
96
+ | Function | Returns |
97
+ | ---------------------- | ------------------------------------------------ |
98
+ | `list*Versions` | Minor lines: `iOS 26.6.x` |
99
+ | `list*VersionsNumbers` | Versions, grouped by minor line: `iOS 26.6.1` |
100
+ | `list*VersionsBuilds` | Versions with builds, grouped: `iOS 26.6.1 (23G82)` |
101
+ | `list*Builds` | Build numbers only, grouped: `23G82` |
102
+ | `flatlist*…` | The same lists, flattened into one array |
103
+
104
+ ## How it works
105
+
106
+ ```
107
+ Apple Developer releases RSS
108
+ │ pulled at 18:00 and 21:00 UTC
109
+ ▼
110
+ pull-rss.ts
111
+ │ keeps OS releases, skips betas, merges new builds
112
+ ▼
113
+ *-version-history.json
114
+ │ if changed: npm version patch, commit, push
115
+ ▼
116
+ CI workflow
117
+ │ sees the version bump
118
+ ▼
119
+ npm + GitHub Packages
120
+ ```
121
+
122
+ The schedule lives in [`schedule-pull-rss.yml`](.github/workflows/schedule-pull-rss.yml),
123
+ and publishing in [`node-ci-cd.yml`](.github/workflows/node-ci-cd.yml).
124
+ The source is the [Apple Developer releases feed](https://developer.apple.com/news/releases/).
125
+
126
+ ## Development
127
+
128
+ ```bash
129
+ npm ci
130
+ npm run build # generates TS modules from the JSON, compiles to dist/
131
+ npm test
132
+ node dist/src/pull-rss.js # pulls the feed and updates the JSON files, with verbose logging
133
+ ```
134
+
135
+ Running `npm publish` from the repo root is blocked on purpose.
136
+ CI publishes the package from `dist/src`.
package/index.d.ts CHANGED
@@ -3,27 +3,45 @@ export { listVersions, listVersionNumbers, listVersionBuilds, flatlistVersionNum
3
3
  export { default as iosVersionHistory } from './ios-version-history';
4
4
  export { default as macosVersionHistory } from './macos-version-history';
5
5
  export { default as tvosVersionHistory } from './tvos-version-history';
6
+ export { default as watchosVersionHistory } from './watchos-version-history';
7
+ export { default as visionosVersionHistory } from './visionos-version-history';
6
8
  export declare function listIosVersions(): string[];
7
9
  export declare function listMacosVersions(): string[];
8
10
  export declare function listTvosVersions(): string[];
11
+ export declare function listWatchosVersions(): string[];
12
+ export declare function listVisionosVersions(): string[];
9
13
  export declare function flatlistIosVersions(): string[];
10
14
  export declare function flatlistMacosVersions(): string[];
11
15
  export declare function flatlistTvosVersions(): string[];
16
+ export declare function flatlistWatchosVersions(): string[];
17
+ export declare function flatlistVisionosVersions(): string[];
12
18
  export declare function listIosVersionsNumbers(): string[][];
13
19
  export declare function listMacosVersionsNumbers(): string[][];
14
20
  export declare function listTvosVersionsNumbers(): string[][];
21
+ export declare function listWatchosVersionsNumbers(): string[][];
22
+ export declare function listVisionosVersionsNumbers(): string[][];
15
23
  export declare function flatlistIosVersionsNumbers(): string[];
16
24
  export declare function flatlistMacosVersionsNumbers(): string[];
17
25
  export declare function flatlistTvosVersionsNumbers(): string[];
26
+ export declare function flatlistWatchosVersionsNumbers(): string[];
27
+ export declare function flatlistVisionosVersionsNumbers(): string[];
18
28
  export declare function listIosVersionsBuilds(): string[][];
19
29
  export declare function listMacosVersionsBuilds(): string[][];
20
30
  export declare function listTvosVersionsBuilds(): string[][];
31
+ export declare function listWatchosVersionsBuilds(): string[][];
32
+ export declare function listVisionosVersionsBuilds(): string[][];
21
33
  export declare function flatlistIosVersionsBuilds(): string[];
22
34
  export declare function flatlistMacosVersionsBuilds(): string[];
23
35
  export declare function flatlistTvosVersionsBuilds(): string[];
36
+ export declare function flatlistWatchosVersionsBuilds(): string[];
37
+ export declare function flatlistVisionosVersionsBuilds(): string[];
24
38
  export declare function listIosBuilds(): string[][];
25
39
  export declare function listMacosBuilds(): string[][];
26
40
  export declare function listTvosBuilds(): string[][];
41
+ export declare function listWatchosBuilds(): string[][];
42
+ export declare function listVisionosBuilds(): string[][];
27
43
  export declare function flatlistIosBuilds(): string[];
28
44
  export declare function flatlistMacosBuilds(): string[];
29
45
  export declare function flatlistTvosBuilds(): string[];
46
+ export declare function flatlistWatchosBuilds(): string[];
47
+ export declare function flatlistVisionosBuilds(): string[];
package/index.js CHANGED
@@ -1,30 +1,46 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.tvosVersionHistory = exports.macosVersionHistory = exports.iosVersionHistory = exports.flatlistBuilds = exports.listBuilds = exports.flatlistVersionBuilds = exports.flatlistVersionNumbers = exports.listVersionBuilds = exports.listVersionNumbers = exports.listVersions = void 0;
3
+ exports.visionosVersionHistory = exports.watchosVersionHistory = exports.tvosVersionHistory = exports.macosVersionHistory = exports.iosVersionHistory = exports.flatlistBuilds = exports.listBuilds = exports.flatlistVersionBuilds = exports.flatlistVersionNumbers = exports.listVersionBuilds = exports.listVersionNumbers = exports.listVersions = void 0;
4
4
  exports.listIosVersions = listIosVersions;
5
5
  exports.listMacosVersions = listMacosVersions;
6
6
  exports.listTvosVersions = listTvosVersions;
7
+ exports.listWatchosVersions = listWatchosVersions;
8
+ exports.listVisionosVersions = listVisionosVersions;
7
9
  exports.flatlistIosVersions = flatlistIosVersions;
8
10
  exports.flatlistMacosVersions = flatlistMacosVersions;
9
11
  exports.flatlistTvosVersions = flatlistTvosVersions;
12
+ exports.flatlistWatchosVersions = flatlistWatchosVersions;
13
+ exports.flatlistVisionosVersions = flatlistVisionosVersions;
10
14
  exports.listIosVersionsNumbers = listIosVersionsNumbers;
11
15
  exports.listMacosVersionsNumbers = listMacosVersionsNumbers;
12
16
  exports.listTvosVersionsNumbers = listTvosVersionsNumbers;
17
+ exports.listWatchosVersionsNumbers = listWatchosVersionsNumbers;
18
+ exports.listVisionosVersionsNumbers = listVisionosVersionsNumbers;
13
19
  exports.flatlistIosVersionsNumbers = flatlistIosVersionsNumbers;
14
20
  exports.flatlistMacosVersionsNumbers = flatlistMacosVersionsNumbers;
15
21
  exports.flatlistTvosVersionsNumbers = flatlistTvosVersionsNumbers;
22
+ exports.flatlistWatchosVersionsNumbers = flatlistWatchosVersionsNumbers;
23
+ exports.flatlistVisionosVersionsNumbers = flatlistVisionosVersionsNumbers;
16
24
  exports.listIosVersionsBuilds = listIosVersionsBuilds;
17
25
  exports.listMacosVersionsBuilds = listMacosVersionsBuilds;
18
26
  exports.listTvosVersionsBuilds = listTvosVersionsBuilds;
27
+ exports.listWatchosVersionsBuilds = listWatchosVersionsBuilds;
28
+ exports.listVisionosVersionsBuilds = listVisionosVersionsBuilds;
19
29
  exports.flatlistIosVersionsBuilds = flatlistIosVersionsBuilds;
20
30
  exports.flatlistMacosVersionsBuilds = flatlistMacosVersionsBuilds;
21
31
  exports.flatlistTvosVersionsBuilds = flatlistTvosVersionsBuilds;
32
+ exports.flatlistWatchosVersionsBuilds = flatlistWatchosVersionsBuilds;
33
+ exports.flatlistVisionosVersionsBuilds = flatlistVisionosVersionsBuilds;
22
34
  exports.listIosBuilds = listIosBuilds;
23
35
  exports.listMacosBuilds = listMacosBuilds;
24
36
  exports.listTvosBuilds = listTvosBuilds;
37
+ exports.listWatchosBuilds = listWatchosBuilds;
38
+ exports.listVisionosBuilds = listVisionosBuilds;
25
39
  exports.flatlistIosBuilds = flatlistIosBuilds;
26
40
  exports.flatlistMacosBuilds = flatlistMacosBuilds;
27
41
  exports.flatlistTvosBuilds = flatlistTvosBuilds;
42
+ exports.flatlistWatchosBuilds = flatlistWatchosBuilds;
43
+ exports.flatlistVisionosBuilds = flatlistVisionosBuilds;
28
44
  const core_1 = require("./core");
29
45
  Object.defineProperty(exports, "listVersions", { enumerable: true, get: function () { return core_1.listVersions; } });
30
46
  Object.defineProperty(exports, "listVersionNumbers", { enumerable: true, get: function () { return core_1.listVersionNumbers; } });
@@ -40,34 +56,54 @@ var macos_version_history_1 = require("./macos-version-history");
40
56
  Object.defineProperty(exports, "macosVersionHistory", { enumerable: true, get: function () { return macos_version_history_1.default; } });
41
57
  var tvos_version_history_1 = require("./tvos-version-history");
42
58
  Object.defineProperty(exports, "tvosVersionHistory", { enumerable: true, get: function () { return tvos_version_history_1.default; } });
59
+ var watchos_version_history_1 = require("./watchos-version-history");
60
+ Object.defineProperty(exports, "watchosVersionHistory", { enumerable: true, get: function () { return watchos_version_history_1.default; } });
61
+ var visionos_version_history_1 = require("./visionos-version-history");
62
+ Object.defineProperty(exports, "visionosVersionHistory", { enumerable: true, get: function () { return visionos_version_history_1.default; } });
43
63
  // listVersions
44
64
  function listIosVersions() { return (0, core_1.listVersions)('ios'); }
45
65
  function listMacosVersions() { return (0, core_1.listVersions)('macos'); }
46
66
  function listTvosVersions() { return (0, core_1.listVersions)('tvos'); }
67
+ function listWatchosVersions() { return (0, core_1.listVersions)('watchos'); }
68
+ function listVisionosVersions() { return (0, core_1.listVersions)('visionos'); }
47
69
  function flatlistIosVersions() { return (0, core_1.listVersions)('ios'); }
48
70
  function flatlistMacosVersions() { return (0, core_1.listVersions)('macos'); }
49
71
  function flatlistTvosVersions() { return (0, core_1.listVersions)('tvos'); }
72
+ function flatlistWatchosVersions() { return (0, core_1.listVersions)('watchos'); }
73
+ function flatlistVisionosVersions() { return (0, core_1.listVersions)('visionos'); }
50
74
  // listVersionNumbers
51
75
  function listIosVersionsNumbers() { return (0, core_1.listVersionNumbers)('ios'); }
52
76
  function listMacosVersionsNumbers() { return (0, core_1.listVersionNumbers)('macos'); }
53
77
  function listTvosVersionsNumbers() { return (0, core_1.listVersionNumbers)('tvos'); }
78
+ function listWatchosVersionsNumbers() { return (0, core_1.listVersionNumbers)('watchos'); }
79
+ function listVisionosVersionsNumbers() { return (0, core_1.listVersionNumbers)('visionos'); }
54
80
  // flatlistVersionNumbers
55
81
  function flatlistIosVersionsNumbers() { return (0, core_1.flatlistVersionNumbers)('ios'); }
56
82
  function flatlistMacosVersionsNumbers() { return (0, core_1.flatlistVersionNumbers)('macos'); }
57
83
  function flatlistTvosVersionsNumbers() { return (0, core_1.flatlistVersionNumbers)('tvos'); }
84
+ function flatlistWatchosVersionsNumbers() { return (0, core_1.flatlistVersionNumbers)('watchos'); }
85
+ function flatlistVisionosVersionsNumbers() { return (0, core_1.flatlistVersionNumbers)('visionos'); }
58
86
  // listVersionBuilds
59
87
  function listIosVersionsBuilds() { return (0, core_1.listVersionBuilds)('ios'); }
60
88
  function listMacosVersionsBuilds() { return (0, core_1.listVersionBuilds)('macos'); }
61
89
  function listTvosVersionsBuilds() { return (0, core_1.listVersionBuilds)('tvos'); }
90
+ function listWatchosVersionsBuilds() { return (0, core_1.listVersionBuilds)('watchos'); }
91
+ function listVisionosVersionsBuilds() { return (0, core_1.listVersionBuilds)('visionos'); }
62
92
  // flatlistVersionBuilds
63
93
  function flatlistIosVersionsBuilds() { return (0, core_1.flatlistVersionBuilds)('ios'); }
64
94
  function flatlistMacosVersionsBuilds() { return (0, core_1.flatlistVersionBuilds)('macos'); }
65
95
  function flatlistTvosVersionsBuilds() { return (0, core_1.flatlistVersionBuilds)('tvos'); }
96
+ function flatlistWatchosVersionsBuilds() { return (0, core_1.flatlistVersionBuilds)('watchos'); }
97
+ function flatlistVisionosVersionsBuilds() { return (0, core_1.flatlistVersionBuilds)('visionos'); }
66
98
  // listBuilds
67
99
  function listIosBuilds() { return (0, core_1.listBuilds)('ios'); }
68
100
  function listMacosBuilds() { return (0, core_1.listBuilds)('macos'); }
69
101
  function listTvosBuilds() { return (0, core_1.listBuilds)('tvos'); }
102
+ function listWatchosBuilds() { return (0, core_1.listBuilds)('watchos'); }
103
+ function listVisionosBuilds() { return (0, core_1.listBuilds)('visionos'); }
70
104
  // flatlistBuilds
71
105
  function flatlistIosBuilds() { return (0, core_1.flatlistBuilds)('ios'); }
72
106
  function flatlistMacosBuilds() { return (0, core_1.flatlistBuilds)('macos'); }
73
107
  function flatlistTvosBuilds() { return (0, core_1.flatlistBuilds)('tvos'); }
108
+ function flatlistWatchosBuilds() { return (0, core_1.flatlistBuilds)('watchos'); }
109
+ function flatlistVisionosBuilds() { return (0, core_1.flatlistBuilds)('visionos'); }
@@ -385,6 +385,7 @@ declare const _default: {
385
385
  "16.7.13": string[];
386
386
  "16.7.14": string[];
387
387
  "16.7.15": string[];
388
+ "16.7.16": string[];
388
389
  };
389
390
  "iOS 17.1.x": {
390
391
  "17.1": string[];
@@ -399,6 +400,7 @@ declare const _default: {
399
400
  "15.8.5": string[];
400
401
  "15.8.6": string[];
401
402
  "15.8.7": string[];
403
+ "15.8.8": string[];
402
404
  };
403
405
  "iOS 17.2.x": {
404
406
  "17.2": string[];
@@ -434,6 +436,7 @@ declare const _default: {
434
436
  "17.7.7": string[];
435
437
  "17.7.8": string[];
436
438
  "17.7.9": string[];
439
+ "17.7.11": string[];
437
440
  };
438
441
  "iOS 18.1.x": {
439
442
  "18.1": string[];
@@ -471,6 +474,8 @@ declare const _default: {
471
474
  "18.7.6": string[];
472
475
  "18.7.7": string[];
473
476
  "18.7.8": string[];
477
+ "18.7.9": string[];
478
+ "18.7.10": string[];
474
479
  };
475
480
  "iOS 26.1.x": {
476
481
  "26.1": string[];
@@ -488,5 +493,23 @@ declare const _default: {
488
493
  "26.4.1": string[];
489
494
  "26.4.2": string[];
490
495
  };
496
+ "iOS 26.5.x": {
497
+ "26.5": string[];
498
+ "26.5.1": string[];
499
+ "26.5.2": string[];
500
+ };
501
+ "iOS 26.6.x": {
502
+ "26.6": string[];
503
+ "26.6.1": string[];
504
+ "26.6.2": string[];
505
+ };
506
+ "iOS 27.0.x": {
507
+ "27.0": string[];
508
+ "27.0.1": string[];
509
+ };
510
+ "iOS 26.7.x": {
511
+ "26.7": string[];
512
+ "26.7.1": string[];
513
+ };
491
514
  };
492
515
  export default _default;
@@ -387,7 +387,8 @@ exports.default = {
387
387
  "16.7.12": ["20H364"],
388
388
  "16.7.13": ["20H365"],
389
389
  "16.7.14": ["20H370"],
390
- "16.7.15": ["20H380"]
390
+ "16.7.15": ["20H380"],
391
+ "16.7.16": ["20H392"]
391
392
  },
392
393
  "iOS 17.1.x": {
393
394
  "17.1": ["21B74", "21B80"],
@@ -401,7 +402,8 @@ exports.default = {
401
402
  "15.8.4": ["19H390"],
402
403
  "15.8.5": ["19H394"],
403
404
  "15.8.6": ["19H402"],
404
- "15.8.7": ["19H411"]
405
+ "15.8.7": ["19H411"],
406
+ "15.8.8": ["19H422"]
405
407
  },
406
408
  "iOS 17.2.x": {
407
409
  "17.2": ["21C62"],
@@ -436,7 +438,8 @@ exports.default = {
436
438
  "17.7.6": ["21H423"],
437
439
  "17.7.7": ["21H433"],
438
440
  "17.7.8": ["21H440"],
439
- "17.7.9": ["21H446"]
441
+ "17.7.9": ["21H446"],
442
+ "17.7.11": ["21H461"]
440
443
  },
441
444
  "iOS 18.1.x": {
442
445
  "18.1": ["22B82", "22B83"],
@@ -473,7 +476,9 @@ exports.default = {
473
476
  "18.7.5": ["22H311"],
474
477
  "18.7.6": ["22H320"],
475
478
  "18.7.7": ["22H333", "22H340"],
476
- "18.7.8": ["22H352"]
479
+ "18.7.8": ["22H352"],
480
+ "18.7.9": ["22H355"],
481
+ "18.7.10": ["22H373", "22H374"]
477
482
  },
478
483
  "iOS 26.1.x": {
479
484
  "26.1": ["23B82", "23B85"]
@@ -490,5 +495,23 @@ exports.default = {
490
495
  "26.4": ["23E244", "23E246"],
491
496
  "26.4.1": ["23E254"],
492
497
  "26.4.2": ["23E261"]
498
+ },
499
+ "iOS 26.5.x": {
500
+ "26.5": ["23F75", "23F77"],
501
+ "26.5.1": ["23F81"],
502
+ "26.5.2": ["23F84"]
503
+ },
504
+ "iOS 26.6.x": {
505
+ "26.6": ["23G71"],
506
+ "26.6.1": ["23G82", "23G83"],
507
+ "26.6.2": ["23G90"]
508
+ },
509
+ "iOS 27.0.x": {
510
+ "27.0": ["24A435", "24A437"],
511
+ "27.0.1": ["24A446"]
512
+ },
513
+ "iOS 26.7.x": {
514
+ "26.7": ["23H24"],
515
+ "26.7.1": ["23H30"]
493
516
  }
494
517
  };
@@ -282,5 +282,18 @@ declare const _default: {
282
282
  "26.4": string[];
283
283
  "26.4.1": string[];
284
284
  };
285
+ "macOS 26.5.x": {
286
+ "26.5": string[];
287
+ "26.5.1": string[];
288
+ "26.5.2": string[];
289
+ };
290
+ "macOS 26.6.x": {
291
+ "26.6": string[];
292
+ "26.6.2": string[];
293
+ };
294
+ "macOS 27.0.x": {
295
+ "27.0": string[];
296
+ "27.0.1": string[];
297
+ };
285
298
  };
286
299
  export default _default;
@@ -284,5 +284,18 @@ exports.default = {
284
284
  "macOS 26.4.x": {
285
285
  "26.4": ["25E243", "25E246"],
286
286
  "26.4.1": ["25E253"]
287
+ },
288
+ "macOS 26.5.x": {
289
+ "26.5": ["25F71"],
290
+ "26.5.1": ["25F80"],
291
+ "26.5.2": ["25F84"]
292
+ },
293
+ "macOS 26.6.x": {
294
+ "26.6": ["25G70", "25G72"],
295
+ "26.6.2": ["25G82", "25G83"]
296
+ },
297
+ "macOS 27.0.x": {
298
+ "27.0": ["26A428"],
299
+ "27.0.1": ["26A434"]
287
300
  }
288
301
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "apple-version-history",
3
- "version": "1.6.72",
3
+ "version": "1.6.86",
4
4
  "description": "List of released Apple operating system versions and builds.",
5
5
  "main": "index.js",
6
6
  "types": "index.d.ts",
@@ -10,7 +10,7 @@
10
10
  "prebuild": "./.build/prebuild.sh",
11
11
  "build": "rm -rf dist && tsc",
12
12
  "postbuild": "./.build/postbuild.sh",
13
- "test": "mocha dist/test --forbid-only --recursive"
13
+ "test": "node --test --test-reporter=./test/reporter/index.mjs 'dist/test/**/*.test.js' 'test/reporter/**/*.test.mjs'"
14
14
  },
15
15
  "repository": {
16
16
  "type": "git",
@@ -29,15 +29,8 @@
29
29
  },
30
30
  "homepage": "https://github.com/gordey4doronin/apple-version-history#readme",
31
31
  "devDependencies": {
32
- "@types/chai": "^4.2.6",
33
- "@types/mocha": "^10.0.0",
34
32
  "@types/node": "^25.0.3",
35
- "chai": "^4.2.0",
36
- "mocha": "^11.7.3",
37
- "nock": "^13.0.11",
38
- "node-fetch": "^2.6.1",
39
33
  "typescript": "^5.0.3",
40
34
  "xml2js": "^0.6.0"
41
- },
42
- "dependencies": {}
35
+ }
43
36
  }
@@ -197,5 +197,14 @@ declare const _default: {
197
197
  "tvOS 26.4.x": {
198
198
  "26.4": string[];
199
199
  };
200
+ "tvOS 26.5.x": {
201
+ "26.5": string[];
202
+ };
203
+ "tvOS 26.6.x": {
204
+ "26.6": string[];
205
+ };
206
+ "tvOS 27.0.x": {
207
+ "27.0": string[];
208
+ };
200
209
  };
201
210
  export default _default;
@@ -199,5 +199,14 @@ exports.default = {
199
199
  },
200
200
  "tvOS 26.4.x": {
201
201
  "26.4": ["23L240", "23L243"]
202
+ },
203
+ "tvOS 26.5.x": {
204
+ "26.5": ["23L471"]
205
+ },
206
+ "tvOS 26.6.x": {
207
+ "26.6": ["23L772", "23L773"]
208
+ },
209
+ "tvOS 27.0.x": {
210
+ "27.0": ["24J360", "24J361"]
202
211
  }
203
212
  };
package/types.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export type osType = 'ios' | 'macos' | 'tvos' | 'watchos';
1
+ export type osType = 'ios' | 'macos' | 'tvos' | 'watchos' | 'visionos';
2
2
  export type versionNumbers = {
3
3
  [versionNumber: string]: string[];
4
4
  };
package/util.js CHANGED
@@ -9,6 +9,7 @@ const ios_version_history_1 = require("./ios-version-history");
9
9
  const macos_version_history_1 = require("./macos-version-history");
10
10
  const tvos_version_history_1 = require("./tvos-version-history");
11
11
  const watchos_version_history_1 = require("./watchos-version-history");
12
+ const visionos_version_history_1 = require("./visionos-version-history");
12
13
  function pickJson(os) {
13
14
  switch (os) {
14
15
  case 'ios':
@@ -19,6 +20,8 @@ function pickJson(os) {
19
20
  return tvos_version_history_1.default;
20
21
  case 'watchos':
21
22
  return watchos_version_history_1.default;
23
+ case 'visionos':
24
+ return visionos_version_history_1.default;
22
25
  default:
23
26
  throw `Unexpected os value: ${os}`;
24
27
  }
@@ -0,0 +1,70 @@
1
+ declare const _default: {
2
+ "visionOS 1.0.x": {
3
+ "1.0.3": string[];
4
+ };
5
+ "visionOS 1.1.x": {
6
+ "1.1.1": string[];
7
+ "1.1.2": string[];
8
+ };
9
+ "visionOS 1.2.x": {
10
+ "1.2": string[];
11
+ };
12
+ "visionOS 1.3.x": {
13
+ "1.3": string[];
14
+ };
15
+ "visionOS 2.0.x": {
16
+ "2.0": string[];
17
+ "2.0.1": string[];
18
+ };
19
+ "visionOS 2.1.x": {
20
+ "2.1": string[];
21
+ "2.1.1": string[];
22
+ };
23
+ "visionOS 2.2.x": {
24
+ "2.2": string[];
25
+ };
26
+ "visionOS 2.3.x": {
27
+ "2.3": string[];
28
+ "2.3.1": string[];
29
+ "2.3.2": string[];
30
+ };
31
+ "visionOS 2.4.x": {
32
+ "2.4": string[];
33
+ "2.4.1": string[];
34
+ };
35
+ "visionOS 2.5.x": {
36
+ "2.5": string[];
37
+ };
38
+ "visionOS 2.6.x": {
39
+ "2.6": string[];
40
+ };
41
+ "visionOS 26.0.x": {
42
+ "26.0": string[];
43
+ "26.0.1": string[];
44
+ };
45
+ "visionOS 26.1.x": {
46
+ "26.1": string[];
47
+ };
48
+ "visionOS 26.2.x": {
49
+ "26.2": string[];
50
+ };
51
+ "visionOS 26.3.x": {
52
+ "26.3": string[];
53
+ "26.3.1": string[];
54
+ };
55
+ "visionOS 26.4.x": {
56
+ "26.4": string[];
57
+ };
58
+ "visionOS 26.5.x": {
59
+ "26.5": string[];
60
+ };
61
+ "visionOS 26.6.x": {
62
+ "26.6": string[];
63
+ "26.6.1": string[];
64
+ };
65
+ "visionOS 27.0.x": {
66
+ "27.0": string[];
67
+ "27.0.1": string[];
68
+ };
69
+ };
70
+ export default _default;
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ // This file is autogenerated. DO NOT MODIFY IT DIRECTLY.
4
+ exports.default = {
5
+ "visionOS 1.0.x": {
6
+ "1.0.3": ["21N333"]
7
+ },
8
+ "visionOS 1.1.x": {
9
+ "1.1.1": ["21O224"],
10
+ "1.1.2": ["21O231"]
11
+ },
12
+ "visionOS 1.2.x": {
13
+ "1.2": ["21O589"]
14
+ },
15
+ "visionOS 1.3.x": {
16
+ "1.3": ["21O771"]
17
+ },
18
+ "visionOS 2.0.x": {
19
+ "2.0": ["22N320"],
20
+ "2.0.1": ["22N342"]
21
+ },
22
+ "visionOS 2.1.x": {
23
+ "2.1": ["22N580", "22N581"],
24
+ "2.1.1": ["22N591"]
25
+ },
26
+ "visionOS 2.2.x": {
27
+ "2.2": ["22N840", "22N841", "22N842"]
28
+ },
29
+ "visionOS 2.3.x": {
30
+ "2.3": ["22N896"],
31
+ "2.3.1": ["22N900"],
32
+ "2.3.2": ["22N906"]
33
+ },
34
+ "visionOS 2.4.x": {
35
+ "2.4": ["22O237", "22O238"],
36
+ "2.4.1": ["22O251"]
37
+ },
38
+ "visionOS 2.5.x": {
39
+ "2.5": ["22O473"]
40
+ },
41
+ "visionOS 2.6.x": {
42
+ "2.6": ["22O783", "22O785"]
43
+ },
44
+ "visionOS 26.0.x": {
45
+ "26.0": ["23M336"],
46
+ "26.0.1": ["23M341", "23M8340"]
47
+ },
48
+ "visionOS 26.1.x": {
49
+ "26.1": ["23N48", "23N49"]
50
+ },
51
+ "visionOS 26.2.x": {
52
+ "26.2": ["23N301"]
53
+ },
54
+ "visionOS 26.3.x": {
55
+ "26.3": ["23N619", "23N620"],
56
+ "26.3.1": ["23N630"]
57
+ },
58
+ "visionOS 26.4.x": {
59
+ "26.4": ["23O244", "23O247"]
60
+ },
61
+ "visionOS 26.5.x": {
62
+ "26.5": ["23O471"]
63
+ },
64
+ "visionOS 26.6.x": {
65
+ "26.6": ["23O770"],
66
+ "26.6.1": ["23O780"]
67
+ },
68
+ "visionOS 27.0.x": {
69
+ "27.0": ["24M362"],
70
+ "27.0.1": ["24M372"]
71
+ }
72
+ };
@@ -151,5 +151,15 @@ declare const _default: {
151
151
  "watchOS 26.4.x": {
152
152
  "26.4": string[];
153
153
  };
154
+ "watchOS 26.5.x": {
155
+ "26.5": string[];
156
+ };
157
+ "watchOS 26.6.x": {
158
+ "26.6": string[];
159
+ };
160
+ "watchOS 27.0.x": {
161
+ "27.0": string[];
162
+ "27.0.1": string[];
163
+ };
154
164
  };
155
165
  export default _default;
@@ -153,5 +153,15 @@ exports.default = {
153
153
  },
154
154
  "watchOS 26.4.x": {
155
155
  "26.4": ["23T239", "23T240"]
156
+ },
157
+ "watchOS 26.5.x": {
158
+ "26.5": ["23T570"]
159
+ },
160
+ "watchOS 26.6.x": {
161
+ "26.6": ["23U67"]
162
+ },
163
+ "watchOS 27.0.x": {
164
+ "27.0": ["24R363", "24R364"],
165
+ "27.0.1": ["24R365"]
156
166
  }
157
167
  };