@sitepong/fastnode 0.2.0 → 0.2.2

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 (71) hide show
  1. package/dist/actions/index.cjs +70 -24
  2. package/dist/actions/index.cjs.map +1 -1
  3. package/dist/actions/index.mjs +70 -24
  4. package/dist/actions/index.mjs.map +1 -1
  5. package/dist/cert/index.cjs +17822 -24
  6. package/dist/cert/index.cjs.map +1 -1
  7. package/dist/cert/index.d.cts +3 -3
  8. package/dist/cert/index.d.ts +3 -3
  9. package/dist/cert/index.mjs +17807 -6
  10. package/dist/cert/index.mjs.map +1 -1
  11. package/dist/{cert-DtYDJBjG.d.ts → cert-Ddl7FpFT.d.ts} +1 -1
  12. package/dist/{cert-6m1R8UeW.d.cts → cert-FehieKeb.d.cts} +1 -1
  13. package/dist/cli/index.cjs +70 -24
  14. package/dist/cli/index.cjs.map +1 -1
  15. package/dist/cli/index.d.cts +1 -1
  16. package/dist/cli/index.d.ts +1 -1
  17. package/dist/cli/index.mjs +70 -24
  18. package/dist/cli/index.mjs.map +1 -1
  19. package/dist/client/index.cjs +64 -6
  20. package/dist/client/index.cjs.map +1 -1
  21. package/dist/client/index.d.cts +1 -1
  22. package/dist/client/index.d.ts +1 -1
  23. package/dist/client/index.mjs +64 -6
  24. package/dist/client/index.mjs.map +1 -1
  25. package/dist/deliver/index.d.cts +2 -2
  26. package/dist/deliver/index.d.ts +2 -2
  27. package/dist/{index-CojSGJ7m.d.ts → index-B8FOfxOw.d.ts} +1 -1
  28. package/dist/{index-CdYdwxpQ.d.cts → index-B9QeTpQK.d.cts} +1 -1
  29. package/dist/{index-AD8QXY1T.d.cts → index-BICa8odo.d.cts} +1 -1
  30. package/dist/{index-CMH_GpN9.d.cts → index-BKUapQP2.d.cts} +30 -0
  31. package/dist/{index-Ce-WMV7c.d.cts → index-BZWmOTWE.d.cts} +1 -1
  32. package/dist/{index-BWK-T2-S.d.cts → index-Bk1Gd-qE.d.cts} +1 -1
  33. package/dist/{index-D2z7RiAM.d.ts → index-CCtYhPN9.d.ts} +30 -0
  34. package/dist/{index-CCs5irG7.d.cts → index-CNHf7I4v.d.cts} +1 -1
  35. package/dist/{index-CQKpbHZt.d.ts → index-CplRWSUc.d.ts} +1 -1
  36. package/dist/{index-BpiEBPVd.d.ts → index-CtPyeMLH.d.ts} +1 -1
  37. package/dist/{index-BW8wQUGC.d.cts → index-D13sn8DO.d.cts} +1 -1
  38. package/dist/{index-Kq3rbG0u.d.ts → index-DFni8oZt.d.ts} +1 -1
  39. package/dist/{index-D82CmjMP.d.ts → index-DI1ZHr-3.d.ts} +1 -1
  40. package/dist/{index-DZaPkUnC.d.ts → index-DZoPGCbE.d.ts} +3 -3
  41. package/dist/{index-KCB2q1-8.d.cts → index-OelCoOth.d.cts} +1 -1
  42. package/dist/{index-CLsvyTkh.d.ts → index-YcKz4aRS.d.ts} +1 -1
  43. package/dist/{index-CQd4bo3G.d.cts → index-oVyLLIEK.d.cts} +3 -3
  44. package/dist/{index-CsFIp7OO.d.ts → index-xykpq6Lz.d.ts} +1 -1
  45. package/dist/index.cjs +18237 -202
  46. package/dist/index.cjs.map +1 -1
  47. package/dist/index.d.cts +81 -21
  48. package/dist/index.d.ts +81 -21
  49. package/dist/index.mjs +18237 -201
  50. package/dist/index.mjs.map +1 -1
  51. package/dist/lane/index.cjs +70 -24
  52. package/dist/lane/index.cjs.map +1 -1
  53. package/dist/lane/index.mjs +70 -24
  54. package/dist/lane/index.mjs.map +1 -1
  55. package/dist/match/index.d.cts +4 -4
  56. package/dist/match/index.d.ts +4 -4
  57. package/dist/pem/index.d.cts +2 -2
  58. package/dist/pem/index.d.ts +2 -2
  59. package/dist/pilot/index.d.cts +2 -2
  60. package/dist/pilot/index.d.ts +2 -2
  61. package/dist/precheck/index.d.cts +2 -2
  62. package/dist/precheck/index.d.ts +2 -2
  63. package/dist/produce/index.cjs +6 -18
  64. package/dist/produce/index.cjs.map +1 -1
  65. package/dist/produce/index.d.cts +2 -2
  66. package/dist/produce/index.d.ts +2 -2
  67. package/dist/produce/index.mjs +6 -18
  68. package/dist/produce/index.mjs.map +1 -1
  69. package/dist/sigh/index.d.cts +2 -2
  70. package/dist/sigh/index.d.ts +2 -2
  71. package/package.json +1 -1
@@ -3091,25 +3091,13 @@ async function createApp(options) {
3091
3091
  });
3092
3092
  }
3093
3093
  }
3094
- const sku = options.sku ?? `${options.bundleIdentifier}.${Date.now()}`;
3095
- const primaryLocale = options.primaryLocale ?? "en-US";
3096
- const response = await options.client.http.post("/v1/apps", {
3097
- data: {
3098
- type: "apps",
3099
- attributes: {
3100
- bundleId: options.bundleIdentifier,
3101
- name: options.appName,
3102
- sku,
3103
- primaryLocale
3104
- },
3105
- relationships: {
3106
- bundleId: {
3107
- data: { type: "bundleIds", id: bundleId.id }
3108
- }
3109
- }
3110
- }
3094
+ return options.client.apps.create({
3095
+ bundleIdentifier: options.bundleIdentifier,
3096
+ bundleIdId: bundleId.id,
3097
+ appName: options.appName,
3098
+ sku: options.sku ?? `${options.bundleIdentifier}.${Date.now()}`,
3099
+ primaryLocale: options.primaryLocale
3111
3100
  });
3112
- return response.data;
3113
3101
  }
3114
3102
  var SERVICE_NAME_TO_CAPABILITY;
3115
3103
  var init_produce = __esm({
@@ -4903,6 +4891,43 @@ var init_apps = __esm({
4903
4891
  });
4904
4892
  return results[0] ?? null;
4905
4893
  }
4894
+ /**
4895
+ * Create an App Store Connect **app record** (the thing that shows up
4896
+ * under "My Apps" and that TestFlight / App Store uploads require).
4897
+ *
4898
+ * This is distinct from registering an App ID in the Developer Portal —
4899
+ * you need BOTH. The Developer Portal App ID unlocks provisioning
4900
+ * profiles and entitlements; the App Store Connect app record unlocks
4901
+ * uploads. `upload_to_testflight` fails with "Couldn't find app
4902
+ * 'com.foo.bar' on the account…" when this record is missing.
4903
+ *
4904
+ * `bundleIdId` is the REST API primary key of the bundle id resource
4905
+ * (not the identifier string) — fetch it via `bundleIds.find(identifier)`
4906
+ * or from the response of `bundleIds.create()`.
4907
+ *
4908
+ * `sku` is an arbitrary unique string Apple uses to identify the app in
4909
+ * their internal records. If you don't have a meaningful one, pass the
4910
+ * bundle identifier itself or append a timestamp for uniqueness.
4911
+ */
4912
+ async create(params) {
4913
+ const response = await this.http.post("/v1/apps", {
4914
+ data: {
4915
+ type: "apps",
4916
+ attributes: {
4917
+ bundleId: params.bundleIdentifier,
4918
+ name: params.appName,
4919
+ sku: params.sku,
4920
+ primaryLocale: params.primaryLocale ?? "en-US"
4921
+ },
4922
+ relationships: {
4923
+ bundleId: {
4924
+ data: { type: "bundleIds", id: params.bundleIdId }
4925
+ }
4926
+ }
4927
+ }
4928
+ });
4929
+ return response.data;
4930
+ }
4906
4931
  };
4907
4932
  }
4908
4933
  });
@@ -6336,6 +6361,12 @@ var init_xcode_metrics = __esm({
6336
6361
  });
6337
6362
 
6338
6363
  // src/client/portal.ts
6364
+ function pickUniqueKeyName(base, taken) {
6365
+ if (!taken.has(base)) return base;
6366
+ let n = 1;
6367
+ while (taken.has(`${base} - ${n}`)) n++;
6368
+ return `${base} - ${n}`;
6369
+ }
6339
6370
  var PORTAL_BASE, PortalClient;
6340
6371
  var init_portal = __esm({
6341
6372
  "src/client/portal.ts"() {
@@ -6454,12 +6485,17 @@ var init_portal = __esm({
6454
6485
  * + period and collapse whitespace.
6455
6486
  */
6456
6487
  async createApiKey(rawName, serviceConfigurations = {}) {
6457
- const name = rawName.replace(/[^A-Za-z0-9 _\-.]/g, " ").replace(/\s+/g, " ").trim().slice(0, 50);
6458
- if (!name) throw new Error("createApiKey: name is empty after sanitization");
6488
+ const baseName = rawName.replace(/[^A-Za-z0-9 _\-.]/g, " ").replace(/\s+/g, " ").trim().slice(0, 45);
6489
+ if (!baseName) throw new Error("createApiKey: name is empty after sanitization");
6490
+ let existingNames = /* @__PURE__ */ new Set();
6459
6491
  try {
6460
- await this.listApiKeys();
6492
+ const list = await this.listApiKeys();
6493
+ existingNames = new Set(
6494
+ (list.keys ?? []).map((k) => String(k.keyName ?? "").trim())
6495
+ );
6461
6496
  } catch {
6462
6497
  }
6498
+ const name = pickUniqueKeyName(baseName, existingNames);
6463
6499
  const body = {
6464
6500
  teamId: this.teamId,
6465
6501
  name,
@@ -6514,14 +6550,24 @@ var init_portal = __esm({
6514
6550
  * The exact body comes from @expo/apple-utils v2.1.21 — both fields
6515
6551
  * are produced by separate functions (`d` for the map, `h` for the
6516
6552
  * array) and merged into the create payload.
6553
+ *
6554
+ * Apple also rejects duplicate key names ("Another key with same
6555
+ * name exists") — we dedupe by listing existing keys first and
6556
+ * appending " (N)" until we find a free slot, mirroring the
6557
+ * provisioning profile dedup.
6517
6558
  */
6518
6559
  async createApnsAuthKey(rawName) {
6519
- const name = rawName.replace(/[^A-Za-z0-9 _\-.]/g, " ").replace(/\s+/g, " ").trim().slice(0, 50);
6520
- if (!name) throw new Error("createApnsAuthKey: name is empty after sanitization");
6560
+ const baseName = rawName.replace(/[^A-Za-z0-9 _\-.]/g, " ").replace(/\s+/g, " ").trim().slice(0, 45);
6561
+ if (!baseName) throw new Error("createApnsAuthKey: name is empty after sanitization");
6562
+ let existingNames = /* @__PURE__ */ new Set();
6521
6563
  try {
6522
- await this.listApiKeys();
6564
+ const list = await this.listApiKeys();
6565
+ existingNames = new Set(
6566
+ (list.keys ?? []).map((k) => String(k.keyName ?? "").trim())
6567
+ );
6523
6568
  } catch {
6524
6569
  }
6570
+ const name = pickUniqueKeyName(baseName, existingNames);
6525
6571
  const body = {
6526
6572
  teamId: this.teamId,
6527
6573
  name,