@spine-event-engine/proto-tools 2.0.0-snapshot.15 → 2.0.0-snapshot.18

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/REFERENCE.md CHANGED
@@ -26,7 +26,7 @@ The `spine-proto` binary is the primary public API. Run it from the package
26
26
  whose `spine-proto.json` it should read:
27
27
 
28
28
  - `spine-proto generate` accepts only model configuration and generates model
29
- outputs and the manifest;
29
+ outputs and the manifest, including `_query.ts` companions for eligible Entity states;
30
30
  - `spine-proto compose` accepts only application configuration and writes the
31
31
  configured model registry source;
32
32
  - `spine-proto handlers` accepts an application package and writes
@@ -58,8 +58,11 @@ version, sorted Proto files in the package, generated exports, direct
58
58
  dependencies, the module export, and a generation ID. Byte-identical staged
59
59
  output reuses its committed ID; changed output receives a new opaque ID. A model
60
60
  with a top-level `*rejections.proto` also gets a
61
- typed same-directory rejection companion. When such a companion is produced,
62
- the model must directly depend on `@spine-event-engine/core`.
61
+ typed same-directory rejection companion. An eligible Entity state gets a
62
+ same-directory `_query.ts` companion. Either companion imports core at runtime,
63
+ so the model must declare `@spine-event-engine/core` in its direct runtime
64
+ `package.json` dependencies when either is generated. Models with neither
65
+ companion do not need this dependency for generation.
63
66
 
64
67
  For a cross-model Proto import, declare the other model in both `package.json`
65
68
  and `spine-proto.json`; import the other model's canonical package path. The
@@ -0,0 +1,19 @@
1
+ import { type Schema } from "@bufbuild/protoplugin";
2
+ /**
3
+ * Generates query entry points beside eligible Entity state schemas.
4
+ */
5
+ declare class EntityQueryGeneratorRuntime {
6
+ #private;
7
+ /**
8
+ * Creates registered columns and typed query factories from Proto descriptors.
9
+ *
10
+ * @param schema Buf plugin request and output writer.
11
+ */
12
+ generate(schema: Schema): void;
13
+ }
14
+ /**
15
+ * Generates query companions from a Buf request.
16
+ */
17
+ export declare const EntityQueryGenerator: Readonly<Pick<EntityQueryGeneratorRuntime, "generate">>;
18
+ export {};
19
+ //# sourceMappingURL=entity-query-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-query-generator.d.ts","sourceRoot":"","sources":["../../../src/generation/entity-query-generator.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAqC,KAAK,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAoCvF;;GAEG;AACH,cAAM,2BAA2B;;IAC/B;;;;OAIG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;CAsU/B;AAED;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,IAAI,CAAC,2BAA2B,EAAE,UAAU,CAAC,CACvC,CAAC"}
@@ -0,0 +1,298 @@
1
+ /*
2
+ * Copyright 2026, CodeMatters. All rights reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
5
+ * in compliance with the License. You may obtain a copy of the License at
6
+ *
7
+ * https://www.apache.org/licenses/LICENSE-2.0
8
+ *
9
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
10
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
11
+ * or implied. See the License for the specific language governing permissions and limitations under
12
+ * the License.
13
+ */
14
+ import { getOption, hasOption, ScalarType, } from "@bufbuild/protobuf";
15
+ import { createEcmaScriptPlugin, runNodeJs } from "@bufbuild/protoplugin";
16
+ import { fileURLToPath } from "node:url";
17
+ import { resolve } from "node:path";
18
+ const reservedMethods = new Set([
19
+ "build",
20
+ "byId",
21
+ "constructor",
22
+ "create",
23
+ "either",
24
+ "limit",
25
+ "orderBy",
26
+ "toString",
27
+ "toLocaleString",
28
+ "valueOf",
29
+ "hasOwnProperty",
30
+ "isPrototypeOf",
31
+ "propertyIsEnumerable",
32
+ "__defineGetter__",
33
+ "__defineSetter__",
34
+ "__lookupGetter__",
35
+ "__lookupSetter__",
36
+ "__proto__",
37
+ ]);
38
+ /**
39
+ * Generates query entry points beside eligible Entity state schemas.
40
+ */
41
+ class EntityQueryGeneratorRuntime {
42
+ /**
43
+ * Creates registered columns and typed query factories from Proto descriptors.
44
+ *
45
+ * @param schema Buf plugin request and output writer.
46
+ */
47
+ generate(schema) {
48
+ const files = schema.files.filter((file) => file.proto.dependency.includes("spine/options.proto"));
49
+ if (files.length === 0)
50
+ return;
51
+ const entity = EntityQueryGeneratorRuntime.#extension(schema.allFiles, "entity");
52
+ const column = EntityQueryGeneratorRuntime.#extension(schema.allFiles, "column");
53
+ for (const file of files) {
54
+ EntityQueryGeneratorRuntime.#generateFile(schema, file, entity, column);
55
+ }
56
+ }
57
+ /**
58
+ * Finds a Spine option extension in request files or dependencies.
59
+ *
60
+ * @param files Descriptor files supplied to the plugin.
61
+ * @param name Required option name.
62
+ * @returns Matching extension descriptor.
63
+ */
64
+ static #extension(files, name) {
65
+ const pending = [...files];
66
+ const visited = new Set();
67
+ while (pending.length > 0) {
68
+ const file = pending.pop();
69
+ if (file === undefined || visited.has(file))
70
+ continue;
71
+ visited.add(file);
72
+ pending.push(...file.dependencies);
73
+ const found = file.extensions.find((candidate) => candidate.name === name && candidate.file.proto.name === "spine/options.proto");
74
+ if (found !== undefined)
75
+ return found;
76
+ }
77
+ throw new Error(`spine-proto: missing (${name}) option descriptor`);
78
+ }
79
+ /**
80
+ * Writes query factories for eligible top-level and nested Entity states in one Proto file.
81
+ *
82
+ * @param schema Plugin request and output writer.
83
+ * @param file Source file descriptor.
84
+ * @param entity Entity option extension.
85
+ * @param column Column option extension.
86
+ */
87
+ static #generateFile(schema, file, entity, column) {
88
+ const messages = EntityQueryGeneratorRuntime.#messages(file.messages).filter((message) => EntityQueryGeneratorRuntime.#eligible(message, entity, column));
89
+ if (messages.length === 0)
90
+ return;
91
+ const output = schema.generateFile(`${file.name}_query.ts`);
92
+ const imports = EntityQueryGeneratorRuntime.#imports(output);
93
+ output.preamble(file);
94
+ const names = new Set();
95
+ for (const message of messages) {
96
+ const path = message.typeName.slice(file.proto.package.length + 1).replaceAll(".", "_");
97
+ const base = `${path}Query`;
98
+ let name = base;
99
+ for (let suffix = 2; names.has(name); suffix += 1)
100
+ name = `${base}_${String(suffix)}`;
101
+ names.add(name);
102
+ EntityQueryGeneratorRuntime.#emit(output, message, column, name, imports);
103
+ }
104
+ }
105
+ /**
106
+ * Checks that an Entity can be registered as a query without changing its descriptor.
107
+ *
108
+ * @param message Candidate Entity state.
109
+ * @param entity Entity option extension.
110
+ * @param column Column option extension.
111
+ * @returns Whether the state and its marked columns support queries.
112
+ */
113
+ static #eligible(message, entity, column) {
114
+ if (!hasOption(message, entity))
115
+ return false;
116
+ const kind = getOption(message, entity).kind;
117
+ if (kind !== 1 && kind !== 2 && kind !== 3)
118
+ return false;
119
+ for (const field of message.fields) {
120
+ if (!hasOption(field, column) || getOption(field, column) !== true)
121
+ continue;
122
+ const reserved = ["version", "archived", "deleted"].includes(field.localName);
123
+ const unsupported = field.fieldKind === "list" || field.fieldKind === "map" || field.oneof !== undefined;
124
+ if (!reserved && !unsupported)
125
+ continue;
126
+ if (reserved)
127
+ throw new TypeError(`Entity ${message.typeName} has reserved system column "${field.localName}".`);
128
+ throw new TypeError(`Entity ${message.typeName} column "${field.localName}" must be singular and outside a oneof.`);
129
+ }
130
+ return true;
131
+ }
132
+ /**
133
+ * Resolves browser-safe query helpers for a generated module.
134
+ *
135
+ * @param output Generated file writer.
136
+ * @returns Imported value and type symbols.
137
+ */
138
+ static #imports(output) {
139
+ return {
140
+ entityColumn: output.import("EntityColumn", "@spine-event-engine/core"),
141
+ columnTypes: output.import("EntityColumns", "@spine-event-engine/core", true),
142
+ definitions: output.import("GeneratedEntityColumns", "@spine-event-engine/core/codegen"),
143
+ queries: output.import("GeneratedEntityQueries", "@spine-event-engine/core/codegen"),
144
+ builder: output.import("GeneratedQueryBuilder", "@spine-event-engine/core/codegen", true),
145
+ };
146
+ }
147
+ /**
148
+ * Lists nested messages in their descriptor declaration order.
149
+ *
150
+ * @param messages Messages declared at the current level.
151
+ * @returns Every message at this level and below.
152
+ */
153
+ static #messages(messages) {
154
+ return messages.flatMap((message) => [
155
+ message,
156
+ ...EntityQueryGeneratorRuntime.#messages(message.nestedMessages),
157
+ ]);
158
+ }
159
+ /**
160
+ * Writes one query factory with registration retained by its exported value.
161
+ *
162
+ * @param output Generated file writer.
163
+ * @param message Entity state descriptor.
164
+ * @param column Column option extension.
165
+ * @param name Collision-free exported query name.
166
+ * @param imports Imported query and column helpers.
167
+ */
168
+ static #emit(output, message, column, name, imports) {
169
+ const id = message.fields[0];
170
+ if (id === undefined)
171
+ throw new Error(`spine-proto: Entity ${message.typeName} has no ID field`);
172
+ const state = output.importSchema(message);
173
+ const fields = message.fields.filter((field) => hasOption(field, column) && getOption(field, column) === true);
174
+ const columnsName = `${name}Columns`;
175
+ EntityQueryGeneratorRuntime.#emitColumns(output, fields, columnsName, state, imports);
176
+ EntityQueryGeneratorRuntime.#emitFactory(output, fields, name, columnsName, state, id.localName, imports);
177
+ }
178
+ /**
179
+ * Writes typed registration for every marked state column.
180
+ *
181
+ * @param output Generated file writer.
182
+ * @param fields Marked state fields.
183
+ * @param columnsName Local registered-column variable name.
184
+ * @param state Imported state schema.
185
+ * @param imports Imported registration helpers.
186
+ */
187
+ static #emitColumns(output, fields, columnsName, state, imports) {
188
+ output.print(`const ${columnsName}: `, imports.columnTypes, "<typeof ", state, ", {");
189
+ EntityQueryGeneratorRuntime.#emitColumnEntries(output, fields, state, true);
190
+ output.print("}> = ", imports.entityColumn, ".register(", state, ", ", imports.definitions, ".define(", state, ", {");
191
+ EntityQueryGeneratorRuntime.#emitColumnEntries(output, fields, state, false);
192
+ output.print("}));");
193
+ }
194
+ /**
195
+ * Writes either precise column types or matching runtime metadata entries.
196
+ *
197
+ * @param output Generated file writer.
198
+ * @param fields Marked state fields.
199
+ * @param state Imported state schema.
200
+ * @param typed Whether to write declared types instead of values.
201
+ */
202
+ static #emitColumnEntries(output, fields, state, typed) {
203
+ for (const field of fields) {
204
+ const key = JSON.stringify(field.localName);
205
+ const comparison = JSON.stringify(EntityQueryGeneratorRuntime.#comparison(field));
206
+ output.print(typed ? ` readonly ${key}: { readonly field: typeof ` : ` ${key}: { field: `, state, `.field[${key}]`, typed ? "; readonly comparison: " : ", comparison: ", comparison, typed ? " };" : " },");
207
+ }
208
+ }
209
+ /**
210
+ * Writes a typed factory whose value uses the registered columns.
211
+ *
212
+ * @param output Generated file writer.
213
+ * @param fields Marked state fields.
214
+ * @param name Exported query factory name.
215
+ * @param columnsName Local registered-column variable name.
216
+ * @param state Imported state schema.
217
+ * @param idField First field's local name.
218
+ * @param imports Imported query helpers.
219
+ */
220
+ static #emitFactory(output, fields, name, columnsName, state, idField, imports) {
221
+ const accessors = EntityQueryGeneratorRuntime.#accessors(fields);
222
+ output.print(output.export("const", name), ": Readonly<{ create(): ", imports.builder, "<typeof ", state, `, typeof ${columnsName}, ${JSON.stringify(idField)}, {`);
223
+ for (const accessor of accessors) {
224
+ output.print(` readonly ${JSON.stringify(accessor.method)}: ${JSON.stringify(accessor.field)};`);
225
+ }
226
+ output.print("}> }> = ", imports.queries, ".define({ schema: ", state, `, columns: ${columnsName}, idField: ${JSON.stringify(idField)}, accessors: {`);
227
+ for (const accessor of accessors) {
228
+ output.print(` ${JSON.stringify(accessor.method)}: ${JSON.stringify(accessor.field)},`);
229
+ }
230
+ output.print("} });");
231
+ }
232
+ /**
233
+ * Maps declared and lifecycle columns to deterministic safe accessor names.
234
+ *
235
+ * @param fields Marked state fields.
236
+ * @returns Method names paired with registered column names.
237
+ */
238
+ static #accessors(fields) {
239
+ const used = new Set(reservedMethods);
240
+ const accessors = [];
241
+ for (const column of [
242
+ ...fields.map((entry) => ({
243
+ field: entry.localName,
244
+ candidate: entry.name === "constructor" ? "constructor" : entry.localName,
245
+ })),
246
+ { field: "version", candidate: "version" },
247
+ { field: "archived", candidate: "archived" },
248
+ { field: "deleted", candidate: "deleted" },
249
+ ]) {
250
+ let method = column.candidate;
251
+ if (used.has(method))
252
+ method = `${method}Column`;
253
+ const base = method;
254
+ for (let suffix = 2; used.has(method); suffix += 1)
255
+ method = `${base}${String(suffix)}`;
256
+ used.add(method);
257
+ accessors.push({ method, field: column.field });
258
+ }
259
+ return accessors;
260
+ }
261
+ /**
262
+ * Determines the comparison supported by one singular column field.
263
+ *
264
+ * @param field Protobuf field marked as an Entity column.
265
+ * @returns Equality or ordered comparison family.
266
+ */
267
+ static #comparison(field) {
268
+ if (field.fieldKind === "list" || field.fieldKind === "map" || field.oneof !== undefined) {
269
+ throw new TypeError(`Entity column "${field.localName}" must be singular and outside a oneof.`);
270
+ }
271
+ if (field.fieldKind === "enum" ||
272
+ field.scalar === ScalarType.BOOL ||
273
+ field.scalar === ScalarType.BYTES)
274
+ return "equality";
275
+ if (field.fieldKind === "message") {
276
+ return field.message.typeName === "google.protobuf.Timestamp" ||
277
+ field.message.typeName === "spine.core.Version"
278
+ ? "ordering"
279
+ : "equality";
280
+ }
281
+ return "ordering";
282
+ }
283
+ }
284
+ /**
285
+ * Generates query companions from a Buf request.
286
+ */
287
+ export const EntityQueryGenerator = Object.freeze(new EntityQueryGeneratorRuntime());
288
+ const plugin = createEcmaScriptPlugin({
289
+ name: "protoc-gen-spine-entity-query",
290
+ version: "1.0.0",
291
+ generateTs: (schema) => {
292
+ EntityQueryGenerator.generate(schema);
293
+ },
294
+ });
295
+ if (process.argv[1] !== undefined && resolve(process.argv[1]) === fileURLToPath(import.meta.url)) {
296
+ runNodeJs(plugin);
297
+ }
298
+ //# sourceMappingURL=entity-query-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-query-generator.js","sourceRoot":"","sources":["../../../src/generation/entity-query-generator.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../../src/generation/generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../../src/generation/generator.ts"],"names":[],"mappings":"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"}