@w5s/mrm-preset 1.0.0-alpha.2 → 1.0.0-alpha.21

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.
Files changed (51) hide show
  1. package/.turbo/turbo-build.log +11 -0
  2. package/.turbo/turbo-docs.log +43 -0
  3. package/.turbo/turbo-format.log +7 -0
  4. package/.turbo/turbo-lint.log +7 -0
  5. package/.turbo/turbo-prepare.log +2 -0
  6. package/.turbo/turbo-test.log +19 -0
  7. package/CHANGELOG.md +237 -0
  8. package/README.md +1 -1
  9. package/bootstrap/index.js +43 -42
  10. package/ci/_gitlab/AutoDevopsInclude.gitlab-ci.yml +2 -0
  11. package/ci/github.js +47 -0
  12. package/ci/gitlab.js +1 -1
  13. package/ci/index.js +7 -2
  14. package/commitlint/index.js +5 -2
  15. package/config.json +1 -0
  16. package/contributing/index.js +1 -1
  17. package/contributing/templates/CODE_OF_CONDUCT.md +3 -4
  18. package/core/block.js +2 -3
  19. package/core/commitlint.js +3 -3
  20. package/core/cspell.js +1 -10
  21. package/core/eslint.js +25 -6
  22. package/{gitignore/template.js → core/git.ignore.js} +32 -6
  23. package/core/git.js +21 -18
  24. package/core/githooks.js +8 -7
  25. package/core/githubCI.js +56 -0
  26. package/core/jest.js +50 -69
  27. package/core/jsonFile.js +8 -7
  28. package/core/lintStaged.js +3 -3
  29. package/core/npm.js +52 -15
  30. package/core/pkg.js +92 -14
  31. package/core/project.js +6 -0
  32. package/core/semanticRelease.js +4 -4
  33. package/core/turbo.js +57 -0
  34. package/core/typedoc.js +7 -20
  35. package/core/vscode.js +1 -1
  36. package/cspell/index.js +20 -10
  37. package/editorconfig/index.js +3 -1
  38. package/eslint/index.js +81 -32
  39. package/githooks/index.js +47 -56
  40. package/gitignore/index.js +5 -22
  41. package/jest/index.js +13 -17
  42. package/lang/.eslintrc.json +4 -1
  43. package/lang/index.js +22 -19
  44. package/licenses/index.js +26 -0
  45. package/package.json +17 -12
  46. package/postconfigure/index.js +3 -3
  47. package/project/index.js +217 -156
  48. package/release/index.js +5 -5
  49. package/renovate/index.js +7 -5
  50. package/tsconfig.json +2 -1
  51. package/core/workspace.js +0 -6
@@ -1,25 +1,8 @@
1
- const { gitIgnore } = require('../core/git');
1
+ const { gitIgnoreTemplate } = require('../core/git.js');
2
2
 
3
- /**
4
- *
5
- * @param {string} templatePath
6
- * @param {Array<string>} flags
7
- */
8
- function createGitIgnore(templatePath, flags) {
9
- function task() {
10
- // eslint-disable-next-line global-require, import/no-dynamic-require
11
- const templateMap = require(templatePath);
12
-
13
- flags.forEach((flag) => {
14
- if (templateMap[flag]) {
15
- gitIgnore(flag, templateMap[flag]);
16
- }
17
- });
18
- }
19
-
20
- task.description = 'Adds Gitignore file';
21
-
22
- return task;
3
+ function task() {
4
+ gitIgnoreTemplate(['macOS', 'NodeJS', 'VisualStudioCode']);
23
5
  }
6
+ task.description = 'Adds Gitignore file';
24
7
 
25
- module.exports = createGitIgnore(require.resolve('./template'), ['macOS', 'NodeJS', 'VisualStudioCode']);
8
+ module.exports = task;
package/jest/index.js CHANGED
@@ -1,19 +1,15 @@
1
- const { jest } = require('../core/jest');
2
-
3
- function createJest() {
4
- /**
5
- *
6
- */
7
- function task() {
8
- jest({
9
- state: 'present',
10
- });
11
- }
12
-
13
- task.description = 'Setup Jest';
14
- task.parameters = {};
15
-
16
- return task;
1
+ const { jest } = require('../core/jest.js');
2
+
3
+ /**
4
+ *
5
+ */
6
+ function task() {
7
+ jest({
8
+ state: 'present',
9
+ });
17
10
  }
18
11
 
19
- module.exports = createJest();
12
+ task.description = 'Setup Jest';
13
+ task.parameters = {};
14
+
15
+ module.exports = task;
@@ -4,5 +4,8 @@
4
4
  "@typescript-eslint/no-unsafe-call": "off",
5
5
  "@typescript-eslint/no-unsafe-assignment": "off",
6
6
  "@typescript-eslint/no-unsafe-member-access": "off"
7
- }
7
+ },
8
+ "ignorePatterns": [
9
+ "**/templates/*.ts"
10
+ ]
8
11
  }
package/lang/index.js CHANGED
@@ -1,25 +1,24 @@
1
- const { join } = require('path');
1
+ const path = require('node:path');
2
2
  const { json, file, template, packageJson } = require('mrm-core');
3
- const npm = require('../core/npm');
4
- const { gitIgnore } = require('../core/git');
5
- const project = require('../core/project');
6
- const { eslintIgnore } = require('../core/eslint');
7
- const { useWorkspaces } = require('../core/workspace');
8
- const { typedoc } = require('../core/typedoc');
9
- const pkg = require('../core/pkg');
3
+ const npm = require('../core/npm.js');
4
+ const { gitIgnore } = require('../core/git.js');
5
+ const project = require('../core/project.js');
6
+ const { eslintIgnore } = require('../core/eslint.js');
7
+ const { typedoc } = require('../core/typedoc.js');
8
+ const pkg = require('../core/pkg.js');
10
9
 
11
10
  /**
12
11
  *
13
12
  * @param {{
14
13
  * language: 'typescript',
15
- * tsConfig: string,
14
+ * tsConfig: string
16
15
  * }} config
17
16
  */
18
17
  function createLang({ language: languageDefault = 'typescript', tsConfig: tsConfigDefault }) {
19
18
  /**
20
19
  *
21
20
  * @param {{
22
- * language: 'typescript',
21
+ * language: 'typescript'
23
22
  * }} config
24
23
  */
25
24
  function task({ language }) {
@@ -27,8 +26,9 @@ function createLang({ language: languageDefault = 'typescript', tsConfig: tsConf
27
26
  }
28
27
  task.typescript = () => {
29
28
  const tsConfigPreset = tsConfigDefault;
30
- const isApplication = packageJson().get('mrmConfig.packageArchetype') === 'application';
31
- const hasWorkspaces = useWorkspaces();
29
+ const packageFile = packageJson();
30
+ const isApplication = pkg.archetype(packageFile) === 'application';
31
+ const hasWorkspaces = pkg.hasWorkspaces(packageFile);
32
32
  const tsConfigSettingsName = 'tsconfig.settings.json';
33
33
  const tsConfigSettings = json(tsConfigSettingsName);
34
34
  const tsConfig = json('tsconfig.json');
@@ -37,12 +37,14 @@ function createLang({ language: languageDefault = 'typescript', tsConfig: tsConf
37
37
  gitIgnore('Typescript', ['lib/', '*.tsbuildinfo', 'typings/']);
38
38
  eslintIgnore(['lib/']);
39
39
 
40
+ // const excludeList = ['**/*.test.*', '**/*.spec.*', '**/__tests__/**'];
40
41
  if (hasWorkspaces) {
41
42
  tsConfig
42
43
  .unset('compilerOptions.rootDir')
43
44
  .unset('compilerOptions.outDir')
44
45
  .unset('include')
45
46
  .merge({
47
+ $schema: 'https://json.schemastore.org/tsconfig.json',
46
48
  extends: `./${tsConfigSettingsName}`,
47
49
  })
48
50
  .save();
@@ -52,6 +54,7 @@ function createLang({ language: languageDefault = 'typescript', tsConfig: tsConf
52
54
  } else {
53
55
  tsConfigSettings
54
56
  .merge({
57
+ $schema: 'https://json.schemastore.org/tsconfig.json',
55
58
  compilerOptions: {},
56
59
  extends: tsConfigPreset,
57
60
  })
@@ -63,23 +66,23 @@ function createLang({ language: languageDefault = 'typescript', tsConfig: tsConf
63
66
  rootDir: './src',
64
67
  },
65
68
  extends: `./${tsConfigSettingsName}`,
66
- include: ['./src'],
69
+ include: ['src'],
67
70
  })
68
71
  .save();
69
72
 
70
73
  // Create default index
71
- const templateDir = join(__dirname, 'templates');
74
+ const templateDir = path.join(__dirname, 'templates');
72
75
  if (!file('src/index.ts').exists()) {
73
- template('src/index.ts', join(templateDir, 'index.ts')).apply().save();
76
+ template('src/index.ts', path.join(templateDir, 'index.ts')).apply().save();
74
77
  }
75
78
  if (!file('src/index.spec.ts').exists()) {
76
- template('src/index.spec.ts', join(templateDir, 'index.spec.ts')).apply().save();
79
+ template('src/index.spec.ts', path.join(templateDir, 'index.spec.ts')).apply().save();
77
80
  }
78
81
  }
79
82
  // Application setup
80
- pkg.withPackageJson((packageFile) => {
83
+ pkg.withPackageJson((_packageFile) => {
81
84
  if (isApplication) {
82
- pkg.script(packageFile, {
85
+ pkg.script(_packageFile, {
83
86
  name: project.develop,
84
87
  script:
85
88
  "NODE_ENV=development ts-node-dev --require='tsconfig-paths/register' -r dotenv/config -- ./src/index.ts dotenv_config_path=.env",
@@ -101,7 +104,7 @@ function createLang({ language: languageDefault = 'typescript', tsConfig: tsConf
101
104
  });
102
105
 
103
106
  typedoc({
104
- state: 'present',
107
+ state: isApplication ? 'absent' : 'present',
105
108
  update: (config) => ({
106
109
  // Default values
107
110
  tsconfig: 'tsconfig.json',
@@ -0,0 +1,26 @@
1
+ const { packageJson } = require('mrm-core');
2
+ const pkg = require('../core/pkg.js');
3
+ const jsonFile = require('../core/jsonFile.js');
4
+
5
+ function task() {
6
+ pkg.withPackageJson((packageFile) => {
7
+ jsonFile.value(packageFile, {
8
+ path: 'license',
9
+ state: 'present',
10
+ default: 'UNLICENSED',
11
+ });
12
+ });
13
+ const license = packageJson().get('license');
14
+
15
+ pkg.forEachWorkspace(({ packageFile }) => {
16
+ jsonFile.value(packageFile, {
17
+ path: 'license',
18
+ state: 'present',
19
+ default: license,
20
+ });
21
+ });
22
+ }
23
+
24
+ task.description = 'Setup License';
25
+ task.parameters = {};
26
+ module.exports = task;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@w5s/mrm-preset",
3
- "version": "1.0.0-alpha.2",
3
+ "version": "1.0.0-alpha.21",
4
4
  "description": "Mrm configuration presets",
5
5
  "keywords": [
6
6
  "mrm",
@@ -13,37 +13,42 @@
13
13
  },
14
14
  "repository": {
15
15
  "type": "git",
16
- "url": "https://github.com/w5s/project-config.git",
16
+ "url": "git@github.com:w5s/project-config.git",
17
17
  "directory": "packages/mrm-preset"
18
18
  },
19
19
  "license": "MIT",
20
20
  "author": "Julien Polo <julien.polo@gmail.com>",
21
21
  "main": "config.json",
22
22
  "scripts": {
23
- "build": "npm-run-all -p 'build:*'",
23
+ "build": "concurrently \"npm:build:*\" ",
24
24
  "build:empty": ":",
25
25
  "build:tsc": "tsc --noEmit --skipLibCheck",
26
+ "clean": "concurrently \"npm:clean:*\" \":\"",
26
27
  "docs": "md-magic --path '**/*.md' --ignore='node_modules'",
27
- "format": "eslint . --fix",
28
- "lint": "eslint .",
29
- "test": "mkdir _tester; cd _tester; ../node_modules/.bin/mrm bootstrap --dir ..; ../node_modules/.bin/mrm configure --dir .."
28
+ "format": "concurrently \"npm:format:*\" \":\"",
29
+ "format:src": "eslint . --fix --ext=mjs,cjs,js,jsx,ts,tsx,json",
30
+ "lint": "concurrently \"npm:lint:*\" \":\"",
31
+ "lint:src": "eslint . --ext=mjs,cjs,js,jsx,ts,tsx,json",
32
+ "prepare": "concurrently \"npm:prepare:*\" \":\"",
33
+ "spellcheck": "cspell --no-progress '**'",
34
+ "test": "mkdir _tester; cd _tester; mrm bootstrap --dir ..; mrm configure --dir .."
30
35
  },
31
36
  "dependencies": {
32
37
  "debug": "^4.3.3",
33
- "mrm-core": "^6.0.0",
38
+ "glob": "^8.0.3",
39
+ "mrm-core": "^7.0.0",
34
40
  "semver-intersect": "^1.4.0",
35
- "sync-directory": "^4.0.0"
41
+ "sync-directory": "^5.0.0"
36
42
  },
37
43
  "devDependencies": {
38
44
  "@types/debug": "^4.1.7",
39
- "mrm": "3.0.10"
45
+ "mrm": "4.0.0"
40
46
  },
41
47
  "engines": {
42
- "node": ">=12.x",
43
- "yarn": ">=1.x"
48
+ "node": ">=16.0.0"
44
49
  },
45
50
  "publishConfig": {
46
51
  "access": "public"
47
52
  },
48
- "gitHead": "1fd5f03e6f071785cc5be4f9a57430485cf9d6fc"
53
+ "gitHead": "524f252acd9eba4c34b5ae0850bd6670b31db429"
49
54
  }
@@ -1,7 +1,7 @@
1
- const { spawnSync } = require('child_process');
1
+ const { spawnSync } = require('node:child_process');
2
2
  const { packageJson } = require('mrm-core');
3
- const project = require('../core/project');
4
- const pkg = require('../core/pkg');
3
+ const project = require('../core/project.js');
4
+ const pkg = require('../core/pkg.js');
5
5
 
6
6
  function task() {
7
7
  const packageFile = packageJson();