@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 +3 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/manifest-validation.d.ts +14 -0
- package/dist/manifest-validation.d.ts.map +1 -0
- package/dist/manifest-validation.js +65 -0
- package/dist/manifest-validation.js.map +1 -0
- package/package.json +1 -1
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
|
+

|
|
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
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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"}
|