@useinsider/guido 3.2.0 → 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (144) hide show
  1. package/README.md +117 -1
  2. package/dist/@types/config/schemas.js +153 -95
  3. package/dist/components/Guido.vue.js +4 -4
  4. package/dist/components/Guido.vue2.js +90 -88
  5. package/dist/components/organisms/AutoSaveController.vue.js +17 -0
  6. package/dist/components/organisms/AutoSaveController.vue2.js +13 -0
  7. package/dist/components/organisms/header/AutoSaveToggle.vue.js +22 -0
  8. package/dist/components/organisms/header/AutoSaveToggle.vue2.js +19 -0
  9. package/dist/components/organisms/header/RightSlot.vue.js +8 -8
  10. package/dist/components/organisms/header/RightSlot.vue2.js +9 -8
  11. package/dist/components/organisms/onboarding/AMPOnboarding.vue2.js +51 -31
  12. package/dist/components/organisms/onboarding/GenericOnboarding.vue.js +1 -1
  13. package/dist/components/organisms/onboarding/GenericOnboarding.vue2.js +23 -22
  14. package/dist/components/organisms/onboarding/ItemsOnboarding.vue.js +1 -1
  15. package/dist/components/organisms/onboarding/ItemsOnboarding.vue2.js +37 -39
  16. package/dist/components/organisms/onboarding/TextBlockOnboarding.vue.js +3 -3
  17. package/dist/components/organisms/onboarding/TextBlockOnboarding.vue2.js +30 -41
  18. package/dist/components/organisms/onboarding/VersionHistoryOnboarding.vue2.js +15 -14
  19. package/dist/composables/useActionsApi.js +4 -4
  20. package/dist/composables/useAutoSave.js +71 -0
  21. package/dist/composables/useFullStoryBridge.js +14 -0
  22. package/dist/composables/useRecommendation.js +46 -26
  23. package/dist/composables/useRibbonOffset.js +21 -0
  24. package/dist/composables/useSave.js +19 -16
  25. package/dist/composables/useStripo.js +40 -40
  26. package/dist/composables/validators/useCouponBlockValidator.js +24 -0
  27. package/dist/config/compiler/recommendationCompilerRules.js +79 -74
  28. package/dist/config/compiler/unsubscribeCompilerRules.js +40 -37
  29. package/dist/config/compiler/utils/recommendationCompilerUtils.js +107 -71
  30. package/dist/config/migrator/index.js +9 -9
  31. package/dist/config/migrator/radioButtonMigrator.js +64 -44
  32. package/dist/config/migrator/recommendation/compositionMapper.js +98 -0
  33. package/dist/config/migrator/recommendation/extractors.js +27 -0
  34. package/dist/config/migrator/recommendation/htmlBuilder.js +496 -0
  35. package/dist/config/migrator/recommendation/parseLegacyConfig.js +33 -0
  36. package/dist/config/migrator/recommendation/settingsMapper.js +70 -0
  37. package/dist/config/migrator/recommendation/themeMapper.js +93 -0
  38. package/dist/config/migrator/recommendationMigrator.js +74 -290
  39. package/dist/enums/extensions/recommendationBlock.js +2 -1
  40. package/dist/enums/onboarding.js +7 -2
  41. package/dist/enums/unsubscribe.js +34 -27
  42. package/dist/extensions/Blocks/Items/controls/price/singlePrice.js +38 -38
  43. package/dist/extensions/Blocks/Items/enums/productEnums.js +19 -7
  44. package/dist/extensions/Blocks/RadioButton/template.js +1 -1
  45. package/dist/extensions/Blocks/Recommendation/block.js +35 -32
  46. package/dist/extensions/Blocks/Recommendation/constants/controlIds.js +1 -1
  47. package/dist/extensions/Blocks/Recommendation/constants/defaultConfig.js +5 -5
  48. package/dist/extensions/Blocks/Recommendation/controls/customAttribute/index.js +21 -18
  49. package/dist/extensions/Blocks/Recommendation/controls/customAttribute/textTrim.js +99 -0
  50. package/dist/extensions/Blocks/Recommendation/controls/main/algorithm.js +27 -26
  51. package/dist/extensions/Blocks/Recommendation/controls/main/index.js +3 -1
  52. package/dist/extensions/Blocks/Recommendation/controls/main/utils.js +228 -181
  53. package/dist/extensions/Blocks/Recommendation/controls/name/textTrim.js +27 -57
  54. package/dist/extensions/Blocks/Recommendation/controls/shared/textTrimCssRules.js +14 -0
  55. package/dist/extensions/Blocks/Recommendation/services/configService.js +65 -29
  56. package/dist/extensions/Blocks/Recommendation/settingsPanel.js +18 -17
  57. package/dist/extensions/Blocks/Recommendation/store/recommendation.js +123 -79
  58. package/dist/extensions/Blocks/Recommendation/templates/grid/elementRenderer.js +19 -10
  59. package/dist/extensions/Blocks/Recommendation/templates/grid/template.js +8 -8
  60. package/dist/extensions/Blocks/Recommendation/templates/list/elementRenderer.js +25 -15
  61. package/dist/extensions/Blocks/Recommendation/templates/list/template.js +11 -11
  62. package/dist/extensions/Blocks/Recommendation/templates/utils.js +1 -1
  63. package/dist/extensions/Blocks/Recommendation/utils/filterUtil.js +17 -14
  64. package/dist/extensions/Blocks/Recommendation/utils/legacyStrategyMap.js +21 -0
  65. package/dist/extensions/Blocks/Recommendation/utils/preserveTextStyles.js +13 -22
  66. package/dist/extensions/Blocks/Unsubscribe/block.js +11 -11
  67. package/dist/guido.css +1 -1
  68. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +393 -264
  69. package/dist/node_modules/valibot/dist/index.js +450 -235
  70. package/dist/package.json.js +1 -1
  71. package/dist/services/templateLibraryApi.js +5 -4
  72. package/dist/src/@types/config/defaults.d.ts +5 -1
  73. package/dist/src/@types/config/index.d.ts +3 -3
  74. package/dist/src/@types/config/schemas.d.ts +217 -0
  75. package/dist/src/@types/config/types.d.ts +9 -1
  76. package/dist/src/components/Guido.vue.d.ts +1 -1
  77. package/dist/src/components/organisms/AutoSaveController.vue.d.ts +2 -0
  78. package/dist/src/components/organisms/header/AutoSaveToggle.vue.d.ts +2 -0
  79. package/dist/src/components/organisms/header/EditorActions.vue.d.ts +1 -1
  80. package/dist/src/components/organisms/header/HeaderWrapper.vue.d.ts +1 -1
  81. package/dist/src/components/organisms/header/RightSlot.vue.d.ts +1 -1
  82. package/dist/src/components/wrappers/WpModal.vue.d.ts +1 -1
  83. package/dist/src/composables/useActionsApi.d.ts +1 -1
  84. package/dist/src/composables/useAutoSave.d.ts +3 -0
  85. package/dist/src/composables/useConfig.d.ts +58 -0
  86. package/dist/src/composables/useFullStoryBridge.d.ts +11 -0
  87. package/dist/src/composables/useRecommendation.d.ts +10 -1
  88. package/dist/src/composables/useRecommendation.test.d.ts +1 -0
  89. package/dist/src/composables/useRibbonOffset.d.ts +4 -0
  90. package/dist/src/composables/useSave.d.ts +1 -1
  91. package/dist/src/composables/validators/useCouponBlockValidator.d.ts +3 -0
  92. package/dist/src/config/migrator/index.d.ts +2 -1
  93. package/dist/src/config/migrator/recommendation/compositionMapper.d.ts +2 -0
  94. package/dist/src/config/migrator/recommendation/compositionMapper.test.d.ts +1 -0
  95. package/dist/src/config/migrator/recommendation/extractors.d.ts +7 -0
  96. package/dist/src/config/migrator/recommendation/extractors.test.d.ts +1 -0
  97. package/dist/src/config/migrator/recommendation/htmlBuilder.d.ts +11 -0
  98. package/dist/src/config/migrator/recommendation/parseLegacyConfig.d.ts +15 -0
  99. package/dist/src/config/migrator/recommendation/parseLegacyConfig.test.d.ts +1 -0
  100. package/dist/src/config/migrator/recommendation/settingsMapper.d.ts +7 -0
  101. package/dist/src/config/migrator/recommendation/settingsMapper.test.d.ts +1 -0
  102. package/dist/src/config/migrator/recommendation/themeMapper.d.ts +5 -0
  103. package/dist/src/config/migrator/recommendation/themeMapper.test.d.ts +1 -0
  104. package/dist/src/config/migrator/recommendation/types.d.ts +205 -0
  105. package/dist/src/config/migrator/recommendationMigrator.d.ts +13 -1
  106. package/dist/src/config/migrator/recommendationMigrator.test.d.ts +1 -0
  107. package/dist/src/enums/onboarding.d.ts +6 -0
  108. package/dist/src/enums/unsubscribe.d.ts +5 -0
  109. package/dist/src/extensions/Blocks/RadioButton/template.d.ts +1 -1
  110. package/dist/src/extensions/Blocks/Recommendation/constants/controlIds.d.ts +1 -0
  111. package/dist/src/extensions/Blocks/Recommendation/controls/customAttribute/index.d.ts +3 -0
  112. package/dist/src/extensions/Blocks/Recommendation/controls/customAttribute/textTrim.d.ts +35 -0
  113. package/dist/src/extensions/Blocks/Recommendation/controls/main/utils.test.d.ts +1 -0
  114. package/dist/src/extensions/Blocks/Recommendation/controls/name/textTrim.d.ts +3 -20
  115. package/dist/src/extensions/Blocks/Recommendation/controls/shared/textTrimCssRules.d.ts +29 -0
  116. package/dist/src/extensions/Blocks/Recommendation/services/configService.d.ts +10 -0
  117. package/dist/src/extensions/Blocks/Recommendation/services/configService.test.d.ts +1 -0
  118. package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +34 -0
  119. package/dist/src/extensions/Blocks/Recommendation/types/nodeConfig.d.ts +1 -1
  120. package/dist/src/extensions/Blocks/Recommendation/utils/legacyStrategyMap.d.ts +21 -0
  121. package/dist/src/extensions/Blocks/Recommendation/utils/legacyStrategyMap.test.d.ts +1 -0
  122. package/dist/src/extensions/Blocks/Recommendation/utils/preserveTextStyles.d.ts +0 -3
  123. package/dist/src/library.d.ts +1 -1
  124. package/dist/src/stores/autosave.d.ts +12 -0
  125. package/dist/src/stores/config.d.ts +522 -0
  126. package/dist/src/stores/editor.d.ts +23 -0
  127. package/dist/src/stores/onboarding.d.ts +4 -0
  128. package/dist/src/utils/htmlEscape.d.ts +5 -0
  129. package/dist/src/utils/htmlEscape.test.d.ts +1 -0
  130. package/dist/src/utils/timeUtil.d.ts +8 -0
  131. package/dist/static/styles/components/button.css.js +16 -9
  132. package/dist/static/styles/components/loader.css.js +4 -0
  133. package/dist/static/styles/components/narrow-panel.css.js +52 -0
  134. package/dist/stores/autosave.js +17 -0
  135. package/dist/stores/editor.js +3 -1
  136. package/dist/stores/onboarding.js +4 -0
  137. package/dist/utils/htmlEscape.js +13 -0
  138. package/dist/utils/pairProductVariables.js +89 -88
  139. package/dist/utils/templatePreparation.js +72 -32
  140. package/dist/utils/timeUtil.js +19 -0
  141. package/package.json +7 -3
  142. package/dist/enums/displayConditions.js +0 -80
  143. package/dist/extensions/Blocks/Recommendation/templates/grid/migration.js +0 -251
  144. package/dist/src/enums/displayConditions.d.ts +0 -2
@@ -1,141 +1,145 @@
1
- var v;
1
+ var m;
2
2
  // @__NO_SIDE_EFFECTS__
3
- function E(n) {
3
+ function j(n) {
4
4
  return {
5
- lang: (n == null ? void 0 : n.lang) ?? (v == null ? void 0 : v.lang),
5
+ lang: (n == null ? void 0 : n.lang) ?? (m == null ? void 0 : m.lang),
6
6
  message: n == null ? void 0 : n.message,
7
- abortEarly: (n == null ? void 0 : n.abortEarly) ?? (v == null ? void 0 : v.abortEarly),
8
- abortPipeEarly: (n == null ? void 0 : n.abortPipeEarly) ?? (v == null ? void 0 : v.abortPipeEarly)
7
+ abortEarly: (n == null ? void 0 : n.abortEarly) ?? (m == null ? void 0 : m.abortEarly),
8
+ abortPipeEarly: (n == null ? void 0 : n.abortPipeEarly) ?? (m == null ? void 0 : m.abortPipeEarly)
9
9
  };
10
10
  }
11
- var g;
12
- // @__NO_SIDE_EFFECTS__
13
- function D(n) {
14
- return g == null ? void 0 : g.get(n);
15
- }
16
11
  var d;
17
12
  // @__NO_SIDE_EFFECTS__
18
- function w(n) {
13
+ function I(n) {
19
14
  return d == null ? void 0 : d.get(n);
20
15
  }
21
16
  var x;
22
17
  // @__NO_SIDE_EFFECTS__
23
- function A(n, r) {
18
+ function A(n) {
19
+ return x == null ? void 0 : x.get(n);
20
+ }
21
+ var E;
22
+ // @__NO_SIDE_EFFECTS__
23
+ function q(n, s) {
24
24
  var e;
25
- return (e = x == null ? void 0 : x.get(n)) == null ? void 0 : e.get(r);
25
+ return (e = E == null ? void 0 : E.get(n)) == null ? void 0 : e.get(s);
26
26
  }
27
27
  // @__NO_SIDE_EFFECTS__
28
- function $(n) {
29
- var e, t;
30
- const r = typeof n;
31
- return r === "string" ? `"${n}"` : r === "number" || r === "bigint" || r === "boolean" ? `${n}` : r === "object" || r === "function" ? (n && ((t = (e = Object.getPrototypeOf(n)) == null ? void 0 : e.constructor) == null ? void 0 : t.name)) ?? "null" : r;
28
+ function _(n) {
29
+ var e, r;
30
+ const s = typeof n;
31
+ return s === "string" ? `"${n}"` : s === "number" || s === "bigint" || s === "boolean" ? `${n}` : s === "object" || s === "function" ? (n && ((r = (e = Object.getPrototypeOf(n)) == null ? void 0 : e.constructor) == null ? void 0 : r.name)) ?? "null" : s;
32
32
  }
33
- function y(n, r, e, t, i) {
34
- const a = i && "input" in i ? i.input : e.value, s = (i == null ? void 0 : i.expected) ?? n.expects ?? null, l = (i == null ? void 0 : i.received) ?? /* @__PURE__ */ $(a), u = {
33
+ function y(n, s, e, r, t) {
34
+ const l = t && "input" in t ? t.input : e.value, i = (t == null ? void 0 : t.expected) ?? n.expects ?? null, p = (t == null ? void 0 : t.received) ?? /* @__PURE__ */ _(l), u = {
35
35
  kind: n.kind,
36
36
  type: n.type,
37
- input: a,
38
- expected: s,
39
- received: l,
40
- message: `Invalid ${r}: ${s ? `Expected ${s} but r` : "R"}eceived ${l}`,
37
+ input: l,
38
+ expected: i,
39
+ received: p,
40
+ message: `Invalid ${s}: ${i ? `Expected ${i} but r` : "R"}eceived ${p}`,
41
41
  requirement: n.requirement,
42
- path: i == null ? void 0 : i.path,
43
- issues: i == null ? void 0 : i.issues,
44
- lang: t.lang,
45
- abortEarly: t.abortEarly,
46
- abortPipeEarly: t.abortPipeEarly
47
- }, p = n.kind === "schema", c = (i == null ? void 0 : i.message) ?? n.message ?? /* @__PURE__ */ A(n.reference, u.lang) ?? (p ? /* @__PURE__ */ w(u.lang) : null) ?? t.message ?? /* @__PURE__ */ D(u.lang);
42
+ path: t == null ? void 0 : t.path,
43
+ issues: t == null ? void 0 : t.issues,
44
+ lang: r.lang,
45
+ abortEarly: r.abortEarly,
46
+ abortPipeEarly: r.abortPipeEarly
47
+ }, a = n.kind === "schema", c = (t == null ? void 0 : t.message) ?? n.message ?? /* @__PURE__ */ q(n.reference, u.lang) ?? (a ? /* @__PURE__ */ A(u.lang) : null) ?? r.message ?? /* @__PURE__ */ I(u.lang);
48
48
  c !== void 0 && (u.message = typeof c == "function" ? (
49
49
  // @ts-expect-error
50
50
  c(u)
51
- ) : c), p && (e.typed = !1), e.issues ? e.issues.push(u) : e.issues = [u];
51
+ ) : c), a && (e.typed = !1), e.issues ? e.issues.push(u) : e.issues = [u];
52
52
  }
53
53
  // @__NO_SIDE_EFFECTS__
54
- function f(n) {
54
+ function o(n) {
55
55
  return {
56
56
  version: 1,
57
57
  vendor: "valibot",
58
- validate(r) {
59
- return n["~run"]({ value: r }, /* @__PURE__ */ E());
58
+ validate(s) {
59
+ return n["~run"]({ value: s }, /* @__PURE__ */ j());
60
60
  }
61
61
  };
62
62
  }
63
63
  // @__NO_SIDE_EFFECTS__
64
- function S(n, r) {
64
+ function O(n, s) {
65
+ return Object.hasOwn(n, s) && s !== "__proto__" && s !== "prototype" && s !== "constructor";
66
+ }
67
+ // @__NO_SIDE_EFFECTS__
68
+ function $(n, s) {
65
69
  const e = [...new Set(n)];
66
- return e.length > 1 ? `(${e.join(` ${r} `)})` : e[0] ?? "never";
70
+ return e.length > 1 ? `(${e.join(` ${s} `)})` : e[0] ?? "never";
67
71
  }
68
72
  // @__NO_SIDE_EFFECTS__
69
- function O(n, r) {
73
+ function K(n, s) {
70
74
  return {
71
75
  kind: "validation",
72
76
  type: "check",
73
- reference: O,
77
+ reference: K,
74
78
  async: !0,
75
79
  expects: null,
76
80
  requirement: n,
77
- message: r,
78
- async "~run"(e, t) {
79
- return e.typed && !await this.requirement(e.value) && y(this, "input", e, t), e;
81
+ message: s,
82
+ async "~run"(e, r) {
83
+ return e.typed && !await this.requirement(e.value) && y(this, "input", e, r), e;
80
84
  }
81
85
  };
82
86
  }
83
87
  // @__NO_SIDE_EFFECTS__
84
- function I(n, r) {
88
+ function M(n, s) {
85
89
  return {
86
90
  kind: "validation",
87
91
  type: "max_length",
88
- reference: I,
92
+ reference: M,
89
93
  async: !1,
90
94
  expects: `<=${n}`,
91
95
  requirement: n,
92
- message: r,
93
- "~run"(e, t) {
94
- return e.typed && e.value.length > this.requirement && y(this, "length", e, t, {
96
+ message: s,
97
+ "~run"(e, r) {
98
+ return e.typed && e.value.length > this.requirement && y(this, "length", e, r, {
95
99
  received: `${e.value.length}`
96
100
  }), e;
97
101
  }
98
102
  };
99
103
  }
100
104
  // @__NO_SIDE_EFFECTS__
101
- function q(n, r) {
105
+ function V(n, s) {
102
106
  return {
103
107
  kind: "validation",
104
108
  type: "min_length",
105
- reference: q,
109
+ reference: V,
106
110
  async: !1,
107
111
  expects: `>=${n}`,
108
112
  requirement: n,
109
- message: r,
110
- "~run"(e, t) {
111
- return e.typed && e.value.length < this.requirement && y(this, "length", e, t, {
113
+ message: s,
114
+ "~run"(e, r) {
115
+ return e.typed && e.value.length < this.requirement && y(this, "length", e, r, {
112
116
  received: `${e.value.length}`
113
117
  }), e;
114
118
  }
115
119
  };
116
120
  }
117
121
  // @__NO_SIDE_EFFECTS__
118
- function M(n) {
122
+ function G(n) {
119
123
  return {
120
124
  kind: "validation",
121
125
  type: "non_empty",
122
- reference: M,
126
+ reference: G,
123
127
  async: !1,
124
128
  expects: "!0",
125
129
  message: n,
126
- "~run"(r, e) {
127
- return r.typed && r.value.length === 0 && y(this, "length", r, e, {
130
+ "~run"(s, e) {
131
+ return s.typed && s.value.length === 0 && y(this, "length", s, e, {
128
132
  received: "0"
129
- }), r;
133
+ }), s;
130
134
  }
131
135
  };
132
136
  }
133
137
  // @__NO_SIDE_EFFECTS__
134
- function G() {
138
+ function L() {
135
139
  return {
136
140
  kind: "transformation",
137
141
  type: "trim",
138
- reference: G,
142
+ reference: L,
139
143
  async: !1,
140
144
  "~run"(n) {
141
145
  return n.value = n.value.trim(), n;
@@ -143,27 +147,27 @@ function G() {
143
147
  };
144
148
  }
145
149
  // @__NO_SIDE_EFFECTS__
146
- function L(n, r, e) {
150
+ function S(n, s, e) {
147
151
  return typeof n.fallback == "function" ? (
148
152
  // @ts-expect-error
149
- n.fallback(r, e)
153
+ n.fallback(s, e)
150
154
  ) : (
151
155
  // @ts-expect-error
152
156
  n.fallback
153
157
  );
154
158
  }
155
159
  // @__NO_SIDE_EFFECTS__
156
- function _(n, r, e) {
160
+ function D(n, s, e) {
157
161
  return typeof n.default == "function" ? (
158
162
  // @ts-expect-error
159
- n.default(r, e)
163
+ n.default(s, e)
160
164
  ) : (
161
165
  // @ts-expect-error
162
166
  n.default
163
167
  );
164
168
  }
165
169
  // @__NO_SIDE_EFFECTS__
166
- function N(n, r) {
170
+ function N(n, s) {
167
171
  return {
168
172
  kind: "schema",
169
173
  type: "array",
@@ -171,28 +175,28 @@ function N(n, r) {
171
175
  expects: "Array",
172
176
  async: !1,
173
177
  item: n,
174
- message: r,
178
+ message: s,
175
179
  get "~standard"() {
176
- return /* @__PURE__ */ f(this);
180
+ return /* @__PURE__ */ o(this);
177
181
  },
178
- "~run"(e, t) {
179
- var a;
180
- const i = e.value;
181
- if (Array.isArray(i)) {
182
+ "~run"(e, r) {
183
+ var l;
184
+ const t = e.value;
185
+ if (Array.isArray(t)) {
182
186
  e.typed = !0, e.value = [];
183
- for (let s = 0; s < i.length; s++) {
184
- const l = i[s], u = this.item["~run"]({ value: l }, t);
187
+ for (let i = 0; i < t.length; i++) {
188
+ const p = t[i], u = this.item["~run"]({ value: p }, r);
185
189
  if (u.issues) {
186
- const p = {
190
+ const a = {
187
191
  type: "array",
188
192
  origin: "value",
189
- input: i,
190
- key: s,
191
- value: l
193
+ input: t,
194
+ key: i,
195
+ value: p
192
196
  };
193
197
  for (const c of u.issues)
194
- c.path ? c.path.unshift(p) : c.path = [p], (a = e.issues) == null || a.push(c);
195
- if (e.issues || (e.issues = u.issues), t.abortEarly) {
198
+ c.path ? c.path.unshift(a) : c.path = [a], (l = e.issues) == null || l.push(c);
199
+ if (e.issues || (e.issues = u.issues), r.abortEarly) {
196
200
  e.typed = !1;
197
201
  break;
198
202
  }
@@ -200,7 +204,7 @@ function N(n, r) {
200
204
  u.typed || (e.typed = !1), e.value.push(u.value);
201
205
  }
202
206
  } else
203
- y(this, "type", e, t);
207
+ y(this, "type", e, r);
204
208
  return e;
205
209
  }
206
210
  };
@@ -215,15 +219,15 @@ function C(n) {
215
219
  async: !1,
216
220
  message: n,
217
221
  get "~standard"() {
218
- return /* @__PURE__ */ f(this);
222
+ return /* @__PURE__ */ o(this);
219
223
  },
220
- "~run"(r, e) {
221
- return typeof r.value == "boolean" ? r.typed = !0 : y(this, "type", r, e), r;
224
+ "~run"(s, e) {
225
+ return typeof s.value == "boolean" ? s.typed = !0 : y(this, "type", s, e), s;
222
226
  }
223
227
  };
224
228
  }
225
229
  // @__NO_SIDE_EFFECTS__
226
- function F(n, r) {
230
+ function F(n, s) {
227
231
  return {
228
232
  kind: "schema",
229
233
  type: "custom",
@@ -231,333 +235,544 @@ function F(n, r) {
231
235
  expects: "unknown",
232
236
  async: !1,
233
237
  check: n,
234
- message: r,
238
+ message: s,
235
239
  get "~standard"() {
236
- return /* @__PURE__ */ f(this);
240
+ return /* @__PURE__ */ o(this);
237
241
  },
238
- "~run"(e, t) {
239
- return this.check(e.value) ? e.typed = !0 : y(this, "type", e, t), e;
242
+ "~run"(e, r) {
243
+ return this.check(e.value) ? e.typed = !0 : y(this, "type", e, r), e;
240
244
  }
241
245
  };
242
246
  }
243
247
  // @__NO_SIDE_EFFECTS__
244
- function K(n, r) {
248
+ function R(n, s) {
245
249
  return {
246
250
  kind: "schema",
247
251
  type: "literal",
248
- reference: K,
249
- expects: /* @__PURE__ */ $(n),
252
+ reference: R,
253
+ expects: /* @__PURE__ */ _(n),
250
254
  async: !1,
251
255
  literal: n,
252
- message: r,
256
+ message: s,
253
257
  get "~standard"() {
254
- return /* @__PURE__ */ f(this);
258
+ return /* @__PURE__ */ o(this);
255
259
  },
256
- "~run"(e, t) {
257
- return e.value === this.literal ? e.typed = !0 : y(this, "type", e, t), e;
260
+ "~run"(e, r) {
261
+ return e.value === this.literal ? e.typed = !0 : y(this, "type", e, r), e;
258
262
  }
259
263
  };
260
264
  }
261
265
  // @__NO_SIDE_EFFECTS__
262
- function R(n) {
266
+ function z(n, s) {
267
+ return {
268
+ kind: "schema",
269
+ type: "loose_object",
270
+ reference: z,
271
+ expects: "Object",
272
+ async: !1,
273
+ entries: n,
274
+ message: s,
275
+ get "~standard"() {
276
+ return /* @__PURE__ */ o(this);
277
+ },
278
+ "~run"(e, r) {
279
+ var l;
280
+ const t = e.value;
281
+ if (t && typeof t == "object") {
282
+ e.typed = !0, e.value = {};
283
+ for (const i in this.entries) {
284
+ const p = this.entries[i];
285
+ if (i in t || (p.type === "exact_optional" || p.type === "optional" || p.type === "nullish") && // @ts-expect-error
286
+ p.default !== void 0) {
287
+ const u = i in t ? (
288
+ // @ts-expect-error
289
+ t[i]
290
+ ) : /* @__PURE__ */ D(p), a = p["~run"]({ value: u }, r);
291
+ if (a.issues) {
292
+ const c = {
293
+ type: "object",
294
+ origin: "value",
295
+ input: t,
296
+ key: i,
297
+ value: u
298
+ };
299
+ for (const f of a.issues)
300
+ f.path ? f.path.unshift(c) : f.path = [c], (l = e.issues) == null || l.push(f);
301
+ if (e.issues || (e.issues = a.issues), r.abortEarly) {
302
+ e.typed = !1;
303
+ break;
304
+ }
305
+ }
306
+ a.typed || (e.typed = !1), e.value[i] = a.value;
307
+ } else if (p.fallback !== void 0)
308
+ e.value[i] = /* @__PURE__ */ S(p);
309
+ else if (p.type !== "exact_optional" && p.type !== "optional" && p.type !== "nullish" && (y(this, "key", e, r, {
310
+ input: void 0,
311
+ expected: `"${i}"`,
312
+ path: [
313
+ {
314
+ type: "object",
315
+ origin: "key",
316
+ input: t,
317
+ key: i,
318
+ // @ts-expect-error
319
+ value: t[i]
320
+ }
321
+ ]
322
+ }), r.abortEarly))
323
+ break;
324
+ }
325
+ if (!e.issues || !r.abortEarly)
326
+ for (const i in t)
327
+ /* @__PURE__ */ O(t, i) && !(i in this.entries) && (e.value[i] = t[i]);
328
+ } else
329
+ y(this, "type", e, r);
330
+ return e;
331
+ }
332
+ };
333
+ }
334
+ // @__NO_SIDE_EFFECTS__
335
+ function B(n) {
263
336
  return {
264
337
  kind: "schema",
265
338
  type: "number",
266
- reference: R,
339
+ reference: B,
267
340
  expects: "number",
268
341
  async: !1,
269
342
  message: n,
270
343
  get "~standard"() {
271
- return /* @__PURE__ */ f(this);
344
+ return /* @__PURE__ */ o(this);
272
345
  },
273
- "~run"(r, e) {
274
- return typeof r.value == "number" && !isNaN(r.value) ? r.typed = !0 : y(this, "type", r, e), r;
346
+ "~run"(s, e) {
347
+ return typeof s.value == "number" && !isNaN(s.value) ? s.typed = !0 : y(this, "type", s, e), s;
275
348
  }
276
349
  };
277
350
  }
278
351
  // @__NO_SIDE_EFFECTS__
279
- function V(n, r) {
352
+ function H(n, s) {
280
353
  return {
281
354
  kind: "schema",
282
355
  type: "object",
283
- reference: V,
356
+ reference: H,
284
357
  expects: "Object",
285
358
  async: !1,
286
359
  entries: n,
287
- message: r,
360
+ message: s,
288
361
  get "~standard"() {
289
- return /* @__PURE__ */ f(this);
362
+ return /* @__PURE__ */ o(this);
290
363
  },
291
- "~run"(e, t) {
292
- var a;
293
- const i = e.value;
294
- if (i && typeof i == "object") {
364
+ "~run"(e, r) {
365
+ var l;
366
+ const t = e.value;
367
+ if (t && typeof t == "object") {
295
368
  e.typed = !0, e.value = {};
296
- for (const s in this.entries) {
297
- const l = this.entries[s];
298
- if (s in i || (l.type === "exact_optional" || l.type === "optional" || l.type === "nullish") && // @ts-expect-error
299
- l.default !== void 0) {
300
- const u = s in i ? (
369
+ for (const i in this.entries) {
370
+ const p = this.entries[i];
371
+ if (i in t || (p.type === "exact_optional" || p.type === "optional" || p.type === "nullish") && // @ts-expect-error
372
+ p.default !== void 0) {
373
+ const u = i in t ? (
301
374
  // @ts-expect-error
302
- i[s]
303
- ) : /* @__PURE__ */ _(l), p = l["~run"]({ value: u }, t);
304
- if (p.issues) {
375
+ t[i]
376
+ ) : /* @__PURE__ */ D(p), a = p["~run"]({ value: u }, r);
377
+ if (a.issues) {
305
378
  const c = {
306
379
  type: "object",
307
380
  origin: "value",
308
- input: i,
309
- key: s,
381
+ input: t,
382
+ key: i,
310
383
  value: u
311
384
  };
312
- for (const m of p.issues)
313
- m.path ? m.path.unshift(c) : m.path = [c], (a = e.issues) == null || a.push(m);
314
- if (e.issues || (e.issues = p.issues), t.abortEarly) {
385
+ for (const f of a.issues)
386
+ f.path ? f.path.unshift(c) : f.path = [c], (l = e.issues) == null || l.push(f);
387
+ if (e.issues || (e.issues = a.issues), r.abortEarly) {
315
388
  e.typed = !1;
316
389
  break;
317
390
  }
318
391
  }
319
- p.typed || (e.typed = !1), e.value[s] = p.value;
320
- } else if (l.fallback !== void 0)
321
- e.value[s] = /* @__PURE__ */ L(l);
322
- else if (l.type !== "exact_optional" && l.type !== "optional" && l.type !== "nullish" && (y(this, "key", e, t, {
392
+ a.typed || (e.typed = !1), e.value[i] = a.value;
393
+ } else if (p.fallback !== void 0)
394
+ e.value[i] = /* @__PURE__ */ S(p);
395
+ else if (p.type !== "exact_optional" && p.type !== "optional" && p.type !== "nullish" && (y(this, "key", e, r, {
323
396
  input: void 0,
324
- expected: `"${s}"`,
397
+ expected: `"${i}"`,
325
398
  path: [
326
399
  {
327
400
  type: "object",
328
401
  origin: "key",
329
- input: i,
330
- key: s,
402
+ input: t,
403
+ key: i,
331
404
  // @ts-expect-error
332
- value: i[s]
405
+ value: t[i]
333
406
  }
334
407
  ]
335
- }), t.abortEarly))
408
+ }), r.abortEarly))
336
409
  break;
337
410
  }
338
411
  } else
339
- y(this, "type", e, t);
412
+ y(this, "type", e, r);
340
413
  return e;
341
414
  }
342
415
  };
343
416
  }
344
417
  // @__NO_SIDE_EFFECTS__
345
- function z(n, r) {
418
+ function J(n, s) {
346
419
  return {
347
420
  kind: "schema",
348
421
  type: "optional",
349
- reference: z,
422
+ reference: J,
350
423
  expects: `(${n.expects} | undefined)`,
351
424
  async: !1,
352
425
  wrapped: n,
353
- default: r,
426
+ default: s,
354
427
  get "~standard"() {
355
- return /* @__PURE__ */ f(this);
428
+ return /* @__PURE__ */ o(this);
356
429
  },
357
- "~run"(e, t) {
358
- return e.value === void 0 && (this.default !== void 0 && (e.value = /* @__PURE__ */ _(this, e, t)), e.value === void 0) ? (e.typed = !0, e) : this.wrapped["~run"](e, t);
430
+ "~run"(e, r) {
431
+ return e.value === void 0 && (this.default !== void 0 && (e.value = /* @__PURE__ */ D(this, e, r)), e.value === void 0) ? (e.typed = !0, e) : this.wrapped["~run"](e, r);
359
432
  }
360
433
  };
361
434
  }
362
435
  // @__NO_SIDE_EFFECTS__
363
- function B(n, r) {
436
+ function Q(n, s) {
364
437
  return {
365
438
  kind: "schema",
366
439
  type: "picklist",
367
- reference: B,
368
- expects: /* @__PURE__ */ S(n.map($), "|"),
440
+ reference: Q,
441
+ expects: /* @__PURE__ */ $(n.map(_), "|"),
369
442
  async: !1,
370
443
  options: n,
371
- message: r,
444
+ message: s,
372
445
  get "~standard"() {
373
- return /* @__PURE__ */ f(this);
446
+ return /* @__PURE__ */ o(this);
374
447
  },
375
- "~run"(e, t) {
376
- return this.options.includes(e.value) ? e.typed = !0 : y(this, "type", e, t), e;
448
+ "~run"(e, r) {
449
+ return this.options.includes(e.value) ? e.typed = !0 : y(this, "type", e, r), e;
377
450
  }
378
451
  };
379
452
  }
380
453
  // @__NO_SIDE_EFFECTS__
381
- function H(n) {
454
+ function T(n, s, e) {
455
+ return {
456
+ kind: "schema",
457
+ type: "record",
458
+ reference: T,
459
+ expects: "Object",
460
+ async: !1,
461
+ key: n,
462
+ value: s,
463
+ message: e,
464
+ get "~standard"() {
465
+ return /* @__PURE__ */ o(this);
466
+ },
467
+ "~run"(r, t) {
468
+ var i, p;
469
+ const l = r.value;
470
+ if (l && typeof l == "object") {
471
+ r.typed = !0, r.value = {};
472
+ for (const u in l)
473
+ if (/* @__PURE__ */ O(l, u)) {
474
+ const a = l[u], c = this.key["~run"]({ value: u }, t);
475
+ if (c.issues) {
476
+ const b = {
477
+ type: "object",
478
+ origin: "key",
479
+ input: l,
480
+ key: u,
481
+ value: a
482
+ };
483
+ for (const h of c.issues)
484
+ h.path = [b], (i = r.issues) == null || i.push(h);
485
+ if (r.issues || (r.issues = c.issues), t.abortEarly) {
486
+ r.typed = !1;
487
+ break;
488
+ }
489
+ }
490
+ const f = this.value["~run"](
491
+ { value: a },
492
+ t
493
+ );
494
+ if (f.issues) {
495
+ const b = {
496
+ type: "object",
497
+ origin: "value",
498
+ input: l,
499
+ key: u,
500
+ value: a
501
+ };
502
+ for (const h of f.issues)
503
+ h.path ? h.path.unshift(b) : h.path = [b], (p = r.issues) == null || p.push(h);
504
+ if (r.issues || (r.issues = f.issues), t.abortEarly) {
505
+ r.typed = !1;
506
+ break;
507
+ }
508
+ }
509
+ (!c.typed || !f.typed) && (r.typed = !1), c.typed && (r.value[c.value] = f.value);
510
+ }
511
+ } else
512
+ y(this, "type", r, t);
513
+ return r;
514
+ }
515
+ };
516
+ }
517
+ // @__NO_SIDE_EFFECTS__
518
+ function U(n) {
382
519
  return {
383
520
  kind: "schema",
384
521
  type: "string",
385
- reference: H,
522
+ reference: U,
386
523
  expects: "string",
387
524
  async: !1,
388
525
  message: n,
389
526
  get "~standard"() {
390
- return /* @__PURE__ */ f(this);
527
+ return /* @__PURE__ */ o(this);
528
+ },
529
+ "~run"(s, e) {
530
+ return typeof s.value == "string" ? s.typed = !0 : y(this, "type", s, e), s;
531
+ }
532
+ };
533
+ }
534
+ // @__NO_SIDE_EFFECTS__
535
+ function w(n) {
536
+ let s;
537
+ if (n)
538
+ for (const e of n)
539
+ s ? s.push(...e.issues) : s = e.issues;
540
+ return s;
541
+ }
542
+ // @__NO_SIDE_EFFECTS__
543
+ function W(n, s) {
544
+ return {
545
+ kind: "schema",
546
+ type: "union",
547
+ reference: W,
548
+ expects: /* @__PURE__ */ $(
549
+ n.map((e) => e.expects),
550
+ "|"
551
+ ),
552
+ async: !1,
553
+ options: n,
554
+ message: s,
555
+ get "~standard"() {
556
+ return /* @__PURE__ */ o(this);
391
557
  },
392
- "~run"(r, e) {
393
- return typeof r.value == "string" ? r.typed = !0 : y(this, "type", r, e), r;
558
+ "~run"(e, r) {
559
+ let t, l, i;
560
+ for (const p of this.options) {
561
+ const u = p["~run"]({ value: e.value }, r);
562
+ if (u.typed)
563
+ if (u.issues)
564
+ l ? l.push(u) : l = [u];
565
+ else {
566
+ t = u;
567
+ break;
568
+ }
569
+ else
570
+ i ? i.push(u) : i = [u];
571
+ }
572
+ if (t)
573
+ return t;
574
+ if (l) {
575
+ if (l.length === 1)
576
+ return l[0];
577
+ y(this, "type", e, r, {
578
+ issues: /* @__PURE__ */ w(l)
579
+ }), e.typed = !0;
580
+ } else {
581
+ if ((i == null ? void 0 : i.length) === 1)
582
+ return i[0];
583
+ y(this, "type", e, r, {
584
+ issues: /* @__PURE__ */ w(i)
585
+ });
586
+ }
587
+ return e;
394
588
  }
395
589
  };
396
590
  }
397
591
  // @__NO_SIDE_EFFECTS__
398
- function J(n, r, e) {
592
+ function X() {
593
+ return {
594
+ kind: "schema",
595
+ type: "unknown",
596
+ reference: X,
597
+ expects: "unknown",
598
+ async: !1,
599
+ get "~standard"() {
600
+ return /* @__PURE__ */ o(this);
601
+ },
602
+ "~run"(n) {
603
+ return n.typed = !0, n;
604
+ }
605
+ };
606
+ }
607
+ // @__NO_SIDE_EFFECTS__
608
+ function Y(n, s, e) {
399
609
  return {
400
610
  kind: "schema",
401
611
  type: "variant",
402
- reference: J,
612
+ reference: Y,
403
613
  expects: "Object",
404
614
  async: !1,
405
615
  key: n,
406
- options: r,
616
+ options: s,
407
617
  message: e,
408
618
  get "~standard"() {
409
- return /* @__PURE__ */ f(this);
619
+ return /* @__PURE__ */ o(this);
410
620
  },
411
- "~run"(t, i) {
412
- const a = t.value;
413
- if (a && typeof a == "object") {
414
- let s, l = 0, u = this.key, p = [];
415
- const c = (m, j) => {
416
- for (const h of m.options) {
621
+ "~run"(r, t) {
622
+ const l = r.value;
623
+ if (l && typeof l == "object") {
624
+ let i, p = 0, u = this.key, a = [];
625
+ const c = (f, b) => {
626
+ for (const h of f.options) {
417
627
  if (h.type === "variant")
418
- c(h, new Set(j).add(h.key));
628
+ c(h, new Set(b).add(h.key));
419
629
  else {
420
- let P = !0, b = 0;
421
- for (const o of j) {
422
- const k = h.entries[o];
423
- if (o in a ? k["~run"](
630
+ let P = !0, k = 0;
631
+ for (const v of b) {
632
+ const g = h.entries[v];
633
+ if (v in l ? g["~run"](
424
634
  // @ts-expect-error
425
- { typed: !1, value: a[o] },
635
+ { typed: !1, value: l[v] },
426
636
  { abortEarly: !0 }
427
- ).issues : k.type !== "exact_optional" && k.type !== "optional" && k.type !== "nullish") {
428
- P = !1, u !== o && (l < b || l === b && o in a && !(u in a)) && (l = b, u = o, p = []), u === o && p.push(
429
- h.entries[o].expects
637
+ ).issues : g.type !== "exact_optional" && g.type !== "optional" && g.type !== "nullish") {
638
+ P = !1, u !== v && (p < k || p === k && v in l && !(u in l)) && (p = k, u = v, a = []), u === v && a.push(
639
+ h.entries[v].expects
430
640
  );
431
641
  break;
432
642
  }
433
- b++;
643
+ k++;
434
644
  }
435
645
  if (P) {
436
- const o = h["~run"]({ value: a }, i);
437
- (!s || !s.typed && o.typed) && (s = o);
646
+ const v = h["~run"]({ value: l }, t);
647
+ (!i || !i.typed && v.typed) && (i = v);
438
648
  }
439
649
  }
440
- if (s && !s.issues)
650
+ if (i && !i.issues)
441
651
  break;
442
652
  }
443
653
  };
444
- if (c(this, /* @__PURE__ */ new Set([this.key])), s)
445
- return s;
446
- y(this, "type", t, i, {
654
+ if (c(this, /* @__PURE__ */ new Set([this.key])), i)
655
+ return i;
656
+ y(this, "type", r, t, {
447
657
  // @ts-expect-error
448
- input: a[u],
449
- expected: /* @__PURE__ */ S(p, "|"),
658
+ input: l[u],
659
+ expected: /* @__PURE__ */ $(a, "|"),
450
660
  path: [
451
661
  {
452
662
  type: "object",
453
663
  origin: "value",
454
- input: a,
664
+ input: l,
455
665
  key: u,
456
666
  // @ts-expect-error
457
- value: a[u]
667
+ value: l[u]
458
668
  }
459
669
  ]
460
670
  });
461
671
  } else
462
- y(this, "type", t, i);
463
- return t;
672
+ y(this, "type", r, t);
673
+ return r;
464
674
  }
465
675
  };
466
676
  }
467
677
  // @__NO_SIDE_EFFECTS__
468
- function Q(...n) {
678
+ function Z(...n) {
469
679
  return {
470
680
  ...n[0],
471
681
  pipe: n,
472
682
  get "~standard"() {
473
- return /* @__PURE__ */ f(this);
683
+ return /* @__PURE__ */ o(this);
474
684
  },
475
- "~run"(r, e) {
476
- for (const t of n)
477
- if (t.kind !== "metadata") {
478
- if (r.issues && (t.kind === "schema" || t.kind === "transformation")) {
479
- r.typed = !1;
685
+ "~run"(s, e) {
686
+ for (const r of n)
687
+ if (r.kind !== "metadata") {
688
+ if (s.issues && (r.kind === "schema" || r.kind === "transformation")) {
689
+ s.typed = !1;
480
690
  break;
481
691
  }
482
- (!r.issues || !e.abortEarly && !e.abortPipeEarly) && (r = t["~run"](r, e));
692
+ (!s.issues || !e.abortEarly && !e.abortPipeEarly) && (s = r["~run"](s, e));
483
693
  }
484
- return r;
694
+ return s;
485
695
  }
486
696
  };
487
697
  }
488
698
  // @__NO_SIDE_EFFECTS__
489
- function T(...n) {
699
+ function ee(...n) {
490
700
  return {
491
701
  ...n[0],
492
702
  pipe: n,
493
703
  async: !0,
494
704
  get "~standard"() {
495
- return /* @__PURE__ */ f(this);
705
+ return /* @__PURE__ */ o(this);
496
706
  },
497
- async "~run"(r, e) {
498
- for (const t of n)
499
- if (t.kind !== "metadata") {
500
- if (r.issues && (t.kind === "schema" || t.kind === "transformation")) {
501
- r.typed = !1;
707
+ async "~run"(s, e) {
708
+ for (const r of n)
709
+ if (r.kind !== "metadata") {
710
+ if (s.issues && (r.kind === "schema" || r.kind === "transformation")) {
711
+ s.typed = !1;
502
712
  break;
503
713
  }
504
- (!r.issues || !e.abortEarly && !e.abortPipeEarly) && (r = await t["~run"](r, e));
714
+ (!s.issues || !e.abortEarly && !e.abortPipeEarly) && (s = await r["~run"](s, e));
505
715
  }
506
- return r;
716
+ return s;
507
717
  }
508
718
  };
509
719
  }
510
720
  // @__NO_SIDE_EFFECTS__
511
- function U(n, r, e) {
512
- const t = n["~run"]({ value: r }, /* @__PURE__ */ E(e));
721
+ function ne(n, s, e) {
722
+ const r = n["~run"]({ value: s }, /* @__PURE__ */ j(e));
513
723
  return {
514
- typed: t.typed,
515
- success: !t.issues,
516
- output: t.value,
517
- issues: t.issues
724
+ typed: r.typed,
725
+ success: !r.issues,
726
+ output: r.value,
727
+ issues: r.issues
518
728
  };
519
729
  }
520
730
  // @__NO_SIDE_EFFECTS__
521
- async function W(n, r, e) {
522
- const t = await n["~run"](
523
- { value: r },
524
- /* @__PURE__ */ E(e)
731
+ async function se(n, s, e) {
732
+ const r = await n["~run"](
733
+ { value: s },
734
+ /* @__PURE__ */ j(e)
525
735
  );
526
736
  return {
527
- typed: t.typed,
528
- success: !t.issues,
529
- output: t.value,
530
- issues: t.issues
737
+ typed: r.typed,
738
+ success: !r.issues,
739
+ output: r.value,
740
+ issues: r.issues
531
741
  };
532
742
  }
533
743
  export {
534
744
  y as _addIssue,
535
- f as _getStandardProps,
536
- S as _joinExpects,
537
- $ as _stringify,
745
+ o as _getStandardProps,
746
+ O as _isValidObjectKey,
747
+ $ as _joinExpects,
748
+ _ as _stringify,
538
749
  N as array,
539
750
  C as boolean,
540
- O as checkAsync,
751
+ K as checkAsync,
541
752
  F as custom,
542
- _ as getDefault,
543
- L as getFallback,
544
- E as getGlobalConfig,
545
- D as getGlobalMessage,
546
- w as getSchemaMessage,
547
- A as getSpecificMessage,
548
- K as literal,
549
- I as maxLength,
550
- q as minLength,
551
- M as nonEmpty,
552
- R as number,
553
- V as object,
554
- z as optional,
555
- B as picklist,
556
- Q as pipe,
557
- T as pipeAsync,
558
- U as safeParse,
559
- W as safeParseAsync,
560
- H as string,
561
- G as trim,
562
- J as variant
753
+ D as getDefault,
754
+ S as getFallback,
755
+ j as getGlobalConfig,
756
+ I as getGlobalMessage,
757
+ A as getSchemaMessage,
758
+ q as getSpecificMessage,
759
+ R as literal,
760
+ z as looseObject,
761
+ M as maxLength,
762
+ V as minLength,
763
+ G as nonEmpty,
764
+ B as number,
765
+ H as object,
766
+ J as optional,
767
+ Q as picklist,
768
+ Z as pipe,
769
+ ee as pipeAsync,
770
+ T as record,
771
+ ne as safeParse,
772
+ se as safeParseAsync,
773
+ U as string,
774
+ L as trim,
775
+ W as union,
776
+ X as unknown,
777
+ Y as variant
563
778
  };