@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.
- package/dist/bootstrap.d.ts +90 -22
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +301 -52
- package/dist/bootstrap.js.map +1 -1
- package/dist/content-query.d.ts +29 -0
- package/dist/content-query.d.ts.map +1 -0
- package/dist/content-query.js +109 -0
- package/dist/content-query.js.map +1 -0
- package/dist/hook-registry.d.ts +21 -21
- package/dist/hook-registry.d.ts.map +1 -1
- package/dist/hook-registry.js +26 -26
- package/dist/hook-registry.js.map +1 -1
- package/dist/http.d.ts +50 -0
- package/dist/http.d.ts.map +1 -0
- package/dist/http.js +314 -0
- package/dist/http.js.map +1 -0
- package/dist/i18n.d.ts +16 -0
- package/dist/i18n.d.ts.map +1 -0
- package/dist/i18n.js +73 -0
- package/dist/i18n.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/loader.d.ts +8 -0
- package/dist/loader.d.ts.map +1 -1
- package/dist/loader.js +98 -10
- package/dist/loader.js.map +1 -1
- package/dist/manifest.d.ts +11 -6
- package/dist/manifest.d.ts.map +1 -1
- package/dist/manifest.js +290 -17
- package/dist/manifest.js.map +1 -1
- package/dist/plugin-api.d.ts +194 -40
- package/dist/plugin-api.d.ts.map +1 -1
- package/dist/plugin-api.js +655 -13
- package/dist/plugin-api.js.map +1 -1
- package/dist/plugin-migrations.d.ts +15 -0
- package/dist/plugin-migrations.d.ts.map +1 -0
- package/dist/plugin-migrations.js +68 -0
- package/dist/plugin-migrations.js.map +1 -0
- package/dist/sandbox.d.ts +13 -11
- package/dist/sandbox.d.ts.map +1 -1
- package/dist/sandbox.js +11 -9
- package/dist/sandbox.js.map +1 -1
- package/dist/style-isolation.d.ts +3 -3
- package/dist/style-isolation.js +6 -6
- package/dist/style-isolation.js.map +1 -1
- package/package.json +6 -5
package/dist/plugin-api.d.ts
CHANGED
|
@@ -1,23 +1,25 @@
|
|
|
1
1
|
import type { HookRegistryLike } from '@oktis-works/plugin-sdk';
|
|
2
|
-
import type { PluginManifest, PluginFieldTypeManifest } from '@oktis-works/plugin-sdk';
|
|
3
|
-
/**
|
|
2
|
+
import type { PluginManifest, PluginFieldTypeManifest, PluginPostTypeDeclaration, PluginTaxonomyDeclaration, PluginBlockManifest, PluginPatternManifest, PluginCacheApi, PluginJobsApi, PluginJobHandler, PluginHttpApi, PluginAdminApi, PluginRolesApi, PluginAssetsApi, PluginI18nApi, PluginHealthApi, PluginHealthCheck, PluginMailApi, PluginContentApi, EnqueuedAsset, AdminExtensionsState } from '@oktis-works/plugin-sdk';
|
|
3
|
+
/** Context available to the plugin on every hook execution. */
|
|
4
4
|
export interface PluginContext {
|
|
5
5
|
tenantId: string;
|
|
6
6
|
userId: string;
|
|
7
7
|
requestId: string;
|
|
8
8
|
api: PluginAPI;
|
|
9
9
|
}
|
|
10
|
-
/**
|
|
10
|
+
/** Route definition registered by the plugin. */
|
|
11
11
|
export interface RouteDefinition {
|
|
12
12
|
method: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS';
|
|
13
13
|
path: string;
|
|
14
|
+
/** Private by default; public routes must opt in explicitly. */
|
|
15
|
+
public?: boolean;
|
|
14
16
|
handler: (c: any, api: PluginAPI) => Promise<Response> | Response;
|
|
15
17
|
/** Middlewares opcionais (ex.: auth, rate-limit). */
|
|
16
18
|
middleware?: Array<(c: any, next: () => Promise<void>) => Promise<void>>;
|
|
17
|
-
/**
|
|
19
|
+
/** Permissions required to access this route. */
|
|
18
20
|
requiredPermissions?: string[];
|
|
19
21
|
}
|
|
20
|
-
/**
|
|
22
|
+
/** Tenant configuration (for getTenant). */
|
|
21
23
|
export interface TenantInfo {
|
|
22
24
|
id: string;
|
|
23
25
|
name: string;
|
|
@@ -25,20 +27,22 @@ export interface TenantInfo {
|
|
|
25
27
|
domain?: string | null;
|
|
26
28
|
subdomain?: string | null;
|
|
27
29
|
}
|
|
28
|
-
/**
|
|
30
|
+
/** User info (for getUser). */
|
|
29
31
|
export interface UserInfo {
|
|
30
32
|
id: string;
|
|
31
33
|
email: string;
|
|
32
34
|
name: string;
|
|
33
35
|
roles?: string[];
|
|
34
36
|
}
|
|
35
|
-
/** API
|
|
37
|
+
/** API exposed to plugins — implemented by the core and passed via the factory. */
|
|
36
38
|
export interface PluginAPI {
|
|
37
|
-
/**
|
|
39
|
+
/** Registers a lifecycle hook (onInstall, onActivate, etc.). */
|
|
38
40
|
registerHook(type: string, handler: (context: PluginContext, payload: unknown) => void | Promise<void>): void;
|
|
39
|
-
/**
|
|
41
|
+
/** Registers an HTTP route exposed by the plugin. */
|
|
40
42
|
addRoute(route: RouteDefinition): void;
|
|
41
|
-
/**
|
|
43
|
+
/** Compatibility batch alias for addRoute. */
|
|
44
|
+
registerRoutes(routes: RouteDefinition[]): void;
|
|
45
|
+
/** Registers a custom content field. */
|
|
42
46
|
addContentField(field: {
|
|
43
47
|
name: string;
|
|
44
48
|
type: string;
|
|
@@ -46,21 +50,49 @@ export interface PluginAPI {
|
|
|
46
50
|
required?: boolean;
|
|
47
51
|
options?: Record<string, unknown>;
|
|
48
52
|
}): void;
|
|
49
|
-
/**
|
|
53
|
+
/** Registers a new custom field type. */
|
|
50
54
|
addFieldType(definition: PluginFieldTypeManifest): void;
|
|
51
|
-
/**
|
|
55
|
+
/** Registers a Custom Post Type (permission post-types:register). */
|
|
56
|
+
addPostType(declaration: PluginPostTypeDeclaration): void;
|
|
57
|
+
/** Registers a Custom Taxonomy (permission taxonomies:register). */
|
|
58
|
+
addTaxonomy(declaration: PluginTaxonomyDeclaration): void;
|
|
59
|
+
/** Registers an editor block (permission blocks:register). Data plane: no table — lives while the plugin is active. */
|
|
60
|
+
registerBlock(block: PluginBlockManifest): void;
|
|
61
|
+
/** Registers an editor pattern (permission patterns:register). Data plane: no table — lives while the plugin is active. */
|
|
62
|
+
registerPattern(pattern: PluginPatternManifest): void;
|
|
63
|
+
/** Per-plugin cache/transient (permissions cache:read/cache:write). */
|
|
64
|
+
readonly cache: PluginCacheApi;
|
|
65
|
+
/** Per-plugin jobs/cron (permission jobs:schedule). */
|
|
66
|
+
readonly jobs: PluginJobsApi;
|
|
67
|
+
/** External HTTP protected against SSRF (permission http:outbound). */
|
|
68
|
+
readonly http: PluginHttpApi;
|
|
69
|
+
/** Slots declarativos do admin (FEAT-098 / DECI-027). */
|
|
70
|
+
readonly admin: PluginAdminApi;
|
|
71
|
+
/** Tenant role management (Item 6 — tenant scope, anti-escalation, audit). */
|
|
72
|
+
readonly roles: PluginRolesApi;
|
|
73
|
+
/** Public-site asset enqueue (Item 8 — permission assets:enqueue). */
|
|
74
|
+
readonly assets: PluginAssetsApi;
|
|
75
|
+
/** Server-side translations (Item 9 — fallback chain locale → base → en). */
|
|
76
|
+
readonly i18n: PluginI18nApi;
|
|
77
|
+
/** Health checks aggregated in /health (Item 14 — permission health:register). */
|
|
78
|
+
readonly health: PluginHealthApi;
|
|
79
|
+
/** Mail sending via the outbox (Item 12 — permission mail:send). */
|
|
80
|
+
readonly mail: PluginMailApi;
|
|
81
|
+
/** Typed content query builder (Item 22 — permission db:query). */
|
|
82
|
+
readonly content: PluginContentApi;
|
|
83
|
+
/** Reads a tenant setting (group/key). */
|
|
52
84
|
getSetting(key: string, group?: string): Promise<unknown>;
|
|
53
|
-
/**
|
|
85
|
+
/** Writes a tenant setting. */
|
|
54
86
|
setSetting(key: string, value: unknown, group?: string): Promise<void>;
|
|
55
|
-
/**
|
|
87
|
+
/** Current tenant info. */
|
|
56
88
|
getTenant(): Promise<TenantInfo>;
|
|
57
|
-
/**
|
|
89
|
+
/** Current user info. */
|
|
58
90
|
getUser(): Promise<UserInfo>;
|
|
59
|
-
/**
|
|
91
|
+
/** Executes SQL with tenant RLS (WP8). */
|
|
60
92
|
query(sql: string, params?: unknown[]): Promise<unknown[]>;
|
|
61
|
-
/**
|
|
93
|
+
/** Emits an event on the internal bus. */
|
|
62
94
|
emit(eventType: string, payload: Record<string, unknown>): Promise<void>;
|
|
63
|
-
/**
|
|
95
|
+
/** WordPress-style hooks (actions/filters) — kept for compatibility. */
|
|
64
96
|
addAction(action: string, callback: (...args: unknown[]) => unknown, options?: {
|
|
65
97
|
priority?: number;
|
|
66
98
|
acceptedArgs?: number;
|
|
@@ -76,18 +108,18 @@ export interface PluginAPI {
|
|
|
76
108
|
didAction(action: string): number;
|
|
77
109
|
currentHook(): string | null;
|
|
78
110
|
}
|
|
79
|
-
/**
|
|
111
|
+
/** Dependencies the core must provide to create the real API. */
|
|
80
112
|
export interface PluginApiDependencies {
|
|
81
|
-
/**
|
|
113
|
+
/** Hook registry of the scope (tenant or platform). */
|
|
82
114
|
hooks: HookRegistryLike;
|
|
83
|
-
/**
|
|
115
|
+
/** Plugin manifest (to validate permissions on query). */
|
|
84
116
|
manifest: PluginManifest;
|
|
85
|
-
/**
|
|
117
|
+
/** Settings service (get/set by group/key). */
|
|
86
118
|
settings: {
|
|
87
119
|
get(key: string, group?: string): Promise<unknown>;
|
|
88
120
|
set(key: string, value: unknown, group?: string): Promise<void>;
|
|
89
121
|
};
|
|
90
|
-
/**
|
|
122
|
+
/** Internal event bus. */
|
|
91
123
|
eventBus: {
|
|
92
124
|
emit(event: {
|
|
93
125
|
id: string;
|
|
@@ -100,47 +132,142 @@ export interface PluginApiDependencies {
|
|
|
100
132
|
createdAt: Date;
|
|
101
133
|
}): Promise<void>;
|
|
102
134
|
};
|
|
103
|
-
/**
|
|
135
|
+
/** PostgreSQL connection with RLS already configured for the tenant. */
|
|
104
136
|
db: {
|
|
105
137
|
query(sql: string, params?: unknown[]): Promise<unknown[]>;
|
|
106
138
|
};
|
|
107
|
-
/**
|
|
139
|
+
/** Current tenantId resolver (ALS). */
|
|
108
140
|
getTenantId: () => string | null;
|
|
109
|
-
/**
|
|
141
|
+
/** Current userId resolver (ALS). */
|
|
110
142
|
getUserId: () => string | null;
|
|
111
|
-
/**
|
|
143
|
+
/** Current requestId resolver (ALS). */
|
|
112
144
|
getRequestId: () => string | null;
|
|
113
|
-
/**
|
|
145
|
+
/** Tenant lookup by id (for getTenant). */
|
|
114
146
|
getTenantById: (id: string) => Promise<TenantInfo | null>;
|
|
115
|
-
/**
|
|
147
|
+
/** User lookup by id (for getUser). */
|
|
116
148
|
getUserById: (id: string) => Promise<UserInfo | null>;
|
|
117
|
-
/**
|
|
149
|
+
/** Registers plugin routes (the core mounts them on the API router). */
|
|
118
150
|
registerRoutes: (routes: RouteDefinition[]) => void;
|
|
119
|
-
/**
|
|
151
|
+
/** Registers plugin content fields (the core exposes them via field groups). */
|
|
120
152
|
registerContentFields: (fields: Array<{
|
|
121
153
|
name: string;
|
|
122
154
|
type: string;
|
|
123
155
|
label: string;
|
|
124
156
|
required?: boolean;
|
|
125
157
|
options?: Record<string, unknown>;
|
|
126
|
-
}
|
|
127
|
-
/**
|
|
158
|
+
}>, pluginName?: string) => void | Promise<void>;
|
|
159
|
+
/** Registers plugin field types (the core exposes them via the registry). */
|
|
128
160
|
registerFieldTypes: (fieldTypes: PluginFieldTypeManifest[]) => void;
|
|
129
|
-
/**
|
|
161
|
+
/** Registers plugin Custom Post Types (the core persists via postTypeRegistry). */
|
|
162
|
+
registerPostTypes?: (postTypes: Array<PluginPostTypeDeclaration & {
|
|
163
|
+
pluginName: string;
|
|
164
|
+
}>) => void;
|
|
165
|
+
/** Registers plugin Custom Taxonomies (the core persists via taxonomyService). */
|
|
166
|
+
registerTaxonomies?: (taxonomies: Array<PluginTaxonomyDeclaration & {
|
|
167
|
+
pluginName: string;
|
|
168
|
+
}>) => void;
|
|
169
|
+
/**
|
|
170
|
+
* Core cache backend (Redis/memory) — RAW operations, no namespace (the
|
|
171
|
+
* plugin/tenant namespace and tags belong to the PluginAPI).
|
|
172
|
+
* Absent → per-process memory fallback (dev/legacy, never throws).
|
|
173
|
+
*/
|
|
174
|
+
cache?: {
|
|
175
|
+
get<T>(key: string): Promise<T | null>;
|
|
176
|
+
set<T>(key: string, value: T, ttlSeconds?: number): Promise<void>;
|
|
177
|
+
del(key: string): Promise<void>;
|
|
178
|
+
};
|
|
179
|
+
/**
|
|
180
|
+
* Core jobs backend (`plugins` queue). Absent → schedule/enqueue/cancel
|
|
181
|
+
* return false (optional queue, never throws — degradation A3).
|
|
182
|
+
*/
|
|
183
|
+
jobs?: {
|
|
184
|
+
schedule(jobName: string, spec: {
|
|
185
|
+
every?: number;
|
|
186
|
+
cron?: string;
|
|
187
|
+
}, ctx: {
|
|
188
|
+
pluginName: string;
|
|
189
|
+
tenantId: string | null;
|
|
190
|
+
}): Promise<boolean>;
|
|
191
|
+
cancel(jobName: string, ctx: {
|
|
192
|
+
pluginName: string;
|
|
193
|
+
tenantId: string | null;
|
|
194
|
+
}): Promise<boolean>;
|
|
195
|
+
enqueue(jobName: string, payload: Record<string, unknown>, ctx: {
|
|
196
|
+
pluginName: string;
|
|
197
|
+
tenantId: string | null;
|
|
198
|
+
}): Promise<boolean>;
|
|
199
|
+
};
|
|
200
|
+
/** Permissions granted to the plugin (already-resolved policy). */
|
|
130
201
|
allowedPermissions: string[];
|
|
202
|
+
/**
|
|
203
|
+
* Backend de roles do core (Item 6 — persiste + audita com anti-escalada).
|
|
204
|
+
* Absent → api.roles throws a clear error (backend not wired).
|
|
205
|
+
*/
|
|
206
|
+
roles?: {
|
|
207
|
+
add(input: {
|
|
208
|
+
tenantId: string;
|
|
209
|
+
pluginName: string;
|
|
210
|
+
name: string;
|
|
211
|
+
slug?: string;
|
|
212
|
+
permissions?: string[];
|
|
213
|
+
}): Promise<{
|
|
214
|
+
id: string;
|
|
215
|
+
name: string;
|
|
216
|
+
slug: string;
|
|
217
|
+
permissions: string[];
|
|
218
|
+
}>;
|
|
219
|
+
remove(input: {
|
|
220
|
+
tenantId: string;
|
|
221
|
+
pluginName: string;
|
|
222
|
+
slug: string;
|
|
223
|
+
}): Promise<boolean>;
|
|
224
|
+
addPermission(input: {
|
|
225
|
+
tenantId: string;
|
|
226
|
+
pluginName: string;
|
|
227
|
+
slug: string;
|
|
228
|
+
permission: string;
|
|
229
|
+
}): Promise<boolean>;
|
|
230
|
+
};
|
|
231
|
+
/**
|
|
232
|
+
* Backend de mail do core (Item 12 — outbox + rate limit + audit).
|
|
233
|
+
* Absent → api.mail.send returns false (queue unavailable, like jobs).
|
|
234
|
+
*/
|
|
235
|
+
mail?: {
|
|
236
|
+
send(input: {
|
|
237
|
+
tenantId: string | null;
|
|
238
|
+
pluginName: string;
|
|
239
|
+
to: string;
|
|
240
|
+
subject: string;
|
|
241
|
+
html?: string;
|
|
242
|
+
text?: string;
|
|
243
|
+
template?: string;
|
|
244
|
+
params?: Record<string, unknown>;
|
|
245
|
+
}): Promise<boolean>;
|
|
246
|
+
};
|
|
247
|
+
/**
|
|
248
|
+
* Audit backend (Item 18 — sensitive plugin operations → audit_log).
|
|
249
|
+
* Ausente → sem auditoria (degrada silenciosamente, nunca bloqueia).
|
|
250
|
+
*/
|
|
251
|
+
audit?: {
|
|
252
|
+
record(entry: {
|
|
253
|
+
tenantId?: string | null;
|
|
254
|
+
action: string;
|
|
255
|
+
resourceType: string;
|
|
256
|
+
resourceId?: string;
|
|
257
|
+
changes?: Record<string, unknown>;
|
|
258
|
+
}): Promise<void>;
|
|
259
|
+
};
|
|
131
260
|
}
|
|
132
|
-
/**
|
|
133
|
-
|
|
134
|
-
* Chamado pelo core no bootstrap (não pelo plugin-runtime diretamente).
|
|
135
|
-
* Retorna { api: PluginAPI, internal: PluginApiInternal } para separar a API pública dos detalhes internos.
|
|
136
|
-
*/
|
|
261
|
+
/** Normalizes and validates a plugin route before it enters the registry. */
|
|
262
|
+
export declare function normalizePluginRoutePath(value: string): string;
|
|
137
263
|
export declare function createPluginApi(deps: PluginApiDependencies): {
|
|
138
264
|
api: PluginAPI;
|
|
139
265
|
internal: PluginApiInternal;
|
|
140
266
|
};
|
|
141
|
-
/**
|
|
267
|
+
/** Type for the core to access internally registered routes/fields. */
|
|
142
268
|
export interface PluginApiInternal {
|
|
143
269
|
getRoutes: () => RouteDefinition[];
|
|
270
|
+
getApi: () => PluginAPI;
|
|
144
271
|
getFields: () => Array<{
|
|
145
272
|
name: string;
|
|
146
273
|
type: string;
|
|
@@ -152,5 +279,32 @@ export interface PluginApiInternal {
|
|
|
152
279
|
pluginName: string;
|
|
153
280
|
isPluginType: true;
|
|
154
281
|
}>;
|
|
282
|
+
getPostTypes: () => Array<PluginPostTypeDeclaration & {
|
|
283
|
+
pluginName: string;
|
|
284
|
+
}>;
|
|
285
|
+
getTaxonomies: () => Array<PluginTaxonomyDeclaration & {
|
|
286
|
+
pluginName: string;
|
|
287
|
+
}>;
|
|
288
|
+
/** Job handlers declared via api.jobs.on (dispatched by the worker). */
|
|
289
|
+
getJobHandlers: () => Map<string, PluginJobHandler>;
|
|
290
|
+
/** Declarative slots registered at runtime via api.admin.*. */
|
|
291
|
+
getAdminState: () => AdminExtensionsState;
|
|
292
|
+
/** Blocos do editor registrados em runtime via api.registerBlock. */
|
|
293
|
+
getBlocks: () => Array<PluginBlockManifest & {
|
|
294
|
+
pluginName: string;
|
|
295
|
+
}>;
|
|
296
|
+
/** Patterns do editor registrados em runtime via api.registerPattern. */
|
|
297
|
+
getPatterns: () => Array<PluginPatternManifest & {
|
|
298
|
+
pluginName: string;
|
|
299
|
+
}>;
|
|
300
|
+
/** Assets enfileirados em runtime via api.assets (Item 8). */
|
|
301
|
+
getEnqueuedAssets: () => EnqueuedAsset[];
|
|
302
|
+
/** Health checks registrados em runtime via api.health (Item 14). */
|
|
303
|
+
getHealthChecks: () => Array<{
|
|
304
|
+
name: string;
|
|
305
|
+
check: PluginHealthCheck;
|
|
306
|
+
}>;
|
|
307
|
+
cleanup: () => Promise<void>;
|
|
308
|
+
reset: () => void;
|
|
155
309
|
}
|
|
156
310
|
//# sourceMappingURL=plugin-api.d.ts.map
|
package/dist/plugin-api.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-api.d.ts","sourceRoot":"","sources":["../src/plugin-api.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"plugin-api.d.ts","sourceRoot":"","sources":["../src/plugin-api.ts"],"names":[],"mappings":"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"}
|