@gettersethya/mira-client 0.1.0-alpha.2 → 0.1.0-alpha.21

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.
Files changed (53) hide show
  1. package/README.md +147 -0
  2. package/dist/src/client/auth.d.ts +38 -13
  3. package/dist/src/client/auth.d.ts.map +1 -1
  4. package/dist/src/client/auth.js +25 -1
  5. package/dist/src/client/auth.js.map +1 -1
  6. package/dist/src/client/collection.d.ts +30 -13
  7. package/dist/src/client/collection.d.ts.map +1 -1
  8. package/dist/src/client/collection.js +17 -9
  9. package/dist/src/client/collection.js.map +1 -1
  10. package/dist/src/client/factory.d.ts +27 -3
  11. package/dist/src/client/factory.d.ts.map +1 -1
  12. package/dist/src/client/factory.js +19 -8
  13. package/dist/src/client/factory.js.map +1 -1
  14. package/dist/src/client/file.d.ts +2 -2
  15. package/dist/src/client/file.d.ts.map +1 -1
  16. package/dist/src/client/file.js +1 -1
  17. package/dist/src/client/file.js.map +1 -1
  18. package/dist/src/client/handler.d.ts +1 -1
  19. package/dist/src/client/handler.d.ts.map +1 -1
  20. package/dist/src/client/handler.js +3 -3
  21. package/dist/src/client/handler.js.map +1 -1
  22. package/dist/src/client/index.d.ts +10 -8
  23. package/dist/src/client/index.d.ts.map +1 -1
  24. package/dist/src/client/index.js +4 -3
  25. package/dist/src/client/index.js.map +1 -1
  26. package/dist/src/client/telemetry.d.ts +81 -0
  27. package/dist/src/client/telemetry.d.ts.map +1 -0
  28. package/dist/src/client/telemetry.js +34 -0
  29. package/dist/src/client/telemetry.js.map +1 -0
  30. package/dist/src/client/types.d.ts +2 -118
  31. package/dist/src/client/types.d.ts.map +1 -1
  32. package/dist/src/index.d.ts +2 -1
  33. package/dist/src/index.d.ts.map +1 -1
  34. package/dist/src/index.js +1 -1
  35. package/dist/src/index.js.map +1 -1
  36. package/dist/tests/client/auth.test.js +64 -3
  37. package/dist/tests/client/auth.test.js.map +1 -1
  38. package/dist/tests/client/collection.test.js +101 -14
  39. package/dist/tests/client/collection.test.js.map +1 -1
  40. package/dist/tests/client/factory.test.d.ts +2 -0
  41. package/dist/tests/client/factory.test.d.ts.map +1 -0
  42. package/dist/tests/client/factory.test.js +48 -0
  43. package/dist/tests/client/factory.test.js.map +1 -0
  44. package/dist/tests/client/handler.test.js +3 -3
  45. package/dist/tests/client/handler.test.js.map +1 -1
  46. package/dist/tests/client/telemetry.test.d.ts +2 -0
  47. package/dist/tests/client/telemetry.test.d.ts.map +1 -0
  48. package/dist/tests/client/telemetry.test.js +30 -0
  49. package/dist/tests/client/telemetry.test.js.map +1 -0
  50. package/dist/tests/client/types.test.js +26 -3
  51. package/dist/tests/client/types.test.js.map +1 -1
  52. package/dist/tsconfig.tsbuildinfo +1 -1
  53. package/package.json +6 -5
@@ -1,17 +1,17 @@
1
- import { HttpClient, HttpClientRequest as HCR } from "@effect/platform";
2
1
  import { Effect, MutableRef } from "effect";
2
+ import { FetchHttpClient, HttpClient, HttpClientRequest as HCR } from "effect/http";
3
3
  import { makeBrowserAuth, makeServerAuth } from "./auth.js";
4
4
  import { makeCollectionClient } from "./collection.js";
5
5
  import { MiraError } from "./errors.js";
6
6
  import { makeClientHandler as makeHandler } from "./handler.js";
7
+ import { makeTelemetryClient } from "./telemetry.js";
7
8
  function catchAllErrors(effect) {
8
9
  return effect.pipe(Effect.catchTags({
9
- RequestError: (e) => Effect.fail(new MiraError({ status: 0, body: e.message })),
10
- ResponseError: (e) => Effect.fail(new MiraError({ status: e.response.status, body: e.message })),
10
+ HttpClientError: (e) => Effect.fail(new MiraError({ status: e.response?.status ?? 0, body: e.message })),
11
11
  HttpBodyError: (e) => Effect.fail(new MiraError({ status: 500, body: String(e) }))
12
12
  }));
13
13
  }
14
- function createExecute(baseUrl, authTokenRef) {
14
+ function createExecute(baseUrl, authTokenRef, sendCredentials) {
15
15
  return (req) => {
16
16
  const raw = Effect.gen(function* () {
17
17
  const http = yield* HttpClient.HttpClient;
@@ -27,14 +27,20 @@ function createExecute(baseUrl, authTokenRef) {
27
27
  }
28
28
  return (yield* res.json);
29
29
  });
30
- return catchAllErrors(raw);
30
+ const effect = catchAllErrors(raw);
31
+ return sendCredentials
32
+ ? Effect.provideService(effect, FetchHttpClient.RequestInit, { credentials: "include" })
33
+ : effect;
31
34
  };
32
35
  }
33
36
  function createMiraClientInternal(baseUrl = "/", type = "browser", defaultRetryOptions) {
34
37
  const fileTokenCacheRef = MutableRef.make(new Map());
35
38
  const authTokenRef = type === "server" ? MutableRef.make(null) : null;
36
39
  const loggedInRef = type === "browser" ? MutableRef.make(false) : null;
37
- const execute = createExecute(baseUrl, authTokenRef);
40
+ // Browser mode relies on the HttpOnly `mira_token` cookie, which the browser
41
+ // only stores/sends on cross-origin requests when `credentials: "include"`.
42
+ // Server/SSR mode authenticates via a Bearer token and never needs cookies.
43
+ const execute = createExecute(baseUrl, authTokenRef, type === "browser");
38
44
  const makeClientHandler = (effect) => makeHandler(effect);
39
45
  function buildCollectionClient(def) {
40
46
  const isAuth = def.schema["x-collection-kind"] === "auth";
@@ -48,6 +54,7 @@ function createMiraClientInternal(baseUrl = "/", type = "browser", defaultRetryO
48
54
  loggedInRef,
49
55
  fileTokenCacheRef,
50
56
  isAuth,
57
+ kind: def.schema["x-collection-kind"],
51
58
  ...(defaultRetryOptions !== undefined ? { defaultRetryOptions } : {})
52
59
  });
53
60
  }
@@ -73,7 +80,11 @@ function createMiraClientInternal(baseUrl = "/", type = "browser", defaultRetryO
73
80
  return {
74
81
  collection: (def) => buildCollectionClient(def),
75
82
  auth: makeAuth(),
76
- withCollections
83
+ telemetry: makeTelemetryClient(execute),
84
+ withCollections,
85
+ me: ((_def) => {
86
+ return makeClientHandler(execute(HCR.get("/api/auth/me")));
87
+ })
77
88
  };
78
89
  }
79
90
  return buildBaseClient();
@@ -100,7 +111,7 @@ function createMiraClientInternal(baseUrl = "/", type = "browser", defaultRetryO
100
111
  * @see CollectionClient — the per-collection client interface
101
112
  */
102
113
  export function createMiraClient(baseUrl = "/", opts = {}) {
103
- const { type = "browser", defaultRetryOptions } = opts;
114
+ const { defaultRetryOptions, type = "browser" } = opts;
104
115
  return createMiraClientInternal(baseUrl, type, defaultRetryOptions);
105
116
  }
106
117
  //# sourceMappingURL=factory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../src/client/factory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../src/client/factory.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import type { HttpClient } from "@effect/platform";
2
- import { Effect, MutableRef } from "effect";
3
1
  import type { AnyCollectionDef, FieldsMap } from "@gettersethya/mira-collection";
2
+ import { Effect, MutableRef } from "effect";
3
+ import type { HttpClient } from "effect/http";
4
4
  import { MiraError } from "./errors.js";
5
5
  import type { ClientHandler, ExecuteFn } from "./handler.js";
6
6
  import type { CollectionFileFields } from "./types.js";
@@ -1 +1 @@
1
- {"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../../src/client/file.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAqB,MAAM,kBAAkB,CAAA;AAGrE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AAC3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAA;AAChF,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAC5D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAEtD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GACxC,MAAM,CAOR;AAcD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,SAAS,EAClB,QAAQ,EAAE,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,GACjF,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC,UAAU,CAAC,CAkBjF;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,WAAW,EAAE,KAAK,CAAA;IAClB,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM,CAAA;CACrE,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,MAAM,wBAAwB,GAAG;IACrC,WAAW,EAAE,IAAI,CAAA;IACjB,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,aAAa,CAAC,MAAM,CAAC,CAAA;IACxF,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM,CAAA;IAClF,QAAQ,IAAI,aAAa,CAAC,MAAM,CAAC,CAAA;CAClC,CAAA;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,SAAS,EAChD,UAAU,EAAE,gBAAgB,EAC5B,MAAM,EAAE,gBAAgB,CAAC,QAAQ,CAAC,EAClC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,SAAS,EAClB,QAAQ,EAAE,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,EAClF,iBAAiB,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,UAAU,CAAC,KAAK,aAAa,CAAC,CAAC,CAAC,GACrG,oBAAoB,CAAC,CAAC,CAAC,CAoCzB"}
1
+ {"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../../src/client/file.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAA;AAChF,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AAC3C,OAAO,KAAK,EAAE,UAAU,EAAqB,MAAM,aAAa,CAAA;AAIhE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAC5D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAEtD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GACxC,MAAM,CAOR;AAcD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,SAAS,EAClB,QAAQ,EAAE,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,GACjF,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC,UAAU,CAAC,CAkBjF;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,WAAW,EAAE,KAAK,CAAA;IAClB,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM,CAAA;CACrE,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,MAAM,wBAAwB,GAAG;IACrC,WAAW,EAAE,IAAI,CAAA;IACjB,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,aAAa,CAAC,MAAM,CAAC,CAAA;IACxF,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM,CAAA;IAClF,QAAQ,IAAI,aAAa,CAAC,MAAM,CAAC,CAAA;CAClC,CAAA;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,SAAS,EAChD,UAAU,EAAE,gBAAgB,EAC5B,MAAM,EAAE,gBAAgB,CAAC,QAAQ,CAAC,EAClC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,SAAS,EAClB,QAAQ,EAAE,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,EAClF,iBAAiB,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,UAAU,CAAC,KAAK,aAAa,CAAC,CAAC,CAAC,GACrG,oBAAoB,CAAC,CAAC,CAAC,CAoCzB"}
@@ -1,5 +1,5 @@
1
- import { HttpClientRequest as HCR } from "@effect/platform";
2
1
  import { Effect, MutableRef } from "effect";
2
+ import { HttpClientRequest as HCR } from "effect/http";
3
3
  import { MiraError } from "./errors.js";
4
4
  /**
5
5
  * Build a file request URL for the Mira file-serving endpoint.
@@ -1 +1 @@
1
- {"version":3,"file":"file.js","sourceRoot":"","sources":["../../../src/client/file.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file.js","sourceRoot":"","sources":["../../../src/client/file.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import type { HttpClient, HttpClientRequest } from "@effect/platform";
2
1
  import { Effect } from "effect";
2
+ import type { HttpClient, HttpClientRequest } from "effect/http";
3
3
  import type { MiraError } from "./errors.js";
4
4
  /**
5
5
  * A dual-interface handler for dealing with Mira server responses.
@@ -1 +1 @@
1
- {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/client/handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAErE,OAAO,EAAS,MAAM,EAAgB,MAAM,QAAQ,CAAA;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAE5C;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,MAAM,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,IAAI,MAAM,SAAS,IAAI,GACjE;IACE,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,CAAA;IACrB,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,CAAC,UAAU,CAAC,CAAA;CACnE,GACD;IACE,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,CAAC,UAAU,CAAC,CAAA;CAChF,CAAA;AAEL;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EACjC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,UAAU,CAAC,GACzD,aAAa,CAAC,CAAC,CAAC,CAWlB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAC/C,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,CAAC,UAAU,CAAC,GAC5E,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAY9B;AAED;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,EACxB,GAAG,EAAE,iBAAiB,CAAC,iBAAiB,KACrC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,UAAU,CAAC,CAAA"}
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/client/handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,MAAM,EAAgB,MAAM,QAAQ,CAAA;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAGhE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAE5C;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,MAAM,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,IAAI,MAAM,SAAS,IAAI,GACjE;IACE,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,CAAA;IACrB,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,CAAC,UAAU,CAAC,CAAA;CACnE,GACD;IACE,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,CAAC,UAAU,CAAC,CAAA;CAChF,CAAA;AAEL;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EACjC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,UAAU,CAAC,GACzD,aAAa,CAAC,CAAC,CAAC,CAWlB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAC/C,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,CAAC,UAAU,CAAC,GAC5E,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAY9B;AAED;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,EACxB,GAAG,EAAE,iBAAiB,CAAC,iBAAiB,KACrC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,UAAU,CAAC,CAAA"}
@@ -1,5 +1,5 @@
1
- import { FetchHttpClient } from "@effect/platform";
2
1
  import { Cause, Effect, Exit, Option } from "effect";
2
+ import { FetchHttpClient } from "effect/http";
3
3
  /**
4
4
  * Construct a `ClientHandler<T>` (query variant, TInput = void) from an Effect.
5
5
  *
@@ -24,7 +24,7 @@ export function makeClientHandler(effect) {
24
24
  raw: () => Effect.runPromiseExit(effect.pipe(Effect.provide(FetchHttpClient.layer))).then((exit) => {
25
25
  if (Exit.isSuccess(exit))
26
26
  return exit.value;
27
- return Promise.reject(Option.getOrElse(Cause.failureOption(exit.cause), () => Cause.squash(exit.cause)));
27
+ return Promise.reject(Option.getOrElse(Cause.findErrorOption(exit.cause), () => Cause.squash(exit.cause)));
28
28
  }),
29
29
  toEffect: () => effect,
30
30
  };
@@ -53,7 +53,7 @@ export function makeMutationHandler(fn) {
53
53
  raw: (input) => Effect.runPromiseExit(fn(input).pipe(Effect.provide(FetchHttpClient.layer))).then((exit) => {
54
54
  if (Exit.isSuccess(exit))
55
55
  return exit.value;
56
- return Promise.reject(Option.getOrElse(Cause.failureOption(exit.cause), () => Cause.squash(exit.cause)));
56
+ return Promise.reject(Option.getOrElse(Cause.findErrorOption(exit.cause), () => Cause.squash(exit.cause)));
57
57
  }),
58
58
  toEffect: (input) => fn(input),
59
59
  };
@@ -1 +1 @@
1
- {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/client/handler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAyCpD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,iBAAiB,CAC/B,MAA0D;IAE1D,OAAO;QACL,GAAG,EAAE,GAAG,EAAE,CACR,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;YACtF,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;gBAAE,OAAO,IAAI,CAAC,KAAK,CAAA;YAC3C,OAAO,OAAO,CAAC,MAAM,CACnB,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAClF,CAAA;QACH,CAAC,CAAC;QACJ,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM;KACvB,CAAA;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,mBAAmB,CACjC,EAA6E;IAE7E,MAAM,OAAO,GAAG;QACd,GAAG,EAAE,CAAC,KAAa,EAAE,EAAE,CACrB,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;YACzF,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;gBAAE,OAAO,IAAI,CAAC,KAAK,CAAA;YAC3C,OAAO,OAAO,CAAC,MAAM,CACnB,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAClF,CAAA;QACH,CAAC,CAAC;QACJ,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;KACvC,CAAA;IACD,OAAO,OAAuC,CAAA;AAChD,CAAC"}
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/client/handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAEpD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AA0C7C;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,iBAAiB,CAC/B,MAA0D;IAE1D,OAAO;QACL,GAAG,EAAE,GAAG,EAAE,CACR,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;YACtF,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;gBAAE,OAAO,IAAI,CAAC,KAAK,CAAA;YAC3C,OAAO,OAAO,CAAC,MAAM,CACnB,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CACpF,CAAA;QACH,CAAC,CAAC;QACJ,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM;KACvB,CAAA;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,mBAAmB,CACjC,EAA6E;IAE7E,MAAM,OAAO,GAAG;QACd,GAAG,EAAE,CAAC,KAAa,EAAE,EAAE,CACrB,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;YACzF,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;gBAAE,OAAO,IAAI,CAAC,KAAK,CAAA;YAC3C,OAAO,OAAO,CAAC,MAAM,CACnB,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CACpF,CAAA;QACH,CAAC,CAAC;QACJ,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;KACvC,CAAA;IACD,OAAO,OAAuC,CAAA;AAChD,CAAC"}
@@ -1,11 +1,13 @@
1
- export { createMiraClient } from "./factory.js";
2
- export { makeClientHandler, makeMutationHandler } from "./handler.js";
3
- export type { ClientHandler, ExecuteFn } from "./handler.js";
4
- export { MiraError } from "./errors.js";
5
- export type { InferRecord, InferCreateInput, InferMutationInput, WithExpand, CollectionFileFields, RelationKeys, FileKeys } from "./types.js";
6
1
  export type { BrowserAuth, ServerAuth } from "./auth.js";
7
- export type { PublicFileFieldClient, ProtectedFileFieldClient } from "./file.js";
8
- export { buildFileUrl } from "./file.js";
2
+ export type { CollectionClient, FilterBuilder, RetryOptions } from "./collection.js";
9
3
  export { makeCollectionClient } from "./collection.js";
10
- export type { CollectionClient } from "./collection.js";
4
+ export { MiraError } from "./errors.js";
5
+ export { createMiraClient } from "./factory.js";
6
+ export type { ProtectedFileFieldClient, PublicFileFieldClient } from "./file.js";
7
+ export { buildFileUrl } from "./file.js";
8
+ export type { ClientHandler, ExecuteFn } from "./handler.js";
9
+ export { makeClientHandler, makeMutationHandler } from "./handler.js";
10
+ export type { ApiCollectionSchema, ApiFieldSchema, LogsResponse, SpanRow, SpansResponse, TelemetryClient } from "./telemetry.js";
11
+ export { makeTelemetryClient } from "./telemetry.js";
12
+ export type { AnyAuthCollectionDef, AuthCreateInput, AuthUpdateInput, CollectionFileFields, CollectionKind, FileKeys, InferCreateInput, InferMutationInput, InferRecord, RegisterInput, RelationKeys, WithExpand } from "./types.js";
11
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AACrE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,UAAU,EAAE,oBAAoB,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAC7I,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AACxD,YAAY,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAA;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AACtD,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/client/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AACxD,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AACpF,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC/C,YAAY,EAAE,wBAAwB,EAAC,qBAAqB,EAAE,MAAM,WAAW,CAAA;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACxC,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAC5D,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AACrE,YAAY,EAAE,mBAAmB,EAAE,cAAc,EAAE,YAAY,EAAE,OAAO,EAAE,aAAa,EAAC,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAC/H,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AACpD,YAAY,EAAE,oBAAoB,EAAC,eAAe,EAAC,eAAe,EAAC,oBAAoB,EAAE,cAAc,EAAE,QAAQ,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA"}
@@ -1,6 +1,7 @@
1
- export { createMiraClient } from "./factory.js";
2
- export { makeClientHandler, makeMutationHandler } from "./handler.js";
1
+ export { makeCollectionClient } from "./collection.js";
3
2
  export { MiraError } from "./errors.js";
3
+ export { createMiraClient } from "./factory.js";
4
4
  export { buildFileUrl } from "./file.js";
5
- export { makeCollectionClient } from "./collection.js";
5
+ export { makeClientHandler, makeMutationHandler } from "./handler.js";
6
+ export { makeTelemetryClient } from "./telemetry.js";
6
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAErE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAIvC,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/client/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAE/C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAExC,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAErE,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA"}
@@ -0,0 +1,81 @@
1
+ import type { FilterNode } from "@gettersethya/mira-collection";
2
+ import type { ClientHandler, ExecuteFn } from "./handler.js";
3
+ export type ApiFieldSchema = {
4
+ type?: string;
5
+ format?: string;
6
+ "x-kind"?: string;
7
+ "x-system"?: boolean;
8
+ "x-hidden"?: boolean;
9
+ "x-generated"?: boolean;
10
+ "x-view-only"?: boolean;
11
+ "x-required"?: boolean;
12
+ "x-collection"?: string;
13
+ "x-field"?: string;
14
+ "x-protected"?: boolean;
15
+ };
16
+ export type ApiCollectionSchema = {
17
+ name: string;
18
+ kind: "base" | "auth" | "view";
19
+ fields: Record<string, ApiFieldSchema>;
20
+ required?: Array<string>;
21
+ indexes?: Array<unknown>;
22
+ rules?: unknown;
23
+ viewQuery?: string;
24
+ };
25
+ type LogEntry = {
26
+ id: string;
27
+ seqId: number;
28
+ level: string;
29
+ message: string;
30
+ created: string;
31
+ traceId: string | null;
32
+ spanId: string | null;
33
+ };
34
+ export type SpanRow = {
35
+ id: string;
36
+ seqId?: number;
37
+ name: string;
38
+ traceId: string;
39
+ spanId: string;
40
+ parentSpanId: string | null;
41
+ kind: string;
42
+ durationMs: number;
43
+ status: "ok" | "error";
44
+ error: string | null;
45
+ attributes: Record<string, string | number | boolean>;
46
+ created: string;
47
+ };
48
+ export type LogsResponse = {
49
+ logs: Array<LogEntry>;
50
+ total: number;
51
+ limit: number;
52
+ nextCursor: number | null;
53
+ };
54
+ export type SpansResponse = {
55
+ spans: Array<SpanRow>;
56
+ total: number;
57
+ limit: number;
58
+ nextCursor: number | null;
59
+ };
60
+ export type TelemetryClient = {
61
+ getLogs(opts?: {
62
+ limit?: number;
63
+ cursor?: number | null;
64
+ filter?: FilterNode;
65
+ }): ClientHandler<LogsResponse>;
66
+ getSpans(opts?: {
67
+ limit?: number;
68
+ cursor?: number | null;
69
+ traceId?: string;
70
+ filter?: FilterNode;
71
+ }): ClientHandler<SpansResponse>;
72
+ /**
73
+ * Fetches all registered collection schemas from `GET /api/_schema`.
74
+ * Returns an array of `CollectionSchema` objects describing each collection's
75
+ * fields, kind, indexes, rules, and (for view collections) the SQL view query.
76
+ */
77
+ getSchema(): ClientHandler<Array<ApiCollectionSchema>>;
78
+ };
79
+ export declare function makeTelemetryClient(execute: ExecuteFn): TelemetryClient;
80
+ export {};
81
+ //# sourceMappingURL=telemetry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../../../src/client/telemetry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAA;AAG/D,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAG5D,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;IAC9B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;IACtC,QAAQ,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;IACxB,OAAO,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;IACxB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,KAAK,QAAQ,GAAG;IACd,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CACtB,CAAA;AAED,MAAM,MAAM,OAAO,GAAG;IACpB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,IAAI,GAAG,OAAO,CAAA;IACtB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAA;IACrD,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAA;IACrB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAC1B,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;IACrB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAC1B,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,CAAC,IAAI,CAAC,EAAE;QACb,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;QACtB,MAAM,CAAC,EAAE,UAAU,CAAA;KACpB,GAAG,aAAa,CAAC,YAAY,CAAC,CAAA;IAE/B,QAAQ,CAAC,IAAI,CAAC,EAAE;QACd,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;QACtB,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,MAAM,CAAC,EAAE,UAAU,CAAA;KACpB,GAAG,aAAa,CAAC,aAAa,CAAC,CAAA;IAEhC;;;;OAIG;IACH,SAAS,IAAI,aAAa,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAA;CACvD,CAAA;AAWD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,SAAS,GAAG,eAAe,CAuBvE"}
@@ -0,0 +1,34 @@
1
+ import { HttpClientRequest as HCR } from "effect/http";
2
+ import { makeClientHandler } from "./handler.js";
3
+ function buildQueryParams(params) {
4
+ const sp = new URLSearchParams();
5
+ for (const [k, v] of Object.entries(params)) {
6
+ if (v !== undefined)
7
+ sp.set(k, v);
8
+ }
9
+ const qs = sp.toString();
10
+ return qs ? `?${qs}` : "";
11
+ }
12
+ export function makeTelemetryClient(execute) {
13
+ return {
14
+ getLogs: (opts) => {
15
+ const qs = buildQueryParams({
16
+ limit: opts?.limit !== undefined ? String(opts.limit) : undefined,
17
+ after: opts?.cursor != null ? String(opts.cursor) : undefined,
18
+ filter: opts?.filter !== undefined ? JSON.stringify(opts.filter) : undefined,
19
+ });
20
+ return makeClientHandler(execute(HCR.get(`/api/_telemetry/logs${qs}`)));
21
+ },
22
+ getSpans: (opts) => {
23
+ const qs = buildQueryParams({
24
+ limit: opts?.limit !== undefined ? String(opts.limit) : undefined,
25
+ after: opts?.cursor != null ? String(opts.cursor) : undefined,
26
+ traceId: opts?.traceId,
27
+ filter: opts?.filter !== undefined ? JSON.stringify(opts.filter) : undefined,
28
+ });
29
+ return makeClientHandler(execute(HCR.get(`/api/_telemetry/spans${qs}`)));
30
+ },
31
+ getSchema: () => makeClientHandler(execute(HCR.get("/api/_schema"))),
32
+ };
33
+ }
34
+ //# sourceMappingURL=telemetry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../../src/client/telemetry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,IAAI,GAAG,EAAE,MAAM,aAAa,CAAA;AAGtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAuFhD,SAAS,gBAAgB,CAAC,MAA0C;IAClE,MAAM,EAAE,GAAG,IAAI,eAAe,EAAE,CAAA;IAChC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5C,IAAI,CAAC,KAAK,SAAS;YAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACnC,CAAC;IACD,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAA;IACxB,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;AAC3B,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAkB;IACpD,OAAO;QACL,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YAChB,MAAM,EAAE,GAAG,gBAAgB,CAAC;gBAC1B,KAAK,EAAE,IAAI,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS;gBACjE,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;gBAC7D,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;aAC7E,CAAC,CAAA;YACF,OAAO,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;QACzE,CAAC;QAED,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE;YACjB,MAAM,EAAE,GAAG,gBAAgB,CAAC;gBAC1B,KAAK,EAAE,IAAI,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS;gBACjE,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;gBAC7D,OAAO,EAAE,IAAI,EAAE,OAAO;gBACtB,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;aAC7E,CAAC,CAAA;YACF,OAAO,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,wBAAwB,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;QAC1E,CAAC;QAED,SAAS,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;KACrE,CAAA;AACH,CAAC"}
@@ -1,121 +1,6 @@
1
- import type { AnyCollectionDef, FieldKindToType, FieldsMap } from "@gettersethya/mira-collection";
1
+ import type { FieldsMap } from "@gettersethya/mira-collection";
2
2
  import type { ProtectedFileFieldClient, PublicFileFieldClient } from "./file.js";
3
- type FieldKindToInputType = Omit<FieldKindToType, "file"> & {
4
- file: File | Blob;
5
- };
6
- /**
7
- * The input type for creating/updating records when file uploads are involved.
8
- * Same structure as `InferCreateInput` but file fields accept `File | Blob`
9
- * instead of the server-returned URL string.
10
- *
11
- * When the input contains any `Blob` values, the client SDK automatically
12
- * dispatches a `multipart/form-data` request instead of JSON.
13
- *
14
- * @example
15
- * // For a collection with { avatar: Field.file() }
16
- * // InferMutationInput resolves avatar to: File | Blob
17
- *
18
- * @see InferCreateInput — create input without file upload support
19
- * @see InferRecord — the corresponding output type
20
- */
21
- export type InferMutationInput<F extends FieldsMap> = {
22
- [K in keyof F as F[K]["kind"] extends "seqId" ? never : F[K]["viewOnly"] extends true ? never : F[K]["required"] extends false ? K : never]?: FieldKindToInputType[F[K]["kind"]] | null;
23
- } & {
24
- [K in keyof F as F[K]["kind"] extends "seqId" ? never : F[K]["viewOnly"] extends true ? never : F[K]["required"] extends false ? never : K]: FieldKindToInputType[F[K]["kind"]];
25
- };
26
- /**
27
- * The full record type returned from the server for a collection.
28
- * Includes the system-managed `id`, `created`, and `updated` fields plus all
29
- * user-defined fields with their correct TypeScript types.
30
- *
31
- * Optional fields (`required: false`) are typed as `T | null`.
32
- *
33
- * @example
34
- * interface Post { title: Field.text(); body: Field.text({ required: false }) }
35
- * // InferRecord<Post> resolves to:
36
- * // { id: string; created: string; updated: string } & {
37
- * // title: string;
38
- * // body: string | null;
39
- * // }
40
- *
41
- * @see InferCreateInput — input type for creating records
42
- * @see InferMutationInput — mutation input type (file fields use File | Blob)
43
- */
44
- export type InferRecord<F extends FieldsMap> = {
45
- id: string;
46
- created: string;
47
- updated: string;
48
- } & {
49
- [K in keyof F as F[K]["kind"] extends "seqId" ? never : K]: F[K]["required"] extends false ? FieldKindToType[F[K]["kind"]] | null : FieldKindToType[F[K]["kind"]];
50
- };
51
- /**
52
- * The input type for creating a new record.
53
- * Excludes system-managed fields (`seqId`) and view-only fields.
54
- * Optional fields (`required: false`) are typed as `T | null` and are
55
- * themselves optional (`K?`)
56
- *
57
- * @example
58
- * // InferCreateInput<Post> resolves to:
59
- * // { title: string; body?: string | null }
60
- *
61
- * @see InferRecord — the corresponding output type
62
- * @see InferMutationInput — mutation variant that uses File | Blob for file fields
63
- */
64
- export type InferCreateInput<F extends FieldsMap> = {
65
- [K in keyof F as F[K]["kind"] extends "seqId" ? never : F[K]["viewOnly"] extends true ? never : F[K]["required"] extends false ? K : never]?: FieldKindToType[F[K]["kind"]] | null;
66
- } & {
67
- [K in keyof F as F[K]["kind"] extends "seqId" ? never : F[K]["viewOnly"] extends true ? never : F[K]["required"] extends false ? never : K]: FieldKindToType[F[K]["kind"]];
68
- };
69
- /**
70
- * Extracts the field names of type `relation` from a FieldsMap.
71
- * Used to constrain the `expand` option in collection queries.
72
- *
73
- * @example
74
- * // For { author: Field.relation(Users), title: Field.text() }
75
- * // RelationKeys resolves to: "author"
76
- *
77
- * @see WithExpand — uses RelationKeys to type the expand parameter
78
- */
79
- export type RelationKeys<F extends FieldsMap> = {
80
- [K in keyof F]: F[K]["kind"] extends "relation" ? K : never;
81
- }[keyof F] & string;
82
- /**
83
- * Extracts the field names of type `file` from a FieldsMap.
84
- *
85
- * @example
86
- * // For { avatar: Field.file(), name: Field.text() }
87
- * // FileKeys resolves to: "avatar"
88
- *
89
- * @see CollectionFileFields — maps file fields to their client interfaces
90
- */
91
- export type FileKeys<F extends FieldsMap> = {
92
- [K in keyof F]: F[K]["kind"] extends "file" ? K : never;
93
- }[keyof F] & string;
94
- /**
95
- * Augments `InferRecord<F>` with an `expand` property containing the resolved
96
- * related records for the requested relation field names.
97
- *
98
- * When `E` is an empty tuple (no expand requested), the result is just
99
- * `InferRecord<F>` without the `expand` property.
100
- *
101
- * @example
102
- * // WithExpand<PostFields, ["author"]> resolves to:
103
- * // InferRecord<Post> & {
104
- * // expand: { author: InferRecord<UserFields> }
105
- * // }
106
- *
107
- * @see InferRecord — the base record type
108
- * @see RelationKeys — used to constrain E to relation fields
109
- */
110
- export type WithExpand<F extends FieldsMap, E extends ReadonlyArray<string>> = InferRecord<F> & ([
111
- E
112
- ] extends [[]] ? {} : {
113
- expand: {
114
- [K in E[number] & RelationKeys<F>]: F[K] extends {
115
- _target: infer Target extends AnyCollectionDef;
116
- } ? InferRecord<Target["fields"]> : Record<string, unknown>;
117
- };
118
- });
3
+ export type { AnyAuthCollectionDef, AuthCreateInput, AuthUpdateInput, CollectionKind, CreateInput, FileKeys, InferCreateInput, InferMutationInput, InferRecord, RegisterInput, RelationKeys, UpdateInput, WithExpand } from "@gettersethya/mira-collection";
119
4
  /**
120
5
  * Maps file-type fields in a FieldsMap to their corresponding client interfaces.
121
6
  * Protected file fields get `ProtectedFileFieldClient`; public file fields get
@@ -134,5 +19,4 @@ export type CollectionFileFields<F extends FieldsMap> = {
134
19
  protected: true;
135
20
  } ? ProtectedFileFieldClient : PublicFileFieldClient;
136
21
  };
137
- export {};
138
22
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/client/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/client/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAA;AAE9D,OAAO,KAAK,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAA;AAEhF,YAAY,EACV,oBAAoB,EACpB,eAAe,EACf,eAAe,EACf,cAAc,EACd,WAAW,EACX,QAAQ,EACR,gBAAgB,EAChB,kBAAkB,EAClB,WAAW,EACX,aAAa,EACb,YAAY,EACZ,WAAW,EACX,UAAU,EACX,MAAM,+BAA+B,CAAA;AAEtC;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,SAAS,IAAI;KACrD,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,MAAM,GAAG,CAAC,GAAG,KAAK,GACtD,CAAC,CAAC,CAAC,CAAC,SAAS;QAAE,SAAS,EAAE,IAAI,CAAA;KAAE,GAAG,wBAAwB,GAAG,qBAAqB;CACtF,CAAA"}
@@ -1,3 +1,4 @@
1
- export * from "@gettersethya/mira-collection";
2
1
  export * from "./client/index.js";
2
+ export * from "@gettersethya/mira-collection";
3
+ export type { FilterBuilder } from "./client/collection.js";
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAA;AAC7C,cAAc,mBAAmB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA;AACjC,cAAc,+BAA+B,CAAA;AAC7C,YAAY,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA"}
package/dist/src/index.js CHANGED
@@ -1,3 +1,3 @@
1
- export * from "@gettersethya/mira-collection";
2
1
  export * from "./client/index.js";
2
+ export * from "@gettersethya/mira-collection";
3
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAA;AAC7C,cAAc,mBAAmB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA;AACjC,cAAc,+BAA+B,CAAA"}
@@ -1,7 +1,8 @@
1
- import { describe, expect, it } from "vitest";
2
1
  import { Effect, MutableRef } from "effect";
3
- import { makeBrowserAuth, makeServerAuth } from "../../src/client/auth.js";
4
- import { makeClientHandler } from "../../src/client/handler.js";
2
+ import { describe, expect, it } from "vitest";
3
+ import { makeBrowserAuth, makeServerAuth } from "@/client/auth.js";
4
+ import { MiraError } from "@/client/errors.js";
5
+ import { makeClientHandler } from "@/client/handler.js";
5
6
  describe("BrowserAuth", () => {
6
7
  it("isLoggedIn() false initially", () => {
7
8
  const loggedInRef = MutableRef.make(false);
@@ -15,6 +16,66 @@ describe("BrowserAuth", () => {
15
16
  const auth = makeBrowserAuth(execute, makeClientHandler, loggedInRef);
16
17
  expect(auth.isLoggedIn()).toBe(true);
17
18
  });
19
+ it("refresh() checks /api/auth/me, sets the flag, and returns true", async () => {
20
+ const loggedInRef = MutableRef.make(false);
21
+ let calls = 0;
22
+ const execute = () => Effect.sync(() => {
23
+ calls++;
24
+ return { collection: "users", record: {} };
25
+ });
26
+ const auth = makeBrowserAuth(execute, makeClientHandler, loggedInRef);
27
+ expect(await auth.refresh()).toBe(true);
28
+ expect(calls).toBe(1);
29
+ expect(auth.isLoggedIn()).toBe(true);
30
+ });
31
+ it("refresh() returns false and clears the flag when the check fails", async () => {
32
+ const loggedInRef = MutableRef.make(true);
33
+ const execute = () => Effect.fail(new MiraError({ status: 401, body: "unauthorized" }));
34
+ const auth = makeBrowserAuth(execute, makeClientHandler, loggedInRef);
35
+ expect(await auth.refresh()).toBe(false);
36
+ expect(auth.isLoggedIn()).toBe(false);
37
+ });
38
+ it("ensureSession() memoizes — concurrent calls share a single check", async () => {
39
+ const loggedInRef = MutableRef.make(false);
40
+ let calls = 0;
41
+ const execute = () => Effect.sync(() => {
42
+ calls++;
43
+ return { collection: "users", record: {} };
44
+ });
45
+ const auth = makeBrowserAuth(execute, makeClientHandler, loggedInRef);
46
+ const [first, second] = await Promise.all([auth.ensureSession(), auth.ensureSession()]);
47
+ expect(first).toBe(true);
48
+ expect(second).toBe(true);
49
+ expect(calls).toBe(1);
50
+ expect(auth.isLoggedIn()).toBe(true);
51
+ });
52
+ it("ensureSession() reuses the resolved check on later calls", async () => {
53
+ const loggedInRef = MutableRef.make(false);
54
+ let calls = 0;
55
+ const execute = () => Effect.sync(() => {
56
+ calls++;
57
+ return { collection: "users", record: {} };
58
+ });
59
+ const auth = makeBrowserAuth(execute, makeClientHandler, loggedInRef);
60
+ await auth.ensureSession();
61
+ await auth.ensureSession();
62
+ expect(calls).toBe(1);
63
+ });
64
+ it("clear() resets the memo so ensureSession() re-checks", async () => {
65
+ const loggedInRef = MutableRef.make(false);
66
+ let meCalls = 0;
67
+ const execute = (req) => Effect.sync(() => {
68
+ if (req.url.includes("/api/auth/me"))
69
+ meCalls++;
70
+ return { collection: "users", record: {} };
71
+ });
72
+ const auth = makeBrowserAuth(execute, makeClientHandler, loggedInRef);
73
+ await auth.ensureSession();
74
+ expect(meCalls).toBe(1);
75
+ auth.clear();
76
+ await auth.ensureSession();
77
+ expect(meCalls).toBe(2);
78
+ });
18
79
  });
19
80
  describe("ServerAuth", () => {
20
81
  it("token is null initially", () => {