@hyperscale0/hsx 5.2.0 → 5.3.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.
Files changed (54) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/src/ast.d.ts +0 -1
  3. package/dist/src/ast.d.ts.map +1 -1
  4. package/dist/src/ast.js +0 -11
  5. package/dist/src/ast.js.map +1 -1
  6. package/dist/src/cli.js +1 -1
  7. package/dist/src/cli.js.map +1 -1
  8. package/dist/src/compile.d.ts.map +1 -1
  9. package/dist/src/compile.js +185 -101
  10. package/dist/src/compile.js.map +1 -1
  11. package/dist/src/diagnostics.d.ts +14 -0
  12. package/dist/src/diagnostics.d.ts.map +1 -0
  13. package/dist/src/diagnostics.js +20 -0
  14. package/dist/src/diagnostics.js.map +1 -0
  15. package/dist/src/header-source.d.ts +3 -0
  16. package/dist/src/header-source.d.ts.map +1 -0
  17. package/dist/src/header-source.js +36 -0
  18. package/dist/src/header-source.js.map +1 -0
  19. package/dist/src/headers.d.ts.map +1 -1
  20. package/dist/src/headers.js +4 -6
  21. package/dist/src/headers.js.map +1 -1
  22. package/dist/src/keywords.d.ts +8 -2
  23. package/dist/src/keywords.d.ts.map +1 -1
  24. package/dist/src/keywords.js +13 -5
  25. package/dist/src/keywords.js.map +1 -1
  26. package/dist/src/lex.d.ts +1 -1
  27. package/dist/src/lex.d.ts.map +1 -1
  28. package/dist/src/lex.js +11 -3
  29. package/dist/src/lex.js.map +1 -1
  30. package/dist/src/parse.d.ts.map +1 -1
  31. package/dist/src/parse.js +22 -5
  32. package/dist/src/parse.js.map +1 -1
  33. package/dist/src/std-bundle.js +1 -1
  34. package/dist/src/std-bundle.js.map +1 -1
  35. package/dist/src/tunables.d.ts.map +1 -1
  36. package/dist/src/tunables.js +2 -1
  37. package/dist/src/tunables.js.map +1 -1
  38. package/dist/src/version.d.ts +1 -1
  39. package/dist/src/version.js +1 -1
  40. package/docs/README.md +5 -3
  41. package/package.json +3 -3
  42. package/src/ast.ts +0 -10
  43. package/src/cli.ts +1 -1
  44. package/src/compile.ts +267 -127
  45. package/src/diagnostics.ts +28 -0
  46. package/src/header-source.ts +44 -0
  47. package/src/headers.ts +4 -6
  48. package/src/keywords.ts +13 -5
  49. package/src/lex.ts +13 -5
  50. package/src/parse.ts +29 -5
  51. package/src/std-bundle.ts +1 -1
  52. package/src/tunables.ts +6 -1
  53. package/src/version.ts +1 -1
  54. package/std/financing.hsx +2 -2
package/src/tunables.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import { fail } from "./diagnostics.ts";
1
2
  import type { Expr } from "./ast.ts";
2
3
 
3
4
  /** Bounds use UDL units: minor units, basis points and milliseconds. */
@@ -24,7 +25,11 @@ export function tunableBounds(
24
25
  numbers.some((value) => !Number.isSafeInteger(value)) ||
25
26
  numbers[0]! > numbers[1]!
26
27
  )
27
- throw new Error("integer tunable needs a minimum and maximum");
28
+ fail(
29
+ type,
30
+ "integer tunable needs ordered safe integer bounds",
31
+ "write integer(1, 12)",
32
+ );
28
33
  return { minimum: numbers[0]!, maximum: numbers[1]! };
29
34
  }
30
35
  return { minimum: 0, maximum: Number.MAX_SAFE_INTEGER };
package/src/version.ts CHANGED
@@ -1,2 +1,2 @@
1
- export const HSX_VERSION = "5.2.0";
1
+ export const HSX_VERSION = "5.3.0";
2
2
  export const HSX_TARGET_UDL_VERSION = 4;
package/std/financing.hsx CHANGED
@@ -456,7 +456,7 @@ instrument late_charge(on: ref<financing.installments>[], grace: duration = 3d,
456
456
  plan: ref<on>, slice: ref<on.slice>, borrower: account of borrower, fine: money = fine, overdueAt: date?
457
457
  receivable: account(self, claim), debt: account(borrower, claim, contra, "debt")
458
458
  }
459
- lifecycle { states: [proposed, assessed, collected, waived, refunded], initial: proposed }
459
+ lifecycle { states: [proposed, assessed, collected, waived], initial: proposed }
460
460
  action create { calculate: [{ target: overdueAt, op: shift, date: { field: self.slice.dueAt }, milliseconds: { literal: grace }, direction: after }], requires unique "late_assessment" on [self.slice, self.overdueAt]; requires self.borrower == self.slice.plan.borrower; requires self.plan == self.slice.plan }
461
461
  action assess { allowZero: true,
462
462
  from: proposed, to: assessed, actor: clock, due: { at: self.overdueAt }
@@ -523,7 +523,7 @@ instrument late_charge(on: ref<financing.installments>[], grace: duration = 3d,
523
523
  plan: ref<on>, assessment: ref<parent>, overdueAt: date?, evidence: text, evidencedCost: money, amount: money = minimum(self.evidencedCost, cap)
524
524
  receivable: account(self, claim), debt: account(borrower, claim, contra, "debt")
525
525
  }
526
- lifecycle { states: [proposed, assessed, collected, waived, refunded], initial: proposed }
526
+ lifecycle { states: [proposed, assessed, collected, waived], initial: proposed }
527
527
  action create { calculate: [{ target: overdueAt, op: shift, date: { field: self.assessment.overdueAt }, milliseconds: { literal: 0 }, direction: after }], requires unique "recovery_assessment" on [self.assessment]; requires self.plan == self.assessment.plan }
528
528
  action assess { allowZero: true,
529
529
  from: proposed, to: assessed, actor: clock, due: { at: self.assessment.overdueAt }