@postxl/generators 1.11.3 → 1.11.4

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.
@@ -310,6 +310,8 @@ export function ${detectDelta._utils.validation.requiredFields.name}<
310
310
 
311
311
  /**
312
312
  * Validates that the field is a reference to an existing item.
313
+ * If the value is a key (not an ID), it resolves the key to the actual ID and updates the item.
314
+ * This allows importing Excel data where relation fields contain human-readable keys instead of UUIDs.
313
315
  */
314
316
  export async function ${detectDelta._utils.validation.referenceField.name}<
315
317
  Model extends ${dto.genericModel.name}<ID>,
@@ -328,16 +330,27 @@ export async function ${detectDelta._utils.validation.referenceField.name}<
328
330
  item: Partial<Model>
329
331
  fieldName: FieldName
330
332
  relatedModel: RelatedModelName
331
- getExistingItem: (id: RelatedID) => Promise<RelatedModel | null>
333
+ /**
334
+ * Function to get an existing item by ID or key.
335
+ * Should try ID lookup first, then key lookup.
336
+ * Returns the item if found, null otherwise.
337
+ */
338
+ getExistingItem: (idOrKey: RelatedID) => Promise<RelatedModel | null>
332
339
  }): Promise<${errors.invalidReference.type.name}<RelatedModelName, FieldName, Value> | undefined> {
333
340
  const value: Value | undefined | null = item[fieldName] as Value | undefined | null
334
- if (value === undefined || value === null) {
341
+ if (value === undefined || value === null) {
335
342
  return undefined
336
343
  }
337
344
  const existingItem = await getExistingItem(value)
338
345
  if (!existingItem) {
339
346
  return { error: '${errors.invalidReference.discriminant}', relatedModel, fieldName, value }
340
347
  }
348
+ // If the existing item was found and its ID differs from the provided value,
349
+ // it means the value was a key (not an ID). Replace the key with the actual ID.
350
+ // This ensures the item has the correct ID for database operations.
351
+ if (existingItem.id !== value) {
352
+ (item as Record<string, unknown>)[fieldName] = existingItem.id
353
+ }
341
354
  return undefined
342
355
  }
343
356
 
@@ -1 +1 @@
1
- {"version":3,"file":"detect-delta-functions.generator.js","sourceRoot":"","sources":["../../../../src/backend-import/generators/detect-delta/detect-delta-functions.generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"detect-delta-functions.generator.js","sourceRoot":"","sources":["../../../../src/backend-import/generators/detect-delta/detect-delta-functions.generator.ts"],"names":[],"mappings":"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"}
@@ -35,6 +35,41 @@ var __importStar = (this && this.__importStar) || (function () {
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.generateDataModelDecoder = generateDataModelDecoder;
37
37
  const Generator = __importStar(require("@postxl/generator"));
38
+ /**
39
+ * Checks if a discriminated union has any relation fields (in common fields or any member).
40
+ */
41
+ function discriminatedUnionHasRelationFields(field) {
42
+ // Check common fields
43
+ for (const f of field.commonFields.values()) {
44
+ if (f.kind === 'relation') {
45
+ return true;
46
+ }
47
+ }
48
+ // Check member fields
49
+ for (const member of field.members.values()) {
50
+ for (const f of member.fields.values()) {
51
+ if (f.kind === 'relation') {
52
+ return true;
53
+ }
54
+ }
55
+ }
56
+ return false;
57
+ }
58
+ /**
59
+ * Checks if a model needs lookup maps for Excel encoding.
60
+ * This is true if the model has direct relation fields OR discriminated unions with relation fields.
61
+ */
62
+ function modelNeedsLookupMaps(model) {
63
+ for (const field of model.fields.values()) {
64
+ if (field.kind === 'relation') {
65
+ return true;
66
+ }
67
+ if (field.kind === 'discriminatedUnion' && discriminatedUnionHasRelationFields(field)) {
68
+ return true;
69
+ }
70
+ }
71
+ return false;
72
+ }
38
73
  /**
39
74
  * Generates the data decoder, aggregating all the models.
40
75
  */
@@ -49,23 +84,40 @@ function generateDataModelDecoder({ context: { decoders, models } }) {
49
84
  const encoderExcelEntries = [];
50
85
  const decoderExcelEntries = [];
51
86
  const transformerExcelEntries = [];
87
+ // Build lookup map type entries for all models (map ID to keyField value)
88
+ const lookupMapTypeEntries = [];
89
+ const lookupMapBuilderEntries = [];
52
90
  for (const model of models.values()) {
53
91
  imports.addType(model.decoder.flattened.encodedType);
54
92
  encodedTypeEntries.push(`${model.decoder.dataModelEntry}: ${model.decoder.flattened.encodedType.name}[] | undefined`);
55
93
  imports.addType(model.decoder.excel.encodedType);
56
94
  encodedExcelTypeEntries.push(`${model.excelName}: ${model.decoder.excel.encodedType.name}[] | undefined`);
57
95
  imports.addType(model.types);
96
+ imports.addType(model.types.id);
58
97
  decodedTypeEntries.push(`${model.decoder.dataModelEntry}?: ${model.types.name}[]`);
59
98
  imports.add(model.decoder.flattened.encoder);
60
99
  encoderEntries.push(`${model.decoder.dataModelEntry}: input.${model.decoder.dataModelEntry}?.map(${model.decoder.flattened.encoder.name}) ?? undefined`);
61
100
  imports.add(model.decoder.excel.encoder);
62
- encoderExcelEntries.push(`${model.excelName}: input.${model.decoder.dataModelEntry}?.map(${model.decoder.excel.encoder.name}) ?? undefined`);
101
+ // Build lookup map type entry (maps ID to keyField value for this model)
102
+ lookupMapTypeEntries.push(`${model.decoder.dataModelEntry}: Map<${model.types.id.name}, string>`);
103
+ // Build lookup map builder entry
104
+ const keyFieldName = model.keyField.name;
105
+ lookupMapBuilderEntries.push(`${model.decoder.dataModelEntry}: new Map((input.${model.decoder.dataModelEntry} ?? []).map(item => [item.id, String(item.${keyFieldName})]))`);
63
106
  imports.add(model.decoder.flattened.decoder.zodDecoder);
64
107
  decoderEntries.push(`${model.decoder.dataModelEntry}: z.array(${model.decoder.flattened.decoder.zodDecoder.name}).optional()`);
65
108
  imports.add(model.decoder.excel.decoder.zodDecoder);
66
109
  decoderExcelEntries.push(`${model.excelName}: z.array(${model.decoder.excel.decoder.zodDecoder.name}).optional()`);
67
110
  transformerExcelEntries.push(`${model.decoder.dataModelEntry}: v.${model.excelName} ?? []`);
68
111
  }
112
+ // Generate encoder entries for Excel - models with relations (direct or via DU) need lookup maps
113
+ for (const model of models.values()) {
114
+ if (modelNeedsLookupMaps(model)) {
115
+ encoderExcelEntries.push(`${model.excelName}: input.${model.decoder.dataModelEntry}?.map(item => ${model.decoder.excel.encoder.name}(item, lookupMaps)) ?? undefined`);
116
+ }
117
+ else {
118
+ encoderExcelEntries.push(`${model.excelName}: input.${model.decoder.dataModelEntry}?.map(${model.decoder.excel.encoder.name}) ?? undefined`);
119
+ }
120
+ }
69
121
  return `
70
122
  import * as z from 'zod'
71
123
  ${imports.generate()}
@@ -84,6 +136,25 @@ export type ${dataModel.decodedType.name} = {
84
136
  ${decodedTypeEntries.join(',\n')}
85
137
  }
86
138
 
139
+ /**
140
+ * Lookup maps for resolving IDs to keyField values during Excel export.
141
+ * Each map contains ID -> keyField value mappings for a specific model.
142
+ * This is used to export human-readable keys instead of UUIDs in relation fields.
143
+ */
144
+ export type IdToKeyLookupMaps = {
145
+ ${lookupMapTypeEntries.join(',\n')}
146
+ }
147
+
148
+ /**
149
+ * Builds lookup maps from the DataModel for ID-to-key resolution during export.
150
+ * These maps allow the Excel encoder to output keyField values instead of IDs for relation fields.
151
+ */
152
+ function buildIdToKeyLookupMaps(input: ${dataModel.decodedType.name}): IdToKeyLookupMaps {
153
+ return {
154
+ ${lookupMapBuilderEntries.join(',\n')}
155
+ }
156
+ }
157
+
87
158
  export function ${dataModel.encoder.name}(input: ${dataModel.decodedType.name}): ${dataModel.encodedType.name} {
88
159
  return {
89
160
  ${encoderEntries.join(',\n')}
@@ -109,7 +180,15 @@ export type ${excelDataModel.encodedType.name} = {
109
180
  ${encodedExcelTypeEntries.join(',\n')}
110
181
  }
111
182
 
183
+ /**
184
+ * Encodes a DataModel to Excel format, converting relation IDs to human-readable keys.
185
+ * This allows exported Excel files to contain the same format as imported Excel files,
186
+ * making round-trip import/export consistent.
187
+ */
112
188
  export function ${excelDataModel.encoder.name}(input: ${dataModel.decodedType.name}): ${excelDataModel.encodedType.name} {
189
+ // Build lookup maps for ID-to-key resolution
190
+ const lookupMaps = buildIdToKeyLookupMaps(input)
191
+
113
192
  return {
114
193
  ${encoderExcelEntries.join(',\n')}
115
194
  }
@@ -1 +1 @@
1
- {"version":3,"file":"datamodel-decoder.generator.js","sourceRoot":"","sources":["../../src/decoders/datamodel-decoder.generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"datamodel-decoder.generator.js","sourceRoot":"","sources":["../../src/decoders/datamodel-decoder.generator.ts"],"names":[],"mappings":"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"}
@@ -37,11 +37,33 @@ exports.generateDiscriminatedUnionDecoder = generateDiscriminatedUnionDecoder;
37
37
  const Generator = __importStar(require("@postxl/generator"));
38
38
  const FlattenedFieldHelper = __importStar(require("./excel-field-decoder.helper"));
39
39
  const FieldDecoder = __importStar(require("./field-decoder.helper"));
40
+ /**
41
+ * Checks if a discriminated union has any relation fields (in common fields or any member).
42
+ */
43
+ function hasRelationFields(field) {
44
+ // Check common fields
45
+ for (const f of field.commonFields.values()) {
46
+ if (f.kind === 'relation') {
47
+ return true;
48
+ }
49
+ }
50
+ // Check member fields
51
+ for (const member of field.members.values()) {
52
+ for (const f of member.fields.values()) {
53
+ if (f.kind === 'relation') {
54
+ return true;
55
+ }
56
+ }
57
+ }
58
+ return false;
59
+ }
40
60
  function generateDiscriminatedUnionDecoder({ context, model, discriminatedUnion, }) {
41
61
  const imports = Generator.ImportGenerator.from(model.decoder.decoder.zodDecoder.location);
42
62
  const params = { context, model, discriminatedUnion, field: discriminatedUnion.field, imports };
43
63
  // We cannot inline below definitions, as we need to add the imports before
44
64
  const decoder = getDecoder(params);
65
+ const flattenedType = getFlattenedType({ discriminatedUnion });
66
+ const flattenedEncoder = getFlattenedEncoder(params);
45
67
  const flattenedDecoder = getFlattenedDecoder(params);
46
68
  return /* ts */ `
47
69
  import * as z from 'zod'
@@ -49,9 +71,9 @@ ${imports.generate()}
49
71
 
50
72
  ${decoder}
51
73
 
52
- ${getFlattenedType({ discriminatedUnion })}
74
+ ${flattenedType}
53
75
 
54
- ${getFlattenedEncoder({ discriminatedUnion })}
76
+ ${flattenedEncoder}
55
77
 
56
78
  ${flattenedDecoder}`;
57
79
  }
@@ -89,32 +111,77 @@ function getFlattenedType({ discriminatedUnion }) {
89
111
  export type ${discriminatedUnion.flattened.decoder.rawInputType.name} = z.infer<typeof ${discriminatedUnion.flattened.decoder.rawInputValidation.name}>
90
112
  `;
91
113
  }
92
- function getFlattenedEncoder({ discriminatedUnion, }) {
114
+ function getFlattenedEncoder({ context, discriminatedUnion, field, imports }) {
115
+ const hasRelations = hasRelationFields(field);
116
+ // If there are relation fields, we need the lookup maps type
117
+ if (hasRelations) {
118
+ imports.addTypeImport({
119
+ from: Generator.toBackendModuleLocation('@decoders/data-model.decoder'),
120
+ items: [Generator.toTypeName('IdToKeyLookupMaps')],
121
+ });
122
+ }
123
+ const encoderFields = getEncoderFields({ field, context, hasRelations });
124
+ if (hasRelations) {
125
+ return `
126
+ /**
127
+ * Encodes a ${field.type} discriminated union to a flattened object.
128
+ * When lookupMaps is provided, relation IDs are resolved to human-readable keyField values.
129
+ * When lookupMaps is not provided, IDs are output directly.
130
+ */
131
+ export function ${discriminatedUnion.flattened.encoder.name}(item: ${field.type}, lookupMaps?: IdToKeyLookupMaps) {
132
+ return {
133
+ ${encoderFields.join(',\n')}
134
+ }
135
+ }
136
+ `;
137
+ }
93
138
  return `
94
139
  /**
95
- * Encodes a ${discriminatedUnion.field.type} discriminated union to a flattened object, where each
140
+ * Encodes a ${field.type} discriminated union to a flattened object, where each
96
141
  * nested field is mapped to a top-level field. This allows serialization to a column structure.
97
142
  */
98
- export function ${discriminatedUnion.flattened.encoder.name}(item: ${discriminatedUnion.field.type}) {
143
+ export function ${discriminatedUnion.flattened.encoder.name}(item: ${field.type}) {
99
144
  return {
100
- ${getEncoderFields({ field: discriminatedUnion.field }).join(',\n')}
145
+ ${encoderFields.join(',\n')}
101
146
  }
102
147
  }
103
148
  `;
104
149
  }
105
- function getEncoderFields({ field }) {
150
+ function getEncoderFields({ field, context, hasRelations, }) {
106
151
  const result = [];
107
152
  result.push(`${field.databaseName}: item.type`);
108
153
  for (const f of field.commonFields.values()) {
109
- result.push(`${f.databaseName}: item.${f.name}`);
154
+ result.push(getEncoderFieldValue({ f, context, hasRelations, memberType: null }));
110
155
  }
111
156
  for (const member of field.members.values()) {
112
157
  for (const f of member.fields.values()) {
113
- result.push(`${f.databaseName}: item.type === '${member.type}' ? item.${f.name} : null`);
158
+ result.push(getEncoderFieldValue({ f, context, hasRelations, memberType: member.type }));
114
159
  }
115
160
  }
116
161
  return result;
117
162
  }
163
+ function getEncoderFieldValue({ f, context, hasRelations, memberType, }) {
164
+ const valueExpr = memberType ? `item.type === '${memberType}' ? item.${f.name} : null` : `item.${f.name}`;
165
+ if (f.kind === 'relation' && hasRelations) {
166
+ const referencedModel = context.models.get(f.referencedModelName);
167
+ const lookupExpr = `lookupMaps?.${referencedModel.decoder.dataModelEntry}.get(item.${f.name})`;
168
+ if (memberType) {
169
+ // Member-specific field: check type first, then resolve ID to key
170
+ if (f.isRequired) {
171
+ return `${f.databaseName}: item.type === '${memberType}' ? (${lookupExpr} ?? item.${f.name}) : null`;
172
+ }
173
+ return `${f.databaseName}: item.type === '${memberType}' ? (item.${f.name} === null ? null : (${lookupExpr} ?? item.${f.name})) : null`;
174
+ }
175
+ else {
176
+ // Common field: always present
177
+ if (f.isRequired) {
178
+ return `${f.databaseName}: ${lookupExpr} ?? item.${f.name}`;
179
+ }
180
+ return `${f.databaseName}: item.${f.name} === null ? null : (${lookupExpr} ?? item.${f.name})`;
181
+ }
182
+ }
183
+ return `${f.databaseName}: ${valueExpr}`;
184
+ }
118
185
  function getFlattenedDecoder({ context, model, discriminatedUnion, field, imports }) {
119
186
  imports.addTypeImport({ from: context.types.location, items: [field.type] });
120
187
  const fieldRawDecoders = [
@@ -1 +1 @@
1
- {"version":3,"file":"discriminated-union.decoder.generator.js","sourceRoot":"","sources":["../../src/decoders/discriminated-union.decoder.generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"discriminated-union.decoder.generator.js","sourceRoot":"","sources":["../../src/decoders/discriminated-union.decoder.generator.ts"],"names":[],"mappings":"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"}
@@ -37,6 +37,26 @@ exports.generateModelDecoder = generateModelDecoder;
37
37
  const Generator = __importStar(require("@postxl/generator"));
38
38
  const FlattenedFieldHelper = __importStar(require("./excel-field-decoder.helper"));
39
39
  const FieldHelper = __importStar(require("./field-decoder.helper"));
40
+ /**
41
+ * Checks if a discriminated union has any relation fields (in common fields or any member).
42
+ */
43
+ function discriminatedUnionHasRelationFields(field) {
44
+ // Check common fields
45
+ for (const f of field.commonFields.values()) {
46
+ if (f.kind === 'relation') {
47
+ return true;
48
+ }
49
+ }
50
+ // Check member fields
51
+ for (const member of field.members.values()) {
52
+ for (const f of member.fields.values()) {
53
+ if (f.kind === 'relation') {
54
+ return true;
55
+ }
56
+ }
57
+ }
58
+ return false;
59
+ }
40
60
  function generateModelDecoder({ model, context }) {
41
61
  const imports = Generator.ImportGenerator.from(model.decoder.decoder.zodDecoder.location).add(model.types);
42
62
  const sharedParams = { model, context, imports };
@@ -54,6 +74,7 @@ function generateModelDecoder({ model, context }) {
54
74
  ...sharedParams,
55
75
  toName: (field) => field.excelName,
56
76
  codecDefinition: model.decoder.excel,
77
+ isExcel: true,
57
78
  };
58
79
  const excelFlattenedType = getFlattenedType(excelFlattenedParams);
59
80
  const excelFlattenedEncoder = getFlattenedEncoder(excelFlattenedParams);
@@ -101,26 +122,86 @@ function getFlattenedType({ model, codecDefinition }) {
101
122
  */
102
123
  export type ${codecDefinition.decoder.rawInputType.name} = z.infer<typeof ${codecDefinition.decoder.rawInputValidation.name}>`;
103
124
  }
104
- function getFlattenedEncoder(params) {
105
- const { model, imports, codecDefinition, toName } = params;
106
- const fields = [];
125
+ /**
126
+ * Checks if the model needs lookup maps for Excel export (has relation fields or discriminated unions with relations).
127
+ */
128
+ function checkNeedsLookupMaps(model, isExcel) {
129
+ if (!isExcel) {
130
+ return false;
131
+ }
107
132
  for (const field of model.fields.values()) {
108
- switch (field.kind) {
109
- case 'discriminatedUnion': {
110
- const du = model.decoder.discriminatedUnions.get(field.name);
111
- imports.add(du.flattened.encoder);
112
- fields.push(`...${du.flattened.encoder.name}(item.${field.name})`);
113
- break;
114
- }
115
- case 'enum':
116
- fields.push(`"${toName(field)}": item.${field.name}`);
117
- break;
118
- default:
119
- fields.push(`"${toName(field)}": item.${field.name}`);
120
- break;
133
+ if (field.kind === 'relation') {
134
+ return true;
135
+ }
136
+ if (field.kind === 'discriminatedUnion' && discriminatedUnionHasRelationFields(field)) {
137
+ return true;
121
138
  }
122
139
  }
123
- const inputType = getFlattenedEncoderInputType(params);
140
+ return false;
141
+ }
142
+ /**
143
+ * Generates field encoding for a discriminated union.
144
+ */
145
+ function encodeDiscriminatedUnionField(params) {
146
+ const { field, model, imports, isExcel } = params;
147
+ const du = model.decoder.discriminatedUnions.get(field.name);
148
+ imports.add(du.flattened.encoder);
149
+ const hasRelations = isExcel && discriminatedUnionHasRelationFields(field);
150
+ const encoderCall = hasRelations
151
+ ? `${du.flattened.encoder.name}(item.${field.name}, lookupMaps)`
152
+ : `${du.flattened.encoder.name}(item.${field.name})`;
153
+ return `...${encoderCall}`;
154
+ }
155
+ /**
156
+ * Generates field encoding for a relation field.
157
+ */
158
+ function encodeRelationField(params) {
159
+ const { field, toName, context, isExcel } = params;
160
+ if (!isExcel) {
161
+ return `"${toName(field)}": item.${field.name}`;
162
+ }
163
+ // For Excel export, resolve relation IDs to keyField values using lookup maps
164
+ const referencedModel = context.models.get(field.referencedModelName);
165
+ const lookupExpr = `lookupMaps?.${referencedModel.decoder.dataModelEntry}.get(item.${field.name}) ?? item.${field.name}`;
166
+ if (field.isRequired) {
167
+ return `"${toName(field)}": ${lookupExpr}`;
168
+ }
169
+ return `"${toName(field)}": item.${field.name} === null ? null : (${lookupExpr})`;
170
+ }
171
+ /**
172
+ * Generates field encoding for a single field based on its kind.
173
+ */
174
+ function encodeField(field, params) {
175
+ const { toName, model, imports, context, isExcel } = params;
176
+ switch (field.kind) {
177
+ case 'discriminatedUnion':
178
+ return encodeDiscriminatedUnionField({ field, model, imports, isExcel });
179
+ case 'relation':
180
+ return encodeRelationField({ field, toName, context, isExcel });
181
+ case 'enum':
182
+ default:
183
+ return `"${toName(field)}": item.${field.name}`;
184
+ }
185
+ }
186
+ /**
187
+ * Generates the function signature and JSDoc based on whether lookup maps are needed.
188
+ */
189
+ function generateEncoderFunction(params) {
190
+ const { needsLookupMaps, model, codecDefinition, inputType, fields } = params;
191
+ if (needsLookupMaps) {
192
+ return `
193
+ /**
194
+ * Encodes a ${model.types.name} object to a flattened Excel object.
195
+ * When lookupMaps is provided, relation IDs are resolved to human-readable keyField values.
196
+ * When lookupMaps is not provided (e.g., single-model export), IDs are output directly.
197
+ * This ensures exported Excel files match the expected import format when used with flattenExcelDataModel.
198
+ */
199
+ export function ${codecDefinition.encoder.name}(item: ${inputType}, lookupMaps?: IdToKeyLookupMaps) {
200
+ return {
201
+ ${fields.join(',\n')}
202
+ }
203
+ }`;
204
+ }
124
205
  return `
125
206
  /**
126
207
  * Encodes a ${model.types.name} object to a flattened object, where each
@@ -132,6 +213,28 @@ function getFlattenedEncoder(params) {
132
213
  }
133
214
  }`;
134
215
  }
216
+ function getFlattenedEncoder(params) {
217
+ const { model, imports, codecDefinition, isExcel } = params;
218
+ const needsLookupMaps = checkNeedsLookupMaps(model, isExcel);
219
+ if (needsLookupMaps) {
220
+ imports.addTypeImport({
221
+ from: Generator.toBackendModuleLocation('@decoders/data-model.decoder'),
222
+ items: [Generator.toTypeName('IdToKeyLookupMaps')],
223
+ });
224
+ }
225
+ const fields = [];
226
+ for (const field of model.fields.values()) {
227
+ fields.push(encodeField(field, params));
228
+ }
229
+ const inputType = getFlattenedEncoderInputType(params);
230
+ return generateEncoderFunction({
231
+ needsLookupMaps,
232
+ model,
233
+ codecDefinition,
234
+ inputType,
235
+ fields,
236
+ });
237
+ }
135
238
  function getFlattenedEncoderInputType({ model, imports }) {
136
239
  const omits = [];
137
240
  for (const field of model.fields.values()) {
@@ -1 +1 @@
1
- {"version":3,"file":"model-decoder.generator.js","sourceRoot":"","sources":["../../src/decoders/model-decoder.generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model-decoder.generator.js","sourceRoot":"","sources":["../../src/decoders/model-decoder.generator.ts"],"names":[],"mappings":"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"}
@@ -2,9 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.generateDockerSh = generateDockerSh;
4
4
  function generateDockerSh({ schema: { projectType, slug } }) {
5
- const mountPath = projectType === 'workspace' ? '../../' : '${PWD}';
6
5
  const workDir = projectType === 'workspace' ? `/pxl/projects/${slug}/e2e` : '/pxl/e2e';
7
- return /*sh*/ String.raw `#!/bin/bash
6
+ const commonScript = /*sh*/ String.raw `#!/bin/bash
8
7
  # This script should only be run via 'pnpm docker' in the project root!
9
8
  # Define a name for the image
10
9
  IMAGE_NAME="e2e-pxl-env"
@@ -17,9 +16,18 @@ docker build -t $IMAGE_NAME ./e2e/
17
16
  USER_FLAG=""
18
17
  if [[ "$(uname)" = "Linux" ]]; then
19
18
  USER_FLAG="-u $(id -u):$(id -g)"
20
- fi
21
- ${projectType === 'workspace' ? '# Mount the entire monorepo to preserve pnpm workspace symlinks' : ''}
22
- docker run -p 3030:3030 $USER_FLAG -v ${mountPath}:/pxl -w ${workDir} --rm -it $IMAGE_NAME /bin/bash
19
+ fi`;
20
+ const runScript = projectType === 'workspace'
21
+ ? /*sh*/ String.raw `
22
+ # Mount the entire monorepo to preserve pnpm workspace symlinks
23
+ MONOREPO_ROOT="$(cd ../.. && pwd)"
24
+ # Delete the node shims from mounted volume to prevent "Exec format error" on cross-architecture mounts
25
+ docker run -p 3030:3030 $USER_FLAG -v "$MONOREPO_ROOT:/pxl" -w ${workDir} --rm -it $IMAGE_NAME /bin/bash -c "rm -f /pxl/node_modules/.bin/node /pxl/projects/*/node_modules/.bin/node 2>/dev/null; exec /bin/bash"
26
+ `
27
+ : /*sh*/ String.raw `
28
+ # Delete the node shims from mounted volume to prevent "Exec format error" on cross-architecture mounts
29
+ docker run -p 3030:3030 $USER_FLAG -v \${PWD}:/pxl -w ${workDir} --rm -it $IMAGE_NAME /bin/bash -c "rm -f /pxl/node_modules/.bin/node 2>/dev/null; exec /bin/bash"
23
30
  `;
31
+ return commonScript + runScript;
24
32
  }
25
33
  //# sourceMappingURL=docker-sh.generator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"docker-sh.generator.js","sourceRoot":"","sources":["../../../src/e2e/generators/docker-sh.generator.ts"],"names":[],"mappings":";;AAEA,4CAoBC;AApBD,SAAgB,gBAAgB,CAAC,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAiB;IAC/E,MAAM,SAAS,GAAG,WAAW,KAAK,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAA;IACnE,MAAM,OAAO,GAAG,WAAW,KAAK,WAAW,CAAC,CAAC,CAAC,iBAAiB,IAAI,MAAM,CAAC,CAAC,CAAC,UAAU,CAAA;IACtF,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;EAcxB,WAAW,KAAK,WAAW,CAAC,CAAC,CAAC,iEAAiE,CAAC,CAAC,CAAC,EAAE;wCAC9D,SAAS,YAAY,OAAO;CACnE,CAAA;AACD,CAAC"}
1
+ {"version":3,"file":"docker-sh.generator.js","sourceRoot":"","sources":["../../../src/e2e/generators/docker-sh.generator.ts"],"names":[],"mappings":";;AAEA,4CAgCC;AAhCD,SAAgB,gBAAgB,CAAC,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAiB;IAC/E,MAAM,OAAO,GAAG,WAAW,KAAK,WAAW,CAAC,CAAC,CAAC,iBAAiB,IAAI,MAAM,CAAC,CAAC,CAAC,UAAU,CAAA;IAEtF,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;GAarC,CAAA;IAED,MAAM,SAAS,GACb,WAAW,KAAK,WAAW;QACzB,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAA;;;;iEAIwC,OAAO;CACvE;QACK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAA;;wDAE+B,OAAO;CAC9D,CAAA;IAEC,OAAO,YAAY,GAAG,SAAS,CAAA;AACjC,CAAC"}
@@ -57,7 +57,7 @@ export const DashboardPage = () => {
57
57
  <h3 className="mb-4">Posts:</h3>
58
58
  <ul>
59
59
  {list
60
- .toSorted((a, b) => a.id.localeCompare(b.id))
60
+ .toSorted((a, b) => a.title.localeCompare(b.title))
61
61
  .map((post) => (
62
62
  <li
63
63
  key={post.id}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@postxl/generators",
3
- "version": "1.11.3",
3
+ "version": "1.11.4",
4
4
  "description": "Code generators for PXL - generates backend, frontend, Prisma schemas, and more",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",
@@ -44,8 +44,8 @@
44
44
  "@faker-js/faker": "9.4.0",
45
45
  "@prisma/prisma-schema-wasm": "7.2.0-4.0c8ef2ce45c83248ab3df073180d5eda9e8be7a3",
46
46
  "exceljs": "^4.4.0",
47
- "@postxl/schema": "^1.3.1",
48
47
  "@postxl/generator": "^1.3.3",
48
+ "@postxl/schema": "^1.3.1",
49
49
  "@postxl/ui-components": "^1.3.5",
50
50
  "@postxl/utils": "^1.3.1"
51
51
  },