@metaobjectsdev/codegen-ts-react 0.24.5 → 0.25.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.
@@ -6,8 +6,12 @@ export interface FormFileOpts {
6
6
  }
7
7
  /**
8
8
  * Forms are opt-in: a user must add `formFile()` to config.generators.
9
- * Per-entity opt-out via `@emitForm: false` is honored.
10
9
  * .tsx files are not piped through formatTs (Biome only handles .ts here).
10
+ *
11
+ * Decide per generator what you consume: wire only the generators whose output you
12
+ * actually import, and narrow this one with its `filter` option. There is no `@emit*`
13
+ * metadata attribute — those were never registered vocabulary, so `meta verify` rejects
14
+ * them (ERR_UNKNOWN_ATTR).
11
15
  */
12
16
  export declare const formFile: GeneratorFactory<FormFileOpts>;
13
17
  //# sourceMappingURL=form-file.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"form-file.d.ts","sourceRoot":"","sources":["../src/form-file.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAE3D,OAAO,EAA6B,KAAK,gBAAgB,EAA6G,MAAM,4BAA4B,CAAC;AAGzM,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,OAAO,CAAC;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,eAAO,MAAM,QAAQ,EA2ChB,gBAAgB,CAAC,YAAY,CAAC,CAAC"}
1
+ {"version":3,"file":"form-file.d.ts","sourceRoot":"","sources":["../src/form-file.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAA6B,KAAK,gBAAgB,EAA2D,MAAM,4BAA4B,CAAC;AAGvJ,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,OAAO,CAAC;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,QAAQ,EAoChB,gBAAgB,CAAC,YAAY,CAAC,CAAC"}
package/dist/form-file.js CHANGED
@@ -1,10 +1,13 @@
1
- import { OBJECT_ATTR_DISCRIMINATOR } from "@metaobjectsdev/metadata";
2
- import { perEntity, entityOutputPath, servesWriteApi, isProjection, isTphSubtype, CODEGEN_ATTR_EMIT_FORM, withClientDirective } from "@metaobjectsdev/codegen-ts";
1
+ import { perEntity, entityOutputPath, hasGeneratedForm, withClientDirective } from "@metaobjectsdev/codegen-ts";
3
2
  import { renderFormFile } from "./templates/form-file.js";
4
3
  /**
5
4
  * Forms are opt-in: a user must add `formFile()` to config.generators.
6
- * Per-entity opt-out via `@emitForm: false` is honored.
7
5
  * .tsx files are not piped through formatTs (Biome only handles .ts here).
6
+ *
7
+ * Decide per generator what you consume: wire only the generators whose output you
8
+ * actually import, and narrow this one with its `filter` option. There is no `@emit*`
9
+ * metadata attribute — those were never registered vocabulary, so `meta verify` rejects
10
+ * them (ERR_UNKNOWN_ATTR).
8
11
  */
9
12
  export const formFile = function formFile(opts) {
10
13
  const userFilter = opts?.filter ?? (() => true);
@@ -12,29 +15,18 @@ export const formFile = function formFile(opts) {
12
15
  name: "form-file",
13
16
  // Always set: AND-composes the framework write-artifact guard
14
17
  // (skips abstract types — no instance — and read-only projections —
15
- // instantiable for read, never for write), the metadata opt-out, and
16
- // the optional user filter.
18
+ // instantiable for read, never for write) with the optional user filter.
17
19
  // FR-017 Tier 3: forms are ALWAYS per-subtype. The discriminator base gets
18
20
  // NO form (you can't create an abstract base), but each concrete subtype
19
21
  // does — even though it has no own writable source (it inherits the base's).
20
22
  filter: (e) => {
21
- // ADR-0039: resolving a concrete entity may inherit @emitForm via extends.
22
- if (e.attr(CODEGEN_ATTR_EMIT_FORM) === false)
23
- return false;
24
- if (!userFilter(e))
25
- return false;
26
- if (isTphSubtype(e))
27
- return true; // per-subtype form
28
- // A discriminator base is never form-rendered directly.
29
- // ADR-0039: own — @discriminator identifies a TPH base level (read own so a
30
- // subtype isn't mistaken for a base); e is already known not to be a subtype.
31
- if (typeof e.ownAttr(OBJECT_ATTR_DISCRIMINATOR) === "string")
32
- return false;
33
- // A form is a client of a WRITE endpoint. Ask whether one exists, not where the
34
- // data is stored — see api-surface.ts. `!isProjection` stays explicit here: a
35
- // read-only view is a UI-tier exclusion (nothing to submit), distinct from
36
- // whether write endpoints exist at all.
37
- return servesWriteApi(e) && !isProjection(e);
23
+ // `hasGeneratedForm` (api-surface.ts) holds the whole rule: per-subtype form for a
24
+ // TPH subtype, NO form for a discriminator base (you cannot create a base, and its
25
+ // polymorphic mount is read-only by construction), and a write endpoint that is not
26
+ // a read-only projection otherwise. It is shared with `agent/ui.md`, which has to
27
+ // say "there is deliberately no form here" for exactly the set skipped here — asking
28
+ // `servesWriteApi` there instead announced a form for every discriminator base.
29
+ return userFilter(e) && hasGeneratedForm(e);
38
30
  },
39
31
  generate: perEntity((entity, ctx) => {
40
32
  if (!ctx.renderContext) {
@@ -1 +1 @@
1
- {"version":3,"file":"form-file.js","sourceRoot":"","sources":["../src/form-file.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,SAAS,EAAyC,gBAAgB,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACzM,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAO1D;;;;GAIG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,SAAS,QAAQ,CAAC,IAAmB;IAC3D,MAAM,UAAU,GAAG,IAAI,EAAE,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,SAAS,GAAc;QAC3B,IAAI,EAAE,WAAW;QACjB,8DAA8D;QAC9D,oEAAoE;QACpE,qEAAqE;QACrE,4BAA4B;QAC5B,2EAA2E;QAC3E,yEAAyE;QACzE,6EAA6E;QAC7E,MAAM,EAAE,CAAC,CAAa,EAAE,EAAE;YACxB,6EAA6E;YAC7E,IAAI,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,KAAK,KAAK;gBAAE,OAAO,KAAK,CAAC;YAC3D,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;gBAAE,OAAO,KAAK,CAAC;YACjC,IAAI,YAAY,CAAC,CAAC,CAAC;gBAAE,OAAO,IAAI,CAAC,CAAC,mBAAmB;YACrD,wDAAwD;YACxD,4EAA4E;YAC5E,8EAA8E;YAC9E,IAAI,OAAO,CAAC,CAAC,OAAO,CAAC,yBAAyB,CAAC,KAAK,QAAQ;gBAAE,OAAO,KAAK,CAAC;YAC3E,gFAAgF;YAChF,8EAA8E;YAC9E,2EAA2E;YAC3E,wCAAwC;YACxC,OAAO,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC;QACD,QAAQ,EAAE,SAAS,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;YAClC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;gBACvB,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;YAC/E,CAAC;YACD,OAAO;gBACL,IAAI,EAAE,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,IAAI,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,IAAI,WAAW,CAAC;gBACpG,OAAO,EAAE,mBAAmB,CAC1B,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC,aAAa,CAAC,EACzC,GAAG,CAAC,aAAa,CAAC,eAAe,CAClC;aACF,CAAC;QACJ,CAAC,CAAC;KACH,CAAC;IACF,IAAI,IAAI,EAAE,MAAM,EAAE,CAAC;QACjB,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IACjC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAmC,CAAC"}
1
+ {"version":3,"file":"form-file.js","sourceRoot":"","sources":["../src/form-file.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAyC,gBAAgB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACvJ,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAO1D;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,SAAS,QAAQ,CAAC,IAAmB;IAC3D,MAAM,UAAU,GAAG,IAAI,EAAE,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,SAAS,GAAc;QAC3B,IAAI,EAAE,WAAW;QACjB,8DAA8D;QAC9D,oEAAoE;QACpE,yEAAyE;QACzE,2EAA2E;QAC3E,yEAAyE;QACzE,6EAA6E;QAC7E,MAAM,EAAE,CAAC,CAAa,EAAE,EAAE;YACxB,mFAAmF;YACnF,mFAAmF;YACnF,oFAAoF;YACpF,kFAAkF;YAClF,qFAAqF;YACrF,gFAAgF;YAChF,OAAO,UAAU,CAAC,CAAC,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC;QAC9C,CAAC;QACD,QAAQ,EAAE,SAAS,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;YAClC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;gBACvB,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;YAC/E,CAAC;YACD,OAAO;gBACL,IAAI,EAAE,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,IAAI,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,IAAI,WAAW,CAAC;gBACpG,OAAO,EAAE,mBAAmB,CAC1B,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC,aAAa,CAAC,EACzC,GAAG,CAAC,aAAa,CAAC,eAAe,CAClC;aACF,CAAC;QACJ,CAAC,CAAC;KACH,CAAC;IACF,IAAI,IAAI,EAAE,MAAM,EAAE,CAAC;QACjB,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IACjC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAmC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"form-file.d.ts","sourceRoot":"","sources":["../../src/templates/form-file.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAa,UAAU,EAA0B,MAAM,0BAA0B,CAAC;AAiCzF,OAAO,EAAE,KAAK,aAAa,EAAgE,MAAM,4BAA4B,CAAC;AA8Q9H,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,aAAa,GAAG,MAAM,CA4Q7E"}
1
+ {"version":3,"file":"form-file.d.ts","sourceRoot":"","sources":["../../src/templates/form-file.ts"],"names":[],"mappings":"AA2BA,OAAO,EAAa,UAAU,EAAY,MAAM,0BAA0B,CAAC;AAgC3E,OAAO,EACL,KAAK,aAAa,EAQnB,MAAM,4BAA4B,CAAC;AAoQpC,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,aAAa,GAAG,MAAM,CA+Q7E"}
@@ -17,12 +17,16 @@
17
17
  // - Fields with @formExclude: true on the metadata
18
18
  // - Fields auto-defaulted to CURRENT_TIMESTAMP at the DB
19
19
  //
20
- // Form generation is OPT-IN per entity via `@emitForm: true` on the
21
- // object metadata. Default off. Most projects don't need stock forms.
20
+ // Form generation is OPT-IN at PROJECT level: add `formFile()` to `generators`
21
+ // in metaobjects.config.ts. Most projects don't need stock forms. Narrow it to
22
+ // a subset with `formFile({ filter })`. There is no `@emitForm` metadata
23
+ // attribute — it was never registered vocabulary, so `meta verify` rejects it
24
+ // (ERR_UNKNOWN_ATTR); the doc line here used to claim it turned generation ON,
25
+ // while the filter beside it read it as an opt-OUT. Neither is true now.
22
26
  import { code, imp } from "ts-poet";
23
- import { MetaField, MetaObject, MetaView, stripPackage } from "@metaobjectsdev/metadata";
24
- import { IDENTITY_SUBTYPE_PRIMARY, IDENTITY_ATTR_FIELDS, FIELD_ATTR_DEFAULT, FIELD_SUBTYPE_OBJECT, FIELD_ATTR_OBJECT_REF, FIELD_SUBTYPE_INT, FIELD_SUBTYPE_LONG, FIELD_SUBTYPE_DOUBLE, FIELD_SUBTYPE_FLOAT, FIELD_SUBTYPE_DECIMAL, FIELD_SUBTYPE_CURRENCY, FIELD_SUBTYPE_BOOLEAN, FIELD_SUBTYPE_DATE, FIELD_SUBTYPE_TIME, FIELD_SUBTYPE_TIMESTAMP, FIELD_ATTR_FORM_EXCLUDE, FIELD_ATTR_VALUES, FIELD_ATTR_REQUIRED, FIELD_SUBTYPE_ENUM, VIEW_SUBTYPE_TEXTAREA, VIEW_SUBTYPE_DROPDOWN, VIEW_SUBTYPE_CHECKBOX, VIEW_SUBTYPE_RADIO, VIEW_SUBTYPE_IMAGE, VIEW_TEXTAREA_ATTR_ROWS, VIEW_IMAGE_ATTR_ASPECT_RATIO, VIEW_IMAGE_ATTR_MAX_EDGE, VIEW_IMAGE_ATTR_STORE, VIEW_IMAGE_ATTR_ACCEPT, VIEW_IMAGE_ATTR_MAX_BYTES, } from "@metaobjectsdev/metadata";
25
- import { entityModuleSpecifier, GENERATED_HEADER, tphDiscriminatorPin } from "@metaobjectsdev/codegen-ts";
27
+ import { MetaField, MetaObject, MetaView } from "@metaobjectsdev/metadata";
28
+ import { IDENTITY_SUBTYPE_PRIMARY, IDENTITY_ATTR_FIELDS, FIELD_ATTR_DEFAULT, FIELD_SUBTYPE_OBJECT, FIELD_SUBTYPE_INT, FIELD_SUBTYPE_LONG, FIELD_SUBTYPE_DOUBLE, FIELD_SUBTYPE_FLOAT, FIELD_SUBTYPE_DECIMAL, FIELD_SUBTYPE_CURRENCY, FIELD_SUBTYPE_BOOLEAN, FIELD_SUBTYPE_DATE, FIELD_SUBTYPE_TIME, FIELD_SUBTYPE_TIMESTAMP, FIELD_ATTR_FORM_EXCLUDE, FIELD_ATTR_VALUES, FIELD_ATTR_REQUIRED, FIELD_SUBTYPE_ENUM, VIEW_SUBTYPE_TEXTAREA, VIEW_SUBTYPE_DROPDOWN, VIEW_SUBTYPE_CHECKBOX, VIEW_SUBTYPE_RADIO, VIEW_SUBTYPE_IMAGE, VIEW_TEXTAREA_ATTR_ROWS, VIEW_IMAGE_ATTR_ASPECT_RATIO, VIEW_IMAGE_ATTR_MAX_EDGE, VIEW_IMAGE_ATTR_STORE, VIEW_IMAGE_ATTR_ACCEPT, VIEW_IMAGE_ATTR_MAX_BYTES, } from "@metaobjectsdev/metadata";
29
+ import { entityModuleSpecifier, GENERATED_HEADER, humanize, tphDiscriminatorPin, valueObjectFor, viewForContext, VIEW_CONTEXT_FORM, } from "@metaobjectsdev/codegen-ts";
26
30
  function primaryFieldNames(entity) {
27
31
  const set = new Set();
28
32
  // identities() returns effective identities, so inherited identities (from extends:/super:) are included.
@@ -75,25 +79,13 @@ function visibleFields(entity, discField) {
75
79
  /** Max recursion depth for nested value objects — a backstop alongside the
76
80
  * per-branch visited-set cycle guard. */
77
81
  const MAX_VO_DEPTH = 5;
78
- /** Resolve a `field.object`'s `@objectRef` to the referenced value object from
79
- * the loaded root. Mirrors the resolution the Zod / inferred-type templates use
80
- * (read `@objectRef`, strip the package, look the bare name up on the root). */
82
+ /** Resolve a `field.object`'s `@objectRef` to the referenced value object from the loaded
83
+ * root `valueObjectFor`, in `@metaobjectsdev/codegen-ts`, because `agent/ui.md` has to
84
+ * ask the SAME question to document what this generator renders. When the two answered
85
+ * separately the page printed the field's view kind (`text`) as the control for a field
86
+ * this generator emits as a nested sub-form and no input at all. */
81
87
  function resolveValueObject(field, ctx) {
82
- if (field.subType !== FIELD_SUBTYPE_OBJECT)
83
- return undefined;
84
- const ref = field.attr(FIELD_ATTR_OBJECT_REF);
85
- if (typeof ref !== "string" || ref.length === 0)
86
- return undefined;
87
- const base = stripPackage(ref);
88
- return ctx.loadedRoot.objects().find((o) => o.name === base);
89
- }
90
- /** camelCase / PascalCase → human label ("llmConfig" → "Llm Config"). */
91
- function humanize(s) {
92
- return s
93
- .replace(/([a-z])([A-Z])/g, "$1 $2")
94
- .replace(/_/g, " ")
95
- .replace(/\b\w/g, (c) => c.toUpperCase())
96
- .trim();
88
+ return valueObjectFor(field, ctx.loadedRoot);
97
89
  }
98
90
  /** A real HTML <input type=...> for a scalar field subtype, or undefined (text). */
99
91
  function htmlTypeForSubType(subType) {
@@ -227,8 +219,8 @@ ${inner.join("\n")}
227
219
  /** The view kind that drives control selection: an explicit view child wins;
228
220
  * an enum with no view defaults to a dropdown; otherwise null (typed <input>).
229
221
  * Takes the already-resolved view (callers that also need view attrs, like
230
- * the textarea `@rows` lookup, fetch it once via `field.views()[0]` and
231
- * pass it through rather than re-deriving it here). */
222
+ * the textarea `@rows` lookup, fetch it once via `viewForContext(field,
223
+ * VIEW_CONTEXT_FORM)` and pass it through rather than re-deriving it here). */
232
224
  function viewKindFor(field, view) {
233
225
  if (view !== undefined)
234
226
  return view.subType;
@@ -263,7 +255,8 @@ function blankableOptionalFields(fields) {
263
255
  .filter((f) => f.attr(FIELD_ATTR_REQUIRED) !== true)
264
256
  .filter((f) => f.subType !== FIELD_SUBTYPE_OBJECT && !f.resolvedIsArray())
265
257
  .filter((f) => {
266
- const kind = viewKindFor(f, f.views()[0]); // resolving accessor (ADR-0039)
258
+ // #356 + ADR-0039: the view declared for the FORM, resolving through extends.
259
+ const kind = viewKindFor(f, viewForContext(f, VIEW_CONTEXT_FORM));
267
260
  return kind !== VIEW_SUBTYPE_CHECKBOX && kind !== VIEW_SUBTYPE_IMAGE;
268
261
  })
269
262
  .map((f) => f.name);
@@ -371,7 +364,8 @@ ${control}
371
364
  // scalarBlock's typed <input> bound via `form.input.<field>`.
372
365
  const fieldControlFor = (field) => {
373
366
  const name = field.name;
374
- const view = field.views()[0]; // resolving accessor (ADR-0039)
367
+ // #356 + ADR-0039: the view declared for the FORM, resolving through extends.
368
+ const view = viewForContext(field, VIEW_CONTEXT_FORM);
375
369
  const kind = viewKindFor(field, view);
376
370
  // Enum member symbols are validated to /^[A-Za-z_][A-Za-z0-9_]*$/, so raw
377
371
  // interpolation into JSX attribute/text positions is safe (no escaping).
@@ -446,7 +440,7 @@ ${control}
446
440
  // Only pull in Controller + ImageUpload when a view.image field needs them —
447
441
  // a native <input> can't drive a file-upload control's value/onChange
448
442
  // contract, so image fields are wrapped in react-hook-form's <Controller>.
449
- const hasImage = fields.some((f) => f.views()[0]?.subType === VIEW_SUBTYPE_IMAGE);
443
+ const hasImage = fields.some((f) => viewForContext(f, VIEW_CONTEXT_FORM)?.subType === VIEW_SUBTYPE_IMAGE);
450
444
  const imageImports = hasImage
451
445
  ? `import { Controller } from "react-hook-form";\nimport { ImageUpload } from "@metaobjectsdev/react";\n`
452
446
  : "";
@@ -1 +1 @@
1
- {"version":3,"file":"form-file.js","sourceRoot":"","sources":["../../src/templates/form-file.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"form-file.js","sourceRoot":"","sources":["../../src/templates/form-file.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@metaobjectsdev/codegen-ts-react",
3
- "version": "0.24.5",
3
+ "version": "0.25.0",
4
4
  "description": "React codegen for metaobjects — emits <Entity>.form.tsx files using react-hook-form and @metaobjectsdev/react helpers.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -45,8 +45,8 @@
45
45
  "access": "public"
46
46
  },
47
47
  "dependencies": {
48
- "@metaobjectsdev/metadata": "0.24.5",
49
- "@metaobjectsdev/codegen-ts": "0.24.5",
48
+ "@metaobjectsdev/metadata": "0.25.0",
49
+ "@metaobjectsdev/codegen-ts": "0.25.0",
50
50
  "ts-poet": "^6.10.0"
51
51
  },
52
52
  "peerDependencies": {
package/src/form-file.ts CHANGED
@@ -1,6 +1,5 @@
1
1
  import type { MetaObject } from "@metaobjectsdev/metadata";
2
- import { OBJECT_ATTR_DISCRIMINATOR } from "@metaobjectsdev/metadata";
3
- import { perEntity, type Generator, type GeneratorFactory, entityOutputPath, servesWriteApi, isProjection, isTphSubtype, CODEGEN_ATTR_EMIT_FORM, withClientDirective } from "@metaobjectsdev/codegen-ts";
2
+ import { perEntity, type Generator, type GeneratorFactory, entityOutputPath, hasGeneratedForm, withClientDirective } from "@metaobjectsdev/codegen-ts";
4
3
  import { renderFormFile } from "./templates/form-file.js";
5
4
 
6
5
  export interface FormFileOpts {
@@ -10,8 +9,12 @@ export interface FormFileOpts {
10
9
 
11
10
  /**
12
11
  * Forms are opt-in: a user must add `formFile()` to config.generators.
13
- * Per-entity opt-out via `@emitForm: false` is honored.
14
12
  * .tsx files are not piped through formatTs (Biome only handles .ts here).
13
+ *
14
+ * Decide per generator what you consume: wire only the generators whose output you
15
+ * actually import, and narrow this one with its `filter` option. There is no `@emit*`
16
+ * metadata attribute — those were never registered vocabulary, so `meta verify` rejects
17
+ * them (ERR_UNKNOWN_ATTR).
15
18
  */
16
19
  export const formFile = function formFile(opts?: FormFileOpts): Generator {
17
20
  const userFilter = opts?.filter ?? (() => true);
@@ -19,25 +22,18 @@ export const formFile = function formFile(opts?: FormFileOpts): Generator {
19
22
  name: "form-file",
20
23
  // Always set: AND-composes the framework write-artifact guard
21
24
  // (skips abstract types — no instance — and read-only projections —
22
- // instantiable for read, never for write), the metadata opt-out, and
23
- // the optional user filter.
25
+ // instantiable for read, never for write) with the optional user filter.
24
26
  // FR-017 Tier 3: forms are ALWAYS per-subtype. The discriminator base gets
25
27
  // NO form (you can't create an abstract base), but each concrete subtype
26
28
  // does — even though it has no own writable source (it inherits the base's).
27
29
  filter: (e: MetaObject) => {
28
- // ADR-0039: resolving a concrete entity may inherit @emitForm via extends.
29
- if (e.attr(CODEGEN_ATTR_EMIT_FORM) === false) return false;
30
- if (!userFilter(e)) return false;
31
- if (isTphSubtype(e)) return true; // per-subtype form
32
- // A discriminator base is never form-rendered directly.
33
- // ADR-0039: own @discriminator identifies a TPH base level (read own so a
34
- // subtype isn't mistaken for a base); e is already known not to be a subtype.
35
- if (typeof e.ownAttr(OBJECT_ATTR_DISCRIMINATOR) === "string") return false;
36
- // A form is a client of a WRITE endpoint. Ask whether one exists, not where the
37
- // data is stored — see api-surface.ts. `!isProjection` stays explicit here: a
38
- // read-only view is a UI-tier exclusion (nothing to submit), distinct from
39
- // whether write endpoints exist at all.
40
- return servesWriteApi(e) && !isProjection(e);
30
+ // `hasGeneratedForm` (api-surface.ts) holds the whole rule: per-subtype form for a
31
+ // TPH subtype, NO form for a discriminator base (you cannot create a base, and its
32
+ // polymorphic mount is read-only by construction), and a write endpoint that is not
33
+ // a read-only projection otherwise. It is shared with `agent/ui.md`, which has to
34
+ // say "there is deliberately no form here" for exactly the set skipped here — asking
35
+ // `servesWriteApi` there instead announced a form for every discriminator base.
36
+ return userFilter(e) && hasGeneratedForm(e);
41
37
  },
42
38
  generate: perEntity((entity, ctx) => {
43
39
  if (!ctx.renderContext) {
@@ -18,16 +18,12 @@
18
18
  // composes-with: entity.ts (imports the schemas the form validates against).
19
19
 
20
20
  import type { MetaObject } from "@metaobjectsdev/metadata";
21
- import { OBJECT_ATTR_DISCRIMINATOR } from "@metaobjectsdev/metadata";
22
21
  import {
23
22
  perEntity,
24
23
  type Generator,
25
24
  type GeneratorFactory,
26
25
  entityOutputPath,
27
- servesWriteApi,
28
- isProjection,
29
- isTphSubtype,
30
- CODEGEN_ATTR_EMIT_FORM,
26
+ hasGeneratedForm,
31
27
  withClientDirective,
32
28
  } from "@metaobjectsdev/codegen-ts";
33
29
  import { renderFormFile } from "@metaobjectsdev/codegen-ts-react";
@@ -39,8 +35,12 @@ export interface FormFileOpts {
39
35
 
40
36
  /**
41
37
  * Forms are opt-in: a user must add `formFile()` to config.generators.
42
- * Per-entity opt-out via `@emitForm: false` is honored.
43
38
  * .tsx files are not piped through formatTs (Biome only handles .ts here).
39
+ *
40
+ * Decide per generator what you consume: wire only the generators whose output you
41
+ * actually import, and narrow this one with its `filter` option. There is no `@emit*`
42
+ * metadata attribute — those were never registered vocabulary, so `meta verify` rejects
43
+ * them (ERR_UNKNOWN_ATTR).
44
44
  */
45
45
  export const formFile = function formFile(opts?: FormFileOpts): Generator {
46
46
  const userFilter = opts?.filter ?? (() => true);
@@ -48,25 +48,18 @@ export const formFile = function formFile(opts?: FormFileOpts): Generator {
48
48
  name: "form-file",
49
49
  // Always set: AND-composes the framework write-artifact guard
50
50
  // (skips abstract types — no instance — and read-only projections —
51
- // instantiable for read, never for write), the metadata opt-out, and
52
- // the optional user filter.
51
+ // instantiable for read, never for write) with the optional user filter.
53
52
  // FR-017 Tier 3: forms are ALWAYS per-subtype. The discriminator base gets
54
53
  // NO form (you can't create an abstract base), but each concrete subtype
55
54
  // does — even though it has no own writable source (it inherits the base's).
56
55
  filter: (e: MetaObject) => {
57
- // ADR-0039: resolving a concrete entity may inherit @emitForm via extends.
58
- if (e.attr(CODEGEN_ATTR_EMIT_FORM) === false) return false;
59
- if (!userFilter(e)) return false;
60
- if (isTphSubtype(e)) return true; // per-subtype form
61
- // A discriminator base is never form-rendered directly.
62
- // ADR-0039: own @discriminator identifies a TPH base level (read own so a
63
- // subtype isn't mistaken for a base); e is already known not to be a subtype.
64
- if (typeof e.ownAttr(OBJECT_ATTR_DISCRIMINATOR) === "string") return false;
65
- // A form is a client of a WRITE endpoint. Ask whether one exists, not where the
66
- // data is stored — see api-surface.ts. `!isProjection` stays explicit here: a
67
- // read-only view is a UI-tier exclusion (nothing to submit), distinct from
68
- // whether write endpoints exist at all.
69
- return servesWriteApi(e) && !isProjection(e);
56
+ // `hasGeneratedForm` (api-surface.ts) holds the whole rule: per-subtype form for a
57
+ // TPH subtype, NO form for a discriminator base (you cannot create a base, and its
58
+ // polymorphic mount is read-only by construction), and a write endpoint that is not
59
+ // a read-only projection otherwise. It is shared with `agent/ui.md`, which has to
60
+ // say "there is deliberately no form here" for exactly the set skipped here — asking
61
+ // `servesWriteApi` there instead announced a form for every discriminator base.
62
+ return userFilter(e) && hasGeneratedForm(e);
70
63
  },
71
64
  generate: perEntity((entity, ctx) => {
72
65
  if (!ctx.renderContext) {
@@ -17,17 +17,20 @@
17
17
  // - Fields with @formExclude: true on the metadata
18
18
  // - Fields auto-defaulted to CURRENT_TIMESTAMP at the DB
19
19
  //
20
- // Form generation is OPT-IN per entity via `@emitForm: true` on the
21
- // object metadata. Default off. Most projects don't need stock forms.
20
+ // Form generation is OPT-IN at PROJECT level: add `formFile()` to `generators`
21
+ // in metaobjects.config.ts. Most projects don't need stock forms. Narrow it to
22
+ // a subset with `formFile({ filter })`. There is no `@emitForm` metadata
23
+ // attribute — it was never registered vocabulary, so `meta verify` rejects it
24
+ // (ERR_UNKNOWN_ATTR); the doc line here used to claim it turned generation ON,
25
+ // while the filter beside it read it as an opt-OUT. Neither is true now.
22
26
 
23
27
  import { code, imp } from "ts-poet";
24
- import { MetaField, MetaObject, MetaView, stripPackage } from "@metaobjectsdev/metadata";
28
+ import { MetaField, MetaObject, MetaView } from "@metaobjectsdev/metadata";
25
29
  import {
26
30
  IDENTITY_SUBTYPE_PRIMARY,
27
31
  IDENTITY_ATTR_FIELDS,
28
32
  FIELD_ATTR_DEFAULT,
29
33
  FIELD_SUBTYPE_OBJECT,
30
- FIELD_ATTR_OBJECT_REF,
31
34
  FIELD_SUBTYPE_INT,
32
35
  FIELD_SUBTYPE_LONG,
33
36
  FIELD_SUBTYPE_DOUBLE,
@@ -54,7 +57,16 @@ import {
54
57
  VIEW_IMAGE_ATTR_ACCEPT,
55
58
  VIEW_IMAGE_ATTR_MAX_BYTES,
56
59
  } from "@metaobjectsdev/metadata";
57
- import { type RenderContext, entityModuleSpecifier, GENERATED_HEADER, tphDiscriminatorPin } from "@metaobjectsdev/codegen-ts";
60
+ import {
61
+ type RenderContext,
62
+ entityModuleSpecifier,
63
+ GENERATED_HEADER,
64
+ humanize,
65
+ tphDiscriminatorPin,
66
+ valueObjectFor,
67
+ viewForContext,
68
+ VIEW_CONTEXT_FORM,
69
+ } from "@metaobjectsdev/codegen-ts";
58
70
 
59
71
  function primaryFieldNames(entity: MetaObject): Set<string> {
60
72
  const set = new Set<string>();
@@ -105,24 +117,13 @@ function visibleFields(entity: MetaObject, discField?: string): MetaField[] {
105
117
  * per-branch visited-set cycle guard. */
106
118
  const MAX_VO_DEPTH = 5;
107
119
 
108
- /** Resolve a `field.object`'s `@objectRef` to the referenced value object from
109
- * the loaded root. Mirrors the resolution the Zod / inferred-type templates use
110
- * (read `@objectRef`, strip the package, look the bare name up on the root). */
120
+ /** Resolve a `field.object`'s `@objectRef` to the referenced value object from the loaded
121
+ * root `valueObjectFor`, in `@metaobjectsdev/codegen-ts`, because `agent/ui.md` has to
122
+ * ask the SAME question to document what this generator renders. When the two answered
123
+ * separately the page printed the field's view kind (`text`) as the control for a field
124
+ * this generator emits as a nested sub-form and no input at all. */
111
125
  function resolveValueObject(field: MetaField, ctx: RenderContext): MetaObject | undefined {
112
- if (field.subType !== FIELD_SUBTYPE_OBJECT) return undefined;
113
- const ref = field.attr(FIELD_ATTR_OBJECT_REF);
114
- if (typeof ref !== "string" || ref.length === 0) return undefined;
115
- const base = stripPackage(ref);
116
- return ctx.loadedRoot.objects().find((o) => o.name === base) as MetaObject | undefined;
117
- }
118
-
119
- /** camelCase / PascalCase → human label ("llmConfig" → "Llm Config"). */
120
- function humanize(s: string): string {
121
- return s
122
- .replace(/([a-z])([A-Z])/g, "$1 $2")
123
- .replace(/_/g, " ")
124
- .replace(/\b\w/g, (c) => c.toUpperCase())
125
- .trim();
126
+ return valueObjectFor(field, ctx.loadedRoot);
126
127
  }
127
128
 
128
129
  /** A real HTML <input type=...> for a scalar field subtype, or undefined (text). */
@@ -278,8 +279,8 @@ ${inner.join("\n")}
278
279
  /** The view kind that drives control selection: an explicit view child wins;
279
280
  * an enum with no view defaults to a dropdown; otherwise null (typed <input>).
280
281
  * Takes the already-resolved view (callers that also need view attrs, like
281
- * the textarea `@rows` lookup, fetch it once via `field.views()[0]` and
282
- * pass it through rather than re-deriving it here). */
282
+ * the textarea `@rows` lookup, fetch it once via `viewForContext(field,
283
+ * VIEW_CONTEXT_FORM)` and pass it through rather than re-deriving it here). */
283
284
  function viewKindFor(field: MetaField, view: MetaView | undefined): string | null {
284
285
  if (view !== undefined) return view.subType;
285
286
  if (field.subType === FIELD_SUBTYPE_ENUM) return VIEW_SUBTYPE_DROPDOWN;
@@ -314,7 +315,8 @@ function blankableOptionalFields(fields: readonly MetaField[]): string[] {
314
315
  .filter((f) => f.attr(FIELD_ATTR_REQUIRED) !== true)
315
316
  .filter((f) => f.subType !== FIELD_SUBTYPE_OBJECT && !f.resolvedIsArray())
316
317
  .filter((f) => {
317
- const kind = viewKindFor(f, f.views()[0]); // resolving accessor (ADR-0039)
318
+ // #356 + ADR-0039: the view declared for the FORM, resolving through extends.
319
+ const kind = viewKindFor(f, viewForContext(f, VIEW_CONTEXT_FORM));
318
320
  return kind !== VIEW_SUBTYPE_CHECKBOX && kind !== VIEW_SUBTYPE_IMAGE;
319
321
  })
320
322
  .map((f) => f.name);
@@ -436,7 +438,8 @@ ${control}
436
438
  // scalarBlock's typed <input> bound via `form.input.<field>`.
437
439
  const fieldControlFor = (field: MetaField): string => {
438
440
  const name = field.name;
439
- const view = field.views()[0]; // resolving accessor (ADR-0039)
441
+ // #356 + ADR-0039: the view declared for the FORM, resolving through extends.
442
+ const view = viewForContext(field, VIEW_CONTEXT_FORM);
440
443
  const kind = viewKindFor(field, view);
441
444
  // Enum member symbols are validated to /^[A-Za-z_][A-Za-z0-9_]*$/, so raw
442
445
  // interpolation into JSX attribute/text positions is safe (no escaping).
@@ -531,7 +534,9 @@ ${control}
531
534
  // Only pull in Controller + ImageUpload when a view.image field needs them —
532
535
  // a native <input> can't drive a file-upload control's value/onChange
533
536
  // contract, so image fields are wrapped in react-hook-form's <Controller>.
534
- const hasImage = fields.some((f) => f.views()[0]?.subType === VIEW_SUBTYPE_IMAGE);
537
+ const hasImage = fields.some(
538
+ (f) => viewForContext(f, VIEW_CONTEXT_FORM)?.subType === VIEW_SUBTYPE_IMAGE,
539
+ );
535
540
  const imageImports = hasImage
536
541
  ? `import { Controller } from "react-hook-form";\nimport { ImageUpload } from "@metaobjectsdev/react";\n`
537
542
  : "";