@kernhq/module-quire 0.14.0 → 0.16.0
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/contract/models.d.ts +209 -0
- package/dist/contract/models.d.ts.map +1 -1
- package/dist/contract/models.js +151 -0
- package/dist/contract/models.js.map +1 -1
- package/dist/contract/permissions.d.ts.map +1 -1
- package/dist/contract/permissions.js +32 -0
- package/dist/contract/permissions.js.map +1 -1
- package/dist/contract/properties.d.ts +3 -3
- package/dist/contract/router.d.ts +509 -8
- package/dist/contract/router.d.ts.map +1 -1
- package/dist/contract/router.js +211 -1
- package/dist/contract/router.js.map +1 -1
- package/dist/server/_impl.d.ts +573 -1269
- package/dist/server/_impl.d.ts.map +1 -1
- package/dist/server/_impl.js +180 -0
- package/dist/server/_impl.js.map +1 -1
- package/dist/server/export/markdown.d.ts.map +1 -1
- package/dist/server/export/markdown.js +84 -1
- package/dist/server/export/markdown.js.map +1 -1
- package/dist/server/render.d.ts +190 -1
- package/dist/server/render.d.ts.map +1 -1
- package/dist/server/render.js +413 -0
- package/dist/server/render.js.map +1 -1
- package/dist/server/schema.d.ts +260 -1
- package/dist/server/schema.d.ts.map +1 -1
- package/dist/server/schema.js +108 -1
- package/dist/server/schema.js.map +1 -1
- package/dist/server/services/databases.d.ts +5 -5
- package/dist/server/services/index.d.ts +6 -0
- package/dist/server/services/index.d.ts.map +1 -1
- package/dist/server/services/index.js +27 -3
- package/dist/server/services/index.js.map +1 -1
- package/dist/server/services/macros.d.ts +83 -0
- package/dist/server/services/macros.d.ts.map +1 -0
- package/dist/server/services/macros.js +488 -0
- package/dist/server/services/macros.js.map +1 -0
- package/dist/server/services/objects.d.ts +61 -0
- package/dist/server/services/objects.d.ts.map +1 -0
- package/dist/server/services/objects.js +110 -0
- package/dist/server/services/objects.js.map +1 -0
- package/dist/server/services/publications.d.ts +2 -1
- package/dist/server/services/publications.d.ts.map +1 -1
- package/dist/server/services/publications.js +43 -4
- package/dist/server/services/publications.js.map +1 -1
- package/dist/server/services/templates.d.ts +135 -0
- package/dist/server/services/templates.d.ts.map +1 -0
- package/dist/server/services/templates.js +897 -0
- package/dist/server/services/templates.js.map +1 -0
- package/dist/server/services/unfurl.d.ts +154 -0
- package/dist/server/services/unfurl.d.ts.map +1 -0
- package/dist/server/services/unfurl.js +593 -0
- package/dist/server/services/unfurl.js.map +1 -0
- package/dist/server/services/versions.d.ts +12 -0
- package/dist/server/services/versions.d.ts.map +1 -1
- package/dist/server/services/versions.js +3 -1
- package/dist/server/services/versions.js.map +1 -1
- package/migrations/0011_templates.sql +157 -0
- package/migrations/meta/_journal.json +7 -0
- package/package.json +5 -5
- package/src/client/components/NewSpaceDialog.svelte +77 -8
- package/src/client/components/PageEditor.svelte +80 -0
- package/src/client/components/PagePicker.svelte +264 -0
- package/src/client/components/SaveAsTemplateDialog.svelte +502 -0
- package/src/client/components/SidebarSpaces.svelte +33 -1
- package/src/client/components/TemplatePicker.svelte +437 -0
- package/src/client/i18n.ts +327 -0
- package/src/client/index.ts +19 -0
- package/src/client/mock.ts +274 -0
- package/src/client/pages/PageView.svelte +50 -0
- package/src/client/pages/SpacePage.svelte +20 -4
- package/src/client/query.ts +17 -0
- package/src/contract/models.ts +191 -0
- package/src/contract/permissions.ts +33 -0
- package/src/contract/router.ts +228 -0
|
@@ -285,6 +285,80 @@ export declare const PublicBasePath: z.ZodDefault<z.ZodString>;
|
|
|
285
285
|
* segment starting with an underscore and no published page can be shadowed by this one.
|
|
286
286
|
*/
|
|
287
287
|
export declare const PUBLIC_ASSET_SEGMENT = "__media";
|
|
288
|
+
/**
|
|
289
|
+
* One row of the picker: a shipped starter, or a template somebody saved.
|
|
290
|
+
*
|
|
291
|
+
* The two are one list on purpose. A person choosing what to write does not care which of them came
|
|
292
|
+
* with Kern, so a screen that draws "Templates" and "Your templates" as separate sections is asking
|
|
293
|
+
* them to know something about our packaging — and it makes the override rule invisible, because a
|
|
294
|
+
* starter a workspace has edited would appear in the second list while its shipped twin sat in the
|
|
295
|
+
* first.
|
|
296
|
+
*
|
|
297
|
+
* **`id` is null for a shipped starter, and that is the whole shape of the compromise.** A starter is
|
|
298
|
+
* a constant in the module rather than a row in the customer's database — `migrations/0011` argues
|
|
299
|
+
* why at length — so there is no row for it to have an id, and `key` is what addresses it instead.
|
|
300
|
+
* `instantiate` therefore takes one of the two and refuses both.
|
|
301
|
+
*
|
|
302
|
+
* `name` and `description` arrive **already in the reader's language**. A starter's strings are a
|
|
303
|
+
* table in the module resolved against `principal.locale`, so a client renders whatever it is given
|
|
304
|
+
* and never has to know which entries are ours.
|
|
305
|
+
*/
|
|
306
|
+
export declare const TemplateChoice: z.ZodObject<{
|
|
307
|
+
id: z.ZodNullable<z.ZodUUID>;
|
|
308
|
+
key: z.ZodNullable<z.ZodString>;
|
|
309
|
+
builtIn: z.ZodBoolean;
|
|
310
|
+
kind: z.ZodEnum<{
|
|
311
|
+
page: "page";
|
|
312
|
+
space: "space";
|
|
313
|
+
}>;
|
|
314
|
+
spaceId: z.ZodNullable<z.ZodUUID>;
|
|
315
|
+
name: z.ZodString;
|
|
316
|
+
description: z.ZodString;
|
|
317
|
+
icon: z.ZodNullable<z.ZodString>;
|
|
318
|
+
variables: z.ZodArray<z.ZodObject<{
|
|
319
|
+
name: z.ZodString;
|
|
320
|
+
label: z.ZodString;
|
|
321
|
+
type: z.ZodEnum<{
|
|
322
|
+
number: "number";
|
|
323
|
+
date: "date";
|
|
324
|
+
text: "text";
|
|
325
|
+
select: "select";
|
|
326
|
+
user: "user";
|
|
327
|
+
}>;
|
|
328
|
+
options: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
329
|
+
default: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
330
|
+
required: z.ZodDefault<z.ZodBoolean>;
|
|
331
|
+
}, z.core.$strip>>;
|
|
332
|
+
updatedAt: z.ZodNullable<z.ZodISODateTime>;
|
|
333
|
+
}, z.core.$strip>;
|
|
334
|
+
export type TemplateChoice = z.infer<typeof TemplateChoice>;
|
|
335
|
+
/**
|
|
336
|
+
* What somebody typed into the form a template asked for.
|
|
337
|
+
*
|
|
338
|
+
* Strings whatever the variable's type, because substitution is textual: a `date` variable puts
|
|
339
|
+
* characters into a paragraph exactly as a `text` one does, and the type only ever decided which
|
|
340
|
+
* control the person was shown. Storing a number here would mean the server deciding how to format
|
|
341
|
+
* it, in a locale it would have to guess.
|
|
342
|
+
*
|
|
343
|
+
* A key naming no declared variable is ignored rather than refused — a client one release ahead is
|
|
344
|
+
* a normal thing during a rolling deploy, and refusing the whole page over a spare field is not.
|
|
345
|
+
*/
|
|
346
|
+
export declare const TemplateValues: z.ZodRecord<z.ZodString, z.ZodString>;
|
|
347
|
+
/**
|
|
348
|
+
* What making something from a template produced.
|
|
349
|
+
*
|
|
350
|
+
* One shape for both kinds, rather than `Page` for one and `Space` for the other. The caller's next
|
|
351
|
+
* move is the same either way — open what was just made — and a union output would make every
|
|
352
|
+
* client branch on `kind` to find out where to navigate. `pageCount` is what the screen reports:
|
|
353
|
+
* a space template that made eleven pages should say so, because that is a lot of pages to have
|
|
354
|
+
* appeared in a sidebar without warning.
|
|
355
|
+
*/
|
|
356
|
+
export declare const TemplateResult: z.ZodObject<{
|
|
357
|
+
spaceId: z.ZodUUID;
|
|
358
|
+
pageId: z.ZodNullable<z.ZodUUID>;
|
|
359
|
+
pageCount: z.ZodNumber;
|
|
360
|
+
}, z.core.$strip>;
|
|
361
|
+
export type TemplateResult = z.infer<typeof TemplateResult>;
|
|
288
362
|
export declare const quireContract: {
|
|
289
363
|
readonly spaces: {
|
|
290
364
|
readonly list: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
|
|
@@ -1528,9 +1602,9 @@ export declare const quireContract: {
|
|
|
1528
1602
|
type: z.ZodEnum<{
|
|
1529
1603
|
number: "number";
|
|
1530
1604
|
date: "date";
|
|
1531
|
-
email: "email";
|
|
1532
1605
|
text: "text";
|
|
1533
1606
|
select: "select";
|
|
1607
|
+
email: "email";
|
|
1534
1608
|
multi_select: "multi_select";
|
|
1535
1609
|
status: "status";
|
|
1536
1610
|
person: "person";
|
|
@@ -1695,9 +1769,9 @@ export declare const quireContract: {
|
|
|
1695
1769
|
type: z.ZodEnum<{
|
|
1696
1770
|
number: "number";
|
|
1697
1771
|
date: "date";
|
|
1698
|
-
email: "email";
|
|
1699
1772
|
text: "text";
|
|
1700
1773
|
select: "select";
|
|
1774
|
+
email: "email";
|
|
1701
1775
|
multi_select: "multi_select";
|
|
1702
1776
|
status: "status";
|
|
1703
1777
|
person: "person";
|
|
@@ -1928,9 +2002,9 @@ export declare const quireContract: {
|
|
|
1928
2002
|
type: z.ZodEnum<{
|
|
1929
2003
|
number: "number";
|
|
1930
2004
|
date: "date";
|
|
1931
|
-
email: "email";
|
|
1932
2005
|
text: "text";
|
|
1933
2006
|
select: "select";
|
|
2007
|
+
email: "email";
|
|
1934
2008
|
multi_select: "multi_select";
|
|
1935
2009
|
status: "status";
|
|
1936
2010
|
person: "person";
|
|
@@ -2198,9 +2272,9 @@ export declare const quireContract: {
|
|
|
2198
2272
|
type: z.ZodEnum<{
|
|
2199
2273
|
number: "number";
|
|
2200
2274
|
date: "date";
|
|
2201
|
-
email: "email";
|
|
2202
2275
|
text: "text";
|
|
2203
2276
|
select: "select";
|
|
2277
|
+
email: "email";
|
|
2204
2278
|
multi_select: "multi_select";
|
|
2205
2279
|
status: "status";
|
|
2206
2280
|
person: "person";
|
|
@@ -2260,9 +2334,9 @@ export declare const quireContract: {
|
|
|
2260
2334
|
type: z.ZodEnum<{
|
|
2261
2335
|
number: "number";
|
|
2262
2336
|
date: "date";
|
|
2263
|
-
email: "email";
|
|
2264
2337
|
text: "text";
|
|
2265
2338
|
select: "select";
|
|
2339
|
+
email: "email";
|
|
2266
2340
|
multi_select: "multi_select";
|
|
2267
2341
|
status: "status";
|
|
2268
2342
|
person: "person";
|
|
@@ -2346,9 +2420,9 @@ export declare const quireContract: {
|
|
|
2346
2420
|
type: z.ZodOptional<z.ZodEnum<{
|
|
2347
2421
|
number: "number";
|
|
2348
2422
|
date: "date";
|
|
2349
|
-
email: "email";
|
|
2350
2423
|
text: "text";
|
|
2351
2424
|
select: "select";
|
|
2425
|
+
email: "email";
|
|
2352
2426
|
multi_select: "multi_select";
|
|
2353
2427
|
status: "status";
|
|
2354
2428
|
person: "person";
|
|
@@ -2409,9 +2483,9 @@ export declare const quireContract: {
|
|
|
2409
2483
|
type: z.ZodEnum<{
|
|
2410
2484
|
number: "number";
|
|
2411
2485
|
date: "date";
|
|
2412
|
-
email: "email";
|
|
2413
2486
|
text: "text";
|
|
2414
2487
|
select: "select";
|
|
2488
|
+
email: "email";
|
|
2415
2489
|
multi_select: "multi_select";
|
|
2416
2490
|
status: "status";
|
|
2417
2491
|
person: "person";
|
|
@@ -2506,9 +2580,9 @@ export declare const quireContract: {
|
|
|
2506
2580
|
type: z.ZodEnum<{
|
|
2507
2581
|
number: "number";
|
|
2508
2582
|
date: "date";
|
|
2509
|
-
email: "email";
|
|
2510
2583
|
text: "text";
|
|
2511
2584
|
select: "select";
|
|
2585
|
+
email: "email";
|
|
2512
2586
|
multi_select: "multi_select";
|
|
2513
2587
|
status: "status";
|
|
2514
2588
|
person: "person";
|
|
@@ -3485,6 +3559,433 @@ export declare const quireContract: {
|
|
|
3485
3559
|
};
|
|
3486
3560
|
}>, Record<never, never>>;
|
|
3487
3561
|
};
|
|
3562
|
+
/**
|
|
3563
|
+
* What somebody writes with: a page, or a whole space, saved so it can be made again.
|
|
3564
|
+
*
|
|
3565
|
+
* **The five starters Kern ships are constants in this module, not rows in a customer's
|
|
3566
|
+
* database.** `migrations/0011_templates.sql` argues that at length; the consequences visible from
|
|
3567
|
+
* here are three. `list` answers starters and rows in one list, with a row carrying a starter's
|
|
3568
|
+
* `key` standing *in place of* that starter rather than beside it. A starter has no id, so
|
|
3569
|
+
* `instantiate` takes `templateId` **or** `starterKey` and refuses both. And `get`, `update` and
|
|
3570
|
+
* `remove` take an id, which means they are about rows only — a starter has nothing to fetch or
|
|
3571
|
+
* delete, and "reset this one" is deleting the row that replaced it.
|
|
3572
|
+
*
|
|
3573
|
+
* Reading is `quire.space.view` and writing is `quire.space.manage`, exactly as `labels.*` next
|
|
3574
|
+
* door, and for the same reason: a template is part of a space's furniture rather than one page's
|
|
3575
|
+
* content. Changing it changes what everybody in the space is offered when they make a page, which
|
|
3576
|
+
* is not a thing somebody who may edit one page should be able to do to everybody else's.
|
|
3577
|
+
*
|
|
3578
|
+
* `instantiate` is the exception and asks `quire.page.create`, because what it does is make a
|
|
3579
|
+
* page. Somebody who may write in a space may use its templates; only somebody who configures the
|
|
3580
|
+
* space may change them.
|
|
3581
|
+
*/
|
|
3582
|
+
readonly templates: {
|
|
3583
|
+
/**
|
|
3584
|
+
* What may be made here: the starters, plus this workspace's own, with overrides applied.
|
|
3585
|
+
*
|
|
3586
|
+
* `spaceId` is the space being written into, and null asks the workspace-wide question — which
|
|
3587
|
+
* is what the "New space" picker needs, because there is no space yet. With a space named, the
|
|
3588
|
+
* answer is that space's templates *and* the workspace-wide ones: a template scoped to a space
|
|
3589
|
+
* is an addition to what is offered there, never a replacement for what is offered everywhere.
|
|
3590
|
+
*
|
|
3591
|
+
* No body comes back. Thirty page documents to draw thirty names is thirty documents nobody
|
|
3592
|
+
* reads — see `TemplateSummary`. `instantiate` is what reads one.
|
|
3593
|
+
*/
|
|
3594
|
+
readonly list: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
|
|
3595
|
+
workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
|
|
3596
|
+
kind: z.ZodDefault<z.ZodEnum<{
|
|
3597
|
+
page: "page";
|
|
3598
|
+
space: "space";
|
|
3599
|
+
}>>;
|
|
3600
|
+
spaceId: z.ZodDefault<z.ZodNullable<z.ZodUUID>>;
|
|
3601
|
+
}, z.core.$strip>, z.ZodArray<z.ZodObject<{
|
|
3602
|
+
id: z.ZodNullable<z.ZodUUID>;
|
|
3603
|
+
key: z.ZodNullable<z.ZodString>;
|
|
3604
|
+
builtIn: z.ZodBoolean;
|
|
3605
|
+
kind: z.ZodEnum<{
|
|
3606
|
+
page: "page";
|
|
3607
|
+
space: "space";
|
|
3608
|
+
}>;
|
|
3609
|
+
spaceId: z.ZodNullable<z.ZodUUID>;
|
|
3610
|
+
name: z.ZodString;
|
|
3611
|
+
description: z.ZodString;
|
|
3612
|
+
icon: z.ZodNullable<z.ZodString>;
|
|
3613
|
+
variables: z.ZodArray<z.ZodObject<{
|
|
3614
|
+
name: z.ZodString;
|
|
3615
|
+
label: z.ZodString;
|
|
3616
|
+
type: z.ZodEnum<{
|
|
3617
|
+
number: "number";
|
|
3618
|
+
date: "date";
|
|
3619
|
+
text: "text";
|
|
3620
|
+
select: "select";
|
|
3621
|
+
user: "user";
|
|
3622
|
+
}>;
|
|
3623
|
+
options: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
3624
|
+
default: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
3625
|
+
required: z.ZodDefault<z.ZodBoolean>;
|
|
3626
|
+
}, z.core.$strip>>;
|
|
3627
|
+
updatedAt: z.ZodNullable<z.ZodISODateTime>;
|
|
3628
|
+
}, z.core.$strip>>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
|
|
3629
|
+
BAD_REQUEST: {
|
|
3630
|
+
data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
|
|
3631
|
+
};
|
|
3632
|
+
UNAUTHORIZED: {};
|
|
3633
|
+
FORBIDDEN: {
|
|
3634
|
+
data: z.ZodOptional<z.ZodObject<{
|
|
3635
|
+
permission: z.ZodOptional<z.ZodString>;
|
|
3636
|
+
}, z.core.$strip>>;
|
|
3637
|
+
};
|
|
3638
|
+
NOT_FOUND: {};
|
|
3639
|
+
CONFLICT: {
|
|
3640
|
+
data: z.ZodOptional<z.ZodObject<{
|
|
3641
|
+
reason: z.ZodOptional<z.ZodString>;
|
|
3642
|
+
}, z.core.$strip>>;
|
|
3643
|
+
};
|
|
3644
|
+
RATE_LIMITED: {};
|
|
3645
|
+
MODULE_DISABLED: {
|
|
3646
|
+
data: z.ZodObject<{
|
|
3647
|
+
module: z.ZodString;
|
|
3648
|
+
}, z.core.$strip>;
|
|
3649
|
+
};
|
|
3650
|
+
}>, Record<never, never>>;
|
|
3651
|
+
/**
|
|
3652
|
+
* One saved template, body and all — what the edit screen loads.
|
|
3653
|
+
*
|
|
3654
|
+
* Rows only. A starter has no row, and inventing an id for it would make every other procedure
|
|
3655
|
+
* here have to tell the two kinds of id apart.
|
|
3656
|
+
*/
|
|
3657
|
+
readonly get: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
|
|
3658
|
+
workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
|
|
3659
|
+
templateId: z.ZodUUID;
|
|
3660
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
3661
|
+
id: z.ZodUUID;
|
|
3662
|
+
workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
|
|
3663
|
+
spaceId: z.ZodNullable<z.ZodUUID>;
|
|
3664
|
+
kind: z.ZodEnum<{
|
|
3665
|
+
page: "page";
|
|
3666
|
+
space: "space";
|
|
3667
|
+
}>;
|
|
3668
|
+
key: z.ZodNullable<z.ZodString>;
|
|
3669
|
+
builtIn: z.ZodBoolean;
|
|
3670
|
+
name: z.ZodString;
|
|
3671
|
+
description: z.ZodString;
|
|
3672
|
+
icon: z.ZodNullable<z.ZodString>;
|
|
3673
|
+
doc: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
3674
|
+
variables: z.ZodArray<z.ZodObject<{
|
|
3675
|
+
name: z.ZodString;
|
|
3676
|
+
label: z.ZodString;
|
|
3677
|
+
type: z.ZodEnum<{
|
|
3678
|
+
number: "number";
|
|
3679
|
+
date: "date";
|
|
3680
|
+
text: "text";
|
|
3681
|
+
select: "select";
|
|
3682
|
+
user: "user";
|
|
3683
|
+
}>;
|
|
3684
|
+
options: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
3685
|
+
default: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
3686
|
+
required: z.ZodDefault<z.ZodBoolean>;
|
|
3687
|
+
}, z.core.$strip>>;
|
|
3688
|
+
createdBy: z.ZodNullable<z.core.$ZodBranded<z.ZodUUID, "UserId", "out">>;
|
|
3689
|
+
createdAt: z.ZodISODateTime;
|
|
3690
|
+
updatedAt: z.ZodISODateTime;
|
|
3691
|
+
}, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
|
|
3692
|
+
BAD_REQUEST: {
|
|
3693
|
+
data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
|
|
3694
|
+
};
|
|
3695
|
+
UNAUTHORIZED: {};
|
|
3696
|
+
FORBIDDEN: {
|
|
3697
|
+
data: z.ZodOptional<z.ZodObject<{
|
|
3698
|
+
permission: z.ZodOptional<z.ZodString>;
|
|
3699
|
+
}, z.core.$strip>>;
|
|
3700
|
+
};
|
|
3701
|
+
NOT_FOUND: {};
|
|
3702
|
+
CONFLICT: {
|
|
3703
|
+
data: z.ZodOptional<z.ZodObject<{
|
|
3704
|
+
reason: z.ZodOptional<z.ZodString>;
|
|
3705
|
+
}, z.core.$strip>>;
|
|
3706
|
+
};
|
|
3707
|
+
RATE_LIMITED: {};
|
|
3708
|
+
MODULE_DISABLED: {
|
|
3709
|
+
data: z.ZodObject<{
|
|
3710
|
+
module: z.ZodString;
|
|
3711
|
+
}, z.core.$strip>;
|
|
3712
|
+
};
|
|
3713
|
+
}>, Record<never, never>>;
|
|
3714
|
+
/**
|
|
3715
|
+
* Save what is written now as a template.
|
|
3716
|
+
*
|
|
3717
|
+
* `sourceId` names the page for `kind: 'page'` and the **space** for `kind: 'space'`, the same
|
|
3718
|
+
* shape as `exports.start`'s `targetId` and for the same reason: the two kinds have nothing in
|
|
3719
|
+
* common to point at, and two nullable id fields would let a caller send both. The procedure is
|
|
3720
|
+
* named for the common case; a space template reads the space's whole tree.
|
|
3721
|
+
*
|
|
3722
|
+
* `key` is what makes a starter editable at all. Passing one writes a row that **replaces** that
|
|
3723
|
+
* starter in this workspace's picker; deleting the row brings the shipped one back, current and
|
|
3724
|
+
* translated. One row per starter per workspace — the second is a conflict, not a second entry.
|
|
3725
|
+
*/
|
|
3726
|
+
readonly createFromPage: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
|
|
3727
|
+
workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
|
|
3728
|
+
kind: z.ZodDefault<z.ZodEnum<{
|
|
3729
|
+
page: "page";
|
|
3730
|
+
space: "space";
|
|
3731
|
+
}>>;
|
|
3732
|
+
sourceId: z.ZodUUID;
|
|
3733
|
+
spaceId: z.ZodDefault<z.ZodNullable<z.ZodUUID>>;
|
|
3734
|
+
name: z.ZodString;
|
|
3735
|
+
description: z.ZodDefault<z.ZodString>;
|
|
3736
|
+
icon: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
3737
|
+
variables: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
3738
|
+
name: z.ZodString;
|
|
3739
|
+
label: z.ZodString;
|
|
3740
|
+
type: z.ZodEnum<{
|
|
3741
|
+
number: "number";
|
|
3742
|
+
date: "date";
|
|
3743
|
+
text: "text";
|
|
3744
|
+
select: "select";
|
|
3745
|
+
user: "user";
|
|
3746
|
+
}>;
|
|
3747
|
+
options: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
3748
|
+
default: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
3749
|
+
required: z.ZodDefault<z.ZodBoolean>;
|
|
3750
|
+
}, z.core.$strip>>>;
|
|
3751
|
+
key: z.ZodDefault<z.ZodNullable<z.ZodEnum<{
|
|
3752
|
+
"meeting-notes": "meeting-notes";
|
|
3753
|
+
"decision-record": "decision-record";
|
|
3754
|
+
requirements: "requirements";
|
|
3755
|
+
retrospective: "retrospective";
|
|
3756
|
+
"how-to": "how-to";
|
|
3757
|
+
}>>>;
|
|
3758
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
3759
|
+
id: z.ZodUUID;
|
|
3760
|
+
workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
|
|
3761
|
+
spaceId: z.ZodNullable<z.ZodUUID>;
|
|
3762
|
+
kind: z.ZodEnum<{
|
|
3763
|
+
page: "page";
|
|
3764
|
+
space: "space";
|
|
3765
|
+
}>;
|
|
3766
|
+
key: z.ZodNullable<z.ZodString>;
|
|
3767
|
+
builtIn: z.ZodBoolean;
|
|
3768
|
+
name: z.ZodString;
|
|
3769
|
+
description: z.ZodString;
|
|
3770
|
+
icon: z.ZodNullable<z.ZodString>;
|
|
3771
|
+
doc: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
3772
|
+
variables: z.ZodArray<z.ZodObject<{
|
|
3773
|
+
name: z.ZodString;
|
|
3774
|
+
label: z.ZodString;
|
|
3775
|
+
type: z.ZodEnum<{
|
|
3776
|
+
number: "number";
|
|
3777
|
+
date: "date";
|
|
3778
|
+
text: "text";
|
|
3779
|
+
select: "select";
|
|
3780
|
+
user: "user";
|
|
3781
|
+
}>;
|
|
3782
|
+
options: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
3783
|
+
default: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
3784
|
+
required: z.ZodDefault<z.ZodBoolean>;
|
|
3785
|
+
}, z.core.$strip>>;
|
|
3786
|
+
createdBy: z.ZodNullable<z.core.$ZodBranded<z.ZodUUID, "UserId", "out">>;
|
|
3787
|
+
createdAt: z.ZodISODateTime;
|
|
3788
|
+
updatedAt: z.ZodISODateTime;
|
|
3789
|
+
}, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
|
|
3790
|
+
BAD_REQUEST: {
|
|
3791
|
+
data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
|
|
3792
|
+
};
|
|
3793
|
+
UNAUTHORIZED: {};
|
|
3794
|
+
FORBIDDEN: {
|
|
3795
|
+
data: z.ZodOptional<z.ZodObject<{
|
|
3796
|
+
permission: z.ZodOptional<z.ZodString>;
|
|
3797
|
+
}, z.core.$strip>>;
|
|
3798
|
+
};
|
|
3799
|
+
NOT_FOUND: {};
|
|
3800
|
+
CONFLICT: {
|
|
3801
|
+
data: z.ZodOptional<z.ZodObject<{
|
|
3802
|
+
reason: z.ZodOptional<z.ZodString>;
|
|
3803
|
+
}, z.core.$strip>>;
|
|
3804
|
+
};
|
|
3805
|
+
RATE_LIMITED: {};
|
|
3806
|
+
MODULE_DISABLED: {
|
|
3807
|
+
data: z.ZodObject<{
|
|
3808
|
+
module: z.ZodString;
|
|
3809
|
+
}, z.core.$strip>;
|
|
3810
|
+
};
|
|
3811
|
+
}>, Record<never, never>>;
|
|
3812
|
+
/**
|
|
3813
|
+
* Rename it, re-scope it, change what it asks for — or replace its body with a page's.
|
|
3814
|
+
*
|
|
3815
|
+
* `sourceId` is three-valued like `publications.update`'s password: a page (or space) id takes
|
|
3816
|
+
* the body from there again, and leaving the key out changes nothing. Without that, updating a
|
|
3817
|
+
* template's name would be a separate act from updating its prose, and the second one would have
|
|
3818
|
+
* no procedure at all.
|
|
3819
|
+
*/
|
|
3820
|
+
readonly update: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
|
|
3821
|
+
workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
|
|
3822
|
+
templateId: z.ZodUUID;
|
|
3823
|
+
name: z.ZodOptional<z.ZodString>;
|
|
3824
|
+
description: z.ZodOptional<z.ZodString>;
|
|
3825
|
+
icon: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
3826
|
+
spaceId: z.ZodOptional<z.ZodNullable<z.ZodUUID>>;
|
|
3827
|
+
variables: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
3828
|
+
name: z.ZodString;
|
|
3829
|
+
label: z.ZodString;
|
|
3830
|
+
type: z.ZodEnum<{
|
|
3831
|
+
number: "number";
|
|
3832
|
+
date: "date";
|
|
3833
|
+
text: "text";
|
|
3834
|
+
select: "select";
|
|
3835
|
+
user: "user";
|
|
3836
|
+
}>;
|
|
3837
|
+
options: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
3838
|
+
default: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
3839
|
+
required: z.ZodDefault<z.ZodBoolean>;
|
|
3840
|
+
}, z.core.$strip>>>;
|
|
3841
|
+
sourceId: z.ZodOptional<z.ZodUUID>;
|
|
3842
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
3843
|
+
id: z.ZodUUID;
|
|
3844
|
+
workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
|
|
3845
|
+
spaceId: z.ZodNullable<z.ZodUUID>;
|
|
3846
|
+
kind: z.ZodEnum<{
|
|
3847
|
+
page: "page";
|
|
3848
|
+
space: "space";
|
|
3849
|
+
}>;
|
|
3850
|
+
key: z.ZodNullable<z.ZodString>;
|
|
3851
|
+
builtIn: z.ZodBoolean;
|
|
3852
|
+
name: z.ZodString;
|
|
3853
|
+
description: z.ZodString;
|
|
3854
|
+
icon: z.ZodNullable<z.ZodString>;
|
|
3855
|
+
doc: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
3856
|
+
variables: z.ZodArray<z.ZodObject<{
|
|
3857
|
+
name: z.ZodString;
|
|
3858
|
+
label: z.ZodString;
|
|
3859
|
+
type: z.ZodEnum<{
|
|
3860
|
+
number: "number";
|
|
3861
|
+
date: "date";
|
|
3862
|
+
text: "text";
|
|
3863
|
+
select: "select";
|
|
3864
|
+
user: "user";
|
|
3865
|
+
}>;
|
|
3866
|
+
options: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
3867
|
+
default: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
3868
|
+
required: z.ZodDefault<z.ZodBoolean>;
|
|
3869
|
+
}, z.core.$strip>>;
|
|
3870
|
+
createdBy: z.ZodNullable<z.core.$ZodBranded<z.ZodUUID, "UserId", "out">>;
|
|
3871
|
+
createdAt: z.ZodISODateTime;
|
|
3872
|
+
updatedAt: z.ZodISODateTime;
|
|
3873
|
+
}, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
|
|
3874
|
+
BAD_REQUEST: {
|
|
3875
|
+
data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
|
|
3876
|
+
};
|
|
3877
|
+
UNAUTHORIZED: {};
|
|
3878
|
+
FORBIDDEN: {
|
|
3879
|
+
data: z.ZodOptional<z.ZodObject<{
|
|
3880
|
+
permission: z.ZodOptional<z.ZodString>;
|
|
3881
|
+
}, z.core.$strip>>;
|
|
3882
|
+
};
|
|
3883
|
+
NOT_FOUND: {};
|
|
3884
|
+
CONFLICT: {
|
|
3885
|
+
data: z.ZodOptional<z.ZodObject<{
|
|
3886
|
+
reason: z.ZodOptional<z.ZodString>;
|
|
3887
|
+
}, z.core.$strip>>;
|
|
3888
|
+
};
|
|
3889
|
+
RATE_LIMITED: {};
|
|
3890
|
+
MODULE_DISABLED: {
|
|
3891
|
+
data: z.ZodObject<{
|
|
3892
|
+
module: z.ZodString;
|
|
3893
|
+
}, z.core.$strip>;
|
|
3894
|
+
};
|
|
3895
|
+
}>, Record<never, never>>;
|
|
3896
|
+
/**
|
|
3897
|
+
* Delete it. For a row that replaced a starter this is "reset": the shipped one comes back.
|
|
3898
|
+
*
|
|
3899
|
+
* Nothing made from a template is touched — a page is a page once it exists, and a template that
|
|
3900
|
+
* took its pages with it would be a delete nobody could afford to press.
|
|
3901
|
+
*/
|
|
3902
|
+
readonly remove: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
|
|
3903
|
+
workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
|
|
3904
|
+
templateId: z.ZodUUID;
|
|
3905
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
3906
|
+
ok: z.ZodLiteral<true>;
|
|
3907
|
+
}, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
|
|
3908
|
+
BAD_REQUEST: {
|
|
3909
|
+
data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
|
|
3910
|
+
};
|
|
3911
|
+
UNAUTHORIZED: {};
|
|
3912
|
+
FORBIDDEN: {
|
|
3913
|
+
data: z.ZodOptional<z.ZodObject<{
|
|
3914
|
+
permission: z.ZodOptional<z.ZodString>;
|
|
3915
|
+
}, z.core.$strip>>;
|
|
3916
|
+
};
|
|
3917
|
+
NOT_FOUND: {};
|
|
3918
|
+
CONFLICT: {
|
|
3919
|
+
data: z.ZodOptional<z.ZodObject<{
|
|
3920
|
+
reason: z.ZodOptional<z.ZodString>;
|
|
3921
|
+
}, z.core.$strip>>;
|
|
3922
|
+
};
|
|
3923
|
+
RATE_LIMITED: {};
|
|
3924
|
+
MODULE_DISABLED: {
|
|
3925
|
+
data: z.ZodObject<{
|
|
3926
|
+
module: z.ZodString;
|
|
3927
|
+
}, z.core.$strip>;
|
|
3928
|
+
};
|
|
3929
|
+
}>, Record<never, never>>;
|
|
3930
|
+
/**
|
|
3931
|
+
* Make the thing: a page, or a whole space and its tree.
|
|
3932
|
+
*
|
|
3933
|
+
* Exactly one of `templateId` and `starterKey` — a starter is a constant with no id, and a
|
|
3934
|
+
* union input would be a shape oRPC has to route. Both, or neither, is a bad request.
|
|
3935
|
+
*
|
|
3936
|
+
* `values` fills what the template declared. `{{date}}`, `{{time}}`, `{{author}}` and
|
|
3937
|
+
* `{{space}}` are filled by the server from the request and are declared by nobody; a name the
|
|
3938
|
+
* template never declared is left in the page as it was written, because deleting text somebody
|
|
3939
|
+
* typed is worse than showing them a placeholder they can see and fix.
|
|
3940
|
+
*
|
|
3941
|
+
* Substitution happens **in text, never in JSON**. A value containing a quote, a brace or a
|
|
3942
|
+
* newline is characters in a paragraph and cannot be anything else — see `services/templates.ts`.
|
|
3943
|
+
*/
|
|
3944
|
+
readonly instantiate: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
|
|
3945
|
+
workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
|
|
3946
|
+
templateId: z.ZodDefault<z.ZodNullable<z.ZodUUID>>;
|
|
3947
|
+
starterKey: z.ZodDefault<z.ZodNullable<z.ZodEnum<{
|
|
3948
|
+
"meeting-notes": "meeting-notes";
|
|
3949
|
+
"decision-record": "decision-record";
|
|
3950
|
+
requirements: "requirements";
|
|
3951
|
+
retrospective: "retrospective";
|
|
3952
|
+
"how-to": "how-to";
|
|
3953
|
+
}>>>;
|
|
3954
|
+
spaceId: z.ZodDefault<z.ZodNullable<z.ZodUUID>>;
|
|
3955
|
+
parentId: z.ZodDefault<z.ZodNullable<z.ZodUUID>>;
|
|
3956
|
+
afterId: z.ZodDefault<z.ZodNullable<z.ZodUUID>>;
|
|
3957
|
+
title: z.ZodDefault<z.ZodString>;
|
|
3958
|
+
key: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
3959
|
+
name: z.ZodDefault<z.ZodString>;
|
|
3960
|
+
values: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
3961
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
3962
|
+
spaceId: z.ZodUUID;
|
|
3963
|
+
pageId: z.ZodNullable<z.ZodUUID>;
|
|
3964
|
+
pageCount: z.ZodNumber;
|
|
3965
|
+
}, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
|
|
3966
|
+
BAD_REQUEST: {
|
|
3967
|
+
data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
|
|
3968
|
+
};
|
|
3969
|
+
UNAUTHORIZED: {};
|
|
3970
|
+
FORBIDDEN: {
|
|
3971
|
+
data: z.ZodOptional<z.ZodObject<{
|
|
3972
|
+
permission: z.ZodOptional<z.ZodString>;
|
|
3973
|
+
}, z.core.$strip>>;
|
|
3974
|
+
};
|
|
3975
|
+
NOT_FOUND: {};
|
|
3976
|
+
CONFLICT: {
|
|
3977
|
+
data: z.ZodOptional<z.ZodObject<{
|
|
3978
|
+
reason: z.ZodOptional<z.ZodString>;
|
|
3979
|
+
}, z.core.$strip>>;
|
|
3980
|
+
};
|
|
3981
|
+
RATE_LIMITED: {};
|
|
3982
|
+
MODULE_DISABLED: {
|
|
3983
|
+
data: z.ZodObject<{
|
|
3984
|
+
module: z.ZodString;
|
|
3985
|
+
}, z.core.$strip>;
|
|
3986
|
+
};
|
|
3987
|
+
}>, Record<never, never>>;
|
|
3988
|
+
};
|
|
3488
3989
|
readonly publishing: {
|
|
3489
3990
|
/** Make what is written now the version readers are served. Only meaningful for a `page`. */
|
|
3490
3991
|
readonly publish: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/contract/router.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAWL,EAAE,
|
|
1
|
+
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/contract/router.ts"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAKH,6FAA6F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAK7F;;;;;WAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAYH,yFAAyF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAYzF,6FAA6F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAiD7F;;;;;WAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
|