@wix/himalaya-cli 0.1133.0 → 0.1134.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.
@@ -90,5 +90,45 @@ export declare function entitlements(): Promise<Entitlement[]>;
90
90
  * No-op for subscriptions / non-consumables. Resolves true on success.
91
91
  */
92
92
  export declare function consume(transactionId: string): Promise<boolean>;
93
- /** Capability version, for bundles that gate on min binary version. */
94
- export declare const version = 1;
93
+ /** SDK contract version; not native support detection. Set the bundle min_binary_version at rollout. */
94
+ export declare const version = 2;
95
+ /** StoreKit-verified convenience fields; the server must independently verify the JWS. */
96
+ export interface AppleTransaction {
97
+ store: "apple";
98
+ signedTransaction: string;
99
+ transactionId: string;
100
+ originalTransactionId: string;
101
+ productId: string;
102
+ appAccountToken: string | null;
103
+ environment: "production" | "sandbox" | "xcode" | "unknown";
104
+ }
105
+ export type TransactionErrorCode = "unsupported" | "unavailable" | "invalidArgument" | "invalidResponse" | "notEnabled" | "unsupportedProductType" | "unknownProduct" | "verificationFailed" | "persistenceFailed" | "ownershipConflict" | "storeError" | "busy";
106
+ export type TransactionFailure = {
107
+ status: "failed";
108
+ code: TransactionErrorCode;
109
+ };
110
+ export type VerificationPurchaseResult = {
111
+ status: "purchased";
112
+ transaction: AppleTransaction;
113
+ } | {
114
+ status: "pending" | "cancelled";
115
+ } | TransactionFailure;
116
+ export type UnfinishedTransactionsResult = {
117
+ status: "ok";
118
+ transactions: AppleTransaction[];
119
+ } | TransactionFailure;
120
+ export type FinishTransactionResult = {
121
+ status: "finished" | "notFound";
122
+ } | TransactionFailure;
123
+ /** Apple non-consumables only. The token comes from authenticated backend context.
124
+ * Leaves the transaction unfinished. Never falls back to legacy purchase on old binaries. */
125
+ export declare function purchaseForVerification(input: {
126
+ productId: string;
127
+ appAccountToken: string;
128
+ }): Promise<VerificationPurchaseResult>;
129
+ /** Same-install recovery; does not restore finished purchases or override ownership. */
130
+ export declare function getUnfinishedTransactions(): Promise<UnfinishedTransactionsResult>;
131
+ /** Trusted callers must first obtain durable backend processing acknowledgement. */
132
+ export declare function finishTransaction(input: {
133
+ transactionId: string;
134
+ }): Promise<FinishTransactionResult>;
@@ -14,7 +14,7 @@ export declare const CAPABILITY_REGISTRY: {
14
14
  readonly godot: readonly ["loadPack", "release", "send"];
15
15
  readonly haptic: readonly ["play"];
16
16
  readonly himi_apps: readonly ["canOpen", "current", "hostInfo", "open"];
17
- readonly iap: readonly ["consume", "entitlements", "getPaywallConfig", "getProducts", "purchase", "restore"];
17
+ readonly iap: readonly ["consume", "entitlements", "finishTransaction", "getPaywallConfig", "getProducts", "getUnfinishedTransactions", "purchase", "purchaseForVerification", "restore"];
18
18
  readonly keyboard: readonly ["dismiss"];
19
19
  readonly live_activity: readonly ["end", "start", "update"];
20
20
  readonly local_database: readonly ["availability", "count", "get", "getAll", "purge", "query", "queueDepth", "queueDrain", "queueEnqueue", "remove", "upsert"];
@@ -29,7 +29,7 @@ var CAPABILITY_REGISTRY = {
29
29
  "godot": ["loadPack", "release", "send"],
30
30
  "haptic": ["play"],
31
31
  "himi_apps": ["canOpen", "current", "hostInfo", "open"],
32
- "iap": ["consume", "entitlements", "getPaywallConfig", "getProducts", "purchase", "restore"],
32
+ "iap": ["consume", "entitlements", "finishTransaction", "getPaywallConfig", "getProducts", "getUnfinishedTransactions", "purchase", "purchaseForVerification", "restore"],
33
33
  "keyboard": ["dismiss"],
34
34
  "live_activity": ["end", "start", "update"],
35
35
  "local_database": ["availability", "count", "get", "getAll", "purge", "query", "queueDepth", "queueDrain", "queueEnqueue", "remove", "upsert"],
@@ -29,7 +29,7 @@ var CAPABILITY_REGISTRY = {
29
29
  "godot": ["loadPack", "release", "send"],
30
30
  "haptic": ["play"],
31
31
  "himi_apps": ["canOpen", "current", "hostInfo", "open"],
32
- "iap": ["consume", "entitlements", "getPaywallConfig", "getProducts", "purchase", "restore"],
32
+ "iap": ["consume", "entitlements", "finishTransaction", "getPaywallConfig", "getProducts", "getUnfinishedTransactions", "purchase", "purchaseForVerification", "restore"],
33
33
  "keyboard": ["dismiss"],
34
34
  "live_activity": ["end", "start", "update"],
35
35
  "local_database": ["availability", "count", "get", "getAll", "purge", "query", "queueDepth", "queueDrain", "queueEnqueue", "remove", "upsert"],
@@ -29,7 +29,7 @@ var CAPABILITY_REGISTRY = {
29
29
  "godot": ["loadPack", "release", "send"],
30
30
  "haptic": ["play"],
31
31
  "himi_apps": ["canOpen", "current", "hostInfo", "open"],
32
- "iap": ["consume", "entitlements", "getPaywallConfig", "getProducts", "purchase", "restore"],
32
+ "iap": ["consume", "entitlements", "finishTransaction", "getPaywallConfig", "getProducts", "getUnfinishedTransactions", "purchase", "purchaseForVerification", "restore"],
33
33
  "keyboard": ["dismiss"],
34
34
  "live_activity": ["end", "start", "update"],
35
35
  "local_database": ["availability", "count", "get", "getAll", "purge", "query", "queueDepth", "queueDrain", "queueEnqueue", "remove", "upsert"],
@@ -29,7 +29,7 @@ var CAPABILITY_REGISTRY = {
29
29
  "godot": ["loadPack", "release", "send"],
30
30
  "haptic": ["play"],
31
31
  "himi_apps": ["canOpen", "current", "hostInfo", "open"],
32
- "iap": ["consume", "entitlements", "getPaywallConfig", "getProducts", "purchase", "restore"],
32
+ "iap": ["consume", "entitlements", "finishTransaction", "getPaywallConfig", "getProducts", "getUnfinishedTransactions", "purchase", "purchaseForVerification", "restore"],
33
33
  "keyboard": ["dismiss"],
34
34
  "live_activity": ["end", "start", "update"],
35
35
  "local_database": ["availability", "count", "get", "getAll", "purge", "query", "queueDepth", "queueDrain", "queueEnqueue", "remove", "upsert"],
@@ -58,13 +58,62 @@ async function consume(transactionId) {
58
58
  function normalizeStatus(s) {
59
59
  return s === "purchased" || s === "pending" || s === "cancelled" || s === "failed" ? s : "failed";
60
60
  }
61
- var version = 1;
61
+ var version = 2;
62
+ async function purchaseForVerification(input) {
63
+ if (!nonempty(input?.productId) || !isUUID(input?.appAccountToken)) return failure("invalidArgument");
64
+ const result = await managedDispatch(() => dispatch("capability.iap.purchaseForVerification", input));
65
+ if (result?.status === "purchased" && isAppleTransaction(result.transaction)) {
66
+ return { status: "purchased", transaction: decodeTransaction(result.transaction) };
67
+ }
68
+ if (result?.status === "pending" || result?.status === "cancelled") return { status: result.status };
69
+ return decodeFailure(result);
70
+ }
71
+ async function getUnfinishedTransactions() {
72
+ const result = await managedDispatch(() => dispatch("capability.iap.getUnfinishedTransactions"));
73
+ if (result?.status === "ok" && Array.isArray(result.transactions) && result.transactions.every(isAppleTransaction)) {
74
+ return { status: "ok", transactions: result.transactions.map(decodeTransaction) };
75
+ }
76
+ return decodeFailure(result);
77
+ }
78
+ async function finishTransaction(input) {
79
+ if (!nonempty(input?.transactionId)) return failure("invalidArgument");
80
+ const result = await managedDispatch(() => dispatch("capability.iap.finishTransaction", input));
81
+ if (result?.status === "finished" || result?.status === "notFound") return { status: result.status };
82
+ return decodeFailure(result);
83
+ }
84
+ var transactionErrors = /* @__PURE__ */ new Set(["unsupported", "unavailable", "invalidArgument", "invalidResponse", "notEnabled", "unsupportedProductType", "unknownProduct", "verificationFailed", "persistenceFailed", "ownershipConflict", "storeError", "busy"]);
85
+ var failure = (code) => ({ status: "failed", code });
86
+ var nonempty = (value) => typeof value === "string" && value.trim().length > 0;
87
+ var isUUID = (value) => typeof value === "string" && /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(value) && value.length === 36;
88
+ var isObject = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
89
+ async function managedDispatch(invoke) {
90
+ try {
91
+ const value = await invoke();
92
+ return isObject(value) ? value : null;
93
+ } catch {
94
+ return failure("unavailable");
95
+ }
96
+ }
97
+ function decodeFailure(value) {
98
+ return value?.status === "failed" && transactionErrors.has(value.code) ? failure(value.code) : failure("invalidResponse");
99
+ }
100
+ function isAppleTransaction(value) {
101
+ if (!isObject(value)) return false;
102
+ return value.store === "apple" && typeof value.signedTransaction === "string" && /^[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+$/.test(value.signedTransaction) && nonempty(value.transactionId) && nonempty(value.originalTransactionId) && nonempty(value.productId) && (value.appAccountToken === null || isUUID(value.appAccountToken)) && ["production", "sandbox", "xcode", "unknown"].includes(value.environment);
103
+ }
104
+ function decodeTransaction(value) {
105
+ const { store, signedTransaction, transactionId, originalTransactionId, productId, appAccountToken, environment } = value;
106
+ return { store, signedTransaction, transactionId, originalTransactionId, productId, appAccountToken, environment };
107
+ }
62
108
  export {
63
109
  consume,
64
110
  entitlements,
111
+ finishTransaction,
65
112
  getPaywallConfig,
66
113
  getProducts,
114
+ getUnfinishedTransactions,
67
115
  purchase,
116
+ purchaseForVerification,
68
117
  restore,
69
118
  version
70
119
  };
@@ -29,7 +29,7 @@ var CAPABILITY_REGISTRY = {
29
29
  "godot": ["loadPack", "release", "send"],
30
30
  "haptic": ["play"],
31
31
  "himi_apps": ["canOpen", "current", "hostInfo", "open"],
32
- "iap": ["consume", "entitlements", "getPaywallConfig", "getProducts", "purchase", "restore"],
32
+ "iap": ["consume", "entitlements", "finishTransaction", "getPaywallConfig", "getProducts", "getUnfinishedTransactions", "purchase", "purchaseForVerification", "restore"],
33
33
  "keyboard": ["dismiss"],
34
34
  "live_activity": ["end", "start", "update"],
35
35
  "local_database": ["availability", "count", "get", "getAll", "purge", "query", "queueDepth", "queueDrain", "queueEnqueue", "remove", "upsert"],
@@ -29,7 +29,7 @@ var CAPABILITY_REGISTRY = {
29
29
  "godot": ["loadPack", "release", "send"],
30
30
  "haptic": ["play"],
31
31
  "himi_apps": ["canOpen", "current", "hostInfo", "open"],
32
- "iap": ["consume", "entitlements", "getPaywallConfig", "getProducts", "purchase", "restore"],
32
+ "iap": ["consume", "entitlements", "finishTransaction", "getPaywallConfig", "getProducts", "getUnfinishedTransactions", "purchase", "purchaseForVerification", "restore"],
33
33
  "keyboard": ["dismiss"],
34
34
  "live_activity": ["end", "start", "update"],
35
35
  "local_database": ["availability", "count", "get", "getAll", "purge", "query", "queueDepth", "queueDrain", "queueEnqueue", "remove", "upsert"],
@@ -29,7 +29,7 @@ var CAPABILITY_REGISTRY = {
29
29
  "godot": ["loadPack", "release", "send"],
30
30
  "haptic": ["play"],
31
31
  "himi_apps": ["canOpen", "current", "hostInfo", "open"],
32
- "iap": ["consume", "entitlements", "getPaywallConfig", "getProducts", "purchase", "restore"],
32
+ "iap": ["consume", "entitlements", "finishTransaction", "getPaywallConfig", "getProducts", "getUnfinishedTransactions", "purchase", "purchaseForVerification", "restore"],
33
33
  "keyboard": ["dismiss"],
34
34
  "live_activity": ["end", "start", "update"],
35
35
  "local_database": ["availability", "count", "get", "getAll", "purge", "query", "queueDepth", "queueDrain", "queueEnqueue", "remove", "upsert"],
@@ -14,7 +14,7 @@ var CAPABILITY_REGISTRY = {
14
14
  "godot": ["loadPack", "release", "send"],
15
15
  "haptic": ["play"],
16
16
  "himi_apps": ["canOpen", "current", "hostInfo", "open"],
17
- "iap": ["consume", "entitlements", "getPaywallConfig", "getProducts", "purchase", "restore"],
17
+ "iap": ["consume", "entitlements", "finishTransaction", "getPaywallConfig", "getProducts", "getUnfinishedTransactions", "purchase", "purchaseForVerification", "restore"],
18
18
  "keyboard": ["dismiss"],
19
19
  "live_activity": ["end", "start", "update"],
20
20
  "local_database": ["availability", "count", "get", "getAll", "purge", "query", "queueDepth", "queueDrain", "queueEnqueue", "remove", "upsert"],
@@ -29,7 +29,7 @@ var CAPABILITY_REGISTRY = {
29
29
  "godot": ["loadPack", "release", "send"],
30
30
  "haptic": ["play"],
31
31
  "himi_apps": ["canOpen", "current", "hostInfo", "open"],
32
- "iap": ["consume", "entitlements", "getPaywallConfig", "getProducts", "purchase", "restore"],
32
+ "iap": ["consume", "entitlements", "finishTransaction", "getPaywallConfig", "getProducts", "getUnfinishedTransactions", "purchase", "purchaseForVerification", "restore"],
33
33
  "keyboard": ["dismiss"],
34
34
  "live_activity": ["end", "start", "update"],
35
35
  "local_database": ["availability", "count", "get", "getAll", "purge", "query", "queueDepth", "queueDrain", "queueEnqueue", "remove", "upsert"],
package/dist/cli.mjs CHANGED
@@ -6789,7 +6789,6 @@ function resolveTranslation(value, catalog, sourceCatalog) {
6789
6789
  var BINDING_SIGILS, BINDING_SIGIL_RE, TRANSLATION_PREFIX, TRANSLATION_KEY_RE;
6790
6790
  var init_bindings = __esm({
6791
6791
  "../../core/ts/src/bindings.ts"() {
6792
- "use strict";
6793
6792
  BINDING_SIGILS = ["service", "flag", "item", "t"];
6794
6793
  BINDING_SIGIL_RE = new RegExp(
6795
6794
  `^\\$(?:${BINDING_SIGILS.filter((s) => s !== "t").join("|")})\\b|^\\$t:`
@@ -24749,7 +24748,6 @@ function shouldRevealError(args) {
24749
24748
  var EMAIL_RE, URL_HOST_RE, INTEGER_RE, NUMBER_RE;
24750
24749
  var init_validation = __esm({
24751
24750
  "../../core/ts/src/validation.ts"() {
24752
- "use strict";
24753
24751
  EMAIL_RE = /^[A-Za-z0-9._%+-]+@[A-Za-z0-9-]+(\.[A-Za-z0-9-]+)*\.[A-Za-z]{2,}$/;
24754
24752
  URL_HOST_RE = /^[A-Za-z0-9-]+(\.[A-Za-z0-9-]+)*(:[0-9]+)?$/;
24755
24753
  INTEGER_RE = /^[+-]?[0-9]+$/;
@@ -29150,7 +29148,6 @@ function validateWorkerSubtree(raw, slotId, policy, actionCatalog) {
29150
29148
  var WORKER_SUBTREE_CEILINGS, ID_PART, ACTION_ID;
29151
29149
  var init_worker_subtree = __esm({
29152
29150
  "../../core/ts/src/worker-subtree.ts"() {
29153
- "use strict";
29154
29151
  init_worker_subtree_safe_types_generated();
29155
29152
  WORKER_SUBTREE_CEILINGS = Object.freeze({
29156
29153
  maxEncodedBytes: 65536,
@@ -58109,21 +58106,21 @@ var init_preview_assets_generated = __esm({
58109
58106
  "../../packages/serve/src/preview-assets.generated.ts"() {
58110
58107
  init_preview_assets_format();
58111
58108
  PREVIEW_ASSET_MANIFEST = [
58112
- { key: "assets/index-nG7b3MPu.js", contentType: "application/javascript; charset=utf-8", offset: 8, length: 1104209, sha256: "88839c5eb15058f706e50664752a75646d690de5148f8b504eb82c0f87a70a15" },
58113
- { key: "fonts/Roboto-LICENSE.txt", contentType: "application/octet-stream", offset: 1104217, length: 4610, sha256: "994062dd7af4186a739de55dd9e151c63b6301f8e2cbafc608d35c2e87da0cd2" },
58114
- { key: "fonts/Roboto-Variable.ttf", contentType: "font/ttf", offset: 1108827, length: 488584, sha256: "d7598e12c5dbef095ff8272cfc55da0250bd07fbdecbac8a530b9b277872a134" },
58115
- { key: "fonts/WixMadeforDisplay-Bold.ttf", contentType: "font/ttf", offset: 1597411, length: 90924, sha256: "ec4c7d63772d980d6e147b2df6215fd2737e4b04cebe0cf7e11dc695fb63cdcf" },
58116
- { key: "fonts/WixMadeforDisplay-ExtraBold.ttf", contentType: "font/ttf", offset: 1688335, length: 90984, sha256: "bf4c16a2774edd38a921edf3099469866cd74c094fd596f3fa4e81f54a04dfaa" },
58117
- { key: "fonts/WixMadeforDisplay-Medium.ttf", contentType: "font/ttf", offset: 1779319, length: 90980, sha256: "368faca44fb9f7207e4af784e94750b1ee59c1098b8689e0f4a918926f244fb5" },
58118
- { key: "fonts/WixMadeforDisplay-Regular.ttf", contentType: "font/ttf", offset: 1870299, length: 90872, sha256: "97ed8f1a6772abe26e3d8af5cecfc4b02faa94497d585b0398b5053b739a70c1" },
58119
- { key: "fonts/WixMadeforDisplay-SemiBold.ttf", contentType: "font/ttf", offset: 1961171, length: 90980, sha256: "642feab8a48ddf6c7a89d7c2a7c0edfa0e6e773f671287e460e222703563191e" },
58120
- { key: "fonts/WixMadeforText-Bold.ttf", contentType: "font/ttf", offset: 2052151, length: 108636, sha256: "37c179b4fefb63ea9637322b84583a2df53aa226c150294eea1675c14b1b8e29" },
58121
- { key: "fonts/WixMadeforText-ExtraBold.ttf", contentType: "font/ttf", offset: 2160787, length: 109084, sha256: "62e2fe4718129f36ecdb0ae4de385bd6b81ecc876146447167c6c140fad699a9" },
58122
- { key: "fonts/WixMadeforText-Medium.ttf", contentType: "font/ttf", offset: 2269871, length: 109048, sha256: "4ecf270136af928612c76fe4ebade91d8156975e5ea4c0cf9225501dd1788e02" },
58123
- { key: "fonts/WixMadeforText-Regular.ttf", contentType: "font/ttf", offset: 2378919, length: 107700, sha256: "dee56f09fd3efc127c1ea95557edc74110c1460a46287da36e0af25efd341ef5" },
58124
- { key: "fonts/WixMadeforText-SemiBold.ttf", contentType: "font/ttf", offset: 2486619, length: 88108, sha256: "dced97a77624bc5f8b1ae65850360908297f4588e09feb6f22792d29dc7e765b" },
58125
- { key: "index.html", contentType: "text/html; charset=utf-8", offset: 2574727, length: 4947, sha256: "5c0a3e1b1d5bda7b6bc8cc2a025321bf6d0aa74d1f14b073861f188fd7b13a8b" },
58126
- { key: "t5-frame.html", contentType: "text/html; charset=utf-8", offset: 2579674, length: 17209, sha256: "dffc9718e2faa63ae2cc919e0a842f585ed565aaaa7c53778e90379442c731b6" }
58109
+ { key: "assets/index-B-1B15q7.js", contentType: "application/javascript; charset=utf-8", offset: 8, length: 1104811, sha256: "bd81d6b74d2a1b72072c1c20303e225dbc620861e50f66e5b7a90a6d64c66ed2" },
58110
+ { key: "fonts/Roboto-LICENSE.txt", contentType: "application/octet-stream", offset: 1104819, length: 4610, sha256: "994062dd7af4186a739de55dd9e151c63b6301f8e2cbafc608d35c2e87da0cd2" },
58111
+ { key: "fonts/Roboto-Variable.ttf", contentType: "font/ttf", offset: 1109429, length: 488584, sha256: "d7598e12c5dbef095ff8272cfc55da0250bd07fbdecbac8a530b9b277872a134" },
58112
+ { key: "fonts/WixMadeforDisplay-Bold.ttf", contentType: "font/ttf", offset: 1598013, length: 90924, sha256: "ec4c7d63772d980d6e147b2df6215fd2737e4b04cebe0cf7e11dc695fb63cdcf" },
58113
+ { key: "fonts/WixMadeforDisplay-ExtraBold.ttf", contentType: "font/ttf", offset: 1688937, length: 90984, sha256: "bf4c16a2774edd38a921edf3099469866cd74c094fd596f3fa4e81f54a04dfaa" },
58114
+ { key: "fonts/WixMadeforDisplay-Medium.ttf", contentType: "font/ttf", offset: 1779921, length: 90980, sha256: "368faca44fb9f7207e4af784e94750b1ee59c1098b8689e0f4a918926f244fb5" },
58115
+ { key: "fonts/WixMadeforDisplay-Regular.ttf", contentType: "font/ttf", offset: 1870901, length: 90872, sha256: "97ed8f1a6772abe26e3d8af5cecfc4b02faa94497d585b0398b5053b739a70c1" },
58116
+ { key: "fonts/WixMadeforDisplay-SemiBold.ttf", contentType: "font/ttf", offset: 1961773, length: 90980, sha256: "642feab8a48ddf6c7a89d7c2a7c0edfa0e6e773f671287e460e222703563191e" },
58117
+ { key: "fonts/WixMadeforText-Bold.ttf", contentType: "font/ttf", offset: 2052753, length: 108636, sha256: "37c179b4fefb63ea9637322b84583a2df53aa226c150294eea1675c14b1b8e29" },
58118
+ { key: "fonts/WixMadeforText-ExtraBold.ttf", contentType: "font/ttf", offset: 2161389, length: 109084, sha256: "62e2fe4718129f36ecdb0ae4de385bd6b81ecc876146447167c6c140fad699a9" },
58119
+ { key: "fonts/WixMadeforText-Medium.ttf", contentType: "font/ttf", offset: 2270473, length: 109048, sha256: "4ecf270136af928612c76fe4ebade91d8156975e5ea4c0cf9225501dd1788e02" },
58120
+ { key: "fonts/WixMadeforText-Regular.ttf", contentType: "font/ttf", offset: 2379521, length: 107700, sha256: "dee56f09fd3efc127c1ea95557edc74110c1460a46287da36e0af25efd341ef5" },
58121
+ { key: "fonts/WixMadeforText-SemiBold.ttf", contentType: "font/ttf", offset: 2487221, length: 88108, sha256: "dced97a77624bc5f8b1ae65850360908297f4588e09feb6f22792d29dc7e765b" },
58122
+ { key: "index.html", contentType: "text/html; charset=utf-8", offset: 2575329, length: 4947, sha256: "e6135ff25467aef302a26590c7f740191c93ee3acc0abcfbd4f218780559ff9f" },
58123
+ { key: "t5-frame.html", contentType: "text/html; charset=utf-8", offset: 2580276, length: 17209, sha256: "dffc9718e2faa63ae2cc919e0a842f585ed565aaaa7c53778e90379442c731b6" }
58127
58124
  ];
58128
58125
  }
58129
58126
  });
Binary file
@@ -1406,8 +1406,62 @@
1406
1406
  {
1407
1407
  "name": "version",
1408
1408
  "kind": "const",
1409
- "jsdoc": "/** Capability version, for bundles that gate on min binary version. */",
1410
- "decl": "export const version = 1;"
1409
+ "jsdoc": "/** SDK contract version; not native support detection. Set the bundle min_binary_version at rollout. */",
1410
+ "decl": "export const version = 2;"
1411
+ },
1412
+ {
1413
+ "name": "AppleTransaction",
1414
+ "kind": "interface",
1415
+ "jsdoc": "/** StoreKit-verified convenience fields; the server must independently verify the JWS. */",
1416
+ "decl": "export interface AppleTransaction {\n store: \"apple\";\n signedTransaction: string;\n transactionId: string;\n originalTransactionId: string;\n productId: string;\n appAccountToken: string | null;\n environment: \"production\" | \"sandbox\" | \"xcode\" | \"unknown\";\n}"
1417
+ },
1418
+ {
1419
+ "name": "TransactionErrorCode",
1420
+ "kind": "type",
1421
+ "jsdoc": "",
1422
+ "decl": "export type TransactionErrorCode = \"unsupported\" | \"unavailable\" | \"invalidArgument\" | \"invalidResponse\"\n | \"notEnabled\" | \"unsupportedProductType\" | \"unknownProduct\" | \"verificationFailed\"\n | \"persistenceFailed\" | \"ownershipConflict\" | \"storeError\" | \"busy\";"
1423
+ },
1424
+ {
1425
+ "name": "TransactionFailure",
1426
+ "kind": "type",
1427
+ "jsdoc": "",
1428
+ "decl": "export type TransactionFailure = { status: \"failed\"; code: TransactionErrorCode };"
1429
+ },
1430
+ {
1431
+ "name": "VerificationPurchaseResult",
1432
+ "kind": "type",
1433
+ "jsdoc": "",
1434
+ "decl": "export type VerificationPurchaseResult = { status: \"purchased\"; transaction: AppleTransaction }\n | { status: \"pending\" | \"cancelled\" } | TransactionFailure;"
1435
+ },
1436
+ {
1437
+ "name": "UnfinishedTransactionsResult",
1438
+ "kind": "type",
1439
+ "jsdoc": "",
1440
+ "decl": "export type UnfinishedTransactionsResult = { status: \"ok\"; transactions: AppleTransaction[] } | TransactionFailure;"
1441
+ },
1442
+ {
1443
+ "name": "FinishTransactionResult",
1444
+ "kind": "type",
1445
+ "jsdoc": "",
1446
+ "decl": "export type FinishTransactionResult = { status: \"finished\" | \"notFound\" } | TransactionFailure;"
1447
+ },
1448
+ {
1449
+ "name": "purchaseForVerification",
1450
+ "kind": "function",
1451
+ "jsdoc": "/** Apple non-consumables only. The token comes from authenticated backend context.\n * Leaves the transaction unfinished. Never falls back to legacy purchase on old binaries. */",
1452
+ "decl": "export async function purchaseForVerification(input: { productId: string; appAccountToken: string }): Promise<VerificationPurchaseResult>;"
1453
+ },
1454
+ {
1455
+ "name": "getUnfinishedTransactions",
1456
+ "kind": "function",
1457
+ "jsdoc": "/** Same-install recovery; does not restore finished purchases or override ownership. */",
1458
+ "decl": "export async function getUnfinishedTransactions(): Promise<UnfinishedTransactionsResult>;"
1459
+ },
1460
+ {
1461
+ "name": "finishTransaction",
1462
+ "kind": "function",
1463
+ "jsdoc": "/** Trusted callers must first obtain durable backend processing acknowledgement. */",
1464
+ "decl": "export async function finishTransaction(input: { transactionId: string }): Promise<FinishTransactionResult>;"
1411
1465
  }
1412
1466
  ]
1413
1467
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wix/himalaya-cli",
3
- "version": "0.1133.0",
3
+ "version": "0.1134.0",
4
4
  "type": "module",
5
5
  "description": "himi — the Himalaya authoring CLI. Build a Tier-5 content package on your own machine, push it to the production serve as a draft, preview it on web + Himi Player, and read worker logs back — the remote dev loop. Wraps @himalaya/serve-cli for transport.",
6
6
  "keywords": [
@@ -67,5 +67,5 @@
67
67
  "artifactId": "himalaya-cli"
68
68
  }
69
69
  },
70
- "falconPackageHash": "4920f7f92ed5d3cccc334bbc8ff870b7299ebb01377a75b9829788cd"
70
+ "falconPackageHash": "b114c871da4cb1b2f6f20b7a14c5d491c36f951d089ce10a23f5ca76"
71
71
  }