UNPKG

gen-jhipster

Version:

VHipster - Spring Boot + Angular/React/Vue in one handy generator

66 lines (65 loc) 2.27 kB
/** * Copyright 2013-2026 the original author or authors from the JHipster project. * * This file is part of the JHipster project; see https://www.jhipster.tech/ * for more information. * * Licensed under the Apache License; Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing; software * distributed under the License is distributed on an "AS IS" BASIS; * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND; either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import { mutateData } from "../utils/object.js"; export const prepareMutationTest = (data) => { return Object.entries(data).reduce((acc, [name, value]) => { const cleanupName = name.replace(/(Loading|Preparing)$/, ''); acc[cleanupName] ??= []; acc[cleanupName].push(value); return acc; }, {}); }; export const mutateMockedData = (...mutations) => { const data = {}; const proxy = new Proxy(data, { get: (target, p) => { return target[p] === undefined ? p : target[p]; }, set: (target, p, value) => { target[p] = value; return true; }, }); mutateData(proxy, ...mutations); return data; }; export const mutateMockedCompleteData = (...mutations) => { const data = {}; const proxyGeneratedProperties = {}; if (mutations.length > 1) { // Treat the first mutation as the one that should bootstrap the data with arrays and objects. mutateData(proxyGeneratedProperties, mutations[0]); } const proxy = new Proxy(data, { get: (target, p) => { return target[p] === undefined ? (proxyGeneratedProperties[p] ?? p) : target[p]; }, set: (target, p, value) => { if (proxyGeneratedProperties[p] !== value) { target[p] = value; } return true; }, has: (_target) => { return true; }, }); mutateData(proxy, ...mutations); return data; };