pagiera 0.2.0-alpha.49 → 0.2.0-alpha.50
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 +11 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +17 -2
- package/dist/client.js.map +1 -1
- package/dist/full-editor.js +69 -11
- package/dist/full-editor.js.map +2 -2
- package/dist/full.css +15 -0
- package/dist/internal/app/p/editor/data-modal.d.ts.map +1 -1
- package/dist/internal/app/p/editor/data-modal.js +54 -11
- package/dist/internal/app/p/editor/data-modal.js.map +1 -1
- package/dist/server.js +9 -6
- package/dist/server.js.map +2 -2
- package/package.json +1 -1
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>;
|
package/dist/client.d.ts.map
CHANGED
|
@@ -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;
|
|
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
|
|
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
|
/**
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAKA,KAAK,UAAU,WAAW,CAAC,OAAgC,EAAE,GAAW,EAAE,IAAkB;IACxF,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE;QAChC,GAAG,IAAI;QACP,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE;KACpE,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IACrD,IAAI,CAAC,QAAQ,CAAC,EAAE;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/full-editor.js
CHANGED
|
@@ -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
|
-
|
|
8403
|
-
|
|
8404
|
-
|
|
8405
|
-
|
|
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" }),
|