milsymbol-sidc 0.2.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/dist/src/sidc.js CHANGED
@@ -1,16 +1,18 @@
1
- import { Context, Standard, StandardIdentity, Status, SymbolSet, Version, } from "./enums.js";
2
- import { checkOneDigitField, checkTwoDigitField, defaultVersionForStandard, findCombinationProblems, knownSymbolSets, knownVersions, SidcCombinationError, SidcValidationError, standardForVersion, unrecognizedCodeWarning, } from "./validate.js";
3
- const SIDC_LENGTH = 20;
4
- const CONTEXTS = new Set(Object.values(Context));
5
- const IDENTITIES = new Set(Object.values(StandardIdentity));
6
- const STANDARDS = new Set(Object.values(Standard));
7
- const STATUSES = new Set(Object.values(Status));
1
+ import { Amplifier, Context, HqTaskForceDummy, StandardIdentity, Status, SymbolSet, Version, } from "./enums.js";
2
+ import { checkAmplifier, checkContext, checkFields, checkHqTaskForceDummy, checkIdentity, checkSixDigitField, checkStandard, checkStatus, checkTwoDigitField, defaultVersionForStandard, findCombinationProblems, knownSymbolSets, knownVersions, SidcCombinationError, SidcValidationError, standardForVersion, unrecognizedCodeWarning, } from "./validate.js";
3
+ /** Drops explicitly-undefined entries so omitted and undefined values both default. */
4
+ function dropUndefined(fields) {
5
+ if (fields == null) {
6
+ return {};
7
+ }
8
+ return Object.fromEntries(Object.entries(fields).filter(([, value]) => value !== undefined));
9
+ }
8
10
  /**
9
11
  * Fluent builder for 20-character numeric SIDC strings
10
12
  * (MIL-STD-2525E / APP-6 coding structure).
11
13
  *
12
- * Covers positions 1-7; positions 8-20 are zero-filled so the result can be
13
- * passed straight to milsymbol's `new ms.Symbol(sidc)`.
14
+ * Covers all positions 1-20 of the numeric SIDC so the result can be passed
15
+ * straight to milsymbol's `new ms.Symbol(sidc)`.
14
16
  *
15
17
  * All setters are immutable: they return a new `Sidc` and leave the original
16
18
  * untouched.
@@ -30,23 +32,33 @@ export class Sidc {
30
32
  /**
31
33
  * @param options Builder behaviour flags.
32
34
  * @param fields Initial field values. Internal; used for immutable clones.
35
+ * Legacy records may omit the newly supported tail fields; omitted and
36
+ * explicitly-undefined values are normalized to their zero defaults. Every
37
+ * supplied value is validated, so this path cannot produce a malformed SIDC.
33
38
  */
34
39
  constructor(options = {}, fields) {
35
- if (fields === undefined &&
36
- options.standard !== undefined &&
37
- !STANDARDS.has(options.standard)) {
38
- throw new SidcValidationError(`Unknown standard "${options.standard}".`);
40
+ if (options.standard !== undefined) {
41
+ checkStandard(options.standard);
39
42
  }
40
- this.fields = fields ?? {
41
- version: options.standard === undefined
43
+ const provided = dropUndefined(fields);
44
+ const standard = provided.standard ?? options.standard;
45
+ this.fields = Object.freeze({
46
+ version: standard === undefined
42
47
  ? Version.MilStd2525E
43
- : defaultVersionForStandard(options.standard),
48
+ : defaultVersionForStandard(standard),
44
49
  context: Context.Reality,
45
50
  identity: StandardIdentity.Unknown,
46
51
  symbolSet: SymbolSet.Unknown,
47
52
  status: Status.Present,
48
- standard: options.standard,
49
- };
53
+ hqTaskForceDummy: HqTaskForceDummy.None,
54
+ amplifier: Amplifier.None,
55
+ entity: "000000",
56
+ modifier1: "00",
57
+ modifier2: "00",
58
+ standard,
59
+ ...provided,
60
+ });
61
+ checkFields(this.fields);
50
62
  this.strict = options.strict ?? false;
51
63
  }
52
64
  /**
@@ -56,14 +68,41 @@ export class Sidc {
56
68
  * it is reset to that family's latest edition (APP-6 E or MIL-STD-2525E).
57
69
  */
58
70
  standard(standard) {
59
- if (!STANDARDS.has(standard)) {
60
- throw new SidcValidationError(`Unknown standard "${standard}".`);
61
- }
71
+ checkStandard(standard);
62
72
  const version = standardForVersion(this.fields.version) === standard
63
73
  ? this.fields.version
64
74
  : defaultVersionForStandard(standard);
65
75
  return this.with({ standard, version });
66
76
  }
77
+ /**
78
+ * Position 8: headquarters, task force, and feint/dummy indicator.
79
+ */
80
+ hqTaskForceDummy(value) {
81
+ checkHqTaskForceDummy(value);
82
+ return this.with({ hqTaskForceDummy: value });
83
+ }
84
+ /**
85
+ * Positions 9-10: echelon, mobility, leadership, or auxiliary amplifier.
86
+ */
87
+ amplifier(value) {
88
+ checkAmplifier(value);
89
+ return this.with({ amplifier: value });
90
+ }
91
+ /** Positions 11-16: six-digit entity code. */
92
+ entity(value) {
93
+ checkSixDigitField("Entity", value);
94
+ return this.with({ entity: value });
95
+ }
96
+ /** Positions 17-18: two-digit modifier 1 code. */
97
+ modifier1(value) {
98
+ checkTwoDigitField("Modifier 1", value);
99
+ return this.with({ modifier1: value });
100
+ }
101
+ /** Positions 19-20: two-digit modifier 2 code. */
102
+ modifier2(value) {
103
+ checkTwoDigitField("Modifier 2", value);
104
+ return this.with({ modifier2: value });
105
+ }
67
106
  /** Positions 1-2: standard edition. Accepts known codes or a raw two-digit code. */
68
107
  version(version) {
69
108
  checkTwoDigitField("Version", version);
@@ -71,18 +110,12 @@ export class Sidc {
71
110
  }
72
111
  /** Position 3: context. */
73
112
  context(context) {
74
- checkOneDigitField("Context", context);
75
- if (!CONTEXTS.has(context)) {
76
- throw new SidcValidationError(`Unknown context code "${context}".`);
77
- }
113
+ checkContext(context);
78
114
  return this.with({ context });
79
115
  }
80
116
  /** Position 4: standard identity (affiliation). */
81
117
  identity(identity) {
82
- checkOneDigitField("Standard identity", identity);
83
- if (!IDENTITIES.has(identity)) {
84
- throw new SidcValidationError(`Unknown standard identity code "${identity}".`);
85
- }
118
+ checkIdentity(identity);
86
119
  return this.with({ identity });
87
120
  }
88
121
  /** Positions 5-6: symbol set. Accepts known codes or a raw two-digit code. */
@@ -92,10 +125,7 @@ export class Sidc {
92
125
  }
93
126
  /** Position 7: status / condition. */
94
127
  status(status) {
95
- checkOneDigitField("Status", status);
96
- if (!STATUSES.has(status)) {
97
- throw new SidcValidationError(`Unknown status code "${status}".`);
98
- }
128
+ checkStatus(status);
99
129
  return this.with({ status });
100
130
  }
101
131
  /**
@@ -124,8 +154,16 @@ export class Sidc {
124
154
  this.fields.context +
125
155
  this.fields.identity +
126
156
  this.fields.symbolSet +
127
- this.fields.status;
128
- return head.padEnd(SIDC_LENGTH, "0");
157
+ this.fields.status +
158
+ this.fields.hqTaskForceDummy +
159
+ this.fields.amplifier +
160
+ this.fields.entity +
161
+ this.fields.modifier1 +
162
+ this.fields.modifier2;
163
+ if (head.length !== 20) {
164
+ throw new SidcValidationError(`Internal error: rendered SIDC has ${head.length} characters instead of 20.`);
165
+ }
166
+ return head;
129
167
  }
130
168
  with(fields) {
131
169
  return new Sidc({ strict: this.strict }, { ...this.fields, ...fields });
@@ -1 +1 @@
1
- {"version":3,"file":"sidc.js","sourceRoot":"","sources":["../../src/sidc.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sidc.js","sourceRoot":"","sources":["../../src/sidc.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,11 @@ export interface SidcFields {
6
6
  identity: string;
7
7
  symbolSet: string;
8
8
  status: string;
9
+ hqTaskForceDummy: string;
10
+ amplifier: string;
11
+ entity: string;
12
+ modifier1: string;
13
+ modifier2: string;
9
14
  /** Optional standard-family configuration used for defaults and validation. */
10
15
  standard?: Standard;
11
16
  }
@@ -28,6 +33,27 @@ export declare function standardForVersion(version: string): Standard | undefine
28
33
  export declare function checkTwoDigitField(name: string, value: string): void;
29
34
  /** @internal Validates a single-digit field (context, identity, status). */
30
35
  export declare function checkOneDigitField(name: string, value: string): void;
36
+ /** @internal Validates a six-digit entity field. */
37
+ export declare function checkSixDigitField(name: string, value: string): void;
38
+ /** @internal Validates a named position-8 value. */
39
+ export declare function checkHqTaskForceDummy(value: string): void;
40
+ /** @internal Validates a named amplifier value. */
41
+ export declare function checkAmplifier(value: string): void;
42
+ /** @internal Validates a standard-family value. */
43
+ export declare function checkStandard(standard: string): void;
44
+ /** @internal Validates a context value. */
45
+ export declare function checkContext(value: string): void;
46
+ /** @internal Validates a standard-identity value. */
47
+ export declare function checkIdentity(value: string): void;
48
+ /** @internal Validates a status/condition value. */
49
+ export declare function checkStatus(value: string): void;
50
+ /**
51
+ * @internal Validates a complete field record.
52
+ *
53
+ * The constructor uses this so every construction path enforces the same
54
+ * digit-width and enum-membership invariants as the fluent setters.
55
+ */
56
+ export declare function checkFields(fields: SidcFields): void;
31
57
  /**
32
58
  * Cross-field consistency checks mirroring milsymbol's number-based SIDC
33
59
  * parsing. Returns human-readable problem descriptions; an empty array means
@@ -1 +1 @@
1
- {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/validate.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,QAAQ,EAIR,OAAO,EACR,MAAM,YAAY,CAAC;AAEpB,6DAA6D;AAC7D,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED,qBAAa,SAAU,SAAQ,KAAK;gBACtB,OAAO,EAAE,MAAM;CAI5B;AAED,qDAAqD;AACrD,qBAAa,mBAAoB,SAAQ,SAAS;gBACpC,OAAO,EAAE,MAAM;CAI5B;AAED,wEAAwE;AACxE,qBAAa,oBAAqB,SAAQ,SAAS;gBACrC,OAAO,EAAE,MAAM;CAI5B;AAmDD,6EAA6E;AAC7E,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAErE;AAED,qEAAqE;AACrE,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAExE;AAUD,gFAAgF;AAChF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAEpE;AAED,4EAA4E;AAC5E,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAEpE;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,EAAE,CA8CpE;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS,CAKjH;AAED,eAAO,MAAM,aAAa,mBAAiB,CAAC;AAC5C,eAAO,MAAM,eAAe,mBAAoB,CAAC"}
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/validate.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,QAAQ,EAIR,OAAO,EACR,MAAM,YAAY,CAAC;AAEpB,6DAA6D;AAC7D,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED,qBAAa,SAAU,SAAQ,KAAK;gBACtB,OAAO,EAAE,MAAM;CAI5B;AAED,qDAAqD;AACrD,qBAAa,mBAAoB,SAAQ,SAAS;gBACpC,OAAO,EAAE,MAAM;CAI5B;AAED,wEAAwE;AACxE,qBAAa,oBAAqB,SAAQ,SAAS;gBACrC,OAAO,EAAE,MAAM;CAI5B;AA4DD,6EAA6E;AAC7E,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAErE;AAED,qEAAqE;AACrE,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAExE;AAwBD,gFAAgF;AAChF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAEpE;AAED,4EAA4E;AAC5E,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAEpE;AAED,oDAAoD;AACpD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAEpE;AAED,oDAAoD;AACpD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAOzD;AAED,mDAAmD;AACnD,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAKlD;AAED,mDAAmD;AACnD,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAIpD;AAED,2CAA2C;AAC3C,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAKhD;AAED,qDAAqD;AACrD,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAKjD;AAED,oDAAoD;AACpD,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAK/C;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAcpD;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,EAAE,CAkDpE;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,SAAS,MAAM,EAAE,GACvB,MAAM,GAAG,SAAS,CAKpB;AAED,eAAO,MAAM,aAAa,EAAE,SAAS,MAAM,EAAkC,CAAC;AAC9E,eAAO,MAAM,eAAe,EAAE,SAAS,MAAM,EACX,CAAC"}
@@ -1,4 +1,4 @@
1
- import { Context, Standard, StandardIdentity, Status, SymbolSet, Version, } from "./enums.js";
1
+ import { Amplifier, Context, HqTaskForceDummy, Standard, StandardIdentity, Status, SymbolSet, Version, } from "./enums.js";
2
2
  export class SidcError extends Error {
3
3
  constructor(message) {
4
4
  super(message);
@@ -19,6 +19,7 @@ export class SidcCombinationError extends SidcError {
19
19
  this.name = "SidcCombinationError";
20
20
  }
21
21
  }
22
+ const SIX_DIGITS = /^\d{6}$/;
22
23
  const TWO_DIGITS = /^\d{2}$/;
23
24
  const ONE_DIGIT = /^\d$/;
24
25
  // Codes milsymbol's number-based parser recognizes, including ones without
@@ -29,6 +30,12 @@ const KNOWN_SYMBOL_SETS = [
29
30
  "12",
30
31
  "39",
31
32
  ];
33
+ const KNOWN_HQ_TASK_FORCE_DUMMY = Object.values(HqTaskForceDummy);
34
+ const KNOWN_AMPLIFIERS = Object.values(Amplifier);
35
+ const KNOWN_STANDARDS = Object.values(Standard);
36
+ const KNOWN_CONTEXTS = Object.values(Context);
37
+ const KNOWN_IDENTITIES = Object.values(StandardIdentity);
38
+ const KNOWN_STATUSES = Object.values(Status);
32
39
  const STANDARD_DEFAULT_VERSIONS = {
33
40
  [Standard.MilStd2525]: Version.MilStd2525E,
34
41
  [Standard.App6]: Version.App6E,
@@ -66,9 +73,18 @@ export function defaultVersionForStandard(standard) {
66
73
  export function standardForVersion(version) {
67
74
  return VERSION_STANDARDS[version];
68
75
  }
76
+ /** Renders any runtime value for an error message without ever throwing. */
77
+ function describeValue(value) {
78
+ try {
79
+ return `"${String(value)}"`;
80
+ }
81
+ catch {
82
+ return Object.prototype.toString.call(value);
83
+ }
84
+ }
69
85
  function assertDigits(name, value, pattern, length) {
70
- if (!pattern.test(value)) {
71
- throw new SidcValidationError(`${name} must be ${length} digit(s), got "${value}".`);
86
+ if (typeof value !== "string" || !pattern.test(value)) {
87
+ throw new SidcValidationError(`${name} must be ${length} digit(s), got ${describeValue(value)}.`);
72
88
  }
73
89
  }
74
90
  /** @internal Validates and stores a two-digit field (version or symbol set). */
@@ -79,6 +95,72 @@ export function checkTwoDigitField(name, value) {
79
95
  export function checkOneDigitField(name, value) {
80
96
  assertDigits(name, value, ONE_DIGIT, 1);
81
97
  }
98
+ /** @internal Validates a six-digit entity field. */
99
+ export function checkSixDigitField(name, value) {
100
+ assertDigits(name, value, SIX_DIGITS, 6);
101
+ }
102
+ /** @internal Validates a named position-8 value. */
103
+ export function checkHqTaskForceDummy(value) {
104
+ checkOneDigitField("HQ/task force/feint-dummy", value);
105
+ if (!KNOWN_HQ_TASK_FORCE_DUMMY.includes(value)) {
106
+ throw new SidcValidationError(`Unknown HQ/task force/feint-dummy code "${value}".`);
107
+ }
108
+ }
109
+ /** @internal Validates a named amplifier value. */
110
+ export function checkAmplifier(value) {
111
+ checkTwoDigitField("Amplifier", value);
112
+ if (!KNOWN_AMPLIFIERS.includes(value)) {
113
+ throw new SidcValidationError(`Unknown amplifier code "${value}".`);
114
+ }
115
+ }
116
+ /** @internal Validates a standard-family value. */
117
+ export function checkStandard(standard) {
118
+ if (!KNOWN_STANDARDS.includes(standard)) {
119
+ throw new SidcValidationError(`Unknown standard "${standard}".`);
120
+ }
121
+ }
122
+ /** @internal Validates a context value. */
123
+ export function checkContext(value) {
124
+ checkOneDigitField("Context", value);
125
+ if (!KNOWN_CONTEXTS.includes(value)) {
126
+ throw new SidcValidationError(`Unknown context code "${value}".`);
127
+ }
128
+ }
129
+ /** @internal Validates a standard-identity value. */
130
+ export function checkIdentity(value) {
131
+ checkOneDigitField("Standard identity", value);
132
+ if (!KNOWN_IDENTITIES.includes(value)) {
133
+ throw new SidcValidationError(`Unknown standard identity code "${value}".`);
134
+ }
135
+ }
136
+ /** @internal Validates a status/condition value. */
137
+ export function checkStatus(value) {
138
+ checkOneDigitField("Status", value);
139
+ if (!KNOWN_STATUSES.includes(value)) {
140
+ throw new SidcValidationError(`Unknown status code "${value}".`);
141
+ }
142
+ }
143
+ /**
144
+ * @internal Validates a complete field record.
145
+ *
146
+ * The constructor uses this so every construction path enforces the same
147
+ * digit-width and enum-membership invariants as the fluent setters.
148
+ */
149
+ export function checkFields(fields) {
150
+ if (fields.standard !== undefined) {
151
+ checkStandard(fields.standard);
152
+ }
153
+ checkTwoDigitField("Version", fields.version);
154
+ checkContext(fields.context);
155
+ checkIdentity(fields.identity);
156
+ checkTwoDigitField("Symbol set", fields.symbolSet);
157
+ checkStatus(fields.status);
158
+ checkHqTaskForceDummy(fields.hqTaskForceDummy);
159
+ checkAmplifier(fields.amplifier);
160
+ checkSixDigitField("Entity", fields.entity);
161
+ checkTwoDigitField("Modifier 1", fields.modifier1);
162
+ checkTwoDigitField("Modifier 2", fields.modifier2);
163
+ }
82
164
  /**
83
165
  * Cross-field consistency checks mirroring milsymbol's number-based SIDC
84
166
  * parsing. Returns human-readable problem descriptions; an empty array means
@@ -91,7 +173,9 @@ export function findCombinationProblems(fields) {
91
173
  if (standard !== undefined &&
92
174
  versionStandard !== undefined &&
93
175
  versionStandard !== standard) {
94
- problems.push(`Version "${version}" (${EDITION_NAMES[version]}) belongs to ${STANDARD_NAMES[versionStandard]}, not the configured ${STANDARD_NAMES[standard]} standard.`);
176
+ problems.push(`Version "${version}" (${EDITION_NAMES[version]}) belongs to ` +
177
+ `${STANDARD_NAMES[versionStandard]}, not the configured ` +
178
+ `${STANDARD_NAMES[standard]} standard.`);
95
179
  }
96
180
  // Condition statuses do not apply to control measures (tactical graphics).
97
181
  if (Object.values(Status).includes(status) &&
@@ -104,11 +188,13 @@ export function findCombinationProblems(fields) {
104
188
  context === Context.Exercise &&
105
189
  identity !== StandardIdentity.Pending &&
106
190
  identity !== StandardIdentity.Unknown) {
107
- problems.push("Exercise symbols on the unknown symbol set render without affiliation unless identity is pending/unknown.");
191
+ problems.push("Exercise symbols on the unknown symbol set render without affiliation " +
192
+ "unless identity is pending/unknown.");
108
193
  }
109
194
  // Symbol sets missing from specific standards' handler lists.
110
195
  if (UNSUPPORTED_SYMBOL_SETS[version]?.includes(symbolSet)) {
111
- problems.push(`Symbol set ${symbolSet} (${SYMBOL_SET_NAMES[symbolSet]}) is not supported by ${EDITION_NAMES[version]}.`);
196
+ problems.push(`Symbol set ${symbolSet} (${SYMBOL_SET_NAMES[symbolSet]}) is not ` +
197
+ `supported by ${EDITION_NAMES[version]}.`);
112
198
  }
113
199
  return problems;
114
200
  }
@@ -122,6 +208,6 @@ export function unrecognizedCodeWarning(name, value, known) {
122
208
  }
123
209
  return undefined;
124
210
  }
125
- export const knownVersions = KNOWN_VERSIONS;
126
- export const knownSymbolSets = KNOWN_SYMBOL_SETS;
211
+ export const knownVersions = Object.freeze(KNOWN_VERSIONS);
212
+ export const knownSymbolSets = Object.freeze(KNOWN_SYMBOL_SETS);
127
213
  //# sourceMappingURL=validate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/validate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/validate.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "milsymbol-sidc",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "Fluent TypeScript builder for MIL-STD-2525E / APP-6 numeric (20-character) SIDC strings, for use with milsymbol.",
5
5
  "type": "module",
6
6
  "main": "./dist/src/index.js",
@@ -9,14 +9,18 @@
9
9
  ".": {
10
10
  "types": "./dist/src/index.d.ts",
11
11
  "default": "./dist/src/index.js"
12
- }
12
+ },
13
+ "./package.json": "./package.json"
13
14
  },
14
15
  "files": [
15
- "dist"
16
+ "dist/src"
16
17
  ],
17
18
  "scripts": {
18
19
  "build": "tsc",
19
- "test": "npm run build && node --test \"dist/test/**/*.test.js\"",
20
+ "test": "npm run build && node --test dist/test/*.test.js",
21
+ "lint": "eslint .",
22
+ "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\" package.json tsconfig.json \".github/**/*.yml\"",
23
+ "format:check": "prettier --check \"src/**/*.ts\" \"test/**/*.ts\" package.json tsconfig.json \".github/**/*.yml\"",
20
24
  "prepack": "npm run build"
21
25
  },
22
26
  "engines": {
@@ -25,14 +29,27 @@
25
29
  "keywords": [
26
30
  "milsymbol",
27
31
  "sidc",
32
+ "symbol-identification-code",
28
33
  "mil-std-2525",
34
+ "mil-std-2525e",
35
+ "milstd2525",
29
36
  "milstd2525e",
30
37
  "app6",
38
+ "app-6",
39
+ "app6e",
40
+ "nato",
41
+ "joint-military-symbology",
31
42
  "military",
43
+ "military-symbology",
32
44
  "symbology",
33
- "c2"
45
+ "tactical-graphics",
46
+ "c2",
47
+ "typescript",
48
+ "builder",
49
+ "fluent-api"
34
50
  ],
35
51
  "license": "MIT",
52
+ "author": "Stuart Harding",
36
53
  "repository": {
37
54
  "type": "git",
38
55
  "url": "git+https://github.com/psylsph/milsymbol-sidc.git"
@@ -42,7 +59,12 @@
42
59
  },
43
60
  "homepage": "https://github.com/psylsph/milsymbol-sidc#readme",
44
61
  "devDependencies": {
62
+ "@eslint/js": "^9.39.5",
45
63
  "@types/node": "^22.10.2",
46
- "typescript": "^5.7.2"
64
+ "eslint": "^9.39.5",
65
+ "eslint-config-prettier": "^10.1.8",
66
+ "prettier": "^3.9.6",
67
+ "typescript": "^5.7.2",
68
+ "typescript-eslint": "^8.70.0"
47
69
  }
48
70
  }
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=sidc.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sidc.test.d.ts","sourceRoot":"","sources":["../../test/sidc.test.ts"],"names":[],"mappings":""}