@voilabs/plugins 0.0.1-beta.0

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 (46) hide show
  1. package/README.md +634 -0
  2. package/dist/adapters/elysia.d.ts +31 -0
  3. package/dist/adapters/elysia.d.ts.map +1 -0
  4. package/dist/adapters/elysia.js +28 -0
  5. package/dist/adapters/elysia.js.map +1 -0
  6. package/dist/adapters/next.d.ts +25 -0
  7. package/dist/adapters/next.d.ts.map +1 -0
  8. package/dist/adapters/next.js +51 -0
  9. package/dist/adapters/next.js.map +1 -0
  10. package/dist/client.d.ts +33 -0
  11. package/dist/client.d.ts.map +1 -0
  12. package/dist/client.js +123 -0
  13. package/dist/client.js.map +1 -0
  14. package/dist/examples/lumina.d.ts +9 -0
  15. package/dist/examples/lumina.d.ts.map +1 -0
  16. package/dist/examples/lumina.js +197 -0
  17. package/dist/examples/lumina.js.map +1 -0
  18. package/dist/http.d.ts +19 -0
  19. package/dist/http.d.ts.map +1 -0
  20. package/dist/http.js +523 -0
  21. package/dist/http.js.map +1 -0
  22. package/dist/index.d.ts +7 -0
  23. package/dist/index.d.ts.map +1 -0
  24. package/dist/index.js +7 -0
  25. package/dist/index.js.map +1 -0
  26. package/dist/injection.d.ts +10 -0
  27. package/dist/injection.d.ts.map +1 -0
  28. package/dist/injection.js +174 -0
  29. package/dist/injection.js.map +1 -0
  30. package/dist/manager.d.ts +121 -0
  31. package/dist/manager.d.ts.map +1 -0
  32. package/dist/manager.js +1006 -0
  33. package/dist/manager.js.map +1 -0
  34. package/dist/plugin.d.ts +25 -0
  35. package/dist/plugin.d.ts.map +1 -0
  36. package/dist/plugin.js +209 -0
  37. package/dist/plugin.js.map +1 -0
  38. package/dist/react.d.ts +34 -0
  39. package/dist/react.d.ts.map +1 -0
  40. package/dist/react.js +88 -0
  41. package/dist/react.js.map +1 -0
  42. package/dist/types.d.ts +416 -0
  43. package/dist/types.d.ts.map +1 -0
  44. package/dist/types.js +2 -0
  45. package/dist/types.js.map +1 -0
  46. package/package.json +57 -0
package/dist/http.js ADDED
@@ -0,0 +1,523 @@
1
+ import { PluginConfigValidationError, PluginError, } from "./plugin.js";
2
+ import { PluginManager, PluginManagerError, PluginNotFoundError, PluginNotInstalledError, } from "./manager.js";
3
+ export function createPluginHttpHandler(manager, options = {}) {
4
+ const prefix = normalizePrefix(options.prefix ?? "/plugins");
5
+ return async (request) => {
6
+ try {
7
+ if (request.method === "OPTIONS" && options.cors) {
8
+ return withCors(new Response(null, { status: 204 }), request, options.cors);
9
+ }
10
+ const response = await routeRequest(manager, request, prefix, options);
11
+ return options.cors ? withCors(response, request, options.cors) : response;
12
+ }
13
+ catch (error) {
14
+ const response = errorResponse(error, options.exposeErrors ?? false);
15
+ return options.cors ? withCors(response, request, options.cors) : response;
16
+ }
17
+ };
18
+ }
19
+ async function routeRequest(manager, request, prefix, options) {
20
+ const url = new URL(request.url);
21
+ const restPath = stripPrefix(url.pathname, prefix);
22
+ if (restPath === null) {
23
+ return json({ error: "Not found" }, { status: 404 });
24
+ }
25
+ const tenantId = (await options.tenantIdResolver?.(request)) ??
26
+ url.searchParams.get("tenantId") ??
27
+ undefined;
28
+ const scope = { tenantId };
29
+ const method = request.method.toUpperCase();
30
+ const segments = splitPath(restPath);
31
+ if (segments.length === 0) {
32
+ if (method === "GET") {
33
+ return json(await manager.get({
34
+ page: parsePositiveInt(url.searchParams.get("page"), 1),
35
+ limit: parsePositiveInt(url.searchParams.get("limit"), 20),
36
+ query: url.searchParams.get("q") ?? url.searchParams.get("query") ?? undefined,
37
+ category: url.searchParams.get("category") ?? undefined,
38
+ provider: url.searchParams.get("provider") ?? undefined,
39
+ installed: parseBoolean(url.searchParams.get("installed")),
40
+ enabled: parseBoolean(url.searchParams.get("enabled")),
41
+ tenantId,
42
+ }));
43
+ }
44
+ return methodNotAllowed(["GET"]);
45
+ }
46
+ if (segments[0] === "sync" && method === "POST") {
47
+ return json(await manager.syncMarketplaces({ force: true }));
48
+ }
49
+ await manager.ready();
50
+ if (segments[0] === "injections" && method === "GET") {
51
+ const placement = segments[1] ?? url.searchParams.get("placement") ?? undefined;
52
+ const area = url.searchParams.get("area") ?? undefined;
53
+ const injections = await manager.getInjections({
54
+ tenantId,
55
+ placement,
56
+ area,
57
+ request,
58
+ url,
59
+ path: url.pathname,
60
+ nonce: url.searchParams.get("nonce") ?? undefined,
61
+ });
62
+ return json({
63
+ data: injections,
64
+ html: await manager.renderInjections({
65
+ tenantId,
66
+ placement,
67
+ area,
68
+ request,
69
+ url,
70
+ path: url.pathname,
71
+ nonce: url.searchParams.get("nonce") ?? undefined,
72
+ }),
73
+ });
74
+ }
75
+ const [pluginId, action] = segments;
76
+ if (!pluginId) {
77
+ return json({ error: "Plugin id is required." }, { status: 400 });
78
+ }
79
+ if (segments.length === 1 && method === "GET") {
80
+ return json(await manager.getPluginView(pluginId, scope));
81
+ }
82
+ if (action === "routes" && method === "GET") {
83
+ return json(manager.require(pluginId).toManifest().routes);
84
+ }
85
+ if (action === "components" && method === "GET") {
86
+ const slot = url.searchParams.get("slot") ?? undefined;
87
+ return json(manager
88
+ .getFrontendComponents(slot)
89
+ .filter((component) => component.pluginId === pluginId));
90
+ }
91
+ if (action === "meta-tags" && method === "GET") {
92
+ return json(manager.getAdditionalMetaTags(pluginId));
93
+ }
94
+ if (action === "install" && method === "POST") {
95
+ const body = await readBody(request);
96
+ const payload = isRecord(body) ? body : {};
97
+ const installation = await manager.install(pluginId, isRecord(payload.config) ? payload.config : payload, {
98
+ tenantId,
99
+ enabled: typeof payload.enabled === "boolean" ? payload.enabled : undefined,
100
+ meta: isRecord(payload.meta) ? payload.meta : undefined,
101
+ });
102
+ return json({ installation: installationSummary(installation) }, { status: 201 });
103
+ }
104
+ if (action === "config" && method === "PATCH") {
105
+ const body = await readBody(request);
106
+ const payload = isRecord(body) ? body : {};
107
+ const installation = await manager.updateConfig(pluginId, isRecord(payload.config) ? payload.config : payload, {
108
+ tenantId,
109
+ merge: typeof payload.merge === "boolean" ? payload.merge : undefined,
110
+ meta: isRecord(payload.meta) ? payload.meta : undefined,
111
+ });
112
+ return json({ installation: installationSummary(installation) });
113
+ }
114
+ if (action === "enable" && method === "POST") {
115
+ return json({ installation: installationSummary(await manager.enable(pluginId, scope)) });
116
+ }
117
+ if (action === "disable" && method === "POST") {
118
+ return json({ installation: installationSummary(await manager.disable(pluginId, scope)) });
119
+ }
120
+ if (segments.length === 1 && method === "DELETE") {
121
+ await manager.uninstall(pluginId, scope);
122
+ return json({ ok: true });
123
+ }
124
+ return handlePluginRoute(manager, request, method, segments, scope, options);
125
+ }
126
+ async function handlePluginRoute(manager, request, method, segments, scope, options) {
127
+ const [pluginId, ...pathSegments] = segments;
128
+ if (!pluginId) {
129
+ return json({ error: "Plugin id is required." }, { status: 400 });
130
+ }
131
+ const plugin = manager.require(pluginId);
132
+ const routePath = `/${pathSegments.join("/")}`;
133
+ const route = findPluginRoute(plugin.routes, method, routePath);
134
+ if (!route) {
135
+ return json({ error: "Not found" }, { status: 404 });
136
+ }
137
+ const installation = await manager.getInstallation(pluginId, scope);
138
+ const isDeclarativeRoute = Boolean(route.route.response || route.route.redirect || route.route.proxy);
139
+ if ((route.route.requiresInstallation ?? isDeclarativeRoute) && !installation) {
140
+ return json({ error: "Plugin is not installed." }, { status: 403 });
141
+ }
142
+ if ((route.route.requiresEnabled ?? isDeclarativeRoute) && !installation?.enabled) {
143
+ return json({ error: "Plugin is disabled." }, { status: 403 });
144
+ }
145
+ const context = {
146
+ request,
147
+ url: new URL(request.url),
148
+ method,
149
+ params: route.params,
150
+ query: new URL(request.url).searchParams,
151
+ body: await readBody(request),
152
+ manager,
153
+ plugin,
154
+ installation,
155
+ config: await manager.getInstallationConfig(pluginId, scope),
156
+ locals: (await options.locals?.(request)) ?? {},
157
+ };
158
+ if (route.route.handler) {
159
+ const result = await route.route.handler(context);
160
+ return routeResultToResponse(result);
161
+ }
162
+ if (route.route.response) {
163
+ return staticRouteResponse(route.route.response, context);
164
+ }
165
+ if (route.route.redirect) {
166
+ return redirectRouteResponse(route.route.redirect.to, {
167
+ status: route.route.redirect.status ?? 302,
168
+ headers: route.route.redirect.headers,
169
+ context,
170
+ });
171
+ }
172
+ if (route.route.proxy) {
173
+ return proxyRouteResponse(route.route.proxy, context);
174
+ }
175
+ return json({ error: "Route has no server handler or route action." }, { status: 501 });
176
+ }
177
+ function findPluginRoute(routes, method, path) {
178
+ for (const route of routes) {
179
+ if (route.method !== "ANY" && route.method !== method) {
180
+ continue;
181
+ }
182
+ const params = matchPath(route.path, path);
183
+ if (params) {
184
+ return { route, params };
185
+ }
186
+ }
187
+ return null;
188
+ }
189
+ function matchPath(pattern, actual) {
190
+ const patternSegments = splitPath(pattern);
191
+ const actualSegments = splitPath(actual);
192
+ const params = {};
193
+ for (let index = 0; index < patternSegments.length; index += 1) {
194
+ const patternSegment = patternSegments[index];
195
+ const actualSegment = actualSegments[index];
196
+ if (patternSegment === undefined) {
197
+ return null;
198
+ }
199
+ if (patternSegment === "*") {
200
+ params["*"] = actualSegments.slice(index).map(decodeURIComponent).join("/");
201
+ return params;
202
+ }
203
+ if (actualSegment === undefined) {
204
+ return null;
205
+ }
206
+ if (patternSegment.startsWith(":")) {
207
+ params[patternSegment.slice(1)] = decodeURIComponent(actualSegment);
208
+ continue;
209
+ }
210
+ if (patternSegment !== actualSegment) {
211
+ return null;
212
+ }
213
+ }
214
+ return patternSegments.length === actualSegments.length ? params : null;
215
+ }
216
+ async function readBody(request) {
217
+ if (request.method === "GET" || request.method === "HEAD") {
218
+ return undefined;
219
+ }
220
+ const contentType = request.headers.get("content-type") ?? "";
221
+ if (contentType.includes("application/json")) {
222
+ return request.json();
223
+ }
224
+ if (contentType.includes("application/x-www-form-urlencoded")) {
225
+ const formData = await request.formData();
226
+ return Object.fromEntries(formData.entries());
227
+ }
228
+ if (contentType.includes("multipart/form-data")) {
229
+ return request.formData();
230
+ }
231
+ if (contentType.startsWith("text/")) {
232
+ return request.text();
233
+ }
234
+ const buffer = await request.arrayBuffer();
235
+ return buffer.byteLength ? buffer : undefined;
236
+ }
237
+ function routeResultToResponse(result) {
238
+ if (result instanceof Response) {
239
+ return result;
240
+ }
241
+ if (isRouteResponse(result)) {
242
+ return json(result.body ?? null, {
243
+ status: result.status ?? 200,
244
+ headers: result.headers,
245
+ });
246
+ }
247
+ return json(result ?? null);
248
+ }
249
+ function staticRouteResponse(response, context) {
250
+ const headers = new Headers(renderStringRecord(response.headers, context));
251
+ const body = renderTemplateValue(response.body ?? null, context);
252
+ const status = response.status ?? 200;
253
+ if (response.contentType) {
254
+ headers.set("content-type", response.contentType);
255
+ }
256
+ if (body === null || body === undefined) {
257
+ return new Response(null, { status, headers });
258
+ }
259
+ if (typeof body === "string") {
260
+ if (!headers.has("content-type")) {
261
+ headers.set("content-type", "text/plain; charset=utf-8");
262
+ }
263
+ return new Response(body, { status, headers });
264
+ }
265
+ return json(body, { status, headers });
266
+ }
267
+ function redirectRouteResponse(to, options) {
268
+ const headers = new Headers(renderStringRecord(options.headers, options.context));
269
+ headers.set("location", renderTemplateString(to, options.context));
270
+ return new Response(null, {
271
+ status: options.status,
272
+ headers,
273
+ });
274
+ }
275
+ async function proxyRouteResponse(proxy, context) {
276
+ if (!globalThis.fetch) {
277
+ return json({ error: "No fetch implementation is available." }, { status: 500 });
278
+ }
279
+ const url = buildProxyUrl(proxy, context);
280
+ const method = !proxy.method || proxy.method === "inherit" ? context.method : proxy.method;
281
+ const headers = buildProxyHeaders(proxy, context);
282
+ const controller = proxy.timeoutMs ? new AbortController() : undefined;
283
+ const timeout = proxy.timeoutMs && controller
284
+ ? setTimeout(() => controller.abort(), proxy.timeoutMs)
285
+ : undefined;
286
+ try {
287
+ const response = await fetch(url, {
288
+ method,
289
+ headers,
290
+ body: buildProxyBody(proxy, context, method, headers),
291
+ signal: controller?.signal,
292
+ });
293
+ return response;
294
+ }
295
+ finally {
296
+ if (timeout !== undefined) {
297
+ clearTimeout(timeout);
298
+ }
299
+ }
300
+ }
301
+ function buildProxyUrl(proxy, context) {
302
+ const url = new URL(renderTemplateString(proxy.url, context));
303
+ if (proxy.appendWildcardPath && context.params["*"]) {
304
+ url.pathname = `${url.pathname.replace(/\/+$/, "")}/${context.params["*"].replace(/^\/+/, "")}`;
305
+ }
306
+ if (proxy.forwardQuery) {
307
+ context.query.forEach((value, key) => {
308
+ url.searchParams.append(key, value);
309
+ });
310
+ }
311
+ for (const [key, value] of Object.entries(proxy.query ?? {})) {
312
+ const rendered = renderTemplateValue(value, context);
313
+ if (rendered !== undefined && rendered !== null) {
314
+ url.searchParams.set(key, String(rendered));
315
+ }
316
+ }
317
+ return url.toString();
318
+ }
319
+ function buildProxyHeaders(proxy, context) {
320
+ const headers = new Headers(renderStringRecord(proxy.headers, context));
321
+ for (const header of proxy.forwardHeaders ?? []) {
322
+ const value = context.request.headers.get(header);
323
+ if (value !== null) {
324
+ headers.set(header, value);
325
+ }
326
+ }
327
+ return headers;
328
+ }
329
+ function buildProxyBody(proxy, context, method, headers) {
330
+ if (method === "GET" || method === "HEAD") {
331
+ return undefined;
332
+ }
333
+ const body = proxy.body !== undefined
334
+ ? renderTemplateValue(proxy.body, context)
335
+ : proxy.forwardBody === false
336
+ ? undefined
337
+ : context.body;
338
+ if (body === undefined || body === null) {
339
+ return undefined;
340
+ }
341
+ if (typeof body === "string" ||
342
+ body instanceof Blob ||
343
+ body instanceof FormData ||
344
+ body instanceof URLSearchParams ||
345
+ body instanceof ArrayBuffer) {
346
+ return body;
347
+ }
348
+ if (!headers.has("content-type")) {
349
+ headers.set("content-type", "application/json; charset=utf-8");
350
+ }
351
+ return JSON.stringify(body);
352
+ }
353
+ function isRouteResponse(value) {
354
+ return Boolean(value &&
355
+ typeof value === "object" &&
356
+ ("body" in value || "status" in value || "headers" in value));
357
+ }
358
+ function renderStringRecord(values, context) {
359
+ return Object.fromEntries(Object.entries(values ?? {}).map(([key, value]) => [
360
+ key,
361
+ renderTemplateString(value, context),
362
+ ]));
363
+ }
364
+ function renderTemplateValue(value, context) {
365
+ if (typeof value === "string") {
366
+ return renderTemplateString(value, context);
367
+ }
368
+ if (Array.isArray(value)) {
369
+ return value.map((item) => renderTemplateValue(item, context));
370
+ }
371
+ if (isRecord(value)) {
372
+ return Object.fromEntries(Object.entries(value).map(([key, item]) => [
373
+ key,
374
+ renderTemplateValue(item, context),
375
+ ]));
376
+ }
377
+ return value;
378
+ }
379
+ function renderTemplateString(value, context) {
380
+ return value.replace(/\{\{\s*([^}]+?)\s*\}\}/g, (_match, expression) => {
381
+ const resolved = resolveTemplatePath(String(expression), context);
382
+ return resolved === undefined || resolved === null ? "" : String(resolved);
383
+ });
384
+ }
385
+ function resolveTemplatePath(expression, context) {
386
+ const source = {
387
+ params: context.params,
388
+ query: Object.fromEntries(context.query.entries()),
389
+ body: context.body,
390
+ config: context.config,
391
+ tenantId: context.installation?.tenantId,
392
+ installation: context.installation,
393
+ locals: context.locals,
394
+ };
395
+ return expression
396
+ .split(".")
397
+ .map((part) => part.trim())
398
+ .filter(Boolean)
399
+ .reduce((current, key) => {
400
+ if (current && typeof current === "object" && key in current) {
401
+ return current[key];
402
+ }
403
+ return undefined;
404
+ }, source);
405
+ }
406
+ function json(body, init = {}) {
407
+ const headers = new Headers(init.headers);
408
+ if (!headers.has("content-type")) {
409
+ headers.set("content-type", "application/json; charset=utf-8");
410
+ }
411
+ return new Response(JSON.stringify(body), {
412
+ ...init,
413
+ headers,
414
+ });
415
+ }
416
+ function methodNotAllowed(methods) {
417
+ return json({ error: "Method not allowed" }, {
418
+ status: 405,
419
+ headers: {
420
+ allow: methods.join(", "),
421
+ },
422
+ });
423
+ }
424
+ function errorResponse(error, exposeErrors) {
425
+ if (error instanceof PluginConfigValidationError) {
426
+ return json({
427
+ error: "Validation failed",
428
+ issues: error.issues,
429
+ }, { status: 422 });
430
+ }
431
+ if (error instanceof PluginNotFoundError) {
432
+ return json({ error: error.message }, { status: 404 });
433
+ }
434
+ if (error instanceof PluginNotInstalledError) {
435
+ return json({ error: error.message }, { status: 404 });
436
+ }
437
+ if (error instanceof PluginError || error instanceof PluginManagerError) {
438
+ return json({ error: error.message }, { status: 400 });
439
+ }
440
+ return json({
441
+ error: exposeErrors ? String(error) : "Internal server error",
442
+ }, { status: 500 });
443
+ }
444
+ function withCors(response, request, cors) {
445
+ const options = typeof cors === "boolean" ? {} : cors;
446
+ const headers = new Headers(response.headers);
447
+ const requestOrigin = request.headers.get("origin");
448
+ const origin = resolveOrigin(options.origin, request, requestOrigin);
449
+ headers.set("access-control-allow-origin", origin ?? "*");
450
+ headers.set("access-control-allow-methods", (options.methods ?? ["GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS"]).join(", "));
451
+ headers.set("access-control-allow-headers", (options.headers ?? ["content-type", "authorization"]).join(", "));
452
+ if (options.credentials) {
453
+ headers.set("access-control-allow-credentials", "true");
454
+ }
455
+ if (options.maxAge !== undefined) {
456
+ headers.set("access-control-max-age", String(options.maxAge));
457
+ }
458
+ return new Response(response.body, {
459
+ status: response.status,
460
+ statusText: response.statusText,
461
+ headers,
462
+ });
463
+ }
464
+ function resolveOrigin(origin, request, requestOrigin) {
465
+ if (typeof origin === "function") {
466
+ return origin(request);
467
+ }
468
+ if (Array.isArray(origin)) {
469
+ return requestOrigin && origin.includes(requestOrigin) ? requestOrigin : origin[0];
470
+ }
471
+ return origin ?? requestOrigin;
472
+ }
473
+ function stripPrefix(pathname, prefix) {
474
+ if (pathname === prefix) {
475
+ return "/";
476
+ }
477
+ if (pathname.startsWith(`${prefix}/`)) {
478
+ return pathname.slice(prefix.length);
479
+ }
480
+ return null;
481
+ }
482
+ function splitPath(path) {
483
+ return path.split("/").filter(Boolean);
484
+ }
485
+ function normalizePrefix(prefix) {
486
+ const normalized = prefix.startsWith("/") ? prefix : `/${prefix}`;
487
+ return normalized.length > 1 ? normalized.replace(/\/+$/, "") : normalized;
488
+ }
489
+ function parsePositiveInt(value, fallback) {
490
+ if (!value) {
491
+ return fallback;
492
+ }
493
+ const parsed = Number.parseInt(value, 10);
494
+ return Number.isFinite(parsed) && parsed > 0 ? parsed : fallback;
495
+ }
496
+ function parseBoolean(value) {
497
+ if (value === null) {
498
+ return undefined;
499
+ }
500
+ if (["1", "true", "yes"].includes(value.toLocaleLowerCase())) {
501
+ return true;
502
+ }
503
+ if (["0", "false", "no"].includes(value.toLocaleLowerCase())) {
504
+ return false;
505
+ }
506
+ return undefined;
507
+ }
508
+ function isRecord(value) {
509
+ return Boolean(value && typeof value === "object" && !Array.isArray(value));
510
+ }
511
+ function installationSummary(installation) {
512
+ return {
513
+ installed: true,
514
+ enabled: installation.enabled,
515
+ pluginId: installation.pluginId,
516
+ tenantId: installation.tenantId,
517
+ version: installation.version,
518
+ meta: installation.meta,
519
+ createdAt: installation.createdAt,
520
+ updatedAt: installation.updatedAt,
521
+ };
522
+ }
523
+ //# sourceMappingURL=http.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export * from "./types.js";
2
+ export * from "./plugin.js";
3
+ export * from "./manager.js";
4
+ export * from "./http.js";
5
+ export * from "./client.js";
6
+ export * from "./injection.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,7 @@
1
+ export * from "./types.js";
2
+ export * from "./plugin.js";
3
+ export * from "./manager.js";
4
+ export * from "./http.js";
5
+ export * from "./client.js";
6
+ export * from "./injection.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { PluginHtmlInjectionOptions, PluginInjection, PluginInjectionContext, PluginInjectionPlacement, PluginRenderedInjection, ResolvedPluginInjection } from "./types.js";
2
+ export interface HtmlInjectionTarget {
3
+ placement: PluginInjectionPlacement;
4
+ html: string;
5
+ }
6
+ export declare function renderPluginInjection(injection: PluginInjection, context: PluginInjectionContext): Promise<PluginRenderedInjection | null>;
7
+ export declare function renderStaticInjection(injection: PluginInjection, context?: Pick<PluginInjectionContext, "nonce">): string;
8
+ export declare function renderInjectionHtml(injections: ResolvedPluginInjection[], options?: Pick<PluginHtmlInjectionOptions, "minify">): string;
9
+ export declare function injectHtml(html: string, injections: ResolvedPluginInjection[], options?: Pick<PluginHtmlInjectionOptions, "minify">): string;
10
+ //# sourceMappingURL=injection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"injection.d.ts","sourceRoot":"","sources":["../src/injection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,0BAA0B,EAC1B,eAAe,EAEf,sBAAsB,EACtB,wBAAwB,EACxB,uBAAuB,EACvB,uBAAuB,EACxB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,wBAAwB,CAAC;IACpC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAsB,qBAAqB,CACzC,SAAS,EAAE,eAAe,EAC1B,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAAC,CA0BzC;AAED,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,eAAe,EAC1B,OAAO,GAAE,IAAI,CAAC,sBAAsB,EAAE,OAAO,CAAM,GAClD,MAAM,CAmBR;AAED,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,uBAAuB,EAAE,EACrC,OAAO,GAAE,IAAI,CAAC,0BAA0B,EAAE,QAAQ,CAAM,GACvD,MAAM,CAQR;AAED,wBAAgB,UAAU,CACxB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,uBAAuB,EAAE,EACrC,OAAO,GAAE,IAAI,CAAC,0BAA0B,EAAE,QAAQ,CAAM,GACvD,MAAM,CAuBR"}