@hyperscale0/udl 1.0.125 → 1.0.130

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.
@@ -1 +1 @@
1
- {"version":3,"file":"field-value.d.ts","sourceRoot":"","sources":["../src/field-value.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AACzB,OAAO,EAAqB,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AAK/D,sFAAsF;AACtF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,QAAQ,GAAG,CAAC,CAAC,OAAO,CA+E9D"}
1
+ {"version":3,"file":"field-value.d.ts","sourceRoot":"","sources":["../src/field-value.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AACzB,OAAO,EAAqB,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AAW/D,sFAAsF;AACtF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,QAAQ,GAAG,CAAC,CAAC,OAAO,CA+E9D"}
@@ -2,6 +2,11 @@ import * as z from "zod";
2
2
  import { udlObjectIdSchema } from "./schema.js";
3
3
  const amount = z.string().regex(/^(0|[1-9][0-9]{0,17})$/);
4
4
  const text = z.string().min(1).max(2048);
5
+ // HSX dates are instants; say so when a caller sends a calendar date.
6
+ const dateTime = z.iso.datetime({
7
+ offset: true,
8
+ error: "A date field takes an ISO 8601 date-time with an offset, such as 2026-12-01T00:00:00Z",
9
+ });
5
10
  /** Values, rather than declarations. The same validator feeds forms and admission. */
6
11
  export function udlFieldValueSchema(field) {
7
12
  let schema;
@@ -29,7 +34,7 @@ export function udlFieldValueSchema(field) {
29
34
  schema = field.targetKind === "object" ? udlObjectIdSchema : text;
30
35
  break;
31
36
  case "date":
32
- schema = z.iso.datetime({ offset: true });
37
+ schema = dateTime;
33
38
  break;
34
39
  case "duration":
35
40
  schema = z.number().int().safe().positive();
@@ -66,7 +71,7 @@ export function udlFieldValueSchema(field) {
66
71
  const item = field.item === "money"
67
72
  ? amount
68
73
  : field.item === "date"
69
- ? z.iso.datetime({ offset: true })
74
+ ? dateTime
70
75
  : field.item === "integer"
71
76
  ? z.number().int().safe()
72
77
  : field.item === "ref" && field.targetKind === "object"
@@ -1 +1 @@
1
- {"version":3,"file":"field-value.js","sourceRoot":"","sources":["../src/field-value.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"field-value.js","sourceRoot":"","sources":["../src/field-value.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"finance.d.ts","sourceRoot":"","sources":["../src/finance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,WAAW,EACX,aAAa,EAEd,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE;QACT,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;KACjC,CAAC;CACH;AAmCD,6FAA6F;AAC7F,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,aAAa,EACzB,QAAQ,CAAC,EAAE,WAAW,GACrB,YAAY,EAAE,CAqThB"}
1
+ {"version":3,"file":"finance.d.ts","sourceRoot":"","sources":["../src/finance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,WAAW,EACX,aAAa,EAEd,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE;QACT,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;KACjC,CAAC;CACH;AAmCD,6FAA6F;AAC7F,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,aAAa,EACzB,QAAQ,CAAC,EAAE,WAAW,GACrB,YAAY,EAAE,CA6ZhB"}
package/dist/finance.js CHANGED
@@ -54,9 +54,34 @@ export function analyzeInstrumentFinance(instrument, document) {
54
54
  }
55
55
  const problems = [];
56
56
  const report = (message) => problems.push({ path: ".actions", message });
57
+ // A field some action sets is a free symbol: its default no longer holds.
58
+ const assigned = new Set(Object.values(instrument.actions).flatMap((action) => Object.keys(action.set ?? {}).map((key) => `self.${key}`)));
59
+ const reads = (calc) => JSON.stringify(calc)
60
+ .match(/"field":"[^"]+"/g)
61
+ ?.map((match) => match.slice(9, -1)) ?? [];
62
+ // Calculated fields downstream of the seeds, following opaque and linear calculations.
63
+ const downstream = (seeds) => {
64
+ const found = new Set();
65
+ for (let grew = true; grew;) {
66
+ grew = false;
67
+ for (const calc of instrument.calculate) {
68
+ const target = `self.${calc.target}`;
69
+ if (found.has(target))
70
+ continue;
71
+ if (reads(calc).some((field) => seeds(field) || found.has(field))) {
72
+ found.add(target);
73
+ grew = true;
74
+ }
75
+ }
76
+ }
77
+ return found;
78
+ };
79
+ const balanceBound = downstream((field) => field.endsWith(".balance") || field.endsWith(".reserved"));
57
80
  const equations = new Map();
58
81
  for (const field of instrument.fields)
59
- if (field.type === "money" && field.value !== undefined)
82
+ if (field.type === "money" &&
83
+ field.value !== undefined &&
84
+ !assigned.has(`self.${field.name}`))
60
85
  equations.set(`self.${field.name}`, new Map([["#", BigInt(field.value)]]));
61
86
  for (const calc of instrument.calculate) {
62
87
  if (calc.op === "sum" || calc.op === "subtract") {
@@ -94,9 +119,49 @@ export function analyzeInstrumentFinance(instrument, document) {
94
119
  }
95
120
  return result;
96
121
  }
122
+ // A top-level create admits the snapshot it reads; an invoked child create
123
+ // reads its parent's live subject but keeps the parent's snapshot.
124
+ const invokedCreate = (document?.instruments ?? []).some((owner) => Object.values(owner.actions).some((candidate) => (candidate.invoke ?? []).some((call) => "instrument" in call &&
125
+ call.instrument === instrument.id &&
126
+ call.action === "create")));
97
127
  let invocation = 0;
98
128
  const apply = (state, action, name) => {
99
129
  const scope = `${name}#${invocation++}`;
130
+ // An unknown balance becomes one opening symbol, so a whole-balance move cancels it.
131
+ const opening = `${scope}:opening:`;
132
+ for (const [account, balance] of state.balances)
133
+ if (balance === null)
134
+ state.balances.set(account, new Map([[`${opening}${account}`, 1n]]));
135
+ const start = new Map(state.balances);
136
+ // Moves read set fields after the set, so they get this invocation's symbol.
137
+ const changed = new Set(Object.keys(action.set ?? {}).map((key) => `self.${key}`));
138
+ const stale = downstream((field) => changed.has(field));
139
+ let fresh = new Set();
140
+ // An action that declares subject fields reads the live object, not the agreement.
141
+ const declared = new Set(name === "create" && !invokedCreate
142
+ ? []
143
+ : (action.subject?.requirements ?? []).map((entry) => `subject.${entry.field.name}`));
144
+ const live = new Set([
145
+ ...declared,
146
+ ...downstream((field) => declared.has(field)),
147
+ ]);
148
+ let reading = 0;
149
+ const external = (field) => /\.(balance|reserved)$/.test(field) && !owned.has(field.slice(0, -8));
150
+ const resolve = (sum) => {
151
+ let result = new Map();
152
+ for (const [key, coefficient] of sum) {
153
+ const account = key.slice(0, -8);
154
+ const scoped = balanceBound.has(key) ||
155
+ fresh.has(key) ||
156
+ live.has(key) ||
157
+ external(key);
158
+ const term = key.endsWith(".balance") && owned.has(account)
159
+ ? (start.get(account) ?? null)
160
+ : new Map([[scoped ? `${scope}:${key}` : key, 1n]]);
161
+ result = add(result, term, coefficient);
162
+ }
163
+ return result;
164
+ };
100
165
  const calculated = new Map();
101
166
  const local = new Map((action.calculate ?? []).map((c) => [`self.${c.target}`, c]));
102
167
  const amount = (value, seen = new Set()) => {
@@ -106,6 +171,9 @@ export function analyzeInstrumentFinance(instrument, document) {
106
171
  if (value.field.endsWith(".balance") &&
107
172
  owned.has(value.field.slice(0, -8)))
108
173
  return state.balances.get(value.field.slice(0, -8)) ?? null;
174
+ // Another account's balance moves between reads, so each read is its own symbol.
175
+ if (external(value.field))
176
+ return new Map([[`${scope}:${reading++}:${value.field}`, 1n]]);
109
177
  const calculation = local.get(value.field);
110
178
  if (calculation && !seen.has(value.field)) {
111
179
  const next = new Set([...seen, value.field]);
@@ -116,7 +184,7 @@ export function analyzeInstrumentFinance(instrument, document) {
116
184
  return new Map([[`${scope}:${value.field}`, 1n]]);
117
185
  }
118
186
  }
119
- return expand(raw(value, scope));
187
+ return resolve(expand(raw(value, scope)));
120
188
  };
121
189
  for (const requirement of action.requires)
122
190
  if (requirement.kind === "compare" && requirement.operator === "==") {
@@ -145,6 +213,7 @@ export function analyzeInstrumentFinance(instrument, document) {
145
213
  ? state.balances.get(account)
146
214
  : new Map(), value));
147
215
  };
216
+ fresh = new Set([...changed, ...stale]);
148
217
  for (const move of action.moves) {
149
218
  if ("amount" in move) {
150
219
  const value = amount(move.amount);
@@ -168,10 +237,22 @@ export function analyzeInstrumentFinance(instrument, document) {
168
237
  state.holds.delete(move.transfer);
169
238
  }
170
239
  }
171
- if (Object.keys(action.set ?? {}).some((key) => instrument.fields.some((f) => f.name === key && f.type === "money"))) {
172
- for (const account of owned)
173
- state.balances.set(account, null);
174
- }
240
+ // Old values of set fields are gone; this invocation's values become current.
241
+ const settle = (sum) => sum === null ||
242
+ [...sum.keys()].some((key) => key.startsWith(opening) || fresh.has(key))
243
+ ? null
244
+ : new Map([...sum].map(([key, value]) => {
245
+ const field = key.slice(scope.length + 1);
246
+ return key.startsWith(`${scope}:`) &&
247
+ fresh.has(field) &&
248
+ !balanceBound.has(field)
249
+ ? [field, value]
250
+ : [key, value];
251
+ }));
252
+ for (const [account, balance] of state.balances)
253
+ state.balances.set(account, settle(balance));
254
+ for (const hold of state.holds.values())
255
+ hold.amount = settle(hold.amount);
175
256
  };
176
257
  const initial = {
177
258
  status: instrument.lifecycle.initial,
@@ -1 +1 @@
1
- {"version":3,"file":"finance.js","sourceRoot":"","sources":["../src/finance.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"finance.js","sourceRoot":"","sources":["../src/finance.ts"],"names":[],"mappings":"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"}