@onlyworlds/sdk 4.36.0 → 4.36.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/dist/index.d.ts +10 -6
- package/dist/index.js +5 -4
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,18 @@ earlier history lives in git log only.
|
|
|
5
5
|
|
|
6
6
|
## [Unreleased]
|
|
7
7
|
|
|
8
|
+
## [4.36.2] - 2026-10-20
|
|
9
|
+
|
|
10
|
+
### Changed
|
|
11
|
+
|
|
12
|
+
- `pinExpectation`'s doc comment: a legacy key that can write sends its PIN on every read of a world that has one, whether or not the world is open to read (keel #421 PR 105, the demo split). The `'required-for-private-reads'` literal keeps its name until 5.0, since renaming a literal in a published union is a type break. A demo-range key is kind `legacy` too and never needs a PIN. No code change.
|
|
13
|
+
|
|
14
|
+
## [4.36.1] - 2026-10-20
|
|
15
|
+
|
|
16
|
+
### Changed
|
|
17
|
+
|
|
18
|
+
- The reset rule in `isResyncRequired`'s and `changes`' doc comments: on a 409 `resync_required`, walk from zero and keep what the local copy holds that the new walk does not name; a reset never empties a copy. It said replace. Keel says keep since PR 104 (the Captain's ruling, 2026-10-20: sharing is forward-only). No code change.
|
|
19
|
+
|
|
8
20
|
## [4.36.0] - 2026-10-20
|
|
9
21
|
|
|
10
22
|
### Changed
|
package/dist/index.d.ts
CHANGED
|
@@ -2627,8 +2627,9 @@ declare class OwApiError extends Error {
|
|
|
2627
2627
|
/**
|
|
2628
2628
|
* `/changes` refused the cursor (409 `resync_required`): a guest's view of the world
|
|
2629
2629
|
* changed, or the key's role did (a guest's cursor has another shape). Drop the stored
|
|
2630
|
-
* cursor, walk again from the start, and
|
|
2631
|
-
*
|
|
2630
|
+
* cursor, walk again from the start, and keep what the local copy holds that the new walk
|
|
2631
|
+
* does not name: a reset never empties a copy (keel PR 104, the Captain's ruling: sharing
|
|
2632
|
+
* is forward-only).
|
|
2632
2633
|
*/
|
|
2633
2634
|
get isResyncRequired(): boolean;
|
|
2634
2635
|
/** keel's admission control turned the request away (503 `server_busy`); see retryAfter. */
|
|
@@ -2762,8 +2763,11 @@ declare function detectKeyKind(key: string): OwKeyKind;
|
|
|
2762
2763
|
declare function kindCanWrite(kind: OwKeyKind): boolean;
|
|
2763
2764
|
/**
|
|
2764
2765
|
* Should a credential UI ask for a PIN with this key?
|
|
2765
|
-
* Prefixed keys read PIN-less;
|
|
2766
|
-
*
|
|
2766
|
+
* Prefixed keys read PIN-less; writes on pinned worlds always need it. 'optional' means: show
|
|
2767
|
+
* the field, don't require it. A legacy key that can write sends its PIN on every read of a
|
|
2768
|
+
* world that has one, whether or not the world is open to read (keel #421 PR 105, 2026-10-20):
|
|
2769
|
+
* the literal `'required-for-private-reads'` predates that rule and keeps its name until 5.0.
|
|
2770
|
+
* A demo-range key (`isDemoKey`) is also kind `legacy` and never needs a PIN.
|
|
2767
2771
|
*/
|
|
2768
2772
|
declare function pinExpectation(kind: OwKeyKind): 'never' | 'optional' | 'required-for-private-reads';
|
|
2769
2773
|
|
|
@@ -2889,8 +2893,8 @@ declare class OwV2Client {
|
|
|
2889
2893
|
* another shape than everyone else's).
|
|
2890
2894
|
* Zero/absent cursor = full export (byte-aligned with the Folder Format).
|
|
2891
2895
|
* Reset rule: a 409 `resync_required` (err.isResyncRequired) means the key's
|
|
2892
|
-
* view changed (a guest's, or its role): drop the cursor, walk from zero, and
|
|
2893
|
-
*
|
|
2896
|
+
* view changed (a guest's, or its role): drop the cursor, walk from zero, and keep what the
|
|
2897
|
+
* local copy holds that the new walk does not name (keel's own words; sharing is forward-only).
|
|
2894
2898
|
* Citizenship: heaviest route on the platform; default page size is polite.
|
|
2895
2899
|
* keel sends the cursor of a page at the head as a number (an empty page, for anyone
|
|
2896
2900
|
* but a guest); it is handed back as a string, like every cursor here.
|
package/dist/index.js
CHANGED
|
@@ -105,8 +105,9 @@ var OwApiError = class extends Error {
|
|
|
105
105
|
/**
|
|
106
106
|
* `/changes` refused the cursor (409 `resync_required`): a guest's view of the world
|
|
107
107
|
* changed, or the key's role did (a guest's cursor has another shape). Drop the stored
|
|
108
|
-
* cursor, walk again from the start, and
|
|
109
|
-
*
|
|
108
|
+
* cursor, walk again from the start, and keep what the local copy holds that the new walk
|
|
109
|
+
* does not name: a reset never empties a copy (keel PR 104, the Captain's ruling: sharing
|
|
110
|
+
* is forward-only).
|
|
110
111
|
*/
|
|
111
112
|
get isResyncRequired() {
|
|
112
113
|
return this.status === 409 && this.code === "resync_required";
|
|
@@ -457,8 +458,8 @@ var OwV2Client = class {
|
|
|
457
458
|
* another shape than everyone else's).
|
|
458
459
|
* Zero/absent cursor = full export (byte-aligned with the Folder Format).
|
|
459
460
|
* Reset rule: a 409 `resync_required` (err.isResyncRequired) means the key's
|
|
460
|
-
* view changed (a guest's, or its role): drop the cursor, walk from zero, and
|
|
461
|
-
*
|
|
461
|
+
* view changed (a guest's, or its role): drop the cursor, walk from zero, and keep what the
|
|
462
|
+
* local copy holds that the new walk does not name (keel's own words; sharing is forward-only).
|
|
462
463
|
* Citizenship: heaviest route on the platform; default page size is polite.
|
|
463
464
|
* keel sends the cursor of a page at the head as a number (an empty page, for anyone
|
|
464
465
|
* but a guest); it is handed back as a string, like every cursor here.
|