@maccesar/titools 4.4.2 → 4.6.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.
@@ -1,6 +1,6 @@
1
1
  # Migration Guide
2
2
 
3
- This guide mirrors the official PurgeTSS changelog (see the project `README.md` / `docs/index.md`). It walks through the upgrade-relevant changes from v7.2.6 through v7.11.x, flags breaking changes, and links each section to the reference files that cover the new surface area in depth.
3
+ This guide mirrors the official PurgeTSS changelog (see the project `README.md` / `docs/index.md`). It walks through the upgrade-relevant changes from v7.2.6 through v7.13.x, flags breaking changes, and links each section to the reference files that cover the new surface area in depth.
4
4
 
5
5
  Changelog source of truth: [https://github.com/macCesar/purgeTSS](https://github.com/macCesar/purgeTSS).
6
6
 
@@ -9,6 +9,8 @@ Changelog source of truth: [https://github.com/macCesar/purgeTSS](https://github
9
9
  <!-- TOC-START -->
10
10
  ## Contents
11
11
 
12
+ - [Upgrade to v7.13.x](#upgrade-to-v713x)
13
+ - [Upgrade to v7.12.x](#upgrade-to-v712x)
12
14
  - [Upgrade to v7.11.x](#upgrade-to-v711x)
13
15
  - [Upgrade to v7.10.x](#upgrade-to-v710x)
14
16
  - [Upgrade to v7.9.0](#upgrade-to-v790)
@@ -26,6 +28,87 @@ Changelog source of truth: [https://github.com/macCesar/purgeTSS](https://github
26
28
 
27
29
  <!-- TOC-END -->
28
30
 
31
+ ## Upgrade to v7.13.x
32
+
33
+ **This is the one release in the 7.x line with breaking changes.** They are confined to `purgetss brand`: its flags, the names of the files in `purgetss/brand/`, and the shape of the `brand:` config block. Nothing outside branding is affected — utility classes, `apply:`, `theme`, `images` and the SVG pipeline are untouched. Full release notes in [`version-history.md`](./version-history.md).
34
+
35
+ ### Breaking — `brand` flags renamed, no aliases kept
36
+
37
+ | Before v7.13.0 | v7.13.0 |
38
+ | --- | --- |
39
+ | `--splash` | `--splash-icon` |
40
+ | `--notification` | `--notification-icon` |
41
+ | `--splash-logo <path>` | `--splash-icon-logo <path>` |
42
+ | `--feature-logo <path>` | `--feature-graphic-logo <path>` |
43
+ | `--icon-logo <path>` (Android launcher) | `--adaptive-logo <path>` — `--icon-logo` now feeds `DefaultIcon.png` |
44
+ | `--legacy-splash` | removed; the 11 `res-*` splashes are part of `android-splash` and always generated |
45
+
46
+ The rule is now `--<piece>-logo` with no exceptions, which also filled in six flags that never existed (`--ios-splash-logo`, `--marketplace-logo`, `--legacy-icon-logo`, `--appicon-logo`, `--android-splash-logo`, `--notification-icon-logo`).
47
+
48
+ ### Breaking — logo filenames in `purgetss/brand/`
49
+
50
+ Basenames follow `logo-<piece>`, again with no exceptions:
51
+
52
+ | Before v7.13.0 | v7.13.0 |
53
+ | --- | --- |
54
+ | `logo-icon.*` (Android launcher mark) | `logo-adaptive.*` — `logo-icon.*` now feeds `DefaultIcon.png` |
55
+ | `logo-splash.*` | `logo-splash-icon.*` |
56
+ | `logo-feature.*` | `logo-feature-graphic.*` |
57
+
58
+ `logo-icon.svg` is the trap here: the name survived but changed meaning. A project that used it as the Android launcher mark will now get that artwork on `DefaultIcon.png` instead, and the launcher icons will fall back to the main logo.
59
+
60
+ ### Not breaking — the `brand:` config block rewrites itself
61
+
62
+ The config moved from purpose-based groups (`logos`, `padding`, `android`, `ios`, `colors`) to **one block per piece**, but you do not migrate it by hand. On the next run PurgeTSS rewrites `config.cjs` in place, carries over every value that had been customized, and prints each one it moved:
63
+
64
+ ```text
65
+ ::PurgeTSS:: Updated the brand: structure in ./purgetss/config.cjs.
66
+ Your values were carried over:
67
+ • brand.logos.androidLauncher → brand.adaptive.logo
68
+ • brand.padding.androidAdaptive → brand.adaptive.padding
69
+ • brand.android.splash → brand.splashIcon.enabled
70
+ • brand.colors.background → brand.background
71
+ ```
72
+
73
+ Both earlier shapes are recognized — the pre-7.7.0 flat keys and the v7.7.0 groups. This happens on `purgetss brand` and on any command that goes through the config (`build`, `watch`, `purge`, `shades`). One key is dropped rather than moved: `brand.android.legacySplash`.
74
+
75
+ A **typo** is not treated as an old structure — it aborts the run before a single file is written, listing the valid keys. See [`app-branding.md` → Older configs update themselves](./app-branding.md#older-configs-update-themselves).
76
+
77
+ ### Added in v7.13.0
78
+
79
+ - **`brand` covers every image the Titanium template ships.** A fresh Alloy project used to keep 28 files wearing the grey Alloy logo: the 16 `assets/iphone/Default*.png`, the 11 `res-*/default.png`, and `assets/android/appicon.png`.
80
+ - **`--only <pieces>`** — narrow a run to pieces or groups (`ios`, `store`, `android`). Honored by `--dry-run`.
81
+ - **`LaunchLogo.png`** — drop `purgetss/brand/logo-launch.{svg,png}` and the iOS launch screen shows your logotype instead of the app icon. Written at exactly 1024×1024.
82
+ - **`brand.optimize` / `--optimize`** — palette-quantize the generated PNGs. Off by default (lossy); ~71% smaller on the reference set.
83
+ - **Padding defaults changed:** adaptive `19%` → `18%`. The 28 splash images now share one configurable rule at `26%`, measured against the canvas's shorter side.
84
+
85
+ ### Fixed in v7.13.0
86
+
87
+ - `shades` and `semantic` no longer strip every comment from `config.cjs` — they rewrite only the `theme:` section.
88
+
89
+ ### What to review
90
+
91
+ - **Grep your build scripts, `alloy.jmk`, CI jobs and npm scripts for the old flags.** They fail loudly rather than silently, but they do fail.
92
+ - **Rename any `logo-icon.*` you were using as the Android launcher mark to `logo-adaptive.*`** before the next run, or the launcher icons will silently fall back to the main logo.
93
+ - Let the config rewrite itself, then read the diff — it is the record of what you had customized.
94
+ - If you had pinned `--android-adaptive-padding 19` only to match the old default, you can drop the flag; `18%` is the default now.
95
+
96
+ ---
97
+
98
+ ## Upgrade to v7.12.x
99
+
100
+ v7.12.0 and v7.12.1 are additive — **no breaking changes**. Both releases improve what `purgetss brand --notes` prints; neither changes a generated asset. Full release notes in [`version-history.md`](./version-history.md).
101
+
102
+ - **Android launch background snippets in `--notes` (v7.12.0).** The notes covered the iOS launch image and the Android launcher icon but never the color Android draws before Titanium creates the first Window, so a run that set a brand background still flashed the default theme color at launch.
103
+ - **`--notes` targets the launcher Activity (v7.12.1).** Titanium applies `Theme.Titanium` directly to the generated launcher Activity, so splash items added only to the `<application>` theme could still be superseded. The notes now print a complete `splashscreen.xml` and a launcher-only `Theme.SplashScreen`. See [`launch-background.md`](./launch-background.md).
104
+ - **Font Awesome Free updated to 7.3.1 (v7.12.1)** — 23 new icon classes, none removed. Run `purgetss icon-library -v=fa` to refresh the font files in an existing project.
105
+
106
+ ### What to review
107
+
108
+ - If you followed an earlier `--notes` output and put the splash items on the `<application>` theme, re-run `purgetss brand --notes` and move them to a launcher-only theme.
109
+
110
+ ---
111
+
29
112
  ## Upgrade to v7.11.x
30
113
 
31
114
  v7.11.0 and v7.11.1 are additive — **no breaking changes**. The headline addition is a compile-time SVG image pipeline that runs automatically as a post-step of `purgetss`, plus a `config.cjs` syntax validator. Nothing new is required on upgrade; the new surface is opt-in. Full release notes in [`version-history.md`](./version-history.md).
@@ -79,12 +162,12 @@ Type mismatches in known config fields now print a formatted `Config Syntax Erro
79
162
 
80
163
  ## Upgrade to v7.10.x
81
164
 
82
- v7.10.0 through v7.10.2 are additive — **no breaking changes**. The notable shift is internal: configs written before v7.7.0 (the `brand:` regroup) now auto-migrate in memory on every run, so projects that never updated to the grouped `brand:` schema keep working without a `TypeError` crash. Full release notes in [`version-history.md`](./version-history.md).
165
+ v7.10.0 through v7.10.2 are additive — **no breaking changes**. The notable shift is internal: configs written before v7.7.0 (the `brand:` regroup) auto-migrate in memory on every run, so projects that never updated to the grouped `brand:` schema keep working without a `TypeError` crash. (v7.13.0 later replaced this with a one-time rewrite on disk.) Full release notes in [`version-history.md`](./version-history.md).
83
166
 
84
167
  ### Added in v7.10.0
85
168
 
86
169
  - **`purgetss images --opacity / --padding / --output`** — three CLI-only flags aimed at placeholder / default ImageView workflows. `--opacity` multiplies alpha; `--padding` shrinks the rendered image inside each density canvas; `--output` retargets the basename and subpath. See [`multi-density-images.md`](./multi-density-images.md).
87
- - **Google Play Feature Graphic in `brand`** — `purgetss brand` now generates `MarketplaceArtworkFeature.png` (1024×500). Auto-discovers `purgetss/brand/logo-feature.{svg,png}` or reuses the master logo. Tune with `--feature-graphic-padding <n>` (range `0-40`, default `12%`), `brand.padding.featureGraphic`, or `--feature-logo <path>`. See [`app-branding.md`](./app-branding.md).
170
+ - **Google Play Feature Graphic in `brand`** — `purgetss brand` now generates `MarketplaceArtworkFeature.png` (1024×500). Auto-discovers `purgetss/brand/logo-feature.{svg,png}` or reuses the master logo. Tune with `--feature-graphic-padding <n>` (range `0-40`, default `12%`), `brand.padding.featureGraphic`, or `--feature-logo <path>`. **Renamed in v7.13.0** to `--feature-graphic-logo` / `brand.featureGraphic.padding`. See [`app-branding.md`](./app-branding.md).
88
171
  - **Arbitrary nesting depth in `theme` objects** — property emission walks nested values recursively instead of stopping at level 2. `theme.extend.colors.brand.primary.500` now flattens to `brand-primary-500` instead of being silently dropped. Default keys (`default`, `global`, `DEFAULT`) collapse without contributing to the suffix. See [`arbitrary-values.md`](./arbitrary-values.md).
89
172
  - **`apply:` resolves bundled icon fonts from `dist/`** — `apply: 'fas fa-times-circle wh-12 ...'` now merges the FontAwesome family and glyph automatically. Same lookup runs for `mi-*` (Material Icons), `ms-*` (Material Symbols), and `f7-*` (Framework7). Project-level `purgetss/styles/fontawesome.tss` still wins over the bundled default. See [`apply-directive.md`](./apply-directive.md).
90
173
 
@@ -102,7 +185,7 @@ v7.10.0 through v7.10.2 are additive — **no breaking changes**. The notable sh
102
185
 
103
186
  If your project still uses the **flat** `brand:` config that predates v7.7.0, v7.10.2 normalizes it in memory on every run before defaults are applied. Without this, the build crashed with `TypeError: Cannot create property 'ios' on number '15'` because `brand.padding` was a number, not an object.
104
187
 
105
- Mapping (see [`app-branding.md` → Upgrading from pre-7.7.0 configs](./app-branding.md#upgrading-from-pre-7-7-0-configs)):
188
+ Mapping to the v7.7.0 grouped schema (superseded in v7.13.0 by the per-piece structure — see [`app-branding.md` → Older configs update themselves](./app-branding.md#older-configs-update-themselves)):
106
189
 
107
190
  | Pre-7.7.0 flat key | Current grouped key |
108
191
  | --- | --- |
@@ -113,11 +196,11 @@ Mapping (see [`app-branding.md` → Upgrading from pre-7.7.0 configs](./app-bran
113
196
  | `brand.notification` | `brand.android.notification` |
114
197
  | `brand.splash` | `brand.android.splash` |
115
198
 
116
- The grouped key always wins when both forms coexist. A one-time deprecation notice per session lists which legacy keys were migrated. Auto-migration is transitional and may be removed in a future major version — update `config.cjs` to the grouped schema to silence the notice and stay future-proof.
199
+ The grouped key always wins when both forms coexist. A one-time deprecation notice per session lists which legacy keys were migrated. This in-memory translation was removed in v7.13.0, which rewrites the block on disk once instead.
117
200
 
118
201
  ### What to review
119
202
 
120
- - If you maintain a `brand:` block from pre-7.7.0, plan the one-time update to the grouped schema (`logos`, `padding`, `android`, `ios`, `colors`).
203
+ - If you maintain a `brand:` block from pre-7.7.0 and are heading past v7.13.0, there is nothing to plan — the block is rewritten on disk on the next run.
121
204
  - If you previously skipped `apply:` with icon fonts because they were silently dropped, that workaround is no longer needed in v7.10.0.
122
205
  - Deeply nested color families in `theme.extend.colors.*` that you flattened by hand to stay at depth ≤ 2 can be restructured by domain — the recursive emission now reaches every leaf.
123
206
 
@@ -439,8 +522,10 @@ If you previously worked around this by inlining the gradient directly in TSS, r
439
522
  - After v7.5.0: diff generated `utilities.tss` to confirm property deduplication produces the expected output.
440
523
  - After v7.5.3: consider wiring `Appearance.init()` at app boot if you want runtime Light/Dark switching.
441
524
  - After v7.6.0: run `brand`, `images`, and `semantic` once in a scratch project before pointing them at production assets, so you can preview the output layout.
442
- - After v7.7.0: migrate the `brand:` block in `config.cjs` to the grouped schema (`logos`, `padding`, `android`, `ios`, `colors`). v7.10.2 auto-migrates flat configs in memory, but the one-time update is recommended to silence the deprecation notice.
525
+ - After v7.7.0: migrate the `brand:` block in `config.cjs` to the grouped schema (`logos`, `padding`, `android`, `ios`, `colors`). v7.10.2 auto-migrates flat configs in memory. Moot from v7.13.0, which rewrites the block on disk to the per-piece structure by itself.
443
526
  - After v7.8.0: run the build once and address every `Class Syntax Error` it surfaces. Update CI to handle the new hard-fail on malformed class names. Migrate any `top-[10px]` style square brackets to `top-(10px)` parentheses.
444
527
  - After v7.9.0: search for any `purgetss/experimental/tailwind-classes/` references in tooling/CI and update to `purgetss/glossary/tailwind-classes/`. If a project used top-level `theme.Window` / `View` / `ImageView` and depended on framework defaults being merged in, decide between moving the config under `theme.extend.*` or adding the previously-implicit utilities to the `apply` string.
445
528
  - After v7.10.0: deeply nested color families (`theme.extend.colors.brand.primary.500`) now emit recursively — restructure by domain if it improves readability. `apply:` with bundled icon fonts (`fas`, `mi-*`, `ms-*`, `f7-*`) no longer requires `build-fonts` first. The Google Play Feature Graphic ships automatically with `purgetss brand`.
446
529
  - After v7.11.0: reference `.svg` images with numeric `w-*`/`h-*` classes to opt into the compile-time SVG pipeline (add `purgetss/.cache/` to `.gitignore`). Ensure every `theme.fontFamily.*` value is a string, not a Tailwind-style array, or the new config validator hard-fails. Use `images.files` to pin per-file sizes and `images.autoSync: false` to stop the pipeline writing back to `config.cjs`.
530
+ - After v7.12.1: re-run `purgetss brand --notes` if you had copied an earlier Android splash snippet — the theme now belongs on the launcher Activity, not on `<application>`. Run `purgetss icon-library -v=fa` to pick up Font Awesome 7.3.1.
531
+ - After v7.13.0: grep build scripts, `alloy.jmk` and CI for the renamed `brand` flags (`--splash`, `--notification`, `--splash-logo`, `--feature-logo`, `--legacy-splash`) — no aliases were kept. Rename any `logo-icon.*` used as the Android launcher mark to `logo-adaptive.*`, or the launcher icons silently fall back to the main logo. Let `config.cjs` rewrite its own `brand:` block, then read the diff.
@@ -8,6 +8,35 @@ When in doubt about whether a class, flag, or config key exists in the user's in
8
8
 
9
9
  ---
10
10
 
11
+ ## v7.13.1
12
+ - Four vulnerable transitive dependencies patched (`postcss`, `nanoid`, `brace-expansion`, `uuid`). Lockfile only; no API or class changes.
13
+
14
+ ## v7.13.0
15
+ - **Breaking — one name per thing in `brand`.** `--splash` → `--splash-icon`, `--notification` → `--notification-icon`, `--splash-logo` → `--splash-icon-logo`, `--feature-logo` → `--feature-graphic-logo`. `--icon-logo` now feeds the `icon` piece (`DefaultIcon.png`); the Android launcher source is `--adaptive-logo`. `--legacy-splash` is gone — the 11 per-qualifier Android splashes are part of `android-splash` and always generated. Logo basenames follow `logo-<piece>` with no exceptions, so `logo-splash` → `logo-splash-icon` and `logo-feature` → `logo-feature-graphic`. **No aliases kept.** See [app-branding.md](app-branding.md).
16
+ - **`brand:` config reorganized by piece, not by kind of setting.** 14 piece blocks, each accepting `logo` / `padding` / `background` / `enabled`. `background` cascades from `brand.background`; `padding` deliberately does not. Unknown keys abort the run at both levels instead of being ignored.
17
+ - **Config migration moved from memory to disk.** Older `brand:` shapes are rewritten in `config.cjs` once, carrying over customized values and reporting each one moved. Runs on `brand` and on any command that goes through `ensureConfig()`. Replaces `normalizeLegacyBrand()`, which re-translated on every config read.
18
+ - **`brand` now covers every image the Titanium template ships** — the 16 `assets/iphone/Default*.png`, the 11 `res-*/default.png`, and `assets/android/appicon.png` were previously left with the grey Alloy logo.
19
+ - **`--only <pieces>` filter.** Pieces or groups (`ios`, `store`, `android`), honored by `--dry-run`. Naming a piece generates it even when its opt-in flag is absent; an unknown name aborts before writing.
20
+ - **`LaunchLogo.png` (1024×1024) as the iOS launch screen source.** Activated by the presence of `purgetss/brand/logo-launch.{svg,png}`, or `--only launch-logo`. Tune with `--launch-logo` / `--launch-logo-padding`.
21
+ - **`brand.optimize` / `--optimize`** — quantize the generated PNGs to a palette. Off by default (lossy); ~71% smaller on the reference set. `--no-optimize` overrides the config per run.
22
+ - **Padding defaults changed:** adaptive `19%` → `18%`; the 28 splash images now share one configurable rule (`brand.androidSplash.padding` / `brand.iosSplash.padding`, default `26%`, measured against the canvas's shorter side).
23
+ - Intermediate masters are sized to the largest request of the run instead of a fixed 1024 px, so no destination is ever upscaled.
24
+ - `--nine-patch` declared but **not implemented** — selecting it prints a warning and writes nothing.
25
+ - Fix: `shades` and `semantic` no longer strip every comment from `config.cjs`; they rewrite only the `theme:` section.
26
+
27
+ ## v7.12.1
28
+ - `brand --notes` now targets Titanium's **launcher Activity** instead of only the app theme: prints a complete `splashscreen.xml` plus a launcher-only `Theme.SplashScreen` derived from `Theme.Titanium`. See [launch-background.md](launch-background.md).
29
+ - Font Awesome Free updated to **7.3.1** — 23 new icon classes (`.fa-lotus`, `.fa-codeberg`, `.fa-copilot`, `.fa-substack`, `.fa-tesla`, `.fa-storybook`, `.fa-matrix`, `.fa-nextcloud`, `.fa-visual-studio`, …), none removed.
30
+
31
+ ## v7.12.0
32
+ - `brand --notes` gained Android launch-background snippets (`android:windowSplashScreenBackground` + `android:windowBackground`), so a run that sets a brand background no longer flashes the default theme color at launch.
33
+ - `--notes` wording no longer names only `tiapp.xml` — the command edits neither `tiapp.xml` nor the Android theme resources.
34
+
35
+ ## v7.11.2
36
+ - Fix: `images.files` sync silently gave up on **any config containing comments** — including the one `purgetss init` generates. Every run printed `Could not insert <file> into images.files` while `files` stayed `[]`.
37
+ - Fix: `parseTssMap()` dropped every property following an escaped quote, and classes carrying a nested object (`'.text-xs': { font: { fontSize: 12 } }`) never entered the TSS map — both starved the SVG pipeline of dimensions.
38
+ - Fix: **Android `theme` values keep their quotes in custom rules.** `'.welcome-window': { android: { theme: 'Theme.AppDerived.NoTitleBar' } }` used to emit an unquoted value that Alloy cannot compile, because any value containing the substring `Titanium` was treated as a JavaScript expression. Detection is now anchored to the start of the value.
39
+
11
40
  ## v7.11.1
12
41
  - Symmetric width/height cascade in the SVG image pipeline: a class can pin width-only, height-only, or both; the unpinned side stays `null` in `images.files` and is re-derived from the SVG viewBox on every run (no stale auto-derived dimensions frozen in config).
13
42
  - `syncConfigImages` mirrors the **current** run instead of taking `max()` across past runs — shrinking a class (e.g. `h-52` → `h-16`) now propagates to `config.cjs`. Pin manually with `images.autoSync: false`.
@@ -160,75 +160,227 @@ The Media module is used to access the device's media-related functionality, suc
160
160
 
161
161
  ### Related Types
162
162
 
163
+ > **Warning:** `success` receives a different shape depending on `allowMultiple`. With a single selection it is a `CameraMediaItemType` and the blob is on `e.media`. With `allowMultiple: true` it is a `CameraMediaMultipleItemsType` and there is no `e.media` at all — the blobs live under `e.images`, `e.videos` and `e.livePhotos`, each entry itself a `CameraMediaItemType`.
164
+
165
+ #### CameraMediaItemType
166
+ > A media object from the camera or photo gallery.
167
+
168
+ | Property | Type | Platform | Description |
169
+ |----------|------|----------|-------------|
170
+ | success | Boolean | both | Indicates if the operation succeeded. Returns `true`. |
171
+ | error | String | both | Error message, if any returned. |
172
+ | code | Number | both | Error code. Returns 0. |
173
+ | media | Ti.Blob | both | The media object, as a [Blob](Titanium.Blob). |
174
+ | path | String | android | The path of the image when returning data from the gallery. |
175
+ | mediaType | String | both | The type of media, either `MEDIA_TYPE_PHOTO`, `MEDIA_TYPE_LIVEPHOTO` or `MEDIA_… |
176
+ | cropRect | Dimension | both | Simple object defining the user's selected crop rectangle, or `null` if the use… |
177
+ | previewRect | Size | android | Simple object defining the preview image size. This will be undefined when cust… |
178
+ | livePhoto | Ti.UI.iOS.LivePhoto | both | The live photo object, as a <Titanium.UI.iOS.LivePhoto> and `undefined` if no l… |
179
+
180
+ #### CameraMediaMultipleItemsType
181
+ > A media object from photo gallery when <Titanium.Media.allowMultiple> is `true`.
182
+
183
+ | Property | Type | Platform | Description |
184
+ |----------|------|----------|-------------|
185
+ | success | Boolean | both | Indicates if the operation succeeded. Returns `true`. |
186
+ | error | String | both | Error message, if any returned. |
187
+ | code | Number | both | Error code. Returns 0. |
188
+ | images | Array<CameraMediaItemType> | both | The list of selected images. |
189
+ | livePhotos | Array<Titanium.UI.iOS.LivePhoto> | ios | The list of selected live photo objects. |
190
+ | videos | Array<CameraMediaItemType> | both | The list of selected videos. |
191
+
192
+ #### CameraOpen
193
+ > Parameters of the open callback
194
+
195
+ | Property | Type | Platform | Description |
196
+ |----------|------|----------|-------------|
197
+ | width | Number | android | Width of the preview camera image |
198
+ | height | Number | android | Height of the preview camera image |
199
+
163
200
  #### CameraOptionsType
164
201
  > Simple object for specifying options to [showCamera](Titanium.Media.showCamera).
165
202
 
166
- | Property | Type | Description |
167
- |----------|------|-------------|
168
- | success | Callback<CameraMediaItemType> | Function to call when the camera is closed after a successful capture/selection. |
169
- | open | Callback<CameraOpen> | Function to call when the camera is shown |
170
- | error | Callback<FailureResponse> | Function to call upon receiving an error. |
171
- | cancel | Callback<FailureResponse> | Function to call if the user presses the cancel button. |
172
- | recording | Callback<CameraRecordingCallback> | Function to call during recording. Returns size and duration. |
173
- | androidback | Callback<FailureResponse> | Function to call if the user presses the back button. |
174
- | autohide | Boolean | Specifies if the camera should be hidden automatically after the media capture … |
175
- | animated | Boolean | Specifies if the dialog should be animated upon showing and hiding. |
176
- | saveToPhotoGallery | Boolean | Specifies if the media should be saved to the photo gallery upon successful cap… |
177
- | allowEditing | Boolean | Specifies if the media should be editable after capture/selection. |
178
- | zoomEnabled | Boolean | Specifies if pinch to zoom is enabled or not. |
179
- | targetImageWidth | Number | Maximum width of the saved image. Depending on your phone and your value this m… |
180
- | targetImageHeight | Number | Maximum height of the saved image. Depending on your phone and your value this … |
181
- | mediaTypes | Array<String> | Array of media type constants to allow. Note: If you want to select live photos… |
182
- | videoMaximumDuration | Number | Maximum duration (in milliseconds) to allow video capture before completing. |
183
- | videoQuality | Number | Constant to indicate the video quality during capture. |
184
- | whichCamera | Number | Opens the camera with the specified camera direction. |
185
- | showControls | Boolean | Indicates if the built-in camera controls should be displayed. |
186
- | overlay | Ti.UI.View | View to added as an overlay to the camera UI (on top). |
187
- | transform | Ti.UI.Matrix2D | Transformation matrix to apply to the camera or photogallery view. |
188
- | inPopOver | Boolean | Show the camera in a popover. |
189
- | popoverView | Ti.UI.View | View to position the camera or photo gallery popover on top of. |
190
- | arrowDirection | Number | Controls the type of arrow and position of the popover. |
191
- | autorotate | Boolean | Determines if the camera preview should rotate or not. |
203
+ | Property | Type | Platform | Description |
204
+ |----------|------|----------|-------------|
205
+ | success | Callback<CameraMediaItemType> | both | Function to call when the camera is closed after a successful capture/selection. |
206
+ | open | Callback<CameraOpen> | android | Function to call when the camera is shown |
207
+ | error | Callback<FailureResponse> | both | Function to call upon receiving an error. |
208
+ | cancel | Callback<FailureResponse> | both | Function to call if the user presses the cancel button. |
209
+ | recording | Callback<CameraRecordingCallback> | android | Function to call during recording. Returns size and duration. |
210
+ | androidback | Callback<FailureResponse> | android | Function to call if the user presses the back button. |
211
+ | autohide | Boolean | both | Specifies if the camera should be hidden automatically after the media capture … |
212
+ | animated | Boolean | ios | Specifies if the dialog should be animated upon showing and hiding. |
213
+ | saveToPhotoGallery | Boolean | both | Specifies if the media should be saved to the photo gallery upon successful cap… |
214
+ | allowEditing | Boolean | ios | Specifies if the media should be editable after capture/selection. |
215
+ | zoomEnabled | Boolean | android | Specifies if pinch to zoom is enabled or not. |
216
+ | targetImageWidth | Number | android | Maximum width of the saved image. Depending on your phone and your value this m… |
217
+ | targetImageHeight | Number | android | Maximum height of the saved image. Depending on your phone and your value this … |
218
+ | mediaTypes | Array<String> | both | Array of media type constants to allow. Note: If you want to select live photos… |
219
+ | videoMaximumDuration | Number | both | Maximum duration (in milliseconds) to allow video capture before completing. |
220
+ | videoQuality | Number | both | Constant to indicate the video quality during capture. |
221
+ | whichCamera | Number | android | Opens the camera with the specified camera direction. |
222
+ | showControls | Boolean | ios | Indicates if the built-in camera controls should be displayed. |
223
+ | overlay | Ti.UI.View | both | View to added as an overlay to the camera UI (on top). |
224
+ | transform | Ti.UI.Matrix2D | ios | Transformation matrix to apply to the camera or photogallery view. |
225
+ | inPopOver | Boolean | ios | Show the camera in a popover. |
226
+ | popoverView | Ti.UI.View | ios | View to position the camera or photo gallery popover on top of. |
227
+ | arrowDirection | Number | ios | Controls the type of arrow and position of the popover. |
228
+ | autorotate | Boolean | ios | Determines if the camera preview should rotate or not. |
229
+
230
+ #### CameraRecordingCallback
231
+ > Infos about the current video recording
232
+
233
+ | Property | Type | Platform | Description |
234
+ |----------|------|----------|-------------|
235
+ | duration | Number | both | Length in milliseconds |
236
+ | size | Number | both | Size of the video in bytes |
237
+
238
+ #### FailureResponse
239
+ > Properties used in any event or callback which needs to report a failure.
240
+
241
+ | Property | Type | Platform | Description |
242
+ |----------|------|----------|-------------|
243
+ | success | Boolean | both | Indicates if the operation succeeded. Returns `false`. |
244
+ | error | String | both | Error message, if any returned. |
245
+ | code | Number | both | Error code. Returns a non-zero value. |
246
+
247
+ #### MediaAuthorizationResponse
248
+ > Argument passed to the callback when a request finishes successfully or erroneously.
249
+
250
+ | Property | Type | Platform | Description |
251
+ |----------|------|----------|-------------|
252
+ | success | Boolean | both | Indicates if the operation succeeded. |
253
+ | error | String | both | Error message, if any returned. |
254
+ | code | Number | both | Error code. Returns 0 if `success` is `true`. |
255
+
256
+ #### MediaQueryInfoType
257
+ > A full query descriptor for a filtering predicate.
258
+
259
+ | Property | Type | Platform | Description |
260
+ |----------|------|----------|-------------|
261
+ | value | Number \| String \| Boolean | ios | The value for the given predicate. See the descriptions in <MediaQueryType> for… |
262
+ | exact | Boolean | ios | Whether or not the predicate is for an exact match. The default is `true`. |
192
263
 
193
264
  #### MediaQueryType
194
265
  > A specifier for a media library query. By default, filters perform an exact match.
195
266
 
196
- | Property | Type | Description |
197
- |----------|------|-------------|
198
- | grouping | Number | A constant that specifies the ordering of the result array. |
199
- | mediaType | MediaQueryInfoType \| Number | The media type to filter on. |
200
- | title | MediaQueryInfoType \| String | The title to filter on. Value should be a String. |
201
- | albumTitle | MediaQueryInfoType \| String | The album title to filter on. Value should be a String. |
202
- | artist | MediaQueryInfoType \| String | The artist to filter on. Value should be a String. |
203
- | albumArtist | MediaQueryInfoType \| String | The album artist to filter on. Value should be a String. |
204
- | genre | MediaQueryInfoType \| String | The genre to filter on. Value should be a String. |
205
- | composer | MediaQueryInfoType \| String | The composer to filter on. Value should be a String. |
206
- | isCompilation | MediaQueryInfoType \| Boolean | Filter by whether or not the item is a compilation. The value should be a Boole… |
207
- | playCount | MediaQueryInfoType \| Number | The play count to filter on. Value should be a Number. |
208
- | persistentID | MediaQueryInfoType \| Number | The persistent ID to filter on. Value should be a Number. |
209
- | albumPersistentID | MediaQueryInfoType \| Number | The album persistent ID to filter on. Value should be a Number. |
210
- | albumArtistPersistentID | MediaQueryInfoType \| Number | The album artist persistent ID to filter on. Value should be a Number. |
211
- | genrePersistentID | MediaQueryInfoType \| Number | The genre persistent ID to filter on. Value should be a Number. |
212
- | composerPersistentID | MediaQueryInfoType \| Number | The composer persistent ID to filter on. Value should be a Number. |
213
- | isCloudItem | MediaQueryInfoType \| Boolean | Filter by whether or not the item is a cloud item. Value should be a Boolean. |
214
- | hasProtectedAsset | MediaQueryInfoType \| Boolean | Filter by whether or not the item is a protected asset. Value should be a Boole… |
215
- | podcastTitle | MediaQueryInfoType \| String | The podcast title to filter on. Value should be a String. |
216
- | podcastPersistentID | MediaQueryInfoType \| Number | The podcast persistent ID to filter on. Value should be a Number. |
267
+ | Property | Type | Platform | Description |
268
+ |----------|------|----------|-------------|
269
+ | grouping | Number | ios | A constant that specifies the ordering of the result array. |
270
+ | mediaType | MediaQueryInfoType \| Number | ios | The media type to filter on. |
271
+ | title | MediaQueryInfoType \| String | ios | The title to filter on. Value should be a String. |
272
+ | albumTitle | MediaQueryInfoType \| String | ios | The album title to filter on. Value should be a String. |
273
+ | artist | MediaQueryInfoType \| String | ios | The artist to filter on. Value should be a String. |
274
+ | albumArtist | MediaQueryInfoType \| String | ios | The album artist to filter on. Value should be a String. |
275
+ | genre | MediaQueryInfoType \| String | ios | The genre to filter on. Value should be a String. |
276
+ | composer | MediaQueryInfoType \| String | ios | The composer to filter on. Value should be a String. |
277
+ | isCompilation | MediaQueryInfoType \| Boolean | ios | Filter by whether or not the item is a compilation. The value should be a Boole… |
278
+ | playCount | MediaQueryInfoType \| Number | ios | The play count to filter on. Value should be a Number. |
279
+ | persistentID | MediaQueryInfoType \| Number | ios | The persistent ID to filter on. Value should be a Number. |
280
+ | albumPersistentID | MediaQueryInfoType \| Number | ios | The album persistent ID to filter on. Value should be a Number. |
281
+ | albumArtistPersistentID | MediaQueryInfoType \| Number | ios | The album artist persistent ID to filter on. Value should be a Number. |
282
+ | genrePersistentID | MediaQueryInfoType \| Number | ios | The genre persistent ID to filter on. Value should be a Number. |
283
+ | composerPersistentID | MediaQueryInfoType \| Number | ios | The composer persistent ID to filter on. Value should be a Number. |
284
+ | isCloudItem | MediaQueryInfoType \| Boolean | ios | Filter by whether or not the item is a cloud item. Value should be a Boolean. |
285
+ | hasProtectedAsset | MediaQueryInfoType \| Boolean | ios | Filter by whether or not the item is a protected asset. Value should be a Boole… |
286
+ | podcastTitle | MediaQueryInfoType \| String | ios | The podcast title to filter on. Value should be a String. |
287
+ | podcastPersistentID | MediaQueryInfoType \| Number | ios | The podcast persistent ID to filter on. Value should be a Number. |
217
288
 
218
289
  #### MusicLibraryOptionsType
219
290
  > Simple object for specifying options to [openMusicLibrary](Titanium.Media.openMusicLibrary).
220
291
 
221
- | Property | Type | Description |
222
- |----------|------|-------------|
223
- | success | Callback<MusicLibraryResponseType> | Function to call when the music library selection is made. |
224
- | error | Callback<FailureResponse> | Function to call upon receiving an error. |
225
- | cancel | Callback<FailureResponse> | Function to call if the user presses the cancel button. |
226
- | autohide | Boolean | Specifies that the library should be hidden automatically after media selection… |
227
- | animated | Boolean | Boolean if the dialog should be animated when showing and hiding. |
228
- | mediaTypes | Number \| Array<Number> | An array of media type constants defining selectable media. |
229
- | allowMultipleSelections | Boolean | Set to `true` to allow the user to select multiple items from the library. |
230
-
231
- *Plus 2 more types: *
292
+ | Property | Type | Platform | Description |
293
+ |----------|------|----------|-------------|
294
+ | success | Callback<MusicLibraryResponseType> | ios | Function to call when the music library selection is made. |
295
+ | error | Callback<FailureResponse> | ios | Function to call upon receiving an error. |
296
+ | cancel | Callback<FailureResponse> | ios | Function to call if the user presses the cancel button. |
297
+ | autohide | Boolean | ios | Specifies that the library should be hidden automatically after media selection… |
298
+ | animated | Boolean | ios | Boolean if the dialog should be animated when showing and hiding. |
299
+ | mediaTypes | Number \| Array<Number> | ios | An array of media type constants defining selectable media. |
300
+ | allowMultipleSelections | Boolean | ios | Set to `true` to allow the user to select multiple items from the library. |
301
+
302
+ #### MusicLibraryResponseType
303
+ > Simple object passed to the [openMusicLibrary](Titanium.Media.openMusicLibrary) `success` callback function.
304
+
305
+ | Property | Type | Platform | Description |
306
+ |----------|------|----------|-------------|
307
+ | representative | Ti.Media.Item | both | A single representative of the selected items. |
308
+ | items | Array<Titanium.Media.Item> | both | A list of all the items chosen by the user. |
309
+ | types | Number | both | Media types in this collection, represented as the bitwise OR of the media type… |
310
+
311
+ #### PhotoGalleryOptionsType
312
+ > Simple object for specifying options to [openPhotoGallery](Titanium.Media.openPhotoGallery).
313
+
314
+ | Property | Type | Platform | Description |
315
+ |----------|------|----------|-------------|
316
+ | success | Callback<CameraMediaItemType> \| Callback<CameraMediaMultipleItemsType> | both | Function to call when the photo gallery is closed after a successful selection. |
317
+ | error | Callback<FailureResponse> | both | Function to call upon receiving an error. |
318
+ | cancel | Callback<FailureResponse> | both | Function to call if the user presses the cancel button. |
319
+ | autohide | Boolean | ios | Specifies if the photo gallery should be hidden automatically after the media s… |
320
+ | animated | Boolean | ios | Specifies if the dialog should be animated upon showing and hiding. |
321
+ | allowEditing | Boolean | ios | Specifies if the media should be editable after capture/selection. |
322
+ | mediaTypes | Array<String> | both | Array of media type constants to allow. Live photos is only supported on the iO… |
323
+ | popoverView | Ti.UI.View | ios | View to position the photo gallery popover on top of. |
324
+ | arrowDirection | Number | ios | Controls the type of arrow and position of the popover. |
325
+ | allowMultiple | Boolean | both | Specifies if the user should be able to select multiple photos. |
326
+ | maxImages | Boolean | android | Specifies the number of images a user can select at maximum. |
327
+ | pathOnly | Boolean | android | Do not include the blob in the result |
328
+ | selectionLimit | Boolean | ios | Specifies number of media item that can be selected. |
329
+ | allowTranscoding | Boolean | ios | Specifies if the video should be transcoded (using highest quality preset) . If… |
330
+
331
+ #### PreviewImageError
332
+ > The parameter passed to the `error` callback of <PreviewImageOptions>.
333
+
334
+ | Property | Type | Platform | Description |
335
+ |----------|------|----------|-------------|
336
+ | success | Boolean | android | Indicates if the operation succeeded. Returns `false`. |
337
+ | error | String | android | Error message, if any returned. |
338
+ | code | Number | android | Error code, if applicable. |
339
+ | message | String | android | Description of the error. |
340
+
341
+ #### PreviewImageOptions
342
+ > Options passed to <Titanium.Media.previewImage>.
343
+
344
+ | Property | Type | Platform | Description |
345
+ |----------|------|----------|-------------|
346
+ | image | Ti.Blob | android | The image to preview. Must be a blob based on a file, such as from <Titanium.Fi… |
347
+ | success | Callback<SuccessResponse> | android | Function to be called back if the preview succeeds. No info is passed. |
348
+ | error | Callback<PreviewImageError> | android | Function called back if the preview fails. Check the `message` property of pass… |
349
+
350
+ #### RouteDescription
351
+ > An Object describing the current audio route.
352
+
353
+ | Property | Type | Platform | Description |
354
+ |----------|------|----------|-------------|
355
+ | inputs | Array<String> | ios | An Array of current input ports for the session. See the `AUDIO_SESSION_PORT` c… |
356
+ | outputs | Array<String> | ios | An Array of current output ports for the session. See the `AUDIO_SESSION_PORT` … |
357
+
358
+ #### ScreenshotResult
359
+ > The parameter passed to the <Titanium.Media.takeScreenshot> callback.
360
+
361
+ | Property | Type | Platform | Description |
362
+ |----------|------|----------|-------------|
363
+ | media | Ti.Blob | both | The screenshot image. |
364
+
365
+ #### SuccessResponse
366
+ > Properties used in any event or callback which needs to report a success.
367
+
368
+ | Property | Type | Platform | Description |
369
+ |----------|------|----------|-------------|
370
+ | success | Boolean | both | Indicates if the operation succeeded. Returns `true`. |
371
+ | error | String | both | Error message, if any returned. |
372
+ | code | Number | both | Error code. Returns 0. |
373
+
374
+ #### RequestCameraAccessResult
375
+ > Same shape as [MediaAuthorizationResponse](#mediaauthorizationresponse): `success`, `error`, `code`.
376
+
377
+ #### RequestMusicLibraryAccessResult
378
+ > Same shape as [MediaAuthorizationResponse](#mediaauthorizationresponse): `success`, `error`, `code`.
379
+
380
+ #### RequestPhotoGalleryAccessResult
381
+ > Same shape as [MediaAuthorizationResponse](#mediaauthorizationresponse): `success`, `error`, `code`.
382
+
383
+ Also referenced by this API, documented elsewhere: `Dictionary`.
232
384
 
233
385
  ---
234
386
 
@@ -597,32 +597,42 @@ In Alloy, use the **`<Module>`** element with the `module` attribute set to `ti.
597
597
  #### CameraAnimationParams
598
598
  > Simple object used to control camera animations.
599
599
 
600
- | Property | Type | Description |
601
- |----------|------|-------------|
602
- | camera | Modules.Map.Annotation | <Modules.Map.Camera> to be animated to. |
603
- | duration | Number | The amount of time (in milliseconds) that the animation will last. |
604
- | curve | Number | Animation curve or easing function to apply to the animation. |
600
+ | Property | Type | Platform | Description |
601
+ |----------|------|----------|-------------|
602
+ | camera | Modules.Map.Annotation | both | <Modules.Map.Camera> to be animated to. |
603
+ | duration | Number | both | The amount of time (in milliseconds) that the animation will last. |
604
+ | curve | Number | both | Animation curve or easing function to apply to the animation. |
605
605
 
606
606
  #### ClusterAnnotationParams
607
607
  > Simple object used to create cluster annotation view.
608
608
 
609
- | Property | Type | Description |
610
- |----------|------|-------------|
611
- | memberAnnotations | Array<Modules.Map.Annotation> | Array of Modules.Map.Annotation, which is recieved in event 'clusteringstarted'… |
612
- | annotation | Modules.Map.Annotation | <Modules.Map.Annotation> instance, which you want to show as clustered annotati… |
609
+ | Property | Type | Platform | Description |
610
+ |----------|------|----------|-------------|
611
+ | memberAnnotations | Array<Modules.Map.Annotation> | ios | Array of Modules.Map.Annotation, which is received in event 'clusteringstarted'… |
612
+ | annotation | Modules.Map.Annotation | ios | <Modules.Map.Annotation> instance, which you want to show as clustered annotati… |
613
613
 
614
614
  #### MapLocationTypeV2
615
615
  > Simple object used as an argument to [setLocation](Modules.Map.View.setLocation).
616
616
 
617
- | Property | Type | Description |
618
- |----------|------|-------------|
619
- | longitude | Number | Longitude value for the center point of the map, in decimal degrees. |
620
- | latitude | Number | Latitude value for the center point of the map, in decimal degrees. |
621
- | longitudeDelta | Number | The amount of east-to-west distance displayed on the map, measured in decimal d… |
622
- | latitudeDelta | Number | The amount of north-to-south distance displayed on the map, measured in decimal… |
623
- | animate | Boolean | Set to `true` to animate the move to the new location. |
624
-
625
- *Plus 3 more types: MapViewPadding*
617
+ | Property | Type | Platform | Description |
618
+ |----------|------|----------|-------------|
619
+ | longitude | Number | both | Longitude value for the center point of the map, in decimal degrees. |
620
+ | latitude | Number | both | Latitude value for the center point of the map, in decimal degrees. |
621
+ | longitudeDelta | Number | both | The amount of east-to-west distance displayed on the map, measured in decimal d… |
622
+ | latitudeDelta | Number | both | The amount of north-to-south distance displayed on the map, measured in decimal… |
623
+ | animate | Boolean | both | Set to `true` to animate the move to the new location. |
624
+
625
+ #### MapViewPadding
626
+ > The padding applied to the map view using <Modules.Map.View.padding>.
627
+
628
+ | Property | Type | Platform | Description |
629
+ |----------|------|----------|-------------|
630
+ | top | Number | both | Top padding of the map view. |
631
+ | left | Number | both | Left padding of the map view. |
632
+ | bottom | Number | both | Bottom padding of the map view. |
633
+ | right | Number | both | Right padding of the map view. |
634
+
635
+ Also referenced by this API, documented elsewhere: [MapPointType](#mappointtype), [MapRegionTypev2](#mapregiontypev2).
626
636
 
627
637
  ---
628
638
 
@@ -206,17 +206,20 @@
206
206
  > Platforms: both
207
207
  > Type: module
208
208
 
209
- ### Properties (unique: 10/50)
209
+ ### Properties (unique: 14/50)
210
210
  | Property | Type | Platform | Description |
211
211
  |----------|------|----------|-------------|
212
212
  | accessToken | String | both | OAuth token set after a successful `authorize`. |
213
213
  | accessTokenExpired | Boolean | both | Returns whether the <Modules.Facebook.accessToken… |
214
214
  | accessTokenActive | Boolean | both | Returns `true` if the <Modules.Facebook.accessTok… |
215
+ | advertiserTrackingEnabled | Boolean | ios | Gets or sets the SDK's advertiser-tracking flag. |
215
216
  | appID | String | both | If not explicitly set, the default will be read f… |
217
+ | authenticationToken | String | android | Returns the raw Authentication Token (JWT) from the most recent Limited Login, … |
216
218
  | canPresentOpenGraphActionDialog | Boolean | android | Checks if the device can support the use of the F… |
217
219
  | expirationDate | Date | both | Time at which the `accessToken` expires. |
218
220
  | loggedIn | Boolean | both | Indicates if the user is logged in. |
219
- | loginTracking | Number | ios | Gets or sets the desired tracking preference to u… |
221
+ | loginTracking | Number | both | Gets or sets the desired tracking preference to use for login attempts. |
222
+ | nonce | String | android | Optional nonce used by Limited Login (`LOGIN_TRACKING_LIMITED`) to bind the iss… |
220
223
  | permissions | Array<String> | both | Array of permissions to request for your app. |
221
224
  | uid | String | both | Unique user ID returned from Facebook. |
222
225
 
@@ -272,13 +275,30 @@
272
275
  ### Events (6)
273
276
  | Event | Platform | Description |
274
277
  |-------|----------|-------------|
275
- | login | both | Fired at session login. |
278
+ | login | both | Fired at session login. Payload: `success`, `cancelled`, `error`, `code`, `uid`, `data`, `authenticationToken`. |
276
279
  | logout | both | Fired at session logout. |
277
280
  | requestDialogCompleted | both | Fired when the Send Request dialog is closed. |
278
281
  | shareCompleted | both | Fired when the Share dialog or Web Share dialog is closed. |
279
282
  | inviteCompleted | both | Fired when the Invite dialog is closed. |
280
283
  | tokenUpdated | both | Fired when [refreshPermissionsFromServer](Modules.Facebook.refreshPermissionsFr… |
281
284
 
285
+ ### Login Tracking and Limited Login
286
+
287
+ `loginTracking` and the `LOGIN_TRACKING_ENABLED` (default) / `LOGIN_TRACKING_LIMITED` constants are supported on **both** platforms. With `LOGIN_TRACKING_LIMITED`, `authorize()` (or `requestNewReadPermissions()`) starts Facebook's OIDC-based Limited Login flow: the SDK returns an Authentication Token (a JWT) instead of a classic Graph access token, delivered as `event.authenticationToken.tokenString` on the `login` event. Verify that JWT's signature server-side against Facebook's JWKS.
288
+
289
+ > **Warning:** `Modules.Facebook.LoginButton` honors `loginTracking` on iOS only. The Android FB SDK's button exposes no Limited Login configuration, so on Android you must trigger Limited Login through `Modules.Facebook.authorize()` rather than through the button.
290
+
291
+ ### Related Types
292
+
293
+ #### LimitedLoginAuthenticationToken
294
+ > Shape of `event.authenticationToken` on the [login](Modules.Facebook.login) event when Limited Login (`LOGIN_TRACKING_LIMITED`) is used.
295
+
296
+ | Property | Type | Platform | Description |
297
+ |----------|------|----------|-------------|
298
+ | tokenString | String | both | The signed JWT (header.payload.signature) issued by Facebook. Verify on your ba… |
299
+ | nonce | String | both | The nonce echoed back by Facebook. Matches the [nonce](Modules.Facebook.nonce) … |
300
+ | graphDomain | String | both | Optional graph domain hint returned by the iOS SDK (e.g. `gaming`). `undefined`… |
301
+
282
302
  ---
283
303
 
284
304
  ## Modules.Facebook.LoginButton