@ozura/elements 1.3.1-next.76 → 1.3.1-next.77

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.
@@ -1,3 +1,5 @@
1
+ import type { CardBrand } from '../utils/cardUtils';
2
+ export type { CardBrand } from '../utils/cardUtils';
1
3
  export interface ElementStyle {
2
4
  color?: string;
3
5
  fontSize?: string;
@@ -99,12 +101,13 @@ export interface FieldState {
99
101
  /** Present when valid is false and the field has been touched. */
100
102
  error?: string;
101
103
  /** Card brand — cardNumber field only. */
102
- cardBrand?: string;
104
+ cardBrand?: CardBrand;
103
105
  }
104
106
  /**
105
- * Snapshot of every created field's latest state, keyed by element type. Only
106
- * fields that have been created are present; each is present from creation,
107
- * starting at { empty:true, complete:false, valid:false } until first change.
107
+ * Latest state of each field, keyed by element type. Keys are optional because a
108
+ * given form may not create every field (e.g. a card-only form has no bank keys);
109
+ * access with `?.`. At runtime, every field that has been created is present —
110
+ * from creation onward, starting at the default until its first change.
108
111
  */
109
112
  export type FieldStatesSnapshot = Partial<Record<ElementType | BankElementType, FieldState>>;
110
113
  export type ElementType = 'cardNumber' | 'cvv' | 'expirationDate';
@@ -371,4 +371,4 @@ export declare const OzBankRoutingNumber: import("vue").DefineComponent<{
371
371
  placeholder: string;
372
372
  disabled: boolean;
373
373
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
374
- export type { ElementChangeEvent, TokenizeOptions, TokenResponse, BankTokenizeOptions, BankTokenResponse, Appearance, FontSource, FieldState, FieldStatesSnapshot, } from '../types';
374
+ export type { ElementChangeEvent, TokenizeOptions, TokenResponse, BankTokenizeOptions, BankTokenResponse, Appearance, FontSource, FieldState, FieldStatesSnapshot, CardBrand, } from '../types';
@@ -132,6 +132,8 @@ export declare class OzVault {
132
132
  get isBankComplete(): boolean;
133
133
  /** True iff the set is non-empty and every element has reported complete-and-valid. */
134
134
  private allComplete;
135
+ /** The state a field reports before its first change event (and after reset/reload). */
136
+ private makeDefaultFieldState;
135
137
  /**
136
138
  * Snapshot of every created field's latest state, keyed by element type.
137
139
  * Card and bank fields are combined (their type keys never collide). Useful for
@@ -1,3 +1,5 @@
1
+ import type { CardBrand } from '../utils/cardUtils';
2
+ export type { CardBrand } from '../utils/cardUtils';
1
3
  export interface ElementStyle {
2
4
  color?: string;
3
5
  fontSize?: string;
@@ -99,12 +101,13 @@ export interface FieldState {
99
101
  /** Present when valid is false and the field has been touched. */
100
102
  error?: string;
101
103
  /** Card brand — cardNumber field only. */
102
- cardBrand?: string;
104
+ cardBrand?: CardBrand;
103
105
  }
104
106
  /**
105
- * Snapshot of every created field's latest state, keyed by element type. Only
106
- * fields that have been created are present; each is present from creation,
107
- * starting at { empty:true, complete:false, valid:false } until first change.
107
+ * Latest state of each field, keyed by element type. Keys are optional because a
108
+ * given form may not create every field (e.g. a card-only form has no bank keys);
109
+ * access with `?.`. At runtime, every field that has been created is present —
110
+ * from creation onward, starting at the default until its first change.
108
111
  */
109
112
  export type FieldStatesSnapshot = Partial<Record<ElementType | BankElementType, FieldState>>;
110
113
  export type ElementType = 'cardNumber' | 'cvv' | 'expirationDate';
@@ -371,4 +371,4 @@ export declare const OzBankRoutingNumber: import("vue").DefineComponent<{
371
371
  placeholder: string;
372
372
  disabled: boolean;
373
373
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
374
- export type { ElementChangeEvent, TokenizeOptions, TokenResponse, BankTokenizeOptions, BankTokenResponse, Appearance, FontSource, FieldState, FieldStatesSnapshot, } from '../types';
374
+ export type { ElementChangeEvent, TokenizeOptions, TokenResponse, BankTokenizeOptions, BankTokenResponse, Appearance, FontSource, FieldState, FieldStatesSnapshot, CardBrand, } from '../types';
@@ -132,6 +132,8 @@ export declare class OzVault {
132
132
  get isBankComplete(): boolean;
133
133
  /** True iff the set is non-empty and every element has reported complete-and-valid. */
134
134
  private allComplete;
135
+ /** The state a field reports before its first change event (and after reset/reload). */
136
+ private makeDefaultFieldState;
135
137
  /**
136
138
  * Snapshot of every created field's latest state, keyed by element type.
137
139
  * Card and bank fields are combined (their type keys never collide). Useful for
@@ -1,3 +1,5 @@
1
+ import type { CardBrand } from '../utils/cardUtils';
2
+ export type { CardBrand } from '../utils/cardUtils';
1
3
  export interface ElementStyle {
2
4
  color?: string;
3
5
  fontSize?: string;
@@ -99,12 +101,13 @@ export interface FieldState {
99
101
  /** Present when valid is false and the field has been touched. */
100
102
  error?: string;
101
103
  /** Card brand — cardNumber field only. */
102
- cardBrand?: string;
104
+ cardBrand?: CardBrand;
103
105
  }
104
106
  /**
105
- * Snapshot of every created field's latest state, keyed by element type. Only
106
- * fields that have been created are present; each is present from creation,
107
- * starting at { empty:true, complete:false, valid:false } until first change.
107
+ * Latest state of each field, keyed by element type. Keys are optional because a
108
+ * given form may not create every field (e.g. a card-only form has no bank keys);
109
+ * access with `?.`. At runtime, every field that has been created is present —
110
+ * from creation onward, starting at the default until its first change.
108
111
  */
109
112
  export type FieldStatesSnapshot = Partial<Record<ElementType | BankElementType, FieldState>>;
110
113
  export type ElementType = 'cardNumber' | 'cvv' | 'expirationDate';
@@ -371,4 +371,4 @@ export declare const OzBankRoutingNumber: import("vue").DefineComponent<{
371
371
  placeholder: string;
372
372
  disabled: boolean;
373
373
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
374
- export type { ElementChangeEvent, TokenizeOptions, TokenResponse, BankTokenizeOptions, BankTokenResponse, Appearance, FontSource, FieldState, FieldStatesSnapshot, } from '../types';
374
+ export type { ElementChangeEvent, TokenizeOptions, TokenResponse, BankTokenizeOptions, BankTokenResponse, Appearance, FontSource, FieldState, FieldStatesSnapshot, CardBrand, } from '../types';
@@ -1283,6 +1283,10 @@ class OzVault {
1283
1283
  return false;
1284
1284
  return els.every(el => this.completionState.get(el.frameId) === true);
1285
1285
  }
1286
+ /** The state a field reports before its first change event (and after reset/reload). */
1287
+ makeDefaultFieldState() {
1288
+ return { empty: true, complete: false, valid: false };
1289
+ }
1286
1290
  /**
1287
1291
  * Snapshot of every created field's latest state, keyed by element type.
1288
1292
  * Card and bank fields are combined (their type keys never collide). Useful for
@@ -1294,10 +1298,10 @@ class OzVault {
1294
1298
  var _a, _b;
1295
1299
  const snapshot = {};
1296
1300
  for (const [type, el] of this.elementsByType) {
1297
- snapshot[type] = Object.assign({}, ((_a = this.fieldStates.get(el.frameId)) !== null && _a !== void 0 ? _a : { empty: true, complete: false, valid: false }));
1301
+ snapshot[type] = Object.assign({}, ((_a = this.fieldStates.get(el.frameId)) !== null && _a !== void 0 ? _a : this.makeDefaultFieldState()));
1298
1302
  }
1299
1303
  for (const [type, el] of this.bankElementsByType) {
1300
- snapshot[type] = Object.assign({}, ((_b = this.fieldStates.get(el.frameId)) !== null && _b !== void 0 ? _b : { empty: true, complete: false, valid: false }));
1304
+ snapshot[type] = Object.assign({}, ((_b = this.fieldStates.get(el.frameId)) !== null && _b !== void 0 ? _b : this.makeDefaultFieldState()));
1301
1305
  }
1302
1306
  return snapshot;
1303
1307
  }
@@ -1365,7 +1369,7 @@ class OzVault {
1365
1369
  }, this._debug);
1366
1370
  this.elements.set(el.frameId, el);
1367
1371
  typeMap.set(type, el);
1368
- this.fieldStates.set(el.frameId, { empty: true, complete: false, valid: false });
1372
+ this.fieldStates.set(el.frameId, this.makeDefaultFieldState());
1369
1373
  return el;
1370
1374
  }
1371
1375
  /**
@@ -1667,7 +1671,7 @@ class OzVault {
1667
1671
  }
1668
1672
  // Mirror for field states: every created field returns to its default.
1669
1673
  for (const frameId of this.fieldStates.keys()) {
1670
- this.fieldStates.set(frameId, { empty: true, complete: false, valid: false });
1674
+ this.fieldStates.set(frameId, this.makeDefaultFieldState());
1671
1675
  }
1672
1676
  // NOTE: _tokenizeSuccessCount is intentionally NOT reset.
1673
1677
  // It reflects real server-side wax key budget consumption. Zeroing it
@@ -1881,7 +1885,7 @@ class OzVault {
1881
1885
  // Mirror the completion reset: a reloaded iframe starts empty, so the
1882
1886
  // field state must return to default rather than serving pre-reload data
1883
1887
  // (e.g. a stale card brand) until the next OZ_CHANGE arrives.
1884
- this.fieldStates.set(frameId, { empty: true, complete: false, valid: false });
1888
+ this.fieldStates.set(frameId, this.makeDefaultFieldState());
1885
1889
  if (msg.__ozVersion !== PROTOCOL_VERSION) {
1886
1890
  console.warn(`[OzVault] Protocol version mismatch on element frame "${frameId}" — ` +
1887
1891
  `SDK expects v${PROTOCOL_VERSION}, frame reported v${typeof msg.__ozVersion === 'number' ? msg.__ozVersion : '(none)'}. ` +