Skip to content

Commit

Permalink
Merge pull request #1411 from blackflux/dev
Browse files Browse the repository at this point in the history
[Gally]: master <- dev
  • Loading branch information
simlu committed Jan 24, 2022
2 parents d564665 + 3165739 commit cb436ef
Show file tree
Hide file tree
Showing 28 changed files with 162 additions and 401 deletions.
27 changes: 27 additions & 0 deletions .c8rc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
{
"reporter": [
"lcov",
"text-summary"
],
"reports-dir": "./coverage",
"all": true,
"include": [
"**/*.js"
],
"exclude": [
"gardener.js",
"node_modules/*",
"coverage/*",
"lib/*"
],
"extension": [],
"skip-full": true,
"check-coverage": true,
"temp-directory": "./coverage/.c8_output",
"clean": true,
"per-file": false,
"lines": 100,
"statements": 100,
"functions": 100,
"branches": 100
}
3 changes: 2 additions & 1 deletion .eslintrc.json
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,8 @@
"@blackflux/rules/prevent-typeof-object": 1,
"mocha/no-mocha-arrows": 0,
"mocha/no-hooks-for-single-case": 0,
"import/no-useless-path-segments": [2, {"commonjs": true}]
"import/no-useless-path-segments": [2, {"commonjs": true}],
"import/extensions": [2, "always"]
},
"env": {"es6": true, "node": true, "mocha": true},
"globals": {},
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ Could for example re-use a plugin as

<!-- eslint-disable-next-line import/no-unresolved, import/no-extraneous-dependencies -->
```js
const { injectPlugin, rewriter } = require('object-rewrite');
import { injectPlugin, rewriter } from 'object-rewrite';

const plugin = injectPlugin(/* ... */);

Expand Down
11 changes: 8 additions & 3 deletions gardener.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
// eslint-disable-next-line import/no-extraneous-dependencies
const gardener = require('js-gardener');
import gardener from 'js-gardener';

if (require.main === module) {
gardener().catch(() => process.exit(1));
import { fileURLToPath } from 'url';
import process from 'process';

if (process.argv[1] === fileURLToPath(import.meta.url)) {
gardener({
skip: ['robo']
}).catch(() => process.exit(1));
}
41 changes: 5 additions & 36 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"name": "object-rewrite",
"type": "module",
"version": "0.0.0-development",
"description": "Rewrite Object(s) in place using plugins.",
"main": "lib/index.js",
Expand All @@ -21,6 +22,7 @@
"@blackflux/eslint-plugin-rules": "2.0.4",
"@blackflux/robo-config-plugin": "5.3.26",
"babel-plugin-istanbul": "6.1.1",
"c8": "7.11.0",
"chai": "4.3.4",
"coveralls": "3.1.1",
"eslint": "8.7.0",
Expand All @@ -31,18 +33,17 @@
"eslint-plugin-mocha": "10.0.3",
"js-gardener": "3.0.5",
"lodash.get": "4.4.2",
"lodash.shuffle": "4.2.0",
"nyc": "15.1.0"
"lodash.shuffle": "4.2.0"
},
"scripts": {
"clean": "rm -rf lib",
"build": "cp -rf ./src ./lib",
"build-clean": "yarn run clean && yarn run build",
"test-simple": "nyc mocha \"./test/**/*.spec.js\"",
"test-simple": "c8 mocha \"./test/**/*.spec.js\"",
"test": "yarn run clean && yarn run gardener && yarn run test-simple",
"coveralls": "node ./node_modules/coveralls/bin/coveralls.js < ./coverage/lcov.info",
"semantic-release": "yarn run build-clean && npx semantic-release",
"gardener": "node gardener",
"gardener": "node gardener.js",
"docker": "docker run --net host -u`id -u`:`id -g` -v $(pwd):/user/project -v ~/.aws:/user/.aws -v ~/.npmrc:/user/.npmrc -w /user/project -it --entrypoint /bin/bash",
"t": "yarn test",
"ts": "yarn run test-simple",
Expand All @@ -61,38 +62,6 @@
],
"author": "Lukas Siemon",
"license": "MIT",
"nyc": {
"tempDir": "./coverage/.nyc_output",
"report-dir": "./coverage",
"check-coverage": true,
"per-file": false,
"lines": 100,
"statements": 100,
"functions": 100,
"branches": 100,
"include": [
"**/*.js"
],
"reporter": [
"lcov",
"text-summary"
],
"require": [
"@babel/register"
],
"extension": [],
"cache": true,
"all": true,
"babel": true,
"exclude": [
"gardener.js",
"node_modules/*",
"coverage/*",
"lib/*"
],
"sourceMap": false,
"instrument": false
},
"licenses": [
{
"type": "MIT",
Expand Down
6 changes: 3 additions & 3 deletions src/index.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
const { injectPlugin, filterPlugin, sortPlugin } = require('./module/plugin');
const rewriter = require('./module/rewriter');
import { injectPlugin, filterPlugin, sortPlugin } from './module/plugin.js';
import rewriter from './module/rewriter.js';

module.exports = {
export default {
injectPlugin,
filterPlugin,
sortPlugin,
Expand Down
16 changes: 8 additions & 8 deletions src/module/plugin.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
const assert = require('assert');
const Joi = require('joi-strict');
const validationCompile = require('./plugin/validation-compile');
const validationExtractKeys = require('./plugin/validation-extract-keys');
const joinPath = require('./plugin/join-path');
import assert from 'assert';
import Joi from 'joi-strict';
import validationCompile from './plugin/validation-compile.js';
import validationExtractKeys from './plugin/validation-extract-keys.js';
import joinPath from './plugin/join-path.js';

const plugin = (type, options) => {
assert(['FILTER', 'INJECT', 'SORT'].includes(type));
Expand Down Expand Up @@ -163,6 +163,6 @@ const plugin = (type, options) => {
return self;
};

module.exports.filterPlugin = (opts) => plugin('FILTER', opts);
module.exports.injectPlugin = (opts) => plugin('INJECT', opts);
module.exports.sortPlugin = (opts) => plugin('SORT', opts);
export const filterPlugin = (opts) => plugin('FILTER', opts);
export const injectPlugin = (opts) => plugin('INJECT', opts);
export const sortPlugin = (opts) => plugin('SORT', opts);
2 changes: 1 addition & 1 deletion src/module/plugin/join-path.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
module.exports = (input) => {
export default (input) => {
const result = input.filter((e) => !!e).join('.');
if (result === '*') {
return '';
Expand Down
4 changes: 2 additions & 2 deletions src/module/plugin/validation-compile.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const assert = require('assert');
import assert from 'assert';

const validationCompile = (input, strict = true) => {
if (typeof input === 'function') {
Expand All @@ -20,4 +20,4 @@ const validationCompile = (input, strict = true) => {
&& compiled.every(([k, v]) => v(r[k]) === true)
);
};
module.exports = validationCompile;
export default validationCompile;
4 changes: 2 additions & 2 deletions src/module/plugin/validation-extract-keys.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const assert = require('assert');
import assert from 'assert';

const validationExtractKeys = (prefix, input) => {
if (typeof input === 'function') {
Expand All @@ -15,4 +15,4 @@ const validationExtractKeys = (prefix, input) => {
return p;
}, []);
};
module.exports = validationExtractKeys;
export default validationExtractKeys;
16 changes: 8 additions & 8 deletions src/module/rewriter.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
const assert = require('assert');
const objectFields = require('object-fields');
const compileMeta = require('./rewriter/compile-meta');
const mkInjectRewriter = require('./rewriter/mk-inject-rewriter');
const mkFilterRewriter = require('./rewriter/mk-filter-rewriter');
const mkSortRewriter = require('./rewriter/mk-sort-rewriter');
const initPluginMap = require('./rewriter/init-plugin-map');
import assert from 'assert';
import objectFields from 'object-fields';
import compileMeta from './rewriter/compile-meta.js';
import mkInjectRewriter from './rewriter/mk-inject-rewriter.js';
import mkFilterRewriter from './rewriter/mk-filter-rewriter.js';
import mkSortRewriter from './rewriter/mk-sort-rewriter.js';
import initPluginMap from './rewriter/init-plugin-map.js';

module.exports = (pluginMap, dataStoreFields_, logger = console) => {
export default (pluginMap, dataStoreFields_, logger = console) => {
assert(pluginMap instanceof Object && !Array.isArray(pluginMap));
assert(Array.isArray(dataStoreFields_) && dataStoreFields_.every((e) => typeof e === 'string'));

Expand Down
2 changes: 1 addition & 1 deletion src/module/rewriter/compare-fn.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
module.exports = (keys) => {
export default (keys) => {
const lookups = keys.reduce((p, c, idx) => {
const index = Math.max(0, c.lastIndexOf('.'));
const k = c.slice(0, index);
Expand Down
4 changes: 2 additions & 2 deletions src/module/rewriter/compile-meta.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
const compileTargetMap = require('./compile-target-map');
import compileTargetMap from './compile-target-map.js';

// todo: write separate test
module.exports = (plugins, fields, initContext, logger) => {
export default (plugins, fields, initContext, logger) => {
const pluginsByType = {
FILTER: [],
INJECT: [],
Expand Down
2 changes: 1 addition & 1 deletion src/module/rewriter/compile-target-map.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
module.exports = (type, plugins, initContext) => {
export default (type, plugins, initContext) => {
const result = {};
for (let i = 0; i < plugins.length; i += 1) {
const plugin = plugins[i];
Expand Down
2 changes: 1 addition & 1 deletion src/module/rewriter/init-plugin-map.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
module.exports = (map, data, context, logger) => {
export default (map, data, context, logger) => {
const result = {};
const activeLookup = new Map();
Object.entries(map).forEach(([prefix, pls]) => {
Expand Down
8 changes: 4 additions & 4 deletions src/module/rewriter/mk-filter-rewriter.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
const assert = require('assert');
const objectScan = require('object-scan');
const CompareFn = require('./compare-fn');
import assert from 'assert';
import objectScan from 'object-scan';
import CompareFn from './compare-fn.js';

module.exports = (keys) => objectScan(keys, {
export default (keys) => objectScan(keys, {
useArraySelector: false,
compareFn: CompareFn(keys),
filterFn: ({
Expand Down
10 changes: 5 additions & 5 deletions src/module/rewriter/mk-inject-rewriter.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
const assert = require('assert');
const objectScan = require('object-scan');
const set = require('lodash.set');
const CompareFn = require('./compare-fn');
import assert from 'assert';
import objectScan from 'object-scan';
import set from 'lodash.set';
import CompareFn from './compare-fn.js';

module.exports = (keys) => objectScan(keys, {
export default (keys) => objectScan(keys, {
useArraySelector: false,
compareFn: CompareFn(keys),
filterFn: ({
Expand Down
10 changes: 5 additions & 5 deletions src/module/rewriter/mk-sort-rewriter.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
const assert = require('assert');
const objectScan = require('object-scan');
const cmpFn = require('../../util/cmp-fn');
const CompareFn = require('./compare-fn');
import assert from 'assert';
import objectScan from 'object-scan';
import cmpFn from '../../util/cmp-fn.js';
import CompareFn from './compare-fn.js';

module.exports = (keys) => objectScan(keys, {
export default (keys) => objectScan(keys, {
useArraySelector: false,
compareFn: CompareFn(keys),
filterFn: ({
Expand Down
4 changes: 2 additions & 2 deletions src/util/cmp-fn.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const assert = require('assert');
import assert from 'assert';

const fn = (a, b) => {
if (Array.isArray(a)) {
Expand All @@ -17,4 +17,4 @@ const fn = (a, b) => {
}
return a < b ? -1 : 1;
};
module.exports = fn;
export default fn;
4 changes: 2 additions & 2 deletions test/index.spec.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
const expect = require('chai').expect;
const index = require('../src/index');
import { expect } from 'chai';
import index from '../src/index.js';

describe('Testing Package', () => {
it('Testing Exposed', () => {
Expand Down
4 changes: 2 additions & 2 deletions test/module/plugin.spec.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
const { expect } = require('chai');
const { injectPlugin, filterPlugin, sortPlugin } = require('../../src/module/plugin');
import { expect } from 'chai';
import { injectPlugin, filterPlugin, sortPlugin } from '../../src/module/plugin.js';

describe('Testing plugin', () => {
const fn = () => null;
Expand Down
4 changes: 2 additions & 2 deletions test/module/plugin/join-path.spec.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
const { expect } = require('chai');
const joinPath = require('../../../src/module/plugin/join-path');
import { expect } from 'chai';
import joinPath from '../../../src/module/plugin/join-path.js';

describe('Testing join-path.js', () => {
it('Testing basic join', () => {
Expand Down
4 changes: 2 additions & 2 deletions test/module/plugin/validation-compile.spec.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
const { expect } = require('chai');
const validationCompile = require('../../../src/module/plugin/validation-compile');
import { expect } from 'chai';
import validationCompile from '../../../src/module/plugin/validation-compile.js';

describe('Testing validation-compile.js', () => {
it('Testing function', () => {
Expand Down
4 changes: 2 additions & 2 deletions test/module/plugin/validation-extract-keys.spec.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
const { expect } = require('chai');
const validationExtractKeys = require('../../../src/module/plugin/validation-extract-keys');
import { expect } from 'chai';
import validationExtractKeys from '../../../src/module/plugin/validation-extract-keys.js';

describe('Testing validation-extract-keys.js', () => {
let fn;
Expand Down
10 changes: 5 additions & 5 deletions test/module/rewriter.spec.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
const get = require('lodash.get');
const { expect } = require('chai');
const shuffle = require('lodash.shuffle');
const rewriter = require('../../src/module/rewriter');
const { injectPlugin, filterPlugin, sortPlugin } = require('../../src/module/plugin');
import get from 'lodash.get';
import { expect } from 'chai';
import shuffle from 'lodash.shuffle';
import rewriter from '../../src/module/rewriter.js';
import { injectPlugin, filterPlugin, sortPlugin } from '../../src/module/plugin.js';

describe('Testing rewriter', () => {
it('Testing name not unique', () => {
Expand Down
8 changes: 4 additions & 4 deletions test/module/rewriter/compile-target-map.spec.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
const { expect } = require('chai');
const objectScan = require('object-scan');
const { injectPlugin } = require('../../../src/module/plugin');
const compileTargetMap = require('../../../src/module/rewriter/compile-target-map');
import { expect } from 'chai';
import objectScan from 'object-scan';
import { injectPlugin } from '../../../src/module/plugin.js';
import compileTargetMap from '../../../src/module/rewriter/compile-target-map.js';

describe('Testing get-plugin-target-map.js', () => {
let fn;
Expand Down
4 changes: 2 additions & 2 deletions test/util/cmp-fn.spec.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
const { expect } = require('chai');
const cmpFn = require('../../src/util/cmp-fn');
import { expect } from 'chai';
import cmpFn from '../../src/util/cmp-fn.js';

describe('Testing cmp-fn.js', () => {
it('Testing sort', () => {
Expand Down

0 comments on commit cb436ef

Please sign in to comment.