Skip to content

Commit

Permalink
Js extras so prelude not required (#6)
Browse files Browse the repository at this point in the history
* prelude

* remove references to prelude

* adds exports

* update readme
  • Loading branch information
bwireman committed Mar 9, 2024
1 parent a98b21e commit 6db0bf0
Show file tree
Hide file tree
Showing 12 changed files with 994 additions and 602 deletions.
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -72,18 +72,18 @@ let res = delay.retry(d, 3, 200)

## Usage within Javascript 🌸 directly
If you want to use this library from javascript alone, but aren't ready to embrace gleam, you can install it from [npm](https://www.npmjs.com/package/delay-gleam)!
You will need a copy of Gleam's [JS prelude](https://github.com/gleam-lang/gleam/blob/v1.0.0/compiler-core/templates/prelude.mjs) as well. Docs can be found [here](https://hexdocs.pm/delay/index.html)
Docs can be found [here](https://hexdocs.pm/delay/index.html)

```sh
npm i delay-gleam
```

```javascript
import { delay_effect, map, run } from "delay-gleam"
import { Ok, Error } from "./prelude.mjs"
import { ok, error } from "delay-gleam/extras"

d = delay_effect(() => new Error(console.log("123")))
d = map(d, (_) => new Ok(console.log("456")))
d = delay_effect(() => error(console.log("123")))
d = map(d, (_) => ok(console.log("456")))
run(d)
// 123
```
Expand Down
86 changes: 17 additions & 69 deletions dist/delay.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -93,10 +93,19 @@ export function any(effects: List<Delay$<any, any>>): boolean
*/
export function fallthrough<GBI, GBJ>(effects: List<Delay$<GBI, GBJ>>): Result<GBI, GBJ>

export class CustomType {
withFields<K extends keyof this>(fields: {
[P in K]: this[P]
}): this
export class Continue<FXD, FXE> extends CustomType {
constructor(effect: () => Result<any, any>)
effect(): Result<any, any>
}

export class Stop<FXE> extends CustomType {
constructor(err: FXE)
err: FXE
}

export class Result<T, E> extends CustomType {
static isResult(data: unknown): boolean
isOk(): boolean
}

export class List<T> implements any {
Expand All @@ -110,69 +119,8 @@ export class List<T> implements any {
[Symbol.iterator](): Iterator<T>
}

export function toList<T>(array: Array<T>): List<T>

export class Empty<T = never> extends List<T> {}

export class NonEmpty<T> extends List<T> {}

export class BitArray {
buffer: Uint8Array
get length(): number
byteAt(index: number): number
floatAt(index: number): number
intFromSlice(start: number, end: number): number
binaryFromSlice(state: number, end: number): BitArray
sliceAfter(index: number): BitArray
}

export class UtfCodepoint {
value: string
}

export function toBitArray(segments: Array<number | Uint8Array>): BitArray

export function sizedInt(int: number, size: number): Uint8Array

export function byteArrayToInt(byteArray: Uint8Array): number

export function byteArrayToFloat(byteArray: Uint8Array): number

export function stringBits(string: string): Uint8Array

export function codepointBits(codepoint: UtfCodepoint): Uint8Array

export function float64Bits(float: number): Uint8Array

export class Result<T, E> extends CustomType {
static isResult(data: unknown): boolean
isOk(): boolean
}

export class Ok<T, E> extends Result<T, E> {
0: T
constructor(value: T)
}

export class Error<T, E> extends Result<T, E> {
0: E
constructor(value: E)
}

export function isEqual(a: any, b: any): boolean

export function remainderInt(a: number, b: number): number

export function divideInt(a: number, b: number): number

export function divideFloat(a: number, b: number): number

export class Continue<FXE, FXD> extends CustomType {
constructor(effect: () => Result<any, any>)
effect(): Result<any, any>
}

export class Stop<FXE> extends CustomType {
constructor(err: FXE)
err: FXE
export class CustomType {
withFields<K extends keyof this>(fields: {
[P in K]: this[P]
}): this
}

0 comments on commit 6db0bf0

Please sign in to comment.