@soundscript/soundscript 0.1.2 → 0.1.3
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/README.md +1 -1
- package/async.d.ts +3 -3
- package/async.js +2 -2
- package/async.js.map +1 -1
- package/codec.d.ts +3 -2
- package/codec.js +2 -2
- package/codec.js.map +1 -1
- package/compare.js +5 -10
- package/compare.js.map +1 -1
- package/decode.d.ts +6 -4
- package/decode.js +5 -5
- package/decode.js.map +1 -1
- package/derive.d.ts +6 -0
- package/derive.js +8 -0
- package/derive.js.map +1 -0
- package/encode.d.ts +11 -9
- package/encode.js +5 -5
- package/encode.js.map +1 -1
- package/experimental/thunk.js.map +1 -0
- package/fetch.d.ts +1 -1
- package/hash.js +9 -14
- package/hash.js.map +1 -1
- package/json.d.ts +29 -2
- package/json.js +124 -1
- package/json.js.map +1 -1
- package/numerics.d.ts +523 -0
- package/numerics.js +1357 -0
- package/numerics.js.map +1 -0
- package/package.json +94 -35
- package/result.d.ts +21 -5
- package/result.js +55 -19
- package/result.js.map +1 -1
- package/soundscript/async.sts +7 -7
- package/soundscript/codec.sts +8 -7
- package/soundscript/compare.sts +5 -13
- package/soundscript/decode.sts +15 -13
- package/soundscript/derive.sts +7 -0
- package/soundscript/encode.sts +18 -16
- package/soundscript/hash.sts +9 -17
- package/soundscript/json.sts +209 -3
- package/soundscript/numerics.sts +1937 -0
- package/soundscript/result.sts +93 -24
- package/soundscript/typeclasses.sts +22 -16
- package/soundscript/value.sts +133 -0
- package/typeclasses.d.ts +2 -2
- package/typeclasses.js +10 -9
- package/typeclasses.js.map +1 -1
- package/value.d.ts +9 -0
- package/value.js +105 -0
- package/value.js.map +1 -0
- package/experimental/component.d.ts +0 -40
- package/experimental/component.js +0 -46
- package/experimental/component.js.map +0 -1
- package/soundscript/experimental/component.sts +0 -69
- package/thunk.js.map +0 -1
- /package/{thunk.d.ts → experimental/thunk.d.ts} +0 -0
- /package/{thunk.js → experimental/thunk.js} +0 -0
- /package/soundscript/{thunk.sts → experimental/thunk.sts} +0 -0
package/numerics.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"numerics.js","sourceRoot":"","sources":["./soundscript/numerics.sts"],"names":[],"mappings":"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","sourcesContent":["import { fromCompare, type Eq, type Order } from './compare.js';\nimport { Failure } from './failures.js';\nimport { fromHashEq, stringHash, type HashEq } from './hash.js';\nimport { err, ok, type Result } from './result.js';\n\ntype MachineNumericKind =\n | 'f64'\n | 'f32'\n | 'i8'\n | 'i16'\n | 'i32'\n | 'i64'\n | 'u8'\n | 'u16'\n | 'u32'\n | 'u64';\n\ntype HostKind =\n | 'bigint'\n | 'boolean'\n | 'function'\n | 'number'\n | 'object'\n | 'string'\n | 'symbol'\n | 'undefined';\n\ntype NumericLikeInput = Numeric | number | bigint;\ntype NumericPayload = number | bigint;\ntype IntegerLeafKind = 'i8' | 'i16' | 'i32' | 'i64' | 'u8' | 'u16' | 'u32' | 'u64';\ntype FloatLeafKind = 'f32' | 'f64';\ntype NumberLeafKind = Exclude<MachineNumericKind, 'i64' | 'u64'>;\ntype BigIntLeafKind = Extract<MachineNumericKind, 'i64' | 'u64'>;\ntype BinaryNumericOperator =\n | '+'\n | '-'\n | '*'\n | '/'\n | '%'\n | '**'\n | '&'\n | '|'\n | '^'\n | '<<'\n | '>>'\n | '>>>';\ntype UnaryNumericOperator = '+' | '-' | '~';\n\nexport interface MachineNumericValue<Leaf extends MachineNumericKind> {\n readonly __soundscript_numeric_kind: Leaf;\n toJSON(): { $numeric: Leaf; value: string };\n toString(): string;\n valueOf(): never;\n [Symbol.toPrimitive](hint: string): string;\n}\n\nexport type f64 = MachineNumericValue<'f64'>;\nexport type f32 = MachineNumericValue<'f32'>;\nexport type i8 = MachineNumericValue<'i8'>;\nexport type i16 = MachineNumericValue<'i16'>;\nexport type i32 = MachineNumericValue<'i32'>;\nexport type i64 = MachineNumericValue<'i64'>;\nexport type u8 = MachineNumericValue<'u8'>;\nexport type u16 = MachineNumericValue<'u16'>;\nexport type u32 = MachineNumericValue<'u32'>;\nexport type u64 = MachineNumericValue<'u64'>;\n\nexport type Numeric = f64 | f32 | i8 | i16 | i32 | i64 | u8 | u16 | u32 | u64;\nexport type Int = i8 | i16 | i32 | i64 | u8 | u16 | u32 | u64;\nexport type Float = f32 | f64;\ntype NumericByKind<Leaf extends MachineNumericKind> = Extract<\n Numeric,\n MachineNumericValue<Leaf>\n>;\n\nexport type MachineNumericOrHostKind = MachineNumericKind | HostKind;\n\nexport interface NumericFactory<T extends Numeric> {\n (value: NumericLikeInput): T;\n readonly MAX_VALUE: T;\n readonly MIN_VALUE: T;\n compare(left: T, right: T): number;\n format(value: T): string;\n parse(text: string): T;\n tryParse(text: string): T | undefined;\n}\n\nexport interface FloatFactory<T extends Float> extends NumericFactory<T> {\n isFinite(value: T): boolean;\n isNaN(value: T): boolean;\n}\n\nexport interface IntegerFactory<T extends Int> extends NumericFactory<T> {\n checkedAdd(left: T, right: T): Result<T, NumericOverflowFailure>;\n checkedSub(left: T, right: T): Result<T, NumericOverflowFailure>;\n checkedMul(left: T, right: T): Result<T, NumericOverflowFailure>;\n checkedDiv(left: T, right: T): Result<T, NumericOverflowFailure | NumericDivisionByZeroFailure>;\n checkedRem(left: T, right: T): Result<T, NumericDivisionByZeroFailure>;\n checkedNeg(value: T): Result<T, NumericOverflowFailure>;\n}\n\nexport class NumericOverflowFailure extends Failure {\n readonly leaf: IntegerLeafKind;\n readonly operation: 'add' | 'sub' | 'mul' | 'div' | 'rem' | 'neg';\n\n constructor(\n leaf: IntegerLeafKind,\n operation: 'add' | 'sub' | 'mul' | 'div' | 'rem' | 'neg',\n ) {\n super(`Checked ${operation} overflowed for ${leaf}.`);\n this.leaf = leaf;\n this.operation = operation;\n }\n}\n\nexport class NumericDivisionByZeroFailure extends Failure {\n readonly leaf: IntegerLeafKind;\n readonly operation: 'div' | 'rem';\n\n constructor(leaf: IntegerLeafKind, operation: 'div' | 'rem') {\n super(`Checked ${operation} divided ${leaf} by zero.`);\n this.leaf = leaf;\n this.operation = operation;\n }\n}\n\nconst MACHINE_KIND_PROPERTY = '__soundscript_numeric_kind';\n\nclass MachineNumericBox<Leaf extends MachineNumericKind>\n implements MachineNumericValue<Leaf> {\n readonly __soundscript_numeric_kind: Leaf;\n readonly #key: string;\n readonly #payload: NumericPayload;\n\n constructor(kind: Leaf, payload: NumericPayload, key: string) {\n this.__soundscript_numeric_kind = kind;\n this.#key = key;\n this.#payload = payload;\n Object.freeze(this);\n }\n\n payload(): NumericPayload {\n return this.#payload;\n }\n\n toJSON(): { $numeric: Leaf; value: string } {\n return {\n $numeric: this.__soundscript_numeric_kind,\n value: formatPayload(this.#payload),\n };\n }\n\n toString(): string {\n return this.#key;\n }\n\n valueOf(): never {\n throw new TypeError('Machine numerics do not support host numeric coercion.');\n }\n\n [Symbol.toPrimitive](hint: string): string {\n if (hint === 'string') {\n return this.#key;\n }\n throw new TypeError('Machine numerics do not support host numeric coercion.');\n }\n}\n\nconst MACHINE_NUMERIC_KINDS = new Set<MachineNumericKind>([\n 'f64',\n 'f32',\n 'i8',\n 'i16',\n 'i32',\n 'i64',\n 'u8',\n 'u16',\n 'u32',\n 'u64',\n]);\nconst INTEGER_LEAF_KINDS = new Set<IntegerLeafKind>([\n 'i8',\n 'i16',\n 'i32',\n 'i64',\n 'u8',\n 'u16',\n 'u32',\n 'u64',\n]);\nconst FLOAT_LEAF_KINDS = new Set<FloatLeafKind>(['f32', 'f64']);\nconst BIGINT_LEAF_KINDS = new Set<BigIntLeafKind>(['i64', 'u64']);\nconst NUMBER_LEAF_KINDS = new Set<NumberLeafKind>([\n 'f64',\n 'f32',\n 'i8',\n 'i16',\n 'i32',\n 'u8',\n 'u16',\n 'u32',\n]);\n\nconst MACHINE_NUMERIC_CACHES: Record<MachineNumericKind, Map<string, Numeric>> = {\n f64: new Map(),\n f32: new Map(),\n i8: new Map(),\n i16: new Map(),\n i32: new Map(),\n i64: new Map(),\n u8: new Map(),\n u16: new Map(),\n u32: new Map(),\n u64: new Map(),\n};\n\nfunction isMachineNumericBox(\n value: unknown,\n): value is MachineNumericBox<MachineNumericKind> {\n return value instanceof MachineNumericBox;\n}\n\nfunction assertMachineNumeric(\n value: unknown,\n): MachineNumericBox<MachineNumericKind> {\n if (!isMachineNumericBox(value)) {\n throw new TypeError('Expected a machine numeric value.');\n }\n return value;\n}\n\nfunction formatNumberPayload(value: number): string {\n if (Number.isNaN(value)) {\n return 'NaN';\n }\n if (value === Infinity) {\n return 'Infinity';\n }\n if (value === -Infinity) {\n return '-Infinity';\n }\n return String(value);\n}\n\nfunction formatPayload(value: NumericPayload): string {\n return typeof value === 'bigint' ? value.toString() : formatNumberPayload(value);\n}\n\nfunction keyForLeaf(kind: MachineNumericKind, value: NumericPayload): string {\n return `${kind}:${formatPayload(value)}`;\n}\n\nfunction canonicalizeFloat(value: number): number {\n if (Number.isNaN(value)) {\n return Number.NaN;\n }\n if (Object.is(value, -0)) {\n return 0;\n }\n return value;\n}\n\nfunction truncatedNumber(value: number): number {\n return Number.isFinite(value) ? Math.trunc(value) : 0;\n}\n\nfunction payloadFromInput(value: NumericLikeInput): NumericPayload {\n return isMachineNumericBox(value) ? value.payload() : value as number | bigint;\n}\n\nfunction numberFromInput(value: NumericLikeInput): number {\n const payload = payloadFromInput(value);\n return typeof payload === 'bigint' ? Number(payload) : payload;\n}\n\nfunction bigintFromInput(value: NumericLikeInput): bigint {\n const payload = payloadFromInput(value);\n if (typeof payload === 'bigint') {\n return payload;\n }\n return BigInt(truncatedNumber(payload));\n}\n\nfunction exactIntegralBigIntFromInput(value: unknown): bigint | undefined {\n if (isMachineNumericBox(value)) {\n const payload = value.payload();\n if (typeof payload === 'bigint') {\n return payload;\n }\n if (Number.isInteger(payload)) {\n return BigInt(payload);\n }\n return undefined;\n }\n\n if (typeof value === 'bigint') {\n return value;\n }\n\n if (typeof value === 'number' && Number.isInteger(value)) {\n return BigInt(value);\n }\n\n return undefined;\n}\n\nfunction canonicalizePayload(\n kind: MachineNumericKind,\n value: NumericLikeInput,\n): NumericPayload {\n switch (kind) {\n case 'f64':\n return canonicalizeFloat(numberFromInput(value));\n case 'f32':\n return canonicalizeFloat(Math.fround(numberFromInput(value)));\n case 'i8':\n return (truncatedNumber(numberFromInput(value)) << 24) >> 24;\n case 'i16':\n return (truncatedNumber(numberFromInput(value)) << 16) >> 16;\n case 'i32':\n return truncatedNumber(numberFromInput(value)) | 0;\n case 'i64':\n return BigInt.asIntN(64, bigintFromInput(value));\n case 'u8':\n return truncatedNumber(numberFromInput(value)) & 0xff;\n case 'u16':\n return truncatedNumber(numberFromInput(value)) & 0xffff;\n case 'u32':\n return truncatedNumber(numberFromInput(value)) >>> 0;\n case 'u64':\n return BigInt.asUintN(64, bigintFromInput(value));\n }\n}\n\nfunction internMachineNumeric<Leaf extends MachineNumericKind>(\n kind: Leaf,\n value: NumericLikeInput,\n): MachineNumericValue<Leaf> {\n const payload = canonicalizePayload(kind, value);\n const key = keyForLeaf(kind, payload);\n const existing = MACHINE_NUMERIC_CACHES[kind].get(key);\n if (existing) {\n return existing as MachineNumericValue<Leaf>;\n }\n\n const created = new MachineNumericBox(kind, payload, key) as Numeric;\n MACHINE_NUMERIC_CACHES[kind].set(key, created);\n return created as MachineNumericValue<Leaf>;\n}\n\nfunction numberLeafCompare<Leaf extends NumberLeafKind>(\n left: MachineNumericValue<Leaf>,\n right: MachineNumericValue<Leaf>,\n): number {\n const leftValue = (left as MachineNumericBox<Leaf>).payload() as number;\n const rightValue = (right as MachineNumericBox<Leaf>).payload() as number;\n\n const leftNaN = Number.isNaN(leftValue);\n const rightNaN = Number.isNaN(rightValue);\n if (leftNaN || rightNaN) {\n return leftNaN === rightNaN ? 0 : (leftNaN ? 1 : -1);\n }\n if (leftValue === rightValue) {\n return 0;\n }\n if (leftValue === -Infinity) {\n return -1;\n }\n if (rightValue === -Infinity) {\n return 1;\n }\n if (leftValue === Infinity) {\n return 1;\n }\n if (rightValue === Infinity) {\n return -1;\n }\n return leftValue < rightValue ? -1 : 1;\n}\n\nfunction bigintLeafCompare<Leaf extends BigIntLeafKind>(\n left: MachineNumericValue<Leaf>,\n right: MachineNumericValue<Leaf>,\n): number {\n const leftValue = (left as MachineNumericBox<Leaf>).payload() as bigint;\n const rightValue = (right as MachineNumericBox<Leaf>).payload() as bigint;\n if (leftValue === rightValue) {\n return 0;\n }\n return leftValue < rightValue ? -1 : 1;\n}\n\nfunction parseNumberText(text: string): number | undefined {\n const value = Number(text);\n return Number.isNaN(value) && text.trim() !== 'NaN' ? undefined : value;\n}\n\nfunction parseBigIntText(text: string): bigint | undefined {\n try {\n return BigInt(text);\n } catch {\n return undefined;\n }\n}\n\nfunction createIntegerFactory<Leaf extends IntegerLeafKind>(\n kind: Leaf,\n minValue: NumericLikeInput,\n maxValue: NumericLikeInput,\n): IntegerFactory<NumericByKind<Leaf>> {\n const factory = ((value: NumericLikeInput) =>\n internMachineNumeric(kind, value)) as IntegerFactory<NumericByKind<Leaf>>;\n Object.assign(factory, {\n MAX_VALUE: internMachineNumeric(kind, maxValue),\n MIN_VALUE: internMachineNumeric(kind, minValue),\n compare(left: NumericByKind<Leaf>, right: NumericByKind<Leaf>): number {\n return BIGINT_LEAF_KINDS.has(kind as BigIntLeafKind)\n ? bigintLeafCompare(left as MachineNumericValue<BigIntLeafKind>, right as MachineNumericValue<BigIntLeafKind>)\n : numberLeafCompare(left as MachineNumericValue<NumberLeafKind>, right as MachineNumericValue<NumberLeafKind>);\n },\n format(value: NumericByKind<Leaf>): string {\n return formatPayload((value as MachineNumericBox<Leaf>).payload());\n },\n parse(text: string): NumericByKind<Leaf> {\n const parsed = BIGINT_LEAF_KINDS.has(kind as BigIntLeafKind)\n ? parseBigIntText(text)\n : parseNumberText(text);\n if (parsed === undefined) {\n throw new TypeError(`Could not parse ${kind} from ${JSON.stringify(text)}.`);\n }\n return internMachineNumeric(kind, parsed as NumericLikeInput) as NumericByKind<Leaf>;\n },\n tryParse(text: string): NumericByKind<Leaf> | undefined {\n const parsed = BIGINT_LEAF_KINDS.has(kind as BigIntLeafKind)\n ? parseBigIntText(text)\n : parseNumberText(text);\n return parsed === undefined\n ? undefined\n : internMachineNumeric(kind, parsed as NumericLikeInput) as NumericByKind<Leaf>;\n },\n checkedAdd(\n left: NumericByKind<Leaf>,\n right: NumericByKind<Leaf>,\n ): Result<NumericByKind<Leaf>, NumericOverflowFailure> {\n return checkedIntegerBinary(kind, 'add', left, right);\n },\n checkedSub(\n left: NumericByKind<Leaf>,\n right: NumericByKind<Leaf>,\n ): Result<NumericByKind<Leaf>, NumericOverflowFailure> {\n return checkedIntegerBinary(kind, 'sub', left, right);\n },\n checkedMul(\n left: NumericByKind<Leaf>,\n right: NumericByKind<Leaf>,\n ): Result<NumericByKind<Leaf>, NumericOverflowFailure> {\n return checkedIntegerBinary(kind, 'mul', left, right);\n },\n checkedDiv(\n left: NumericByKind<Leaf>,\n right: NumericByKind<Leaf>,\n ): Result<NumericByKind<Leaf>, NumericOverflowFailure | NumericDivisionByZeroFailure> {\n return checkedIntegerBinary(kind, 'div', left, right);\n },\n checkedRem(\n left: NumericByKind<Leaf>,\n right: NumericByKind<Leaf>,\n ): Result<NumericByKind<Leaf>, NumericDivisionByZeroFailure> {\n return checkedIntegerRemainder(kind, left, right);\n },\n checkedNeg(value: NumericByKind<Leaf>): Result<NumericByKind<Leaf>, NumericOverflowFailure> {\n return checkedIntegerNegation(kind, value);\n },\n });\n return factory;\n}\n\nfunction createFloatFactory<Leaf extends FloatLeafKind>(\n kind: Leaf,\n minValue: number,\n maxValue: number,\n): FloatFactory<NumericByKind<Leaf>> {\n const factory = ((value: NumericLikeInput) =>\n internMachineNumeric(kind, value)) as FloatFactory<NumericByKind<Leaf>>;\n Object.assign(factory, {\n MAX_VALUE: internMachineNumeric(kind, maxValue),\n MIN_VALUE: internMachineNumeric(kind, minValue),\n compare(left: NumericByKind<Leaf>, right: NumericByKind<Leaf>): number {\n return numberLeafCompare(\n left as MachineNumericValue<NumberLeafKind>,\n right as MachineNumericValue<NumberLeafKind>,\n );\n },\n format(value: NumericByKind<Leaf>): string {\n return formatPayload((value as MachineNumericBox<Leaf>).payload());\n },\n isFinite(value: NumericByKind<Leaf>): boolean {\n return Number.isFinite((value as MachineNumericBox<Leaf>).payload() as number);\n },\n isNaN(value: NumericByKind<Leaf>): boolean {\n return Number.isNaN((value as MachineNumericBox<Leaf>).payload() as number);\n },\n parse(text: string): NumericByKind<Leaf> {\n const parsed = parseNumberText(text);\n if (parsed === undefined) {\n throw new TypeError(`Could not parse ${kind} from ${JSON.stringify(text)}.`);\n }\n return internMachineNumeric(kind, parsed) as NumericByKind<Leaf>;\n },\n tryParse(text: string): NumericByKind<Leaf> | undefined {\n const parsed = parseNumberText(text);\n return parsed === undefined\n ? undefined\n : internMachineNumeric(kind, parsed) as NumericByKind<Leaf>;\n },\n });\n return factory;\n}\n\nfunction exactKindGuard<Leaf extends MachineNumericKind>(kind: Leaf) {\n return (value: unknown): value is MachineNumericValue<Leaf> =>\n isMachineNumericBox(value) && value.__soundscript_numeric_kind === kind;\n}\n\nfunction fitsIntegerKind(kind: IntegerLeafKind, value: unknown): boolean {\n const integral = exactIntegralBigIntFromInput(value);\n if (integral === undefined) {\n return false;\n }\n\n switch (kind) {\n case 'i8':\n return integral >= -128n && integral <= 127n;\n case 'i16':\n return integral >= -32768n && integral <= 32767n;\n case 'i32':\n return integral >= -2147483648n && integral <= 2147483647n;\n case 'i64':\n return BigInt.asIntN(64, integral) === integral;\n case 'u8':\n return integral >= 0n && integral <= 255n;\n case 'u16':\n return integral >= 0n && integral <= 65535n;\n case 'u32':\n return integral >= 0n && integral <= 4294967295n;\n case 'u64':\n return integral >= 0n && BigInt.asUintN(64, integral) === integral;\n }\n}\n\nfunction fitsFloat32(value: unknown): boolean {\n const payload = isMachineNumericBox(value) ? value.payload() : value;\n return typeof payload === 'number' && Number.isFinite(payload) && Math.fround(payload) === payload;\n}\n\nfunction assertIntegerLeafValue<Leaf extends IntegerLeafKind>(\n kind: Leaf,\n value: NumericByKind<Leaf>,\n): MachineNumericBox<Leaf> {\n const numeric = assertMachineNumeric(value);\n if (numeric.__soundscript_numeric_kind !== kind) {\n throw new TypeError(`Expected ${kind} machine numeric value.`);\n }\n return numeric as MachineNumericBox<Leaf>;\n}\n\nfunction integerPayloadToBigInt<Leaf extends IntegerLeafKind>(numeric: MachineNumericBox<Leaf>): bigint {\n const payload = numeric.payload();\n return typeof payload === 'bigint' ? payload : BigInt(payload);\n}\n\nfunction checkedIntegerResult<Leaf extends IntegerLeafKind>(\n kind: Leaf,\n operation: 'add' | 'sub' | 'mul' | 'div' | 'neg',\n value: bigint,\n): Result<NumericByKind<Leaf>, NumericOverflowFailure> {\n if (!fitsIntegerKind(kind, value)) {\n return err(new NumericOverflowFailure(kind, operation));\n }\n return ok(internMachineNumeric(kind, value) as NumericByKind<Leaf>);\n}\n\nfunction checkedIntegerBinary<Leaf extends IntegerLeafKind>(\n kind: Leaf,\n operation: 'add' | 'sub' | 'mul' | 'div',\n left: NumericByKind<Leaf>,\n right: NumericByKind<Leaf>,\n): Result<\n NumericByKind<Leaf>,\n NumericOverflowFailure | NumericDivisionByZeroFailure\n> {\n const leftValue = integerPayloadToBigInt(assertIntegerLeafValue(kind, left));\n const rightValue = integerPayloadToBigInt(assertIntegerLeafValue(kind, right));\n\n if (operation === 'div' && rightValue === 0n) {\n return err(new NumericDivisionByZeroFailure(kind, operation));\n }\n\n switch (operation) {\n case 'add':\n return checkedIntegerResult(kind, operation, leftValue + rightValue);\n case 'sub':\n return checkedIntegerResult(kind, operation, leftValue - rightValue);\n case 'mul':\n return checkedIntegerResult(kind, operation, leftValue * rightValue);\n case 'div':\n return checkedIntegerResult(kind, operation, leftValue / rightValue);\n }\n}\n\nfunction checkedIntegerRemainder<Leaf extends IntegerLeafKind>(\n kind: Leaf,\n left: NumericByKind<Leaf>,\n right: NumericByKind<Leaf>,\n): Result<NumericByKind<Leaf>, NumericDivisionByZeroFailure> {\n const leftValue = integerPayloadToBigInt(assertIntegerLeafValue(kind, left));\n const rightValue = integerPayloadToBigInt(assertIntegerLeafValue(kind, right));\n\n if (rightValue === 0n) {\n return err(new NumericDivisionByZeroFailure(kind, 'rem'));\n }\n return ok(internMachineNumeric(kind, leftValue % rightValue) as NumericByKind<Leaf>);\n}\n\nfunction checkedIntegerNegation<Leaf extends IntegerLeafKind>(\n kind: Leaf,\n value: NumericByKind<Leaf>,\n): Result<NumericByKind<Leaf>, NumericOverflowFailure> {\n const payload = integerPayloadToBigInt(assertIntegerLeafValue(kind, value));\n return checkedIntegerResult(kind, 'neg', -payload);\n}\n\nfunction exactShiftCount(value: NumericLikeInput): bigint {\n return BigInt.asUintN(6, bigintFromInput(value));\n}\n\nfunction applyBigIntBinaryOperator(\n kind: BigIntLeafKind,\n operator: BinaryNumericOperator,\n left: bigint,\n right: bigint,\n): bigint {\n switch (operator) {\n case '+':\n return left + right;\n case '-':\n return left - right;\n case '*':\n return left * right;\n case '/':\n return left / right;\n case '%':\n return left % right;\n case '**':\n return left ** right;\n case '&':\n return left & right;\n case '|':\n return left | right;\n case '^':\n return left ^ right;\n case '<<':\n return left << exactShiftCount(right);\n case '>>':\n return left >> exactShiftCount(right);\n case '>>>': {\n const shifted = BigInt.asUintN(64, left) >> exactShiftCount(right);\n return kind === 'u64' ? shifted : BigInt.asIntN(64, shifted);\n }\n }\n}\n\nfunction applyNumberBinaryOperator(\n operator: BinaryNumericOperator,\n left: number,\n right: number,\n): number {\n switch (operator) {\n case '+':\n return left + right;\n case '-':\n return left - right;\n case '*':\n return left * right;\n case '/':\n return left / right;\n case '%':\n return left % right;\n case '**':\n return left ** right;\n case '&':\n return left & right;\n case '|':\n return left | right;\n case '^':\n return left ^ right;\n case '<<':\n return left << right;\n case '>>':\n return left >> right;\n case '>>>':\n return left >>> right;\n }\n}\n\nfunction applyNumberUnaryOperator(operator: UnaryNumericOperator, value: number): number {\n switch (operator) {\n case '+':\n return +value;\n case '-':\n return -value;\n case '~':\n return ~value;\n }\n}\n\nfunction applyBigIntUnaryOperator(operator: Exclude<UnaryNumericOperator, '+'>, value: bigint): bigint {\n switch (operator) {\n case '-':\n return -value;\n case '~':\n return ~value;\n }\n}\n\nexport const F64 = createFloatFactory('f64', -Number.MAX_VALUE, Number.MAX_VALUE);\nexport const F32 = createFloatFactory('f32', -3.4028234663852886e38, 3.4028234663852886e38);\nexport const I8 = createIntegerFactory('i8', -128, 127);\nexport const I16 = createIntegerFactory('i16', -32768, 32767);\nexport const I32 = createIntegerFactory('i32', -2147483648, 2147483647);\nexport const I64 = createIntegerFactory('i64', -9223372036854775808n, 9223372036854775807n);\nexport const U8 = createIntegerFactory('u8', 0, 255);\nexport const U16 = createIntegerFactory('u16', 0, 65535);\nexport const U32 = createIntegerFactory('u32', 0, 4294967295);\nexport const U64 = createIntegerFactory('u64', 0n, 18446744073709551615n);\n\nconst FACTORY_BY_KIND: Record<MachineNumericKind, NumericFactory<Numeric>> = {\n f64: F64 as NumericFactory<Numeric>,\n f32: F32 as NumericFactory<Numeric>,\n i8: I8 as NumericFactory<Numeric>,\n i16: I16 as NumericFactory<Numeric>,\n i32: I32 as NumericFactory<Numeric>,\n i64: I64 as NumericFactory<Numeric>,\n u8: U8 as NumericFactory<Numeric>,\n u16: U16 as NumericFactory<Numeric>,\n u32: U32 as NumericFactory<Numeric>,\n u64: U64 as NumericFactory<Numeric>,\n};\n\nexport function kindOf(value: unknown): MachineNumericOrHostKind {\n if (isMachineNumericBox(value)) {\n return value.__soundscript_numeric_kind;\n }\n return (typeof value) as HostKind;\n}\n\nexport function isNumeric(value: unknown): value is Numeric {\n return isMachineNumericBox(value);\n}\n\nexport function isInt(value: unknown): value is Int {\n return isMachineNumericBox(value) &&\n INTEGER_LEAF_KINDS.has(value.__soundscript_numeric_kind as IntegerLeafKind);\n}\n\nexport function isFloat(value: unknown): value is Float {\n return isMachineNumericBox(value) &&\n FLOAT_LEAF_KINDS.has(value.__soundscript_numeric_kind as FloatLeafKind);\n}\n\nexport const isF64 = exactKindGuard('f64');\nexport const isF32 = exactKindGuard('f32');\nexport const isI8 = exactKindGuard('i8');\nexport const isI16 = exactKindGuard('i16');\nexport const isI32 = exactKindGuard('i32');\nexport const isI64 = exactKindGuard('i64');\nexport const isU8 = exactKindGuard('u8');\nexport const isU16 = exactKindGuard('u16');\nexport const isU32 = exactKindGuard('u32');\nexport const isU64 = exactKindGuard('u64');\n\nexport function fitsF32(value: unknown): boolean {\n return fitsFloat32(value);\n}\n\nexport function fitsI8(value: unknown): boolean {\n return fitsIntegerKind('i8', value);\n}\n\nexport function fitsI16(value: unknown): boolean {\n return fitsIntegerKind('i16', value);\n}\n\nexport function fitsI32(value: unknown): boolean {\n return fitsIntegerKind('i32', value);\n}\n\nexport function fitsI64(value: unknown): boolean {\n return fitsIntegerKind('i64', value);\n}\n\nexport function fitsU8(value: unknown): boolean {\n return fitsIntegerKind('u8', value);\n}\n\nexport function fitsU16(value: unknown): boolean {\n return fitsIntegerKind('u16', value);\n}\n\nexport function fitsU32(value: unknown): boolean {\n return fitsIntegerKind('u32', value);\n}\n\nexport function fitsU64(value: unknown): boolean {\n return fitsIntegerKind('u64', value);\n}\n\nexport function toHostNumber(value: Numeric): number {\n const payload = assertMachineNumeric(value).payload();\n return typeof payload === 'bigint' ? Number(payload) : payload;\n}\n\nexport function toHostBigInt(value: Int): bigint {\n const payload = assertMachineNumeric(value).payload();\n return typeof payload === 'bigint' ? payload : BigInt(payload);\n}\n\nexport function format(value: Numeric | number | bigint): string {\n return isMachineNumericBox(value)\n ? formatPayload(value.payload())\n : formatPayload(value as number | bigint);\n}\n\nexport function keyOf(value: Numeric): string {\n return assertMachineNumeric(value).toString();\n}\n\nfunction readNumericFromDataView<Leaf extends MachineNumericKind>(\n kind: Leaf,\n view: DataView,\n byteOffset: number,\n littleEndian?: boolean,\n): NumericByKind<Leaf> {\n switch (kind) {\n case 'f64':\n return F64(view.getFloat64(byteOffset, littleEndian)) as NumericByKind<Leaf>;\n case 'f32':\n return F32(view.getFloat32(byteOffset, littleEndian)) as NumericByKind<Leaf>;\n case 'i8':\n return I8(view.getInt8(byteOffset)) as NumericByKind<Leaf>;\n case 'i16':\n return I16(view.getInt16(byteOffset, littleEndian)) as NumericByKind<Leaf>;\n case 'i32':\n return I32(view.getInt32(byteOffset, littleEndian)) as NumericByKind<Leaf>;\n case 'i64':\n return I64(view.getBigInt64(byteOffset, littleEndian)) as NumericByKind<Leaf>;\n case 'u8':\n return U8(view.getUint8(byteOffset)) as NumericByKind<Leaf>;\n case 'u16':\n return U16(view.getUint16(byteOffset, littleEndian)) as NumericByKind<Leaf>;\n case 'u32':\n return U32(view.getUint32(byteOffset, littleEndian)) as NumericByKind<Leaf>;\n case 'u64':\n return U64(view.getBigUint64(byteOffset, littleEndian)) as NumericByKind<Leaf>;\n }\n}\n\nfunction writeNumericToDataView<Leaf extends MachineNumericKind>(\n kind: Leaf,\n view: DataView,\n byteOffset: number,\n value: NumericLikeInput,\n littleEndian?: boolean,\n): void {\n const numeric = FACTORY_BY_KIND[kind](value) as NumericByKind<Leaf>;\n const payload = assertMachineNumeric(numeric).payload();\n\n switch (kind) {\n case 'f64':\n view.setFloat64(byteOffset, payload as number, littleEndian);\n return;\n case 'f32':\n view.setFloat32(byteOffset, payload as number, littleEndian);\n return;\n case 'i8':\n view.setInt8(byteOffset, payload as number);\n return;\n case 'i16':\n view.setInt16(byteOffset, payload as number, littleEndian);\n return;\n case 'i32':\n view.setInt32(byteOffset, payload as number, littleEndian);\n return;\n case 'i64':\n view.setBigInt64(byteOffset, payload as bigint, littleEndian);\n return;\n case 'u8':\n view.setUint8(byteOffset, payload as number);\n return;\n case 'u16':\n view.setUint16(byteOffset, payload as number, littleEndian);\n return;\n case 'u32':\n view.setUint32(byteOffset, payload as number, littleEndian);\n return;\n case 'u64':\n view.setBigUint64(byteOffset, payload as bigint, littleEndian);\n return;\n }\n}\n\nexport function readF64(view: DataView, byteOffset: number, littleEndian?: boolean): f64 {\n return readNumericFromDataView('f64', view, byteOffset, littleEndian);\n}\n\nexport function readF32(view: DataView, byteOffset: number, littleEndian?: boolean): f32 {\n return readNumericFromDataView('f32', view, byteOffset, littleEndian);\n}\n\nexport function readI8(view: DataView, byteOffset: number): i8 {\n return readNumericFromDataView('i8', view, byteOffset);\n}\n\nexport function readI16(view: DataView, byteOffset: number, littleEndian?: boolean): i16 {\n return readNumericFromDataView('i16', view, byteOffset, littleEndian);\n}\n\nexport function readI32(view: DataView, byteOffset: number, littleEndian?: boolean): i32 {\n return readNumericFromDataView('i32', view, byteOffset, littleEndian);\n}\n\nexport function readI64(view: DataView, byteOffset: number, littleEndian?: boolean): i64 {\n return readNumericFromDataView('i64', view, byteOffset, littleEndian);\n}\n\nexport function readU8(view: DataView, byteOffset: number): u8 {\n return readNumericFromDataView('u8', view, byteOffset);\n}\n\nexport function readU16(view: DataView, byteOffset: number, littleEndian?: boolean): u16 {\n return readNumericFromDataView('u16', view, byteOffset, littleEndian);\n}\n\nexport function readU32(view: DataView, byteOffset: number, littleEndian?: boolean): u32 {\n return readNumericFromDataView('u32', view, byteOffset, littleEndian);\n}\n\nexport function readU64(view: DataView, byteOffset: number, littleEndian?: boolean): u64 {\n return readNumericFromDataView('u64', view, byteOffset, littleEndian);\n}\n\nexport function writeF64(\n view: DataView,\n byteOffset: number,\n value: NumericLikeInput,\n littleEndian?: boolean,\n): void {\n writeNumericToDataView('f64', view, byteOffset, value, littleEndian);\n}\n\nexport function writeF32(\n view: DataView,\n byteOffset: number,\n value: NumericLikeInput,\n littleEndian?: boolean,\n): void {\n writeNumericToDataView('f32', view, byteOffset, value, littleEndian);\n}\n\nexport function writeI8(view: DataView, byteOffset: number, value: NumericLikeInput): void {\n writeNumericToDataView('i8', view, byteOffset, value);\n}\n\nexport function writeI16(\n view: DataView,\n byteOffset: number,\n value: NumericLikeInput,\n littleEndian?: boolean,\n): void {\n writeNumericToDataView('i16', view, byteOffset, value, littleEndian);\n}\n\nexport function writeI32(\n view: DataView,\n byteOffset: number,\n value: NumericLikeInput,\n littleEndian?: boolean,\n): void {\n writeNumericToDataView('i32', view, byteOffset, value, littleEndian);\n}\n\nexport function writeI64(\n view: DataView,\n byteOffset: number,\n value: NumericLikeInput,\n littleEndian?: boolean,\n): void {\n writeNumericToDataView('i64', view, byteOffset, value, littleEndian);\n}\n\nexport function writeU8(view: DataView, byteOffset: number, value: NumericLikeInput): void {\n writeNumericToDataView('u8', view, byteOffset, value);\n}\n\nexport function writeU16(\n view: DataView,\n byteOffset: number,\n value: NumericLikeInput,\n littleEndian?: boolean,\n): void {\n writeNumericToDataView('u16', view, byteOffset, value, littleEndian);\n}\n\nexport function writeU32(\n view: DataView,\n byteOffset: number,\n value: NumericLikeInput,\n littleEndian?: boolean,\n): void {\n writeNumericToDataView('u32', view, byteOffset, value, littleEndian);\n}\n\nexport function writeU64(\n view: DataView,\n byteOffset: number,\n value: NumericLikeInput,\n littleEndian?: boolean,\n): void {\n writeNumericToDataView('u64', view, byteOffset, value, littleEndian);\n}\n\nfunction isCanonicalArrayIndexProperty(property: PropertyKey): number | undefined {\n if (typeof property !== 'string' || property === '') {\n return undefined;\n }\n const numeric = Number(property);\n if (!Number.isInteger(numeric) || numeric < 0 || String(numeric) !== property) {\n return undefined;\n }\n return numeric;\n}\n\nfunction normalizeViewIndex(index: number, length: number): number | undefined {\n return Number.isInteger(index) && index >= 0 && index < length ? index : undefined;\n}\n\nfunction resolveSubarrayIndex(index: number | undefined, length: number): number {\n if (index === undefined) {\n return length;\n }\n if (index < 0) {\n return Math.max(length + index, 0);\n }\n return Math.min(index, length);\n}\n\nfunction resolveSliceIndex(index: number | undefined, length: number): number {\n if (index === undefined) {\n return 0;\n }\n if (index < 0) {\n return Math.max(length + index, 0);\n }\n return Math.min(index, length);\n}\n\nfunction resolveLastSearchIndex(index: number | undefined, length: number): number {\n if (length === 0) {\n return -1;\n }\n if (index === undefined) {\n return length - 1;\n }\n if (index < 0) {\n return length + index;\n }\n return Math.min(index, length - 1);\n}\n\nfunction materializeNumericLikeSource(\n source: ArrayLike<NumericLikeInput> | Iterable<NumericLikeInput>,\n): NumericLikeInput[] {\n if (Symbol.iterator in Object(source)) {\n return Array.from(source as Iterable<NumericLikeInput>);\n }\n const arrayLike = source as ArrayLike<NumericLikeInput>;\n const values: NumericLikeInput[] = [];\n for (let index = 0; index < arrayLike.length; index += 1) {\n values.push(arrayLike[index]);\n }\n return values;\n}\n\nabstract class MachineNumericArrayView<Leaf extends MachineNumericKind>\n implements Iterable<NumericByKind<Leaf>> {\n [index: number]: NumericByKind<Leaf>;\n readonly BYTES_PER_ELEMENT: number;\n readonly buffer: ArrayBufferLike;\n readonly byteLength: number;\n readonly byteOffset: number;\n readonly length: number;\n protected readonly _view: DataView;\n\n protected constructor(\n buffer: ArrayBufferLike,\n bytesPerElement: number,\n byteOffset = 0,\n length?: number,\n ) {\n if (byteOffset < 0 || !Number.isInteger(byteOffset)) {\n throw new RangeError('byteOffset must be a non-negative integer.');\n }\n if (byteOffset % bytesPerElement !== 0) {\n throw new RangeError('byteOffset must align to BYTES_PER_ELEMENT.');\n }\n if (byteOffset > buffer.byteLength) {\n throw new RangeError('byteOffset is out of range for the provided buffer.');\n }\n\n const remaining = buffer.byteLength - byteOffset;\n const computedLength = length ?? remaining / bytesPerElement;\n if (!Number.isInteger(computedLength) || computedLength < 0) {\n throw new RangeError('length must describe a whole number of elements.');\n }\n if (computedLength * bytesPerElement > remaining) {\n throw new RangeError('length is out of range for the provided buffer.');\n }\n if (length === undefined && remaining % bytesPerElement !== 0) {\n throw new RangeError('buffer byte length must align to BYTES_PER_ELEMENT.');\n }\n\n this.BYTES_PER_ELEMENT = bytesPerElement;\n this.buffer = buffer;\n this.byteOffset = byteOffset;\n this.length = computedLength;\n this.byteLength = computedLength * bytesPerElement;\n this._view = new DataView(buffer, byteOffset, this.byteLength);\n\n return new Proxy(this, {\n get: (target, property, receiver) => {\n const index = isCanonicalArrayIndexProperty(property);\n if (index !== undefined) {\n return target.at(index);\n }\n const value = Reflect.get(target, property, receiver);\n return typeof value === 'function' ? value.bind(target) : value;\n },\n set: (target, property, value, receiver) => {\n const index = isCanonicalArrayIndexProperty(property);\n if (index !== undefined) {\n target.setAt(index, value as NumericLikeInput);\n return true;\n }\n return Reflect.set(target, property, value, receiver);\n },\n });\n }\n\n protected dataView(): DataView {\n return this._view;\n }\n\n protected abstract leafKind(): Leaf;\n protected abstract readFromView(view: DataView, byteOffset: number): NumericByKind<Leaf>;\n protected abstract writeToView(view: DataView, byteOffset: number, value: NumericLikeInput): void;\n protected abstract constructSubarray(buffer: ArrayBufferLike, byteOffset: number, length: number): MachineNumericArrayView<Leaf>;\n\n protected coerceToLeaf(value: NumericLikeInput): NumericByKind<Leaf> {\n return FACTORY_BY_KIND[this.leafKind()](value) as NumericByKind<Leaf>;\n }\n\n at(index: number): NumericByKind<Leaf> | undefined {\n const normalized = normalizeViewIndex(index, this.length);\n if (normalized === undefined) {\n return undefined;\n }\n return this.readFromView(this._view, normalized * this.BYTES_PER_ELEMENT);\n }\n\n setAt(index: number, value: NumericLikeInput): void {\n const normalized = normalizeViewIndex(index, this.length);\n if (normalized === undefined) {\n throw new RangeError('Index out of range for machine numeric view.');\n }\n this.writeToView(this._view, normalized * this.BYTES_PER_ELEMENT, value);\n }\n\n fill(value: NumericLikeInput, start = 0, end = this.length): this {\n const startIndex = resolveSliceIndex(start, this.length);\n const endIndex = resolveSubarrayIndex(end, this.length);\n const finalEnd = Math.max(endIndex, startIndex);\n for (let index = startIndex; index < finalEnd; index += 1) {\n this.writeToView(this._view, index * this.BYTES_PER_ELEMENT, value);\n }\n return this;\n }\n\n set(\n source: ArrayLike<NumericLikeInput> | Iterable<NumericLikeInput>,\n offset = 0,\n ): void {\n if (!Number.isInteger(offset) || offset < 0 || offset > this.length) {\n throw new RangeError('Offset out of range for machine numeric view.');\n }\n const snapshot = materializeNumericLikeSource(source);\n if (offset + snapshot.length > this.length) {\n throw new RangeError('Source is too large for machine numeric view.');\n }\n for (let index = 0; index < snapshot.length; index += 1) {\n this.writeToView(\n this._view,\n (offset + index) * this.BYTES_PER_ELEMENT,\n snapshot[index],\n );\n }\n }\n\n copyWithin(target: number, start: number, end?: number): this {\n const targetIndex = resolveSliceIndex(target, this.length);\n const startIndex = resolveSliceIndex(start, this.length);\n const endIndex = resolveSubarrayIndex(end, this.length);\n const available = Math.max(endIndex - startIndex, 0);\n const count = Math.min(available, this.length - targetIndex);\n const snapshot: NumericLikeInput[] = [];\n for (let index = 0; index < count; index += 1) {\n snapshot.push(\n this.readFromView(\n this._view,\n (startIndex + index) * this.BYTES_PER_ELEMENT,\n ),\n );\n }\n for (let index = 0; index < snapshot.length; index += 1) {\n this.writeToView(\n this._view,\n (targetIndex + index) * this.BYTES_PER_ELEMENT,\n snapshot[index],\n );\n }\n return this;\n }\n\n *keys(): IterableIterator<number> {\n for (let index = 0; index < this.length; index += 1) {\n yield index;\n }\n }\n\n values(): IterableIterator<NumericByKind<Leaf>> {\n return this[Symbol.iterator]();\n }\n\n *entries(): IterableIterator<[number, NumericByKind<Leaf>]> {\n for (let index = 0; index < this.length; index += 1) {\n yield [index, this.readFromView(this._view, index * this.BYTES_PER_ELEMENT)];\n }\n }\n\n includes(searchElement: NumericLikeInput, fromIndex = 0): boolean {\n return this.indexOf(searchElement, fromIndex) !== -1;\n }\n\n indexOf(searchElement: NumericLikeInput, fromIndex = 0): number {\n const startIndex = resolveSliceIndex(fromIndex, this.length);\n const searchValue = this.coerceToLeaf(searchElement);\n for (let index = startIndex; index < this.length; index += 1) {\n if (this.readFromView(this._view, index * this.BYTES_PER_ELEMENT) === searchValue) {\n return index;\n }\n }\n return -1;\n }\n\n lastIndexOf(searchElement: NumericLikeInput, fromIndex?: number): number {\n const startIndex = resolveLastSearchIndex(fromIndex, this.length);\n if (startIndex < 0) {\n return -1;\n }\n const searchValue = this.coerceToLeaf(searchElement);\n for (let index = startIndex; index >= 0; index -= 1) {\n if (this.readFromView(this._view, index * this.BYTES_PER_ELEMENT) === searchValue) {\n return index;\n }\n }\n return -1;\n }\n\n slice(begin?: number, end?: number): MachineNumericArrayView<Leaf> {\n const startIndex = resolveSliceIndex(begin, this.length);\n const endIndex = resolveSubarrayIndex(end, this.length);\n const finalLength = Math.max(endIndex - startIndex, 0);\n const sliced = this.constructSubarray(\n new ArrayBuffer(finalLength * this.BYTES_PER_ELEMENT),\n 0,\n finalLength,\n );\n for (let index = 0; index < finalLength; index += 1) {\n const value = this.readFromView(\n this._view,\n (startIndex + index) * this.BYTES_PER_ELEMENT,\n );\n sliced.setAt(index, value);\n }\n return sliced;\n }\n\n subarray(begin?: number, end?: number): MachineNumericArrayView<Leaf> {\n const startIndex = resolveSubarrayIndex(begin ?? 0, this.length);\n const endIndex = resolveSubarrayIndex(end, this.length);\n const finalLength = Math.max(endIndex - startIndex, 0);\n return this.constructSubarray(\n this.buffer,\n this.byteOffset + startIndex * this.BYTES_PER_ELEMENT,\n finalLength,\n );\n }\n\n *[Symbol.iterator](): IterableIterator<NumericByKind<Leaf>> {\n for (let index = 0; index < this.length; index += 1) {\n yield this.readFromView(this._view, index * this.BYTES_PER_ELEMENT);\n }\n }\n}\n\nfunction assertLittleEndianNativeViewBridge(\n littleEndian: boolean,\n hostViewName: string,\n): void {\n if (!littleEndian) {\n throw new TypeError(\n `Native ${hostViewName} views require little-endian machine storage.`,\n );\n }\n}\n\nexport class I8Array extends MachineNumericArrayView<'i8'> {\n static readonly BYTES_PER_ELEMENT = 1;\n\n static fromHostView(view: Int8Array): I8Array {\n return new I8Array(view.buffer, view.byteOffset, view.length);\n }\n\n constructor(buffer: ArrayBufferLike, byteOffset = 0, length?: number) {\n super(buffer, I8Array.BYTES_PER_ELEMENT, byteOffset, length);\n }\n\n protected leafKind(): 'i8' {\n return 'i8';\n }\n\n protected readFromView(view: DataView, byteOffset: number): i8 {\n return readI8(view, byteOffset);\n }\n\n protected writeToView(view: DataView, byteOffset: number, value: NumericLikeInput): void {\n writeI8(view, byteOffset, value);\n }\n\n protected constructSubarray(buffer: ArrayBufferLike, byteOffset: number, length: number): I8Array {\n return new I8Array(buffer, byteOffset, length);\n }\n\n override subarray(begin?: number, end?: number): I8Array {\n return super.subarray(begin, end) as I8Array;\n }\n\n override slice(begin?: number, end?: number): I8Array {\n return super.slice(begin, end) as I8Array;\n }\n\n toHostView(): Int8Array {\n return new Int8Array(this.buffer, this.byteOffset, this.length);\n }\n}\n\nexport class U8Array extends MachineNumericArrayView<'u8'> {\n static readonly BYTES_PER_ELEMENT = 1;\n\n static fromHostView(view: Uint8Array): U8Array {\n return new U8Array(view.buffer, view.byteOffset, view.length);\n }\n\n constructor(buffer: ArrayBufferLike, byteOffset = 0, length?: number) {\n super(buffer, U8Array.BYTES_PER_ELEMENT, byteOffset, length);\n }\n\n protected leafKind(): 'u8' {\n return 'u8';\n }\n\n protected readFromView(view: DataView, byteOffset: number): u8 {\n return readU8(view, byteOffset);\n }\n\n protected writeToView(view: DataView, byteOffset: number, value: NumericLikeInput): void {\n writeU8(view, byteOffset, value);\n }\n\n protected constructSubarray(buffer: ArrayBufferLike, byteOffset: number, length: number): U8Array {\n return new U8Array(buffer, byteOffset, length);\n }\n\n override subarray(begin?: number, end?: number): U8Array {\n return super.subarray(begin, end) as U8Array;\n }\n\n override slice(begin?: number, end?: number): U8Array {\n return super.slice(begin, end) as U8Array;\n }\n\n toHostView(): Uint8Array {\n return new Uint8Array(this.buffer, this.byteOffset, this.length);\n }\n}\n\nexport class I16Array extends MachineNumericArrayView<'i16'> {\n static readonly BYTES_PER_ELEMENT = 2;\n protected readonly _littleEndian: boolean;\n\n static fromHostView(view: Int16Array): I16Array {\n return new I16Array(view.buffer, view.byteOffset, view.length, true);\n }\n\n constructor(buffer: ArrayBufferLike, byteOffset = 0, length?: number, littleEndian = true) {\n super(buffer, I16Array.BYTES_PER_ELEMENT, byteOffset, length);\n this._littleEndian = littleEndian;\n }\n\n protected leafKind(): 'i16' {\n return 'i16';\n }\n\n protected readFromView(view: DataView, byteOffset: number): i16 {\n return readI16(view, byteOffset, this._littleEndian);\n }\n\n protected writeToView(view: DataView, byteOffset: number, value: NumericLikeInput): void {\n writeI16(view, byteOffset, value, this._littleEndian);\n }\n\n protected constructSubarray(buffer: ArrayBufferLike, byteOffset: number, length: number): I16Array {\n return new I16Array(buffer, byteOffset, length, this._littleEndian);\n }\n\n override subarray(begin?: number, end?: number): I16Array {\n return super.subarray(begin, end) as I16Array;\n }\n\n override slice(begin?: number, end?: number): I16Array {\n return super.slice(begin, end) as I16Array;\n }\n\n toHostView(): Int16Array {\n assertLittleEndianNativeViewBridge(this._littleEndian, 'Int16Array');\n return new Int16Array(this.buffer, this.byteOffset, this.length);\n }\n}\n\nexport class U16Array extends MachineNumericArrayView<'u16'> {\n static readonly BYTES_PER_ELEMENT = 2;\n protected readonly _littleEndian: boolean;\n\n static fromHostView(view: Uint16Array): U16Array {\n return new U16Array(view.buffer, view.byteOffset, view.length, true);\n }\n\n constructor(buffer: ArrayBufferLike, byteOffset = 0, length?: number, littleEndian = true) {\n super(buffer, U16Array.BYTES_PER_ELEMENT, byteOffset, length);\n this._littleEndian = littleEndian;\n }\n\n protected leafKind(): 'u16' {\n return 'u16';\n }\n\n protected readFromView(view: DataView, byteOffset: number): u16 {\n return readU16(view, byteOffset, this._littleEndian);\n }\n\n protected writeToView(view: DataView, byteOffset: number, value: NumericLikeInput): void {\n writeU16(view, byteOffset, value, this._littleEndian);\n }\n\n protected constructSubarray(buffer: ArrayBufferLike, byteOffset: number, length: number): U16Array {\n return new U16Array(buffer, byteOffset, length, this._littleEndian);\n }\n\n override subarray(begin?: number, end?: number): U16Array {\n return super.subarray(begin, end) as U16Array;\n }\n\n override slice(begin?: number, end?: number): U16Array {\n return super.slice(begin, end) as U16Array;\n }\n\n toHostView(): Uint16Array {\n assertLittleEndianNativeViewBridge(this._littleEndian, 'Uint16Array');\n return new Uint16Array(this.buffer, this.byteOffset, this.length);\n }\n}\n\nexport class I32Array extends MachineNumericArrayView<'i32'> {\n static readonly BYTES_PER_ELEMENT = 4;\n protected readonly _littleEndian: boolean;\n\n static fromHostView(view: Int32Array): I32Array {\n return new I32Array(view.buffer, view.byteOffset, view.length, true);\n }\n\n constructor(buffer: ArrayBufferLike, byteOffset = 0, length?: number, littleEndian = true) {\n super(buffer, I32Array.BYTES_PER_ELEMENT, byteOffset, length);\n this._littleEndian = littleEndian;\n }\n\n protected leafKind(): 'i32' {\n return 'i32';\n }\n\n protected readFromView(view: DataView, byteOffset: number): i32 {\n return readI32(view, byteOffset, this._littleEndian);\n }\n\n protected writeToView(view: DataView, byteOffset: number, value: NumericLikeInput): void {\n writeI32(view, byteOffset, value, this._littleEndian);\n }\n\n protected constructSubarray(buffer: ArrayBufferLike, byteOffset: number, length: number): I32Array {\n return new I32Array(buffer, byteOffset, length, this._littleEndian);\n }\n\n override subarray(begin?: number, end?: number): I32Array {\n return super.subarray(begin, end) as I32Array;\n }\n\n override slice(begin?: number, end?: number): I32Array {\n return super.slice(begin, end) as I32Array;\n }\n\n toHostView(): Int32Array {\n assertLittleEndianNativeViewBridge(this._littleEndian, 'Int32Array');\n return new Int32Array(this.buffer, this.byteOffset, this.length);\n }\n}\n\nexport class U32Array extends MachineNumericArrayView<'u32'> {\n static readonly BYTES_PER_ELEMENT = 4;\n protected readonly _littleEndian: boolean;\n\n static fromHostView(view: Uint32Array): U32Array {\n return new U32Array(view.buffer, view.byteOffset, view.length, true);\n }\n\n constructor(buffer: ArrayBufferLike, byteOffset = 0, length?: number, littleEndian = true) {\n super(buffer, U32Array.BYTES_PER_ELEMENT, byteOffset, length);\n this._littleEndian = littleEndian;\n }\n\n protected leafKind(): 'u32' {\n return 'u32';\n }\n\n protected readFromView(view: DataView, byteOffset: number): u32 {\n return readU32(view, byteOffset, this._littleEndian);\n }\n\n protected writeToView(view: DataView, byteOffset: number, value: NumericLikeInput): void {\n writeU32(view, byteOffset, value, this._littleEndian);\n }\n\n protected constructSubarray(buffer: ArrayBufferLike, byteOffset: number, length: number): U32Array {\n return new U32Array(buffer, byteOffset, length, this._littleEndian);\n }\n\n override subarray(begin?: number, end?: number): U32Array {\n return super.subarray(begin, end) as U32Array;\n }\n\n override slice(begin?: number, end?: number): U32Array {\n return super.slice(begin, end) as U32Array;\n }\n\n toHostView(): Uint32Array {\n assertLittleEndianNativeViewBridge(this._littleEndian, 'Uint32Array');\n return new Uint32Array(this.buffer, this.byteOffset, this.length);\n }\n}\n\nexport class I64Array extends MachineNumericArrayView<'i64'> {\n static readonly BYTES_PER_ELEMENT = 8;\n\n static fromHostView(view: BigInt64Array): I64Array {\n return new I64Array(view.buffer, view.byteOffset, view.length, true);\n }\n\n protected readonly _littleEndian: boolean;\n\n constructor(buffer: ArrayBufferLike, byteOffset = 0, length?: number, littleEndian = true) {\n super(buffer, I64Array.BYTES_PER_ELEMENT, byteOffset, length);\n this._littleEndian = littleEndian;\n }\n\n protected leafKind(): 'i64' {\n return 'i64';\n }\n\n protected readFromView(view: DataView, byteOffset: number): i64 {\n return readI64(view, byteOffset, this._littleEndian);\n }\n\n protected writeToView(view: DataView, byteOffset: number, value: NumericLikeInput): void {\n writeI64(view, byteOffset, value, this._littleEndian);\n }\n\n protected constructSubarray(buffer: ArrayBufferLike, byteOffset: number, length: number): I64Array {\n return new I64Array(buffer, byteOffset, length, this._littleEndian);\n }\n\n override subarray(begin?: number, end?: number): I64Array {\n return super.subarray(begin, end) as I64Array;\n }\n\n override slice(begin?: number, end?: number): I64Array {\n return super.slice(begin, end) as I64Array;\n }\n\n toHostView(): BigInt64Array {\n assertLittleEndianNativeViewBridge(this._littleEndian, 'BigInt64Array');\n return new BigInt64Array(this.buffer, this.byteOffset, this.length);\n }\n}\n\nexport class U64Array extends MachineNumericArrayView<'u64'> {\n static readonly BYTES_PER_ELEMENT = 8;\n protected readonly _littleEndian: boolean;\n\n static fromHostView(view: BigUint64Array): U64Array {\n return new U64Array(view.buffer, view.byteOffset, view.length, true);\n }\n\n constructor(buffer: ArrayBufferLike, byteOffset = 0, length?: number, littleEndian = true) {\n super(buffer, U64Array.BYTES_PER_ELEMENT, byteOffset, length);\n this._littleEndian = littleEndian;\n }\n\n protected leafKind(): 'u64' {\n return 'u64';\n }\n\n protected readFromView(view: DataView, byteOffset: number): u64 {\n return readU64(view, byteOffset, this._littleEndian);\n }\n\n protected writeToView(view: DataView, byteOffset: number, value: NumericLikeInput): void {\n writeU64(view, byteOffset, value, this._littleEndian);\n }\n\n protected constructSubarray(buffer: ArrayBufferLike, byteOffset: number, length: number): U64Array {\n return new U64Array(buffer, byteOffset, length, this._littleEndian);\n }\n\n override subarray(begin?: number, end?: number): U64Array {\n return super.subarray(begin, end) as U64Array;\n }\n\n override slice(begin?: number, end?: number): U64Array {\n return super.slice(begin, end) as U64Array;\n }\n\n toHostView(): BigUint64Array {\n assertLittleEndianNativeViewBridge(this._littleEndian, 'BigUint64Array');\n return new BigUint64Array(this.buffer, this.byteOffset, this.length);\n }\n}\n\nexport class F32Array extends MachineNumericArrayView<'f32'> {\n static readonly BYTES_PER_ELEMENT = 4;\n\n static fromHostView(view: Float32Array): F32Array {\n return new F32Array(view.buffer, view.byteOffset, view.length, true);\n }\n\n protected readonly _littleEndian: boolean;\n\n constructor(buffer: ArrayBufferLike, byteOffset = 0, length?: number, littleEndian = true) {\n super(buffer, F32Array.BYTES_PER_ELEMENT, byteOffset, length);\n this._littleEndian = littleEndian;\n }\n\n protected leafKind(): 'f32' {\n return 'f32';\n }\n\n protected readFromView(view: DataView, byteOffset: number): f32 {\n return readF32(view, byteOffset, this._littleEndian);\n }\n\n protected writeToView(view: DataView, byteOffset: number, value: NumericLikeInput): void {\n writeF32(view, byteOffset, value, this._littleEndian);\n }\n\n protected constructSubarray(buffer: ArrayBufferLike, byteOffset: number, length: number): F32Array {\n return new F32Array(buffer, byteOffset, length, this._littleEndian);\n }\n\n override subarray(begin?: number, end?: number): F32Array {\n return super.subarray(begin, end) as F32Array;\n }\n\n override slice(begin?: number, end?: number): F32Array {\n return super.slice(begin, end) as F32Array;\n }\n\n toHostView(): Float32Array {\n assertLittleEndianNativeViewBridge(this._littleEndian, 'Float32Array');\n return new Float32Array(this.buffer, this.byteOffset, this.length);\n }\n}\n\nexport class F64Array extends MachineNumericArrayView<'f64'> {\n static readonly BYTES_PER_ELEMENT = 8;\n protected readonly _littleEndian: boolean;\n\n static fromHostView(view: Float64Array): F64Array {\n return new F64Array(view.buffer, view.byteOffset, view.length, true);\n }\n\n constructor(buffer: ArrayBufferLike, byteOffset = 0, length?: number, littleEndian = true) {\n super(buffer, F64Array.BYTES_PER_ELEMENT, byteOffset, length);\n this._littleEndian = littleEndian;\n }\n\n protected leafKind(): 'f64' {\n return 'f64';\n }\n\n protected readFromView(view: DataView, byteOffset: number): f64 {\n return readF64(view, byteOffset, this._littleEndian);\n }\n\n protected writeToView(view: DataView, byteOffset: number, value: NumericLikeInput): void {\n writeF64(view, byteOffset, value, this._littleEndian);\n }\n\n protected constructSubarray(buffer: ArrayBufferLike, byteOffset: number, length: number): F64Array {\n return new F64Array(buffer, byteOffset, length, this._littleEndian);\n }\n\n override subarray(begin?: number, end?: number): F64Array {\n return super.subarray(begin, end) as F64Array;\n }\n\n override slice(begin?: number, end?: number): F64Array {\n return super.slice(begin, end) as F64Array;\n }\n\n toHostView(): Float64Array {\n assertLittleEndianNativeViewBridge(this._littleEndian, 'Float64Array');\n return new Float64Array(this.buffer, this.byteOffset, this.length);\n }\n}\n\nexport function equalAs<T extends Numeric>(\n leaf: NumericFactory<T>,\n left: NumericLikeInput,\n right: NumericLikeInput,\n): boolean {\n return leaf(left) === leaf(right);\n}\n\nexport function compareAs<T extends Numeric>(\n leaf: NumericFactory<T>,\n left: NumericLikeInput,\n right: NumericLikeInput,\n): number {\n return leaf.compare(leaf(left), leaf(right));\n}\n\nexport function eqAs<T extends Numeric>(\n leaf: NumericFactory<T>,\n): Eq<NumericLikeInput> {\n return {\n equals(left, right) {\n return equalAs(leaf, left, right);\n },\n };\n}\n\nexport function orderAs<T extends Numeric>(\n leaf: NumericFactory<T>,\n): Order<NumericLikeInput> {\n return fromCompare((left, right) => compareAs(leaf, left, right));\n}\n\nexport function hashEqAs<T extends Numeric>(\n leaf: NumericFactory<T>,\n): HashEq<NumericLikeInput> {\n return fromHashEq(\n (value) => stringHash.hash(keyOf(leaf(value))),\n (left, right) => equalAs(leaf, left, right),\n );\n}\n\nexport function minAs<T extends Numeric>(\n leaf: NumericFactory<T>,\n values: Iterable<NumericLikeInput>,\n): T | undefined {\n let smallest: T | undefined;\n for (const value of values) {\n const coerced = leaf(value);\n if (!smallest || leaf.compare(coerced, smallest) < 0) {\n smallest = coerced;\n }\n }\n return smallest;\n}\n\nexport function maxAs<T extends Numeric>(\n leaf: NumericFactory<T>,\n values: Iterable<NumericLikeInput>,\n): T | undefined {\n let largest: T | undefined;\n for (const value of values) {\n const coerced = leaf(value);\n if (!largest || leaf.compare(coerced, largest) > 0) {\n largest = coerced;\n }\n }\n return largest;\n}\n\nexport function clampAs<T extends Numeric>(\n leaf: NumericFactory<T>,\n value: NumericLikeInput,\n minimum: NumericLikeInput,\n maximum: NumericLikeInput,\n): T {\n const minValue = leaf(minimum);\n const maxValue = leaf(maximum);\n if (leaf.compare(minValue, maxValue) > 0) {\n throw new RangeError('Expected clamp minimum to be less than or equal to clamp maximum.');\n }\n\n const coerced = leaf(value);\n if (leaf.compare(coerced, minValue) < 0) {\n return minValue;\n }\n if (leaf.compare(coerced, maxValue) > 0) {\n return maxValue;\n }\n return coerced;\n}\n\nexport function binarySearchAs<T extends Numeric>(\n leaf: NumericFactory<T>,\n values: ArrayLike<NumericLikeInput>,\n target: NumericLikeInput,\n): number {\n const targetValue = leaf(target);\n let low = 0;\n let high = values.length - 1;\n let foundIndex = -1;\n\n while (low <= high) {\n const mid = (low + high) >> 1;\n const midValue = leaf(values[mid]!);\n const ordering = leaf.compare(midValue, targetValue);\n if (ordering < 0) {\n low = mid + 1;\n continue;\n }\n if (ordering > 0) {\n high = mid - 1;\n continue;\n }\n foundIndex = mid;\n high = mid - 1;\n }\n\n return foundIndex;\n}\n\nexport function __numericBinary<T extends Numeric>(\n operator: BinaryNumericOperator,\n left: T,\n right: T,\n): T {\n const leftValue = assertMachineNumeric(left);\n const rightValue = assertMachineNumeric(right);\n const kind = leftValue.__soundscript_numeric_kind;\n if (kind !== rightValue.__soundscript_numeric_kind) {\n throw new TypeError('Mixed machine numeric operators require explicit coercion.');\n }\n\n if (BIGINT_LEAF_KINDS.has(kind as BigIntLeafKind)) {\n const result = applyBigIntBinaryOperator(\n kind as BigIntLeafKind,\n operator,\n leftValue.payload() as bigint,\n rightValue.payload() as bigint,\n );\n return internMachineNumeric(kind, result) as T;\n }\n\n const result = applyNumberBinaryOperator(\n operator,\n leftValue.payload() as number,\n rightValue.payload() as number,\n );\n return internMachineNumeric(kind, result) as T;\n}\n\nexport function __numericUnary<T extends Numeric>(\n operator: UnaryNumericOperator,\n value: T,\n): T {\n const numeric = assertMachineNumeric(value);\n const kind = numeric.__soundscript_numeric_kind;\n\n if (BIGINT_LEAF_KINDS.has(kind as BigIntLeafKind)) {\n if (operator === '+') {\n throw new TypeError('Unary plus is not supported on bigint-backed machine numerics.');\n }\n return internMachineNumeric(\n kind,\n applyBigIntUnaryOperator(operator, numeric.payload() as bigint),\n ) as T;\n }\n\n return internMachineNumeric(\n kind,\n applyNumberUnaryOperator(operator, numeric.payload() as number),\n ) as T;\n}\n\nexport function __numericWasmLeaf<T>(value: unknown): T {\n return value as T;\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@soundscript/soundscript",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"license": "ISC",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -8,6 +8,71 @@
|
|
|
8
8
|
"bin": {
|
|
9
9
|
"soundscript": "./bin/soundscript.js"
|
|
10
10
|
},
|
|
11
|
+
"soundscript": {
|
|
12
|
+
"version": 1,
|
|
13
|
+
"exports": {
|
|
14
|
+
".": {
|
|
15
|
+
"source": "./soundscript/index.sts"
|
|
16
|
+
},
|
|
17
|
+
"./hkt": {
|
|
18
|
+
"source": "./soundscript/hkt.sts"
|
|
19
|
+
},
|
|
20
|
+
"./typeclasses": {
|
|
21
|
+
"source": "./soundscript/typeclasses.sts"
|
|
22
|
+
},
|
|
23
|
+
"./result": {
|
|
24
|
+
"source": "./soundscript/result.sts"
|
|
25
|
+
},
|
|
26
|
+
"./value": {
|
|
27
|
+
"source": "./soundscript/value.sts"
|
|
28
|
+
},
|
|
29
|
+
"./match": {
|
|
30
|
+
"source": "./soundscript/match.sts"
|
|
31
|
+
},
|
|
32
|
+
"./failures": {
|
|
33
|
+
"source": "./soundscript/failures.sts"
|
|
34
|
+
},
|
|
35
|
+
"./url": {
|
|
36
|
+
"source": "./soundscript/url.sts"
|
|
37
|
+
},
|
|
38
|
+
"./fetch": {
|
|
39
|
+
"source": "./soundscript/fetch.sts"
|
|
40
|
+
},
|
|
41
|
+
"./text": {
|
|
42
|
+
"source": "./soundscript/text.sts"
|
|
43
|
+
},
|
|
44
|
+
"./random": {
|
|
45
|
+
"source": "./soundscript/random.sts"
|
|
46
|
+
},
|
|
47
|
+
"./json": {
|
|
48
|
+
"source": "./soundscript/json.sts"
|
|
49
|
+
},
|
|
50
|
+
"./compare": {
|
|
51
|
+
"source": "./soundscript/compare.sts"
|
|
52
|
+
},
|
|
53
|
+
"./hash": {
|
|
54
|
+
"source": "./soundscript/hash.sts"
|
|
55
|
+
},
|
|
56
|
+
"./derive": {
|
|
57
|
+
"source": "./soundscript/derive.sts"
|
|
58
|
+
},
|
|
59
|
+
"./decode": {
|
|
60
|
+
"source": "./soundscript/decode.sts"
|
|
61
|
+
},
|
|
62
|
+
"./encode": {
|
|
63
|
+
"source": "./soundscript/encode.sts"
|
|
64
|
+
},
|
|
65
|
+
"./codec": {
|
|
66
|
+
"source": "./soundscript/codec.sts"
|
|
67
|
+
},
|
|
68
|
+
"./async": {
|
|
69
|
+
"source": "./soundscript/async.sts"
|
|
70
|
+
},
|
|
71
|
+
"./numerics": {
|
|
72
|
+
"source": "./soundscript/numerics.sts"
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
},
|
|
11
76
|
"exports": {
|
|
12
77
|
".": {
|
|
13
78
|
"types": "./index.d.ts",
|
|
@@ -25,6 +90,10 @@
|
|
|
25
90
|
"types": "./result.d.ts",
|
|
26
91
|
"import": "./result.js"
|
|
27
92
|
},
|
|
93
|
+
"./value": {
|
|
94
|
+
"types": "./value.d.ts",
|
|
95
|
+
"import": "./value.js"
|
|
96
|
+
},
|
|
28
97
|
"./match": {
|
|
29
98
|
"types": "./match.d.ts",
|
|
30
99
|
"import": "./match.js"
|
|
@@ -61,6 +130,10 @@
|
|
|
61
130
|
"types": "./hash.d.ts",
|
|
62
131
|
"import": "./hash.js"
|
|
63
132
|
},
|
|
133
|
+
"./derive": {
|
|
134
|
+
"types": "./derive.d.ts",
|
|
135
|
+
"import": "./derive.js"
|
|
136
|
+
},
|
|
64
137
|
"./decode": {
|
|
65
138
|
"types": "./decode.d.ts",
|
|
66
139
|
"import": "./decode.js"
|
|
@@ -77,29 +150,9 @@
|
|
|
77
150
|
"types": "./async.d.ts",
|
|
78
151
|
"import": "./async.js"
|
|
79
152
|
},
|
|
80
|
-
"./
|
|
81
|
-
"types": "./
|
|
82
|
-
"import": "./
|
|
83
|
-
},
|
|
84
|
-
"./experimental/sql": {
|
|
85
|
-
"types": "./experimental/sql.d.ts",
|
|
86
|
-
"import": "./experimental/sql.js"
|
|
87
|
-
},
|
|
88
|
-
"./experimental/css": {
|
|
89
|
-
"types": "./experimental/css.d.ts",
|
|
90
|
-
"import": "./experimental/css.js"
|
|
91
|
-
},
|
|
92
|
-
"./experimental/graphql": {
|
|
93
|
-
"types": "./experimental/graphql.d.ts",
|
|
94
|
-
"import": "./experimental/graphql.js"
|
|
95
|
-
},
|
|
96
|
-
"./experimental/component": {
|
|
97
|
-
"types": "./experimental/component.d.ts",
|
|
98
|
-
"import": "./experimental/component.js"
|
|
99
|
-
},
|
|
100
|
-
"./experimental/debug": {
|
|
101
|
-
"types": "./experimental/debug.d.ts",
|
|
102
|
-
"import": "./experimental/debug.js"
|
|
153
|
+
"./numerics": {
|
|
154
|
+
"types": "./numerics.d.ts",
|
|
155
|
+
"import": "./numerics.js"
|
|
103
156
|
}
|
|
104
157
|
},
|
|
105
158
|
"files": [
|
|
@@ -119,6 +172,9 @@
|
|
|
119
172
|
"result.js",
|
|
120
173
|
"result.js.map",
|
|
121
174
|
"result.d.ts",
|
|
175
|
+
"value.js",
|
|
176
|
+
"value.js.map",
|
|
177
|
+
"value.d.ts",
|
|
122
178
|
"match.js",
|
|
123
179
|
"match.js.map",
|
|
124
180
|
"match.d.ts",
|
|
@@ -146,6 +202,9 @@
|
|
|
146
202
|
"hash.js",
|
|
147
203
|
"hash.js.map",
|
|
148
204
|
"hash.d.ts",
|
|
205
|
+
"derive.js",
|
|
206
|
+
"derive.js.map",
|
|
207
|
+
"derive.d.ts",
|
|
149
208
|
"decode.js",
|
|
150
209
|
"decode.js.map",
|
|
151
210
|
"decode.d.ts",
|
|
@@ -158,24 +217,24 @@
|
|
|
158
217
|
"async.js",
|
|
159
218
|
"async.js.map",
|
|
160
219
|
"async.d.ts",
|
|
161
|
-
"
|
|
162
|
-
"
|
|
163
|
-
"
|
|
220
|
+
"numerics.js",
|
|
221
|
+
"numerics.js.map",
|
|
222
|
+
"numerics.d.ts",
|
|
164
223
|
"soundscript/**"
|
|
165
224
|
],
|
|
166
225
|
"optionalDependencies": {
|
|
167
|
-
"@soundscript/cli-darwin-arm64": "0.1.
|
|
168
|
-
"@soundscript/cli-darwin-x64": "0.1.
|
|
169
|
-
"@soundscript/cli-linux-arm64": "0.1.
|
|
170
|
-
"@soundscript/cli-linux-x64": "0.1.
|
|
171
|
-
"@soundscript/cli-win32-x64": "0.1.
|
|
226
|
+
"@soundscript/cli-darwin-arm64": "0.1.3",
|
|
227
|
+
"@soundscript/cli-darwin-x64": "0.1.3",
|
|
228
|
+
"@soundscript/cli-linux-arm64": "0.1.3",
|
|
229
|
+
"@soundscript/cli-linux-x64": "0.1.3",
|
|
230
|
+
"@soundscript/cli-win32-x64": "0.1.3"
|
|
172
231
|
},
|
|
173
232
|
"repository": {
|
|
174
233
|
"type": "git",
|
|
175
|
-
"url": "https://github.com/
|
|
234
|
+
"url": "https://github.com/soundscript-lang/soundscript.git"
|
|
176
235
|
},
|
|
177
|
-
"homepage": "https://github.com/
|
|
236
|
+
"homepage": "https://github.com/soundscript-lang/soundscript",
|
|
178
237
|
"bugs": {
|
|
179
|
-
"url": "https://github.com/
|
|
238
|
+
"url": "https://github.com/soundscript-lang/soundscript/issues"
|
|
180
239
|
}
|
|
181
240
|
}
|
package/result.d.ts
CHANGED
|
@@ -2,17 +2,32 @@ import type { Bind, Kind, Kind2, TypeLambda } from '@soundscript/soundscript/hkt
|
|
|
2
2
|
import type { Applicative, Functor, Monad } from '@soundscript/soundscript/typeclasses';
|
|
3
3
|
|
|
4
4
|
// #[variance(T: out)]
|
|
5
|
-
export
|
|
5
|
+
export class Ok<T> {
|
|
6
|
+
readonly tag: 'ok';
|
|
7
|
+
readonly value: T;
|
|
8
|
+
constructor(value: T);
|
|
9
|
+
}
|
|
6
10
|
// #[variance(E: out)]
|
|
7
|
-
export
|
|
11
|
+
export class Err<E> {
|
|
12
|
+
readonly tag: 'err';
|
|
13
|
+
readonly error: E;
|
|
14
|
+
constructor(error: E);
|
|
15
|
+
}
|
|
8
16
|
|
|
9
17
|
// #[variance(T: out, E: out)]
|
|
10
18
|
export type Result<T, E> = Ok<T> | Err<E>;
|
|
11
19
|
// #[variance(T: out)]
|
|
12
|
-
export
|
|
13
|
-
|
|
20
|
+
export class Some<T> {
|
|
21
|
+
readonly tag: 'some';
|
|
22
|
+
readonly value: T;
|
|
23
|
+
constructor(value: T);
|
|
24
|
+
}
|
|
25
|
+
export class None {
|
|
26
|
+
readonly tag: 'none';
|
|
27
|
+
constructor();
|
|
28
|
+
}
|
|
14
29
|
// #[variance(T: out)]
|
|
15
|
-
export type Option<T> =
|
|
30
|
+
export type Option<T> = Some<T> | None;
|
|
16
31
|
|
|
17
32
|
export interface OptionF extends TypeLambda {
|
|
18
33
|
readonly type: Option<this['Args'][0]>;
|
|
@@ -50,3 +65,4 @@ export function resultApplicative<E>(): Applicative<Bind<ResultF, [E]>>;
|
|
|
50
65
|
export function resultMonad<E>(): Monad<Bind<ResultF, [E]>>;
|
|
51
66
|
|
|
52
67
|
export function Try<T, E>(value: Result<T, E>): T;
|
|
68
|
+
export function Try<T>(value: Option<T>): T;
|
package/result.js
CHANGED
|
@@ -1,39 +1,75 @@
|
|
|
1
1
|
import { normalizeThrown } from '@soundscript/soundscript/failures';
|
|
2
|
+
import { __valueFactory, __valueKey, __valueReadonly, __valueShallowToken, } from '@soundscript/soundscript/value';
|
|
3
|
+
const makeOk = __valueFactory((value) => __valueKey('ok', __valueShallowToken(value)), () => Object.create(Ok.prototype), (instance, value) => {
|
|
4
|
+
__valueReadonly(instance, 'tag', 'ok');
|
|
5
|
+
__valueReadonly(instance, 'value', value);
|
|
6
|
+
});
|
|
7
|
+
const makeErr = __valueFactory((error) => __valueKey('err', __valueShallowToken(error)), () => Object.create(Err.prototype), (instance, error) => {
|
|
8
|
+
__valueReadonly(instance, 'tag', 'err');
|
|
9
|
+
__valueReadonly(instance, 'error', error);
|
|
10
|
+
});
|
|
11
|
+
const makeSome = __valueFactory((value) => __valueKey('some', __valueShallowToken(value)), () => Object.create(Some.prototype), (instance, value) => {
|
|
12
|
+
__valueReadonly(instance, 'tag', 'some');
|
|
13
|
+
__valueReadonly(instance, 'value', value);
|
|
14
|
+
});
|
|
15
|
+
const makeNone = __valueFactory(() => __valueKey('none'), () => Object.create(None.prototype), (instance) => {
|
|
16
|
+
__valueReadonly(instance, 'tag', 'none');
|
|
17
|
+
});
|
|
18
|
+
// #[variance(T: out)]
|
|
19
|
+
export class Ok {
|
|
20
|
+
constructor(value) {
|
|
21
|
+
return makeOk(value);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
// #[variance(E: out)]
|
|
25
|
+
export class Err {
|
|
26
|
+
constructor(error) {
|
|
27
|
+
return makeErr(error);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
// #[variance(T: out)]
|
|
31
|
+
export class Some {
|
|
32
|
+
constructor(value) {
|
|
33
|
+
return makeSome(value);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
export class None {
|
|
37
|
+
constructor() {
|
|
38
|
+
return makeNone();
|
|
39
|
+
}
|
|
40
|
+
}
|
|
2
41
|
export function ok(value) {
|
|
3
|
-
return
|
|
42
|
+
return new Ok(value);
|
|
4
43
|
}
|
|
5
44
|
export function err(error) {
|
|
6
|
-
return
|
|
45
|
+
return new Err(error);
|
|
7
46
|
}
|
|
8
47
|
export function some(value) {
|
|
9
|
-
return
|
|
48
|
+
return new Some(value);
|
|
10
49
|
}
|
|
11
50
|
export function none() {
|
|
12
|
-
return
|
|
51
|
+
return new None();
|
|
13
52
|
}
|
|
14
53
|
export function isOk(value) {
|
|
15
|
-
return value
|
|
54
|
+
return value instanceof Ok;
|
|
16
55
|
}
|
|
17
56
|
export function isErr(value) {
|
|
18
|
-
return value
|
|
57
|
+
return value instanceof Err;
|
|
19
58
|
}
|
|
20
59
|
export function isSome(value) {
|
|
21
|
-
return
|
|
60
|
+
return value instanceof Some;
|
|
22
61
|
}
|
|
23
62
|
export function isNone(value) {
|
|
24
|
-
return
|
|
63
|
+
return value instanceof None;
|
|
25
64
|
}
|
|
26
|
-
function
|
|
27
|
-
return
|
|
28
|
-
value !== null &&
|
|
29
|
-
'then' in value &&
|
|
30
|
-
typeof value.then === 'function';
|
|
65
|
+
function isPromiseInstance(value) {
|
|
66
|
+
return value instanceof Promise;
|
|
31
67
|
}
|
|
32
68
|
export function resultOf(fn, mapError) {
|
|
33
69
|
try {
|
|
34
70
|
const value = fn();
|
|
35
|
-
if (
|
|
36
|
-
return
|
|
71
|
+
if (isPromiseInstance(value)) {
|
|
72
|
+
return value.then((resolved) => ok(resolved), (error) => {
|
|
37
73
|
const normalized = normalizeThrown(error);
|
|
38
74
|
return err(mapError ? mapError(normalized) : normalized);
|
|
39
75
|
});
|
|
@@ -46,16 +82,16 @@ export function resultOf(fn, mapError) {
|
|
|
46
82
|
}
|
|
47
83
|
}
|
|
48
84
|
function mapOption(value, f) {
|
|
49
|
-
return
|
|
85
|
+
return isSome(value) ? some(f(value.value)) : value;
|
|
50
86
|
}
|
|
51
87
|
function apOption(fn, value) {
|
|
52
|
-
if (!
|
|
88
|
+
if (!isSome(fn)) {
|
|
53
89
|
return fn;
|
|
54
90
|
}
|
|
55
|
-
return
|
|
91
|
+
return isSome(value) ? some(fn.value(value.value)) : value;
|
|
56
92
|
}
|
|
57
93
|
function flatMapOption(value, f) {
|
|
58
|
-
return
|
|
94
|
+
return isSome(value) ? f(value.value) : value;
|
|
59
95
|
}
|
|
60
96
|
const optionMonadImpl = {
|
|
61
97
|
ap: apOption,
|