koota-kit 0.8.6 → 0.8.7
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 +10 -0
- package/dist/cjs/spatial.cjs +15 -4
- package/dist/cjs/spatial.d.cts.map +1 -1
- package/dist/esm/spatial.d.ts.map +1 -1
- package/dist/esm/spatial.js +15 -4
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.8.7 (2026-10-14)
|
|
4
|
+
|
|
5
|
+
<!-- Release notes generated using configuration in .github/release.yml at main -->
|
|
6
|
+
|
|
7
|
+
## What's Changed
|
|
8
|
+
* fix(spatial): reject inherited values in sparse snapshot and query arrays by @jbdevprimary in https://github.com/jbcom/koota-kit/pull/71
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
**Full Changelog**: https://github.com/jbcom/koota-kit/compare/v0.8.6...v0.8.7
|
|
12
|
+
|
|
3
13
|
## 0.8.6 (2026-10-14)
|
|
4
14
|
|
|
5
15
|
<!-- Release notes generated using configuration in .github/release.yml at main -->
|
package/dist/cjs/spatial.cjs
CHANGED
|
@@ -123,6 +123,17 @@ function copyTopology(value, label) {
|
|
|
123
123
|
enclosesSurface: true,
|
|
124
124
|
});
|
|
125
125
|
}
|
|
126
|
+
function copyDenseArray(array, mapper, label) {
|
|
127
|
+
const hasOwn = Object.prototype.hasOwnProperty;
|
|
128
|
+
const result = new Array(array.length);
|
|
129
|
+
for (let i = 0; i < array.length; i++) {
|
|
130
|
+
if (!hasOwn.call(array, i)) {
|
|
131
|
+
throw new TypeError(`spatial: ${label}[${i}] is sparse.`);
|
|
132
|
+
}
|
|
133
|
+
result[i] = mapper(array[i], i);
|
|
134
|
+
}
|
|
135
|
+
return result;
|
|
136
|
+
}
|
|
126
137
|
function copyRecord(value, label) {
|
|
127
138
|
if (typeof value !== "object" || value === null)
|
|
128
139
|
throw new TypeError(`spatial: ${label} must be a part record.`);
|
|
@@ -131,7 +142,7 @@ function copyRecord(value, label) {
|
|
|
131
142
|
throw new TypeError(`spatial: ${label}.topology must be an object.`);
|
|
132
143
|
if (!Array.isArray(record.capabilities))
|
|
133
144
|
throw new TypeError(`spatial: ${label}.capabilities must be an array.`);
|
|
134
|
-
const capabilities =
|
|
145
|
+
const capabilities = copyDenseArray(record.capabilities, (capability) => capability, `${label}.capabilities`);
|
|
135
146
|
if (capabilities.some((capability) => capability !== "nearest-surface") ||
|
|
136
147
|
new Set(capabilities).size !== capabilities.length) {
|
|
137
148
|
throw new TypeError(`spatial: ${label}.capabilities may only contain nearest-surface.`);
|
|
@@ -235,11 +246,11 @@ function queryPointClearance(provider, oracle, query) {
|
|
|
235
246
|
throw new TypeError("spatial: query.exclusions must be an array.");
|
|
236
247
|
if (query.expected !== undefined && !Array.isArray(query.expected))
|
|
237
248
|
throw new TypeError("spatial: query.expected must be an array.");
|
|
238
|
-
const exclusions =
|
|
249
|
+
const exclusions = copyDenseArray(query.exclusions ?? [], (value, index) => copyIdentity(value, `query.exclusions[${index}]`), "query.exclusions").sort(compareIdentity);
|
|
239
250
|
const exclusionKeys = new Set(exclusions.map(identityKey));
|
|
240
251
|
if (exclusionKeys.size !== exclusions.length)
|
|
241
252
|
throw new TypeError("spatial: query.exclusions must not contain duplicates.");
|
|
242
|
-
const expected =
|
|
253
|
+
const expected = copyDenseArray(query.expected ?? [], (value, index) => copyStamp(value, `query.expected[${index}]`), "query.expected");
|
|
243
254
|
const expectedKeys = new Set(expected.map((stamp) => identityKey(stamp.identity)));
|
|
244
255
|
if (expectedKeys.size !== expected.length)
|
|
245
256
|
throw new TypeError("spatial: query.expected must not contain duplicate identities.");
|
|
@@ -248,7 +259,7 @@ function queryPointClearance(provider, oracle, query) {
|
|
|
248
259
|
throw new TypeError("spatial: provider.snapshot() must return an array.");
|
|
249
260
|
let records;
|
|
250
261
|
try {
|
|
251
|
-
records =
|
|
262
|
+
records = copyDenseArray(snapshot, (record, index) => copyRecord(record, `provider.snapshot()[${index}]`), "provider.snapshot()");
|
|
252
263
|
}
|
|
253
264
|
catch {
|
|
254
265
|
return result("unsupported", "provider-contract-invalid", "none", topology, [], exclusions, []);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spatial.d.ts","sourceRoot":"","sources":["../../src/spatial.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"spatial.d.ts","sourceRoot":"","sources":["../../src/spatial.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spatial.d.ts","sourceRoot":"","sources":["../../src/spatial.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"spatial.d.ts","sourceRoot":"","sources":["../../src/spatial.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/spatial.js
CHANGED
|
@@ -120,6 +120,17 @@ function copyTopology(value, label) {
|
|
|
120
120
|
enclosesSurface: true,
|
|
121
121
|
});
|
|
122
122
|
}
|
|
123
|
+
function copyDenseArray(array, mapper, label) {
|
|
124
|
+
const hasOwn = Object.prototype.hasOwnProperty;
|
|
125
|
+
const result = new Array(array.length);
|
|
126
|
+
for (let i = 0; i < array.length; i++) {
|
|
127
|
+
if (!hasOwn.call(array, i)) {
|
|
128
|
+
throw new TypeError(`spatial: ${label}[${i}] is sparse.`);
|
|
129
|
+
}
|
|
130
|
+
result[i] = mapper(array[i], i);
|
|
131
|
+
}
|
|
132
|
+
return result;
|
|
133
|
+
}
|
|
123
134
|
function copyRecord(value, label) {
|
|
124
135
|
if (typeof value !== "object" || value === null)
|
|
125
136
|
throw new TypeError(`spatial: ${label} must be a part record.`);
|
|
@@ -128,7 +139,7 @@ function copyRecord(value, label) {
|
|
|
128
139
|
throw new TypeError(`spatial: ${label}.topology must be an object.`);
|
|
129
140
|
if (!Array.isArray(record.capabilities))
|
|
130
141
|
throw new TypeError(`spatial: ${label}.capabilities must be an array.`);
|
|
131
|
-
const capabilities =
|
|
142
|
+
const capabilities = copyDenseArray(record.capabilities, (capability) => capability, `${label}.capabilities`);
|
|
132
143
|
if (capabilities.some((capability) => capability !== "nearest-surface") ||
|
|
133
144
|
new Set(capabilities).size !== capabilities.length) {
|
|
134
145
|
throw new TypeError(`spatial: ${label}.capabilities may only contain nearest-surface.`);
|
|
@@ -232,11 +243,11 @@ export function queryPointClearance(provider, oracle, query) {
|
|
|
232
243
|
throw new TypeError("spatial: query.exclusions must be an array.");
|
|
233
244
|
if (query.expected !== undefined && !Array.isArray(query.expected))
|
|
234
245
|
throw new TypeError("spatial: query.expected must be an array.");
|
|
235
|
-
const exclusions =
|
|
246
|
+
const exclusions = copyDenseArray(query.exclusions ?? [], (value, index) => copyIdentity(value, `query.exclusions[${index}]`), "query.exclusions").sort(compareIdentity);
|
|
236
247
|
const exclusionKeys = new Set(exclusions.map(identityKey));
|
|
237
248
|
if (exclusionKeys.size !== exclusions.length)
|
|
238
249
|
throw new TypeError("spatial: query.exclusions must not contain duplicates.");
|
|
239
|
-
const expected =
|
|
250
|
+
const expected = copyDenseArray(query.expected ?? [], (value, index) => copyStamp(value, `query.expected[${index}]`), "query.expected");
|
|
240
251
|
const expectedKeys = new Set(expected.map((stamp) => identityKey(stamp.identity)));
|
|
241
252
|
if (expectedKeys.size !== expected.length)
|
|
242
253
|
throw new TypeError("spatial: query.expected must not contain duplicate identities.");
|
|
@@ -245,7 +256,7 @@ export function queryPointClearance(provider, oracle, query) {
|
|
|
245
256
|
throw new TypeError("spatial: provider.snapshot() must return an array.");
|
|
246
257
|
let records;
|
|
247
258
|
try {
|
|
248
|
-
records =
|
|
259
|
+
records = copyDenseArray(snapshot, (record, index) => copyRecord(record, `provider.snapshot()[${index}]`), "provider.snapshot()");
|
|
249
260
|
}
|
|
250
261
|
catch {
|
|
251
262
|
return result("unsupported", "provider-contract-invalid", "none", topology, [], exclusions, []);
|
package/package.json
CHANGED