@feelflow/ffid-sdk 2.7.0 → 2.9.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.
@@ -617,7 +617,7 @@ function createMembersMethods(deps) {
617
617
  }
618
618
 
619
619
  // src/client/version-check.ts
620
- var SDK_VERSION = "2.7.0";
620
+ var SDK_VERSION = "2.9.0";
621
621
  var SDK_USER_AGENT = `FFID-SDK/${SDK_VERSION} (TypeScript)`;
622
622
  var SDK_VERSION_HEADER = "X-FFID-SDK-Version";
623
623
  function sdkHeaders() {
@@ -1660,6 +1660,56 @@ function createNewsletterMethods(deps) {
1660
1660
  return { subscribe, confirm, unsubscribe };
1661
1661
  }
1662
1662
 
1663
+ // src/inquiry/ffid-inquiry-client.ts
1664
+ var EXT_INQUIRY_ENDPOINT = "/api/v1/ext/inquiry";
1665
+ function trimOrEmpty2(s) {
1666
+ return typeof s === "string" ? s.trim() : "";
1667
+ }
1668
+ function createInquiryMethods(deps) {
1669
+ const { fetchWithAuth, createError } = deps;
1670
+ async function create(params) {
1671
+ const email = trimOrEmpty2(params.email);
1672
+ const name = trimOrEmpty2(params.name);
1673
+ const message = trimOrEmpty2(params.message);
1674
+ const termsVersion = trimOrEmpty2(params.termsVersion);
1675
+ const privacyVersion = trimOrEmpty2(params.privacyVersion);
1676
+ if (!email) return { error: createError("VALIDATION_ERROR", "email \u306F\u5FC5\u9808\u3067\u3059") };
1677
+ if (!name) return { error: createError("VALIDATION_ERROR", "name \u306F\u5FC5\u9808\u3067\u3059") };
1678
+ if (!message) return { error: createError("VALIDATION_ERROR", "message \u306F\u5FC5\u9808\u3067\u3059") };
1679
+ if (!termsVersion) {
1680
+ return { error: createError("VALIDATION_ERROR", "termsVersion \u306F\u5FC5\u9808\u3067\u3059") };
1681
+ }
1682
+ if (!privacyVersion) {
1683
+ return { error: createError("VALIDATION_ERROR", "privacyVersion \u306F\u5FC5\u9808\u3067\u3059") };
1684
+ }
1685
+ const inquiryFollowupOptIn = params.inquiryFollowupOptIn === true;
1686
+ const generalNewsletterOptIn = params.generalNewsletterOptIn === true;
1687
+ return fetchWithAuth(EXT_INQUIRY_ENDPOINT, {
1688
+ method: "POST",
1689
+ body: JSON.stringify({
1690
+ email,
1691
+ name,
1692
+ message,
1693
+ category: params.category,
1694
+ company: params.company,
1695
+ phone: params.phone,
1696
+ locale: params.locale,
1697
+ termsVersion,
1698
+ privacyVersion,
1699
+ // The ext endpoint still accepts the legacy single-flag field, but
1700
+ // the SDK always submits the 2-layer model. `newsletterOptIn` is
1701
+ // passed as the union of the two new flags only to satisfy the
1702
+ // current schema's required bool — the server preferentially
1703
+ // reads `inquiryFollowupOptIn` / `generalNewsletterOptIn`.
1704
+ newsletterOptIn: inquiryFollowupOptIn || generalNewsletterOptIn,
1705
+ inquiryFollowupOptIn,
1706
+ generalNewsletterOptIn
1707
+ })
1708
+ });
1709
+ }
1710
+ return { create };
1711
+ }
1712
+
1663
1713
  // src/client/ffid-client.ts
1664
1714
  var UNAUTHORIZED_STATUS2 = 401;
1665
1715
  var SDK_LOG_PREFIX = "[FFID SDK]";
@@ -1940,6 +1990,10 @@ function createFFIDClient(config) {
1940
1990
  baseUrl,
1941
1991
  createError
1942
1992
  });
1993
+ const inquiry = createInquiryMethods({
1994
+ fetchWithAuth,
1995
+ createError
1996
+ });
1943
1997
  const verifyAccessToken = createVerifyAccessToken({
1944
1998
  authMode,
1945
1999
  baseUrl,
@@ -1996,6 +2050,8 @@ function createFFIDClient(config) {
1996
2050
  verifyOtp,
1997
2051
  /** Newsletter methods (subscribe / confirm / unsubscribe) */
1998
2052
  newsletter,
2053
+ /** Inquiry methods (create) */
2054
+ inquiry,
1999
2055
  /** Token store (token mode only) */
2000
2056
  tokenStore,
2001
2057
  /** Resolved auth mode */
@@ -1,5 +1,47 @@
1
1
  export { D as DEFAULT_API_BASE_URL } from '../constants-DvTGHPZn.cjs';
2
2
 
3
+ /**
4
+ * Inquiry types exposed by the FFID SDK.
5
+ *
6
+ * Mirrors the `/api/v1/ext/inquiry` and `/api/contact` endpoints
7
+ * with a single shared shape so that consumers can render one
8
+ * `<FFIDInquiryForm />` and submit through either endpoint.
9
+ */
10
+ /**
11
+ * Categories surfaced by the default form. Consumers are free to
12
+ * pass their own list via `<FFIDInquiryForm categories={...} />`.
13
+ */
14
+ declare const FFID_INQUIRY_CATEGORIES: readonly ["general", "sales", "support", "partnership", "press", "other"];
15
+ type FFIDInquiryCategory = (typeof FFID_INQUIRY_CATEGORIES)[number];
16
+ /**
17
+ * Parameters for `client.inquiry.create()`. When submitting from a
18
+ * server-side SDK (Service API Key), set `source` to a stable
19
+ * origin string so admins can trace the submission back.
20
+ */
21
+ interface FFIDInquiryCreateParams {
22
+ email: string;
23
+ name: string;
24
+ message: string;
25
+ category?: FFIDInquiryCategory | (string & {});
26
+ company?: string;
27
+ phone?: string;
28
+ locale?: 'ja' | 'en';
29
+ /** Current terms-of-service version the submitter agreed to. */
30
+ termsVersion: string;
31
+ /** Current privacy-policy version the submitter agreed to. */
32
+ privacyVersion: string;
33
+ /** Opt-in to the post-inquiry follow-up newsletter (Type A). */
34
+ inquiryFollowupOptIn?: boolean;
35
+ /** Opt-in to the general marketing newsletter (Type B). */
36
+ generalNewsletterOptIn?: boolean;
37
+ }
38
+ interface FFIDInquiryCreateResponse {
39
+ ok: true;
40
+ inquiryId: string;
41
+ /** True only when the submitter is already a confirmed newsletter subscriber. */
42
+ newsletterSubscribed: boolean;
43
+ }
44
+
3
45
  /**
4
46
  * Newsletter types exposed by the FFID SDK.
5
47
  *
@@ -831,6 +873,10 @@ declare function createFFIDClient(config: FFIDConfig): {
831
873
  confirm: (params: FFIDNewsletterConfirmParams) => Promise<FFIDApiResponse<FFIDNewsletterConfirmResponse>>;
832
874
  unsubscribe: (params: FFIDNewsletterUnsubscribeParams) => Promise<FFIDApiResponse<FFIDNewsletterUnsubscribeResponse>>;
833
875
  };
876
+ /** Inquiry methods (create) */
877
+ inquiry: {
878
+ create: (params: FFIDInquiryCreateParams) => Promise<FFIDApiResponse<FFIDInquiryCreateResponse>>;
879
+ };
834
880
  /** Token store (token mode only) */
835
881
  tokenStore: TokenStore;
836
882
  /** Resolved auth mode */
@@ -1,5 +1,47 @@
1
1
  export { D as DEFAULT_API_BASE_URL } from '../constants-DvTGHPZn.js';
2
2
 
3
+ /**
4
+ * Inquiry types exposed by the FFID SDK.
5
+ *
6
+ * Mirrors the `/api/v1/ext/inquiry` and `/api/contact` endpoints
7
+ * with a single shared shape so that consumers can render one
8
+ * `<FFIDInquiryForm />` and submit through either endpoint.
9
+ */
10
+ /**
11
+ * Categories surfaced by the default form. Consumers are free to
12
+ * pass their own list via `<FFIDInquiryForm categories={...} />`.
13
+ */
14
+ declare const FFID_INQUIRY_CATEGORIES: readonly ["general", "sales", "support", "partnership", "press", "other"];
15
+ type FFIDInquiryCategory = (typeof FFID_INQUIRY_CATEGORIES)[number];
16
+ /**
17
+ * Parameters for `client.inquiry.create()`. When submitting from a
18
+ * server-side SDK (Service API Key), set `source` to a stable
19
+ * origin string so admins can trace the submission back.
20
+ */
21
+ interface FFIDInquiryCreateParams {
22
+ email: string;
23
+ name: string;
24
+ message: string;
25
+ category?: FFIDInquiryCategory | (string & {});
26
+ company?: string;
27
+ phone?: string;
28
+ locale?: 'ja' | 'en';
29
+ /** Current terms-of-service version the submitter agreed to. */
30
+ termsVersion: string;
31
+ /** Current privacy-policy version the submitter agreed to. */
32
+ privacyVersion: string;
33
+ /** Opt-in to the post-inquiry follow-up newsletter (Type A). */
34
+ inquiryFollowupOptIn?: boolean;
35
+ /** Opt-in to the general marketing newsletter (Type B). */
36
+ generalNewsletterOptIn?: boolean;
37
+ }
38
+ interface FFIDInquiryCreateResponse {
39
+ ok: true;
40
+ inquiryId: string;
41
+ /** True only when the submitter is already a confirmed newsletter subscriber. */
42
+ newsletterSubscribed: boolean;
43
+ }
44
+
3
45
  /**
4
46
  * Newsletter types exposed by the FFID SDK.
5
47
  *
@@ -831,6 +873,10 @@ declare function createFFIDClient(config: FFIDConfig): {
831
873
  confirm: (params: FFIDNewsletterConfirmParams) => Promise<FFIDApiResponse<FFIDNewsletterConfirmResponse>>;
832
874
  unsubscribe: (params: FFIDNewsletterUnsubscribeParams) => Promise<FFIDApiResponse<FFIDNewsletterUnsubscribeResponse>>;
833
875
  };
876
+ /** Inquiry methods (create) */
877
+ inquiry: {
878
+ create: (params: FFIDInquiryCreateParams) => Promise<FFIDApiResponse<FFIDInquiryCreateResponse>>;
879
+ };
834
880
  /** Token store (token mode only) */
835
881
  tokenStore: TokenStore;
836
882
  /** Resolved auth mode */
@@ -616,7 +616,7 @@ function createMembersMethods(deps) {
616
616
  }
617
617
 
618
618
  // src/client/version-check.ts
619
- var SDK_VERSION = "2.7.0";
619
+ var SDK_VERSION = "2.9.0";
620
620
  var SDK_USER_AGENT = `FFID-SDK/${SDK_VERSION} (TypeScript)`;
621
621
  var SDK_VERSION_HEADER = "X-FFID-SDK-Version";
622
622
  function sdkHeaders() {
@@ -1659,6 +1659,56 @@ function createNewsletterMethods(deps) {
1659
1659
  return { subscribe, confirm, unsubscribe };
1660
1660
  }
1661
1661
 
1662
+ // src/inquiry/ffid-inquiry-client.ts
1663
+ var EXT_INQUIRY_ENDPOINT = "/api/v1/ext/inquiry";
1664
+ function trimOrEmpty2(s) {
1665
+ return typeof s === "string" ? s.trim() : "";
1666
+ }
1667
+ function createInquiryMethods(deps) {
1668
+ const { fetchWithAuth, createError } = deps;
1669
+ async function create(params) {
1670
+ const email = trimOrEmpty2(params.email);
1671
+ const name = trimOrEmpty2(params.name);
1672
+ const message = trimOrEmpty2(params.message);
1673
+ const termsVersion = trimOrEmpty2(params.termsVersion);
1674
+ const privacyVersion = trimOrEmpty2(params.privacyVersion);
1675
+ if (!email) return { error: createError("VALIDATION_ERROR", "email \u306F\u5FC5\u9808\u3067\u3059") };
1676
+ if (!name) return { error: createError("VALIDATION_ERROR", "name \u306F\u5FC5\u9808\u3067\u3059") };
1677
+ if (!message) return { error: createError("VALIDATION_ERROR", "message \u306F\u5FC5\u9808\u3067\u3059") };
1678
+ if (!termsVersion) {
1679
+ return { error: createError("VALIDATION_ERROR", "termsVersion \u306F\u5FC5\u9808\u3067\u3059") };
1680
+ }
1681
+ if (!privacyVersion) {
1682
+ return { error: createError("VALIDATION_ERROR", "privacyVersion \u306F\u5FC5\u9808\u3067\u3059") };
1683
+ }
1684
+ const inquiryFollowupOptIn = params.inquiryFollowupOptIn === true;
1685
+ const generalNewsletterOptIn = params.generalNewsletterOptIn === true;
1686
+ return fetchWithAuth(EXT_INQUIRY_ENDPOINT, {
1687
+ method: "POST",
1688
+ body: JSON.stringify({
1689
+ email,
1690
+ name,
1691
+ message,
1692
+ category: params.category,
1693
+ company: params.company,
1694
+ phone: params.phone,
1695
+ locale: params.locale,
1696
+ termsVersion,
1697
+ privacyVersion,
1698
+ // The ext endpoint still accepts the legacy single-flag field, but
1699
+ // the SDK always submits the 2-layer model. `newsletterOptIn` is
1700
+ // passed as the union of the two new flags only to satisfy the
1701
+ // current schema's required bool — the server preferentially
1702
+ // reads `inquiryFollowupOptIn` / `generalNewsletterOptIn`.
1703
+ newsletterOptIn: inquiryFollowupOptIn || generalNewsletterOptIn,
1704
+ inquiryFollowupOptIn,
1705
+ generalNewsletterOptIn
1706
+ })
1707
+ });
1708
+ }
1709
+ return { create };
1710
+ }
1711
+
1662
1712
  // src/client/ffid-client.ts
1663
1713
  var UNAUTHORIZED_STATUS2 = 401;
1664
1714
  var SDK_LOG_PREFIX = "[FFID SDK]";
@@ -1939,6 +1989,10 @@ function createFFIDClient(config) {
1939
1989
  baseUrl,
1940
1990
  createError
1941
1991
  });
1992
+ const inquiry = createInquiryMethods({
1993
+ fetchWithAuth,
1994
+ createError
1995
+ });
1942
1996
  const verifyAccessToken = createVerifyAccessToken({
1943
1997
  authMode,
1944
1998
  baseUrl,
@@ -1995,6 +2049,8 @@ function createFFIDClient(config) {
1995
2049
  verifyOtp,
1996
2050
  /** Newsletter methods (subscribe / confirm / unsubscribe) */
1997
2051
  newsletter,
2052
+ /** Inquiry methods (create) */
2053
+ inquiry,
1998
2054
  /** Token store (token mode only) */
1999
2055
  tokenStore,
2000
2056
  /** Resolved auth mode */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@feelflow/ffid-sdk",
3
- "version": "2.7.0",
3
+ "version": "2.9.0",
4
4
  "description": "FeelFlow ID Platform SDK for React/Next.js applications",
5
5
  "keywords": [
6
6
  "feelflow",