metapak-nfroidure 11.2.1 → 12.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,37 @@
1
+ ## [12.0.2](https://github.com/nfroidure/metapak-nfroidure/compare/v12.0.1...v12.0.2) (2022-06-06)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * **tsesm:** fix vscode file presence for monorepos ([a2bc240](https://github.com/nfroidure/metapak-nfroidure/commit/a2bc240595be3a964339caa7812f01d710334cfb))
7
+
8
+
9
+
10
+ ## [12.0.1](https://github.com/nfroidure/metapak-nfroidure/compare/v12.0.0...v12.0.1) (2022-05-29)
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * **tsesm:** fix TypeScript + Jest configuration ([b7c6768](https://github.com/nfroidure/metapak-nfroidure/commit/b7c67688a494acc8cc918a61e75054d2c1ac7d80))
16
+
17
+
18
+
19
+ # [12.0.0](https://github.com/nfroidure/metapak-nfroidure/compare/v11.2.1...v12.0.0) (2022-05-27)
20
+
21
+
22
+ ### Bug Fixes
23
+
24
+ * **ci:** fix CI Config ([aea9263](https://github.com/nfroidure/metapak-nfroidure/commit/aea92638c3a579306b4060e62c7c22447a9ccc16))
25
+ * **configs:** fix GH Actions file name ([2c5d8af](https://github.com/nfroidure/metapak-nfroidure/commit/2c5d8af959a9a1755ef6754799f776ea8af016a6))
26
+
27
+
28
+ ### Features
29
+
30
+ * **configs:** add GH Actions instead of TravisCI ([bf679d6](https://github.com/nfroidure/metapak-nfroidure/commit/bf679d68dd4bf2209adeced107014743d33b487c)), closes [#19](https://github.com/nfroidure/metapak-nfroidure/issues/19)
31
+ * **configs:** add TypeScript+ESM build configuration ([145c9ba](https://github.com/nfroidure/metapak-nfroidure/commit/145c9ba57cb3f9e86bdd9a0b08ea4050f27aaa53)), closes [#31](https://github.com/nfroidure/metapak-nfroidure/issues/31)
32
+
33
+
34
+
1
35
  ## [11.2.1](https://github.com/nfroidure/metapak-nfroidure/compare/v11.2.0...v11.2.1) (2022-05-25)
2
36
 
3
37
 
package/README.md CHANGED
@@ -8,7 +8,6 @@
8
8
  > A metapak module for my open source projects.
9
9
 
10
10
  [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/nfroidure/metapak-nfroidure/blob/master/LICENSE)
11
- [![Build status](https://travis-ci.com/nfroidure/metapak-nfroidure.svg?branch=master)](https://travis-ci.com/github/nfroidure/metapak-nfroidure)
12
11
  [![Coverage Status](https://coveralls.io/repos/github/nfroidure/metapak-nfroidure/badge.svg?branch=master)](https://coveralls.io/github/nfroidure/metapak-nfroidure?branch=master)
13
12
 
14
13
 
package/package.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "metapak-nfroidure",
3
3
  "description": "A metapak module for my open source projects.",
4
- "version": "11.2.1",
4
+ "version": "12.0.2",
5
5
  "metapak": {
6
6
  "configs": [
7
7
  "main",
8
8
  "readme",
9
9
  "jest",
10
10
  "eslint",
11
- "travis",
11
+ "ghactions",
12
12
  "codeclimate"
13
13
  ],
14
14
  "data": {
@@ -48,7 +48,7 @@
48
48
  "metapak": "^3.1.5"
49
49
  },
50
50
  "engines": {
51
- "node": ">=12.19.0"
51
+ "node": ">=16.15.0"
52
52
  },
53
53
  "bugs": {
54
54
  "url": "https://github.com/nfroidure/metapak-nfroidure/issues"
@@ -62,7 +62,7 @@
62
62
  "eslint": "^8.16.0",
63
63
  "eslint-plugin-prettier": "^4.0.0",
64
64
  "jest": "^28.1.0",
65
- "metapak": "^4.0.2",
65
+ "metapak": "^4.0.4",
66
66
  "prettier": "^2.6.2"
67
67
  },
68
68
  "config": {
@@ -41,7 +41,7 @@ Object {
41
41
  "@babel/env",
42
42
  Object {
43
43
  "targets": Object {
44
- "node": "12.19.0",
44
+ "node": "16.15.0",
45
45
  },
46
46
  },
47
47
  ],
@@ -116,7 +116,7 @@ Object {
116
116
  "@babel/env",
117
117
  Object {
118
118
  "targets": Object {
119
- "node": "12.19.0",
119
+ "node": "16.15.0",
120
120
  },
121
121
  },
122
122
  ],
@@ -216,7 +216,7 @@ Object {
216
216
  "@babel/env",
217
217
  Object {
218
218
  "targets": Object {
219
- "node": "12.19.0",
219
+ "node": "16.15.0",
220
220
  },
221
221
  },
222
222
  ],
@@ -307,7 +307,7 @@ Object {
307
307
  "@babel/env",
308
308
  Object {
309
309
  "targets": Object {
310
- "node": "12.19.0",
310
+ "node": "16.15.0",
311
311
  },
312
312
  },
313
313
  ],
@@ -397,7 +397,7 @@ Object {
397
397
  "@babel/env",
398
398
  Object {
399
399
  "targets": Object {
400
- "node": "12.19.0",
400
+ "node": "16.15.0",
401
401
  },
402
402
  },
403
403
  ],
package/src/config.js CHANGED
@@ -3,7 +3,7 @@
3
3
  // DRY, set here vars that may be used several times
4
4
  // in your metapak module
5
5
  module.exports = {
6
- lastNodeLTS: '12.19.0',
7
- lastNode: '14.0.0',
6
+ lastNodeLTS: '16.15.0',
7
+ lastNode: '18.2.0',
8
8
  apiPath: 'API.md',
9
9
  };
@@ -53,7 +53,7 @@ module.exports = (packageConf) => {
53
53
  };
54
54
 
55
55
  // Special configuration for TypeScript
56
- if (configs.includes('typescript')) {
56
+ if (configs.includes('typescript') || configs.includes('tsesm')) {
57
57
  packageConf.devDependencies['@typescript-eslint/eslint-plugin'] = '^5.26.0';
58
58
  packageConf.devDependencies['@typescript-eslint/parser'] = '^5.26.0';
59
59
  packageConf.eslintConfig.parser = '@typescript-eslint/parser';
@@ -75,8 +75,11 @@ module.exports = (packageConf) => {
75
75
  )
76
76
  .concat(['eslint', 'eslint-config-prettier', 'prettier'])
77
77
  .concat(
78
- configs.includes('typescript')
79
- ? ['@typescript-eslint/parser']
78
+ configs.includes('typescript') || configs.includes('tsesm')
79
+ ? [
80
+ '@typescript-eslint/eslint-plugin',
81
+ '@typescript-eslint/parser',
82
+ ]
80
83
  : []
81
84
  )
82
85
  ),
@@ -0,0 +1,27 @@
1
+ name: Node.js CI
2
+
3
+ on:
4
+ push:
5
+ branches: [master]
6
+ pull_request:
7
+ branches: [master]
8
+
9
+ jobs:
10
+ build:
11
+ runs-on: ubuntu-latest
12
+
13
+ strategy:
14
+ matrix:
15
+ node-version: [16.x, 18.x]
16
+
17
+ steps:
18
+ - uses: actions/checkout@v3
19
+ - name: Use Node.js ${{ matrix.node-version }}
20
+ uses: actions/setup-node@v3
21
+ with:
22
+ node-version: ${{ matrix.node-version }}
23
+ cache: "npm"
24
+ - name: Install dependencies
25
+ run: npm ci
26
+ - name: Run pre-commit tests
27
+ run: npm run precz
@@ -0,0 +1,30 @@
1
+ 'use strict';
2
+
3
+ const config = require('../config.js');
4
+
5
+ module.exports = (file) => {
6
+ if ('.github/workflows/test.yml' === file.name) {
7
+ const lastNodeLTSMajorPart = parseInt(config.lastNodeLTS.split('.')[0], 10);
8
+ const lastNodeMajorPart = parseInt(config.lastNode.split('.')[0], 10);
9
+ const versions = [];
10
+
11
+ for (let i = 0; i <= lastNodeMajorPart - lastNodeLTSMajorPart; i++) {
12
+ if (0 === i) {
13
+ versions.push(lastNodeLTSMajorPart);
14
+ continue;
15
+ }
16
+
17
+ const isANodeStableVersion = i % 2 === 0;
18
+
19
+ if (isANodeStableVersion) {
20
+ versions.push(lastNodeLTSMajorPart + i);
21
+ }
22
+ }
23
+ file.data = file.data.replace(
24
+ 'node-version: []',
25
+ `node-version: [${versions.map((version) => version + '.x').join(', ')}]`
26
+ );
27
+ }
28
+
29
+ return file;
30
+ };
@@ -0,0 +1,81 @@
1
+ 'use strict';
2
+
3
+ const fs = require('fs');
4
+ const path = require('path');
5
+ const assert = require('assert');
6
+ const assetsTransformer = require('./assets');
7
+
8
+ describe('GHActions', () => {
9
+ describe('Assets transformer', () => {
10
+ it('should fill the manifest', () => {
11
+ expect(
12
+ assetsTransformer(
13
+ {
14
+ name: '.github/workflows/test.yml',
15
+ data: fs.readFileSync(
16
+ path.join(
17
+ __dirname,
18
+ 'assets',
19
+ '_dot_github',
20
+ 'workflows',
21
+ 'test.yml'
22
+ ),
23
+
24
+ 'utf-8'
25
+ ),
26
+ },
27
+
28
+ {}
29
+ )
30
+ ).toMatchInlineSnapshot(`
31
+ Object {
32
+ "data": "name: Node.js CI
33
+
34
+ on:
35
+ push:
36
+ branches: [master]
37
+ pull_request:
38
+ branches: [master]
39
+
40
+ jobs:
41
+ build:
42
+ runs-on: ubuntu-latest
43
+
44
+ strategy:
45
+ matrix:
46
+ node-version: [16.x, 18.x]
47
+
48
+ steps:
49
+ - uses: actions/checkout@v3
50
+ - name: Use Node.js \${{ matrix.node-version }}
51
+ uses: actions/setup-node@v3
52
+ with:
53
+ node-version: \${{ matrix.node-version }}
54
+ cache: \\"npm\\"
55
+ - name: Install dependencies
56
+ run: npm ci
57
+ - name: Run pre-commit tests
58
+ run: npm run precz
59
+ ",
60
+ "name": ".github/workflows/test.yml",
61
+ }
62
+ `);
63
+ });
64
+
65
+ it('should let pass other files', () => {
66
+ assert.deepEqual(
67
+ assetsTransformer(
68
+ {
69
+ name: 'YOLO',
70
+ data: 'Carpe diem\n',
71
+ },
72
+ {}
73
+ ),
74
+ {
75
+ name: 'YOLO',
76
+ data: 'Carpe diem\n',
77
+ }
78
+ );
79
+ });
80
+ });
81
+ });
@@ -40,13 +40,35 @@ module.exports = (packageConf) => {
40
40
  transform: {}.undef,
41
41
  }
42
42
  : {},
43
+ // Add ts esm necessary conf
44
+ configs.includes('tsesm')
45
+ ? {
46
+ preset: 'ts-jest',
47
+ testEnvironment: 'node',
48
+ transform: {
49
+ '\\.[jt]sx?$': 'ts-jest',
50
+ },
51
+ globals: {
52
+ 'ts-jest': {
53
+ useESM: true,
54
+ },
55
+ },
56
+ moduleNameMapper: {
57
+ '(.+)\\.js': '$1',
58
+ },
59
+ extensionsToTreatAsEsm: ['.ts'],
60
+ }
61
+ : {},
43
62
 
44
63
  packageConf.jest
45
64
  );
46
65
  // Special configuration for TypeScript
47
- if (configs.includes('typescript')) {
66
+ if (configs.includes('typescript') || configs.includes('tsesm')) {
48
67
  packageConf.devDependencies['@types/jest'] = '^27.0.2';
49
68
  }
69
+ if (configs.includes('tsesm')) {
70
+ packageConf.devDependencies['ts-jest'] = '^28.0.3';
71
+ }
50
72
 
51
73
  if (configs.includes('typescript')) {
52
74
  delete packageConf.devDependencies['ts-jest'];
@@ -61,7 +83,10 @@ module.exports = (packageConf) => {
61
83
  : []
62
84
  )
63
85
  .concat(['jest', 'coveralls'])
64
- .filter((packageName) => packageName !== 'ts-jest')
86
+ .filter(
87
+ (packageName) =>
88
+ packageName !== 'ts-jest' || configs.includes('tsesm')
89
+ )
65
90
  ),
66
91
  ],
67
92
  };
@@ -24,7 +24,10 @@ module.exports = (packageConf) => {
24
24
  }
25
25
 
26
26
  // Special configuration for TypeScript
27
- if (configs.includes('typescript') && !packageConf.jsarch) {
27
+ if (
28
+ (configs.includes('typescript') || configs.includes('tsesm')) &&
29
+ !packageConf.jsarch
30
+ ) {
28
31
  packageConf.jsarch = {
29
32
  parserOptions: {
30
33
  plugins: ['typescript'],
@@ -13,7 +13,9 @@ module.exports = (packageConf) => {
13
13
  packageConf.scripts.doc = data.rootPackage
14
14
  ? 'lerna run doc'
15
15
  : `echo "# API" > ${apiPath}; jsdoc2md ${
16
- configs.includes('typescript') ? data.distFiles : data.files
16
+ configs.includes('typescript') || configs.includes('tsesm')
17
+ ? data.distFiles
18
+ : data.files
17
19
  } >> ${apiPath} && git add ${apiPath}`;
18
20
 
19
21
  if (!data.childPackage) {
@@ -9,7 +9,7 @@ Object {
9
9
  },
10
10
  "contributors": Array [],
11
11
  "engines": Object {
12
- "node": ">=12.19.0",
12
+ "node": ">=16.15.0",
13
13
  },
14
14
  "files": Array [
15
15
  "src",
@@ -41,7 +41,7 @@ Object {
41
41
  },
42
42
  "contributors": Array [],
43
43
  "engines": Object {
44
- "node": ">=12.19.0",
44
+ "node": ">=16.15.0",
45
45
  },
46
46
  "files": Array [
47
47
  "src",
@@ -83,7 +83,7 @@ Object {
83
83
  "cz-conventional-changelog": "^3.3.0",
84
84
  },
85
85
  "engines": Object {
86
- "node": ">=12.19.0",
86
+ "node": ">=16.15.0",
87
87
  },
88
88
  "files": Array [
89
89
  "src",
@@ -136,7 +136,7 @@ Object {
136
136
  "cz-conventional-changelog": "^3.3.0",
137
137
  },
138
138
  "engines": Object {
139
- "node": ">=12.19.0",
139
+ "node": ">=16.15.0",
140
140
  },
141
141
  "files": Array [
142
142
  "src",
@@ -8,10 +8,10 @@ Object {
8
8
 
9
9
  language: node_js
10
10
  node_js:
11
- - 12
12
- - 12.19.0
13
- - 13
14
- - 14
11
+ - 16
12
+ - 16.15.0
13
+ - 17
14
+ - 18
15
15
  ",
16
16
  "name": ".travis.yml",
17
17
  }
@@ -0,0 +1,3 @@
1
+ {
2
+ "typescript.tsdk": "node_modules/typescript/lib"
3
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "compilerOptions": {
3
+ "module": "Node16",
4
+ "moduleResolution": "Node16",
5
+ "target": "es2022",
6
+ "noImplicitAny": false,
7
+ "removeComments": false,
8
+ "preserveConstEnums": true,
9
+ "allowSyntheticDefaultImports": true,
10
+ "esModuleInterop": true,
11
+ "strict": true,
12
+ "declaration": true,
13
+ "outDir": "dist",
14
+ "sourceMap": true
15
+ },
16
+ "include": ["src/**/*.ts"],
17
+ "exclude": ["node_modules"]
18
+ }
@@ -0,0 +1,25 @@
1
+ 'use strict';
2
+
3
+ const { getMetapakInfos } = require('../lib.js');
4
+
5
+ module.exports = (file, packageConf) => {
6
+ const { data } = getMetapakInfos(packageConf);
7
+
8
+ // Set types in ts config
9
+ if ('tsconfig.json' === file.name) {
10
+ let contents = JSON.parse(file.data);
11
+
12
+ if (data.typesFiles) {
13
+ contents = Object.assign({}, contents, {
14
+ include: [data.typesFiles],
15
+ });
16
+ }
17
+ file.data = JSON.stringify(contents, null, 2);
18
+ }
19
+ if ('.vscode/settings.json' === file.name) {
20
+ if (data.childPackage) {
21
+ file.data = '';
22
+ }
23
+ }
24
+ return file;
25
+ };
@@ -0,0 +1,66 @@
1
+ 'use strict';
2
+
3
+ const { ensureScript, getMetapakInfos } = require('../lib.js');
4
+ const BUILD_COMMAND = 'npm run build';
5
+
6
+ module.exports = (packageConf) => {
7
+ const { data } = getMetapakInfos(packageConf);
8
+
9
+ // Declare an ESM module
10
+ packageConf.type = 'module';
11
+ packageConf.main = 'dist/index.js';
12
+ packageConf.types = 'dist/index.d.ts';
13
+
14
+ // Add the dev dependencies
15
+ packageConf.devDependencies = packageConf.devDependencies || {};
16
+ packageConf.devDependencies.typescript = '^4.7.2';
17
+ packageConf.devDependencies.rimraf = '^3.0.2';
18
+
19
+ packageConf.scripts = packageConf.scripts || {};
20
+ packageConf.scripts.build = data.rootPackage
21
+ ? 'lerna run build'
22
+ : "rimraf -f 'dist' && tsc --outDir dist";
23
+
24
+ // Install mandatory scripts
25
+ if (!data.childPackage) {
26
+ packageConf.scripts.precz = ensureScript(
27
+ packageConf.scripts.precz,
28
+ BUILD_COMMAND
29
+ );
30
+ packageConf.scripts.preversion = ensureScript(
31
+ packageConf.scripts.preversion,
32
+ BUILD_COMMAND
33
+ );
34
+ }
35
+
36
+ // Remove eventual old dependencies
37
+ delete packageConf.devDependencies['babel-plugin-knifecycle'];
38
+ Object.keys(packageConf.devDependencies || {}).forEach((key) => {
39
+ if (key.startsWith('@babel')) {
40
+ delete packageConf.devDependencies[key];
41
+ }
42
+ });
43
+
44
+ // Remove eventual old configurations
45
+ delete packageConf.module;
46
+ delete packageConf.scripts.compile;
47
+ delete packageConf.scripts['compile:cjs'];
48
+ delete packageConf.scripts['compile:mjs'];
49
+ delete packageConf.scripts.types;
50
+
51
+ // Avoid GreenKeeper to update automatically added modules
52
+ if ('metapak-nfroidure' !== packageConf.name && !data.childPackage) {
53
+ packageConf.greenkeeper = {
54
+ ignore: [
55
+ ...new Set(
56
+ (packageConf.greenkeeper && packageConf.greenkeeper.ignore
57
+ ? packageConf.greenkeeper.ignore
58
+ : []
59
+ ).concat(['typescript', 'rimraf'])
60
+ ),
61
+ ],
62
+ };
63
+ }
64
+
65
+ return packageConf;
66
+ };
@@ -0,0 +1,41 @@
1
+ 'use strict';
2
+
3
+ const packageTransformer = require('./package');
4
+
5
+ describe('private', () => {
6
+ describe('Package transformer', () => {
7
+ it('should work', () => {
8
+ expect(
9
+ packageTransformer({
10
+ metapak: {
11
+ data: {},
12
+ },
13
+ })
14
+ ).toMatchInlineSnapshot(`
15
+ Object {
16
+ "devDependencies": Object {
17
+ "rimraf": "^3.0.2",
18
+ "typescript": "^4.7.2",
19
+ },
20
+ "greenkeeper": Object {
21
+ "ignore": Array [
22
+ "typescript",
23
+ "rimraf",
24
+ ],
25
+ },
26
+ "main": "dist/index.js",
27
+ "metapak": Object {
28
+ "data": Object {},
29
+ },
30
+ "scripts": Object {
31
+ "build": "rimraf -f 'dist' && tsc --outDir dist",
32
+ "precz": "npm run build",
33
+ "preversion": "npm run build",
34
+ },
35
+ "type": "module",
36
+ "types": "dist/index.d.ts",
37
+ }
38
+ `);
39
+ });
40
+ });
41
+ });