Skip to content

Commit

Permalink
Traversal: add explicit type annotations to fromTraversable and trave…
Browse files Browse the repository at this point in the history
…rse, fix #159
  • Loading branch information
gcanti committed Mar 10, 2021
1 parent f6d5549 commit 7ab9df9
Show file tree
Hide file tree
Showing 7 changed files with 92 additions and 15 deletions.
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
**Note**: Gaps between patch versions are faulty/broken releases. **Note**: A feature tagged as Experimental is in a
high state of flux, you're at risk of it changing without notice.

# 2.3.8
# 2.3.9

Experimental modules require `fp-ts@^2.5.0`.

Expand Down
47 changes: 45 additions & 2 deletions docs/modules/Traversal.ts.md
Original file line number Diff line number Diff line change
Expand Up @@ -318,7 +318,19 @@ Return a `Traversal` from a `Traversal` focused on a `Traversable`.
**Signature**

```ts
export declare const traverse: typeof _.traversalTraverse
export declare const traverse: <T extends
| 'Option'
| 'ReadonlyRecord'
| 'Ord'
| 'Eq'
| 'ReadonlyNonEmptyArray'
| 'ReadonlyArray'
| 'Identity'
| 'NonEmptyArray'
| 'Array'
| 'Record'>(
T: Traversable1<T>
) => <S, A>(sta: Traversal<S, Kind<T, A>>) => Traversal<S, A>
```

Added in v2.3.0
Expand Down Expand Up @@ -406,7 +418,38 @@ Create a `Traversal` from a `Traversable`.
**Signature**

```ts
export declare const fromTraversable: typeof _.fromTraversable
export declare const fromTraversable: {
<T extends never>(T: Traversable3<T>): <R, E, A>() => Traversal<Kind3<T, R, E, A>, A>
<
T extends
| 'monocle-ts/Iso'
| 'monocle-ts/Lens'
| 'monocle-ts/Optional'
| 'monocle-ts/Prism'
| 'Either'
| 'ReadonlyMap'
| 'Const'
| 'monocle-ts/Traversal'
>(
T: Traversable2<T>
): <E, A>() => Traversal<Kind2<T, E, A>, A>
<
T extends
| 'Option'
| 'ReadonlyRecord'
| 'Ord'
| 'Eq'
| 'ReadonlyNonEmptyArray'
| 'ReadonlyArray'
| 'Identity'
| 'NonEmptyArray'
| 'Array'
| 'Record'
>(
T: Traversable1<T>
): <A>() => Traversal<Kind<T, A>, A>
<T>(T: Traversable<T>): <A>() => Traversal<HKT<T, A>, A>
}
```

Added in v2.3.0
Expand Down
16 changes: 8 additions & 8 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "monocle-ts",
"version": "2.3.8",
"version": "2.3.9",
"description": "A porting of scala monocle library to TypeScript",
"main": "lib/index.js",
"module": "es6/index.js",
Expand All @@ -24,6 +24,7 @@
"docs": "docs-ts",
"prerelease": "npm run build",
"release": "ts-node scripts/release",
"release-as-next": "ts-node scripts/release-as-next",
"import-path-rewrite": "import-path-rewrite"
},
"repository": {
Expand Down
23 changes: 23 additions & 0 deletions scripts/release-as-next.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import { run } from './run'
import * as child_process from 'child_process'
import { left, right } from 'fp-ts/lib/Either'
import * as TE from 'fp-ts/lib/TaskEither'

const DIST = 'dist'

const exec = (cmd: string, args?: child_process.ExecOptions): TE.TaskEither<Error, void> => () =>
new Promise((resolve) => {
child_process.exec(cmd, args, (err) => {
if (err !== null) {
return resolve(left(err))
}

return resolve(right(undefined))
})
})

export const main = exec('npm publish --tag=next', {
cwd: DIST
})

run(main)
12 changes: 10 additions & 2 deletions src/Traversal.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ import * as A from 'fp-ts/lib/ReadonlyArray'
import { ReadonlyNonEmptyArray } from 'fp-ts/lib/ReadonlyNonEmptyArray'
import { ReadonlyRecord } from 'fp-ts/lib/ReadonlyRecord'
import { Semigroupoid2 } from 'fp-ts/lib/Semigroupoid'
import { Traversable, Traversable1, Traversable2, Traversable3 } from 'fp-ts/lib/Traversable'
import * as _ from './internal'
import { Iso } from './Iso'
import { Lens } from './Lens'
Expand Down Expand Up @@ -79,7 +80,12 @@ export const id = <S>(): Traversal<S, S> => traversal(<F>(_: Applicative<F>) =>
* @category constructor
* @since 2.3.0
*/
export const fromTraversable = _.fromTraversable
export const fromTraversable: {
<T extends URIS3>(T: Traversable3<T>): <R, E, A>() => Traversal<Kind3<T, R, E, A>, A>
<T extends URIS2>(T: Traversable2<T>): <E, A>() => Traversal<Kind2<T, E, A>, A>
<T extends URIS>(T: Traversable1<T>): <A>() => Traversal<Kind<T, A>, A>
<T>(T: Traversable<T>): <A>() => Traversal<HKT<T, A>, A>
} = _.fromTraversable

// -------------------------------------------------------------------------------------
// compositions
Expand Down Expand Up @@ -283,7 +289,9 @@ export const left: <S, E, A>(sea: Traversal<S, Either<E, A>>) => Traversal<S, E>
* @category combinators
* @since 2.3.0
*/
export const traverse = _.traversalTraverse
export const traverse: <T extends URIS>(
T: Traversable1<T>
) => <S, A>(sta: Traversal<S, Kind<T, A>>) => Traversal<S, A> = _.traversalTraverse

/**
* @category combinators
Expand Down
4 changes: 3 additions & 1 deletion src/internal.ts
Original file line number Diff line number Diff line change
Expand Up @@ -323,10 +323,12 @@ export function traversalComposeTraversal<A, B>(ab: Traversal<A, B>): <S>(sa: Tr

/** @internal */
export function fromTraversable<T extends URIS3>(T: Traversable3<T>): <R, E, A>() => Traversal<Kind3<T, R, E, A>, A>
/** @internal */
export function fromTraversable<T extends URIS2>(T: Traversable2<T>): <E, A>() => Traversal<Kind2<T, E, A>, A>
/** @internal */
export function fromTraversable<T extends URIS>(T: Traversable1<T>): <A>() => Traversal<Kind<T, A>, A>
export function fromTraversable<T>(T: Traversable<T>): <A>() => Traversal<HKT<T, A>, A>
/** @internal */
export function fromTraversable<T>(T: Traversable<T>): <A>() => Traversal<HKT<T, A>, A>
export function fromTraversable<T>(T: Traversable<T>): <A>() => Traversal<HKT<T, A>, A> {
return <A>() =>
traversal(<F>(F: Applicative<F>) => {
Expand Down

0 comments on commit 7ab9df9

Please sign in to comment.