meridian-sdk 0.4.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # meridian-sdk
2
2
 
3
+ ## 1.0.1
4
+
5
+ ### Patch Changes
6
+
7
+ - 5cb3908: Fix `issueToken` sending msgpack instead of JSON — the `/tokens` endpoint only accepts JSON.
8
+
3
9
  ## 0.4.0
4
10
 
5
11
  ### Minor Changes
@@ -20,6 +20,7 @@ export declare class HttpClient {
20
20
  ttl_ms: number;
21
21
  permissions: Permissions;
22
22
  }): Effect.Effect<TokenIssueResponse, HttpError | NetworkError>;
23
+ private requestJson;
23
24
  private request;
24
25
  }
25
26
  //# sourceMappingURL=http.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/transport/http.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAU,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EACL,eAAe,EACf,cAAc,EACd,kBAAkB,EAElB,KAAK,WAAW,EACjB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,KAAK,EAAE,MAAM,CAAC;gBAEF,MAAM,EAAE,gBAAgB;IAMpC,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,SAAS,GAAG,YAAY,CAAC;IAIzF,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,SAAS,GAAG,YAAY,CAAC;IAIpG,QAAQ,CACN,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE,WAAW,GACpB,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,SAAS,GAAG,YAAY,CAAC;IAS3D,UAAU,CACR,EAAE,EAAE,MAAM,EACV,IAAI,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,WAAW,CAAA;KAAE,GACpE,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,SAAS,GAAG,YAAY,CAAC;IAI9D,OAAO,CAAC,OAAO;CAyDhB"}
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/transport/http.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAU,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EACL,eAAe,EACf,cAAc,EACd,kBAAkB,EAElB,KAAK,WAAW,EACjB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,KAAK,EAAE,MAAM,CAAC;gBAEF,MAAM,EAAE,gBAAgB;IAMpC,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,SAAS,GAAG,YAAY,CAAC;IAIzF,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,SAAS,GAAG,YAAY,CAAC;IAIpG,QAAQ,CACN,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE,WAAW,GACpB,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,SAAS,GAAG,YAAY,CAAC;IAS3D,UAAU,CACR,EAAE,EAAE,MAAM,EACV,IAAI,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,WAAW,CAAA;KAAE,GACpE,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,SAAS,GAAG,YAAY,CAAC;IAI9D,OAAO,CAAC,WAAW;IAsDnB,OAAO,CAAC,OAAO;CAyDhB"}
@@ -26,7 +26,47 @@ export class HttpClient {
26
26
  return this.request(CrdtGetResponse, "GET", path);
27
27
  }
28
28
  issueToken(ns, opts) {
29
- return this.request(TokenIssueResponse, "POST", `/v1/namespaces/${ns}/tokens`, opts);
29
+ return this.requestJson(TokenIssueResponse, "POST", `/v1/namespaces/${ns}/tokens`, opts);
30
+ }
31
+ requestJson(responseSchema, method, path, body) {
32
+ const url = `${this.baseUrl}${path}`;
33
+ const headers = {
34
+ Authorization: `Bearer ${this.token}`,
35
+ };
36
+ let bodyStr;
37
+ if (body !== undefined) {
38
+ bodyStr = JSON.stringify(body);
39
+ headers["Content-Type"] = "application/json";
40
+ }
41
+ const fetchEffect = Effect.tryPromise({
42
+ try: async () => {
43
+ const controller = new AbortController();
44
+ const timer = setTimeout(() => controller.abort(), this.timeoutMs);
45
+ try {
46
+ const response = await fetch(url, { method, headers, body: bodyStr, signal: controller.signal });
47
+ const text = await response.text();
48
+ return { response, text };
49
+ }
50
+ finally {
51
+ clearTimeout(timer);
52
+ }
53
+ },
54
+ catch: (e) => new NetworkError({ message: e instanceof Error ? e.message : "fetch failed", cause: e }),
55
+ });
56
+ return fetchEffect.pipe(Effect.flatMap(({ response, text }) => {
57
+ if (!response.ok) {
58
+ let errBody;
59
+ try {
60
+ errBody = Schema.decodeUnknownSync(ErrorResponse)(JSON.parse(text));
61
+ }
62
+ catch {
63
+ errBody = { error: "unknown", message: `HTTP ${response.status}` };
64
+ }
65
+ return Effect.fail(new HttpError({ status: response.status, body: errBody }));
66
+ }
67
+ const raw = JSON.parse(text);
68
+ return Schema.decodeUnknown(responseSchema)(raw).pipe(Effect.mapError((e) => new NetworkError({ message: `Response schema validation failed: ${e.message}` })));
69
+ }));
30
70
  }
31
71
  request(responseSchema, method, path, body) {
32
72
  const url = `${this.baseUrl}${path}`;
@@ -1 +1 @@
1
- {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/transport/http.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/transport/http.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "meridian-sdk",
3
- "version": "0.4.0",
3
+ "version": "1.0.1",
4
4
  "description": "TypeScript SDK for Meridian CRDT server",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -52,7 +52,61 @@ export class HttpClient {
52
52
  ns: string,
53
53
  opts: { client_id: number; ttl_ms: number; permissions: Permissions },
54
54
  ): Effect.Effect<TokenIssueResponse, HttpError | NetworkError> {
55
- return this.request(TokenIssueResponse, "POST", `/v1/namespaces/${ns}/tokens`, opts);
55
+ return this.requestJson(TokenIssueResponse, "POST", `/v1/namespaces/${ns}/tokens`, opts);
56
+ }
57
+
58
+ private requestJson<A, I>(
59
+ responseSchema: Schema.Schema<A, I>,
60
+ method: string,
61
+ path: string,
62
+ body?: unknown,
63
+ ): Effect.Effect<A, HttpError | NetworkError> {
64
+ const url = `${this.baseUrl}${path}`;
65
+ const headers: Record<string, string> = {
66
+ Authorization: `Bearer ${this.token}`,
67
+ };
68
+
69
+ let bodyStr: string | undefined;
70
+ if (body !== undefined) {
71
+ bodyStr = JSON.stringify(body);
72
+ headers["Content-Type"] = "application/json";
73
+ }
74
+
75
+ const fetchEffect = Effect.tryPromise({
76
+ try: async () => {
77
+ const controller = new AbortController();
78
+ const timer = setTimeout(() => controller.abort(), this.timeoutMs);
79
+ try {
80
+ const response = await fetch(url, { method, headers, body: bodyStr, signal: controller.signal });
81
+ const text = await response.text();
82
+ return { response, text };
83
+ } finally {
84
+ clearTimeout(timer);
85
+ }
86
+ },
87
+ catch: (e) =>
88
+ new NetworkError({ message: e instanceof Error ? e.message : "fetch failed", cause: e }),
89
+ });
90
+
91
+ return fetchEffect.pipe(
92
+ Effect.flatMap(({ response, text }): Effect.Effect<A, HttpError | NetworkError> => {
93
+ if (!response.ok) {
94
+ let errBody: ErrorResponse;
95
+ try {
96
+ errBody = Schema.decodeUnknownSync(ErrorResponse)(JSON.parse(text));
97
+ } catch {
98
+ errBody = { error: "unknown", message: `HTTP ${response.status}` };
99
+ }
100
+ return Effect.fail(new HttpError({ status: response.status, body: errBody }));
101
+ }
102
+ const raw = JSON.parse(text);
103
+ return Schema.decodeUnknown(responseSchema)(raw).pipe(
104
+ Effect.mapError((e) =>
105
+ new NetworkError({ message: `Response schema validation failed: ${e.message}` }),
106
+ ),
107
+ );
108
+ }),
109
+ );
56
110
  }
57
111
 
58
112
  private request<A, I>(