Skip to content

Commit

Permalink
Fixed circular dependency issues during rollup
Browse files Browse the repository at this point in the history
  • Loading branch information
mweststrate committed Jul 6, 2018
1 parent c06ac11 commit ea3db28
Show file tree
Hide file tree
Showing 16 changed files with 55 additions and 55 deletions.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
"scripts": {
"watch": "jest --watch",
"test": "jest",
"test:build": "yarn-or-npm run build && node -e 'require(\".\")",
"test:build": "yarn-or-npm run build && node -e 'require(\".\")'",
"coveralls": "jest --coverage && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js && rm -rf ./coverage",
"build": "rimraf dist/ && cross-env NODE_ENV=production rollup -c && cpx \"src/remmi.{d.ts,js.flow}\" dist",
"prettier": "prettier \"*/**/*.ts*\" --ignore-path ./.prettierignore --write",
Expand Down
2 changes: 1 addition & 1 deletion rollup.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import typescript from 'rollup-plugin-typescript'

function getConfig(dest, format, ugly) {
const conf = {
input: "src/remmi.tsx",
input: "src/remmi.ts",
output: {
exports: "named",
file: dest,
Expand Down
15 changes: 15 additions & 0 deletions src/api.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import {Lens, Store, Merge, BaseLens} from "./internal"

export function createStore<T>(initialValue: T): Lens<T> {
return new Store(initialValue)
}

// TODO proper typings
export function merge(...lenses: Lens[]) {
return new Merge(lenses)
}

// TODO: read only lens
export function isLens(thing: any): thing is Lens {
return thing instanceof BaseLens
}
14 changes: 14 additions & 0 deletions src/internal.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
export * from "./lenses/Lens"
export * from "./lenses/BaseLens"
export * from "./lenses/Pipe"
export * from "./lenses/All"
export * from "./lenses/Merge"
export * from "./lenses/ReadOnly"
export * from "./lenses/Recorder"
export * from "./lenses/Select"
export * from "./lenses/SelectField"
export * from "./lenses/Store"
export * from "./react"
export * from "./utils"
export * from "./api"
export * from "./react"
5 changes: 1 addition & 4 deletions src/lenses/All.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,4 @@
import {BaseLens} from "./BaseLens"
import {Pipe} from "./Pipe"
import {fail, shallowEqual} from "../utils"
import {Lens} from "./Lens"
import { Lens, BaseLens, shallowEqual, Pipe } from "../internal";

export class All extends Pipe {
previousKeySet: number | string[] | undefined = undefined
Expand Down
23 changes: 13 additions & 10 deletions src/lenses/BaseLens.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,16 @@
import { fail } from "../utils"
import { Lens, Handler, Disposer, Selector } from "./Lens";
import {
fail,
Select,
SelectField,
ReadOnly,
Recorder,
createStore,
All,
Lens,
Handler,
Disposer,
Selector
} from "../internal"

export abstract class BaseLens<T = any> implements Lens<T> {
readonly selectorCache = new Map<any, BaseLens>()
Expand Down Expand Up @@ -132,11 +143,3 @@ function subscribe(subscriptions: Handler[], handler: Handler): Disposer {
if (idx !== -1) subscriptions.splice(idx, 1)
}
}

import { Select } from "./Select"
import { SelectField } from "./SelectField"
import { ReadOnly } from "./ReadOnly";
import { Recorder } from "./Recorder";
import { createStore } from "../remmi";
import { All } from "./All";

3 changes: 1 addition & 2 deletions src/lenses/Merge.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import { BaseLens } from "./BaseLens";
import { fail, shallowEqual } from "../utils"
import { BaseLens } from "../internal";

export class Merge<X=any, T extends ReadonlyArray<X> = any[]> extends BaseLens<T> {
constructor(private bases: BaseLens[]) {
Expand Down
2 changes: 1 addition & 1 deletion src/lenses/Pipe.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { BaseLens } from "./BaseLens";
import { BaseLens } from "../internal";

// lens that doesn't do anything particullary useful (it just returns it's parents value),
// yet is useful for subclassing
Expand Down
3 changes: 1 addition & 2 deletions src/lenses/ReadOnly.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import { fail } from "../utils"
import { Pipe } from "./Pipe";
import { fail, Pipe } from "../internal"

export class ReadOnly extends Pipe {
update(_updater: any) {
Expand Down
3 changes: 1 addition & 2 deletions src/lenses/Recorder.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import { Pipe } from "./Pipe";
import { Updater, Lens } from "./Lens";
import { Pipe, Updater, Lens } from "../internal";

// TODO: create interface?
export class Recorder<T> extends Pipe implements Lens<T> {
Expand Down
4 changes: 1 addition & 3 deletions src/lenses/Select.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
import { BaseLens } from "./BaseLens";
import { Selector, Lens } from "./Lens";
import { Pipe } from "./Pipe";
import { Pipe, Lens, Selector, BaseLens } from "../internal";

export class Select<B, R> extends Pipe implements Lens<R> {
constructor(base: BaseLens<any>, public selector: Selector<B, R>) {
Expand Down
4 changes: 2 additions & 2 deletions src/lenses/SelectField.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { BaseLens } from "./BaseLens";
import { Pipe } from "./Pipe";
import { BaseLens, Pipe } from "../internal";


// Specialized version of select, that only selects a certain sub property
// saves a lot of closures during selection, and handles undefined values transparently
Expand Down
3 changes: 1 addition & 2 deletions src/lenses/Store.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import { fail, noop } from "../utils"
import produce from "immer"

import { BaseLens } from "./BaseLens";
import { fail, noop, BaseLens } from "../internal"

export class Store<T = any> extends BaseLens<T> {
private currentDraft?: T
Expand Down
2 changes: 1 addition & 1 deletion src/react.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import React from "react"
import * as React from "react"
import { Lens } from "./lenses/Lens";
import { shallowEqual } from "./utils";
import { merge } from "./remmi";
Expand Down
1 change: 1 addition & 0 deletions src/remmi.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export { project, mapProject, createStore, merge, isLens } from "./internal"
24 changes: 0 additions & 24 deletions src/remmi.tsx

This file was deleted.

0 comments on commit ea3db28

Please sign in to comment.