@feelflow/ffid-sdk 6.0.0 → 7.1.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.
@@ -1298,6 +1298,310 @@ function createMembersMethods(deps) {
1298
1298
  return { listMembers, addMember, updateMemberRole, removeMember };
1299
1299
  }
1300
1300
 
1301
+ // src/types/organization-profile.ts
1302
+ var FFID_INDUSTRY_CODES = [
1303
+ "agriculture",
1304
+ "construction",
1305
+ "manufacturing",
1306
+ "it-software",
1307
+ "telecom",
1308
+ "media",
1309
+ "retail",
1310
+ "wholesale",
1311
+ "finance-insurance",
1312
+ "real-estate",
1313
+ "transport-logistics",
1314
+ "hospitality-food",
1315
+ "healthcare",
1316
+ "education",
1317
+ "professional-services",
1318
+ "marketing-advertising",
1319
+ "energy-utilities",
1320
+ "public-sector",
1321
+ "nonprofit",
1322
+ "other"
1323
+ ];
1324
+ var FFID_COMPANY_SIZE_CODES = [
1325
+ "1-10",
1326
+ "11-50",
1327
+ "51-200",
1328
+ "201-500",
1329
+ "501-1000",
1330
+ "1001+"
1331
+ ];
1332
+ var BYTES_PER_KB = 1024;
1333
+ var KB_PER_MB = 1024;
1334
+ var FFID_MAX_ORGANIZATION_LOGO_FILE_SIZE_MB = 2;
1335
+ var FFID_MAX_ORGANIZATION_LOGO_FILE_SIZE_BYTES = FFID_MAX_ORGANIZATION_LOGO_FILE_SIZE_MB * KB_PER_MB * BYTES_PER_KB;
1336
+ var FFID_ALLOWED_ORGANIZATION_LOGO_MIME_TYPES = [
1337
+ "image/png",
1338
+ "image/jpeg",
1339
+ "image/webp"
1340
+ ];
1341
+ var FFID_ORGANIZATION_PROFILE_ERROR_CODES = {
1342
+ VALIDATION_ERROR: "VALIDATION_ERROR",
1343
+ ORGANIZATION_NOT_FOUND: "ORGANIZATION_NOT_FOUND",
1344
+ CONSENTED_BY_NOT_MEMBER: "CONSENTED_BY_NOT_MEMBER",
1345
+ MISSING_FILE: "MISSING_FILE",
1346
+ INVALID_FILE_TYPE: "INVALID_FILE_TYPE",
1347
+ FILE_TOO_LARGE: "FILE_TOO_LARGE",
1348
+ INVALID_IMAGE: "INVALID_IMAGE",
1349
+ LOGO_UPLOAD_FAILED: "LOGO_UPLOAD_FAILED"
1350
+ };
1351
+
1352
+ // src/client/version-check.ts
1353
+ var SDK_VERSION = "7.1.0";
1354
+ var SDK_USER_AGENT = `FFID-SDK/${SDK_VERSION} (TypeScript)`;
1355
+ var SDK_VERSION_HEADER = "X-FFID-SDK-Version";
1356
+ function sdkHeaders() {
1357
+ if (typeof window !== "undefined") return {};
1358
+ return {
1359
+ "User-Agent": SDK_USER_AGENT,
1360
+ [SDK_VERSION_HEADER]: SDK_VERSION
1361
+ };
1362
+ }
1363
+ var LATEST_VERSION_HEADER = "X-FFID-SDK-Latest-Version";
1364
+ var SEMVER_PATTERN = /^\d+(\.\d+)*$/;
1365
+ var _versionWarningShown = false;
1366
+ function compareSemver(a, b) {
1367
+ const cleanA = a.replace(/^v/, "");
1368
+ const cleanB = b.replace(/^v/, "");
1369
+ if (!SEMVER_PATTERN.test(cleanA) || !SEMVER_PATTERN.test(cleanB)) return 0;
1370
+ const partsA = cleanA.split(".").map(Number);
1371
+ const partsB = cleanB.split(".").map(Number);
1372
+ const maxLen = Math.max(partsA.length, partsB.length);
1373
+ for (let i = 0; i < maxLen; i++) {
1374
+ const numA = partsA[i] ?? 0;
1375
+ const numB = partsB[i] ?? 0;
1376
+ if (numA < numB) return -1;
1377
+ if (numA > numB) return 1;
1378
+ }
1379
+ return 0;
1380
+ }
1381
+ function checkVersionHeader(response, logger) {
1382
+ if (_versionWarningShown) return;
1383
+ if (typeof process !== "undefined" && process.env?.NODE_ENV === "production") return;
1384
+ if (!response.headers?.get) return;
1385
+ const latestVersion = response.headers.get(LATEST_VERSION_HEADER);
1386
+ if (!latestVersion) return;
1387
+ if (compareSemver(SDK_VERSION, latestVersion) < 0) {
1388
+ _versionWarningShown = true;
1389
+ logger.warn(
1390
+ `\u65B0\u3057\u3044\u30D0\u30FC\u30B8\u30E7\u30F3\u304C\u5229\u7528\u53EF\u80FD\u3067\u3059: v${latestVersion} (\u73FE\u5728: v${SDK_VERSION})
1391
+ npm install @feelflow/ffid-sdk@latest \u3067\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u3067\u304D\u307E\u3059`
1392
+ );
1393
+ }
1394
+ }
1395
+
1396
+ // src/client/organization-profile-methods.ts
1397
+ var EXT_PROFILE_ENDPOINT = "/api/v1/organizations/ext/profile";
1398
+ var EXT_PROFILE_LOGO_ENDPOINT = "/api/v1/organizations/ext/profile/logo";
1399
+ var LOGO_WALL_ENDPOINT = "/api/v1/organizations/logo-wall";
1400
+ var DEFAULT_LOGO_UPLOAD_FILENAME = "logo";
1401
+ function isBlank(value) {
1402
+ return !value || !value.trim();
1403
+ }
1404
+ function resolveOrganizationId(organizationIdOrParams) {
1405
+ return typeof organizationIdOrParams === "string" ? organizationIdOrParams : organizationIdOrParams.organizationId;
1406
+ }
1407
+ function resolveUpsertParams(organizationIdOrParams, payload) {
1408
+ if (typeof organizationIdOrParams === "string") {
1409
+ return { ...payload, organizationId: organizationIdOrParams };
1410
+ }
1411
+ return organizationIdOrParams;
1412
+ }
1413
+ function resolveUploadParams(organizationIdOrParams, file) {
1414
+ if (typeof organizationIdOrParams === "string") {
1415
+ return { organizationId: organizationIdOrParams, file };
1416
+ }
1417
+ return organizationIdOrParams;
1418
+ }
1419
+ function buildUpsertBody(params) {
1420
+ const { organizationId, ...body } = params;
1421
+ return body;
1422
+ }
1423
+ function profileQuery(organizationId) {
1424
+ return new URLSearchParams({ organizationId }).toString();
1425
+ }
1426
+ function logoUploadFilename(file) {
1427
+ if (typeof File !== "undefined" && file instanceof File && file.name) {
1428
+ return file.name;
1429
+ }
1430
+ return DEFAULT_LOGO_UPLOAD_FILENAME;
1431
+ }
1432
+ function listingConsentValidationError(listingConsent, createError) {
1433
+ if (!listingConsent || listingConsent.consented !== true) return null;
1434
+ if (isBlank(listingConsent.consentVersion) || isBlank(listingConsent.consentedByUserId)) {
1435
+ return createError(
1436
+ FFID_ORGANIZATION_PROFILE_ERROR_CODES.VALIDATION_ERROR,
1437
+ "\u63B2\u8F09\u540C\u610F\u3092\u8A18\u9332\u3059\u308B\u5834\u5408\u306F consentVersion \u3068 consentedByUserId \u304C\u5FC5\u9808\u3067\u3059"
1438
+ );
1439
+ }
1440
+ return null;
1441
+ }
1442
+ function resolveLogoFile(file, createError) {
1443
+ if (!file) {
1444
+ return {
1445
+ ok: false,
1446
+ error: createError(
1447
+ FFID_ORGANIZATION_PROFILE_ERROR_CODES.MISSING_FILE,
1448
+ "file \u30D5\u30A3\u30FC\u30EB\u30C9\u306B\u30ED\u30B4\u753B\u50CF\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044"
1449
+ )
1450
+ };
1451
+ }
1452
+ if (file.size > FFID_MAX_ORGANIZATION_LOGO_FILE_SIZE_BYTES) {
1453
+ return {
1454
+ ok: false,
1455
+ error: createError(
1456
+ FFID_ORGANIZATION_PROFILE_ERROR_CODES.FILE_TOO_LARGE,
1457
+ `\u30ED\u30B4\u753B\u50CF\u306F${FFID_MAX_ORGANIZATION_LOGO_FILE_SIZE_MB}MB\u4EE5\u4E0B\u306B\u3057\u3066\u304F\u3060\u3055\u3044`
1458
+ )
1459
+ };
1460
+ }
1461
+ if (file.type !== "" && !FFID_ALLOWED_ORGANIZATION_LOGO_MIME_TYPES.includes(file.type)) {
1462
+ return {
1463
+ ok: false,
1464
+ error: createError(
1465
+ FFID_ORGANIZATION_PROFILE_ERROR_CODES.INVALID_FILE_TYPE,
1466
+ "\u30ED\u30B4\u753B\u50CF\u306F PNG / JPEG / WebP \u5F62\u5F0F\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044"
1467
+ )
1468
+ };
1469
+ }
1470
+ return { ok: true, file };
1471
+ }
1472
+ function createOrganizationProfileMethods(deps) {
1473
+ const { fetchWithAuth, createError, authMode, baseUrl, logger, errorCodes } = deps;
1474
+ function serviceKeyModeError() {
1475
+ if (authMode === "service-key") return null;
1476
+ return createError(
1477
+ FFID_ORGANIZATION_PROFILE_ERROR_CODES.VALIDATION_ERROR,
1478
+ "getOrganizationProfile / upsertOrganizationProfile / uploadOrganizationLogo \u306F service-key \u8A8D\u8A3C\uFF08X-Service-Api-Key\uFF09\u3067\u306E\u307F\u5229\u7528\u3067\u304D\u307E\u3059\u3002Bearer / cookie \u30E2\u30FC\u30C9\u3067\u306F\u547C\u3073\u51FA\u305B\u307E\u305B\u3093"
1479
+ );
1480
+ }
1481
+ function requireOrganizationId(organizationId) {
1482
+ if (isBlank(organizationId)) {
1483
+ return createError(
1484
+ FFID_ORGANIZATION_PROFILE_ERROR_CODES.VALIDATION_ERROR,
1485
+ "organizationId \u306F\u5FC5\u9808\u3067\u3059"
1486
+ );
1487
+ }
1488
+ return null;
1489
+ }
1490
+ async function fetchPublic(endpoint, options = {}) {
1491
+ const url = `${baseUrl}${endpoint}`;
1492
+ logger.debug("Fetching (public):", url);
1493
+ let response;
1494
+ try {
1495
+ response = await fetch(url, {
1496
+ ...options,
1497
+ credentials: "omit",
1498
+ headers: {
1499
+ ...sdkHeaders(),
1500
+ ...options.headers
1501
+ }
1502
+ });
1503
+ } catch (error) {
1504
+ logger.error("Network error:", error);
1505
+ return {
1506
+ error: {
1507
+ code: errorCodes.NETWORK_ERROR,
1508
+ message: error instanceof Error ? error.message : "\u30CD\u30C3\u30C8\u30EF\u30FC\u30AF\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F"
1509
+ }
1510
+ };
1511
+ }
1512
+ let parsed;
1513
+ try {
1514
+ parsed = await response.json();
1515
+ } catch (parseError) {
1516
+ logger.error("Parse error:", parseError, "Status:", response.status);
1517
+ return {
1518
+ error: {
1519
+ code: errorCodes.PARSE_ERROR,
1520
+ message: `\u30B5\u30FC\u30D0\u30FC\u304B\u3089\u4E0D\u6B63\u306A\u30EC\u30B9\u30DD\u30F3\u30B9\u3092\u53D7\u4FE1\u3057\u307E\u3057\u305F (status: ${response.status})`
1521
+ }
1522
+ };
1523
+ }
1524
+ if (!parsed || typeof parsed !== "object") {
1525
+ return {
1526
+ error: {
1527
+ code: errorCodes.PARSE_ERROR,
1528
+ message: `\u30B5\u30FC\u30D0\u30FC\u304B\u3089\u4E0D\u6B63\u306A\u30EC\u30B9\u30DD\u30F3\u30B9\u3092\u53D7\u4FE1\u3057\u307E\u3057\u305F (status: ${response.status})`
1529
+ }
1530
+ };
1531
+ }
1532
+ const raw = parsed;
1533
+ logger.debug("Response (public):", response.status, raw);
1534
+ checkVersionHeader(response, logger);
1535
+ if (!response.ok) {
1536
+ return {
1537
+ error: raw.error ?? {
1538
+ code: errorCodes.UNKNOWN_ERROR,
1539
+ message: "\u4E0D\u660E\u306A\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F"
1540
+ }
1541
+ };
1542
+ }
1543
+ if (raw.data === void 0) {
1544
+ return {
1545
+ error: {
1546
+ code: errorCodes.UNKNOWN_ERROR,
1547
+ message: "\u30B5\u30FC\u30D0\u30FC\u304B\u3089\u30C7\u30FC\u30BF\u304C\u8FD4\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F"
1548
+ }
1549
+ };
1550
+ }
1551
+ return { data: raw.data };
1552
+ }
1553
+ async function getOrganizationProfile(organizationIdOrParams) {
1554
+ const modeError = serviceKeyModeError();
1555
+ if (modeError) return { error: modeError };
1556
+ const organizationId = resolveOrganizationId(organizationIdOrParams);
1557
+ const idError = requireOrganizationId(organizationId);
1558
+ if (idError) return { error: idError };
1559
+ return fetchWithAuth(
1560
+ `${EXT_PROFILE_ENDPOINT}?${profileQuery(organizationId)}`
1561
+ );
1562
+ }
1563
+ async function upsertOrganizationProfile(organizationIdOrParams, payload) {
1564
+ const modeError = serviceKeyModeError();
1565
+ if (modeError) return { error: modeError };
1566
+ const params = resolveUpsertParams(organizationIdOrParams, payload);
1567
+ const idError = requireOrganizationId(params.organizationId);
1568
+ if (idError) return { error: idError };
1569
+ const consentError = listingConsentValidationError(params.listingConsent, createError);
1570
+ if (consentError) return { error: consentError };
1571
+ return fetchWithAuth(
1572
+ `${EXT_PROFILE_ENDPOINT}?${profileQuery(params.organizationId)}`,
1573
+ {
1574
+ method: "PUT",
1575
+ body: JSON.stringify(buildUpsertBody(params))
1576
+ }
1577
+ );
1578
+ }
1579
+ async function uploadOrganizationLogo(organizationIdOrParams, file) {
1580
+ const modeError = serviceKeyModeError();
1581
+ if (modeError) return { error: modeError };
1582
+ const params = resolveUploadParams(organizationIdOrParams, file);
1583
+ const idError = requireOrganizationId(params.organizationId);
1584
+ if (idError) return { error: idError };
1585
+ const logoFile = resolveLogoFile(params.file, createError);
1586
+ if (!logoFile.ok) return { error: logoFile.error };
1587
+ const form = new FormData();
1588
+ form.append("file", logoFile.file, logoUploadFilename(logoFile.file));
1589
+ return fetchWithAuth(
1590
+ `${EXT_PROFILE_LOGO_ENDPOINT}?${profileQuery(params.organizationId)}`,
1591
+ { method: "POST", body: form }
1592
+ );
1593
+ }
1594
+ async function getPublicLogoWall() {
1595
+ return fetchPublic(LOGO_WALL_ENDPOINT);
1596
+ }
1597
+ return {
1598
+ getOrganizationProfile,
1599
+ upsertOrganizationProfile,
1600
+ uploadOrganizationLogo,
1601
+ getPublicLogoWall
1602
+ };
1603
+ }
1604
+
1301
1605
  // src/client/provisioning-methods.ts
1302
1606
  var USER_PROVISION_ENDPOINT = "/api/v1/ext/users/provision";
1303
1607
  var USER_WELCOME_EMAIL_ENDPOINT = "/api/v1/ext/users/welcome-email";
@@ -1441,7 +1745,7 @@ function createSeatMethods(deps) {
1441
1745
  }
1442
1746
 
1443
1747
  // src/client/profile-methods.ts
1444
- var EXT_PROFILE_ENDPOINT = "/api/v1/users/ext/me";
1748
+ var EXT_PROFILE_ENDPOINT2 = "/api/v1/users/ext/me";
1445
1749
  function resolveAuthOverride(options, createError) {
1446
1750
  if (!options || options.accessToken === void 0) {
1447
1751
  return {};
@@ -1462,7 +1766,7 @@ function createProfileMethods(deps) {
1462
1766
  async function getProfile(options) {
1463
1767
  const { override, error } = resolveAuthOverride(options, createError);
1464
1768
  if (error) return { error };
1465
- return fetchWithAuth(EXT_PROFILE_ENDPOINT, void 0, override);
1769
+ return fetchWithAuth(EXT_PROFILE_ENDPOINT2, void 0, override);
1466
1770
  }
1467
1771
  async function updateProfile(data, options) {
1468
1772
  if (data === null || typeof data !== "object" || Array.isArray(data)) {
@@ -1478,7 +1782,7 @@ function createProfileMethods(deps) {
1478
1782
  const { override, error } = resolveAuthOverride(options, createError);
1479
1783
  if (error) return { error };
1480
1784
  return fetchWithAuth(
1481
- EXT_PROFILE_ENDPOINT,
1785
+ EXT_PROFILE_ENDPOINT2,
1482
1786
  {
1483
1787
  method: "PUT",
1484
1788
  body: JSON.stringify(data)
@@ -1671,50 +1975,6 @@ function validateTokenResponse(tokenResponse) {
1671
1975
  };
1672
1976
  }
1673
1977
 
1674
- // src/client/version-check.ts
1675
- var SDK_VERSION = "6.0.0";
1676
- var SDK_USER_AGENT = `FFID-SDK/${SDK_VERSION} (TypeScript)`;
1677
- var SDK_VERSION_HEADER = "X-FFID-SDK-Version";
1678
- function sdkHeaders() {
1679
- if (typeof window !== "undefined") return {};
1680
- return {
1681
- "User-Agent": SDK_USER_AGENT,
1682
- [SDK_VERSION_HEADER]: SDK_VERSION
1683
- };
1684
- }
1685
- var LATEST_VERSION_HEADER = "X-FFID-SDK-Latest-Version";
1686
- var SEMVER_PATTERN = /^\d+(\.\d+)*$/;
1687
- var _versionWarningShown = false;
1688
- function compareSemver(a, b) {
1689
- const cleanA = a.replace(/^v/, "");
1690
- const cleanB = b.replace(/^v/, "");
1691
- if (!SEMVER_PATTERN.test(cleanA) || !SEMVER_PATTERN.test(cleanB)) return 0;
1692
- const partsA = cleanA.split(".").map(Number);
1693
- const partsB = cleanB.split(".").map(Number);
1694
- const maxLen = Math.max(partsA.length, partsB.length);
1695
- for (let i = 0; i < maxLen; i++) {
1696
- const numA = partsA[i] ?? 0;
1697
- const numB = partsB[i] ?? 0;
1698
- if (numA < numB) return -1;
1699
- if (numA > numB) return 1;
1700
- }
1701
- return 0;
1702
- }
1703
- function checkVersionHeader(response, logger) {
1704
- if (_versionWarningShown) return;
1705
- if (typeof process !== "undefined" && process.env?.NODE_ENV === "production") return;
1706
- if (!response.headers?.get) return;
1707
- const latestVersion = response.headers.get(LATEST_VERSION_HEADER);
1708
- if (!latestVersion) return;
1709
- if (compareSemver(SDK_VERSION, latestVersion) < 0) {
1710
- _versionWarningShown = true;
1711
- logger.warn(
1712
- `\u65B0\u3057\u3044\u30D0\u30FC\u30B8\u30E7\u30F3\u304C\u5229\u7528\u53EF\u80FD\u3067\u3059: v${latestVersion} (\u73FE\u5728: v${SDK_VERSION})
1713
- npm install @feelflow/ffid-sdk@latest \u3067\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u3067\u304D\u307E\u3059`
1714
- );
1715
- }
1716
- }
1717
-
1718
1978
  // src/client/oauth-token.ts
1719
1979
  var OAUTH_TOKEN_ENDPOINT = "/api/v1/oauth/token";
1720
1980
  var OAUTH_REVOKE_ENDPOINT = "/api/v1/oauth/revoke";
@@ -2535,7 +2795,7 @@ function normalizeRedirectUri(input) {
2535
2795
 
2536
2796
  // src/client/password-reset.ts
2537
2797
  var RESET_PASSWORD_BASE = "/api/v1/auth/reset-password";
2538
- function isBlank(value) {
2798
+ function isBlank2(value) {
2539
2799
  return !value || !value.trim();
2540
2800
  }
2541
2801
  function createPasswordResetMethods(deps) {
@@ -2596,7 +2856,7 @@ function createPasswordResetMethods(deps) {
2596
2856
  return { data: raw.data };
2597
2857
  }
2598
2858
  async function requestPasswordReset(email) {
2599
- if (isBlank(email)) {
2859
+ if (isBlank2(email)) {
2600
2860
  return {
2601
2861
  error: createError("VALIDATION_ERROR", "\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u306F\u5FC5\u9808\u3067\u3059")
2602
2862
  };
@@ -2610,7 +2870,7 @@ function createPasswordResetMethods(deps) {
2610
2870
  );
2611
2871
  }
2612
2872
  async function verifyPasswordResetToken(accessToken) {
2613
- if (isBlank(accessToken)) {
2873
+ if (isBlank2(accessToken)) {
2614
2874
  return {
2615
2875
  error: createError("VALIDATION_ERROR", "\u30A2\u30AF\u30BB\u30B9\u30C8\u30FC\u30AF\u30F3\u306F\u5FC5\u9808\u3067\u3059")
2616
2876
  };
@@ -2624,12 +2884,12 @@ function createPasswordResetMethods(deps) {
2624
2884
  );
2625
2885
  }
2626
2886
  async function establishResetSession(accessToken, refreshToken) {
2627
- if (isBlank(accessToken)) {
2887
+ if (isBlank2(accessToken)) {
2628
2888
  return {
2629
2889
  error: createError("VALIDATION_ERROR", "\u30A2\u30AF\u30BB\u30B9\u30C8\u30FC\u30AF\u30F3\u306F\u5FC5\u9808\u3067\u3059")
2630
2890
  };
2631
2891
  }
2632
- if (isBlank(refreshToken)) {
2892
+ if (isBlank2(refreshToken)) {
2633
2893
  return {
2634
2894
  error: createError("VALIDATION_ERROR", "\u30EA\u30D5\u30EC\u30C3\u30B7\u30E5\u30C8\u30FC\u30AF\u30F3\u306F\u5FC5\u9808\u3067\u3059")
2635
2895
  };
@@ -2643,7 +2903,7 @@ function createPasswordResetMethods(deps) {
2643
2903
  );
2644
2904
  }
2645
2905
  async function confirmPasswordReset(password) {
2646
- if (isBlank(password)) {
2906
+ if (isBlank2(password)) {
2647
2907
  return {
2648
2908
  error: createError("VALIDATION_ERROR", "\u30D1\u30B9\u30EF\u30FC\u30C9\u306F\u5FC5\u9808\u3067\u3059")
2649
2909
  };
@@ -2666,7 +2926,7 @@ function createPasswordResetMethods(deps) {
2666
2926
 
2667
2927
  // src/client/otp.ts
2668
2928
  var OTP_BASE = "/api/v1/auth/otp";
2669
- function isBlank2(value) {
2929
+ function isBlank3(value) {
2670
2930
  return !value || !value.trim();
2671
2931
  }
2672
2932
  function createOtpMethods(deps) {
@@ -2727,7 +2987,7 @@ function createOtpMethods(deps) {
2727
2987
  return { data: raw.data };
2728
2988
  }
2729
2989
  async function sendOtp(email, options) {
2730
- if (isBlank2(email)) {
2990
+ if (isBlank3(email)) {
2731
2991
  return {
2732
2992
  error: createError("VALIDATION_ERROR", "\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u306F\u5FC5\u9808\u3067\u3059")
2733
2993
  };
@@ -2744,12 +3004,12 @@ function createOtpMethods(deps) {
2744
3004
  );
2745
3005
  }
2746
3006
  async function verifyOtp(params) {
2747
- if (isBlank2(params.accessToken)) {
3007
+ if (isBlank3(params.accessToken)) {
2748
3008
  return {
2749
3009
  error: createError("VALIDATION_ERROR", "\u30A2\u30AF\u30BB\u30B9\u30C8\u30FC\u30AF\u30F3\u306F\u5FC5\u9808\u3067\u3059")
2750
3010
  };
2751
3011
  }
2752
- if (isBlank2(params.refreshToken)) {
3012
+ if (isBlank3(params.refreshToken)) {
2753
3013
  return {
2754
3014
  error: createError("VALIDATION_ERROR", "\u30EA\u30D5\u30EC\u30C3\u30B7\u30E5\u30C8\u30FC\u30AF\u30F3\u306F\u5FC5\u9808\u3067\u3059")
2755
3015
  };
@@ -3240,6 +3500,12 @@ function resolveRedirectUri(raw, logger) {
3240
3500
  return raw;
3241
3501
  }
3242
3502
  }
3503
+ function jsonContentTypeHeader(body) {
3504
+ if (typeof FormData !== "undefined" && body instanceof FormData) {
3505
+ return {};
3506
+ }
3507
+ return { "Content-Type": "application/json" };
3508
+ }
3243
3509
  function createFFIDClient(config) {
3244
3510
  if (!config.serviceCode || !config.serviceCode.trim()) {
3245
3511
  throw new Error("FFID Client: serviceCode \u304C\u672A\u8A2D\u5B9A\u3067\u3059");
@@ -3292,7 +3558,7 @@ function createFFIDClient(config) {
3292
3558
  ...options,
3293
3559
  credentials: "omit",
3294
3560
  headers: {
3295
- "Content-Type": "application/json",
3561
+ ...jsonContentTypeHeader(options.body),
3296
3562
  ...sdkHeaders(),
3297
3563
  ...options.headers,
3298
3564
  Authorization: `Bearer ${authOverride.accessToken}`
@@ -3304,7 +3570,7 @@ function createFFIDClient(config) {
3304
3570
  ...options,
3305
3571
  credentials: "omit",
3306
3572
  headers: {
3307
- "Content-Type": "application/json",
3573
+ ...jsonContentTypeHeader(options.body),
3308
3574
  ...sdkHeaders(),
3309
3575
  "X-Service-Api-Key": serviceApiKey,
3310
3576
  ...options.headers
@@ -3314,7 +3580,7 @@ function createFFIDClient(config) {
3314
3580
  if (authMode === "token") {
3315
3581
  const tokens = tokenStore.getTokens();
3316
3582
  const headers = {
3317
- "Content-Type": "application/json",
3583
+ ...jsonContentTypeHeader(options.body),
3318
3584
  ...sdkHeaders(),
3319
3585
  ...options.headers
3320
3586
  };
@@ -3331,7 +3597,7 @@ function createFFIDClient(config) {
3331
3597
  ...options,
3332
3598
  credentials: "include",
3333
3599
  headers: {
3334
- "Content-Type": "application/json",
3600
+ ...jsonContentTypeHeader(options.body),
3335
3601
  ...sdkHeaders(),
3336
3602
  ...options.headers
3337
3603
  }
@@ -3548,6 +3814,19 @@ function createFFIDClient(config) {
3548
3814
  createError,
3549
3815
  serviceCode: config.serviceCode
3550
3816
  });
3817
+ const {
3818
+ getOrganizationProfile,
3819
+ upsertOrganizationProfile,
3820
+ uploadOrganizationLogo,
3821
+ getPublicLogoWall
3822
+ } = createOrganizationProfileMethods({
3823
+ fetchWithAuth,
3824
+ createError,
3825
+ authMode,
3826
+ baseUrl,
3827
+ logger,
3828
+ errorCodes: FFID_ERROR_CODES
3829
+ });
3551
3830
  const { provisionUser, sendProvisionWelcomeEmail, provisionOrganization } = createProvisioningMethods({
3552
3831
  fetchWithAuth,
3553
3832
  createError,
@@ -3648,6 +3927,10 @@ function createFFIDClient(config) {
3648
3927
  addMember,
3649
3928
  updateMemberRole,
3650
3929
  removeMember,
3930
+ getOrganizationProfile,
3931
+ upsertOrganizationProfile,
3932
+ uploadOrganizationLogo,
3933
+ getPublicLogoWall,
3651
3934
  provisionUser,
3652
3935
  sendProvisionWelcomeEmail,
3653
3936
  provisionOrganization,
@@ -4118,9 +4401,15 @@ exports.CATALOG_HASH_PATTERN = CATALOG_HASH_PATTERN;
4118
4401
  exports.CONSENT_COOKIE_NAME = CONSENT_COOKIE_NAME;
4119
4402
  exports.COOKIE_VERSION = COOKIE_VERSION;
4120
4403
  exports.FFIDCatalogHashError = FFIDCatalogHashError;
4404
+ exports.FFID_ALLOWED_ORGANIZATION_LOGO_MIME_TYPES = FFID_ALLOWED_ORGANIZATION_LOGO_MIME_TYPES;
4121
4405
  exports.FFID_CATALOG_ENVIRONMENTS = FFID_CATALOG_ENVIRONMENTS;
4122
4406
  exports.FFID_CATALOG_PUBLICATION_STATUSES = FFID_CATALOG_PUBLICATION_STATUSES;
4407
+ exports.FFID_COMPANY_SIZE_CODES = FFID_COMPANY_SIZE_CODES;
4123
4408
  exports.FFID_ERROR_CODES = FFID_ERROR_CODES;
4409
+ exports.FFID_INDUSTRY_CODES = FFID_INDUSTRY_CODES;
4410
+ exports.FFID_MAX_ORGANIZATION_LOGO_FILE_SIZE_BYTES = FFID_MAX_ORGANIZATION_LOGO_FILE_SIZE_BYTES;
4411
+ exports.FFID_MAX_ORGANIZATION_LOGO_FILE_SIZE_MB = FFID_MAX_ORGANIZATION_LOGO_FILE_SIZE_MB;
4412
+ exports.FFID_ORGANIZATION_PROFILE_ERROR_CODES = FFID_ORGANIZATION_PROFILE_ERROR_CODES;
4124
4413
  exports.FFID_SESSION_COOKIE_NAME = FFID_SESSION_COOKIE_NAME;
4125
4414
  exports.canonicalizeCatalogValue = canonicalizeCatalogValue;
4126
4415
  exports.computeFFIDCheckoutCopyHash = computeFFIDCheckoutCopyHash;
@@ -1,5 +1,5 @@
1
- import { F as FFIDLogger, a as FFIDError, b as FFIDCacheAdapter, c as FFIDVerifyAccessTokenOptions, d as FFIDApiResponse, e as FFIDOAuthUserInfo, f as FFIDCatalogEnvironment, g as FFIDBillingInterval, h as FFIDTaxBehavior, i as FFIDPublishedCatalog } from '../ffid-client-C8XV7lUt.cjs';
2
- export { j as FFIDAddMemberParams, k as FFIDAddMemberRequest, l as FFIDAddMemberResponse, m as FFIDAssignableMemberRole, n as FFIDCacheConfig, o as FFIDCatalogPublication, p as FFIDCatalogPublicationStatus, q as FFIDClient, r as FFIDConfig, s as FFIDListMembersResponse, t as FFIDMemberRole, u as FFIDOrganization, v as FFIDOrganizationMember, w as FFIDOtpSendResponse, x as FFIDOtpVerifyResponse, y as FFIDPasswordResetConfirmResponse, z as FFIDPasswordResetResponse, A as FFIDPasswordResetVerifyResponse, B as FFIDProfileCallOptions, C as FFIDProvisionMemberPlan, D as FFIDProvisionMemberPlanStatus, E as FFIDProvisionMemberResult, G as FFIDProvisionMemberStatus, H as FFIDProvisionOrganizationDryRun, I as FFIDProvisionOrganizationMemberInput, J as FFIDProvisionOrganizationOutcome, K as FFIDProvisionOrganizationParams, L as FFIDProvisionOrganizationResponse, M as FFIDProvisionUserDryRun, N as FFIDProvisionUserOutcome, O as FFIDProvisionUserParams, P as FFIDProvisionUserProfileInput, Q as FFIDProvisionUserResponse, R as FFIDProvisionedOrganization, S as FFIDProvisionedUser, T as FFIDPublishedPlan, U as FFIDRemoveMemberResponse, V as FFIDResetSessionResponse, W as FFIDSubscription, X as FFIDUpdateMemberRoleResponse, Y as FFIDUpdateUserProfileRequest, Z as FFIDUser, _ as FFIDUserProfile, $ as FFID_CATALOG_ENVIRONMENTS, a0 as FFID_CATALOG_PUBLICATION_STATUSES, a1 as TokenData, a2 as TokenStore, a3 as createFFIDClient, a4 as createTokenStore } from '../ffid-client-C8XV7lUt.cjs';
1
+ import { F as FFIDLogger, a as FFIDError, b as FFIDCacheAdapter, c as FFIDVerifyAccessTokenOptions, d as FFIDApiResponse, e as FFIDOAuthUserInfo, f as FFIDCatalogEnvironment, g as FFIDBillingInterval, h as FFIDTaxBehavior, i as FFIDPublishedCatalog } from '../ffid-client-BFgoVPOZ.cjs';
2
+ export { j as FFIDAddMemberParams, k as FFIDAddMemberRequest, l as FFIDAddMemberResponse, m as FFIDAllowedLogoMimeType, n as FFIDAssignableMemberRole, o as FFIDCacheConfig, p as FFIDCatalogPublication, q as FFIDCatalogPublicationStatus, r as FFIDClient, s as FFIDCompanySizeCode, t as FFIDConfig, u as FFIDIndustryCode, v as FFIDListMembersResponse, w as FFIDListingConsentInput, x as FFIDLogoWallEntry, y as FFIDLogoWallResponse, z as FFIDMemberRole, A as FFIDOrganization, B as FFIDOrganizationLogoUploadResponse, C as FFIDOrganizationMember, D as FFIDOrganizationProfile, E as FFIDOrganizationProfileErrorCode, G as FFIDOrganizationProfileResponse, H as FFIDOtpSendResponse, I as FFIDOtpVerifyResponse, J as FFIDPasswordResetConfirmResponse, K as FFIDPasswordResetResponse, L as FFIDPasswordResetVerifyResponse, M as FFIDProfileCallOptions, N as FFIDProvisionMemberPlan, O as FFIDProvisionMemberPlanStatus, P as FFIDProvisionMemberResult, Q as FFIDProvisionMemberStatus, R as FFIDProvisionOrganizationDryRun, S as FFIDProvisionOrganizationMemberInput, T as FFIDProvisionOrganizationOutcome, U as FFIDProvisionOrganizationParams, V as FFIDProvisionOrganizationResponse, W as FFIDProvisionUserDryRun, X as FFIDProvisionUserOutcome, Y as FFIDProvisionUserParams, Z as FFIDProvisionUserProfileInput, _ as FFIDProvisionUserResponse, $ as FFIDProvisionedOrganization, a0 as FFIDProvisionedUser, a1 as FFIDPublishedPlan, a2 as FFIDRemoveMemberResponse, a3 as FFIDResetSessionResponse, a4 as FFIDSubscription, a5 as FFIDUpdateMemberRoleResponse, a6 as FFIDUpdateUserProfileRequest, a7 as FFIDUploadOrganizationLogoParams, a8 as FFIDUpsertOrganizationProfileParams, a9 as FFIDUpsertOrganizationProfileRequest, aa as FFIDUser, ab as FFIDUserProfile, ac as FFID_ALLOWED_ORGANIZATION_LOGO_MIME_TYPES, ad as FFID_CATALOG_ENVIRONMENTS, ae as FFID_CATALOG_PUBLICATION_STATUSES, af as FFID_COMPANY_SIZE_CODES, ag as FFID_INDUSTRY_CODES, ah as FFID_MAX_ORGANIZATION_LOGO_FILE_SIZE_BYTES, ai as FFID_MAX_ORGANIZATION_LOGO_FILE_SIZE_MB, aj as FFID_ORGANIZATION_PROFILE_ERROR_CODES, ak as TokenData, al as TokenStore, am as createFFIDClient, an as createTokenStore } from '../ffid-client-BFgoVPOZ.cjs';
3
3
  export { D as DEFAULT_API_BASE_URL, a as DEFAULT_OAUTH_SCOPES } from '../constants-Ce2eXQtB.cjs';
4
4
  import { z } from 'zod';
5
5
  import '../types-Cjb9J0rL.cjs';
@@ -1,5 +1,5 @@
1
- import { F as FFIDLogger, a as FFIDError, b as FFIDCacheAdapter, c as FFIDVerifyAccessTokenOptions, d as FFIDApiResponse, e as FFIDOAuthUserInfo, f as FFIDCatalogEnvironment, g as FFIDBillingInterval, h as FFIDTaxBehavior, i as FFIDPublishedCatalog } from '../ffid-client-CpVixUM3.js';
2
- export { j as FFIDAddMemberParams, k as FFIDAddMemberRequest, l as FFIDAddMemberResponse, m as FFIDAssignableMemberRole, n as FFIDCacheConfig, o as FFIDCatalogPublication, p as FFIDCatalogPublicationStatus, q as FFIDClient, r as FFIDConfig, s as FFIDListMembersResponse, t as FFIDMemberRole, u as FFIDOrganization, v as FFIDOrganizationMember, w as FFIDOtpSendResponse, x as FFIDOtpVerifyResponse, y as FFIDPasswordResetConfirmResponse, z as FFIDPasswordResetResponse, A as FFIDPasswordResetVerifyResponse, B as FFIDProfileCallOptions, C as FFIDProvisionMemberPlan, D as FFIDProvisionMemberPlanStatus, E as FFIDProvisionMemberResult, G as FFIDProvisionMemberStatus, H as FFIDProvisionOrganizationDryRun, I as FFIDProvisionOrganizationMemberInput, J as FFIDProvisionOrganizationOutcome, K as FFIDProvisionOrganizationParams, L as FFIDProvisionOrganizationResponse, M as FFIDProvisionUserDryRun, N as FFIDProvisionUserOutcome, O as FFIDProvisionUserParams, P as FFIDProvisionUserProfileInput, Q as FFIDProvisionUserResponse, R as FFIDProvisionedOrganization, S as FFIDProvisionedUser, T as FFIDPublishedPlan, U as FFIDRemoveMemberResponse, V as FFIDResetSessionResponse, W as FFIDSubscription, X as FFIDUpdateMemberRoleResponse, Y as FFIDUpdateUserProfileRequest, Z as FFIDUser, _ as FFIDUserProfile, $ as FFID_CATALOG_ENVIRONMENTS, a0 as FFID_CATALOG_PUBLICATION_STATUSES, a1 as TokenData, a2 as TokenStore, a3 as createFFIDClient, a4 as createTokenStore } from '../ffid-client-CpVixUM3.js';
1
+ import { F as FFIDLogger, a as FFIDError, b as FFIDCacheAdapter, c as FFIDVerifyAccessTokenOptions, d as FFIDApiResponse, e as FFIDOAuthUserInfo, f as FFIDCatalogEnvironment, g as FFIDBillingInterval, h as FFIDTaxBehavior, i as FFIDPublishedCatalog } from '../ffid-client-QNEFA3mv.js';
2
+ export { j as FFIDAddMemberParams, k as FFIDAddMemberRequest, l as FFIDAddMemberResponse, m as FFIDAllowedLogoMimeType, n as FFIDAssignableMemberRole, o as FFIDCacheConfig, p as FFIDCatalogPublication, q as FFIDCatalogPublicationStatus, r as FFIDClient, s as FFIDCompanySizeCode, t as FFIDConfig, u as FFIDIndustryCode, v as FFIDListMembersResponse, w as FFIDListingConsentInput, x as FFIDLogoWallEntry, y as FFIDLogoWallResponse, z as FFIDMemberRole, A as FFIDOrganization, B as FFIDOrganizationLogoUploadResponse, C as FFIDOrganizationMember, D as FFIDOrganizationProfile, E as FFIDOrganizationProfileErrorCode, G as FFIDOrganizationProfileResponse, H as FFIDOtpSendResponse, I as FFIDOtpVerifyResponse, J as FFIDPasswordResetConfirmResponse, K as FFIDPasswordResetResponse, L as FFIDPasswordResetVerifyResponse, M as FFIDProfileCallOptions, N as FFIDProvisionMemberPlan, O as FFIDProvisionMemberPlanStatus, P as FFIDProvisionMemberResult, Q as FFIDProvisionMemberStatus, R as FFIDProvisionOrganizationDryRun, S as FFIDProvisionOrganizationMemberInput, T as FFIDProvisionOrganizationOutcome, U as FFIDProvisionOrganizationParams, V as FFIDProvisionOrganizationResponse, W as FFIDProvisionUserDryRun, X as FFIDProvisionUserOutcome, Y as FFIDProvisionUserParams, Z as FFIDProvisionUserProfileInput, _ as FFIDProvisionUserResponse, $ as FFIDProvisionedOrganization, a0 as FFIDProvisionedUser, a1 as FFIDPublishedPlan, a2 as FFIDRemoveMemberResponse, a3 as FFIDResetSessionResponse, a4 as FFIDSubscription, a5 as FFIDUpdateMemberRoleResponse, a6 as FFIDUpdateUserProfileRequest, a7 as FFIDUploadOrganizationLogoParams, a8 as FFIDUpsertOrganizationProfileParams, a9 as FFIDUpsertOrganizationProfileRequest, aa as FFIDUser, ab as FFIDUserProfile, ac as FFID_ALLOWED_ORGANIZATION_LOGO_MIME_TYPES, ad as FFID_CATALOG_ENVIRONMENTS, ae as FFID_CATALOG_PUBLICATION_STATUSES, af as FFID_COMPANY_SIZE_CODES, ag as FFID_INDUSTRY_CODES, ah as FFID_MAX_ORGANIZATION_LOGO_FILE_SIZE_BYTES, ai as FFID_MAX_ORGANIZATION_LOGO_FILE_SIZE_MB, aj as FFID_ORGANIZATION_PROFILE_ERROR_CODES, ak as TokenData, al as TokenStore, am as createFFIDClient, an as createTokenStore } from '../ffid-client-QNEFA3mv.js';
3
3
  export { D as DEFAULT_API_BASE_URL, a as DEFAULT_OAUTH_SCOPES } from '../constants-Ce2eXQtB.js';
4
4
  import { z } from 'zod';
5
5
  import '../types-Cjb9J0rL.js';