@oktis-works/plugin-runtime 0.6.1 → 0.7.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.
Files changed (48) hide show
  1. package/dist/bootstrap.d.ts +90 -22
  2. package/dist/bootstrap.d.ts.map +1 -1
  3. package/dist/bootstrap.js +301 -52
  4. package/dist/bootstrap.js.map +1 -1
  5. package/dist/content-query.d.ts +29 -0
  6. package/dist/content-query.d.ts.map +1 -0
  7. package/dist/content-query.js +109 -0
  8. package/dist/content-query.js.map +1 -0
  9. package/dist/hook-registry.d.ts +21 -21
  10. package/dist/hook-registry.d.ts.map +1 -1
  11. package/dist/hook-registry.js +26 -26
  12. package/dist/hook-registry.js.map +1 -1
  13. package/dist/http.d.ts +50 -0
  14. package/dist/http.d.ts.map +1 -0
  15. package/dist/http.js +314 -0
  16. package/dist/http.js.map +1 -0
  17. package/dist/i18n.d.ts +16 -0
  18. package/dist/i18n.d.ts.map +1 -0
  19. package/dist/i18n.js +73 -0
  20. package/dist/i18n.js.map +1 -0
  21. package/dist/index.d.ts +1 -1
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +1 -1
  24. package/dist/index.js.map +1 -1
  25. package/dist/loader.d.ts +8 -0
  26. package/dist/loader.d.ts.map +1 -1
  27. package/dist/loader.js +98 -10
  28. package/dist/loader.js.map +1 -1
  29. package/dist/manifest.d.ts +11 -6
  30. package/dist/manifest.d.ts.map +1 -1
  31. package/dist/manifest.js +290 -17
  32. package/dist/manifest.js.map +1 -1
  33. package/dist/plugin-api.d.ts +194 -40
  34. package/dist/plugin-api.d.ts.map +1 -1
  35. package/dist/plugin-api.js +655 -13
  36. package/dist/plugin-api.js.map +1 -1
  37. package/dist/plugin-migrations.d.ts +15 -0
  38. package/dist/plugin-migrations.d.ts.map +1 -0
  39. package/dist/plugin-migrations.js +68 -0
  40. package/dist/plugin-migrations.js.map +1 -0
  41. package/dist/sandbox.d.ts +13 -11
  42. package/dist/sandbox.d.ts.map +1 -1
  43. package/dist/sandbox.js +11 -9
  44. package/dist/sandbox.js.map +1 -1
  45. package/dist/style-isolation.d.ts +3 -3
  46. package/dist/style-isolation.js +6 -6
  47. package/dist/style-isolation.js.map +1 -1
  48. package/package.json +6 -5
package/dist/bootstrap.js CHANGED
@@ -1,21 +1,22 @@
1
- // @oktis-works/plugin-runtime - Bootstrap de plugins em runtime
1
+ // @oktis-works/plugin-runtime - Plugin runtime bootstrap
2
2
  //
3
- // O PLUGIN.md promete: "`register(registry)` é chamado quando o plugin é
4
- // carregado". Este módulo cumpre a promessa: descobre os plugins habilitados
5
- // no banco (escopo **platform** = `tenant_id IS NULL`; escopo **tenant** =
6
- // `plugin_tenants` habilitados), importa o entrypoint, chama
7
- // `register(registry)` com uma API de hooks atribuída ao plugin (BUSI-032/033)
8
- // e sincroniza o registry do escopo.
3
+ // PLUGIN.md promises: "`register(registry)` is called when the plugin is
4
+ // loaded". This module honors it: discovers enabled plugins in the database
5
+ // (**platform** scope = `tenant_id IS NULL`; **tenant** scope = enabled
6
+ // `plugin_tenants`), imports the entrypoint, calls `register(registry)` with
7
+ // a hook API attributed to the plugin (BUSI-032/033) and syncs the scope
8
+ // registry.
9
9
  //
10
- // Regras:
11
- // - **nunca lança**: plugin quebrado, manifesto inválido, incompatibilidade
12
- // semântica ou banco indisponível não derrubam o boot (isolamento de falha);
13
- // - **sincroniza com o banco**: quem saiu da lista de habilitados tem os
14
- // hooks removidos do registry (unload);
15
- // - **idempotente**: plugin já carregado não é recarregado (sem hooks
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.
10
+ // Rules:
11
+ // - **never throws**: a broken plugin, invalid manifest, semantic
12
+ // incompatibility or an unavailable database never break the boot
13
+ // (failure isolation);
14
+ // - **syncs with the database**: anything that left the enabled list has
15
+ // its hooks removed from the registry (unload);
16
+ // - **idempotent**: an already-loaded plugin is not reloaded (no duplicate
17
+ // hooks) — repeated calls load only what is new;
18
+ // - **per scope**: load state is indexed by scope (platform or a tenant),
19
+ // so enabling/disabling in one tenant does not affect another.
19
20
  import { createPluginHooksApi } from '@oktis-works/plugin-sdk';
20
21
  import { PLUGIN_PERMISSION_DEFAULT } from '@oktis-works/validation';
21
22
  import { PluginLoader } from './loader.js';
@@ -23,8 +24,29 @@ import { PluginSandbox } from './sandbox.js';
23
24
  import { getHookRegistry, getHookRegistryStore } from './hook-registry.js';
24
25
  /** Estado de carga por escopo (`''` = platform, `tenant:<id>` = tenant). */
25
26
  const loadedScopes = new Map();
27
+ const pendingScopeCleanups = new Map();
28
+ /** Platform scope uses the same key as the core ('platform') — external lookups match. */
29
+ const PLATFORM_SCOPE = 'platform';
26
30
  function scopeKeyOf(tenantId) {
27
- return tenantId ? `tenant:${tenantId}` : '';
31
+ return tenantId ? `tenant:${tenantId}` : PLATFORM_SCOPE;
32
+ }
33
+ async function awaitWithTimeout(promise, timeoutMs) {
34
+ if (timeoutMs <= 0)
35
+ return promise;
36
+ let timer;
37
+ try {
38
+ return await Promise.race([
39
+ promise,
40
+ new Promise((_, reject) => {
41
+ timer = setTimeout(() => reject(new Error(`register() exceeded ${timeoutMs}ms`)), timeoutMs);
42
+ timer.unref?.();
43
+ }),
44
+ ]);
45
+ }
46
+ finally {
47
+ if (timer)
48
+ clearTimeout(timer);
49
+ }
28
50
  }
29
51
  function getScope(scopeKey, registry) {
30
52
  let scope = loadedScopes.get(scopeKey);
@@ -34,7 +56,7 @@ function getScope(scopeKey, registry) {
34
56
  }
35
57
  return scope;
36
58
  }
37
- /** Escopo com carga registrada (para inspeção/estado de runtime). */
59
+ /** Scope with registered loads (for inspection/runtime state). */
38
60
  export function listLoadedScopes() {
39
61
  return [...loadedScopes.entries()].map(([scope, entry]) => ({
40
62
  scope,
@@ -42,7 +64,7 @@ export function listLoadedScopes() {
42
64
  plugins: [...entry.plugins.keys()],
43
65
  }));
44
66
  }
45
- /** Obtém as rotas registradas pelos plugins em um escopo. */
67
+ /** Gets the routes registered by plugins in a scope. */
46
68
  export function getLoadedPluginRoutes(scopeKey) {
47
69
  const scope = loadedScopes.get(scopeKey);
48
70
  if (!scope)
@@ -52,16 +74,141 @@ export function getLoadedPluginRoutes(scopeKey) {
52
74
  if (entry.internal) {
53
75
  const routes = entry.internal.getRoutes();
54
76
  if (routes.length > 0) {
55
- result.push({ pluginName, routes });
77
+ const rpm = entry.manifest?.rateLimit?.rpm;
78
+ result.push({
79
+ pluginName,
80
+ routes,
81
+ api: entry.internal.getApi(),
82
+ scope: scopeKey,
83
+ tenantId: scopeKey === 'platform' ? null : scopeKey.slice('tenant:'.length),
84
+ ...(typeof rpm === 'number' && rpm > 0 ? { rpm } : {}),
85
+ });
56
86
  }
57
87
  }
58
88
  }
59
89
  return result;
60
90
  }
61
91
  /**
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.
92
+ * Handlers de jobs dos plugins em um escopo (dispatch pelo worker:
93
+ * `plugin:{tenant}:{plugin}:{jobName}` → handler).
94
+ */
95
+ export function getLoadedPluginJobHandlers(scopeKey) {
96
+ const scope = loadedScopes.get(scopeKey);
97
+ if (!scope)
98
+ return [];
99
+ const result = [];
100
+ for (const [pluginName, entry] of scope.plugins) {
101
+ if (entry.internal) {
102
+ const handlers = entry.internal.getJobHandlers?.();
103
+ if (handlers && handlers.size > 0) {
104
+ result.push({ pluginName, handlers });
105
+ }
106
+ }
107
+ }
108
+ return result;
109
+ }
110
+ /**
111
+ * Runtime `api.admin` state of the plugins loaded in a scope (slots
112
+ * registered at runtime) — consumed by GET /api/v1/plugins/extensions, which
113
+ * merges it with `manifest.admin`. Only states with at least one entry are
114
+ * returned.
115
+ */
116
+ export function getLoadedPluginAdminExtensions(scopeKey) {
117
+ const scope = loadedScopes.get(scopeKey);
118
+ if (!scope)
119
+ return [];
120
+ const result = [];
121
+ for (const [pluginName, entry] of scope.plugins) {
122
+ const state = entry.internal?.getAdminState?.();
123
+ if (!state)
124
+ continue;
125
+ const hasEntries = state.menuPages.length > 0 ||
126
+ state.submenuPages.length > 0 ||
127
+ state.dashboardWidgets.length > 0 ||
128
+ state.metaBoxes.length > 0 ||
129
+ state.notices.length > 0 ||
130
+ state.actionLinks.length > 0 ||
131
+ (state.editors?.length ?? 0) > 0 ||
132
+ Object.keys(state.columns).length > 0 ||
133
+ Object.keys(state.columnRenderers).length > 0;
134
+ if (hasEntries)
135
+ result.push({ pluginName, state });
136
+ }
137
+ return result;
138
+ }
139
+ /**
140
+ * Blocks registered at runtime via `api.registerBlock` by the plugins loaded
141
+ * in a scope — consumed by GET /api/v1/blocks, which merges them with
142
+ * `manifest.blocks`. Only plugins with at least one block are returned.
143
+ */
144
+ export function getLoadedPluginBlocks(scopeKey) {
145
+ const scope = loadedScopes.get(scopeKey);
146
+ if (!scope)
147
+ return [];
148
+ const result = [];
149
+ for (const [pluginName, entry] of scope.plugins) {
150
+ const blocks = entry.internal?.getBlocks?.();
151
+ if (blocks && blocks.length > 0)
152
+ result.push({ pluginName, blocks });
153
+ }
154
+ return result;
155
+ }
156
+ /**
157
+ * Patterns registered at runtime via `api.registerPattern` by the plugins
158
+ * loaded in a scope — consumed by GET /api/v1/patterns, which merges them
159
+ * with `manifest.patterns`. Only plugins with at least one pattern are
160
+ * returned.
161
+ */
162
+ export function getLoadedPluginPatterns(scopeKey) {
163
+ const scope = loadedScopes.get(scopeKey);
164
+ if (!scope)
165
+ return [];
166
+ const result = [];
167
+ for (const [pluginName, entry] of scope.plugins) {
168
+ const patterns = entry.internal?.getPatterns?.();
169
+ if (patterns && patterns.length > 0)
170
+ result.push({ pluginName, patterns });
171
+ }
172
+ return result;
173
+ }
174
+ /**
175
+ * Assets enqueued at runtime via `api.assets` by the plugins loaded in a
176
+ * scope — consumed by the public renderer (theme:head pipeline, Item 8).
177
+ * Only plugins with at least one asset are returned.
178
+ */
179
+ export function getLoadedPluginAssets(scopeKey) {
180
+ const scope = loadedScopes.get(scopeKey);
181
+ if (!scope)
182
+ return [];
183
+ const result = [];
184
+ for (const [pluginName, entry] of scope.plugins) {
185
+ const assets = entry.internal?.getEnqueuedAssets?.();
186
+ if (assets && assets.length > 0)
187
+ result.push({ pluginName, assets });
188
+ }
189
+ return result;
190
+ }
191
+ /**
192
+ * Health checks registered at runtime via `api.health` by the plugins loaded
193
+ * in a scope — aggregated by GET /api/v1/health (Item 14). Only plugins with
194
+ * at least one check are returned.
195
+ */
196
+ export function getLoadedPluginHealthChecks(scopeKey) {
197
+ const scope = loadedScopes.get(scopeKey);
198
+ if (!scope)
199
+ return [];
200
+ const result = [];
201
+ for (const [pluginName, entry] of scope.plugins) {
202
+ const checks = entry.internal?.getHealthChecks?.();
203
+ if (checks && checks.length > 0)
204
+ result.push({ pluginName, checks });
205
+ }
206
+ return result;
207
+ }
208
+ /**
209
+ * Removes all hooks from the loaded scopes and clears the state.
210
+ * Useful in tests and shutdown. When `registry` is given, hooks are removed
211
+ * from it; otherwise from the registry where they were registered.
65
212
  */
66
213
  export function resetLoadedPlugins(registry) {
67
214
  for (const [scopeKey, scope] of loadedScopes) {
@@ -73,6 +220,7 @@ export function resetLoadedPlugins(registry) {
73
220
  else
74
221
  target.removeFilter(reg.name, reg.callback, reg.priority);
75
222
  }
223
+ void entry.internal?.cleanup();
76
224
  }
77
225
  loadedScopes.delete(scopeKey);
78
226
  }
@@ -82,6 +230,7 @@ export function unloadScope(scopeKey) {
82
230
  const scope = loadedScopes.get(scopeKey);
83
231
  if (!scope)
84
232
  return false;
233
+ const cleanups = [];
85
234
  for (const entry of scope.plugins.values()) {
86
235
  for (const reg of entry.registrations) {
87
236
  if (reg.type === 'action')
@@ -89,15 +238,20 @@ export function unloadScope(scopeKey) {
89
238
  else
90
239
  scope.registry.removeFilter(reg.name, reg.callback, reg.priority);
91
240
  }
241
+ if (entry.internal)
242
+ cleanups.push(entry.internal.cleanup());
92
243
  }
93
244
  loadedScopes.delete(scopeKey);
245
+ if (cleanups.length > 0) {
246
+ pendingScopeCleanups.set(scopeKey, Promise.all(cleanups).then(() => undefined).finally(() => pendingScopeCleanups.delete(scopeKey)));
247
+ }
94
248
  return true;
95
249
  }
96
- /** Descarrega um tenant (chave `tenant:<id>` ou o próprio id). */
250
+ /** Unloads a tenant (key `tenant:<id>` or the id itself). */
97
251
  export function unloadTenant(tenantId) {
98
252
  return unloadScope(scopeKeyOf(tenantId));
99
253
  }
100
- function unloadPlugin(scope, name) {
254
+ async function unloadPlugin(scope, name) {
101
255
  const entry = scope.plugins.get(name);
102
256
  if (!entry)
103
257
  return false;
@@ -107,14 +261,15 @@ function unloadPlugin(scope, name) {
107
261
  else
108
262
  scope.registry.removeFilter(reg.name, reg.callback, reg.priority);
109
263
  }
264
+ await entry.internal?.cleanup();
110
265
  scope.plugins.delete(name);
111
266
  return true;
112
267
  }
113
268
  /**
114
269
  * 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).
270
+ * delegates to the real registry with the SDK-attributed `sourceId` and
271
+ * **applies the sandbox timeout** to the registered callback (WP5 — real
272
+ * protection against a hanging hook; documented as limited to async work).
118
273
  */
119
274
  function recordingRegistry(registry, sink, sandbox) {
120
275
  const acceptedArgsOf = (callback, explicit) => explicit ?? callback.length;
@@ -153,15 +308,18 @@ function enabledQuery(tenantId) {
153
308
  /**
154
309
  * Sincroniza o registry de um escopo com os plugins habilitados no banco.
155
310
  * Seguro para chamar no boot de qualquer processo e em re-syncs (ex.: logo
156
- * após ativar/desativar pela API).
311
+ * after enabling/disabling through the API).
157
312
  */
158
313
  export async function bootstrapPlugins(options) {
159
314
  const scopeKey = scopeKeyOf(options.tenantId);
315
+ const pendingCleanup = pendingScopeCleanups.get(scopeKey);
316
+ if (pendingCleanup)
317
+ await pendingCleanup;
160
318
  const registry = options.registry ??
161
319
  (options.tenantId ? getHookRegistryStore().tenant(options.tenantId) : getHookRegistry());
162
320
  const statuses = options.enabledStatuses ?? ['ACTIVATED', 'RUNNING'];
163
321
  const result = { enabled: [], loaded: [], unloaded: [], failed: [] };
164
- // 1) Quem está habilitado no banco? Falha = estado desconhecido → não toca em nada.
322
+ // 1) Who is enabled in the database? Failure = unknown state → touch nothing.
165
323
  let enabled = null;
166
324
  if (options.sql) {
167
325
  try {
@@ -178,7 +336,7 @@ export async function bootstrapPlugins(options) {
178
336
  result.enabled = enabled ?? [];
179
337
  if (enabled === null)
180
338
  return result;
181
- // 2) Descobre no diretório (diretório ausente = nenhum plugin, não é erro)
339
+ // 2) Discovers in the directory (missing directory = no plugins, not an error)
182
340
  const loader = new PluginLoader(options.pluginsDir);
183
341
  let discovered = [];
184
342
  try {
@@ -190,20 +348,26 @@ export async function bootstrapPlugins(options) {
190
348
  const scope = getScope(scopeKey, registry);
191
349
  // 3) Descarrega quem saiu da lista de habilitados (deste escopo)
192
350
  for (const name of [...scope.plugins.keys()]) {
193
- if (!enabled.includes(name) && unloadPlugin(scope, name)) {
351
+ if (!enabled.includes(name) && await unloadPlugin(scope, name)) {
194
352
  result.unloaded.push(name);
195
353
  }
196
354
  }
197
- // 4) Carrega habilitados ainda não carregados, respeitando ordem de dependência
355
+ // 4) Loads enabled-but-not-yet-loaded plugins, honoring dependency order
198
356
  const enabledDiscovered = discovered.filter((entry) => enabled.includes(entry.manifest.name));
199
357
  let levels;
200
358
  try {
201
359
  levels = loader.resolveDependencies(enabledDiscovered);
202
360
  }
203
- catch {
204
- levels = enabledDiscovered.map((entry) => [entry]); // ordenação falhou: ordem arbitrária
361
+ catch (error) {
362
+ const message = error instanceof Error ? error.message : String(error);
363
+ for (const entry of enabledDiscovered)
364
+ result.failed.push({ name: entry.manifest.name, error: message });
365
+ return result;
205
366
  }
206
- // Política de permissões: allowlist de configuração (ou catálogo completo).
367
+ for (const failure of loader.getDependencyFailures()) {
368
+ result.failed.push(failure);
369
+ }
370
+ // Permission policy: configuration allowlist (or the full catalog).
207
371
  const policy = options.permissionPolicy ?? PLUGIN_PERMISSION_DEFAULT;
208
372
  const timeoutMs = options.hookTimeoutMs ?? 5000;
209
373
  for (const level of levels) {
@@ -211,23 +375,41 @@ export async function bootstrapPlugins(options) {
211
375
  const name = entry.manifest.name;
212
376
  if (scope.plugins.has(name))
213
377
  continue;
378
+ let registrations = [];
379
+ let internal;
214
380
  try {
215
381
  const loaded = await loader.loadPlugin(entry.manifest, entry.path);
216
- // O sandbox valida o manifesto contra a POLÍTICA (nunca contra si mesmo)
217
- const sandbox = new PluginSandbox({ allowedPermissions: [...policy], timeoutMs });
382
+ // Effective permissions are the intersection of the deployment policy
383
+ // and the permissions explicitly declared by this plugin.
384
+ // A missing permissions field is the v1 compatibility form and means
385
+ // the plugin has not opted into the v2 capability declaration yet.
386
+ // An explicit empty array remains least-privilege and grants nothing.
387
+ const declaredPermissions = new Set(entry.manifest.permissions ?? PLUGIN_PERMISSION_DEFAULT);
388
+ const effectivePermissions = policy.filter((permission) => declaredPermissions.has(permission));
389
+ const sandbox = new PluginSandbox({ allowedPermissions: effectivePermissions, timeoutMs });
218
390
  sandbox.loadPlugin(entry.manifest, loaded.api);
219
391
  // Contrato do PLUGIN.md: module.exports.register(registry)
220
392
  const register = loaded.api.register;
221
393
  if (typeof register !== 'function') {
222
- throw new Error('não exporta register(registry)');
394
+ throw new Error('does not export register(registry)');
395
+ }
396
+ // Item 20: plugin schema migrations (manifest.migrations[]) run
397
+ // BEFORE register(), once per plugin (global registry in
398
+ // plugin_schema_migrations). Checksum drift fails the plugin isolated.
399
+ if (options.sql && Array.isArray(entry.manifest.migrations) && entry.manifest.migrations.length > 0) {
400
+ const { applyPluginMigrations } = await import('./plugin-migrations.js');
401
+ const migrationResult = await applyPluginMigrations(options.sql, name, entry.path, entry.manifest.migrations);
402
+ if (migrationResult.drift.length > 0) {
403
+ throw new Error(`Plugin migration drift: ${migrationResult.drift.join('; ')}`);
404
+ }
223
405
  }
224
- const registrations = [];
406
+ registrations = [];
225
407
  // Se o core forneceu apiDeps, cria a API completa (hooks + settings + query + routes + ...)
226
- // Caso contrário, usa apenas o Hooks API legado (compatibilidade).
408
+ // Otherwise, only the legacy Hooks API is used (compatibility).
227
409
  let apiToPass;
228
- let internal;
410
+ internal = undefined;
229
411
  if (options.apiDeps) {
230
- // Mescla os deps do core com os específicos do plugin/runtime
412
+ // Merges the core deps with the plugin/runtime-specific ones
231
413
  const deps = {
232
414
  hooks: recordingRegistry(registry, registrations, sandbox),
233
415
  manifest: entry.manifest,
@@ -242,20 +424,73 @@ export async function bootstrapPlugins(options) {
242
424
  registerRoutes: options.apiDeps.registerRoutes ?? (() => { }),
243
425
  registerContentFields: options.apiDeps.registerContentFields ?? (() => { }),
244
426
  registerFieldTypes: options.apiDeps.registerFieldTypes ?? (() => { }),
245
- allowedPermissions: [...policy],
427
+ registerPostTypes: options.apiDeps.registerPostTypes ?? (() => { }),
428
+ registerTaxonomies: options.apiDeps.registerTaxonomies ?? (() => { }),
429
+ // Core cache backend; absent → in-memory fallback in the factory
430
+ cache: options.apiDeps.cache,
431
+ // Backend de jobs do core; ausente → schedule/enqueue retornam false
432
+ jobs: options.apiDeps.jobs,
433
+ allowedPermissions: effectivePermissions,
246
434
  };
247
- // Cria a API completa usando a fábrica interna
435
+ // Creates the full API using the internal factory
248
436
  const { createPluginApi } = await import('./plugin-api.js');
249
437
  const apiResult = createPluginApi(deps);
250
438
  apiToPass = apiResult.api;
251
439
  internal = apiResult.internal;
440
+ // Item 9: loads the manifest `locales[]` files before register()
441
+ // — translations already available during boot. File failure is
442
+ // silent (fallback = the key itself).
443
+ try {
444
+ const { loadPluginLocales } = await import('./i18n.js');
445
+ const i18n = apiResult.api.i18n;
446
+ if (i18n)
447
+ await loadPluginLocales(entry.path, entry.manifest, i18n);
448
+ }
449
+ catch {
450
+ // i18n unavailable — boot continues
451
+ }
252
452
  }
253
453
  else {
254
454
  apiToPass = createPluginHooksApi(name, recordingRegistry(registry, registrations, sandbox));
255
455
  }
256
- register(apiToPass);
456
+ // register() may be async — we await it (with the same hook timeout)
457
+ // so rejections become an isolated failure instead of an unhandled
458
+ // rejection: previously a throwing async register escaped the
459
+ // try/catch and became an unhandled process error.
460
+ await awaitWithTimeout(Promise.resolve(register(apiToPass)), timeoutMs);
257
461
  if (internal) {
258
- scope.plugins.set(name, { registrations, internal });
462
+ const typedApi = apiToPass;
463
+ // Declarative manifest registrations use the same validation and
464
+ // permission checks as imperative registrations.
465
+ for (const fieldType of entry.manifest.fieldTypes ?? [])
466
+ typedApi.addFieldType(fieldType);
467
+ for (const block of entry.manifest.blocks ?? [])
468
+ typedApi.registerBlock(block);
469
+ for (const pattern of entry.manifest.patterns ?? [])
470
+ typedApi.registerPattern(pattern);
471
+ for (const postType of entry.manifest.postTypes ?? [])
472
+ typedApi.addPostType(postType);
473
+ for (const taxonomy of entry.manifest.taxonomies ?? [])
474
+ typedApi.addTaxonomy(taxonomy);
475
+ if (internal.getFields().length > 0) {
476
+ await options.apiDeps?.registerContentFields?.(internal.getFields(), name);
477
+ }
478
+ scope.plugins.set(name, { registrations, internal, manifest: entry.manifest });
479
+ await options.apiDeps?.registerPostTypes?.(internal.getPostTypes());
480
+ await options.apiDeps?.registerTaxonomies?.(internal.getTaxonomies());
481
+ // Jobs declarados no manifesto (v2): agenda recorrente via api.jobs
482
+ // (same validation/permission/ceiling as the imperative path).
483
+ if (entry.manifest.scheduleJobs?.length) {
484
+ const typedApi = apiToPass;
485
+ for (const job of entry.manifest.scheduleJobs) {
486
+ try {
487
+ await typedApi.jobs.schedule(job.name, { every: job.every, cron: job.cron });
488
+ }
489
+ catch (e) {
490
+ console.warn(`[plugins] Failed to schedule declared job "${job.name}" for ${name}:`, e);
491
+ }
492
+ }
493
+ }
259
494
  // Persist field types registered by this plugin
260
495
  if (internal.getFieldTypes && internal.getFieldTypes().length > 0) {
261
496
  const fieldTypes = internal.getFieldTypes();
@@ -268,24 +503,38 @@ export async function bootstrapPlugins(options) {
268
503
  const coreModuleId = '@oktis-works/core';
269
504
  const core = (await import(coreModuleId));
270
505
  const { fieldTypeExtensionService } = core;
271
- for (const ft of fieldTypes) {
272
- await fieldTypeExtensionService.register(ft);
506
+ if (fieldTypeExtensionService.reconcilePlugin) {
507
+ await fieldTypeExtensionService.reconcilePlugin(name, fieldTypes);
508
+ }
509
+ else {
510
+ for (const ft of fieldTypes)
511
+ await fieldTypeExtensionService.register(ft);
273
512
  }
274
513
  // Sync to in-memory registry
275
514
  await fieldTypeExtensionService.syncToRegistry();
276
515
  }
277
516
  catch (e) {
278
- console.warn(`[plugins] Failed to persist field types for ${name}:`, e);
517
+ throw new Error(`Failed to persist field types for ${name}: ${e instanceof Error ? e.message : String(e)}`);
279
518
  }
280
519
  }
281
520
  }
282
521
  else {
283
- scope.plugins.set(name, { registrations });
522
+ scope.plugins.set(name, { registrations, manifest: entry.manifest });
284
523
  }
285
524
  result.loaded.push(name);
286
525
  }
287
526
  catch (error) {
288
- // Isolamento de falha: plugin quebrado não impede os demais nem o boot
527
+ if (internal)
528
+ await internal.cleanup();
529
+ if (internal)
530
+ internal.reset();
531
+ for (const reg of registrations) {
532
+ if (reg.type === 'action')
533
+ registry.removeAction(reg.name, reg.callback, reg.priority);
534
+ else
535
+ registry.removeFilter(reg.name, reg.callback, reg.priority);
536
+ }
537
+ // Failure isolation: a broken plugin never blocks the others or the boot
289
538
  result.failed.push({ name, error: error instanceof Error ? error.message : String(error) });
290
539
  }
291
540
  }
@@ -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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"}
@@ -0,0 +1,29 @@
1
+ declare const OPERATORS: Record<string, string>;
2
+ export interface ContentQueryFilter {
3
+ field: string;
4
+ op: keyof typeof OPERATORS | 'in';
5
+ value: unknown;
6
+ }
7
+ export declare class ContentQueryBuilder {
8
+ private readonly executeFn;
9
+ private filters;
10
+ private order;
11
+ private limitValue;
12
+ private offsetValue;
13
+ constructor(executeFn: (query: string, params?: unknown[]) => Promise<unknown[]>);
14
+ /** Adds a single-value condition (field must be an allowlisted column). */
15
+ where(field: string, op: keyof typeof OPERATORS, value: unknown): this;
16
+ /** Adds an IN condition over an array of values. */
17
+ whereIn(field: string, values: readonly unknown[]): this;
18
+ orderBy(field: string, dir?: 'asc' | 'desc'): this;
19
+ limit(n: number): this;
20
+ offset(n: number): this;
21
+ /** Renders the parameterized SQL + params (exported for tests/debug). */
22
+ build(): {
23
+ sql: string;
24
+ params: unknown[];
25
+ };
26
+ execute(): Promise<unknown[]>;
27
+ }
28
+ export {};
29
+ //# sourceMappingURL=content-query.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content-query.d.ts","sourceRoot":"","sources":["../src/content-query.ts"],"names":[],"mappings":"AAuBA,QAAA,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAQrC,CAAC;AAEF,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,OAAO,SAAS,GAAG,IAAI,CAAC;IAClC,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,qBAAa,mBAAmB;IAMlB,OAAO,CAAC,QAAQ,CAAC,SAAS;IALtC,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,KAAK,CAAqD;IAClE,OAAO,CAAC,UAAU,CAAM;IACxB,OAAO,CAAC,WAAW,CAAK;gBAEK,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC;IAEjG,2EAA2E;IAC3E,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,OAAO,SAAS,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAWtE,oDAAoD;IACpD,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,OAAO,EAAE,GAAG,IAAI;IAWxD,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,GAAE,KAAK,GAAG,MAAe,GAAG,IAAI;IAQ1D,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAQtB,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAQvB,yEAAyE;IACzE,KAAK,IAAI;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,EAAE,CAAA;KAAE;IAuB3C,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;CAI9B"}