@dxos/util 0.7.5-main.9d2a38b → 0.7.5-main.e9bb01b

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 +1 @@
1
- {"inputs":{"packages/common/util/src/array.ts":{"bytes":7319,"imports":[],"format":"esm"},"packages/common/util/src/binder.ts":{"bytes":1363,"imports":[{"path":"node:util","kind":"import-statement","external":true}],"format":"esm"},"packages/common/util/src/bitfield.ts":{"bytes":8574,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true}],"format":"esm"},"packages/common/util/src/callback.ts":{"bytes":5305,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true}],"format":"esm"},"packages/common/util/src/callback-collection.ts":{"bytes":3247,"imports":[],"format":"esm"},"packages/common/util/src/case.ts":{"bytes":4663,"imports":[],"format":"esm"},"packages/common/util/src/chunk-array.ts":{"bytes":1248,"imports":[],"format":"esm"},"packages/common/util/src/circular-buffer.ts":{"bytes":6398,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true}],"format":"esm"},"packages/common/util/src/complex.ts":{"bytes":22029,"imports":[{"path":"node:util","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true}],"format":"esm"},"packages/common/util/src/explicit-resource-management-polyfill.ts":{"bytes":1482,"imports":[]},"packages/common/util/src/defer.ts":{"bytes":3771,"imports":[{"path":"packages/common/util/src/explicit-resource-management-polyfill.ts","kind":"import-statement","original":"./explicit-resource-management-polyfill"}],"format":"esm"},"packages/common/util/src/defer-function.ts":{"bytes":1619,"imports":[],"format":"esm"},"packages/common/util/src/deep.ts":{"bytes":3589,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true}],"format":"esm"},"packages/common/util/src/disposition.ts":{"bytes":2546,"imports":[],"format":"esm"},"packages/common/util/src/entry.ts":{"bytes":3103,"imports":[],"format":"esm"},"packages/common/util/src/for-each-async.ts":{"bytes":826,"imports":[],"format":"esm"},"packages/common/util/src/human-hash.ts":{"bytes":20242,"imports":[{"path":"@dxos/keys","kind":"import-statement","external":true}],"format":"esm"},"packages/common/util/src/interval.ts":{"bytes":1876,"imports":[],"format":"esm"},"packages/common/util/src/map.ts":{"bytes":1546,"imports":[],"format":"esm"},"packages/common/util/src/instance-id.ts":{"bytes":4306,"imports":[{"path":"packages/common/util/src/map.ts","kind":"import-statement","original":"./map"}],"format":"esm"},"packages/common/util/src/join-tables.ts":{"bytes":3140,"imports":[],"format":"esm"},"packages/common/util/src/uint8array.ts":{"bytes":3822,"imports":[],"format":"esm"},"packages/common/util/src/json.ts":{"bytes":13862,"imports":[{"path":"node:util","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"packages/common/util/src/human-hash.ts","kind":"import-statement","original":"./human-hash"},{"path":"packages/common/util/src/uint8array.ts","kind":"import-statement","original":"./uint8array"}],"format":"esm"},"packages/common/util/src/map-values.ts":{"bytes":11880,"imports":[],"format":"esm"},"packages/common/util/src/order.ts":{"bytes":5060,"imports":[],"format":"esm"},"packages/common/util/src/pick.ts":{"bytes":3737,"imports":[],"format":"esm"},"packages/common/util/src/platform.ts":{"bytes":11348,"imports":[],"format":"esm"},"packages/common/util/src/random.ts":{"bytes":1356,"imports":[],"format":"esm"},"packages/common/util/src/range.ts":{"bytes":2016,"imports":[],"format":"esm"},"packages/common/util/src/reducers.ts":{"bytes":12989,"imports":[{"path":"packages/common/util/src/map.ts","kind":"import-statement","original":"./map"}],"format":"esm"},"packages/common/util/src/safe-await.ts":{"bytes":2916,"imports":[],"format":"esm"},"packages/common/util/src/safe-instanceof.ts":{"bytes":2749,"imports":[],"format":"esm"},"packages/common/util/src/safe-parse.ts":{"bytes":2763,"imports":[],"format":"esm"},"packages/common/util/src/sliding-window-summary.ts":{"bytes":7614,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"packages/common/util/src/circular-buffer.ts","kind":"import-statement","original":"./circular-buffer"}],"format":"esm"},"packages/common/util/src/sort.ts":{"bytes":4004,"imports":[],"format":"esm"},"packages/common/util/src/sum.ts":{"bytes":720,"imports":[],"format":"esm"},"packages/common/util/src/throw-unhandled-error.ts":{"bytes":1216,"imports":[],"format":"esm"},"packages/common/util/src/to-fallback.ts":{"bytes":12288,"imports":[],"format":"esm"},"packages/common/util/src/tracer.ts":{"bytes":7302,"imports":[{"path":"packages/common/util/src/map.ts","kind":"import-statement","original":"./map"}],"format":"esm"},"packages/common/util/src/tree.ts":{"bytes":6355,"imports":[{"path":"@dxos/debug","kind":"import-statement","external":true}],"format":"esm"},"packages/common/util/src/types.ts":{"bytes":9232,"imports":[],"format":"esm"},"packages/common/util/src/weak.ts":{"bytes":9764,"imports":[],"format":"esm"},"packages/common/util/src/array-to-hex.ts":{"bytes":2522,"imports":[],"format":"esm"},"packages/common/util/src/remove-undefined-keys.ts":{"bytes":1594,"imports":[],"format":"esm"},"packages/common/util/src/order-keys.ts":{"bytes":1659,"imports":[],"format":"esm"},"packages/common/util/src/no-infer.ts":{"bytes":515,"imports":[],"format":"esm"},"packages/common/util/src/index.ts":{"bytes":4790,"imports":[{"path":"packages/common/util/src/array.ts","kind":"import-statement","original":"./array"},{"path":"packages/common/util/src/binder.ts","kind":"import-statement","original":"./binder"},{"path":"packages/common/util/src/bitfield.ts","kind":"import-statement","original":"./bitfield"},{"path":"packages/common/util/src/callback.ts","kind":"import-statement","original":"./callback"},{"path":"packages/common/util/src/callback-collection.ts","kind":"import-statement","original":"./callback-collection"},{"path":"packages/common/util/src/case.ts","kind":"import-statement","original":"./case"},{"path":"packages/common/util/src/chunk-array.ts","kind":"import-statement","original":"./chunk-array"},{"path":"packages/common/util/src/circular-buffer.ts","kind":"import-statement","original":"./circular-buffer"},{"path":"packages/common/util/src/complex.ts","kind":"import-statement","original":"./complex"},{"path":"packages/common/util/src/defer.ts","kind":"import-statement","original":"./defer"},{"path":"packages/common/util/src/defer-function.ts","kind":"import-statement","original":"./defer-function"},{"path":"packages/common/util/src/deep.ts","kind":"import-statement","original":"./deep"},{"path":"packages/common/util/src/disposition.ts","kind":"import-statement","original":"./disposition"},{"path":"packages/common/util/src/entry.ts","kind":"import-statement","original":"./entry"},{"path":"packages/common/util/src/for-each-async.ts","kind":"import-statement","original":"./for-each-async"},{"path":"packages/common/util/src/human-hash.ts","kind":"import-statement","original":"./human-hash"},{"path":"packages/common/util/src/interval.ts","kind":"import-statement","original":"./interval"},{"path":"packages/common/util/src/instance-id.ts","kind":"import-statement","original":"./instance-id"},{"path":"packages/common/util/src/join-tables.ts","kind":"import-statement","original":"./join-tables"},{"path":"packages/common/util/src/json.ts","kind":"import-statement","original":"./json"},{"path":"packages/common/util/src/map.ts","kind":"import-statement","original":"./map"},{"path":"packages/common/util/src/map-values.ts","kind":"import-statement","original":"./map-values"},{"path":"packages/common/util/src/order.ts","kind":"import-statement","original":"./order"},{"path":"packages/common/util/src/pick.ts","kind":"import-statement","original":"./pick"},{"path":"packages/common/util/src/platform.ts","kind":"import-statement","original":"./platform"},{"path":"packages/common/util/src/random.ts","kind":"import-statement","original":"./random"},{"path":"packages/common/util/src/range.ts","kind":"import-statement","original":"./range"},{"path":"packages/common/util/src/reducers.ts","kind":"import-statement","original":"./reducers"},{"path":"packages/common/util/src/safe-await.ts","kind":"import-statement","original":"./safe-await"},{"path":"packages/common/util/src/safe-instanceof.ts","kind":"import-statement","original":"./safe-instanceof"},{"path":"packages/common/util/src/safe-parse.ts","kind":"import-statement","original":"./safe-parse"},{"path":"packages/common/util/src/sliding-window-summary.ts","kind":"import-statement","original":"./sliding-window-summary"},{"path":"packages/common/util/src/sort.ts","kind":"import-statement","original":"./sort"},{"path":"packages/common/util/src/sum.ts","kind":"import-statement","original":"./sum"},{"path":"packages/common/util/src/throw-unhandled-error.ts","kind":"import-statement","original":"./throw-unhandled-error"},{"path":"packages/common/util/src/to-fallback.ts","kind":"import-statement","original":"./to-fallback"},{"path":"packages/common/util/src/tracer.ts","kind":"import-statement","original":"./tracer"},{"path":"packages/common/util/src/tree.ts","kind":"import-statement","original":"./tree"},{"path":"packages/common/util/src/types.ts","kind":"import-statement","original":"./types"},{"path":"packages/common/util/src/uint8array.ts","kind":"import-statement","original":"./uint8array"},{"path":"packages/common/util/src/weak.ts","kind":"import-statement","original":"./weak"},{"path":"packages/common/util/src/sliding-window-summary.ts","kind":"import-statement","original":"./sliding-window-summary"},{"path":"packages/common/util/src/chunk-array.ts","kind":"import-statement","original":"./chunk-array"},{"path":"packages/common/util/src/array-to-hex.ts","kind":"import-statement","original":"./array-to-hex"},{"path":"packages/common/util/src/remove-undefined-keys.ts","kind":"import-statement","original":"./remove-undefined-keys"},{"path":"packages/common/util/src/order-keys.ts","kind":"import-statement","original":"./order-keys"},{"path":"packages/common/util/src/no-infer.ts","kind":"import-statement","original":"./no-infer"}],"format":"esm"}},"outputs":{"packages/common/util/dist/lib/node-esm/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":119330},"packages/common/util/dist/lib/node-esm/index.mjs":{"imports":[{"path":"node:util","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"node:util","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"node:util","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true}],"exports":["BitField","Callback","CallbackCollection","CircularBuffer","ComplexMap","ComplexSet","HumanHasher","MapEntry","SlidingWindowSummary","Tracer","WeakDictionary","accessBy","arrayMove","arrayToBuffer","arrayToHex","arrayToString","arraysEqual","boolGuard","bufferToArray","byDisposition","chunkArray","compareMulti","compareObject","compareScalar","compareString","createBinder","createBucketReducer","createGroupReducer","createSetDispatch","decamelize","deepMapValues","deepMapValuesAsync","defaultMap","defer","deferAsync","deferFunction","diff","distinctBy","doAsync","entry","exponentialBackoffInterval","forEachAsync","getAsyncProviderValue","getDate","getDebugName","getDeep","getHostPlatform","getPrototypeSpecificInstanceId","getProviderValue","hexToEmoji","hexToFallback","hexToHue","humanize","hyphenize","idEmoji","idHue","inferObjectOrder","inferRecordOrder","intersection","iosCheck","isNode","isNotFalsy","isNotNullOrUndefined","joinTables","jsonKeyReplacer","jsonReplacer","jsonify","jsonlogify","keyToEmoji","keyToFallback","keyToHue","makeMap","makeSet","mapValues","median","mobileAndTabletCheck","nonNullable","numericalValues","omit","orderKeys","partition","pick","pickBy","randomInt","range","rangeFromTo","reduceGroupBy","reduceSeries","reduceSet","removeUndefinedProperties","safariCheck","safeAwaitAll","safeInstanceof","safeParseFloat","safeParseInt","safeParseJson","setDeep","sortKeys","stringToArray","stringifyTree","stripUndefined","sum","throwUnhandledError","toEmoji","toFallback","toHue","tracer"],"entryPoint":"packages/common/util/src/index.ts","inputs":{"packages/common/util/src/array.ts":{"bytesInOutput":1091},"packages/common/util/src/index.ts":{"bytesInOutput":0},"packages/common/util/src/binder.ts":{"bytesInOutput":139},"packages/common/util/src/bitfield.ts":{"bytesInOutput":1894},"packages/common/util/src/callback.ts":{"bytesInOutput":1113},"packages/common/util/src/callback-collection.ts":{"bytesInOutput":558},"packages/common/util/src/case.ts":{"bytesInOutput":940},"packages/common/util/src/chunk-array.ts":{"bytesInOutput":173},"packages/common/util/src/circular-buffer.ts":{"bytesInOutput":1539},"packages/common/util/src/complex.ts":{"bytesInOutput":4413},"packages/common/util/src/explicit-resource-management-polyfill.ts":{"bytesInOutput":100},"packages/common/util/src/defer.ts":{"bytesInOutput":546},"packages/common/util/src/defer-function.ts":{"bytesInOutput":72},"packages/common/util/src/deep.ts":{"bytesInOutput":726},"packages/common/util/src/disposition.ts":{"bytesInOutput":377},"packages/common/util/src/entry.ts":{"bytesInOutput":471},"packages/common/util/src/for-each-async.ts":{"bytesInOutput":62},"packages/common/util/src/human-hash.ts":{"bytesInOutput":5662},"packages/common/util/src/interval.ts":{"bytesInOutput":290},"packages/common/util/src/map.ts":{"bytesInOutput":193},"packages/common/util/src/instance-id.ts":{"bytesInOutput":771},"packages/common/util/src/join-tables.ts":{"bytesInOutput":493},"packages/common/util/src/json.ts":{"bytesInOutput":2946},"packages/common/util/src/uint8array.ts":{"bytesInOutput":562},"packages/common/util/src/map-values.ts":{"bytesInOutput":2298},"packages/common/util/src/order.ts":{"bytesInOutput":676},"packages/common/util/src/pick.ts":{"bytesInOutput":478},"packages/common/util/src/platform.ts":{"bytesInOutput":3211},"packages/common/util/src/random.ts":{"bytesInOutput":148},"packages/common/util/src/range.ts":{"bytesInOutput":283},"packages/common/util/src/reducers.ts":{"bytesInOutput":2326},"packages/common/util/src/safe-await.ts":{"bytesInOutput":345},"packages/common/util/src/safe-instanceof.ts":{"bytesInOutput":371},"packages/common/util/src/safe-parse.ts":{"bytesInOutput":469},"packages/common/util/src/sliding-window-summary.ts":{"bytesInOutput":1802},"packages/common/util/src/sort.ts":{"bytesInOutput":643},"packages/common/util/src/sum.ts":{"bytesInOutput":57},"packages/common/util/src/throw-unhandled-error.ts":{"bytesInOutput":90},"packages/common/util/src/to-fallback.ts":{"bytesInOutput":4082},"packages/common/util/src/tracer.ts":{"bytesInOutput":1426},"packages/common/util/src/tree.ts":{"bytesInOutput":1193},"packages/common/util/src/types.ts":{"bytesInOutput":1024},"packages/common/util/src/weak.ts":{"bytesInOutput":2069},"packages/common/util/src/array-to-hex.ts":{"bytesInOutput":341},"packages/common/util/src/remove-undefined-keys.ts":{"bytesInOutput":255},"packages/common/util/src/order-keys.ts":{"bytesInOutput":266}},"bytes":52715}}}
1
+ {"inputs":{"packages/common/util/src/array.ts":{"bytes":7319,"imports":[],"format":"esm"},"packages/common/util/src/array-to-hex.ts":{"bytes":2522,"imports":[],"format":"esm"},"packages/common/util/src/binder.ts":{"bytes":1363,"imports":[{"path":"node:util","kind":"import-statement","external":true}],"format":"esm"},"packages/common/util/src/bitfield.ts":{"bytes":8574,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true}],"format":"esm"},"packages/common/util/src/callback.ts":{"bytes":5305,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true}],"format":"esm"},"packages/common/util/src/callback-collection.ts":{"bytes":3247,"imports":[],"format":"esm"},"packages/common/util/src/case.ts":{"bytes":4663,"imports":[],"format":"esm"},"packages/common/util/src/chunk-array.ts":{"bytes":1248,"imports":[],"format":"esm"},"packages/common/util/src/circular-buffer.ts":{"bytes":6398,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true}],"format":"esm"},"packages/common/util/src/complex.ts":{"bytes":22029,"imports":[{"path":"node:util","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true}],"format":"esm"},"packages/common/util/src/explicit-resource-management-polyfill.ts":{"bytes":1482,"imports":[]},"packages/common/util/src/defer.ts":{"bytes":3771,"imports":[{"path":"packages/common/util/src/explicit-resource-management-polyfill.ts","kind":"import-statement","original":"./explicit-resource-management-polyfill"}],"format":"esm"},"packages/common/util/src/defer-function.ts":{"bytes":1619,"imports":[],"format":"esm"},"packages/common/util/src/deep.ts":{"bytes":3589,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true}],"format":"esm"},"packages/common/util/src/entry.ts":{"bytes":3103,"imports":[],"format":"esm"},"packages/common/util/src/for-each-async.ts":{"bytes":826,"imports":[],"format":"esm"},"packages/common/util/src/human-hash.ts":{"bytes":20242,"imports":[{"path":"@dxos/keys","kind":"import-statement","external":true}],"format":"esm"},"packages/common/util/src/interval.ts":{"bytes":1876,"imports":[],"format":"esm"},"packages/common/util/src/map.ts":{"bytes":1546,"imports":[],"format":"esm"},"packages/common/util/src/instance-id.ts":{"bytes":4306,"imports":[{"path":"packages/common/util/src/map.ts","kind":"import-statement","original":"./map"}],"format":"esm"},"packages/common/util/src/join-tables.ts":{"bytes":3140,"imports":[],"format":"esm"},"packages/common/util/src/uint8array.ts":{"bytes":3822,"imports":[],"format":"esm"},"packages/common/util/src/json.ts":{"bytes":13862,"imports":[{"path":"node:util","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"packages/common/util/src/human-hash.ts","kind":"import-statement","original":"./human-hash"},{"path":"packages/common/util/src/uint8array.ts","kind":"import-statement","original":"./uint8array"}],"format":"esm"},"packages/common/util/src/map-values.ts":{"bytes":11880,"imports":[],"format":"esm"},"packages/common/util/src/no-infer.ts":{"bytes":515,"imports":[],"format":"esm"},"packages/common/util/src/order.ts":{"bytes":5060,"imports":[],"format":"esm"},"packages/common/util/src/order-keys.ts":{"bytes":1659,"imports":[],"format":"esm"},"packages/common/util/src/pick.ts":{"bytes":3737,"imports":[],"format":"esm"},"packages/common/util/src/platform.ts":{"bytes":11348,"imports":[],"format":"esm"},"packages/common/util/src/position.ts":{"bytes":2411,"imports":[],"format":"esm"},"packages/common/util/src/random.ts":{"bytes":1356,"imports":[],"format":"esm"},"packages/common/util/src/range.ts":{"bytes":2016,"imports":[],"format":"esm"},"packages/common/util/src/reducers.ts":{"bytes":12989,"imports":[{"path":"packages/common/util/src/map.ts","kind":"import-statement","original":"./map"}],"format":"esm"},"packages/common/util/src/safe-await.ts":{"bytes":2916,"imports":[],"format":"esm"},"packages/common/util/src/safe-instanceof.ts":{"bytes":2749,"imports":[],"format":"esm"},"packages/common/util/src/safe-parse.ts":{"bytes":2763,"imports":[],"format":"esm"},"packages/common/util/src/sliding-window-summary.ts":{"bytes":7614,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"packages/common/util/src/circular-buffer.ts","kind":"import-statement","original":"./circular-buffer"}],"format":"esm"},"packages/common/util/src/sort.ts":{"bytes":4004,"imports":[],"format":"esm"},"packages/common/util/src/sum.ts":{"bytes":720,"imports":[],"format":"esm"},"packages/common/util/src/throw-unhandled-error.ts":{"bytes":1216,"imports":[],"format":"esm"},"packages/common/util/src/to-fallback.ts":{"bytes":12288,"imports":[],"format":"esm"},"packages/common/util/src/tracer.ts":{"bytes":7302,"imports":[{"path":"packages/common/util/src/map.ts","kind":"import-statement","original":"./map"}],"format":"esm"},"packages/common/util/src/tree.ts":{"bytes":6355,"imports":[{"path":"@dxos/debug","kind":"import-statement","external":true}],"format":"esm"},"packages/common/util/src/types.ts":{"bytes":9232,"imports":[],"format":"esm"},"packages/common/util/src/weak.ts":{"bytes":9764,"imports":[],"format":"esm"},"packages/common/util/src/string.ts":{"bytes":1192,"imports":[],"format":"esm"},"packages/common/util/src/remove-undefined-keys.ts":{"bytes":1594,"imports":[],"format":"esm"},"packages/common/util/src/index.ts":{"bytes":4766,"imports":[{"path":"packages/common/util/src/array.ts","kind":"import-statement","original":"./array"},{"path":"packages/common/util/src/array-to-hex.ts","kind":"import-statement","original":"./array-to-hex"},{"path":"packages/common/util/src/binder.ts","kind":"import-statement","original":"./binder"},{"path":"packages/common/util/src/bitfield.ts","kind":"import-statement","original":"./bitfield"},{"path":"packages/common/util/src/callback.ts","kind":"import-statement","original":"./callback"},{"path":"packages/common/util/src/callback-collection.ts","kind":"import-statement","original":"./callback-collection"},{"path":"packages/common/util/src/case.ts","kind":"import-statement","original":"./case"},{"path":"packages/common/util/src/chunk-array.ts","kind":"import-statement","original":"./chunk-array"},{"path":"packages/common/util/src/circular-buffer.ts","kind":"import-statement","original":"./circular-buffer"},{"path":"packages/common/util/src/complex.ts","kind":"import-statement","original":"./complex"},{"path":"packages/common/util/src/defer.ts","kind":"import-statement","original":"./defer"},{"path":"packages/common/util/src/defer-function.ts","kind":"import-statement","original":"./defer-function"},{"path":"packages/common/util/src/deep.ts","kind":"import-statement","original":"./deep"},{"path":"packages/common/util/src/entry.ts","kind":"import-statement","original":"./entry"},{"path":"packages/common/util/src/for-each-async.ts","kind":"import-statement","original":"./for-each-async"},{"path":"packages/common/util/src/human-hash.ts","kind":"import-statement","original":"./human-hash"},{"path":"packages/common/util/src/interval.ts","kind":"import-statement","original":"./interval"},{"path":"packages/common/util/src/instance-id.ts","kind":"import-statement","original":"./instance-id"},{"path":"packages/common/util/src/join-tables.ts","kind":"import-statement","original":"./join-tables"},{"path":"packages/common/util/src/json.ts","kind":"import-statement","original":"./json"},{"path":"packages/common/util/src/map.ts","kind":"import-statement","original":"./map"},{"path":"packages/common/util/src/map-values.ts","kind":"import-statement","original":"./map-values"},{"path":"packages/common/util/src/no-infer.ts","kind":"import-statement","original":"./no-infer"},{"path":"packages/common/util/src/order.ts","kind":"import-statement","original":"./order"},{"path":"packages/common/util/src/order-keys.ts","kind":"import-statement","original":"./order-keys"},{"path":"packages/common/util/src/pick.ts","kind":"import-statement","original":"./pick"},{"path":"packages/common/util/src/platform.ts","kind":"import-statement","original":"./platform"},{"path":"packages/common/util/src/position.ts","kind":"import-statement","original":"./position"},{"path":"packages/common/util/src/random.ts","kind":"import-statement","original":"./random"},{"path":"packages/common/util/src/range.ts","kind":"import-statement","original":"./range"},{"path":"packages/common/util/src/reducers.ts","kind":"import-statement","original":"./reducers"},{"path":"packages/common/util/src/safe-await.ts","kind":"import-statement","original":"./safe-await"},{"path":"packages/common/util/src/safe-instanceof.ts","kind":"import-statement","original":"./safe-instanceof"},{"path":"packages/common/util/src/safe-parse.ts","kind":"import-statement","original":"./safe-parse"},{"path":"packages/common/util/src/sliding-window-summary.ts","kind":"import-statement","original":"./sliding-window-summary"},{"path":"packages/common/util/src/sort.ts","kind":"import-statement","original":"./sort"},{"path":"packages/common/util/src/sum.ts","kind":"import-statement","original":"./sum"},{"path":"packages/common/util/src/throw-unhandled-error.ts","kind":"import-statement","original":"./throw-unhandled-error"},{"path":"packages/common/util/src/to-fallback.ts","kind":"import-statement","original":"./to-fallback"},{"path":"packages/common/util/src/tracer.ts","kind":"import-statement","original":"./tracer"},{"path":"packages/common/util/src/tree.ts","kind":"import-statement","original":"./tree"},{"path":"packages/common/util/src/types.ts","kind":"import-statement","original":"./types"},{"path":"packages/common/util/src/uint8array.ts","kind":"import-statement","original":"./uint8array"},{"path":"packages/common/util/src/weak.ts","kind":"import-statement","original":"./weak"},{"path":"packages/common/util/src/sliding-window-summary.ts","kind":"import-statement","original":"./sliding-window-summary"},{"path":"packages/common/util/src/string.ts","kind":"import-statement","original":"./string"},{"path":"packages/common/util/src/remove-undefined-keys.ts","kind":"import-statement","original":"./remove-undefined-keys"}],"format":"esm"}},"outputs":{"packages/common/util/dist/lib/node-esm/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":119749},"packages/common/util/dist/lib/node-esm/index.mjs":{"imports":[{"path":"node:util","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"node:util","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"node:util","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true}],"exports":["BitField","Callback","CallbackCollection","CircularBuffer","ComplexMap","ComplexSet","HumanHasher","MapEntry","SlidingWindowSummary","Tracer","WeakDictionary","accessBy","arrayMove","arrayToBuffer","arrayToHex","arrayToString","arraysEqual","boolGuard","bufferToArray","byPosition","capitalize","chunkArray","compareMulti","compareObject","compareScalar","compareString","createBinder","createBucketReducer","createGroupReducer","createSetDispatch","decamelize","deepMapValues","deepMapValuesAsync","defaultMap","defer","deferAsync","deferFunction","diff","distinctBy","doAsync","entry","exponentialBackoffInterval","forEachAsync","getAsyncProviderValue","getDate","getDebugName","getDeep","getHostPlatform","getPrototypeSpecificInstanceId","getProviderValue","hexToEmoji","hexToFallback","hexToHue","humanize","hyphenize","idEmoji","idHue","inferObjectOrder","inferRecordOrder","intersection","iosCheck","isNode","isNotFalsy","isNotNullOrUndefined","joinTables","jsonKeyReplacer","jsonReplacer","jsonify","jsonlogify","keyToEmoji","keyToFallback","keyToHue","makeMap","makeSet","mapValues","median","mobileAndTabletCheck","nonNullable","numericalValues","omit","orderKeys","partition","pick","pickBy","randomInt","range","rangeFromTo","reduceGroupBy","reduceSeries","reduceSet","removeUndefinedProperties","safariCheck","safeAwaitAll","safeInstanceof","safeParseFloat","safeParseInt","safeParseJson","setDeep","sortKeys","stringToArray","stringifyTree","stripUndefined","sum","throwUnhandledError","toEmoji","toFallback","toHue","tracer"],"entryPoint":"packages/common/util/src/index.ts","inputs":{"packages/common/util/src/array.ts":{"bytesInOutput":1091},"packages/common/util/src/index.ts":{"bytesInOutput":0},"packages/common/util/src/array-to-hex.ts":{"bytesInOutput":341},"packages/common/util/src/binder.ts":{"bytesInOutput":139},"packages/common/util/src/bitfield.ts":{"bytesInOutput":1894},"packages/common/util/src/callback.ts":{"bytesInOutput":1113},"packages/common/util/src/callback-collection.ts":{"bytesInOutput":558},"packages/common/util/src/case.ts":{"bytesInOutput":940},"packages/common/util/src/chunk-array.ts":{"bytesInOutput":173},"packages/common/util/src/circular-buffer.ts":{"bytesInOutput":1539},"packages/common/util/src/complex.ts":{"bytesInOutput":4413},"packages/common/util/src/explicit-resource-management-polyfill.ts":{"bytesInOutput":100},"packages/common/util/src/defer.ts":{"bytesInOutput":546},"packages/common/util/src/defer-function.ts":{"bytesInOutput":72},"packages/common/util/src/deep.ts":{"bytesInOutput":726},"packages/common/util/src/entry.ts":{"bytesInOutput":471},"packages/common/util/src/for-each-async.ts":{"bytesInOutput":62},"packages/common/util/src/human-hash.ts":{"bytesInOutput":5662},"packages/common/util/src/interval.ts":{"bytesInOutput":290},"packages/common/util/src/map.ts":{"bytesInOutput":193},"packages/common/util/src/instance-id.ts":{"bytesInOutput":771},"packages/common/util/src/join-tables.ts":{"bytesInOutput":493},"packages/common/util/src/json.ts":{"bytesInOutput":2946},"packages/common/util/src/uint8array.ts":{"bytesInOutput":562},"packages/common/util/src/map-values.ts":{"bytesInOutput":2298},"packages/common/util/src/order.ts":{"bytesInOutput":676},"packages/common/util/src/order-keys.ts":{"bytesInOutput":266},"packages/common/util/src/pick.ts":{"bytesInOutput":478},"packages/common/util/src/platform.ts":{"bytesInOutput":3211},"packages/common/util/src/position.ts":{"bytesInOutput":344},"packages/common/util/src/random.ts":{"bytesInOutput":148},"packages/common/util/src/range.ts":{"bytesInOutput":283},"packages/common/util/src/reducers.ts":{"bytesInOutput":2326},"packages/common/util/src/safe-await.ts":{"bytesInOutput":345},"packages/common/util/src/safe-instanceof.ts":{"bytesInOutput":371},"packages/common/util/src/safe-parse.ts":{"bytesInOutput":469},"packages/common/util/src/sliding-window-summary.ts":{"bytesInOutput":1802},"packages/common/util/src/sort.ts":{"bytesInOutput":643},"packages/common/util/src/sum.ts":{"bytesInOutput":57},"packages/common/util/src/throw-unhandled-error.ts":{"bytesInOutput":90},"packages/common/util/src/to-fallback.ts":{"bytesInOutput":4082},"packages/common/util/src/tracer.ts":{"bytesInOutput":1426},"packages/common/util/src/tree.ts":{"bytesInOutput":1193},"packages/common/util/src/types.ts":{"bytesInOutput":1024},"packages/common/util/src/weak.ts":{"bytesInOutput":2069},"packages/common/util/src/string.ts":{"bytesInOutput":129},"packages/common/util/src/remove-undefined-keys.ts":{"bytesInOutput":255}},"bytes":52858}}}
@@ -1,4 +1,5 @@
1
1
  export * from './array';
2
+ export * from './array-to-hex';
2
3
  export * from './binder';
3
4
  export * from './bitfield';
4
5
  export * from './callback';
@@ -10,7 +11,6 @@ export * from './complex';
10
11
  export * from './defer';
11
12
  export * from './defer-function';
12
13
  export * from './deep';
13
- export * from './disposition';
14
14
  export * from './entry';
15
15
  export * from './for-each-async';
16
16
  export * from './human-hash';
@@ -20,9 +20,12 @@ export * from './join-tables';
20
20
  export * from './json';
21
21
  export * from './map';
22
22
  export * from './map-values';
23
+ export * from './no-infer';
23
24
  export * from './order';
25
+ export * from './order-keys';
24
26
  export * from './pick';
25
27
  export * from './platform';
28
+ export * from './position';
26
29
  export * from './random';
27
30
  export * from './range';
28
31
  export * from './reducers';
@@ -40,9 +43,6 @@ export * from './types';
40
43
  export * from './uint8array';
41
44
  export * from './weak';
42
45
  export * from './sliding-window-summary';
43
- export * from './chunk-array';
44
- export * from './array-to-hex';
46
+ export * from './string';
45
47
  export * from './remove-undefined-keys';
46
- export * from './order-keys';
47
- export * from './no-infer';
48
48
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAIA,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,QAAQ,CAAC;AACvB,cAAc,OAAO,CAAC;AACtB,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,0BAA0B,CAAC;AACzC,cAAc,QAAQ,CAAC;AACvB,cAAc,OAAO,CAAC;AACtB,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,cAAc,0BAA0B,CAAC;AACzC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAIA,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,QAAQ,CAAC;AACvB,cAAc,OAAO,CAAC;AACtB,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,0BAA0B,CAAC;AACzC,cAAc,QAAQ,CAAC;AACvB,cAAc,OAAO,CAAC;AACtB,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,cAAc,0BAA0B,CAAC;AACzC,cAAc,UAAU,CAAC;AACzB,cAAc,yBAAyB,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Determines priority order.
3
+ *
4
+ * - `static` - Remain in natural order.
5
+ * - `hoist` - Placed before `static`.
6
+ * - `fallback` - Placed after `static`.
7
+ */
8
+ export type Position = 'static' | 'hoist' | 'fallback';
9
+ /**
10
+ * Sorting function for sorting by position.
11
+ */
12
+ export declare const byPosition: <T extends {
13
+ position?: Position;
14
+ }>(a: T, b: T) => 0 | 1 | -1;
15
+ //# sourceMappingURL=position.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"position.d.ts","sourceRoot":"","sources":["../../../src/position.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AACH,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,UAAU,CAAC;AAEvD;;GAEG;AACH,eAAO,MAAM,UAAU,GAAI,CAAC,SAAS;IAAE,QAAQ,CAAC,EAAE,QAAQ,CAAA;CAAE,KAAK,CAAC,KAAK,CAAC,eAavE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=position.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"position.test.d.ts","sourceRoot":"","sources":["../../../src/position.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Capitalizes the first letter of a string.
3
+ */
4
+ export declare const capitalize: (str: string) => string;
5
+ //# sourceMappingURL=string.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string.d.ts","sourceRoot":"","sources":["../../../src/string.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,eAAO,MAAM,UAAU,QAAS,MAAM,KAAG,MAMxC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/util",
3
- "version": "0.7.5-main.9d2a38b",
3
+ "version": "0.7.5-main.e9bb01b",
4
4
  "description": "Temporary bucket for misc functions, which should graduate into separate packages.",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -26,13 +26,13 @@
26
26
  "src"
27
27
  ],
28
28
  "dependencies": {
29
- "@dxos/invariant": "0.7.5-main.9d2a38b",
30
- "@dxos/debug": "0.7.5-main.9d2a38b",
31
- "@dxos/keys": "0.7.5-main.9d2a38b",
32
- "@dxos/node-std": "0.7.5-main.9d2a38b"
29
+ "@dxos/invariant": "0.7.5-main.e9bb01b",
30
+ "@dxos/debug": "0.7.5-main.e9bb01b",
31
+ "@dxos/keys": "0.7.5-main.e9bb01b",
32
+ "@dxos/node-std": "0.7.5-main.e9bb01b"
33
33
  },
34
34
  "devDependencies": {
35
- "@dxos/crypto": "0.7.5-main.9d2a38b"
35
+ "@dxos/crypto": "0.7.5-main.e9bb01b"
36
36
  },
37
37
  "publishConfig": {
38
38
  "access": "public"
package/src/index.ts CHANGED
@@ -1,8 +1,9 @@
1
1
  //
2
- // Copyright 2020 DXOS.org
2
+ // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
5
  export * from './array';
6
+ export * from './array-to-hex';
6
7
  export * from './binder';
7
8
  export * from './bitfield';
8
9
  export * from './callback';
@@ -14,7 +15,6 @@ export * from './complex';
14
15
  export * from './defer';
15
16
  export * from './defer-function';
16
17
  export * from './deep';
17
- export * from './disposition';
18
18
  export * from './entry';
19
19
  export * from './for-each-async';
20
20
  export * from './human-hash';
@@ -24,9 +24,12 @@ export * from './join-tables';
24
24
  export * from './json';
25
25
  export * from './map';
26
26
  export * from './map-values';
27
+ export * from './no-infer';
27
28
  export * from './order';
29
+ export * from './order-keys';
28
30
  export * from './pick';
29
31
  export * from './platform';
32
+ export * from './position';
30
33
  export * from './random';
31
34
  export * from './range';
32
35
  export * from './reducers';
@@ -44,8 +47,5 @@ export * from './types';
44
47
  export * from './uint8array';
45
48
  export * from './weak';
46
49
  export * from './sliding-window-summary';
47
- export * from './chunk-array';
48
- export * from './array-to-hex';
50
+ export * from './string';
49
51
  export * from './remove-undefined-keys';
50
- export * from './order-keys';
51
- export * from './no-infer';
@@ -0,0 +1,98 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { describe, it, expect } from 'vitest';
6
+
7
+ import { byPosition, type Position } from './position';
8
+
9
+ type TestItem = {
10
+ id: number;
11
+ position?: Position;
12
+ };
13
+
14
+ describe('byPosition', () => {
15
+ it('should keep items with same position in their original order', () => {
16
+ const items: TestItem[] = [
17
+ { id: 1, position: 'static' },
18
+ { id: 2, position: 'static' },
19
+ { id: 3, position: 'hoist' },
20
+ { id: 4, position: 'hoist' },
21
+ { id: 5, position: 'fallback' },
22
+ { id: 6, position: 'fallback' },
23
+ ];
24
+
25
+ const sorted = [...items].sort(byPosition);
26
+
27
+ // Check that items with the same position maintain relative order
28
+ expect(sorted.findIndex((item) => item.id === 3)).toBeLessThan(sorted.findIndex((item) => item.id === 4));
29
+ expect(sorted.findIndex((item) => item.id === 1)).toBeLessThan(sorted.findIndex((item) => item.id === 2));
30
+ expect(sorted.findIndex((item) => item.id === 5)).toBeLessThan(sorted.findIndex((item) => item.id === 6));
31
+ });
32
+
33
+ it('should place "hoist" items before "static" items', () => {
34
+ const items: TestItem[] = [
35
+ { id: 1, position: 'static' },
36
+ { id: 2, position: 'hoist' },
37
+ ];
38
+
39
+ const sorted = [...items].sort(byPosition);
40
+ expect(sorted[0].position).toBe('hoist');
41
+ expect(sorted[1].position).toBe('static');
42
+ });
43
+
44
+ it('should place "fallback" items after "static" items', () => {
45
+ const items: TestItem[] = [
46
+ { id: 1, position: 'fallback' },
47
+ { id: 2, position: 'static' },
48
+ ];
49
+
50
+ const sorted = [...items].sort(byPosition);
51
+ expect(sorted[0].position).toBe('static');
52
+ expect(sorted[1].position).toBe('fallback');
53
+ });
54
+
55
+ it('should treat items without position as "static"', () => {
56
+ const items: TestItem[] = [{ id: 1 }, { id: 2, position: 'hoist' }, { id: 3, position: 'fallback' }];
57
+
58
+ const sorted = [...items].sort(byPosition);
59
+ expect(sorted[0].position).toBe('hoist');
60
+ expect(sorted[1].position).toBeUndefined();
61
+ expect(sorted[2].position).toBe('fallback');
62
+ });
63
+
64
+ it('should correctly sort mixed positions', () => {
65
+ const items: TestItem[] = [
66
+ { id: 1, position: 'fallback' },
67
+ { id: 2, position: 'static' },
68
+ { id: 3, position: 'hoist' },
69
+ { id: 4 }, // implicit static
70
+ { id: 5, position: 'hoist' },
71
+ { id: 6, position: 'fallback' },
72
+ ];
73
+
74
+ const sorted = [...items].sort(byPosition);
75
+
76
+ // All hoisted items should come first
77
+ expect(sorted[0].position).toBe('hoist');
78
+ expect(sorted[1].position).toBe('hoist');
79
+
80
+ // Static items (including undefined) should be in the middle
81
+ expect(sorted[2].position).toBe('static');
82
+ expect(sorted[3].position).toBeUndefined();
83
+
84
+ // Fallback items should be last
85
+ expect(sorted[4].position).toBe('fallback');
86
+ expect(sorted[5].position).toBe('fallback');
87
+ });
88
+
89
+ it('should handle empty arrays', () => {
90
+ const items: TestItem[] = [];
91
+ expect(() => [...items].sort(byPosition)).not.toThrow();
92
+ });
93
+
94
+ it('should handle single item arrays', () => {
95
+ const items: TestItem[] = [{ id: 1, position: 'static' }];
96
+ expect(() => [...items].sort(byPosition)).not.toThrow();
97
+ });
98
+ });
@@ -0,0 +1,30 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ /**
6
+ * Determines priority order.
7
+ *
8
+ * - `static` - Remain in natural order.
9
+ * - `hoist` - Placed before `static`.
10
+ * - `fallback` - Placed after `static`.
11
+ */
12
+ export type Position = 'static' | 'hoist' | 'fallback';
13
+
14
+ /**
15
+ * Sorting function for sorting by position.
16
+ */
17
+ export const byPosition = <T extends { position?: Position }>(a: T, b: T) => {
18
+ const aPosition = a.position ?? 'static';
19
+ const bPosition = b.position ?? 'static';
20
+
21
+ if (aPosition === bPosition) {
22
+ return 0;
23
+ } else if (aPosition === 'hoist' || bPosition === 'fallback') {
24
+ return -1;
25
+ } else if (bPosition === 'hoist' || aPosition === 'fallback') {
26
+ return 1;
27
+ }
28
+
29
+ return 0;
30
+ };
package/src/string.ts ADDED
@@ -0,0 +1,14 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ /**
6
+ * Capitalizes the first letter of a string.
7
+ */
8
+ export const capitalize = (str: string): string => {
9
+ if (str.length === 0) {
10
+ return '';
11
+ }
12
+
13
+ return str.charAt(0).toUpperCase() + str.slice(1);
14
+ };
@@ -1,15 +0,0 @@
1
- /**
2
- * Determines priority order.
3
- *
4
- * - `static` - Remain in natural order.
5
- * - `hoist` - Placed before `static`.
6
- * - `fallback` - Placed after `static`.
7
- */
8
- export type Disposition = 'static' | 'hoist' | 'fallback';
9
- /**
10
- * Sorting function for sorting by disposition.
11
- */
12
- export declare const byDisposition: <T extends {
13
- disposition?: Disposition;
14
- }>(a: T, b: T) => 0 | 1 | -1;
15
- //# sourceMappingURL=disposition.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"disposition.d.ts","sourceRoot":"","sources":["../../../src/disposition.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AACH,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,OAAO,GAAG,UAAU,CAAC;AAE1D;;GAEG;AACH,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS;IAAE,WAAW,CAAC,EAAE,WAAW,CAAA;CAAE,KAAK,CAAC,KAAK,CAAC,eAahF,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=disposition.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"disposition.test.d.ts","sourceRoot":"","sources":["../../../src/disposition.test.ts"],"names":[],"mappings":""}
@@ -1,98 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { describe, it, expect } from 'vitest';
6
-
7
- import { byDisposition, type Disposition } from './disposition';
8
-
9
- type TestItem = {
10
- id: number;
11
- disposition?: Disposition;
12
- };
13
-
14
- describe('byDisposition', () => {
15
- it('should keep items with same disposition in their original order', () => {
16
- const items: TestItem[] = [
17
- { id: 1, disposition: 'static' },
18
- { id: 2, disposition: 'static' },
19
- { id: 3, disposition: 'hoist' },
20
- { id: 4, disposition: 'hoist' },
21
- { id: 5, disposition: 'fallback' },
22
- { id: 6, disposition: 'fallback' },
23
- ];
24
-
25
- const sorted = [...items].sort(byDisposition);
26
-
27
- // Check that items with the same disposition maintain relative order
28
- expect(sorted.findIndex((item) => item.id === 3)).toBeLessThan(sorted.findIndex((item) => item.id === 4));
29
- expect(sorted.findIndex((item) => item.id === 1)).toBeLessThan(sorted.findIndex((item) => item.id === 2));
30
- expect(sorted.findIndex((item) => item.id === 5)).toBeLessThan(sorted.findIndex((item) => item.id === 6));
31
- });
32
-
33
- it('should place "hoist" items before "static" items', () => {
34
- const items: TestItem[] = [
35
- { id: 1, disposition: 'static' },
36
- { id: 2, disposition: 'hoist' },
37
- ];
38
-
39
- const sorted = [...items].sort(byDisposition);
40
- expect(sorted[0].disposition).toBe('hoist');
41
- expect(sorted[1].disposition).toBe('static');
42
- });
43
-
44
- it('should place "fallback" items after "static" items', () => {
45
- const items: TestItem[] = [
46
- { id: 1, disposition: 'fallback' },
47
- { id: 2, disposition: 'static' },
48
- ];
49
-
50
- const sorted = [...items].sort(byDisposition);
51
- expect(sorted[0].disposition).toBe('static');
52
- expect(sorted[1].disposition).toBe('fallback');
53
- });
54
-
55
- it('should treat items without disposition as "static"', () => {
56
- const items: TestItem[] = [{ id: 1 }, { id: 2, disposition: 'hoist' }, { id: 3, disposition: 'fallback' }];
57
-
58
- const sorted = [...items].sort(byDisposition);
59
- expect(sorted[0].disposition).toBe('hoist');
60
- expect(sorted[1].disposition).toBeUndefined();
61
- expect(sorted[2].disposition).toBe('fallback');
62
- });
63
-
64
- it('should correctly sort mixed dispositions', () => {
65
- const items: TestItem[] = [
66
- { id: 1, disposition: 'fallback' },
67
- { id: 2, disposition: 'static' },
68
- { id: 3, disposition: 'hoist' },
69
- { id: 4 }, // implicit static
70
- { id: 5, disposition: 'hoist' },
71
- { id: 6, disposition: 'fallback' },
72
- ];
73
-
74
- const sorted = [...items].sort(byDisposition);
75
-
76
- // All hoisted items should come first
77
- expect(sorted[0].disposition).toBe('hoist');
78
- expect(sorted[1].disposition).toBe('hoist');
79
-
80
- // Static items (including undefined) should be in the middle
81
- expect(sorted[2].disposition).toBe('static');
82
- expect(sorted[3].disposition).toBeUndefined();
83
-
84
- // Fallback items should be last
85
- expect(sorted[4].disposition).toBe('fallback');
86
- expect(sorted[5].disposition).toBe('fallback');
87
- });
88
-
89
- it('should handle empty arrays', () => {
90
- const items: TestItem[] = [];
91
- expect(() => [...items].sort(byDisposition)).not.toThrow();
92
- });
93
-
94
- it('should handle single item arrays', () => {
95
- const items: TestItem[] = [{ id: 1, disposition: 'static' }];
96
- expect(() => [...items].sort(byDisposition)).not.toThrow();
97
- });
98
- });
@@ -1,30 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- /**
6
- * Determines priority order.
7
- *
8
- * - `static` - Remain in natural order.
9
- * - `hoist` - Placed before `static`.
10
- * - `fallback` - Placed after `static`.
11
- */
12
- export type Disposition = 'static' | 'hoist' | 'fallback';
13
-
14
- /**
15
- * Sorting function for sorting by disposition.
16
- */
17
- export const byDisposition = <T extends { disposition?: Disposition }>(a: T, b: T) => {
18
- const aDisposition = a.disposition ?? 'static';
19
- const bDisposition = b.disposition ?? 'static';
20
-
21
- if (aDisposition === bDisposition) {
22
- return 0;
23
- } else if (aDisposition === 'hoist' || bDisposition === 'fallback') {
24
- return -1;
25
- } else if (bDisposition === 'hoist' || aDisposition === 'fallback') {
26
- return 1;
27
- }
28
-
29
- return 0;
30
- };