@btst/stack 3.0.1 → 3.0.2
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/README.md +2 -2
- package/dist/plugins/form-builder/api/index.d.cts +1 -1
- package/dist/plugins/form-builder/api/index.d.mts +1 -1
- package/dist/plugins/form-builder/api/index.d.ts +1 -1
- package/dist/plugins/form-builder/client/hooks/index.d.cts +1 -1
- package/dist/plugins/form-builder/client/hooks/index.d.mts +1 -1
- package/dist/plugins/form-builder/client/hooks/index.d.ts +1 -1
- package/dist/plugins/form-builder/query-keys.d.cts +1 -1
- package/dist/plugins/form-builder/query-keys.d.mts +1 -1
- package/dist/plugins/form-builder/query-keys.d.ts +1 -1
- package/package.json +1 -1
- package/src/__tests__/generated-static-identity.test.tsx +128 -0
- package/src/plugins/kanban/__tests__/authorization.test.ts +54 -0
- package/dist/shared/{stack.zch70Loj.d.cts → stack.AWSs6TXN.d.cts} +14 -14
- package/dist/shared/{stack.CGmh-Lpe.d.ts → stack.D20bOqfr.d.ts} +14 -14
- package/dist/shared/{stack.Doy2_wgl.d.mts → stack.HB5uGLpE.d.mts} +14 -14
package/README.md
CHANGED
|
@@ -52,13 +52,13 @@ Render the generated `<Toaster />` in your root layout and start from a clean co
|
|
|
52
52
|
Run the released generator from the application root:
|
|
53
53
|
|
|
54
54
|
```bash
|
|
55
|
-
pnpm dlx @btst/codegen@0.2.
|
|
55
|
+
pnpm dlx @btst/codegen@0.2.1 init \
|
|
56
56
|
--framework nextjs \
|
|
57
57
|
--adapter memory \
|
|
58
58
|
--plugins blog
|
|
59
59
|
```
|
|
60
60
|
|
|
61
|
-
The generator shows detected-file and conflict prompts before it writes. It installs `@btst/stack@3.0.0`, registers Blog on the backend and client, mounts the API and page routes, adds the plugin CSS, and wires the shared provider.
|
|
61
|
+
The generator shows detected-file and conflict prompts before it writes. It installs `@btst/stack@3.0.2`, `next-themes@0.4.6`, registers Blog on the backend and client, mounts the API and page routes, adds the plugin CSS, and wires the shared provider.
|
|
62
62
|
|
|
63
63
|
Set the trusted local origins in `.env.local`:
|
|
64
64
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { k as FORM_QUERY_KEYS, a as FormBuilderApiRouter, c as FormBuilderOperationError, e as FormBuilderOperations, b as FormBuilderRouteKey, g as FormListOperationResult, h as SubmissionDetailOperationResult, i as SubmissionListOperationResult, j as SubmitOperationResult, d as createFormBuilderOperations, f as formBuilderBackendPlugin } from '../../../shared/stack.
|
|
1
|
+
export { k as FORM_QUERY_KEYS, a as FormBuilderApiRouter, c as FormBuilderOperationError, e as FormBuilderOperations, b as FormBuilderRouteKey, g as FormListOperationResult, h as SubmissionDetailOperationResult, i as SubmissionListOperationResult, j as SubmitOperationResult, d as createFormBuilderOperations, f as formBuilderBackendPlugin } from '../../../shared/stack.AWSs6TXN.cjs';
|
|
2
2
|
export { formBuilderPermissions } from '../permissions.cjs';
|
|
3
3
|
import { S as SerializedForm, d as SerializedFormSubmissionWithData, F as Form, f as FormSubmission, a as SerializedFormSubmission, c as SerializedFormSubmissionSummary, g as FormSubmissionWithForm } from '../../../shared/stack.v2O65JqF.cjs';
|
|
4
4
|
export { h as FormBuilderBackendConfig, i as FormBuilderBackendHooks, j as FormBuilderHookContext, k as FormBuilderOperationHookContext, l as FormCreateOperationContext, m as FormDeleteOperationContext, o as FormGetForUpdateOperationContext, n as FormGetOperationContext, p as FormListOperationContext, q as FormUpdateOperationContext, r as SubmissionCreateOperationContext, s as SubmissionDeleteOperationContext, t as SubmissionGetOperationContext, v as SubmissionHookContext, b as SubmissionListFormContext, u as SubmissionListOperationContext } from '../../../shared/stack.v2O65JqF.cjs';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { k as FORM_QUERY_KEYS, a as FormBuilderApiRouter, c as FormBuilderOperationError, e as FormBuilderOperations, b as FormBuilderRouteKey, g as FormListOperationResult, h as SubmissionDetailOperationResult, i as SubmissionListOperationResult, j as SubmitOperationResult, d as createFormBuilderOperations, f as formBuilderBackendPlugin } from '../../../shared/stack.
|
|
1
|
+
export { k as FORM_QUERY_KEYS, a as FormBuilderApiRouter, c as FormBuilderOperationError, e as FormBuilderOperations, b as FormBuilderRouteKey, g as FormListOperationResult, h as SubmissionDetailOperationResult, i as SubmissionListOperationResult, j as SubmitOperationResult, d as createFormBuilderOperations, f as formBuilderBackendPlugin } from '../../../shared/stack.HB5uGLpE.mjs';
|
|
2
2
|
export { formBuilderPermissions } from '../permissions.mjs';
|
|
3
3
|
import { S as SerializedForm, d as SerializedFormSubmissionWithData, F as Form, f as FormSubmission, a as SerializedFormSubmission, c as SerializedFormSubmissionSummary, g as FormSubmissionWithForm } from '../../../shared/stack.OYT8WU4n.mjs';
|
|
4
4
|
export { h as FormBuilderBackendConfig, i as FormBuilderBackendHooks, j as FormBuilderHookContext, k as FormBuilderOperationHookContext, l as FormCreateOperationContext, m as FormDeleteOperationContext, o as FormGetForUpdateOperationContext, n as FormGetOperationContext, p as FormListOperationContext, q as FormUpdateOperationContext, r as SubmissionCreateOperationContext, s as SubmissionDeleteOperationContext, t as SubmissionGetOperationContext, v as SubmissionHookContext, b as SubmissionListFormContext, u as SubmissionListOperationContext } from '../../../shared/stack.OYT8WU4n.mjs';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { k as FORM_QUERY_KEYS, a as FormBuilderApiRouter, c as FormBuilderOperationError, e as FormBuilderOperations, b as FormBuilderRouteKey, g as FormListOperationResult, h as SubmissionDetailOperationResult, i as SubmissionListOperationResult, j as SubmitOperationResult, d as createFormBuilderOperations, f as formBuilderBackendPlugin } from '../../../shared/stack.
|
|
1
|
+
export { k as FORM_QUERY_KEYS, a as FormBuilderApiRouter, c as FormBuilderOperationError, e as FormBuilderOperations, b as FormBuilderRouteKey, g as FormListOperationResult, h as SubmissionDetailOperationResult, i as SubmissionListOperationResult, j as SubmitOperationResult, d as createFormBuilderOperations, f as formBuilderBackendPlugin } from '../../../shared/stack.D20bOqfr.js';
|
|
2
2
|
export { formBuilderPermissions } from '../permissions.js';
|
|
3
3
|
import { S as SerializedForm, d as SerializedFormSubmissionWithData, F as Form, f as FormSubmission, a as SerializedFormSubmission, c as SerializedFormSubmissionSummary, g as FormSubmissionWithForm } from '../../../shared/stack.C3bU9w6L.js';
|
|
4
4
|
export { h as FormBuilderBackendConfig, i as FormBuilderBackendHooks, j as FormBuilderHookContext, k as FormBuilderOperationHookContext, l as FormCreateOperationContext, m as FormDeleteOperationContext, o as FormGetForUpdateOperationContext, n as FormGetOperationContext, p as FormListOperationContext, q as FormUpdateOperationContext, r as SubmissionCreateOperationContext, s as SubmissionDeleteOperationContext, t as SubmissionGetOperationContext, v as SubmissionHookContext, b as SubmissionListFormContext, u as SubmissionListOperationContext } from '../../../shared/stack.C3bU9w6L.js';
|
|
@@ -8,7 +8,7 @@ import '@btst/stack/context';
|
|
|
8
8
|
import '../../permissions.cjs';
|
|
9
9
|
import 'zod';
|
|
10
10
|
import '@btst/stack/plugins/client';
|
|
11
|
-
import '../../../../shared/stack.
|
|
11
|
+
import '../../../../shared/stack.AWSs6TXN.cjs';
|
|
12
12
|
import '@btst/db';
|
|
13
13
|
import 'zod/v4/core';
|
|
14
14
|
import 'better-call';
|
|
@@ -8,7 +8,7 @@ import '@btst/stack/context';
|
|
|
8
8
|
import '../../permissions.mjs';
|
|
9
9
|
import 'zod';
|
|
10
10
|
import '@btst/stack/plugins/client';
|
|
11
|
-
import '../../../../shared/stack.
|
|
11
|
+
import '../../../../shared/stack.HB5uGLpE.mjs';
|
|
12
12
|
import '@btst/db';
|
|
13
13
|
import 'zod/v4/core';
|
|
14
14
|
import 'better-call';
|
|
@@ -8,7 +8,7 @@ import '@btst/stack/context';
|
|
|
8
8
|
import '../../permissions.js';
|
|
9
9
|
import 'zod';
|
|
10
10
|
import '@btst/stack/plugins/client';
|
|
11
|
-
import '../../../../shared/stack.
|
|
11
|
+
import '../../../../shared/stack.D20bOqfr.js';
|
|
12
12
|
import '@btst/db';
|
|
13
13
|
import 'zod/v4/core';
|
|
14
14
|
import 'better-call';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as _btst_stack_plugins_client from '@btst/stack/plugins/client';
|
|
2
2
|
import { createApiClient } from '@btst/stack/plugins/client';
|
|
3
|
-
import { F as FormsListDiscriminator, S as SubmissionsListDiscriminator, a as FormBuilderApiRouter } from '../../shared/stack.
|
|
3
|
+
import { F as FormsListDiscriminator, S as SubmissionsListDiscriminator, a as FormBuilderApiRouter } from '../../shared/stack.AWSs6TXN.cjs';
|
|
4
4
|
import { P as PaginatedForms, S as SerializedForm, a as SerializedFormSubmission, e as PaginatedFormSubmissions, d as SerializedFormSubmissionWithData } from '../../shared/stack.v2O65JqF.cjs';
|
|
5
5
|
import { StackIdentity } from '@btst/stack/context';
|
|
6
6
|
import '@btst/stack/plugins/api';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as _btst_stack_plugins_client from '@btst/stack/plugins/client';
|
|
2
2
|
import { createApiClient } from '@btst/stack/plugins/client';
|
|
3
|
-
import { F as FormsListDiscriminator, S as SubmissionsListDiscriminator, a as FormBuilderApiRouter } from '../../shared/stack.
|
|
3
|
+
import { F as FormsListDiscriminator, S as SubmissionsListDiscriminator, a as FormBuilderApiRouter } from '../../shared/stack.HB5uGLpE.mjs';
|
|
4
4
|
import { P as PaginatedForms, S as SerializedForm, a as SerializedFormSubmission, e as PaginatedFormSubmissions, d as SerializedFormSubmissionWithData } from '../../shared/stack.OYT8WU4n.mjs';
|
|
5
5
|
import { StackIdentity } from '@btst/stack/context';
|
|
6
6
|
import '@btst/stack/plugins/api';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as _btst_stack_plugins_client from '@btst/stack/plugins/client';
|
|
2
2
|
import { createApiClient } from '@btst/stack/plugins/client';
|
|
3
|
-
import { F as FormsListDiscriminator, S as SubmissionsListDiscriminator, a as FormBuilderApiRouter } from '../../shared/stack.
|
|
3
|
+
import { F as FormsListDiscriminator, S as SubmissionsListDiscriminator, a as FormBuilderApiRouter } from '../../shared/stack.D20bOqfr.js';
|
|
4
4
|
import { P as PaginatedForms, S as SerializedForm, a as SerializedFormSubmission, e as PaginatedFormSubmissions, d as SerializedFormSubmissionWithData } from '../../shared/stack.C3bU9w6L.js';
|
|
5
5
|
import { StackIdentity } from '@btst/stack/context';
|
|
6
6
|
import '@btst/stack/plugins/api';
|
package/package.json
CHANGED
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
// @vitest-environment jsdom
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { pathToFileURL } from "node:url";
|
|
4
|
+
import { resolve } from "node:path";
|
|
5
|
+
import { act } from "react";
|
|
6
|
+
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
|
|
7
|
+
import { renderToString } from "react-dom/server";
|
|
8
|
+
import { hydrateRoot } from "react-dom/client";
|
|
9
|
+
import { expect, it, vi } from "vitest";
|
|
10
|
+
import ts from "typescript";
|
|
11
|
+
import { z } from "zod";
|
|
12
|
+
import { defineAuthorization } from "../authorization";
|
|
13
|
+
import { createClientAuth } from "../authorization/client";
|
|
14
|
+
import { createClientStack } from "../client";
|
|
15
|
+
import { StackProvider, useIdentity } from "../context";
|
|
16
|
+
import { blogPermissions } from "../plugins/blog/permissions";
|
|
17
|
+
|
|
18
|
+
(globalThis as any).IS_REACT_ACT_ENVIRONMENT = true;
|
|
19
|
+
|
|
20
|
+
// Execute the shipped templates. Only framework/application imports are injected;
|
|
21
|
+
// identity state, permission evaluation, SSR, effects and hydration are real.
|
|
22
|
+
function compile(source: string, modules: Record<string, unknown>) {
|
|
23
|
+
const { outputText } = ts.transpileModule(source, {
|
|
24
|
+
compilerOptions: {
|
|
25
|
+
module: ts.ModuleKind.CommonJS,
|
|
26
|
+
jsx: ts.JsxEmit.ReactJSX,
|
|
27
|
+
},
|
|
28
|
+
});
|
|
29
|
+
const exports: Record<string, any> = {};
|
|
30
|
+
new Function("require", "exports", outputText)((name: string) => {
|
|
31
|
+
if (!(name in modules)) throw new Error(`Unexpected import: ${name}`);
|
|
32
|
+
return modules[name];
|
|
33
|
+
}, exports);
|
|
34
|
+
return exports;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
it("generated static Blog layout serves public HTML and resolves the browser session", async () => {
|
|
38
|
+
const authorization = defineAuthorization({
|
|
39
|
+
identity: z.object({ id: z.string() }),
|
|
40
|
+
permissions: [blogPermissions] as const,
|
|
41
|
+
rules: ({ blog }) => [
|
|
42
|
+
blog.post.read.when(({ facts }) => facts.scope === "published"),
|
|
43
|
+
blog.post.create.when(({ identity }) => identity !== null),
|
|
44
|
+
],
|
|
45
|
+
});
|
|
46
|
+
const getIdentity = vi.fn(() => ({ id: "browser-user" }));
|
|
47
|
+
const clientAuth = createClientAuth({ authorization, getIdentity });
|
|
48
|
+
const queryClient = new QueryClient();
|
|
49
|
+
const stack = createClientStack({
|
|
50
|
+
api: { baseURL: "https://app.example", basePath: "/api/data" },
|
|
51
|
+
site: { baseURL: "https://app.example", basePath: "/pages" },
|
|
52
|
+
queryClient,
|
|
53
|
+
plugins: {},
|
|
54
|
+
});
|
|
55
|
+
const jsxRuntime = await import("react/jsx-runtime");
|
|
56
|
+
const { buildScaffoldPlan } = await import(
|
|
57
|
+
pathToFileURL(resolve(process.cwd(), "../cli/dist/lib.mjs")).href
|
|
58
|
+
);
|
|
59
|
+
const plan = await buildScaffoldPlan({
|
|
60
|
+
framework: "nextjs",
|
|
61
|
+
adapter: "memory",
|
|
62
|
+
plugins: ["blog"],
|
|
63
|
+
alias: "@/",
|
|
64
|
+
cssFile: "app/globals.css",
|
|
65
|
+
});
|
|
66
|
+
const generated = (path: string) =>
|
|
67
|
+
plan.files.find((file: { path: string }) => file.path === path)
|
|
68
|
+
.content as string;
|
|
69
|
+
const modules = {
|
|
70
|
+
react: React,
|
|
71
|
+
"react/jsx-runtime": jsxRuntime,
|
|
72
|
+
"@tanstack/react-query": { QueryClientProvider },
|
|
73
|
+
"@btst/stack/context": {
|
|
74
|
+
StackProvider: (props: React.ComponentProps<typeof StackProvider>) => (
|
|
75
|
+
<StackProvider {...props} auth={clientAuth} />
|
|
76
|
+
),
|
|
77
|
+
useIdentity,
|
|
78
|
+
},
|
|
79
|
+
"@btst/stack/next": { nextRouter: () => undefined },
|
|
80
|
+
"@/lib/query-client": { getOrCreateQueryClient: () => queryClient },
|
|
81
|
+
"@/lib/stack-client": { getStackClient: () => stack },
|
|
82
|
+
};
|
|
83
|
+
const client = compile(generated("app/pages/client-layout.tsx"), modules);
|
|
84
|
+
const { default: Layout } = compile(
|
|
85
|
+
generated("app/(static)/pages/layout.tsx"),
|
|
86
|
+
{
|
|
87
|
+
"react/jsx-runtime": jsxRuntime,
|
|
88
|
+
"../../pages/client-layout": client,
|
|
89
|
+
"@/lib/stack-client.server": { getServerClientOrigins: () => ({}) },
|
|
90
|
+
},
|
|
91
|
+
);
|
|
92
|
+
const ui = (
|
|
93
|
+
<Layout>
|
|
94
|
+
<clientAuth.CanAccess
|
|
95
|
+
permission={blogPermissions.post.read({ scope: "published" })}
|
|
96
|
+
loading={<span>Loading posts</span>}
|
|
97
|
+
>
|
|
98
|
+
<h1>Published posts</h1>
|
|
99
|
+
</clientAuth.CanAccess>
|
|
100
|
+
<clientAuth.CanAccess
|
|
101
|
+
permission={blogPermissions.post.create({ publish: "draft" })}
|
|
102
|
+
>
|
|
103
|
+
<button type="button">Write a post</button>
|
|
104
|
+
</clientAuth.CanAccess>
|
|
105
|
+
</Layout>
|
|
106
|
+
);
|
|
107
|
+
const html = renderToString(ui);
|
|
108
|
+
expect(html).toContain("<h1>Published posts</h1>");
|
|
109
|
+
expect(html).not.toContain("Loading posts");
|
|
110
|
+
expect(html).not.toContain("Write a post");
|
|
111
|
+
expect(getIdentity).not.toHaveBeenCalled();
|
|
112
|
+
const container = document.createElement("div");
|
|
113
|
+
container.innerHTML = html;
|
|
114
|
+
const onRecoverableError = vi.fn();
|
|
115
|
+
let root: ReturnType<typeof hydrateRoot> | undefined;
|
|
116
|
+
try {
|
|
117
|
+
await act(async () => {
|
|
118
|
+
root = hydrateRoot(container, ui, { onRecoverableError });
|
|
119
|
+
});
|
|
120
|
+
expect(container.querySelector("h1")?.textContent).toBe("Published posts");
|
|
121
|
+
expect(container.querySelector("button")?.textContent).toBe("Write a post");
|
|
122
|
+
expect(getIdentity).toHaveBeenCalledOnce();
|
|
123
|
+
expect(onRecoverableError).not.toHaveBeenCalled();
|
|
124
|
+
} finally {
|
|
125
|
+
await act(async () => root?.unmount());
|
|
126
|
+
queryClient.clear();
|
|
127
|
+
}
|
|
128
|
+
});
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { pathToFileURL } from "node:url";
|
|
2
|
+
import { resolve } from "node:path";
|
|
1
3
|
import { createMemoryAdapter } from "@btst/adapter-memory";
|
|
2
4
|
import { type DatabaseDefinition, type DBAdapter, defineDb } from "@btst/db";
|
|
3
5
|
import { QueryClient } from "@tanstack/react-query";
|
|
@@ -1380,3 +1382,55 @@ describe("Kanban operation-first authorization", () => {
|
|
|
1380
1382
|
});
|
|
1381
1383
|
});
|
|
1382
1384
|
});
|
|
1385
|
+
|
|
1386
|
+
describe("Kanban fixture cleanup", () => {
|
|
1387
|
+
it("deleting the owned board also removes columns and tasks from the memory adapter", async () => {
|
|
1388
|
+
let adapter!: DBAdapter;
|
|
1389
|
+
const backend = makeBackend({
|
|
1390
|
+
adapter: (db) => (adapter = rawMemoryAdapter(db)),
|
|
1391
|
+
});
|
|
1392
|
+
const owned = await backend.trusted.kanban.createBoard({
|
|
1393
|
+
name: "Fixture",
|
|
1394
|
+
slug: "fixture-cleanup",
|
|
1395
|
+
});
|
|
1396
|
+
const unrelated = await backend.trusted.kanban.createBoard({
|
|
1397
|
+
name: "Unrelated",
|
|
1398
|
+
slug: "unrelated-cleanup",
|
|
1399
|
+
});
|
|
1400
|
+
const column = await backend.trusted.kanban.createColumn({
|
|
1401
|
+
boardId: owned.id,
|
|
1402
|
+
title: "Fixture",
|
|
1403
|
+
});
|
|
1404
|
+
await backend.trusted.kanban.createTask({
|
|
1405
|
+
columnId: column.id,
|
|
1406
|
+
title: "Fixture",
|
|
1407
|
+
});
|
|
1408
|
+
const { cleanupBoard } = await import(
|
|
1409
|
+
pathToFileURL(
|
|
1410
|
+
resolve(process.cwd(), "../../e2e/product-proof/fixture-cleanup.mjs"),
|
|
1411
|
+
).href
|
|
1412
|
+
);
|
|
1413
|
+
await cleanupBoard(async (method: string, path: string) => {
|
|
1414
|
+
const response = await backend.handler(
|
|
1415
|
+
request(path.replace("/api/data", ""), { method }),
|
|
1416
|
+
);
|
|
1417
|
+
expect(response.ok).toBe(true);
|
|
1418
|
+
return method === "GET" ? response.json() : undefined;
|
|
1419
|
+
}, owned.id);
|
|
1420
|
+
expect(
|
|
1421
|
+
await adapter.findMany({
|
|
1422
|
+
model: "kanbanColumn",
|
|
1423
|
+
where: [{ field: "boardId", value: owned.id }],
|
|
1424
|
+
}),
|
|
1425
|
+
).toEqual([]);
|
|
1426
|
+
expect(
|
|
1427
|
+
await adapter.findMany({
|
|
1428
|
+
model: "kanbanTask",
|
|
1429
|
+
where: [{ field: "columnId", value: column.id }],
|
|
1430
|
+
}),
|
|
1431
|
+
).toEqual([]);
|
|
1432
|
+
expect(
|
|
1433
|
+
await backend.trusted.kanban.getBoard({ id: unrelated.id }),
|
|
1434
|
+
).toMatchObject({ id: unrelated.id });
|
|
1435
|
+
});
|
|
1436
|
+
});
|
|
@@ -127,11 +127,11 @@ declare const formBuilderBackendPlugin: (config?: FormBuilderBackendConfig) => _
|
|
|
127
127
|
readonly status: Form["status"];
|
|
128
128
|
readonly createdAt: string;
|
|
129
129
|
readonly updatedAt: string;
|
|
130
|
+
readonly slug: string;
|
|
130
131
|
readonly id: string;
|
|
131
132
|
readonly name: string;
|
|
132
|
-
readonly schema: string;
|
|
133
133
|
readonly description?: string | undefined;
|
|
134
|
-
readonly
|
|
134
|
+
readonly schema: string;
|
|
135
135
|
readonly successMessage?: string | undefined;
|
|
136
136
|
readonly redirectUrl?: string | undefined;
|
|
137
137
|
readonly createdBy?: string | undefined;
|
|
@@ -151,11 +151,11 @@ declare const formBuilderBackendPlugin: (config?: FormBuilderBackendConfig) => _
|
|
|
151
151
|
readonly status: Form["status"];
|
|
152
152
|
readonly createdAt: string;
|
|
153
153
|
readonly updatedAt: string;
|
|
154
|
+
readonly slug: string;
|
|
154
155
|
readonly id: string;
|
|
155
156
|
readonly name: string;
|
|
156
|
-
readonly schema: string;
|
|
157
157
|
readonly description?: string | undefined;
|
|
158
|
-
readonly
|
|
158
|
+
readonly schema: string;
|
|
159
159
|
readonly successMessage?: string | undefined;
|
|
160
160
|
readonly redirectUrl?: string | undefined;
|
|
161
161
|
readonly createdBy?: string | undefined;
|
|
@@ -171,11 +171,11 @@ declare const formBuilderBackendPlugin: (config?: FormBuilderBackendConfig) => _
|
|
|
171
171
|
readonly status: Form["status"];
|
|
172
172
|
readonly createdAt: string;
|
|
173
173
|
readonly updatedAt: string;
|
|
174
|
+
readonly slug: string;
|
|
174
175
|
readonly id: string;
|
|
175
176
|
readonly name: string;
|
|
176
|
-
readonly schema: string;
|
|
177
177
|
readonly description?: string | undefined;
|
|
178
|
-
readonly
|
|
178
|
+
readonly schema: string;
|
|
179
179
|
readonly successMessage?: string | undefined;
|
|
180
180
|
readonly redirectUrl?: string | undefined;
|
|
181
181
|
readonly createdBy?: string | undefined;
|
|
@@ -191,11 +191,11 @@ declare const formBuilderBackendPlugin: (config?: FormBuilderBackendConfig) => _
|
|
|
191
191
|
readonly status: Form["status"];
|
|
192
192
|
readonly createdAt: string;
|
|
193
193
|
readonly updatedAt: string;
|
|
194
|
+
readonly slug: string;
|
|
194
195
|
readonly id: string;
|
|
195
196
|
readonly name: string;
|
|
196
|
-
readonly schema: string;
|
|
197
197
|
readonly description?: string | undefined;
|
|
198
|
-
readonly
|
|
198
|
+
readonly schema: string;
|
|
199
199
|
readonly successMessage?: string | undefined;
|
|
200
200
|
readonly redirectUrl?: string | undefined;
|
|
201
201
|
readonly createdBy?: string | undefined;
|
|
@@ -225,11 +225,11 @@ declare const formBuilderBackendPlugin: (config?: FormBuilderBackendConfig) => _
|
|
|
225
225
|
readonly status: Form["status"];
|
|
226
226
|
readonly createdAt: string;
|
|
227
227
|
readonly updatedAt: string;
|
|
228
|
+
readonly slug: string;
|
|
228
229
|
readonly id: string;
|
|
229
230
|
readonly name: string;
|
|
230
|
-
readonly schema: string;
|
|
231
231
|
readonly description?: string | undefined;
|
|
232
|
-
readonly
|
|
232
|
+
readonly schema: string;
|
|
233
233
|
readonly successMessage?: string | undefined;
|
|
234
234
|
readonly redirectUrl?: string | undefined;
|
|
235
235
|
readonly createdBy?: string | undefined;
|
|
@@ -259,11 +259,11 @@ declare const formBuilderBackendPlugin: (config?: FormBuilderBackendConfig) => _
|
|
|
259
259
|
readonly status: Form["status"];
|
|
260
260
|
readonly createdAt: string;
|
|
261
261
|
readonly updatedAt: string;
|
|
262
|
+
readonly slug: string;
|
|
262
263
|
readonly id: string;
|
|
263
264
|
readonly name: string;
|
|
264
|
-
readonly schema: string;
|
|
265
265
|
readonly description?: string | undefined;
|
|
266
|
-
readonly
|
|
266
|
+
readonly schema: string;
|
|
267
267
|
readonly successMessage?: string | undefined;
|
|
268
268
|
readonly redirectUrl?: string | undefined;
|
|
269
269
|
readonly createdBy?: string | undefined;
|
|
@@ -291,10 +291,10 @@ declare const formBuilderBackendPlugin: (config?: FormBuilderBackendConfig) => _
|
|
|
291
291
|
readonly redirectUrl?: string | undefined;
|
|
292
292
|
};
|
|
293
293
|
readonly submittedAt: string;
|
|
294
|
+
readonly data: string;
|
|
294
295
|
readonly id: string;
|
|
295
296
|
readonly formId: string;
|
|
296
297
|
readonly submittedBy?: string | undefined;
|
|
297
|
-
readonly data: string;
|
|
298
298
|
readonly ipAddress?: string | undefined;
|
|
299
299
|
readonly userAgent?: string | undefined;
|
|
300
300
|
}>;
|
|
@@ -335,10 +335,10 @@ declare const formBuilderBackendPlugin: (config?: FormBuilderBackendConfig) => _
|
|
|
335
335
|
readonly [x: string]: any;
|
|
336
336
|
} | null;
|
|
337
337
|
readonly submittedAt: string;
|
|
338
|
+
readonly data: string;
|
|
338
339
|
readonly id: string;
|
|
339
340
|
readonly formId: string;
|
|
340
341
|
readonly submittedBy?: string | undefined;
|
|
341
|
-
readonly data: string;
|
|
342
342
|
readonly ipAddress?: string | undefined;
|
|
343
343
|
readonly userAgent?: string | undefined;
|
|
344
344
|
}>;
|
|
@@ -127,11 +127,11 @@ declare const formBuilderBackendPlugin: (config?: FormBuilderBackendConfig) => _
|
|
|
127
127
|
readonly status: Form["status"];
|
|
128
128
|
readonly createdAt: string;
|
|
129
129
|
readonly updatedAt: string;
|
|
130
|
+
readonly slug: string;
|
|
130
131
|
readonly id: string;
|
|
131
132
|
readonly name: string;
|
|
132
|
-
readonly schema: string;
|
|
133
133
|
readonly description?: string | undefined;
|
|
134
|
-
readonly
|
|
134
|
+
readonly schema: string;
|
|
135
135
|
readonly successMessage?: string | undefined;
|
|
136
136
|
readonly redirectUrl?: string | undefined;
|
|
137
137
|
readonly createdBy?: string | undefined;
|
|
@@ -151,11 +151,11 @@ declare const formBuilderBackendPlugin: (config?: FormBuilderBackendConfig) => _
|
|
|
151
151
|
readonly status: Form["status"];
|
|
152
152
|
readonly createdAt: string;
|
|
153
153
|
readonly updatedAt: string;
|
|
154
|
+
readonly slug: string;
|
|
154
155
|
readonly id: string;
|
|
155
156
|
readonly name: string;
|
|
156
|
-
readonly schema: string;
|
|
157
157
|
readonly description?: string | undefined;
|
|
158
|
-
readonly
|
|
158
|
+
readonly schema: string;
|
|
159
159
|
readonly successMessage?: string | undefined;
|
|
160
160
|
readonly redirectUrl?: string | undefined;
|
|
161
161
|
readonly createdBy?: string | undefined;
|
|
@@ -171,11 +171,11 @@ declare const formBuilderBackendPlugin: (config?: FormBuilderBackendConfig) => _
|
|
|
171
171
|
readonly status: Form["status"];
|
|
172
172
|
readonly createdAt: string;
|
|
173
173
|
readonly updatedAt: string;
|
|
174
|
+
readonly slug: string;
|
|
174
175
|
readonly id: string;
|
|
175
176
|
readonly name: string;
|
|
176
|
-
readonly schema: string;
|
|
177
177
|
readonly description?: string | undefined;
|
|
178
|
-
readonly
|
|
178
|
+
readonly schema: string;
|
|
179
179
|
readonly successMessage?: string | undefined;
|
|
180
180
|
readonly redirectUrl?: string | undefined;
|
|
181
181
|
readonly createdBy?: string | undefined;
|
|
@@ -191,11 +191,11 @@ declare const formBuilderBackendPlugin: (config?: FormBuilderBackendConfig) => _
|
|
|
191
191
|
readonly status: Form["status"];
|
|
192
192
|
readonly createdAt: string;
|
|
193
193
|
readonly updatedAt: string;
|
|
194
|
+
readonly slug: string;
|
|
194
195
|
readonly id: string;
|
|
195
196
|
readonly name: string;
|
|
196
|
-
readonly schema: string;
|
|
197
197
|
readonly description?: string | undefined;
|
|
198
|
-
readonly
|
|
198
|
+
readonly schema: string;
|
|
199
199
|
readonly successMessage?: string | undefined;
|
|
200
200
|
readonly redirectUrl?: string | undefined;
|
|
201
201
|
readonly createdBy?: string | undefined;
|
|
@@ -225,11 +225,11 @@ declare const formBuilderBackendPlugin: (config?: FormBuilderBackendConfig) => _
|
|
|
225
225
|
readonly status: Form["status"];
|
|
226
226
|
readonly createdAt: string;
|
|
227
227
|
readonly updatedAt: string;
|
|
228
|
+
readonly slug: string;
|
|
228
229
|
readonly id: string;
|
|
229
230
|
readonly name: string;
|
|
230
|
-
readonly schema: string;
|
|
231
231
|
readonly description?: string | undefined;
|
|
232
|
-
readonly
|
|
232
|
+
readonly schema: string;
|
|
233
233
|
readonly successMessage?: string | undefined;
|
|
234
234
|
readonly redirectUrl?: string | undefined;
|
|
235
235
|
readonly createdBy?: string | undefined;
|
|
@@ -259,11 +259,11 @@ declare const formBuilderBackendPlugin: (config?: FormBuilderBackendConfig) => _
|
|
|
259
259
|
readonly status: Form["status"];
|
|
260
260
|
readonly createdAt: string;
|
|
261
261
|
readonly updatedAt: string;
|
|
262
|
+
readonly slug: string;
|
|
262
263
|
readonly id: string;
|
|
263
264
|
readonly name: string;
|
|
264
|
-
readonly schema: string;
|
|
265
265
|
readonly description?: string | undefined;
|
|
266
|
-
readonly
|
|
266
|
+
readonly schema: string;
|
|
267
267
|
readonly successMessage?: string | undefined;
|
|
268
268
|
readonly redirectUrl?: string | undefined;
|
|
269
269
|
readonly createdBy?: string | undefined;
|
|
@@ -291,10 +291,10 @@ declare const formBuilderBackendPlugin: (config?: FormBuilderBackendConfig) => _
|
|
|
291
291
|
readonly redirectUrl?: string | undefined;
|
|
292
292
|
};
|
|
293
293
|
readonly submittedAt: string;
|
|
294
|
+
readonly data: string;
|
|
294
295
|
readonly id: string;
|
|
295
296
|
readonly formId: string;
|
|
296
297
|
readonly submittedBy?: string | undefined;
|
|
297
|
-
readonly data: string;
|
|
298
298
|
readonly ipAddress?: string | undefined;
|
|
299
299
|
readonly userAgent?: string | undefined;
|
|
300
300
|
}>;
|
|
@@ -335,10 +335,10 @@ declare const formBuilderBackendPlugin: (config?: FormBuilderBackendConfig) => _
|
|
|
335
335
|
readonly [x: string]: any;
|
|
336
336
|
} | null;
|
|
337
337
|
readonly submittedAt: string;
|
|
338
|
+
readonly data: string;
|
|
338
339
|
readonly id: string;
|
|
339
340
|
readonly formId: string;
|
|
340
341
|
readonly submittedBy?: string | undefined;
|
|
341
|
-
readonly data: string;
|
|
342
342
|
readonly ipAddress?: string | undefined;
|
|
343
343
|
readonly userAgent?: string | undefined;
|
|
344
344
|
}>;
|
|
@@ -127,11 +127,11 @@ declare const formBuilderBackendPlugin: (config?: FormBuilderBackendConfig) => _
|
|
|
127
127
|
readonly status: Form["status"];
|
|
128
128
|
readonly createdAt: string;
|
|
129
129
|
readonly updatedAt: string;
|
|
130
|
+
readonly slug: string;
|
|
130
131
|
readonly id: string;
|
|
131
132
|
readonly name: string;
|
|
132
|
-
readonly schema: string;
|
|
133
133
|
readonly description?: string | undefined;
|
|
134
|
-
readonly
|
|
134
|
+
readonly schema: string;
|
|
135
135
|
readonly successMessage?: string | undefined;
|
|
136
136
|
readonly redirectUrl?: string | undefined;
|
|
137
137
|
readonly createdBy?: string | undefined;
|
|
@@ -151,11 +151,11 @@ declare const formBuilderBackendPlugin: (config?: FormBuilderBackendConfig) => _
|
|
|
151
151
|
readonly status: Form["status"];
|
|
152
152
|
readonly createdAt: string;
|
|
153
153
|
readonly updatedAt: string;
|
|
154
|
+
readonly slug: string;
|
|
154
155
|
readonly id: string;
|
|
155
156
|
readonly name: string;
|
|
156
|
-
readonly schema: string;
|
|
157
157
|
readonly description?: string | undefined;
|
|
158
|
-
readonly
|
|
158
|
+
readonly schema: string;
|
|
159
159
|
readonly successMessage?: string | undefined;
|
|
160
160
|
readonly redirectUrl?: string | undefined;
|
|
161
161
|
readonly createdBy?: string | undefined;
|
|
@@ -171,11 +171,11 @@ declare const formBuilderBackendPlugin: (config?: FormBuilderBackendConfig) => _
|
|
|
171
171
|
readonly status: Form["status"];
|
|
172
172
|
readonly createdAt: string;
|
|
173
173
|
readonly updatedAt: string;
|
|
174
|
+
readonly slug: string;
|
|
174
175
|
readonly id: string;
|
|
175
176
|
readonly name: string;
|
|
176
|
-
readonly schema: string;
|
|
177
177
|
readonly description?: string | undefined;
|
|
178
|
-
readonly
|
|
178
|
+
readonly schema: string;
|
|
179
179
|
readonly successMessage?: string | undefined;
|
|
180
180
|
readonly redirectUrl?: string | undefined;
|
|
181
181
|
readonly createdBy?: string | undefined;
|
|
@@ -191,11 +191,11 @@ declare const formBuilderBackendPlugin: (config?: FormBuilderBackendConfig) => _
|
|
|
191
191
|
readonly status: Form["status"];
|
|
192
192
|
readonly createdAt: string;
|
|
193
193
|
readonly updatedAt: string;
|
|
194
|
+
readonly slug: string;
|
|
194
195
|
readonly id: string;
|
|
195
196
|
readonly name: string;
|
|
196
|
-
readonly schema: string;
|
|
197
197
|
readonly description?: string | undefined;
|
|
198
|
-
readonly
|
|
198
|
+
readonly schema: string;
|
|
199
199
|
readonly successMessage?: string | undefined;
|
|
200
200
|
readonly redirectUrl?: string | undefined;
|
|
201
201
|
readonly createdBy?: string | undefined;
|
|
@@ -225,11 +225,11 @@ declare const formBuilderBackendPlugin: (config?: FormBuilderBackendConfig) => _
|
|
|
225
225
|
readonly status: Form["status"];
|
|
226
226
|
readonly createdAt: string;
|
|
227
227
|
readonly updatedAt: string;
|
|
228
|
+
readonly slug: string;
|
|
228
229
|
readonly id: string;
|
|
229
230
|
readonly name: string;
|
|
230
|
-
readonly schema: string;
|
|
231
231
|
readonly description?: string | undefined;
|
|
232
|
-
readonly
|
|
232
|
+
readonly schema: string;
|
|
233
233
|
readonly successMessage?: string | undefined;
|
|
234
234
|
readonly redirectUrl?: string | undefined;
|
|
235
235
|
readonly createdBy?: string | undefined;
|
|
@@ -259,11 +259,11 @@ declare const formBuilderBackendPlugin: (config?: FormBuilderBackendConfig) => _
|
|
|
259
259
|
readonly status: Form["status"];
|
|
260
260
|
readonly createdAt: string;
|
|
261
261
|
readonly updatedAt: string;
|
|
262
|
+
readonly slug: string;
|
|
262
263
|
readonly id: string;
|
|
263
264
|
readonly name: string;
|
|
264
|
-
readonly schema: string;
|
|
265
265
|
readonly description?: string | undefined;
|
|
266
|
-
readonly
|
|
266
|
+
readonly schema: string;
|
|
267
267
|
readonly successMessage?: string | undefined;
|
|
268
268
|
readonly redirectUrl?: string | undefined;
|
|
269
269
|
readonly createdBy?: string | undefined;
|
|
@@ -291,10 +291,10 @@ declare const formBuilderBackendPlugin: (config?: FormBuilderBackendConfig) => _
|
|
|
291
291
|
readonly redirectUrl?: string | undefined;
|
|
292
292
|
};
|
|
293
293
|
readonly submittedAt: string;
|
|
294
|
+
readonly data: string;
|
|
294
295
|
readonly id: string;
|
|
295
296
|
readonly formId: string;
|
|
296
297
|
readonly submittedBy?: string | undefined;
|
|
297
|
-
readonly data: string;
|
|
298
298
|
readonly ipAddress?: string | undefined;
|
|
299
299
|
readonly userAgent?: string | undefined;
|
|
300
300
|
}>;
|
|
@@ -335,10 +335,10 @@ declare const formBuilderBackendPlugin: (config?: FormBuilderBackendConfig) => _
|
|
|
335
335
|
readonly [x: string]: any;
|
|
336
336
|
} | null;
|
|
337
337
|
readonly submittedAt: string;
|
|
338
|
+
readonly data: string;
|
|
338
339
|
readonly id: string;
|
|
339
340
|
readonly formId: string;
|
|
340
341
|
readonly submittedBy?: string | undefined;
|
|
341
|
-
readonly data: string;
|
|
342
342
|
readonly ipAddress?: string | undefined;
|
|
343
343
|
readonly userAgent?: string | undefined;
|
|
344
344
|
}>;
|