perttool 0.1.0 → 0.3.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/CHANGELOG.md +112 -33
- package/README.md +206 -111
- package/dist/analysis/temporal-deadline.d.ts +59 -0
- package/dist/analysis/temporal-deadline.d.ts.map +1 -0
- package/dist/analysis/temporal-deadline.js +387 -0
- package/dist/analysis/temporal-deadline.js.map +1 -0
- package/dist/analysis/temporal-precedence.d.ts +45 -0
- package/dist/analysis/temporal-precedence.d.ts.map +1 -0
- package/dist/analysis/temporal-precedence.js +123 -0
- package/dist/analysis/temporal-precedence.js.map +1 -0
- package/dist/analysis/temporal-resource.d.ts +66 -0
- package/dist/analysis/temporal-resource.d.ts.map +1 -0
- package/dist/analysis/temporal-resource.js +292 -0
- package/dist/analysis/temporal-resource.js.map +1 -0
- package/dist/application/analyze.js +5 -5
- package/dist/application/analyze.js.map +1 -1
- package/dist/application/check.d.ts +16 -0
- package/dist/application/check.d.ts.map +1 -1
- package/dist/application/check.js +51 -0
- package/dist/application/check.js.map +1 -1
- package/dist/application/contract4.d.ts +17 -0
- package/dist/application/contract4.d.ts.map +1 -0
- package/dist/application/contract4.js +27 -0
- package/dist/application/contract4.js.map +1 -0
- package/dist/application/init.d.ts +43 -0
- package/dist/application/init.d.ts.map +1 -0
- package/dist/application/init.js +226 -0
- package/dist/application/init.js.map +1 -0
- package/dist/application/mutate.d.ts +19 -0
- package/dist/application/mutate.d.ts.map +1 -1
- package/dist/application/mutate.js +47 -25
- package/dist/application/mutate.js.map +1 -1
- package/dist/application/next.d.ts +2 -0
- package/dist/application/next.d.ts.map +1 -1
- package/dist/application/next.js +7 -1
- package/dist/application/next.js.map +1 -1
- package/dist/application/project.d.ts +3 -1
- package/dist/application/project.d.ts.map +1 -1
- package/dist/application/project.js +2 -1
- package/dist/application/project.js.map +1 -1
- package/dist/application/target-check.d.ts +34 -0
- package/dist/application/target-check.d.ts.map +1 -0
- package/dist/application/target-check.js +90 -0
- package/dist/application/target-check.js.map +1 -0
- package/dist/application/target-grammar-boundary.d.ts +22 -0
- package/dist/application/target-grammar-boundary.d.ts.map +1 -0
- package/dist/application/target-grammar-boundary.js +91 -0
- package/dist/application/target-grammar-boundary.js.map +1 -0
- package/dist/application/target-mutate.d.ts +8 -0
- package/dist/application/target-mutate.d.ts.map +1 -0
- package/dist/application/target-mutate.js +56 -0
- package/dist/application/target-mutate.js.map +1 -0
- package/dist/application/target-project.d.ts +28 -0
- package/dist/application/target-project.d.ts.map +1 -0
- package/dist/application/target-project.js +60 -0
- package/dist/application/target-project.js.map +1 -0
- package/dist/application/target-temporal-analysis.d.ts +138 -0
- package/dist/application/target-temporal-analysis.d.ts.map +1 -0
- package/dist/application/target-temporal-analysis.js +409 -0
- package/dist/application/target-temporal-analysis.js.map +1 -0
- package/dist/application/target-temporal-input.d.ts +86 -0
- package/dist/application/target-temporal-input.d.ts.map +1 -0
- package/dist/application/target-temporal-input.js +238 -0
- package/dist/application/target-temporal-input.js.map +1 -0
- package/dist/application/target-unit-migration-candidate.d.ts +60 -0
- package/dist/application/target-unit-migration-candidate.d.ts.map +1 -0
- package/dist/application/target-unit-migration-candidate.js +290 -0
- package/dist/application/target-unit-migration-candidate.js.map +1 -0
- package/dist/application/target-unit-migration-request.d.ts +35 -0
- package/dist/application/target-unit-migration-request.d.ts.map +1 -0
- package/dist/application/target-unit-migration-request.js +68 -0
- package/dist/application/target-unit-migration-request.js.map +1 -0
- package/dist/application/target-unit-migration-result.d.ts +66 -0
- package/dist/application/target-unit-migration-result.d.ts.map +1 -0
- package/dist/application/target-unit-migration-result.js +86 -0
- package/dist/application/target-unit-migration-result.js.map +1 -0
- package/dist/application/unit-migration.d.ts +13 -0
- package/dist/application/unit-migration.d.ts.map +1 -0
- package/dist/application/unit-migration.js +9 -0
- package/dist/application/unit-migration.js.map +1 -0
- package/dist/cli.js +494 -383
- package/dist/cli.js.map +1 -1
- package/dist/command/discovery.d.ts +30 -0
- package/dist/command/discovery.d.ts.map +1 -0
- package/dist/command/discovery.js +752 -0
- package/dist/command/discovery.js.map +1 -0
- package/dist/command/registry.d.ts +84 -0
- package/dist/command/registry.d.ts.map +1 -0
- package/dist/command/registry.js +964 -0
- package/dist/command/registry.js.map +1 -0
- package/dist/command/usage.d.ts +42 -0
- package/dist/command/usage.d.ts.map +1 -0
- package/dist/command/usage.js +337 -0
- package/dist/command/usage.js.map +1 -0
- package/dist/conversion/mermaid-import.js +56 -56
- package/dist/conversion/mermaid-import.js.map +1 -1
- package/dist/conversion/mermaid.js +1 -1
- package/dist/conversion/mermaid.js.map +1 -1
- package/dist/formatter/source-formatter.d.ts +12 -0
- package/dist/formatter/source-formatter.d.ts.map +1 -1
- package/dist/formatter/source-formatter.js +48 -6
- package/dist/formatter/source-formatter.js.map +1 -1
- package/dist/formatter/target-source-formatter.d.ts +8 -0
- package/dist/formatter/target-source-formatter.d.ts.map +1 -0
- package/dist/formatter/target-source-formatter.js +36 -0
- package/dist/formatter/target-source-formatter.js.map +1 -0
- package/dist/help/guide.d.ts +12 -0
- package/dist/help/guide.d.ts.map +1 -0
- package/dist/help/guide.js +103 -0
- package/dist/help/guide.js.map +1 -0
- package/dist/help/registry.d.ts +0 -6
- package/dist/help/registry.d.ts.map +1 -1
- package/dist/help/registry.js +186 -86
- package/dist/help/registry.js.map +1 -1
- package/dist/index.d.ts +20 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -3
- package/dist/index.js.map +1 -1
- package/dist/io/safe-write.d.ts +7 -0
- package/dist/io/safe-write.d.ts.map +1 -1
- package/dist/io/safe-write.js +36 -27
- package/dist/io/safe-write.js.map +1 -1
- package/dist/io/target-safe-write.d.ts +7 -0
- package/dist/io/target-safe-write.d.ts.map +1 -0
- package/dist/io/target-safe-write.js +33 -0
- package/dist/io/target-safe-write.js.map +1 -0
- package/dist/migration/conversion.d.ts +40 -0
- package/dist/migration/conversion.d.ts.map +1 -0
- package/dist/migration/conversion.js +106 -0
- package/dist/migration/conversion.js.map +1 -0
- package/dist/migration/grammar-boundary.d.ts +20 -0
- package/dist/migration/grammar-boundary.d.ts.map +1 -0
- package/dist/migration/grammar-boundary.js +92 -0
- package/dist/migration/grammar-boundary.js.map +1 -0
- package/dist/migration/request.d.ts +79 -0
- package/dist/migration/request.d.ts.map +1 -0
- package/dist/migration/request.js +308 -0
- package/dist/migration/request.js.map +1 -0
- package/dist/model/calendar-arithmetic.d.ts +46 -0
- package/dist/model/calendar-arithmetic.d.ts.map +1 -0
- package/dist/model/calendar-arithmetic.js +236 -0
- package/dist/model/calendar-arithmetic.js.map +1 -0
- package/dist/model/calendar.d.ts +22 -0
- package/dist/model/calendar.d.ts.map +1 -0
- package/dist/model/calendar.js +83 -0
- package/dist/model/calendar.js.map +1 -0
- package/dist/model/declaration-fields.d.ts +15 -0
- package/dist/model/declaration-fields.d.ts.map +1 -0
- package/dist/model/declaration-fields.js +54 -0
- package/dist/model/declaration-fields.js.map +1 -0
- package/dist/model/exact-duration-source.d.ts +10 -0
- package/dist/model/exact-duration-source.d.ts.map +1 -0
- package/dist/model/exact-duration-source.js +69 -0
- package/dist/model/exact-duration-source.js.map +1 -0
- package/dist/model/rational.d.ts +2 -2
- package/dist/model/rational.d.ts.map +1 -1
- package/dist/model/rational.js +3 -1
- package/dist/model/rational.js.map +1 -1
- package/dist/model/syntax.d.ts +9 -2
- package/dist/model/syntax.d.ts.map +1 -1
- package/dist/model/syntax.js +20 -4
- package/dist/model/syntax.js.map +1 -1
- package/dist/model/target-calendar.d.ts +25 -0
- package/dist/model/target-calendar.d.ts.map +1 -0
- package/dist/model/target-calendar.js +56 -0
- package/dist/model/target-calendar.js.map +1 -0
- package/dist/mutation/advance.d.ts.map +1 -1
- package/dist/mutation/advance.js +21 -4
- package/dist/mutation/advance.js.map +1 -1
- package/dist/mutation/gate.d.ts +5 -0
- package/dist/mutation/gate.d.ts.map +1 -0
- package/dist/mutation/gate.js +156 -0
- package/dist/mutation/gate.js.map +1 -0
- package/dist/mutation/milestone.d.ts +10 -1
- package/dist/mutation/milestone.d.ts.map +1 -1
- package/dist/mutation/milestone.js +104 -48
- package/dist/mutation/milestone.js.map +1 -1
- package/dist/mutation/project.d.ts +7 -1
- package/dist/mutation/project.d.ts.map +1 -1
- package/dist/mutation/project.js +32 -19
- package/dist/mutation/project.js.map +1 -1
- package/dist/mutation/resource.js +22 -22
- package/dist/mutation/resource.js.map +1 -1
- package/dist/mutation/target-types.d.ts +42 -0
- package/dist/mutation/target-types.d.ts.map +1 -0
- package/dist/mutation/target-types.js +2 -0
- package/dist/mutation/target-types.js.map +1 -0
- package/dist/mutation/task.d.ts +12 -1
- package/dist/mutation/task.d.ts.map +1 -1
- package/dist/mutation/task.js +148 -89
- package/dist/mutation/task.js.map +1 -1
- package/dist/mutation/types.d.ts +34 -3
- package/dist/mutation/types.d.ts.map +1 -1
- package/dist/parser/document-parser.d.ts +14 -0
- package/dist/parser/document-parser.d.ts.map +1 -1
- package/dist/parser/document-parser.js +159 -55
- package/dist/parser/document-parser.js.map +1 -1
- package/dist/recommendation/override-types.d.ts +2 -2
- package/dist/recommendation/override.d.ts +2 -2
- package/dist/recommendation/override.d.ts.map +1 -1
- package/dist/recommendation/override.js +49 -12
- package/dist/recommendation/override.js.map +1 -1
- package/dist/semantic/target-validator.d.ts +36 -0
- package/dist/semantic/target-validator.d.ts.map +1 -0
- package/dist/semantic/target-validator.js +87 -0
- package/dist/semantic/target-validator.js.map +1 -0
- package/dist/semantic/validator.d.ts +2 -0
- package/dist/semantic/validator.d.ts.map +1 -1
- package/dist/semantic/validator.js +90 -45
- package/dist/semantic/validator.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +3 -3
|
@@ -1,74 +1,103 @@
|
|
|
1
|
+
import { GRAMMAR_1_DECLARATION_FIELD_ORDER, TARGET_GRAMMAR_2_DECLARATION_FIELD_ORDER, } from "../model/declaration-fields.js";
|
|
1
2
|
import { EntityEditor, stringList } from "./entity-editor.js";
|
|
2
3
|
import { mutationDiagnostic } from "./diagnostics.js";
|
|
3
4
|
import { appendDeclarationEdit, deleteDeclarationEdit, majorLineEnding, serializeTags, serializeTextField, splitPhysicalLines } from "./source.js";
|
|
4
|
-
const
|
|
5
|
+
export const ACTIVE_MILESTONE_MUTATION_PROFILE = Object.freeze({
|
|
6
|
+
fieldOrder: GRAMMAR_1_DECLARATION_FIELD_ORDER.milestone,
|
|
7
|
+
temporalFields: false,
|
|
8
|
+
});
|
|
9
|
+
export const TARGET_MILESTONE_MUTATION_PROFILE = Object.freeze({
|
|
10
|
+
fieldOrder: TARGET_GRAMMAR_2_DECLARATION_FIELD_ORDER.milestone,
|
|
11
|
+
temporalFields: true,
|
|
12
|
+
});
|
|
5
13
|
const states = new Set(["planned", "reached"]);
|
|
6
|
-
const clearableFields = new Set(["description", "state", "tags"]);
|
|
7
14
|
function validStringArray(value) {
|
|
8
15
|
return Array.isArray(value) && value.every((item) => typeof item === "string");
|
|
9
16
|
}
|
|
10
17
|
function requestShapeError(value) {
|
|
11
18
|
if (value === null || typeof value !== "object" || Array.isArray(value)) {
|
|
12
|
-
return "milestone mutation request
|
|
19
|
+
return "milestone mutation request is not an object";
|
|
13
20
|
}
|
|
14
21
|
const request = value;
|
|
15
22
|
const kind = request["kind"];
|
|
16
23
|
if (kind !== "milestone.add" && kind !== "milestone.set" && kind !== "milestone.remove") {
|
|
17
|
-
return "milestone mutation kind
|
|
24
|
+
return "milestone mutation kind is unsupported";
|
|
18
25
|
}
|
|
19
26
|
if (typeof request["id"] !== "string")
|
|
20
|
-
return "milestone id
|
|
27
|
+
return "milestone id is not a string";
|
|
21
28
|
const fieldsByKind = {
|
|
22
29
|
"milestone.add": new Set(["kind", "id", "milestone"]),
|
|
23
30
|
"milestone.set": new Set(["kind", "id", "set", "clear", "addTags", "removeTags"]),
|
|
24
31
|
"milestone.remove": new Set(["kind", "id"]),
|
|
25
32
|
};
|
|
26
33
|
if (Object.keys(request).some((name) => !fieldsByKind[kind].has(name))) {
|
|
27
|
-
return `${kind} request
|
|
34
|
+
return `${kind} request contains unsupported fields`;
|
|
28
35
|
}
|
|
29
36
|
return undefined;
|
|
30
37
|
}
|
|
31
|
-
function definitionError(value) {
|
|
38
|
+
function definitionError(value, profile) {
|
|
32
39
|
if (value === null || typeof value !== "object" || Array.isArray(value)) {
|
|
33
|
-
return "milestone definition
|
|
40
|
+
return "milestone definition is not an object";
|
|
34
41
|
}
|
|
35
42
|
const milestone = value;
|
|
36
|
-
|
|
37
|
-
|
|
43
|
+
const knownFields = new Set([
|
|
44
|
+
"title",
|
|
45
|
+
"description",
|
|
46
|
+
"state",
|
|
47
|
+
"tags",
|
|
48
|
+
...(profile.temporalFields ? ["deadline"] : []),
|
|
49
|
+
]);
|
|
50
|
+
if (Object.keys(milestone).some((name) => !knownFields.has(name))) {
|
|
51
|
+
return "milestone definition contains unsupported fields";
|
|
38
52
|
}
|
|
39
53
|
if (typeof milestone["title"] !== "string")
|
|
40
|
-
return "milestone title
|
|
54
|
+
return "milestone title is not a string";
|
|
41
55
|
if (milestone["description"] !== undefined && typeof milestone["description"] !== "string") {
|
|
42
|
-
return "milestone description
|
|
56
|
+
return "milestone description is not a string";
|
|
43
57
|
}
|
|
44
58
|
if (milestone["state"] !== undefined && !states.has(milestone["state"])) {
|
|
45
|
-
return "milestone state
|
|
59
|
+
return "milestone state must be planned or reached";
|
|
46
60
|
}
|
|
47
61
|
if (milestone["tags"] !== undefined && !validStringArray(milestone["tags"])) {
|
|
48
|
-
return "milestone tags
|
|
62
|
+
return "milestone tags are not a string array";
|
|
63
|
+
}
|
|
64
|
+
if (profile.temporalFields &&
|
|
65
|
+
milestone["deadline"] !== undefined &&
|
|
66
|
+
typeof milestone["deadline"] !== "string") {
|
|
67
|
+
return "milestone deadline is not a string";
|
|
49
68
|
}
|
|
50
69
|
return undefined;
|
|
51
70
|
}
|
|
52
|
-
function serializeMilestone(mutation, lineEnding) {
|
|
71
|
+
function serializeMilestone(mutation, lineEnding, profile) {
|
|
53
72
|
const definition = mutation.milestone;
|
|
73
|
+
const serialized = new Map([
|
|
74
|
+
["title", ` title ${JSON.stringify(definition.title)}`],
|
|
75
|
+
]);
|
|
76
|
+
if (definition.description !== undefined) {
|
|
77
|
+
serialized.set("description", serializeTextField("description", definition.description, lineEnding));
|
|
78
|
+
}
|
|
79
|
+
if (definition.state !== undefined) {
|
|
80
|
+
serialized.set("state", ` state ${definition.state}`);
|
|
81
|
+
}
|
|
82
|
+
if ("deadline" in definition && definition.deadline !== undefined) {
|
|
83
|
+
serialized.set("deadline", ` deadline ${definition.deadline}`);
|
|
84
|
+
}
|
|
85
|
+
if (definition.tags !== undefined) {
|
|
86
|
+
serialized.set("tags", ` tags ${serializeTags(definition.tags)}`);
|
|
87
|
+
}
|
|
54
88
|
return [
|
|
55
89
|
`milestone ${mutation.id}:`,
|
|
56
|
-
|
|
57
|
-
...(definition.description === undefined
|
|
58
|
-
? []
|
|
59
|
-
: [serializeTextField("description", definition.description, lineEnding)]),
|
|
60
|
-
...(definition.state === undefined ? [] : [` state ${definition.state}`]),
|
|
61
|
-
...(definition.tags === undefined ? [] : [` tags ${serializeTags(definition.tags)}`]),
|
|
90
|
+
...profile.fieldOrder.flatMap((name) => serialized.has(name) ? [serialized.get(name)] : []),
|
|
62
91
|
].join(lineEnding);
|
|
63
92
|
}
|
|
64
|
-
function setRequestError(mutation) {
|
|
93
|
+
function setRequestError(mutation, profile) {
|
|
65
94
|
const rawSet = mutation.set;
|
|
66
95
|
const rawClear = mutation.clear;
|
|
67
96
|
const rawAddTags = mutation.addTags;
|
|
68
97
|
const rawRemoveTags = mutation.removeTags;
|
|
69
98
|
if (rawSet !== undefined &&
|
|
70
99
|
(rawSet === null || typeof rawSet !== "object" || Array.isArray(rawSet))) {
|
|
71
|
-
return "milestone set
|
|
100
|
+
return "milestone set is not an object";
|
|
72
101
|
}
|
|
73
102
|
for (const [name, value] of [
|
|
74
103
|
["clear", rawClear],
|
|
@@ -76,7 +105,7 @@ function setRequestError(mutation) {
|
|
|
76
105
|
["removeTags", rawRemoveTags],
|
|
77
106
|
]) {
|
|
78
107
|
if (value !== undefined && !Array.isArray(value))
|
|
79
|
-
return `${name}
|
|
108
|
+
return `${name} is not an array`;
|
|
80
109
|
}
|
|
81
110
|
const set = (rawSet ?? {});
|
|
82
111
|
const clear = (rawClear ?? []);
|
|
@@ -87,58 +116,83 @@ function setRequestError(mutation) {
|
|
|
87
116
|
clear.length === 0 &&
|
|
88
117
|
addTags.length === 0 &&
|
|
89
118
|
removeTags.length === 0) {
|
|
90
|
-
return "milestone.set
|
|
119
|
+
return "milestone.set requires at least one change specification";
|
|
91
120
|
}
|
|
92
|
-
|
|
93
|
-
|
|
121
|
+
const knownSetFields = new Set([
|
|
122
|
+
"title",
|
|
123
|
+
"description",
|
|
124
|
+
"state",
|
|
125
|
+
...(profile.temporalFields ? ["deadline"] : []),
|
|
126
|
+
]);
|
|
127
|
+
if (Object.keys(set).some((name) => !knownSetFields.has(name))) {
|
|
128
|
+
return "milestone set contains unsupported fields";
|
|
94
129
|
}
|
|
95
130
|
if (set.title !== undefined && typeof set.title !== "string")
|
|
96
|
-
return "title
|
|
131
|
+
return "title is not a string";
|
|
97
132
|
if (set.description !== undefined && typeof set.description !== "string") {
|
|
98
|
-
return "description
|
|
133
|
+
return "description is not a string";
|
|
99
134
|
}
|
|
100
135
|
if (set.state !== undefined && !states.has(set.state)) {
|
|
101
|
-
return "state
|
|
102
|
-
}
|
|
136
|
+
return "state must be planned or reached";
|
|
137
|
+
}
|
|
138
|
+
if ("deadline" in set &&
|
|
139
|
+
set.deadline !== undefined &&
|
|
140
|
+
typeof set.deadline !== "string") {
|
|
141
|
+
return "deadline is not a string";
|
|
142
|
+
}
|
|
143
|
+
const clearableFields = new Set([
|
|
144
|
+
"description",
|
|
145
|
+
"state",
|
|
146
|
+
"tags",
|
|
147
|
+
...(profile.temporalFields ? ["deadline"] : []),
|
|
148
|
+
]);
|
|
103
149
|
if (!Array.isArray(clear) || clear.some((name) => !clearableFields.has(name))) {
|
|
104
|
-
return "clear
|
|
150
|
+
return "clear contains unsupported fields";
|
|
105
151
|
}
|
|
106
152
|
if (new Set(clear).size !== clear.length)
|
|
107
|
-
return "clear
|
|
153
|
+
return "clear contains duplicate fields";
|
|
108
154
|
const clearNames = new Set(clear);
|
|
109
155
|
for (const [setName, clearName] of [
|
|
110
156
|
["description", "description"],
|
|
111
157
|
["state", "state"],
|
|
158
|
+
...(profile.temporalFields
|
|
159
|
+
? [["deadline", "deadline"]]
|
|
160
|
+
: []),
|
|
112
161
|
]) {
|
|
113
|
-
if (set[setName] !== undefined &&
|
|
114
|
-
|
|
162
|
+
if (set[setName] !== undefined &&
|
|
163
|
+
clearNames.has(clearName)) {
|
|
164
|
+
return `${clearName} cannot be specified in both set and clear`;
|
|
115
165
|
}
|
|
116
166
|
}
|
|
117
167
|
if (!validStringArray(addTags) || !validStringArray(removeTags)) {
|
|
118
|
-
return "addTags
|
|
168
|
+
return "addTags and removeTags must be string arrays";
|
|
119
169
|
}
|
|
120
170
|
if (clearNames.has("tags") && (addTags.length > 0 || removeTags.length > 0)) {
|
|
121
|
-
return "clear tags
|
|
171
|
+
return "clear tags cannot be combined with add/remove tags";
|
|
122
172
|
}
|
|
123
173
|
const removed = new Set(removeTags);
|
|
124
174
|
if (addTags.some((tag) => removed.has(tag))) {
|
|
125
|
-
return "
|
|
175
|
+
return "the same tag cannot be specified in both add and remove";
|
|
126
176
|
}
|
|
127
177
|
return undefined;
|
|
128
178
|
}
|
|
129
|
-
function planSet(text, declaration, mutation) {
|
|
130
|
-
const error = setRequestError(mutation);
|
|
179
|
+
function planSet(text, declaration, mutation, profile) {
|
|
180
|
+
const error = setRequestError(mutation, profile);
|
|
131
181
|
if (error !== undefined) {
|
|
132
182
|
return { edits: [], diagnostic: mutationDiagnostic("PTMUT-301", error, declaration) };
|
|
133
183
|
}
|
|
134
|
-
const editor = new EntityEditor(text, declaration, fieldOrder, mutation.clear ?? []);
|
|
184
|
+
const editor = new EntityEditor(text, declaration, profile.fieldOrder, mutation.clear ?? []);
|
|
135
185
|
const set = mutation.set ?? {};
|
|
186
|
+
const targetSet = set;
|
|
136
187
|
if (set.title !== undefined)
|
|
137
188
|
editor.setScalar("title", JSON.stringify(set.title));
|
|
138
189
|
if (set.description !== undefined)
|
|
139
190
|
editor.setText("description", set.description);
|
|
140
191
|
if (set.state !== undefined)
|
|
141
192
|
editor.setScalar("state", set.state);
|
|
193
|
+
if (profile.temporalFields && targetSet.deadline !== undefined) {
|
|
194
|
+
editor.setScalar("deadline", targetSet.deadline);
|
|
195
|
+
}
|
|
142
196
|
if (!(mutation.clear ?? []).includes("tags")) {
|
|
143
197
|
const removed = new Set(mutation.removeTags ?? []);
|
|
144
198
|
const tags = stringList(editor.fieldValue("tags")).filter((tag) => !removed.has(tag));
|
|
@@ -152,7 +206,7 @@ function planSet(text, declaration, mutation) {
|
|
|
152
206
|
}
|
|
153
207
|
return { edits: editor.finish() };
|
|
154
208
|
}
|
|
155
|
-
export function planMilestoneMutationEdits(text, document, mutation) {
|
|
209
|
+
export function planMilestoneMutationEdits(text, document, mutation, profile = ACTIVE_MILESTONE_MUTATION_PROFILE) {
|
|
156
210
|
const requestError = requestShapeError(mutation);
|
|
157
211
|
if (requestError !== undefined) {
|
|
158
212
|
return { edits: [], diagnostic: mutationDiagnostic("PTMUT-301", requestError) };
|
|
@@ -162,33 +216,35 @@ export function planMilestoneMutationEdits(text, document, mutation) {
|
|
|
162
216
|
if (entity !== undefined) {
|
|
163
217
|
return {
|
|
164
218
|
edits: [],
|
|
165
|
-
diagnostic: mutationDiagnostic("PTMUT-304", `entity ID ${mutation.id}
|
|
219
|
+
diagnostic: mutationDiagnostic("PTMUT-304", `entity ID ${mutation.id} is already in use`, entity),
|
|
166
220
|
};
|
|
167
221
|
}
|
|
168
|
-
const error = definitionError(mutation.milestone);
|
|
222
|
+
const error = definitionError(mutation.milestone, profile);
|
|
169
223
|
if (error !== undefined) {
|
|
170
224
|
return { edits: [], diagnostic: mutationDiagnostic("PTMUT-301", error) };
|
|
171
225
|
}
|
|
172
226
|
const lineEnding = majorLineEnding(text);
|
|
173
227
|
return {
|
|
174
|
-
edits: [
|
|
228
|
+
edits: [
|
|
229
|
+
appendDeclarationEdit(text, serializeMilestone(mutation, lineEnding, profile), lineEnding),
|
|
230
|
+
],
|
|
175
231
|
};
|
|
176
232
|
}
|
|
177
233
|
if (entity === undefined) {
|
|
178
234
|
return {
|
|
179
235
|
edits: [],
|
|
180
|
-
diagnostic: mutationDiagnostic("PTMUT-302", `milestone ${mutation.id}
|
|
236
|
+
diagnostic: mutationDiagnostic("PTMUT-302", `milestone ${mutation.id} does not exist`),
|
|
181
237
|
};
|
|
182
238
|
}
|
|
183
239
|
if (entity.kind !== "milestone") {
|
|
184
240
|
return {
|
|
185
241
|
edits: [],
|
|
186
|
-
diagnostic: mutationDiagnostic("PTMUT-303", `entity ${mutation.id}
|
|
242
|
+
diagnostic: mutationDiagnostic("PTMUT-303", `entity ${mutation.id} is not a milestone`, entity),
|
|
187
243
|
};
|
|
188
244
|
}
|
|
189
245
|
if (mutation.kind === "milestone.remove") {
|
|
190
246
|
return { edits: [deleteDeclarationEdit(entity, splitPhysicalLines(text))] };
|
|
191
247
|
}
|
|
192
|
-
return planSet(text, entity, mutation);
|
|
248
|
+
return planSet(text, entity, mutation, profile);
|
|
193
249
|
}
|
|
194
250
|
//# sourceMappingURL=milestone.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"milestone.js","sourceRoot":"","sources":["../../src/mutation/milestone.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"milestone.js","sourceRoot":"","sources":["../../src/mutation/milestone.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import type { DocumentNode } from "../model/syntax.js";
|
|
2
2
|
import { type MutationEditPlan } from "./diagnostics.js";
|
|
3
3
|
import type { SetProjectMutation } from "./types.js";
|
|
4
|
-
export
|
|
4
|
+
export interface ProjectMutationProfile {
|
|
5
|
+
readonly exactDurations: boolean;
|
|
6
|
+
}
|
|
7
|
+
export declare const ACTIVE_PROJECT_MUTATION_PROFILE: ProjectMutationProfile;
|
|
8
|
+
export declare const TARGET_GRAMMAR_2_PROJECT_MUTATION_PROFILE: ProjectMutationProfile;
|
|
9
|
+
export declare const TARGET_GRAMMAR_3_PROJECT_MUTATION_PROFILE: ProjectMutationProfile;
|
|
10
|
+
export declare function planProjectMutationEdits(text: string, document: DocumentNode, mutation: SetProjectMutation, profile?: ProjectMutationProfile): MutationEditPlan;
|
|
5
11
|
//# sourceMappingURL=project.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/mutation/project.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAmB,YAAY,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/mutation/project.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAmB,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAKxE,OAAO,EAAsB,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,KAAK,EAGV,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAsBpB,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;CAClC;AAED,eAAO,MAAM,+BAA+B,EAAE,sBAG1C,CAAC;AAEL,eAAO,MAAM,yCAAyC,EAAE,sBACvB,CAAC;AAElC,eAAO,MAAM,yCAAyC,EAAE,sBAGpD,CAAC;AAuIL,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,GAAE,sBAAwD,GAChE,gBAAgB,CASlB"}
|
package/dist/mutation/project.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { canonicalizeExactDurationSourceToken, } from "../model/exact-duration-source.js";
|
|
1
2
|
import { EntityEditor } from "./entity-editor.js";
|
|
2
3
|
import { mutationDiagnostic } from "./diagnostics.js";
|
|
3
4
|
const fieldOrder = [
|
|
@@ -18,29 +19,41 @@ const clearableFields = new Set([
|
|
|
18
19
|
"critical_epsilon",
|
|
19
20
|
"target_duration",
|
|
20
21
|
]);
|
|
22
|
+
export const ACTIVE_PROJECT_MUTATION_PROFILE = Object.freeze({
|
|
23
|
+
exactDurations: false,
|
|
24
|
+
});
|
|
25
|
+
export const TARGET_GRAMMAR_2_PROJECT_MUTATION_PROFILE = ACTIVE_PROJECT_MUTATION_PROFILE;
|
|
26
|
+
export const TARGET_GRAMMAR_3_PROJECT_MUTATION_PROFILE = Object.freeze({
|
|
27
|
+
exactDurations: true,
|
|
28
|
+
});
|
|
29
|
+
function canonicalDuration(value, profile) {
|
|
30
|
+
if (!profile.exactDurations)
|
|
31
|
+
return value;
|
|
32
|
+
return canonicalizeExactDurationSourceToken(value)?.token ?? value;
|
|
33
|
+
}
|
|
21
34
|
function requestError(value) {
|
|
22
35
|
if (value === null || typeof value !== "object" || Array.isArray(value)) {
|
|
23
|
-
return "project mutation request
|
|
36
|
+
return "project mutation request is not an object";
|
|
24
37
|
}
|
|
25
38
|
const request = value;
|
|
26
39
|
if (request["kind"] !== "project.set")
|
|
27
|
-
return "project mutation kind
|
|
40
|
+
return "project mutation kind is unsupported";
|
|
28
41
|
if (Object.keys(request).some((name) => !["kind", "set", "clear"].includes(name))) {
|
|
29
|
-
return "project.set request
|
|
42
|
+
return "project.set request contains unsupported fields";
|
|
30
43
|
}
|
|
31
44
|
const rawSet = request["set"];
|
|
32
45
|
const rawClear = request["clear"];
|
|
33
46
|
if (rawSet !== undefined &&
|
|
34
47
|
(rawSet === null || typeof rawSet !== "object" || Array.isArray(rawSet))) {
|
|
35
|
-
return "project set
|
|
48
|
+
return "project set is not an object";
|
|
36
49
|
}
|
|
37
50
|
if (rawClear !== undefined && !Array.isArray(rawClear))
|
|
38
|
-
return "clear
|
|
51
|
+
return "clear is not an array";
|
|
39
52
|
const set = (rawSet ?? {});
|
|
40
53
|
const clear = (rawClear ?? []);
|
|
41
54
|
const setEntries = Object.entries(set).filter(([, item]) => item !== undefined);
|
|
42
55
|
if (setEntries.length === 0 && clear.length === 0) {
|
|
43
|
-
return "project.set
|
|
56
|
+
return "project.set requires at least one change specification";
|
|
44
57
|
}
|
|
45
58
|
const setFields = new Set([
|
|
46
59
|
"id",
|
|
@@ -55,7 +68,7 @@ function requestError(value) {
|
|
|
55
68
|
"targetDuration",
|
|
56
69
|
]);
|
|
57
70
|
if (Object.keys(set).some((name) => !setFields.has(name))) {
|
|
58
|
-
return "project set
|
|
71
|
+
return "project set contains unsupported fields";
|
|
59
72
|
}
|
|
60
73
|
for (const name of [
|
|
61
74
|
"id",
|
|
@@ -68,21 +81,21 @@ function requestError(value) {
|
|
|
68
81
|
"targetDuration",
|
|
69
82
|
]) {
|
|
70
83
|
if (set[name] !== undefined && typeof set[name] !== "string") {
|
|
71
|
-
return `${name}
|
|
84
|
+
return `${name} is not a string`;
|
|
72
85
|
}
|
|
73
86
|
}
|
|
74
87
|
if (set.version !== undefined && !Number.isSafeInteger(set.version)) {
|
|
75
|
-
return "version
|
|
88
|
+
return "version is not a safe integer";
|
|
76
89
|
}
|
|
77
90
|
if (set.durationUnit !== undefined &&
|
|
78
91
|
!new Set(["day", "hour", "point"]).has(set.durationUnit)) {
|
|
79
|
-
return "durationUnit
|
|
92
|
+
return "durationUnit must be day, hour, or point";
|
|
80
93
|
}
|
|
81
94
|
if (clear.some((name) => typeof name !== "string" || !clearableFields.has(name))) {
|
|
82
|
-
return "clear
|
|
95
|
+
return "clear contains unsupported fields";
|
|
83
96
|
}
|
|
84
97
|
if (new Set(clear).size !== clear.length)
|
|
85
|
-
return "clear
|
|
98
|
+
return "clear contains duplicate fields";
|
|
86
99
|
const conflicts = [
|
|
87
100
|
["description", "description"],
|
|
88
101
|
["asOf", "as_of"],
|
|
@@ -92,12 +105,12 @@ function requestError(value) {
|
|
|
92
105
|
];
|
|
93
106
|
for (const [setName, clearName] of conflicts) {
|
|
94
107
|
if (set[setName] !== undefined && clear.includes(clearName)) {
|
|
95
|
-
return `${clearName}
|
|
108
|
+
return `${clearName} cannot be specified in both set and clear`;
|
|
96
109
|
}
|
|
97
110
|
}
|
|
98
111
|
return undefined;
|
|
99
112
|
}
|
|
100
|
-
function planSet(text, declaration, mutation) {
|
|
113
|
+
function planSet(text, declaration, mutation, profile) {
|
|
101
114
|
const error = requestError(mutation);
|
|
102
115
|
if (error !== undefined) {
|
|
103
116
|
return { edits: [], diagnostic: mutationDiagnostic("PTMUT-301", error, declaration) };
|
|
@@ -127,22 +140,22 @@ function planSet(text, declaration, mutation) {
|
|
|
127
140
|
if (set.finish !== undefined)
|
|
128
141
|
editor.setScalar("finish", set.finish);
|
|
129
142
|
if (set.criticalEpsilon !== undefined) {
|
|
130
|
-
editor.setScalar("critical_epsilon", set.criticalEpsilon);
|
|
143
|
+
editor.setScalar("critical_epsilon", canonicalDuration(set.criticalEpsilon, profile));
|
|
131
144
|
}
|
|
132
145
|
if (set.targetDuration !== undefined) {
|
|
133
|
-
editor.setScalar("target_duration", set.targetDuration);
|
|
146
|
+
editor.setScalar("target_duration", canonicalDuration(set.targetDuration, profile));
|
|
134
147
|
}
|
|
135
148
|
edits.push(...editor.finish());
|
|
136
149
|
return { edits };
|
|
137
150
|
}
|
|
138
|
-
export function planProjectMutationEdits(text, document, mutation) {
|
|
151
|
+
export function planProjectMutationEdits(text, document, mutation, profile = ACTIVE_PROJECT_MUTATION_PROFILE) {
|
|
139
152
|
const declaration = document.declarations.find(({ kind }) => kind === "project");
|
|
140
153
|
if (declaration === undefined) {
|
|
141
154
|
return {
|
|
142
155
|
edits: [],
|
|
143
|
-
diagnostic: mutationDiagnostic("PTMUT-302", "project declaration
|
|
156
|
+
diagnostic: mutationDiagnostic("PTMUT-302", "project declaration does not exist"),
|
|
144
157
|
};
|
|
145
158
|
}
|
|
146
|
-
return planSet(text, declaration, mutation);
|
|
159
|
+
return planSet(text, declaration, mutation, profile);
|
|
147
160
|
}
|
|
148
161
|
//# sourceMappingURL=project.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/mutation/project.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAyB,MAAM,kBAAkB,CAAC;AAO7E,MAAM,UAAU,GAAG;IACjB,SAAS;IACT,OAAO;IACP,aAAa;IACb,OAAO;IACP,eAAe;IACf,UAAU;IACV,QAAQ;IACR,kBAAkB;IAClB,iBAAiB;CACT,CAAC;AAEX,MAAM,eAAe,GAAG,IAAI,GAAG,CAAwB;IACrD,aAAa;IACb,OAAO;IACP,UAAU;IACV,kBAAkB;IAClB,iBAAiB;CAClB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/mutation/project.ts"],"names":[],"mappings":"AACA,OAAO,EACL,oCAAoC,GACrC,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAyB,MAAM,kBAAkB,CAAC;AAO7E,MAAM,UAAU,GAAG;IACjB,SAAS;IACT,OAAO;IACP,aAAa;IACb,OAAO;IACP,eAAe;IACf,UAAU;IACV,QAAQ;IACR,kBAAkB;IAClB,iBAAiB;CACT,CAAC;AAEX,MAAM,eAAe,GAAG,IAAI,GAAG,CAAwB;IACrD,aAAa;IACb,OAAO;IACP,UAAU;IACV,kBAAkB;IAClB,iBAAiB;CAClB,CAAC,CAAC;AAMH,MAAM,CAAC,MAAM,+BAA+B,GAC1C,MAAM,CAAC,MAAM,CAAC;IACZ,cAAc,EAAE,KAAK;CACtB,CAAC,CAAC;AAEL,MAAM,CAAC,MAAM,yCAAyC,GACpD,+BAA+B,CAAC;AAElC,MAAM,CAAC,MAAM,yCAAyC,GACpD,MAAM,CAAC,MAAM,CAAC;IACZ,cAAc,EAAE,IAAI;CACrB,CAAC,CAAC;AAEL,SAAS,iBAAiB,CACxB,KAAa,EACb,OAA+B;IAE/B,IAAI,CAAC,OAAO,CAAC,cAAc;QAAE,OAAO,KAAK,CAAC;IAC1C,OAAO,oCAAoC,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC;AACrE,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACxE,OAAO,2CAA2C,CAAC;IACrD,CAAC;IACD,MAAM,OAAO,GAAG,KAAgC,CAAC;IACjD,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,aAAa;QAAE,OAAO,sCAAsC,CAAC;IACrF,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAClF,OAAO,iDAAiD,CAAC;IAC3D,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAC9B,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAClC,IACE,MAAM,KAAK,SAAS;QACpB,CAAC,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EACxE,CAAC;QACD,OAAO,8BAA8B,CAAC;IACxC,CAAC;IACD,IAAI,QAAQ,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;QAAE,OAAO,uBAAuB,CAAC;IAEvF,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,EAAE,CAAoB,CAAC;IAC9C,MAAM,KAAK,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAuB,CAAC;IACrD,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;IAChF,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClD,OAAO,wDAAwD,CAAC;IAClE,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC;QACxB,IAAI;QACJ,SAAS;QACT,OAAO;QACP,aAAa;QACb,MAAM;QACN,cAAc;QACd,UAAU;QACV,QAAQ;QACR,iBAAiB;QACjB,gBAAgB;KACjB,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAC1D,OAAO,yCAAyC,CAAC;IACnD,CAAC;IACD,KAAK,MAAM,IAAI,IAAI;QACjB,IAAI;QACJ,OAAO;QACP,aAAa;QACb,MAAM;QACN,UAAU;QACV,QAAQ;QACR,iBAAiB;QACjB,gBAAgB;KACR,EAAE,CAAC;QACX,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,SAAS,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC7D,OAAO,GAAG,IAAI,kBAAkB,CAAC;QACnC,CAAC;IACH,CAAC;IACD,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QACpE,OAAO,+BAA+B,CAAC;IACzC,CAAC;IACD,IACE,GAAG,CAAC,YAAY,KAAK,SAAS;QAC9B,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,EACxD,CAAC;QACD,OAAO,0CAA0C,CAAC;IACpD,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAA6B,CAAC,CAAC,EAAE,CAAC;QAC1G,OAAO,mCAAmC,CAAC;IAC7C,CAAC;IACD,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM;QAAE,OAAO,iCAAiC,CAAC;IACnF,MAAM,SAAS,GAA2E;QACxF,CAAC,aAAa,EAAE,aAAa,CAAC;QAC9B,CAAC,MAAM,EAAE,OAAO,CAAC;QACjB,CAAC,UAAU,EAAE,UAAU,CAAC;QACxB,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;QACvC,CAAC,gBAAgB,EAAE,iBAAiB,CAAC;KACtC,CAAC;IACF,KAAK,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,SAAS,EAAE,CAAC;QAC7C,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,SAAS,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YAC5D,OAAO,GAAG,SAAS,4CAA4C,CAAC;QAClE,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,OAAO,CACd,IAAY,EACZ,WAA4B,EAC5B,QAA4B,EAC5B,OAA+B;IAE/B,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IACrC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,kBAAkB,CAAC,WAAW,EAAE,KAAK,EAAE,WAAW,CAAC,EAAE,CAAC;IACxF,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IACrF,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,IAAI,EAAE,CAAC;IAC/B,MAAM,KAAK,GAAG,EAAE,CAAC;IACjB,IAAI,GAAG,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC;YACT,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM;YAC5C,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM;YACxC,WAAW,EAAE,GAAG,CAAC,EAAE;SACpB,CAAC,CAAC;IACL,CAAC;IACD,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS;QAAE,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IAChF,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS;QAAE,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IAClF,IAAI,GAAG,CAAC,WAAW,KAAK,SAAS;QAAE,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;IAClF,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS;QAAE,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAChE,IAAI,GAAG,CAAC,YAAY,KAAK,SAAS;QAAE,MAAM,CAAC,SAAS,CAAC,eAAe,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;IACxF,IAAI,GAAG,CAAC,QAAQ,KAAK,SAAS;QAAE,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC3E,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS;QAAE,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACrE,IAAI,GAAG,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;QACtC,MAAM,CAAC,SAAS,CACd,kBAAkB,EAClB,iBAAiB,CAAC,GAAG,CAAC,eAAe,EAAE,OAAO,CAAC,CAChD,CAAC;IACJ,CAAC;IACD,IAAI,GAAG,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QACrC,MAAM,CAAC,SAAS,CACd,iBAAiB,EACjB,iBAAiB,CAAC,GAAG,CAAC,cAAc,EAAE,OAAO,CAAC,CAC/C,CAAC;IACJ,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/B,OAAO,EAAE,KAAK,EAAE,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,IAAY,EACZ,QAAsB,EACtB,QAA4B,EAC5B,OAAO,GAA2B,+BAA+B;IAEjE,MAAM,WAAW,GAAG,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;IACjF,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO;YACL,KAAK,EAAE,EAAE;YACT,UAAU,EAAE,kBAAkB,CAAC,WAAW,EAAE,oCAAoC,CAAC;SAClF,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AACvD,CAAC"}
|
|
@@ -4,40 +4,40 @@ import { appendDeclarationEdit, deleteDeclarationEdit, majorLineEnding, serializ
|
|
|
4
4
|
const fieldOrder = ["title", "description", "capacity", "tags"];
|
|
5
5
|
function requestShapeError(value) {
|
|
6
6
|
if (value === null || typeof value !== "object" || Array.isArray(value)) {
|
|
7
|
-
return "resource mutation request
|
|
7
|
+
return "resource mutation request is not an object";
|
|
8
8
|
}
|
|
9
9
|
const request = value;
|
|
10
10
|
const kind = request["kind"];
|
|
11
11
|
if (kind !== "resource.add" && kind !== "resource.set" && kind !== "resource.remove") {
|
|
12
|
-
return "resource mutation kind
|
|
12
|
+
return "resource mutation kind is unsupported";
|
|
13
13
|
}
|
|
14
14
|
if (typeof request["id"] !== "string")
|
|
15
|
-
return "resource id
|
|
15
|
+
return "resource id is not a string";
|
|
16
16
|
const fieldsByKind = {
|
|
17
17
|
"resource.add": new Set(["kind", "id", "resource"]),
|
|
18
18
|
"resource.set": new Set(["kind", "id", "set", "clear"]),
|
|
19
19
|
"resource.remove": new Set(["kind", "id"]),
|
|
20
20
|
};
|
|
21
21
|
if (Object.keys(request).some((name) => !fieldsByKind[kind].has(name))) {
|
|
22
|
-
return `${kind} request
|
|
22
|
+
return `${kind} request contains unsupported fields`;
|
|
23
23
|
}
|
|
24
24
|
return undefined;
|
|
25
25
|
}
|
|
26
26
|
function definitionError(value) {
|
|
27
27
|
if (value === null || typeof value !== "object" || Array.isArray(value)) {
|
|
28
|
-
return "resource definition
|
|
28
|
+
return "resource definition is not an object";
|
|
29
29
|
}
|
|
30
30
|
const resource = value;
|
|
31
31
|
if (Object.keys(resource).some((name) => !["title", "description", "capacity"].includes(name))) {
|
|
32
|
-
return "resource definition
|
|
32
|
+
return "resource definition contains unsupported fields";
|
|
33
33
|
}
|
|
34
34
|
if (typeof resource["title"] !== "string")
|
|
35
|
-
return "resource title
|
|
35
|
+
return "resource title is not a string";
|
|
36
36
|
if (!Number.isSafeInteger(resource["capacity"])) {
|
|
37
|
-
return "resource capacity
|
|
37
|
+
return "resource capacity is not a safe integer";
|
|
38
38
|
}
|
|
39
39
|
if (resource["description"] !== undefined && typeof resource["description"] !== "string") {
|
|
40
|
-
return "resource description
|
|
40
|
+
return "resource description is not a string";
|
|
41
41
|
}
|
|
42
42
|
return undefined;
|
|
43
43
|
}
|
|
@@ -57,34 +57,34 @@ function setRequestError(mutation) {
|
|
|
57
57
|
const rawClear = mutation.clear;
|
|
58
58
|
if (rawSet !== undefined &&
|
|
59
59
|
(rawSet === null || typeof rawSet !== "object" || Array.isArray(rawSet))) {
|
|
60
|
-
return "resource set
|
|
60
|
+
return "resource set is not an object";
|
|
61
61
|
}
|
|
62
62
|
if (rawClear !== undefined && !Array.isArray(rawClear))
|
|
63
|
-
return "clear
|
|
63
|
+
return "clear is not an array";
|
|
64
64
|
const set = (rawSet ?? {});
|
|
65
65
|
const clear = (rawClear ?? []);
|
|
66
66
|
const setEntries = Object.entries(set).filter(([, item]) => item !== undefined);
|
|
67
67
|
if (setEntries.length === 0 && clear.length === 0) {
|
|
68
|
-
return "resource.set
|
|
68
|
+
return "resource.set requires at least one change specification";
|
|
69
69
|
}
|
|
70
70
|
if (Object.keys(set).some((name) => !["title", "description", "capacity"].includes(name))) {
|
|
71
|
-
return "resource set
|
|
71
|
+
return "resource set contains unsupported fields";
|
|
72
72
|
}
|
|
73
73
|
if (set.title !== undefined && typeof set.title !== "string")
|
|
74
|
-
return "title
|
|
74
|
+
return "title is not a string";
|
|
75
75
|
if (set.description !== undefined && typeof set.description !== "string") {
|
|
76
|
-
return "description
|
|
76
|
+
return "description is not a string";
|
|
77
77
|
}
|
|
78
78
|
if (set.capacity !== undefined && !Number.isSafeInteger(set.capacity)) {
|
|
79
|
-
return "capacity
|
|
79
|
+
return "capacity is not a safe integer";
|
|
80
80
|
}
|
|
81
81
|
if (!Array.isArray(clear) || clear.some((name) => name !== "description")) {
|
|
82
|
-
return "clear
|
|
82
|
+
return "clear contains unsupported fields";
|
|
83
83
|
}
|
|
84
84
|
if (new Set(clear).size !== clear.length)
|
|
85
|
-
return "clear
|
|
85
|
+
return "clear contains duplicate fields";
|
|
86
86
|
if (set.description !== undefined && clear.includes("description")) {
|
|
87
|
-
return "description
|
|
87
|
+
return "description cannot be specified in both set and clear";
|
|
88
88
|
}
|
|
89
89
|
return undefined;
|
|
90
90
|
}
|
|
@@ -113,7 +113,7 @@ export function planResourceMutationEdits(text, document, mutation) {
|
|
|
113
113
|
if (entity !== undefined) {
|
|
114
114
|
return {
|
|
115
115
|
edits: [],
|
|
116
|
-
diagnostic: mutationDiagnostic("PTMUT-304", `entity ID ${mutation.id}
|
|
116
|
+
diagnostic: mutationDiagnostic("PTMUT-304", `entity ID ${mutation.id} is already in use`, entity),
|
|
117
117
|
};
|
|
118
118
|
}
|
|
119
119
|
const error = definitionError(mutation.resource);
|
|
@@ -128,13 +128,13 @@ export function planResourceMutationEdits(text, document, mutation) {
|
|
|
128
128
|
if (entity === undefined) {
|
|
129
129
|
return {
|
|
130
130
|
edits: [],
|
|
131
|
-
diagnostic: mutationDiagnostic("PTMUT-302", `resource ${mutation.id}
|
|
131
|
+
diagnostic: mutationDiagnostic("PTMUT-302", `resource ${mutation.id} does not exist`),
|
|
132
132
|
};
|
|
133
133
|
}
|
|
134
134
|
if (entity.kind !== "resource") {
|
|
135
135
|
return {
|
|
136
136
|
edits: [],
|
|
137
|
-
diagnostic: mutationDiagnostic("PTMUT-303", `entity ${mutation.id}
|
|
137
|
+
diagnostic: mutationDiagnostic("PTMUT-303", `entity ${mutation.id} is not a resource`, entity),
|
|
138
138
|
};
|
|
139
139
|
}
|
|
140
140
|
if (mutation.kind === "resource.remove") {
|