From cc4b1d334955c033278692c62de208167e97b7f5 Mon Sep 17 00:00:00 2001 From: willclarktech Date: Wed, 9 Sep 2020 13:50:58 +0200 Subject: [PATCH] launchpad-ledger: Add basic package setup --- packages/launchpad-ledger/.eslintignore | 1 + packages/launchpad-ledger/.gitignore | 3 ++ packages/launchpad-ledger/.nycrc.yml | 1 + packages/launchpad-ledger/README.md | 12 +++++ .../launchpad-ledger/jasmine-testrunner.js | 33 +++++++++++++ packages/launchpad-ledger/karma.conf.js | 47 +++++++++++++++++++ packages/launchpad-ledger/package.json | 44 +++++++++++++++++ packages/launchpad-ledger/tsconfig.json | 12 +++++ packages/launchpad-ledger/typedoc.js | 13 +++++ .../launchpad-ledger/webpack.web.config.js | 19 ++++++++ 10 files changed, 185 insertions(+) create mode 120000 packages/launchpad-ledger/.eslintignore create mode 100644 packages/launchpad-ledger/.gitignore create mode 120000 packages/launchpad-ledger/.nycrc.yml create mode 100644 packages/launchpad-ledger/README.md create mode 100755 packages/launchpad-ledger/jasmine-testrunner.js create mode 100644 packages/launchpad-ledger/karma.conf.js create mode 100644 packages/launchpad-ledger/package.json create mode 100644 packages/launchpad-ledger/tsconfig.json create mode 100644 packages/launchpad-ledger/typedoc.js create mode 100644 packages/launchpad-ledger/webpack.web.config.js diff --git a/packages/launchpad-ledger/.eslintignore b/packages/launchpad-ledger/.eslintignore new file mode 120000 index 0000000000..86039baf54 --- /dev/null +++ b/packages/launchpad-ledger/.eslintignore @@ -0,0 +1 @@ +../../.eslintignore \ No newline at end of file diff --git a/packages/launchpad-ledger/.gitignore b/packages/launchpad-ledger/.gitignore new file mode 100644 index 0000000000..68bf373524 --- /dev/null +++ b/packages/launchpad-ledger/.gitignore @@ -0,0 +1,3 @@ +build/ +dist/ +docs/ diff --git a/packages/launchpad-ledger/.nycrc.yml b/packages/launchpad-ledger/.nycrc.yml new file mode 120000 index 0000000000..1f95ac55f6 --- /dev/null +++ b/packages/launchpad-ledger/.nycrc.yml @@ -0,0 +1 @@ +../../.nycrc.yml \ No newline at end of file diff --git a/packages/launchpad-ledger/README.md b/packages/launchpad-ledger/README.md new file mode 100644 index 0000000000..e8c0ad2311 --- /dev/null +++ b/packages/launchpad-ledger/README.md @@ -0,0 +1,12 @@ +# @cosmjs/launchpad-ledger + +[![npm version](https://img.shields.io/npm/v/@cosmjs/launchpad-ledger.svg)](https://www.npmjs.com/package/@cosmjs/launchpad-ledger) + +``` + +## License + +This package is part of the cosmjs repository, licensed under the Apache License +2.0 (see [NOTICE](https://github.com/CosmWasm/cosmjs/blob/master/NOTICE) and +[LICENSE](https://github.com/CosmWasm/cosmjs/blob/master/LICENSE)). +``` diff --git a/packages/launchpad-ledger/jasmine-testrunner.js b/packages/launchpad-ledger/jasmine-testrunner.js new file mode 100755 index 0000000000..7a17962eb9 --- /dev/null +++ b/packages/launchpad-ledger/jasmine-testrunner.js @@ -0,0 +1,33 @@ +#!/usr/bin/env node + +/* eslint-disable @typescript-eslint/naming-convention */ +require("source-map-support").install(); +const defaultSpecReporterConfig = require("../../jasmine-spec-reporter.config.json"); + +// setup Jasmine +const Jasmine = require("jasmine"); +const jasmine = new Jasmine(); +jasmine.loadConfig({ + spec_dir: "build", + spec_files: ["**/*.spec.js"], + helpers: [], + random: false, + seed: null, + stopSpecOnExpectationFailure: false, +}); +jasmine.jasmine.DEFAULT_TIMEOUT_INTERVAL = 15 * 1000; + +// setup reporter +const { SpecReporter } = require("jasmine-spec-reporter"); +const reporter = new SpecReporter({ + ...defaultSpecReporterConfig, + spec: { + ...defaultSpecReporterConfig.spec, + displaySuccessful: !process.argv.includes("--quiet"), + }, +}); + +// initialize and execute +jasmine.env.clearReporters(); +jasmine.addReporter(reporter); +jasmine.execute(); diff --git a/packages/launchpad-ledger/karma.conf.js b/packages/launchpad-ledger/karma.conf.js new file mode 100644 index 0000000000..006da5fe6b --- /dev/null +++ b/packages/launchpad-ledger/karma.conf.js @@ -0,0 +1,47 @@ +module.exports = function (config) { + config.set({ + // base path that will be used to resolve all patterns (eg. files, exclude) + basePath: ".", + + // frameworks to use + // available frameworks: https://npmjs.org/browse/keyword/karma-adapter + frameworks: ["jasmine"], + + // list of files / patterns to load in the browser + files: ["dist/web/tests.js"], + + client: { + jasmine: { + random: false, + timeoutInterval: 15000, + }, + }, + + // test results reporter to use + // possible values: 'dots', 'progress' + // available reporters: https://npmjs.org/browse/keyword/karma-reporter + reporters: ["progress", "kjhtml"], + + // web server port + port: 9876, + + // enable / disable colors in the output (reporters and logs) + colors: true, + + // level of logging + // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG + logLevel: config.LOG_INFO, + + // enable / disable watching file and executing tests whenever any file changes + autoWatch: false, + + // start these browsers + // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher + browsers: ["Firefox"], + + browserNoActivityTimeout: 90000, + + // Keep brower open for debugging. This is overridden by yarn scripts + singleRun: false, + }); +}; diff --git a/packages/launchpad-ledger/package.json b/packages/launchpad-ledger/package.json new file mode 100644 index 0000000000..593e6edbe5 --- /dev/null +++ b/packages/launchpad-ledger/package.json @@ -0,0 +1,44 @@ +{ + "name": "@cosmjs/launchpad-ledger", + "version": "0.22.2", + "description": "A library for interacting with the Cosmos Launchpad Ledger Nano App", + "contributors": [ + "Will Clark " + ], + "license": "Apache-2.0", + "main": "build/index.js", + "types": "types/index.d.ts", + "files": [ + "build/", + "types/", + "*.md", + "!*.spec.*", + "!**/testdata/" + ], + "repository": { + "type": "git", + "url": "https://github.com/CosmWasm/cosmjs/tree/master/packages/launchpad-ledger" + }, + "publishConfig": { + "access": "public" + }, + "scripts": { + "docs": "typedoc --options typedoc.js", + "format": "prettier --write --loglevel warn \"./src/**/*.ts\"", + "format-text": "prettier --write --prose-wrap always --print-width 80 \"./*.md\"", + "lint": "eslint --max-warnings 0 \"**/*.{js,ts}\"", + "lint-fix": "eslint --max-warnings 0 \"**/*.{js,ts}\" --fix", + "move-types": "shx rm -rf ./types/* && shx mv build/types/* ./types && rm -rf ./types/testdata && shx rm -f ./types/*.{demo,spec}.d.ts && shx rm ./types/**/*.spec.d.ts", + "format-types": "prettier --write --loglevel warn \"./types/**/*.d.ts\"", + "prebuild": "shx rm -rf ./build", + "build": "tsc", + "postbuild": "yarn move-types && yarn format-types", + "build-or-skip": "[ -n \"$SKIP_BUILD\" ] || yarn build", + "test-node": "node jasmine-testrunner.js", + "test-firefox": "yarn pack-web && karma start --single-run --browsers Firefox", + "test-chrome": "yarn pack-web && karma start --single-run --browsers ChromeHeadless", + "test": "yarn build-or-skip && yarn test-node", + "coverage": "nyc --reporter=text --reporter=lcov yarn test --quiet", + "pack-web": "yarn build-or-skip && webpack --mode development --config webpack.web.config.js" + } +} diff --git a/packages/launchpad-ledger/tsconfig.json b/packages/launchpad-ledger/tsconfig.json new file mode 100644 index 0000000000..167e8c0226 --- /dev/null +++ b/packages/launchpad-ledger/tsconfig.json @@ -0,0 +1,12 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "baseUrl": ".", + "outDir": "build", + "declarationDir": "build/types", + "rootDir": "src" + }, + "include": [ + "src/**/*" + ] +} diff --git a/packages/launchpad-ledger/typedoc.js b/packages/launchpad-ledger/typedoc.js new file mode 100644 index 0000000000..4dfbe49dfa --- /dev/null +++ b/packages/launchpad-ledger/typedoc.js @@ -0,0 +1,13 @@ +const packageJson = require("./package.json"); + +module.exports = { + inputFiles: ["./src"], + out: "docs", + exclude: "**/*.spec.ts", + name: `${packageJson.name} Documentation`, + readme: "README.md", + mode: "file", + excludeExternals: true, + excludeNotExported: true, + excludePrivate: true, +}; diff --git a/packages/launchpad-ledger/webpack.web.config.js b/packages/launchpad-ledger/webpack.web.config.js new file mode 100644 index 0000000000..7373cace4f --- /dev/null +++ b/packages/launchpad-ledger/webpack.web.config.js @@ -0,0 +1,19 @@ +const glob = require("glob"); +const path = require("path"); +const webpack = require("webpack"); + +const target = "web"; +const distdir = path.join(__dirname, "dist", "web"); + +module.exports = [ + { + // bundle used for Karma tests + target: target, + entry: glob.sync("./build/**/*.spec.js"), + output: { + path: distdir, + filename: "tests.js", + }, + plugins: [new webpack.EnvironmentPlugin(["WASMD_ENABLED"])], + }, +];