@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.
- package/dist/conformance.d.ts +1 -1
- package/dist/conformance.d.ts.map +1 -1
- package/dist/conformance.js +1 -1
- package/dist/conformance.js.map +1 -1
- package/dist/document.d.ts +16 -0
- package/dist/document.d.ts.map +1 -1
- package/dist/document.js +0 -0
- package/dist/document.js.map +1 -1
- package/dist/extensible.d.ts +5 -0
- package/dist/extensible.d.ts.map +1 -0
- package/dist/extensible.js +126 -0
- package/dist/extensible.js.map +1 -0
- package/dist/index.d.ts +7 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/internal.d.ts +11 -0
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +11 -0
- package/dist/internal.js.map +1 -1
- package/dist/introspect/describe.d.ts +1 -12
- package/dist/introspect/describe.d.ts.map +1 -1
- package/dist/introspect/describe.js +16 -0
- package/dist/introspect/describe.js.map +1 -1
- package/dist/object.d.ts +34 -2
- package/dist/object.d.ts.map +1 -1
- package/dist/object.js +43 -6
- package/dist/object.js.map +1 -1
- package/dist/parse/epjson.d.ts.map +1 -1
- package/dist/parse/epjson.js +23 -1
- package/dist/parse/epjson.js.map +1 -1
- package/dist/parse/idf.d.ts +16 -0
- package/dist/parse/idf.d.ts.map +1 -1
- package/dist/parse/idf.js +102 -50
- package/dist/parse/idf.js.map +1 -1
- package/dist/parse/lexer.d.ts +6 -13
- package/dist/parse/lexer.d.ts.map +1 -1
- package/dist/parse/lexer.js +63 -110
- package/dist/parse/lexer.js.map +1 -1
- package/dist/parse/scan.d.ts +34 -0
- package/dist/parse/scan.d.ts.map +1 -0
- package/dist/parse/scan.js +177 -0
- package/dist/parse/scan.js.map +1 -0
- package/dist/preserve/source.d.ts +3 -0
- package/dist/preserve/source.d.ts.map +1 -0
- package/dist/preserve/source.js +60 -0
- package/dist/preserve/source.js.map +1 -0
- package/dist/preserve/write.d.ts +2 -0
- package/dist/preserve/write.d.ts.map +1 -0
- package/dist/preserve/write.js +85 -0
- package/dist/preserve/write.js.map +1 -0
- package/dist/syntax/classify.d.ts +25 -0
- package/dist/syntax/classify.d.ts.map +1 -0
- package/dist/syntax/classify.js +59 -0
- package/dist/syntax/classify.js.map +1 -0
- package/dist/syntax/layer.d.ts +67 -0
- package/dist/syntax/layer.d.ts.map +1 -0
- package/dist/syntax/layer.js +158 -0
- package/dist/syntax/layer.js.map +1 -0
- package/dist/syntax/region.d.ts +73 -0
- package/dist/syntax/region.d.ts.map +1 -0
- package/dist/syntax/region.js +105 -0
- package/dist/syntax/region.js.map +1 -0
- package/dist/syntax/tokens.d.ts +80 -0
- package/dist/syntax/tokens.d.ts.map +1 -0
- package/dist/syntax/tokens.js +140 -0
- package/dist/syntax/tokens.js.map +1 -0
- package/dist/write/epjson.d.ts +19 -0
- package/dist/write/epjson.d.ts.map +1 -1
- package/dist/write/epjson.js +12 -0
- package/dist/write/epjson.js.map +1 -1
- package/dist/write/idf.d.ts +23 -7
- package/dist/write/idf.d.ts.map +1 -1
- package/dist/write/idf.js +51 -7
- package/dist/write/idf.js.map +1 -1
- package/package.json +4 -4
package/dist/conformance.d.ts
CHANGED
|
@@ -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.
|
|
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,
|
|
1
|
+
{"version":3,"file":"conformance.d.ts","sourceRoot":"","sources":["../src/conformance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,wBAAwB,CAAC"}
|
package/dist/conformance.js
CHANGED
|
@@ -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.
|
|
19
|
+
export const CONFORMANCE_LEVEL = 'conformance-2026.10';
|
|
20
20
|
//# sourceMappingURL=conformance.js.map
|
package/dist/conformance.js.map
CHANGED
|
@@ -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,
|
|
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"}
|
package/dist/document.d.ts
CHANGED
|
@@ -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
|
}
|
package/dist/document.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../src/document.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAY,MAAM,iBAAiB,CAAC;AAExD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,SAAS,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;
|
|
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
|
package/dist/document.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document.js","sourceRoot":"","sources":["../src/document.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"document.js","sourceRoot":"","sources":["../src/document.ts"],"names":[],"mappings":"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"}
|
|
@@ -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":"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"}
|
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
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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"}
|
package/dist/internal.d.ts
CHANGED
|
@@ -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
|
package/dist/internal.d.ts.map
CHANGED
|
@@ -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
|
package/dist/internal.js.map
CHANGED
|
@@ -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;
|
|
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":"
|
|
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
|
/**
|
package/dist/object.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../src/object.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;
|
|
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 {
|
|
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
|
-
|
|
140
|
-
if (
|
|
141
|
-
|
|
142
|
-
|
|
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
|
/**
|