nextpress-core 3.2.1 → 3.3.0

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.
package/cli/np-run-dev.js CHANGED
@@ -17,7 +17,7 @@ const composeBaseArgs = [
17
17
  async function startDev() {
18
18
  await startComposer(composeBaseArgs,
19
19
  async () => {
20
- console.log('Running Nextpress in development mode');
20
+ console.log('Running Nextpress in development mode (This can take a while)');
21
21
  const dockerArgs = [
22
22
  ...composeBaseArgs,
23
23
  'up',
@@ -17,7 +17,7 @@ const composeBaseArgs = [
17
17
  async function start() {
18
18
  await startComposer(composeBaseArgs,
19
19
  async () => {
20
- console.log('Running Nextpress in production mode');
20
+ console.log('Running Nextpress in production mode (This can take a while)');
21
21
  const dockerArgs = [
22
22
  ...composeBaseArgs,
23
23
  'up',
@@ -40,15 +40,16 @@ export class ACFBuilder {
40
40
  * @returns {this} Current instance.
41
41
  */
42
42
  public registerFieldGroups(fieldGroups: NextpressFieldGroup[]): this {
43
- let keyedFieldGroups: ACFFieldGroup[] = [];
43
+ const keyedFieldGroups: ACFFieldGroup[] = [];
44
44
 
45
- // Run twice to double check conditionals
46
- for (let i = 0; i < 2; i++) {
47
- keyedFieldGroups = fieldGroups.map(fieldGroup => ({
45
+ for (const fieldGroup of fieldGroups) {
46
+ keyedFieldGroups.push({
48
47
  ...fieldGroup,
49
48
  key: `group_${this.formatKeySuffix(fieldGroup.title)}`,
50
49
  fields: this.setFieldKeys(fieldGroup.fields, fieldGroup.title),
51
- }));
50
+ });
51
+
52
+ this.fieldKeyMap.clear();
52
53
  }
53
54
 
54
55
  this.fieldGroups = [...this.fieldGroups, ...keyedFieldGroups];
@@ -64,7 +65,9 @@ export class ACFBuilder {
64
65
  * @returns {ACFField[]} Array of fields with generated keys.
65
66
  */
66
67
  private setFieldKeys(fields: NextpressField[], parentName: string): ACFField[] {
67
- return fields.map(field => {
68
+ const fieldsResult: ACFField[] = [];
69
+
70
+ for (const field of fields) {
68
71
  const keySuffix = this.formatKeySuffix(`${parentName}_${field.name}`);
69
72
 
70
73
  const childFields = field.sub_fields
@@ -79,8 +82,8 @@ export class ACFBuilder {
79
82
 
80
83
  this.fieldKeyMap.set(field.name, key);
81
84
 
82
- if (field.conditional_logic) {
83
- field.conditional_logic = field.conditional_logic.map((group) => {
85
+ const conditionalLogic = field.conditional_logic
86
+ ? field.conditional_logic.map((group) => {
84
87
  return group.map((cl) => {
85
88
  const resolvedKey = this.fieldKeyMap.get(cl.field);
86
89
 
@@ -89,16 +92,19 @@ export class ACFBuilder {
89
92
  field: resolvedKey !== undefined ? resolvedKey : cl.field
90
93
  };
91
94
  });
92
- });
93
- }
95
+ })
96
+ : undefined;
94
97
 
95
- return {
98
+ fieldsResult.push({
96
99
  ...field,
97
100
  key,
98
101
  sub_fields: childFields,
99
102
  layouts: childLayouts,
100
- }
101
- });
103
+ ...(conditionalLogic && { conditional_logic: conditionalLogic }),
104
+ } as any);
105
+ }
106
+
107
+ return fieldsResult;
102
108
  }
103
109
 
104
110
  /**
@@ -109,19 +115,23 @@ export class ACFBuilder {
109
115
  * @returns {ACFLayout[]} Array of layouts with generated keys.
110
116
  */
111
117
  private setLayoutKeys(layouts: NextpressLayout[], parentName: string): ACFLayout[] {
112
- return layouts.map(layout => {
118
+ const layoutResults: ACFLayout[] = [];
119
+
120
+ for (const layout of layouts) {
113
121
  const keySuffix = this.formatKeySuffix(`${parentName}_${layout.name}`);
114
122
 
115
123
  const childFields = layout.sub_fields
116
124
  ? this.setFieldKeys(layout.sub_fields, `${parentName}_${layout.name}`)
117
125
  : undefined;
118
126
 
119
- return {
127
+ layoutResults.push({
120
128
  ...layout,
121
129
  key: `layout_${keySuffix}`,
122
130
  sub_fields: childFields || [],
123
- }
124
- })
131
+ })
132
+ }
133
+
134
+ return layoutResults;
125
135
  }
126
136
 
127
137
  /**
@@ -3,7 +3,6 @@ import { NextpressFieldGroup } from "../types/acf-field-group";
3
3
  /**
4
4
  * Defines field group configuration and applies typing.
5
5
  *
6
- * @template T - Field group type extending NextpressFieldGroup.
7
6
  * @param {T} layout - Field group configuration object.
8
7
  * @returns {T} Passed field group configuration object.
9
8
  */
@@ -0,0 +1,11 @@
1
+ import { NextpressField } from "../types/acf-field";
2
+
3
+ /**
4
+ * Defines layout configuration and applies typing.
5
+ *
6
+ * @param {T} field - Field configuration object.
7
+ * @returns {T} Passed layout configuration object.
8
+ */
9
+ export function defineField<const T extends NextpressField>(field: T): T {
10
+ return field;
11
+ }
@@ -3,7 +3,6 @@ import { NextpressLayout } from "../types/acf-layout";
3
3
  /**
4
4
  * Defines layout configuration and applies typing.
5
5
  *
6
- * @template T - Layout type extending NextpressLayout.
7
6
  * @param {T} layout - Layout configuration object.
8
7
  * @returns {T} Passed layout configuration object.
9
8
  */
@@ -16,7 +16,7 @@ const components = await acfComponentAutoloader();
16
16
  * @returns {unknown[] | { [key: string]: unknown }} Parsed object or array.
17
17
  */
18
18
  function parsePhp(string?: string): unknown[] | { [key: string]: unknown } {
19
- return unserialize(string ?? 'a:0:{}') ?? [];
19
+ return unserialize(string || 'a:0:{}') ?? [];
20
20
  }
21
21
 
22
22
  /**
@@ -348,6 +348,7 @@ export async function mapField(field: NextpressField, rawValues: ACFRawValues):
348
348
  * @returns {Promise<{ [key: string]: any }>} Promise resolving to layout values object.
349
349
  */
350
350
  export async function mapLayout(layout: NextpressLayout, rawValues: ACFRawValues) {
351
+ if (!layout) return;
351
352
  const values: { [key: string]: any } = {};
352
353
 
353
354
  for (const subField of layout.sub_fields) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nextpress-core",
3
- "version": "3.2.1",
3
+ "version": "3.3.0",
4
4
  "description": "Nextpress Core",
5
5
  "keywords": [],
6
6
  "bin": {