@opendoor/partner-sdk-client-js-core 1.2.1-beta.103.1 → 1.2.1-beta.105.1

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.
@@ -11,10 +11,20 @@
11
11
  */
12
12
  import type { AnswerValue, EngineEvent, PageConfig, QuestionConfig, ValidationResult } from './types.js';
13
13
  export interface DtcOnboardingOptions {
14
- /** Market identifier for market-dependent questions (e.g., eligibility criteria). */
15
- market?: string;
16
14
  /** Pre-filled answers (e.g., from address lookup or prior session). */
17
15
  initialAnswers?: Record<string, AnswerValue>;
16
+ /**
17
+ * Page IDs to remove from the flow entirely. Useful when the partner
18
+ * already knows the answers (e.g. a homebuilder partner doesn't need to
19
+ * ask "Are you working with a homebuilder?"). For any *required* questions
20
+ * on a skipped page, pair this with `initialAnswers` so the value still
21
+ * makes it into the submitted data.
22
+ *
23
+ * Skipped pages behave as if their `showWhen` evaluated to false — the
24
+ * engine treats them as invisible, downstream `showWhen` conditions can
25
+ * still reference any answers you provided in `initialAnswers`.
26
+ */
27
+ skipPages?: string[];
18
28
  }
19
29
  export declare class DtcOnboardingEngine {
20
30
  private _allPages;
@@ -23,9 +33,12 @@ export declare class DtcOnboardingEngine {
23
33
  private _validationErrors;
24
34
  private _submitted;
25
35
  private _listeners;
26
- private _market;
36
+ private _skipPages;
27
37
  constructor(pages: PageConfig[], options?: DtcOnboardingOptions);
28
- /** Pages visible given current answers (filtered by showWhen conditions). */
38
+ /**
39
+ * Pages visible given current answers — filtered by both `showWhen`
40
+ * conditions and the partner-supplied `skipPages` allowlist.
41
+ */
29
42
  get visiblePages(): PageConfig[];
30
43
  /** The current page, or undefined if no pages are visible. */
31
44
  get currentPage(): PageConfig | undefined;
@@ -39,7 +52,6 @@ export declare class DtcOnboardingEngine {
39
52
  get submitted(): boolean;
40
53
  get answers(): Readonly<Record<string, AnswerValue>>;
41
54
  get validationErrors(): Readonly<Record<string, string>>;
42
- get market(): string | undefined;
43
55
  /**
44
56
  * Get a single answer value. Arrow function so it can be passed directly
45
57
  * to evaluateCondition without binding.
@@ -1 +1 @@
1
- {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../src/internal/questionnaire/engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EACX,UAAU,EACV,cAAc,EACd,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAOpB,MAAM,WAAW,oBAAoB;IACnC,qFAAqF;IACrF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uEAAuE;IACvE,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;CAC9C;AAED,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,SAAS,CAAe;IAChC,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,iBAAiB,CAA8B;IACvD,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,UAAU,CAGd;IACJ,OAAO,CAAC,OAAO,CAAqB;gBAExB,KAAK,EAAE,UAAU,EAAE,EAAE,OAAO,CAAC,EAAE,oBAAoB;IAa/D,6EAA6E;IAC7E,IAAI,YAAY,IAAI,UAAU,EAAE,CAE/B;IAED,8DAA8D;IAC9D,IAAI,WAAW,IAAI,UAAU,GAAG,SAAS,CAExC;IAED,sDAAsD;IACtD,IAAI,gBAAgB,IAAI,MAAM,CAK7B;IAED,wEAAwE;IACxE,IAAI,QAAQ,IAAI,MAAM,CAKrB;IAED,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED,IAAI,UAAU,IAAI,OAAO,CAGxB;IAED,6DAA6D;IAC7D,IAAI,SAAS,IAAI,OAAO,CAEvB;IAID,IAAI,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAEnD;IAED,IAAI,gBAAgB,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAEvD;IAED,IAAI,MAAM,IAAI,MAAM,GAAG,SAAS,CAE/B;IAED;;;OAGG;IACH,SAAS,GAAI,KAAK,MAAM,KAAG,WAAW,CAEpC;IAIF;;OAEG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,IAAI;IAahD;;;OAGG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,IAAI;IAsBtD;;;;;OAKG;IACH,QAAQ,IAAI,gBAAgB;IA0C5B;;OAEG;IACH,QAAQ,IAAI,IAAI;IAehB;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAc7B;;OAEG;IACH,QAAQ,IAAI,gBAAgB;IAQ5B;;OAEG;IACH,iCAAiC,IAAI,cAAc,EAAE;IAQrD;;OAEG;IACH,EAAE,CACA,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,EAC9B,OAAO,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,GACpC,MAAM,IAAI;IAWb;;OAEG;IACH,OAAO,IAAI,IAAI;IAMf,OAAO,CAAC,IAAI;IASZ;;;OAGG;IACH,OAAO,CAAC,0BAA0B;CAwBnC"}
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../src/internal/questionnaire/engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EACX,UAAU,EACV,cAAc,EACd,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAOpB,MAAM,WAAW,oBAAoB;IACnC,uEAAuE;IACvE,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAC7C;;;;;;;;;;OAUG;IACH,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,SAAS,CAAe;IAChC,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,iBAAiB,CAA8B;IACvD,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,UAAU,CAGd;IACJ,OAAO,CAAC,UAAU,CAAc;gBAEpB,KAAK,EAAE,UAAU,EAAE,EAAE,OAAO,CAAC,EAAE,oBAAoB;IAa/D;;;OAGG;IACH,IAAI,YAAY,IAAI,UAAU,EAAE,CAI/B;IAED,8DAA8D;IAC9D,IAAI,WAAW,IAAI,UAAU,GAAG,SAAS,CAExC;IAED,sDAAsD;IACtD,IAAI,gBAAgB,IAAI,MAAM,CAK7B;IAED,wEAAwE;IACxE,IAAI,QAAQ,IAAI,MAAM,CAKrB;IAED,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED,IAAI,UAAU,IAAI,OAAO,CAGxB;IAED,6DAA6D;IAC7D,IAAI,SAAS,IAAI,OAAO,CAEvB;IAID,IAAI,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAEnD;IAED,IAAI,gBAAgB,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAEvD;IAED;;;OAGG;IACH,SAAS,GAAI,KAAK,MAAM,KAAG,WAAW,CAEpC;IAIF;;OAEG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,IAAI;IAahD;;;OAGG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,IAAI;IAsBtD;;;;;OAKG;IACH,QAAQ,IAAI,gBAAgB;IA0C5B;;OAEG;IACH,QAAQ,IAAI,IAAI;IAehB;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAc7B;;OAEG;IACH,QAAQ,IAAI,gBAAgB;IAQ5B;;OAEG;IACH,iCAAiC,IAAI,cAAc,EAAE;IAQrD;;OAEG;IACH,EAAE,CACA,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,EAC9B,OAAO,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,GACpC,MAAM,IAAI;IAWb;;OAEG;IACH,OAAO,IAAI,IAAI;IAMf,OAAO,CAAC,IAAI;IASZ;;;OAGG;IACH,OAAO,CAAC,0BAA0B;CAwBnC"}
@@ -26,15 +26,21 @@ export class DtcOnboardingEngine {
26
26
  this._answers = options?.initialAnswers
27
27
  ? { ...options.initialAnswers }
28
28
  : {};
29
- this._market = options?.market;
29
+ this._skipPages = new Set(options?.skipPages ?? []);
30
30
  // Initialize to first visible page
31
31
  const visible = this.visiblePages;
32
32
  this._currentPageId = visible.length > 0 ? visible[0].id : '';
33
33
  }
34
34
  // ── Derived state (recomputed on access) ──────────────────────────────────
35
- /** Pages visible given current answers (filtered by showWhen conditions). */
35
+ /**
36
+ * Pages visible given current answers — filtered by both `showWhen`
37
+ * conditions and the partner-supplied `skipPages` allowlist.
38
+ */
36
39
  get visiblePages() {
37
- return getVisiblePages(this._allPages, this.getAnswer);
40
+ const visible = getVisiblePages(this._allPages, this.getAnswer);
41
+ if (this._skipPages.size === 0)
42
+ return visible;
43
+ return visible.filter((page) => !this._skipPages.has(page.id));
38
44
  }
39
45
  /** The current page, or undefined if no pages are visible. */
40
46
  get currentPage() {
@@ -71,9 +77,6 @@ export class DtcOnboardingEngine {
71
77
  get validationErrors() {
72
78
  return { ...this._validationErrors };
73
79
  }
74
- get market() {
75
- return this._market;
76
- }
77
80
  // ── Actions ───────────────────────────────────────────────────────────────
78
81
  /**
79
82
  * Set an answer value. Clears any validation error for that field.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opendoor/partner-sdk-client-js-core",
3
- "version": "1.2.1-beta.103.1",
3
+ "version": "1.2.1-beta.105.1",
4
4
  "description": "Framework-agnostic client SDK for Opendoor partner integrations",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",