@tiledev/sdk-apptile-live-selling 0.3.0 → 0.3.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.
- package/README.md +36 -9
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -11,12 +11,33 @@ native). Your header, comments list, bid bar and sheets stay yours.
|
|
|
11
11
|
supply, so there is no Shopify dependency.
|
|
12
12
|
|
|
13
13
|
```bash
|
|
14
|
-
npm i @tiledev/sdk-apptile-live-selling
|
|
14
|
+
npm i @tiledev/sdk-apptile-live-selling @tiledev/sdk-apptile-live-selling-native
|
|
15
15
|
```
|
|
16
16
|
|
|
17
|
-
**
|
|
18
|
-
the config plugin — lives in `@tiledev/sdk-apptile-live-selling-native
|
|
19
|
-
|
|
17
|
+
**Two packages, and an Expo app must list both.** Everything native — the `LivePip` Expo module, the
|
|
18
|
+
podspec, the Kotlin, the config plugin — lives in `@tiledev/sdk-apptile-live-selling-native`. This
|
|
19
|
+
package is pure JavaScript and depends on it.
|
|
20
|
+
|
|
21
|
+
Listing it separately is not redundant, and this is the one installation mistake worth spelling out.
|
|
22
|
+
**In a tree that contains `expo` and `react-native`, npm nests the native package** at
|
|
23
|
+
`node_modules/@tiledev/sdk-apptile-live-selling/node_modules/…` rather than hoisting it. Expo's
|
|
24
|
+
autolinking scans the whole tree and finds it there quite happily — but its **config-plugin resolver
|
|
25
|
+
resolves plugin names from the project root only**, so `expo prebuild` fails outright:
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
PluginError: Failed to resolve plugin for module "@tiledev/sdk-apptile-live-selling-native"
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
A direct entry is what hoists it. Reproduced in a bare project carrying nothing but `expo`,
|
|
32
|
+
`react-native`, `react` and this package.
|
|
33
|
+
|
|
34
|
+
**Pin it to exactly the version this package's `dependencies` names** — never a different one, or npm
|
|
35
|
+
keeps two copies of the same Expo module and the identical pod and module names collide at link time:
|
|
36
|
+
|
|
37
|
+
```json
|
|
38
|
+
"@tiledev/sdk-apptile-live-selling": "^0.3.0",
|
|
39
|
+
"@tiledev/sdk-apptile-live-selling-native": "0.1.0"
|
|
40
|
+
```
|
|
20
41
|
|
|
21
42
|
That split is not tidiness. Expo autolinks any package carrying an `expo-module.config.json` and
|
|
22
43
|
records its **`packageVersion`** in `expoAutolinkingConfig`, which is one of the content sources the
|
|
@@ -27,7 +48,8 @@ longer autolinked, so its version is not hashed and a release of it ships as a c
|
|
|
27
48
|
### What a version bump here means for you
|
|
28
49
|
|
|
29
50
|
The native dependency is pinned **exactly**, so the native version can only move when this package's
|
|
30
|
-
version moves. That makes this package's own version number the signal
|
|
51
|
+
version moves. That makes this package's own version number the signal — and it is why the direct
|
|
52
|
+
entry above can be pinned and left alone until this package's minor changes:
|
|
31
53
|
|
|
32
54
|
| bump | what it costs you |
|
|
33
55
|
|---|---|
|
|
@@ -41,7 +63,8 @@ So take it with a caret and let patches arrive on their own:
|
|
|
41
63
|
```
|
|
42
64
|
|
|
43
65
|
`^0.3.0` accepts every `0.3.x` and refuses `0.4.0` — free JS updates, and a deliberate edit on the day
|
|
44
|
-
native code changes.
|
|
66
|
+
native code changes. On a minor, move the native pin to whatever this package's new `dependencies`
|
|
67
|
+
names, in the same commit. **Check the fingerprint in CI anyway**: it is the only thing that catches a
|
|
45
68
|
mistake here regardless of how the ranges are written.
|
|
46
69
|
|
|
47
70
|
Peers: `react` and `react-native` are needed by the main entry, which re-exports the React layer;
|
|
@@ -63,9 +86,7 @@ beside the root is `./types` (types alone) and a wildcard for any module in `dis
|
|
|
63
86
|
Every native entry live selling needs lives in a file `expo prebuild` regenerates, so it has to be a
|
|
64
87
|
plugin — an edit by hand works on the machine that made it and silently stops working in CI.
|
|
65
88
|
|
|
66
|
-
**The plugin ships in the native package**, so name that one in `app.json
|
|
67
|
-
installed it directly — it is in your `node_modules` as a dependency of this package, and both Expo's
|
|
68
|
-
plugin resolution and its autolinking scan the whole tree:
|
|
89
|
+
**The plugin ships in the native package**, so name that one in `app.json`, not this one:
|
|
69
90
|
|
|
70
91
|
```json
|
|
71
92
|
{
|
|
@@ -359,6 +380,12 @@ config plugin:
|
|
|
359
380
|
4. `npm run build && npm publish`
|
|
360
381
|
5. say in the release notes that a new binary is required
|
|
361
382
|
|
|
383
|
+
**A documentation-only release of the native package does NOT move the pin.** `0.1.1` was published
|
|
384
|
+
purely to correct its README; the pin here deliberately stays at `0.1.0`. Moving it would have made
|
|
385
|
+
this a native change — consumers on `^0.3.0` take a patch automatically, so their fingerprint would
|
|
386
|
+
have shifted, and every one of them would have needed a new binary to fix a paragraph of prose. The
|
|
387
|
+
version this package pins is a statement about the native *binary*, not about which README is newest.
|
|
388
|
+
|
|
362
389
|
The minor bump is the whole safety mechanism. A native change released as a patch is the one mistake
|
|
363
390
|
this layout cannot absorb: it moves every consumer's fingerprint without anyone editing anything, and
|
|
364
391
|
the symptom is silent — over-the-air updates simply stop reaching devices.
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tiledev/sdk-apptile-live-selling",
|
|
3
|
-
"version": "0.3.
|
|
4
|
-
"description": "Live selling, auctions and giveaways for React Native
|
|
3
|
+
"version": "0.3.1",
|
|
4
|
+
"description": "Live selling, auctions and giveaways for React Native — the Apptile live-selling gateway as a typed singleton, a Zego room engine behind a platform boundary, an assembled session state machine, and system picture-in-picture with its own config plugin. Commerce comes from an adapter.",
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"private": false,
|
|
7
7
|
"sideEffects": false,
|