@dxos/util 0.7.5-main.9d26e3a → 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.
- package/dist/lib/browser/index.mjs +71 -28
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node/index.cjs +67 -25
- package/dist/lib/node/index.cjs.map +4 -4
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node-esm/index.mjs +71 -28
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/types/src/array.d.ts +5 -0
- package/dist/types/src/array.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +5 -4
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/position.d.ts +15 -0
- package/dist/types/src/position.d.ts.map +1 -0
- package/dist/types/src/position.test.d.ts +2 -0
- package/dist/types/src/position.test.d.ts.map +1 -0
- package/dist/types/src/string.d.ts +5 -0
- package/dist/types/src/string.d.ts.map +1 -0
- package/dist/types/src/types.d.ts +6 -0
- package/dist/types/src/types.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -6
- package/src/array.test.ts +83 -1
- package/src/array.ts +12 -0
- package/src/index.ts +6 -5
- package/src/position.test.ts +98 -0
- package/src/position.ts +30 -0
- package/src/string.ts +14 -0
- package/src/types.ts +10 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"packages/common/util/src/array.ts":{"bytes":5726,"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/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":8792,"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":4691,"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/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":117119},"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","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","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":804},"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/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":51977}}}
|
|
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}}}
|
|
@@ -22,4 +22,9 @@ export declare const intersection: <A, B = A>(a: A[], b: B[], comparator: Compar
|
|
|
22
22
|
* @returns A new array with only distinct items based on the specified property.
|
|
23
23
|
*/
|
|
24
24
|
export declare const distinctBy: <T, K>(array: T[], selector: (item: T) => K) => T[];
|
|
25
|
+
/**
|
|
26
|
+
* Splits an array based on a type guard predicate function.
|
|
27
|
+
* Infers the output tuple types from the guard function.
|
|
28
|
+
*/
|
|
29
|
+
export declare const partition: <T>(array: T[], guard: (item: T, index: number, array: T[]) => boolean) => [T[], T[]];
|
|
25
30
|
//# sourceMappingURL=array.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../../../src/array.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,UAAU,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC;AAE3D,MAAM,MAAM,UAAU,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI;IACjC,KAAK,EAAE,CAAC,EAAE,CAAC;IACX,OAAO,EAAE,CAAC,EAAE,CAAC;IACb,OAAO,EAAE,CAAC,EAAE,CAAC;CACd,CAAC;AAEF;;;;;GAKG;AAEH,eAAO,MAAM,IAAI,GAAI,CAAC,EAAE,CAAC,gBACb,SAAS,CAAC,EAAE,QAChB,SAAS,CAAC,EAAE,cACN,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,KAC3B,UAAU,CAAC,CAAC,EAAE,CAAC,CAoBjB,CAAC;AAGF,eAAO,MAAM,YAAY,GAAI,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,EAAE,cAAc,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,KAAG,CAAC,EACvB,CAAC;AAEjE;;;;;;;;GAQG;AACH,eAAO,MAAM,UAAU,GAAI,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAG,CAAC,EAYxE,CAAC"}
|
|
1
|
+
{"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../../../src/array.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,UAAU,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC;AAE3D,MAAM,MAAM,UAAU,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI;IACjC,KAAK,EAAE,CAAC,EAAE,CAAC;IACX,OAAO,EAAE,CAAC,EAAE,CAAC;IACb,OAAO,EAAE,CAAC,EAAE,CAAC;CACd,CAAC;AAEF;;;;;GAKG;AAEH,eAAO,MAAM,IAAI,GAAI,CAAC,EAAE,CAAC,gBACb,SAAS,CAAC,EAAE,QAChB,SAAS,CAAC,EAAE,cACN,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,KAC3B,UAAU,CAAC,CAAC,EAAE,CAAC,CAoBjB,CAAC;AAGF,eAAO,MAAM,YAAY,GAAI,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,EAAE,cAAc,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,KAAG,CAAC,EACvB,CAAC;AAEjE;;;;;;;;GAQG;AACH,eAAO,MAAM,UAAU,GAAI,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAG,CAAC,EAYxE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,OAAO,KAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAM1G,CAAC"}
|
|
@@ -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';
|
|
@@ -19,9 +20,12 @@ export * from './join-tables';
|
|
|
19
20
|
export * from './json';
|
|
20
21
|
export * from './map';
|
|
21
22
|
export * from './map-values';
|
|
23
|
+
export * from './no-infer';
|
|
22
24
|
export * from './order';
|
|
25
|
+
export * from './order-keys';
|
|
23
26
|
export * from './pick';
|
|
24
27
|
export * from './platform';
|
|
28
|
+
export * from './position';
|
|
25
29
|
export * from './random';
|
|
26
30
|
export * from './range';
|
|
27
31
|
export * from './reducers';
|
|
@@ -39,9 +43,6 @@ export * from './types';
|
|
|
39
43
|
export * from './uint8array';
|
|
40
44
|
export * from './weak';
|
|
41
45
|
export * from './sliding-window-summary';
|
|
42
|
-
export * from './
|
|
43
|
-
export * from './array-to-hex';
|
|
46
|
+
export * from './string';
|
|
44
47
|
export * from './remove-undefined-keys';
|
|
45
|
-
export * from './order-keys';
|
|
46
|
-
export * from './no-infer';
|
|
47
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,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,
|
|
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 @@
|
|
|
1
|
+
{"version":3,"file":"position.test.d.ts","sourceRoot":"","sources":["../../../src/position.test.ts"],"names":[],"mappings":""}
|
|
@@ -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"}
|
|
@@ -4,6 +4,12 @@ export type MaybeProvider<T, V = void> = T | ((arg: V) => T);
|
|
|
4
4
|
export type MaybePromise<T> = T | Promise<T>;
|
|
5
5
|
export type MakeOptional<Type, Key extends keyof Type> = Omit<Type, Key> & Partial<Pick<Type, Key>>;
|
|
6
6
|
export type GuardedType<T> = T extends (value: any) => value is infer R ? R : never;
|
|
7
|
+
export type DeepReadonly<T> = {
|
|
8
|
+
readonly [P in keyof T]: T[P] extends Record<string, any> ? DeepReadonly<T[P]> : T[P] extends Array<infer U> ? ReadonlyArray<DeepReadonly<U>> : T[P];
|
|
9
|
+
};
|
|
10
|
+
export type DeepWriteable<T> = {
|
|
11
|
+
-readonly [K in keyof T]: T[K] extends object ? DeepWriteable<T[K]> : T[K];
|
|
12
|
+
};
|
|
7
13
|
/**
|
|
8
14
|
* All types that evaluate to false when cast to a boolean.
|
|
9
15
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAE3D,MAAM,MAAM,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;AAElD,MAAM,MAAM,aAAa,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAE7D,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAE7C,MAAM,MAAM,YAAY,CAAC,IAAI,EAAE,GAAG,SAAS,MAAM,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;AAEpG,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,KAAK,KAAK,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAEpF;;GAEG;AACH,MAAM,MAAM,KAAK,GAAG,KAAK,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,SAAS,CAAC;AAEtD;;;;GAIG;AAEH,eAAO,MAAM,UAAU,GAAI,CAAC,SAAS,CAAC,KAAG,KAAK,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,CAAY,CAAC;AAC/E,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,CAAC,KAAG,KAAK,IAAI,WAAW,CAAC,CAAC,CAA0C,CAAC;AAC3G,eAAO,MAAM,oBAAoB,GAAI,CAAC,SAAS,CAAC,KAAG,KAAK,IAAI,OAAO,CAAC,CAAC,EAAE,IAAI,GAAG,SAAS,CAAkB,CAAC;AAE1G,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS,CAAC,GAAG,IAAI,GAAG,SAAS,KAAG,KAAK,IAAI,CAAmB,CAAC;AAMxF,eAAO,MAAM,OAAO,OAAc,MAAM,OAAO,CAAC,IAAI,CAAC,kBAAS,CAAC;AAE/D;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAAI,CAAC,EAAE,CAAC,mBAAmB,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAG,CAEtF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,GAAI,CAAC,EAAE,CAAC,mBAC9B,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QACrC,CAAC,KACN,YAAY,CAAC,CAAC,CAEhB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,OAAO,CAAC,KAAG,CAa3E,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,QAAQ,GAAI,CAAC,SAAS,MAAM,OAAO,CAAC,KAAG,CAMrC,CAAC;AAEhB;;GAEG;AACH,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,MAAM,MAAM,MAAM,KAAG,KAAK,CAAC,CAAC,CAG1E,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAE3D,MAAM,MAAM,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;AAElD,MAAM,MAAM,aAAa,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAE7D,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAE7C,MAAM,MAAM,YAAY,CAAC,IAAI,EAAE,GAAG,SAAS,MAAM,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;AAEpG,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,KAAK,KAAK,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAEpF,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI;IAC5B,QAAQ,EAAE,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACrD,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAClB,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,CAAC,GACzB,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAC9B,CAAC,CAAC,CAAC,CAAC;CACX,CAAC;AAEF,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI;IAAE,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC;AAE9G;;GAEG;AACH,MAAM,MAAM,KAAK,GAAG,KAAK,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,SAAS,CAAC;AAEtD;;;;GAIG;AAEH,eAAO,MAAM,UAAU,GAAI,CAAC,SAAS,CAAC,KAAG,KAAK,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,CAAY,CAAC;AAC/E,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,CAAC,KAAG,KAAK,IAAI,WAAW,CAAC,CAAC,CAA0C,CAAC;AAC3G,eAAO,MAAM,oBAAoB,GAAI,CAAC,SAAS,CAAC,KAAG,KAAK,IAAI,OAAO,CAAC,CAAC,EAAE,IAAI,GAAG,SAAS,CAAkB,CAAC;AAE1G,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS,CAAC,GAAG,IAAI,GAAG,SAAS,KAAG,KAAK,IAAI,CAAmB,CAAC;AAMxF,eAAO,MAAM,OAAO,OAAc,MAAM,OAAO,CAAC,IAAI,CAAC,kBAAS,CAAC;AAE/D;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAAI,CAAC,EAAE,CAAC,mBAAmB,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAG,CAEtF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,GAAI,CAAC,EAAE,CAAC,mBAC9B,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QACrC,CAAC,KACN,YAAY,CAAC,CAAC,CAEhB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,OAAO,CAAC,KAAG,CAa3E,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,QAAQ,GAAI,CAAC,SAAS,MAAM,OAAO,CAAC,KAAG,CAMrC,CAAC;AAEhB;;GAEG;AACH,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,MAAM,MAAM,MAAM,KAAG,KAAK,CAAC,CAAC,CAG1E,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":"5.7.
|
|
1
|
+
{"version":"5.7.3"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dxos/util",
|
|
3
|
-
"version": "0.7.5-main.
|
|
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/
|
|
30
|
-
"@dxos/debug": "0.7.5-main.
|
|
31
|
-
"@dxos/
|
|
32
|
-
"@dxos/
|
|
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.
|
|
35
|
+
"@dxos/crypto": "0.7.5-main.e9bb01b"
|
|
36
36
|
},
|
|
37
37
|
"publishConfig": {
|
|
38
38
|
"access": "public"
|
package/src/array.test.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
import { describe, expect, test } from 'vitest';
|
|
6
6
|
|
|
7
|
-
import { diff, intersection, distinctBy } from './array';
|
|
7
|
+
import { diff, intersection, distinctBy, partition } from './array';
|
|
8
8
|
|
|
9
9
|
describe('diff', () => {
|
|
10
10
|
test('returns the difference between two sets', () => {
|
|
@@ -96,3 +96,85 @@ describe('distinctBy', () => {
|
|
|
96
96
|
}
|
|
97
97
|
});
|
|
98
98
|
});
|
|
99
|
+
|
|
100
|
+
describe('partition', () => {
|
|
101
|
+
test('should handle empty arrays', () => {
|
|
102
|
+
const input: number[] = [];
|
|
103
|
+
const isPositive = (n: number): n is number => n > 0;
|
|
104
|
+
|
|
105
|
+
const [positive, negative] = partition(input, isPositive);
|
|
106
|
+
|
|
107
|
+
expect(positive).toEqual([]);
|
|
108
|
+
expect(negative).toEqual([]);
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
test('should partition numbers by sign', () => {
|
|
112
|
+
const input = [-2, -1, 0, 1, 2];
|
|
113
|
+
const isPositive = (n: number): n is number => n > 0;
|
|
114
|
+
|
|
115
|
+
const [positive, negative] = partition(input, isPositive);
|
|
116
|
+
|
|
117
|
+
expect(positive).toEqual([1, 2]);
|
|
118
|
+
expect(negative).toEqual([-2, -1, 0]);
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
test('should maintain the original order within partitions', () => {
|
|
122
|
+
const input = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3];
|
|
123
|
+
const isEven = (n: number): n is number => n % 2 === 0;
|
|
124
|
+
|
|
125
|
+
const [evens, odds] = partition(input, isEven);
|
|
126
|
+
|
|
127
|
+
expect(evens).toEqual([4, 2, 6]);
|
|
128
|
+
expect(odds).toEqual([3, 1, 1, 5, 9, 5, 3]);
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
test('should handle nullable types', () => {
|
|
132
|
+
const input = ['hello', null, 'world', undefined, ''];
|
|
133
|
+
const isNonNullable = <T>(value: T | null | undefined): value is T => value != null;
|
|
134
|
+
|
|
135
|
+
const [nonNull, nullable] = partition(input, isNonNullable);
|
|
136
|
+
|
|
137
|
+
expect(nonNull).toEqual(['hello', 'world', '']);
|
|
138
|
+
expect(nullable).toEqual([null, undefined]);
|
|
139
|
+
});
|
|
140
|
+
|
|
141
|
+
test('should work with complex type guards', () => {
|
|
142
|
+
interface Success<T> {
|
|
143
|
+
status: 'success';
|
|
144
|
+
data: T;
|
|
145
|
+
}
|
|
146
|
+
interface Error {
|
|
147
|
+
status: 'error';
|
|
148
|
+
message: string;
|
|
149
|
+
}
|
|
150
|
+
type Result<T> = Success<T> | Error;
|
|
151
|
+
|
|
152
|
+
const results: Result<number>[] = [
|
|
153
|
+
{ status: 'success', data: 42 },
|
|
154
|
+
{ status: 'error', message: 'Invalid' },
|
|
155
|
+
{ status: 'success', data: 123 },
|
|
156
|
+
];
|
|
157
|
+
|
|
158
|
+
const isSuccess = <T>(result: Result<T>): result is Success<T> => result.status === 'success';
|
|
159
|
+
|
|
160
|
+
const [successes, errors] = partition(results, isSuccess);
|
|
161
|
+
|
|
162
|
+
expect(successes).toHaveLength(2);
|
|
163
|
+
expect(errors).toHaveLength(1);
|
|
164
|
+
expect(successes.every((s) => s.status === 'success')).toBe(true);
|
|
165
|
+
expect(errors.every((e) => e.status === 'error')).toBe(true);
|
|
166
|
+
});
|
|
167
|
+
|
|
168
|
+
test('should handle instance checks', () => {
|
|
169
|
+
const input = [new Date(), 'string', new Date(), 42];
|
|
170
|
+
const isDate = (value: unknown): value is Date => value instanceof Date;
|
|
171
|
+
|
|
172
|
+
const [dates, nonDates] = partition(input, isDate);
|
|
173
|
+
|
|
174
|
+
expect(dates).toHaveLength(2);
|
|
175
|
+
expect(nonDates).toHaveLength(2);
|
|
176
|
+
expect(dates.every((d) => d instanceof Date)).toBe(true);
|
|
177
|
+
expect(nonDates).toContain('string');
|
|
178
|
+
expect(nonDates).toContain(42);
|
|
179
|
+
});
|
|
180
|
+
});
|
package/src/array.ts
CHANGED
|
@@ -69,3 +69,15 @@ export const distinctBy = <T, K>(array: T[], selector: (item: T) => K): T[] => {
|
|
|
69
69
|
return true;
|
|
70
70
|
});
|
|
71
71
|
};
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Splits an array based on a type guard predicate function.
|
|
75
|
+
* Infers the output tuple types from the guard function.
|
|
76
|
+
*/
|
|
77
|
+
export const partition = <T>(array: T[], guard: (item: T, index: number, array: T[]) => boolean): [T[], T[]] => {
|
|
78
|
+
return array.reduce<[T[], T[]]>(
|
|
79
|
+
([accepted, rejected], item, index, array) =>
|
|
80
|
+
guard(item, index, array) ? [[...accepted, item], rejected] : [accepted, [...rejected, item]],
|
|
81
|
+
[[], []],
|
|
82
|
+
);
|
|
83
|
+
};
|
package/src/index.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
//
|
|
2
|
-
// Copyright
|
|
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';
|
|
@@ -23,9 +24,12 @@ export * from './join-tables';
|
|
|
23
24
|
export * from './json';
|
|
24
25
|
export * from './map';
|
|
25
26
|
export * from './map-values';
|
|
27
|
+
export * from './no-infer';
|
|
26
28
|
export * from './order';
|
|
29
|
+
export * from './order-keys';
|
|
27
30
|
export * from './pick';
|
|
28
31
|
export * from './platform';
|
|
32
|
+
export * from './position';
|
|
29
33
|
export * from './random';
|
|
30
34
|
export * from './range';
|
|
31
35
|
export * from './reducers';
|
|
@@ -43,8 +47,5 @@ export * from './types';
|
|
|
43
47
|
export * from './uint8array';
|
|
44
48
|
export * from './weak';
|
|
45
49
|
export * from './sliding-window-summary';
|
|
46
|
-
export * from './
|
|
47
|
-
export * from './array-to-hex';
|
|
50
|
+
export * from './string';
|
|
48
51
|
export * from './remove-undefined-keys';
|
|
49
|
-
export * from './order-keys';
|
|
50
|
-
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
|
+
});
|
package/src/position.ts
ADDED
|
@@ -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
|
+
};
|
package/src/types.ts
CHANGED
|
@@ -14,6 +14,16 @@ export type MakeOptional<Type, Key extends keyof Type> = Omit<Type, Key> & Parti
|
|
|
14
14
|
|
|
15
15
|
export type GuardedType<T> = T extends (value: any) => value is infer R ? R : never;
|
|
16
16
|
|
|
17
|
+
export type DeepReadonly<T> = {
|
|
18
|
+
readonly [P in keyof T]: T[P] extends Record<string, any>
|
|
19
|
+
? DeepReadonly<T[P]>
|
|
20
|
+
: T[P] extends Array<infer U>
|
|
21
|
+
? ReadonlyArray<DeepReadonly<U>>
|
|
22
|
+
: T[P];
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
export type DeepWriteable<T> = { -readonly [K in keyof T]: T[K] extends object ? DeepWriteable<T[K]> : T[K] };
|
|
26
|
+
|
|
17
27
|
/**
|
|
18
28
|
* All types that evaluate to false when cast to a boolean.
|
|
19
29
|
*/
|