UNPKG

@snipsonian/core

Version:

Core/base reusable javascript code snippets

30 lines (29 loc) 1.23 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const isArray_1 = require("../../is/isArray"); const isUndefined_1 = require("../../is/isUndefined"); function builder({ initialBuildParams = {}, buildStateName = '_builder', } = {}) { return function decorate(target) { if ((0, isArray_1.default)(target)) { return target.map((entity) => enrichToBeBuilder(entity, { initialBuildParams, buildStateName })); } return enrichToBeBuilder(target, { initialBuildParams, buildStateName }); }; } exports.default = builder; function enrichToBeBuilder(target, { initialBuildParams, buildStateName }) { const enrichedTarget = target; if ((0, isUndefined_1.default)(enrichedTarget[buildStateName])) { enrichedTarget[buildStateName] = initialBuildParams; } else { Object.assign(enrichedTarget[buildStateName], initialBuildParams); } enrichedTarget.with = (key, val) => { enrichedTarget[buildStateName][key] = val; return enrichedTarget; }; enrichedTarget.getBuildParam = (key) => enrichedTarget[buildStateName][key]; enrichedTarget.build = () => enrichedTarget[buildStateName]; return enrichedTarget; }