@neurodevs/meta-node 0.16.1 → 0.17.0

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.
@@ -1,9 +1,20 @@
1
1
  import AbstractModuleTest from '@neurodevs/node-tdd';
2
+ import { PackageJson } from '../impl/NpmReleasePropagator.js';
2
3
  export default class AbstractPackageTest extends AbstractModuleTest {
4
+ protected static readonly packageScope: string;
5
+ protected static readonly packageName: string;
6
+ protected static readonly scopedName: string;
7
+ protected static readonly packageVersion = "2.2.0";
3
8
  protected static readonly yarnGlobalDirCmd = "yarn global dir";
4
9
  protected static readonly fakeGlobalRoot: string;
5
10
  protected static readonly metaNodeVersion: string;
6
11
  protected static beforeEach(): Promise<void>;
12
+ protected static generatePackageJson(options?: Partial<PackageJson>): {
13
+ name: string;
14
+ version: string;
15
+ dependencies: Record<string, string>;
16
+ devDependencies: Record<string, string>;
17
+ };
7
18
  protected static normalize(input: string): string;
8
19
  protected static readonly vscodeDir: string;
9
20
  protected static get snippetsPath(): string;
@@ -3,12 +3,25 @@ import { setFakeExecResult, setFakeReadFileResult, } from '@neurodevs/fake-node-
3
3
  import AbstractModuleTest from '@neurodevs/node-tdd';
4
4
  import expandHomeDir from '../functions/expandHomeDir.js';
5
5
  export default class AbstractPackageTest extends AbstractModuleTest {
6
+ static packageScope = this.generateId();
7
+ static packageName = this.generateId();
8
+ static scopedName = `${this.packageScope}/${this.packageName}`;
9
+ static packageVersion = '2.2.0'; // Dummy value in tests to handle necessary cases
6
10
  static yarnGlobalDirCmd = 'yarn global dir';
7
11
  static fakeGlobalRoot = this.generateId();
8
12
  static metaNodeVersion = this.generateId();
9
13
  static async beforeEach() {
10
14
  await super.beforeEach();
11
15
  }
16
+ static generatePackageJson(options) {
17
+ return {
18
+ name: this.scopedName,
19
+ version: this.packageVersion,
20
+ dependencies: {},
21
+ devDependencies: {},
22
+ ...options,
23
+ };
24
+ }
12
25
  static normalize(input) {
13
26
  return input.replace(/\s+/g, ' ').trim();
14
27
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractPackageTest.js","sourceRoot":"","sources":["../../src/__tests__/AbstractPackageTest.ts"],"names":[],"mappings":"AACA,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EACH,iBAAiB,EACjB,qBAAqB,GACxB,MAAM,2BAA2B,CAAA;AAClC,OAAO,kBAAkB,MAAM,qBAAqB,CAAA;AAEpD,OAAO,aAAa,MAAM,+BAA+B,CAAA;AAEzD,MAAM,CAAC,OAAO,OAAO,mBAAoB,SAAQ,kBAAkB;IACrD,MAAM,CAAU,gBAAgB,GAAG,iBAAiB,CAAA;IACpD,MAAM,CAAU,cAAc,GAAG,IAAI,CAAC,UAAU,EAAE,CAAA;IAClD,MAAM,CAAU,eAAe,GAAG,IAAI,CAAC,UAAU,EAAE,CAAA;IAEnD,MAAM,CAAC,KAAK,CAAC,UAAU;QAC7B,MAAM,KAAK,CAAC,UAAU,EAAE,CAAA;IAC5B,CAAC;IAES,MAAM,CAAC,SAAS,CAAC,KAAa;QACpC,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;IAC5C,CAAC;IAES,MAAM,CAAU,SAAS,GAAG,aAAa,CAC/C,yCAAyC,CAC5C,CAAA;IAES,MAAM,KAAK,YAAY;QAC7B,OAAO,GAAG,IAAI,CAAC,SAAS,gCAAgC,CAAA;IAC5D,CAAC;IAES,MAAM,CAAU,eAAe,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,CAAA;IAE7D,MAAM,CAAU,gBAAgB,GAAG;QACzC,GAAG,IAAI,CAAC,eAAe;KAC1B,CAAA;IAES,MAAM,CAAU,oBAAoB,GAAG,IAAI,CAAC,SAAS,CAC3D,IAAI,CAAC,gBAAgB,EACrB,IAAI,EACJ,CAAC,CACJ,CAAA;IAES,MAAM,KAAK,eAAe;QAChC,OAAO,GAAG,IAAI,CAAC,SAAS,mBAAmB,CAAA;IAC/C,CAAC;IAES,MAAM,CAAU,kBAAkB,GAAG;QAC3C,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE;QACtB,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE;KAC7B,CAAA;IAES,MAAM,CAAU,mBAAmB,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;IAE/D,MAAM,CAAU,uBAAuB,GAAG,IAAI,CAAC,SAAS,CAC9D,IAAI,CAAC,mBAAmB,EACxB,IAAI,EACJ,CAAC,CACJ,CAAA;IAES,MAAM,CAAC,mBAAmB;QAChC,qBAAqB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAA;IACvE,CAAC;IAES,MAAM,CAAC,sBAAsB;QACnC,qBAAqB,CACjB,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,uBAAuB,CAC/B,CAAA;IACL,CAAC;IAES,MAAM,CAAC,sBAAsB;QACnC,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,EAAE;YACrC,MAAM,EAAE,IAAI,CAAC,cAAc;SACH,CAAC,CAAA;QAE7B,qBAAqB,CACjB,IAAI,CAAC,IAAI,CACL,IAAI,CAAC,cAAc,EACnB,cAAc,EACd,YAAY,EACZ,WAAW,EACX,cAAc,CACjB,EACD,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,CACpD,CAAA;IACL,CAAC"}
1
+ {"version":3,"file":"AbstractPackageTest.js","sourceRoot":"","sources":["../../src/__tests__/AbstractPackageTest.ts"],"names":[],"mappings":"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"}
@@ -1,18 +1,14 @@
1
- import AbstractModuleTest from '@neurodevs/node-tdd';
2
- export default class NpmPropagationCoordinatorTest extends AbstractModuleTest {
1
+ import AbstractPackageTest from '../AbstractPackageTest.js';
2
+ export default class NpmPropagationCoordinatorTest extends AbstractPackageTest {
3
3
  private static instance;
4
- private static readonly packageScope;
5
- private static readonly packageName;
6
- private static readonly scopedName;
7
- private static readonly packageVersion;
8
4
  private static readonly repoPath;
9
5
  private static readonly repoPaths;
10
6
  private static readonly pkgJsons;
11
7
  protected static beforeEach(): Promise<void>;
12
8
  protected static createsInstance(): Promise<void>;
13
9
  protected static propagatesToCorrectRepoPaths(): Promise<void>;
10
+ protected static propagatesMajorsIfPassedOptionalParameter(): Promise<void>;
14
11
  private static run;
15
- private static generatePackageJson;
16
12
  private static setFakeReadFile;
17
13
  private static setFakeReleasePropagator;
18
14
  private static NpmPropagationCoordinator;
@@ -5,29 +5,30 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
7
  import { fakeReadFile, resetCallsToReadFile, setFakeReadFileResult, } from '@neurodevs/fake-node-core';
8
- import AbstractModuleTest, { test, assert } from '@neurodevs/node-tdd';
8
+ import { test, assert } from '@neurodevs/node-tdd';
9
9
  import NpmPropagationCoordinator from '../../impl/NpmPropagationCoordinator.js';
10
10
  import NpmReleasePropagator from '../../impl/NpmReleasePropagator.js';
11
11
  import FakeReleasePropagator from '../../testDoubles/ReleasePropagator/FakeReleasePropagator.js';
12
- export default class NpmPropagationCoordinatorTest extends AbstractModuleTest {
12
+ import AbstractPackageTest from '../AbstractPackageTest.js';
13
+ export default class NpmPropagationCoordinatorTest extends AbstractPackageTest {
13
14
  static instance;
14
- static packageScope = this.generateId();
15
- static packageName = this.generateId();
16
- static scopedName = `${this.packageScope}/${this.packageName}`;
17
- static packageVersion = '7.8.9';
18
15
  static repoPath = `${this.generateId()}/${this.packageName}`;
19
16
  static repoPaths = [
20
17
  this.generateId(),
21
18
  this.generateId(),
22
19
  this.generateId(),
20
+ this.generateId(),
23
21
  this.repoPath,
24
22
  ];
25
23
  static pkgJsons = [
26
24
  this.generatePackageJson({
27
- dependencies: { [this.scopedName]: '^1.2.3' },
25
+ dependencies: { [this.scopedName]: '^2.0.1' },
26
+ }),
27
+ this.generatePackageJson({
28
+ devDependencies: { [this.scopedName]: '^2.1.0' },
28
29
  }),
29
30
  this.generatePackageJson({
30
- devDependencies: { [this.scopedName]: '^4.5.6' },
31
+ dependencies: { [this.scopedName]: '^1.0.0' },
31
32
  }),
32
33
  this.generatePackageJson(),
33
34
  this.generatePackageJson({ version: this.packageVersion }),
@@ -49,18 +50,24 @@ export default class NpmPropagationCoordinatorTest extends AbstractModuleTest {
49
50
  repoPaths: [this.repoPaths[0], this.repoPaths[1]],
50
51
  }, 'Incorrect repo paths propagated to!');
51
52
  }
53
+ static async propagatesMajorsIfPassedOptionalParameter() {
54
+ const instance = this.NpmPropagationCoordinator({
55
+ shouldPropagateMajors: true,
56
+ });
57
+ await instance.run();
58
+ assert.isEqualDeep(FakeReleasePropagator.callsToConstructor[0], {
59
+ packageName: this.scopedName,
60
+ packageVersion: this.packageVersion,
61
+ repoPaths: [
62
+ this.repoPaths[0],
63
+ this.repoPaths[1],
64
+ this.repoPaths[2],
65
+ ],
66
+ }, 'Did not propagate majors!');
67
+ }
52
68
  static async run() {
53
69
  await this.instance.run();
54
70
  }
55
- static generatePackageJson(options) {
56
- return {
57
- name: this.scopedName,
58
- version: this.packageVersion,
59
- dependencies: {},
60
- devDependencies: {},
61
- ...options,
62
- };
63
- }
64
71
  static setFakeReadFile() {
65
72
  NpmPropagationCoordinator.readFile =
66
73
  fakeReadFile;
@@ -73,8 +80,8 @@ export default class NpmPropagationCoordinatorTest extends AbstractModuleTest {
73
80
  NpmReleasePropagator.Class = FakeReleasePropagator;
74
81
  FakeReleasePropagator.resetTestDouble();
75
82
  }
76
- static NpmPropagationCoordinator() {
77
- return NpmPropagationCoordinator.Create(this.repoPath, this.repoPaths);
83
+ static NpmPropagationCoordinator(options) {
84
+ return NpmPropagationCoordinator.Create(this.repoPath, this.repoPaths, options);
78
85
  }
79
86
  }
80
87
  __decorate([
@@ -83,4 +90,7 @@ __decorate([
83
90
  __decorate([
84
91
  test()
85
92
  ], NpmPropagationCoordinatorTest, "propagatesToCorrectRepoPaths", null);
93
+ __decorate([
94
+ test()
95
+ ], NpmPropagationCoordinatorTest, "propagatesMajorsIfPassedOptionalParameter", null);
86
96
  //# sourceMappingURL=NpmPropagationCoordinator.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NpmPropagationCoordinator.test.js","sourceRoot":"","sources":["../../../src/__tests__/impl/NpmPropagationCoordinator.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NpmPropagationCoordinator.test.js","sourceRoot":"","sources":["../../../src/__tests__/impl/NpmPropagationCoordinator.test.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,6 @@
1
1
  import AbstractPackageTest from '../AbstractPackageTest.js';
2
2
  export default class NpmReleasePropagatorTest extends AbstractPackageTest {
3
3
  private static instance;
4
- private static readonly packageName;
5
- private static readonly packageVersion;
6
4
  private static readonly repoPaths;
7
5
  protected static beforeEach(): Promise<void>;
8
6
  protected static createsInstance(): Promise<void>;
@@ -15,8 +15,6 @@ import AbstractPackageTest from '../AbstractPackageTest.js';
15
15
  const exec = promisify(execSync);
16
16
  export default class NpmReleasePropagatorTest extends AbstractPackageTest {
17
17
  static instance;
18
- static packageName = this.generateId();
19
- static packageVersion = this.generateId();
20
18
  static repoPaths = [this.generateId(), this.generateId()];
21
19
  static async beforeEach() {
22
20
  await super.beforeEach();
@@ -76,16 +74,16 @@ export default class NpmReleasePropagatorTest extends AbstractPackageTest {
76
74
  NpmReleasePropagator.readFile =
77
75
  fakeReadFile;
78
76
  resetCallsToReadFile();
79
- setFakeReadFileResult(`${this.repoPaths[0]}/package.json`, JSON.stringify({
77
+ setFakeReadFileResult(`${this.repoPaths[0]}/package.json`, JSON.stringify(this.generatePackageJson({
80
78
  dependencies: {
81
79
  [this.packageName]: this.generateId(),
82
80
  },
83
- }));
84
- setFakeReadFileResult(`${this.repoPaths[1]}/package.json`, JSON.stringify({
81
+ })));
82
+ setFakeReadFileResult(`${this.repoPaths[1]}/package.json`, JSON.stringify(this.generatePackageJson({
85
83
  devDependencies: {
86
84
  [this.packageName]: this.generateId(),
87
85
  },
88
- }));
86
+ })));
89
87
  }
90
88
  static setFakeAutocommit() {
91
89
  GitAutocommit.Class = FakeAutocommit;
@@ -1 +1 @@
1
- {"version":3,"file":"NpmReleasePropagator.test.js","sourceRoot":"","sources":["../../../src/__tests__/impl/NpmReleasePropagator.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NpmReleasePropagator.test.js","sourceRoot":"","sources":["../../../src/__tests__/impl/NpmReleasePropagator.test.ts"],"names":[],"mappings":"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"}
@@ -4,18 +4,18 @@ export default class NpmPropagationCoordinator implements PropagationCoordinator
4
4
  static readFile: typeof readFile;
5
5
  private repoPath;
6
6
  private repoPaths;
7
+ private shouldPropagateMajors;
7
8
  private pkg;
8
9
  private currentRepoPath;
9
10
  private currentPkgJson;
10
- protected constructor(repoPath: string, repoPaths: string[]);
11
- static Create(repoPath: string, repoPaths: string[]): PropagationCoordinator;
11
+ protected constructor(repoPath: string, repoPaths: string[], options?: PropagationCoordinatorOptions);
12
+ static Create(repoPath: string, repoPaths: string[], options?: PropagationCoordinatorOptions): PropagationCoordinator;
12
13
  run(): Promise<void>;
13
14
  private loadPackageJson;
14
15
  private get packageName();
15
16
  private get packageVersion();
16
17
  private determineWhereToPropagate;
17
- private get isDependency();
18
- private get isDevDependency();
18
+ private get maybeDependencyRange();
19
19
  private loadCurrentPkgJson;
20
20
  private get readFile();
21
21
  private NpmReleaseCoordinator;
@@ -23,4 +23,7 @@ export default class NpmPropagationCoordinator implements PropagationCoordinator
23
23
  export interface PropagationCoordinator {
24
24
  run(): Promise<void>;
25
25
  }
26
- export type PropagationCoordinatorConstructor = new (repoPath: string, repoPaths: string[]) => PropagationCoordinator;
26
+ export type PropagationCoordinatorConstructor = new (repoPath: string, repoPaths: string[], options?: PropagationCoordinatorOptions) => PropagationCoordinator;
27
+ export interface PropagationCoordinatorOptions {
28
+ shouldPropagateMajors?: boolean;
29
+ }
@@ -1,19 +1,23 @@
1
1
  import { readFile } from 'node:fs/promises';
2
+ import semver from 'semver';
2
3
  import NpmReleasePropagator from './NpmReleasePropagator.js';
3
4
  export default class NpmPropagationCoordinator {
4
5
  static Class;
5
6
  static readFile = readFile;
6
7
  repoPath;
7
8
  repoPaths;
9
+ shouldPropagateMajors;
8
10
  pkg;
9
11
  currentRepoPath;
10
12
  currentPkgJson;
11
- constructor(repoPath, repoPaths) {
13
+ constructor(repoPath, repoPaths, options) {
14
+ const { shouldPropagateMajors = false } = options ?? {};
12
15
  this.repoPath = repoPath;
13
16
  this.repoPaths = repoPaths;
17
+ this.shouldPropagateMajors = shouldPropagateMajors;
14
18
  }
15
- static Create(repoPath, repoPaths) {
16
- return new (this.Class ?? this)(repoPath, repoPaths);
19
+ static Create(repoPath, repoPaths, options) {
20
+ return new (this.Class ?? this)(repoPath, repoPaths, options);
17
21
  }
18
22
  async run() {
19
23
  await this.loadPackageJson();
@@ -37,20 +41,24 @@ export default class NpmPropagationCoordinator {
37
41
  }
38
42
  async determineWhereToPropagate() {
39
43
  const repoPaths = [];
44
+ const target = semver.parse(this.packageVersion);
40
45
  for (const repoPath of this.repoPaths) {
41
46
  this.currentRepoPath = repoPath;
42
47
  this.currentPkgJson = await this.loadCurrentPkgJson();
43
- if (this.isDependency ?? this.isDevDependency) {
48
+ const min = semver.minVersion(this.maybeDependencyRange);
49
+ if (!min || min.toString() === '0.0.0') {
50
+ continue;
51
+ }
52
+ if (this.shouldPropagateMajors || min?.major === target?.major) {
44
53
  repoPaths.push(repoPath);
45
54
  }
46
55
  }
47
56
  return repoPaths;
48
57
  }
49
- get isDependency() {
50
- return this.currentPkgJson.dependencies[this.packageName];
51
- }
52
- get isDevDependency() {
53
- return this.currentPkgJson.devDependencies[this.packageName];
58
+ get maybeDependencyRange() {
59
+ return (this.currentPkgJson?.dependencies?.[this.packageName] ??
60
+ this.currentPkgJson?.devDependencies?.[this.packageName] ??
61
+ '');
54
62
  }
55
63
  async loadCurrentPkgJson() {
56
64
  const pkgJson = await this.readFile(`${this.currentRepoPath}/package.json`, 'utf-8');
@@ -1 +1 @@
1
- {"version":3,"file":"NpmPropagationCoordinator.js","sourceRoot":"","sources":["../../src/impl/NpmPropagationCoordinator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAE3C,OAAO,oBAGN,MAAM,2BAA2B,CAAA;AAElC,MAAM,CAAC,OAAO,OAAO,yBAAyB;IACnC,MAAM,CAAC,KAAK,CAAoC;IAChD,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAEzB,QAAQ,CAAQ;IAChB,SAAS,CAAU;IAEnB,GAAG,CAAc;IACjB,eAAe,CAAS;IACxB,cAAc,CAAc;IAEpC,YAAsB,QAAgB,EAAE,SAAmB;QACvD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;IAC9B,CAAC;IAEM,MAAM,CAAC,MAAM,CAAC,QAAgB,EAAE,SAAmB;QACtD,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;IACxD,CAAC;IAEM,KAAK,CAAC,GAAG;QACZ,MAAM,IAAI,CAAC,eAAe,EAAE,CAAA;QAE5B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,yBAAyB,EAAE,CAAA;QAExD,MAAM,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC;YAC1C,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,SAAS;SACZ,CAAC,CAAA;QAEF,MAAM,UAAU,CAAC,GAAG,EAAE,CAAA;IAC1B,CAAC;IAEO,KAAK,CAAC,eAAe;QACzB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAC/B,GAAG,IAAI,CAAC,QAAQ,eAAe,EAC/B,OAAO,CACV,CAAA;QACD,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IAClC,CAAC;IAED,IAAY,WAAW;QACnB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAA;IACxB,CAAC;IAED,IAAY,cAAc;QACtB,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAA;IAC3B,CAAC;IAEO,KAAK,CAAC,yBAAyB;QACnC,MAAM,SAAS,GAAa,EAAE,CAAA;QAE9B,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACpC,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAA;YAC/B,IAAI,CAAC,cAAc,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAA;YAErD,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;gBAC5C,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YAC5B,CAAC;QACL,CAAC;QACD,OAAO,SAAS,CAAA;IACpB,CAAC;IAED,IAAY,YAAY;QACpB,OAAO,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IAC7D,CAAC;IAED,IAAY,eAAe;QACvB,OAAO,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IAChE,CAAC;IAEO,KAAK,CAAC,kBAAkB;QAC5B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAC/B,GAAG,IAAI,CAAC,eAAe,eAAe,EACtC,OAAO,CACV,CAAA;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IAC9B,CAAC;IAED,IAAY,QAAQ;QAChB,OAAO,yBAAyB,CAAC,QAAQ,CAAA;IAC7C,CAAC;IAEO,qBAAqB,CAAC,OAAiC;QAC3D,OAAO,oBAAoB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IAC/C,CAAC"}
1
+ {"version":3,"file":"NpmPropagationCoordinator.js","sourceRoot":"","sources":["../../src/impl/NpmPropagationCoordinator.ts"],"names":[],"mappings":"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"}
@@ -24,14 +24,15 @@ export default class NpmReleasePropagator {
24
24
  }
25
25
  async run() {
26
26
  for (const repoPath of this.repoPaths) {
27
+ console.log(`Propagating to ${repoPath}...`);
27
28
  this.currentRepoPath = repoPath;
29
+ await this.loadCurrentPackageJson();
28
30
  await this.throwIfPreviousReleaseNotFound();
29
31
  await this.installReleaseForCurrentRepo();
30
32
  await this.gitCommitChanges();
31
33
  }
32
34
  }
33
35
  async throwIfPreviousReleaseNotFound() {
34
- await this.loadCurrentPackageJson();
35
36
  if (!(this.isDependency || this.isDevDependency)) {
36
37
  throw new Error(`Cannot propagate release for ${this.packageName} because it is not listed in either dependencies or devDependencies! Please install it in the target repository before running propagation.`);
37
38
  }
@@ -1 +1 @@
1
- {"version":3,"file":"NpmReleasePropagator.js","sourceRoot":"","sources":["../../src/impl/NpmReleasePropagator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NpmReleasePropagator.js","sourceRoot":"","sources":["../../src/impl/NpmReleasePropagator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAErC,OAAO,aAAa,MAAM,oBAAoB,CAAA;AAE9C,MAAM,CAAC,OAAO,OAAO,oBAAoB;IAC9B,MAAM,CAAC,KAAK,CAA+B;IAC3C,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA;IACjC,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAEzB,WAAW,CAAQ;IACnB,cAAc,CAAQ;IACtB,SAAS,CAAU;IAEnB,eAAe,CAAS;IACxB,kBAAkB,CAAc;IAChC,eAAe,CAAS;IAEhC,YAAsB,OAAiC;QACnD,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,SAAS,EAAE,GAAG,OAAO,CAAA;QAE1D,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;QAC9B,IAAI,CAAC,cAAc,GAAG,cAAc,CAAA;QACpC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;IAC9B,CAAC;IAEM,MAAM,CAAC,MAAM,CAAC,OAAiC;QAClD,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,CAAA;IAC5C,CAAC;IAEM,KAAK,CAAC,GAAG;QACZ,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,kBAAkB,QAAQ,KAAK,CAAC,CAAA;YAC5C,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAA;YAE/B,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAA;YACnC,MAAM,IAAI,CAAC,8BAA8B,EAAE,CAAA;YAC3C,MAAM,IAAI,CAAC,4BAA4B,EAAE,CAAA;YACzC,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAA;QACjC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,8BAA8B;QACxC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;YAC/C,MAAM,IAAI,KAAK,CACX,gCAAgC,IAAI,CAAC,WAAW,6IAA6I,CAChM,CAAA;QACL,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,sBAAsB;QAChC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAA;QACrE,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAC7C,CAAC;IAED,IAAY,sBAAsB;QAC9B,OAAO,GAAG,IAAI,CAAC,eAAe,eAAe,CAAA;IACjD,CAAC;IAED,IAAY,YAAY;QACpB,OAAO,IAAI,CAAC,kBAAkB,EAAE,YAAY,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IACpE,CAAC;IAED,IAAY,eAAe;QACvB,OAAO,IAAI,CAAC,kBAAkB,EAAE,eAAe,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IACvE,CAAC;IAEO,KAAK,CAAC,4BAA4B;QACtC,MAAM,IAAI,CAAC,IAAI,CACX,YAAY,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,cAAc,EAAE,EACzF;YACI,GAAG,EAAE,IAAI,CAAC,eAAe;SAC5B,CACJ,CAAA;IACL,CAAC;IAEO,KAAK,CAAC,gBAAgB;QAC1B,MAAM,IAAI,CAAC,yBAAyB,EAAE,CAAA;QAEtC,MAAM,IAAI,CAAC,aAAa,CACpB,oBAAoB,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,cAAc,2BAA2B,IAAI,CAAC,eAAe,GAAG,CAChH,CAAA;IACL,CAAC;IAEO,KAAK,CAAC,yBAAyB;QACnC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;QAErD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CACrB,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,EACxB,cAAc,EACd,YAAY,EACZ,WAAW,EACX,cAAc,CACjB,CAAA;QAED,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAA;QAC/D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAE3B,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC,OAAO,CAAA;IACtC,CAAC;IAED,IAAY,IAAI;QACZ,OAAO,oBAAoB,CAAC,IAAI,CAAA;IACpC,CAAC;IAED,IAAY,QAAQ;QAChB,OAAO,oBAAoB,CAAC,QAAQ,CAAA;IACxC,CAAC;IAEO,aAAa,CAAC,aAAqB;QACvC,OAAO,aAAa,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,eAAe,CAAC,CAAA;IACpE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"FakePropagationCoordinator.js","sourceRoot":"","sources":["../../../src/testDoubles/PropagationCoordinator/FakePropagationCoordinator.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,OAAO,0BAA0B;IACpC,MAAM,CAAC,kBAAkB,GAG1B,EAAE,CAAA;IAED,MAAM,CAAC,aAAa,GAAG,CAAC,CAAA;IAE/B,YAAmB,QAAiB,EAAE,SAAoB;QACtD,0BAA0B,CAAC,kBAAkB,CAAC,IAAI,CAAC;YAC/C,QAAQ;YACR,SAAS;SACZ,CAAC,CAAA;IACN,CAAC;IAEM,KAAK,CAAC,GAAG;QACZ,0BAA0B,CAAC,aAAa,IAAI,CAAC,CAAA;IACjD,CAAC;IAEM,MAAM,CAAC,eAAe;QACzB,0BAA0B,CAAC,kBAAkB,GAAG,EAAE,CAAA;QAClD,0BAA0B,CAAC,aAAa,GAAG,CAAC,CAAA;IAChD,CAAC"}
1
+ {"version":3,"file":"FakePropagationCoordinator.js","sourceRoot":"","sources":["../../../src/testDoubles/PropagationCoordinator/FakePropagationCoordinator.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,OAAO,0BAA0B;IAGpC,MAAM,CAAC,kBAAkB,GAG1B,EAAE,CAAA;IAED,MAAM,CAAC,aAAa,GAAG,CAAC,CAAA;IAE/B,YAAmB,QAAiB,EAAE,SAAoB;QACtD,0BAA0B,CAAC,kBAAkB,CAAC,IAAI,CAAC;YAC/C,QAAQ;YACR,SAAS;SACZ,CAAC,CAAA;IACN,CAAC;IAEM,KAAK,CAAC,GAAG;QACZ,0BAA0B,CAAC,aAAa,IAAI,CAAC,CAAA;IACjD,CAAC;IAEM,MAAM,CAAC,eAAe;QACzB,0BAA0B,CAAC,kBAAkB,GAAG,EAAE,CAAA;QAClD,0BAA0B,CAAC,aAAa,GAAG,CAAC,CAAA;IAChD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@neurodevs/meta-node",
3
- "version": "0.16.1",
3
+ "version": "0.17.0",
4
4
  "description": "Meta-layer utilities for maintaining Node.js package ecosystems.",
5
5
  "type": "module",
6
6
  "keywords": [
@@ -50,7 +50,8 @@
50
50
  },
51
51
  "dependencies": {
52
52
  "fs-extra": "^11.3.2",
53
- "jsonc-parser": "^3.3.1"
53
+ "jsonc-parser": "^3.3.1",
54
+ "semver": "^7.7.3"
54
55
  },
55
56
  "devDependencies": {
56
57
  "@neurodevs/fake-node-core": "^0.7.3",
@@ -59,6 +60,7 @@
59
60
  "@types/fs-extra": "^11.0.4",
60
61
  "@types/node": "^24.6.2",
61
62
  "@types/node-fetch": "^2.6.13",
63
+ "@types/semver": "^7.7.1",
62
64
  "chokidar-cli": "^3.0.0",
63
65
  "eslint": "^9.37.0",
64
66
  "eslint-config-spruce": "^11.2.26",
@@ -7,8 +7,14 @@ import {
7
7
  import AbstractModuleTest from '@neurodevs/node-tdd'
8
8
 
9
9
  import expandHomeDir from '../functions/expandHomeDir.js'
10
+ import { PackageJson } from '../impl/NpmReleasePropagator.js'
10
11
 
11
12
  export default class AbstractPackageTest extends AbstractModuleTest {
13
+ protected static readonly packageScope = this.generateId()
14
+ protected static readonly packageName = this.generateId()
15
+ protected static readonly scopedName = `${this.packageScope}/${this.packageName}`
16
+ protected static readonly packageVersion = '2.2.0' // Dummy value in tests to handle necessary cases
17
+
12
18
  protected static readonly yarnGlobalDirCmd = 'yarn global dir'
13
19
  protected static readonly fakeGlobalRoot = this.generateId()
14
20
  protected static readonly metaNodeVersion = this.generateId()
@@ -17,6 +23,16 @@ export default class AbstractPackageTest extends AbstractModuleTest {
17
23
  await super.beforeEach()
18
24
  }
19
25
 
26
+ protected static generatePackageJson(options?: Partial<PackageJson>) {
27
+ return {
28
+ name: this.scopedName,
29
+ version: this.packageVersion,
30
+ dependencies: {},
31
+ devDependencies: {},
32
+ ...options,
33
+ }
34
+ }
35
+
20
36
  protected static normalize(input: string) {
21
37
  return input.replace(/\s+/g, ' ').trim()
22
38
  }
@@ -5,38 +5,39 @@ import {
5
5
  resetCallsToReadFile,
6
6
  setFakeReadFileResult,
7
7
  } from '@neurodevs/fake-node-core'
8
- import AbstractModuleTest, { test, assert } from '@neurodevs/node-tdd'
8
+ import { test, assert } from '@neurodevs/node-tdd'
9
9
 
10
10
  import NpmPropagationCoordinator, {
11
11
  PropagationCoordinator,
12
+ PropagationCoordinatorOptions,
12
13
  } from '../../impl/NpmPropagationCoordinator.js'
13
- import NpmReleasePropagator, {
14
- PackageJson,
15
- } from '../../impl/NpmReleasePropagator.js'
14
+ import NpmReleasePropagator from '../../impl/NpmReleasePropagator.js'
16
15
  import FakeReleasePropagator from '../../testDoubles/ReleasePropagator/FakeReleasePropagator.js'
17
16
 
18
- export default class NpmPropagationCoordinatorTest extends AbstractModuleTest {
17
+ import AbstractPackageTest from '../AbstractPackageTest.js'
18
+
19
+ export default class NpmPropagationCoordinatorTest extends AbstractPackageTest {
19
20
  private static instance: PropagationCoordinator
20
21
 
21
- private static readonly packageScope = this.generateId()
22
- private static readonly packageName = this.generateId()
23
- private static readonly scopedName = `${this.packageScope}/${this.packageName}`
24
- private static readonly packageVersion = '7.8.9'
25
22
  private static readonly repoPath = `${this.generateId()}/${this.packageName}`
26
23
 
27
24
  private static readonly repoPaths = [
28
25
  this.generateId(),
29
26
  this.generateId(),
30
27
  this.generateId(),
28
+ this.generateId(),
31
29
  this.repoPath,
32
30
  ]
33
31
 
34
32
  private static readonly pkgJsons = [
35
33
  this.generatePackageJson({
36
- dependencies: { [this.scopedName]: '^1.2.3' },
34
+ dependencies: { [this.scopedName]: '^2.0.1' },
37
35
  }),
38
36
  this.generatePackageJson({
39
- devDependencies: { [this.scopedName]: '^4.5.6' },
37
+ devDependencies: { [this.scopedName]: '^2.1.0' },
38
+ }),
39
+ this.generatePackageJson({
40
+ dependencies: { [this.scopedName]: '^1.0.0' },
40
41
  }),
41
42
  this.generatePackageJson(),
42
43
  this.generatePackageJson({ version: this.packageVersion }),
@@ -71,18 +72,31 @@ export default class NpmPropagationCoordinatorTest extends AbstractModuleTest {
71
72
  )
72
73
  }
73
74
 
74
- private static async run() {
75
- await this.instance.run()
75
+ @test()
76
+ protected static async propagatesMajorsIfPassedOptionalParameter() {
77
+ const instance = this.NpmPropagationCoordinator({
78
+ shouldPropagateMajors: true,
79
+ })
80
+
81
+ await instance.run()
82
+
83
+ assert.isEqualDeep(
84
+ FakeReleasePropagator.callsToConstructor[0],
85
+ {
86
+ packageName: this.scopedName,
87
+ packageVersion: this.packageVersion,
88
+ repoPaths: [
89
+ this.repoPaths[0],
90
+ this.repoPaths[1],
91
+ this.repoPaths[2],
92
+ ],
93
+ },
94
+ 'Did not propagate majors!'
95
+ )
76
96
  }
77
97
 
78
- private static generatePackageJson(options?: Partial<PackageJson>) {
79
- return {
80
- name: this.scopedName,
81
- version: this.packageVersion,
82
- dependencies: {},
83
- devDependencies: {},
84
- ...options,
85
- }
98
+ private static async run() {
99
+ await this.instance.run()
86
100
  }
87
101
 
88
102
  private static setFakeReadFile() {
@@ -103,7 +117,13 @@ export default class NpmPropagationCoordinatorTest extends AbstractModuleTest {
103
117
  FakeReleasePropagator.resetTestDouble()
104
118
  }
105
119
 
106
- private static NpmPropagationCoordinator() {
107
- return NpmPropagationCoordinator.Create(this.repoPath, this.repoPaths)
120
+ private static NpmPropagationCoordinator(
121
+ options?: PropagationCoordinatorOptions
122
+ ) {
123
+ return NpmPropagationCoordinator.Create(
124
+ this.repoPath,
125
+ this.repoPaths,
126
+ options
127
+ )
108
128
  }
109
129
  }
@@ -24,8 +24,6 @@ const exec = promisify(execSync)
24
24
  export default class NpmReleasePropagatorTest extends AbstractPackageTest {
25
25
  private static instance: ReleasePropagator
26
26
 
27
- private static readonly packageName = this.generateId()
28
- private static readonly packageVersion = this.generateId()
29
27
  private static readonly repoPaths = [this.generateId(), this.generateId()]
30
28
 
31
29
  protected static async beforeEach() {
@@ -116,20 +114,24 @@ export default class NpmReleasePropagatorTest extends AbstractPackageTest {
116
114
 
117
115
  setFakeReadFileResult(
118
116
  `${this.repoPaths[0]}/package.json`,
119
- JSON.stringify({
120
- dependencies: {
121
- [this.packageName]: this.generateId(),
122
- },
123
- })
117
+ JSON.stringify(
118
+ this.generatePackageJson({
119
+ dependencies: {
120
+ [this.packageName]: this.generateId(),
121
+ },
122
+ })
123
+ )
124
124
  )
125
125
 
126
126
  setFakeReadFileResult(
127
127
  `${this.repoPaths[1]}/package.json`,
128
- JSON.stringify({
129
- devDependencies: {
130
- [this.packageName]: this.generateId(),
131
- },
132
- })
128
+ JSON.stringify(
129
+ this.generatePackageJson({
130
+ devDependencies: {
131
+ [this.packageName]: this.generateId(),
132
+ },
133
+ })
134
+ )
133
135
  )
134
136
  }
135
137
 
@@ -1,28 +1,44 @@
1
1
  import { readFile } from 'node:fs/promises'
2
2
 
3
+ import semver from 'semver'
4
+
3
5
  import NpmReleasePropagator, {
4
6
  PackageJson,
5
7
  ReleasePropagatorOptions,
6
8
  } from './NpmReleasePropagator.js'
7
9
 
8
- export default class NpmPropagationCoordinator implements PropagationCoordinator {
10
+ export default class NpmPropagationCoordinator
11
+ implements PropagationCoordinator
12
+ {
9
13
  public static Class?: PropagationCoordinatorConstructor
10
14
  public static readFile = readFile
11
15
 
12
16
  private repoPath: string
13
17
  private repoPaths: string[]
18
+ private shouldPropagateMajors: boolean
14
19
 
15
20
  private pkg!: PackageJson
16
21
  private currentRepoPath!: string
17
22
  private currentPkgJson!: PackageJson
18
23
 
19
- protected constructor(repoPath: string, repoPaths: string[]) {
24
+ protected constructor(
25
+ repoPath: string,
26
+ repoPaths: string[],
27
+ options?: PropagationCoordinatorOptions
28
+ ) {
29
+ const { shouldPropagateMajors = false } = options ?? {}
30
+
20
31
  this.repoPath = repoPath
21
32
  this.repoPaths = repoPaths
33
+ this.shouldPropagateMajors = shouldPropagateMajors
22
34
  }
23
35
 
24
- public static Create(repoPath: string, repoPaths: string[]) {
25
- return new (this.Class ?? this)(repoPath, repoPaths)
36
+ public static Create(
37
+ repoPath: string,
38
+ repoPaths: string[],
39
+ options?: PropagationCoordinatorOptions
40
+ ) {
41
+ return new (this.Class ?? this)(repoPath, repoPaths, options)
26
42
  }
27
43
 
28
44
  public async run() {
@@ -58,23 +74,31 @@ export default class NpmPropagationCoordinator implements PropagationCoordinator
58
74
  private async determineWhereToPropagate() {
59
75
  const repoPaths: string[] = []
60
76
 
77
+ const target = semver.parse(this.packageVersion)
78
+
61
79
  for (const repoPath of this.repoPaths) {
62
80
  this.currentRepoPath = repoPath
63
81
  this.currentPkgJson = await this.loadCurrentPkgJson()
64
82
 
65
- if (this.isDependency ?? this.isDevDependency) {
83
+ const min = semver.minVersion(this.maybeDependencyRange)
84
+
85
+ if (!min || min.toString() === '0.0.0') {
86
+ continue
87
+ }
88
+
89
+ if (this.shouldPropagateMajors || min?.major === target?.major) {
66
90
  repoPaths.push(repoPath)
67
91
  }
68
92
  }
69
93
  return repoPaths
70
94
  }
71
95
 
72
- private get isDependency() {
73
- return this.currentPkgJson.dependencies[this.packageName]
74
- }
75
-
76
- private get isDevDependency() {
77
- return this.currentPkgJson.devDependencies[this.packageName]
96
+ private get maybeDependencyRange() {
97
+ return (
98
+ this.currentPkgJson?.dependencies?.[this.packageName] ??
99
+ this.currentPkgJson?.devDependencies?.[this.packageName] ??
100
+ ''
101
+ )
78
102
  }
79
103
 
80
104
  private async loadCurrentPkgJson() {
@@ -100,5 +124,10 @@ export interface PropagationCoordinator {
100
124
 
101
125
  export type PropagationCoordinatorConstructor = new (
102
126
  repoPath: string,
103
- repoPaths: string[]
127
+ repoPaths: string[],
128
+ options?: PropagationCoordinatorOptions
104
129
  ) => PropagationCoordinator
130
+
131
+ export interface PropagationCoordinatorOptions {
132
+ shouldPropagateMajors?: boolean
133
+ }
@@ -32,8 +32,10 @@ export default class NpmReleasePropagator implements ReleasePropagator {
32
32
 
33
33
  public async run() {
34
34
  for (const repoPath of this.repoPaths) {
35
+ console.log(`Propagating to ${repoPath}...`)
35
36
  this.currentRepoPath = repoPath
36
37
 
38
+ await this.loadCurrentPackageJson()
37
39
  await this.throwIfPreviousReleaseNotFound()
38
40
  await this.installReleaseForCurrentRepo()
39
41
  await this.gitCommitChanges()
@@ -41,8 +43,6 @@ export default class NpmReleasePropagator implements ReleasePropagator {
41
43
  }
42
44
 
43
45
  private async throwIfPreviousReleaseNotFound() {
44
- await this.loadCurrentPackageJson()
45
-
46
46
  if (!(this.isDependency || this.isDevDependency)) {
47
47
  throw new Error(
48
48
  `Cannot propagate release for ${this.packageName} because it is not listed in either dependencies or devDependencies! Please install it in the target repository before running propagation.`
@@ -1,6 +1,8 @@
1
1
  import { PropagationCoordinator } from '../../impl/NpmPropagationCoordinator.js'
2
2
 
3
- export default class FakePropagationCoordinator implements PropagationCoordinator {
3
+ export default class FakePropagationCoordinator
4
+ implements PropagationCoordinator
5
+ {
4
6
  public static callsToConstructor: {
5
7
  repoPath?: string
6
8
  repoPaths?: string[]