├── bin
└── postinstall
├── src
├── demo
│ ├── css
│ │ └── App.css
│ ├── index.js
│ └── App.js
└── lib
│ ├── index.js
│ └── tests
│ └── redux-better-promise.test.js
├── demo
├── index.css
├── index.css.map
├── index.html
├── index.js
└── index.js.map
├── docs
└── whatsnew.md
├── config
├── jest
│ ├── cssTransform.js
│ └── fileTransform.js
├── getPackageJson.js
├── paths.js
├── env.js
├── webpackDevServer.config.js
├── webpack.config.dev.js
├── webpack.config.demo.js
└── webpack.config.prod.js
├── public
└── index.html
├── .gitignore
├── .npmignore
├── .circleci
└── config.yml
├── LICENSE
├── scripts
├── test.js
├── start.js
├── demo.js
└── build.js
├── package.json
└── README.md
/bin/postinstall:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/demo/css/App.css:
--------------------------------------------------------------------------------
1 | body {
2 | color: black;
3 | }
--------------------------------------------------------------------------------
/src/demo/index.js:
--------------------------------------------------------------------------------
1 | import App from './App';
2 |
3 | new App();
--------------------------------------------------------------------------------
/demo/index.css:
--------------------------------------------------------------------------------
1 | body{color:#000}
2 | /*# sourceMappingURL=index.css.map */
--------------------------------------------------------------------------------
/src/demo/App.js:
--------------------------------------------------------------------------------
1 | import './css/App.css';
2 | import Lib from './../lib';
3 |
4 | class App {
5 | constructor(){
6 | let libInstance = new Lib();
7 | console.log("Demo loaded!", libInstance);
8 | }
9 | }
10 |
11 | export default App;
12 |
--------------------------------------------------------------------------------
/demo/index.css.map:
--------------------------------------------------------------------------------
1 | {"version":3,"sources":["X:/Dev/js-library-boilerplate/src/lib/css/X:/Dev/js-library-boilerplate/src/lib/css/App.css","index.css"],"names":[],"mappings":"AAAA,KACE,UAAa,CCId","file":"index.css","sourcesContent":["body {\r\n color: black;\r\n}","body {\r\n color: black;\r\n}\nbody {\r\n color: black;\r\n}\n"]}
--------------------------------------------------------------------------------
/docs/whatsnew.md:
--------------------------------------------------------------------------------
1 | #### 1.0.1
2 | * Migrated to Webpack 4 and Babel 7
3 | * Tests rewrote using Jest
4 |
5 | #### 0.1.3
6 | * Updated readme
7 |
8 | #### 0.1.2
9 | * Updated readme
10 |
11 | #### 0.1.1
12 | * Updated readme
13 |
14 | #### 0.1.0
15 | * Added global hooks
16 |
17 | #### 0.0.2
18 | * Init
19 | * Added tests
20 | * Added readme
--------------------------------------------------------------------------------
/demo/index.html:
--------------------------------------------------------------------------------
1 |
DemoDemo Page
--------------------------------------------------------------------------------
/config/jest/cssTransform.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | // This is a custom Jest transformer turning style imports into empty objects.
4 | // http://facebook.github.io/jest/docs/en/webpack.html
5 |
6 | module.exports = {
7 | process() {
8 | return 'module.exports = {};';
9 | },
10 | getCacheKey() {
11 | // The output is always the same.
12 | return 'cssTransform';
13 | },
14 | };
15 |
--------------------------------------------------------------------------------
/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Demo
7 |
8 |
9 |
12 | Demo Page
13 |
14 |
15 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2 |
3 | # dependencies
4 | /node_modules
5 | /.pnp
6 | .pnp.js
7 |
8 | # testing
9 | /coverage
10 |
11 | # production
12 | #/build
13 |
14 | # misc
15 | .DS_Store
16 | .env.local
17 | .env.development.local
18 | .env.test.local
19 | .env.production.local
20 |
21 | npm-debug.log*
22 | yarn-debug.log*
23 | yarn-error.log*
24 |
25 | # webstorm
26 | .idea
--------------------------------------------------------------------------------
/.npmignore:
--------------------------------------------------------------------------------
1 | # dependencies
2 | /node_modules
3 |
4 | # testing
5 | /coverage
6 |
7 | # docs
8 | /docs
9 |
10 | # misc
11 | .DS_Store
12 | .env.local
13 | .env.development.local
14 | .env.test.local
15 | .env.production.local
16 | /.github
17 | /demo
18 | .esdoc.json
19 |
20 | npm-debug.log*
21 | yarn-debug.log*
22 | yarn-error.log*
23 |
24 | # Development folders and files
25 | public
26 | src
27 | scripts
28 | config
29 | .travis.yml
30 | CHANGELOG.md
31 | README.md
32 |
33 | # webstorm
34 | .idea
--------------------------------------------------------------------------------
/.circleci/config.yml:
--------------------------------------------------------------------------------
1 | version: 2
2 | jobs:
3 | build:
4 | docker:
5 | # specify the version you desire here
6 | - image: circleci/node:10
7 |
8 | working_directory: ~
9 |
10 | steps:
11 | - checkout
12 |
13 | # Download and cache dependencies
14 | - restore_cache:
15 | keys:
16 | - v1-dependencies-{{ checksum "package.json" }}
17 | # fallback to using the latest cache if no exact match is found
18 | - v1-dependencies-
19 |
20 | - run: npm install
21 |
22 | - save_cache:
23 | paths:
24 | - node_modules
25 | key: v1-dependencies-{{ checksum "package.json" }}
26 |
27 | # run tests!
28 | - run: npm run test
29 |
30 |
--------------------------------------------------------------------------------
/config/getPackageJson.js:
--------------------------------------------------------------------------------
1 | const fs = require('fs');
2 | const path = require('path');
3 |
4 | /**
5 | * A module to get package informations from package.json
6 | * @module getPackageJson
7 | * @param {...string} keys from package.json if no arguments passed it returns package.json content as object
8 | * @returns {object} with given keys or content of package.json as object
9 | */
10 |
11 | /**
12 | * Returns package info
13 | */
14 | const getPackageJson = function(...args) {
15 | const packageJSON = JSON.parse(fs.readFileSync(path.join(__dirname, '../package.json')));
16 | if (!args.length) {
17 | return packageJSON;
18 | }
19 | return args.reduce((out, key) => {
20 | out[key] = packageJSON[key];
21 | return out;
22 | }, {});
23 | };
24 |
25 | module.exports = getPackageJson;
26 |
--------------------------------------------------------------------------------
/config/jest/fileTransform.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | const path = require('path');
4 |
5 | // This is a custom Jest transformer turning file imports into filenames.
6 | // http://facebook.github.io/jest/docs/en/webpack.html
7 |
8 | module.exports = {
9 | process(src, filename) {
10 | const assetFilename = JSON.stringify(path.basename(filename));
11 |
12 | if (filename.match(/\.svg$/)) {
13 | return `module.exports = {
14 | __esModule: true,
15 | default: ${assetFilename},
16 | ReactComponent: (props) => ({
17 | $$typeof: Symbol.for('react.element'),
18 | type: 'svg',
19 | ref: null,
20 | key: null,
21 | props: Object.assign({}, props, {
22 | children: ${assetFilename}
23 | })
24 | }),
25 | };`;
26 | }
27 |
28 | return `module.exports = ${assetFilename};`;
29 | },
30 | };
31 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2018 Łukasz Pluszczewski
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/demo/index.js:
--------------------------------------------------------------------------------
1 | !function(n){var e={};function t(o){if(e[o])return e[o].exports;var r=e[o]={i:o,l:!1,exports:{}};return n[o].call(r.exports,r,r.exports,t),r.l=!0,r.exports}t.m=n,t.c=e,t.d=function(n,e,o){t.o(n,e)||Object.defineProperty(n,e,{enumerable:!0,get:o})},t.r=function(n){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},t.t=function(n,e){if(1&e&&(n=t(n)),8&e)return n;if(4&e&&"object"===typeof n&&n&&n.__esModule)return n;var o=Object.create(null);if(t.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:n}),2&e&&"string"!=typeof n)for(var r in n)t.d(o,r,function(e){return n[e]}.bind(null,r));return o},t.n=function(n){var e=n&&n.__esModule?function(){return n.default}:function(){return n};return t.d(e,"a",e),e},t.o=function(n,e){return Object.prototype.hasOwnProperty.call(n,e)},t.p="",t(t.s=0)}([function(n,e,t){n.exports=t(3)},function(n,e,t){},function(n,e,t){},function(n,e,t){"use strict";t.r(e);t(1),t(2);var o=function n(){!function(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),console.log("Lib constructor called")};new function n(){!function(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n);var e=new o;console.log("Demo loaded!",e)}}]);
2 | //# sourceMappingURL=index.js.map
--------------------------------------------------------------------------------
/scripts/test.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | // Do this as the first thing so that any code reading it knows the right env.
4 | process.env.BABEL_ENV = 'test';
5 | process.env.NODE_ENV = 'test';
6 | process.env.PUBLIC_URL = '';
7 |
8 | // Makes the script crash on unhandled rejections instead of silently
9 | // ignoring them. In the future, promise rejections that are not handled will
10 | // terminate the Node.js process with a non-zero exit code.
11 | process.on('unhandledRejection', err => {
12 | throw err;
13 | });
14 |
15 | // Ensure environment variables are read.
16 | require('../config/env');
17 |
18 |
19 | const jest = require('jest');
20 | const execSync = require('child_process').execSync;
21 | let argv = process.argv.slice(2);
22 |
23 | function isInGitRepository() {
24 | try {
25 | execSync('git rev-parse --is-inside-work-tree', { stdio: 'ignore' });
26 | return true;
27 | } catch (e) {
28 | return false;
29 | }
30 | }
31 |
32 | function isInMercurialRepository() {
33 | try {
34 | execSync('hg --cwd . root', { stdio: 'ignore' });
35 | return true;
36 | } catch (e) {
37 | return false;
38 | }
39 | }
40 |
41 | // Watch unless on CI, in coverage mode, or explicitly running all tests
42 | if (
43 | !process.env.CI &&
44 | argv.indexOf('--coverage') === -1 &&
45 | argv.indexOf('--watchAll') === -1
46 | ) {
47 | // https://github.com/facebook/create-react-app/issues/5210
48 | const hasSourceControl = isInGitRepository() || isInMercurialRepository();
49 | argv.push(hasSourceControl ? '--watch' : '--watchAll');
50 | }
51 |
52 |
53 | jest.run(argv);
54 |
--------------------------------------------------------------------------------
/config/paths.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | const path = require('path');
4 | const fs = require('fs');
5 | const url = require('url');
6 |
7 | // Make sure any symlinks in the project folder are resolved:
8 | // https://github.com/facebook/create-react-app/issues/637
9 | const appDirectory = fs.realpathSync(process.cwd());
10 | const resolveApp = relativePath => path.resolve(appDirectory, relativePath);
11 |
12 | const envPublicUrl = process.env.PUBLIC_URL;
13 |
14 | function ensureSlash(inputPath, needsSlash) {
15 | const hasSlash = inputPath.endsWith('/');
16 | if (hasSlash && !needsSlash) {
17 | return inputPath.substr(0, inputPath.length - 1);
18 | } else if (!hasSlash && needsSlash) {
19 | return `${inputPath}/`;
20 | } else {
21 | return inputPath;
22 | }
23 | }
24 |
25 | const getPublicUrl = appPackageJson =>
26 | envPublicUrl || require(appPackageJson).homepage;
27 |
28 | // We use `PUBLIC_URL` environment variable or "homepage" field to infer
29 | // "public path" at which the app is served.
30 | // Webpack needs to know it to put the right