@panneau/protocol 0.0.0-stage → 5.0.0-alpha.1

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 (103) hide show
  1. package/README.md +35 -2
  2. package/dist/conditions.d.ts +7 -0
  3. package/dist/conditions.d.ts.map +1 -0
  4. package/dist/conditions.js +21 -0
  5. package/dist/conditions.js.map +1 -0
  6. package/dist/conformance/index.d.ts +42 -0
  7. package/dist/conformance/index.d.ts.map +1 -0
  8. package/dist/conformance/index.js +270 -0
  9. package/dist/conformance/index.js.map +1 -0
  10. package/dist/constants.d.ts +21 -0
  11. package/dist/constants.d.ts.map +1 -0
  12. package/dist/constants.js +73 -0
  13. package/dist/constants.js.map +1 -0
  14. package/dist/index.d.ts +5 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +21 -0
  17. package/dist/lint.d.ts +8 -0
  18. package/dist/lint.d.ts.map +1 -0
  19. package/dist/lint.js +73 -0
  20. package/dist/lint.js.map +1 -0
  21. package/dist/mock/example.d.ts +8 -0
  22. package/dist/mock/example.d.ts.map +1 -0
  23. package/dist/mock/example.js +190 -0
  24. package/dist/mock/example.js.map +1 -0
  25. package/dist/mock/index.d.ts +24 -0
  26. package/dist/mock/index.d.ts.map +1 -0
  27. package/dist/mock/index.js +254 -0
  28. package/dist/mock/index.js.map +1 -0
  29. package/dist/openapi.d.ts +11 -0
  30. package/dist/openapi.d.ts.map +1 -0
  31. package/dist/openapi.js +540 -0
  32. package/dist/openapi.js.map +1 -0
  33. package/dist/problem.d.ts +7 -0
  34. package/dist/problem.d.ts.map +1 -0
  35. package/dist/problem.js +22 -0
  36. package/dist/problem.js.map +1 -0
  37. package/dist/query.d.ts +41 -0
  38. package/dist/query.d.ts.map +1 -0
  39. package/dist/query.js +80 -0
  40. package/dist/query.js.map +1 -0
  41. package/dist/rules.d.ts +29 -0
  42. package/dist/rules.d.ts.map +1 -0
  43. package/dist/rules.js +143 -0
  44. package/dist/rules.js.map +1 -0
  45. package/dist/runtime/index.d.ts +10 -0
  46. package/dist/runtime/index.d.ts.map +1 -0
  47. package/dist/runtime/index.js +9 -0
  48. package/dist/schemas/action.d.ts +163 -0
  49. package/dist/schemas/action.d.ts.map +1 -0
  50. package/dist/schemas/action.js +56 -0
  51. package/dist/schemas/action.js.map +1 -0
  52. package/dist/schemas/api.d.ts +371 -0
  53. package/dist/schemas/api.d.ts.map +1 -0
  54. package/dist/schemas/api.js +140 -0
  55. package/dist/schemas/api.js.map +1 -0
  56. package/dist/schemas/boot.d.ts +14 -0
  57. package/dist/schemas/boot.d.ts.map +1 -0
  58. package/dist/schemas/boot.js +16 -0
  59. package/dist/schemas/boot.js.map +1 -0
  60. package/dist/schemas/common.d.ts +28 -0
  61. package/dist/schemas/common.d.ts.map +1 -0
  62. package/dist/schemas/common.js +35 -0
  63. package/dist/schemas/common.js.map +1 -0
  64. package/dist/schemas/definition.d.ts +462 -0
  65. package/dist/schemas/definition.d.ts.map +1 -0
  66. package/dist/schemas/definition.js +101 -0
  67. package/dist/schemas/definition.js.map +1 -0
  68. package/dist/schemas/field.d.ts +139 -0
  69. package/dist/schemas/field.d.ts.map +1 -0
  70. package/dist/schemas/field.js +94 -0
  71. package/dist/schemas/field.js.map +1 -0
  72. package/dist/schemas/index.d.ts +1536 -0
  73. package/dist/schemas/index.d.ts.map +1 -0
  74. package/dist/schemas/index.js +68 -0
  75. package/dist/schemas/index.js.map +1 -0
  76. package/dist/schemas/layout.d.ts +26 -0
  77. package/dist/schemas/layout.d.ts.map +1 -0
  78. package/dist/schemas/layout.js +23 -0
  79. package/dist/schemas/layout.js.map +1 -0
  80. package/dist/schemas/list.d.ts +69 -0
  81. package/dist/schemas/list.d.ts.map +1 -0
  82. package/dist/schemas/list.js +41 -0
  83. package/dist/schemas/list.js.map +1 -0
  84. package/dist/schemas/resource.d.ts +328 -0
  85. package/dist/schemas/resource.d.ts.map +1 -0
  86. package/dist/schemas/resource.js +38 -0
  87. package/dist/schemas/resource.js.map +1 -0
  88. package/dist/validate.d.ts +28 -0
  89. package/dist/validate.d.ts.map +1 -0
  90. package/dist/validate.js +52 -0
  91. package/dist/validate.js.map +1 -0
  92. package/dist/values.d.ts +7 -0
  93. package/dist/values.d.ts.map +1 -0
  94. package/dist/values.js +29 -0
  95. package/dist/values.js.map +1 -0
  96. package/dist/version.d.ts +5 -0
  97. package/dist/version.d.ts.map +1 -0
  98. package/dist/version.js +9 -0
  99. package/dist/version.js.map +1 -0
  100. package/package.json +53 -5
  101. package/schema/boot.schema.json +1229 -0
  102. package/schema/definition.schema.json +1195 -0
  103. package/schema/openapi.json +3839 -0
@@ -0,0 +1,139 @@
1
+ import { z } from 'zod';
2
+ import { Condition } from './common';
3
+ export declare const Rule: z.ZodUnion<readonly [z.ZodObject<{
4
+ rule: z.ZodLiteral<"required">;
5
+ message: z.ZodOptional<z.ZodString>;
6
+ }, z.core.$loose>, z.ZodObject<{
7
+ rule: z.ZodEnum<{
8
+ min: "min";
9
+ max: "max";
10
+ }>;
11
+ value: z.ZodNumber;
12
+ message: z.ZodOptional<z.ZodString>;
13
+ }, z.core.$loose>, z.ZodObject<{
14
+ rule: z.ZodLiteral<"pattern">;
15
+ value: z.ZodString;
16
+ flags: z.ZodOptional<z.ZodString>;
17
+ message: z.ZodOptional<z.ZodString>;
18
+ }, z.core.$loose>, z.ZodObject<{
19
+ rule: z.ZodEnum<{
20
+ email: "email";
21
+ url: "url";
22
+ }>;
23
+ message: z.ZodOptional<z.ZodString>;
24
+ }, z.core.$loose>, z.ZodObject<{
25
+ rule: z.ZodLiteral<"in">;
26
+ value: z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>;
27
+ message: z.ZodOptional<z.ZodString>;
28
+ }, z.core.$loose>, z.ZodObject<{
29
+ rule: z.ZodLiteral<"accept">;
30
+ value: z.ZodArray<z.ZodString>;
31
+ message: z.ZodOptional<z.ZodString>;
32
+ }, z.core.$loose>, z.ZodObject<{
33
+ rule: z.ZodLiteral<"maxSize">;
34
+ value: z.ZodNumber;
35
+ message: z.ZodOptional<z.ZodString>;
36
+ }, z.core.$loose>, z.ZodObject<{
37
+ rule: z.ZodEnum<{
38
+ before: "before";
39
+ after: "after";
40
+ }>;
41
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
42
+ field: z.ZodString;
43
+ }, z.core.$loose>]>;
44
+ message: z.ZodOptional<z.ZodString>;
45
+ }, z.core.$loose>, z.ZodObject<{
46
+ rule: z.ZodString;
47
+ message: z.ZodOptional<z.ZodString>;
48
+ }, z.core.$loose>]>;
49
+ export declare const BlockType: z.ZodObject<{
50
+ id: z.ZodString;
51
+ label: z.ZodString;
52
+ icon: z.ZodOptional<z.ZodString>;
53
+ fields: z.ZodArray<typeof Field>;
54
+ }, z.core.$loose>;
55
+ export declare const Field: z.ZodObject<{
56
+ name: z.ZodString;
57
+ type: z.ZodString;
58
+ label: z.ZodOptional<z.ZodString>;
59
+ help: z.ZodOptional<z.ZodString>;
60
+ placeholder: z.ZodOptional<z.ZodString>;
61
+ default: z.ZodOptional<z.ZodUnknown>;
62
+ localized: z.ZodOptional<z.ZodBoolean>;
63
+ readOnly: z.ZodOptional<z.ZodBoolean>;
64
+ createOnly: z.ZodOptional<z.ZodBoolean>;
65
+ updateOnly: z.ZodOptional<z.ZodBoolean>;
66
+ rules: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
67
+ rule: z.ZodLiteral<"required">;
68
+ message: z.ZodOptional<z.ZodString>;
69
+ }, z.core.$loose>, z.ZodObject<{
70
+ rule: z.ZodEnum<{
71
+ min: "min";
72
+ max: "max";
73
+ }>;
74
+ value: z.ZodNumber;
75
+ message: z.ZodOptional<z.ZodString>;
76
+ }, z.core.$loose>, z.ZodObject<{
77
+ rule: z.ZodLiteral<"pattern">;
78
+ value: z.ZodString;
79
+ flags: z.ZodOptional<z.ZodString>;
80
+ message: z.ZodOptional<z.ZodString>;
81
+ }, z.core.$loose>, z.ZodObject<{
82
+ rule: z.ZodEnum<{
83
+ email: "email";
84
+ url: "url";
85
+ }>;
86
+ message: z.ZodOptional<z.ZodString>;
87
+ }, z.core.$loose>, z.ZodObject<{
88
+ rule: z.ZodLiteral<"in">;
89
+ value: z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>;
90
+ message: z.ZodOptional<z.ZodString>;
91
+ }, z.core.$loose>, z.ZodObject<{
92
+ rule: z.ZodLiteral<"accept">;
93
+ value: z.ZodArray<z.ZodString>;
94
+ message: z.ZodOptional<z.ZodString>;
95
+ }, z.core.$loose>, z.ZodObject<{
96
+ rule: z.ZodLiteral<"maxSize">;
97
+ value: z.ZodNumber;
98
+ message: z.ZodOptional<z.ZodString>;
99
+ }, z.core.$loose>, z.ZodObject<{
100
+ rule: z.ZodEnum<{
101
+ before: "before";
102
+ after: "after";
103
+ }>;
104
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
105
+ field: z.ZodString;
106
+ }, z.core.$loose>]>;
107
+ message: z.ZodOptional<z.ZodString>;
108
+ }, z.core.$loose>, z.ZodObject<{
109
+ rule: z.ZodString;
110
+ message: z.ZodOptional<z.ZodString>;
111
+ }, z.core.$loose>]>>>;
112
+ visibleWhen: z.ZodOptional<z.ZodObject<{
113
+ field: z.ZodOptional<z.ZodString>;
114
+ equals: z.ZodOptional<z.ZodUnknown>;
115
+ in: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
116
+ notIn: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
117
+ filled: z.ZodOptional<z.ZodBoolean>;
118
+ all: z.ZodOptional<z.ZodArray<typeof Condition>>;
119
+ any: z.ZodOptional<z.ZodArray<typeof Condition>>;
120
+ }, z.core.$loose>>;
121
+ options: z.ZodOptional<z.ZodArray<z.ZodObject<{
122
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>;
123
+ label: z.ZodString;
124
+ description: z.ZodOptional<z.ZodString>;
125
+ disabled: z.ZodOptional<z.ZodBoolean>;
126
+ }, z.core.$loose>>>;
127
+ multiple: z.ZodOptional<z.ZodBoolean>;
128
+ resource: z.ZodOptional<z.ZodString>;
129
+ accept: z.ZodOptional<z.ZodArray<z.ZodString>>;
130
+ from: z.ZodOptional<z.ZodString>;
131
+ display: z.ZodOptional<z.ZodString>;
132
+ fields: z.ZodOptional<z.ZodArray<typeof Field>>;
133
+ types: z.ZodOptional<z.ZodArray<typeof BlockType>>;
134
+ settings: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
135
+ }, z.core.$loose>;
136
+ export type Rule = z.infer<typeof Rule>;
137
+ export type BlockType = z.infer<typeof BlockType>;
138
+ export type Field = z.infer<typeof Field>;
139
+ //# sourceMappingURL=field.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field.d.ts","sourceRoot":"","sources":["../../src/schemas/field.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,SAAS,EAAU,MAAM,UAAU,CAAC;AAY7C,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAkCX,CAAC;AAEP,eAAO,MAAM,SAAS;;;;YAKJ,CAAC,CAAC,QAAQ,CAAC,OAAO,KAAK,CAAC;iBAGxC,CAAC;AAEH,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAwCI,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,KAAK,CAAC,CAAC;WAMxC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,SAAS,CAAC,CAAC;;iBAQhB,CAAC;AAEjD,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;AACxC,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAC;AAClD,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,KAAK,CAAC,CAAC"}
@@ -0,0 +1,94 @@
1
+ import { PORTABLE_RULES } from "../constants.js";
2
+ import { Condition, Option } from "./common.js";
3
+ import { z } from "zod";
4
+ //#region src/schemas/field.ts
5
+ var message = z.string().optional().meta({ description: "Message shown when the rule fails, instead of the default one." });
6
+ var DateBound = z.union([z.string().meta({ description: "An ISO 8601 date or date-time." }), z.looseObject({ field: z.string().min(1) }).meta({ description: "Another field of the form." })]);
7
+ var Rule = z.union([
8
+ z.looseObject({
9
+ rule: z.literal("required"),
10
+ message
11
+ }),
12
+ z.looseObject({
13
+ rule: z.enum(["min", "max"]),
14
+ value: z.number(),
15
+ message
16
+ }),
17
+ z.looseObject({
18
+ rule: z.literal("pattern"),
19
+ value: z.string(),
20
+ flags: z.string().optional(),
21
+ message
22
+ }),
23
+ z.looseObject({
24
+ rule: z.enum(["email", "url"]),
25
+ message
26
+ }),
27
+ z.looseObject({
28
+ rule: z.literal("in"),
29
+ value: z.array(z.union([
30
+ z.string(),
31
+ z.number(),
32
+ z.boolean()
33
+ ])),
34
+ message
35
+ }),
36
+ z.looseObject({
37
+ rule: z.literal("accept"),
38
+ value: z.array(z.string().min(1)),
39
+ message
40
+ }),
41
+ z.looseObject({
42
+ rule: z.literal("maxSize"),
43
+ value: z.number().int().positive(),
44
+ message
45
+ }),
46
+ z.looseObject({
47
+ rule: z.enum(["before", "after"]),
48
+ value: DateBound,
49
+ message
50
+ }),
51
+ z.looseObject({
52
+ rule: z.string().refine((rule) => !PORTABLE_RULES.includes(rule)),
53
+ message
54
+ }).meta({ description: "A rule added in a later version of the protocol. Clients that don't know it ignore it; the server still enforces it." })
55
+ ]).meta({ description: "A portable validation rule. `min` and `max` apply to numbers, and to the length of text and arrays. `accept` lists MIME types (`image/*`). `maxSize` is in bytes." });
56
+ var BlockType = z.looseObject({
57
+ id: z.string().min(1),
58
+ label: z.string(),
59
+ icon: z.string().optional(),
60
+ get fields() {
61
+ return z.array(Field);
62
+ }
63
+ });
64
+ var Field = z.looseObject({
65
+ name: z.string().min(1),
66
+ type: z.string().min(1).meta({ description: "A built-in field type, or a type provided by a plugin." }),
67
+ label: z.string().optional(),
68
+ help: z.string().optional(),
69
+ placeholder: z.string().optional(),
70
+ default: z.unknown().optional(),
71
+ localized: z.boolean().optional().meta({ description: "The value is an object keyed by locale." }),
72
+ readOnly: z.boolean().optional(),
73
+ createOnly: z.boolean().optional(),
74
+ updateOnly: z.boolean().optional(),
75
+ rules: z.array(Rule).optional(),
76
+ visibleWhen: Condition.optional(),
77
+ options: z.array(Option).optional().meta({ description: "`select`: the choices." }),
78
+ multiple: z.boolean().optional().meta({ description: "`select`, `relation`, `media`: the value is an array." }),
79
+ resource: z.string().optional().meta({ description: "`relation`: id of the related resource." }),
80
+ accept: z.array(z.string()).optional().meta({ description: "`media`: accepted MIME types." }),
81
+ from: z.string().optional().meta({ description: "`slug`: the field the slug is generated from." }),
82
+ display: z.string().optional().meta({ description: "Display used in lists, when it differs from the default one of the type." }),
83
+ get fields() {
84
+ return z.array(Field).optional().meta({ description: "`group` and `repeater`: the nested fields." });
85
+ },
86
+ get types() {
87
+ return z.array(BlockType).optional().meta({ description: "`repeater`: typed blocks, each with its own fields." });
88
+ },
89
+ settings: z.record(z.string(), z.unknown()).optional()
90
+ }).meta({ description: "A field of a form." });
91
+ //#endregion
92
+ export { BlockType, Field, Rule };
93
+
94
+ //# sourceMappingURL=field.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field.js","names":[],"sources":["../../src/schemas/field.ts"],"sourcesContent":["import { z } from 'zod';\n\nimport { PORTABLE_RULES } from '../constants';\nimport { Condition, Option } from './common';\n\nconst message = z\n .string()\n .optional()\n .meta({ description: 'Message shown when the rule fails, instead of the default one.' });\n\nconst DateBound = z.union([\n z.string().meta({ description: 'An ISO 8601 date or date-time.' }),\n z.looseObject({ field: z.string().min(1) }).meta({ description: 'Another field of the form.' }),\n]);\n\nexport const Rule = z\n .union([\n z.looseObject({ rule: z.literal('required'), message }),\n z.looseObject({ rule: z.enum(['min', 'max']), value: z.number(), message }),\n z.looseObject({\n rule: z.literal('pattern'),\n value: z.string(),\n flags: z.string().optional(),\n message,\n }),\n z.looseObject({ rule: z.enum(['email', 'url']), message }),\n z.looseObject({\n rule: z.literal('in'),\n value: z.array(z.union([z.string(), z.number(), z.boolean()])),\n message,\n }),\n z.looseObject({ rule: z.literal('accept'), value: z.array(z.string().min(1)), message }),\n z.looseObject({ rule: z.literal('maxSize'), value: z.number().int().positive(), message }),\n z.looseObject({ rule: z.enum(['before', 'after']), value: DateBound, message }),\n z\n .looseObject({\n rule: z\n .string()\n .refine((rule) => !(PORTABLE_RULES as readonly string[]).includes(rule)),\n message,\n })\n .meta({\n description:\n \"A rule added in a later version of the protocol. Clients that don't know it ignore it; the server still enforces it.\",\n }),\n ])\n .meta({\n description:\n 'A portable validation rule. `min` and `max` apply to numbers, and to the length of text and arrays. `accept` lists MIME types (`image/*`). `maxSize` is in bytes.',\n });\n\nexport const BlockType = z.looseObject({\n id: z.string().min(1),\n label: z.string(),\n icon: z.string().optional(),\n // Return types are written out so that declaration files keep the recursion.\n get fields(): z.ZodArray<typeof Field> {\n return z.array(Field);\n },\n});\n\nexport const Field = z\n .looseObject({\n name: z.string().min(1),\n type: z\n .string()\n .min(1)\n .meta({ description: 'A built-in field type, or a type provided by a plugin.' }),\n label: z.string().optional(),\n help: z.string().optional(),\n placeholder: z.string().optional(),\n default: z.unknown().optional(),\n localized: z\n .boolean()\n .optional()\n .meta({ description: 'The value is an object keyed by locale.' }),\n readOnly: z.boolean().optional(),\n createOnly: z.boolean().optional(),\n updateOnly: z.boolean().optional(),\n rules: z.array(Rule).optional(),\n visibleWhen: Condition.optional(),\n options: z.array(Option).optional().meta({ description: '`select`: the choices.' }),\n multiple: z\n .boolean()\n .optional()\n .meta({ description: '`select`, `relation`, `media`: the value is an array.' }),\n resource: z\n .string()\n .optional()\n .meta({ description: '`relation`: id of the related resource.' }),\n accept: z\n .array(z.string())\n .optional()\n .meta({ description: '`media`: accepted MIME types.' }),\n from: z\n .string()\n .optional()\n .meta({ description: '`slug`: the field the slug is generated from.' }),\n display: z.string().optional().meta({\n description: 'Display used in lists, when it differs from the default one of the type.',\n }),\n get fields(): z.ZodOptional<z.ZodArray<typeof Field>> {\n return z\n .array(Field)\n .optional()\n .meta({ description: '`group` and `repeater`: the nested fields.' });\n },\n get types(): z.ZodOptional<z.ZodArray<typeof BlockType>> {\n return z\n .array(BlockType)\n .optional()\n .meta({ description: '`repeater`: typed blocks, each with its own fields.' });\n },\n settings: z.record(z.string(), z.unknown()).optional(),\n })\n .meta({ description: 'A field of a form.' });\n\nexport type Rule = z.infer<typeof Rule>;\nexport type BlockType = z.infer<typeof BlockType>;\nexport type Field = z.infer<typeof Field>;\n"],"mappings":"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"}