diff --git a/ts/package-lock.json b/ts/package-lock.json index d7add952e..1337e02c3 100644 --- a/ts/package-lock.json +++ b/ts/package-lock.json @@ -1,12 +1,12 @@ { "name": "@snowtop/ent", - "version": "0.2.0-alpha.10", + "version": "0.2.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@snowtop/ent", - "version": "0.2.0-alpha.10", + "version": "0.2.0", "license": "MIT", "dependencies": { "@types/node": "^20.10.4", diff --git a/ts/src/graphql/node_resolver.test.ts b/ts/src/graphql/node_resolver.test.ts index eee316388..b7280566a 100644 --- a/ts/src/graphql/node_resolver.test.ts +++ b/ts/src/graphql/node_resolver.test.ts @@ -144,11 +144,11 @@ class SearchResult { class SearchResultResolver implements NodeResolver { encode(result: SearchResult) { const str = `searchResult:${result.data.context}:${result.id}`; - return Buffer.from(str, "ascii").toString("base64"); + return btoa(str); } async decodeObj(viewer: Viewer, id: string) { - const decoded = Buffer.from(id, "base64").toString("ascii"); + const decoded = atob(id); let parts = decoded.split(":"); if (parts.length != 3) { return null; diff --git a/ts/src/graphql/node_resolver.ts b/ts/src/graphql/node_resolver.ts index bba6d2d60..bc0b2fb52 100644 --- a/ts/src/graphql/node_resolver.ts +++ b/ts/src/graphql/node_resolver.ts @@ -15,17 +15,20 @@ interface loadEnt { (v: Viewer, nodeType: string, id: ID): Promise; } +function encodeHelper(nodeType: string, id: ID): string { + return btoa(`node:${nodeType}:${id}`); +} + export class EntNodeResolver implements NodeResolver { constructor(private loader: loadEnt) {} encode(node: Ent): string { // let's do 3 parts. we take the "node" prefix - const str = `node:${node.nodeType}:${node.id}`; - return Buffer.from(str, "ascii").toString("base64"); + return encodeHelper(node.nodeType, node.id); } static decode(id: string): ID | null { - const decoded = Buffer.from(id, "base64").toString("ascii"); + const decoded = atob(id); let parts = decoded.split(":"); if (parts.length != 3) { return null; @@ -34,7 +37,7 @@ export class EntNodeResolver implements NodeResolver { } mustDecode(id: string): [ID, string] { - const decoded = Buffer.from(id, "base64").toString("ascii"); + const decoded = atob(id); let parts = decoded.split(":"); if (parts.length != 3) { throw new Error(`invalid id ${id} passed to EntNodeResolver`); @@ -43,7 +46,7 @@ export class EntNodeResolver implements NodeResolver { } async decodeObj(viewer: Viewer, id: string): Promise { - const decoded = Buffer.from(id, "base64").toString("ascii"); + const decoded = atob(id); let parts = decoded.split(":"); if (parts.length != 3 || parts[0] != "node") { return null; @@ -117,6 +120,5 @@ export function mustDecodeNullableIDFromGQLID( // This takes an ent and returns the graphql id export function encodeGQLID(node: Ent): string { // let's do 3 parts. we take the "node" prefix - const str = `node:${node.nodeType}:${node.id}`; - return Buffer.from(str, "ascii").toString("base64"); + return btoa(`node:${node.nodeType}:${node.id}`); }