first commit

This commit is contained in:
s.golasch
2023-08-01 13:49:46 +02:00
commit 1fc239fd54
20238 changed files with 3112246 additions and 0 deletions

1
build/node_modules/electron-releases/.env.example generated vendored Normal file
View File

@@ -0,0 +1 @@
GITHUB_AUTH_TOKEN=df09c7ee4a81d0cbfc128201baee5f2da2a3ae94

3
build/node_modules/electron-releases/.travis.yml generated vendored Normal file
View File

@@ -0,0 +1,3 @@
language: node_js
node_js:
- '8'

158492
build/node_modules/electron-releases/index.json generated vendored Normal file

File diff suppressed because one or more lines are too long

68
build/node_modules/electron-releases/package.json generated vendored Normal file
View File

@@ -0,0 +1,68 @@
{
"_args": [
[
"electron-releases@2.1.0",
"/Users/asciidisco/Desktop/asciidisco.com/build"
]
],
"_from": "electron-releases@2.1.0",
"_id": "electron-releases@2.1.0",
"_inBundle": false,
"_integrity": "sha512-cyKFD1bTE/UgULXfaueIN1k5EPFzs+FRc/rvCY5tIynefAPqopQEgjr0EzY+U3Dqrk/G4m9tXSPuZ77v6dL/Rw==",
"_location": "/electron-releases",
"_phantomChildren": {},
"_requested": {
"type": "version",
"registry": true,
"raw": "electron-releases@2.1.0",
"name": "electron-releases",
"escapedName": "electron-releases",
"rawSpec": "2.1.0",
"saveSpec": null,
"fetchSpec": "2.1.0"
},
"_requiredBy": [
"/electron-to-chromium"
],
"_resolved": "https://registry.npmjs.org/electron-releases/-/electron-releases-2.1.0.tgz",
"_spec": "2.1.0",
"_where": "/Users/asciidisco/Desktop/asciidisco.com/build",
"bugs": {
"url": "https://github.com/electron/electron-releases/issues"
},
"description": "Complete and up-to-date info about every release of Electron",
"devDependencies": {
"chai": "^4.1.2",
"check-for-leaks": "^1.2.0",
"dotenv-safe": "^4.0.4",
"flat": "^4.0.0",
"github": "^13.0.1",
"got": "^8.0.1",
"hubdown": "^2.0.0",
"lodash": "^4.17.4",
"make-promises-safe": "^1.1.0",
"mocha": "^4.0.1",
"npm": "^5.6.0",
"parse-link-header": "^1.0.1",
"platform-utils": "^1.0.0",
"semver": "^5.4.1",
"standard": "^10.0.3",
"standard-markdown": "^4.0.2"
},
"homepage": "https://github.com/electron/electron-releases#readme",
"license": "MIT",
"main": "index.json",
"name": "electron-releases",
"repository": {
"type": "git",
"url": "git+https://github.com/electron/electron-releases.git"
},
"scripts": {
"build": "node script/build.js",
"prepack": "check-for-leaks",
"prepush": "check-for-leaks",
"release": "./script/release.sh",
"test": "mocha && standard --fix && standard-markdown"
},
"version": "2.1.0"
}

106
build/node_modules/electron-releases/readme.md generated vendored Normal file
View File

@@ -0,0 +1,106 @@
# electron-releases
> Complete and up-to-date info about every release of Electron.
This package:
- includes all [GitHub Releases](https://developer.github.com/v3/repos/releases/#get-a-single-release) data about Electron.
- does not include draft releases.
- includes prereleases which are not published to npm.
- tracks which versions are published to npm.
- tracks [npm dist-tags](https://docs.npmjs.com/cli/dist-tag) like `latest` and `beta`.
- includes V8, Chromium, and Node.js version data.
- includes [GitHub-flavored HTML](https://ghub.io/hubdown) for each release's changelog.
- ignores npm versions from the days before [Electron was `electron`](https://electronjs.org/blog/npm-install-electron).
- is [updated regularly](#updates).
## Installation
```sh
npm i electron-releases
```
## Usage
The module exports an array of release objects:
```js
const releases = require('electron-releases')
// find newest version:
releases[0].tag_name // => 'v1.8.2-beta.3'
// find `latest` on npm, which is not necessarily the most recent release:
releases.find(release => release.npm_dist_tag === 'latest')
// find `beta` on npm:
releases.find(release => release.npm_dist_tag === 'beta')
```
### Data
Each release contains all the data returned by the
[GitHub Releases API](https://developer.github.com/v3/repos/releases/#get-a-single-release),
plus some extra properties:
- `version` (String) - the same thing as `dist_tag`, but without the `v` for convenient [semver comparisons](https://github.com/npm/node-semver#usage).
- `npm_dist_tag` (String) - an [npm dist-tag](https://docs.npmjs.com/cli/dist-tag) like `latest` or `beta`. Most releases will not have this property.
- `npm_package_name` (String) - For packages published to npm, this will be `electron` or `electron-prebuilt`. For packages not published to npm, this property will not exist.
- `total_downloads` (Number) - Total downloads of all assets in the release that
have a [detectable platform](https://github.com/zeke/platform-utils#api) in their
filename like `.zip`, `.dmg`, `.exe`, `.rpm`, `.deb`, etc.
- `deps` (Object) - version numbers for Electron dependencies.
- `v8` (String)
- `chromium` (String)
- `node` (String)
- etc..
## Updates
This module is self-publishing. It runs in a
[Heroku Scheduler](https://devcenter.heroku.com/articles/scheduler)
process every ten minutes. A new version of this module is published if any of
the following change:
- number of Electron releases on GitHub
- number of Electron releases on npm
- npm `electron@beta` version
- npm `electron@latest` version
If none of these has changed, the build process aborts and runs again ten minutes
later. For more detail, see [script/release.sh](script/release.sh)
The Heroku app is also synced to the GitHub repo, so every push to the
`master` branch will automatically deploy a new version of this app.
## Tests
```sh
npm install
npm test
```
## Dependencies
None
## Dev Dependencies
- [chai](https://github.com/chaijs/chai): BDD/TDD assertion library for node.js and the browser. Test framework agnostic.
- [check-for-leaks](): avoid publishing secrets to git and npm
- [dotenv-safe](https://github.com/rolodato/dotenv-safe): Load environment variables from .env and ensure they are defined
- [github](): NodeJS wrapper for the GitHub API
- [got](): Simplified HTTP requests
- [hubdown](): Convert markdown to GitHub-style HTML using a common set of remark plugins
- [lodash](): Lodash modular utilities.
- [mocha](https://github.com/mochajs/mocha): simple, flexible, fun test framework
- [npm](https://github.com/npm/npm): a package manager for JavaScript
- [parse-link-header](https://github.com/thlorenz/parse-link-header): Parses a link header and returns paging information for each contained link.
- [semver](): The semantic version parser used by npm.
- [standard](https://github.com/standard/standard): JavaScript Standard Style
- [standard-markdown](): Test your Markdown files for Standard JavaScript Style™
## License
MIT

167
build/node_modules/electron-releases/script/build.js generated vendored Executable file
View File

@@ -0,0 +1,167 @@
#!/usr/bin/env node
require('make-promises-safe')
require('dotenv-safe').load()
const fs = require('fs')
const path = require('path')
const semver = require('semver')
const hubdown = require('hubdown')
const GitHub = require('github')
const got = require('got')
const parseLinkHeader = require('parse-link-header')
const {getPlatformFromFilename} = require('platform-utils')
const github = new GitHub()
// `electron` was once a different module on npm. prior to 1.3.1 it was
// published as `electron-prebuilt`
const firstNpmVersion = '1.3.1'
github.authenticate({
type: 'token',
token: process.env.GITHUB_AUTH_TOKEN
})
main()
async function main () {
console.log('fetching list of `electron` releases on npm')
const npmElectronData = await got('https://registry.npmjs.com/electron', {json: true})
const npmVersions = Object.keys(npmElectronData.body.versions)
// filter out old versions of `electron` that were actually a different module
.filter(version => semver.gte(version, firstNpmVersion))
console.log('fetching list of `electron-prebuilt` releases on npm')
const npmElectronPrebuiltData = await got('https://registry.npmjs.com/electron-prebuilt', {json: true})
const npmVersionsPrebuilt = Object.keys(npmElectronPrebuiltData.body.versions)
// filter out `electron-prebuilt` versions that were published in tandem with `electron` for a while.
.filter(version => semver.lt(version, firstNpmVersion))
console.log('fetching npm dist-tags')
const distTags = npmElectronData.body['dist-tags']
const npmDistTaggedVersions = Object.keys(distTags)
.reduce((acc, key) => {
acc[distTags[key]] = key
return acc
}, {})
console.log('fetching GitHub Releases page count')
const countRes = await github.repos.getReleases(ghOpts({per_page: 1}))
let pagesToFetch
try {
const count = Number(parseLinkHeader(countRes.meta.link).last.page)
console.log(`found ${count} releases on GitHub`)
pagesToFetch = Math.ceil(count / 100)
} catch (err) {
console.error('problem fetching number of releases')
console.error(err)
process.exit(1)
}
console.log('fetching release data from GitHub')
let releases = []
for (let i = 1; i <= pagesToFetch; i++) {
const batch = await github.repos.getReleases(ghOpts({page: i}))
releases = releases.concat(batch.data)
}
console.log(`found ${releases.length} releases on GitHub`)
console.log('fetching version data for deps like V8, Chromium, and Node.js')
const depDataRes = await got('https://atom.io/download/electron/index.json', {json: true})
const depData = depDataRes.body
releases = releases
.filter(release => !release.draft)
.filter(release => semver.valid(release.tag_name.substring(1)))
.map(release => {
// derive version from tag_name for semver comparisons
release.version = release.tag_name.substring(1)
// published to npm? electron? electron-prebuilt?
if (npmVersions.includes(release.version)) release.npm_package_name = 'electron'
if (npmVersionsPrebuilt.includes(release.version)) release.npm_package_name = 'electron-prebuilt'
// weave in version data for V8, Chromium, Node.js, etc
const deps = depData.find(version => version.version === release.version)
if (deps) release.deps = deps
// apply dist tags from npm (usually `latest` and `beta`)
const npmDistTag = npmDistTaggedVersions[release.version]
if (npmDistTag) release.npm_dist_tag = npmDistTag
if (release.assets) {
release.total_downloads = release.assets
.reduce((acc, asset) => {
const platform = getPlatformFromFilename(asset.name)
if (platform) acc += asset.download_count
return acc
}, 0)
}
return release
})
// highest versions first
.sort((a, b) => semver.compare(b.version, a.version))
console.log('processing changelogs to HTML')
releases = await Promise.all(releases.map(processRelease))
// Abort the build early if module is already up to date
const old = require('..')
const oldLatest = old.find(release => release.npm_dist_tag === 'latest').version
const newLatest = releases.find(release => release.npm_dist_tag === 'latest').version
const oldBeta = old.find(release => release.npm_dist_tag === 'beta').version
const newBeta = releases.find(release => release.npm_dist_tag === 'beta').version
const oldNpmCount = old.find(release => release.npm_package_name === 'electron').length
const newNpmCount = releases.find(release => release.npm_package_name === 'electron').length
if (
old.length === releases.length &&
oldLatest === newLatest &&
oldBeta === newBeta &&
oldNpmCount === newNpmCount
) {
console.log('module already has up-to-date versions and dist tags. exiting.')
process.exit()
}
const fullFile = path.join(__dirname, '../index.json')
fs.writeFileSync(fullFile, JSON.stringify(releases, null, 2))
console.log(`wrote ${path.relative(process.cwd(), fullFile)}`)
}
// helpers
async function processRelease (release) {
release.version = release.tag_name.substring(1)
release.body = release.body
// turn PR references like #123 into hyperlinks
.replace(
/ #(\d+)$/gm,
' <a href="https://github.com/electron/electron/pull/$1">#$1</a>'
)
// adjust heading levels (h2 becomes h3, etc)
.replace(/^#### /gm, '##### ')
.replace(/^### /gm, '#### ')
.replace(/^## /gm, '### ')
const parsed = await hubdown(release.body)
release.body_html = parsed.content
return release
}
function ghOpts (opts) {
const defaults = {
owner: 'electron',
repo: 'electron',
per_page: 100
}
return Object.assign({}, defaults, opts)
}

20
build/node_modules/electron-releases/script/release.sh generated vendored Executable file
View File

@@ -0,0 +1,20 @@
#!/usr/bin/env bash
set -x # print commands before execution
set -o errexit # always exit on error
set -o pipefail # honor exit codes when piping
set -o nounset # fail on unset variables
git clone "https://github.com/electron/electron-releases" module
cd module
npm install
npm run build
npm test
[[ `git status --porcelain` ]] || exit
git add .
git config user.email electron@github.com
git config user.name electron-bot
git commit -am "update electron-releases"
npm version minor -m "bump minor to %s"
git push origin master --follow-tags
npm publish

90
build/node_modules/electron-releases/test/index.js generated vendored Normal file
View File

@@ -0,0 +1,90 @@
require('chai').should()
const {describe, it} = require('mocha')
const releases = require('..')
const semver = require('semver')
const flat = require('flat')
describe('electron-releases', () => {
it('is an array', () => {
releases.should.be.an('array')
})
it('contains over 270 releases', () => {
releases.length.should.be.above(270)
})
it('uses snake_case for all properties', () => {
const keys = Object.keys(flat(releases))
keys.length.should.be.above(0)
keys.every(key => key.toLowerCase() === key).should.eq(true)
})
it('sets `tag_name` on every release', () => {
releases.every(release => {
return release.tag_name &&
release.tag_name.length &&
release.tag_name.startsWith('v') &&
semver.valid(release.tag_name.replace('v', ''))
}).should.eq(true)
})
it('sets `version` on every release', () => {
releases.every(release => semver.valid(release.version)).should.eq(true)
})
it('does NOT include drafts', () => {
const prereleases = releases.filter(release => release.prerelease)
prereleases.length.should.be.above(0)
})
it('includes prereleases', () => {
const prereleases = releases.filter(release => release.prerelease)
prereleases.length.should.be.above(0)
})
it('includes version data for V8, Chromium, Node.js, etc', () => {
const releasesWithVersionData = releases.filter(release => release.deps)
releasesWithVersionData.length.should.be.above(154)
})
it('includes one release with the `beta` npm dist tag', () => {
const betas = releases.filter(release => release.npm_dist_tag === 'beta')
betas.length.should.eq(1)
})
it('includes one release with the `latest` npm dist tag', () => {
const latests = releases.filter(release => release.npm_dist_tag === 'latest')
latests.length.should.eq(1)
})
it('includes npm_package_name prop to indicate npm publish status', () => {
releases.find(release => release.version === '1.4.7').npm_package_name.should.eq('electron')
releases.find(release => release.version === '1.0.0').npm_package_name.should.eq('electron-prebuilt')
releases.filter(release => release.npm_package_name === 'electron').length.should.be.above(62)
// assert exact number because the days of publishing electron-prebuilt are over
releases.filter(release => release.npm_package_name === 'electron-prebuilt').length.should.eq(96)
})
// for context, see https://electronjs.org/blog/npm-install-electron
it('sets `electron` as `npm_package_name` for releases >=1.3.1', () => {
const npmReleasesOfElectron = releases.filter(release => release.npm_package_name === 'electron')
npmReleasesOfElectron.length.should.be.above(0)
npmReleasesOfElectron.every(release => semver.gte(release.version, '1.3.1')).should.eq(true)
})
it('sets `electron-prebuilt` as `npm_package_name` for releases <1.3.1', () => {
const npmReleasesOfElectronPrebuilt = releases.filter(release => release.npm_package_name === 'electron-prebuilt')
npmReleasesOfElectronPrebuilt.length.should.be.above(0)
npmReleasesOfElectronPrebuilt.every(release => semver.lt(release.version, '1.3.1')).should.eq(true)
})
it('includes processed changelogs in HTML format')//, () => {
// })
it('includes a total_downloads property for each release', () => {
const npmReleases = releases.filter(release => release.npm_package_name)
npmReleases.length.should.be.above(0)
npmReleases.every(release => release.total_downloads > 0).should.eq(true)
})
})