@zaflun/lumio-extension-types 0.3.3 → 0.4.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.
package/CHANGELOG.md ADDED
@@ -0,0 +1,119 @@
1
+ # Changelog
2
+
3
+ All notable changes to `@zaflun/lumio-extension-types` are documented here.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## 0.4.1
9
+
10
+ ### Added
11
+
12
+ - **`CHANGELOG.md` in the package** — the npm tarball ships this changelog.
13
+
14
+ ### Changed
15
+
16
+ - **zod `^4.6.7`** — the `zod` dependency range moves up from `^4.3.6`. The
17
+ exported schemas and types are unchanged.
18
+
19
+ ## 0.4.0
20
+
21
+ ### Removed
22
+
23
+ - **The `interactive` target** — `lumioExtensionConfigBaseSchema` accepts
24
+ only `editor` and `layer` in `targets`; a config that lists `interactive`
25
+ no longer validates. Viewers interact with an extension through chat
26
+ commands and channel point rewards handled by a bot module. Breaking.
27
+
28
+ ## 0.3.3
29
+
30
+ ### Changed
31
+
32
+ - **Stricter `sounds` entries** — a sound's `file` is 1 to 255 characters and
33
+ may not contain `..` or `\` or start with `/` ("Invalid sound file path");
34
+ `name` is 1 to 255 characters. A config declares at most 200 sounds.
35
+ - **The config schema documents its layer** — `lumioExtensionConfigBaseSchema`
36
+ describes the stored, snake_case extension config. The `lumio.config.json`
37
+ that `lumio init` writes and `lumio deploy` uploads is camelCase and is
38
+ validated by the server, not by this schema. The enum lists
39
+ (`VALID_PLATFORMS`, `VALID_ROLES`, `NODE_TYPES`, `TRIGGER_MODES`) are
40
+ casing-agnostic and apply to both.
41
+
42
+ ### Removed
43
+
44
+ - **`trovo` in `VALID_PLATFORMS`** — the platform list is `twitch`,
45
+ `youtube`, `kick` and `discord`. A bot module that lists `trovo` in
46
+ `platforms` no longer validates. Breaking.
47
+
48
+ ## 0.3.2
49
+
50
+ ### Added
51
+
52
+ - **Automation nodes** — the `automation_node` extension category, with
53
+ `node_type` (`NODE_TYPES`: `trigger`, `action`, `logic`) and a `node` object
54
+ (`automationNodeSchema`: `input_schema`, `output_schema`, `trigger_mode`,
55
+ `poll_interval_seconds` 10 to 300, `icon`, `color`). An automation node must
56
+ set `node_type`, `node` and `server: true` and include `editor` in
57
+ `targets`; a trigger node must set `node.trigger_mode`, and only trigger
58
+ nodes may set `trigger_mode` or `poll_interval_seconds`. Other categories
59
+ may not set `node_type` or `node`.
60
+ - **Bundled sounds** — `sounds` in the extension config, each entry
61
+ `{ file, name, default_volume? }` (`lumioExtensionSoundSchema`,
62
+ `LumioExtensionSound`), with `default_volume` from 0 to 1.
63
+ - **More config fields** — `icon`, `default_install` and `designer_schema`
64
+ on the extension config. `default_install` is reserved for system
65
+ extensions: a config that sets it fails validation.
66
+ - **More config field types** — `textarea`, `slider`, `font`, `icon`,
67
+ `image`, `sound`, `multiselect`, `group`, `divider`, `info`, `channel`,
68
+ `designer` and `presets`. A field can carry `min`, `max`, `step`,
69
+ `placeholder`, `rows`, `unit`, `collapsed`, `visible_when`, `content`,
70
+ `multiple`, and nested `fields` for groups.
71
+ - **Developer profile and team fields** — `description`, `github_url`,
72
+ `website_url` and `avatar_key` on profiles and teams, plus `slug` on
73
+ profiles. New `developerTeamMemberSchema` / `DeveloperTeamMember` and
74
+ `developerTeamPermissionSchema` / `DeveloperTeamPermission`.
75
+
76
+ ### Changed
77
+
78
+ - **`default_value` is optional** on a config field.
79
+ - **Team roles are objects** — `developerTeamRoleSchema` describes a team
80
+ role record (`id`, `team_id`, `name`, `slug`, `is_default`, `is_system`,
81
+ `color`, counts, timestamps) instead of the `owner` / `admin` / `member`
82
+ enum, because team roles are defined per team. Breaking.
83
+
84
+ ### Removed
85
+
86
+ - **`DEVELOPER_TEAM_ROLES`** — fetch a team's roles from the API instead.
87
+ Breaking.
88
+
89
+ ## 0.3.0
90
+
91
+ ### Added
92
+
93
+ - **Bot module configs** — `platforms` (`VALID_PLATFORMS`) and `triggers` on
94
+ the extension config. `triggers` holds `commands` (up to 20; name, cooldowns,
95
+ `min_role` from `VALID_ROLES`, Discord options), `keywords`, `patterns`,
96
+ `events` and `timers` (interval of at least 60 seconds). New exports:
97
+ `triggerCommandSchema`, `triggerTimerSchema`, `triggerConfigSchema`,
98
+ `TriggerConfig`, `TriggerCommand`.
99
+ - **`lumioExtensionConfigBaseSchema`** — the object schema without the
100
+ cross-field rules, exported next to `lumioExtensionConfigSchema`.
101
+
102
+ ### Changed
103
+
104
+ - **`targets` is optional** and defaults to `[]`. Every category except
105
+ `bot_module` still needs at least one target.
106
+ - **Bot module rules** — only `bot_module` extensions may set `triggers`, and
107
+ a `bot_module` must list at least one platform. A `bot_module` config
108
+ without `platforms` no longer validates. Breaking.
109
+
110
+ ## 0.1.0
111
+
112
+ ### Added
113
+
114
+ - **Initial release** — zod schemas and types for the Lumio extension store
115
+ (`Extension`, `ExtensionVersion`, `ExtensionInstall`, `ExtensionReview`),
116
+ the extension config (`lumioExtensionConfigSchema`,
117
+ `LumioExtensionConfig`, config fields and pricing) and developer accounts
118
+ (`DeveloperProfile`, `DeveloperTeam`), plus the category, visibility,
119
+ status and developer enums.
package/dist/index.d.ts CHANGED
@@ -325,7 +325,6 @@ declare const lumioExtensionConfigBaseSchema: z.ZodObject<{
325
325
  targets: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodEnum<{
326
326
  editor: "editor";
327
327
  layer: "layer";
328
- interactive: "interactive";
329
328
  }>>>>;
330
329
  server: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
331
330
  permissions: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString>>>;
@@ -427,7 +426,6 @@ declare const lumioExtensionConfigSchema: z.ZodObject<{
427
426
  targets: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodEnum<{
428
427
  editor: "editor";
429
428
  layer: "layer";
430
- interactive: "interactive";
431
429
  }>>>>;
432
430
  server: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
433
431
  permissions: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString>>>;
@@ -582,4 +580,5 @@ declare const developerTeamPermissionSchema: z.ZodObject<{
582
580
  }, z.core.$strip>;
583
581
  type DeveloperTeamPermission = z.infer<typeof developerTeamPermissionSchema>;
584
582
 
585
- export { type AutomationNode, type AutomationNodeType, CONFIG_FIELD_TYPES, type ConfigField, type ConfigSchema, DEVELOPER_TYPES, DEVELOPER_VERIFICATION_STATUSES, type DeveloperProfile, type DeveloperTeam, type DeveloperTeamMember, type DeveloperTeamPermission, type DeveloperTeamRole, type DeveloperType, type DeveloperVerificationStatus, EXTENSION_CATEGORIES, EXTENSION_STATUSES, EXTENSION_VISIBILITIES, type Extension, type ExtensionCategory, type ExtensionInstall, type ExtensionPricing, type ExtensionReview, type ExtensionStatus, type ExtensionVersion, type ExtensionVisibility, type LumioExtensionConfig, type LumioExtensionSound, NODE_TYPES, PRICING_TYPES, type PricingType, TRIGGER_MODES, type TriggerCommand, type TriggerConfig, type TriggerMode, VALID_PLATFORMS, VALID_ROLES, VERSION_STATUSES, type VersionStatus, automationNodeSchema, configFieldSchema, configSchemaSchema, developerProfileSchema, developerTeamMemberSchema, developerTeamPermissionSchema, developerTeamRoleSchema, developerTeamSchema, developerTypeSchema, developerVerificationStatusSchema, extensionCategorySchema, extensionInstallSchema, extensionPricingSchema, extensionReviewSchema, extensionSchema, extensionStatusSchema, extensionVersionSchema, extensionVisibilitySchema, lumioExtensionConfigBaseSchema, lumioExtensionConfigSchema, lumioExtensionSoundSchema, nodeTypeSchema, pricingTypeSchema, triggerCommandSchema, triggerConfigSchema, triggerModeSchema, triggerTimerSchema, versionStatusSchema };
583
+ export { CONFIG_FIELD_TYPES, DEVELOPER_TYPES, DEVELOPER_VERIFICATION_STATUSES, EXTENSION_CATEGORIES, EXTENSION_STATUSES, EXTENSION_VISIBILITIES, NODE_TYPES, PRICING_TYPES, TRIGGER_MODES, VALID_PLATFORMS, VALID_ROLES, VERSION_STATUSES, automationNodeSchema, configFieldSchema, configSchemaSchema, developerProfileSchema, developerTeamMemberSchema, developerTeamPermissionSchema, developerTeamRoleSchema, developerTeamSchema, developerTypeSchema, developerVerificationStatusSchema, extensionCategorySchema, extensionInstallSchema, extensionPricingSchema, extensionReviewSchema, extensionSchema, extensionStatusSchema, extensionVersionSchema, extensionVisibilitySchema, lumioExtensionConfigBaseSchema, lumioExtensionConfigSchema, lumioExtensionSoundSchema, nodeTypeSchema, pricingTypeSchema, triggerCommandSchema, triggerConfigSchema, triggerModeSchema, triggerTimerSchema, versionStatusSchema };
584
+ export type { AutomationNode, AutomationNodeType, ConfigField, ConfigSchema, DeveloperProfile, DeveloperTeam, DeveloperTeamMember, DeveloperTeamPermission, DeveloperTeamRole, DeveloperType, DeveloperVerificationStatus, Extension, ExtensionCategory, ExtensionInstall, ExtensionPricing, ExtensionReview, ExtensionStatus, ExtensionVersion, ExtensionVisibility, LumioExtensionConfig, LumioExtensionSound, PricingType, TriggerCommand, TriggerConfig, TriggerMode, VersionStatus };
package/dist/index.js CHANGED
@@ -223,7 +223,7 @@ var lumioExtensionConfigBaseSchema = z2.object({
223
223
  version: z2.string(),
224
224
  node_type: nodeTypeSchema.optional(),
225
225
  node: automationNodeSchema.optional(),
226
- targets: z2.array(z2.enum(["editor", "layer", "interactive"])).optional().default([]),
226
+ targets: z2.array(z2.enum(["editor", "layer"])).optional().default([]),
227
227
  server: z2.boolean().optional().default(false),
228
228
  permissions: z2.array(z2.string()).optional().default([]),
229
229
  egress: z2.object({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zaflun/lumio-extension-types",
3
- "version": "0.3.3",
3
+ "version": "0.4.1",
4
4
  "description": "Shared TypeScript types for Lumio extensions, store, and config",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -12,14 +12,15 @@
12
12
  }
13
13
  },
14
14
  "files": [
15
- "dist"
15
+ "dist",
16
+ "CHANGELOG.md"
16
17
  ],
17
18
  "dependencies": {
18
- "zod": "^4.3.6"
19
+ "zod": "^4.6.7"
19
20
  },
20
21
  "devDependencies": {
21
22
  "typescript": "^6.0.2",
22
- "tsup": "^8.4.0"
23
+ "tsup": "^9.0.0"
23
24
  },
24
25
  "publishConfig": {
25
26
  "access": "public"