Add tons of Typescript strictness
This commit is contained in:
		
							parent
							
								
									371a3bf0be
								
							
						
					
					
						commit
						08e809b7ae
					
				@ -1,6 +1,6 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    "plugins": ["jest", "@typescript-eslint"],
 | 
					    "plugins": ["jest", "@typescript-eslint", "github"],
 | 
				
			||||||
    "extends": ["plugin:github/es6"],
 | 
					    "extends": ["plugin:github/typescript"],
 | 
				
			||||||
    "parser": "@typescript-eslint/parser",
 | 
					    "parser": "@typescript-eslint/parser",
 | 
				
			||||||
    "parserOptions": {
 | 
					    "parserOptions": {
 | 
				
			||||||
        "ecmaVersion": 9,
 | 
					        "ecmaVersion": 9,
 | 
				
			||||||
@ -18,15 +18,10 @@
 | 
				
			|||||||
        "@typescript-eslint/no-require-imports": "error",
 | 
					        "@typescript-eslint/no-require-imports": "error",
 | 
				
			||||||
        "@typescript-eslint/array-type": "error",
 | 
					        "@typescript-eslint/array-type": "error",
 | 
				
			||||||
        "@typescript-eslint/await-thenable": "error",
 | 
					        "@typescript-eslint/await-thenable": "error",
 | 
				
			||||||
        "@typescript-eslint/ban-ts-ignore": "error",
 | 
					 | 
				
			||||||
        "camelcase": "off",
 | 
					 | 
				
			||||||
        "@typescript-eslint/camelcase": "error",
 | 
					 | 
				
			||||||
        "@typescript-eslint/class-name-casing": "error",
 | 
					 | 
				
			||||||
        "@typescript-eslint/explicit-function-return-type": ["error", {
 | 
					        "@typescript-eslint/explicit-function-return-type": ["error", {
 | 
				
			||||||
            "allowExpressions": true
 | 
					            "allowExpressions": true
 | 
				
			||||||
        }],
 | 
					        }],
 | 
				
			||||||
        "@typescript-eslint/func-call-spacing": ["error", "never"],
 | 
					        "@typescript-eslint/func-call-spacing": ["error", "never"],
 | 
				
			||||||
        "@typescript-eslint/generic-type-naming": ["error", "^[A-Z][A-Za-z]*$"],
 | 
					 | 
				
			||||||
        "@typescript-eslint/no-array-constructor": "error",
 | 
					        "@typescript-eslint/no-array-constructor": "error",
 | 
				
			||||||
        "@typescript-eslint/no-empty-interface": "error",
 | 
					        "@typescript-eslint/no-empty-interface": "error",
 | 
				
			||||||
        "@typescript-eslint/no-explicit-any": "error",
 | 
					        "@typescript-eslint/no-explicit-any": "error",
 | 
				
			||||||
@ -36,7 +31,6 @@
 | 
				
			|||||||
        "@typescript-eslint/no-misused-new": "error",
 | 
					        "@typescript-eslint/no-misused-new": "error",
 | 
				
			||||||
        "@typescript-eslint/no-namespace": "error",
 | 
					        "@typescript-eslint/no-namespace": "error",
 | 
				
			||||||
        "@typescript-eslint/no-non-null-assertion": "warn",
 | 
					        "@typescript-eslint/no-non-null-assertion": "warn",
 | 
				
			||||||
        "@typescript-eslint/no-object-literal-type-assertion": "error",
 | 
					 | 
				
			||||||
        "@typescript-eslint/no-unnecessary-qualifier": "error",
 | 
					        "@typescript-eslint/no-unnecessary-qualifier": "error",
 | 
				
			||||||
        "@typescript-eslint/no-unnecessary-type-assertion": "error",
 | 
					        "@typescript-eslint/no-unnecessary-type-assertion": "error",
 | 
				
			||||||
        "@typescript-eslint/no-useless-constructor": "error",
 | 
					        "@typescript-eslint/no-useless-constructor": "error",
 | 
				
			||||||
@ -44,7 +38,6 @@
 | 
				
			|||||||
        "@typescript-eslint/prefer-for-of": "warn",
 | 
					        "@typescript-eslint/prefer-for-of": "warn",
 | 
				
			||||||
        "@typescript-eslint/prefer-function-type": "warn",
 | 
					        "@typescript-eslint/prefer-function-type": "warn",
 | 
				
			||||||
        "@typescript-eslint/prefer-includes": "error",
 | 
					        "@typescript-eslint/prefer-includes": "error",
 | 
				
			||||||
        "@typescript-eslint/prefer-interface": "error",
 | 
					 | 
				
			||||||
        "@typescript-eslint/prefer-string-starts-ends-with": "error",
 | 
					        "@typescript-eslint/prefer-string-starts-ends-with": "error",
 | 
				
			||||||
        "@typescript-eslint/promise-function-async": "error",
 | 
					        "@typescript-eslint/promise-function-async": "error",
 | 
				
			||||||
        "@typescript-eslint/require-array-sort-compare": "error",
 | 
					        "@typescript-eslint/require-array-sort-compare": "error",
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										14
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										14
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							@ -1410,6 +1410,15 @@
 | 
				
			|||||||
      "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==",
 | 
					      "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==",
 | 
				
			||||||
      "dev": true
 | 
					      "dev": true
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    "@types/glob": {
 | 
				
			||||||
 | 
					      "version": "7.1.2",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.2.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha512-VgNIkxK+j7Nz5P7jvUZlRvhuPSmsEfS03b0alKcq5V/STUKAa3Plemsn5mrQUO7am6OErJ4rhGEGJbACclrtRA==",
 | 
				
			||||||
 | 
					      "requires": {
 | 
				
			||||||
 | 
					        "@types/minimatch": "*",
 | 
				
			||||||
 | 
					        "@types/node": "*"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "@types/graceful-fs": {
 | 
					    "@types/graceful-fs": {
 | 
				
			||||||
      "version": "4.1.3",
 | 
					      "version": "4.1.3",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.3.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.3.tgz",
 | 
				
			||||||
@ -1465,6 +1474,11 @@
 | 
				
			|||||||
      "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=",
 | 
					      "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=",
 | 
				
			||||||
      "dev": true
 | 
					      "dev": true
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    "@types/minimatch": {
 | 
				
			||||||
 | 
					      "version": "3.0.3",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA=="
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "@types/node": {
 | 
					    "@types/node": {
 | 
				
			||||||
      "version": "12.12.47",
 | 
					      "version": "12.12.47",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.47.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.47.tgz",
 | 
				
			||||||
 | 
				
			|||||||
@ -29,6 +29,7 @@
 | 
				
			|||||||
  "dependencies": {
 | 
					  "dependencies": {
 | 
				
			||||||
    "@actions/core": "^1.2.0",
 | 
					    "@actions/core": "^1.2.0",
 | 
				
			||||||
    "@actions/github": "^4.0.0",
 | 
					    "@actions/github": "^4.0.0",
 | 
				
			||||||
 | 
					    "@types/glob": "^7.1.2",
 | 
				
			||||||
    "glob": "^7.1.6"
 | 
					    "glob": "^7.1.6"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  "devDependencies": {
 | 
					  "devDependencies": {
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										46
									
								
								src/main.ts
									
									
									
									
									
								
							
							
						
						
									
										46
									
								
								src/main.ts
									
									
									
									
									
								
							@ -1,19 +1,23 @@
 | 
				
			|||||||
import * as fs from 'fs'
 | 
					import * as fs from 'fs'
 | 
				
			||||||
 | 
					import {Octokit} from '@octokit/core'
 | 
				
			||||||
 | 
					import {Endpoints} from '@octokit/types'
 | 
				
			||||||
import * as core from '@actions/core'
 | 
					import * as core from '@actions/core'
 | 
				
			||||||
import * as github from '@actions/github'
 | 
					import * as github from '@actions/github'
 | 
				
			||||||
import * as path from 'path'
 | 
					import * as path from 'path'
 | 
				
			||||||
 | 
					import * as glob from 'glob'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const glob = require('glob')
 | 
					type RepoAssetsResp = Endpoints['GET /repos/:owner/:repo/releases/:release_id/assets']['response']
 | 
				
			||||||
 | 
					type ReleaseByTagResp = Endpoints['GET /repos/:owner/:repo/releases/tags/:tag']['response']
 | 
				
			||||||
 | 
					type CreateReleaseResp = Endpoints['POST /repos/:owner/:repo/releases']['response']
 | 
				
			||||||
 | 
					
 | 
				
			||||||
async function get_release_by_tag(
 | 
					async function get_release_by_tag(
 | 
				
			||||||
  tag: string,
 | 
					  tag: string,
 | 
				
			||||||
  octokit: any,
 | 
					  octokit: Octokit
 | 
				
			||||||
  context: any
 | 
					): Promise<ReleaseByTagResp | CreateReleaseResp> {
 | 
				
			||||||
): Promise<any> {
 | 
					 | 
				
			||||||
  try {
 | 
					  try {
 | 
				
			||||||
    core.debug(`Getting release by tag ${tag}.`)
 | 
					    core.debug(`Getting release by tag ${tag}.`)
 | 
				
			||||||
    return await octokit.repos.getReleaseByTag({
 | 
					    return await octokit.repos.getReleaseByTag({
 | 
				
			||||||
      ...context.repo,
 | 
					      ...github.context.repo,
 | 
				
			||||||
      tag: tag
 | 
					      tag: tag
 | 
				
			||||||
    })
 | 
					    })
 | 
				
			||||||
  } catch (error) {
 | 
					  } catch (error) {
 | 
				
			||||||
@ -23,7 +27,7 @@ async function get_release_by_tag(
 | 
				
			|||||||
        `Release for tag ${tag} doesn't exist yet so we'll create it now.`
 | 
					        `Release for tag ${tag} doesn't exist yet so we'll create it now.`
 | 
				
			||||||
      )
 | 
					      )
 | 
				
			||||||
      return await octokit.repos.createRelease({
 | 
					      return await octokit.repos.createRelease({
 | 
				
			||||||
        ...context.repo,
 | 
					        ...github.context.repo,
 | 
				
			||||||
        tag_name: tag
 | 
					        tag_name: tag
 | 
				
			||||||
      })
 | 
					      })
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
@ -33,14 +37,13 @@ async function get_release_by_tag(
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
async function upload_to_release(
 | 
					async function upload_to_release(
 | 
				
			||||||
  release: any,
 | 
					  release: ReleaseByTagResp | CreateReleaseResp,
 | 
				
			||||||
  file: string,
 | 
					  file: string,
 | 
				
			||||||
  asset_name: string,
 | 
					  asset_name: string,
 | 
				
			||||||
  tag: string,
 | 
					  tag: string,
 | 
				
			||||||
  overwrite: string,
 | 
					  overwrite: string,
 | 
				
			||||||
  octokit: any,
 | 
					  octokit: Octokit
 | 
				
			||||||
  context: any
 | 
					): Promise<void> {
 | 
				
			||||||
) {
 | 
					 | 
				
			||||||
  const stat = fs.statSync(file)
 | 
					  const stat = fs.statSync(file)
 | 
				
			||||||
  if (!stat.isFile()) {
 | 
					  if (!stat.isFile()) {
 | 
				
			||||||
    core.debug(`Skipping ${file}, since its not a file`)
 | 
					    core.debug(`Skipping ${file}, since its not a file`)
 | 
				
			||||||
@ -50,18 +53,18 @@ async function upload_to_release(
 | 
				
			|||||||
  const file_bytes = fs.readFileSync(file)
 | 
					  const file_bytes = fs.readFileSync(file)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Check for duplicates.
 | 
					  // Check for duplicates.
 | 
				
			||||||
  const assets = await octokit.repos.listAssetsForRelease({
 | 
					  const assets: RepoAssetsResp = await octokit.repos.listAssetsForRelease({
 | 
				
			||||||
    ...context.repo,
 | 
					    ...github.context.repo,
 | 
				
			||||||
    release_id: release.data.id
 | 
					    release_id: release.data.id
 | 
				
			||||||
  })
 | 
					  })
 | 
				
			||||||
  const duplicate_asset = assets.data.find((a: any) => a.name === asset_name)
 | 
					  const duplicate_asset = assets.data.find(a => a.name === asset_name)
 | 
				
			||||||
  if (duplicate_asset !== undefined) {
 | 
					  if (duplicate_asset !== undefined) {
 | 
				
			||||||
    if (overwrite === 'true') {
 | 
					    if (overwrite === 'true') {
 | 
				
			||||||
      core.debug(
 | 
					      core.debug(
 | 
				
			||||||
        `An asset called ${asset_name} already exists in release ${tag} so we'll overwrite it.`
 | 
					        `An asset called ${asset_name} already exists in release ${tag} so we'll overwrite it.`
 | 
				
			||||||
      )
 | 
					      )
 | 
				
			||||||
      await octokit.repos.deleteReleaseAsset({
 | 
					      await octokit.repos.deleteReleaseAsset({
 | 
				
			||||||
        ...context.repo,
 | 
					        ...github.context.repo,
 | 
				
			||||||
        asset_id: duplicate_asset.id
 | 
					        asset_id: duplicate_asset.id
 | 
				
			||||||
      })
 | 
					      })
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
@ -86,7 +89,7 @@ async function upload_to_release(
 | 
				
			|||||||
  })
 | 
					  })
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
async function run() {
 | 
					async function run(): Promise<void> {
 | 
				
			||||||
  try {
 | 
					  try {
 | 
				
			||||||
    const token = core.getInput('repo_token', {required: true})
 | 
					    const token = core.getInput('repo_token', {required: true})
 | 
				
			||||||
    const file = core.getInput('file', {required: true})
 | 
					    const file = core.getInput('file', {required: true})
 | 
				
			||||||
@ -94,14 +97,13 @@ async function run() {
 | 
				
			|||||||
    const tag = core.getInput('tag', {required: true}).replace('refs/tags/', '')
 | 
					    const tag = core.getInput('tag', {required: true}).replace('refs/tags/', '')
 | 
				
			||||||
    const overwrite = core.getInput('overwrite')
 | 
					    const overwrite = core.getInput('overwrite')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const octokit = github.getOctokit(token)
 | 
					    const octokit: Octokit = github.getOctokit(token)
 | 
				
			||||||
    const context = github.context
 | 
					    const release = await get_release_by_tag(tag, octokit)
 | 
				
			||||||
    const release = await get_release_by_tag(tag, octokit, context)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (file_glob === 'true') {
 | 
					    if (file_glob === 'true') {
 | 
				
			||||||
      const files = glob.sync(file)
 | 
					      const files = glob.sync(file)
 | 
				
			||||||
      if (files.length > 0) {
 | 
					      if (files.length > 0) {
 | 
				
			||||||
        for (let file of files) {
 | 
					        for (const file of files) {
 | 
				
			||||||
          const asset_name = path.basename(file)
 | 
					          const asset_name = path.basename(file)
 | 
				
			||||||
          await upload_to_release(
 | 
					          await upload_to_release(
 | 
				
			||||||
            release,
 | 
					            release,
 | 
				
			||||||
@ -109,8 +111,7 @@ async function run() {
 | 
				
			|||||||
            asset_name,
 | 
					            asset_name,
 | 
				
			||||||
            tag,
 | 
					            tag,
 | 
				
			||||||
            overwrite,
 | 
					            overwrite,
 | 
				
			||||||
            octokit,
 | 
					            octokit
 | 
				
			||||||
            context
 | 
					 | 
				
			||||||
          )
 | 
					          )
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      } else {
 | 
					      } else {
 | 
				
			||||||
@ -126,8 +127,7 @@ async function run() {
 | 
				
			|||||||
        asset_name,
 | 
					        asset_name,
 | 
				
			||||||
        tag,
 | 
					        tag,
 | 
				
			||||||
        overwrite,
 | 
					        overwrite,
 | 
				
			||||||
        octokit,
 | 
					        octokit
 | 
				
			||||||
        context
 | 
					 | 
				
			||||||
      )
 | 
					      )
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  } catch (error) {
 | 
					  } catch (error) {
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user