@lumiastream/plugin 0.1.8 → 0.1.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  Official TypeScript/JavaScript SDK for developing plugins for [Lumia Stream](https://lumiastream.com).
4
4
 
5
+ ![Lumia Stream Plugin](docs/lumiaplugin-banner.png)
6
+
5
7
  ## Installation
6
8
 
7
9
  ```bash
@@ -99,6 +101,7 @@ The CLI is distributed separately via `lumia-plugin`. Use it with `npx` (require
99
101
  - [Getting Started](./docs/getting-started.md)
100
102
  - [API Reference](./docs/api-reference.md)
101
103
  - [Manifest Guide](./docs/manifest-guide.md)
104
+ - [Field Types Reference](./docs/field-types-reference.md)
102
105
 
103
106
  ## Examples
104
107
 
package/dist/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  export { Plugin } from './plugin';
2
2
  export type { PluginManifest, PluginContext, PluginFormField, PluginAuthConfig, PluginActionsConfig, PluginInstance, PluginConfig, PluginStats, PluginDependency, PluginFile, PluginPackage, PluginVariableDefinition, PluginAlertDefinition, PluginIntegrationConfig, PluginActionDefinition, PluginActionField, PluginSetting, PluginTriggerAlertOptions, PluginDisplayChatOptions, PluginRuntime, ILumiaAPI, } from './types';
3
3
  export { PluginStatus, PluginCategory, } from './types';
4
+ export { validatePluginManifest, validateManifest, } from './manifest-validation';
4
5
  export default Plugin;
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EACV,cAAc,EACd,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,WAAW,EACX,gBAAgB,EAChB,UAAU,EACV,aAAa,EACb,wBAAwB,EACxB,qBAAqB,EACrB,uBAAuB,EACvB,sBAAsB,EACtB,iBAAiB,EACjB,aAAa,EACb,yBAAyB,EACzB,wBAAwB,EACxB,aAAa,EACb,SAAS,GACV,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,YAAY,EACZ,cAAc,GACf,MAAM,SAAS,CAAC;AACjB,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EACV,cAAc,EACd,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,WAAW,EACX,gBAAgB,EAChB,UAAU,EACV,aAAa,EACb,wBAAwB,EACxB,qBAAqB,EACrB,uBAAuB,EACvB,sBAAsB,EACtB,iBAAiB,EACjB,aAAa,EACb,yBAAyB,EACzB,wBAAwB,EACxB,aAAa,EACb,SAAS,GACV,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,YAAY,EACZ,cAAc,GACf,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAC/B,eAAe,MAAM,CAAC"}
package/dist/index.js CHANGED
@@ -1,10 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PluginCategory = exports.PluginStatus = exports.Plugin = void 0;
3
+ exports.validateManifest = exports.validatePluginManifest = exports.PluginCategory = exports.PluginStatus = exports.Plugin = void 0;
4
4
  var plugin_1 = require("./plugin");
5
5
  Object.defineProperty(exports, "Plugin", { enumerable: true, get: function () { return plugin_1.Plugin; } });
6
6
  var types_1 = require("./types");
7
7
  Object.defineProperty(exports, "PluginStatus", { enumerable: true, get: function () { return types_1.PluginStatus; } });
8
8
  Object.defineProperty(exports, "PluginCategory", { enumerable: true, get: function () { return types_1.PluginCategory; } });
9
+ var manifest_validation_1 = require("./manifest-validation");
10
+ Object.defineProperty(exports, "validatePluginManifest", { enumerable: true, get: function () { return manifest_validation_1.validatePluginManifest; } });
11
+ Object.defineProperty(exports, "validateManifest", { enumerable: true, get: function () { return manifest_validation_1.validateManifest; } });
9
12
  exports.default = Plugin;
10
13
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;AAAzB,gGAAA,MAAM,OAAA;AAwBf,iCAGiB;AAFf,qGAAA,YAAY,OAAA;AACZ,uGAAA,cAAc,OAAA;AAEhB,kBAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;AAAzB,gGAAA,MAAM,OAAA;AAwBf,iCAGiB;AAFf,qGAAA,YAAY,OAAA;AACZ,uGAAA,cAAc,OAAA;AAEhB,6DAG+B;AAF7B,6HAAA,sBAAsB,OAAA;AACtB,uHAAA,gBAAgB,OAAA;AAElB,kBAAe,MAAM,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { PluginManifest } from "./types";
2
+ type PartialManifest = Partial<PluginManifest> & Record<string, unknown>;
3
+ /**
4
+ * Perform lightweight validation on a plugin manifest definition.
5
+ * Returns an array of error strings. An empty array indicates the
6
+ * manifest passed all heuristics.
7
+ */
8
+ export declare function validatePluginManifest(manifest: PartialManifest | null | undefined): string[];
9
+ /**
10
+ * Convenience alias preserved for backwards compatibility with the CLI.
11
+ */
12
+ export declare const validateManifest: typeof validatePluginManifest;
13
+ export default validatePluginManifest;
14
+ //# sourceMappingURL=manifest-validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest-validation.d.ts","sourceRoot":"","sources":["../src/manifest-validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAA2B,MAAM,SAAS,CAAC;AAElE,KAAK,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AA6BzE;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,EAAE,CAgC7F;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,+BAAyB,CAAC;AAEvD,eAAe,sBAAsB,CAAC"}
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateManifest = void 0;
4
+ exports.validatePluginManifest = validatePluginManifest;
5
+ const requiredManifestFields = [
6
+ "id",
7
+ "name",
8
+ "version",
9
+ "author",
10
+ "description",
11
+ "license",
12
+ "lumiaVersion",
13
+ ];
14
+ const configArrayFields = [
15
+ { key: "settings", message: "config.settings must be an array when provided" },
16
+ { key: "actions", message: "config.actions must be an array when provided" },
17
+ { key: "variables", message: "config.variables must be an array when provided" },
18
+ { key: "alerts", message: "config.alerts must be an array when provided" },
19
+ ];
20
+ function isNonEmptyString(value) {
21
+ return typeof value === "string" && value.trim().length > 0;
22
+ }
23
+ function isPlainObject(value) {
24
+ return typeof value === "object" && value !== null && !Array.isArray(value);
25
+ }
26
+ /**
27
+ * Perform lightweight validation on a plugin manifest definition.
28
+ * Returns an array of error strings. An empty array indicates the
29
+ * manifest passed all heuristics.
30
+ */
31
+ function validatePluginManifest(manifest) {
32
+ const errors = [];
33
+ if (!isPlainObject(manifest)) {
34
+ return ["Manifest must be a JSON object"];
35
+ }
36
+ for (const field of requiredManifestFields) {
37
+ const value = manifest[field];
38
+ if (!isNonEmptyString(value)) {
39
+ errors.push(`Missing or invalid manifest field: ${String(field)}`);
40
+ }
41
+ }
42
+ const category = manifest.category;
43
+ if (!category || (typeof category !== "string" && !Array.isArray(category))) {
44
+ errors.push("Manifest must declare a category string");
45
+ }
46
+ const config = manifest.config;
47
+ if (!isPlainObject(config)) {
48
+ errors.push("Manifest config must be an object");
49
+ }
50
+ else {
51
+ for (const { key, message } of configArrayFields) {
52
+ const value = config[key];
53
+ if (value !== undefined && !Array.isArray(value)) {
54
+ errors.push(message);
55
+ }
56
+ }
57
+ }
58
+ return errors;
59
+ }
60
+ /**
61
+ * Convenience alias preserved for backwards compatibility with the CLI.
62
+ */
63
+ exports.validateManifest = validatePluginManifest;
64
+ exports.default = validatePluginManifest;
65
+ //# sourceMappingURL=manifest-validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest-validation.js","sourceRoot":"","sources":["../src/manifest-validation.ts"],"names":[],"mappings":";;;AAoCA,wDAgCC;AA9DD,MAAM,sBAAsB,GAAgC;IAC1D,IAAI;IACJ,MAAM;IACN,SAAS;IACT,QAAQ;IACR,aAAa;IACb,SAAS;IACT,cAAc;CACf,CAAC;AAEF,MAAM,iBAAiB,GAAoD;IACzE,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,gDAAgD,EAAE;IAC9E,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,+CAA+C,EAAE;IAC5E,EAAE,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,iDAAiD,EAAE;IAChF,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,8CAA8C,EAAE;CAC3E,CAAC;AAEF,SAAS,gBAAgB,CAAC,KAAc;IACtC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED;;;;GAIG;AACH,SAAgB,sBAAsB,CAAC,QAA4C;IACjF,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,gCAAgC,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,sBAAsB,EAAE,CAAC;QAC3C,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC9B,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,sCAAsC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;IACnC,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;QAC5E,MAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;IACzD,CAAC;IAED,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;IAC/B,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,MAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;IACnD,CAAC;SAAM,CAAC;QACN,KAAK,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,iBAAiB,EAAE,CAAC;YACjD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YAC1B,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACjD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACU,QAAA,gBAAgB,GAAG,sBAAsB,CAAC;AAEvD,kBAAe,sBAAsB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lumiastream/plugin",
3
- "version": "0.1.8",
3
+ "version": "0.1.9",
4
4
  "description": "Official Lumia Stream Plugin SDK for building Lumia Stream plugins.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",