xypriss 9.10.0 → 9.10.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.
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
var PluginHookIds = require('../const/PluginHookIds.js');
|
|
4
|
+
|
|
3
5
|
/**
|
|
4
6
|
* Plugin API
|
|
5
7
|
* Public API for plugin management as documented in PLUGIN_SYSTEM_GUIDE.md
|
|
6
8
|
*/
|
|
7
|
-
// ─── Internal State ──────────────────────────────────────────────────────────
|
|
8
9
|
// ─── Blocked / Private members ───────────────────────────────────────────────
|
|
9
10
|
/**
|
|
10
11
|
* Methods that must never be accessible from outside the module.
|
|
@@ -113,6 +114,14 @@ class PluginAPI {
|
|
|
113
114
|
assertNonEmptyString(Sys, "XyPriss Initialization Error: To create a plugin, you MUST provide the plugin's root path or its '__sys__' instance as the second argument to Plugin.create().\n" +
|
|
114
115
|
"Example: return Plugin.create({ ... }, __sys__.__root__);");
|
|
115
116
|
plugin.__root__ = Sys;
|
|
117
|
+
if (!plugin.name || typeof plugin.name !== "string") {
|
|
118
|
+
throw new Error(`XyPriss Plugin Error: "name" is missing or invalid.`);
|
|
119
|
+
}
|
|
120
|
+
for (const field of ["description", "version"]) {
|
|
121
|
+
if (!plugin[field] || typeof plugin[field] !== "string") {
|
|
122
|
+
throw new Error(`XyPriss Plugin Error: "${field}" is missing or invalid on plugin "${plugin.name}".`);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
116
125
|
return plugin;
|
|
117
126
|
}
|
|
118
127
|
/**
|
|
@@ -168,7 +177,84 @@ class PluginAPI {
|
|
|
168
177
|
return {
|
|
169
178
|
name: `void-plugin-${Math.random().toString(36).slice(2, 9)}`,
|
|
170
179
|
version: "1.0.0",
|
|
180
|
+
description: "A void plugin for testing purposes.",
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Performs a deep inspection of a plugin instance to identify and list all required
|
|
185
|
+
* cryptographic permissions based on implemented hooks.
|
|
186
|
+
*
|
|
187
|
+
* This utility is designed for developers to use during the preparation of their
|
|
188
|
+
* `package.json` manifest (`xfpm.permissions` field).
|
|
189
|
+
*
|
|
190
|
+
* @param plugin - The XyPriss plugin instance to inspect.
|
|
191
|
+
*
|
|
192
|
+
* @example
|
|
193
|
+
* ```typescript
|
|
194
|
+
* const myPlugin = Plugin.create({ ... }, __sys__.__root__);
|
|
195
|
+
* Plugin.inspect(myPlugin);
|
|
196
|
+
* ```
|
|
197
|
+
*/
|
|
198
|
+
inspect(plugin) {
|
|
199
|
+
const header = `[XyPriss Plugin Inspector] ${plugin.name} v${plugin.version}`;
|
|
200
|
+
const line = "═".repeat(header.length);
|
|
201
|
+
const c = {
|
|
202
|
+
reset: "\x1b[0m",
|
|
203
|
+
bold: "\x1b[1m",
|
|
204
|
+
dim: "\x1b[2m",
|
|
205
|
+
cyan: "\x1b[36m",
|
|
206
|
+
green: "\x1b[32m",
|
|
207
|
+
yellow: "\x1b[33m",
|
|
208
|
+
red: "\x1b[31m",
|
|
209
|
+
gray: "\x1b[90m",
|
|
210
|
+
magenta: "\x1b[35m",
|
|
171
211
|
};
|
|
212
|
+
console.log(`\n${c.cyan}${line}${c.reset}`);
|
|
213
|
+
console.log(`${c.bold}${c.cyan}${header}${c.reset}`);
|
|
214
|
+
console.log(`${c.cyan}${line}${c.reset}`);
|
|
215
|
+
console.log(`${c.bold}Project Root:${c.reset} ${c.gray}${plugin.__root__ || "Not Captured"}${c.reset}`);
|
|
216
|
+
console.log(`\n${c.magenta}${c.bold}Detected Hooks & Authorized Permission IDs:${c.reset}`);
|
|
217
|
+
Object.entries(plugin);
|
|
218
|
+
const hookKeys = Object.keys(PluginHookIds.HOOK_ID_MAP);
|
|
219
|
+
let foundCount = 0;
|
|
220
|
+
// List of privileged IDs that require explicit authorization
|
|
221
|
+
const privilegedIds = [
|
|
222
|
+
"PLG.MANAGEMENT.MANAGE_PLUGINS",
|
|
223
|
+
"XHS.PERM.LOGGING.CONSOLE_INTERCEPT",
|
|
224
|
+
"XHS.PERM.OPS.AUXILIARY_SERVER",
|
|
225
|
+
"XHS.PERM.ROUTING.BYPASS_NAMESPACE",
|
|
226
|
+
"XHS.PERM.ROUTING.OVERWRITE_PROTECTED",
|
|
227
|
+
"XHS.PERM.HTTP.GLOBAL_MIDDLEWARE",
|
|
228
|
+
"XHS.PERM.SECURITY.CONFIGS",
|
|
229
|
+
"XHS.PERM.SECURITY.SENSITIVE_DATA",
|
|
230
|
+
"XHS.HOOK.HTTP.REQUEST",
|
|
231
|
+
"XHS.HOOK.HTTP.RESPONSE",
|
|
232
|
+
];
|
|
233
|
+
// DEEP SCAN: Check all known hook and permission keys
|
|
234
|
+
for (const key of hookKeys) {
|
|
235
|
+
const hookId = PluginHookIds.HOOK_ID_MAP[key];
|
|
236
|
+
const value = plugin[key];
|
|
237
|
+
// If the key exists on the plugin instance (function, boolean, array, etc.)
|
|
238
|
+
if (value !== undefined) {
|
|
239
|
+
foundCount++;
|
|
240
|
+
const meta = PluginHookIds.HOOK_METADATA[hookId];
|
|
241
|
+
const isPrivileged = privilegedIds.includes(hookId);
|
|
242
|
+
console.log(`\n ${c.cyan}○${c.reset} ${c.bold}Hook/Capability:${c.reset} ${c.green}${key}${c.reset}`);
|
|
243
|
+
console.log(` ${c.bold}ID:${c.reset} ${c.yellow}${hookId}${c.reset} ${isPrivileged ? `${c.red}${c.bold}⚠️ [PRIVILEGED]${c.reset}` : ""}`);
|
|
244
|
+
if (meta) {
|
|
245
|
+
console.log(` ${c.gray}Role:${c.reset} ${meta.action}`);
|
|
246
|
+
console.log(` ${c.gray}Info:${c.reset} ${c.dim}${meta.description}${c.reset}`);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
if (foundCount === 0) {
|
|
251
|
+
console.log(`\n ${c.yellow}No hooks requiring special permissions were detected in this plugin.${c.reset}`);
|
|
252
|
+
}
|
|
253
|
+
else {
|
|
254
|
+
console.log(`\n${c.bold}${c.green}Summary: Found ${foundCount} required permissions.${c.reset}`);
|
|
255
|
+
console.log(`\n${c.bold}${c.cyan}TIP:${c.reset} Copy the IDs above into your package.json's ${c.bold}"xfpm.permissions"${c.reset} array.`);
|
|
256
|
+
}
|
|
257
|
+
console.log(`\n${c.cyan}${line}${c.reset}\n`);
|
|
172
258
|
}
|
|
173
259
|
}
|
|
174
260
|
// ─── Proxy Shield ─────────────────────────────────────────────────────────────
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PluginAPI.js","sources":["../../../../../src/plugins/api/PluginAPI.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PluginAPI.js","sources":["../../../../../src/plugins/api/PluginAPI.ts"],"sourcesContent":[null],"names":["HOOK_ID_MAP","HOOK_METADATA"],"mappings":"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"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
import { HOOK_ID_MAP, HOOK_METADATA } from '../const/PluginHookIds.js';
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
4
|
* Plugin API
|
|
3
5
|
* Public API for plugin management as documented in PLUGIN_SYSTEM_GUIDE.md
|
|
4
6
|
*/
|
|
5
|
-
// ─── Internal State ──────────────────────────────────────────────────────────
|
|
6
7
|
// ─── Blocked / Private members ───────────────────────────────────────────────
|
|
7
8
|
/**
|
|
8
9
|
* Methods that must never be accessible from outside the module.
|
|
@@ -111,6 +112,14 @@ class PluginAPI {
|
|
|
111
112
|
assertNonEmptyString(Sys, "XyPriss Initialization Error: To create a plugin, you MUST provide the plugin's root path or its '__sys__' instance as the second argument to Plugin.create().\n" +
|
|
112
113
|
"Example: return Plugin.create({ ... }, __sys__.__root__);");
|
|
113
114
|
plugin.__root__ = Sys;
|
|
115
|
+
if (!plugin.name || typeof plugin.name !== "string") {
|
|
116
|
+
throw new Error(`XyPriss Plugin Error: "name" is missing or invalid.`);
|
|
117
|
+
}
|
|
118
|
+
for (const field of ["description", "version"]) {
|
|
119
|
+
if (!plugin[field] || typeof plugin[field] !== "string") {
|
|
120
|
+
throw new Error(`XyPriss Plugin Error: "${field}" is missing or invalid on plugin "${plugin.name}".`);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
114
123
|
return plugin;
|
|
115
124
|
}
|
|
116
125
|
/**
|
|
@@ -166,7 +175,84 @@ class PluginAPI {
|
|
|
166
175
|
return {
|
|
167
176
|
name: `void-plugin-${Math.random().toString(36).slice(2, 9)}`,
|
|
168
177
|
version: "1.0.0",
|
|
178
|
+
description: "A void plugin for testing purposes.",
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Performs a deep inspection of a plugin instance to identify and list all required
|
|
183
|
+
* cryptographic permissions based on implemented hooks.
|
|
184
|
+
*
|
|
185
|
+
* This utility is designed for developers to use during the preparation of their
|
|
186
|
+
* `package.json` manifest (`xfpm.permissions` field).
|
|
187
|
+
*
|
|
188
|
+
* @param plugin - The XyPriss plugin instance to inspect.
|
|
189
|
+
*
|
|
190
|
+
* @example
|
|
191
|
+
* ```typescript
|
|
192
|
+
* const myPlugin = Plugin.create({ ... }, __sys__.__root__);
|
|
193
|
+
* Plugin.inspect(myPlugin);
|
|
194
|
+
* ```
|
|
195
|
+
*/
|
|
196
|
+
inspect(plugin) {
|
|
197
|
+
const header = `[XyPriss Plugin Inspector] ${plugin.name} v${plugin.version}`;
|
|
198
|
+
const line = "═".repeat(header.length);
|
|
199
|
+
const c = {
|
|
200
|
+
reset: "\x1b[0m",
|
|
201
|
+
bold: "\x1b[1m",
|
|
202
|
+
dim: "\x1b[2m",
|
|
203
|
+
cyan: "\x1b[36m",
|
|
204
|
+
green: "\x1b[32m",
|
|
205
|
+
yellow: "\x1b[33m",
|
|
206
|
+
red: "\x1b[31m",
|
|
207
|
+
gray: "\x1b[90m",
|
|
208
|
+
magenta: "\x1b[35m",
|
|
169
209
|
};
|
|
210
|
+
console.log(`\n${c.cyan}${line}${c.reset}`);
|
|
211
|
+
console.log(`${c.bold}${c.cyan}${header}${c.reset}`);
|
|
212
|
+
console.log(`${c.cyan}${line}${c.reset}`);
|
|
213
|
+
console.log(`${c.bold}Project Root:${c.reset} ${c.gray}${plugin.__root__ || "Not Captured"}${c.reset}`);
|
|
214
|
+
console.log(`\n${c.magenta}${c.bold}Detected Hooks & Authorized Permission IDs:${c.reset}`);
|
|
215
|
+
Object.entries(plugin);
|
|
216
|
+
const hookKeys = Object.keys(HOOK_ID_MAP);
|
|
217
|
+
let foundCount = 0;
|
|
218
|
+
// List of privileged IDs that require explicit authorization
|
|
219
|
+
const privilegedIds = [
|
|
220
|
+
"PLG.MANAGEMENT.MANAGE_PLUGINS",
|
|
221
|
+
"XHS.PERM.LOGGING.CONSOLE_INTERCEPT",
|
|
222
|
+
"XHS.PERM.OPS.AUXILIARY_SERVER",
|
|
223
|
+
"XHS.PERM.ROUTING.BYPASS_NAMESPACE",
|
|
224
|
+
"XHS.PERM.ROUTING.OVERWRITE_PROTECTED",
|
|
225
|
+
"XHS.PERM.HTTP.GLOBAL_MIDDLEWARE",
|
|
226
|
+
"XHS.PERM.SECURITY.CONFIGS",
|
|
227
|
+
"XHS.PERM.SECURITY.SENSITIVE_DATA",
|
|
228
|
+
"XHS.HOOK.HTTP.REQUEST",
|
|
229
|
+
"XHS.HOOK.HTTP.RESPONSE",
|
|
230
|
+
];
|
|
231
|
+
// DEEP SCAN: Check all known hook and permission keys
|
|
232
|
+
for (const key of hookKeys) {
|
|
233
|
+
const hookId = HOOK_ID_MAP[key];
|
|
234
|
+
const value = plugin[key];
|
|
235
|
+
// If the key exists on the plugin instance (function, boolean, array, etc.)
|
|
236
|
+
if (value !== undefined) {
|
|
237
|
+
foundCount++;
|
|
238
|
+
const meta = HOOK_METADATA[hookId];
|
|
239
|
+
const isPrivileged = privilegedIds.includes(hookId);
|
|
240
|
+
console.log(`\n ${c.cyan}○${c.reset} ${c.bold}Hook/Capability:${c.reset} ${c.green}${key}${c.reset}`);
|
|
241
|
+
console.log(` ${c.bold}ID:${c.reset} ${c.yellow}${hookId}${c.reset} ${isPrivileged ? `${c.red}${c.bold}⚠️ [PRIVILEGED]${c.reset}` : ""}`);
|
|
242
|
+
if (meta) {
|
|
243
|
+
console.log(` ${c.gray}Role:${c.reset} ${meta.action}`);
|
|
244
|
+
console.log(` ${c.gray}Info:${c.reset} ${c.dim}${meta.description}${c.reset}`);
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
if (foundCount === 0) {
|
|
249
|
+
console.log(`\n ${c.yellow}No hooks requiring special permissions were detected in this plugin.${c.reset}`);
|
|
250
|
+
}
|
|
251
|
+
else {
|
|
252
|
+
console.log(`\n${c.bold}${c.green}Summary: Found ${foundCount} required permissions.${c.reset}`);
|
|
253
|
+
console.log(`\n${c.bold}${c.cyan}TIP:${c.reset} Copy the IDs above into your package.json's ${c.bold}"xfpm.permissions"${c.reset} array.`);
|
|
254
|
+
}
|
|
255
|
+
console.log(`\n${c.cyan}${line}${c.reset}\n`);
|
|
170
256
|
}
|
|
171
257
|
}
|
|
172
258
|
// ─── Proxy Shield ─────────────────────────────────────────────────────────────
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PluginAPI.js","sources":["../../../../../src/plugins/api/PluginAPI.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;;;AAGG;
|
|
1
|
+
{"version":3,"file":"PluginAPI.js","sources":["../../../../../src/plugins/api/PluginAPI.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -7427,7 +7427,7 @@ interface XyPrissPlugin {
|
|
|
7427
7427
|
name: string;
|
|
7428
7428
|
version: string;
|
|
7429
7429
|
type?: string;
|
|
7430
|
-
description
|
|
7430
|
+
description: string;
|
|
7431
7431
|
/**
|
|
7432
7432
|
* @internal - Captured project root of the plugin.
|
|
7433
7433
|
* Used for contract security verification.
|
|
@@ -11004,6 +11004,22 @@ declare class PluginAPI {
|
|
|
11004
11004
|
* Useful for testing or conditional plugin slots.
|
|
11005
11005
|
*/
|
|
11006
11006
|
void(): XyPrissPlugin;
|
|
11007
|
+
/**
|
|
11008
|
+
* Performs a deep inspection of a plugin instance to identify and list all required
|
|
11009
|
+
* cryptographic permissions based on implemented hooks.
|
|
11010
|
+
*
|
|
11011
|
+
* This utility is designed for developers to use during the preparation of their
|
|
11012
|
+
* `package.json` manifest (`xfpm.permissions` field).
|
|
11013
|
+
*
|
|
11014
|
+
* @param plugin - The XyPriss plugin instance to inspect.
|
|
11015
|
+
*
|
|
11016
|
+
* @example
|
|
11017
|
+
* ```typescript
|
|
11018
|
+
* const myPlugin = Plugin.create({ ... }, __sys__.__root__);
|
|
11019
|
+
* Plugin.inspect(myPlugin);
|
|
11020
|
+
* ```
|
|
11021
|
+
*/
|
|
11022
|
+
inspect(plugin: XyPrissPlugin): void;
|
|
11007
11023
|
}
|
|
11008
11024
|
declare const Plugin: Readonly<Omit<PluginAPI, "register">>;
|
|
11009
11025
|
|
package/package.json
CHANGED