@primmel/primmel 1.17.2 → 1.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"note.d.ts","sourceRoot":"","sources":["../../../../src/ser-des/config/note.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAOzD,OAAO,KAAK,IAAI,MAAM,kBAAkB,CAAC;AAEzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAavD,eAAO,MAAM,SAAS,EAAE,MA2CvB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,QAAQ,CAAC,IAAI,EAAE,cAAc,CAYtD,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,IAAI,CAgBjC,CAAC"}
1
+ {"version":3,"file":"note.d.ts","sourceRoot":"","sources":["../../../../src/ser-des/config/note.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAazD,OAAO,KAAK,IAAI,MAAM,kBAAkB,CAAC;AAEzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAavD,eAAO,MAAM,SAAS,EAAE,MA2DvB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,QAAQ,CAAC,IAAI,EAAE,cAAc,CAYtD,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,IAAI,CAoBjC,CAAC"}
@@ -4,6 +4,8 @@ exports.dumpNote = exports.resolveNote = exports.parseNote = void 0;
4
4
  const tokenize_1 = require("../tokenize");
5
5
  const parse_block_1 = require("../parse-block");
6
6
  const sourceDiscrepancy_1 = require("./sourceDiscrepancy");
7
+ const field_parser_1 = require("./field-parser");
8
+ const ref_1 = require("./ref");
7
9
  const resolve_1 = require("../resolve");
8
10
  // EXAMPLE is the legacy (MMEL v2) note type — the corpus carries it.
9
11
  const VALID_NOTE_TYPES = [
@@ -19,12 +21,13 @@ const parseNote = function (id, data) {
19
21
  type: 'NOTE',
20
22
  message: '',
21
23
  sourceDiscrepancy: null,
24
+ source: null,
22
25
  ref: [],
23
26
  _relations: {
24
27
  ref: [],
25
28
  },
26
29
  };
27
- (0, parse_block_1.forEachEntry)(data, (command, value) => {
30
+ (0, parse_block_1.forEachEntry)(data, (command, value, peek) => {
28
31
  if (command === 'type') {
29
32
  const v = value();
30
33
  if (!VALID_NOTE_TYPES.includes(v)) {
@@ -38,9 +41,26 @@ const parseNote = function (id, data) {
38
41
  else if (command === 'source_discrepancy') {
39
42
  result.sourceDiscrepancy = (0, sourceDiscrepancy_1.parseSourceDiscrepancy)((0, tokenize_1.unwrapBlock)(value()));
40
43
  }
44
+ else if (command === 'source') {
45
+ // The clause-site provenance (the requirement idiom): repeated
46
+ // blocks collect into sourceRefs; source mirrors the first.
47
+ const src = (0, field_parser_1.readSource)((0, tokenize_1.unwrapBlock)(value()));
48
+ if (!result.source) {
49
+ result.source = src;
50
+ }
51
+ (result.sourceRefs ??= []).push(src);
52
+ }
41
53
  else if (command === 'reference') {
54
+ // The bibliographic citation channel (the references-collection
55
+ // id list — resolveNote resolves each), never provenance.
42
56
  result._relations.ref = (0, tokenize_1.tokenizePackage)(value());
43
57
  }
58
+ else if (command === 'ref') {
59
+ // The unified typed reference (spec: docs/primmel/18) — a
60
+ // URN-anchored derives-from folds into the provenance facet.
61
+ const r = (0, ref_1.parseRefFromReaders)(value, peek, tokenize_1.stripWrapping, tokenize_1.unwrapBlock);
62
+ (0, ref_1.foldRefIntoLegacy)(result, r);
63
+ }
44
64
  else {
45
65
  return false;
46
66
  }
@@ -70,6 +90,10 @@ const dumpNote = function (n) {
70
90
  if (n.sourceDiscrepancy) {
71
91
  out += (0, sourceDiscrepancy_1.dumpSourceDiscrepancy)(n.sourceDiscrepancy, ' ') + '\n';
72
92
  }
93
+ for (const src of n.sourceRefs ??
94
+ (n.source && (n.source.doc || n.source.clause) ? [n.source] : [])) {
95
+ out += (0, ref_1.dumpSourceRefAsRef)(src, ' ', tokenize_1.escapeString);
96
+ }
73
97
  if (n.ref.length > 0) {
74
98
  out += ' reference {\n';
75
99
  for (const r of n.ref) {
@@ -1 +1 @@
1
- {"version":3,"file":"note.js","sourceRoot":"","sources":["../../../../src/ser-des/config/note.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"note.js","sourceRoot":"","sources":["../../../../src/ser-des/config/note.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import Reference from './Reference';
2
2
  import Resolvable from './Resolvable';
3
3
  import type SourceDiscrepancy from './SourceDiscrepancy';
4
+ import type { SourceRef } from './Subject';
4
5
  export type NoteType = 'NOTE' | 'CAUTION' | 'WARNING' | 'EXAMPLE' | 'COMMENTARY';
5
6
  interface Note {
6
7
  id: string;
@@ -8,6 +9,13 @@ interface Note {
8
9
  message: string;
9
10
  /** Source-discrepancy annotation attached to this note. */
10
11
  sourceDiscrepancy?: SourceDiscrepancy | null;
12
+ /** The clause-site provenance (the requirement idiom: the singular
13
+ mirror of the first source block, the canonical
14
+ `ref derives-from "<urn>#clause-<n>"` spelling on dump). */
15
+ source?: SourceRef | null;
16
+ /** Every provenance block in document order (the first mirrors
17
+ `source`). */
18
+ sourceRefs?: SourceRef[];
11
19
  ref: Reference[];
12
20
  }
13
21
  export default Note;
@@ -1 +1 @@
1
- {"version":3,"file":"Note.d.ts","sourceRoot":"","sources":["../../../src/types/Note.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,iBAAiB,MAAM,qBAAqB,CAAC;AAEzD,MAAM,MAAM,QAAQ,GAClB,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,YAAY,CAAC;AAE5D,UAAU,IAAI;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,2DAA2D;IAC3D,iBAAiB,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAC7C,GAAG,EAAE,SAAS,EAAE,CAAC;CAClB;AAED,eAAe,IAAI,CAAC;AAEpB,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC"}
1
+ {"version":3,"file":"Note.d.ts","sourceRoot":"","sources":["../../../src/types/Note.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,iBAAiB,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C,MAAM,MAAM,QAAQ,GAClB,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,YAAY,CAAC;AAE5D,UAAU,IAAI;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,2DAA2D;IAC3D,iBAAiB,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAC7C;;mEAE+D;IAC/D,MAAM,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IAC1B;qBACiB;IACjB,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;IACzB,GAAG,EAAE,SAAS,EAAE,CAAC;CAClB;AAED,eAAe,IAAI,CAAC;AAEpB,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC"}
@@ -2838,18 +2838,25 @@ var Mn = [
2838
2838
  type: "NOTE",
2839
2839
  message: "",
2840
2840
  sourceDiscrepancy: null,
2841
+ source: null,
2841
2842
  ref: [],
2842
2843
  _relations: { ref: [] }
2843
2844
  };
2844
- return v(t, (t, a) => {
2845
+ return v(t, (t, o, s) => {
2845
2846
  if (t === "type") {
2846
- let t = a();
2847
+ let t = o();
2847
2848
  if (!Mn.includes(t)) throw Error(`Parsing error: note. ID ${e}: Unknown type ${t} (valid: ${Mn.join(", ")})`);
2848
2849
  n.type = t;
2849
- } else if (t === "message") n.message = x(a);
2850
- else if (t === "source_discrepancy") n.sourceDiscrepancy = A(i(a()));
2851
- else if (t === "reference") n._relations.ref = r(a());
2852
- else return !1;
2850
+ } else if (t === "message") n.message = x(o);
2851
+ else if (t === "source_discrepancy") n.sourceDiscrepancy = A(i(o()));
2852
+ else if (t === "source") {
2853
+ let e = I(i(o()));
2854
+ n.source ||= e, (n.sourceRefs ??= []).push(e);
2855
+ } else if (t === "reference") n._relations.ref = r(o());
2856
+ else if (t === "ref") {
2857
+ let e = C(o, s, a, i);
2858
+ T(n, e);
2859
+ } else return !1;
2853
2860
  return !0;
2854
2861
  }, {
2855
2862
  construct: "note",
@@ -2867,7 +2874,9 @@ var Mn = [
2867
2874
  };
2868
2875
  }, Fn = function(e) {
2869
2876
  let t = "note " + e.id + " {\n";
2870
- if (t += " type " + e.type + "\n", t += " message \"" + s(e.message) + "\"\n", e.sourceDiscrepancy && (t += j(e.sourceDiscrepancy, " ") + "\n"), e.ref.length > 0) {
2877
+ t += " type " + e.type + "\n", t += " message \"" + s(e.message) + "\"\n", e.sourceDiscrepancy && (t += j(e.sourceDiscrepancy, " ") + "\n");
2878
+ for (let n of e.sourceRefs ?? (e.source && (e.source.doc || e.source.clause) ? [e.source] : [])) t += E(n, " ", s);
2879
+ if (e.ref.length > 0) {
2871
2880
  t += " reference {\n";
2872
2881
  for (let n of e.ref) t += " " + n.id + "\n";
2873
2882
  t += " }\n";
@@ -5255,6 +5255,7 @@ var parseNote = function(id, data) {
5255
5255
  type: "NOTE",
5256
5256
  message: "",
5257
5257
  sourceDiscrepancy: null,
5258
+ source: null,
5258
5259
  ref: [],
5259
5260
  _relations: {
5260
5261
  ref: []
@@ -5262,7 +5263,7 @@ var parseNote = function(id, data) {
5262
5263
  };
5263
5264
  forEachEntry(
5264
5265
  data,
5265
- (command, value) => {
5266
+ (command, value, peek) => {
5266
5267
  if (command === "type") {
5267
5268
  const v = value();
5268
5269
  if (!VALID_NOTE_TYPES.includes(v)) {
@@ -5277,8 +5278,17 @@ var parseNote = function(id, data) {
5277
5278
  result.message = unwrapped(value);
5278
5279
  } else if (command === "source_discrepancy") {
5279
5280
  result.sourceDiscrepancy = parseSourceDiscrepancy(unwrapBlock(value()));
5281
+ } else if (command === "source") {
5282
+ const src = readSource(unwrapBlock(value()));
5283
+ if (!result.source) {
5284
+ result.source = src;
5285
+ }
5286
+ (result.sourceRefs ??= []).push(src);
5280
5287
  } else if (command === "reference") {
5281
5288
  result._relations.ref = tokenizePackage(value());
5289
+ } else if (command === "ref") {
5290
+ const r = parseRefFromReaders(value, peek, stripWrapping, unwrapBlock);
5291
+ foldRefIntoLegacy(result, r);
5282
5292
  } else {
5283
5293
  return false;
5284
5294
  }
@@ -5308,6 +5318,9 @@ var dumpNote = function(n) {
5308
5318
  if (n.sourceDiscrepancy) {
5309
5319
  out += dumpSourceDiscrepancy(n.sourceDiscrepancy, " ") + "\n";
5310
5320
  }
5321
+ for (const src of n.sourceRefs ?? (n.source && (n.source.doc || n.source.clause) ? [n.source] : [])) {
5322
+ out += dumpSourceRefAsRef(src, " ", escapeString);
5323
+ }
5311
5324
  if (n.ref.length > 0) {
5312
5325
  out += " reference {\n";
5313
5326
  for (const r of n.ref) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@primmel/primmel",
3
- "version": "1.17.2",
3
+ "version": "1.18.0",
4
4
  "description": "Primmel — parser, types, and serializer for the Primmel modelling language (successor to MMEL)",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",