soaring-symbols 0.2.1 → 0.2.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.
Files changed (118) hide show
  1. package/API.md +30 -19
  2. package/README.md +19 -12
  3. package/dist/airlines.json +1 -1
  4. package/dist/assets/air-arabia/icon-mono.svg +1 -1
  5. package/dist/assets/air-arabia/icon.svg +1 -1
  6. package/dist/assets/air-berlin/icon-mono.svg +1 -1
  7. package/dist/assets/air-berlin/icon.svg +1 -1
  8. package/dist/assets/air-berlin/logo-mono.svg +1 -1
  9. package/dist/assets/air-berlin/logo.svg +1 -1
  10. package/dist/assets/airasia-cambodia/logo-mono.svg +1 -0
  11. package/dist/assets/airasia-cambodia/logo.svg +1 -0
  12. package/dist/assets/american-airlines/icon.svg +1 -1
  13. package/dist/assets/american-airlines/logo.svg +1 -1
  14. package/dist/assets/austrian-airlines/logo.svg +1 -1
  15. package/dist/assets/avianca-costa-rica/icon-mono.svg +1 -0
  16. package/dist/assets/avianca-costa-rica/icon.svg +1 -0
  17. package/dist/assets/avianca-costa-rica/logo-mono.svg +1 -0
  18. package/dist/assets/avianca-costa-rica/logo.svg +1 -0
  19. package/dist/assets/avianca-ecuador/icon-mono.svg +1 -0
  20. package/dist/assets/avianca-ecuador/icon.svg +1 -0
  21. package/dist/assets/avianca-ecuador/logo-mono.svg +1 -0
  22. package/dist/assets/avianca-ecuador/logo.svg +1 -0
  23. package/dist/assets/avianca-el-salvador/icon-mono.svg +1 -0
  24. package/dist/assets/avianca-el-salvador/icon.svg +1 -0
  25. package/dist/assets/avianca-el-salvador/logo-mono.svg +1 -0
  26. package/dist/assets/avianca-el-salvador/logo.svg +1 -0
  27. package/dist/assets/azul/icon.svg +1 -1
  28. package/dist/assets/binter/logo-mono.svg +1 -0
  29. package/dist/assets/binter/logo.svg +1 -0
  30. package/dist/assets/cebu-pacific/icon.svg +1 -1
  31. package/dist/assets/cebu-pacific/logo.svg +1 -1
  32. package/dist/assets/china-airlines/logo.svg +1 -1
  33. package/dist/assets/china-eastern-airlines/icon.svg +1 -1
  34. package/dist/assets/china-southern-airlines/tail.svg +1 -1
  35. package/dist/assets/condor/icon-mono.svg +1 -1
  36. package/dist/assets/condor/icon.svg +1 -1
  37. package/dist/assets/condor/logo-mono.svg +1 -1
  38. package/dist/assets/condor/logo.svg +1 -1
  39. package/dist/assets/delta-air-lines/icon-mono.svg +1 -1
  40. package/dist/assets/easyjet/logo-mono.svg +1 -1
  41. package/dist/assets/easyjet/logo.svg +1 -1
  42. package/dist/assets/egyptair/icon-mono.svg +1 -1
  43. package/dist/assets/egyptair/icon.svg +1 -1
  44. package/dist/assets/flybe/logo-mono.svg +1 -1
  45. package/dist/assets/flybe/logo.svg +1 -1
  46. package/dist/assets/frontier-airlines/icon-mono.svg +1 -1
  47. package/dist/assets/frontier-airlines/icon.svg +1 -1
  48. package/dist/assets/gol/logo.svg +1 -1
  49. package/dist/assets/hawaiian-airlines/icon.svg +1 -1
  50. package/dist/assets/hawaiian-airlines/logo.svg +1 -1
  51. package/dist/assets/indonesia-airasia/logo-mono.svg +1 -0
  52. package/dist/assets/indonesia-airasia/logo.svg +1 -0
  53. package/dist/assets/ita-airways/logo.svg +1 -1
  54. package/dist/assets/jet2com/icon-mono.svg +1 -1
  55. package/dist/assets/jet2com/icon.svg +1 -1
  56. package/dist/assets/jetstar-japan/icon-mono.svg +1 -0
  57. package/dist/assets/jetstar-japan/icon.svg +1 -0
  58. package/dist/assets/jetstar-japan/logo-mono.svg +1 -0
  59. package/dist/assets/jetstar-japan/logo.svg +1 -0
  60. package/dist/assets/juneyao-air/icon-mono.svg +1 -0
  61. package/dist/assets/juneyao-air/icon.svg +1 -0
  62. package/dist/assets/juneyao-air/logo-mono.svg +1 -0
  63. package/dist/assets/juneyao-air/logo.svg +1 -0
  64. package/dist/assets/latam-airlines-brasil/icon-mono.svg +1 -0
  65. package/dist/assets/latam-airlines-brasil/icon.svg +1 -0
  66. package/dist/assets/latam-airlines-brasil/logo-mono.svg +1 -0
  67. package/dist/assets/latam-airlines-brasil/logo.svg +1 -0
  68. package/dist/assets/latam-airlines-colombia/icon-mono.svg +1 -0
  69. package/dist/assets/latam-airlines-colombia/icon.svg +1 -0
  70. package/dist/assets/latam-airlines-colombia/logo-mono.svg +1 -0
  71. package/dist/assets/latam-airlines-colombia/logo.svg +1 -0
  72. package/dist/assets/latam-airlines-ecuador/icon-mono.svg +1 -0
  73. package/dist/assets/latam-airlines-ecuador/icon.svg +1 -0
  74. package/dist/assets/latam-airlines-ecuador/logo-mono.svg +1 -0
  75. package/dist/assets/latam-airlines-ecuador/logo.svg +1 -0
  76. package/dist/assets/latam-airlines-paraguay/icon-mono.svg +1 -0
  77. package/dist/assets/latam-airlines-paraguay/icon.svg +1 -0
  78. package/dist/assets/latam-airlines-paraguay/logo-mono.svg +1 -0
  79. package/dist/assets/latam-airlines-paraguay/logo.svg +1 -0
  80. package/dist/assets/latam-airlines-peru/icon-mono.svg +1 -0
  81. package/dist/assets/latam-airlines-peru/icon.svg +1 -0
  82. package/dist/assets/latam-airlines-peru/logo-mono.svg +1 -0
  83. package/dist/assets/latam-airlines-peru/logo.svg +1 -0
  84. package/dist/assets/level/icon.svg +1 -0
  85. package/dist/assets/level/logo.svg +1 -0
  86. package/dist/assets/lion-air/icon-mono.svg +1 -1
  87. package/dist/assets/lion-air/icon.svg +1 -1
  88. package/dist/assets/norwegian-air-shuttle/icon.svg +1 -1
  89. package/dist/assets/norwegian-air-shuttle/logo-mono.svg +1 -1
  90. package/dist/assets/norwegian-air-shuttle/logo.svg +1 -1
  91. package/dist/assets/pegasus-airlines/icon-mono.svg +1 -1
  92. package/dist/assets/pegasus-airlines/icon.svg +1 -1
  93. package/dist/assets/philippines-airasia/logo-mono.svg +1 -0
  94. package/dist/assets/philippines-airasia/logo.svg +1 -0
  95. package/dist/assets/sas-connect/logo-mono.svg +1 -0
  96. package/dist/assets/sas-connect/logo.svg +1 -0
  97. package/dist/assets/spirit-airlines/logo-mono.svg +1 -1
  98. package/dist/assets/spirit-airlines/logo.svg +1 -1
  99. package/dist/assets/thai-airasia/logo-mono.svg +1 -0
  100. package/dist/assets/thai-airasia/logo.svg +1 -0
  101. package/dist/assets/viva/icon-mono.svg +1 -1
  102. package/dist/assets/viva/icon.svg +1 -1
  103. package/dist/assets/volaris/icon.svg +1 -1
  104. package/dist/assets/vueling/logo.svg +1 -1
  105. package/dist/assets/winair/logo-mono.svg +1 -0
  106. package/dist/assets/winair/logo.svg +1 -0
  107. package/dist/assets/wizz-air-abu-dhabi/logo-mono.svg +1 -0
  108. package/dist/assets/wizz-air-abu-dhabi/logo.svg +1 -0
  109. package/dist/assets/wizz-air-uk/logo-mono.svg +1 -0
  110. package/dist/assets/wizz-air-uk/logo.svg +1 -0
  111. package/dist/index.d.cts +7 -11
  112. package/dist/index.d.ts +7 -11
  113. package/dist/svg-validator.cjs +382 -5
  114. package/dist/svg-validator.d.cts +12 -0
  115. package/dist/svg-validator.d.ts +12 -0
  116. package/dist/svg-validator.js +382 -5
  117. package/package.json +4 -3
  118. package/AIRLINES.md +0 -144
package/API.md CHANGED
@@ -118,25 +118,26 @@ The object returned by `getAirline()` and found in the array from `listAirlines(
118
118
  }
119
119
  ```
120
120
 
121
- | Field | Type | Description |
122
- | :------------- | :-------------- | :---------------------------------------------------------------------------------------------------------------------------------- |
123
- | `name` | `string` | Full airline name. |
124
- | `iata` | `string` | 2-character IATA code. |
125
- | `icao` | `string` | 3-letter ICAO code. |
126
- | `callsign` | `string?` | ICAO radiotelephony callsign, uppercase, e.g. `"VIET NAM AIRLINES"`. |
127
- | `country` | `string` | ISO 3166-1 alpha-2 code; comma-separated when the airline belongs to several. |
128
- | `slug` | `string` | URL-friendly name, also the asset folder name. |
129
- | `website` | `string?` | Official website. |
130
- | `flag_carrier` | `boolean?` | `true` for a national flag carrier. |
131
- | `alliance` | `string?` | `"oneworld"`, `"SkyTeam"` or `"Star Alliance"`. |
132
- | `hubs` | `string[]?` | IATA codes of its hub airports, e.g. `["HAN", "SGN"]`. Low-cost carriers often have bases rather than hubs, and none listed. |
133
- | `founded` | `number?` | Year founded, counting from the predecessor its history starts with (e.g. 1956 for Vietnam Airlines). |
134
- | `defunct` | `boolean?` | `true` if the airline has ceased operations. |
135
- | `ceased` | `number?` | Year a defunct airline ceased operations. |
136
- | `vectorized` | `boolean?` | `true` if the SVG was vectorized by hand. |
137
- | `branding` | `object?` | `primary_color`, `tagline` and `guidelines` (link to the brand guidelines), each optional. |
138
- | `assets` | `object` | One [`AssetInfo`](#assetinfo) per available type (`icon`, `logo`, `tail`). Missing types have no key. |
139
- | `subsidiaries` | `Subsidiary[]?` | Airlines sharing this airline's marks: `name`, `iata`, `icao`, `country`, `flag_carrier?`. They are not returned by `getAirline()`. |
121
+ | Field | Type | Description |
122
+ | :------------- | :---------- | :----------------------------------------------------------------------------------------------------------------------------------- |
123
+ | `name` | `string` | Full airline name. |
124
+ | `iata` | `string` | 2-character IATA code. |
125
+ | `icao` | `string` | 3-letter ICAO code. |
126
+ | `callsign` | `string?` | ICAO radiotelephony callsign, uppercase, e.g. `"VIET NAM AIRLINES"`. |
127
+ | `country` | `string` | ISO 3166-1 alpha-2 code; comma-separated when the airline belongs to several. |
128
+ | `slug` | `string` | URL-friendly name, also the asset folder name. |
129
+ | `website` | `string?` | Official website. |
130
+ | `flag_carrier` | `boolean?` | `true` for a national flag carrier. |
131
+ | `alliance` | `string?` | `"oneworld"`, `"SkyTeam"` or `"Star Alliance"`. |
132
+ | `parent` | `string?` | Slug of the airline that owns this one, e.g. `"airasia"` for Thai AirAsia. |
133
+ | `marks` | `string?` | Slug of the airline whose logos this one uses. The files are still published under this airline's own slug, so nothing else changes. |
134
+ | `hubs` | `string[]?` | IATA codes of its hub airports, e.g. `["HAN", "SGN"]`. Low-cost carriers often have bases rather than hubs, and none listed. |
135
+ | `founded` | `number?` | Year founded, counting from the predecessor its history starts with (e.g. 1956 for Vietnam Airlines). |
136
+ | `defunct` | `boolean?` | `true` if the airline has ceased operations. |
137
+ | `ceased` | `number?` | Year a defunct airline ceased operations. |
138
+ | `vectorized` | `boolean?` | `true` if the SVG was vectorized by hand. |
139
+ | `branding` | `object?` | `primary_color`, `tagline` and `guidelines` (link to the brand guidelines), each optional. |
140
+ | `assets` | `object` | One [`AssetInfo`](#assetinfo) per available type (`icon`, `logo`, `tail`). Missing types have no key. |
140
141
 
141
142
  ### AssetInfo
142
143
 
@@ -160,6 +161,16 @@ assets/<slug>/
160
161
  └── logo-mono.svg # hand-made for a multi-color logo, optional
161
162
  ```
162
163
 
164
+ ## Subsidiaries in 0.2.2
165
+
166
+ `0.2.2` drops the `subsidiaries` field, in a patch release since nothing known reads it. Each airline that used to be listed there is now an entry of its own, with its own codes, country, website and callsign, returned by `listAirlines()` and `getAirline()`. Its `parent` field holds the slug of the airline that owns it.
167
+
168
+ | Up to 0.2.1 | From 0.2.2 |
169
+ | :--------------------------------------- | :----------------------------------------------------------------- |
170
+ | `getAirline('AK').subsidiaries` | `listAirlines().filter((a) => a.parent === 'airasia')` |
171
+ | `getAirline('FD')` returns `undefined` | Returns Thai AirAsia; `getAssetPath('FD', 'logo')` gives its logo. |
172
+ | A subsidiary used its parent's SVG files | It has files under its own slug: `assets/thai-airasia/logo.svg`. |
173
+
163
174
  ## Migrating from the old API
164
175
 
165
176
  Versions up to `0.1.0-alpha.14` exported `getAssets()`, `getAssetContent()`, a default export and a `soaring-symbols/utils` subpath. They are gone; the asset information now ships precomputed in each airline's `assets` field, so the library no longer touches the file system.
package/README.md CHANGED
@@ -17,17 +17,21 @@ Browse the collection, open a page for any airline to download its marks, and ch
17
17
 
18
18
  ## Roadmap
19
19
 
20
+ This is the one roadmap for the collection and every integration around it, including the ones built in other repositories (the API on the website, the Raycast extension). Plans that only concern the website itself, such as its pages and tooling, are tracked in the [website's README](https://github.com/soaring-symbols/website#roadmap).
21
+
20
22
  - [x] npm package
23
+ - [x] A `branding.primary_color` for every airline
24
+ - [x] jsDelivr CDN
21
25
  - [x] Website with a browsable catalog, a page per airline and an SVG validator
26
+ - [x] JSON API on the website, such as [`/api/airlines/VN`](https://soaringsymbols.org/api/airlines/VN)
22
27
  - [x] Raycast extension
23
- - [x] jsDelivr CDN
24
- - [ ] Iconify icon set, for Iconify, Nuxt Icon, UnoCSS, Tailwind and Astro
28
+ - [x] Image endpoint on the website, to load a mark by IATA or ICAO code, with monochrome marks in a chosen color and PNG for apps that can't render SVG, such as [`/api/airlines/VN/icon.png`](https://soaringsymbols.org/api/airlines/VN/icon.png)
25
29
  - [ ] Figma plugin, to search airlines by name or IATA code and drop their marks into designs
26
- - [ ] Swift Package, with an asset catalog and a SwiftUI view
27
- - [ ] JSON API on the website, such as `/api/airlines/VN`
28
- - [ ] A `branding.primary_color` for every airline (Iberia and Qantas have none yet)
29
30
 
30
- Plans for the website itself are tracked in the [website's README](https://github.com/soaring-symbols/website#roadmap).
31
+ ### Not planned
32
+
33
+ - Iconify icon set: Iconify declined to add the collection, as airline logos are too niche for its users ([iconify/icon-sets#223](https://github.com/iconify/icon-sets/issues/223)). A self-published Iconify JSON would miss what makes Iconify useful (its API, search and auto-installed `@iconify-json` packages), so the SVGs from npm or jsDelivr remain the way to use the marks.
34
+ - Swift and Android packages: bundled marks go stale until the app ships an update, and Android needs every SVG converted to a VectorDrawable. Native apps can load the marks by URL instead, from jsDelivr or the image endpoint. We'll reconsider if someone asks for a package.
31
35
 
32
36
  ## Installation
33
37
 
@@ -47,17 +51,17 @@ bun add soaring-symbols
47
51
 
48
52
  ## Ecosystem
49
53
 
50
- | Tool / Integration | Author |
51
- | :-- | :-- |
52
- | [npm Package](https://www.npmjs.com/package/soaring-symbols) <img src="https://cdn.simpleicons.org/npm/000/CB3837" alt="npm" align=left width=24 height=24 /> | [anhthang]|
53
- | [Raycast Extension](https://www.raycast.com/anhthang/soaring-symbols) <img src="https://cdn.simpleicons.org/raycast/000/FF6363" alt="Raycast" align=left width=24 height=24 /> | [anhthang]|
54
+ | Tool / Integration | Author |
55
+ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :----------------------------------- |
56
+ | [npm Package](https://www.npmjs.com/package/soaring-symbols) <img src="https://cdn.simpleicons.org/npm/000/CB3837" alt="npm" align=left width=24 height=24 /> | [anhthang] |
54
57
  | [jsDelivr CDN](https://www.jsdelivr.com/package/npm/soaring-symbols) <img src="https://cdn.simpleicons.org/jsdelivr/000/E84D3D" alt="jsDelivr" align=left width=24 height=24 /> | [jsDelivr](https://www.jsdelivr.com) |
58
+ | [Raycast Extension](https://www.raycast.com/anhthang/soaring-symbols) <img src="https://cdn.simpleicons.org/raycast/000/FF6363" alt="Raycast" align=left width=24 height=24 /> | [anhthang] |
55
59
 
56
- The Raycast extension also works in launchers that run Raycast extensions, such as [Vicinae](https://www.vicinae.com), [SuperCmd](https://supercmd.sh) and [Tinycast](https://tinycast.dev). See the [ecosystem section on the website](https://soaringsymbols.org/#ecosystem) for how to use each one.
60
+ The Raycast extension also works in launchers that run Raycast extensions, such as [Vicinae](https://www.vicinae.com), [SuperCmd](https://supercmd.sh) and [Tinycast](https://tinycast.dev). See the [ecosystem page on the website](https://soaringsymbols.org/ecosystem#raycast) for how to use each one.
57
61
 
58
62
  ### CDN
59
63
 
60
- Link any mark straight from the npm package through jsDelivr, with nothing to install. `<slug>` is the airline's name in lowercase with hyphens (e.g. `vietnam-airlines`, see [AIRLINES.md](./AIRLINES.md)); swap `logo` for `icon` or `tail` to get the other marks.
64
+ Link any mark straight from the npm package through jsDelivr, with nothing to install. `<slug>` is the airline's name in lowercase with hyphens (e.g. `vietnam-airlines`; every airline's page on [soaringsymbols.org](https://soaringsymbols.org) shows it); swap `logo` for `icon` or `tail` to get the other marks.
61
65
 
62
66
  ```text
63
67
  https://cdn.jsdelivr.net/npm/soaring-symbols/dist/assets/<slug>/logo.svg
@@ -79,10 +83,13 @@ const vna = getAirline('VN')
79
83
  "name": "Vietnam Airlines",
80
84
  "iata": "VN",
81
85
  "icao": "HVN",
86
+ "callsign": "VIET NAM AIRLINES",
82
87
  "country": "VN",
83
88
  "flag_carrier": true,
84
89
  "website": "https://www.vietnamairlines.com",
85
90
  "alliance": "SkyTeam",
91
+ "hubs": ["HAN", "SGN"],
92
+ "founded": 1956,
86
93
  "branding": {
87
94
  "primary_color": "#d99e09",
88
95
  "tagline": "Reach Further",