perspectapi-ts-sdk 6.5.9 → 7.0.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.
Files changed (57) hide show
  1. package/README.md +46 -1011
  2. package/dist/chunk-MZ22HQBX.mjs +1451 -0
  3. package/dist/index-BL9-AZpq.d.mts +2227 -0
  4. package/dist/index-BL9-AZpq.d.ts +2227 -0
  5. package/dist/index.d.mts +130 -2221
  6. package/dist/index.d.ts +130 -2221
  7. package/dist/index.js +71 -7
  8. package/dist/index.mjs +13 -1364
  9. package/dist/v2/index.d.mts +1 -0
  10. package/dist/v2/index.d.ts +1 -0
  11. package/dist/v2/index.js +1477 -0
  12. package/dist/v2/index.mjs +40 -0
  13. package/docs/README.md +15 -0
  14. package/docs/v1-deprecated/README.md +9 -0
  15. package/docs/v1-deprecated/examples/README.md +324 -0
  16. package/docs/v1-deprecated/examples/basic-usage.ts +258 -0
  17. package/docs/v1-deprecated/examples/cloudflare-worker.ts +274 -0
  18. package/docs/v1-deprecated/examples/content-query-with-slug-prefix.ts +237 -0
  19. package/docs/v1-deprecated/examples/image-transforms.ts +200 -0
  20. package/docs/v1-deprecated/examples/site-user-checkout.ts +186 -0
  21. package/docs/v1-deprecated/examples/slug-prefix-examples.ts +491 -0
  22. package/docs/v1-deprecated/legacy-docs/caching.md +667 -0
  23. package/docs/v1-deprecated/legacy-docs/contact.md +1396 -0
  24. package/docs/v1-deprecated/legacy-docs/csrf-protection.md +664 -0
  25. package/docs/v1-deprecated/legacy-docs/image-transforms.md +523 -0
  26. package/docs/v1-deprecated/legacy-docs/loaders.md +304 -0
  27. package/docs/v1-deprecated/legacy-docs/newsletter.md +811 -0
  28. package/docs/v1-deprecated/legacy-docs/site-users.md +817 -0
  29. package/docs/v1-deprecated/legacy-notes/CHANGELOG-CHECKOUT.md +143 -0
  30. package/docs/v1-deprecated/legacy-notes/CSRF-CHECKOUT.md +271 -0
  31. package/docs/v1-deprecated/legacy-notes/IMAGE_TRANSFORMS_PORT.md +298 -0
  32. package/docs/v1-deprecated/sdk-readme.md +1076 -0
  33. package/examples/README.md +19 -0
  34. package/examples/basic-v2.ts +37 -0
  35. package/llms.txt +25 -0
  36. package/package.json +18 -7
  37. package/src/client/api-keys-client.ts +4 -0
  38. package/src/client/auth-client.ts +4 -0
  39. package/src/client/base-client.ts +7 -0
  40. package/src/client/bundles-client.ts +4 -0
  41. package/src/client/categories-client.ts +4 -0
  42. package/src/client/checkout-client.ts +4 -0
  43. package/src/client/contact-client.ts +4 -0
  44. package/src/client/content-client.ts +4 -0
  45. package/src/client/newsletter-client.ts +4 -0
  46. package/src/client/newsletter-management-client.ts +4 -0
  47. package/src/client/organizations-client.ts +4 -0
  48. package/src/client/products-client.ts +4 -0
  49. package/src/client/site-users-client.ts +10 -1
  50. package/src/client/sites-client.ts +4 -0
  51. package/src/client/webhooks-client.ts +4 -0
  52. package/src/deprecation.ts +2 -1
  53. package/src/index.ts +2 -1
  54. package/src/loaders.ts +59 -0
  55. package/src/perspect-api-client.ts +2 -2
  56. package/src/v2/client/orders-client.ts +89 -6
  57. package/src/v2/types.ts +3 -0
package/dist/index.js CHANGED
@@ -76,7 +76,7 @@ module.exports = __toCommonJS(index_exports);
76
76
 
77
77
  // src/deprecation.ts
78
78
  var V1_SUNSET_DATE = "2026-06-01";
79
- var V1_DEPRECATION_NOTICE = "perspectapi-ts-sdk v1 client is deprecated; sunsets 2026-06-01. New integrations must use createPerspectApiV2Client.";
79
+ var V1_DEPRECATION_NOTICE = "perspectapi-ts-sdk v1 client is deprecated; sunsets 2026-06-01. Do not use it for new code. Use createPerspectApiV2Client from perspectapi-ts-sdk/v2.";
80
80
  var warned = false;
81
81
  function warnV1Deprecated() {
82
82
  if (warned) return;
@@ -978,13 +978,40 @@ var CollectionsV2Client = class extends BaseV2Client {
978
978
  // src/v2/client/orders-client.ts
979
979
  var OrdersV2Client = class extends BaseV2Client {
980
980
  async list(siteName, params, cachePolicy) {
981
- return this.getList(this.sitePath(siteName, "orders"), params, cachePolicy);
981
+ return this.getList(
982
+ this.sitePath(siteName, "orders"),
983
+ params,
984
+ this.withOrderTags(siteName, cachePolicy, {
985
+ fulfillmentStatus: params?.fulfillment_status
986
+ })
987
+ );
982
988
  }
983
- async *listAutoPaginated(siteName, params) {
984
- yield* this.listAutoPaginate(this.sitePath(siteName, "orders"), params);
989
+ async *listAutoPaginated(siteName, params, cachePolicy) {
990
+ let startingAfter;
991
+ let hasMore = true;
992
+ while (hasMore) {
993
+ const queryParams = { ...params ?? {} };
994
+ if (startingAfter) {
995
+ queryParams.starting_after = startingAfter;
996
+ }
997
+ const page = await this.list(siteName, queryParams, cachePolicy);
998
+ for (const item of page.data) {
999
+ yield item;
1000
+ }
1001
+ hasMore = page.has_more;
1002
+ if (page.data.length > 0) {
1003
+ startingAfter = page.data[page.data.length - 1].id;
1004
+ } else {
1005
+ hasMore = false;
1006
+ }
1007
+ }
985
1008
  }
986
1009
  async get(siteName, id, cachePolicy) {
987
- return this.getOne(this.sitePath(siteName, "orders", id), void 0, cachePolicy);
1010
+ return this.getOne(
1011
+ this.sitePath(siteName, "orders", id),
1012
+ void 0,
1013
+ this.withOrderTags(siteName, cachePolicy, { id })
1014
+ );
988
1015
  }
989
1016
  /**
990
1017
  * Create a checkout session via Stripe. Returns the session ID and a
@@ -999,12 +1026,48 @@ var OrdersV2Client = class extends BaseV2Client {
999
1026
  data
1000
1027
  );
1001
1028
  }
1002
- /** Update fulfillment status, tracking number, and/or notes on an order. */
1029
+ /**
1030
+ * Update fulfillment status, tracking number, and/or notes on an order.
1031
+ *
1032
+ * Set `notify_customer: true` when moving the order into a terminal
1033
+ * fulfillment state to send the customer fulfillment email.
1034
+ */
1003
1035
  async updateFulfillment(siteName, id, data) {
1004
- return this.patchOne(
1036
+ const result = await this.patchOne(
1005
1037
  this.sitePath(siteName, "orders", `${id}/fulfillment`),
1006
1038
  data
1007
1039
  );
1040
+ await this.invalidateCache({
1041
+ tags: this.buildOrderTags(siteName, { id }),
1042
+ keys: [this.sitePath(siteName, "orders", id)]
1043
+ });
1044
+ return result;
1045
+ }
1046
+ withOrderTags(siteName, cachePolicy, options = {}) {
1047
+ const tags = new Set(cachePolicy?.tags ?? []);
1048
+ for (const tag of this.buildOrderTags(siteName, options)) {
1049
+ tags.add(tag);
1050
+ }
1051
+ return {
1052
+ ...cachePolicy,
1053
+ tags: Array.from(tags)
1054
+ };
1055
+ }
1056
+ buildOrderTags(siteName, options = {}) {
1057
+ const tags = /* @__PURE__ */ new Set(["orders", `orders:site:${siteName}`]);
1058
+ if (options.id) {
1059
+ tags.add(`orders:id:${options.id}`);
1060
+ }
1061
+ const fulfillmentStatus = this.normalizeTagPart(options.fulfillmentStatus);
1062
+ if (fulfillmentStatus) {
1063
+ tags.add(`orders:fulfillment:${siteName}:${fulfillmentStatus}`);
1064
+ }
1065
+ return Array.from(tags);
1066
+ }
1067
+ normalizeTagPart(value) {
1068
+ if (!value) return null;
1069
+ const normalized = value.trim().toLowerCase().replace(/[^a-z0-9_-]+/g, "-");
1070
+ return normalized || null;
1008
1071
  }
1009
1072
  };
1010
1073
 
@@ -1453,6 +1516,7 @@ var BaseClient = class {
1453
1516
  basePath;
1454
1517
  cache;
1455
1518
  constructor(http, basePath, cache) {
1519
+ warnV1Deprecated();
1456
1520
  this.http = http;
1457
1521
  this.basePath = basePath;
1458
1522
  this.cache = cache && cache.isEnabled() ? cache : void 0;