@open-charging-cloud/chargy-core 0.15.1 → 0.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +109 -0
- package/README.md +1 -1
- package/dist/browser/index.js.map +1 -1
- package/dist/interfaces/IChargeTransparencyLiveLink.d.ts +12 -10
- package/dist/interfaces/IChargeTransparencyLiveLink.d.ts.map +1 -1
- package/dist/interfaces/IChargeTransparencyRecord.d.ts +2 -0
- package/dist/interfaces/IChargeTransparencyRecord.d.ts.map +1 -1
- package/dist/interfaces/chargyInterfaces.d.ts +18 -4
- package/dist/interfaces/chargyInterfaces.d.ts.map +1 -1
- package/dist/node/index.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,115 @@ While the version number is below 1.0.0, breaking changes are released in minor
|
|
|
7
7
|
versions and are always listed first below.
|
|
8
8
|
|
|
9
9
|
|
|
10
|
+
## [0.16.0] - 2026-09-08
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- **A grid operator is a party to a charging session.** When the grid asks a
|
|
15
|
+
station to charge more slowly, the session's power drops for a reason that is
|
|
16
|
+
neither the car's nor the station's, and without the constraint and the key
|
|
17
|
+
it was signed with that dip is indistinguishable from a fault. `IGridOperator`
|
|
18
|
+
carries the identity and the keys to tell the two apart: a charging station
|
|
19
|
+
operator minus everything about charging infrastructure, because a grid
|
|
20
|
+
operator runs no pools, stations or tariffs. `@id` is all it requires. A live
|
|
21
|
+
link names one in `gridOperator`, a charge transparency record several in
|
|
22
|
+
`gridOperators` - a live link describes one ongoing session, a record may
|
|
23
|
+
span several grids.
|
|
24
|
+
|
|
25
|
+
- **`signGridPowerConstraints` is the key usage a grid operator signs under.**
|
|
26
|
+
It joins `signCTRs` for whole records and `signMeterValues` /
|
|
27
|
+
`signEnergyMeterValues` for readings. A constraint is signed with every key
|
|
28
|
+
the operator holds for that usage, so a verifier supporting either algorithm
|
|
29
|
+
can check it.
|
|
30
|
+
|
|
31
|
+
- **The OCMF-Test-01 series carries a power constraint.** It is now a five
|
|
32
|
+
minute session in 35 documents instead of a three minute one in twenty, and
|
|
33
|
+
the grid operator limits the charging power to 6 kW for one minute in the
|
|
34
|
+
middle of it. The constraint is a `legallyRelevantLogMessage` signed by
|
|
35
|
+
`DE*VEN` under `signGridPowerConstraints` with one ECDSA and one Ed25519 key,
|
|
36
|
+
the meter takes an extra reading where it begins and where it ends, the power
|
|
37
|
+
in between stays below the limit, and the charging periods are cut at both
|
|
38
|
+
ends of it - which is the whole point of the fixture: a dip in the curve with
|
|
39
|
+
a signed explanation next to it. The generator gained
|
|
40
|
+
`OCMF-Test-01__LRLMs.json`, the log messages whose times are relative to the
|
|
41
|
+
start reading, and `--log-messages` / `--no-log-messages` to steer them.
|
|
42
|
+
|
|
43
|
+
- **Every optional property of the live link document may now be explicitly
|
|
44
|
+
`undefined`.**
|
|
45
|
+
Under `exactOptionalPropertyTypes` a bare `?:` means the property may be
|
|
46
|
+
omitted but not set to `undefined`, which made building a live link from
|
|
47
|
+
optional sources need a conditional per property. `description`, `timeSource`,
|
|
48
|
+
`chargingStationOperator`, `chargingStation`, `chargingSessionId`,
|
|
49
|
+
`eMobilityProvider`, `contract`, `warnings` and `signatureVerification` now
|
|
50
|
+
say `| undefined` like their neighbours already did.
|
|
51
|
+
|
|
52
|
+
### Fixed
|
|
53
|
+
|
|
54
|
+
- **The live link documentation described a format two releases old.** Every
|
|
55
|
+
one of these would have produced a document the current code turns away, and
|
|
56
|
+
the format documentation is where a producer looks first:
|
|
57
|
+
|
|
58
|
+
- The TOTP configuration was documented as `initialSharedSecret`, renamed to
|
|
59
|
+
`sharedSecret` in 0.15.0. `isTOTPConfig()` requires the new name, so a
|
|
60
|
+
transport copied from the documentation failed `isLiveTransport()` and was
|
|
61
|
+
dropped by a filtering reader without a word - the same failure 0.15.1
|
|
62
|
+
fixed in the fixtures, still sitting in the prose.
|
|
63
|
+
- Transports named their endpoint in `url`, removed in 0.15.0. A transport
|
|
64
|
+
copied from the documentation was well-formed and named no endpoint at all.
|
|
65
|
+
- The minimal document had no `created` and was described as the smallest
|
|
66
|
+
recognised live link. Since 0.15.0 it is not a live link at all:
|
|
67
|
+
recognition requires `@context`, `created` and `liveTransports`, and the
|
|
68
|
+
documentation still said `@context` alone decided it.
|
|
69
|
+
- Reading a document was described as filling in a missing `created`. It
|
|
70
|
+
stopped doing that in 0.15.0, because that timestamp recorded when the
|
|
71
|
+
document was *read*.
|
|
72
|
+
- The TOTP table listed two properties of seven and declared `timeStep`
|
|
73
|
+
required, which it is not; the paragraph below it said the format does not
|
|
74
|
+
specify a hash algorithm, digits or encoding, which it has since done in
|
|
75
|
+
`hashAlgorithm`, `totpLength` and `alphabet`.
|
|
76
|
+
- `refresh` was said to be validated by `IsAChargeTransparencyLiveLink()` and
|
|
77
|
+
the point-of-use guards to include an `isTransport`. Both are
|
|
78
|
+
`isLiveTransport()` now.
|
|
79
|
+
|
|
80
|
+
### Changed
|
|
81
|
+
|
|
82
|
+
- **The format documentation lists the properties a live link declares.** The
|
|
83
|
+
interfaces grew in 0.14.0 and 0.15.0 without the documentation following, so
|
|
84
|
+
`chargingSessionId`, `eMobilityProvider`, `chargingPeriods`,
|
|
85
|
+
`legallyRelevantLogMessages` and `supportMessages` appeared nowhere, while
|
|
86
|
+
nine properties that *are* declared were still listed as carried by the
|
|
87
|
+
fixtures and unvalidated. That section now holds what it says: `@id`,
|
|
88
|
+
`imageURLs` and the superseded `geoLocation` and `connector`.
|
|
89
|
+
|
|
90
|
+
- **An operator's `contact`, `support` and `privacy` are optional.**
|
|
91
|
+
`IChargingStationOperator` had required all three since it was written, and
|
|
92
|
+
`IGridOperator` inherited that when it took its shape. No document in the
|
|
93
|
+
repository carries any of them, nothing validates them, and requiring them
|
|
94
|
+
forced anyone building an operator in TypeScript to invent three properties
|
|
95
|
+
the format's own fixtures do without.
|
|
96
|
+
|
|
97
|
+
- **The fixtures write an operator's `name` as the `I18NString` it is typed
|
|
98
|
+
as.** The template said `"GraphDefined"` and `"Vanaheimr Electric"` where the
|
|
99
|
+
interfaces say a language-tag-to-string object, so the one document meant to
|
|
100
|
+
show the format did not follow it. It is `{ "en": ... }` now, and the series
|
|
101
|
+
is regenerated.
|
|
102
|
+
|
|
103
|
+
- **`ILegallyRelevantLogMessage` names its `text` before its `data`.** The
|
|
104
|
+
message comes before the payload that qualifies it, the way `ISupportMessage`
|
|
105
|
+
already had it.
|
|
106
|
+
|
|
107
|
+
- **`CTR_Format.md` lists `gridOperators`** among the top-level properties of a
|
|
108
|
+
charge transparency record.
|
|
109
|
+
|
|
110
|
+
- **Two live link tests no longer spell out what the generator regenerates.**
|
|
111
|
+
One asserted `created` to be a fixed timestamp and one the meter values to
|
|
112
|
+
number twenty; both are properties of the moment the fixture was generated
|
|
113
|
+
and of the session parameters, so both broke the first time the series was
|
|
114
|
+
regenerated. They now compare `created` against what the document itself
|
|
115
|
+
states - which is the actual assertion, that reading neither fills in nor
|
|
116
|
+
replaces it - and count the OCMF documents rather than naming a number.
|
|
117
|
+
|
|
118
|
+
|
|
10
119
|
## [0.15.1] - 2026-09-07
|
|
11
120
|
|
|
12
121
|
### Fixed
|