@kumikijs/runtime 0.2.0 → 0.2.1

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/dist/index.d.ts CHANGED
@@ -403,7 +403,15 @@ declare const _stdlib: {
403
403
  setDiff(a: Record<string, true> | undefined | null, b: Record<string, true> | undefined | null): Record<string, true>; /** Option(T).or / Result(T,E).or — receiver when Some/Ok, else `other`. */
404
404
  or(v: unknown, other: unknown): unknown; /** Result(T,E).map-err(fn) — maps the Err payload, passes Ok through unchanged. */
405
405
  mapErr(r: unknown, fn: (e: unknown) => unknown): unknown; /** Polymorphic `.diff`: numeric magnitude (Time/Duration) or Set difference. */
406
- diff(a: unknown, b: unknown): unknown;
406
+ diff(a: unknown, b: unknown): unknown; /** List(T).head → Option(T). */
407
+ listHead(xs: unknown[] | undefined | null): unknown; /** List(T).tail → List(T) (all but the first; empty list stays empty). */
408
+ listTail(xs: unknown[] | undefined | null): unknown[]; /** List(T).last → Option(T). */
409
+ listLast(xs: unknown[] | undefined | null): unknown; /** Set(T).to-list / Option(T).to-list → List(T). */
410
+ toList(v: unknown): unknown[]; /** Result(T,E).get-err → E; panics if the value is Ok. */
411
+ getErr(r: unknown): unknown; /** Result(T,E).to-option → Option(T): Ok(v) → Some(v), Err(_) → None. */
412
+ toOption(r: unknown): unknown; /** Text.parse-int → Option(Int) (truncates; mirrors `Int.parse`). */
413
+ parseIntOpt(s: unknown): unknown; /** Text.parse-float → Option(Float) (mirrors `Float.parse`). */
414
+ parseFloatOpt(s: unknown): unknown;
407
415
  };
408
416
  declare const builtinEffects: {
409
417
  storageRead(input: unknown): Promise<EffectResult>;
package/dist/index.js CHANGED
@@ -1848,6 +1848,56 @@ const _stdlib = {
1848
1848
  diff(a, b) {
1849
1849
  if (typeof a === "number" || typeof b === "number") return Math.abs(a - b);
1850
1850
  return _stdlib.setDiff(a, b);
1851
+ },
1852
+ /** List(T).head → Option(T). */
1853
+ listHead(xs) {
1854
+ const a = xs ?? [];
1855
+ return a.length > 0 ? _stdlib.Some(a[0]) : _stdlib.None;
1856
+ },
1857
+ /** List(T).tail → List(T) (all but the first; empty list stays empty). */
1858
+ listTail(xs) {
1859
+ return (xs ?? []).slice(1);
1860
+ },
1861
+ /** List(T).last → Option(T). */
1862
+ listLast(xs) {
1863
+ const a = xs ?? [];
1864
+ return a.length > 0 ? _stdlib.Some(a[a.length - 1]) : _stdlib.None;
1865
+ },
1866
+ /** Set(T).to-list / Option(T).to-list → List(T). */
1867
+ toList(v) {
1868
+ if (v && typeof v === "object" && "_tag" in v) {
1869
+ const o = v;
1870
+ return o._tag === "Some" ? [o._0] : [];
1871
+ }
1872
+ if (Array.isArray(v)) return [...v];
1873
+ if (v && typeof v === "object") return Object.keys(v);
1874
+ return [];
1875
+ },
1876
+ /** Result(T,E).get-err → E; panics if the value is Ok. */
1877
+ getErr(r) {
1878
+ if (r && typeof r === "object" && "_tag" in r) {
1879
+ const t = r;
1880
+ if (t._tag === "Err") return t._0;
1881
+ }
1882
+ throw new Error("get-err called on a non-Err value");
1883
+ },
1884
+ /** Result(T,E).to-option → Option(T): Ok(v) → Some(v), Err(_) → None. */
1885
+ toOption(r) {
1886
+ if (r && typeof r === "object" && "_tag" in r) {
1887
+ const t = r;
1888
+ if (t._tag === "Ok") return _stdlib.Some(t._0);
1889
+ }
1890
+ return _stdlib.None;
1891
+ },
1892
+ /** Text.parse-int → Option(Int) (truncates; mirrors `Int.parse`). */
1893
+ parseIntOpt(s) {
1894
+ const n = Number(s);
1895
+ return String(s).trim() !== "" && Number.isFinite(n) ? _stdlib.Some(Math.trunc(n)) : _stdlib.None;
1896
+ },
1897
+ /** Text.parse-float → Option(Float) (mirrors `Float.parse`). */
1898
+ parseFloatOpt(s) {
1899
+ const n = Number(s);
1900
+ return String(s).trim() !== "" && Number.isFinite(n) ? _stdlib.Some(n) : _stdlib.None;
1851
1901
  }
1852
1902
  };
1853
1903
  const builtinEffects = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kumikijs/runtime",
3
- "version": "0.2.0",
3
+ "version": "0.2.1",
4
4
  "type": "module",
5
5
  "description": "Kumiki DOM runtime — mounts compiled Kumiki apps, dispatches effects, manages the signal graph.",
6
6
  "license": "Apache-2.0",