simplified-mojang-jsons 0.0.16 → 0.0.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -35,6 +35,32 @@ export declare class FinalRPRenderControllerTemplateBuilder extends ResourceRend
35
35
  * @private
36
36
  */
37
37
  private deepMerge;
38
+ /**
39
+ * Metodo auxiliar que aplica las modificaciones post-edicion del render controller con las bases existentes.
40
+ * @param {RenderControllerBaseParams[]} renders Lista de bases a modificar.
41
+ * @param {Record<string, unknown>} patch Objecto con los cambios a aplicar para el render.
42
+ * @returns {void}
43
+ * @author HaJuegos - 05-11-2026
44
+ * @private
45
+ */
46
+ private applyChange;
47
+ /**
48
+ * Metodo auxiliar que procesa e integra elementos adicionales, ya sea añadeindo nuevos renders completos o extendiendo los que ya estan definidos.
49
+ * @param {RenderControllerBaseParams[]} renders Lista de renders donde se integraran los elementos.
50
+ * @param {Array<RenderControllerBaseParams | Record<string, unknown>>} addItems Lista de nuevos renders o ediciones a procesar.
51
+ * @returns {void}
52
+ * @author HaJuegos - 05-11-2026
53
+ * @private
54
+ */
55
+ private applyAdd;
56
+ /**
57
+ * Metodo auxiliar que filtra y extrae unicamente los renders completos nuevos especificados en la seccion de adicion cuando se limpian todos los datos previos.
58
+ * @param {Array<RenderControllerBaseParams | Record<string, unknown>>} addItems Lista de elementos mixtos de adicion.
59
+ * @returns {RenderControllerBaseParams[]} Devuelve la lista filtrada conteniendo solo los ernder completos validos.
60
+ * @author HaJuegos - 05-11-2026
61
+ * @private
62
+ */
63
+ private fixAdd;
38
64
  /**
39
65
  * Metodo auxiliar que integra la eliminacion profunda de datos aplicados en remove en la post-edicion en caso de eliminarse uno o varios datos a la vez.
40
66
  * @template T Datos a considerar en cuestion.
@@ -1 +1 @@
1
- {"version":3,"file":"RenderControllerTemplateBuilder.d.ts","sourceRoot":"","sources":["../../../../src/builders/resources/renderControllers/RenderControllerTemplateBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,4BAA4B,EAAE,0BAA0B,EAAE,MAAM,qEAAqE,CAAC;AAC3K,OAAO,EAAE,+BAA+B,EAAE,MAAM,2BAA2B,CAAC;AAE5E;;;;;;GAMG;AACH,qBAAa,sCAAuC,SAAQ,+BAA+B;IACvF;;;;;;;OAOG;IACH,YAAoB,GAAG,EAAE,4BAA4B,EAAE,IAAI,EAAE,0BAA0B,EAsBtF;IAED;;;;;;OAMG;IACH,OAAO,CAAC,KAAK;IAIb;;;;;;;;OAQG;IACH,OAAO,CAAC,SAAS;IAcjB;;;;;;;;OAQG;IACH,OAAO,CAAC,WAAW;IA0BnB;;;;;OAKG;IACI,UAAU,IAAI,MAAM,CAE1B;CACJ;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACpC,KAAK,CAAC,KAAK,SAAS,4BAA4B,EAClD,GAAG,EAAE,KAAK,WACM,0BAA0B,CAAC,KAAK,CAAC,4CAGlD"}
1
+ {"version":3,"file":"RenderControllerTemplateBuilder.d.ts","sourceRoot":"","sources":["../../../../src/builders/resources/renderControllers/RenderControllerTemplateBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,4BAA4B,EAAE,0BAA0B,EAAE,MAAM,qEAAqE,CAAC;AAC3K,OAAO,EAAE,+BAA+B,EAAE,MAAM,2BAA2B,CAAC;AAE5E;;;;;;GAMG;AACH,qBAAa,sCAAuC,SAAQ,+BAA+B;IACvF;;;;;;;OAOG;IACH,YAAoB,GAAG,EAAE,4BAA4B,EAAE,IAAI,EAAE,0BAA0B,EAwBtF;IAED;;;;;;OAMG;IACH,OAAO,CAAC,KAAK;IAIb;;;;;;;;OAQG;IACH,OAAO,CAAC,SAAS;IAkBjB;;;;;;;OAOG;IACH,OAAO,CAAC,WAAW;IA8BnB;;;;;;;OAOG;IACH,OAAO,CAAC,QAAQ;IA8BhB;;;;;;OAMG;IACH,OAAO,CAAC,MAAM;IAWd;;;;;;;;OAQG;IACH,OAAO,CAAC,WAAW;IA2CnB;;;;;OAKG;IACI,UAAU,IAAI,MAAM,CAE1B;CACJ;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACpC,KAAK,CAAC,KAAK,SAAS,4BAA4B,EAClD,GAAG,EAAE,KAAK,WACM,0BAA0B,CAAC,KAAK,CAAC,4CAGlD"}
package/dist/index.js CHANGED
@@ -230682,16 +230682,17 @@ var FinalRPRenderControllerTemplateBuilder = class extends ResourceRenderControl
230682
230682
  super();
230683
230683
  let finalRenders = structuredClone(def.renderControllers);
230684
230684
  if (over.clearAllData) {
230685
- finalRenders = over.add ? structuredClone(over.add) : [];
230685
+ finalRenders = over.add ? this.fixAdd(over.add) : [];
230686
230686
  } else {
230687
- if (over.changeRender) {
230688
- this.deepMerge(finalRenders, over.changeRender);
230689
- }
230690
230687
  if (over.remove) {
230691
- this.applyRemove(finalRenders, over.remove);
230688
+ const rm = over.remove;
230689
+ finalRenders = finalRenders.map((r) => r.idRender in rm ? this.applyRemove(r, rm[r.idRender]) : r).filter((r) => r !== void 0);
230690
+ }
230691
+ if (over.changeRender) {
230692
+ this.applyChange(finalRenders, over.changeRender);
230692
230693
  }
230693
230694
  if (over.add) {
230694
- this.deepMerge(finalRenders, over.add);
230695
+ this.applyAdd(finalRenders, over.add);
230695
230696
  }
230696
230697
  }
230697
230698
  this.setDataRender(finalRenders);
@@ -230716,16 +230717,100 @@ var FinalRPRenderControllerTemplateBuilder = class extends ResourceRenderControl
230716
230717
  * @private
230717
230718
  */
230718
230719
  deepMerge(base, patch) {
230720
+ if (Array.isArray(base) && Array.isArray(patch)) {
230721
+ return [...base, ...patch];
230722
+ }
230719
230723
  if (!this.isObj(base) || !this.isObj(patch)) {
230720
230724
  return patch ?? base;
230721
230725
  }
230722
230726
  ;
230723
230727
  const out = { ...base };
230724
230728
  for (const [k, v] of Object.entries(patch)) {
230725
- out[k] = this.isObj(v) && this.isObj(out[k]) ? this.deepMerge(out[k], v) : v;
230729
+ out[k] = this.isObj(v) && this.isObj(out[k]) || Array.isArray(out[k]) && Array.isArray(v) ? this.deepMerge(out[k], v) : v;
230726
230730
  }
230727
230731
  return out;
230728
230732
  }
230733
+ /**
230734
+ * Metodo auxiliar que aplica las modificaciones post-edicion del render controller con las bases existentes.
230735
+ * @param {RenderControllerBaseParams[]} renders Lista de bases a modificar.
230736
+ * @param {Record<string, unknown>} patch Objecto con los cambios a aplicar para el render.
230737
+ * @returns {void}
230738
+ * @author HaJuegos - 05-11-2026
230739
+ * @private
230740
+ */
230741
+ applyChange(renders, patch) {
230742
+ for (const [idRender, changes] of Object.entries(patch)) {
230743
+ const target = renders.find((r) => r.idRender == idRender);
230744
+ if (target && this.isObj(changes)) {
230745
+ for (const [prop, val] of Object.entries(changes)) {
230746
+ const targetValue = target[prop];
230747
+ if (Array.isArray(targetValue) && this.isObj(val)) {
230748
+ const arr = targetValue;
230749
+ for (const [idxStr, itemVal] of Object.entries(val)) {
230750
+ const idx = Number(idxStr);
230751
+ if (!Number.isInteger(idx) || idx < 0 || idx >= arr.length) {
230752
+ continue;
230753
+ }
230754
+ arr[idx] = this.deepMerge(arr[idx], itemVal);
230755
+ }
230756
+ } else if (this.isObj(targetValue) && this.isObj(val)) {
230757
+ target[prop] = this.deepMerge(targetValue, val);
230758
+ } else {
230759
+ target[prop] = val;
230760
+ }
230761
+ }
230762
+ }
230763
+ }
230764
+ }
230765
+ /**
230766
+ * Metodo auxiliar que procesa e integra elementos adicionales, ya sea añadeindo nuevos renders completos o extendiendo los que ya estan definidos.
230767
+ * @param {RenderControllerBaseParams[]} renders Lista de renders donde se integraran los elementos.
230768
+ * @param {Array<RenderControllerBaseParams | Record<string, unknown>>} addItems Lista de nuevos renders o ediciones a procesar.
230769
+ * @returns {void}
230770
+ * @author HaJuegos - 05-11-2026
230771
+ * @private
230772
+ */
230773
+ applyAdd(renders, addItems) {
230774
+ for (const item of addItems) {
230775
+ if (!this.isObj(item)) continue;
230776
+ if ("idRender" in item && typeof item.idRender === "string") {
230777
+ renders.push(item);
230778
+ } else {
230779
+ for (const [idRender, changes] of Object.entries(item)) {
230780
+ const target = renders.find((r) => r.idRender == idRender);
230781
+ if (target && this.isObj(changes)) {
230782
+ for (const [prop, val] of Object.entries(changes)) {
230783
+ const targetValue = target[prop];
230784
+ if (Array.isArray(targetValue) && Array.isArray(val)) {
230785
+ const targetArr = targetValue;
230786
+ targetArr.push(...val);
230787
+ } else if (this.isObj(targetValue) && this.isObj(val)) {
230788
+ target[prop] = this.deepMerge(targetValue, val);
230789
+ } else {
230790
+ target[prop] = val;
230791
+ }
230792
+ }
230793
+ }
230794
+ }
230795
+ }
230796
+ }
230797
+ }
230798
+ /**
230799
+ * Metodo auxiliar que filtra y extrae unicamente los renders completos nuevos especificados en la seccion de adicion cuando se limpian todos los datos previos.
230800
+ * @param {Array<RenderControllerBaseParams | Record<string, unknown>>} addItems Lista de elementos mixtos de adicion.
230801
+ * @returns {RenderControllerBaseParams[]} Devuelve la lista filtrada conteniendo solo los ernder completos validos.
230802
+ * @author HaJuegos - 05-11-2026
230803
+ * @private
230804
+ */
230805
+ fixAdd(addItems) {
230806
+ const renders = [];
230807
+ for (const item of addItems) {
230808
+ if (this.isObj(item) && "idRender" in item && typeof item.idRender == "string") {
230809
+ renders.push(item);
230810
+ }
230811
+ }
230812
+ return renders;
230813
+ }
230729
230814
  /**
230730
230815
  * Metodo auxiliar que integra la eliminacion profunda de datos aplicados en remove en la post-edicion en caso de eliminarse uno o varios datos a la vez.
230731
230816
  * @template T Datos a considerar en cuestion.
@@ -230739,6 +230824,19 @@ var FinalRPRenderControllerTemplateBuilder = class extends ResourceRenderControl
230739
230824
  if (rm === true) {
230740
230825
  return void 0;
230741
230826
  }
230827
+ if (Array.isArray(base) && this.isObj(rm)) {
230828
+ const arr = [...base];
230829
+ const indices = Object.keys(rm).map(Number).filter((idx) => Number.isInteger(idx) && idx >= 0 && idx < arr.length).sort((a, b) => b - a);
230830
+ for (const idx of indices) {
230831
+ const val = rm[idx];
230832
+ if (val === true) {
230833
+ arr.splice(idx, 1);
230834
+ } else {
230835
+ arr[idx] = this.applyRemove(arr[idx], val);
230836
+ }
230837
+ }
230838
+ return arr;
230839
+ }
230742
230840
  if (Array.isArray(base) && Array.isArray(rm)) {
230743
230841
  return base.filter((item) => !rm.includes(item));
230744
230842
  }