@dxos/util 0.8.1-main.ba2dec9 → 0.8.1-staging.31c3ee1
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 +46 -12
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node/index.cjs +45 -12
- package/dist/lib/node/index.cjs.map +4 -4
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node-esm/index.mjs +46 -12
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/types/src/first-two-chars.d.ts +9 -0
- package/dist/types/src/first-two-chars.d.ts.map +1 -0
- package/dist/types/src/index.d.ts +1 -0
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/to-fallback.d.ts.map +1 -1
- package/package.json +6 -6
- package/src/first-two-chars.ts +44 -0
- package/src/index.ts +1 -0
- package/src/range.ts +1 -1
- package/src/to-fallback.ts +27 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"packages/common/util/src/array.ts":{"bytes":8585,"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":[],"format":"esm"},"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":4335,"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":2570,"imports":[],"format":"esm"},"packages/common/util/src/random.ts":{"bytes":1356,"imports":[],"format":"esm"},"packages/common/util/src/range.ts":{"bytes":2648,"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":2850,"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":8619,"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":120684},"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","bufferToArray","byPosition","capitalize","chunkArray","clamp","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","isNonNullable","isNotFalsy","joinTables","jsonKeyReplacer","jsonReplacer","jsonify","jsonlogify","keyToEmoji","keyToFallback","keyToHue","makeMap","makeSet","mapValues","median","mobileAndTabletCheck","numericalValues","omit","orderKeys","partition","pick","pickBy","randomInt","range","rangeFromTo","reduceGroupBy","reduceSeries","reduceSet","removeBy","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":1298},"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":784},"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":367},"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":488},"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":909},"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":53052}}}
|
|
1
|
+
{"inputs":{"packages/common/util/src/array.ts":{"bytes":8585,"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":[],"format":"esm"},"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/first-two-chars.ts":{"bytes":4948,"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":4335,"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":2570,"imports":[],"format":"esm"},"packages/common/util/src/random.ts":{"bytes":1356,"imports":[],"format":"esm"},"packages/common/util/src/range.ts":{"bytes":2668,"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":2850,"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":14270,"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":8619,"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":4873,"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/first-two-chars.ts","kind":"import-statement","original":"./first-two-chars"},{"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":123767},"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","bufferToArray","byPosition","capitalize","chunkArray","clamp","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","getFirstTwoRenderableChars","getHostPlatform","getPrototypeSpecificInstanceId","getProviderValue","hexToEmoji","hexToFallback","hexToHue","humanize","hyphenize","idEmoji","idHue","inferObjectOrder","inferRecordOrder","intersection","iosCheck","isNode","isNonNullable","isNotFalsy","joinTables","jsonKeyReplacer","jsonReplacer","jsonify","jsonlogify","keyToEmoji","keyToFallback","keyToHue","makeMap","makeSet","mapValues","median","mobileAndTabletCheck","numericalValues","omit","orderKeys","partition","pick","pickBy","randomInt","range","rangeFromTo","reduceGroupBy","reduceSeries","reduceSet","removeBy","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":1298},"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/first-two-chars.ts":{"bytesInOutput":715},"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":784},"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":371},"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":488},"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":4324},"packages/common/util/src/tracer.ts":{"bytesInOutput":1426},"packages/common/util/src/tree.ts":{"bytesInOutput":1193},"packages/common/util/src/types.ts":{"bytesInOutput":909},"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":54091}}}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Returns the first two renderable characters from a string that are separated by non-word characters.
|
|
3
|
+
* Handles Unicode characters correctly.
|
|
4
|
+
*
|
|
5
|
+
* @param {string} label - The input string to process
|
|
6
|
+
* @returns {[string, string]} Array containing the two characters, or empty strings if not found
|
|
7
|
+
*/
|
|
8
|
+
export declare const getFirstTwoRenderableChars: (label: string) => string[];
|
|
9
|
+
//# sourceMappingURL=first-two-chars.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"first-two-chars.d.ts","sourceRoot":"","sources":["../../../src/first-two-chars.ts"],"names":[],"mappings":"AASA;;;;;;GAMG;AACH,eAAO,MAAM,0BAA0B,UAAW,MAAM,aA2BvD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
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"}
|
|
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,mBAAmB,CAAC;AAClC,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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"to-fallback.d.ts","sourceRoot":"","sources":["../../../src/to-fallback.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,eAAO,MAAM,OAAO,UAiJnB,CAAC;AAEF,eAAO,MAAM,KAAK,0HAkBjB,CAAC;
|
|
1
|
+
{"version":3,"file":"to-fallback.d.ts","sourceRoot":"","sources":["../../../src/to-fallback.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,eAAO,MAAM,OAAO,UAiJnB,CAAC;AAEF,eAAO,MAAM,KAAK,0HAkBjB,CAAC;AAGF,eAAO,MAAM,UAAU,QAAS,SAAS,WAA6B,CAAC;AAEvE,eAAO,MAAM,UAAU,QAAS,MAAM,WAA6B,CAAC;AAEpE,eAAO,MAAM,OAAO,SAAU,MAAM,WAA2B,CAAC;AAEhE,eAAO,MAAM,QAAQ,QAAS,SAAS,yHAA2B,CAAC;AAEnE,eAAO,MAAM,QAAQ,QAAS,MAAM,yHAA2B,CAAC;AAEhE,eAAO,MAAM,KAAK,SAAU,MAAM,yHAAyB,CAAC;AAE5D,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,CAAC,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;CAC7B,CAAC;AAEF,eAAO,MAAM,aAAa,QAAS,SAAS,kBAA+B,CAAC;AAG5E,eAAO,MAAM,aAAa,QAAS,MAAM,kBAAkC,CAAC;AAE5E,eAAO,MAAM,UAAU,SAAU,MAAM,KAAG,aAiBzC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dxos/util",
|
|
3
|
-
"version": "0.8.1-
|
|
3
|
+
"version": "0.8.1-staging.31c3ee1",
|
|
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",
|
|
@@ -27,13 +27,13 @@
|
|
|
27
27
|
"src"
|
|
28
28
|
],
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@dxos/debug": "0.8.1-
|
|
31
|
-
"@dxos/invariant": "0.8.1-
|
|
32
|
-
"@dxos/
|
|
33
|
-
"@dxos/
|
|
30
|
+
"@dxos/debug": "0.8.1-staging.31c3ee1",
|
|
31
|
+
"@dxos/invariant": "0.8.1-staging.31c3ee1",
|
|
32
|
+
"@dxos/keys": "0.8.1-staging.31c3ee1",
|
|
33
|
+
"@dxos/node-std": "0.8.1-staging.31c3ee1"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
|
-
"@dxos/crypto": "0.8.1-
|
|
36
|
+
"@dxos/crypto": "0.8.1-staging.31c3ee1"
|
|
37
37
|
},
|
|
38
38
|
"publishConfig": {
|
|
39
39
|
"access": "public"
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2025 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
// Regular expression to match renderable characters
|
|
6
|
+
// Excludes control characters, combining marks, and other non-renderable characters. Also excludes punctuation.
|
|
7
|
+
const renderableCharRegex =
|
|
8
|
+
/^(?![\p{Control}\p{Mark}\p{Separator}\p{Surrogate}\p{Unassigned}\p{P}])[\p{L}\p{N}\p{S}\p{Emoji}]$/u;
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Returns the first two renderable characters from a string that are separated by non-word characters.
|
|
12
|
+
* Handles Unicode characters correctly.
|
|
13
|
+
*
|
|
14
|
+
* @param {string} label - The input string to process
|
|
15
|
+
* @returns {[string, string]} Array containing the two characters, or empty strings if not found
|
|
16
|
+
*/
|
|
17
|
+
export const getFirstTwoRenderableChars = (label: string) => {
|
|
18
|
+
// Convert string to array of Unicode characters
|
|
19
|
+
const characters = Array.from(label);
|
|
20
|
+
|
|
21
|
+
// Keep track of found renderable characters
|
|
22
|
+
const result = ['', ''];
|
|
23
|
+
let foundFirst = false;
|
|
24
|
+
|
|
25
|
+
for (let i = 0; i < characters.length; i++) {
|
|
26
|
+
const char = characters[i];
|
|
27
|
+
|
|
28
|
+
if (renderableCharRegex.test(char)) {
|
|
29
|
+
if (!foundFirst) {
|
|
30
|
+
result[0] = char;
|
|
31
|
+
foundFirst = true;
|
|
32
|
+
} else {
|
|
33
|
+
// Check if there's at least one non-word character between the first and current char
|
|
34
|
+
const textBetween = characters.slice(result[0].length, i).join('');
|
|
35
|
+
if (/[^\p{L}\p{N}_]/u.test(textBetween)) {
|
|
36
|
+
result[1] = char;
|
|
37
|
+
break;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
return result;
|
|
44
|
+
};
|
package/src/index.ts
CHANGED
package/src/range.ts
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
export const range: {
|
|
6
6
|
(n: number): number[];
|
|
7
7
|
<T>(n: number, mapper: RangeMapper<T>): T[];
|
|
8
|
-
} = <T>(n: number, mapper?: RangeMapper<T>) => {
|
|
8
|
+
} = <T>(n: number = 0, mapper?: RangeMapper<T>) => {
|
|
9
9
|
const range = Array.from(Array(n).keys());
|
|
10
10
|
return mapper == null ? range : range.map(mapper);
|
|
11
11
|
};
|
package/src/to-fallback.ts
CHANGED
|
@@ -17,8 +17,8 @@ export const idEmoji = [
|
|
|
17
17
|
// – less likely to evoke negative feelings (no meat, no drugs, no weapons, etc)
|
|
18
18
|
// – less common as a signifier in UX
|
|
19
19
|
// NOTE that this is intentionally an array of strings because of the way emoji graphemes work.
|
|
20
|
-
'👹',
|
|
21
20
|
'👻',
|
|
21
|
+
'👹',
|
|
22
22
|
'👽',
|
|
23
23
|
'🤖',
|
|
24
24
|
'🎃',
|
|
@@ -171,17 +171,18 @@ export const idHue = [
|
|
|
171
171
|
'rose' as const,
|
|
172
172
|
];
|
|
173
173
|
|
|
174
|
-
|
|
174
|
+
// TODO(wittjosiah): Do we need all of these variants?
|
|
175
|
+
export const keyToEmoji = (key: PublicKey) => keyToFallback(key).emoji;
|
|
175
176
|
|
|
176
|
-
export const hexToEmoji = (hex: string) =>
|
|
177
|
+
export const hexToEmoji = (hex: string) => hexToFallback(hex).emoji;
|
|
177
178
|
|
|
178
|
-
export const toEmoji = (hash: number) =>
|
|
179
|
+
export const toEmoji = (hash: number) => toFallback(hash).emoji;
|
|
179
180
|
|
|
180
|
-
export const keyToHue = (key: PublicKey) =>
|
|
181
|
+
export const keyToHue = (key: PublicKey) => keyToFallback(key).hue;
|
|
181
182
|
|
|
182
|
-
export const hexToHue = (hex: string) =>
|
|
183
|
+
export const hexToHue = (hex: string) => hexToFallback(hex).hue;
|
|
183
184
|
|
|
184
|
-
export const toHue = (hash: number) =>
|
|
185
|
+
export const toHue = (hash: number) => toFallback(hash).hue;
|
|
185
186
|
|
|
186
187
|
export type FallbackValue = {
|
|
187
188
|
emoji: string;
|
|
@@ -190,6 +191,24 @@ export type FallbackValue = {
|
|
|
190
191
|
|
|
191
192
|
export const keyToFallback = (key: PublicKey) => hexToFallback(key.toHex());
|
|
192
193
|
|
|
194
|
+
// TODO(wittjosiah): Support non-hex strings (e.g. DIDs, UUIDs, etc.)
|
|
193
195
|
export const hexToFallback = (hex: string) => toFallback(parseInt(hex, 16));
|
|
194
196
|
|
|
195
|
-
export const toFallback = (hash: number): FallbackValue =>
|
|
197
|
+
export const toFallback = (hash: number): FallbackValue => {
|
|
198
|
+
// Calculate total possible combinations of emoji and hue pairs
|
|
199
|
+
const totalCombinations = idEmoji.length * idHue.length;
|
|
200
|
+
|
|
201
|
+
// Get a deterministic index within the range of all possible combinations
|
|
202
|
+
const combinationIndex = hash % totalCombinations;
|
|
203
|
+
|
|
204
|
+
// Calculate which emoji to use based on the combination index
|
|
205
|
+
const emojiIndex = Math.floor(combinationIndex / idHue.length);
|
|
206
|
+
|
|
207
|
+
// Calculate which hue to use based on the combination index
|
|
208
|
+
const hueIndex = combinationIndex % idHue.length;
|
|
209
|
+
|
|
210
|
+
return {
|
|
211
|
+
emoji: idEmoji[emojiIndex],
|
|
212
|
+
hue: idHue[hueIndex],
|
|
213
|
+
};
|
|
214
|
+
};
|