@underpeaks/generator-core 1.0.28 → 1.0.31

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.
Files changed (35) hide show
  1. package/dist/index.d.ts +3 -0
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +3 -0
  4. package/dist/index.js.map +1 -1
  5. package/dist/insertion/field-insertion.d.ts +45 -0
  6. package/dist/insertion/field-insertion.d.ts.map +1 -0
  7. package/dist/insertion/field-insertion.js +95 -0
  8. package/dist/insertion/field-insertion.js.map +1 -0
  9. package/dist/manifest/manifest.d.ts +5 -2
  10. package/dist/manifest/manifest.d.ts.map +1 -1
  11. package/dist/manifest/manifest.js +9 -0
  12. package/dist/manifest/manifest.js.map +1 -1
  13. package/dist/scan/resolve-widgets.d.ts +20 -0
  14. package/dist/scan/resolve-widgets.d.ts.map +1 -0
  15. package/dist/scan/resolve-widgets.js +30 -0
  16. package/dist/scan/resolve-widgets.js.map +1 -0
  17. package/dist/scan/scan-ui-types.d.ts +16 -0
  18. package/dist/scan/scan-ui-types.d.ts.map +1 -0
  19. package/dist/scan/scan-ui-types.js +50 -0
  20. package/dist/scan/scan-ui-types.js.map +1 -0
  21. package/dist/schema/page-template-types.d.ts +9 -0
  22. package/dist/schema/page-template-types.d.ts.map +1 -0
  23. package/dist/schema/page-template-types.js +54 -0
  24. package/dist/schema/page-template-types.js.map +1 -0
  25. package/dist/schema/types.d.ts +1 -0
  26. package/dist/schema/types.d.ts.map +1 -1
  27. package/package.json +1 -1
  28. package/dist/routes/parser.d.ts +0 -1
  29. package/dist/routes/parser.d.ts.map +0 -1
  30. package/dist/routes/parser.js +0 -2
  31. package/dist/routes/parser.js.map +0 -1
  32. package/dist/theme/mapper.d.ts +0 -1
  33. package/dist/theme/mapper.d.ts.map +0 -1
  34. package/dist/theme/mapper.js +0 -2
  35. package/dist/theme/mapper.js.map +0 -1
package/dist/index.d.ts CHANGED
@@ -1,4 +1,7 @@
1
1
  export * from './schema/types';
2
2
  export * from './schema/parser';
3
+ export * from './schema/page-template-types';
3
4
  export * from './manifest/manifest';
5
+ export * from './scan/scan-ui-types';
6
+ export * from './scan/resolve-widgets';
4
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,qBAAqB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,8BAA8B,CAAA;AAC5C,cAAc,qBAAqB,CAAA;AACnC,cAAc,sBAAsB,CAAA;AACpC,cAAc,wBAAwB,CAAA"}
package/dist/index.js CHANGED
@@ -17,5 +17,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  __exportStar(require("./schema/types"), exports);
19
19
  __exportStar(require("./schema/parser"), exports);
20
+ __exportStar(require("./schema/page-template-types"), exports);
20
21
  __exportStar(require("./manifest/manifest"), exports);
22
+ __exportStar(require("./scan/scan-ui-types"), exports);
23
+ __exportStar(require("./scan/resolve-widgets"), exports);
21
24
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,gEAAgE;;;;;;;;;;;;;;;;AAEhE,iDAA8B;AAC9B,kDAA+B;AAC/B,sDAAmC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,gEAAgE;;;;;;;;;;;;;;;;AAEhE,iDAA8B;AAC9B,kDAA+B;AAC/B,+DAA4C;AAC5C,sDAAmC;AACnC,uDAAoC;AACpC,yDAAsC"}
@@ -0,0 +1,45 @@
1
+ export declare const NXF_INSERT_MARKER = "NXF:INSERT-FIELDS-HERE";
2
+ /**
3
+ * The marker comment block inserted once, at first generation, into
4
+ * every page that renders per-field content. `commentPrefix` is '//' for
5
+ * both Dart and TSX, so this is trivially shared — kept as a parameter
6
+ * rather than hardcoded in case a future target language needs a
7
+ * different comment syntax (e.g. '#').
8
+ */
9
+ export declare function buildMarkerComment(commentPrefix?: string): string[];
10
+ export interface FieldInsertionResult {
11
+ content: string;
12
+ insertedAtMarker: boolean;
13
+ message?: string;
14
+ }
15
+ /**
16
+ * Finds the marker's line index in an existing file's content, or -1 if
17
+ * it's missing (deleted, or the file predates this mechanism).
18
+ */
19
+ export declare function findMarkerLine(existingContent: string): number;
20
+ /**
21
+ * Inserts newFieldLines into an existing page's content:
22
+ * - If the marker is present, splices the new field's code in directly
23
+ * above the marker (so the marker always stays as the insertion point
24
+ * for the NEXT field too), preserving everything else in the file
25
+ * exactly as the developer left it.
26
+ * - If the marker is missing, appends the new field's code to the very
27
+ * bottom of the file instead, with a clear header comment, and returns
28
+ * a message the CLI should print telling the developer where to find
29
+ * it and that they should cut/paste it into place themselves.
30
+ *
31
+ * Indentation of newFieldLines is the caller's responsibility — this
32
+ * function does not reformat or re-indent anything, since it can't know
33
+ * the surrounding widget tree's nesting depth safely for every page type.
34
+ */
35
+ export declare function insertFieldAtMarker(existingContent: string, newFieldLines: string[], pageLabel: string, fieldLabel: string, commentPrefix?: string): FieldInsertionResult;
36
+ /**
37
+ * Diffs the model's current visible field names against the set of
38
+ * field names the page was last generated with (tracked in the
39
+ * manifest — see ManifestEntry.field_names in manifest.ts), returning
40
+ * only the ones that are genuinely new. Used to decide which fields
41
+ * need inserting on a regeneration run, rather than re-rendering every
42
+ * field from scratch.
43
+ */
44
+ export declare function diffNewFields(currentFieldNames: string[], previousFieldNames: string[] | undefined): string[];
45
+ //# sourceMappingURL=field-insertion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-insertion.d.ts","sourceRoot":"","sources":["../../src/insertion/field-insertion.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,iBAAiB,2BAA2B,CAAA;AAEzD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,aAAa,GAAE,MAAa,GAAG,MAAM,EAAE,CAOzE;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAA;IAIf,gBAAgB,EAAE,OAAO,CAAA;IAGzB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,CAG9D;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,CACjC,eAAe,EAAE,MAAM,EACvB,aAAa,EAAI,MAAM,EAAE,EACzB,SAAS,EAAQ,MAAM,EACvB,UAAU,EAAO,MAAM,EACvB,aAAa,GAAI,MAAa,GAC7B,oBAAoB,CAgCtB;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,iBAAiB,EAAG,MAAM,EAAE,EAC5B,kBAAkB,EAAE,MAAM,EAAE,GAAG,SAAS,GACvC,MAAM,EAAE,CAIV"}
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+ // File: underpeaks_codegen/packages/generator-core/src/insertion/field-insertion.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.NXF_INSERT_MARKER = void 0;
5
+ exports.buildMarkerComment = buildMarkerComment;
6
+ exports.findMarkerLine = findMarkerLine;
7
+ exports.insertFieldAtMarker = insertFieldAtMarker;
8
+ exports.diffNewFields = diffNewFields;
9
+ // The marker-tag mechanism: lets a regenerated page pick up newly added
10
+ // model fields without overwriting the whole file (and losing whatever
11
+ // the developer has customized in it since). Platform-agnostic — works
12
+ // on plain text/line arrays, so both Flutter (.dart, // comments) and
13
+ // Next.js (.tsx, // comments) can share this exact logic.
14
+ exports.NXF_INSERT_MARKER = 'NXF:INSERT-FIELDS-HERE';
15
+ /**
16
+ * The marker comment block inserted once, at first generation, into
17
+ * every page that renders per-field content. `commentPrefix` is '//' for
18
+ * both Dart and TSX, so this is trivially shared — kept as a parameter
19
+ * rather than hardcoded in case a future target language needs a
20
+ * different comment syntax (e.g. '#').
21
+ */
22
+ function buildMarkerComment(commentPrefix = '//') {
23
+ return [
24
+ `${commentPrefix} ${exports.NXF_INSERT_MARKER} — DO NOT DELETE`,
25
+ `${commentPrefix} This tag marks where new fields get inserted automatically when you`,
26
+ `${commentPrefix} update your model. Removing it means future field additions get pasted`,
27
+ `${commentPrefix} at the bottom of this file instead, for you to move into place yourself.`,
28
+ ];
29
+ }
30
+ /**
31
+ * Finds the marker's line index in an existing file's content, or -1 if
32
+ * it's missing (deleted, or the file predates this mechanism).
33
+ */
34
+ function findMarkerLine(existingContent) {
35
+ const lines = existingContent.split('\n');
36
+ return lines.findIndex((line) => line.includes(exports.NXF_INSERT_MARKER));
37
+ }
38
+ /**
39
+ * Inserts newFieldLines into an existing page's content:
40
+ * - If the marker is present, splices the new field's code in directly
41
+ * above the marker (so the marker always stays as the insertion point
42
+ * for the NEXT field too), preserving everything else in the file
43
+ * exactly as the developer left it.
44
+ * - If the marker is missing, appends the new field's code to the very
45
+ * bottom of the file instead, with a clear header comment, and returns
46
+ * a message the CLI should print telling the developer where to find
47
+ * it and that they should cut/paste it into place themselves.
48
+ *
49
+ * Indentation of newFieldLines is the caller's responsibility — this
50
+ * function does not reformat or re-indent anything, since it can't know
51
+ * the surrounding widget tree's nesting depth safely for every page type.
52
+ */
53
+ function insertFieldAtMarker(existingContent, newFieldLines, pageLabel, fieldLabel, commentPrefix = '//') {
54
+ const markerLine = findMarkerLine(existingContent);
55
+ if (markerLine === -1) {
56
+ const lines = existingContent.split('\n');
57
+ const appended = [
58
+ ...lines,
59
+ '',
60
+ `${commentPrefix} NEW FIELD ADDED: ${fieldLabel}`,
61
+ `${commentPrefix} The insertion marker was not found in this file (removed, or this file`,
62
+ `${commentPrefix} predates the marker mechanism). This field's widget code was appended`,
63
+ `${commentPrefix} here instead — cut and paste it wherever you'd like it in the layout.`,
64
+ ...newFieldLines,
65
+ ];
66
+ return {
67
+ content: appended.join('\n'),
68
+ insertedAtMarker: false,
69
+ message: `Added the ${fieldLabel} widget to the bottom of ${pageLabel} — cut and paste it wherever you'd like it in the layout.`,
70
+ };
71
+ }
72
+ const lines = existingContent.split('\n');
73
+ const before = lines.slice(0, markerLine);
74
+ const after = lines.slice(markerLine);
75
+ const spliced = [...before, ...newFieldLines, ...after];
76
+ return {
77
+ content: spliced.join('\n'),
78
+ insertedAtMarker: true,
79
+ };
80
+ }
81
+ /**
82
+ * Diffs the model's current visible field names against the set of
83
+ * field names the page was last generated with (tracked in the
84
+ * manifest — see ManifestEntry.field_names in manifest.ts), returning
85
+ * only the ones that are genuinely new. Used to decide which fields
86
+ * need inserting on a regeneration run, rather than re-rendering every
87
+ * field from scratch.
88
+ */
89
+ function diffNewFields(currentFieldNames, previousFieldNames) {
90
+ if (!previousFieldNames)
91
+ return []; // no prior record — full-file generation path handles this case instead
92
+ const previousSet = new Set(previousFieldNames);
93
+ return currentFieldNames.filter((name) => !previousSet.has(name));
94
+ }
95
+ //# sourceMappingURL=field-insertion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-insertion.js","sourceRoot":"","sources":["../../src/insertion/field-insertion.ts"],"names":[],"mappings":";AAAA,oFAAoF;;;AAiBpF,gDAOC;AAiBD,wCAGC;AAiBD,kDAsCC;AAUD,sCAOC;AAlHD,wEAAwE;AACxE,uEAAuE;AACvE,uEAAuE;AACvE,sEAAsE;AACtE,0DAA0D;AAE7C,QAAA,iBAAiB,GAAG,wBAAwB,CAAA;AAEzD;;;;;;GAMG;AACH,SAAgB,kBAAkB,CAAC,gBAAwB,IAAI;IAC7D,OAAO;QACL,GAAG,aAAa,IAAI,yBAAiB,kBAAkB;QACvD,GAAG,aAAa,sEAAsE;QACtF,GAAG,aAAa,yEAAyE;QACzF,GAAG,aAAa,2EAA2E;KAC5F,CAAA;AACH,CAAC;AAaD;;;GAGG;AACH,SAAgB,cAAc,CAAC,eAAuB;IACpD,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACzC,OAAO,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,yBAAiB,CAAC,CAAC,CAAA;AACpE,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,SAAgB,mBAAmB,CACjC,eAAuB,EACvB,aAAyB,EACzB,SAAuB,EACvB,UAAuB,EACvB,gBAA0B,IAAI;IAE9B,MAAM,UAAU,GAAG,cAAc,CAAC,eAAe,CAAC,CAAA;IAElD,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE,CAAC;QACtB,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACzC,MAAM,QAAQ,GAAG;YACf,GAAG,KAAK;YACR,EAAE;YACF,GAAG,aAAa,qBAAqB,UAAU,EAAE;YACjD,GAAG,aAAa,yEAAyE;YACzF,GAAG,aAAa,wEAAwE;YACxF,GAAG,aAAa,wEAAwE;YACxF,GAAG,aAAa;SACjB,CAAA;QAED,OAAO;YACL,OAAO,EAAW,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;YACrC,gBAAgB,EAAE,KAAK;YACvB,OAAO,EAAW,aAAa,UAAU,4BAA4B,SAAS,2DAA2D;SAC1I,CAAA;IACH,CAAC;IAED,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACzC,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAA;IACzC,MAAM,KAAK,GAAI,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;IAEtC,MAAM,OAAO,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,aAAa,EAAE,GAAG,KAAK,CAAC,CAAA;IAEvD,OAAO;QACL,OAAO,EAAW,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;QACpC,gBAAgB,EAAE,IAAI;KACvB,CAAA;AACH,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,aAAa,CAC3B,iBAA4B,EAC5B,kBAAwC;IAExC,IAAI,CAAC,kBAAkB;QAAE,OAAO,EAAE,CAAA,CAAC,wEAAwE;IAC3G,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,kBAAkB,CAAC,CAAA;IAC/C,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;AACnE,CAAC"}
@@ -6,6 +6,7 @@ export interface ManifestEntry {
6
6
  generated: boolean;
7
7
  customized: boolean;
8
8
  generated_at: string;
9
+ field_names?: string[];
9
10
  }
10
11
  export interface Manifest {
11
12
  version: string;
@@ -14,10 +15,12 @@ export interface Manifest {
14
15
  files: Record<string, ManifestEntry>;
15
16
  }
16
17
  export declare function computeChecksum(content: string): string;
17
- export declare function createManifest(projectId: string, files: GeneratedFile[], sourceMap: Record<string, {
18
+ export interface CreateManifestFileInfo {
18
19
  type: ManifestEntry['source_type'];
19
20
  id: string;
20
- }>): Manifest;
21
+ field_names?: string[];
22
+ }
23
+ export declare function createManifest(projectId: string, files: GeneratedFile[], sourceMap: Record<string, CreateManifestFileInfo>): Manifest;
21
24
  export declare function mergeManifest(existing: Manifest, incoming: Manifest, existingFileContents: Record<string, string>): Manifest;
22
25
  export declare function getFilesToSkip(manifest: Manifest): string[];
23
26
  //# sourceMappingURL=manifest.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/manifest/manifest.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAEpD,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,CAAA;IAC1D,SAAS,EAAI,MAAM,CAAA;IACnB,QAAQ,EAAK,MAAM,CAAA;IACnB,SAAS,EAAI,OAAO,CAAA;IACpB,UAAU,EAAG,OAAO,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAO,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAI,MAAM,CAAA;IACpB,KAAK,EAAS,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;CAC5C;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,wBAAgB,cAAc,CAC5B,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,aAAa,EAAE,EACtB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC,GAC5E,QAAQ,CAsBV;AAED,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC3C,QAAQ,CA2BV;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,EAAE,CAI3D"}
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/manifest/manifest.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAEpD,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,CAAA;IAC3D,SAAS,EAAK,MAAM,CAAA;IACpB,QAAQ,EAAM,MAAM,CAAA;IACpB,SAAS,EAAK,OAAO,CAAA;IACrB,UAAU,EAAI,OAAO,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;IAQpB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;CACvB;AAED,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAO,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAI,MAAM,CAAA;IACpB,KAAK,EAAS,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;CAC5C;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAU,aAAa,CAAC,aAAa,CAAC,CAAA;IAC1C,EAAE,EAAY,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;CACvB;AAED,wBAAgB,cAAc,CAC5B,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,aAAa,EAAE,EACtB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,GAChD,QAAQ,CAuBV;AAED,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC3C,QAAQ,CAmCV;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,EAAE,CAI3D"}
@@ -24,6 +24,7 @@ function createManifest(projectId, files, sourceMap) {
24
24
  generated: true,
25
25
  customized: false,
26
26
  generated_at: now,
27
+ field_names: source.field_names,
27
28
  };
28
29
  }
29
30
  return {
@@ -53,6 +54,14 @@ function mergeManifest(existing, incoming, existingFileContents) {
53
54
  merged.files[filePath] = {
54
55
  ...incomingEntry,
55
56
  customized: true,
57
+ // A customized page keeps its LAST KNOWN field_names from the
58
+ // existing manifest, not whatever the fresh incoming entry
59
+ // would have had — the incoming entry reflects a full
60
+ // regeneration that never actually happened for this file
61
+ // (it was skipped because it's customized), so its field_names
62
+ // don't describe what's actually on disk. Preserving the old
63
+ // list keeps future diffNewFields() calls accurate.
64
+ field_names: existingEntry.field_names,
56
65
  };
57
66
  }
58
67
  }
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/manifest/manifest.ts"],"names":[],"mappings":";AAAA,4EAA4E;;;;;AAqB5E,0CAEC;AAED,wCA0BC;AAED,sCA+BC;AAED,wCAIC;AAxFD,oDAA2B;AAmB3B,SAAgB,eAAe,CAAC,OAAe;IAC7C,OAAO,SAAS,GAAG,gBAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AAC9E,CAAC;AAED,SAAgB,cAAc,CAC5B,SAAiB,EACjB,KAAsB,EACtB,SAA6E;IAE7E,MAAM,GAAG,GAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IACxC,MAAM,OAAO,GAAkC,EAAE,CAAA;IAEjD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,MAAe,EAAE,EAAE,EAAE,MAAM,EAAE,CAAA;QAC5E,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;YACnB,WAAW,EAAG,MAAM,CAAC,IAAI;YACzB,SAAS,EAAK,MAAM,CAAC,EAAE;YACvB,QAAQ,EAAM,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC;YAC3C,SAAS,EAAK,IAAI;YAClB,UAAU,EAAI,KAAK;YACnB,YAAY,EAAE,GAAG;SAClB,CAAA;IACH,CAAC;IAED,OAAO;QACL,OAAO,EAAO,OAAO;QACrB,YAAY,EAAE,GAAG;QACjB,UAAU,EAAI,SAAS;QACvB,KAAK,EAAS,OAAO;KACtB,CAAA;AACH,CAAC;AAED,SAAgB,aAAa,CAC3B,QAAkB,EAClB,QAAkB,EAClB,oBAA4C;IAE5C,uEAAuE;IACvE,uEAAuE;IACvE,oEAAoE;IACpE,6DAA6D;IAC7D,MAAM,MAAM,GAAa;QACvB,GAAG,QAAQ;QACX,KAAK,EAAE,EAAE,GAAG,QAAQ,CAAC,KAAK,EAAE;KAC7B,CAAA;IAED,KAAK,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACvE,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QAC9C,IAAI,CAAC,aAAa;YAAE,SAAQ;QAE5B,0FAA0F;QAC1F,MAAM,aAAa,GAAI,oBAAoB,CAAC,QAAQ,CAAC,CAAA;QACrD,MAAM,cAAc,GAAG,aAAa,CAAC,CAAC,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QAE5E,IAAI,cAAc,IAAI,cAAc,KAAK,aAAa,CAAC,QAAQ,EAAE,CAAC;YAChE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG;gBACvB,GAAG,aAAa;gBAChB,UAAU,EAAE,IAAI;aACjB,CAAA;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAgB,cAAc,CAAC,QAAkB;IAC/C,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;SAClC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC;SACvC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAA;AAClC,CAAC"}
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/manifest/manifest.ts"],"names":[],"mappings":";AAAA,4EAA4E;;;;;AA6B5E,0CAEC;AAQD,wCA2BC;AAED,sCAuCC;AAED,wCAIC;AA/GD,oDAA2B;AA2B3B,SAAgB,eAAe,CAAC,OAAe;IAC7C,OAAO,SAAS,GAAG,gBAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AAC9E,CAAC;AAQD,SAAgB,cAAc,CAC5B,SAAiB,EACjB,KAAsB,EACtB,SAAiD;IAEjD,MAAM,GAAG,GAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IACxC,MAAM,OAAO,GAAkC,EAAE,CAAA;IAEjD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,MAAe,EAAE,EAAE,EAAE,MAAM,EAAE,CAAA;QAC5E,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;YACnB,WAAW,EAAG,MAAM,CAAC,IAAI;YACzB,SAAS,EAAK,MAAM,CAAC,EAAE;YACvB,QAAQ,EAAM,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC;YAC3C,SAAS,EAAK,IAAI;YAClB,UAAU,EAAI,KAAK;YACnB,YAAY,EAAE,GAAG;YACjB,WAAW,EAAG,MAAM,CAAC,WAAW;SACjC,CAAA;IACH,CAAC;IAED,OAAO;QACL,OAAO,EAAO,OAAO;QACrB,YAAY,EAAE,GAAG;QACjB,UAAU,EAAI,SAAS;QACvB,KAAK,EAAS,OAAO;KACtB,CAAA;AACH,CAAC;AAED,SAAgB,aAAa,CAC3B,QAAkB,EAClB,QAAkB,EAClB,oBAA4C;IAE5C,uEAAuE;IACvE,uEAAuE;IACvE,oEAAoE;IACpE,6DAA6D;IAC7D,MAAM,MAAM,GAAa;QACvB,GAAG,QAAQ;QACX,KAAK,EAAE,EAAE,GAAG,QAAQ,CAAC,KAAK,EAAE;KAC7B,CAAA;IAED,KAAK,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACvE,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QAC9C,IAAI,CAAC,aAAa;YAAE,SAAQ;QAE5B,0FAA0F;QAC1F,MAAM,aAAa,GAAI,oBAAoB,CAAC,QAAQ,CAAC,CAAA;QACrD,MAAM,cAAc,GAAG,aAAa,CAAC,CAAC,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QAE5E,IAAI,cAAc,IAAI,cAAc,KAAK,aAAa,CAAC,QAAQ,EAAE,CAAC;YAChE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG;gBACvB,GAAG,aAAa;gBAChB,UAAU,EAAE,IAAI;gBAChB,8DAA8D;gBAC9D,2DAA2D;gBAC3D,sDAAsD;gBACtD,0DAA0D;gBAC1D,+DAA+D;gBAC/D,6DAA6D;gBAC7D,oDAAoD;gBACpD,WAAW,EAAE,aAAa,CAAC,WAAW;aACvC,CAAA;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAgB,cAAc,CAAC,QAAkB;IAC/C,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;SAClC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC;SACvC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAA;AAClC,CAAC"}
@@ -0,0 +1,20 @@
1
+ import type { GeneratedFile } from '../schema/types';
2
+ import type { UiTypeUsage } from './scan-ui-types';
3
+ export type WidgetGenerator = () => GeneratedFile;
4
+ export interface WidgetRegistries {
5
+ editRegistry: Record<string, WidgetGenerator>;
6
+ displayRegistry: Record<string, WidgetGenerator>;
7
+ }
8
+ export interface ResolvedWidgets {
9
+ files: GeneratedFile[];
10
+ missing: string[];
11
+ }
12
+ /**
13
+ * Resolves exactly which widget files this run needs, given the set of
14
+ * ui_types/display_ui_types actually in use (from scanUsedUiTypes).
15
+ * Produces exactly one file per unique type — the Set-based scan
16
+ * already guarantees no duplicates even if 50 fields across 10 pages
17
+ * use 'textfield'.
18
+ */
19
+ export declare function resolveRequiredWidgets(usage: UiTypeUsage, registries: WidgetRegistries): ResolvedWidgets;
20
+ //# sourceMappingURL=resolve-widgets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-widgets.d.ts","sourceRoot":"","sources":["../../src/scan/resolve-widgets.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAQ,iBAAiB,CAAA;AAEpD,MAAM,MAAM,eAAe,GAAG,MAAM,aAAa,CAAA;AAEjD,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAK,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IAChD,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;CACjD;AAED,MAAM,WAAW,eAAe;IAM9B,KAAK,EAAI,aAAa,EAAE,CAAA;IAIxB,OAAO,EAAE,MAAM,EAAE,CAAA;CAClB;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAO,WAAW,EACvB,UAAU,EAAE,gBAAgB,GAC3B,eAAe,CAqBjB"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ // File: underpeaks_codegen/packages/generator-core/src/scan/resolve-widgets.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.resolveRequiredWidgets = resolveRequiredWidgets;
5
+ /**
6
+ * Resolves exactly which widget files this run needs, given the set of
7
+ * ui_types/display_ui_types actually in use (from scanUsedUiTypes).
8
+ * Produces exactly one file per unique type — the Set-based scan
9
+ * already guarantees no duplicates even if 50 fields across 10 pages
10
+ * use 'textfield'.
11
+ */
12
+ function resolveRequiredWidgets(usage, registries) {
13
+ const files = [];
14
+ const missing = [];
15
+ const resolveOne = (key, generator) => {
16
+ if (!generator) {
17
+ missing.push(key);
18
+ return;
19
+ }
20
+ files.push(generator());
21
+ };
22
+ for (const uiType of usage.editTypes) {
23
+ resolveOne(uiType, registries.editRegistry[uiType]);
24
+ }
25
+ for (const displayUiType of usage.displayTypes) {
26
+ resolveOne(displayUiType, registries.displayRegistry[displayUiType]);
27
+ }
28
+ return { files, missing };
29
+ }
30
+ //# sourceMappingURL=resolve-widgets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-widgets.js","sourceRoot":"","sources":["../../src/scan/resolve-widgets.ts"],"names":[],"mappings":";AAAA,+EAA+E;;AAgC/E,wDAwBC;AA/BD;;;;;;GAMG;AACH,SAAgB,sBAAsB,CACpC,KAAuB,EACvB,UAA4B;IAE5B,MAAM,KAAK,GAAsB,EAAE,CAAA;IACnC,MAAM,OAAO,GAAoB,EAAE,CAAA;IAEnC,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,SAAsC,EAAE,EAAE;QACzE,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YACjB,OAAM;QACR,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAA;IACzB,CAAC,CAAA;IAED,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QACrC,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAA;IACrD,CAAC;IAED,KAAK,MAAM,aAAa,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;QAC/C,UAAU,CAAC,aAAa,EAAE,UAAU,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,CAAA;IACtE,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAA;AAC3B,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { Model, PageDef } from '../schema/types';
2
+ export interface UiTypeUsage {
3
+ editTypes: Set<string>;
4
+ displayTypes: Set<string>;
5
+ }
6
+ /**
7
+ * Scans every model attached to at least one page in this generation run
8
+ * and collects the full set of unique ui_type/display_ui_type values
9
+ * actually in use — used to decide which widget files the pipeline needs
10
+ * to generate (or skip, if already generated in a prior run per the
11
+ * manifest). Hidden fields are excluded since they never render as a
12
+ * widget in the generated app. Models with no attached page are excluded
13
+ * entirely, per the anti-bloat rule: only generate for what's configured.
14
+ */
15
+ export declare function scanUsedUiTypes(models: Model[], pages: PageDef[]): UiTypeUsage;
16
+ //# sourceMappingURL=scan-ui-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scan-ui-types.d.ts","sourceRoot":"","sources":["../../src/scan/scan-ui-types.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAErD,MAAM,WAAW,WAAW;IAG1B,SAAS,EAAK,GAAG,CAAC,MAAM,CAAC,CAAA;IAMzB,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CAC1B;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,WAAW,CAyC9E"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ // File: underpeaks_codegen/packages/generator-core/src/scan/scan-ui-types.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.scanUsedUiTypes = scanUsedUiTypes;
5
+ /**
6
+ * Scans every model attached to at least one page in this generation run
7
+ * and collects the full set of unique ui_type/display_ui_type values
8
+ * actually in use — used to decide which widget files the pipeline needs
9
+ * to generate (or skip, if already generated in a prior run per the
10
+ * manifest). Hidden fields are excluded since they never render as a
11
+ * widget in the generated app. Models with no attached page are excluded
12
+ * entirely, per the anti-bloat rule: only generate for what's configured.
13
+ */
14
+ function scanUsedUiTypes(models, pages) {
15
+ const editTypes = new Set();
16
+ const displayTypes = new Set();
17
+ const modelIdsInUse = new Set(pages
18
+ .map((p) => p.model_id)
19
+ .filter((id) => Boolean(id)));
20
+ for (const model of models) {
21
+ if (!modelIdsInUse.has(model.sm_id))
22
+ continue;
23
+ for (const col of model.schema.columns) {
24
+ if (col.hidden)
25
+ continue;
26
+ if (col.ui_type) {
27
+ editTypes.add(col.ui_type);
28
+ }
29
+ }
30
+ }
31
+ // Display types are scanned per-page (not per-model in isolation),
32
+ // since a field's display_ui_type only matters for pages that actually
33
+ // render that field read-only — a public-visibility page for a model.
34
+ for (const page of pages) {
35
+ if (page.visibility === 'admin')
36
+ continue; // admin pages never use display_ui_type
37
+ const model = models.find((m) => m.sm_id === page.model_id);
38
+ if (!model)
39
+ continue;
40
+ for (const col of model.schema.columns) {
41
+ if (col.hidden)
42
+ continue;
43
+ if (col.display_ui_type) {
44
+ displayTypes.add(col.display_ui_type);
45
+ }
46
+ }
47
+ }
48
+ return { editTypes, displayTypes };
49
+ }
50
+ //# sourceMappingURL=scan-ui-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scan-ui-types.js","sourceRoot":"","sources":["../../src/scan/scan-ui-types.ts"],"names":[],"mappings":";AAAA,6EAA6E;;AAyB7E,0CAyCC;AAlDD;;;;;;;;GAQG;AACH,SAAgB,eAAe,CAAC,MAAe,EAAE,KAAgB;IAC/D,MAAM,SAAS,GAAM,IAAI,GAAG,EAAU,CAAA;IACtC,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAA;IAEtC,MAAM,aAAa,GAAG,IAAI,GAAG,CAC3B,KAAK;SACF,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;SACtB,MAAM,CAAC,CAAC,EAAE,EAAgB,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAC7C,CAAA;IAED,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;YAAE,SAAQ;QAE7C,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACvC,IAAI,GAAG,CAAC,MAAM;gBAAE,SAAQ;YAExB,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;gBAChB,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;YAC5B,CAAC;QACH,CAAC;IACH,CAAC;IAED,mEAAmE;IACnE,uEAAuE;IACvE,sEAAsE;IACtE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,UAAU,KAAK,OAAO;YAAE,SAAQ,CAAC,wCAAwC;QAElF,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC3D,IAAI,CAAC,KAAK;YAAE,SAAQ;QAEpB,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACvC,IAAI,GAAG,CAAC,MAAM;gBAAE,SAAQ;YAExB,IAAI,GAAG,CAAC,eAAe,EAAE,CAAC;gBACxB,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;YACvC,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,CAAA;AACpC,CAAC"}
@@ -0,0 +1,9 @@
1
+ export declare const AUTH_TEMPLATE_TYPES: readonly ["sign_in", "sign_up", "forgot_password", "reset_password"];
2
+ export declare const LANDING_TEMPLATE_TYPES: readonly ["landing-hero-cta", "landing-hero-features", "landing-hero-pricing", "landing-minimal"];
3
+ export declare const NAV_TEMPLATE_TYPES: readonly ["top-nav", "sidebar-nav", "bottom-nav", "drawer-nav"];
4
+ export declare const STANDARD_TEMPLATE_TYPES: readonly ["dashboard", "profile", "blog-post", "contact", "cart", "checkout", "wallet", "invoice", "chat", "messages", "feed", "map", "search", "settings", "gallery", "kanban", "calendar", "otp_request", "otp_entry", "custom"];
5
+ export type AuthTemplateType = typeof AUTH_TEMPLATE_TYPES[number];
6
+ export type LandingTemplateType = typeof LANDING_TEMPLATE_TYPES[number];
7
+ export type NavTemplateType = typeof NAV_TEMPLATE_TYPES[number];
8
+ export type StandardTemplateType = typeof STANDARD_TEMPLATE_TYPES[number];
9
+ //# sourceMappingURL=page-template-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-template-types.d.ts","sourceRoot":"","sources":["../../src/schema/page-template-types.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,mBAAmB,sEAKtB,CAAA;AAEV,eAAO,MAAM,sBAAsB,mGAKzB,CAAA;AAEV,eAAO,MAAM,kBAAkB,iEAKrB,CAAA;AAOV,eAAO,MAAM,uBAAuB,oOAqB1B,CAAA;AAEV,MAAM,MAAM,gBAAgB,GAAO,OAAO,mBAAmB,CAAC,MAAM,CAAC,CAAA;AACrE,MAAM,MAAM,mBAAmB,GAAI,OAAO,sBAAsB,CAAC,MAAM,CAAC,CAAA;AACxE,MAAM,MAAM,eAAe,GAAQ,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAA;AACpE,MAAM,MAAM,oBAAoB,GAAG,OAAO,uBAAuB,CAAC,MAAM,CAAC,CAAA"}
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ // File: underpeaks_codegen/packages/generator-core/src/schema/page-template-types.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.STANDARD_TEMPLATE_TYPES = exports.NAV_TEMPLATE_TYPES = exports.LANDING_TEMPLATE_TYPES = exports.AUTH_TEMPLATE_TYPES = void 0;
5
+ // Single source of truth for how a page's template_type is classified
6
+ // during generation. Both generator-flutter and generator-nextjs import
7
+ // from here instead of maintaining their own copies — a new template
8
+ // type only needs to be added in this one file.
9
+ exports.AUTH_TEMPLATE_TYPES = [
10
+ 'sign_in',
11
+ 'sign_up',
12
+ 'forgot_password',
13
+ 'reset_password',
14
+ ];
15
+ exports.LANDING_TEMPLATE_TYPES = [
16
+ 'landing-hero-cta',
17
+ 'landing-hero-features',
18
+ 'landing-hero-pricing',
19
+ 'landing-minimal',
20
+ ];
21
+ exports.NAV_TEMPLATE_TYPES = [
22
+ 'top-nav',
23
+ 'sidebar-nav',
24
+ 'bottom-nav',
25
+ 'drawer-nav',
26
+ ];
27
+ // Page types with a dedicated generator template in at least one
28
+ // platform (Flutter has a 1:1 function per type below; Next.js currently
29
+ // routes all of these through a single generic fallback template —
30
+ // see generateRemainingNextjsPage — pending dedicated Next.js templates
31
+ // for each, tracked separately).
32
+ exports.STANDARD_TEMPLATE_TYPES = [
33
+ 'dashboard',
34
+ 'profile',
35
+ 'blog-post',
36
+ 'contact',
37
+ 'cart',
38
+ 'checkout',
39
+ 'wallet',
40
+ 'invoice',
41
+ 'chat',
42
+ 'messages',
43
+ 'feed',
44
+ 'map',
45
+ 'search',
46
+ 'settings',
47
+ 'gallery',
48
+ 'kanban',
49
+ 'calendar',
50
+ 'otp_request',
51
+ 'otp_entry',
52
+ 'custom',
53
+ ];
54
+ //# sourceMappingURL=page-template-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-template-types.js","sourceRoot":"","sources":["../../src/schema/page-template-types.ts"],"names":[],"mappings":";AAAA,qFAAqF;;;AAErF,sEAAsE;AACtE,wEAAwE;AACxE,qEAAqE;AACrE,gDAAgD;AAEnC,QAAA,mBAAmB,GAAG;IACjC,SAAS;IACT,SAAS;IACT,iBAAiB;IACjB,gBAAgB;CACR,CAAA;AAEG,QAAA,sBAAsB,GAAG;IACpC,kBAAkB;IAClB,uBAAuB;IACvB,sBAAsB;IACtB,iBAAiB;CACT,CAAA;AAEG,QAAA,kBAAkB,GAAG;IAChC,SAAS;IACT,aAAa;IACb,YAAY;IACZ,YAAY;CACJ,CAAA;AAEV,iEAAiE;AACjE,yEAAyE;AACzE,mEAAmE;AACnE,wEAAwE;AACxE,iCAAiC;AACpB,QAAA,uBAAuB,GAAG;IACrC,WAAW;IACX,SAAS;IACT,WAAW;IACX,SAAS;IACT,MAAM;IACN,UAAU;IACV,QAAQ;IACR,SAAS;IACT,MAAM;IACN,UAAU;IACV,MAAM;IACN,KAAK;IACL,QAAQ;IACR,UAAU;IACV,SAAS;IACT,QAAQ;IACR,UAAU;IACV,aAAa;IACb,WAAW;IACX,QAAQ;CACA,CAAA"}
@@ -2,6 +2,7 @@ export interface ColumnDef {
2
2
  name: string;
3
3
  type: string;
4
4
  ui_type?: string;
5
+ display_ui_type?: string;
5
6
  is_primary?: boolean;
6
7
  nullable?: boolean;
7
8
  unique?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/schema/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/schema/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@underpeaks/generator-core",
3
- "version": "1.0.28",
3
+ "version": "1.0.31",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "files": [
@@ -1 +0,0 @@
1
- //# sourceMappingURL=parser.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/routes/parser.ts"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- "use strict";
2
- //# sourceMappingURL=parser.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/routes/parser.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- //# sourceMappingURL=mapper.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mapper.d.ts","sourceRoot":"","sources":["../../src/theme/mapper.ts"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- "use strict";
2
- //# sourceMappingURL=mapper.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mapper.js","sourceRoot":"","sources":["../../src/theme/mapper.ts"],"names":[],"mappings":""}