Skip to content

Commit 2abb0ba

Browse files
committed
Export positionToScale
1 parent 94139cb commit 2abb0ba

File tree

5 files changed

+47
-34
lines changed

5 files changed

+47
-34
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
},
2828
"dependencies": {
2929
"@orbitdb/core": "^3.0.2",
30-
"@orbitdb/ordered-keyvalue-db": "^1.3.3",
30+
"@orbitdb/ordered-keyvalue-db": "^1.3.4",
3131
"helia": "^5.4.2",
3232
"it-all": "^3.0.9"
3333
},

pnpm-lock.yaml

Lines changed: 18 additions & 18 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ export {
1616
toNested,
1717
toMap,
1818
toObject,
19+
positionToScale,
1920
} from "@/utils.js";
2021

2122
export {

src/nested.ts

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import {
2828
isSisterKey,
2929
isSubkey,
3030
parentKey,
31+
positionToScale,
3132
splitKey,
3233
toNested,
3334
} from "./utils.js";
@@ -109,27 +110,13 @@ export const NestedApi = ({ database }: { database: InternalDatabase }) => {
109110
position?: number,
110111
): Promise<string> => {
111112
const entries = await itAll(iterator());
112-
const sisterEntries = entries.filter((entry) =>
113-
isSisterKey(entry.key, key),
114-
);
115113
key = asJoinedKey(key);
116114

117115
const parent = parentKey(key);
118116
if (parent && !entries.find((e) => e.key === parent))
119117
await putEntry(parent);
120118

121-
// Avoid overwriting existing position; default to end of list
122-
let scaledPosition: number | undefined = undefined;
123-
if (position === undefined) {
124-
scaledPosition = sisterEntries.find((e) => e.key === key)?.position;
125-
}
126-
if (scaledPosition === undefined) {
127-
scaledPosition = await getScalePosition({
128-
entries: sisterEntries,
129-
key,
130-
position: position ?? -1,
131-
});
132-
}
119+
const scaledPosition = positionToScale(entries, key, position);
133120

134121
const entryValue: { value?: DagCborEncodable; position: number } = {
135122
position: scaledPosition,

src/utils.ts

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import type {
1010
PossiblyNestedValue,
1111
NestedValue,
1212
} from "./types.ts";
13+
import { getScalePosition } from "@orbitdb/ordered-keyvalue-db";
1314

1415
export const splitKey = (key: string): string[] => key.split("/");
1516
export const joinKey = (key: string[]): string => key.join("/");
@@ -165,3 +166,27 @@ export const toObject = <T extends NestedValueMap>(
165166
}
166167
return dict;
167168
};
169+
170+
export const positionToScale = (entries: {
171+
key: string;
172+
value: DagCborEncodable;
173+
hash: string;
174+
position: number;
175+
}[], key: string, position?: number) => {
176+
const sisterEntries = entries.filter((entry) =>
177+
isSisterKey(entry.key, key),
178+
);
179+
// Avoid overwriting existing position; default to end of list
180+
let scaledPosition: number | undefined = undefined;
181+
if (position === undefined) {
182+
scaledPosition = sisterEntries.find((e) => e.key === key)?.position;
183+
}
184+
if (scaledPosition === undefined) {
185+
scaledPosition = getScalePosition({
186+
entries: sisterEntries,
187+
key,
188+
position: position ?? -1,
189+
});
190+
}
191+
return scaledPosition
192+
}

0 commit comments

Comments
 (0)