@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 +9 -1
- package/dist/index.js +50 -0
- package/package.json +1 -1
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