UNPKG

@modern-js-reduck/store

Version:

The meta-framework suite designed from scratch for frontend-focused modern web development.

38 lines (37 loc) 1.16 kB
import { initializerSymbol } from "../utils/misc"; const model = (name) => ({ define(modelDesc) { let modelInitializer; if (typeof modelDesc === "function") { modelInitializer = modelDesc; } else { modelInitializer = () => modelDesc; } const modelCache = /* @__PURE__ */ new Map(); const createResponse = (initializer) => { const response = (namespace) => { const cachedModel = modelCache.get(namespace); if (cachedModel) { return cachedModel; } const clonedModelInitializer = (...args) => { const result = initializer(...args); return result; }; const modelInstance = createResponse(clonedModelInitializer); modelCache.set(namespace, modelInstance); modelInstance._name = namespace || name; return modelInstance; }; response._name = name; Object.defineProperty(response, initializerSymbol, { configurable: false, enumerable: false, value: initializer }); return response; }; return createResponse(modelInitializer); } }); export default model;