@ocpptools/builder 0.0.0-stage → 0.1.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frame.js","sourceRoot":"","sources":["../src/frame.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { Builder, BuilderOptions } from './types.js';
2
+ export declare function createBuilder(options: BuilderOptions): Builder;
3
+ export type { Builder, BuilderIssue, BuilderIssueCode, BuilderOptions, BuilderResult, BuilderSchemaRegistry, BuilderSource, BuilderWarning, BuilderWarningCode, BuildPayloadOptions, CallOptions, EmptyPayloadOptions, FieldsOptions, PayloadKind, } from './types.js';
4
+ export type { JsonLimits } from './json.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EACX,OAAO,EAEP,cAAc,EAMd,MAAM,YAAY,CAAC;AAwEpB,wBAAgB,aAAa,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAoL9D;AAED,YAAY,EACX,OAAO,EACP,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,qBAAqB,EACrB,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,WAAW,EACX,mBAAmB,EACnB,aAAa,EACb,WAAW,GACX,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,207 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ // SPDX-FileCopyrightText: 2026 Rodolfo Carrillo
3
+ import { createMessageIdGenerator } from '@ocpptools/core';
4
+ import { invalidAction, invalidKind, issue, messageOf } from './errors.js';
5
+ import { fieldsFor } from './fields.js';
6
+ import { buildCallFor, buildErrorFor, buildResultFor, serializeFor, validAction, validKind, } from './frame.js';
7
+ import { cloneJson } from './json.js';
8
+ import { buildPayloadFor, emptyPayloadFor } from './payload.js';
9
+ import { SchemaLoader } from './schema.js';
10
+ import { DEFAULT_PAYLOAD_MAX_DEPTH, DEFAULT_PAYLOAD_MAX_NODES, DEFAULT_SCHEMA_MAX_DEPTH, DEFAULT_SCHEMA_MAX_NODES, assertVersion, positiveLimit, } from './version.js';
11
+ function failure(error, warnings = []) {
12
+ return { ok: false, error, warnings };
13
+ }
14
+ function configFailure(error) {
15
+ return failure(issue('schema', 'schema-load-failed', [], `The builder options could not be read: ${messageOf(error)}`));
16
+ }
17
+ async function collectActions(source) {
18
+ if (source === undefined)
19
+ return [];
20
+ if (typeof source === 'string') {
21
+ throw new Error('The action list must be an iterable of action names, not a string');
22
+ }
23
+ const resolved = await source;
24
+ if (typeof resolved === 'string') {
25
+ throw new Error('The action list must be an iterable of action names, not a string');
26
+ }
27
+ const result = [];
28
+ const seen = new Set();
29
+ if (typeof resolved[Symbol.asyncIterator] === 'function') {
30
+ for await (const action of resolved) {
31
+ if (typeof action !== 'string' || action === '') {
32
+ throw new Error('The action list contains a non-string or empty value');
33
+ }
34
+ if (!seen.has(action)) {
35
+ seen.add(action);
36
+ result.push(action);
37
+ }
38
+ }
39
+ return result;
40
+ }
41
+ if (typeof resolved[Symbol.iterator] === 'function') {
42
+ for (const action of resolved) {
43
+ if (typeof action !== 'string' || action === '') {
44
+ throw new Error('The action list contains a non-string or empty value');
45
+ }
46
+ if (!seen.has(action)) {
47
+ seen.add(action);
48
+ result.push(action);
49
+ }
50
+ }
51
+ return result;
52
+ }
53
+ throw new Error('The action list is not iterable');
54
+ }
55
+ export function createBuilder(options) {
56
+ assertVersion(options.version);
57
+ if (typeof options.schemas !== 'object' || options.schemas === null) {
58
+ throw new Error('schemas must be an object with a get method');
59
+ }
60
+ if (typeof options.schemas.get !== 'function') {
61
+ throw new Error('schemas.get must be a function');
62
+ }
63
+ if (options.messageIds !== undefined && typeof options.messageIds !== 'function') {
64
+ throw new Error('messageIds must be a function');
65
+ }
66
+ if (options.examples !== undefined &&
67
+ (typeof options.examples !== 'object' ||
68
+ options.examples === null ||
69
+ Array.isArray(options.examples))) {
70
+ throw new Error('examples must be an object keyed by action');
71
+ }
72
+ const schemaMaxDepth = positiveLimit(options.schemaLimits?.maxDepth, DEFAULT_SCHEMA_MAX_DEPTH, 'schemaLimits.maxDepth');
73
+ const schemaMaxNodes = positiveLimit(options.schemaLimits?.maxNodes, DEFAULT_SCHEMA_MAX_NODES, 'schemaLimits.maxNodes');
74
+ const payloadMaxDepth = positiveLimit(options.payloadLimits?.maxDepth, DEFAULT_PAYLOAD_MAX_DEPTH, 'payloadLimits.maxDepth');
75
+ const payloadMaxNodes = positiveLimit(options.payloadLimits?.maxNodes, DEFAULT_PAYLOAD_MAX_NODES, 'payloadLimits.maxNodes');
76
+ const limits = { maxDepth: payloadMaxDepth, maxNodes: payloadMaxNodes };
77
+ const loader = new SchemaLoader(options.version, options.schemas, schemaMaxDepth, schemaMaxNodes);
78
+ let defaultMessageIds;
79
+ const messageIds = () => {
80
+ if (options.messageIds !== undefined)
81
+ return options.messageIds();
82
+ defaultMessageIds ??= createMessageIdGenerator();
83
+ return defaultMessageIds();
84
+ };
85
+ const examples = options.examples;
86
+ return {
87
+ version: options.version,
88
+ async has(action, kind = 'request') {
89
+ if (!validAction(action))
90
+ return failure(invalidAction(action, 'schema', []));
91
+ if (!validKind(kind))
92
+ return failure(invalidKind(kind));
93
+ const loaded = await loader.load(action, kind);
94
+ if (loaded.ok)
95
+ return { ok: true, value: true, warnings: loaded.warnings };
96
+ if (loaded.error.code === 'unknown-action') {
97
+ return { ok: true, value: false, warnings: loaded.warnings };
98
+ }
99
+ return loaded;
100
+ },
101
+ async listActions() {
102
+ try {
103
+ let source = options.actions;
104
+ if (source === undefined && options.schemas.actions !== undefined) {
105
+ source = options.schemas.actions();
106
+ }
107
+ return { ok: true, value: await collectActions(source), warnings: [] };
108
+ }
109
+ catch (error) {
110
+ return failure(issue('schema', 'schema-load-failed', [], `The action list failed: ${messageOf(error)}`));
111
+ }
112
+ },
113
+ async fields(action, fieldsOptions = {}) {
114
+ if (!validAction(action))
115
+ return failure(invalidAction(action, 'schema', []));
116
+ try {
117
+ if (fieldsOptions.kind !== undefined && !validKind(fieldsOptions.kind)) {
118
+ return failure(invalidKind(fieldsOptions.kind));
119
+ }
120
+ return await fieldsFor(loader, action, fieldsOptions);
121
+ }
122
+ catch (error) {
123
+ return configFailure(error);
124
+ }
125
+ },
126
+ async emptyPayload(action, emptyOptions = {}) {
127
+ if (!validAction(action))
128
+ return failure(invalidAction(action, 'schema', []));
129
+ try {
130
+ if (emptyOptions.kind !== undefined && !validKind(emptyOptions.kind)) {
131
+ return failure(invalidKind(emptyOptions.kind));
132
+ }
133
+ return await emptyPayloadFor(loader, action, emptyOptions, limits);
134
+ }
135
+ catch (error) {
136
+ return configFailure(error);
137
+ }
138
+ },
139
+ async buildPayload(action, value, buildOptions = {}) {
140
+ if (!validAction(action))
141
+ return failure(invalidAction(action, 'schema', []));
142
+ try {
143
+ if (buildOptions.kind !== undefined && !validKind(buildOptions.kind)) {
144
+ return failure(invalidKind(buildOptions.kind));
145
+ }
146
+ return await buildPayloadFor(loader, action, value, buildOptions, limits);
147
+ }
148
+ catch (error) {
149
+ return configFailure(error);
150
+ }
151
+ },
152
+ async buildCall(action, value, callOptions = {}) {
153
+ try {
154
+ return await buildCallFor(loader, options.version, action, value, callOptions, messageIds, limits);
155
+ }
156
+ catch (error) {
157
+ return configFailure(error);
158
+ }
159
+ },
160
+ async buildResult(action, value, messageId) {
161
+ try {
162
+ return await buildResultFor(loader, action, value, messageId, limits);
163
+ }
164
+ catch (error) {
165
+ return configFailure(error);
166
+ }
167
+ },
168
+ buildError(messageId, code, description, details) {
169
+ try {
170
+ return buildErrorFor(options.version, messageId, code, description, details, limits);
171
+ }
172
+ catch (error) {
173
+ return configFailure(error);
174
+ }
175
+ },
176
+ serialize(frame) {
177
+ try {
178
+ return serializeFor(frame, limits);
179
+ }
180
+ catch (error) {
181
+ return configFailure(error);
182
+ }
183
+ },
184
+ example(action) {
185
+ if (!validAction(action))
186
+ return failure(invalidAction(action, 'schema', []));
187
+ try {
188
+ if (examples === undefined || !Object.hasOwn(examples, action)) {
189
+ return { ok: true, value: undefined, warnings: [] };
190
+ }
191
+ const cloned = cloneJson(examples[action], limits);
192
+ if (!cloned.ok)
193
+ return { ok: false, error: cloned.error, warnings: [] };
194
+ if (typeof cloned.value !== 'object' ||
195
+ cloned.value === null ||
196
+ Array.isArray(cloned.value)) {
197
+ return failure(issue('payload', 'invalid-payload', [], 'The example must be a JSON object', 'object', cloned.value));
198
+ }
199
+ return { ok: true, value: cloned.value, warnings: [] };
200
+ }
201
+ catch (error) {
202
+ return failure(issue('schema', 'schema-load-failed', [], `The example could not be read: ${messageOf(error)}`));
203
+ }
204
+ },
205
+ };
206
+ }
207
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/json.d.ts ADDED
@@ -0,0 +1,9 @@
1
+ import type { JsonValue, Result } from '@ocpptools/core';
2
+ import type { BuilderIssue } from './types.js';
3
+ export interface JsonLimits {
4
+ readonly maxDepth: number;
5
+ readonly maxNodes: number;
6
+ }
7
+ /** Copies a plain JSON value and rejects values JSON cannot represent. */
8
+ export declare function cloneJson(value: unknown, limits: JsonLimits): Result<JsonValue, BuilderIssue>;
9
+ //# sourceMappingURL=json.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../src/json.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAIzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,WAAW,UAAU;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC1B;AA4FD,0EAA0E;AAC1E,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,CAa7F"}
package/dist/json.js ADDED
@@ -0,0 +1,98 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ // SPDX-FileCopyrightText: 2026 Rodolfo Carrillo
3
+ import { limitExceeded, messageOf, notJson } from './errors.js';
4
+ function fail(path, message, value) {
5
+ return { ok: false, error: notJson(path, message, value) };
6
+ }
7
+ function cloneValue(value, path, depth, state) {
8
+ state.nodes += 1;
9
+ if (state.nodes > state.limits.maxNodes) {
10
+ return {
11
+ ok: false,
12
+ error: limitExceeded(path, 'The payload exceeds the configured node limit'),
13
+ };
14
+ }
15
+ if (depth > state.limits.maxDepth) {
16
+ return {
17
+ ok: false,
18
+ error: limitExceeded(path, 'The payload exceeds the configured depth limit'),
19
+ };
20
+ }
21
+ if (value === null || typeof value === 'string' || typeof value === 'boolean') {
22
+ return { ok: true, value };
23
+ }
24
+ if (typeof value === 'number') {
25
+ if (!Number.isFinite(value)) {
26
+ return fail(path, 'Non-finite numbers are not JSON', value);
27
+ }
28
+ return { ok: true, value };
29
+ }
30
+ if (typeof value !== 'object') {
31
+ return fail(path, `${typeof value} is not a JSON value`, value);
32
+ }
33
+ if (state.seen.has(value)) {
34
+ return fail(path, 'The payload contains a cycle', value);
35
+ }
36
+ state.seen.add(value);
37
+ try {
38
+ if (Array.isArray(value)) {
39
+ const result = [];
40
+ for (let index = 0; index < value.length; index += 1) {
41
+ if (!Object.hasOwn(value, index)) {
42
+ return fail([...path, index], 'Sparse arrays are not JSON', value);
43
+ }
44
+ const entry = cloneValue(value[index], [...path, index], depth + 1, state);
45
+ if (!entry.ok)
46
+ return entry;
47
+ result.push(entry.value);
48
+ }
49
+ return { ok: true, value: result };
50
+ }
51
+ const prototype = Reflect.getPrototypeOf(value);
52
+ if (prototype !== Object.prototype && prototype !== null) {
53
+ return fail(path, 'Only plain JSON objects are accepted', value);
54
+ }
55
+ if (Object.getOwnPropertySymbols(value).length > 0) {
56
+ return fail(path, 'Symbol keys are not JSON', value);
57
+ }
58
+ const result = {};
59
+ for (const key of Object.keys(value)) {
60
+ const descriptor = Object.getOwnPropertyDescriptor(value, key);
61
+ if (descriptor === undefined ||
62
+ descriptor.get !== undefined ||
63
+ descriptor.set !== undefined) {
64
+ return fail([...path, key], 'Accessors are not JSON', value);
65
+ }
66
+ const entry = cloneValue(descriptor.value, [...path, key], depth + 1, state);
67
+ if (!entry.ok)
68
+ return entry;
69
+ Object.defineProperty(result, key, {
70
+ value: entry.value,
71
+ enumerable: true,
72
+ configurable: true,
73
+ writable: true,
74
+ });
75
+ }
76
+ return { ok: true, value: result };
77
+ }
78
+ finally {
79
+ state.seen.delete(value);
80
+ }
81
+ }
82
+ /** Copies a plain JSON value and rejects values JSON cannot represent. */
83
+ export function cloneJson(value, limits) {
84
+ try {
85
+ return cloneValue(value, [], 0, {
86
+ limits,
87
+ seen: new WeakSet(),
88
+ nodes: 0,
89
+ });
90
+ }
91
+ catch (error) {
92
+ return {
93
+ ok: false,
94
+ error: notJson([], messageOf(error, 'The value could not be read as JSON')),
95
+ };
96
+ }
97
+ }
98
+ //# sourceMappingURL=json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.js","sourceRoot":"","sources":["../src/json.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { JsonObject } from '@ocpptools/core';
2
+ import { type JsonLimits } from './json.js';
3
+ import type { SchemaLoader } from './schema.js';
4
+ import type { BuilderResult, BuildPayloadOptions, EmptyPayloadOptions } from './types.js';
5
+ export declare function emptyPayloadFor(loader: SchemaLoader, action: string, options?: EmptyPayloadOptions, limits?: JsonLimits): Promise<BuilderResult<JsonObject>>;
6
+ export declare function buildPayloadFor(loader: SchemaLoader, action: string, input: unknown, options?: BuildPayloadOptions, limits?: JsonLimits): Promise<BuilderResult<JsonObject>>;
7
+ //# sourceMappingURL=payload.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payload.d.ts","sourceRoot":"","sources":["../src/payload.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAa,MAAM,iBAAiB,CAAC;AAK7D,OAAO,EAAa,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAEX,aAAa,EAEb,mBAAmB,EACnB,mBAAmB,EAEnB,MAAM,YAAY,CAAC;AAgVpB,wBAAsB,eAAe,CACpC,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,mBAAwB,EACjC,MAAM,GAAE,UAA2B,GACjC,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAoCpC;AAED,wBAAsB,eAAe,CACpC,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,mBAAwB,EACjC,MAAM,GAAE,UAA2B,GACjC,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAiDpC"}