@idfkit/core 0.2.0-rc.2 → 0.3.0-rc.1

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.
Files changed (76) hide show
  1. package/dist/conformance.d.ts +1 -1
  2. package/dist/conformance.d.ts.map +1 -1
  3. package/dist/conformance.js +1 -1
  4. package/dist/conformance.js.map +1 -1
  5. package/dist/document.d.ts +16 -0
  6. package/dist/document.d.ts.map +1 -1
  7. package/dist/document.js +0 -0
  8. package/dist/document.js.map +1 -1
  9. package/dist/extensible.d.ts +5 -0
  10. package/dist/extensible.d.ts.map +1 -0
  11. package/dist/extensible.js +126 -0
  12. package/dist/extensible.js.map +1 -0
  13. package/dist/index.d.ts +7 -1
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +3 -0
  16. package/dist/index.js.map +1 -1
  17. package/dist/internal.d.ts +11 -0
  18. package/dist/internal.d.ts.map +1 -1
  19. package/dist/internal.js +11 -0
  20. package/dist/internal.js.map +1 -1
  21. package/dist/introspect/describe.d.ts +1 -12
  22. package/dist/introspect/describe.d.ts.map +1 -1
  23. package/dist/introspect/describe.js +16 -0
  24. package/dist/introspect/describe.js.map +1 -1
  25. package/dist/object.d.ts +34 -2
  26. package/dist/object.d.ts.map +1 -1
  27. package/dist/object.js +43 -6
  28. package/dist/object.js.map +1 -1
  29. package/dist/parse/epjson.d.ts.map +1 -1
  30. package/dist/parse/epjson.js +23 -1
  31. package/dist/parse/epjson.js.map +1 -1
  32. package/dist/parse/idf.d.ts +16 -0
  33. package/dist/parse/idf.d.ts.map +1 -1
  34. package/dist/parse/idf.js +102 -50
  35. package/dist/parse/idf.js.map +1 -1
  36. package/dist/parse/lexer.d.ts +6 -13
  37. package/dist/parse/lexer.d.ts.map +1 -1
  38. package/dist/parse/lexer.js +63 -110
  39. package/dist/parse/lexer.js.map +1 -1
  40. package/dist/parse/scan.d.ts +34 -0
  41. package/dist/parse/scan.d.ts.map +1 -0
  42. package/dist/parse/scan.js +177 -0
  43. package/dist/parse/scan.js.map +1 -0
  44. package/dist/preserve/source.d.ts +3 -0
  45. package/dist/preserve/source.d.ts.map +1 -0
  46. package/dist/preserve/source.js +60 -0
  47. package/dist/preserve/source.js.map +1 -0
  48. package/dist/preserve/write.d.ts +2 -0
  49. package/dist/preserve/write.d.ts.map +1 -0
  50. package/dist/preserve/write.js +85 -0
  51. package/dist/preserve/write.js.map +1 -0
  52. package/dist/syntax/classify.d.ts +25 -0
  53. package/dist/syntax/classify.d.ts.map +1 -0
  54. package/dist/syntax/classify.js +59 -0
  55. package/dist/syntax/classify.js.map +1 -0
  56. package/dist/syntax/layer.d.ts +67 -0
  57. package/dist/syntax/layer.d.ts.map +1 -0
  58. package/dist/syntax/layer.js +158 -0
  59. package/dist/syntax/layer.js.map +1 -0
  60. package/dist/syntax/region.d.ts +73 -0
  61. package/dist/syntax/region.d.ts.map +1 -0
  62. package/dist/syntax/region.js +105 -0
  63. package/dist/syntax/region.js.map +1 -0
  64. package/dist/syntax/tokens.d.ts +80 -0
  65. package/dist/syntax/tokens.d.ts.map +1 -0
  66. package/dist/syntax/tokens.js +140 -0
  67. package/dist/syntax/tokens.js.map +1 -0
  68. package/dist/write/epjson.d.ts +19 -0
  69. package/dist/write/epjson.d.ts.map +1 -1
  70. package/dist/write/epjson.js +12 -0
  71. package/dist/write/epjson.js.map +1 -1
  72. package/dist/write/idf.d.ts +23 -7
  73. package/dist/write/idf.d.ts.map +1 -1
  74. package/dist/write/idf.js +51 -7
  75. package/dist/write/idf.js.map +1 -1
  76. package/package.json +4 -4
@@ -16,5 +16,5 @@
16
16
  * This is not a version number and it is not compared to one. Two installed libraries agree on the
17
17
  * formats when they declare the same level, whatever their own versions say (FR-025).
18
18
  */
19
- export declare const CONFORMANCE_LEVEL = "conformance-2026.8";
19
+ export declare const CONFORMANCE_LEVEL = "conformance-2026.10";
20
20
  //# sourceMappingURL=conformance.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"conformance.d.ts","sourceRoot":"","sources":["../src/conformance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,uBAAuB,CAAC"}
1
+ {"version":3,"file":"conformance.d.ts","sourceRoot":"","sources":["../src/conformance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,wBAAwB,CAAC"}
@@ -16,5 +16,5 @@
16
16
  * This is not a version number and it is not compared to one. Two installed libraries agree on the
17
17
  * formats when they declare the same level, whatever their own versions say (FR-025).
18
18
  */
19
- export const CONFORMANCE_LEVEL = 'conformance-2026.8';
19
+ export const CONFORMANCE_LEVEL = 'conformance-2026.10';
20
20
  //# sourceMappingURL=conformance.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"conformance.js","sourceRoot":"","sources":["../src/conformance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,oBAAoB,CAAC"}
1
+ {"version":3,"file":"conformance.js","sourceRoot":"","sources":["../src/conformance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,qBAAqB,CAAC"}
@@ -22,6 +22,14 @@ export declare class IdfDocument<M extends AnyTypeMap = UntypedMap> implements O
22
22
  /** EnergyPlus version this model targets, e.g. `"26.1.0"`. */
23
23
  get version(): string;
24
24
  get references(): ReferenceGraph;
25
+ /**
26
+ * The text this document was read from, when it was read with `preserveFormatting`.
27
+ *
28
+ * `undefined` after an ordinary read, which is how a consumer answers whether a write will
29
+ * preserve: a save button that has to say "this will reformat your file" needs this and nothing
30
+ * more. The anchoring behind it stays internal, because `scanIdf` already exports the layer.
31
+ */
32
+ get rawText(): string | undefined;
25
33
  /** Object type names present in this document, in insertion order. */
26
34
  types(): string[];
27
35
  /** Total object count across all types. */
@@ -120,6 +128,14 @@ export declare class IdfDocument<M extends AnyTypeMap = UntypedMap> implements O
120
128
  * by the real engine.
121
129
  */
122
130
  toJSON(): Record<string, Record<string, Record<string, StoredValue>>>;
131
+ /**
132
+ * Whether an in-place edit to an extensible repeat has to be heard.
133
+ *
134
+ * Only while this document carries a retained source. Without one there is no touched record to
135
+ * maintain and nothing a preserving write would consult, so the repeats stay plain objects and a
136
+ * geometry consumer reads a coordinate at the cost it has always read one at.
137
+ */
138
+ tracksExtensibleEdits(): boolean;
123
139
  onFieldChanged(obj: IdfObject, field: string, previous: unknown, next: unknown): void;
124
140
  onNameChanged(obj: IdfObject, previous: string, next: string): void;
125
141
  }
@@ -1 +1 @@
1
- {"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../src/document.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../src/document.ts"],"names":[],"mappings":"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"}
package/dist/document.js CHANGED
Binary file
@@ -1 +1 @@
1
- {"version":3,"file":"document.js","sourceRoot":"","sources":["../src/document.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"document.js","sourceRoot":"","sources":["../src/document.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /** What an extensible wrapper tells when it is mutated. */
2
+ export interface ExtensibleOwner {
3
+ (): void;
4
+ }
5
+ //# sourceMappingURL=extensible.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extensible.d.ts","sourceRoot":"","sources":["../src/extensible.ts"],"names":[],"mappings":"AAEA,2DAA2D;AAC3D,MAAM,WAAW,eAAe;IAC9B,IAAI,IAAI,CAAC;CACV"}
@@ -0,0 +1,126 @@
1
+ /**
2
+ * The repeats of an extensible section, as an array that says when it is written to.
3
+ *
4
+ * `get extensible()` used to hand back the object's own data array, so `push` reached the object
5
+ * without passing any accessor and notified nobody. A preserving writer then emits the object's
6
+ * original vertices and discards the edit, in a file that loads.
7
+ *
8
+ * An Array subclass, and no `Proxy`: a proxy would charge every read of every vertex to catch a
9
+ * write, and reading vertices is a hot path. `Symbol.species` is `Array`, so `map` and `slice` hand
10
+ * back plain arrays as they always did.
11
+ *
12
+ * @internal
13
+ */
14
+ export class ExtensibleList extends Array {
15
+ /** Derived operations produce plain arrays, not more of these. */
16
+ static get [Symbol.species]() {
17
+ return Array;
18
+ }
19
+ /**
20
+ * Wrap an object's repeats, arming each one so a write to its fields is heard too.
21
+ *
22
+ * A static rather than a constructor, because `Array`'s constructor takes a length and a
23
+ * subclass whose constructor means something else is one every array operation can misuse.
24
+ */
25
+ static adopt(groups, fields, changed) {
26
+ const list = new ExtensibleList();
27
+ Object.defineProperty(list, 'changed', { value: changed, enumerable: false });
28
+ Object.defineProperty(list, 'fields', { value: fields, enumerable: false });
29
+ for (const group of groups)
30
+ Array.prototype.push.call(list, arm(group, fields, changed));
31
+ return list;
32
+ }
33
+ push(...groups) {
34
+ const length = super.push(...groups.map((g) => arm(g, this.fields, this.changed)));
35
+ this.changed();
36
+ return length;
37
+ }
38
+ pop() {
39
+ const group = super.pop();
40
+ this.changed();
41
+ return group;
42
+ }
43
+ shift() {
44
+ const group = super.shift();
45
+ this.changed();
46
+ return group;
47
+ }
48
+ unshift(...groups) {
49
+ const length = super.unshift(...groups.map((g) => arm(g, this.fields, this.changed)));
50
+ this.changed();
51
+ return length;
52
+ }
53
+ splice(start, deleteCount, ...groups) {
54
+ const removed = deleteCount === undefined
55
+ ? super.splice(start)
56
+ : super.splice(start, deleteCount, ...groups.map((g) => arm(g, this.fields, this.changed)));
57
+ this.changed();
58
+ return removed;
59
+ }
60
+ reverse() {
61
+ super.reverse();
62
+ this.changed();
63
+ return this;
64
+ }
65
+ sort(compare) {
66
+ super.sort(compare);
67
+ this.changed();
68
+ return this;
69
+ }
70
+ }
71
+ /**
72
+ * A repeat that says when one of its fields is written.
73
+ *
74
+ * The accessors are OWN properties, not prototype ones: a repeat is compared with `toEqual` and
75
+ * spread with `{ ...group }`, and both read own enumerable properties. Every field the schema
76
+ * declares is armed, not only the ones this repeat carries, so writing a coordinate the file left
77
+ * blank is heard; a field the repeat does not carry is armed but not enumerable until it is
78
+ * written, so a repeat spreads and compares exactly as the plain object it replaces.
79
+ *
80
+ * Arming happens when a caller reaches for `extensible`, never during a read, so a parse nobody
81
+ * reaches into pays nothing.
82
+ */
83
+ function arm(group, fields, changed) {
84
+ if (ARMED in group)
85
+ return group;
86
+ const values = Object.create(null);
87
+ const armed = {};
88
+ Object.defineProperty(armed, ARMED, { value: true, enumerable: false });
89
+ for (const field of fields.length > 0 ? fields : Object.keys(group)) {
90
+ const present = Object.hasOwn(group, field);
91
+ if (present)
92
+ values[field] = group[field];
93
+ define(armed, field, values, present, changed);
94
+ }
95
+ // A field the schema does not declare, which a hand-built repeat can still carry. Kept rather
96
+ // than dropped: losing a value on the way through a wrapper is worse than tracking an odd one.
97
+ for (const [field, value] of Object.entries(group)) {
98
+ if (Object.hasOwn(armed, field))
99
+ continue;
100
+ values[field] = value;
101
+ define(armed, field, values, true, changed);
102
+ }
103
+ return armed;
104
+ }
105
+ /** One field's accessor, which makes itself enumerable the first time it is written. */
106
+ function define(armed, field, values, enumerable, changed) {
107
+ Object.defineProperty(armed, field, {
108
+ enumerable,
109
+ configurable: true,
110
+ get() {
111
+ return values[field];
112
+ },
113
+ set(next) {
114
+ if (values[field] === next)
115
+ return;
116
+ values[field] = next;
117
+ if (!Object.getOwnPropertyDescriptor(this, field)?.enumerable) {
118
+ define(this, field, values, true, changed);
119
+ }
120
+ changed();
121
+ },
122
+ });
123
+ }
124
+ /** Marks a repeat that already carries its accessors, so arming one twice is free. */
125
+ const ARMED = Symbol('idfkit.armed');
126
+ //# sourceMappingURL=extensible.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extensible.js","sourceRoot":"","sources":["../src/extensible.ts"],"names":[],"mappings":"AAOA;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,cAAe,SAAQ,KAAsB;IACxD,kEAAkE;IAClE,MAAM,KAAc,CAAC,MAAM,CAAC,OAAO,CAAC;QAClC,OAAO,KAAK,CAAC;IACf,CAAC;IAOD;;;;;OAKG;IACH,MAAM,CAAC,KAAK,CACV,MAAkC,EAClC,MAAyB,EACzB,OAAwB;QAExB,MAAM,IAAI,GAAG,IAAI,cAAc,EAAE,CAAC;QAClC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9E,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;QAC5E,KAAK,MAAM,KAAK,IAAI,MAAM;YAAE,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QACzF,OAAO,IAAI,CAAC;IACd,CAAC;IAEQ,IAAI,CAAC,GAAG,MAAyB;QACxC,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACnF,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,OAAO,MAAM,CAAC;IAChB,CAAC;IAEQ,GAAG;QACV,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;QAC1B,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,OAAO,KAAK,CAAC;IACf,CAAC;IAEQ,KAAK;QACZ,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,OAAO,KAAK,CAAC;IACf,CAAC;IAEQ,OAAO,CAAC,GAAG,MAAyB;QAC3C,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACtF,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,OAAO,MAAM,CAAC;IAChB,CAAC;IAEQ,MAAM,CACb,KAAa,EACb,WAAoB,EACpB,GAAG,MAAyB;QAE5B,MAAM,OAAO,GACX,WAAW,KAAK,SAAS;YACvB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;YACrB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAChG,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,OAAO,OAAO,CAAC;IACjB,CAAC;IAEQ,OAAO;QACd,KAAK,CAAC,OAAO,EAAE,CAAC;QAChB,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IAEQ,IAAI,CAAC,OAA4D;QACxE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpB,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED;;;;;;;;;;;GAWG;AACH,SAAS,GAAG,CACV,KAAsB,EACtB,MAAyB,EACzB,OAAwB;IAExB,IAAI,KAAK,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC;IAEjC,MAAM,MAAM,GAAgD,MAAM,CAAC,MAAM,CAAC,IAAI,CAG7E,CAAC;IACF,MAAM,KAAK,GAAoB,EAAE,CAAC;IAClC,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;IAExE,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACpE,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC5C,IAAI,OAAO;YAAE,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;QAC1C,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC;IACD,8FAA8F;IAC9F,+FAA+F;IAC/F,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACnD,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC;YAAE,SAAS;QAC1C,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;QACtB,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,wFAAwF;AACxF,SAAS,MAAM,CACb,KAAsB,EACtB,KAAa,EACb,MAAmD,EACnD,UAAmB,EACnB,OAAwB;IAExB,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE;QAClC,UAAU;QACV,YAAY,EAAE,IAAI;QAClB,GAAG;YACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;QACD,GAAG,CAAwB,IAAqB;YAC9C,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI;gBAAE,OAAO;YACnC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;YACrB,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;gBAC9D,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YAC7C,CAAC;YACD,OAAO,EAAE,CAAC;QACZ,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,sFAAsF;AACtF,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -31,6 +31,12 @@ export { getIdfVersion, IdfParseError, parseIdf } from './parse/idf.js';
31
31
  export type { ParseDiagnostic, ParseOptions, ParseResult } from './parse/idf.js';
32
32
  export { getEpJsonVersion, parseEpJson } from './parse/epjson.js';
33
33
  export type { EpJson } from './parse/epjson.js';
34
+ export { scanIdf } from './syntax/layer.js';
35
+ export type { Statement, SyntaxLayer } from './syntax/layer.js';
36
+ export { classify } from './syntax/classify.js';
37
+ export type { Token, TokenKind } from './syntax/tokens.js';
38
+ export { lineColumnAt, offsetAt } from './syntax/region.js';
39
+ export type { LineColumn, Region } from './syntax/region.js';
34
40
  export { writeIdf, writeObject } from './write/idf.js';
35
41
  export type { ObjectWriteOptions, WriteIdfOptions } from './write/idf.js';
36
42
  export { toEpJson, writeEpJson } from './write/epjson.js';
@@ -42,5 +48,5 @@ export type { FieldDescription, ObjectDescription } from './introspect/describe.
42
48
  export { docsUrlForObject, engineeringReferenceUrl, ioReferenceUrl, searchUrl, } from './docs-url/index.js';
43
49
  export type { DocsUrl } from './docs-url/index.js';
44
50
  export { Schema, SchemaBundle, httpSource } from '@idfkit/schemas';
45
- export type { BundleSource, SchemaDelta, SlimField, SlimType } from '@idfkit/schemas';
51
+ export type { BundleSource, ProsePool, SchemaDelta, SlimField, SlimType } from '@idfkit/schemas';
46
52
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EACV,eAAe,EACf,UAAU,EACV,WAAW,EACX,WAAW,EACX,WAAW,GACZ,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5D,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC3F,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAI5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACxE,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAClE,YAAY,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACvD,YAAY,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC1D,YAAY,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACjF,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAEpF,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,cAAc,EACd,SAAS,GACV,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACnE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EACV,eAAe,EACf,UAAU,EACV,WAAW,EACX,WAAW,EACX,WAAW,GACZ,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5D,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC3F,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAI5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACxE,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAClE,YAAY,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC5D,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE7D,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACvD,YAAY,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC1D,YAAY,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACjF,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAEpF,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,cAAc,EACd,SAAS,GACV,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACnE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC"}
package/dist/index.js CHANGED
@@ -27,6 +27,9 @@ export { CONFORMANCE_LEVEL } from './conformance.js';
27
27
  export { lex } from './parse/lexer.js';
28
28
  export { getIdfVersion, IdfParseError, parseIdf } from './parse/idf.js';
29
29
  export { getEpJsonVersion, parseEpJson } from './parse/epjson.js';
30
+ export { scanIdf } from './syntax/layer.js';
31
+ export { classify } from './syntax/classify.js';
32
+ export { lineColumnAt, offsetAt } from './syntax/region.js';
30
33
  export { writeIdf, writeObject } from './write/idf.js';
31
34
  export { toEpJson, writeEpJson } from './write/epjson.js';
32
35
  export { Severity, validateDocument, validateObject } from './validate/index.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAQxC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5D,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE5E,8EAA8E;AAC9E,+EAA+E;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAEvC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAExE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGlE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAEvD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAG1D,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAG9D,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,cAAc,EACd,SAAS,GACV,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAQxC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5D,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE5E,8EAA8E;AAC9E,+EAA+E;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAEvC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAExE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGlE,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAG5D,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAEvD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAG1D,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAG9D,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,cAAc,EACd,SAAS,GACV,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
@@ -22,4 +22,15 @@ export declare const NAME: unique symbol;
22
22
  * which still need a unique slot in the collection.
23
23
  */
24
24
  export declare const KEY: unique symbol;
25
+ /**
26
+ * Index into the document's `PreservedSource.anchors`, or `undefined`.
27
+ *
28
+ * The touched record. An object still carrying its statement's index, whose anchor is still this
29
+ * object, is written by copying those characters; anything that changes the object clears it.
30
+ *
31
+ * Maintained as changes happen rather than compared at write time. Comparing would mean holding a
32
+ * second copy of the model, and it is wrong in the case that matters most: a field written to a
33
+ * new value and back again is unchanged by comparison and touched in truth.
34
+ */
35
+ export declare const SOURCE: unique symbol;
25
36
  //# sourceMappingURL=internal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,iEAAiE;AACjE,eAAO,MAAM,IAAI,eAAwB,CAAC;AAE1C,oEAAoE;AACpE,eAAO,MAAM,KAAK,eAAyB,CAAC;AAE5C,2DAA2D;AAC3D,eAAO,MAAM,KAAK,eAAyB,CAAC;AAE5C,8DAA8D;AAC9D,eAAO,MAAM,IAAI,eAAwB,CAAC;AAE1C;;;;;;;GAOG;AACH,eAAO,MAAM,GAAG,eAAuB,CAAC"}
1
+ {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,iEAAiE;AACjE,eAAO,MAAM,IAAI,eAAwB,CAAC;AAE1C,oEAAoE;AACpE,eAAO,MAAM,KAAK,eAAyB,CAAC;AAE5C,2DAA2D;AAC3D,eAAO,MAAM,KAAK,eAAyB,CAAC;AAE5C,8DAA8D;AAC9D,eAAO,MAAM,IAAI,eAAwB,CAAC;AAE1C;;;;;;;GAOG;AACH,eAAO,MAAM,GAAG,eAAuB,CAAC;AAExC;;;;;;;;;GASG;AACH,eAAO,MAAM,MAAM,eAA0B,CAAC"}
package/dist/internal.js CHANGED
@@ -22,4 +22,15 @@ export const NAME = Symbol('idfkit.name');
22
22
  * which still need a unique slot in the collection.
23
23
  */
24
24
  export const KEY = Symbol('idfkit.key');
25
+ /**
26
+ * Index into the document's `PreservedSource.anchors`, or `undefined`.
27
+ *
28
+ * The touched record. An object still carrying its statement's index, whose anchor is still this
29
+ * object, is written by copying those characters; anything that changes the object clears it.
30
+ *
31
+ * Maintained as changes happen rather than compared at write time. Comparing would mean holding a
32
+ * second copy of the model, and it is wrong in the case that matters most: a field written to a
33
+ * new value and back again is unchanged by comparison and touched in truth.
34
+ */
35
+ export const SOURCE = Symbol('idfkit.source');
25
36
  //# sourceMappingURL=internal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"internal.js","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,iEAAiE;AACjE,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;AAE1C,oEAAoE;AACpE,MAAM,CAAC,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AAE5C,2DAA2D;AAC3D,MAAM,CAAC,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AAE5C,8DAA8D;AAC9D,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;AAE1C;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC"}
1
+ {"version":3,"file":"internal.js","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,iEAAiE;AACjE,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;AAE1C,oEAAoE;AACpE,MAAM,CAAC,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AAE5C,2DAA2D;AAC3D,MAAM,CAAC,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AAE5C,8DAA8D;AAC9D,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;AAE1C;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;AAExC;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { Schema } from '@idfkit/schemas';
1
+ import type { ProsePool, Schema } from '@idfkit/schemas';
2
2
  /**
3
3
  * Description of a single field in an EnergyPlus object type.
4
4
  *
@@ -102,16 +102,5 @@ export interface ObjectDescription {
102
102
  * Python raises `UnknownObjectTypeError`, which has no registered TypeScript
103
103
  * counterpart and so must not become a new exported class.
104
104
  */
105
- /**
106
- * The schema's explanatory prose, loaded on demand.
107
- *
108
- * A plain array of strings, indexed by `SlimType.m` and `SlimField.n`. It is
109
- * passed in rather than reached for, and that is deliberate: reading it is
110
- * asynchronous, `describeObjectType` is synchronous, and making the function
111
- * async to fetch a file most callers do not want would be a breaking change
112
- * serving the minority. Loading it is the caller's step, and its cost is
113
- * visible at the call site instead of hidden inside a description.
114
- */
115
- export type ProsePool = readonly string[];
116
105
  export declare function describeObjectType(schema: Schema, objType: string, prose?: ProsePool): ObjectDescription;
117
106
  //# sourceMappingURL=describe.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"describe.d.ts","sourceRoot":"","sources":["../../src/introspect/describe.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAuB,MAAM,iBAAiB,CAAC;AAEnE;;;;;;;GAOG;AACH,MAAM,WAAW,gBAAgB;IAC/B,sDAAsD;IACtD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;;;;;OAOG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,oEAAoE;IACpE,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAC9C,uCAAuC;IACvC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,SAAS,CAAC;IAC9D,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC;;;;;;;OAOG;IACH,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;IACxD,2EAA2E;IAC3E,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;IACxD;;;;;;;;;OASG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,sEAAsE;IACtE,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,mDAAmD;IACnD,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;CACpD;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,iDAAiD;IACjD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB;;;;;;OAMG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC7C,6CAA6C;IAC7C,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,2EAA2E;IAC3E,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,yDAAyD;IACzD,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,uDAAuD;IACvD,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7C;AAED;;;;;;;;;;;;;;;GAeG;AACH;;;;;;;;;GASG;AACH,MAAM,MAAM,SAAS,GAAG,SAAS,MAAM,EAAE,CAAC;AAE1C,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,SAAS,GAChB,iBAAiB,CAmCnB"}
1
+ {"version":3,"file":"describe.d.ts","sourceRoot":"","sources":["../../src/introspect/describe.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAuB,MAAM,iBAAiB,CAAC;AAE9E;;;;;;;GAOG;AACH,MAAM,WAAW,gBAAgB;IAC/B,sDAAsD;IACtD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;;;;;OAOG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,oEAAoE;IACpE,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAC9C,uCAAuC;IACvC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,SAAS,CAAC;IAC9D,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC;;;;;;;OAOG;IACH,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;IACxD,2EAA2E;IAC3E,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;IACxD;;;;;;;;;OASG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,sEAAsE;IACtE,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,mDAAmD;IACnD,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;CACpD;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,iDAAiD;IACjD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB;;;;;;OAMG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC7C,6CAA6C;IAC7C,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,2EAA2E;IAC3E,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,yDAAyD;IACzD,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,uDAAuD;IACvD,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7C;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,SAAS,GAChB,iBAAiB,CAmCnB"}
@@ -1,3 +1,19 @@
1
+ /**
2
+ * Describe an EnergyPlus object type: its fields, their order, and their
3
+ * constraints.
4
+ *
5
+ * Synchronous and pure, like the rest of `@idfkit/core`'s root entry: the
6
+ * schema is already in memory, and this only reads it.
7
+ *
8
+ * Ports `idfkit.introspection.describe_object_type`. Where the slim schema
9
+ * cannot reproduce Python exactly the loss is recorded in a comment at the
10
+ * point it happens rather than papered over with a plausible substitute.
11
+ *
12
+ * @throws If `objType` is not defined in this schema version. The message is
13
+ * the one `Schema.require` already produces everywhere else in the package;
14
+ * Python raises `UnknownObjectTypeError`, which has no registered TypeScript
15
+ * counterpart and so must not become a new exported class.
16
+ */
1
17
  export function describeObjectType(schema, objType, prose) {
2
18
  const type = schema.require(objType);
3
19
  // Exact-cased input resolves to itself, so this matches Python's verbatim
@@ -1 +1 @@
1
- {"version":3,"file":"describe.js","sourceRoot":"","sources":["../../src/introspect/describe.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"describe.js","sourceRoot":"","sources":["../../src/introspect/describe.ts"],"names":[],"mappings":"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"}
package/dist/object.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { SlimField, SlimType } from '@idfkit/schemas';
2
- import { DATA, KEY, NAME, OWNER, SHAPE } from './internal.js';
2
+ import { DATA, KEY, NAME, OWNER, SHAPE, SOURCE } from './internal.js';
3
3
  import { type ObjectShape } from './shape.js';
4
4
  /** A scalar field value. `undefined` means the field is absent. */
5
5
  export type FieldValue = string | number | undefined;
@@ -18,6 +18,14 @@ export type FieldValues = Record<string, StoredValue | null | undefined>;
18
18
  export interface ObjectOwner {
19
19
  onFieldChanged(obj: IdfObject, field: string, previous: unknown, next: unknown): void;
20
20
  onNameChanged(obj: IdfObject, previous: string, next: string): void;
21
+ /**
22
+ * Whether an in-place edit to an extensible repeat has to be heard.
23
+ *
24
+ * True only while the document carries a retained source, because that is the only time there is
25
+ * a touched record to maintain. Hearing it costs an accessor on every field of every repeat, and
26
+ * an accessor read is far dearer than a plain one over the vertices of a real model.
27
+ */
28
+ tracksExtensibleEdits(): boolean;
21
29
  }
22
30
  /**
23
31
  * A single EnergyPlus object.
@@ -38,6 +46,8 @@ export declare class IdfObject {
38
46
  [OWNER]: ObjectOwner | undefined;
39
47
  [NAME]: string;
40
48
  [KEY]: string;
49
+ /** Index into the document's preserved anchors, or `undefined` once anything has changed this. */
50
+ [SOURCE]: number | undefined;
41
51
  /**
42
52
  * Objects are built through `IdfObject.create`, never `new`, because each
43
53
  * instance's prototype depends on its object type.
@@ -82,7 +92,29 @@ export declare class IdfObject {
82
92
  /**
83
93
  * Repeat groups of the extensible section, e.g. the vertices of a surface.
84
94
  *
85
- * Returns a live array: pushing to it mutates the object.
95
+ * Returns a live array: pushing to it mutates the object, and so does writing a field of one of
96
+ * its repeats. Both now tell the document, which they did not before: the array handed back was
97
+ * the object's own data, so a pushed vertex reached the object without passing any accessor and
98
+ * a preserving write discarded the edit in a file that loads.
99
+ *
100
+ * It is still an array to everything that reads it. `Array.isArray` is true, indexing and
101
+ * iteration are unchanged, `map` and `filter` hand back plain arrays, and a repeat spreads and
102
+ * compares exactly as the plain object it replaces.
103
+ *
104
+ * **Only when the document carries a retained source.** A repeat's fields are own accessors, and
105
+ * an accessor read is roughly thirty times the cost of a plain property read; over the 33,000
106
+ * vertices of a real model that is measurable, and charging every vertex read is exactly what
107
+ * rejecting a `Proxy` was meant to avoid. A document read without preservation has no touched
108
+ * record to maintain, so it keeps the plain array and today's speed. A document read WITH
109
+ * preservation is being edited, and an edit that reaches the file matters more there than the
110
+ * throughput of reading a coordinate.
111
+ *
112
+ * The wrapper is built once and kept, so a read of a preserving document costs one `instanceof`
113
+ * after the first.
114
+ *
115
+ * One spelling is not heard: replacing a whole repeat by index, `obj.extensible[0] = {...}`,
116
+ * writes through the array's own index slot, which cannot be caught without charging every
117
+ * vertex read. Writing the repeat's fields and `splice` both are heard. See `extensible.ts`.
86
118
  */
87
119
  get extensible(): ExtensibleGroup[];
88
120
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../src/object.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../src/object.ts"],"names":[],"mappings":"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"}
package/dist/object.js CHANGED
@@ -1,4 +1,5 @@
1
- import { DATA, KEY, NAME, OWNER, SHAPE } from './internal.js';
1
+ import { ExtensibleList } from './extensible.js';
2
+ import { DATA, KEY, NAME, OWNER, SHAPE, SOURCE } from './internal.js';
2
3
  import { shapeFor } from './shape.js';
3
4
  /**
4
5
  * A single EnergyPlus object.
@@ -29,6 +30,10 @@ export class IdfObject {
29
30
  Object.defineProperty(obj, OWNER, { value: undefined, writable: true });
30
31
  Object.defineProperty(obj, NAME, { value: name, writable: true });
31
32
  Object.defineProperty(obj, KEY, { value: name, writable: true });
33
+ // Left undefined by construction, so an object built after the read is touched from the moment
34
+ // it exists (FR-007). `clone` builds through here too, which is why a copy is touched as well:
35
+ // it is a different object from the one the characters describe.
36
+ Object.defineProperty(obj, SOURCE, { value: undefined, writable: true });
32
37
  for (const [field, value] of Object.entries(values)) {
33
38
  if (value === undefined || value === null)
34
39
  continue;
@@ -130,17 +135,49 @@ export class IdfObject {
130
135
  /**
131
136
  * Repeat groups of the extensible section, e.g. the vertices of a surface.
132
137
  *
133
- * Returns a live array: pushing to it mutates the object.
138
+ * Returns a live array: pushing to it mutates the object, and so does writing a field of one of
139
+ * its repeats. Both now tell the document, which they did not before: the array handed back was
140
+ * the object's own data, so a pushed vertex reached the object without passing any accessor and
141
+ * a preserving write discarded the edit in a file that loads.
142
+ *
143
+ * It is still an array to everything that reads it. `Array.isArray` is true, indexing and
144
+ * iteration are unchanged, `map` and `filter` hand back plain arrays, and a repeat spreads and
145
+ * compares exactly as the plain object it replaces.
146
+ *
147
+ * **Only when the document carries a retained source.** A repeat's fields are own accessors, and
148
+ * an accessor read is roughly thirty times the cost of a plain property read; over the 33,000
149
+ * vertices of a real model that is measurable, and charging every vertex read is exactly what
150
+ * rejecting a `Proxy` was meant to avoid. A document read without preservation has no touched
151
+ * record to maintain, so it keeps the plain array and today's speed. A document read WITH
152
+ * preservation is being edited, and an edit that reaches the file matters more there than the
153
+ * throughput of reading a coordinate.
154
+ *
155
+ * The wrapper is built once and kept, so a read of a preserving document costs one `instanceof`
156
+ * after the first.
157
+ *
158
+ * One spelling is not heard: replacing a whole repeat by index, `obj.extensible[0] = {...}`,
159
+ * writes through the array's own index slot, which cannot be caught without charging every
160
+ * vertex read. Writing the repeat's fields and `splice` both are heard. See `extensible.ts`.
134
161
  */
135
162
  get extensible() {
136
163
  const key = this[SHAPE].extensibleKey;
137
164
  if (key === undefined)
138
165
  return [];
139
- let list = this[DATA][key];
140
- if (!Array.isArray(list)) {
141
- list = [];
142
- this[DATA][key] = list;
166
+ const held = this[DATA][key];
167
+ if (held instanceof ExtensibleList)
168
+ return held;
169
+ if (this[OWNER]?.tracksExtensibleEdits() !== true) {
170
+ if (Array.isArray(held))
171
+ return held;
172
+ const empty = [];
173
+ this[DATA][key] = empty;
174
+ return empty;
143
175
  }
176
+ const list = ExtensibleList.adopt(Array.isArray(held) ? held : [], this[SHAPE].type.x?.fields ?? [], () => {
177
+ this[SOURCE] = undefined;
178
+ this[OWNER]?.onFieldChanged(this, key, held, this[DATA][key]);
179
+ });
180
+ this[DATA][key] = list;
144
181
  return list;
145
182
  }
146
183
  /**