@openbrf/plugin-sdk 0.0.0-stage → 1.0.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.
Files changed (79) hide show
  1. package/LICENSE +661 -0
  2. package/LICENSE-EXCEPTION.md +28 -0
  3. package/dist/action-schema.d.ts +42 -0
  4. package/dist/action-schema.d.ts.map +1 -0
  5. package/dist/action-schema.js +64 -0
  6. package/dist/action-schema.js.map +1 -0
  7. package/dist/actions.d.ts +199 -0
  8. package/dist/actions.d.ts.map +1 -0
  9. package/dist/actions.js +68 -0
  10. package/dist/actions.js.map +1 -0
  11. package/dist/api-version.d.ts +23 -0
  12. package/dist/api-version.d.ts.map +1 -0
  13. package/dist/api-version.js +27 -0
  14. package/dist/api-version.js.map +1 -0
  15. package/dist/catalog.d.ts +315 -0
  16. package/dist/catalog.d.ts.map +1 -0
  17. package/dist/catalog.js +203 -0
  18. package/dist/catalog.js.map +1 -0
  19. package/dist/define-plugin.d.ts +14 -0
  20. package/dist/define-plugin.d.ts.map +1 -0
  21. package/dist/define-plugin.js +15 -0
  22. package/dist/define-plugin.js.map +1 -0
  23. package/dist/findings.d.ts +67 -0
  24. package/dist/findings.d.ts.map +1 -0
  25. package/dist/findings.js +57 -0
  26. package/dist/findings.js.map +1 -0
  27. package/dist/host.d.ts +208 -0
  28. package/dist/host.d.ts.map +1 -0
  29. package/dist/host.js +41 -0
  30. package/dist/host.js.map +1 -0
  31. package/dist/index.d.ts +24 -0
  32. package/dist/index.d.ts.map +1 -0
  33. package/dist/index.js +22 -0
  34. package/dist/index.js.map +1 -0
  35. package/dist/integrity.d.ts +38 -0
  36. package/dist/integrity.d.ts.map +1 -0
  37. package/dist/integrity.js +105 -0
  38. package/dist/integrity.js.map +1 -0
  39. package/dist/manifest.d.ts +392 -0
  40. package/dist/manifest.d.ts.map +1 -0
  41. package/dist/manifest.js +324 -0
  42. package/dist/manifest.js.map +1 -0
  43. package/dist/module.d.ts +35 -0
  44. package/dist/module.d.ts.map +1 -0
  45. package/dist/module.js +2 -0
  46. package/dist/module.js.map +1 -0
  47. package/dist/package-check.d.ts +66 -0
  48. package/dist/package-check.d.ts.map +1 -0
  49. package/dist/package-check.js +755 -0
  50. package/dist/package-check.js.map +1 -0
  51. package/dist/permissions.d.ts +65 -0
  52. package/dist/permissions.d.ts.map +1 -0
  53. package/dist/permissions.js +69 -0
  54. package/dist/permissions.js.map +1 -0
  55. package/dist/settings-schema.d.ts +95 -0
  56. package/dist/settings-schema.d.ts.map +1 -0
  57. package/dist/settings-schema.js +219 -0
  58. package/dist/settings-schema.js.map +1 -0
  59. package/dist/standard-schema.d.ts +43 -0
  60. package/dist/standard-schema.d.ts.map +1 -0
  61. package/dist/standard-schema.js +2 -0
  62. package/dist/standard-schema.js.map +1 -0
  63. package/package.json +55 -3
  64. package/src/action-schema.ts +86 -0
  65. package/src/actions.ts +247 -0
  66. package/src/api-version.ts +28 -0
  67. package/src/catalog.ts +236 -0
  68. package/src/define-plugin.ts +18 -0
  69. package/src/findings.ts +71 -0
  70. package/src/host.ts +240 -0
  71. package/src/index.ts +123 -0
  72. package/src/integrity.ts +125 -0
  73. package/src/manifest.ts +385 -0
  74. package/src/module.ts +38 -0
  75. package/src/package-check.ts +894 -0
  76. package/src/permissions.ts +75 -0
  77. package/src/settings-schema.ts +272 -0
  78. package/src/standard-schema.ts +39 -0
  79. package/README.md +0 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-check.js","sourceRoot":"","sources":["../src/package-check.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * What a plugin may ask the host for.
3
+ *
4
+ * The list is deliberately short and read-only. A backend plugin runs at full
5
+ * process privilege (ADR 0003 - there is no sandbox in v1), so these
6
+ * permissions are not a security boundary against hostile code; they are the
7
+ * declaration the board consents to before an install, and the boundary the
8
+ * SDK enforces against an honest plugin reaching further than it said it
9
+ * would. Curation of the catalog is what stands between an instance and
10
+ * hostile code, and the revisit trigger in ADR 0003 records when that changes.
11
+ *
12
+ * No permission grants write access to the register in v0. A plugin that
13
+ * needs to change resident data is a core feature request, not a plugin.
14
+ */
15
+ export declare const PLUGIN_PERMISSIONS: readonly [
16
+ /**
17
+ * Apartments, names, who is a resident, who is a member, and when a person
18
+ * moved in or out. Never contact details, never personal identity numbers,
19
+ * and never a person flagged with protected personal data - those are
20
+ * excluded from every plugin read regardless of permission (plan section
21
+ * 4.4).
22
+ *
23
+ * Board positions are not in it. Who sits on the board is a core capability,
24
+ * read nowhere in the host object a plugin is given.
25
+ */
26
+ "addressBook:read",
27
+ /**
28
+ * Additionally email and phone. Separate from addressBook:read because
29
+ * contact data is board-only in the core product, so a plugin asking for it
30
+ * is asking for markedly more than one that only needs to know who lives
31
+ * where.
32
+ */
33
+ "addressBook:readContact",
34
+ /** Send mail through the instance's configured SMTP server. */
35
+ "mail:send",
36
+ /**
37
+ * Send text messages through the instance's configured SMS provider.
38
+ *
39
+ * Separate from mail:send because the two do not cost the association the
40
+ * same thing. Mail leaves through a server the instance is already set up
41
+ * for; a text message is billed per message against a provider contract the
42
+ * board signed, and an instance that has bought none cannot send one at all.
43
+ */
44
+ "sms:send",
45
+ /** Register background workers and enqueue or schedule jobs. */
46
+ "jobs:schedule"];
47
+ export type PluginPermission = (typeof PLUGIN_PERMISSIONS)[number];
48
+ export declare function isPluginPermission(value: string): value is PluginPermission;
49
+ /**
50
+ * Categories of personal data a plugin declares it will process.
51
+ *
52
+ * Shown on the consent screen before an install, and stored with the
53
+ * installation as the snapshot the board agreed to. It is a declaration, not
54
+ * an enforcement point: what the plugin can actually reach follows from its
55
+ * permissions above.
56
+ */
57
+ export declare const PLUGIN_PERSONAL_DATA_CATEGORIES: readonly [
58
+ /** Given and family name. */
59
+ "name",
60
+ /** Which apartment and address a person is connected to. */
61
+ "apartment",
62
+ /** Move-in and move-out dates, and whether the person is a member. */
63
+ "residency", "email", "phone"];
64
+ export type PluginPersonalDataCategory = (typeof PLUGIN_PERSONAL_DATA_CATEGORIES)[number];
65
+ //# sourceMappingURL=permissions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,kBAAkB;AAC7B;;;;;;;;;GASG;AACH,kBAAkB;AAClB;;;;;GAKG;AACH,yBAAyB;AACzB,+DAA+D;AAC/D,WAAW;AACX;;;;;;;GAOG;AACH,UAAU;AACV,gEAAgE;AAChE,eAAe,CACP,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnE,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,gBAAgB,CAE3E;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,+BAA+B;AAC1C,6BAA6B;AAC7B,MAAM;AACN,4DAA4D;AAC5D,WAAW;AACX,sEAAsE;AACtE,WAAW,EACX,OAAO,EACP,OAAO,CACC,CAAC;AAEX,MAAM,MAAM,0BAA0B,GACpC,CAAC,OAAO,+BAA+B,CAAC,CAAC,MAAM,CAAC,CAAC"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * What a plugin may ask the host for.
3
+ *
4
+ * The list is deliberately short and read-only. A backend plugin runs at full
5
+ * process privilege (ADR 0003 - there is no sandbox in v1), so these
6
+ * permissions are not a security boundary against hostile code; they are the
7
+ * declaration the board consents to before an install, and the boundary the
8
+ * SDK enforces against an honest plugin reaching further than it said it
9
+ * would. Curation of the catalog is what stands between an instance and
10
+ * hostile code, and the revisit trigger in ADR 0003 records when that changes.
11
+ *
12
+ * No permission grants write access to the register in v0. A plugin that
13
+ * needs to change resident data is a core feature request, not a plugin.
14
+ */
15
+ export const PLUGIN_PERMISSIONS = [
16
+ /**
17
+ * Apartments, names, who is a resident, who is a member, and when a person
18
+ * moved in or out. Never contact details, never personal identity numbers,
19
+ * and never a person flagged with protected personal data - those are
20
+ * excluded from every plugin read regardless of permission (plan section
21
+ * 4.4).
22
+ *
23
+ * Board positions are not in it. Who sits on the board is a core capability,
24
+ * read nowhere in the host object a plugin is given.
25
+ */
26
+ "addressBook:read",
27
+ /**
28
+ * Additionally email and phone. Separate from addressBook:read because
29
+ * contact data is board-only in the core product, so a plugin asking for it
30
+ * is asking for markedly more than one that only needs to know who lives
31
+ * where.
32
+ */
33
+ "addressBook:readContact",
34
+ /** Send mail through the instance's configured SMTP server. */
35
+ "mail:send",
36
+ /**
37
+ * Send text messages through the instance's configured SMS provider.
38
+ *
39
+ * Separate from mail:send because the two do not cost the association the
40
+ * same thing. Mail leaves through a server the instance is already set up
41
+ * for; a text message is billed per message against a provider contract the
42
+ * board signed, and an instance that has bought none cannot send one at all.
43
+ */
44
+ "sms:send",
45
+ /** Register background workers and enqueue or schedule jobs. */
46
+ "jobs:schedule",
47
+ ];
48
+ export function isPluginPermission(value) {
49
+ return PLUGIN_PERMISSIONS.includes(value);
50
+ }
51
+ /**
52
+ * Categories of personal data a plugin declares it will process.
53
+ *
54
+ * Shown on the consent screen before an install, and stored with the
55
+ * installation as the snapshot the board agreed to. It is a declaration, not
56
+ * an enforcement point: what the plugin can actually reach follows from its
57
+ * permissions above.
58
+ */
59
+ export const PLUGIN_PERSONAL_DATA_CATEGORIES = [
60
+ /** Given and family name. */
61
+ "name",
62
+ /** Which apartment and address a person is connected to. */
63
+ "apartment",
64
+ /** Move-in and move-out dates, and whether the person is a member. */
65
+ "residency",
66
+ "email",
67
+ "phone",
68
+ ];
69
+ //# sourceMappingURL=permissions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permissions.js","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC;;;;;;;;;OASG;IACH,kBAAkB;IAClB;;;;;OAKG;IACH,yBAAyB;IACzB,+DAA+D;IAC/D,WAAW;IACX;;;;;;;OAOG;IACH,UAAU;IACV,gEAAgE;IAChE,eAAe;CACP,CAAC;AAIX,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,OAAQ,kBAAwC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACnE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG;IAC7C,6BAA6B;IAC7B,MAAM;IACN,4DAA4D;IAC5D,WAAW;IACX,sEAAsE;IACtE,WAAW;IACX,OAAO;IACP,OAAO;CACC,CAAC"}
@@ -0,0 +1,95 @@
1
+ import { z } from "zod";
2
+ export declare const pluginSettingsFieldSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
3
+ key: z.ZodString;
4
+ labelKey: z.ZodString;
5
+ hintKey: z.ZodOptional<z.ZodString>;
6
+ required: z.ZodDefault<z.ZodBoolean>;
7
+ type: z.ZodLiteral<"text">;
8
+ default: z.ZodOptional<z.ZodString>;
9
+ minLength: z.ZodOptional<z.ZodInt>;
10
+ maxLength: z.ZodOptional<z.ZodInt>;
11
+ }, z.core.$strip>, z.ZodObject<{
12
+ key: z.ZodString;
13
+ labelKey: z.ZodString;
14
+ hintKey: z.ZodOptional<z.ZodString>;
15
+ required: z.ZodDefault<z.ZodBoolean>;
16
+ type: z.ZodLiteral<"number">;
17
+ default: z.ZodOptional<z.ZodNumber>;
18
+ min: z.ZodOptional<z.ZodNumber>;
19
+ max: z.ZodOptional<z.ZodNumber>;
20
+ integer: z.ZodDefault<z.ZodBoolean>;
21
+ }, z.core.$strip>, z.ZodObject<{
22
+ key: z.ZodString;
23
+ labelKey: z.ZodString;
24
+ hintKey: z.ZodOptional<z.ZodString>;
25
+ required: z.ZodDefault<z.ZodBoolean>;
26
+ type: z.ZodLiteral<"boolean">;
27
+ default: z.ZodOptional<z.ZodBoolean>;
28
+ }, z.core.$strip>, z.ZodObject<{
29
+ key: z.ZodString;
30
+ labelKey: z.ZodString;
31
+ hintKey: z.ZodOptional<z.ZodString>;
32
+ required: z.ZodDefault<z.ZodBoolean>;
33
+ type: z.ZodLiteral<"select">;
34
+ default: z.ZodOptional<z.ZodString>;
35
+ options: z.ZodArray<z.ZodObject<{
36
+ value: z.ZodString;
37
+ labelKey: z.ZodString;
38
+ }, z.core.$strip>>;
39
+ }, z.core.$strip>], "type">;
40
+ export type PluginSettingsField = z.infer<typeof pluginSettingsFieldSchema>;
41
+ export declare const pluginSettingsSchema: z.ZodObject<{
42
+ fields: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
43
+ key: z.ZodString;
44
+ labelKey: z.ZodString;
45
+ hintKey: z.ZodOptional<z.ZodString>;
46
+ required: z.ZodDefault<z.ZodBoolean>;
47
+ type: z.ZodLiteral<"text">;
48
+ default: z.ZodOptional<z.ZodString>;
49
+ minLength: z.ZodOptional<z.ZodInt>;
50
+ maxLength: z.ZodOptional<z.ZodInt>;
51
+ }, z.core.$strip>, z.ZodObject<{
52
+ key: z.ZodString;
53
+ labelKey: z.ZodString;
54
+ hintKey: z.ZodOptional<z.ZodString>;
55
+ required: z.ZodDefault<z.ZodBoolean>;
56
+ type: z.ZodLiteral<"number">;
57
+ default: z.ZodOptional<z.ZodNumber>;
58
+ min: z.ZodOptional<z.ZodNumber>;
59
+ max: z.ZodOptional<z.ZodNumber>;
60
+ integer: z.ZodDefault<z.ZodBoolean>;
61
+ }, z.core.$strip>, z.ZodObject<{
62
+ key: z.ZodString;
63
+ labelKey: z.ZodString;
64
+ hintKey: z.ZodOptional<z.ZodString>;
65
+ required: z.ZodDefault<z.ZodBoolean>;
66
+ type: z.ZodLiteral<"boolean">;
67
+ default: z.ZodOptional<z.ZodBoolean>;
68
+ }, z.core.$strip>, z.ZodObject<{
69
+ key: z.ZodString;
70
+ labelKey: z.ZodString;
71
+ hintKey: z.ZodOptional<z.ZodString>;
72
+ required: z.ZodDefault<z.ZodBoolean>;
73
+ type: z.ZodLiteral<"select">;
74
+ default: z.ZodOptional<z.ZodString>;
75
+ options: z.ZodArray<z.ZodObject<{
76
+ value: z.ZodString;
77
+ labelKey: z.ZodString;
78
+ }, z.core.$strip>>;
79
+ }, z.core.$strip>], "type">>;
80
+ }, z.core.$strip>;
81
+ export type PluginSettingsSchema = z.infer<typeof pluginSettingsSchema>;
82
+ export type PluginSettingsValues = Record<string, string | number | boolean>;
83
+ /**
84
+ * Builds the validator for one settings declaration.
85
+ *
86
+ * Produced from the declaration rather than written by the plugin, so the
87
+ * form the host renders and the values the host stores can never disagree
88
+ * about what is acceptable. Unknown keys are stripped: a plugin that drops a
89
+ * setting in a new version must not leave the old value behind to be handed
90
+ * back to it as something it no longer understands.
91
+ */
92
+ export declare function settingsValidator(schema: PluginSettingsSchema): z.ZodType<PluginSettingsValues>;
93
+ /** The values a fresh installation starts with, from the declared defaults. */
94
+ export declare function defaultSettings(schema: PluginSettingsSchema): PluginSettingsValues;
95
+ //# sourceMappingURL=settings-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings-schema.d.ts","sourceRoot":"","sources":["../src/settings-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAsExB,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAKpC,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AA0F5E,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAe7B,CAAC;AAEL,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAExE,MAAM,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;AAE7E;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,oBAAoB,GAC3B,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAQjC;AAqDD,+EAA+E;AAC/E,wBAAgB,eAAe,CAC7B,MAAM,EAAE,oBAAoB,GAC3B,oBAAoB,CAQtB"}
@@ -0,0 +1,219 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * A plugin's settings form, declared rather than drawn.
4
+ *
5
+ * The host renders it, validates against it, and stores the result. A plugin
6
+ * therefore never ships a settings screen of its own, which is what keeps
7
+ * plugin settings looking like the rest of the product and keeps the values
8
+ * validated on the server rather than only in a form the plugin drew.
9
+ *
10
+ * Labels are i18n KEYS, resolved in the plugin's own namespace
11
+ * (`plugin-<id>`, merged at runtime from its locales/{sv,en}.json). Inline
12
+ * label text is deliberately not accepted: a manifest carrying English prose
13
+ * would put an untranslatable string on a Swedish-first screen, and the
14
+ * runtime merge already exists to hold that text.
15
+ */
16
+ const settingsKeySchema = z
17
+ .string()
18
+ .min(1)
19
+ .max(64)
20
+ // A settings key becomes a JSON object key and a form field name. Keeping it
21
+ // to an identifier shape means a stored value can never collide with a
22
+ // prototype member or need escaping in either place.
23
+ .regex(/^[a-z][a-zA-Z0-9_]*$/, "must be a lowerCamelCase identifier");
24
+ const translationKeySchema = z.string().min(1).max(200);
25
+ const baseFieldSchema = z.object({
26
+ key: settingsKeySchema,
27
+ labelKey: translationKeySchema,
28
+ /** Help text under the field. Never the only carrier of a requirement. */
29
+ hintKey: translationKeySchema.optional(),
30
+ required: z.boolean().default(false),
31
+ });
32
+ const textFieldSchema = baseFieldSchema.extend({
33
+ type: z.literal("text"),
34
+ default: z.string().optional(),
35
+ minLength: z.int().min(0).optional(),
36
+ maxLength: z.int().min(1).max(10_000).optional(),
37
+ });
38
+ const numberFieldSchema = baseFieldSchema.extend({
39
+ type: z.literal("number"),
40
+ default: z.number().optional(),
41
+ min: z.number().optional(),
42
+ max: z.number().optional(),
43
+ integer: z.boolean().default(false),
44
+ });
45
+ const booleanFieldSchema = baseFieldSchema.extend({
46
+ type: z.literal("boolean"),
47
+ default: z.boolean().optional(),
48
+ });
49
+ const selectFieldSchema = baseFieldSchema.extend({
50
+ type: z.literal("select"),
51
+ default: z.string().optional(),
52
+ options: z
53
+ .array(z.object({
54
+ value: z.string().min(1).max(200),
55
+ labelKey: translationKeySchema,
56
+ }))
57
+ .min(1)
58
+ .max(50),
59
+ });
60
+ export const pluginSettingsFieldSchema = z.discriminatedUnion("type", [
61
+ textFieldSchema,
62
+ numberFieldSchema,
63
+ booleanFieldSchema,
64
+ selectFieldSchema,
65
+ ]);
66
+ /**
67
+ * Checks a field's bounds against each other and against its default.
68
+ *
69
+ * Done while the manifest is parsed rather than left to the validator, because
70
+ * neither of the two paths a default takes goes through the field's
71
+ * constraints. `.default(value)` short-circuits an absent value and returns it
72
+ * without applying anything downstream, and `defaultSettings` reads the
73
+ * declaration directly. A number field declaring `min: 10, default: 5` would
74
+ * otherwise hand the plugin a 5 it said it would never see, and
75
+ * `minLength: 10, maxLength: 2` would declare a field no submitted value can
76
+ * satisfy - both of which are the plugin's mistake to hear about at install
77
+ * time rather than the board's to discover at a save.
78
+ */
79
+ function checkFieldConstraints(field, index, ctx) {
80
+ const reject = (message, key) => {
81
+ ctx.addIssue({
82
+ code: "custom",
83
+ message,
84
+ path: ["fields", index, key],
85
+ });
86
+ };
87
+ switch (field.type) {
88
+ case "text": {
89
+ if (field.minLength !== undefined &&
90
+ field.maxLength !== undefined &&
91
+ field.minLength > field.maxLength) {
92
+ reject("minLength must not be greater than maxLength", "minLength");
93
+ }
94
+ if (field.default === undefined) {
95
+ return;
96
+ }
97
+ if (field.minLength !== undefined &&
98
+ field.default.length < field.minLength) {
99
+ reject("the default is shorter than minLength", "default");
100
+ }
101
+ if (field.maxLength !== undefined &&
102
+ field.default.length > field.maxLength) {
103
+ reject("the default is longer than maxLength", "default");
104
+ }
105
+ return;
106
+ }
107
+ case "number": {
108
+ if (field.min !== undefined &&
109
+ field.max !== undefined &&
110
+ field.min > field.max) {
111
+ reject("min must not be greater than max", "min");
112
+ }
113
+ if (field.default === undefined) {
114
+ return;
115
+ }
116
+ if (field.integer && !Number.isInteger(field.default)) {
117
+ reject("the default is not an integer", "default");
118
+ }
119
+ if (field.min !== undefined && field.default < field.min) {
120
+ reject("the default is below min", "default");
121
+ }
122
+ if (field.max !== undefined && field.default > field.max) {
123
+ reject("the default is above max", "default");
124
+ }
125
+ return;
126
+ }
127
+ case "select": {
128
+ if (field.default !== undefined &&
129
+ !field.options.some((option) => option.value === field.default)) {
130
+ reject("the default is not one of the declared options", "default");
131
+ }
132
+ return;
133
+ }
134
+ case "boolean":
135
+ return;
136
+ }
137
+ }
138
+ export const pluginSettingsSchema = z
139
+ .object({
140
+ fields: z
141
+ .array(pluginSettingsFieldSchema)
142
+ .max(50)
143
+ .refine((fields) => new Set(fields.map((field) => field.key)).size === fields.length, { message: "field keys must be unique" }),
144
+ })
145
+ .superRefine((declaration, ctx) => {
146
+ declaration.fields.forEach((field, index) => {
147
+ checkFieldConstraints(field, index, ctx);
148
+ });
149
+ });
150
+ /**
151
+ * Builds the validator for one settings declaration.
152
+ *
153
+ * Produced from the declaration rather than written by the plugin, so the
154
+ * form the host renders and the values the host stores can never disagree
155
+ * about what is acceptable. Unknown keys are stripped: a plugin that drops a
156
+ * setting in a new version must not leave the old value behind to be handed
157
+ * back to it as something it no longer understands.
158
+ */
159
+ export function settingsValidator(schema) {
160
+ const shape = {};
161
+ for (const field of schema.fields) {
162
+ shape[field.key] = fieldValidator(field);
163
+ }
164
+ return z.object(shape).strip();
165
+ }
166
+ function fieldValidator(field) {
167
+ switch (field.type) {
168
+ case "text": {
169
+ let text = z.string();
170
+ if (field.minLength !== undefined) {
171
+ text = text.min(field.minLength);
172
+ }
173
+ if (field.maxLength !== undefined) {
174
+ text = text.max(field.maxLength);
175
+ }
176
+ // A required text field rejects the empty string. Without this a form
177
+ // submitted with the field untouched would satisfy "required" with a
178
+ // value the plugin has to treat as missing anyway.
179
+ return optionality(field.required ? text.min(1) : text, field);
180
+ }
181
+ case "number": {
182
+ let number = field.integer ? z.number().int() : z.number();
183
+ if (field.min !== undefined) {
184
+ number = number.min(field.min);
185
+ }
186
+ if (field.max !== undefined) {
187
+ number = number.max(field.max);
188
+ }
189
+ return optionality(number, field);
190
+ }
191
+ case "boolean":
192
+ return optionality(z.boolean(), field);
193
+ case "select":
194
+ return optionality(z.enum(field.options.map((option) => option.value)), field);
195
+ }
196
+ }
197
+ /**
198
+ * Applies the declared default and, for an optional field, tolerates absence.
199
+ *
200
+ * A default makes the field satisfied whether or not it was submitted, which
201
+ * is why it is applied before the optional wrapper rather than after.
202
+ */
203
+ function optionality(validator, field) {
204
+ if (field.default !== undefined) {
205
+ return validator.default(field.default);
206
+ }
207
+ return field.required ? validator : validator.optional();
208
+ }
209
+ /** The values a fresh installation starts with, from the declared defaults. */
210
+ export function defaultSettings(schema) {
211
+ const values = {};
212
+ for (const field of schema.fields) {
213
+ if (field.default !== undefined) {
214
+ values[field.key] = field.default;
215
+ }
216
+ }
217
+ return values;
218
+ }
219
+ //# sourceMappingURL=settings-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings-schema.js","sourceRoot":"","sources":["../src/settings-schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * The Standard Schema interface, version 1, as this package needs it.
3
+ *
4
+ * Declared here rather than imported, for the reason the rest of this package
5
+ * declares its own types: what an action's input and output are validated by is
6
+ * the host's business, and naming a validator in the published contract would
7
+ * make every plugin author's build depend on the one the host happens to use
8
+ * today. A structural interface says what the host requires - something that can
9
+ * validate an unknown value and report issues - and any library implementing the
10
+ * standard satisfies it, zod included.
11
+ *
12
+ * It is a subset: the parts the registry actually calls. `validate` is the one
13
+ * that matters, and note that it RETURNS its issues rather than throwing, which
14
+ * is the difference between this and a validator's own `parse`.
15
+ *
16
+ * The full specification is at standardschema.dev.
17
+ */
18
+ export interface StandardSchemaV1<Input = unknown, Output = Input> {
19
+ readonly "~standard": {
20
+ /** The version of the standard this schema implements. */
21
+ readonly version: 1;
22
+ /** The library that produced the schema, for diagnostics. */
23
+ readonly vendor: string;
24
+ readonly validate: (value: unknown) => StandardSchemaResult<Output> | Promise<StandardSchemaResult<Output>>;
25
+ readonly types?: {
26
+ readonly input: Input;
27
+ readonly output: Output;
28
+ } | undefined;
29
+ };
30
+ }
31
+ export type StandardSchemaResult<Output> = {
32
+ readonly value: Output;
33
+ readonly issues?: undefined;
34
+ } | {
35
+ readonly issues: readonly StandardSchemaIssue[];
36
+ };
37
+ export interface StandardSchemaIssue {
38
+ readonly message: string;
39
+ readonly path?: readonly (PropertyKey | {
40
+ readonly key: PropertyKey;
41
+ })[];
42
+ }
43
+ //# sourceMappingURL=standard-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"standard-schema.d.ts","sourceRoot":"","sources":["../src/standard-schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,gBAAgB,CAAC,KAAK,GAAG,OAAO,EAAE,MAAM,GAAG,KAAK;IAC/D,QAAQ,CAAC,WAAW,EAAE;QACpB,0DAA0D;QAC1D,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;QACpB,6DAA6D;QAC7D,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,QAAQ,EAAE,CACjB,KAAK,EAAE,OAAO,KACX,oBAAoB,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC;QAC1E,QAAQ,CAAC,KAAK,CAAC,EACb;YAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;YAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;SAAE,GAAG,SAAS,CAAC;KAClE,CAAC;CACH;AAED,MAAM,MAAM,oBAAoB,CAAC,MAAM,IACnC;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAA;CAAE,GACvD;IAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,mBAAmB,EAAE,CAAA;CAAE,CAAC;AAExD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,WAAW,GAAG;QAAE,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAA;KAAE,CAAC,EAAE,CAAC;CAC1E"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=standard-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"standard-schema.js","sourceRoot":"","sources":["../src/standard-schema.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,58 @@
1
1
  {
2
2
  "name": "@openbrf/plugin-sdk",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
3
+ "version": "1.0.0",
4
+ "description": "The public plugin contract for Open BRF: manifest schema, permission set and host service interfaces.",
5
+ "license": "AGPL-3.0-only",
6
+ "type": "module",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "default": "./dist/index.js"
11
+ }
12
+ },
13
+ "devDependencies": {
14
+ "@nestjs/common": "^12.1.3",
15
+ "typescript": "^7.0.2",
16
+ "vite-plus": "1.2.0",
17
+ "zod": "^4.6.7"
18
+ },
19
+ "main": "./dist/index.js",
20
+ "types": "./dist/index.d.ts",
21
+ "files": [
22
+ "dist",
23
+ "src",
24
+ "!src/**/*.spec.ts",
25
+ "LICENSE",
26
+ "LICENSE-EXCEPTION.md"
27
+ ],
28
+ "publishConfig": {
29
+ "access": "public",
30
+ "provenance": true,
31
+ "registry": "https://registry.npmjs.org/"
32
+ },
33
+ "repository": {
34
+ "type": "git",
35
+ "url": "git+https://github.com/openbrf/openbrf.git",
36
+ "directory": "packages/plugin-sdk"
37
+ },
38
+ "peerDependencies": {
39
+ "@nestjs/common": "^12.0.0"
40
+ },
41
+ "peerDependenciesMeta": {
42
+ "@nestjs/common": {
43
+ "optional": true
44
+ }
45
+ },
46
+ "dependencies": {
47
+ "zod": "^4.6.7"
48
+ },
49
+ "bugs": {
50
+ "url": "https://github.com/openbrf/openbrf/issues"
51
+ },
52
+ "scripts": {
53
+ "build": "tsc -p tsconfig.json",
54
+ "lint": "vp lint .",
55
+ "typecheck": "tsc -p tsconfig.json --noEmit",
56
+ "test": "vp test run"
57
+ }
6
58
  }