Skip to content

Commit

Permalink
Finetuned and verified public api
Browse files Browse the repository at this point in the history
  • Loading branch information
mweststrate committed Feb 12, 2016
1 parent abd2e1a commit 63b6362
Show file tree
Hide file tree
Showing 4 changed files with 79 additions and 24 deletions.
2 changes: 1 addition & 1 deletion scripts/single-file-build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ echo '/** Mobservable - (c) Michel Weststrate 2015, 2016 - MIT Licensed */' > .b
cat src/mobservable.ts | grep -v 'import' | sed -e 's/from.*$//g' >> .build/mobservable.ts

# find all ts files, concat them (with newlines), remove all import statements, remove export keyword
ls src/{core,types,api,utils}/*.ts | xargs awk 'BEGINFILE {print "/* file:", FILENAME, "*/"} {print $0}' | grep -v 'import ' | sed -e 's/^export function/function/g' -e 's/^export class/class/g' >> .build/mobservable.ts
ls src/{core,types,api,utils}/*.ts | xargs awk 'BEGINFILE {print "/* file:", FILENAME, "*/"} {print $0}' | grep -v 'import ' | sed -e 's/^export //g' >> .build/mobservable.ts

# compile, generate declaration, no comments
tsc -m umd -t es5 -d --removeComments --sourcemap --outDir lib .build/mobservable.ts
Expand Down
47 changes: 27 additions & 20 deletions src/mobservable.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,40 +23,47 @@ registerGlobals();
* 'Private' elements that are exposed for testing and debugging utilities
*/

import {quickDiff} from "./utils/utils";
import {isComputingDerivation, resetGlobalState, } from "./core/globalstate";

// TODO: all exports in sync with docs?
// TODO: optimize packaging?
export { asReference, asFlat, asStructure } from "./types/modifiers";
export { isObservableObject } from "./types/observableobject";
export { isObservableArray, fastArray } from "./types/observablearray";
export { ObservableMap, isObservableMap, map } from "./types/observablemap"
export { Lambda } from "./utils/utils";
export { ITransitionEvent, IObserverTree, IDependencyTree } from "./api/extras";
export { IObservable, IDepTreeNode } from "./core/observable";
export { IDerivation } from "./core/derivation";

export { observable } from "./api/observable";
export { isObservable } from "./api/isobservable";
export { extendObservable } from "./api/extendobservable";
export { observe } from "./api/observe";
export { autorun, autorunAsync, autorunUntil, when } from "./api/autorun";
export { expr } from "./api/expr";
export { toJSON } from "./api/tojson";
export { createTransformer } from "./api/createtransformer";
export { asReference, asFlat, asStructure } from "./types/modifiers";
export { IObjectChange, isObservableObject } from "./types/observableobject";
export { IObservableArray, IArrayChange, IArraySplice, isObservableArray, fastArray } from "./types/observablearray";
export { IObservableMapChange, IKeyValueMap, ObservableMap, IMapEntries, isObservableMap, map } from "./types/observablemap"

export { untracked } from "./core/globalstate";
export { transaction } from "./core/transaction";
export { IObservableValue, observable } from "./api/observable";
export { isObservable } from "./api/isobservable";
export { extendObservable } from "./api/extendobservable";
export { observe } from "./api/observe";
export { autorun, autorunAsync, autorunUntil, when } from "./api/autorun";
export { expr } from "./api/expr";
export { toJSON } from "./api/tojson";
export { ITransformer, createTransformer } from "./api/createtransformer";

export { untracked } from "./core/globalstate";
export { transaction } from "./core/transaction";
export { Reaction } from "./core/reaction";

export {SimpleEventEmitter} from "./utils/simpleeventemitter";

import { isComputingDerivation, resetGlobalState } from "./core/globalstate";
import { quickDiff } from "./utils/utils";

export const _ = {
quickDiff,
resetGlobalState
}

import {getDependencyTree, getObserverTree, trackTransitions, allowStateChanges, ITransitionEvent, IObserverTree, IDependencyTree} from "./api/extras";
import {Lambda} from "./utils/utils";
import { ITransitionEvent, IObserverTree, IDependencyTree } from "./api/extras";
import { SimpleEventEmitter } from "./utils/simpleeventemitter";
import { getDependencyTree, getObserverTree, trackTransitions, allowStateChanges } from "./api/extras";
import { Lambda } from "./utils/utils";

export const extras = {
SimpleEventEmitter: <any> SimpleEventEmitter,
getDependencyTree,
getObserverTree,
trackTransitions,
Expand Down
6 changes: 3 additions & 3 deletions src/types/observablemap.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ export interface IKeyValueMap<V> {
[key: string]: V;
}

export type Entries<V> = [string, V][]
export type IMapEntries<V> = [string, V][]

export interface IObservableMapChange<T> extends IObjectChange<T, ObservableMap<T>> {

Expand All @@ -24,7 +24,7 @@ export class ObservableMap<V> {
private _valueMode: ValueMode;
private _events = new SimpleEventEmitter();

constructor(initialData?: Entries<V> | IKeyValueMap<V>, valueModeFunc?: Function) {
constructor(initialData?: IMapEntries<V> | IKeyValueMap<V>, valueModeFunc?: Function) {
this._valueMode = getValueModeFromModifierFunc(valueModeFunc);
if (isPlainObject(initialData))
this.merge(<IKeyValueMap<V>> initialData);
Expand Down Expand Up @@ -118,7 +118,7 @@ export class ObservableMap<V> {
return this.keys().map(this.get, this);
}

entries(): Entries<V> {
entries(): IMapEntries<V> {
return this.keys().map(key => <[string, V]>[key, this.get(key)]);
}

Expand Down
48 changes: 48 additions & 0 deletions test/api.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
var mobservable = require('../');
var test = require('tape');

test('correct api should be exposed', function(t) {
t.deepEquals(Object.keys(mobservable).sort(), [
'ObservableMap',
'Reaction',
'_',
'asFlat',
'asReference',
'asStructure',
'autorun',
'autorunAsync',
'autorunUntil',
'createTransformer',
'expr',
'extendObservable',
'extras',
'fastArray',
'isObservable',
'isObservableArray',
'isObservableMap',
'isObservableObject',
'map',
'observable',
'observe',
'toJSON',
'transaction',
'untracked',
'when'
]);

t.deepEquals(Object.keys(mobservable._).sort(), [
'quickDiff',
'resetGlobalState'
]);

t.deepEquals(Object.keys(mobservable.extras).sort(), [
'SimpleEventEmitter',
'allowStateChanges',
'getDependencyTree',
'getObserverTree',
'isComputingDerivation',
'trackTransitions'
]);

t.end();
});

0 comments on commit 63b6362

Please sign in to comment.