nx-lifecycle 1.1.0 → 1.1.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.
@@ -6,7 +6,7 @@ const checkAndDryRunSchema = objectSchema({
6
6
  $schema: stringSchema({
7
7
  description: 'Path or URL to the JSON schema for this file',
8
8
  format: 'uri-reference'
9
- }).example('https://raw.githubusercontent.com/JacobLey/leyman/refs/heads/main/apps/nx-lifecycle/src/lifecycle/schema.json'),
9
+ }).example('https://raw.githubusercontent.com/JacobLey/leyman/refs/heads/main/apps/nx-lifecycle/out/schema.json'),
10
10
  check: booleanSchema({
11
11
  description: 'Fails if references are not already updated, will not overwrite. Defaults to true during CI, false otherwise.'
12
12
  }),
@@ -15,13 +15,14 @@ const checkAndDryRunSchema = objectSchema({
15
15
  })
16
16
  }
17
17
  });
18
+ const hooksSchema = arraySchema(stringSchema());
18
19
  export const stagesSchema = objectSchema({
19
20
  description: 'Lifecycle stages by name',
20
21
  properties: {},
21
22
  additionalProperties: objectSchema({
22
23
  properties: {
23
24
  dependsOn: dependsOnSchema,
24
- hooks: arraySchema(stringSchema())
25
+ hooks: hooksSchema
25
26
  }
26
27
  })
27
28
  });
@@ -9,26 +9,20 @@ const describeTarget = ({ kind, name, stage })=>{
9
9
  if (kind === 'anchor') {
10
10
  return `Start of the ${stage} stage. Waits for the dependencies of the stage`;
11
11
  }
12
- if (kind === 'hook') {
13
- return `Runs the targets bound to ${name}`;
14
- }
15
- return `Runs the ${stage} stage`;
12
+ return kind === 'hook' ? `Runs the targets bound to ${name}` : `Runs the ${stage} stage`;
16
13
  };
17
14
  const normalizeDependency = (dependency)=>{
18
15
  if (typeof dependency !== 'string') {
19
16
  return dependency;
20
17
  }
21
- if (dependency.startsWith('^')) {
22
- return {
23
- target: dependency.slice(1),
24
- dependencies: true
25
- };
26
- }
27
- return {
18
+ return dependency.startsWith('^') ? {
19
+ target: dependency.slice(1),
20
+ dependencies: true
21
+ } : {
28
22
  target: dependency
29
23
  };
30
24
  };
31
- const dependsOnIncludes = (dependsOn, expected)=>{
25
+ const hasDependency = (dependsOn, expected)=>{
32
26
  const normalizedExpected = normalizeDependency(expected);
33
27
  return (dependsOn ?? []).some((dependency)=>deepEqual(normalizeDependency(dependency), normalizedExpected));
34
28
  };
@@ -36,21 +30,21 @@ const validateProject = ({ targets = {} }, { lifecycleTargets, registeredTargets
36
30
  const errors = [];
37
31
  for (const [targetName, lifecycleTarget] of lifecycleTargets){
38
32
  const target = targets[targetName];
39
- if (target && (target.executor !== NOOP_EXECUTOR || !lifecycleTarget.dependsOn.every((dependency)=>dependsOnIncludes(target.dependsOn, dependency)))) {
33
+ if (target && (target.executor !== NOOP_EXECUTOR || lifecycleTarget.dependsOn.some((dependency)=>!hasDependency(target.dependsOn, dependency)))) {
40
34
  errors.push(`${targetName} is inferred by nx-lifecycle, but project.json or nx.json targetDefaults override it. Remove it from there`);
41
35
  }
42
36
  }
43
37
  for (const [targetName, lifecycleTarget] of registeredTargets){
44
38
  const target = targets[targetName];
45
- const hook = targets[lifecycleTarget.name];
46
39
  if (!target) {
47
40
  continue;
48
41
  }
42
+ const hook = targets[lifecycleTarget.name];
49
43
  if (!hook) {
50
44
  errors.push(`${targetName} is bound to ${lifecycleTarget.name}, but nx-lifecycle only adds lifecycle targets to projects with a project.json. Add one`);
51
- } else if (!dependsOnIncludes(hook.dependsOn, targetName)) {
45
+ } else if (!hasDependency(hook.dependsOn, targetName)) {
52
46
  errors.push(`${targetName} is bound to ${lifecycleTarget.name}, but is not declared in project.json. Declare it there so nx-lifecycle can wire it`);
53
- } else if (!dependsOnIncludes(target.dependsOn, lifecycleTarget.previousHook)) {
47
+ } else if (!hasDependency(target.dependsOn, lifecycleTarget.previousHook)) {
54
48
  errors.push(`${targetName} is bound to ${lifecycleTarget.name}, so it must depend on ${lifecycleTarget.previousHook}. A dependsOn in project.json or nx.json targetDefaults replaces the inferred one, so add "${lifecycleTarget.previousHook}" to it`);
55
49
  }
56
50
  }
@@ -87,14 +81,15 @@ const createProjectNode = (projectJsonPath, { lifecycleTargets, registeredTarget
87
81
  };
88
82
  }
89
83
  for (const [targetName, lifecycleTarget] of registeredTargets){
90
- if (targetName in declaredTargets) {
91
- targets[lifecycleTarget.name].dependsOn.push(targetName);
92
- targets[targetName] = {
93
- dependsOn: [
94
- lifecycleTarget.previousHook
95
- ]
96
- };
84
+ if (!Object.hasOwn(declaredTargets, targetName)) {
85
+ continue;
97
86
  }
87
+ targets[lifecycleTarget.name].dependsOn.push(targetName);
88
+ targets[targetName] = {
89
+ dependsOn: [
90
+ lifecycleTarget.previousHook
91
+ ]
92
+ };
98
93
  }
99
94
  return {
100
95
  projects: {
@@ -122,8 +117,10 @@ export const createDependencies = (options, context)=>{
122
117
  projectNames.push(projectName);
123
118
  errors.set(error, projectNames);
124
119
  }
125
- for (const targetName of Object.keys(project.targets ?? {})){
126
- definedTargets.add(targetName);
120
+ if (project.targets) {
121
+ for (const targetName of Object.keys(project.targets)){
122
+ definedTargets.add(targetName);
123
+ }
127
124
  }
128
125
  }
129
126
  if (errors.size > 0) {
@@ -2,70 +2,37 @@ import type { SchemaType } from 'juniper';
2
2
  import type { JuniperValidator } from 'juniper-validator';
3
3
  declare const lifecyclePluginOptionsSchema: import("juniper").ObjectSchema<{
4
4
  stages: import("juniper").ObjectSchema<{}, never, import("juniper").ObjectSchema<{
5
- dependsOn: import("juniper").ArraySchema<string | (Partial<{
6
- dependencies: boolean;
7
- projects: never;
8
- }> & Partial<{
9
- target: string;
10
- params: string;
11
- }> & Required<Pick<{
12
- target: string;
13
- params: string;
14
- }, "target">>) | (string & Partial<{
15
- dependencies: boolean;
16
- projects: never;
17
- }> & Partial<{
18
- target: string;
19
- params: string;
20
- }> & Required<Pick<{
21
- target: string;
22
- params: string;
23
- }, "target">>) | (Partial<{
24
- dependencies: boolean;
25
- projects: never;
26
- }> & Partial<{
27
- target: string;
28
- params: string;
29
- }> & Required<Pick<{
30
- target: string;
31
- params: string;
32
- }, "target">> & string) | (Partial<{
33
- dependencies: never;
34
- projects: string | string[];
35
- }> & Required<Pick<{
36
- dependencies: never;
37
- projects: string | string[];
38
- }, "projects">> & Partial<{
39
- target: string;
40
- params: string;
41
- }> & Required<Pick<{
42
- target: string;
43
- params: string;
44
- }, "target">>) | (string & Partial<{
45
- dependencies: never;
46
- projects: string | string[];
47
- }> & Required<Pick<{
48
- dependencies: never;
49
- projects: string | string[];
50
- }, "projects">> & Partial<{
51
- target: string;
52
- params: string;
53
- }> & Required<Pick<{
54
- target: string;
55
- params: string;
56
- }, "target">>) | (Partial<{
57
- dependencies: never;
58
- projects: string | string[];
59
- }> & Required<Pick<{
60
- dependencies: never;
61
- projects: string | string[];
62
- }, "projects">> & Partial<{
63
- target: string;
64
- params: string;
65
- }> & Required<Pick<{
66
- target: string;
67
- params: string;
68
- }, "target">> & string), [], never, unknown, false>;
5
+ dependsOn: import("juniper").ArraySchema<string | {
6
+ target: string;
7
+ params?: string;
8
+ dependencies?: boolean;
9
+ projects?: never;
10
+ } | {
11
+ target: string;
12
+ params?: string;
13
+ dependencies?: never;
14
+ projects: (string | string[] | undefined) & (string | string[]);
15
+ } | (string & {
16
+ target: string;
17
+ params?: string;
18
+ dependencies?: boolean;
19
+ projects?: never;
20
+ }) | (string & {
21
+ target: string;
22
+ params?: string;
23
+ dependencies?: never;
24
+ projects: (string | string[] | undefined) & (string | string[]);
25
+ }) | ({
26
+ target: string;
27
+ params?: string;
28
+ dependencies?: boolean;
29
+ projects?: never;
30
+ } & string) | ({
31
+ target: string;
32
+ params?: string;
33
+ dependencies?: never;
34
+ projects: (string | string[] | undefined) & (string | string[]);
35
+ } & string), [], never, unknown, false>;
69
36
  hooks: import("juniper").ArraySchema<string, [], never, unknown, false>;
70
37
  }, never, boolean, import("juniper").EmptyIndex, unknown, false>, import("juniper").EmptyIndex, unknown, false>;
71
38
  bindings: import("juniper").ObjectSchema<{}, never, import("juniper").StringSchema<string, false>, import("juniper").EmptyIndex, unknown, false>;
@@ -1,10 +1,9 @@
1
1
  import type { SchemaType } from 'juniper';
2
- export declare const configurationsSchema: import("juniper").ObjectSchema<{}, never, boolean, import("juniper").EmptyIndex, (Partial<{
2
+ export declare const configurationsSchema: import("juniper").ObjectSchema<{}, never, boolean, import("juniper").EmptyIndex, {
3
+ [x: string]: unknown;
4
+ __lifecycle?: never;
5
+ } | {
3
6
  __lifecycle: import("juniper").EmptyObject;
4
- }> & Required<Pick<{
5
- __lifecycle: import("juniper").EmptyObject;
6
- }, "__lifecycle">>) | (Record<string, unknown> & Partial<{
7
- __lifecycle: never;
8
- }>), boolean>;
7
+ }, boolean>;
9
8
  export type Configurations = SchemaType<typeof configurationsSchema>;
10
9
  //# sourceMappingURL=configurations.d.ts.map
@@ -2,81 +2,45 @@ import type { SchemaType } from 'juniper';
2
2
  declare const dependencyObject: import("juniper").ObjectSchema<{
3
3
  target: import("juniper").StringSchema<string, false>;
4
4
  params: import("juniper").EnumSchema<string>;
5
- }, "target", boolean, import("juniper").EmptyIndex, Partial<{
6
- dependencies: boolean;
7
- projects: never;
8
- }> | (Partial<{
9
- dependencies: never;
10
- projects: string | string[];
11
- }> & Required<Pick<{
12
- dependencies: never;
13
- projects: string | string[];
14
- }, "projects">>), boolean>;
5
+ }, "target", boolean, import("juniper").EmptyIndex, {
6
+ dependencies?: boolean;
7
+ projects?: never;
8
+ } | {
9
+ dependencies?: never;
10
+ projects: (string | string[] | undefined) & (string | string[]);
11
+ }, boolean>;
15
12
  export type DependencyObject = SchemaType<typeof dependencyObject>;
16
- export declare const dependsOnSchema: import("juniper").ArraySchema<string | (Partial<{
17
- dependencies: boolean;
18
- projects: never;
19
- }> & Partial<{
20
- target: string;
21
- params: string;
22
- }> & Required<Pick<{
23
- target: string;
24
- params: string;
25
- }, "target">>) | (string & Partial<{
26
- dependencies: boolean;
27
- projects: never;
28
- }> & Partial<{
29
- target: string;
30
- params: string;
31
- }> & Required<Pick<{
32
- target: string;
33
- params: string;
34
- }, "target">>) | (Partial<{
35
- dependencies: boolean;
36
- projects: never;
37
- }> & Partial<{
38
- target: string;
39
- params: string;
40
- }> & Required<Pick<{
41
- target: string;
42
- params: string;
43
- }, "target">> & string) | (Partial<{
44
- dependencies: never;
45
- projects: string | string[];
46
- }> & Required<Pick<{
47
- dependencies: never;
48
- projects: string | string[];
49
- }, "projects">> & Partial<{
50
- target: string;
51
- params: string;
52
- }> & Required<Pick<{
53
- target: string;
54
- params: string;
55
- }, "target">>) | (string & Partial<{
56
- dependencies: never;
57
- projects: string | string[];
58
- }> & Required<Pick<{
59
- dependencies: never;
60
- projects: string | string[];
61
- }, "projects">> & Partial<{
62
- target: string;
63
- params: string;
64
- }> & Required<Pick<{
65
- target: string;
66
- params: string;
67
- }, "target">>) | (Partial<{
68
- dependencies: never;
69
- projects: string | string[];
70
- }> & Required<Pick<{
71
- dependencies: never;
72
- projects: string | string[];
73
- }, "projects">> & Partial<{
74
- target: string;
75
- params: string;
76
- }> & Required<Pick<{
77
- target: string;
78
- params: string;
79
- }, "target">> & string), [], never, unknown, false>;
13
+ export declare const dependsOnSchema: import("juniper").ArraySchema<string | {
14
+ target: string;
15
+ params?: string;
16
+ dependencies?: boolean;
17
+ projects?: never;
18
+ } | {
19
+ target: string;
20
+ params?: string;
21
+ dependencies?: never;
22
+ projects: (string | string[] | undefined) & (string | string[]);
23
+ } | (string & {
24
+ target: string;
25
+ params?: string;
26
+ dependencies?: boolean;
27
+ projects?: never;
28
+ }) | (string & {
29
+ target: string;
30
+ params?: string;
31
+ dependencies?: never;
32
+ projects: (string | string[] | undefined) & (string | string[]);
33
+ }) | ({
34
+ target: string;
35
+ params?: string;
36
+ dependencies?: boolean;
37
+ projects?: never;
38
+ } & string) | ({
39
+ target: string;
40
+ params?: string;
41
+ dependencies?: never;
42
+ projects: (string | string[] | undefined) & (string | string[]);
43
+ } & string), [], never, unknown, false>;
80
44
  export type DependsOn = SchemaType<typeof dependsOnSchema>;
81
45
  export {};
82
46
  //# sourceMappingURL=depend-on.d.ts.map
@@ -1,4 +1,8 @@
1
1
  import { arraySchema, booleanSchema, enumSchema, mergeSchema, neverSchema, objectSchema, stringSchema } from 'juniper';
2
+ const projectsSchema = mergeSchema().oneOf([
3
+ arraySchema(stringSchema()),
4
+ stringSchema()
5
+ ]);
2
6
  const dependencyObject = objectSchema({
3
7
  properties: {
4
8
  target: stringSchema(),
@@ -22,10 +26,7 @@ const dependencyObject = objectSchema({
22
26
  objectSchema({
23
27
  properties: {
24
28
  dependencies: neverSchema(),
25
- projects: mergeSchema().oneOf([
26
- arraySchema(stringSchema()),
27
- stringSchema()
28
- ])
29
+ projects: projectsSchema
29
30
  },
30
31
  required: [
31
32
  'projects'
@@ -3,77 +3,43 @@ import type { JuniperValidator } from 'juniper-validator';
3
3
  declare const nxJsonSchema: import("juniper").ObjectSchema<{
4
4
  targetDefaults: import("juniper").ObjectSchema<{}, never, import("juniper").ObjectSchema<{
5
5
  executor: import("juniper").StringSchema<string, false>;
6
- dependsOn: import("juniper").ArraySchema<string | (Partial<{
7
- dependencies: boolean;
8
- projects: never;
9
- }> & Partial<{
10
- target: string;
11
- params: string;
12
- }> & Required<Pick<{
13
- target: string;
14
- params: string;
15
- }, "target">>) | (string & Partial<{
16
- dependencies: boolean;
17
- projects: never;
18
- }> & Partial<{
19
- target: string;
20
- params: string;
21
- }> & Required<Pick<{
22
- target: string;
23
- params: string;
24
- }, "target">>) | (Partial<{
25
- dependencies: boolean;
26
- projects: never;
27
- }> & Partial<{
28
- target: string;
29
- params: string;
30
- }> & Required<Pick<{
31
- target: string;
32
- params: string;
33
- }, "target">> & string) | (Partial<{
34
- dependencies: never;
35
- projects: string | string[];
36
- }> & Required<Pick<{
37
- dependencies: never;
38
- projects: string | string[];
39
- }, "projects">> & Partial<{
40
- target: string;
41
- params: string;
42
- }> & Required<Pick<{
43
- target: string;
44
- params: string;
45
- }, "target">>) | (string & Partial<{
46
- dependencies: never;
47
- projects: string | string[];
48
- }> & Required<Pick<{
49
- dependencies: never;
50
- projects: string | string[];
51
- }, "projects">> & Partial<{
52
- target: string;
53
- params: string;
54
- }> & Required<Pick<{
55
- target: string;
56
- params: string;
57
- }, "target">>) | (Partial<{
58
- dependencies: never;
59
- projects: string | string[];
60
- }> & Required<Pick<{
61
- dependencies: never;
62
- projects: string | string[];
63
- }, "projects">> & Partial<{
64
- target: string;
65
- params: string;
66
- }> & Required<Pick<{
67
- target: string;
68
- params: string;
69
- }, "target">> & string), [], never, unknown, false>;
70
- configurations: import("juniper").ObjectSchema<{}, never, boolean, import("juniper").EmptyIndex, (Partial<{
71
- __lifecycle: import("juniper").EmptyObject;
72
- }> & Required<Pick<{
6
+ dependsOn: import("juniper").ArraySchema<string | {
7
+ target: string;
8
+ params?: string;
9
+ dependencies?: boolean;
10
+ projects?: never;
11
+ } | {
12
+ target: string;
13
+ params?: string;
14
+ dependencies?: never;
15
+ projects: (string | string[] | undefined) & (string | string[]);
16
+ } | (string & {
17
+ target: string;
18
+ params?: string;
19
+ dependencies?: boolean;
20
+ projects?: never;
21
+ }) | (string & {
22
+ target: string;
23
+ params?: string;
24
+ dependencies?: never;
25
+ projects: (string | string[] | undefined) & (string | string[]);
26
+ }) | ({
27
+ target: string;
28
+ params?: string;
29
+ dependencies?: boolean;
30
+ projects?: never;
31
+ } & string) | ({
32
+ target: string;
33
+ params?: string;
34
+ dependencies?: never;
35
+ projects: (string | string[] | undefined) & (string | string[]);
36
+ } & string), [], never, unknown, false>;
37
+ configurations: import("juniper").ObjectSchema<{}, never, boolean, import("juniper").EmptyIndex, {
38
+ [x: string]: unknown;
39
+ __lifecycle?: never;
40
+ } | {
73
41
  __lifecycle: import("juniper").EmptyObject;
74
- }, "__lifecycle">>) | (Record<string, unknown> & Partial<{
75
- __lifecycle: never;
76
- }>), boolean>;
42
+ }, boolean>;
77
43
  }, never, boolean, import("juniper").EmptyIndex, unknown, false>, import("juniper").EmptyIndex, unknown, false>;
78
44
  }, never, true, import("juniper").EmptyIndex, unknown, false>;
79
45
  export type NxJson = SchemaType<typeof nxJsonSchema>;
@@ -3,77 +3,43 @@ import type { JuniperValidator } from 'juniper-validator';
3
3
  declare const projectJsonSchema: import("juniper").ObjectSchema<{
4
4
  targets: import("juniper").ObjectSchema<{}, never, import("juniper").ObjectSchema<{
5
5
  executor: import("juniper").StringSchema<string, false>;
6
- dependsOn: import("juniper").ArraySchema<string | (Partial<{
7
- dependencies: boolean;
8
- projects: never;
9
- }> & Partial<{
10
- target: string;
11
- params: string;
12
- }> & Required<Pick<{
13
- target: string;
14
- params: string;
15
- }, "target">>) | (string & Partial<{
16
- dependencies: boolean;
17
- projects: never;
18
- }> & Partial<{
19
- target: string;
20
- params: string;
21
- }> & Required<Pick<{
22
- target: string;
23
- params: string;
24
- }, "target">>) | (Partial<{
25
- dependencies: boolean;
26
- projects: never;
27
- }> & Partial<{
28
- target: string;
29
- params: string;
30
- }> & Required<Pick<{
31
- target: string;
32
- params: string;
33
- }, "target">> & string) | (Partial<{
34
- dependencies: never;
35
- projects: string | string[];
36
- }> & Required<Pick<{
37
- dependencies: never;
38
- projects: string | string[];
39
- }, "projects">> & Partial<{
40
- target: string;
41
- params: string;
42
- }> & Required<Pick<{
43
- target: string;
44
- params: string;
45
- }, "target">>) | (string & Partial<{
46
- dependencies: never;
47
- projects: string | string[];
48
- }> & Required<Pick<{
49
- dependencies: never;
50
- projects: string | string[];
51
- }, "projects">> & Partial<{
52
- target: string;
53
- params: string;
54
- }> & Required<Pick<{
55
- target: string;
56
- params: string;
57
- }, "target">>) | (Partial<{
58
- dependencies: never;
59
- projects: string | string[];
60
- }> & Required<Pick<{
61
- dependencies: never;
62
- projects: string | string[];
63
- }, "projects">> & Partial<{
64
- target: string;
65
- params: string;
66
- }> & Required<Pick<{
67
- target: string;
68
- params: string;
69
- }, "target">> & string), [], never, unknown, false>;
70
- configurations: import("juniper").ObjectSchema<{}, never, boolean, import("juniper").EmptyIndex, (Partial<{
71
- __lifecycle: import("juniper").EmptyObject;
72
- }> & Required<Pick<{
6
+ dependsOn: import("juniper").ArraySchema<string | {
7
+ target: string;
8
+ params?: string;
9
+ dependencies?: boolean;
10
+ projects?: never;
11
+ } | {
12
+ target: string;
13
+ params?: string;
14
+ dependencies?: never;
15
+ projects: (string | string[] | undefined) & (string | string[]);
16
+ } | (string & {
17
+ target: string;
18
+ params?: string;
19
+ dependencies?: boolean;
20
+ projects?: never;
21
+ }) | (string & {
22
+ target: string;
23
+ params?: string;
24
+ dependencies?: never;
25
+ projects: (string | string[] | undefined) & (string | string[]);
26
+ }) | ({
27
+ target: string;
28
+ params?: string;
29
+ dependencies?: boolean;
30
+ projects?: never;
31
+ } & string) | ({
32
+ target: string;
33
+ params?: string;
34
+ dependencies?: never;
35
+ projects: (string | string[] | undefined) & (string | string[]);
36
+ } & string), [], never, unknown, false>;
37
+ configurations: import("juniper").ObjectSchema<{}, never, boolean, import("juniper").EmptyIndex, {
38
+ [x: string]: unknown;
39
+ __lifecycle?: never;
40
+ } | {
73
41
  __lifecycle: import("juniper").EmptyObject;
74
- }, "__lifecycle">>) | (Record<string, unknown> & Partial<{
75
- __lifecycle: never;
76
- }>), boolean>;
42
+ }, boolean>;
77
43
  }, never, boolean, import("juniper").EmptyIndex, unknown, false>, import("juniper").EmptyIndex, unknown, false>;
78
44
  }, never, true, import("juniper").EmptyIndex, unknown, false>;
79
45
  export type ProjectJson = SchemaType<typeof projectJsonSchema>;