@oktis-works/plugin-runtime 0.5.6 → 0.5.7
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/dist/bootstrap.d.ts +39 -4
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +158 -38
- package/dist/bootstrap.js.map +1 -1
- package/dist/hook-registry.d.ts +60 -1
- package/dist/hook-registry.d.ts.map +1 -1
- package/dist/hook-registry.js +142 -10
- package/dist/hook-registry.js.map +1 -1
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/loader.d.ts.map +1 -1
- package/dist/loader.js +7 -14
- package/dist/loader.js.map +1 -1
- package/dist/manifest.d.ts +24 -0
- package/dist/manifest.d.ts.map +1 -0
- package/dist/manifest.js +76 -0
- package/dist/manifest.js.map +1 -0
- package/dist/plugin-api.d.ts +148 -0
- package/dist/plugin-api.d.ts.map +1 -0
- package/dist/plugin-api.js +174 -0
- package/dist/plugin-api.js.map +1 -0
- package/dist/sandbox.d.ts +23 -3
- package/dist/sandbox.d.ts.map +1 -1
- package/dist/sandbox.js +29 -4
- package/dist/sandbox.js.map +1 -1
- package/package.json +1 -1
package/dist/bootstrap.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type HookRegistry } from './hook-registry.js';
|
|
2
|
+
import type { PluginApiDependencies, RouteDefinition } from './plugin-api.js';
|
|
2
3
|
export interface BootstrapPluginsSql {
|
|
3
4
|
unsafe(text: string, params?: unknown[]): Promise<unknown>;
|
|
4
5
|
}
|
|
@@ -7,10 +8,28 @@ export interface BootstrapPluginsOptions {
|
|
|
7
8
|
pluginsDir: string;
|
|
8
9
|
/** Cliente postgres para ler os habilitados; omitido = estado desconhecido (no-op). */
|
|
9
10
|
sql?: BootstrapPluginsSql;
|
|
10
|
-
/** Registry alvo (default:
|
|
11
|
+
/** Registry alvo (default: registry do escopo — platform ou `tenantId`). */
|
|
11
12
|
registry?: HookRegistry;
|
|
12
13
|
/** Statuses considerados habilitados (default: ACTIVATED, RUNNING). */
|
|
13
14
|
enabledStatuses?: string[];
|
|
15
|
+
/**
|
|
16
|
+
* Escopo de carga: `null`/omitido → platform (`plugins.tenant_id IS NULL`);
|
|
17
|
+
* string → tenant (`plugin_tenants` com status ENABLED).
|
|
18
|
+
*/
|
|
19
|
+
tenantId?: string | null;
|
|
20
|
+
/**
|
|
21
|
+
* Política de permissões concedidas (allowlist). Default: catálogo completo
|
|
22
|
+
* de permissões do CMS. Nunca é preenchida com as permissões do manifesto.
|
|
23
|
+
*/
|
|
24
|
+
permissionPolicy?: string[];
|
|
25
|
+
/** Timeout de callbacks de hook em ms (0 = sem timeout). Default 5000. */
|
|
26
|
+
hookTimeoutMs?: number;
|
|
27
|
+
/**
|
|
28
|
+
* Dependências reais para a PluginAPI (settings, eventBus, db, etc.).
|
|
29
|
+
* Se omitido, usa apenas o Hooks API legado (compatibilidade).
|
|
30
|
+
* O core injeta isto com serviços reais.
|
|
31
|
+
*/
|
|
32
|
+
apiDeps?: Partial<PluginApiDependencies>;
|
|
14
33
|
}
|
|
15
34
|
export interface PluginBootstrapResult {
|
|
16
35
|
/** Nomes habilitados no banco (vazio quando o banco falhou = estado desconhecido). */
|
|
@@ -25,13 +44,29 @@ export interface PluginBootstrapResult {
|
|
|
25
44
|
error: string;
|
|
26
45
|
}>;
|
|
27
46
|
}
|
|
47
|
+
/** Escopo com carga registrada (para inspeção/estado de runtime). */
|
|
48
|
+
export declare function listLoadedScopes(): Array<{
|
|
49
|
+
scope: string;
|
|
50
|
+
registry: HookRegistry;
|
|
51
|
+
plugins: string[];
|
|
52
|
+
}>;
|
|
53
|
+
/** Obtém as rotas registradas pelos plugins em um escopo. */
|
|
54
|
+
export declare function getLoadedPluginRoutes(scopeKey: string): Array<{
|
|
55
|
+
pluginName: string;
|
|
56
|
+
routes: RouteDefinition[];
|
|
57
|
+
}>;
|
|
28
58
|
/**
|
|
29
|
-
* Remove todos os hooks
|
|
30
|
-
* Útil em testes e em shutdown.
|
|
59
|
+
* Remove todos os hooks dos escopos carregados e limpa o estado.
|
|
60
|
+
* Útil em testes e em shutdown. Quando `registry` é informado, os hooks são
|
|
61
|
+
* removidos dele; caso contrário, do registry em que foram registrados.
|
|
31
62
|
*/
|
|
32
63
|
export declare function resetLoadedPlugins(registry?: HookRegistry): void;
|
|
64
|
+
/** Descarrega todos os plugins de um escopo (tenant desativado / LRU). */
|
|
65
|
+
export declare function unloadScope(scopeKey: string): boolean;
|
|
66
|
+
/** Descarrega um tenant (chave `tenant:<id>` ou o próprio id). */
|
|
67
|
+
export declare function unloadTenant(tenantId: string): boolean;
|
|
33
68
|
/**
|
|
34
|
-
* Sincroniza o registry com os plugins habilitados no banco.
|
|
69
|
+
* Sincroniza o registry de um escopo com os plugins habilitados no banco.
|
|
35
70
|
* Seguro para chamar no boot de qualquer processo e em re-syncs (ex.: logo
|
|
36
71
|
* após ativar/desativar pela API).
|
|
37
72
|
*/
|
package/dist/bootstrap.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAyC,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC9F,OAAO,KAAK,EAAE,qBAAqB,EAAqB,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEjG,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC5D;AAED,MAAM,WAAW,uBAAuB;IACtC,qFAAqF;IACrF,UAAU,EAAE,MAAM,CAAC;IACnB,uFAAuF;IACvF,GAAG,CAAC,EAAE,mBAAmB,CAAC;IAC1B,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,uEAAuE;IACvE,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,0EAA0E;IAC1E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,qBAAqB;IACpC,sFAAsF;IACtF,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,uCAAuC;IACvC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,oEAAoE;IACpE,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,yDAAyD;IACzD,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChD;AAoCD,qEAAqE;AACrE,wBAAgB,gBAAgB,IAAI,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAMtG;AAED,6DAA6D;AAC7D,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,KAAK,CAAC;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,eAAe,EAAE,CAAA;CAAE,CAAC,CAahH;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,CAAC,EAAE,YAAY,GAAG,IAAI,CAWhE;AAED,0EAA0E;AAC1E,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAWrD;AAED,kEAAkE;AAClE,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEtD;AA6DD;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CA4HvG"}
|
package/dist/bootstrap.js
CHANGED
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
//
|
|
3
3
|
// O PLUGIN.md promete: "`register(registry)` é chamado quando o plugin é
|
|
4
4
|
// carregado". Este módulo cumpre a promessa: descobre os plugins habilitados
|
|
5
|
-
// no banco (
|
|
5
|
+
// no banco (escopo **platform** = `tenant_id IS NULL`; escopo **tenant** =
|
|
6
|
+
// `plugin_tenants` habilitados), importa o entrypoint, chama
|
|
6
7
|
// `register(registry)` com uma API de hooks atribuída ao plugin (BUSI-032/033)
|
|
7
|
-
// e sincroniza o registry
|
|
8
|
+
// e sincroniza o registry do escopo.
|
|
8
9
|
//
|
|
9
10
|
// Regras:
|
|
10
11
|
// - **nunca lança**: plugin quebrado, manifesto inválido, incompatibilidade
|
|
@@ -12,55 +13,121 @@
|
|
|
12
13
|
// - **sincroniza com o banco**: quem saiu da lista de habilitados tem os
|
|
13
14
|
// hooks removidos do registry (unload);
|
|
14
15
|
// - **idempotente**: plugin já carregado não é recarregado (sem hooks
|
|
15
|
-
// duplicados) — chamadas repetidas carregam só o que é novo
|
|
16
|
+
// duplicados) — chamadas repetidas carregam só o que é novo;
|
|
17
|
+
// - **por escopo**: o estado de carga é indexado por escopo (platform ou um
|
|
18
|
+
// tenant), então ativar/desativar num tenant não afeta outro.
|
|
16
19
|
import { createPluginHooksApi } from '@oktis-works/plugin-sdk';
|
|
20
|
+
import { PLUGIN_PERMISSION_DEFAULT } from '@oktis-works/validation';
|
|
17
21
|
import { PluginLoader } from './loader.js';
|
|
18
22
|
import { PluginSandbox } from './sandbox.js';
|
|
19
|
-
import { getHookRegistry } from './hook-registry.js';
|
|
20
|
-
/**
|
|
21
|
-
const
|
|
23
|
+
import { getHookRegistry, getHookRegistryStore } from './hook-registry.js';
|
|
24
|
+
/** Estado de carga por escopo (`''` = platform, `tenant:<id>` = tenant). */
|
|
25
|
+
const loadedScopes = new Map();
|
|
26
|
+
function scopeKeyOf(tenantId) {
|
|
27
|
+
return tenantId ? `tenant:${tenantId}` : '';
|
|
28
|
+
}
|
|
29
|
+
function getScope(scopeKey, registry) {
|
|
30
|
+
let scope = loadedScopes.get(scopeKey);
|
|
31
|
+
if (!scope) {
|
|
32
|
+
scope = { registry, plugins: new Map() };
|
|
33
|
+
loadedScopes.set(scopeKey, scope);
|
|
34
|
+
}
|
|
35
|
+
return scope;
|
|
36
|
+
}
|
|
37
|
+
/** Escopo com carga registrada (para inspeção/estado de runtime). */
|
|
38
|
+
export function listLoadedScopes() {
|
|
39
|
+
return [...loadedScopes.entries()].map(([scope, entry]) => ({
|
|
40
|
+
scope,
|
|
41
|
+
registry: entry.registry,
|
|
42
|
+
plugins: [...entry.plugins.keys()],
|
|
43
|
+
}));
|
|
44
|
+
}
|
|
45
|
+
/** Obtém as rotas registradas pelos plugins em um escopo. */
|
|
46
|
+
export function getLoadedPluginRoutes(scopeKey) {
|
|
47
|
+
const scope = loadedScopes.get(scopeKey);
|
|
48
|
+
if (!scope)
|
|
49
|
+
return [];
|
|
50
|
+
const result = [];
|
|
51
|
+
for (const [pluginName, entry] of scope.plugins) {
|
|
52
|
+
if (entry.internal) {
|
|
53
|
+
const routes = entry.internal.getRoutes();
|
|
54
|
+
if (routes.length > 0) {
|
|
55
|
+
result.push({ pluginName, routes });
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return result;
|
|
60
|
+
}
|
|
22
61
|
/**
|
|
23
|
-
* Remove todos os hooks
|
|
24
|
-
* Útil em testes e em shutdown.
|
|
62
|
+
* Remove todos os hooks dos escopos carregados e limpa o estado.
|
|
63
|
+
* Útil em testes e em shutdown. Quando `registry` é informado, os hooks são
|
|
64
|
+
* removidos dele; caso contrário, do registry em que foram registrados.
|
|
25
65
|
*/
|
|
26
66
|
export function resetLoadedPlugins(registry) {
|
|
27
|
-
const
|
|
28
|
-
|
|
67
|
+
for (const [scopeKey, scope] of loadedScopes) {
|
|
68
|
+
const target = registry ?? scope.registry;
|
|
69
|
+
for (const entry of scope.plugins.values()) {
|
|
70
|
+
for (const reg of entry.registrations) {
|
|
71
|
+
if (reg.type === 'action')
|
|
72
|
+
target.removeAction(reg.name, reg.callback, reg.priority);
|
|
73
|
+
else
|
|
74
|
+
target.removeFilter(reg.name, reg.callback, reg.priority);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
loadedScopes.delete(scopeKey);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/** Descarrega todos os plugins de um escopo (tenant desativado / LRU). */
|
|
81
|
+
export function unloadScope(scopeKey) {
|
|
82
|
+
const scope = loadedScopes.get(scopeKey);
|
|
83
|
+
if (!scope)
|
|
84
|
+
return false;
|
|
85
|
+
for (const entry of scope.plugins.values()) {
|
|
29
86
|
for (const reg of entry.registrations) {
|
|
30
87
|
if (reg.type === 'action')
|
|
31
|
-
|
|
88
|
+
scope.registry.removeAction(reg.name, reg.callback, reg.priority);
|
|
32
89
|
else
|
|
33
|
-
|
|
90
|
+
scope.registry.removeFilter(reg.name, reg.callback, reg.priority);
|
|
34
91
|
}
|
|
35
|
-
loadedPlugins.delete(name);
|
|
36
92
|
}
|
|
93
|
+
loadedScopes.delete(scopeKey);
|
|
94
|
+
return true;
|
|
95
|
+
}
|
|
96
|
+
/** Descarrega um tenant (chave `tenant:<id>` ou o próprio id). */
|
|
97
|
+
export function unloadTenant(tenantId) {
|
|
98
|
+
return unloadScope(scopeKeyOf(tenantId));
|
|
37
99
|
}
|
|
38
|
-
function unloadPlugin(
|
|
39
|
-
const entry =
|
|
100
|
+
function unloadPlugin(scope, name) {
|
|
101
|
+
const entry = scope.plugins.get(name);
|
|
40
102
|
if (!entry)
|
|
41
103
|
return false;
|
|
42
104
|
for (const reg of entry.registrations) {
|
|
43
105
|
if (reg.type === 'action')
|
|
44
|
-
registry.removeAction(reg.name, reg.callback, reg.priority);
|
|
106
|
+
scope.registry.removeAction(reg.name, reg.callback, reg.priority);
|
|
45
107
|
else
|
|
46
|
-
registry.removeFilter(reg.name, reg.callback, reg.priority);
|
|
108
|
+
scope.registry.removeFilter(reg.name, reg.callback, reg.priority);
|
|
47
109
|
}
|
|
48
|
-
|
|
110
|
+
scope.plugins.delete(name);
|
|
49
111
|
return true;
|
|
50
112
|
}
|
|
51
113
|
/**
|
|
52
|
-
* Registry que grava cada registro num sink (para poder descarregar depois)
|
|
53
|
-
*
|
|
114
|
+
* Registry que grava cada registro num sink (para poder descarregar depois),
|
|
115
|
+
* delega ao registry real com `sourceId` atribuído pelo SDK e **aplica o
|
|
116
|
+
* timeout do sandbox** no callback registrado (WP5 — proteção real contra hook
|
|
117
|
+
* pendurado; documentada como limitada a trabalho assíncrono).
|
|
54
118
|
*/
|
|
55
|
-
function recordingRegistry(registry, sink) {
|
|
119
|
+
function recordingRegistry(registry, sink, sandbox) {
|
|
120
|
+
const acceptedArgsOf = (callback, explicit) => explicit ?? callback.length;
|
|
56
121
|
return {
|
|
57
122
|
addAction(action, callback, options) {
|
|
58
|
-
|
|
59
|
-
|
|
123
|
+
const wrapped = sandbox.wrapCallback(callback);
|
|
124
|
+
sink.push({ type: 'action', name: action, callback: wrapped, priority: options?.priority ?? 10 });
|
|
125
|
+
registry.addAction(action, wrapped, { ...options, acceptedArgs: acceptedArgsOf(callback, options?.acceptedArgs) });
|
|
60
126
|
},
|
|
61
127
|
addFilter(filter, callback, options) {
|
|
62
|
-
|
|
63
|
-
|
|
128
|
+
const wrapped = sandbox.wrapCallback(callback);
|
|
129
|
+
sink.push({ type: 'filter', name: filter, callback: wrapped, priority: options?.priority ?? 10 });
|
|
130
|
+
registry.addFilter(filter, wrapped, { ...options, acceptedArgs: acceptedArgsOf(callback, options?.acceptedArgs) });
|
|
64
131
|
},
|
|
65
132
|
removeAction: (action, callback, priority) => registry.removeAction(action, callback, priority),
|
|
66
133
|
removeFilter: (action, callback, priority) => registry.removeFilter(action, callback, priority),
|
|
@@ -70,20 +137,36 @@ function recordingRegistry(registry, sink) {
|
|
|
70
137
|
getCurrentHook: () => registry.getCurrentHook(),
|
|
71
138
|
};
|
|
72
139
|
}
|
|
140
|
+
/** Query de habilitados por escopo. */
|
|
141
|
+
function enabledQuery(tenantId) {
|
|
142
|
+
if (tenantId) {
|
|
143
|
+
return {
|
|
144
|
+
text: `SELECT p.name FROM plugins p
|
|
145
|
+
JOIN plugin_tenants pt ON pt.plugin_id = p.id
|
|
146
|
+
WHERE pt.tenant_id = $1 AND pt.status = 'ENABLED'
|
|
147
|
+
AND p.status NOT IN ('UNINSTALLED', 'MISSING')`,
|
|
148
|
+
params: [tenantId],
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
return { text: 'SELECT name FROM plugins WHERE status = ANY($1) AND tenant_id IS NULL' };
|
|
152
|
+
}
|
|
73
153
|
/**
|
|
74
|
-
* Sincroniza o registry com os plugins habilitados no banco.
|
|
154
|
+
* Sincroniza o registry de um escopo com os plugins habilitados no banco.
|
|
75
155
|
* Seguro para chamar no boot de qualquer processo e em re-syncs (ex.: logo
|
|
76
156
|
* após ativar/desativar pela API).
|
|
77
157
|
*/
|
|
78
158
|
export async function bootstrapPlugins(options) {
|
|
79
|
-
const
|
|
159
|
+
const scopeKey = scopeKeyOf(options.tenantId);
|
|
160
|
+
const registry = options.registry ??
|
|
161
|
+
(options.tenantId ? getHookRegistryStore().tenant(options.tenantId) : getHookRegistry());
|
|
80
162
|
const statuses = options.enabledStatuses ?? ['ACTIVATED', 'RUNNING'];
|
|
81
163
|
const result = { enabled: [], loaded: [], unloaded: [], failed: [] };
|
|
82
164
|
// 1) Quem está habilitado no banco? Falha = estado desconhecido → não toca em nada.
|
|
83
165
|
let enabled = null;
|
|
84
166
|
if (options.sql) {
|
|
85
167
|
try {
|
|
86
|
-
const
|
|
168
|
+
const query = enabledQuery(options.tenantId);
|
|
169
|
+
const rows = (await options.sql.unsafe(query.text, options.tenantId ? query.params : [statuses]));
|
|
87
170
|
enabled = rows
|
|
88
171
|
.map((row) => row.name)
|
|
89
172
|
.filter((name) => typeof name === 'string' && name.length > 0);
|
|
@@ -104,9 +187,10 @@ export async function bootstrapPlugins(options) {
|
|
|
104
187
|
catch {
|
|
105
188
|
discovered = [];
|
|
106
189
|
}
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
190
|
+
const scope = getScope(scopeKey, registry);
|
|
191
|
+
// 3) Descarrega quem saiu da lista de habilitados (deste escopo)
|
|
192
|
+
for (const name of [...scope.plugins.keys()]) {
|
|
193
|
+
if (!enabled.includes(name) && unloadPlugin(scope, name)) {
|
|
110
194
|
result.unloaded.push(name);
|
|
111
195
|
}
|
|
112
196
|
}
|
|
@@ -119,16 +203,18 @@ export async function bootstrapPlugins(options) {
|
|
|
119
203
|
catch {
|
|
120
204
|
levels = enabledDiscovered.map((entry) => [entry]); // ordenação falhou: ordem arbitrária
|
|
121
205
|
}
|
|
206
|
+
// Política de permissões: allowlist de configuração (ou catálogo completo).
|
|
207
|
+
const policy = options.permissionPolicy ?? PLUGIN_PERMISSION_DEFAULT;
|
|
208
|
+
const timeoutMs = options.hookTimeoutMs ?? 5000;
|
|
122
209
|
for (const level of levels) {
|
|
123
210
|
for (const entry of level) {
|
|
124
211
|
const name = entry.manifest.name;
|
|
125
|
-
if (
|
|
212
|
+
if (scope.plugins.has(name))
|
|
126
213
|
continue;
|
|
127
214
|
try {
|
|
128
215
|
const loaded = await loader.loadPlugin(entry.manifest, entry.path);
|
|
129
|
-
// O sandbox valida
|
|
130
|
-
const
|
|
131
|
-
const sandbox = new PluginSandbox({ allowedPermissions: permissions });
|
|
216
|
+
// O sandbox valida o manifesto contra a POLÍTICA (nunca contra si mesmo)
|
|
217
|
+
const sandbox = new PluginSandbox({ allowedPermissions: [...policy], timeoutMs });
|
|
132
218
|
sandbox.loadPlugin(entry.manifest, loaded.api);
|
|
133
219
|
// Contrato do PLUGIN.md: module.exports.register(registry)
|
|
134
220
|
const register = loaded.api.register;
|
|
@@ -136,9 +222,43 @@ export async function bootstrapPlugins(options) {
|
|
|
136
222
|
throw new Error('não exporta register(registry)');
|
|
137
223
|
}
|
|
138
224
|
const registrations = [];
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
225
|
+
// Se o core forneceu apiDeps, cria a API completa (hooks + settings + query + routes + ...)
|
|
226
|
+
// Caso contrário, usa apenas o Hooks API legado (compatibilidade).
|
|
227
|
+
let apiToPass;
|
|
228
|
+
let internal;
|
|
229
|
+
if (options.apiDeps) {
|
|
230
|
+
// Mescla os deps do core com os específicos do plugin/runtime
|
|
231
|
+
const deps = {
|
|
232
|
+
hooks: recordingRegistry(registry, registrations, sandbox),
|
|
233
|
+
manifest: entry.manifest,
|
|
234
|
+
settings: options.apiDeps.settings ?? { get: async () => undefined, set: async () => { } },
|
|
235
|
+
eventBus: options.apiDeps.eventBus ?? { emit: async () => { } },
|
|
236
|
+
db: options.apiDeps.db ?? { query: async () => [] },
|
|
237
|
+
getTenantId: options.apiDeps.getTenantId ?? (() => options.tenantId ?? null),
|
|
238
|
+
getUserId: options.apiDeps.getUserId ?? (() => null),
|
|
239
|
+
getRequestId: options.apiDeps.getRequestId ?? (() => crypto.randomUUID?.() ?? Math.random().toString(36).slice(2)),
|
|
240
|
+
getTenantById: options.apiDeps.getTenantById ?? (async () => null),
|
|
241
|
+
getUserById: options.apiDeps.getUserById ?? (async () => null),
|
|
242
|
+
registerRoutes: options.apiDeps.registerRoutes ?? (() => { }),
|
|
243
|
+
registerContentFields: options.apiDeps.registerContentFields ?? (() => { }),
|
|
244
|
+
allowedPermissions: [...policy],
|
|
245
|
+
};
|
|
246
|
+
// Cria a API completa usando a fábrica interna
|
|
247
|
+
const { createPluginApi } = await import('./plugin-api.js');
|
|
248
|
+
const apiResult = createPluginApi(deps);
|
|
249
|
+
apiToPass = apiResult.api;
|
|
250
|
+
internal = apiResult.internal;
|
|
251
|
+
}
|
|
252
|
+
else {
|
|
253
|
+
apiToPass = createPluginHooksApi(name, recordingRegistry(registry, registrations, sandbox));
|
|
254
|
+
}
|
|
255
|
+
register(apiToPass);
|
|
256
|
+
if (internal) {
|
|
257
|
+
scope.plugins.set(name, { registrations, internal });
|
|
258
|
+
}
|
|
259
|
+
else {
|
|
260
|
+
scope.plugins.set(name, { registrations });
|
|
261
|
+
}
|
|
142
262
|
result.loaded.push(name);
|
|
143
263
|
}
|
|
144
264
|
catch (error) {
|
package/dist/bootstrap.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"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"}
|
package/dist/hook-registry.d.ts
CHANGED
|
@@ -25,7 +25,27 @@ export declare class HookRegistry {
|
|
|
25
25
|
private readonly auditLog;
|
|
26
26
|
private devMode;
|
|
27
27
|
private trustLevels;
|
|
28
|
+
/** Nomes de hooks oficiais (catálogo do core) — sempre aceitos em dev. */
|
|
29
|
+
private readonly knownHooks;
|
|
30
|
+
/** Prefixos de hooks oficiais parametrizados (terminam em '*'). */
|
|
31
|
+
private readonly knownPrefixes;
|
|
28
32
|
setDevMode(enabled: boolean): void;
|
|
33
|
+
/**
|
|
34
|
+
* Registra o catálogo de hooks oficiais do core. Em modo dev a regra de
|
|
35
|
+
* prefixo (`okcms.`/`plugin.`) continua exigida para hooks customizados,
|
|
36
|
+
* mas os nomes oficiais (`content:query`, `theme:data:*`, ...) são
|
|
37
|
+
* aceitos — sem isso, o próprio catálogo do core é reprovado em dev.
|
|
38
|
+
*
|
|
39
|
+
* Entradas terminadas em `*` viram prefixos (ex.: `theme:data:*`,
|
|
40
|
+
* `manage:*`, `before_publish_content_*`).
|
|
41
|
+
*
|
|
42
|
+
* O runtime não depende do core (seria ciclo): quem conhece o catálogo é
|
|
43
|
+
* o chamador (bootstrap do core) e injeta aqui.
|
|
44
|
+
*/
|
|
45
|
+
setKnownHooks(names: Iterable<string>): void;
|
|
46
|
+
clearKnownHooks(): void;
|
|
47
|
+
/** True quando o nome pertence ao catálogo oficial (exato ou por prefixo). */
|
|
48
|
+
isKnownHook(action: string): boolean;
|
|
29
49
|
setTrustLevel(sourceId: string, level: number): void;
|
|
30
50
|
/**
|
|
31
51
|
* Catálogo de hooks registrados (REQ-REQU-035-002): lista cada hook com tipo,
|
|
@@ -74,9 +94,48 @@ export declare class HookRegistry {
|
|
|
74
94
|
private removeEntry;
|
|
75
95
|
private hasEntry;
|
|
76
96
|
}
|
|
97
|
+
export declare function setHookTenantResolver(resolver: () => string | null): void;
|
|
98
|
+
export declare function getCurrentHookTenantId(): string | null;
|
|
99
|
+
/**
|
|
100
|
+
* Store de registries por tenant (isolamento de plugins por tenant).
|
|
101
|
+
*
|
|
102
|
+
* - `platform`: hooks do core (`okcms.*`) — compartilhado por todo o processo;
|
|
103
|
+
* - `tenant(tenantId)`: hooks dos plugins habilitados daquele tenant, criado
|
|
104
|
+
* sob demanda e descarregável (invalidate/drop).
|
|
105
|
+
*
|
|
106
|
+
* O contrato é `tenant(id)` para poder evoluir para vm/worker por tenant sem
|
|
107
|
+
* mudar quem chama (`getHookRegistry()` continua síncrono).
|
|
108
|
+
*/
|
|
109
|
+
export declare class HookRegistryStore {
|
|
110
|
+
private platformRegistry;
|
|
111
|
+
private readonly byTenant;
|
|
112
|
+
constructor(platform?: HookRegistry);
|
|
113
|
+
platform(): HookRegistry;
|
|
114
|
+
setPlatform(registry: HookRegistry): void;
|
|
115
|
+
/** Registry do tenant (criado sob demanda com devMode + catálogo do core). */
|
|
116
|
+
tenant(tenantId: string): HookRegistry;
|
|
117
|
+
hasTenant(tenantId: string): boolean;
|
|
118
|
+
tenantIds(): string[];
|
|
119
|
+
/**
|
|
120
|
+
* Descarrega os hooks de um tenant (ativação/desativação, LRU, shutdown).
|
|
121
|
+
* Retorna true quando havia um registry carregado.
|
|
122
|
+
*/
|
|
123
|
+
invalidateTenant(tenantId: string): boolean;
|
|
124
|
+
clearTenants(): void;
|
|
125
|
+
/** Propaga o catálogo do core para todos os registries (atuais e futuros). */
|
|
126
|
+
setKnownHooks(names: Iterable<string>): void;
|
|
127
|
+
get size(): number;
|
|
128
|
+
}
|
|
129
|
+
export declare function getHookRegistryStore(): HookRegistryStore;
|
|
130
|
+
/**
|
|
131
|
+
* Registry do escopo atual: tenant quando há contexto de tenant (plugins por
|
|
132
|
+
* tenant), platform quando não há (hooks do core).
|
|
133
|
+
*/
|
|
77
134
|
export declare function getHookRegistry(): HookRegistry;
|
|
78
135
|
/**
|
|
79
|
-
* Substitui o registry
|
|
136
|
+
* Substitui o registry platform. Uso interno: testes e hot-reload de plugins.
|
|
80
137
|
*/
|
|
81
138
|
export declare function setHookRegistry(registry: HookRegistry): void;
|
|
139
|
+
/** Troca o store inteiro (testes). */
|
|
140
|
+
export declare function setHookRegistryStore(store: HookRegistryStore | null): void;
|
|
82
141
|
//# sourceMappingURL=hook-registry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook-registry.d.ts","sourceRoot":"","sources":["../src/hook-registry.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,YAAY,CAAC,KAAK,SAAS,OAAO,EAAE,GAAG,OAAO,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC;AAY5F,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mEAAmE;IACnE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC/B,gEAAgE;IAChE,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,cAAc,GAAG,eAAe,CAAC;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AASD,qBAAa,YAAY;IACvB,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+C;IACvE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+C;IACvE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA6B;IAC7D,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAuB;IAChD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,WAAW,CAA6B;
|
|
1
|
+
{"version":3,"file":"hook-registry.d.ts","sourceRoot":"","sources":["../src/hook-registry.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,YAAY,CAAC,KAAK,SAAS,OAAO,EAAE,GAAG,OAAO,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC;AAY5F,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mEAAmE;IACnE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC/B,gEAAgE;IAChE,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,cAAc,GAAG,eAAe,CAAC;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AASD,qBAAa,YAAY;IACvB,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+C;IACvE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+C;IACvE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA6B;IAC7D,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAuB;IAChD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,WAAW,CAA6B;IAChD,0EAA0E;IAC1E,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqB;IAChD,mEAAmE;IACnE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAE9C,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAIlC;;;;;;;;;;;OAWG;IACH,aAAa,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI;IAO5C,eAAe,IAAI,IAAI;IAKvB,8EAA8E;IAC9E,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAKpC,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAIpD;;;OAGG;IACH,cAAc,IAAI,KAAK,CAAC;QACtB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC;QAC1B,UAAU,EAAE,MAAM,EAAE,CAAC;QACrB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IAoBF,WAAW,IAAI,aAAa,EAAE;IAI9B,aAAa,IAAI,IAAI;IAIrB;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,GAAE,cAAmB,GAAG,IAAI;IAqBrF;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,EAAE,OAAO,GAAE,cAAmB,GAAG,IAAI;IAqB9G,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO;IAIhF,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO;IAIhF,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,YAAY,GAAG,OAAO;IAI3D,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,YAAY,GAAG,OAAO;IAI3D,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAIjC,cAAc,IAAI,MAAM,GAAG,IAAI;IAI/B;;;OAGG;IACG,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBjE;;;OAGG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO;IAqBzE;;;OAGG;IACG,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAqB7F,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,qBAAqB;IA2B7B,OAAO,CAAC,WAAW;IA+BnB,OAAO,CAAC,QAAQ;CAWjB;AAkBD,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,IAAI,CAEzE;AAED,wBAAgB,sBAAsB,IAAI,MAAM,GAAG,IAAI,CAMtD;AAED;;;;;;;;;GASG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,gBAAgB,CAAe;IACvC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmC;gBAEhD,QAAQ,CAAC,EAAE,YAAY;IAInC,QAAQ,IAAI,YAAY;IAIxB,WAAW,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAIzC,8EAA8E;IAC9E,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY;IAStC,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIpC,SAAS,IAAI,MAAM,EAAE;IAIrB;;;OAGG;IACH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAI3C,YAAY,IAAI,IAAI;IAIpB,8EAA8E;IAC9E,aAAa,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI;IAQ5C,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF;AAID,wBAAgB,oBAAoB,IAAI,iBAAiB,CAGxD;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,YAAY,CAI9C;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAE5D;AAED,sCAAsC;AACtC,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,GAAG,IAAI,CAG1E"}
|