@wix/himalaya-cli 0.1149.0 → 0.1150.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.
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/core/dev-server/src/app-config.d.ts +1 -0
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/core/dev-server/src/app-module.d.ts +4 -0
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/core/sdk/base44/src/index.d.ts +78 -0
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/core/sdk/sdk-types/src/capabilities.generated.d.ts +2 -1
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/core/ts/src/define-app.d.ts +17 -1
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/audio-record.mjs +1 -0
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/base44.mjs +145 -0
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/calendar.mjs +1 -0
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/calls.mjs +1 -0
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/contacts.mjs +1 -0
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/core.mjs +13 -0
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/location.mjs +1 -0
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/motion.mjs +1 -0
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/photos.mjs +1 -0
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/sdk-types.mjs +1 -0
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/sdui.mjs +1 -0
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/tasks.mjs +1 -0
- package/dist/authoring-runtime/node_modules/@wix/himalaya/package.json +4 -0
- package/dist/cli.mjs +2416 -773
- package/dist/preview-assets.generated.bin +0 -0
- package/guides/app-config.md +1 -1
- package/guides/iap-products.md +215 -0
- package/guides/importable-sdks.md +1 -0
- package/guides/index.json +6 -0
- package/guides/sdk-reference.json +103 -0
- package/package.json +2 -2
|
Binary file
|
package/guides/app-config.md
CHANGED
|
@@ -109,7 +109,7 @@ worker may use. Enforcement is **fail-closed** at two layers (SDK import + nativ
|
|
|
109
109
|
undeclared `capability.*` call is blocked at runtime. A worker hitting the Wix transport must
|
|
110
110
|
declare `wix_api`; the Wix Platform facade needs `wix_platform`.
|
|
111
111
|
|
|
112
|
-
App-level capability vocabulary: `camera`, `barcode_scanner`, `biometrics`, `secure_storage`, `share`, `push`, `file_picker`, `files`, `open_url`, `pdf`, `clipboard`, `photos`, `presigned_upload`, `ui`, `calendar`, `contacts`, `tasks`, `audio_record`, `audio_record_background`, `calls`, `location`, `location_background`, `motion`, `media_playback`, `webview`, `browser_auth`, `haptic`, `himi_apps`, `iap`, `keyboard`, `wix_cashier`, `live_activity`, `local_database`, `speech`, `speaker_diarization`, `system_intents`, `on_device_ai`, `app_info`, `release_control`, `godot`.
|
|
112
|
+
App-level capability vocabulary: `camera`, `barcode_scanner`, `biometrics`, `secure_storage`, `share`, `push`, `file_picker`, `files`, `open_url`, `pdf`, `clipboard`, `photos`, `presigned_upload`, `ui`, `calendar`, `contacts`, `tasks`, `audio_record`, `audio_record_background`, `calls`, `location`, `location_background`, `motion`, `media_playback`, `webview`, `browser_auth`, `haptic`, `himi_apps`, `iap`, `keyboard`, `wix_cashier`, `live_activity`, `local_database`, `speech`, `speaker_diarization`, `system_intents`, `on_device_ai`, `app_info`, `release_control`, `godot`, `base44`.
|
|
113
113
|
|
|
114
114
|
## What `himi validate` checks (7 passes)
|
|
115
115
|
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
# Registering digital products as App Store in-app purchases (`himi store iap`)
|
|
2
|
+
|
|
3
|
+
`himi store iap` registers an app owner's **selected digital products** in the owner's
|
|
4
|
+
existing App Store Connect app. It configures each product's draft metadata, an exact
|
|
5
|
+
initial price and explicit territories. It then exports a Wix→Apple mapping for a future
|
|
6
|
+
backend import.
|
|
7
|
+
|
|
8
|
+
It is an administration workflow, not a build: it never builds, signs or bumps a version,
|
|
9
|
+
and it runs anywhere `himi` is installed. An owner needs only a manifest and a credential
|
|
10
|
+
profile. It does not run during an app build or a customer checkout.
|
|
11
|
+
|
|
12
|
+
This version supports **one-time non-consumable** products only. Every other product type
|
|
13
|
+
is refused before anything reaches Apple.
|
|
14
|
+
|
|
15
|
+
## Before you start
|
|
16
|
+
|
|
17
|
+
- **The Apple app record already exists.** This command never creates apps or accounts,
|
|
18
|
+
and never accepts agreements.
|
|
19
|
+
- **You have an App Store Connect API key for the account that owns the app.** Managing
|
|
20
|
+
in-app purchases needs the **Admin** or **App Manager** role (or Account Holder). A
|
|
21
|
+
user's role in the web UI does not grant it to a key.
|
|
22
|
+
- **You have a credential profile for that key** at
|
|
23
|
+
`~/.himalaya/store-credentials/<name>.json`. It holds identifiers plus a path to the
|
|
24
|
+
`.p8`, never the key itself:
|
|
25
|
+
|
|
26
|
+
```json
|
|
27
|
+
{ "team": "ABCDE12345", "ascKeyId": "…", "ascIssuerId": "…", "ascKeyPath": "/Users/you/.appstore/AuthKey_….p8" }
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
The profile and the key must both live outside the repository. That is checked after
|
|
31
|
+
resolving symlinks. The profile's `team` must equal the manifest's `teamId`.
|
|
32
|
+
|
|
33
|
+
There is **no ambient fallback**. `--profile` is required, and exported `ASC_*` variables
|
|
34
|
+
are never used to decide which account to write to.
|
|
35
|
+
|
|
36
|
+
## The manifest
|
|
37
|
+
|
|
38
|
+
The manifest is an explicit, versioned selection. Nothing is inferred from names or prices,
|
|
39
|
+
and nothing is crawled from a Wix catalog.
|
|
40
|
+
|
|
41
|
+
```json
|
|
42
|
+
{
|
|
43
|
+
"manifestVersion": 1,
|
|
44
|
+
"target": {
|
|
45
|
+
"himiApp": "fit-club",
|
|
46
|
+
"wixSiteId": "0d9c3e5a-1111-4222-8333-944455556666",
|
|
47
|
+
"appleAppId": "6450000001",
|
|
48
|
+
"bundleId": "com.example.fitclub",
|
|
49
|
+
"teamId": "ABCDE12345",
|
|
50
|
+
"profile": "fit-club-owner"
|
|
51
|
+
},
|
|
52
|
+
"items": [
|
|
53
|
+
{
|
|
54
|
+
"wix": { "entityType": "pricingPlan", "entityId": "plan-lifetime" },
|
|
55
|
+
"classification": "digital",
|
|
56
|
+
"entitlement": "nutrition-program",
|
|
57
|
+
"productId": "com.example.fitclub.nutrition.lifetime",
|
|
58
|
+
"type": "nonConsumable",
|
|
59
|
+
"referenceName": "Nutrition program (lifetime)",
|
|
60
|
+
"localizations": [
|
|
61
|
+
{ "locale": "en-US", "name": "Nutrition Program", "description": "Lifetime access to the nutrition plan." }
|
|
62
|
+
],
|
|
63
|
+
"price": { "baseTerritory": "USA", "currency": "USD", "amount": "0.99" },
|
|
64
|
+
"territories": ["USA", "CAN"]
|
|
65
|
+
}
|
|
66
|
+
]
|
|
67
|
+
}
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Rules, all checked locally before any request:
|
|
71
|
+
|
|
72
|
+
- **`appleAppId`** is the numeric App Store Connect id. The app is never looked up by name,
|
|
73
|
+
and never taken as "the first app".
|
|
74
|
+
- **`classification`** must be `"digital"`. Physical goods and unclassified products are
|
|
75
|
+
refused. The classification is your configuration; this command does not make Apple's
|
|
76
|
+
policy decisions for you.
|
|
77
|
+
- **`productId`** must be stable, and you supply it. Apple product ids and types are
|
|
78
|
+
**immutable** once created, so the id is never generated or regenerated.
|
|
79
|
+
- **`price.amount`** is an exact decimal **string**. It must match one of Apple's price
|
|
80
|
+
points exactly. It is never rounded, and a nearby price is never substituted.
|
|
81
|
+
- **`territories`** is an explicit list that includes the base territory. Availability
|
|
82
|
+
never extends to future territories automatically.
|
|
83
|
+
- **Duplicates are refused:** a product id, Wix entity, entitlement or reference name
|
|
84
|
+
used twice.
|
|
85
|
+
- **Unknown keys are refused, at every level.** So is any string that looks like a key or a token.
|
|
86
|
+
|
|
87
|
+
## The workflow
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
himi store iap plan --manifest ./iap-products.json --profile fit-club-owner --out ./iap-plan.json
|
|
91
|
+
himi store iap apply --plan ./iap-plan.json --profile fit-club-owner --out ./iap-result.json
|
|
92
|
+
himi store iap status --manifest ./iap-products.json --profile fit-club-owner --json
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
**`plan` is read-only.** It:
|
|
96
|
+
|
|
97
|
+
1. Verifies that the app has the manifest's bundle id and that the bundle id is registered
|
|
98
|
+
to the manifest's team under this key.
|
|
99
|
+
2. Checks that each territory exists and that the base territory prices in the manifest's
|
|
100
|
+
currency.
|
|
101
|
+
3. Reads every page of the app's in-app purchases, then decides per product:
|
|
102
|
+
|
|
103
|
+
| Decision | Meaning |
|
|
104
|
+
|---|---|
|
|
105
|
+
| `create` | absent in Apple; apply will create it and configure it |
|
|
106
|
+
| `update` | an editable draft exists; apply will add only what is missing |
|
|
107
|
+
| `reuse` | already configured exactly as requested; nothing to do |
|
|
108
|
+
| `conflict` | differs in a way this command will not change; nothing is written |
|
|
109
|
+
|
|
110
|
+
A **conflict** is any of:
|
|
111
|
+
|
|
112
|
+
- the same product id with another type;
|
|
113
|
+
- the reference name already used by another product id;
|
|
114
|
+
- a live or in-review product whose metadata, price or availability differs;
|
|
115
|
+
- an existing price or availability that differs;
|
|
116
|
+
- no exact price point for an existing product.
|
|
117
|
+
|
|
118
|
+
Resolve conflicts in App Store Connect or in the manifest, then plan again.
|
|
119
|
+
|
|
120
|
+
For a product that doesn't exist yet, Apple can only list its price points after it is
|
|
121
|
+
created. The plan marks this in the item's `notes`.
|
|
122
|
+
|
|
123
|
+
**`apply` is the only command that writes.** It:
|
|
124
|
+
|
|
125
|
+
1. Prints the account, the app and the planned operations, then asks for confirmation.
|
|
126
|
+
Pass `--yes` for an intentional non-interactive run. Without `--yes`, a non-interactive
|
|
127
|
+
shell is refused before any request.
|
|
128
|
+
2. Checks the plan and account:
|
|
129
|
+
- Re-validates the plan file. The manifest and plan digests detect edits; they are not
|
|
130
|
+
an authorization.
|
|
131
|
+
- Re-resolves the credential profile and refuses a different profile, team or key.
|
|
132
|
+
3. Re-reads Apple:
|
|
133
|
+
- Verifies the target again.
|
|
134
|
+
- If anything changed that the plan did not list (**drift**), it stops before the first
|
|
135
|
+
write. Planned work that already happened is accepted as done.
|
|
136
|
+
4. For each product, it creates the product, then a draft version, then its
|
|
137
|
+
localizations. Then it sets the exact initial price and the explicit territories. Then
|
|
138
|
+
it reads everything back.
|
|
139
|
+
5. Writes the result file, even when the run is partial.
|
|
140
|
+
|
|
141
|
+
**When a write's outcome is unknown** (a lost response, a timeout, a 409), apply reads
|
|
142
|
+
Apple again before doing anything else:
|
|
143
|
+
|
|
144
|
+
- A write is repeated **at most once**, and only after that read proves it didn't land.
|
|
145
|
+
- An outcome that is still unknown stops that product as `partial`.
|
|
146
|
+
|
|
147
|
+
So rerunning the same plan never creates a second product, version, locale or price
|
|
148
|
+
schedule, even without the local journal. Nothing is ever deleted or rolled back.
|
|
149
|
+
|
|
150
|
+
**`status` is read-only.** It reports what Apple has for each product. Add `--out <file>`
|
|
151
|
+
to save it in the same shape as the result file.
|
|
152
|
+
|
|
153
|
+
## Local state
|
|
154
|
+
|
|
155
|
+
Local state lives in `~/.himalaya/store-iap/<appleAppId>/`:
|
|
156
|
+
|
|
157
|
+
- **`journal.json`** is an append-only record of identifiers and step outcomes. Nothing
|
|
158
|
+
reads it back to decide anything. Every run re-reads the target app, and a product Apple
|
|
159
|
+
hasn't listed yet is caught by apply's read-before-retry, so deleting the journal is
|
|
160
|
+
always safe.
|
|
161
|
+
- **`apply.lock`** prevents two local applies for the same app from interleaving. A lock
|
|
162
|
+
left behind by a crashed run names its pid; delete the file if no apply is running.
|
|
163
|
+
|
|
164
|
+
## The result file
|
|
165
|
+
|
|
166
|
+
Each item has two parts:
|
|
167
|
+
|
|
168
|
+
- **`mapping`** — the Wix site/app/bundle, the Wix entity and entitlement, the Apple product
|
|
169
|
+
id, the Apple resource id and the product type.
|
|
170
|
+
- **`provisioning`**:
|
|
171
|
+
- `outcome` — one of `created`, `updated`, `reused`, `conflict`, `partial`, `failed`
|
|
172
|
+
(`status` also reports `absent` and `incomplete`)
|
|
173
|
+
- per-step states and any conflicts
|
|
174
|
+
- `unmet` — where Apple still differs from the manifest
|
|
175
|
+
- the requested and observed price, availability and locales
|
|
176
|
+
- the draft version and Apple's review state
|
|
177
|
+
- `remainingRequirements`
|
|
178
|
+
- `lastReadAt`
|
|
179
|
+
|
|
180
|
+
The top level always carries `"backendSync": "notConfigured"` and `"checkoutActive": false`.
|
|
181
|
+
Creating a product in App Store Connect doesn't make it purchasable in any app, and doesn't
|
|
182
|
+
update checkout.
|
|
183
|
+
|
|
184
|
+
The file is administrative input, not proof that the listed site owns the Apple app. A
|
|
185
|
+
future importer must authenticate ownership and re-read Apple before activating anything.
|
|
186
|
+
|
|
187
|
+
## Exit codes
|
|
188
|
+
|
|
189
|
+
| Code | Meaning |
|
|
190
|
+
|---|---|
|
|
191
|
+
| `0` | everything requested is in place (`apply`, `status`), or the plan has no conflicts (`plan`) |
|
|
192
|
+
| `1` | partial, conflict, drift, or a declined prompt |
|
|
193
|
+
| `2` | usage, manifest, credential, target or access error; nothing was written |
|
|
194
|
+
|
|
195
|
+
## What is still yours to do
|
|
196
|
+
|
|
197
|
+
- **Finish the product in App Store Connect.** Upload the App Review screenshot and add
|
|
198
|
+
anything else App Store Connect lists as missing. `remainingRequirements` names what
|
|
199
|
+
Apple reports.
|
|
200
|
+
- **Handle the business side.** Paid Apps agreement, banking and tax information go
|
|
201
|
+
through the owner's App Store Connect account.
|
|
202
|
+
- **Submit for review.** Submit the product with an app version. This command never
|
|
203
|
+
submits, and never makes a product available for sale.
|
|
204
|
+
- **Allow for Sandbox delay.** Product changes can take a while to appear in Sandbox
|
|
205
|
+
purchase testing. Sandbox is for purchases, not a separate product catalogue:
|
|
206
|
+
these API calls change the real product records.
|
|
207
|
+
|
|
208
|
+
Not in this version:
|
|
209
|
+
|
|
210
|
+
- subscriptions and consumables
|
|
211
|
+
- review screenshot upload and submission
|
|
212
|
+
- changing a live price
|
|
213
|
+
- Wix catalog discovery
|
|
214
|
+
- Google Play
|
|
215
|
+
- backend import and checkout activation
|
|
@@ -16,6 +16,7 @@ package in one greppable file) or `GET /v1/sdk/<name>` over HTTP; in the CLI,
|
|
|
16
16
|
- `@himalaya/agent` — Tier-5 agent integration.
|
|
17
17
|
- `@himalaya/app-info` — Tier-5 typed binding for this app's OWN build + OTA metadata.
|
|
18
18
|
- `@himalaya/audio-record` — Tier-5 typed binding for microphone recording.
|
|
19
|
+
- `@himalaya/base44` — Tier-5 typed binding for a Base44 app's backend.
|
|
19
20
|
- `@himalaya/biometrics` — Tier-5 typed binding to the platform's biometric authentication capability.
|
|
20
21
|
- `@himalaya/browser-auth` — Tier-5 typed binding for native browser SSO.
|
|
21
22
|
- `@himalaya/calendar` — Tier-5 typed binding for the device calendar.
|
package/guides/index.json
CHANGED
|
@@ -297,6 +297,12 @@
|
|
|
297
297
|
"title": "Push notifications — optional setup and readiness checks",
|
|
298
298
|
"category": "CLI & Loop",
|
|
299
299
|
"file": "push-cli-onboarding.md"
|
|
300
|
+
},
|
|
301
|
+
{
|
|
302
|
+
"id": "iap-products",
|
|
303
|
+
"title": "Registering digital products as App Store in-app purchases",
|
|
304
|
+
"category": "CLI & Loop",
|
|
305
|
+
"file": "iap-products.md"
|
|
300
306
|
}
|
|
301
307
|
],
|
|
302
308
|
"componentReferenceFile": "component-reference.json",
|
|
@@ -309,6 +309,109 @@
|
|
|
309
309
|
}
|
|
310
310
|
]
|
|
311
311
|
},
|
|
312
|
+
{
|
|
313
|
+
"name": "@himalaya/base44",
|
|
314
|
+
"source": "core/sdk/base44/src/index.ts",
|
|
315
|
+
"description": "Tier-5 typed binding for a Base44 app's backend.",
|
|
316
|
+
"api": [
|
|
317
|
+
{
|
|
318
|
+
"name": "Json",
|
|
319
|
+
"kind": "type",
|
|
320
|
+
"jsdoc": "",
|
|
321
|
+
"decl": "export type Json = null | boolean | number | string | Json[] | { [key: string]: Json };"
|
|
322
|
+
},
|
|
323
|
+
{
|
|
324
|
+
"name": "JsonObject",
|
|
325
|
+
"kind": "type",
|
|
326
|
+
"jsdoc": "",
|
|
327
|
+
"decl": "export type JsonObject = { [key: string]: Json };"
|
|
328
|
+
},
|
|
329
|
+
{
|
|
330
|
+
"name": "Base44User",
|
|
331
|
+
"kind": "type",
|
|
332
|
+
"jsdoc": "/** A Base44 user record, as returned by `auth.me()`. Never carries a token. */",
|
|
333
|
+
"decl": "export type Base44User = JsonObject & { id?: string; email?: string; full_name?: string; role?: string };"
|
|
334
|
+
},
|
|
335
|
+
{
|
|
336
|
+
"name": "Base44Row",
|
|
337
|
+
"kind": "type",
|
|
338
|
+
"jsdoc": "/** An entity row. Base44 adds `id`, `created_date`, `updated_date`, `created_by`. */",
|
|
339
|
+
"decl": "export type Base44Row = JsonObject & { id?: string };"
|
|
340
|
+
},
|
|
341
|
+
{
|
|
342
|
+
"name": "ListOptions",
|
|
343
|
+
"kind": "interface",
|
|
344
|
+
"jsdoc": "",
|
|
345
|
+
"decl": "export interface ListOptions {\n /** Field to sort by; prefix with `-` for descending (e.g. `\"-created_date\"`). */\n sort?: string;\n limit?: number;\n skip?: number;\n fields?: string[];\n}"
|
|
346
|
+
},
|
|
347
|
+
{
|
|
348
|
+
"name": "AuthStatus",
|
|
349
|
+
"kind": "interface",
|
|
350
|
+
"jsdoc": "",
|
|
351
|
+
"decl": "export interface AuthStatus {\n signedIn: boolean;\n user: Base44User | null;\n}"
|
|
352
|
+
},
|
|
353
|
+
{
|
|
354
|
+
"name": "LoginResult",
|
|
355
|
+
"kind": "interface",
|
|
356
|
+
"jsdoc": "",
|
|
357
|
+
"decl": "export interface LoginResult {\n user: Base44User;\n}"
|
|
358
|
+
},
|
|
359
|
+
{
|
|
360
|
+
"name": "Base44Error",
|
|
361
|
+
"kind": "interface",
|
|
362
|
+
"jsdoc": "/** A rejected Base44 call. `status` is the HTTP status (0 when the request never got a reply).\n * An `Error` with extra fields rather than a subclass: Tier-5 bundles target an engine\n * profile without `class` syntax, so use {@link isBase44Error} instead of `instanceof`. */",
|
|
363
|
+
"decl": "export interface Base44Error extends Error {\n name: \"Base44Error\";\n status: number;\n code: string;\n}"
|
|
364
|
+
},
|
|
365
|
+
{
|
|
366
|
+
"name": "base44Error",
|
|
367
|
+
"kind": "function",
|
|
368
|
+
"jsdoc": "/** Build a {@link Base44Error}. Exported for workers and hosts that need to raise one. */",
|
|
369
|
+
"decl": "export function base44Error(status: number, message: string, code: string): Base44Error;"
|
|
370
|
+
},
|
|
371
|
+
{
|
|
372
|
+
"name": "isBase44Error",
|
|
373
|
+
"kind": "function",
|
|
374
|
+
"jsdoc": "/** Whether `value` is a rejected Base44 call — the `instanceof` a bundle cannot use. */",
|
|
375
|
+
"decl": "export function isBase44Error(value: unknown): value is Base44Error;"
|
|
376
|
+
},
|
|
377
|
+
{
|
|
378
|
+
"name": "toBase44Error",
|
|
379
|
+
"kind": "function",
|
|
380
|
+
"jsdoc": "/** Normalize anything a native arm, the bridge, or the network produced into a Base44Error. */",
|
|
381
|
+
"decl": "export function toBase44Error(raw: unknown): Base44Error;"
|
|
382
|
+
},
|
|
383
|
+
{
|
|
384
|
+
"name": "auth",
|
|
385
|
+
"kind": "const",
|
|
386
|
+
"jsdoc": "",
|
|
387
|
+
"decl": "export const auth = {\n /** Sign in with email + password. Native stores the token; you get the user. */\n async loginViaEmailPassword(email: string, password: string): Promise<LoginResult> {\n return unwrap<LoginResult>(await dispatch(\"capability.base44.authLoginViaEmailPassword\", { email, password }));\n },\n async register(email: string, password: string): Promise<JsonObject> {\n return unwrap<JsonObject>(await dispatch(\"capability.base44.authRegister\", { email, password }));\n },\n /** Send a one-time login code to `email`. */\n async loginViaOtp(email: string): Promise<JsonObject> {\n return unwrap<JsonObject>(await dispatch(\"capability.base44.authLoginViaOtp\", { email }));\n },\n /** Verify the one-time code. Native stores the token; you get the user. */\n async verifyOtp(email: string, otpCode: string): Promise<LoginResult> {\n return unwrap<LoginResult>(await dispatch(\"capability.base44.authVerifyOtp\", { email, otpCode }));\n },\n /** Request a password-reset email. */\n async resetPassword(email: string): Promise<void> {\n unwrap<unknown>(await dispatch(\"capability.base44.authResetPassword\", { email }));\n },\n async me(): Promise<Base44User> {\n return unwrap<Base44User>(await dispatch(\"capability.base44.authMe\"));\n },\n async updateMe(patch: JsonObject): Promise<Base44User> {\n return unwrap<Base44User>(await dispatch(\"capability.base44.authUpdateMe\", { data: json(patch) }));\n },\n /** Whether a user is signed in, and who. Never rejects for a signed-out user. */\n async status(): Promise<AuthStatus> {\n const s = unwrap<Partial<AuthStatus> | nul\n/* … */"
|
|
388
|
+
},
|
|
389
|
+
{
|
|
390
|
+
"name": "EntityHandle",
|
|
391
|
+
"kind": "interface",
|
|
392
|
+
"jsdoc": "",
|
|
393
|
+
"decl": "export interface EntityHandle {\n list(opts?: ListOptions): Promise<Base44Row[]>;\n filter(query: JsonObject, opts?: ListOptions): Promise<Base44Row[]>;\n get(id: string): Promise<Base44Row>;\n create(data: JsonObject): Promise<Base44Row>;\n update(id: string, patch: JsonObject): Promise<Base44Row>;\n delete(id: string): Promise<void>;\n bulkCreate(rows: JsonObject[]): Promise<Base44Row[]>;\n}"
|
|
394
|
+
},
|
|
395
|
+
{
|
|
396
|
+
"name": "entities",
|
|
397
|
+
"kind": "function",
|
|
398
|
+
"jsdoc": "/** Typed access to one entity of the configured Base44 app, e.g. `entities(\"Task\").list()`. */",
|
|
399
|
+
"decl": "export function entities(name: string): EntityHandle;"
|
|
400
|
+
},
|
|
401
|
+
{
|
|
402
|
+
"name": "functions",
|
|
403
|
+
"kind": "const",
|
|
404
|
+
"jsdoc": "",
|
|
405
|
+
"decl": "export const functions = {\n /** Invoke a Base44 backend function by name. Resolves with its JSON reply. */\n async invoke(name: string, data: JsonObject = {}): Promise<Json> {\n if (!name) throw new Error(\"@himalaya/base44: functions.invoke: name is required\");\n return unwrap<Json>(await dispatch(\"capability.base44.functionsInvoke\", { name, data: json(data) }));\n },\n};"
|
|
406
|
+
},
|
|
407
|
+
{
|
|
408
|
+
"name": "version",
|
|
409
|
+
"kind": "const",
|
|
410
|
+
"jsdoc": "",
|
|
411
|
+
"decl": "export const version = 1;"
|
|
412
|
+
}
|
|
413
|
+
]
|
|
414
|
+
},
|
|
312
415
|
{
|
|
313
416
|
"name": "@himalaya/biometrics",
|
|
314
417
|
"source": "core/sdk/biometrics/src/index.ts",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wix/himalaya-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.1150.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": "
|
|
70
|
+
"falconPackageHash": "576a471c0c989054e6d74ba053f27d226189cdd8f88ec2feceeaadaa"
|
|
71
71
|
}
|