@effect-app/vue-components 4.0.0-beta.34 → 4.0.0-beta.37

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 (46) hide show
  1. package/dist/types/components/OmegaForm/OmegaFormStuff.d.ts +8 -3
  2. package/dist/types/components/OmegaForm/useOmegaForm.d.ts +1 -1
  3. package/dist/vue-components.es.js +8 -7
  4. package/dist/vue-components.es10.js +119 -119
  5. package/dist/vue-components.es11.js +2 -2
  6. package/dist/vue-components.es12.js +161 -139
  7. package/dist/vue-components.es16.js +11 -4
  8. package/dist/vue-components.es17.js +4 -11
  9. package/dist/vue-components.es18.js +11 -55
  10. package/dist/vue-components.es19.js +49 -48
  11. package/dist/vue-components.es2.js +15 -14
  12. package/dist/vue-components.es20.js +54 -6
  13. package/dist/vue-components.es21.js +5 -5
  14. package/dist/vue-components.es22.js +6 -3
  15. package/dist/vue-components.es23.js +3 -3
  16. package/dist/vue-components.es24.js +3 -2
  17. package/dist/vue-components.es25.js +1 -1
  18. package/dist/vue-components.es26.js +1 -1
  19. package/dist/vue-components.es27.js +1 -1
  20. package/dist/vue-components.es28.js +2 -17
  21. package/dist/vue-components.es29.js +16 -10
  22. package/dist/vue-components.es32.js +1 -1
  23. package/dist/vue-components.es33.js +1 -1
  24. package/dist/vue-components.es37.js +1 -1
  25. package/dist/vue-components.es41.js +23 -4
  26. package/dist/vue-components.es42.js +5 -23
  27. package/dist/vue-components.es43.js +21 -5
  28. package/dist/vue-components.es44.js +25 -16
  29. package/dist/vue-components.es45.js +15 -23
  30. package/dist/vue-components.es46.js +7 -17
  31. package/dist/vue-components.es47.js +5 -12
  32. package/dist/vue-components.es48.js +19 -5
  33. package/dist/vue-components.es49.js +9 -19
  34. package/dist/vue-components.es5.js +1 -1
  35. package/dist/vue-components.es50.js +31 -9
  36. package/dist/vue-components.es51.js +42 -25
  37. package/dist/vue-components.es52.js +16 -38
  38. package/dist/vue-components.es53.js +11 -26
  39. package/dist/vue-components.es54.js +4 -11
  40. package/dist/vue-components.es55.js +1 -1
  41. package/dist/vue-components.es57.js +1 -1
  42. package/dist/vue-components.es59.js +3 -3
  43. package/dist/vue-components.es60.js +1 -1
  44. package/package.json +3 -3
  45. package/src/components/OmegaForm/OmegaFormStuff.ts +75 -4
  46. package/src/components/OmegaForm/useOmegaForm.ts +5 -4
@@ -1,7 +1,21 @@
1
- var N;
2
- (function(E) {
3
- E[E.NONE = 0] = "NONE", E[E.SAMPLED = 1] = "SAMPLED";
4
- })(N || (N = {}));
1
+ import { INVALID_TRACEID as r, INVALID_SPANID as t } from "./vue-components.es49.js";
2
+ import { NonRecordingSpan as i } from "./vue-components.es50.js";
3
+ var a = /^([0-9a-f]{32})$/i, o = /^[0-9a-f]{16}$/i;
4
+ function I(n) {
5
+ return a.test(n) && n !== r;
6
+ }
7
+ function e(n) {
8
+ return o.test(n) && n !== t;
9
+ }
10
+ function A(n) {
11
+ return I(n.traceId) && e(n.spanId);
12
+ }
13
+ function D(n) {
14
+ return new i(n);
15
+ }
5
16
  export {
6
- N as TraceFlags
17
+ A as isSpanContextValid,
18
+ e as isValidSpanId,
19
+ I as isValidTraceId,
20
+ D as wrapSpanContext
7
21
  };
@@ -1,21 +1,11 @@
1
- import { INVALID_TRACEID as r, INVALID_SPANID as t } from "./vue-components.es50.js";
2
- import { NonRecordingSpan as i } from "./vue-components.es51.js";
3
- var a = /^([0-9a-f]{32})$/i, o = /^[0-9a-f]{16}$/i;
4
- function I(n) {
5
- return a.test(n) && n !== r;
6
- }
7
- function e(n) {
8
- return o.test(n) && n !== t;
9
- }
10
- function A(n) {
11
- return I(n.traceId) && e(n.spanId);
12
- }
13
- function D(n) {
14
- return new i(n);
15
- }
1
+ import { TraceFlags as I } from "./vue-components.es47.js";
2
+ var a = "0000000000000000", r = "00000000000000000000000000000000", A = {
3
+ traceId: r,
4
+ spanId: a,
5
+ traceFlags: I.NONE
6
+ };
16
7
  export {
17
- A as isSpanContextValid,
18
- e as isValidSpanId,
19
- I as isValidTraceId,
20
- D as wrapSpanContext
8
+ a as INVALID_SPANID,
9
+ A as INVALID_SPAN_CONTEXT,
10
+ r as INVALID_TRACEID
21
11
  };
@@ -1,6 +1,6 @@
1
1
  import { defineComponent as v, mergeModels as C, useModel as k, useSlots as V, computed as _, resolveComponent as g, createBlock as y, openBlock as B, unref as a, createSlots as E, withCtx as u, renderSlot as d, renderList as M, normalizeProps as S, guardReactiveProps as w } from "vue";
2
2
  import { useOnClose as L } from "./vue-components.es11.js";
3
- import { onMountedWithCleanup as h } from "./vue-components.es29.js";
3
+ import { onMountedWithCleanup as h } from "./vue-components.es16.js";
4
4
  const z = /* @__PURE__ */ v({
5
5
  __name: "Dialog",
6
6
  props: /* @__PURE__ */ C({
@@ -1,11 +1,33 @@
1
- import { TraceFlags as I } from "./vue-components.es48.js";
2
- var a = "0000000000000000", r = "00000000000000000000000000000000", A = {
3
- traceId: r,
4
- spanId: a,
5
- traceFlags: I.NONE
6
- };
1
+ import { INVALID_SPAN_CONTEXT as o } from "./vue-components.es49.js";
2
+ var i = (
3
+ /** @class */
4
+ (function() {
5
+ function t(n) {
6
+ n === void 0 && (n = o), this._spanContext = n;
7
+ }
8
+ return t.prototype.spanContext = function() {
9
+ return this._spanContext;
10
+ }, t.prototype.setAttribute = function(n, e) {
11
+ return this;
12
+ }, t.prototype.setAttributes = function(n) {
13
+ return this;
14
+ }, t.prototype.addEvent = function(n, e) {
15
+ return this;
16
+ }, t.prototype.addLink = function(n) {
17
+ return this;
18
+ }, t.prototype.addLinks = function(n) {
19
+ return this;
20
+ }, t.prototype.setStatus = function(n) {
21
+ return this;
22
+ }, t.prototype.updateName = function(n) {
23
+ return this;
24
+ }, t.prototype.end = function(n) {
25
+ }, t.prototype.isRecording = function() {
26
+ return !1;
27
+ }, t.prototype.recordException = function(n, e) {
28
+ }, t;
29
+ })()
30
+ );
7
31
  export {
8
- a as INVALID_SPANID,
9
- A as INVALID_SPAN_CONTEXT,
10
- r as INVALID_TRACEID
32
+ i as NonRecordingSpan
11
33
  };
@@ -1,33 +1,50 @@
1
- import { INVALID_SPAN_CONTEXT as o } from "./vue-components.es50.js";
2
- var i = (
1
+ import { NoopContextManager as f } from "./vue-components.es60.js";
2
+ import { registerGlobal as s, getGlobal as p, unregisterGlobal as g } from "./vue-components.es58.js";
3
+ import { DiagAPI as u } from "./vue-components.es55.js";
4
+ var y = function(t, e) {
5
+ var a = typeof Symbol == "function" && t[Symbol.iterator];
6
+ if (!a) return t;
7
+ var n = a.call(t), o, r = [], i;
8
+ try {
9
+ for (; (e === void 0 || e-- > 0) && !(o = n.next()).done; ) r.push(o.value);
10
+ } catch (c) {
11
+ i = { error: c };
12
+ } finally {
13
+ try {
14
+ o && !o.done && (a = n.return) && a.call(n);
15
+ } finally {
16
+ if (i) throw i.error;
17
+ }
18
+ }
19
+ return r;
20
+ }, d = function(t, e, a) {
21
+ if (a || arguments.length === 2) for (var n = 0, o = e.length, r; n < o; n++)
22
+ (r || !(n in e)) && (r || (r = Array.prototype.slice.call(e, 0, n)), r[n] = e[n]);
23
+ return t.concat(r || Array.prototype.slice.call(e));
24
+ }, l = "context", _ = new f(), A = (
3
25
  /** @class */
4
26
  (function() {
5
- function t(n) {
6
- n === void 0 && (n = o), this._spanContext = n;
27
+ function t() {
7
28
  }
8
- return t.prototype.spanContext = function() {
9
- return this._spanContext;
10
- }, t.prototype.setAttribute = function(n, e) {
11
- return this;
12
- }, t.prototype.setAttributes = function(n) {
13
- return this;
14
- }, t.prototype.addEvent = function(n, e) {
15
- return this;
16
- }, t.prototype.addLink = function(n) {
17
- return this;
18
- }, t.prototype.addLinks = function(n) {
19
- return this;
20
- }, t.prototype.setStatus = function(n) {
21
- return this;
22
- }, t.prototype.updateName = function(n) {
23
- return this;
24
- }, t.prototype.end = function(n) {
25
- }, t.prototype.isRecording = function() {
26
- return !1;
27
- }, t.prototype.recordException = function(n, e) {
29
+ return t.getInstance = function() {
30
+ return this._instance || (this._instance = new t()), this._instance;
31
+ }, t.prototype.setGlobalContextManager = function(e) {
32
+ return s(l, e, u.instance());
33
+ }, t.prototype.active = function() {
34
+ return this._getContextManager().active();
35
+ }, t.prototype.with = function(e, a, n) {
36
+ for (var o, r = [], i = 3; i < arguments.length; i++)
37
+ r[i - 3] = arguments[i];
38
+ return (o = this._getContextManager()).with.apply(o, d([e, a, n], y(r), !1));
39
+ }, t.prototype.bind = function(e, a) {
40
+ return this._getContextManager().bind(e, a);
41
+ }, t.prototype._getContextManager = function() {
42
+ return p(l) || _;
43
+ }, t.prototype.disable = function() {
44
+ this._getContextManager().disable(), g(l, u.instance());
28
45
  }, t;
29
46
  })()
30
47
  );
31
48
  export {
32
- i as NonRecordingSpan
49
+ A as ContextAPI
33
50
  };
@@ -1,50 +1,28 @@
1
- import { NoopContextManager as f } from "./vue-components.es60.js";
2
- import { registerGlobal as s, getGlobal as p, unregisterGlobal as g } from "./vue-components.es58.js";
3
- import { DiagAPI as u } from "./vue-components.es55.js";
4
- var y = function(t, e) {
5
- var a = typeof Symbol == "function" && t[Symbol.iterator];
6
- if (!a) return t;
7
- var n = a.call(t), o, r = [], i;
8
- try {
9
- for (; (e === void 0 || e-- > 0) && !(o = n.next()).done; ) r.push(o.value);
10
- } catch (c) {
11
- i = { error: c };
12
- } finally {
13
- try {
14
- o && !o.done && (a = n.return) && a.call(n);
15
- } finally {
16
- if (i) throw i.error;
17
- }
18
- }
19
- return r;
20
- }, d = function(t, e, a) {
21
- if (a || arguments.length === 2) for (var n = 0, o = e.length, r; n < o; n++)
22
- (r || !(n in e)) && (r || (r = Array.prototype.slice.call(e, 0, n)), r[n] = e[n]);
23
- return t.concat(r || Array.prototype.slice.call(e));
24
- }, l = "context", _ = new f(), A = (
1
+ import { registerGlobal as a, getGlobal as p, unregisterGlobal as s } from "./vue-components.es58.js";
2
+ import { ProxyTracerProvider as i } from "./vue-components.es45.js";
3
+ import { wrapSpanContext as c, isSpanContextValid as h } from "./vue-components.es48.js";
4
+ import { deleteSpan as g, getSpan as S, getActiveSpan as x, getSpanContext as d, setSpan as f, setSpanContext as l } from "./vue-components.es59.js";
5
+ import { DiagAPI as o } from "./vue-components.es55.js";
6
+ var n = "trace", y = (
25
7
  /** @class */
26
8
  (function() {
27
9
  function t() {
10
+ this._proxyTracerProvider = new i(), this.wrapSpanContext = c, this.isSpanContextValid = h, this.deleteSpan = g, this.getSpan = S, this.getActiveSpan = x, this.getSpanContext = d, this.setSpan = f, this.setSpanContext = l;
28
11
  }
29
12
  return t.getInstance = function() {
30
13
  return this._instance || (this._instance = new t()), this._instance;
31
- }, t.prototype.setGlobalContextManager = function(e) {
32
- return s(l, e, u.instance());
33
- }, t.prototype.active = function() {
34
- return this._getContextManager().active();
35
- }, t.prototype.with = function(e, a, n) {
36
- for (var o, r = [], i = 3; i < arguments.length; i++)
37
- r[i - 3] = arguments[i];
38
- return (o = this._getContextManager()).with.apply(o, d([e, a, n], y(r), !1));
39
- }, t.prototype.bind = function(e, a) {
40
- return this._getContextManager().bind(e, a);
41
- }, t.prototype._getContextManager = function() {
42
- return p(l) || _;
14
+ }, t.prototype.setGlobalTracerProvider = function(r) {
15
+ var e = a(n, this._proxyTracerProvider, o.instance());
16
+ return e && this._proxyTracerProvider.setDelegate(r), e;
17
+ }, t.prototype.getTracerProvider = function() {
18
+ return p(n) || this._proxyTracerProvider;
19
+ }, t.prototype.getTracer = function(r, e) {
20
+ return this.getTracerProvider().getTracer(r, e);
43
21
  }, t.prototype.disable = function() {
44
- this._getContextManager().disable(), g(l, u.instance());
22
+ s(n, o.instance()), this._proxyTracerProvider = new i();
45
23
  }, t;
46
24
  })()
47
25
  );
48
26
  export {
49
- A as ContextAPI
27
+ y as TraceAPI
50
28
  };
@@ -1,28 +1,13 @@
1
- import { registerGlobal as a, getGlobal as p, unregisterGlobal as s } from "./vue-components.es58.js";
2
- import { ProxyTracerProvider as i } from "./vue-components.es46.js";
3
- import { wrapSpanContext as c, isSpanContextValid as h } from "./vue-components.es49.js";
4
- import { deleteSpan as g, getSpan as S, getActiveSpan as x, getSpanContext as d, setSpan as f, setSpanContext as l } from "./vue-components.es59.js";
5
- import { DiagAPI as o } from "./vue-components.es55.js";
6
- var n = "trace", y = (
7
- /** @class */
8
- (function() {
9
- function t() {
10
- this._proxyTracerProvider = new i(), this.wrapSpanContext = c, this.isSpanContextValid = h, this.deleteSpan = g, this.getSpan = S, this.getActiveSpan = x, this.getSpanContext = d, this.setSpan = f, this.setSpanContext = l;
11
- }
12
- return t.getInstance = function() {
13
- return this._instance || (this._instance = new t()), this._instance;
14
- }, t.prototype.setGlobalTracerProvider = function(r) {
15
- var e = a(n, this._proxyTracerProvider, o.instance());
16
- return e && this._proxyTracerProvider.setDelegate(r), e;
17
- }, t.prototype.getTracerProvider = function() {
18
- return p(n) || this._proxyTracerProvider;
19
- }, t.prototype.getTracer = function(r, e) {
20
- return this.getTracerProvider().getTracer(r, e);
21
- }, t.prototype.disable = function() {
22
- s(n, o.instance()), this._proxyTracerProvider = new i();
23
- }, t;
24
- })()
25
- );
1
+ import { useStore as u } from "@tanstack/vue-form";
2
+ import { computed as f } from "vue";
3
+ function c(o, t) {
4
+ return f(() => t ? u(o.store, (n) => {
5
+ const r = {};
6
+ for (const e of t)
7
+ r[e] = n[e];
8
+ return r;
9
+ }).value : {});
10
+ }
26
11
  export {
27
- y as TraceAPI
12
+ c as getOmegaStore
28
13
  };
@@ -1,13 +1,6 @@
1
- import { useStore as u } from "@tanstack/vue-form";
2
- import { computed as f } from "vue";
3
- function c(o, t) {
4
- return f(() => t ? u(o.store, (n) => {
5
- const r = {};
6
- for (const e of t)
7
- r[e] = n[e];
8
- return r;
9
- }).value : {});
10
- }
1
+ (function(){"use strict";try{if(typeof document<"u"){var i=document.createElement("style");if(i.appendChild(document.createTextNode(".omega-input .v-input__details:has(.v-messages:empty){grid-template-rows:0fr;transition:all .2s}.omega-input .v-messages:empty{min-height:0}.omega-input .v-input__details:has(.v-messages){transition:all .2s;overflow:hidden;min-height:0;display:grid;grid-template-rows:1fr}.omega-input .v-messages{transition:all .2s}.omega-input .v-messages>*{transition-duration:0s!important}.omega-input [role=alert]:has(.v-messages:empty){padding:0}.omega-input .v-btn{cursor:pointer;width:auto;appearance:none;box-shadow:none;display:block;min-width:auto;height:auto;padding:.5em .5em .5em 1em}")),document.head.appendChild(i),window.customElements){const e=window.customElements.define;window.customElements.define=function(s,t){const n=t.prototype.connectedCallback;return t.prototype.connectedCallback=function(){if(n&&n.call(this),this.shadowRoot){const a=document.createElement("style");a.appendChild(document.createTextNode(".omega-input .v-input__details:has(.v-messages:empty){grid-template-rows:0fr;transition:all .2s}.omega-input .v-messages:empty{min-height:0}.omega-input .v-input__details:has(.v-messages){transition:all .2s;overflow:hidden;min-height:0;display:grid;grid-template-rows:1fr}.omega-input .v-messages{transition:all .2s}.omega-input .v-messages>*{transition-duration:0s!important}.omega-input [role=alert]:has(.v-messages:empty){padding:0}.omega-input .v-btn{cursor:pointer;width:auto;appearance:none;box-shadow:none;display:block;min-width:auto;height:auto;padding:.5em .5em .5em 1em}")),this.shadowRoot.appendChild(a)}},e.call(window.customElements,s,t)}}}}catch(e){console.error("vite-plugin-css-injected-by-js",e)}})();
2
+ import o from "./vue-components.es39.js";
3
+
11
4
  export {
12
- c as getOmegaStore
5
+ o as default
13
6
  };
@@ -1,6 +1,6 @@
1
1
  import { DiagComponentLogger as m } from "./vue-components.es56.js";
2
2
  import { createLogLevelDiagLogger as y } from "./vue-components.es57.js";
3
- import { DiagLogLevel as d } from "./vue-components.es43.js";
3
+ import { DiagLogLevel as d } from "./vue-components.es42.js";
4
4
  import { unregisterGlobal as p, getGlobal as v, registerGlobal as w } from "./vue-components.es58.js";
5
5
  var b = function(i, n) {
6
6
  var r = typeof Symbol == "function" && i[Symbol.iterator];
@@ -1,4 +1,4 @@
1
- import { DiagLogLevel as r } from "./vue-components.es43.js";
1
+ import { DiagLogLevel as r } from "./vue-components.es42.js";
2
2
  function c(n, o) {
3
3
  n < r.NONE ? n = r.NONE : n > r.ALL && (n = r.ALL), o = o || {};
4
4
  function i(t, f) {
@@ -1,6 +1,6 @@
1
- import { createContextKey as o } from "./vue-components.es42.js";
2
- import { NonRecordingSpan as a } from "./vue-components.es51.js";
3
- import { ContextAPI as u } from "./vue-components.es52.js";
1
+ import { createContextKey as o } from "./vue-components.es41.js";
2
+ import { NonRecordingSpan as a } from "./vue-components.es50.js";
3
+ import { ContextAPI as u } from "./vue-components.es51.js";
4
4
  var n = o("OpenTelemetry Context Key SPAN");
5
5
  function r(e) {
6
6
  return e.getValue(n) || void 0;
@@ -1,4 +1,4 @@
1
- import { ROOT_CONTEXT as l } from "./vue-components.es42.js";
1
+ import { ROOT_CONTEXT as l } from "./vue-components.es41.js";
2
2
  var c = function(t, o) {
3
3
  var n = typeof Symbol == "function" && t[Symbol.iterator];
4
4
  if (!n) return t;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect-app/vue-components",
3
- "version": "4.0.0-beta.34",
3
+ "version": "4.0.0-beta.37",
4
4
  "peerDependencies": {
5
5
  "@mdi/js": "^7.4.47",
6
6
  "effect": "^4.0.0-beta.40",
@@ -57,8 +57,8 @@
57
57
  "highlight.js": "^11.11.1",
58
58
  "mitt": "^3.0.1",
59
59
  "vue3-highlightjs": "^1.0.5",
60
- "@effect-app/vue": "4.0.0-beta.34",
61
- "effect-app": "4.0.0-beta.34"
60
+ "effect-app": "4.0.0-beta.37",
61
+ "@effect-app/vue": "4.0.0-beta.37"
62
62
  },
63
63
  "scripts": {
64
64
  "check": "vue-tsc",
@@ -3,6 +3,7 @@ import { Effect, Option, type Record, S } from "effect-app"
3
3
  import { type DeepKeys, type DeepValue, type FieldAsyncValidateOrFn, type FieldValidateOrFn, type FormApi, type FormAsyncValidateOrFn, type FormOptions, type FormState, type FormValidateOrFn, type StandardSchemaV1, type VueFormApi } from "@tanstack/vue-form"
4
4
  import { isObject } from "@vueuse/core"
5
5
  import type { Fiber as EffectFiber } from "effect/Fiber"
6
+ import type { Redacted } from "effect/Redacted"
6
7
  import { getTransformationFrom, useIntl } from "../../utils"
7
8
  import { type OmegaFieldInternalApi } from "./InputProps"
8
9
  import { type OF, type OmegaFormReturn } from "./useOmegaForm"
@@ -23,7 +24,7 @@ const isDevelopmentEnvironment = () => {
23
24
 
24
25
  export type FieldPath<T> = unknown extends T ? string
25
26
  // technically we cannot have primitive at the root
26
- : T extends string | boolean | number | null | undefined | symbol | bigint ? ""
27
+ : T extends string | boolean | number | null | undefined | symbol | bigint | Redacted<any> ? ""
27
28
  // technically we cannot have array at the root
28
29
  : T extends ReadonlyArray<infer U> ? FieldPath_<U, `[${number}]`>
29
30
  : {
@@ -31,7 +32,7 @@ export type FieldPath<T> = unknown extends T ? string
31
32
  }[keyof T]
32
33
 
33
34
  export type FieldPath_<T, Path extends string> = unknown extends T ? string
34
- : T extends string | boolean | number | null | undefined | symbol | bigint ? Path
35
+ : T extends string | boolean | number | null | undefined | symbol | bigint | Redacted<any> ? Path
35
36
  : T extends ReadonlyArray<infer U> ? FieldPath_<U, `${Path}[${number}]`> | Path
36
37
  : {
37
38
  [K in keyof T]: FieldPath_<T[K], `${Path}.${K & string}`>
@@ -236,7 +237,13 @@ export type PrefixFromDepth<
236
237
  _TDepth extends any[]
237
238
  > = K
238
239
 
239
- export type NestedKeyOf<T> = DeepKeys<T>
240
+ // Recursively replace Redacted<A> with its inner type so DeepKeys treats it as a leaf
241
+ type StripRedacted<T> = T extends Redacted<any> ? string
242
+ : T extends ReadonlyArray<infer U> ? ReadonlyArray<StripRedacted<U>>
243
+ : T extends Record<string, any> ? { [K in keyof T]: StripRedacted<T[K]> }
244
+ : T
245
+
246
+ export type NestedKeyOf<T> = DeepKeys<StripRedacted<T>>
240
247
 
241
248
  export type FieldValidators<T> = {
242
249
  onChangeAsync?: FieldAsyncValidateOrFn<T, any, any>
@@ -730,7 +737,7 @@ export const createMeta = <T = any>(
730
737
  // an empty string is valid for a S.String field, so we should not mark it as required
731
738
  // TODO: handle this better via the createMeta minLength parsing
732
739
  required: isRequired
733
- && (!S.AST.isString(typeToProcess) || !!getFieldMetadataFromAst(p.type).minLength),
740
+ && (!S.AST.isString(typeToProcess) || !!getFieldMetadataFromAst(typeToProcess).minLength),
734
741
  nullableOrUndefined
735
742
  }
736
743
  })
@@ -937,6 +944,70 @@ const metadataFromAst = <From, To>(
937
944
  return { meta: newMeta, defaultValues, unionMeta }
938
945
  }
939
946
 
947
+ /*
948
+ * Checks if an AST node is a S.Redacted Declaration without encoding.
949
+ * These need to be swapped to S.RedactedFromValue for form usage
950
+ * because S.Redacted expects Redacted objects, not plain strings.
951
+ */
952
+ const isRedactedWithoutEncoding = (ast: S.AST.AST): boolean =>
953
+ S.AST.isDeclaration(ast)
954
+ && (ast.annotations as any)?.typeConstructor?._tag === "effect/Redacted"
955
+ && !ast.encoding
956
+
957
+ /*
958
+ * Creates a form-compatible schema by replacing S.Redacted(X) with
959
+ * S.RedactedFromValue(X). S.Redacted is a Declaration that expects
960
+ * Redacted<A> on both encoded and type sides, so form inputs (which
961
+ * produce plain strings) fail validation. S.RedactedFromValue accepts
962
+ * plain values on the encoded side and wraps them in Redacted on decode.
963
+ */
964
+ export const toFormSchema = <From, To>(
965
+ schema: S.Codec<To, From, never>
966
+ ): S.Codec<To, From, never> => {
967
+ const ast = schema.ast
968
+ const objAst = S.AST.isObjects(ast)
969
+ ? ast
970
+ : S.AST.isDeclaration(ast)
971
+ ? S.AST.toEncoded(ast)
972
+ : null
973
+
974
+ if (!objAst || !("propertySignatures" in objAst)) return schema
975
+
976
+ let hasRedacted = false
977
+ const props: Record<string, S.Struct.Fields[string]> = {}
978
+
979
+ for (const p of objAst.propertySignatures) {
980
+ if (isRedactedWithoutEncoding(p.type)) {
981
+ hasRedacted = true
982
+ const innerSchema = S.make((p.type as S.AST.Declaration).typeParameters[0]!)
983
+ props[p.name as string] = S.RedactedFromValue(innerSchema)
984
+ } else if (S.AST.isUnion(p.type)) {
985
+ const types = p.type.types
986
+ const redactedType = types.find(isRedactedWithoutEncoding)
987
+ if (redactedType) {
988
+ hasRedacted = true
989
+ const innerSchema = S.make((redactedType as S.AST.Declaration).typeParameters[0]!)
990
+ const hasNull = types.some(S.AST.isNull)
991
+ const hasUndefined = types.some(S.AST.isUndefined)
992
+ const base = S.RedactedFromValue(innerSchema)
993
+ props[p.name as string] = hasNull && hasUndefined
994
+ ? S.NullishOr(base)
995
+ : hasNull
996
+ ? S.NullOr(base)
997
+ : hasUndefined
998
+ ? S.UndefinedOr(base)
999
+ : base
1000
+ } else {
1001
+ props[p.name as string] = S.make(p.type)
1002
+ }
1003
+ } else {
1004
+ props[p.name as string] = S.make(p.type)
1005
+ }
1006
+ }
1007
+
1008
+ return hasRedacted ? S.Struct(props) as unknown as S.Codec<To, From, never> : schema
1009
+ }
1010
+
940
1011
  export const duplicateSchema = <From, To>(
941
1012
  schema: S.Codec<To, From, never>
942
1013
  ) => {
@@ -11,7 +11,7 @@ import { MergedInputProps } from "./InputProps"
11
11
  import OmegaArray from "./OmegaArray.vue"
12
12
  import OmegaAutoGen from "./OmegaAutoGen.vue"
13
13
  import OmegaErrorsInternal from "./OmegaErrorsInternal.vue"
14
- import { BaseProps, deepMerge, defaultsValueFromSchema, DefaultTypeProps, FieldPath, type FormProps, generateMetaFromSchema, type MetaRecord, type NestedKeyOf, OmegaArrayProps, OmegaAutoGenMeta, OmegaError, type OmegaFormApi, OmegaFormState } from "./OmegaFormStuff"
14
+ import { BaseProps, deepMerge, defaultsValueFromSchema, DefaultTypeProps, FieldPath, type FormProps, generateMetaFromSchema, type MetaRecord, type NestedKeyOf, OmegaArrayProps, OmegaAutoGenMeta, OmegaError, type OmegaFormApi, OmegaFormState, toFormSchema } from "./OmegaFormStuff"
15
15
  import OmegaInput from "./OmegaInput.vue"
16
16
  import OmegaTaggedUnion from "./OmegaTaggedUnion.vue"
17
17
  import OmegaForm from "./OmegaWrapper.vue"
@@ -395,7 +395,7 @@ export interface OmegaFormReturn<
395
395
  > extends OF<From, To> {
396
396
  // Pre-computed type aliases - computed ONCE for performance
397
397
  _paths: FieldPath<From>
398
- _keys: DeepKeys<From>
398
+ _keys: NestedKeyOf<From>
399
399
  _schema: S.Codec<To, From, never>
400
400
 
401
401
  // this crazy thing here is copied from the OmegaFormInput.vue.d.ts, with `From` removed as Generic, instead closed over from the From generic above..
@@ -680,8 +680,9 @@ export const useOmegaForm = <
680
680
  omegaConfig?: OmegaConfig<To>
681
681
  ): OmegaFormReturn<From, To, TypeProps> => {
682
682
  if (!schema) throw new Error("Schema is required")
683
- const standardSchema = S.toStandardSchemaV1(schema)
684
- const decode = S.decodeUnknownEffect(schema)
683
+ const formCompatibleSchema = toFormSchema(schema)
684
+ const standardSchema = S.toStandardSchemaV1(formCompatibleSchema)
685
+ const decode = S.decodeUnknownEffect(formCompatibleSchema)
685
686
 
686
687
  const { meta, unionMeta } = generateMetaFromSchema(schema)
687
688