51 lines
1.7 KiB
TypeScript
51 lines
1.7 KiB
TypeScript
import { GenericPointer, PointerType, PointerTypeDecode, PointerTypeEncode } from "./pointer";
|
|
import { Encoder, EncoderState, identityPointerTypeEncode } from "./encoder";
|
|
import { genericPointerTypeDecode } from "./reader";
|
|
import { Value } from "./values";
|
|
import { DecoderState, neverPointerTypeDecode } from "./decoder";
|
|
|
|
export const genericPointerTypeEncode: PointerTypeEncode<GenericPointer> = {
|
|
encode(s: EncoderState, v: GenericPointer): void {
|
|
new Encoder(s, this).push(v.generic);
|
|
},
|
|
|
|
toValue(v: GenericPointer): Value<GenericPointer> {
|
|
return v.generic;
|
|
}
|
|
};
|
|
|
|
export const genericPointerType: PointerType<GenericPointer> =
|
|
Object.assign({},
|
|
genericPointerTypeDecode,
|
|
genericPointerTypeEncode);
|
|
|
|
export const neverPointerTypeEncode: PointerTypeEncode<never> = {
|
|
encode(_s: EncoderState, _v: never): void {
|
|
throw new Error("Pointers not permitted encoding Preserves document");
|
|
},
|
|
|
|
toValue(_v: never): Value<GenericPointer> {
|
|
throw new Error("Pointers not permitted encoding Preserves document");
|
|
}
|
|
};
|
|
|
|
export const neverPointerType: PointerType<never> =
|
|
Object.assign({},
|
|
neverPointerTypeDecode,
|
|
neverPointerTypeEncode);
|
|
|
|
export const identityPointerTypeDecode: PointerTypeDecode<any> = {
|
|
decode(_s: DecoderState): any {
|
|
throw new Error("Cannot decode identityPointerType");
|
|
},
|
|
|
|
fromValue(_v: Value<GenericPointer>): any {
|
|
throw new Error("Cannot decode identityPointerType");
|
|
},
|
|
};
|
|
|
|
export const identityPointerType: PointerType<any> =
|
|
Object.assign({},
|
|
identityPointerTypeDecode,
|
|
identityPointerTypeEncode);
|