@hyperscale0/hsx 5.3.0 → 5.4.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.
- package/CHANGELOG.md +22 -0
- package/README.md +2 -2
- package/bin/hsx.ts +0 -2
- package/dist/bin/hsx.js +0 -2
- package/dist/bin/hsx.js.map +1 -1
- package/dist/src/cli.d.ts +0 -2
- package/dist/src/cli.d.ts.map +1 -1
- package/dist/src/cli.js +9 -4
- package/dist/src/cli.js.map +1 -1
- package/dist/src/compile.d.ts.map +1 -1
- package/dist/src/compile.js +22 -9
- package/dist/src/compile.js.map +1 -1
- package/dist/src/header-source.d.ts.map +1 -1
- package/dist/src/header-source.js +5 -0
- package/dist/src/header-source.js.map +1 -1
- package/dist/src/std-bundle.js +12 -12
- package/dist/src/std-bundle.js.map +1 -1
- package/dist/src/version.d.ts +1 -2
- package/dist/src/version.d.ts.map +1 -1
- package/dist/src/version.js +1 -2
- package/dist/src/version.js.map +1 -1
- package/docs/README.md +49 -4
- package/docs/headers.md +1 -1
- package/package.json +3 -3
- package/src/cli.ts +12 -6
- package/src/compile.ts +32 -9
- package/src/header-source.ts +10 -0
- package/src/std-bundle.ts +12 -12
- package/src/version.ts +1 -2
- package/std/cards.hsx +12 -0
- package/std/collections.hsx +11 -0
- package/std/escrow.hsx +16 -2
- package/std/financing.hsx +34 -3
- package/std/insurance.hsx +20 -5
- package/std/lending.hsx +14 -0
- package/std/marketplace.hsx +14 -0
- package/std/money.hsx +13 -0
- package/std/reporting.hsx +10 -0
- package/std/savings.hsx +28 -11
- package/std/travel.hsx +22 -4
- package/std/wallet.hsx +9 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,25 @@
|
|
|
1
|
+
# HSX 5.4.0
|
|
2
|
+
|
|
3
|
+
Standard library: financing collects the missing down payment as a
|
|
4
|
+
separate checkout action (`collect_down_payment`) after a signed plan,
|
|
5
|
+
with escrow cancel returning checkout cash when financing is abandoned;
|
|
6
|
+
insurance cover pays the insurer's net premium and the broker's
|
|
7
|
+
commission as two moves, the broker defaulting to `programOperator`;
|
|
8
|
+
savings memberships take a fixed seat with `preceding` recipients
|
|
9
|
+
counted before the pot is received; every header documents which
|
|
10
|
+
actions to expose and why. An instrument's own parameter shadows a
|
|
11
|
+
same-named sibling attachment instead of colliding with it.
|
|
12
|
+
|
|
13
|
+
Header admission refuses unsupported tunable constructors: only
|
|
14
|
+
`enum(choices)` and `integer(minimum, maximum)` carry arguments, so
|
|
15
|
+
`money(10 SAR, 20 SAR)` no longer loses its bounds silently. An
|
|
16
|
+
exposure alias cannot reuse another action's generated public name.
|
|
17
|
+
Undeclared subject-path diagnostics keep the imported header's source
|
|
18
|
+
location. The CLI refuses `--strict` and `--json` where they have no
|
|
19
|
+
effect and `check --out`, and output commands require a real
|
|
20
|
+
destination. The `HSX_TARGET_UDL_VERSION` export is gone and the
|
|
21
|
+
model-readable index heading is unversioned.
|
|
22
|
+
|
|
1
23
|
# HSX 5.3.0
|
|
2
24
|
|
|
3
25
|
Malformed strings, field constructors, lifecycle and action shapes,
|
package/README.md
CHANGED
package/bin/hsx.ts
CHANGED
|
@@ -11,7 +11,5 @@ process.exitCode = await runCli(process.argv.slice(2), {
|
|
|
11
11
|
err: (line) => process.stderr.write(`${line}\n`),
|
|
12
12
|
out: (line) => process.stdout.write(`${line}\n`),
|
|
13
13
|
readFile: (path) => readFile(path, "utf8"),
|
|
14
|
-
stdin: process.stdin,
|
|
15
|
-
stdout: process.stdout,
|
|
16
14
|
writeFile: (path, contents) => writeFile(path, contents, "utf8"),
|
|
17
15
|
});
|
package/dist/bin/hsx.js
CHANGED
|
@@ -9,8 +9,6 @@ process.exitCode = await runCli(process.argv.slice(2), {
|
|
|
9
9
|
err: (line) => process.stderr.write(`${line}\n`),
|
|
10
10
|
out: (line) => process.stdout.write(`${line}\n`),
|
|
11
11
|
readFile: (path) => readFile(path, "utf8"),
|
|
12
|
-
stdin: process.stdin,
|
|
13
|
-
stdout: process.stdout,
|
|
14
12
|
writeFile: (path, contents) => writeFile(path, contents, "utf8"),
|
|
15
13
|
});
|
|
16
14
|
//# sourceMappingURL=hsx.js.map
|
package/dist/bin/hsx.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hsx.js","sourceRoot":"","sources":["../../bin/hsx.ts"],"names":[],"mappings":";AACA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,OAAO,CAAC,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;IACrD,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC;IAChD,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC;IAChD,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAC1C,
|
|
1
|
+
{"version":3,"file":"hsx.js","sourceRoot":"","sources":["../../bin/hsx.ts"],"names":[],"mappings":";AACA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,OAAO,CAAC,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;IACrD,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC;IAChD,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC;IAChD,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAC1C,SAAS,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC;CACjE,CAAC,CAAC"}
|
package/dist/src/cli.d.ts
CHANGED
|
@@ -3,8 +3,6 @@ export interface Io {
|
|
|
3
3
|
err(line: string): void;
|
|
4
4
|
readFile(path: string): Promise<string>;
|
|
5
5
|
writeFile(path: string, text: string): Promise<void>;
|
|
6
|
-
stdin?: NodeJS.ReadableStream;
|
|
7
|
-
stdout?: NodeJS.WritableStream;
|
|
8
6
|
}
|
|
9
7
|
export declare function runCli(argv: readonly string[], io: Io): Promise<number>;
|
|
10
8
|
//# sourceMappingURL=cli.d.ts.map
|
package/dist/src/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"AAmBA,MAAM,WAAW,EAAE;IACjB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACxC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtD;AACD,wBAAsB,MAAM,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAuE7E"}
|
package/dist/src/cli.js
CHANGED
|
@@ -5,6 +5,7 @@ import { HSX_VERSION } from "./version.js";
|
|
|
5
5
|
import { compile } from "./compile.js";
|
|
6
6
|
import { format } from "./format.js";
|
|
7
7
|
import { serializeUdl } from "@hyperscale0/udl";
|
|
8
|
+
const usage = "hsx build|format|cost <file> [--out path]\nhsx check <file>\nhsx headers --json";
|
|
8
9
|
const standardLibrary = {
|
|
9
10
|
source: (header) => {
|
|
10
11
|
for (const base of ["../std/", "../../std/"]) {
|
|
@@ -26,7 +27,7 @@ export async function runCli(argv, io) {
|
|
|
26
27
|
return 0;
|
|
27
28
|
}
|
|
28
29
|
if (["--help", "help", "-h"].includes(command ?? "")) {
|
|
29
|
-
io.out(
|
|
30
|
+
io.out(usage);
|
|
30
31
|
return 0;
|
|
31
32
|
}
|
|
32
33
|
if (command === "--version") {
|
|
@@ -36,14 +37,18 @@ export async function runCli(argv, io) {
|
|
|
36
37
|
if (!command ||
|
|
37
38
|
!file ||
|
|
38
39
|
!["build", "check", "format", "cost"].includes(command)) {
|
|
39
|
-
io.err(
|
|
40
|
+
io.err(`usage:\n${usage}`);
|
|
40
41
|
return 2;
|
|
41
42
|
}
|
|
42
43
|
let output;
|
|
43
44
|
for (let i = 0; i < options.length; i++) {
|
|
44
|
-
if (
|
|
45
|
+
if (command !== "check" &&
|
|
46
|
+
options[i] === "--out" &&
|
|
47
|
+
options[i + 1] &&
|
|
48
|
+
!options[i + 1].startsWith("--") &&
|
|
49
|
+
output === undefined)
|
|
45
50
|
output = options[++i];
|
|
46
|
-
else
|
|
51
|
+
else {
|
|
47
52
|
io.err(`unknown option ${options[i]}`);
|
|
48
53
|
return 2;
|
|
49
54
|
}
|
package/dist/src/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,MAAM,eAAe,GAAG;IACtB,MAAM,EAAE,CAAC,MAAc,EAAE,EAAE;QACzB,KAAK,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE,CAAC;YAC7C,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,MAAM,MAAM,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;YAC9D,IAAI,UAAU,CAAC,IAAI,CAAC;gBAAE,OAAO,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC1D,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;CACF,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../src/compile.ts"],"names":[],"mappings":"AAEA,OAAO,EAAwB,KAAK,eAAe,EAAE,MAAM,WAAW,CAAC;AACvE,OAAO,EAeL,KAAK,WAAW,EAOjB,MAAM,kBAAkB,CAAC;AAS1B,OAAO,EAIL,KAAK,UAAU,EAKf,KAAK,IAAI,EACV,MAAM,UAAU,CAAC;AAClB,OAAO,EAA0B,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEhF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD,MAAM,WAAW,iBAAkB,SAAQ,UAAU;IACnD,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;CACpC;AACD,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,IAAI,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAC/C;AACD,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,eAAe,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;CACnB;AACD,MAAM,WAAW,cAAc;IAC7B,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,eAAe,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC,CAAC;CAClE;AACD,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,WAAW,EAAE,iBAAiB,EAAE,CAAC;IACjC,SAAS,CAAC,EAAE;QACV,QAAQ,EAAE,WAAW,CAAC;QACtB,YAAY,EAAE,eAAe,CAAC;QAC9B,SAAS,EAAE,qBAAqB,EAAE,CAAC;KACpC,CAAC;CACH;AAqTD,wBAAgB,OAAO,CACrB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,cAAmB,GAC3B,aAAa,
|
|
1
|
+
{"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../src/compile.ts"],"names":[],"mappings":"AAEA,OAAO,EAAwB,KAAK,eAAe,EAAE,MAAM,WAAW,CAAC;AACvE,OAAO,EAeL,KAAK,WAAW,EAOjB,MAAM,kBAAkB,CAAC;AAS1B,OAAO,EAIL,KAAK,UAAU,EAKf,KAAK,IAAI,EACV,MAAM,UAAU,CAAC;AAClB,OAAO,EAA0B,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEhF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD,MAAM,WAAW,iBAAkB,SAAQ,UAAU;IACnD,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;CACpC;AACD,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,IAAI,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAC/C;AACD,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,eAAe,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;CACnB;AACD,MAAM,WAAW,cAAc;IAC7B,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,eAAe,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC,CAAC;CAClE;AACD,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,WAAW,EAAE,iBAAiB,EAAE,CAAC;IACjC,SAAS,CAAC,EAAE;QACV,QAAQ,EAAE,WAAW,CAAC;QACtB,YAAY,EAAE,eAAe,CAAC;QAC9B,SAAS,EAAE,qBAAqB,EAAE,CAAC;KACpC,CAAC;CACH;AAqTD,wBAAgB,OAAO,CACrB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,cAAmB,GAC3B,aAAa,CAmjGf"}
|
package/dist/src/compile.js
CHANGED
|
@@ -746,11 +746,15 @@ export function compile(source, options = {}) {
|
|
|
746
746
|
(!binding ||
|
|
747
747
|
(binding.kind === "name" && binding.value === expr.value)))
|
|
748
748
|
return expr;
|
|
749
|
-
// A resolved party parameter
|
|
749
|
+
// A resolved party parameter or an own parameter bound to a value takes
|
|
750
|
+
// precedence over a same-named sibling attachment; `limits: limits`
|
|
751
|
+
// binds by identity and still names the sibling.
|
|
750
752
|
if (attachmentInfo && !resolvedParties.has(expr.value)) {
|
|
751
753
|
const [local, ...tail] = expr.value.split(".");
|
|
754
|
+
const own = environment.get(local);
|
|
755
|
+
const ownValue = own !== undefined && !(own.kind === "name" && own.value === local);
|
|
752
756
|
const target = `${attachmentInfo.subjectKindId}_${local}`;
|
|
753
|
-
if (attachmentSubjects.has(target))
|
|
757
|
+
if (!ownValue && attachmentSubjects.has(target))
|
|
754
758
|
return { ...expr, value: [target, ...tail].join("_") };
|
|
755
759
|
}
|
|
756
760
|
if (expr.value.startsWith("party.")) {
|
|
@@ -1891,7 +1895,7 @@ export function compile(source, options = {}) {
|
|
|
1891
1895
|
}
|
|
1892
1896
|
if (automatic(a.actor))
|
|
1893
1897
|
delete a.publicAction;
|
|
1894
|
-
const checkSubjectPaths = (obj,
|
|
1898
|
+
const checkSubjectPaths = (obj, key = "") => {
|
|
1895
1899
|
if (typeof obj === "string") {
|
|
1896
1900
|
if ([
|
|
1897
1901
|
"field",
|
|
@@ -1906,22 +1910,22 @@ export function compile(source, options = {}) {
|
|
|
1906
1910
|
const subField = obj.split(".")[1];
|
|
1907
1911
|
const req = a.subject?.requirements.find((r) => r.field.name === subField);
|
|
1908
1912
|
if (!req) {
|
|
1909
|
-
failWithCode(
|
|
1913
|
+
failWithCode(row, "subject_field_unknown", `subject.${subField} names no declared subject requirement in action ${name}`, `declare ${subField} in subject { ... }`);
|
|
1910
1914
|
}
|
|
1911
1915
|
}
|
|
1912
1916
|
}
|
|
1913
1917
|
else if (Array.isArray(obj)) {
|
|
1914
1918
|
for (const item of obj)
|
|
1915
|
-
checkSubjectPaths(item,
|
|
1919
|
+
checkSubjectPaths(item, key);
|
|
1916
1920
|
}
|
|
1917
1921
|
else if (obj !== null && typeof obj === "object") {
|
|
1918
1922
|
for (const [key, val] of Object.entries(obj))
|
|
1919
|
-
checkSubjectPaths(val,
|
|
1923
|
+
checkSubjectPaths(val, key);
|
|
1920
1924
|
}
|
|
1921
1925
|
};
|
|
1922
|
-
checkSubjectPaths(a.requires
|
|
1923
|
-
checkSubjectPaths(a.set
|
|
1924
|
-
checkSubjectPaths(a.invoke
|
|
1926
|
+
checkSubjectPaths(a.requires);
|
|
1927
|
+
checkSubjectPaths(a.set);
|
|
1928
|
+
checkSubjectPaths(a.invoke);
|
|
1925
1929
|
currentAction = undefined;
|
|
1926
1930
|
currentActionName = undefined;
|
|
1927
1931
|
for (const requirement of a.subject?.requirements ?? []) {
|
|
@@ -2443,6 +2447,15 @@ export function compile(source, options = {}) {
|
|
|
2443
2447
|
else
|
|
2444
2448
|
action.publicAction = decl.name;
|
|
2445
2449
|
}
|
|
2450
|
+
for (const decl of program.decls) {
|
|
2451
|
+
if (decl.kind !== "expose")
|
|
2452
|
+
continue;
|
|
2453
|
+
const parts = decl.target.split(".");
|
|
2454
|
+
parts.pop();
|
|
2455
|
+
const instrument = document.instruments.find((item) => item.id === parts.join("_"));
|
|
2456
|
+
if (Object.values(instrument.actions).filter((action) => action.publicAction === decl.name).length > 1)
|
|
2457
|
+
fail(decl, `public action ${decl.name} is used more than once on ${parts.join(".")}`, "give each exposed action a distinct public name");
|
|
2458
|
+
}
|
|
2446
2459
|
const usedParties = new Set();
|
|
2447
2460
|
const collectParties = (value) => {
|
|
2448
2461
|
if (typeof value === "string") {
|