@nan0web/release 3.3.0 → 3.5.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.
- package/README.md +0 -35
- package/bin/nan0release.js +33 -2
- package/bin/serve.js +73 -0
- package/package.json +46 -17
- package/src/Release/Document.js +1 -0
- package/src/Release/Scanner.js +3 -2
- package/src/Release.js +7 -7
- package/src/domain/App.js +33 -2
- package/src/domain/BumpCommand.js +10 -3
- package/src/domain/CheckCommand.js +504 -146
- package/src/domain/CheckCommand.story.js +92 -0
- package/src/domain/CloseCommand.js +13 -9
- package/src/domain/Dashboard/Dashboard.story.js +155 -0
- package/src/domain/Dashboard/DashboardModel.js +308 -0
- package/src/domain/Dashboard/ReleaseDiscovery.js +132 -0
- package/src/domain/Dashboard/ReleaseParser.js +226 -0
- package/src/domain/Dashboard/index.js +19 -0
- package/src/domain/DepsCommand.js +5 -2
- package/src/domain/InitCommand.js +18 -16
- package/src/domain/ListCommand.js +45 -0
- package/src/domain/PMaCParser.js +418 -0
- package/src/domain/PMaCParser.story.js +152 -0
- package/src/domain/PreviewCommand.js +39 -0
- package/src/domain/PublishCommand.js +7 -3
- package/src/domain/Registry/Registry.story.js +82 -0
- package/src/domain/Registry/RegistryModel.js +124 -0
- package/src/domain/ServeCommand.js +165 -0
- package/src/domain/ServeCommand.story.js +88 -0
- package/src/domain/SpecCommand.js +3 -1
- package/src/domain/StatusCommand.js +249 -3
- package/src/domain/ValidateCommand.js +426 -0
- package/src/domain/ValidateCommand.story.js +92 -0
- package/src/domain/ViewCommand.js +99 -0
- package/src/domain/WebCommand.js +140 -0
- package/src/domain/inspect/ReleaseAuditor.js +508 -0
- package/src/domain/inspect/ReleaseAuditor.story.js +136 -0
- package/src/domain/models/ReleaseIssueModel.js +27 -0
- package/src/domain/models/ReleaseMemberModel.js +21 -0
- package/src/domain/models/ReleaseModel.js +191 -0
- package/src/domain/models/ReleaseParityModel.js +27 -0
- package/src/domain/models/ReleaseTaskModel.js +33 -0
- package/src/domain/models/index.js +6 -0
- package/src/domain/templates/release.html +34 -0
- package/src/domain/templates/release.html.template.js +34 -0
- package/src/index.js +15 -0
- package/src/inspectors/inspect-js.js +32 -0
- package/src/releases/1/0/v1.0.3/task.test.js +1 -1
- package/src/utils/nodejs/GitTelemetry.js +154 -0
- package/types/Release/Document.d.ts +24 -27
- package/types/Release/MarkdownToTest.d.ts +1 -1
- package/types/Release/Person.d.ts +9 -7
- package/types/Release/Scanner.d.ts +41 -41
- package/types/Release.d.ts +42 -42
- package/types/architecture/ProjectManagementAsCode.d.ts +59 -64
- package/types/domain/App.d.ts +25 -7
- package/types/domain/BumpCommand.d.ts +11 -6
- package/types/domain/CheckCommand.d.ts +128 -16
- package/types/domain/CheckCommand.story.d.ts +1 -0
- package/types/domain/CloseCommand.d.ts +4 -6
- package/types/domain/Dashboard/Dashboard.story.d.ts +1 -0
- package/types/domain/Dashboard/DashboardModel.d.ts +273 -0
- package/types/domain/Dashboard/GitTelemetry.d.ts +23 -0
- package/types/domain/Dashboard/ReleaseDiscovery.d.ts +47 -0
- package/types/domain/Dashboard/ReleaseParser.d.ts +79 -0
- package/types/domain/Dashboard/index.d.ts +3 -0
- package/types/domain/DepsCommand.d.ts +6 -6
- package/types/domain/InitCommand.d.ts +4 -6
- package/types/domain/ListCommand.d.ts +18 -0
- package/types/domain/PMaCParser.d.ts +64 -0
- package/types/domain/PMaCParser.story.d.ts +1 -0
- package/types/domain/PreviewCommand.d.ts +6 -0
- package/types/domain/PublishCommand.d.ts +8 -6
- package/types/domain/Registry/Registry.story.d.ts +1 -0
- package/types/domain/Registry/RegistryModel.d.ts +61 -0
- package/types/domain/ServeCommand.d.ts +59 -0
- package/types/domain/ServeCommand.story.d.ts +1 -0
- package/types/domain/SpecCommand.d.ts +4 -6
- package/types/domain/StatusCommand.d.ts +38 -3
- package/types/domain/ValidateCommand.d.ts +69 -0
- package/types/domain/ValidateCommand.story.d.ts +1 -0
- package/types/domain/ViewCommand.d.ts +27 -0
- package/types/domain/WebCommand.d.ts +47 -0
- package/types/domain/inspect/ReleaseAuditor.d.ts +134 -0
- package/types/domain/inspect/ReleaseAuditor.story.d.ts +1 -0
- package/types/domain/models/ReleaseIssueModel.d.ts +35 -0
- package/types/domain/models/ReleaseMemberModel.d.ts +25 -0
- package/types/domain/models/ReleaseModel.d.ts +122 -0
- package/types/domain/models/ReleaseParityModel.d.ts +37 -0
- package/types/domain/models/ReleaseTaskModel.d.ts +46 -0
- package/types/domain/models/index.d.ts +5 -0
- package/types/domain/templates/release.html.template.d.ts +2 -0
- package/types/index.d.ts +21 -10
- package/types/inspectors/inspect-js.d.ts +2 -0
- package/types/utils/nodejs/GitTelemetry.d.ts +23 -0
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ServeCommand - Universal ModelAsApp for data or release catalogs.
|
|
3
|
+
*
|
|
4
|
+
* Generates HTML content from README.md and release templates using $db and Markdown.
|
|
5
|
+
* Pure OLMUI model: does not start HTTP server, does not call node:fs or child_process.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* pnpm exec serve releases/ # Runs via CLI bootstrap
|
|
9
|
+
*/
|
|
10
|
+
export default class ServeCommand extends ModelAsApp {
|
|
11
|
+
static alias: string;
|
|
12
|
+
static UI: {
|
|
13
|
+
title: string;
|
|
14
|
+
help: string;
|
|
15
|
+
serving: string;
|
|
16
|
+
dirNotFound: string;
|
|
17
|
+
};
|
|
18
|
+
static dir: {
|
|
19
|
+
help: string;
|
|
20
|
+
positional: boolean;
|
|
21
|
+
type: string;
|
|
22
|
+
default: string;
|
|
23
|
+
};
|
|
24
|
+
static port: {
|
|
25
|
+
help: string;
|
|
26
|
+
default: number;
|
|
27
|
+
type: string;
|
|
28
|
+
alias: string;
|
|
29
|
+
};
|
|
30
|
+
static open: {
|
|
31
|
+
help: string;
|
|
32
|
+
default: boolean;
|
|
33
|
+
type: string;
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* @param {Partial<ServeCommand>} [data]
|
|
37
|
+
* @param {import('@nan0web/types').ModelOptions} [options]
|
|
38
|
+
*/
|
|
39
|
+
constructor(data?: Partial<ServeCommand>, options?: import("@nan0web/types").ModelOptions);
|
|
40
|
+
/** @type {string} */
|
|
41
|
+
dir: string;
|
|
42
|
+
/** @type {number} */
|
|
43
|
+
port: number;
|
|
44
|
+
/** @type {boolean} */
|
|
45
|
+
open: boolean;
|
|
46
|
+
/**
|
|
47
|
+
* Convert markdown string to HTML using @nan0web/markdown
|
|
48
|
+
* @param {string} mdRaw
|
|
49
|
+
* @returns {string}
|
|
50
|
+
*/
|
|
51
|
+
renderMarkdownToHtml(mdRaw: string): string;
|
|
52
|
+
/**
|
|
53
|
+
* Render HTML content for the target directory
|
|
54
|
+
* @returns {Promise<string>}
|
|
55
|
+
*/
|
|
56
|
+
renderHtml(): Promise<string>;
|
|
57
|
+
run(): AsyncGenerator<import("@nan0web/ui/src/core/Intent.js").ShowIntent, import("@nan0web/ui/src/core/Intent.js").ResultIntent, unknown>;
|
|
58
|
+
}
|
|
59
|
+
import { ModelAsApp } from '@nan0web/ui';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { ModelAsApp } from '@nan0web/ui';
|
|
2
1
|
export default class SpecCommand extends ModelAsApp {
|
|
3
2
|
static version: {
|
|
4
3
|
help: string;
|
|
@@ -12,9 +11,8 @@ export default class SpecCommand extends ModelAsApp {
|
|
|
12
11
|
* @param {Partial<SpecCommand>} [data]
|
|
13
12
|
* @param {Partial<import('@nan0web/ui').ModelAsAppOptions>} [options]
|
|
14
13
|
*/
|
|
15
|
-
constructor(data?: Partial<SpecCommand>, options?: Partial<import(
|
|
16
|
-
/**
|
|
17
|
-
|
|
18
|
-
*/
|
|
19
|
-
run(): AsyncGenerator<import('@nan0web/ui').Intent, import('@nan0web/ui').ResultIntent, any>;
|
|
14
|
+
constructor(data?: Partial<SpecCommand>, options?: Partial<import("@nan0web/ui").ModelAsAppOptions>);
|
|
15
|
+
/** @type {string} Release version filter */
|
|
16
|
+
version: string;
|
|
20
17
|
}
|
|
18
|
+
import { ModelAsApp } from '@nan0web/ui';
|
|
@@ -1,11 +1,46 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* StatusCommand - ModelAsApp Subcommand to display PM-as-Code dashboard and project inspector.
|
|
3
|
+
*/
|
|
2
4
|
export default class StatusCommand extends ModelAsApp {
|
|
5
|
+
static alias: string;
|
|
3
6
|
static UI: {
|
|
4
7
|
title: string;
|
|
5
8
|
help: string;
|
|
9
|
+
header: string;
|
|
10
|
+
summaryHeader: string;
|
|
11
|
+
summaryRow1: string;
|
|
12
|
+
summaryRow2: string;
|
|
13
|
+
noProjects: string;
|
|
14
|
+
};
|
|
15
|
+
static registryFile: {
|
|
16
|
+
help: string;
|
|
17
|
+
default: string;
|
|
18
|
+
type: string;
|
|
19
|
+
alias: string;
|
|
20
|
+
};
|
|
21
|
+
static target: {
|
|
22
|
+
help: string;
|
|
23
|
+
default: string;
|
|
24
|
+
positional: boolean;
|
|
25
|
+
type: string;
|
|
26
|
+
};
|
|
27
|
+
static sort: {
|
|
28
|
+
help: string;
|
|
29
|
+
default: string;
|
|
30
|
+
type: string;
|
|
31
|
+
alias: string;
|
|
6
32
|
};
|
|
7
33
|
/**
|
|
8
|
-
* @
|
|
34
|
+
* @param {Partial<StatusCommand>} [data]
|
|
35
|
+
* @param {import('@nan0web/types').ModelOptions} [options]
|
|
9
36
|
*/
|
|
10
|
-
|
|
37
|
+
constructor(data?: Partial<StatusCommand>, options?: import("@nan0web/types").ModelOptions);
|
|
38
|
+
/** @type {string} */ registryFile: string;
|
|
39
|
+
/** @type {string} */ target: string;
|
|
40
|
+
/** @type {string} */ sort: string;
|
|
41
|
+
/**
|
|
42
|
+
* @returns {AsyncGenerator<import('@nan0web/ui').Intent, any, any>}
|
|
43
|
+
*/
|
|
44
|
+
run(): AsyncGenerator<import("@nan0web/ui").Intent, any, any>;
|
|
11
45
|
}
|
|
46
|
+
import { ModelAsApp } from '@nan0web/ui';
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ValidateCommand - CLI Release Inspector & Multi-Format Validator.
|
|
3
|
+
* Validates PMaC compliance, tasks, criteria, parity and outputs in text, json, nan0, or csv.
|
|
4
|
+
*/
|
|
5
|
+
export class ValidateCommand extends ModelAsApp {
|
|
6
|
+
static alias: string;
|
|
7
|
+
static UI: {
|
|
8
|
+
title: string;
|
|
9
|
+
header: string;
|
|
10
|
+
scanningCount: string;
|
|
11
|
+
projectHeader: string;
|
|
12
|
+
noReleases: string;
|
|
13
|
+
savedReport: string;
|
|
14
|
+
summary: string;
|
|
15
|
+
};
|
|
16
|
+
static target: {
|
|
17
|
+
help: string;
|
|
18
|
+
default: string;
|
|
19
|
+
type: string;
|
|
20
|
+
positional: boolean;
|
|
21
|
+
};
|
|
22
|
+
static format: {
|
|
23
|
+
help: string;
|
|
24
|
+
default: string;
|
|
25
|
+
options: string[];
|
|
26
|
+
type: string;
|
|
27
|
+
alias: string;
|
|
28
|
+
};
|
|
29
|
+
static output: {
|
|
30
|
+
help: string;
|
|
31
|
+
default: string;
|
|
32
|
+
type: string;
|
|
33
|
+
alias: string;
|
|
34
|
+
};
|
|
35
|
+
static registryFile: {
|
|
36
|
+
help: string;
|
|
37
|
+
default: string;
|
|
38
|
+
type: string;
|
|
39
|
+
alias: string;
|
|
40
|
+
};
|
|
41
|
+
static all: {
|
|
42
|
+
help: string;
|
|
43
|
+
default: boolean;
|
|
44
|
+
type: string;
|
|
45
|
+
alias: string;
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* @param {Partial<ValidateCommand>} [data]
|
|
49
|
+
* @param {Partial<import('@nan0web/ui').ModelAsAppOptions>} [options]
|
|
50
|
+
*/
|
|
51
|
+
constructor(data?: Partial<ValidateCommand>, options?: Partial<import("@nan0web/ui").ModelAsAppOptions>);
|
|
52
|
+
/** @type {string} */ target: string;
|
|
53
|
+
/** @type {'text' | 'json' | 'nan0' | 'csv'} */ format: "text" | "json" | "nan0" | "csv";
|
|
54
|
+
/** @type {string} */ output: string;
|
|
55
|
+
/** @type {string} */ registryFile: string;
|
|
56
|
+
/** @type {boolean} */ all: boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Execute release validation and format rendering
|
|
59
|
+
* @returns {AsyncGenerator<import('@nan0web/ui').Intent, { success: boolean, releases: any[], output: string }, any>}
|
|
60
|
+
*/
|
|
61
|
+
run(): AsyncGenerator<import("@nan0web/ui").Intent, {
|
|
62
|
+
success: boolean;
|
|
63
|
+
releases: any[];
|
|
64
|
+
output: string;
|
|
65
|
+
}, any>;
|
|
66
|
+
#private;
|
|
67
|
+
}
|
|
68
|
+
export default ValidateCommand;
|
|
69
|
+
import { ModelAsApp } from '@nan0web/ui';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ViewCommand - ModelAsApp Subcommand to inspect and view release details across multimodal interfaces.
|
|
3
|
+
*/
|
|
4
|
+
export default class ViewCommand extends ModelAsApp {
|
|
5
|
+
static alias: string;
|
|
6
|
+
static UI: {
|
|
7
|
+
title: string;
|
|
8
|
+
help: string;
|
|
9
|
+
noReleases: string;
|
|
10
|
+
selectPrompt: string;
|
|
11
|
+
};
|
|
12
|
+
static version: {
|
|
13
|
+
help: string;
|
|
14
|
+
positional: boolean;
|
|
15
|
+
type: string;
|
|
16
|
+
default: string;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* @param {Partial<ViewCommand>} [data]
|
|
20
|
+
* @param {import('@nan0web/types').ModelOptions} [options]
|
|
21
|
+
*/
|
|
22
|
+
constructor(data?: Partial<ViewCommand>, options?: import("@nan0web/types").ModelOptions);
|
|
23
|
+
/** @type {string} */
|
|
24
|
+
version: string;
|
|
25
|
+
run(): AsyncGenerator<import("@nan0web/ui/src/core/Intent.js").ShowIntent, import("@nan0web/ui/src/core/Intent.js").ResultIntent, unknown>;
|
|
26
|
+
}
|
|
27
|
+
import { ModelAsApp } from '@nan0web/ui';
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WebCommand - ModelAsApp Subcommand to generate and launch PM-as-Code Web Dashboard.
|
|
3
|
+
*/
|
|
4
|
+
export default class WebCommand extends ModelAsApp {
|
|
5
|
+
static alias: string;
|
|
6
|
+
static UI: {
|
|
7
|
+
title: string;
|
|
8
|
+
help: string;
|
|
9
|
+
loading: string;
|
|
10
|
+
generated: string;
|
|
11
|
+
serving: string;
|
|
12
|
+
};
|
|
13
|
+
static registryFile: {
|
|
14
|
+
help: string;
|
|
15
|
+
default: string;
|
|
16
|
+
type: string;
|
|
17
|
+
alias: string;
|
|
18
|
+
};
|
|
19
|
+
static out: {
|
|
20
|
+
help: string;
|
|
21
|
+
default: string;
|
|
22
|
+
type: string;
|
|
23
|
+
alias: string;
|
|
24
|
+
};
|
|
25
|
+
static port: {
|
|
26
|
+
help: string;
|
|
27
|
+
default: number;
|
|
28
|
+
type: string;
|
|
29
|
+
alias: string;
|
|
30
|
+
};
|
|
31
|
+
static open: {
|
|
32
|
+
help: string;
|
|
33
|
+
default: boolean;
|
|
34
|
+
type: string;
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* @param {Partial<WebCommand>} [data]
|
|
38
|
+
* @param {import('@nan0web/types').ModelOptions} [options]
|
|
39
|
+
*/
|
|
40
|
+
constructor(data?: Partial<WebCommand>, options?: import("@nan0web/types").ModelOptions);
|
|
41
|
+
/** @type {string} */ registryFile: string;
|
|
42
|
+
/** @type {string} */ out: string;
|
|
43
|
+
/** @type {number} */ port: number;
|
|
44
|
+
/** @type {boolean} */ open: boolean;
|
|
45
|
+
run(): AsyncGenerator<import("@nan0web/ui/src/core/Intent.js").ProgressIntent | import("@nan0web/ui/src/core/Intent.js").ShowIntent, import("@nan0web/ui/src/core/Intent.js").ResultIntent, unknown>;
|
|
46
|
+
}
|
|
47
|
+
import { ModelAsApp } from '@nan0web/ui';
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @typedef {Object} ReleaseDiagnostic
|
|
3
|
+
* @property {'error' | 'warning' | 'info'} level
|
|
4
|
+
* @property {string} code
|
|
5
|
+
* @property {string} [check]
|
|
6
|
+
* @property {string} [file]
|
|
7
|
+
* @property {string} error
|
|
8
|
+
* @property {string} [suggestion]
|
|
9
|
+
* @property {string} [fix]
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* ReleaseAuditor — Architecture auditor and validator for PM-as-Code release structures.
|
|
13
|
+
*/
|
|
14
|
+
export class ReleaseAuditor extends AuditorModel {
|
|
15
|
+
static changed: {
|
|
16
|
+
help: string;
|
|
17
|
+
default: boolean;
|
|
18
|
+
type: string;
|
|
19
|
+
alias: string;
|
|
20
|
+
};
|
|
21
|
+
static all: {
|
|
22
|
+
help: string;
|
|
23
|
+
default: boolean;
|
|
24
|
+
type: string;
|
|
25
|
+
alias: string;
|
|
26
|
+
};
|
|
27
|
+
static registryFile: {
|
|
28
|
+
help: string;
|
|
29
|
+
default: string;
|
|
30
|
+
type: string;
|
|
31
|
+
alias: string;
|
|
32
|
+
};
|
|
33
|
+
static UI: {
|
|
34
|
+
title: string;
|
|
35
|
+
header: string;
|
|
36
|
+
skipped: string;
|
|
37
|
+
missingPackageJson: string;
|
|
38
|
+
noReleasesDir: string;
|
|
39
|
+
releasesFound: string;
|
|
40
|
+
releaseHeader: string;
|
|
41
|
+
releaseDocCompleted: string;
|
|
42
|
+
missingReleaseDoc: string;
|
|
43
|
+
missingUserDoc: string;
|
|
44
|
+
incompleteUserMetrics: string;
|
|
45
|
+
userMetricsValid: string;
|
|
46
|
+
ambiguousContracts: string;
|
|
47
|
+
missingContract: string;
|
|
48
|
+
activeContractWip: string;
|
|
49
|
+
sealedRegressionClosed: string;
|
|
50
|
+
orphanFile: string;
|
|
51
|
+
summary: string;
|
|
52
|
+
Diagnostics: {
|
|
53
|
+
MISSING_PACKAGE_JSON: {
|
|
54
|
+
level: string;
|
|
55
|
+
code: string;
|
|
56
|
+
message: string;
|
|
57
|
+
fix: string;
|
|
58
|
+
};
|
|
59
|
+
MISSING_RELEASES_DIR: {
|
|
60
|
+
level: string;
|
|
61
|
+
code: string;
|
|
62
|
+
message: string;
|
|
63
|
+
fix: string;
|
|
64
|
+
};
|
|
65
|
+
MISSING_RELEASE_MD: {
|
|
66
|
+
level: string;
|
|
67
|
+
code: string;
|
|
68
|
+
message: string;
|
|
69
|
+
fix: string;
|
|
70
|
+
};
|
|
71
|
+
MISSING_USER_MD: {
|
|
72
|
+
level: string;
|
|
73
|
+
code: string;
|
|
74
|
+
message: string;
|
|
75
|
+
fix: string;
|
|
76
|
+
};
|
|
77
|
+
INCOMPLETE_USER_METRICS: {
|
|
78
|
+
level: string;
|
|
79
|
+
code: string;
|
|
80
|
+
message: string;
|
|
81
|
+
fix: string;
|
|
82
|
+
};
|
|
83
|
+
AMBIGUOUS_CONTRACTS: {
|
|
84
|
+
level: string;
|
|
85
|
+
code: string;
|
|
86
|
+
message: string;
|
|
87
|
+
fix: string;
|
|
88
|
+
};
|
|
89
|
+
MISSING_CONTRACT: {
|
|
90
|
+
level: string;
|
|
91
|
+
code: string;
|
|
92
|
+
message: string;
|
|
93
|
+
fix: string;
|
|
94
|
+
};
|
|
95
|
+
ORPHAN_RELEASE_FILE: {
|
|
96
|
+
level: string;
|
|
97
|
+
code: string;
|
|
98
|
+
message: string;
|
|
99
|
+
fix: string;
|
|
100
|
+
};
|
|
101
|
+
PROCEDURAL_RELEASE_ARTIFACT: {
|
|
102
|
+
level: string;
|
|
103
|
+
code: string;
|
|
104
|
+
message: string;
|
|
105
|
+
fix: string;
|
|
106
|
+
};
|
|
107
|
+
};
|
|
108
|
+
};
|
|
109
|
+
/**
|
|
110
|
+
* @param {Partial<ReleaseAuditor> | Record<string, any>} [data={}]
|
|
111
|
+
* @param {Partial<import('@nan0web/ui').ModelAsAppOptions>} [options={}]
|
|
112
|
+
*/
|
|
113
|
+
constructor(data?: Partial<ReleaseAuditor> | Record<string, any>, options?: Partial<import("@nan0web/ui").ModelAsAppOptions>);
|
|
114
|
+
/** @type {boolean} */ changed: boolean;
|
|
115
|
+
/** @type {boolean} */ all: boolean;
|
|
116
|
+
/** @type {string} */ registryFile: string;
|
|
117
|
+
/**
|
|
118
|
+
* Runs the PM-as-Code release audit.
|
|
119
|
+
* @returns {AsyncGenerator<import('@nan0web/ui').Intent, any, any>}
|
|
120
|
+
*/
|
|
121
|
+
run(): AsyncGenerator<import("@nan0web/ui").Intent, any, any>;
|
|
122
|
+
#private;
|
|
123
|
+
}
|
|
124
|
+
export default ReleaseAuditor;
|
|
125
|
+
export type ReleaseDiagnostic = {
|
|
126
|
+
level: "error" | "warning" | "info";
|
|
127
|
+
code: string;
|
|
128
|
+
check?: string | undefined;
|
|
129
|
+
file?: string | undefined;
|
|
130
|
+
error: string;
|
|
131
|
+
suggestion?: string | undefined;
|
|
132
|
+
fix?: string | undefined;
|
|
133
|
+
};
|
|
134
|
+
import { AuditorModel } from '@nan0web/inspect/domain/AuditorModel';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export class ReleaseIssueModel extends Model {
|
|
2
|
+
static level: {
|
|
3
|
+
type: string;
|
|
4
|
+
default: string;
|
|
5
|
+
};
|
|
6
|
+
static code: {
|
|
7
|
+
type: string;
|
|
8
|
+
};
|
|
9
|
+
static message: {
|
|
10
|
+
type: string;
|
|
11
|
+
required: boolean;
|
|
12
|
+
};
|
|
13
|
+
static source: {
|
|
14
|
+
type: string;
|
|
15
|
+
};
|
|
16
|
+
static file: {
|
|
17
|
+
type: string;
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* @param {Partial<ReleaseIssueModel>} [data={}]
|
|
21
|
+
* @param {Partial<import('@nan0web/types').ModelOptions>} [options={}]
|
|
22
|
+
*/
|
|
23
|
+
constructor(data?: Partial<ReleaseIssueModel>, options?: Partial<import("@nan0web/types").ModelOptions>);
|
|
24
|
+
/** @type { 'error' | 'warning' | 'info' } Level of issue */
|
|
25
|
+
level: "error" | "warning" | "info";
|
|
26
|
+
/** @type {string} Issue code */
|
|
27
|
+
code: string;
|
|
28
|
+
/** @type {string} Issue message */
|
|
29
|
+
message: string;
|
|
30
|
+
/** @type {string} Issue source */
|
|
31
|
+
source: string;
|
|
32
|
+
/** @type {string} Issue file */
|
|
33
|
+
file: string;
|
|
34
|
+
}
|
|
35
|
+
import { Model } from '@nan0web/types';
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export class ReleaseMemberModel extends Model {
|
|
2
|
+
static role: {
|
|
3
|
+
type: string;
|
|
4
|
+
required: boolean;
|
|
5
|
+
};
|
|
6
|
+
static name: {
|
|
7
|
+
type: string;
|
|
8
|
+
required: boolean;
|
|
9
|
+
};
|
|
10
|
+
static handle: {
|
|
11
|
+
type: string;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* @param {Partial<ReleaseMemberModel>} [data={}]
|
|
15
|
+
* @param {Partial<import('@nan0web/types').ModelOptions>} [options={}]
|
|
16
|
+
*/
|
|
17
|
+
constructor(data?: Partial<ReleaseMemberModel>, options?: Partial<import("@nan0web/types").ModelOptions>);
|
|
18
|
+
/** @type {string} Role / Position (Посада) */
|
|
19
|
+
role: string;
|
|
20
|
+
/** @type {string} Full Name (Ім'я) */
|
|
21
|
+
name: string;
|
|
22
|
+
/** @type {string} Login / Handle (Логін без @) */
|
|
23
|
+
handle: string;
|
|
24
|
+
}
|
|
25
|
+
import { Model } from '@nan0web/types';
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
export class ReleaseModel extends Model {
|
|
2
|
+
static version: {
|
|
3
|
+
type: string;
|
|
4
|
+
required: boolean;
|
|
5
|
+
};
|
|
6
|
+
static title: {
|
|
7
|
+
type: string;
|
|
8
|
+
required: boolean;
|
|
9
|
+
};
|
|
10
|
+
static status: {
|
|
11
|
+
type: string;
|
|
12
|
+
default: string;
|
|
13
|
+
};
|
|
14
|
+
static type: {
|
|
15
|
+
type: string;
|
|
16
|
+
default: string;
|
|
17
|
+
};
|
|
18
|
+
static summary: {
|
|
19
|
+
type: string;
|
|
20
|
+
};
|
|
21
|
+
static epic: {
|
|
22
|
+
type: string;
|
|
23
|
+
};
|
|
24
|
+
static sprint: {
|
|
25
|
+
type: string;
|
|
26
|
+
};
|
|
27
|
+
static tracker: {
|
|
28
|
+
type: string;
|
|
29
|
+
};
|
|
30
|
+
static team: {
|
|
31
|
+
type: string;
|
|
32
|
+
itemType: typeof ReleaseMemberModel;
|
|
33
|
+
default: never[];
|
|
34
|
+
};
|
|
35
|
+
static tasks: {
|
|
36
|
+
type: string;
|
|
37
|
+
itemType: typeof ReleaseTaskModel;
|
|
38
|
+
default: never[];
|
|
39
|
+
};
|
|
40
|
+
static criteria: {
|
|
41
|
+
type: string;
|
|
42
|
+
itemType: typeof ReleaseTaskModel;
|
|
43
|
+
default: never[];
|
|
44
|
+
};
|
|
45
|
+
static parity: {
|
|
46
|
+
type: string;
|
|
47
|
+
itemType: typeof ReleaseParityModel;
|
|
48
|
+
default: never[];
|
|
49
|
+
};
|
|
50
|
+
static issues: {
|
|
51
|
+
type: string;
|
|
52
|
+
itemType: typeof ReleaseIssueModel;
|
|
53
|
+
default: never[];
|
|
54
|
+
};
|
|
55
|
+
static files: {
|
|
56
|
+
type: string;
|
|
57
|
+
default: never[];
|
|
58
|
+
};
|
|
59
|
+
static meta: {
|
|
60
|
+
type: string;
|
|
61
|
+
default: {};
|
|
62
|
+
};
|
|
63
|
+
static SECTIONS: {
|
|
64
|
+
summary: string[];
|
|
65
|
+
team: string[];
|
|
66
|
+
tasks: string[];
|
|
67
|
+
criteria: string[];
|
|
68
|
+
parity: string[];
|
|
69
|
+
issues: string[];
|
|
70
|
+
artifacts: string[];
|
|
71
|
+
};
|
|
72
|
+
/**
|
|
73
|
+
* Extend section synonyms dictionary with custom locale mappings.
|
|
74
|
+
* @param {Record<string, string[]>} localeMap
|
|
75
|
+
*/
|
|
76
|
+
static addLocaleSections(localeMap: Record<string, string[]>): void;
|
|
77
|
+
/**
|
|
78
|
+
* @param {Partial<ReleaseModel>} [data={}]
|
|
79
|
+
* @param {Partial<import('@nan0web/types').ModelOptions>} [options={}]
|
|
80
|
+
*/
|
|
81
|
+
constructor(data?: Partial<ReleaseModel>, options?: Partial<import("@nan0web/types").ModelOptions>);
|
|
82
|
+
/** @type {string} Release version */
|
|
83
|
+
version: string;
|
|
84
|
+
/** @type {string} Release title */
|
|
85
|
+
title: string;
|
|
86
|
+
/** @type {'todo' | 'work' | 'done' | 'fail'} Release status */
|
|
87
|
+
status: "todo" | "work" | "done" | "fail";
|
|
88
|
+
/** @type {'major' | 'minor' | 'patch' | 'hotfix' | 'chore'} Release type */
|
|
89
|
+
type: "major" | "minor" | "patch" | "hotfix" | "chore";
|
|
90
|
+
/** @type {string} Release summary / description */
|
|
91
|
+
summary: string;
|
|
92
|
+
/** @type {string} Epic identifier */
|
|
93
|
+
epic: string;
|
|
94
|
+
/** @type {string} Sprint name */
|
|
95
|
+
sprint: string;
|
|
96
|
+
/** @type {string} External tracker URL template */
|
|
97
|
+
tracker: string;
|
|
98
|
+
/** @type {ReleaseMemberModel[]} Team members (ролі, імена, логіни) */
|
|
99
|
+
team: ReleaseMemberModel[];
|
|
100
|
+
/** @type {ReleaseTaskModel[]} Tasks in scope */
|
|
101
|
+
tasks: ReleaseTaskModel[];
|
|
102
|
+
/** @type {ReleaseTaskModel[]} Acceptance criteria (DoD) */
|
|
103
|
+
criteria: ReleaseTaskModel[];
|
|
104
|
+
/** @type {ReleaseParityModel[]} Data parity verification items */
|
|
105
|
+
parity: ReleaseParityModel[];
|
|
106
|
+
/** @type {ReleaseIssueModel[]} Issues and risks */
|
|
107
|
+
issues: ReleaseIssueModel[];
|
|
108
|
+
/** @type {Array<{file: string, size?: string, hash?: string, type?: string}>} Artifact files */
|
|
109
|
+
files: Array<{
|
|
110
|
+
file: string;
|
|
111
|
+
size?: string;
|
|
112
|
+
hash?: string;
|
|
113
|
+
type?: string;
|
|
114
|
+
}>;
|
|
115
|
+
/** @type {Record<string, any>} Frontmatter / metadata */
|
|
116
|
+
meta: Record<string, any>;
|
|
117
|
+
}
|
|
118
|
+
import { Model } from '@nan0web/types';
|
|
119
|
+
import { ReleaseMemberModel } from './ReleaseMemberModel.js';
|
|
120
|
+
import { ReleaseTaskModel } from './ReleaseTaskModel.js';
|
|
121
|
+
import { ReleaseParityModel } from './ReleaseParityModel.js';
|
|
122
|
+
import { ReleaseIssueModel } from './ReleaseIssueModel.js';
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export class ReleaseParityModel extends Model {
|
|
2
|
+
static collection: {
|
|
3
|
+
type: string;
|
|
4
|
+
required: boolean;
|
|
5
|
+
};
|
|
6
|
+
static expected: {
|
|
7
|
+
type: string;
|
|
8
|
+
required: boolean;
|
|
9
|
+
};
|
|
10
|
+
static actual: {
|
|
11
|
+
type: string;
|
|
12
|
+
required: boolean;
|
|
13
|
+
};
|
|
14
|
+
static synced: {
|
|
15
|
+
type: string;
|
|
16
|
+
default: boolean;
|
|
17
|
+
};
|
|
18
|
+
static comment: {
|
|
19
|
+
type: string;
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* @param {Partial<ReleaseParityModel>} [data={}]
|
|
23
|
+
* @param {Partial<import('@nan0web/types').ModelOptions>} [options={}]
|
|
24
|
+
*/
|
|
25
|
+
constructor(data?: Partial<ReleaseParityModel>, options?: Partial<import("@nan0web/types").ModelOptions>);
|
|
26
|
+
/** @type {string} Collection name */
|
|
27
|
+
collection: string;
|
|
28
|
+
/** @type {number} Expected count */
|
|
29
|
+
expected: number;
|
|
30
|
+
/** @type {number} Actual count */
|
|
31
|
+
actual: number;
|
|
32
|
+
/** @type {boolean} Synced flag */
|
|
33
|
+
synced: boolean;
|
|
34
|
+
/** @type {string} Audit comment */
|
|
35
|
+
comment: string;
|
|
36
|
+
}
|
|
37
|
+
import { Model } from '@nan0web/types';
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
export class ReleaseTaskModel extends Model {
|
|
2
|
+
static id: {
|
|
3
|
+
type: string;
|
|
4
|
+
required: boolean;
|
|
5
|
+
};
|
|
6
|
+
static title: {
|
|
7
|
+
type: string;
|
|
8
|
+
required: boolean;
|
|
9
|
+
};
|
|
10
|
+
static status: {
|
|
11
|
+
type: string;
|
|
12
|
+
default: string;
|
|
13
|
+
};
|
|
14
|
+
static assignee: {
|
|
15
|
+
type: string;
|
|
16
|
+
};
|
|
17
|
+
static estimateHours: {
|
|
18
|
+
type: string;
|
|
19
|
+
};
|
|
20
|
+
static spentHours: {
|
|
21
|
+
type: string;
|
|
22
|
+
};
|
|
23
|
+
static notes: {
|
|
24
|
+
type: string;
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* @param {Partial<ReleaseTaskModel>} [data={}]
|
|
28
|
+
* @param {Partial<import('@nan0web/types').ModelOptions>} [options={}]
|
|
29
|
+
*/
|
|
30
|
+
constructor(data?: Partial<ReleaseTaskModel>, options?: Partial<import("@nan0web/types").ModelOptions>);
|
|
31
|
+
/** @type {string} Task ID */
|
|
32
|
+
id: string;
|
|
33
|
+
/** @type {string} Task Title */
|
|
34
|
+
title: string;
|
|
35
|
+
/** @type {'todo' | 'work' | 'done' | 'fail'} Task Status */
|
|
36
|
+
status: "todo" | "work" | "done" | "fail";
|
|
37
|
+
/** @type {string} Assignee */
|
|
38
|
+
assignee: string;
|
|
39
|
+
/** @type {number} Estimated Hours */
|
|
40
|
+
estimateHours: number;
|
|
41
|
+
/** @type {number} Spent Hours */
|
|
42
|
+
spentHours: number;
|
|
43
|
+
/** @type {string} Notes */
|
|
44
|
+
notes: string;
|
|
45
|
+
}
|
|
46
|
+
import { Model } from '@nan0web/types';
|