decode
동기 디코딩
decode
함수는 CBOR 형식의 Uint8Array
를 JavaScript 값으로 디코딩하는 함수입니다.
임포트
import { decode } from "@tai-kun/surrealdb/cbor";
구문
function decode(input: Uint8Array, options?: DecodeOptions): unknown;
인수
input
JavaScript 값으로 디코딩할 CBOR 형식의 Uint8Array
입니다.
options
디코딩 옵션입니다.
mapType?: "Object" | "Map"
- 이 옵션은 키-값 형식의 객체를 JavaScript의 일반 객체 또는
Map
으로 디코딩할지 선택하는 데 사용할 수 있습니다."Object"
를 선택하면 일반 객체로,"Map"
을 선택하면Map
클래스의 인스턴스로 디코딩합니다. 기본값은"Object"
입니다. 일반 객체의 키는 문자열 또는 숫자(즉,string | number
)만 허용하지만, 이 옵션을"Map"
으로 설정하여 디코딩하면 키는 디코딩된 모든 값을 허용합니다. reviver?: Reviver | ReviverObject | (Reviver | ReviverObject)[]
- 이 옵션은 CBOR의 단순 데이터 항목 또는 태그가 지정된 데이터 항목을 JavaScript 값으로 변환하는 데 사용합니다. 단순 데이터 항목은 0부터 19 및 32부터 255까지의 값으로 제한됩니다. 태그가 지정된 데이터 항목의 태그는 0부터 2^64-1까지의
number
또는bigint
입니다. 함수가Symbol.for("@tai-kun/surrealdb/cbor/continue")
로 얻은CONTINUE
심볼을 반환하면 후속 함수가 호출됩니다. 아무것도 변환할 수 없으면SurrealTypeError
가 발생합니다. isSafeMapKey?: (key: unknown, map: Map<unknown, unknown>) => boolean
- 이 옵션은
Map
객체의 키가 안전한지 확인하는 함수입니다. 함수는key
와map
의 두 인수를 받습니다.key
는 키 값이고,map
은 검증 중인Map
객체입니다. 이 함수가false
를 반환하면CborUnsafeMapKeyError
가 발생합니다. 기본적으로"__proto__"
또는"constructor"
를 안전하지 않은 키로 판단합니다. 이 옵션을 지정하면 기본 검증이 완전히 덮어쓰인다는 점에 유의하십시오. 기본 검증에 고유한 검증을 추가하려면"__proto__"
또는"constructor"
도 안전하지 않은 키로 판단해야 합니다. isSafeObjectKey?: (key: unknown, obj: Record<string | number, unknown>) => boolean
- 이 옵션은 일반 객체의 키가 안전한지 확인하는 함수입니다. 함수는
key
와obj
의 두 인수를 받습니다.key
는 키 값이고,obj
는 검증 중인 일반 객체입니다. 이 함수가false
를 반환하면CborUnsafeMapKeyError
가 발생합니다. 기본적으로"__proto__"
또는"constructor"
를 안전하지 않은 키로 판단합니다. 이 옵션을 지정하면 기본 검증이 완전히 덮어쓰인다는 점에 유의하십시오. 기본 검증에 고유한 검증을 추가하려면"__proto__"
또는"constructor"
도 안전하지 않은 키로 판단해야 합니다. maxDepth?: number
- 객체의 최대 깊이를 지정합니다. 객체 또는 배열에 들어갈 때마다 깊이가 1씩 증가합니다. 기본값은
64
입니다. 디코딩에 재귀 처리가 사용되지 않으므로 깊이에 상한값은 없지만, 너무 크게 하지 않는 것이 좋습니다.
반환값
CBOR 형식의 Uint8Array
에서 디코딩된 JavaScript 값입니다.
예시
Map
객체로 디코딩
import { decode } from "@tai-kun/surrealdb/cbor";
const cbor = new Uint8Array([ 0xa1, // mt: 5, ai: 1 // key 0x00, // mt: 0, ai: 0 // value 0x00, // mt: 0, ai: 0]);
const value = decode(bytes, { mapType: "Map" });
console.log(value); // Map(1) { [ 0 ] => 0 }
비동기 디코딩
decodeStream
함수는 CBOR 형식의 Uint8Array
를 JavaScript 값으로 디코딩하는 함수입니다.
임포트
import { decodeStream } from "@tai-kun/surrealdb/cbor";
구문
function decodeStream( input: ReadableStream<Uint8Array>, options?: DecodeStreamOptions,): unknown;
인수
input
Uint8Array
의 읽을 수 있는 스트림입니다. Fetch API는 요청에 따라 Response
객체의 body
속성에 이 스트림을 제공할 수 있습니다.
options
동기 디코딩 옵션 외에 다음 옵션을 지정할 수 있습니다.
signal?: AbortSignal
- 스트림을 중단하기 위한 중단 신호입니다.
반환값
JavaScript 값으로 해결되는 StatefulPromise
입니다.
예시
Fetch API
import { decodeStream } from "@tai-kun/surrealdb/cbor";
const response = await fetch("http://localhost:8000/rpc", { method: "POST", headers: { Accept: "application/cbor", // ... more headers }, // ... more properties})
const result = await decodeStream(resp.body);