@emagjby/strata-js 0.4.0 → 0.4.4

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/README.md CHANGED
@@ -38,6 +38,7 @@ This package provides:
38
38
  - Safe decoder with explicit error semantics
39
39
  - Parser for Strata Text (`.st`)
40
40
  - Deterministic BLAKE3 hashing
41
+ - Deterministic formatting (`fmt`)
41
42
  - CLI tooling (mirrors Rust CLI)
42
43
  - Golden vector enforcement
43
44
  - Behavioral parity with the Rust reference implementation
@@ -80,7 +81,7 @@ const value = parse(source);
80
81
  const scb = encodeValue(value); // Uint8Array (canonical bytes)
81
82
 
82
83
  // Hashing is defined over canonical bytes
83
- console.log(hashValueHex(scb));
84
+ console.log(hashValueHex(value));
84
85
  ```
85
86
 
86
87
  ---
@@ -105,12 +106,10 @@ console.log(roundtrippedScb);
105
106
  ### Hash an existing Value
106
107
 
107
108
  ```js
108
- import { parse, encodeValue, hashValueHex } from "@emagjby/strata-js";
109
+ import { parse, hashValueHex } from "@emagjby/strata-js";
109
110
 
110
111
  const value = parse("[1, 2, 3]");
111
- const bytes = encodeValue(value);
112
-
113
- console.log(hashValueHex(bytes));
112
+ console.log(hashValueHex(value));
114
113
  ```
115
114
 
116
115
  ---
@@ -208,7 +207,7 @@ Commands:
208
207
  - `compile` – compile `.st` → canonical `.scb`
209
208
  - `decode` – decode `.scb` for inspection
210
209
  - `hash` – compute deterministic hash
211
- - `fmt` – parse and pretty-print `.st`
210
+ - `fmt` – parse and pretty-print `.st` (or `.scb`)
212
211
 
213
212
  ### Compile
214
213
 
@@ -239,6 +238,14 @@ strata-js decode input.scb
239
238
 
240
239
  ```bash
241
240
  strata-js fmt input.st
241
+ strata-js fmt input.scb
242
+ ```
243
+
244
+ Format options:
245
+
246
+ ```bash
247
+ strata-js fmt --format pretty input.st
248
+ strata-js fmt --format ast input.st
242
249
  ```
243
250
 
244
251
  ### Exit codes
package/dist/cli.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- #!/usr/bin/env node
1
+ #!/usr/bin/env bun
2
2
  export {};
3
3
  //# sourceMappingURL=cli.d.ts.map
package/dist/cli.js CHANGED
@@ -1,4 +1,4 @@
1
- #!/usr/bin/env node
1
+ #!/usr/bin/env bun
2
2
  import fs from "node:fs";
3
3
  import process from "node:process";
4
4
  import { parse } from "./parser.js";
@@ -8,6 +8,7 @@ import { hashBytes } from "./hash.js";
8
8
  import { DecodeError } from "./decode_error.js";
9
9
  import { ParseError } from "./parse_error.js";
10
10
  import { inspectValue } from "./inspect.js";
11
+ import { fmt, FormatOptions } from "./fmt.js";
11
12
  function exitOk() {
12
13
  process.exit(0);
13
14
  }
@@ -57,10 +58,12 @@ function cmdHash(input) {
57
58
  const hashed = hashBytes(encoded);
58
59
  console.log(hex(hashed));
59
60
  }
60
- function cmdFmt(input) {
61
- const source = fs.readFileSync(input, "utf8");
62
- const parsedValue = parse(source);
63
- console.log(JSON.stringify(inspectValue(parsedValue), null, 2));
61
+ function cmdFmt(input, options = FormatOptions.PRETTY) {
62
+ const value = input.endsWith(".scb")
63
+ ? decodeValue(fs.readFileSync(input))
64
+ : parse(fs.readFileSync(input, "utf8"));
65
+ const formatted = fmt(options, value);
66
+ console.log(formatted);
64
67
  }
65
68
  function main() {
66
69
  const [, , cmd, ...args] = process.argv;
@@ -90,21 +93,34 @@ function main() {
90
93
  return exitOk();
91
94
  }
92
95
  case "fmt": {
93
- if (args.length !== 1) {
94
- exitInvalid("usage: strata-js fmt <input.st>");
96
+ if (args.length < 1 || args.length > 3)
97
+ return exitInvalid("usage: strata-js fmt [format] <input.st>");
98
+ if (args.length === 2) {
99
+ return exitInvalid("usage: --format [type] must be provided if format is provided");
100
+ }
101
+ if (args.length === 1) {
102
+ cmdFmt(args[0]);
103
+ return exitOk();
104
+ }
105
+ if (args[0] !== "--format") {
106
+ return exitInvalid("usage: first argument must be --format if format is provided");
107
+ }
108
+ if (args[1] !== "pretty" && args[1] !== "ast") {
109
+ return exitInvalid("usage: format type must be one of: pretty, ast");
95
110
  }
96
- cmdFmt(args[0]);
111
+ const format = args[1] === "pretty" ? FormatOptions.PRETTY : FormatOptions.AST;
112
+ cmdFmt(args[2], format);
97
113
  return exitOk();
98
114
  }
99
115
  case "--help": {
100
116
  console.log(`
101
- Strata CLI (JavaScript)
117
+ Strata CLI (JavaScript)
102
118
 
103
- Commands:
104
- compile <input.st> <output.scb>
105
- decode <input.scb>
106
- hash <input.st|input.scb>
107
- fmt <input.st>
119
+ Commands:
120
+ compile <input.st> <output.scb>
121
+ decode <input.scb>
122
+ hash <input.st|input.scb>
123
+ fmt [format] <input.st>
108
124
  `);
109
125
  process.exit(0);
110
126
  }
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,OAAO,MAAM,cAAc,CAAC;AAEnC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,SAAS,MAAM;IACX,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC;AAED,SAAS,WAAW,CAAC,GAAY;IAC7B,IAAI,GAAG,EAAE,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC;AAED,SAAS,MAAM,CAAC,GAAY;IACxB,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;QACvB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC;AAED,SAAS,YAAY,CAAC,GAAY;IAC9B,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAChC,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;QACvB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACtB,CAAC;AAED,SAAS,GAAG,CAAC,KAAiB;IAC1B,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,UAAU,CAAC,KAAa,EAAE,MAAc;IAC7C,MAAM,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5B,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IACnC,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,SAAS,CAAC,KAAa;IAC5B,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IACnC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,OAAO,CAAC,KAAa;IAC1B,IAAI,OAAmB,CAAC;IAExB,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC9C,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;QAC5B,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;SAAM,CAAC;QACJ,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IAClC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAC7B,CAAC;AAED,SAAS,MAAM,CAAC,KAAa;IACzB,MAAM,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC9C,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IAClC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACpE,CAAC;AAED,SAAS,IAAI;IACT,MAAM,CAAC,EAAE,AAAD,EAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAExC,IAAI,CAAC,GAAG,EAAE,CAAC;QACP,WAAW,CAAC,qBAAqB,CAAC,CAAC;IACvC,CAAC;IAED,QAAQ,GAAG,EAAE,CAAC;QACV,KAAK,SAAS,CAAC,CAAC,CAAC;YACb,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACpB,WAAW,CAAC,kDAAkD,CAAC,CAAC;YACpE,CAAC;YACD,UAAU,CAAC,IAAI,CAAC,CAAC,CAAE,EAAE,IAAI,CAAC,CAAC,CAAE,CAAC,CAAC;YAC/B,OAAO,MAAM,EAAE,CAAC;QACpB,CAAC;QAED,KAAK,QAAQ,CAAC,CAAC,CAAC;YACZ,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACpB,WAAW,CAAC,qCAAqC,CAAC,CAAC;YACvD,CAAC;YACD,SAAS,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,CAAC;YACpB,OAAO,MAAM,EAAE,CAAC;QACpB,CAAC;QAED,KAAK,MAAM,CAAC,CAAC,CAAC;YACV,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACpB,WAAW,CAAC,4CAA4C,CAAC,CAAC;YAC9D,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,CAAC;YAClB,OAAO,MAAM,EAAE,CAAC;QACpB,CAAC;QAED,KAAK,KAAK,CAAC,CAAC,CAAC;YACT,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACpB,WAAW,CAAC,iCAAiC,CAAC,CAAC;YACnD,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,CAAC;YACjB,OAAO,MAAM,EAAE,CAAC;QACpB,CAAC;QAED,KAAK,QAAQ,CAAC,CAAC,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC;;;;;;;;aAQX,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;QAED;YACI,WAAW,CAAC,oBAAoB,GAAG,EAAE,CAAC,CAAC;IAC/C,CAAC;AACL,CAAC;AAED,IAAI,CAAC;IACD,IAAI,EAAE,CAAC;AACX,CAAC;AAAC,OAAO,GAAG,EAAE,CAAC;IACX,IAAI,GAAG,YAAY,WAAW,IAAI,GAAG,YAAY,UAAU,EAAE,CAAC;QAC1D,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,IAAI,GAAG,YAAY,KAAK,IAAI,MAAM,IAAI,GAAG,IAAK,GAAW,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC1E,MAAM,CAAC,GAAG,CAAC,CAAC;IAChB,CAAC;IAED,YAAY,CAAC,GAAG,CAAC,CAAC;AACtB,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/dist/fmt.d.ts ADDED
@@ -0,0 +1,7 @@
1
+ import { Value } from "./value.js";
2
+ export declare enum FormatOptions {
3
+ PRETTY = "PRETTY",
4
+ AST = "AST"
5
+ }
6
+ export declare function fmt(opts: FormatOptions, value: Value): string;
7
+ //# sourceMappingURL=fmt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fmt.d.ts","sourceRoot":"","sources":["../src/fmt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,oBAAY,aAAa;IACrB,MAAM,WAAW;IACjB,GAAG,QAAQ;CACd;AAED,wBAAgB,GAAG,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,GAAG,MAAM,CAU7D"}
package/dist/fmt.js ADDED
@@ -0,0 +1,84 @@
1
+ export var FormatOptions;
2
+ (function (FormatOptions) {
3
+ FormatOptions["PRETTY"] = "PRETTY";
4
+ FormatOptions["AST"] = "AST";
5
+ })(FormatOptions || (FormatOptions = {}));
6
+ export function fmt(opts, value) {
7
+ switch (opts) {
8
+ case FormatOptions.PRETTY: {
9
+ const f = new PrettyFmt();
10
+ f.value(value);
11
+ return f.out;
12
+ }
13
+ case FormatOptions.AST:
14
+ return prettyDebug(value);
15
+ }
16
+ }
17
+ class PrettyFmt {
18
+ out = "";
19
+ depth = 0;
20
+ indent = 2;
21
+ pad() {
22
+ return " ".repeat(this.depth * this.indent);
23
+ }
24
+ value(v) {
25
+ switch (v.kind) {
26
+ case "null":
27
+ this.out += "null";
28
+ break;
29
+ case "bool":
30
+ this.out += String(v.value);
31
+ break;
32
+ case "int":
33
+ this.out += String(v.value);
34
+ break;
35
+ case "string":
36
+ this.out += `"${v.value}"`;
37
+ break;
38
+ case "bytes":
39
+ this.bytes(v.value);
40
+ break;
41
+ case "list":
42
+ this.list(v.value);
43
+ break;
44
+ case "map":
45
+ this.map(v.value);
46
+ break;
47
+ }
48
+ }
49
+ bytes(bytes) {
50
+ this.out += "[";
51
+ for (const b of bytes) {
52
+ this.out += b.toString(16).padStart(2, "0");
53
+ }
54
+ this.out += "]";
55
+ }
56
+ list(list) {
57
+ this.out += "[";
58
+ for (let i = 0; i < list.length; i++) {
59
+ this.value(list[i]);
60
+ if (i + 1 !== list.length)
61
+ this.out += ", ";
62
+ }
63
+ this.out += "]";
64
+ }
65
+ map(map) {
66
+ this.out += "{\n";
67
+ this.depth += 1;
68
+ const entries = [...map.entries()].sort(([a], [b]) => a.localeCompare(b));
69
+ for (const [k, v] of entries) {
70
+ this.out += this.pad();
71
+ this.out += k;
72
+ this.out += ": ";
73
+ this.value(v);
74
+ this.out += "\n";
75
+ }
76
+ this.depth -= 1;
77
+ this.out += this.pad();
78
+ this.out += "}";
79
+ }
80
+ }
81
+ function prettyDebug(value) {
82
+ return JSON.stringify(value, null, 2);
83
+ }
84
+ //# sourceMappingURL=fmt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fmt.js","sourceRoot":"","sources":["../src/fmt.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -2,6 +2,7 @@ export { encodeValue } from "./encode.js";
2
2
  export { decodeValue } from "./decode.js";
3
3
  export { hashValueHex, hashBytes as hashValue } from "./hash.js";
4
4
  export { parse } from "./parser.js";
5
+ export { fmt } from "./fmt.js";
5
6
  export { Value, V } from "./value_factory.js";
6
7
  export { V as ValueFactory } from "./value_factory.js";
7
8
  export * from "./value.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,SAAS,IAAI,SAAS,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,CAAC,IAAI,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,SAAS,IAAI,SAAS,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,CAAC,IAAI,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC"}
package/dist/index.js CHANGED
@@ -4,6 +4,7 @@ export { encodeValue } from "./encode.js";
4
4
  export { decodeValue } from "./decode.js";
5
5
  export { hashValueHex, hashBytes as hashValue } from "./hash.js";
6
6
  export { parse } from "./parser.js";
7
+ export { fmt } from "./fmt.js";
7
8
  export { Value, V } from "./value_factory.js";
8
9
  export { V as ValueFactory } from "./value_factory.js";
9
10
  export * from "./value.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,wBAAwB;AACxB,+BAA+B;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,SAAS,IAAI,SAAS,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,CAAC,IAAI,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,wBAAwB;AACxB,+BAA+B;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,SAAS,IAAI,SAAS,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,CAAC,IAAI,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@emagjby/strata-js",
3
- "version": "0.4.0",
3
+ "version": "0.4.4",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",