This commit is contained in:
2025-08-06 16:22:19 +03:00
parent 16789a942e
commit 40dc6a2637
20 changed files with 250 additions and 183 deletions

105
types/index.d.ts vendored
View File

@ -1,59 +1,78 @@
import { memcpy } from "./mem";
import { limits } from "./limits";
import { Type } from "./Type"
import { Int } from "./Int"
import { ConstString } from "./ConstString"
import { ConstArray } from "./ConstArray";
import { ConstDataView } from "./ConstDataView";
import { Struct } from "./Struct";
import { memcpy } from './mem'
import { limits } from './limits'
import { Type } from './Type'
import { Int } from './Int'
import { ConstString } from './ConstString'
import { ConstArray } from './ConstArray'
import { ConstDataView } from './ConstDataView'
import { Struct } from './Struct'
export { memcpy, limits, Type, Int, ConstString, ConstArray, ConstDataView, Struct }
export {
memcpy,
limits,
Type,
Int,
ConstString,
ConstArray,
ConstDataView,
Struct,
}
export type SerializableType = BooleanConstructor | NumberConstructor | StringConstructor | ArrayConstructor | DataViewConstructor | Type
export type SerializableType =
| BooleanConstructor
| NumberConstructor
| StringConstructor
| ArrayConstructor
| DataViewConstructor
| Type
export type Serializable = unknown
/**
* @param {DataView} dv destination memory
* @param {Serializable} src source object
* @param {SerializableType[]} ...types primary and inner types. eg: Array, Number
* @throws {Error} if too small buffer
* @throws {Error} if array|string|DataView size is higher than limits.u32.MAX_VALUE
*/
export function serialize(dv: DataView, src: Serializable, ...types: SerializableType[]): void;
* @param {DataView} dv destination memory
* @param {Serializable} src source object
* @param {SerializableType[]} ...types primary and inner types. eg: Array, Number
* @throws {Error} if too small buffer
* @throws {Error} if array|string|DataView size is higher than limits.u32.MAX_VALUE
*/
export function serialize(
dv: DataView,
src: Serializable,
...types: SerializableType[]
): void
/**
* @param {DataView} dv source memory
* @param {SerializableType[]} ...types primary and inner types. eg: Array, Number
* @returns {Serializable} parsed object
*/
export function parse(dv: DataView, ...types: SerializableType[]): Serializable;
* @param {DataView} dv source memory
* @param {SerializableType[]} ...types primary and inner types. eg: Array, Number
* @returns {Serializable} parsed object
*/
export function parse(dv: DataView, ...types: SerializableType[]): Serializable
/**
* some types, like Array, String, has no fixed size. So in Structure they are stored as u32 offset, which points to their beginning
* @param {SerializableType[]} ...types primary and inner types. eg: Array, Number
* @returns {boolean}
*/
export function isHeadless(...types: SerializableType[]): boolean;
* some types, like Array, String, has no fixed size. So in Structure they are stored as u32 offset, which points to their beginning
* @param {SerializableType[]} ...types primary and inner types. eg: Array, Number
* @returns {boolean}
*/
export function isHeadless(...types: SerializableType[]): boolean
/**
* if obj has no fixed size, return 4 (sizeof u32 offset)
* @param {SerializableType[]} ...types primary and inner types. eg: Array, Number
* @returns {number}
*/
export function sizeofHead(...types: SerializableType[]): number;
* if obj has no fixed size, return 4 (sizeof u32 offset)
* @param {SerializableType[]} ...types primary and inner types. eg: Array, Number
* @returns {number}
*/
export function sizeofHead(...types: SerializableType[]): number
/**
* @param {Serializable} obj to check
* @param {SerializableType[]} ...types primary and inner types. eg: Array, Number
* @returns {number}
*/
export function sizeof(obj: Serializable, ...types: SerializableType[]): number;
* @param {Serializable} obj to check
* @param {SerializableType[]} ...types primary and inner types. eg: Array, Number
* @returns {number}
*/
export function sizeof(obj: Serializable, ...types: SerializableType[]): number
/**
* @param {SerializableType[]} ...types primary and inner types. eg: Array, Number
* @returns {number}
* @throws {Error} if passed Array, String, DataView type (unknown sizeof)
*/
export function sizeof(...types: SerializableType[]): number;
* @param {SerializableType[]} ...types primary and inner types. eg: Array, Number
* @returns {number}
* @throws {Error} if passed Array, String, DataView type (unknown sizeof)
*/
export function sizeof(...types: SerializableType[]): number
export function isSerializableType(type: unknown): boolean;
export function isSerializableType(type: unknown): boolean