emdash 0.6.0 → 0.7.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.
- package/dist/{apply-B4MsLM-w.mjs → apply-5uslYdUu.mjs} +174 -17
- package/dist/apply-5uslYdUu.mjs.map +1 -0
- package/dist/astro/index.d.mts +4 -4
- package/dist/astro/index.mjs +7 -3
- package/dist/astro/index.mjs.map +1 -1
- package/dist/astro/middleware/auth.d.mts +4 -4
- package/dist/astro/middleware/redirect.mjs +1 -1
- package/dist/astro/middleware/request-context.mjs +6 -1
- package/dist/astro/middleware/request-context.mjs.map +1 -1
- package/dist/astro/middleware.mjs +13 -12
- package/dist/astro/middleware.mjs.map +1 -1
- package/dist/astro/types.d.mts +13 -4
- package/dist/astro/types.d.mts.map +1 -1
- package/dist/cli/index.mjs +4 -4
- package/dist/{content-BsBoyj8G.mjs → content-D7J5y73J.mjs} +27 -1
- package/dist/{content-BsBoyj8G.mjs.map → content-D7J5y73J.mjs.map} +1 -1
- package/dist/db/index.d.mts +2 -2
- package/dist/db/index.mjs +1 -1
- package/dist/{index-BYv0mB9g.d.mts → index-De6_Xv3v.d.mts} +77 -3
- package/dist/index-De6_Xv3v.d.mts.map +1 -0
- package/dist/index.d.mts +4 -4
- package/dist/index.mjs +7 -7
- package/dist/media/local-runtime.d.mts +4 -4
- package/dist/plugins/adapt-sandbox-entry.d.mts +4 -4
- package/dist/{query-Bk_3vKvU.mjs → query-g4Ug-9j9.mjs} +3 -3
- package/dist/{query-Bk_3vKvU.mjs.map → query-g4Ug-9j9.mjs.map} +1 -1
- package/dist/{redirect-7lGhLBNZ.mjs → redirect-CN0Rt9Ob.mjs} +66 -10
- package/dist/redirect-CN0Rt9Ob.mjs.map +1 -0
- package/dist/{runner-Fl2NcUUz.d.mts → runner-BR2xKwhn.d.mts} +2 -2
- package/dist/{runner-Fl2NcUUz.d.mts.map → runner-BR2xKwhn.d.mts.map} +1 -1
- package/dist/{runner-Cd-_WyDo.mjs → runner-tQ7BJ4T7.mjs} +211 -134
- package/dist/runner-tQ7BJ4T7.mjs.map +1 -0
- package/dist/runtime.d.mts +4 -4
- package/dist/{search-DI4bM2w9.mjs → search-B0effn3j.mjs} +117 -23
- package/dist/search-B0effn3j.mjs.map +1 -0
- package/dist/seed/index.d.mts +2 -2
- package/dist/seed/index.mjs +3 -3
- package/dist/{taxonomies-DbrKzDju.mjs → taxonomies-K2z0Uhnj.mjs} +2 -2
- package/dist/{taxonomies-DbrKzDju.mjs.map → taxonomies-K2z0Uhnj.mjs.map} +1 -1
- package/dist/{types-8xrvl_68.d.mts → types-C2v0c34j.d.mts} +10 -1
- package/dist/{types-8xrvl_68.d.mts.map → types-C2v0c34j.d.mts.map} +1 -1
- package/dist/{validate-CaLH1Ia2.d.mts → validate-kM8Pjuf7.d.mts} +2 -2
- package/dist/{validate-CaLH1Ia2.d.mts.map → validate-kM8Pjuf7.d.mts.map} +1 -1
- package/dist/version-BnTKdfam.mjs +7 -0
- package/dist/{version-Uaf2ynPX.mjs.map → version-BnTKdfam.mjs.map} +1 -1
- package/package.json +5 -5
- package/src/api/handlers/content.ts +2 -0
- package/src/api/schemas/content.ts +8 -0
- package/src/astro/integration/font-provider.ts +3 -1
- package/src/astro/integration/index.ts +2 -0
- package/src/astro/integration/runtime.ts +55 -1
- package/src/astro/routes/admin.astro +14 -7
- package/src/astro/routes/api/auth/magic-link/send.ts +2 -1
- package/src/astro/routes/api/auth/passkey/options.ts +2 -1
- package/src/astro/routes/api/auth/signup/request.ts +26 -8
- package/src/astro/routes/api/comments/[collection]/[contentId]/index.ts +10 -6
- package/src/astro/routes/api/content/[collection]/[id]/compare.ts +1 -1
- package/src/astro/routes/api/content/[collection]/[id]/preview-url.ts +1 -1
- package/src/astro/routes/api/content/[collection]/[id]/revisions.ts +1 -1
- package/src/astro/routes/api/content/[collection]/[id]/translations.ts +26 -0
- package/src/astro/routes/api/content/[collection]/[id].ts +30 -2
- package/src/astro/routes/api/content/[collection]/index.ts +19 -1
- package/src/astro/routes/api/content/[collection]/trash.ts +1 -1
- package/src/astro/routes/api/import/wordpress-plugin/analyze.ts +4 -3
- package/src/astro/routes/api/import/wordpress-plugin/execute.ts +4 -3
- package/src/astro/routes/api/manifest.ts +7 -0
- package/src/astro/routes/api/oauth/device/code.ts +2 -1
- package/src/astro/routes/api/oauth/device/token.ts +2 -1
- package/src/astro/routes/api/setup/admin-verify.ts +30 -5
- package/src/astro/routes/api/setup/admin.ts +32 -8
- package/src/astro/routes/api/setup/index.ts +5 -2
- package/src/astro/types.ts +9 -0
- package/src/auth/rate-limit.ts +50 -22
- package/src/auth/setup-nonce.ts +22 -0
- package/src/auth/trusted-proxy.ts +92 -0
- package/src/database/migrations/035_bounded_404_log.ts +112 -0
- package/src/database/migrations/runner.ts +2 -0
- package/src/database/repositories/content.ts +39 -0
- package/src/database/repositories/options.ts +25 -0
- package/src/database/repositories/redirect.ts +111 -8
- package/src/database/types.ts +9 -0
- package/src/emdash-runtime.ts +3 -1
- package/src/import/registry.ts +4 -3
- package/src/import/ssrf.ts +253 -12
- package/src/mcp/server.ts +76 -3
- package/src/plugins/context.ts +15 -3
- package/src/plugins/manager.ts +6 -0
- package/src/plugins/request-meta.ts +66 -15
- package/src/plugins/routes.ts +3 -1
- package/src/seed/apply.ts +26 -0
- package/src/visual-editing/toolbar.ts +6 -1
- package/dist/apply-B4MsLM-w.mjs.map +0 -1
- package/dist/index-BYv0mB9g.d.mts.map +0 -1
- package/dist/redirect-7lGhLBNZ.mjs.map +0 -1
- package/dist/runner-Cd-_WyDo.mjs.map +0 -1
- package/dist/search-DI4bM2w9.mjs.map +0 -1
- package/dist/version-Uaf2ynPX.mjs +0 -7
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { n as validateJsonFieldName, r as validatePluginIdentifier, t as validateIdentifier } from "./validate-VPnKoIzW.mjs";
|
|
2
2
|
import { o as jsonExtractExpr } from "./dialect-helpers-DhTzaUxP.mjs";
|
|
3
|
-
import { a as slugify, r as RevisionRepository, t as ContentRepository } from "./content-
|
|
3
|
+
import { a as slugify, r as RevisionRepository, t as ContentRepository } from "./content-D7J5y73J.mjs";
|
|
4
4
|
import { r as encodeBase64, t as decodeBase64 } from "./base64-MBPo9ozB.mjs";
|
|
5
5
|
import { n as decodeCursor, r as encodeCursor, t as EmDashValidationError } from "./types-CMMN0pNg.mjs";
|
|
6
6
|
import { t as MediaRepository } from "./media-DqHVh136.mjs";
|
|
7
|
-
import { a as
|
|
7
|
+
import { a as ssrfSafeFetch, i as resolveAndValidateExternalUrl, o as stripCredentialHeaders, p as OptionsRepository, r as SsrfError, s as validateExternalUrl } from "./apply-5uslYdUu.mjs";
|
|
8
8
|
import { t as withTransaction } from "./transaction-Cn2rjY78.mjs";
|
|
9
|
-
import { t as RedirectRepository } from "./redirect-
|
|
9
|
+
import { t as RedirectRepository } from "./redirect-CN0Rt9Ob.mjs";
|
|
10
10
|
import { n as chunks, t as SQL_BATCH_SIZE } from "./chunks-HGz06Soa.mjs";
|
|
11
11
|
import { t as BylineRepository } from "./byline-C4OVd8b3.mjs";
|
|
12
12
|
import { r as isI18nEnabled } from "./config-BXwuX8Bx.mjs";
|
|
@@ -1298,7 +1298,8 @@ async function handleContentUpdate(db, collection, id, body) {
|
|
|
1298
1298
|
data: body.data,
|
|
1299
1299
|
slug: body.slug,
|
|
1300
1300
|
status: body.status,
|
|
1301
|
-
authorId: body.authorId
|
|
1301
|
+
authorId: body.authorId,
|
|
1302
|
+
publishedAt: body.publishedAt
|
|
1302
1303
|
});
|
|
1303
1304
|
if (body.bylines !== void 0) {
|
|
1304
1305
|
await bylineRepo.setContentBylines(collection, resolvedId, body.bylines);
|
|
@@ -2640,6 +2641,11 @@ const contentListQuery = cursorPaginationQuery.extend({
|
|
|
2640
2641
|
order: z$1.enum(["asc", "desc"]).optional(),
|
|
2641
2642
|
locale: localeCode.optional()
|
|
2642
2643
|
}).meta({ id: "ContentListQuery" });
|
|
2644
|
+
/** ISO 8601 datetime for `publishedAt` / `createdAt`. Routes gate writes behind `content:publish_any`. */
|
|
2645
|
+
const contentDateOverride = z$1.iso.datetime({
|
|
2646
|
+
offset: true,
|
|
2647
|
+
message: "must be an ISO 8601 datetime"
|
|
2648
|
+
}).nullish();
|
|
2643
2649
|
const contentCreateBody = z$1.object({
|
|
2644
2650
|
data: z$1.record(z$1.string(), z$1.unknown()),
|
|
2645
2651
|
slug: z$1.string().nullish(),
|
|
@@ -2647,7 +2653,9 @@ const contentCreateBody = z$1.object({
|
|
|
2647
2653
|
bylines: z$1.array(contentBylineInputSchema).optional(),
|
|
2648
2654
|
locale: localeCode.optional(),
|
|
2649
2655
|
translationOf: z$1.string().optional(),
|
|
2650
|
-
seo: contentSeoInput.optional()
|
|
2656
|
+
seo: contentSeoInput.optional(),
|
|
2657
|
+
publishedAt: contentDateOverride,
|
|
2658
|
+
createdAt: contentDateOverride
|
|
2651
2659
|
}).meta({ id: "ContentCreateBody" });
|
|
2652
2660
|
const contentUpdateBody = z$1.object({
|
|
2653
2661
|
data: z$1.record(z$1.string(), z$1.unknown()).optional(),
|
|
@@ -2657,7 +2665,8 @@ const contentUpdateBody = z$1.object({
|
|
|
2657
2665
|
bylines: z$1.array(contentBylineInputSchema).optional(),
|
|
2658
2666
|
_rev: z$1.string().optional().meta({ description: "Opaque revision token for optimistic concurrency" }),
|
|
2659
2667
|
skipRevision: z$1.boolean().optional(),
|
|
2660
|
-
seo: contentSeoInput.optional()
|
|
2668
|
+
seo: contentSeoInput.optional(),
|
|
2669
|
+
publishedAt: contentDateOverride
|
|
2661
2670
|
}).meta({ id: "ContentUpdateBody" });
|
|
2662
2671
|
const contentScheduleBody = z$1.object({ scheduledAt: z$1.string().min(1, "scheduledAt is required").meta({
|
|
2663
2672
|
description: "ISO 8601 datetime for scheduled publishing",
|
|
@@ -4983,6 +4992,55 @@ function resolveHook(hook, pluginId) {
|
|
|
4983
4992
|
};
|
|
4984
4993
|
}
|
|
4985
4994
|
|
|
4995
|
+
//#endregion
|
|
4996
|
+
//#region src/auth/trusted-proxy.ts
|
|
4997
|
+
/**
|
|
4998
|
+
* RFC 7230 token — valid characters for an HTTP header name. Invalid names
|
|
4999
|
+
* passed to `Headers.get()` throw a TypeError at runtime, which would
|
|
5000
|
+
* otherwise surface as a 500 from every auth route.
|
|
5001
|
+
*/
|
|
5002
|
+
const HEADER_NAME_PATTERN = /^[!#$%&'*+\-.^_`|~0-9a-z]+$/;
|
|
5003
|
+
/**
|
|
5004
|
+
* Normalise a list of header names the way both the config path and any
|
|
5005
|
+
* caller passing a pre-resolved list should do: trim, lowercase, drop
|
|
5006
|
+
* empty, drop anything that isn't a valid RFC 7230 token. Invalid names
|
|
5007
|
+
* would crash `Headers.get()` at runtime.
|
|
5008
|
+
*/
|
|
5009
|
+
function normalizeTrustedHeaders(names) {
|
|
5010
|
+
return names.map((h) => h.trim().toLowerCase()).filter((h) => h.length > 0 && HEADER_NAME_PATTERN.test(h));
|
|
5011
|
+
}
|
|
5012
|
+
function isValidHeaderName(name) {
|
|
5013
|
+
return HEADER_NAME_PATTERN.test(name);
|
|
5014
|
+
}
|
|
5015
|
+
/** Cache for the env-derived value. `null` means "not yet parsed". */
|
|
5016
|
+
let _envCache = null;
|
|
5017
|
+
function getEnvTrustedHeaders() {
|
|
5018
|
+
if (_envCache !== null) return _envCache;
|
|
5019
|
+
let raw;
|
|
5020
|
+
try {
|
|
5021
|
+
const importMetaEnv = import.meta.env;
|
|
5022
|
+
raw = (typeof process !== "undefined" ? process.env?.EMDASH_TRUSTED_PROXY_HEADERS : void 0) || importMetaEnv?.EMDASH_TRUSTED_PROXY_HEADERS;
|
|
5023
|
+
} catch {
|
|
5024
|
+
raw = void 0;
|
|
5025
|
+
}
|
|
5026
|
+
if (!raw) {
|
|
5027
|
+
_envCache = [];
|
|
5028
|
+
return _envCache;
|
|
5029
|
+
}
|
|
5030
|
+
_envCache = raw.split(",").map((s) => s.trim().toLowerCase()).filter((s) => s.length > 0 && isValidHeaderName(s));
|
|
5031
|
+
return _envCache;
|
|
5032
|
+
}
|
|
5033
|
+
/**
|
|
5034
|
+
* Return the lowercased list of headers to trust for client-IP resolution.
|
|
5035
|
+
*
|
|
5036
|
+
* When `config?.trustedProxyHeaders` is explicitly set (even to `[]`), it
|
|
5037
|
+
* wins. Otherwise fall through to the env var, then to `[]`.
|
|
5038
|
+
*/
|
|
5039
|
+
function getTrustedProxyHeaders(config) {
|
|
5040
|
+
if (config && config.trustedProxyHeaders !== void 0) return config.trustedProxyHeaders.map((h) => h.trim().toLowerCase()).filter((h) => h.length > 0 && isValidHeaderName(h));
|
|
5041
|
+
return getEnvTrustedHeaders();
|
|
5042
|
+
}
|
|
5043
|
+
|
|
4986
5044
|
//#endregion
|
|
4987
5045
|
//#region src/plugins/request-meta.ts
|
|
4988
5046
|
/**
|
|
@@ -5004,6 +5062,20 @@ function parseFirstForwardedIp(header) {
|
|
|
5004
5062
|
return IP_PATTERN.test(trimmed) ? trimmed : null;
|
|
5005
5063
|
}
|
|
5006
5064
|
/**
|
|
5065
|
+
* Read an IP from an operator-declared trusted header. XFF-style headers
|
|
5066
|
+
* (any name ending in `forwarded-for`) are parsed as comma-separated lists
|
|
5067
|
+
* and the first entry is used; everything else is treated as a single
|
|
5068
|
+
* trimmed value.
|
|
5069
|
+
*/
|
|
5070
|
+
function readIpFromHeader(headers, name) {
|
|
5071
|
+
const value = headers.get(name);
|
|
5072
|
+
if (!value) return null;
|
|
5073
|
+
if (name.endsWith("forwarded-for")) return parseFirstForwardedIp(value);
|
|
5074
|
+
const trimmed = value.trim();
|
|
5075
|
+
if (!trimmed) return null;
|
|
5076
|
+
return IP_PATTERN.test(trimmed) ? trimmed : null;
|
|
5077
|
+
}
|
|
5078
|
+
/**
|
|
5007
5079
|
* Get the Cloudflare `cf` object from the request, if present.
|
|
5008
5080
|
* Returns undefined when not running on Cloudflare Workers.
|
|
5009
5081
|
*/
|
|
@@ -5030,24 +5102,39 @@ function extractGeo(cf) {
|
|
|
5030
5102
|
* Extract normalized request metadata from a Request object.
|
|
5031
5103
|
*
|
|
5032
5104
|
* IP resolution order:
|
|
5033
|
-
* 1. `CF-Connecting-IP`
|
|
5034
|
-
*
|
|
5035
|
-
*
|
|
5036
|
-
*
|
|
5037
|
-
*
|
|
5038
|
-
* 3. `
|
|
5039
|
-
|
|
5040
|
-
|
|
5105
|
+
* 1. `CF-Connecting-IP` — trusted only when a `cf` object is present on the
|
|
5106
|
+
* request. CF edge overwrites any client-supplied value, so this is the
|
|
5107
|
+
* cryptographically trustworthy path on Workers. Operator-declared
|
|
5108
|
+
* trusted headers cannot override it.
|
|
5109
|
+
* 2. `X-Forwarded-For` first entry — trusted only with a `cf` object.
|
|
5110
|
+
* 3. Operator-declared trusted proxy headers (from `config.trustedProxyHeaders`
|
|
5111
|
+
* or the `EMDASH_TRUSTED_PROXY_HEADERS` env var), tried in order. Used as
|
|
5112
|
+
* the primary source off-CF and as a fill-in on CF.
|
|
5113
|
+
* 4. `null`
|
|
5114
|
+
*
|
|
5115
|
+
* The second argument accepts either the EmDash config or a pre-resolved
|
|
5116
|
+
* list of trusted headers, so callers that already have the list don't have
|
|
5117
|
+
* to round-trip through the config every request.
|
|
5118
|
+
*/
|
|
5119
|
+
function extractRequestMeta(request, configOrTrustedHeaders) {
|
|
5041
5120
|
const headers = request.headers;
|
|
5042
5121
|
const cf = getCfObject(request);
|
|
5122
|
+
const trusted = resolveTrustedHeaders(configOrTrustedHeaders);
|
|
5043
5123
|
let ip = null;
|
|
5044
5124
|
if (cf) {
|
|
5045
5125
|
const cfIp = headers.get("cf-connecting-ip")?.trim();
|
|
5046
5126
|
if (cfIp && IP_PATTERN.test(cfIp)) ip = cfIp;
|
|
5127
|
+
if (!ip) {
|
|
5128
|
+
const xff = headers.get("x-forwarded-for");
|
|
5129
|
+
ip = xff ? parseFirstForwardedIp(xff) : null;
|
|
5130
|
+
}
|
|
5047
5131
|
}
|
|
5048
|
-
if (!ip
|
|
5049
|
-
const
|
|
5050
|
-
|
|
5132
|
+
if (!ip) for (const name of trusted) {
|
|
5133
|
+
const value = readIpFromHeader(headers, name);
|
|
5134
|
+
if (value) {
|
|
5135
|
+
ip = value;
|
|
5136
|
+
break;
|
|
5137
|
+
}
|
|
5051
5138
|
}
|
|
5052
5139
|
const userAgent = headers.get("user-agent")?.trim() || null;
|
|
5053
5140
|
const referer = headers.get("referer")?.trim() || null;
|
|
@@ -5059,6 +5146,10 @@ function extractRequestMeta(request) {
|
|
|
5059
5146
|
geo
|
|
5060
5147
|
};
|
|
5061
5148
|
}
|
|
5149
|
+
function resolveTrustedHeaders(value) {
|
|
5150
|
+
if (Array.isArray(value)) return normalizeTrustedHeaders(value);
|
|
5151
|
+
return getTrustedProxyHeaders(value);
|
|
5152
|
+
}
|
|
5062
5153
|
/**
|
|
5063
5154
|
* Headers that must never cross the RPC boundary to sandboxed plugins.
|
|
5064
5155
|
* Session tokens, auth credentials, and infrastructure headers are stripped
|
|
@@ -5707,7 +5798,7 @@ function createUnrestrictedHttpAccess(pluginId) {
|
|
|
5707
5798
|
let currentInit = init;
|
|
5708
5799
|
for (let i = 0; i <= MAX_PLUGIN_REDIRECTS; i++) {
|
|
5709
5800
|
try {
|
|
5710
|
-
|
|
5801
|
+
await resolveAndValidateExternalUrl(currentUrl);
|
|
5711
5802
|
} catch (e) {
|
|
5712
5803
|
const msg = e instanceof SsrfError ? e.message : "SSRF validation failed";
|
|
5713
5804
|
throw new Error(`Plugin "${pluginId}": blocked fetch to "${new URL(currentUrl).hostname}": ${msg}`, { cause: e });
|
|
@@ -7001,9 +7092,11 @@ async function devConsoleEmailDeliver(event, _ctx) {
|
|
|
7001
7092
|
var PluginRouteHandler = class {
|
|
7002
7093
|
contextFactory;
|
|
7003
7094
|
plugin;
|
|
7095
|
+
trustedProxyHeaders;
|
|
7004
7096
|
constructor(plugin, factoryOptions) {
|
|
7005
7097
|
this.plugin = plugin;
|
|
7006
7098
|
this.contextFactory = new PluginContextFactory(factoryOptions);
|
|
7099
|
+
this.trustedProxyHeaders = factoryOptions.trustedProxyHeaders ?? [];
|
|
7007
7100
|
}
|
|
7008
7101
|
/**
|
|
7009
7102
|
* Invoke a route by name
|
|
@@ -7036,7 +7129,7 @@ var PluginRouteHandler = class {
|
|
|
7036
7129
|
...this.contextFactory.createContext(this.plugin),
|
|
7037
7130
|
input: validatedInput,
|
|
7038
7131
|
request: options.request,
|
|
7039
|
-
requestMeta: extractRequestMeta(options.request)
|
|
7132
|
+
requestMeta: extractRequestMeta(options.request, this.trustedProxyHeaders)
|
|
7040
7133
|
};
|
|
7041
7134
|
try {
|
|
7042
7135
|
return {
|
|
@@ -7215,7 +7308,8 @@ var PluginManager = class {
|
|
|
7215
7308
|
this.factoryOptions = {
|
|
7216
7309
|
db: options.db,
|
|
7217
7310
|
storage: options.storage,
|
|
7218
|
-
getUploadUrl: options.getUploadUrl
|
|
7311
|
+
getUploadUrl: options.getUploadUrl,
|
|
7312
|
+
trustedProxyHeaders: options.trustedProxyHeaders
|
|
7219
7313
|
};
|
|
7220
7314
|
}
|
|
7221
7315
|
/**
|
|
@@ -7712,7 +7806,7 @@ async function probeUrl(url) {
|
|
|
7712
7806
|
let normalizedUrl = url.trim();
|
|
7713
7807
|
if (!normalizedUrl.startsWith("http")) normalizedUrl = `https://${normalizedUrl}`;
|
|
7714
7808
|
normalizedUrl = normalizedUrl.replace(TRAILING_SLASHES_PATTERN, "");
|
|
7715
|
-
|
|
7809
|
+
await resolveAndValidateExternalUrl(normalizedUrl);
|
|
7716
7810
|
const results = [];
|
|
7717
7811
|
const probePromises = getUrlSources().map(async (source) => {
|
|
7718
7812
|
try {
|
|
@@ -9396,5 +9490,5 @@ function extractSearchableFields(entry, fields) {
|
|
|
9396
9490
|
}
|
|
9397
9491
|
|
|
9398
9492
|
//#endregion
|
|
9399
|
-
export {
|
|
9400
|
-
//# sourceMappingURL=search-
|
|
9493
|
+
export { prosemirrorToPortableText as $, isStandardPluginDefinition as A, handleContentPublish as At, EmailPipeline as B, image as Bt, getAllSources as C, handleContentDiscardDraft as Ct, probeUrl as D, handleContentList as Dt, getUrlSources as E, handleContentGetIncludingTrashed as Et, createPluginManager as F, handleContentUnschedule as Ft, extractRequestMeta as G, createHookPipeline as H, PluginRouteError as I, handleContentUpdate as It, definePlugin as J, sanitizeHeadersForSandbox as K, PluginRouteRegistry as L, validateRev as Lt, SandboxNotAvailableError as M, handleContentSchedule as Mt, createNoopSandboxRunner as N, handleContentTranslations as Nt, registerSource as O, handleContentListTrashed as Ot, PluginManager as P, handleContentUnpublish as Pt, portableTextToProsemirror as Q, DEV_CONSOLE_EMAIL_PLUGIN_ID as R, portableText as Rt, clearSources as S, handleContentDelete as St, getSource as T, handleContentGet as Tt, resolveExclusiveHooks as U, HookPipeline as V, CronExecutor as W, parseWxrString as X, parseWxr as Y, after as Z, buildPreviewUrl as _, hashString as _t, search as a, PluginStateRepository as at, parseWxrDate as b, handleContentCountTrashed as bt, getWidgetArea as c, handleMediaDelete as ct, getMenu as d, handleMediaUpdate as dt, isSafeHref as et, getMenus as f, handleRevisionGet as ft, isPreviewRequest as g, computeContentHash as gt, getPreviewToken as h, generateManifest as ht, getSuggestions as i, getSections as it, NoopSandboxRunner as j, handleContentRestore as jt, importReusableBlocksAsSections as k, handleContentPermanentDelete as kt, getWidgetAreas as l, handleMediaGet as lt, getComments as m, handleRevisionRestore as mt, extractSearchableFields as n, loadBundleFromR2 as nt, searchCollection as o, getCollectionInfo as ot, getCommentCount as p, handleRevisionList as pt, getTrustedProxyHeaders as q, getSearchStats as r, getSection as rt, searchWithDb as s, handleMediaCreate as st, extractPlainText as t, sanitizeHref as tt, getWidgetComponents as u, handleMediaList as ut, getPreviewUrl as v, handleContentCompare as vt, getFileSources as w, handleContentDuplicate as wt, wxrSource as x, handleContentCreate as xt, wordpressRestSource as y, handleContentCountScheduled as yt, devConsoleEmailDeliver as z, reference as zt };
|
|
9494
|
+
//# sourceMappingURL=search-B0effn3j.mjs.map
|