pagiera 0.2.0-alpha.49 → 0.2.0-alpha.51

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/dist/client.d.ts CHANGED
@@ -2,6 +2,17 @@ export type PagieraClientOptions = {
2
2
  baseUrl?: string;
3
3
  fetch?: typeof globalThis.fetch;
4
4
  };
5
+ /**
6
+ * A failed API call, carrying the status the server answered with.
7
+ *
8
+ * The status is the difference between "your URL is refused" and "the server
9
+ * fell over", and a caller that wants to show the author what happened cannot
10
+ * recover it from a message alone.
11
+ */
12
+ export declare class PagieraRequestError extends Error {
13
+ readonly status: number;
14
+ constructor(message: string, status: number);
15
+ }
5
16
  /** Ready-to-pass adapters for `<PagieraStudio />`. */
6
17
  export declare function createPagieraClient(options?: PagieraClientOptions): {
7
18
  bootstrap: (pageId?: string) => Promise<any>;
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,oBAAoB,GAAG;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CACnC,CAAC;AA8EF,sDAAsD;AACtD,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,oBAAyB;yBAOzC,MAAM;uBACR,MAAM;;uBAEN,MAAM,YAAY,OAAO,mBAAmB,MAAM;2BAC9C,MAAM,QAAQ,MAAM;yBACtB,MAAM,QAAQ,MAAM,QAAQ,MAAM;4BAC/B,MAAM,QAAQ,MAAM,QAAQ,MAAM;yBACrC,MAAM;sCACO,MAAM,eAAe,MAAM;iCAChC,OAAO,eAAe,MAAM;gCAC7B,MAAM;kCACJ,MAAM,gBAAgB,OAAO,EAAE;4CACrB,MAAM,0BAA0B,MAAM;0BACxD,MAAM;4BACJ,MAAM;gCACF,OAAO,eAAe,MAAM;4BAChC,OAAO,YAAY,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,WAAW,WAAW;;EAIhG"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,oBAAoB,GAAG;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CACnC,CAAC;AAEF;;;;;;GAMG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;IACb,QAAQ,CAAC,MAAM,EAAE,MAAM;gBAAxC,OAAO,EAAE,MAAM,EAAW,MAAM,EAAE,MAAM;CAIvD;AAmFD,sDAAsD;AACtD,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,oBAAyB;yBAOzC,MAAM;uBACR,MAAM;;uBAEN,MAAM,YAAY,OAAO,mBAAmB,MAAM;2BAC9C,MAAM,QAAQ,MAAM;yBACtB,MAAM,QAAQ,MAAM,QAAQ,MAAM;4BAC/B,MAAM,QAAQ,MAAM,QAAQ,MAAM;yBACrC,MAAM;sCACO,MAAM,eAAe,MAAM;iCAChC,OAAO,eAAe,MAAM;gCAC7B,MAAM;kCACJ,MAAM,gBAAgB,OAAO,EAAE;4CACrB,MAAM,0BAA0B,MAAM;0BACxD,MAAM;4BACJ,MAAM;gCACF,OAAO,eAAe,MAAM;4BAChC,OAAO,YAAY,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,WAAW,WAAW;;EAIhG"}
package/dist/client.js CHANGED
@@ -1,11 +1,26 @@
1
+ /**
2
+ * A failed API call, carrying the status the server answered with.
3
+ *
4
+ * The status is the difference between "your URL is refused" and "the server
5
+ * fell over", and a caller that wants to show the author what happened cannot
6
+ * recover it from a message alone.
7
+ */
8
+ export class PagieraRequestError extends Error {
9
+ constructor(message, status) {
10
+ super(message);
11
+ this.status = status;
12
+ this.name = "PagieraRequestError";
13
+ }
14
+ }
1
15
  async function jsonRequest(fetcher, url, init) {
2
16
  const response = await fetcher(url, {
3
17
  ...init,
4
18
  headers: { "Content-Type": "application/json", ...init?.headers },
5
19
  });
6
20
  const body = await response.json().catch(() => null);
7
- if (!response.ok)
8
- throw new Error(body?.error ?? `Pagiera API request failed (${response.status})`);
21
+ if (!response.ok) {
22
+ throw new PagieraRequestError(body?.error ?? `Pagiera API request failed (${response.status})`, response.status);
23
+ }
9
24
  return body;
10
25
  }
11
26
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -8378,6 +8378,7 @@ function DataSourceModal({
8378
8378
  );
8379
8379
  const [keys, setKeys] = useState4(sample?.keys ?? []);
8380
8380
  const [testQuery, setTestQuery] = useState4("");
8381
+ const [failure, setFailure] = useState4(null);
8381
8382
  const [busy, startTest] = useTransition();
8382
8383
  useEffect3(() => {
8383
8384
  const onKey = (event) => {
@@ -8397,18 +8398,40 @@ function DataSourceModal({
8397
8398
  return "This is not valid JSON yet.";
8398
8399
  }
8399
8400
  })();
8401
+ const describe = (message, status) => ({
8402
+ message,
8403
+ status,
8404
+ method,
8405
+ url: source.url,
8406
+ query: testQuery,
8407
+ params: (source.params ?? []).filter((pair) => pair.key.trim()).length,
8408
+ // Names only. A header's value is where an API key would be, and a
8409
+ // failure panel is not the place to put one on screen.
8410
+ headers: (source.headers ?? []).map((pair) => pair.key.trim()).filter(Boolean)
8411
+ });
8400
8412
  const run = () => {
8401
8413
  startTest(async () => {
8402
- const result = await preview(source, testQuery);
8403
- if (result.status === "error") {
8404
- setError(result.message);
8405
- return;
8414
+ try {
8415
+ const result = await preview(source, testQuery);
8416
+ if (result.status === "error") {
8417
+ setError(result.message);
8418
+ setFailure(describe(result.message));
8419
+ setTab("response");
8420
+ return;
8421
+ }
8422
+ setError(null);
8423
+ setFailure(null);
8424
+ setRows(result.rows);
8425
+ setKeys(result.keys);
8426
+ setTab("response");
8427
+ onSample({ keys: result.keys, rows: result.rows });
8428
+ } catch (reason) {
8429
+ const message = reason instanceof Error ? reason.message : String(reason);
8430
+ const status = typeof reason?.status === "number" ? reason.status : void 0;
8431
+ setError(message);
8432
+ setFailure(describe(message, status));
8433
+ setTab("response");
8406
8434
  }
8407
- setError(null);
8408
- setRows(result.rows);
8409
- setKeys(result.keys);
8410
- setTab("response");
8411
- onSample({ keys: result.keys, rows: result.rows });
8412
8435
  });
8413
8436
  };
8414
8437
  return /* @__PURE__ */ jsxs4(
@@ -8597,7 +8620,8 @@ function DataSourceModal({
8597
8620
  rows,
8598
8621
  keys,
8599
8622
  path: source.path,
8600
- onPath: (path) => onChange({ path })
8623
+ onPath: (path) => onChange({ path }),
8624
+ failure
8601
8625
  }
8602
8626
  )
8603
8627
  ]
@@ -8746,12 +8770,46 @@ function PairTable({
8746
8770
  ] })
8747
8771
  ] });
8748
8772
  }
8773
+ function FailureView({ failure }) {
8774
+ const rows = [
8775
+ ["Method", failure.method],
8776
+ ["URL", failure.url || "(empty)"],
8777
+ ...failure.query ? [["Test query", failure.query]] : [],
8778
+ ...failure.params ? [["Query parameters", String(failure.params)]] : [],
8779
+ ...failure.headers.length ? [["Headers", failure.headers.join(", ")]] : []
8780
+ ];
8781
+ return /* @__PURE__ */ jsxs4("div", { className: "space-y-3", children: [
8782
+ /* @__PURE__ */ jsxs4("div", { className: "flex items-start gap-2 rounded-lg border border-red-500/30 bg-red-500/10 px-3 py-2.5", children: [
8783
+ /* @__PURE__ */ jsx5(IconAlertTriangle, { size: 14, className: "mt-0.5 shrink-0 text-red-400" }),
8784
+ /* @__PURE__ */ jsxs4("div", { className: "min-w-0 space-y-1", children: [
8785
+ /* @__PURE__ */ jsxs4("p", { className: "text-[11px] font-semibold text-red-300", children: [
8786
+ "Request failed",
8787
+ failure.status ? ` \xB7 ${failure.status}` : ""
8788
+ ] }),
8789
+ /* @__PURE__ */ jsx5("p", { className: "break-words text-[11px] leading-relaxed text-ed-muted", children: failure.message })
8790
+ ] })
8791
+ ] }),
8792
+ /* @__PURE__ */ jsx5("div", { className: "overflow-hidden rounded-lg border border-ed-border", children: rows.map(([label, value], index) => /* @__PURE__ */ jsxs4(
8793
+ "div",
8794
+ {
8795
+ className: `flex gap-3 px-3 py-2 ${index > 0 ? "border-t border-ed-border" : ""}`,
8796
+ children: [
8797
+ /* @__PURE__ */ jsx5("span", { className: "w-28 shrink-0 text-[10px] text-ed-faint", children: label }),
8798
+ /* @__PURE__ */ jsx5("span", { className: "min-w-0 flex-1 break-all font-mono text-[10px] text-ed-text", children: value })
8799
+ ]
8800
+ },
8801
+ label
8802
+ )) })
8803
+ ] });
8804
+ }
8749
8805
  function ResponseView({
8750
8806
  rows,
8751
8807
  keys,
8752
8808
  path,
8753
- onPath
8809
+ onPath,
8810
+ failure
8754
8811
  }) {
8812
+ if (failure) return /* @__PURE__ */ jsx5(FailureView, { failure });
8755
8813
  if (rows.length === 0) {
8756
8814
  return /* @__PURE__ */ jsxs4("div", { className: "flex flex-col items-center justify-center gap-2 py-16 text-center", children: [
8757
8815
  /* @__PURE__ */ jsx5("p", { className: "text-[13px] text-ed-muted", children: "No response yet" }),