@bian-womp/spark-graph 0.1.3 → 0.1.5

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.
@@ -9,6 +9,14 @@ export declare class CategoryRegistry {
9
9
  export declare class Registry {
10
10
  readonly types: Map<string, DataTypeDescriptor<any>>;
11
11
  readonly nodes: Map<string, NodeTypeDescriptor<Record<string, string>, Record<string, string>, unknown, (inputs: Record<string, unknown>, ctx: NodeContext<unknown>) => void | Record<string, unknown> | Promise<void | Record<string, unknown>>>>;
12
+ readonly enums: Map<string, {
13
+ options: Array<{
14
+ value: number;
15
+ label: string;
16
+ }>;
17
+ valueToLabel: Map<number, string>;
18
+ labelToValue: Map<string, number>;
19
+ }>;
12
20
  readonly categories: CategoryRegistry;
13
21
  readonly serializers: Map<string, {
14
22
  serialize: (value: unknown) => unknown;
@@ -16,7 +24,6 @@ export declare class Registry {
16
24
  }>;
17
25
  private coercions;
18
26
  private asyncCoercions;
19
- private enums;
20
27
  registerType(desc: DataTypeDescriptor, opts?: {
21
28
  withArray?: boolean;
22
29
  arrayId?: string;
@@ -37,15 +44,20 @@ export declare class Registry {
37
44
  to: string;
38
45
  async: boolean;
39
46
  }>;
40
- registerEnum(enumTypeId: string, options: Array<{
41
- value: number;
42
- label: string;
43
- }>, labelType: string, valueType: string): this;
44
- getEnumOptions(enumTypeId: string): Array<{
45
- value: number;
46
- label: string;
47
- }>;
48
- getEnumLabel(enumTypeId: string, value: number): string | undefined;
49
- getEnumValue(enumTypeId: string, label: string): number | undefined;
47
+ registerEnum(desc: {
48
+ id: string;
49
+ displayName?: string;
50
+ options: Array<{
51
+ value: number;
52
+ label: string;
53
+ }>;
54
+ opts?: {
55
+ labelType?: string;
56
+ valueType?: string;
57
+ withArray?: boolean;
58
+ arrayId?: string;
59
+ arrayPickFirstDefined?: boolean;
60
+ };
61
+ }): this;
50
62
  }
51
63
  //# sourceMappingURL=Registry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Registry.d.ts","sourceRoot":"","sources":["../../../../src/builder/Registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Registry.d.ts","sourceRoot":"","sources":["../../../../src/builder/Registry.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../../src/examples/shared.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,KAAK,EAGV,eAAe,EAChB,MAAM,eAAe,CAAC;AAGvB,wBAAgB,uBAAuB,IAAI,QAAQ,CAwYlD;AAED,wBAAgB,wBAAwB,IAAI,eAAe,CAc1D;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,QA2BnD;AAqBD,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,QA6BvD;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,eAAe,6BAUrE"}
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../../src/examples/shared.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,KAAK,EAGV,eAAe,EAChB,MAAM,eAAe,CAAC;AAGvB,wBAAgB,uBAAuB,IAAI,QAAQ,CAoYlD;AAED,wBAAgB,wBAAwB,IAAI,eAAe,CAc1D;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,QA2BnD;AAqBD,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,QA6BvD;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,eAAe,6BAUrE"}
package/lib/esm/index.js CHANGED
@@ -17,11 +17,11 @@ class Registry {
17
17
  constructor() {
18
18
  this.types = new Map();
19
19
  this.nodes = new Map();
20
+ this.enums = new Map();
20
21
  this.categories = new CategoryRegistry();
21
22
  this.serializers = new Map();
22
23
  this.coercions = new Map();
23
24
  this.asyncCoercions = new Map();
24
- this.enums = new Map();
25
25
  }
26
26
  registerType(desc, opts) {
27
27
  this.types.set(desc.id, desc);
@@ -122,33 +122,37 @@ class Registry {
122
122
  return out;
123
123
  }
124
124
  // Enum support
125
- registerEnum(enumTypeId, options, labelType, valueType) {
125
+ registerEnum(desc) {
126
+ const { id, displayName, options, opts } = desc;
127
+ const labelType = opts?.labelType ?? "base.string";
128
+ const valueType = opts?.valueType ?? "base.float";
126
129
  const valueToLabel = new Map();
127
130
  const labelToValue = new Map();
128
131
  for (const { value, label } of options) {
129
132
  valueToLabel.set(value, label);
130
133
  labelToValue.set(label.toLowerCase(), value);
131
134
  }
132
- this.enums.set(enumTypeId, {
135
+ this.enums.set(id, {
133
136
  options,
134
137
  valueToLabel,
135
138
  labelToValue,
136
139
  });
137
140
  // Register type descriptor and serializer for enum (stored as number)
138
141
  this.registerType({
139
- id: enumTypeId,
142
+ id,
143
+ displayName,
140
144
  validate: (v) => typeof v === "number" && valueToLabel.has(Number(v)),
141
- });
142
- this.registerSerializer(enumTypeId, {
145
+ }, opts);
146
+ this.registerSerializer(id, {
143
147
  serialize: (v) => v,
144
148
  deserialize: (d) => Number(d),
145
149
  });
146
150
  // Coercions: string -> enum (by label), float -> enum (by numeric value), enum -> string (label)
147
- this.registerCoercion(labelType, enumTypeId, (value) => {
151
+ this.registerCoercion(labelType, id, (value) => {
148
152
  const s = String(value ?? "")
149
153
  .trim()
150
154
  .toLowerCase();
151
- const rec = this.enums.get(enumTypeId);
155
+ const rec = this.enums.get(id);
152
156
  if (!rec)
153
157
  return value;
154
158
  if (rec.labelToValue.has(s))
@@ -158,33 +162,24 @@ class Registry {
158
162
  return asNum;
159
163
  return Array.from(rec.valueToLabel.keys())[0] ?? 0;
160
164
  });
161
- this.registerCoercion(valueType, enumTypeId, (value) => {
165
+ this.registerCoercion(valueType, id, (value) => {
162
166
  const n = Number(value);
163
- const rec = this.enums.get(enumTypeId);
167
+ const rec = this.enums.get(id);
164
168
  if (!rec)
165
169
  return value;
166
170
  return rec.valueToLabel.has(n)
167
171
  ? n
168
172
  : Array.from(rec.valueToLabel.keys())[0] ?? 0;
169
173
  });
170
- this.registerCoercion(enumTypeId, labelType, (value) => {
174
+ this.registerCoercion(id, labelType, (value) => {
171
175
  const n = Number(value);
172
- const rec = this.enums.get(enumTypeId);
176
+ const rec = this.enums.get(id);
173
177
  if (!rec)
174
178
  return String(value);
175
179
  return rec.valueToLabel.get(n) ?? String(n);
176
180
  });
177
181
  return this;
178
182
  }
179
- getEnumOptions(enumTypeId) {
180
- return this.enums.get(enumTypeId)?.options ?? [];
181
- }
182
- getEnumLabel(enumTypeId, value) {
183
- return this.enums.get(enumTypeId)?.valueToLabel.get(value);
184
- }
185
- getEnumValue(enumTypeId, label) {
186
- return this.enums.get(enumTypeId)?.labelToValue.get(label.toLowerCase());
187
- }
188
183
  }
189
184
 
190
185
  class GraphRuntime {
@@ -1434,25 +1429,31 @@ function setupBasicGraphRegistry() {
1434
1429
  impl: (ins) => ({ Text: String(ins.Value) }),
1435
1430
  });
1436
1431
  // Enums: Math Operation
1437
- registry.registerEnum("base.enum:math.operation", [
1438
- { value: 0, label: "Add" },
1439
- { value: 1, label: "Subtract" },
1440
- { value: 2, label: "Multiply" },
1441
- { value: 3, label: "Divide" },
1442
- { value: 4, label: "Min" },
1443
- { value: 5, label: "Max" },
1444
- { value: 6, label: "Modulo" },
1445
- { value: 7, label: "Power" },
1446
- ], "base.string", "base.float");
1432
+ registry.registerEnum({
1433
+ id: "base.enum:math.operation",
1434
+ options: [
1435
+ { value: 0, label: "Add" },
1436
+ { value: 1, label: "Subtract" },
1437
+ { value: 2, label: "Multiply" },
1438
+ { value: 3, label: "Divide" },
1439
+ { value: 4, label: "Min" },
1440
+ { value: 5, label: "Max" },
1441
+ { value: 6, label: "Modulo" },
1442
+ { value: 7, label: "Power" },
1443
+ ],
1444
+ });
1447
1445
  // Enums: Compare Operation
1448
- registry.registerEnum("base.enum:compare.operation", [
1449
- { value: 0, label: "LessThan" },
1450
- { value: 1, label: "LessThanOrEqual" },
1451
- { value: 2, label: "GreaterThan" },
1452
- { value: 3, label: "GreaterThanOrEqual" },
1453
- { value: 4, label: "Equal" },
1454
- { value: 5, label: "NotEqual" },
1455
- ], "base.string", "base.float");
1446
+ registry.registerEnum({
1447
+ id: "base.enum:compare.operation",
1448
+ options: [
1449
+ { value: 0, label: "LessThan" },
1450
+ { value: 1, label: "LessThanOrEqual" },
1451
+ { value: 2, label: "GreaterThan" },
1452
+ { value: 3, label: "GreaterThanOrEqual" },
1453
+ { value: 4, label: "Equal" },
1454
+ { value: 5, label: "NotEqual" },
1455
+ ],
1456
+ });
1456
1457
  // Clamp
1457
1458
  registry.registerNode({
1458
1459
  id: "base.clamp",