UNPKG

respond-framework

Version:
162 lines (160 loc) 5.81 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _dispatch = require("./methods/dispatch.js"); var _App = require("./methods/App.js"); var _reduce = require("./methods/reduce.js"); var _listen = require("./methods/listen.js"); var _revive = require("./methods/revive.js"); var _onError = require("./methods/onError.js"); var _proxify = require("./methods/proxify.js"); var _fromEvent = require("./methods/fromEvent.js"); var _eventFrom = require("./methods/eventFrom.js"); var _inIs = require("./methods/inIs.js"); var _addToCache = require("./methods/addToCache.js"); var _changeBasename = require("./methods/changeBasename.js"); var _subscribe = require("./methods/subscribe.js"); var _simulateLatency = require("./methods/simulateLatency.js"); var _queueSaveSession = require("./methods/queueSaveSession.js"); var _promisesCompleted = require("./methods/promisesCompleted.js"); var _awaitInReplaysOnly = require("./methods/awaitInReplaysOnly.js"); var _isEqualNavigations = require("./methods/isEqualNavigations.js"); var _render = require("../react/render.js"); var _snapshot = require("../proxy/snapshot.js"); var _queueNotification = require("../proxy/helpers/queueNotification.js"); var _index = require("../history/index.js"); var _index2 = require("../helpers/cookies/index.js"); var _createDb = require("./createDb.js"); var _createDbCache = require("./createDbCache.js"); var _createUrlCache = require("./createUrlCache.js"); var _createBranches = require("./createBranches.js"); var _kinds = require("./kinds.js"); var _constants = require("../helpers/constants.js"); var _assignProto = require("../utils/assignProto.js"); var _createAncestors = require("./helpers/createAncestors.js"); var _reserved = require("./reserved.js"); var _sessionStorage = require("../utils/sessionStorage.js"); const createRespond = (top, system, focusedModule, opts) => { const { replayState, prevUrl = null, basenames = {} } = system; const focusedBranch = replayState.branch ?? ''; const prev = window.state?.respond; const { createHistory = _index.default, createCookies = _index2.default, ...options } = top.options ?? {}; function Respond(props) { Object.assign(this, props); this.listeners = new Set(); this.overriden = new Map(); this.db = (0, _createDb.default)(this, Respond); this.responds[this.branch] = this; this.App = _App.default.bind(this); this.reduce = _reduce.default.bind(this); this.render = _render.default.bind(this); this.snapshot = _snapshot.default.bind(this); this.eventFrom = _eventFrom.default.bind(this); this.ancestors = (0, _createAncestors.default)(this.branch); this.isTop = this.mod.branchAbsolute === focusedBranch; this.dbCache = (0, _createDbCache.default)(this, this.cache.dbCache ??= {}); this.urlCache = (0, _createUrlCache.default)(this, this.cache.urlCache ??= {}, _fromEvent.default); (0, _assignProto.default)(props.state, { [_reserved._module]: true, [_reserved._top]: this.isTop, db: this.db, kinds: _kinds.default, is: _inIs.is, in: _inIs.thisIn, refs: {} }); } Respond.prototype = { top, // core data prev, kinds: _kinds.default, system, prevUrl, basenames, replayState, focusedBranch, focusedModule, App: _App.default, // methods reduce: _reduce.default, render: _render.default, commit: _queueNotification.commit, notify: _subscribe.notify, listen: _listen.default, revive: _revive.default, proxify: _proxify.default, dispatch: _dispatch.default, trigger: _dispatch.trigger, onError: _onError.default, snapshot: _snapshot.default, subscribe: _subscribe.default, fromEvent: _fromEvent.default, eventFrom: _eventFrom.default, addToCache: _addToCache.default, changeBasename: _changeBasename.default, simulateLatency: _simulateLatency.default, queueSaveSession: _queueSaveSession.default, promisesCompleted: _promisesCompleted.default, awaitInReplaysOnly: _awaitInReplaysOnly.default, isEqualNavigations: _isEqualNavigations.default, promises: [], // storage subscribers: [], ctx: {}, responds: {}, eventsByType: {}, eventsByPattern: {}, branchLocatorsById: {}, modelsByBranchType: {}, eventsCache: new Map(), versionNotifiers: new WeakMap(), proxyCache: new WeakMap(), snapCache: new WeakMap(), refIds: _constants.isProd ? new WeakMap() : new Map(), hmr: replayState.hmr, reuseEvents: prev?.focusedBranch === focusedBranch, prevEventsByType: prev?.focusedBranch === focusedBranch ? prev.eventsByType : {}, mem: { ...prev?.mem, rendered: false }, cache: system.cache ?? {}, sessionStorage: opts.sessionStorage ?? prev?.sessionStorage ?? _sessionStorage.default, rememberSession: _constants.isDev || !_constants.isNative || options.rememberSession, devtools: new Proxy({}, { get: () => () => {} }), // tools history: createHistory(), cookies: createCookies(), branchNames: (0, _createBranches.default)(top, focusedBranch), // important: create branch names, assign moduleKeys array to each module, etc, e: replayState.lastEvent, lastEvents: replayState.lastEvents, branches: { get undefined() { return this['']; } }, // important: modules by branch will be stored here when created in addModule.js get topState() { return this.branches['']; // escape hatch: any module can access the top if it really needs }, get events() { return this.state.events; } }; return Respond; }; var _default = exports.default = createRespond;