From 5fa7067ede5e286812507e0e7052847ef9824506 Mon Sep 17 00:00:00 2001 From: Dong Nguyen Date: Sun, 8 Nov 2020 15:07:21 +0700 Subject: [PATCH] v1.4.3 - Replace Travis CI wih GitHub Actions --- .github/workflows/ci-test.yml | 46 +++++++++++++++++++++++ .travis.yml | 13 ------- README.md | 3 +- package.json | 10 +++-- src/main.test.js | 2 +- tsconfig.json | 69 +++++++++++++++++++++++++++++++++++ 6 files changed, 124 insertions(+), 19 deletions(-) create mode 100644 .github/workflows/ci-test.yml delete mode 100644 .travis.yml create mode 100644 tsconfig.json diff --git a/.github/workflows/ci-test.yml b/.github/workflows/ci-test.yml new file mode 100644 index 0000000..7266afd --- /dev/null +++ b/.github/workflows/ci-test.yml @@ -0,0 +1,46 @@ +# GitHub actions +# https://docs.github.com/en/free-pro-team@latest/actions + +name: ci-test + +on: [push, pull_request] + +jobs: + test: + + runs-on: ubuntu-20.04 + + strategy: + matrix: + node_version: [10.14.2, 14.x, 15.x] + + steps: + - uses: actions/checkout@v2 + + - name: setup Node.js v${{ matrix.node_version }} + uses: actions/setup-node@v1 + with: + node-version: ${{ matrix.node_version }} + + - name: run npm scripts + run: | + npm install + npm run lint + npm run build --if-present + npm run test + + - name: sync to coveralls + uses: coverallsapp/github-action@v1.1.2 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + + - name: cache node modules + uses: actions/cache@v2 + with: + path: ~/.npm + key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} + restore-keys: | + ${{ runner.os }}-node- + + + diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 7e0f129..0000000 --- a/.travis.yml +++ /dev/null @@ -1,13 +0,0 @@ -language: node_js -node_js: - - 15 - - 14 - - 10.14.2 -git: - depth: 1 -before_script: - - npm i -script: - - npm list || true - - npm test - - cat coverage/lcov.info | coveralls diff --git a/README.md b/README.md index d291e57..e63e899 100644 --- a/README.md +++ b/README.md @@ -3,8 +3,9 @@ Extract eEmbed content from given URL. [![NPM](https://badge.fury.io/js/oembed-parser.svg)](https://badge.fury.io/js/oembed-parser) -[![Build Status](https://travis-ci.org/ndaidong/oembed-parser.svg)](https://travis-ci.org/ndaidong/oembed-parser) +[![CI test](https://github.com/ndaidong/oembed-parser/workflows/ci-test/badge.svg)](https://github.com/ndaidong/oembed-parser/actions) [![Coverage Status](https://coveralls.io/repos/github/ndaidong/oembed-parser/badge.svg)](https://coveralls.io/github/ndaidong/oembed-parser) +[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=ndaidong_oembed-parser&metric=alert_status)](https://sonarcloud.io/dashboard?id=ndaidong_oembed-parser) ### Important note: diff --git a/package.json b/package.json index 01cd4c5..bc95d02 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "version": "1.4.2", + "version": "1.4.3", "name": "oembed-parser", "description": "Get oEmbed data from given URL.", "homepage": "https://www.npmjs.com/package/oembed-parser", @@ -18,15 +18,17 @@ "test": "jest --verbose --coverage=true --unhandled-rejections=strict", "eval": "node eval", "sync": "node sync", + "tsc": "tsc --init", + "build": "tsc", "reset": "node reset" }, "dependencies": { "node-fetch": "^2.6.1" }, "devDependencies": { - "coveralls": "^3.1.0", "eslint-config-goes": "^1.1.8", - "jest": "^26.6.1" + "jest": "^26.6.1", + "typescript": "^4.0.5" }, "keywords": [ "oembed", @@ -35,5 +37,5 @@ "util" ], "license": "MIT", - "types": "index.d.ts" + "types": "./index.d.ts" } diff --git a/src/main.test.js b/src/main.test.js index b36911d..5b2ee14 100644 --- a/src/main.test.js +++ b/src/main.test.js @@ -86,7 +86,7 @@ const hasInstagramKeys = (o) => { }); }; - badSamples.map(testBadOne); + return badSamples.map(testBadOne); })(); diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..abeb177 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,69 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig.json to read more about this file */ + + /* Basic Options */ + // "incremental": true, /* Enable incremental compilation */ + "target": "es5", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */ + "module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */ + // "lib": [], /* Specify library files to be included in the compilation. */ + // "allowJs": true, /* Allow javascript files to be compiled. */ + // "checkJs": true, /* Report errors in .js files. */ + // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ + "declaration": true, /* Generates corresponding '.d.ts' file. */ + "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ + // "sourceMap": true, /* Generates corresponding '.map' file. */ + // "outFile": "./", /* Concatenate and emit output to single file. */ + // "outDir": "./", /* Redirect output structure to the directory. */ + // "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ + // "composite": true, /* Enable project compilation */ + // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ + // "removeComments": true, /* Do not emit comments to output. */ + // "noEmit": true, /* Do not emit outputs. */ + // "importHelpers": true, /* Import emit helpers from 'tslib'. */ + // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ + // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ + + /* Strict Type-Checking Options */ + "strict": true, /* Enable all strict type-checking options. */ + // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* Enable strict null checks. */ + // "strictFunctionTypes": true, /* Enable strict checking of function types. */ + // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ + // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ + // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ + // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ + + /* Additional Checks */ + // "noUnusedLocals": true, /* Report errors on unused locals. */ + // "noUnusedParameters": true, /* Report errors on unused parameters. */ + // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ + // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ + + /* Module Resolution Options */ + // "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ + // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ + // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ + // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ + // "typeRoots": [], /* List of folders to include type definitions from. */ + // "types": [], /* Type declaration files to be included in compilation. */ + // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ + "esModuleInterop": true, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ + // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + + /* Source Map Options */ + // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ + // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ + + /* Experimental Options */ + // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ + // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ + + /* Advanced Options */ + "skipLibCheck": true, /* Skip type checking of declaration files. */ + "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */ + } +}