diff --git a/deno.lock b/deno.lock index b42348d..63d8442 100644 --- a/deno.lock +++ b/deno.lock @@ -444,6 +444,12 @@ "https://git.lua.re/luaneko/lstd/raw/tag/0.1.3/events.ts": "c4f2c856cbc7ac5d93b9af9b83d9550db7427cead32514a10424082e492005ae", "https://git.lua.re/luaneko/lstd/raw/tag/0.1.3/func.ts": "f1935f673365cd68939531d65ef18fe81b5d43dc795b03c34bb5ad821ab1c9ff", "https://git.lua.re/luaneko/lstd/raw/tag/0.1.3/jit.ts": "260ab418fbc55a5dec594f023c84d36f8d420fd3239e3d27648cba1b9a0e05b1", - "https://git.lua.re/luaneko/lstd/raw/tag/0.1.3/mod.ts": "dd9271f4e5aae4bfb1ec6b0800697ded12e4178af915acb2b96b97614ae8c8d9" + "https://git.lua.re/luaneko/lstd/raw/tag/0.1.3/mod.ts": "dd9271f4e5aae4bfb1ec6b0800697ded12e4178af915acb2b96b97614ae8c8d9", + "https://git.lua.re/luaneko/lstd/raw/tag/0.1.5/async.ts": "20bc54c7260c2d2cd27ffcca33b903dde57a3a3635386d8e0c6baca4b253ae4e", + "https://git.lua.re/luaneko/lstd/raw/tag/0.1.5/bytes.ts": "b9816e75afa878202529b11431dfd77f5f14f71e67c3f15852fd651f6801d8bb", + "https://git.lua.re/luaneko/lstd/raw/tag/0.1.5/events.ts": "c4f2c856cbc7ac5d93b9af9b83d9550db7427cead32514a10424082e492005ae", + "https://git.lua.re/luaneko/lstd/raw/tag/0.1.5/func.ts": "f1935f673365cd68939531d65ef18fe81b5d43dc795b03c34bb5ad821ab1c9ff", + "https://git.lua.re/luaneko/lstd/raw/tag/0.1.5/jit.ts": "260ab418fbc55a5dec594f023c84d36f8d420fd3239e3d27648cba1b9a0e05b1", + "https://git.lua.re/luaneko/lstd/raw/tag/0.1.5/mod.ts": "95d8b15048a54cb82391825831f695b74e7c8b206317264a99c906ce25c63f13" } } diff --git a/lstd.ts b/lstd.ts index b3f74f0..e942db7 100644 --- a/lstd.ts +++ b/lstd.ts @@ -1 +1 @@ -export * from "https://git.lua.re/luaneko/lstd/raw/tag/0.1.3/mod.ts"; +export * from "https://git.lua.re/luaneko/lstd/raw/tag/0.1.5/mod.ts"; diff --git a/ser.ts b/ser.ts index 28b0b28..ef6eb2f 100644 --- a/ser.ts +++ b/ser.ts @@ -1,3 +1,9 @@ +import { read_i8 } from "./lstd.ts"; +import { read_i16_be } from "./lstd.ts"; +import { read_i32_be } from "./lstd.ts"; +import { write_i32_be } from "./lstd.ts"; +import { write_i16_be } from "./lstd.ts"; +import { write_i8 } from "./lstd.ts"; import { encode_utf8, from_utf8, jit } from "./lstd.ts"; export class EncoderError extends Error { @@ -40,34 +46,30 @@ export function sum_const_size(...ns: (number | null)[]) { } // https://www.postgresql.org/docs/current/protocol-message-types.html#PROTOCOL-MESSAGE-TYPES -export const u8: Encoder = { +export const i8: Encoder = { const_size: 1, allocs() { return 1; }, encode(buf, cur, n) { - buf[cur.i++] = n & 0xff; + write_i8(buf, n, cur.i++); }, decode(buf, cur) { - return buf[cur.i++]; + return read_i8(buf, cur.i++); }, }; -export const u16: Encoder = { +export const i16: Encoder = { const_size: 2, allocs() { return 2; }, encode(buf, cur, n) { - let { i } = cur; - buf[i++] = (n >>> 8) & 0xff; - buf[i++] = n & 0xff; - cur.i = i; + write_i16_be(buf, n, cur.i), (cur.i += 2); }, decode(buf, cur) { - let { i } = cur; - const n = (buf[i++] << 8) + buf[i++]; - return (cur.i = i), n; + const n = read_i16_be(buf, cur.i); + return (cur.i += 2), n; }, }; @@ -77,17 +79,11 @@ export const i32: Encoder = { return 4; }, encode(buf, cur, n) { - let { i } = cur; - buf[i++] = (n >>> 24) & 0xff; - buf[i++] = (n >>> 16) & 0xff; - buf[i++] = (n >>> 8) & 0xff; - buf[i++] = n & 0xff; - cur.i = i; + write_i32_be(buf, n, cur.i), (cur.i += 4); }, decode(buf, cur) { - let { i } = cur; - const n = (buf[i++] << 24) + (buf[i++] << 16) + (buf[i++] << 8) + buf[i++]; - return (cur.i = i), n; + const n = read_i32_be(buf, cur.i); + return (cur.i += 4), n; }, }; diff --git a/wire.ts b/wire.ts index 22084dc..7b6d73f 100644 --- a/wire.ts +++ b/wire.ts @@ -25,9 +25,9 @@ import { oneof, ser_decode, ser_encode, - u16, + i16, i32, - u8, + i8, sum_const_size, } from "./ser.ts"; import { @@ -119,7 +119,7 @@ function msg( shape: S ): MessageEncoder { const header_size = type !== "" ? 5 : 4; - const ty = type !== "" ? oneof(char(u8), type) : null; + const ty = type !== "" ? oneof(char(i8), type) : null; const fields = object(shape); return { @@ -160,7 +160,7 @@ function msg_check_err(msg: Uint8Array) { // https://www.postgresql.org/docs/current/protocol-message-formats.html#PROTOCOL-MESSAGE-FORMATS export const Header = object({ - type: char(u8), + type: char(i8), length: i32, }); @@ -237,9 +237,9 @@ export const BackendKeyData = msg("K", { export const Bind = msg("B", { portal: cstring, statement: cstring, - param_formats: array(u16, u16), - param_values: array(u16, byten_lp), - column_formats: array(u16, u16), + param_formats: array(i16, i16), + param_values: array(i16, byten_lp), + column_formats: array(i16, i16), }); export const BindComplete = msg("2", {}); @@ -251,7 +251,7 @@ export const CancelRequest = msg("", { }); export const Close = msg("C", { - which: oneof(char(u8), "S" as const, "P" as const), + which: oneof(char(i8), "S" as const, "P" as const), name: cstring, }); @@ -262,32 +262,32 @@ export const CopyDone = msg("c", {}); export const CopyFail = msg("f", { cause: cstring }); export const CopyInResponse = msg("G", { - format: u8, - column_formats: array(u16, u16), + format: i8, + column_formats: array(i16, i16), }); export const CopyOutResponse = msg("H", { - format: u8, - column_formats: array(u16, u16), + format: i8, + column_formats: array(i16, i16), }); export const CopyBothResponse = msg("W", { - format: u8, - column_formats: array(u16, u16), + format: i8, + column_formats: array(i16, i16), }); export const DataRow = msg("D", { - column_values: array(u16, byten_lp), + column_values: array(i16, byten_lp), }); export const Describe = msg("D", { - which: oneof(char(u8), "S" as const, "P" as const), + which: oneof(char(i8), "S" as const, "P" as const), name: cstring, }); export const EmptyQueryResponse = msg("I", {}); -const err_field = char(u8); +const err_field = char(i8); const err_fields: Encoder> = { const_size: null, allocs(x) { @@ -325,9 +325,9 @@ export const Flush = msg("H", {}); export const FunctionCall = msg("F", { oid: i32, - arg_formats: array(u16, u16), - arg_values: array(u16, byten_lp), - result_format: u16, + arg_formats: array(i16, i16), + arg_values: array(i16, byten_lp), + result_format: i16, }); export const FunctionCallResponse = msg("V", { @@ -352,7 +352,7 @@ export const NotificationResponse = msg("A", { }); export const ParameterDescription = msg("t", { - param_types: array(u16, i32), + param_types: array(i16, i32), }); export const ParameterStatus = msg("S", { @@ -363,7 +363,7 @@ export const ParameterStatus = msg("S", { export const Parse = msg("P", { statement: cstring, query: cstring, - param_types: array(u16, i32), + param_types: array(i16, i32), }); export const ParseComplete = msg("1", {}); @@ -379,20 +379,20 @@ export const QueryMessage = msg("Q", { }); export const ReadyForQuery = msg("Z", { - tx_status: oneof(char(u8), "I" as const, "T" as const, "E" as const), + tx_status: oneof(char(i8), "I" as const, "T" as const, "E" as const), }); export const RowDescription = msg("T", { columns: array( - u16, + i16, object({ name: cstring, table_oid: i32, - table_column: u16, + table_column: i16, type_oid: i32, - type_size: u16, + type_size: i16, type_modifier: i32, - format: u16, + format: i16, }) ), }); @@ -421,7 +421,7 @@ export const StartupMessage = msg("", { for (const { 0: key, 1: value } of Object.entries(x)) { cstring.encode(buf, cur, key), cstring.encode(buf, cur, value); } - u8.encode(buf, cur, 0); + i8.encode(buf, cur, 0); }, decode(buf, cur) { const x: Record = {};