Files
plainleaf/client/space_lua/stdlib/encoding.ts
T

38 lines
1.5 KiB
TypeScript

import { LuaBuiltinFunction, LuaTable } from "../runtime.ts";
import { base64Decode, base64Encode } from "../../../plug-api/lib/crypto.ts";
export const encodingApi = new LuaTable({
base64Encode: new LuaBuiltinFunction({
callback: (_sf, s: string | Uint8Array): string => {
return base64Encode(s);
},
description: "Encodes a string or byte buffer as Base64.",
parameters: [{ name: "data", type: "string|bytes" }],
returns: [{ type: "string", description: "Base64-encoded data." }],
}),
base64Decode: new LuaBuiltinFunction({
callback: (_sf, s: string): Uint8Array => {
return base64Decode(s);
},
description: "Decodes a Base64 string into a byte buffer.",
parameters: [{ name: "encoded", type: "string" }],
returns: [{ type: "bytes", description: "Decoded bytes." }],
}),
utf8Encode: new LuaBuiltinFunction({
callback: (_sf, s: string): Uint8Array => {
return new TextEncoder().encode(s);
},
description: "Encodes a UTF-8 string into a byte buffer.",
parameters: [{ name: "value", type: "string" }],
returns: [{ type: "bytes", description: "UTF-8 encoded bytes." }],
}),
utf8Decode: new LuaBuiltinFunction({
callback: (_sf, data: Uint8Array): string => {
return new TextDecoder().decode(data);
},
description: "Decodes a UTF-8 byte buffer into a string.",
parameters: [{ name: "data", type: "bytes" }],
returns: [{ type: "string", description: "Decoded text." }],
}),
});