@01.software/sdk 0.48.0 → 0.51.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 (74) hide show
  1. package/CHANGELOG.md +157 -1
  2. package/MIGRATION.md +56 -0
  3. package/README.md +276 -49
  4. package/dist/client.cjs +375 -161
  5. package/dist/client.cjs.map +1 -1
  6. package/dist/client.d.cts +7 -6
  7. package/dist/client.d.ts +7 -6
  8. package/dist/client.js +375 -161
  9. package/dist/client.js.map +1 -1
  10. package/dist/{collection-client-CBup9yOx.d.cts → collection-client-CWAeuzV4.d.cts} +6 -4
  11. package/dist/{collection-client-D3ExJU-7.d.ts → collection-client-hYvVfHIm.d.ts} +6 -4
  12. package/dist/{const-k9gHylYa.d.ts → const-D8LixhAJ.d.cts} +5 -5
  13. package/dist/{const-BXEi1Kix.d.cts → const-JD8obaKg.d.ts} +5 -5
  14. package/dist/embedded-admin/server.cjs +306 -0
  15. package/dist/embedded-admin/server.cjs.map +1 -0
  16. package/dist/embedded-admin/server.d.cts +33 -0
  17. package/dist/embedded-admin/server.d.ts +33 -0
  18. package/dist/embedded-admin/server.js +288 -0
  19. package/dist/embedded-admin/server.js.map +1 -0
  20. package/dist/embedded-admin.cjs +400 -0
  21. package/dist/embedded-admin.cjs.map +1 -0
  22. package/dist/embedded-admin.d.cts +61 -0
  23. package/dist/embedded-admin.d.ts +61 -0
  24. package/dist/embedded-admin.js +377 -0
  25. package/dist/embedded-admin.js.map +1 -0
  26. package/dist/errors.cjs +64 -15
  27. package/dist/errors.cjs.map +1 -1
  28. package/dist/errors.d.cts +13 -4
  29. package/dist/errors.d.ts +13 -4
  30. package/dist/errors.js +64 -15
  31. package/dist/errors.js.map +1 -1
  32. package/dist/{index-BCM9CTL7.d.cts → index-B0Hjh3Ey.d.ts} +72 -10
  33. package/dist/{index-CHGGkcLj.d.ts → index-Bu0kCc6o.d.cts} +72 -10
  34. package/dist/index.cjs +470 -429
  35. package/dist/index.cjs.map +1 -1
  36. package/dist/index.d.cts +9 -67
  37. package/dist/index.d.ts +9 -67
  38. package/dist/index.js +470 -429
  39. package/dist/index.js.map +1 -1
  40. package/dist/{payload-types-B6AZQcB7.d.cts → payload-types-BOsckg8B.d.cts} +396 -57
  41. package/dist/{payload-types-B6AZQcB7.d.ts → payload-types-BOsckg8B.d.ts} +396 -57
  42. package/dist/query.cjs +115 -70
  43. package/dist/query.cjs.map +1 -1
  44. package/dist/query.d.cts +5 -5
  45. package/dist/query.d.ts +5 -5
  46. package/dist/query.js +115 -70
  47. package/dist/query.js.map +1 -1
  48. package/dist/realtime.d.cts +2 -2
  49. package/dist/realtime.d.ts +2 -2
  50. package/dist/server.cjs +591 -186
  51. package/dist/server.cjs.map +1 -1
  52. package/dist/server.d.cts +8 -7
  53. package/dist/server.d.ts +8 -7
  54. package/dist/server.js +591 -186
  55. package/dist/server.js.map +1 -1
  56. package/dist/storefront-cache.cjs +22 -0
  57. package/dist/storefront-cache.cjs.map +1 -1
  58. package/dist/storefront-cache.js +22 -0
  59. package/dist/storefront-cache.js.map +1 -1
  60. package/dist/{types-ByD2zii1.d.ts → types-5ZlcAFuU.d.ts} +2 -2
  61. package/dist/{types-8us-_C-Q.d.cts → types-B14sEt1z.d.cts} +2 -2
  62. package/dist/{types-CM2je9Kw.d.cts → types-Bj8j7VHU.d.ts} +107 -26
  63. package/dist/{types-DbA5V3mt.d.ts → types-CM5qiR2k.d.cts} +107 -26
  64. package/dist/ui/form.d.cts +1 -1
  65. package/dist/ui/form.d.ts +1 -1
  66. package/dist/ui/video.d.cts +1 -1
  67. package/dist/ui/video.d.ts +1 -1
  68. package/dist/webhook.cjs +124 -80
  69. package/dist/webhook.cjs.map +1 -1
  70. package/dist/webhook.d.cts +21 -5
  71. package/dist/webhook.d.ts +21 -5
  72. package/dist/webhook.js +124 -80
  73. package/dist/webhook.js.map +1 -1
  74. package/package.json +27 -5
package/dist/query.cjs CHANGED
@@ -503,6 +503,24 @@ var CollectionHooks = class {
503
503
  var import_react_query3 = require("@tanstack/react-query");
504
504
 
505
505
  // src/core/errors.ts
506
+ var SDK_ERROR_BRAND = /* @__PURE__ */ Symbol.for("@01.software/sdk/SDKError");
507
+ var SDK_ERROR_TYPE_BRAND = /* @__PURE__ */ Symbol.for("@01.software/sdk/SDKError.type");
508
+ function defineSDKErrorBrand(error) {
509
+ Object.defineProperty(error, SDK_ERROR_BRAND, {
510
+ value: true,
511
+ enumerable: false,
512
+ configurable: false,
513
+ writable: false
514
+ });
515
+ }
516
+ function defineSDKErrorType(error, type) {
517
+ Object.defineProperty(error, SDK_ERROR_TYPE_BRAND, {
518
+ value: type,
519
+ enumerable: false,
520
+ configurable: false,
521
+ writable: false
522
+ });
523
+ }
506
524
  var SDKError = class extends Error {
507
525
  constructor(code, message, status, details, userMessage, suggestion, requestId) {
508
526
  super(message);
@@ -513,6 +531,7 @@ var SDKError = class extends Error {
513
531
  this.userMessage = userMessage;
514
532
  this.suggestion = suggestion;
515
533
  this.requestId = requestId;
534
+ defineSDKErrorBrand(this);
516
535
  if (Error.captureStackTrace) {
517
536
  Error.captureStackTrace(this, new.target);
518
537
  }
@@ -533,6 +552,7 @@ var SDKError = class extends Error {
533
552
  ...this.kind !== void 0 && { kind: this.kind },
534
553
  ...this.reason !== void 0 && { reason: this.reason },
535
554
  ...this.rawReason !== void 0 && { rawReason: this.rawReason },
555
+ ...this.apiReason !== void 0 && { apiReason: this.apiReason },
536
556
  ...this.retryable !== void 0 && { retryable: this.retryable },
537
557
  ...this.retryAfter !== void 0 && { retryAfter: this.retryAfter }
538
558
  };
@@ -578,6 +598,7 @@ var COMMERCE_ERROR_CODES = [
578
598
  "payment_session_not_cancelable",
579
599
  "payment_session_conflict",
580
600
  "provider_identity_mismatch",
601
+ "managed_refund_attestation_forbidden",
581
602
  "payment_method_unavailable",
582
603
  "provider_unavailable",
583
604
  "lock_timeout",
@@ -649,6 +670,7 @@ var ConfigError = class extends SDKError {
649
670
  constructor(message, details, userMessage, suggestion) {
650
671
  super("CONFIG_ERROR", message, void 0, details, userMessage, suggestion);
651
672
  this.name = "ConfigError";
673
+ defineSDKErrorType(this, "ConfigError");
652
674
  }
653
675
  };
654
676
  var createConfigError = (message, details, userMessage, suggestion) => new ConfigError(message, details, userMessage, suggestion);
@@ -813,6 +835,10 @@ var operation = (collection, method, path, errorFamily) => Object.freeze({
813
835
  ...errorFamily && { errorFamily }
814
836
  });
815
837
  var strictCommerceOperation = (collection, method, path) => operation(collection, method, path, "commerce");
838
+ var selectiveCommerceOperation = (collection, method, path, typedCommerceErrorReasons) => Object.freeze({
839
+ ...operation(collection, method, path),
840
+ typedCommerceErrorReasons: Object.freeze([...typedCommerceErrorReasons])
841
+ });
816
842
  var COMMERCE_ENDPOINT_OPERATIONS = {
817
843
  products: {
818
844
  detail: operation("products", "get", "/detail"),
@@ -844,7 +870,12 @@ var COMMERCE_ENDPOINT_OPERATIONS = {
844
870
  confirmPayment: operation("orders", "post", "/confirm-payment"),
845
871
  byPayment: operation("orders", "get", "/by-payment"),
846
872
  cancel: operation("orders", "post", "/cancel"),
847
- resolveCancelRefund: operation("orders", "post", "/resolve-cancel-refund"),
873
+ resolveCancelRefund: selectiveCommerceOperation(
874
+ "orders",
875
+ "post",
876
+ "/resolve-cancel-refund",
877
+ ["managed_refund_attestation_forbidden"]
878
+ ),
848
879
  checkout: strictCommerceOperation("orders", "post", "/checkout"),
849
880
  createFulfillment: operation("orders", "post", "/create-fulfillment"),
850
881
  updateFulfillment: operation("orders", "post", "/update-fulfillment")
@@ -915,6 +946,16 @@ var COMMERCE_ENDPOINT_OPERATIONS = {
915
946
  "payment-sessions",
916
947
  "post",
917
948
  "/server/confirm"
949
+ ),
950
+ findPortOne: strictCommerceOperation(
951
+ "payment-sessions",
952
+ "post",
953
+ "/server/portone/find"
954
+ ),
955
+ reconcilePortOne: strictCommerceOperation(
956
+ "payment-sessions",
957
+ "post",
958
+ "/server/portone/reconcile"
918
959
  )
919
960
  },
920
961
  custom: {
@@ -934,12 +975,26 @@ var COMMERCE_ENDPOINT_OPERATIONS = {
934
975
  validate: operation("discounts", "post", "/validate")
935
976
  }
936
977
  };
978
+ var portOneStandardActionCapabilityOperations = /* @__PURE__ */ new Set([
979
+ COMMERCE_ENDPOINT_OPERATIONS.paymentSessions.create,
980
+ COMMERCE_ENDPOINT_OPERATIONS.paymentSessions.retrieve,
981
+ COMMERCE_ENDPOINT_OPERATIONS.paymentSessions.server.create,
982
+ COMMERCE_ENDPOINT_OPERATIONS.paymentSessions.server.retrieve
983
+ ]);
937
984
  var MEMBERSHIP_ENDPOINT_OPERATIONS = {
938
985
  subscribe: operation(null, "post", "/memberships/subscribe"),
939
986
  cancel: operation(null, "post", "/memberships/:id/cancel"),
940
987
  me: operation(null, "get", "/memberships/me")
941
988
  };
989
+ var EMBEDDED_ADMIN_ENDPOINT_OPERATIONS = {
990
+ show: operation("tenants", "get", "/embedded-admin-app"),
991
+ configure: operation("tenants", "patch", "/embedded-admin-app"),
992
+ disable: operation("tenants", "delete", "/embedded-admin-app")
993
+ };
942
994
  var EVENTS_ENDPOINT_OPERATIONS = {
995
+ events: {
996
+ convertSchedule: operation("events", "post", "/:id/schedule")
997
+ },
943
998
  occurrences: {
944
999
  range: operation("event-occurrences", "get", "/range"),
945
1000
  admissionAvailability: operation(
@@ -977,40 +1032,48 @@ function resolveOperationPath(descriptor, options) {
977
1032
  }
978
1033
 
979
1034
  // src/core/api/endpoints.ts
980
- var endpoint = (method, path) => ({ method, path });
981
1035
  var sharedEndpoint = (descriptor) => descriptor;
982
- function resolveOperationPath2(descriptor, options) {
983
- if ("collection" in descriptor) {
984
- return resolveOperationPath(descriptor, options);
985
- }
986
- const query = options?.query?.toString().replace(/^\?/, "");
987
- return query ? `${descriptor.path}?${query}` : descriptor.path;
988
- }
989
1036
  var COMMERCE_ENDPOINTS = {
990
1037
  products: {
991
- detail: endpoint("GET", "/api/products/detail"),
992
- detailCatalog: endpoint("GET", "/api/products/detail/catalog"),
993
- listingGroups: endpoint("GET", "/api/products/listing-groups"),
994
- listingGroupsCatalog: endpoint(
995
- "GET",
996
- "/api/products/listing-groups/catalog"
1038
+ detail: sharedEndpoint(COMMERCE_ENDPOINT_OPERATIONS.products.detail),
1039
+ detailCatalog: sharedEndpoint(
1040
+ COMMERCE_ENDPOINT_OPERATIONS.products.detailCatalog
997
1041
  ),
998
- listingGroupsQuery: endpoint("GET", "/api/products/listing-groups/query"),
999
- listingGroupsQueryCatalog: endpoint(
1000
- "GET",
1001
- "/api/products/listing-groups/query/catalog"
1042
+ listingGroups: sharedEndpoint(
1043
+ COMMERCE_ENDPOINT_OPERATIONS.products.listingGroups
1002
1044
  ),
1003
- stockCheck: endpoint("POST", "/api/products/stock-check"),
1004
- stockSnapshot: endpoint("GET", "/api/products/stock"),
1005
- upsert: endpoint("POST", "/api/products/upsert")
1045
+ listingGroupsCatalog: sharedEndpoint(
1046
+ COMMERCE_ENDPOINT_OPERATIONS.products.listingGroupsCatalog
1047
+ ),
1048
+ // The manifest keeps the GET read and the POST body-query apart; this
1049
+ // semantic name has always resolved to the GET one.
1050
+ listingGroupsQuery: sharedEndpoint(
1051
+ COMMERCE_ENDPOINT_OPERATIONS.products.listingGroupsQueryGet
1052
+ ),
1053
+ listingGroupsQueryCatalog: sharedEndpoint(
1054
+ COMMERCE_ENDPOINT_OPERATIONS.products.listingGroupsQueryCatalog
1055
+ ),
1056
+ stockCheck: sharedEndpoint(
1057
+ COMMERCE_ENDPOINT_OPERATIONS.products.stockCheck
1058
+ ),
1059
+ stockSnapshot: sharedEndpoint(
1060
+ COMMERCE_ENDPOINT_OPERATIONS.products.stockSnapshot
1061
+ ),
1062
+ upsert: sharedEndpoint(COMMERCE_ENDPOINT_OPERATIONS.products.upsert)
1006
1063
  },
1007
1064
  orders: {
1008
- update: endpoint("POST", "/api/orders/update"),
1009
- byPayment: endpoint("GET", "/api/orders/by-payment"),
1010
- cancel: endpoint("POST", "/api/orders/cancel"),
1011
- resolveCancelRefund: endpoint("POST", "/api/orders/resolve-cancel-refund"),
1012
- createFulfillment: endpoint("POST", "/api/orders/create-fulfillment"),
1013
- updateFulfillment: endpoint("POST", "/api/orders/update-fulfillment")
1065
+ update: sharedEndpoint(COMMERCE_ENDPOINT_OPERATIONS.orders.update),
1066
+ byPayment: sharedEndpoint(COMMERCE_ENDPOINT_OPERATIONS.orders.byPayment),
1067
+ cancel: sharedEndpoint(COMMERCE_ENDPOINT_OPERATIONS.orders.cancel),
1068
+ resolveCancelRefund: sharedEndpoint(
1069
+ COMMERCE_ENDPOINT_OPERATIONS.orders.resolveCancelRefund
1070
+ ),
1071
+ createFulfillment: sharedEndpoint(
1072
+ COMMERCE_ENDPOINT_OPERATIONS.orders.createFulfillment
1073
+ ),
1074
+ updateFulfillment: sharedEndpoint(
1075
+ COMMERCE_ENDPOINT_OPERATIONS.orders.updateFulfillment
1076
+ )
1014
1077
  },
1015
1078
  checkouts: {
1016
1079
  create: sharedEndpoint(COMMERCE_ENDPOINT_OPERATIONS.orders.checkout),
@@ -1022,18 +1085,21 @@ var COMMERCE_ENDPOINTS = {
1022
1085
  }
1023
1086
  },
1024
1087
  returns: {
1025
- create: endpoint("POST", "/api/returns/create"),
1026
- update: endpoint("POST", "/api/returns/update"),
1027
- returnRefund: endpoint("POST", "/api/returns/return-refund")
1088
+ create: sharedEndpoint(COMMERCE_ENDPOINT_OPERATIONS.returns.create),
1089
+ update: sharedEndpoint(COMMERCE_ENDPOINT_OPERATIONS.returns.update),
1090
+ returnRefund: sharedEndpoint(
1091
+ COMMERCE_ENDPOINT_OPERATIONS.returns.returnRefund
1092
+ )
1028
1093
  },
1029
1094
  fulfillmentOrders: {
1030
- prepare: endpoint(
1031
- "POST",
1032
- "/api/fulfillment-orders/prepare-fulfillment-order"
1095
+ prepare: sharedEndpoint(
1096
+ COMMERCE_ENDPOINT_OPERATIONS.fulfillmentOrders.prepare
1033
1097
  )
1034
1098
  },
1035
1099
  fulfillments: {
1036
- bulkImport: endpoint("POST", "/api/fulfillments/bulk-import")
1100
+ bulkImport: sharedEndpoint(
1101
+ COMMERCE_ENDPOINT_OPERATIONS.fulfillments.bulkImport
1102
+ )
1037
1103
  },
1038
1104
  carts: {
1039
1105
  create: sharedEndpoint(COMMERCE_ENDPOINT_OPERATIONS.carts.create),
@@ -1098,57 +1164,36 @@ var COMMERCE_ENDPOINTS = {
1098
1164
  ),
1099
1165
  confirm: sharedEndpoint(
1100
1166
  COMMERCE_ENDPOINT_OPERATIONS.paymentSessions.server.confirm
1167
+ ),
1168
+ findPortOne: sharedEndpoint(
1169
+ COMMERCE_ENDPOINT_OPERATIONS.paymentSessions.server.findPortOne
1170
+ ),
1171
+ reconcilePortOne: sharedEndpoint(
1172
+ COMMERCE_ENDPOINT_OPERATIONS.paymentSessions.server.reconcilePortOne
1101
1173
  )
1102
1174
  }
1103
1175
  },
1104
1176
  shippingPolicies: {
1105
- calculate: endpoint("POST", "/api/shipping-policies/calculate")
1177
+ calculate: sharedEndpoint(
1178
+ COMMERCE_ENDPOINT_OPERATIONS.shippingPolicies.calculate
1179
+ )
1106
1180
  }
1107
1181
  };
1108
- function isCommerceEndpointDescriptor(value) {
1109
- if (!value || typeof value !== "object") return false;
1110
- const candidate = value;
1111
- return typeof candidate.method === "string" && typeof candidate.path === "string";
1112
- }
1113
- function flattenEndpointPaths(value) {
1114
- if (isCommerceEndpointDescriptor(value)) return [resolveOperationPath2(value)];
1115
- if (!value || typeof value !== "object") return [];
1116
- return Object.values(value).flatMap((entry) => flattenEndpointPaths(entry));
1117
- }
1118
- function flattenEndpointDescriptors(value) {
1119
- if (isCommerceEndpointDescriptor(value)) return [value];
1120
- if (!value || typeof value !== "object") return [];
1121
- return Object.values(value).flatMap(
1122
- (entry) => flattenEndpointDescriptors(entry)
1123
- );
1124
- }
1125
- var COMMERCE_ENDPOINT_PATHS = flattenEndpointPaths(COMMERCE_ENDPOINTS);
1126
- var COMMERCE_ENDPOINT_DESCRIPTORS = flattenEndpointDescriptors(COMMERCE_ENDPOINTS);
1127
- var MEMBERSHIP_ENDPOINTS = {
1128
- subscribe: "/api/memberships/subscribe",
1129
- cancel: (id) => `/api/memberships/${id}/cancel`,
1130
- me: "/api/memberships/me"
1131
- };
1132
- var MEMBERSHIP_ENDPOINT_PATHS = [
1133
- MEMBERSHIP_ENDPOINTS.subscribe,
1134
- MEMBERSHIP_ENDPOINTS.cancel(":id"),
1135
- MEMBERSHIP_ENDPOINTS.me
1136
- ];
1137
1182
 
1138
1183
  // src/core/query/query-hooks.ts
1139
1184
  function normalizeMarket(market) {
1140
1185
  const normalized = market?.trim();
1141
1186
  return normalized || void 0;
1142
1187
  }
1143
- function requestCommerceFindEndpoint(collectionClient, endpoint2, options) {
1144
- const path = resolveOperationPath2(endpoint2, { query: options?.query });
1145
- if (endpoint2.method === "get") {
1188
+ function requestCommerceFindEndpoint(collectionClient, endpoint, options) {
1189
+ const path = resolveOperationPath(endpoint, { query: options?.query });
1190
+ if (endpoint.method === "get") {
1146
1191
  return collectionClient.requestFindEndpointGet(path);
1147
1192
  }
1148
- if (endpoint2.method === "post") {
1193
+ if (endpoint.method === "post") {
1149
1194
  return collectionClient.requestFindEndpoint(path, options?.data);
1150
1195
  }
1151
- throw new TypeError(`Unsupported find endpoint method: ${endpoint2.method}`);
1196
+ throw new TypeError(`Unsupported find endpoint method: ${endpoint.method}`);
1152
1197
  }
1153
1198
  function withDefaultMarket(params, market) {
1154
1199
  const defaultMarket = normalizeMarket(market);