New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

reactivedb

Package Overview
Dependencies
Maintainers
3
Versions
84
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

reactivedb - npm Package Compare versions

Comparing version 0.9.3 to 0.9.4

src/tsconfig.json

2

exception/database.d.ts

@@ -9,3 +9,3 @@ import { ReactiveDBException } from './Exception';

export declare const UnexpectedRelationship: () => ReactiveDBException;
export declare const InvalidType: (expect?: [string, string]) => ReactiveDBException;
export declare const InvalidType: (expect?: [string, string] | undefined) => ReactiveDBException;
export declare const PrimaryKeyNotProvided: () => ReactiveDBException;

@@ -12,0 +12,0 @@ export declare const PrimaryKeyConflict: () => ReactiveDBException;

import { ReactiveDBException } from './Exception';
export declare const TokenConsumed: () => ReactiveDBException;
export declare const TokenConcatFailed: (msg?: string) => ReactiveDBException;
export declare const TokenConcatFailed: (msg?: string | undefined) => ReactiveDBException;

@@ -89,3 +89,3 @@ /// <reference types="lovefield" />

export interface UpsertContext {
mapper: Function;
mapper: Function | null;
isNavigatorLeaf: boolean;

@@ -119,3 +119,3 @@ visited: boolean;

column: lf.schema.Column;
orderBy: lf.Order;
orderBy: lf.Order | null;
}

@@ -122,0 +122,0 @@ export interface LfFactoryInit {

{
"name": "reactivedb",
"version": "0.9.3",
"version": "0.9.4",
"description": "Reactive ORM for Lovefield",

@@ -10,8 +10,8 @@ "main": "index.js",

"build_module_es6": "npm-run-all clean_dist_es6 copy_src_es6 compile_module_es6",
"build_test": "rm -rf spec-js && tsc test/run.ts -m commonjs --outDir spec-js --sourcemap --target ES2015 --diagnostics --pretty --noImplicitAny --noImplicitReturns --experimentalDecorators --suppressImplicitAnyIndexErrors --moduleResolution node",
"build_test": "rm -rf spec-js && tsc -p test/tsconfig.json",
"clean_dist_cjs": "rm -rf ./dist/cjs",
"clean_dist_es6": "rm -rf ./dist/es6",
"check_circular_dependencies": "madge ./dist/cjs --circular",
"compile_cjs": "tsc dist/cjs/src/index.ts dist/cjs/src/proxy/index.ts -m commonjs --outDir dist/cjs --sourcemap --target ES5 -d --diagnostics --pretty --noImplicitAny --noImplicitReturns --noImplicitThis --noUnusedLocals --noUnusedParameters --experimentalDecorators --suppressImplicitAnyIndexErrors --moduleResolution node --noEmitHelpers --importHelpers --lib es5,es2015.iterable,es2015.collection,es2015.promise,dom",
"compile_module_es6": "rm -rf dist/es6/dist/es6 && tsc dist/es6/src/index.ts src/proxy/index.ts -m ES2015 --outDir dist/es6 --sourcemap --target ES5 -d --diagnostics --pretty --noImplicitAny --noImplicitReturns --noImplicitThis --noUnusedLocals --noUnusedParameters --experimentalDecorators --suppressImplicitAnyIndexErrors --moduleResolution node --noEmitHelpers --importHelpers --lib es5,es2015.iterable,es2015.collection,es2015.promise,dom",
"compile_cjs": "tsc dist/cjs/src/index.ts dist/cjs/src/proxy/index.ts -m commonjs --outDir dist/cjs --sourcemap --target ES5 -d --diagnostics --pretty --strict --noImplicitReturns --noUnusedLocals --noUnusedParameters --suppressImplicitAnyIndexErrors --moduleResolution node --noEmitHelpers --importHelpers --lib es5,es2015.iterable,es2015.collection,es2015.promise,dom",
"compile_module_es6": "rm -rf dist/es6/dist/es6 && tsc dist/es6/src/index.ts src/proxy/index.ts -m ES2015 --outDir dist/es6 --sourcemap --target ES5 -d --diagnostics --pretty --strict --noImplicitReturns --noUnusedLocals --noUnusedParameters --suppressImplicitAnyIndexErrors --moduleResolution node --noEmitHelpers --importHelpers --lib es5,es2015.iterable,es2015.collection,es2015.promise,dom",
"copy_src_cjs": "mkdirp ./dist/cjs/src && shx cp -r ./src/* ./dist/cjs/src",

@@ -26,4 +26,4 @@ "copy_src_es6": "mkdirp ./dist/es6/src && shx cp -r ./src/* ./dist/es6/src",

"watch": "NODE_ENV=test ts-node ./tools/watch.ts & npm run watch_test",
"watch_cjs": "tsc src/index.ts -m commonjs --outDir dist --sourcemap --target ES5 -d --diagnostics --pretty --noImplicitAny --noImplicitReturns --experimentalDecorators --suppressImplicitAnyIndexErrors --moduleResolution node --noEmitHelpers --lib es5,es2015.iterable,es2015.collection,es2015.promise,dom -w",
"watch_test": "tsc test/run.ts -m commonjs --outDir spec-js --sourcemap --target ES2015 --diagnostics --pretty --noImplicitAny --noImplicitReturns --experimentalDecorators --suppressImplicitAnyIndexErrors --moduleResolution node -w"
"watch_cjs": "tsc src/index.ts -m commonjs --outDir dist --sourcemap --target ES5 -d --diagnostics --pretty --strict --noImplicitReturns --suppressImplicitAnyIndexErrors --moduleResolution node --noEmitHelpers --lib es5,es2015.iterable,es2015.collection,es2015.promise,dom -w",
"watch_test": "tsc -p test/tsconfig.json -w --diagnostics --pretty"
},

@@ -67,3 +67,3 @@ "keywords": [

"tslint-loader": "^3.5.3",
"typescript": "^2.2.2",
"typescript": "^2.3.2",
"webpack": "^2.4.1",

@@ -70,0 +70,0 @@ "webpack-dev-server": "^2.4.5"

@@ -83,8 +83,3 @@ "use strict";

Logger.setLevel = function (level) {
Logger.defaultLevel = level;
Logger.outputLogger = new ContextLogger('[ReactiveDB]', level, function (name, _, message) {
var current = new Date();
var prefix = name ? "[" + name + "] " : '';
return prefix + "at " + current.toLocaleString() + ": \r\n " + message;
});
Logger.outputLogger.setLevel(level);
};

@@ -127,3 +122,7 @@ Logger.warn = function () {

Logger.defaultLevel = Level.debug;
Logger.outputLogger = null;
Logger.outputLogger = new ContextLogger('[ReactiveDB]', Logger.defaultLevel, function (name, _, message) {
var current = new Date();
var prefix = name ? "[" + name + "] " : '';
return prefix + "at " + current.toLocaleString() + ": \r\n " + message;
});
exports.Logger = Logger;

@@ -130,0 +129,0 @@ var envifyLevel = function () {

@@ -102,3 +102,3 @@ import { Observable } from 'rxjs/Observable'

export interface UpsertContext {
mapper: Function
mapper: Function | null
isNavigatorLeaf: boolean,

@@ -143,3 +143,3 @@ visited: boolean,

column: lf.schema.Column
orderBy: lf.Order
orderBy: lf.Order | null
}

@@ -146,0 +146,0 @@

@@ -71,3 +71,7 @@ export enum Level {

private static defaultLevel = Level.debug
private static outputLogger: ContextLogger = null
private static outputLogger = new ContextLogger('[ReactiveDB]', Logger.defaultLevel, (name, _, message) => {
const current = new Date()
const prefix = name ? `[${name}] ` : ''
return `${prefix}at ${current.toLocaleString()}: \r\n ` + message
})

@@ -88,8 +92,3 @@ static get(name: string, formatter?: Formatter, level?: Level) {

static setLevel(level: Level) {
Logger.defaultLevel = level
Logger.outputLogger = new ContextLogger('[ReactiveDB]', level, (name, _, message) => {
const current = new Date()
const prefix = name ? `[${name}] ` : ''
return `${prefix}at ${current.toLocaleString()}: \r\n ` + message
})
Logger.outputLogger.setLevel(level)
}

@@ -96,0 +95,0 @@

@@ -30,3 +30,3 @@ import { Observable } from 'rxjs/Observable'

private schemas = new Map<string, ParsedSchema>()
private schemaBuilder: lf.schema.Builder
private schemaBuilder: lf.schema.Builder | null
private connected = false

@@ -38,9 +38,9 @@ // note thin cache will be unreliable in some eage case

private findPrimaryKey = (name: string) => {
return this.findSchema(name).pk
return this.findSchema(name)!.pk
}
private findSchema = (name: string) => {
private findSchema = (name: string): ParsedSchema => {
const schema = this.schemas.get(name)
assert(schema, Exception.NonExistentTable(name))
return schema
return schema!
}

@@ -178,3 +178,3 @@

const [ table ] = Database.getTables(db, tableName)
const columnMapper = schema.mapper
const columnMapper = schema!.mapper
const hiddenPayload = Object.create(null)

@@ -184,3 +184,3 @@

// cannot create a hidden column for primary key
if (!hasOwn(entity, key) || key === schema.pk) {
if (!hasOwn(entity, key) || key === schema!.pk) {
return

@@ -196,7 +196,7 @@ }

const predicate = createPredicate(table, clause.where)
const query = predicatableQuery(db, table, predicate, StatementType.Update)
const query = predicatableQuery(db, table, predicate!, StatementType.Update)
forEach(mut, (val, key) => {
const column = table[key]
if (key === schema.pk) {
if (key === schema!.pk) {
warn(`Primary key is not modifiable.`)

@@ -223,4 +223,4 @@ } else if (!column) {

const [ table ] = Database.getTables(db, tableName)
const column = table[pk]
const provider = new PredicateProvider(table, clause.where)
const column = table[pk!]
const provider = new PredicateProvider(table, clause.where!)
const prefetch =

@@ -234,7 +234,7 @@ predicatableQuery(db, table, provider.getPredicate(), StatementType.Select, column)

scopedIds.forEach((entity: any) =>
this.storedIds.delete(fieldIdentifier(tableName, entity[pk])))
this.storedIds.delete(fieldIdentifier(tableName, entity[pk!])))
return this.executor(db, [query]).do({ error: () => {
scopedIds.forEach((entity: any) =>
this.storedIds.add(fieldIdentifier(tableName, entity[pk])))
this.storedIds.add(fieldIdentifier(tableName, entity[pk!])))
}})

@@ -274,3 +274,3 @@ })

}
const disposeHandler = schema.dispose
const disposeHandler = schema!.dispose

@@ -283,9 +283,9 @@ return this.database$.concatMap((db) => {

const removedIds: any = []
queries.push(predicatableQuery(db, table, predicate, StatementType.Delete))
queries.push(predicatableQuery(db, table, predicate!, StatementType.Delete))
const prefetch = predicatableQuery(db, table, predicate, StatementType.Select)
const prefetch = predicatableQuery(db, table, predicate!, StatementType.Select)
return Observable.fromPromise(prefetch.exec())
.concatMap((rootEntities) => {
rootEntities.forEach(entity => {
removedIds.push(fieldIdentifier(tableName, entity[schema.pk]))
removedIds.push(fieldIdentifier(tableName, entity[schema!.pk]))
})

@@ -331,3 +331,3 @@

this.schemaDefs.forEach((schemaDef, tableName) => {
const tableBuilder = this.schemaBuilder.createTable(tableName)
const tableBuilder = this.schemaBuilder!.createTable(tableName)
this.parseSchemaDef(tableName, schemaDef, tableBuilder)

@@ -425,3 +425,3 @@ })

const containKey = containFields ? contains(pk, clause.fields) : true
const containKey = containFields ? contains(pk, clause.fields!) : true
const fields: Set<Fields> = containFields ? new Set(clause.fields) : new Set(schema.columns.keys())

@@ -431,3 +431,3 @@ const { table, columns, joinInfo, definition } =

const query =
predicatableQuery(db, table, null, StatementType.Select, ...columns)
predicatableQuery(db, table!, null, StatementType.Select, ...columns)

@@ -439,3 +439,3 @@ joinInfo.forEach((info: JoinInfo) =>

return {
column: table[desc.fieldName],
column: table![desc.fieldName],
orderBy: !desc.orderBy ? null : lf.Order[desc.orderBy]

@@ -451,6 +451,6 @@ }

definition,
mainTable: table
mainTable: table!
}
const { limit, skip } = clause
const provider = new PredicateProvider(table, clause.where)
const provider = new PredicateProvider(table!, clause.where!)

@@ -556,3 +556,3 @@ return new Selector<T>(db, query, matcher, provider, limit, skip, orderDesc)

const { where, type } = defs as Association
rootDefinition[key] = definition.revise(type, ret.definition)
rootDefinition[key] = definition.revise(type!, ret.definition)
const [ predicate, err ] = tryCatch(createPredicate)(currentTable, where(ret.table))

@@ -576,3 +576,3 @@ if (err) {

traversable.context((field, val, ctx) => {
if (ctx.isRoot || typeof field !== 'string') {
if (!ctx || ctx.isRoot || typeof field !== 'string') {
return false

@@ -607,3 +607,3 @@ }

const { column, identifier } = ctx.leaf as ColumnLeaf
const type = schema.columns.get(ctx.key)
const type = schema.columns.get(ctx.key)!
const columnDef = definition.create(identifier, schema.pk === ctx.key, type)

@@ -651,3 +651,3 @@ handleAdvanced({ columns: [column], advanced: true }, ctx.key, columnDef)

const stored = contains(identifier, this.storedIds)
const mut = visited ? sharing.get(identifier) : new Mutation(db, table)
const mut = visited ? sharing.get(identifier)! : new Mutation(db, table)

@@ -667,8 +667,8 @@ if (!visited) {

if (!(isColumn || isNavigator || ctx.isRoot)) {
if (!(isColumn || isNavigator || ctx!.isRoot)) {
// 若当前节点非 有效节点、叶子节点或者根节点中任意一种时,直接停止子节点的迭代
ctx.skip()
ctx!.skip()
}
return (ctx.isRoot || (!isColumn && !isNavigator)) ? false : {
return (ctx!.isRoot || (!isColumn && !isNavigator)) ? false : {
mapper,

@@ -684,3 +684,3 @@ visited,

if (ctx.isNavigatorLeaf) {
const ref = schema.associations.get(ctx.key).name
const ref = schema.associations.get(ctx.key)!.name
return this.traverseCompound(db, ref, node, insertMutList, updateMutList, sharing)

@@ -740,3 +740,3 @@ }

const predicate = createPredicate(table, clause)
const query = predicatableQuery(db, table, predicate, StatementType.Delete)
const query = predicatableQuery(db, table, predicate!, StatementType.Delete)

@@ -748,3 +748,3 @@ queryCollection.push(query)

const get = (where: Predicate<any> = null) => {
const get = (where: Predicate<any> | null = null) => {
const [ table ] = Database.getTables(db, tableName)

@@ -755,3 +755,3 @@ const [ predicate, err ] = tryCatch(createPredicate)(table, where)

}
const query = predicatableQuery(db, table, predicate, StatementType.Select)
const query = predicatableQuery(db, table, predicate!, StatementType.Select)

@@ -758,0 +758,0 @@ return Observable.fromPromise<T[]>(query.exec())

@@ -5,4 +5,4 @@ import * as lf from 'lovefield'

export function createPredicate<T>(table: lf.schema.Table, clause: Predicate<T> = null) {
export function createPredicate<T>(table: lf.schema.Table, clause: Predicate<T> | null = null) {
return clause ? new PredicateProvider(table, clause).getPredicate() : null
}

@@ -7,3 +7,3 @@ import * as lf from 'lovefield'

table: lf.schema.Table,
predicate: lf.Predicate,
predicate: lf.Predicate | null,
type: StatementType.Select,

@@ -16,3 +16,3 @@ ...columns: lf.schema.Column[]

table: lf.schema.Table,
predicate: lf.Predicate,
predicate: lf.Predicate | null,
type: StatementType.Delete,

@@ -25,3 +25,3 @@ ...columns: lf.schema.Column[]

table: lf.schema.Table,
predicate: lf.Predicate,
predicate: lf.Predicate | null,
type: StatementType.Update,

@@ -34,3 +34,3 @@ ...columns: lf.schema.Column[]

table: lf.schema.Table,
predicate: lf.Predicate,
predicate: lf.Predicate | null,
type: StatementType.Select | StatementType.Update | StatementType.Delete,

@@ -51,2 +51,4 @@ ...columns: lf.schema.Column[]

break
default:
throw TypeError('unreachable code path')
}

@@ -53,0 +55,0 @@

@@ -60,3 +60,3 @@ import { forEach, assert, warn } from '../../utils'

contextIds: keys,
queries: [].concat(insertQueries).concat(updateQueries)
queries: insertQueries.concat(updateQueries as any[])
}

@@ -63,0 +63,0 @@ }

@@ -77,3 +77,3 @@ import * as lf from 'lovefield'

getPredicate(): lf.Predicate {
getPredicate(): lf.Predicate | null {
const predicates = this.normalizeMeta(this.meta)

@@ -91,4 +91,7 @@ if (predicates.length) {

toString() {
return this.getPredicate().toString()
toString(): string | void {
const pred = this.getPredicate()
if (pred !== null) {
return pred.toString()
}
}

@@ -95,0 +98,0 @@

@@ -6,25 +6,18 @@ import { Observable } from 'rxjs/Observable'

private mapFn: <U, K>(v: U, index?: number, array?: U[]) => K = (v: T) => v
public request$: Observable<T[]>
constructor (
public request$: Observable<T> | Observable<T[]>,
request$: Observable<T> | Observable<T[]>,
public query: Query<T>,
public tableName: string
) {
this.request$ = this.request$.map((v: T| T[]) => {
if (typeof this.mapFn === 'function') {
if (Array.isArray(v)) {
return v.map(this.mapFn)
} else {
return [this.mapFn(v)]
}
this.request$ = request$.map((r: T | T[]) => {
if (Array.isArray(r)) {
return r
} else {
return [ r ]
}
return v
})
}
setMapFn(fn: <K>(v: T, index?: number, array?: T[]) => K) {
this.mapFn = fn
}
values() {

@@ -31,0 +24,0 @@ return this.request$

@@ -9,29 +9,19 @@ import { Observable } from 'rxjs/Observable'

mapFn: <J, K>(v: J, index?: number, array?: J[]) => K
selector$: Observable<SelectorMeta<T>>
constructor(public selector$: Observable<SelectorMeta<T>>) { }
constructor(meta$: Observable<SelectorMeta<T>>) {
this.selector$ = meta$
.do((selector: SelectorMeta<T>) => {
if (!(selector instanceof ProxySelector)) {
(selector as Selector<T>).setMapFn(this.mapFn)
}
})
.publishReplay(1)
.refCount()
map<K>(fn: (stream$: Observable<T[]>) => Observable<K[]>) {
this.selector$ = this.selector$
.do(s => this.decoratorSelector(s, fn))
return this as any as QueryToken<K>
}
map<K>(fn: (v: T, index?: number, array?: T[]) => K) {
this.mapFn = fn
return this
}
values() {
values(): Observable<T[]> {
return (this.selector$ as Observable<Selector<T>>)
.switchMap(selector => selector.values()).take(1)
.switchMap(s => s.values())
.take(1)
}
changes() {
changes(): Observable<T[]> {
return (this.selector$ as Observable<Selector<T>>)
.switchMap(selector => selector.changes())
.switchMap(s => s.changes())
}

@@ -58,6 +48,20 @@

const first = r.shift()
return first[method](...r)
return first![method](...r)
})
return new QueryToken<T>(newSelector$)
}
private decoratorSelector(selector: SelectorMeta<T>, fn: <K>(stream$: Observable<T[]>) => Observable<K[]>) {
const methods = ['changes', 'values']
methods.forEach(method => {
const originFn = selector[method]
selector[method] = () => {
const dist$ = originFn.call(selector)
if (typeof fn === 'function') {
return fn(dist$)
}
return dist$
}
})
}
}

@@ -16,7 +16,7 @@ import { Observer } from 'rxjs/Observer'

.map(m => ({ skip: m.skip, limit: m.limit }))
.sort((x, y) => x.skip - y.skip)
.sort((x, y) => x.skip! - y.skip!)
const { db, lselect, shape, predicateProvider } = meta
const [ minSkip ] = skipsAndLimits
const maxLimit = skipsAndLimits.reduce((acc, current) => {
const nextSkip = acc.skip + acc.limit
const nextSkip = acc.skip! + acc.limit!
assert(current.skip === nextSkip, Exception.TokenConcatFailed(`

@@ -31,3 +31,3 @@ skip should be serial,

db, lselect, shape, predicateProvider,
maxLimit.limit + maxLimit.skip, minSkip.skip, meta.orderDescriptions
maxLimit.limit! + maxLimit.skip!, minSkip.skip, meta.orderDescriptions
)

@@ -80,4 +80,2 @@ }

private mapFn: <J, K>(v: J, index?: number, array?: J[]) => K = (v: T) => v
private consumed = false

@@ -87,3 +85,3 @@ private predicateBuildErr = false

private get rangeQuery(): lf.query.Select {
let predicate: lf.Predicate = null
let predicate: lf.Predicate | null = null
const { predicateProvider } = this

@@ -100,7 +98,7 @@ if (predicateProvider && !this.predicateBuildErr) {

forEach(this.orderDescriptions, orderInfo =>
rangeQuery.orderBy(orderInfo.column, orderInfo.orderBy)
rangeQuery.orderBy(orderInfo.column, orderInfo.orderBy!)
)
}
rangeQuery.limit(this.limit).skip(this.skip)
rangeQuery.limit(this.limit!).skip(this.skip!)

@@ -115,3 +113,3 @@ return rangeQuery

forEach(this.orderDescriptions, orderInfo =>
q.orderBy(orderInfo.column, orderInfo.orderBy)
q.orderBy(orderInfo.column, orderInfo.orderBy!)
)

@@ -127,3 +125,3 @@ }

private shape: ShapeMatcher,
public predicateProvider?: PredicateProvider<T>,
public predicateProvider?: PredicateProvider<T> | null,
private limit?: number,

@@ -137,5 +135,3 @@ private skip?: number,

if (!predicate) {
predicateProvider = null
this.predicateProvider = null
this.predicateBuildErr = true
throw new TypeError()
}

@@ -166,3 +162,3 @@ } catch (err) {

const $predicate = predicateProvider
? lf.op.and($in, predicateProvider.getPredicate())
? lf.op.and($in, predicateProvider.getPredicate()!)
: $in

@@ -185,3 +181,3 @@ const query = this.query

const query = predicateProvider ? this.query
.where(predicateProvider.getPredicate()) : this.query
.where(predicateProvider.getPredicate()!) : this.query
listener()

@@ -199,6 +195,6 @@ db.observe(query, listener)

toString(): string {
let predicate: lf.Predicate
let predicate: lf.Predicate | undefined
const { predicateProvider } = this
if (predicateProvider && !this.predicateBuildErr) {
predicate = predicateProvider.getPredicate()
predicate = predicateProvider.getPredicate()!
}

@@ -212,3 +208,3 @@ return predicate ? this.query.where(predicate).toSql() : this.query.toSql()

this.consumed = true
if (this.limit || this.skip) {
if (typeof this.limit !== 'undefined' || typeof this.skip !== 'undefined') {
const p = this.rangeQuery.exec()

@@ -228,7 +224,7 @@ .then(r => r.map(v => v[this.shape.pk.name]))

concat(... selectMetas: Selector<T>[]): Selector<T> {
const orderStr = Selector.stringifyOrder(this.orderDescriptions)
const orderStr = Selector.stringifyOrder(this.orderDescriptions!)
const equal = selectMetas.every(m =>
m.select === this.select &&
m.predicateProvider.toString() === this.predicateProvider.toString() &&
Selector.stringifyOrder(m.orderDescriptions) === orderStr
m.predicateProvider!.toString() === this.predicateProvider!.toString() &&
Selector.stringifyOrder(m.orderDescriptions!) === orderStr
)

@@ -246,6 +242,2 @@ assert(equal, Exception.TokenConcatFailed())

setMapFn<J, K>(fn: (v: J, index?: number, array?: J[]) => K) {
this.mapFn = fn
}
private getValue(pks?: (string | number)[]) {

@@ -257,3 +249,3 @@ let q: lf.query.Select

? predIn
: lf.op.and(predIn, this.predicateProvider.getPredicate())
: lf.op.and(predIn, this.predicateProvider.getPredicate()!)

@@ -264,3 +256,3 @@ q = this.query.where(predicate)

if (!this.predicateBuildErr) {
q = q.where(this.predicateProvider.getPredicate())
q = q.where(this.predicateProvider!.getPredicate()!)
}

@@ -274,8 +266,2 @@ }

})
.then(v => {
if (typeof this.mapFn === 'function') {
v = v.map(this.mapFn)
}
return v
})
}

@@ -282,0 +268,0 @@

import { forEach } from './for-each'
export const clone = <T>(origin: T, target: T = null): T | null => {
export const clone = <T>(origin: T, target: T | null = null): T | null => {
  if (origin == null) {

@@ -30,3 +30,3 @@ return origin

  forEach(origin, (val, key) => {
    target[key] = clone(val, null)
    target![key] = clone(val, null)
  })

@@ -33,0 +33,0 @@

@@ -1,1 +0,1 @@

export default '0.9.3'
export default '0.9.4'

@@ -469,3 +469,3 @@ "use strict";

traversable.context(function (field, val, ctx) {
if (ctx.isRoot || typeof field !== 'string') {
if (!ctx || ctx.isRoot || typeof field !== 'string') {
return false;

@@ -472,0 +472,0 @@ }

/// <reference types="lovefield" />
import * as lf from 'lovefield';
import { Predicate } from '../../interface';
export declare function createPredicate<T>(table: lf.schema.Table, clause?: Predicate<T>): lf.Predicate;
export declare function createPredicate<T>(table: lf.schema.Table, clause?: Predicate<T> | null): lf.Predicate | null;
/// <reference types="lovefield" />
import * as lf from 'lovefield';
import { StatementType } from '../../interface';
export declare function predicatableQuery(db: lf.Database, table: lf.schema.Table, predicate: lf.Predicate, type: StatementType.Select, ...columns: lf.schema.Column[]): lf.query.Select;
export declare function predicatableQuery(db: lf.Database, table: lf.schema.Table, predicate: lf.Predicate, type: StatementType.Delete, ...columns: lf.schema.Column[]): lf.query.Delete;
export declare function predicatableQuery(db: lf.Database, table: lf.schema.Table, predicate: lf.Predicate, type: StatementType.Update, ...columns: lf.schema.Column[]): lf.query.Update;
export declare function predicatableQuery(db: lf.Database, table: lf.schema.Table, predicate: lf.Predicate | null, type: StatementType.Select, ...columns: lf.schema.Column[]): lf.query.Select;
export declare function predicatableQuery(db: lf.Database, table: lf.schema.Table, predicate: lf.Predicate | null, type: StatementType.Delete, ...columns: lf.schema.Column[]): lf.query.Delete;
export declare function predicatableQuery(db: lf.Database, table: lf.schema.Table, predicate: lf.Predicate | null, type: StatementType.Update, ...columns: lf.schema.Column[]): lf.query.Update;

@@ -20,2 +20,4 @@ "use strict";

break;
default:
throw TypeError('unreachable code path');
}

@@ -22,0 +24,0 @@ return predicate ? query.where(predicate) : query;

@@ -10,3 +10,3 @@ /// <reference types="lovefield" />

contextIds: any[];
queries: any[];
queries: lf.query.Insert[];
};

@@ -13,0 +13,0 @@ private toUpdater();

@@ -46,3 +46,3 @@ "use strict";

contextIds: keys,
queries: [].concat(insertQueries).concat(updateQueries)
queries: insertQueries.concat(updateQueries)
};

@@ -49,0 +49,0 @@ };

@@ -8,4 +8,4 @@ /// <reference types="lovefield" />

constructor(table: lf.schema.Table, meta: Predicate<T>);
getPredicate(): lf.Predicate;
toString(): string;
getPredicate(): lf.Predicate | null;
toString(): string | void;
private normalizeMeta(meta, column?);

@@ -12,0 +12,0 @@ private checkMethod(methodName);

@@ -77,3 +77,6 @@ "use strict";

PredicateProvider.prototype.toString = function () {
return this.getPredicate().toString();
var pred = this.getPredicate();
if (pred !== null) {
return pred.toString();
}
};

@@ -80,0 +83,0 @@ PredicateProvider.prototype.normalizeMeta = function (meta, column) {

import { Observable } from 'rxjs/Observable';
import { Query } from '../../interface';
export declare class ProxySelector<T> {
request$: Observable<T> | Observable<T[]>;
query: Query<T>;
tableName: string;
private mapFn;
request$: Observable<T[]>;
constructor(request$: Observable<T> | Observable<T[]>, query: Query<T>, tableName: string);
setMapFn(fn: <K>(v: T, index?: number, array?: T[]) => K): void;
values(): Observable<T> | Observable<T[]>;
changes(): Observable<T> | Observable<T[]>;
values(): Observable<T[]>;
changes(): Observable<T[]>;
}

@@ -5,22 +5,13 @@ "use strict";

function ProxySelector(request$, query, tableName) {
var _this = this;
this.request$ = request$;
this.query = query;
this.tableName = tableName;
this.mapFn = function (v) { return v; };
this.request$ = this.request$.map(function (v) {
if (typeof _this.mapFn === 'function') {
if (Array.isArray(v)) {
return v.map(_this.mapFn);
}
else {
return [_this.mapFn(v)];
}
this.request$ = request$.map(function (r) {
if (Array.isArray(r)) {
return r;
}
return v;
else {
return [r];
}
});
}
ProxySelector.prototype.setMapFn = function (fn) {
this.mapFn = fn;
};
ProxySelector.prototype.values = function () {

@@ -27,0 +18,0 @@ return this.request$;

@@ -6,6 +6,5 @@ import { Observable } from 'rxjs/Observable';

export declare class QueryToken<T> {
mapFn: <J, K>(v: J, index?: number, array?: J[]) => K;
selector$: Observable<SelectorMeta<T>>;
constructor(meta$: Observable<SelectorMeta<T>>);
map<K>(fn: (v: T, index?: number, array?: T[]) => K): this;
constructor(selector$: Observable<SelectorMeta<T>>);
map<K>(fn: (stream$: Observable<T[]>) => Observable<K[]>): QueryToken<K>;
values(): Observable<T[]>;

@@ -17,2 +16,3 @@ changes(): Observable<T[]>;

private composeFactory(tokens, method);
private decoratorSelector(selector, fn);
}

@@ -6,15 +6,9 @@ "use strict";

var QueryToken = (function () {
function QueryToken(meta$) {
var _this = this;
this.selector$ = meta$
.do(function (selector) {
if (!(selector instanceof ProxySelector_1.ProxySelector)) {
selector.setMapFn(_this.mapFn);
}
})
.publishReplay(1)
.refCount();
function QueryToken(selector$) {
this.selector$ = selector$;
}
QueryToken.prototype.map = function (fn) {
this.mapFn = fn;
var _this = this;
this.selector$ = this.selector$
.do(function (s) { return _this.decoratorSelector(s, fn); });
return this;

@@ -24,7 +18,8 @@ };

return this.selector$
.switchMap(function (selector) { return selector.values(); }).take(1);
.switchMap(function (s) { return s.values(); })
.take(1);
};
QueryToken.prototype.changes = function () {
return this.selector$
.switchMap(function (selector) { return selector.changes(); });
.switchMap(function (s) { return s.changes(); });
};

@@ -55,6 +50,20 @@ QueryToken.prototype.concat = function () {

var first = r.shift();
return first[method].apply(first, r);
return (_a = first)[method].apply(_a, r);
var _a;
});
return new QueryToken(newSelector$);
};
QueryToken.prototype.decoratorSelector = function (selector, fn) {
var methods = ['changes', 'values'];
methods.forEach(function (method) {
var originFn = selector[method];
selector[method] = function () {
var dist$ = originFn.call(selector);
if (typeof fn === 'function') {
return fn(dist$);
}
return dist$;
};
});
};
return QueryToken;

@@ -61,0 +70,0 @@ }());

@@ -10,3 +10,3 @@ /// <reference types="lovefield" />

private shape;
predicateProvider: PredicateProvider<T>;
predicateProvider: PredicateProvider<T> | null;
private limit;

@@ -20,3 +20,2 @@ private skip;

change$: Observable<T[]>;
private mapFn;
private consumed;

@@ -26,3 +25,3 @@ private predicateBuildErr;

private readonly query;
constructor(db: lf.Database, lselect: lf.query.Select, shape: ShapeMatcher, predicateProvider?: PredicateProvider<T>, limit?: number, skip?: number, orderDescriptions?: OrderInfo[]);
constructor(db: lf.Database, lselect: lf.query.Select, shape: ShapeMatcher, predicateProvider?: PredicateProvider<T> | null, limit?: number, skip?: number, orderDescriptions?: OrderInfo[]);
toString(): string;

@@ -33,3 +32,2 @@ values(): Observable<T[]> | never;

changes(): Observable<T[]> | never;
setMapFn<J, K>(fn: (v: J, index?: number, array?: J[]) => K): void;
private getValue(pks?);

@@ -36,0 +34,0 @@ private removeKey(data, key);

@@ -20,3 +20,2 @@ "use strict";

this.orderDescriptions = orderDescriptions;
this.mapFn = function (v) { return v; };
this.consumed = false;

@@ -28,5 +27,3 @@ this.predicateBuildErr = false;

if (!predicate) {
predicateProvider = null;
this.predicateProvider = null;
this.predicateBuildErr = true;
throw new TypeError();
}

@@ -191,3 +188,3 @@ }

this.consumed = true;
if (this.limit || this.skip) {
if (typeof this.limit !== 'undefined' || typeof this.skip !== 'undefined') {
var p = this.rangeQuery.exec()

@@ -229,5 +226,2 @@ .then(function (r) { return r.map(function (v) { return v[_this.shape.pk.name]; }); })

};
Selector.prototype.setMapFn = function (fn) {
this.mapFn = fn;
};
Selector.prototype.getValue = function (pks) {

@@ -254,8 +248,2 @@ var _this = this;

return !_this.shape.pk.queried ? _this.removeKey(result, col) : result;
})
.then(function (v) {
if (typeof _this.mapFn === 'function') {
v = v.map(_this.mapFn);
}
return v;
});

@@ -262,0 +250,0 @@ };

@@ -1,1 +0,1 @@

export declare const clone: <T>(origin: T, target?: T) => T;
export declare const clone: <T>(origin: T, target?: T | null) => T | null;

@@ -1,1 +0,1 @@

export declare function tryCatch<T>(this: any, fn: (...args: any[]) => T): (...args: any[]) => [T, Error];
export declare function tryCatch<T>(this: any, fn: (...args: any[]) => T): (...args: any[]) => [T | null, Error | null];

@@ -1,2 +0,2 @@

declare var _default: "0.9.3";
declare var _default: "0.9.4";
export default _default;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = '0.9.3';
exports.default = '0.9.4';
//# sourceMappingURL=version.js.map

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc