Comparing version 4.0.0-beta.6 to 4.0.0-beta.7
@@ -7,3 +7,3 @@ /// <reference types="node" /> | ||
import { type Derby } from './Derby'; | ||
import { PageForClient, type PageBase } from './Page'; | ||
import { PageForClient, type Page } from './Page'; | ||
import { PageParams } from './routes'; | ||
@@ -14,4 +14,4 @@ import { type Views } from './templates/templates'; | ||
} | ||
export declare function createAppPage(derby: any): typeof PageBase; | ||
interface AppOptions { | ||
export declare function createAppPage(derby: any): typeof Page; | ||
export interface AppOptions { | ||
appMetadata?: Record<string, string>; | ||
@@ -41,3 +41,3 @@ scriptHash?: string; | ||
appMetadata: Record<string, string>; | ||
Page: typeof PageBase; | ||
Page: typeof Page; | ||
proto: any; | ||
@@ -47,4 +47,4 @@ views: Views; | ||
model: Model; | ||
page: PageBase; | ||
protected _pendingComponentMap: Record<string, ComponentConstructor>; | ||
page: Page; | ||
protected _pendingComponentMap: Record<string, ComponentConstructor | SingletonComponentConstructor>; | ||
protected _waitForAttach: boolean; | ||
@@ -54,5 +54,5 @@ protected _cancelAttach: boolean; | ||
serverUse: typeof util.serverUse; | ||
constructor(derby: any, name: any, filename: any, options?: AppOptions); | ||
constructor(derby: any, name?: string, filename?: string, options?: AppOptions); | ||
abstract _init(options?: AppOptions): any; | ||
loadViews(_viewFilename: any, _viewName: any): void; | ||
loadViews(_viewFilename: any, _viewName?: any): void; | ||
loadStyles(_filename: any, _options: any): void; | ||
@@ -59,0 +59,0 @@ component(constructor: ComponentConstructor | SingletonComponentConstructor): this; |
@@ -65,8 +65,10 @@ var __extends = (this && this.__extends) || (function () { | ||
function AppBase(derby, name, filename, options) { | ||
if (options === void 0) { options = {}; } | ||
var _this = this; | ||
var _a; | ||
var _a, _b; | ||
_this = _super.call(this) || this; | ||
_this.use = racer_1.util.use; | ||
_this.serverUse = racer_1.util.serverUse; | ||
if (options == null) { | ||
options = {}; | ||
} | ||
_this.derby = derby; | ||
@@ -76,3 +78,3 @@ _this.name = name; | ||
_this.scriptHash = (_a = options.scriptHash) !== null && _a !== void 0 ? _a : ''; | ||
_this.appMetadata = options.appMetadata || {}; | ||
_this.appMetadata = (_b = options.appMetadata) !== null && _b !== void 0 ? _b : {}; | ||
_this.Page = createAppPage(derby); | ||
@@ -79,0 +81,0 @@ _this.proto = _this.Page.prototype; |
import { AppBase } from './App'; | ||
import { type DerbyBase } from './Derby'; | ||
import { type StyleCompilerOptions } from './files'; | ||
import { PageForServer } from './PageForServer'; | ||
@@ -6,3 +8,3 @@ interface Agent { | ||
} | ||
type CompilerFunciton = (file: string, filename?: string, options?: unknown) => unknown; | ||
type CompilerFunciton = (file: string, filename?: string, options?: unknown) => string; | ||
export declare class AppForServer extends AppBase { | ||
@@ -24,3 +26,3 @@ agents: Record<string, Agent>; | ||
router: any; | ||
constructor(derby: any, name: string, filename: string, options: any); | ||
constructor(derby: DerbyBase, name: string, filename: string, options: any); | ||
_init(options: any): void; | ||
@@ -37,4 +39,4 @@ private _initBundle; | ||
deserialize(): void; | ||
loadViews(filename: any, namespace: any): this; | ||
loadStyles(filename: any, options: any): this; | ||
loadViews(filename: string, namespace?: string): this; | ||
loadStyles(filename: string, options?: StyleCompilerOptions): this; | ||
private _loadStyles; | ||
@@ -41,0 +43,0 @@ private _watchViews; |
@@ -26,6 +26,6 @@ /* | ||
var racer = require("racer"); | ||
var util = racer.util; | ||
var App_1 = require("./App"); | ||
var parsing = require("./parsing"); | ||
var derbyTemplates = require("./templates"); | ||
var util = racer.util; | ||
// Avoid Browserifying these dependencies | ||
@@ -32,0 +32,0 @@ var chokidar, files, fs, path; |
@@ -1,4 +0,4 @@ | ||
import { type ChildModel, type ModelData } from 'racer'; | ||
import { type ChildModel } from 'racer'; | ||
import { Controller } from './Controller'; | ||
import { PageBase } from './Page'; | ||
import { Page } from './Page'; | ||
import derbyTemplates = require('./templates'); | ||
@@ -13,19 +13,14 @@ import { Context } from './templates/contexts'; | ||
export interface ComponentConstructor { | ||
new (context: Context, data: ModelData): Component; | ||
new (context: Context, data: Record<string, unknown>): Component; | ||
DataConstructor?: DataConstructor; | ||
singleton?: true | undefined; | ||
singleton?: undefined; | ||
view?: ComponentViewDefinition; | ||
} | ||
export interface SingletonComponentConstructor { | ||
new (): Component; | ||
new (): object; | ||
singleton: true; | ||
view?: { | ||
is: string; | ||
dependencies?: ComponentConstructor[]; | ||
source?: string; | ||
file?: string; | ||
}; | ||
view?: ComponentViewDefinition; | ||
} | ||
export interface ComponentViewDefinition { | ||
dependencies?: ComponentConstructor[]; | ||
dependencies?: Array<ComponentConstructor | SingletonComponentConstructor>; | ||
file?: string; | ||
@@ -38,7 +33,7 @@ is?: string; | ||
} | ||
export declare abstract class Component extends Controller { | ||
export declare abstract class Component<T extends object = object> extends Controller<T> { | ||
context: Context; | ||
id: string; | ||
isDestroyed: boolean; | ||
page: PageBase; | ||
page: Page; | ||
parent: Controller; | ||
@@ -49,3 +44,3 @@ singleton?: true; | ||
static DataConstructor?: DataConstructor; | ||
constructor(context: Context, data: ComponentModelData); | ||
constructor(context: Context, data: Record<string, unknown>); | ||
init(_model: ChildModel): void; | ||
@@ -79,8 +74,9 @@ destroy(): void; | ||
} | ||
export declare function createFactory(constructor: ComponentConstructor): SingletonComponentFactory | ComponentFactory; | ||
export declare function createFactory(constructor: ComponentConstructor | SingletonComponentConstructor): SingletonComponentFactory | ComponentFactory; | ||
export declare class ComponentModelData { | ||
id: string; | ||
$controller: any; | ||
$controller: Controller; | ||
$element: any; | ||
$event: any; | ||
[key: string]: unknown; | ||
} | ||
@@ -87,0 +83,0 @@ export declare class ComponentFactory { |
@@ -417,3 +417,3 @@ /* | ||
// static property on the constructor is preferred | ||
return (constructor.singleton || constructor.prototype.singleton) ? | ||
return (constructor.singleton === true) ? | ||
new SingletonComponentFactory(constructor) : | ||
@@ -433,4 +433,2 @@ new ComponentFactory(constructor); | ||
function ComponentModelData() { | ||
this.id = null; | ||
this.$controller = null; | ||
} | ||
@@ -437,0 +435,0 @@ return ComponentModelData; |
/// <reference types="node" /> | ||
import { EventEmitter } from 'events'; | ||
import { type Model } from 'racer'; | ||
import { DefualtType, type ChildModel } from 'racer'; | ||
import { type AppBase } from './App'; | ||
import { Dom } from './Dom'; | ||
import { PageBase } from './Page'; | ||
export declare class Controller extends EventEmitter { | ||
import { Page } from './Page'; | ||
export declare class Controller<T = DefualtType> extends EventEmitter { | ||
dom: Dom; | ||
app: AppBase; | ||
page: PageBase; | ||
model: Model; | ||
page: Page; | ||
model: ChildModel<T>; | ||
markerNode: Node; | ||
constructor(app: AppBase, page: PageBase, model: Model); | ||
constructor(app: AppBase, page: Page, model: ChildModel<T>); | ||
emitCancellable(...args: unknown[]): boolean; | ||
emitDelayable(...args: unknown[]): boolean; | ||
} |
import { Racer, type Model } from 'racer'; | ||
import { App, type AppBase } from './App'; | ||
import { App, type AppBase, type AppOptions } from './App'; | ||
import { Component } from './components'; | ||
@@ -8,3 +8,3 @@ import { PageForClient } from './Page'; | ||
Model: typeof Model; | ||
abstract createApp(name: string, filename: string, options: any): AppBase; | ||
abstract createApp(name?: string, filename?: string, options?: AppOptions): AppBase; | ||
} | ||
@@ -15,3 +15,3 @@ export declare class Derby extends DerbyBase { | ||
Model: typeof Model; | ||
createApp(name: string, filename: string, options: any): App; | ||
createApp(name?: string, filename?: string, options?: AppOptions): App; | ||
} |
@@ -1,6 +0,1 @@ | ||
/* | ||
* Derby.js | ||
* Meant to be the entry point for the framework. | ||
* | ||
*/ | ||
var __extends = (this && this.__extends) || (function () { | ||
@@ -23,2 +18,7 @@ var extendStatics = function (d, b) { | ||
exports.Derby = exports.DerbyBase = void 0; | ||
/* | ||
* Derby.js | ||
* Meant to be the entry point for the framework. | ||
* | ||
*/ | ||
var racer_1 = require("racer"); | ||
@@ -25,0 +25,0 @@ var App_1 = require("./App"); |
@@ -1,5 +0,9 @@ | ||
export declare function loadViewsSync(app: any, sourceFilename: any, namespace: any): { | ||
import { type AppForServer } from './AppForServer'; | ||
export declare function loadViewsSync(app: AppForServer, sourceFilename: string, namespace: string): { | ||
views: any[]; | ||
files: any[]; | ||
}; | ||
export declare function loadStylesSync(app: any, sourceFilename: any, options: any): any; | ||
export interface StyleCompilerOptions extends Record<string, unknown> { | ||
compress?: boolean; | ||
} | ||
export declare function loadStylesSync(app: AppForServer, sourceFilename: string, options?: StyleCompilerOptions): string; |
import { util } from 'racer'; | ||
import { type AppOptions } from './App'; | ||
import { Derby, type DerbyBase } from './Derby'; | ||
export { type App } from './App'; | ||
export { type Page, type PageBase, PageForClient } from './Page'; | ||
export { type App, type AppBase } from './App'; | ||
export { type AppForServer } from './AppForServer'; | ||
export { Dom } from './Dom'; | ||
export { Page, PageForClient } from './Page'; | ||
export { PageForServer } from './PageForServer'; | ||
export { Component, type ComponentConstructor, type ComponentViewDefinition } from './components'; | ||
export { type PageParams } from './routes'; | ||
export { Component, ComponentModelData, type ComponentConstructor, type ComponentViewDefinition, } from './components'; | ||
export { type Context } from './templates/contexts'; | ||
export { type PageParams, type QueryParams } from './routes'; | ||
declare const instance: DerbyBase; | ||
export declare function createApp(name?: string, file?: string, options?: AppOptions): import("./App").AppBase; | ||
export { Derby, instance, util, }; |
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.util = exports.instance = exports.Derby = exports.Component = exports.PageForServer = exports.PageForClient = void 0; | ||
exports.util = exports.instance = exports.Derby = exports.createApp = exports.ComponentModelData = exports.Component = exports.PageForServer = exports.PageForClient = exports.Page = exports.Dom = void 0; | ||
var racer_1 = require("racer"); | ||
@@ -7,3 +7,6 @@ Object.defineProperty(exports, "util", { enumerable: true, get: function () { return racer_1.util; } }); | ||
Object.defineProperty(exports, "Derby", { enumerable: true, get: function () { return Derby_1.Derby; } }); | ||
var Dom_1 = require("./Dom"); | ||
Object.defineProperty(exports, "Dom", { enumerable: true, get: function () { return Dom_1.Dom; } }); | ||
var Page_1 = require("./Page"); | ||
Object.defineProperty(exports, "Page", { enumerable: true, get: function () { return Page_1.Page; } }); | ||
Object.defineProperty(exports, "PageForClient", { enumerable: true, get: function () { return Page_1.PageForClient; } }); | ||
@@ -14,2 +17,3 @@ var PageForServer_1 = require("./PageForServer"); | ||
Object.defineProperty(exports, "Component", { enumerable: true, get: function () { return components_1.Component; } }); | ||
Object.defineProperty(exports, "ComponentModelData", { enumerable: true, get: function () { return components_1.ComponentModelData; } }); | ||
var DerbyClass = racer_1.util.isServer | ||
@@ -20,1 +24,5 @@ ? racer_1.util.serverRequire(module, './DerbyForServer').DerbyForServer | ||
exports.instance = instance; | ||
function createApp(name, file, options) { | ||
return instance.createApp(name, file, options); | ||
} | ||
exports.createApp = createApp; |
@@ -1,3 +0,3 @@ | ||
import { type Model } from 'racer'; | ||
import { type AppBase, type App } from './App'; | ||
import { type Model, ChangeEvent, MoveEvent, RemoveEvent, InsertEvent, LoadEvent, UnloadEvent } from 'racer'; | ||
import { type AppBase } from './App'; | ||
import components = require('./components'); | ||
@@ -9,3 +9,17 @@ import { Controller } from './Controller'; | ||
import { Expression } from './templates/expressions'; | ||
export declare abstract class PageBase extends Controller { | ||
interface ModelOnImmediateEventMap { | ||
changeImmediate: ChangeEvent; | ||
insertImmediate: InsertEvent; | ||
loadImmediate: LoadEvent; | ||
moveImmediate: MoveEvent; | ||
removeImmediate: RemoveEvent; | ||
unloadImmediate: UnloadEvent; | ||
} | ||
declare module 'racer' { | ||
interface Model<T> { | ||
on<TEvent extends keyof ModelOnImmediateEventMap>(eventType: TEvent, listener: (captures: string[], event: ModelOnImmediateEventMap[TEvent]) => void): any; | ||
removeListener(eventType: keyof ModelOnImmediateEventMap, listener: () => void): void; | ||
} | ||
} | ||
export declare abstract class Page extends Controller { | ||
params: Readonly<PageParams>; | ||
@@ -18,3 +32,3 @@ context: Context; | ||
_removeModelListeners: () => void; | ||
page: PageBase; | ||
page: Page; | ||
constructor(app: AppBase, model: Model); | ||
@@ -31,6 +45,4 @@ $bodyClass(ns: string): string; | ||
} | ||
export interface Page extends PageBase { | ||
} | ||
export declare class PageForClient extends PageBase { | ||
constructor(app: App, model: Model); | ||
export declare class PageForClient extends Page { | ||
constructor(app: AppBase, model: Model); | ||
$preventDefault(e: Event): void; | ||
@@ -42,3 +54,2 @@ $stopPropagation(e: Event): void; | ||
private _addModelListeners; | ||
private _addModelListenersLegacy; | ||
private _addContextListeners; | ||
@@ -61,1 +72,2 @@ } | ||
} | ||
export {}; |
@@ -17,3 +17,3 @@ var __extends = (this && this.__extends) || (function () { | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.BindingWrapper = exports.PageForClient = exports.PageBase = void 0; | ||
exports.BindingWrapper = exports.PageForClient = exports.Page = void 0; | ||
var racer_1 = require("racer"); | ||
@@ -27,5 +27,5 @@ var components = require("./components"); | ||
var contexts = derbyTemplates.contexts, DependencyOptions = derbyTemplates.DependencyOptions, expressions = derbyTemplates.expressions, templates = derbyTemplates.templates; | ||
var PageBase = /** @class */ (function (_super) { | ||
__extends(PageBase, _super); | ||
function PageBase(app, model) { | ||
var Page = /** @class */ (function (_super) { | ||
__extends(Page, _super); | ||
function Page(app, model) { | ||
var _this = _super.call(this, app, null, model) || this; | ||
@@ -43,3 +43,3 @@ _this._removeModelListeners = function () { }; | ||
} | ||
PageBase.prototype.$bodyClass = function (ns) { | ||
Page.prototype.$bodyClass = function (ns) { | ||
if (!ns) | ||
@@ -55,3 +55,3 @@ return; | ||
}; | ||
PageBase.prototype.get = function (viewName, ns, unescaped) { | ||
Page.prototype.get = function (viewName, ns, unescaped) { | ||
this._setRenderPrefix(ns); | ||
@@ -61,3 +61,3 @@ var view = this.getView(viewName, ns); | ||
}; | ||
PageBase.prototype.getFragment = function (viewName, ns) { | ||
Page.prototype.getFragment = function (viewName, ns) { | ||
this._setRenderPrefix(ns); | ||
@@ -67,6 +67,6 @@ var view = this.getView(viewName, ns); | ||
}; | ||
PageBase.prototype.getView = function (viewName, ns) { | ||
Page.prototype.getView = function (viewName, ns) { | ||
return this.app.views.find(viewName, ns); | ||
}; | ||
PageBase.prototype.destroy = function () { | ||
Page.prototype.destroy = function () { | ||
this.emit('destroy'); | ||
@@ -88,4 +88,4 @@ this._removeModelListeners(); | ||
}; | ||
PageBase.prototype.render = function (_ns, _status) { }; | ||
PageBase.prototype._createContext = function () { | ||
Page.prototype.render = function (_ns, _status) { }; | ||
Page.prototype._createContext = function () { | ||
var contextMeta = new contexts.ContextMeta(); | ||
@@ -98,7 +98,7 @@ contextMeta.views = this.app && this.app.views; | ||
}; | ||
PageBase.prototype._setRenderPrefix = function (ns) { | ||
Page.prototype._setRenderPrefix = function (ns) { | ||
var prefix = (ns) ? ns + ':' : ''; | ||
this.model.set('$render.prefix', prefix); | ||
}; | ||
PageBase.prototype._setRenderParams = function (ns) { | ||
Page.prototype._setRenderParams = function (ns) { | ||
this.model.set('$render.ns', ns); | ||
@@ -109,5 +109,5 @@ this.model.set('$render.params', this.params); | ||
}; | ||
return PageBase; | ||
return Page; | ||
}(Controller_1.Controller)); | ||
exports.PageBase = PageBase; | ||
exports.Page = Page; | ||
var PageForClient = /** @class */ (function (_super) { | ||
@@ -166,7 +166,2 @@ __extends(PageForClient, _super); | ||
// path being listened on, directly or indirectly. | ||
// TODO: Remove this when upgrading Racer to the next major version. Feature | ||
// detect which type of event listener to register by emitting a test event | ||
if (useLegacyListeners(model)) { | ||
return this._addModelListenersLegacy(eventModel); | ||
} | ||
// `util.castSegments(segments)` is needed to cast string segments into | ||
@@ -210,49 +205,2 @@ // numbers, since EventModel#child does typeof checks against segments. This | ||
}; | ||
PageForClient.prototype._addModelListenersLegacy = function (eventModel) { | ||
var model = this.model; | ||
if (!model) | ||
return; | ||
// `util.castSegments(segments)` is needed to cast string segments into | ||
// numbers, since EventModel#child does typeof checks against segments. This | ||
// could be done once in Racer's Model#emit, instead of in every listener. | ||
var changeListener = model.on('changeImmediate', function onChange(segments, eventArgs) { | ||
// eventArgs[0] is the new value, which Derby bindings don't use directly. | ||
// The pass parameter is passed in for special handling of updates | ||
// resulting from stringInsert or stringRemove | ||
var previous = eventArgs[0], pass = eventArgs[1]; | ||
segments = racer_1.util.castSegments(segments.slice()); | ||
eventModel.set(segments, previous, pass); | ||
}); | ||
var loadListener = model.on('loadImmediate', function onLoad(segments) { | ||
segments = racer_1.util.castSegments(segments.slice()); | ||
eventModel.set(segments); | ||
}); | ||
var unloadListener = model.on('unloadImmediate', function onUnload(segments) { | ||
segments = racer_1.util.castSegments(segments.slice()); | ||
eventModel.set(segments); | ||
}); | ||
var insertListener = model.on('insertImmediate', function onInsert(segments, eventArgs) { | ||
var index = eventArgs[0], values = eventArgs[1]; | ||
segments = racer_1.util.castSegments(segments.slice()); | ||
eventModel.insert(segments, index, values.length); | ||
}); | ||
var removeListener = model.on('removeImmediate', function onRemove(segments, eventArgs) { | ||
var index = eventArgs[0], values = eventArgs[1]; | ||
segments = racer_1.util.castSegments(segments.slice()); | ||
eventModel.remove(segments, index, values.length); | ||
}); | ||
var moveListener = model.on('moveImmediate', function onMove(segments, eventArgs) { | ||
var from = eventArgs[0], to = eventArgs[1], howMany = eventArgs[2]; | ||
segments = racer_1.util.castSegments(segments.slice()); | ||
eventModel.move(segments, from, to, howMany); | ||
}); | ||
this._removeModelListeners = function () { | ||
model.removeListener('changeImmediate', changeListener); | ||
model.removeListener('loadImmediate', loadListener); | ||
model.removeListener('unloadImmediate', unloadListener); | ||
model.removeListener('insertImmediate', insertListener); | ||
model.removeListener('removeImmediate', removeListener); | ||
model.removeListener('moveImmediate', moveListener); | ||
}; | ||
}; | ||
PageForClient.prototype._addContextListeners = function (eventModel) { | ||
@@ -305,15 +253,4 @@ this.context.meta.addBinding = addBinding; | ||
return PageForClient; | ||
}(PageBase)); | ||
}(Page)); | ||
exports.PageForClient = PageForClient; | ||
function useLegacyListeners(model) { | ||
var useLegacy = true; | ||
// model.once is broken in older racer, so manually remove event | ||
var listener = model.on('changeImmediate', function (_segments, event) { | ||
model.removeListener('changeImmediate', listener); | ||
// Older Racer emits an array of eventArgs, whereas newer racer emits an event object | ||
useLegacy = Array.isArray(event); | ||
}); | ||
model.set('$derby.testEvent', true); | ||
return useLegacy; | ||
} | ||
function addDependencies(eventModel, expression, binding) { | ||
@@ -320,0 +257,0 @@ var bindingWrapper = new BindingWrapper(eventModel, expression, binding); |
import type { Request, Response } from 'express'; | ||
import { type Model } from 'racer'; | ||
import { type AppForServer } from './AppForServer'; | ||
import { PageBase } from './Page'; | ||
import { Page } from './Page'; | ||
declare module 'racer' { | ||
@@ -10,3 +10,3 @@ interface Model { | ||
} | ||
export declare class PageForServer extends PageBase { | ||
export declare class PageForServer extends Page { | ||
req: Request; | ||
@@ -13,0 +13,0 @@ res: Response; |
@@ -74,3 +74,3 @@ var __extends = (this && this.__extends) || (function () { | ||
return PageForServer; | ||
}(Page_1.PageBase)); | ||
}(Page_1.Page)); | ||
exports.PageForServer = PageForServer; | ||
@@ -77,0 +77,0 @@ function stringifyBundle(bundle) { |
@@ -1,4 +0,4 @@ | ||
import { type Model } from 'racer'; | ||
import { RootModel } from 'racer'; | ||
import { type AppBase } from './App'; | ||
import { type PageBase } from './Page'; | ||
import { type Page } from './Page'; | ||
export declare function routes(app: AppBase): any; | ||
@@ -31,6 +31,6 @@ export interface PageParams extends ReadonlyArray<unknown> { | ||
export interface RouteHandler { | ||
(page: PageBase, model: Model, params: PageParams, next: (err?: Error) => void): void; | ||
(page: Page, model: RootModel, params: PageParams, next: (err?: Error) => void): void; | ||
} | ||
export interface TransitionalRouteHandler { | ||
(page: PageBase, model: Model, params: PageParams, next: (err?: Error) => void, done: () => void): void; | ||
(page: Page, model: RootModel, params: PageParams, next: (err?: Error) => void, done: () => void): void; | ||
} | ||
@@ -51,5 +51,5 @@ declare module './App' { | ||
declare module './Page' { | ||
interface PageBase { | ||
interface Page { | ||
redirect(url: string, status?: number): void; | ||
} | ||
} |
@@ -194,3 +194,3 @@ import { type Context } from './contexts'; | ||
serialize(): any; | ||
get(context: Context): import("racer").ChildModel<{}>; | ||
get(context: Context): import("racer").ChildModel<unknown>; | ||
resolve(context: Context): SegmentOrContext[]; | ||
@@ -197,0 +197,0 @@ dependencies(context: Context, options: any): Dependency[]; |
{ | ||
"name": "derby", | ||
"description": "MVC framework making it easy to write realtime, collaborative applications that run in both Node.js and browsers.", | ||
"version": "4.0.0-beta.6", | ||
"version": "4.0.0-beta.7", | ||
"homepage": "http://derbyjs.com/", | ||
@@ -58,2 +58,3 @@ "repository": { | ||
"@types/qs": "^6.9.11", | ||
"@types/resolve": "^1.20.6", | ||
"@types/sharedb": "^3.3.10", | ||
@@ -73,3 +74,3 @@ "@typescript-eslint/eslint-plugin": "^6.2.1", | ||
"prettier": "^3.0.1", | ||
"racer": "^v2.0.0-beta.8", | ||
"racer": "^v2.0.0-beta.11", | ||
"ts-node": "^10.9.2", | ||
@@ -76,0 +77,0 @@ "typescript": "~5.1.3" |
409249
25
9908