emdash 0.2.0 → 0.3.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/{adapters-N6BF7RCD.d.mts → adapters-BLMa4JGD.d.mts} +1 -1
- package/dist/{adapters-N6BF7RCD.d.mts.map → adapters-BLMa4JGD.d.mts.map} +1 -1
- package/dist/{apply-wmVEOSbR.mjs → apply-Bqoekfbe.mjs} +6 -6
- package/dist/{apply-wmVEOSbR.mjs.map → apply-Bqoekfbe.mjs.map} +1 -1
- package/dist/astro/index.d.mts +25 -11
- package/dist/astro/index.d.mts.map +1 -1
- package/dist/astro/index.mjs +31 -19
- package/dist/astro/index.mjs.map +1 -1
- package/dist/astro/middleware/auth.d.mts +5 -5
- package/dist/astro/middleware/auth.mjs +1 -1
- package/dist/astro/middleware/redirect.mjs +2 -2
- package/dist/astro/middleware/setup.mjs +1 -1
- package/dist/astro/middleware.mjs +20 -16
- package/dist/astro/middleware.mjs.map +1 -1
- package/dist/astro/types.d.mts +9 -9
- package/dist/astro/types.d.mts.map +1 -1
- package/dist/{byline-1WQPlISL.mjs → byline-BGj9p9Ht.mjs} +3 -3
- package/dist/{byline-1WQPlISL.mjs.map → byline-BGj9p9Ht.mjs.map} +1 -1
- package/dist/{bylines-BYdTYmia.mjs → bylines-BihaoIDY.mjs} +5 -5
- package/dist/{bylines-BYdTYmia.mjs.map → bylines-BihaoIDY.mjs.map} +1 -1
- package/dist/cli/index.mjs +8 -8
- package/dist/client/cf-access.d.mts +1 -1
- package/dist/client/index.d.mts +1 -1
- package/dist/client/index.mjs +1 -1
- package/dist/{content-BmXndhdi.mjs → content-BsBoyj8G.mjs} +20 -3
- package/dist/content-BsBoyj8G.mjs.map +1 -0
- package/dist/db/index.d.mts +3 -3
- package/dist/db/index.mjs +2 -2
- package/dist/db/libsql.d.mts +1 -1
- package/dist/db/postgres.d.mts +1 -1
- package/dist/db/sqlite.d.mts +1 -1
- package/dist/{dialect-helpers-B9uSp2GJ.mjs → dialect-helpers-DhTzaUxP.mjs} +4 -1
- package/dist/dialect-helpers-DhTzaUxP.mjs.map +1 -0
- package/dist/{index-UHEVQMus.d.mts → index-Cff7AimE.d.mts} +40 -16
- package/dist/index-Cff7AimE.d.mts.map +1 -0
- package/dist/index.d.mts +11 -11
- package/dist/index.mjs +12 -12
- package/dist/{loader-CHb2v0jm.mjs → loader-BmYdf3Dr.mjs} +4 -2
- package/dist/loader-BmYdf3Dr.mjs.map +1 -0
- package/dist/media/index.d.mts +1 -1
- package/dist/media/local-runtime.d.mts +7 -7
- package/dist/{mode-CYeM2rPt.mjs → mode-C2EzN1uE.mjs} +1 -1
- package/dist/{mode-CYeM2rPt.mjs.map → mode-C2EzN1uE.mjs.map} +1 -1
- package/dist/page/index.d.mts +1 -1
- package/dist/{placeholder-bOx1xCTY.d.mts → placeholder-SvFCKbz_.d.mts} +1 -1
- package/dist/{placeholder-bOx1xCTY.d.mts.map → placeholder-SvFCKbz_.d.mts.map} +1 -1
- package/dist/plugins/adapt-sandbox-entry.d.mts +5 -5
- package/dist/{query-5Hcv_5ER.mjs → query-sesiOndV.mjs} +6 -6
- package/dist/{query-5Hcv_5ER.mjs.map → query-sesiOndV.mjs.map} +1 -1
- package/dist/{redirect-DIfIni3r.mjs → redirect-DUAk-Yl_.mjs} +9 -2
- package/dist/redirect-DUAk-Yl_.mjs.map +1 -0
- package/dist/{registry-1EvbAfsC.mjs → registry-DU18yVo0.mjs} +9 -3
- package/dist/registry-DU18yVo0.mjs.map +1 -0
- package/dist/{runner-BoN0-FPi.mjs → runner-Biufrii2.mjs} +3 -3
- package/dist/{runner-BoN0-FPi.mjs.map → runner-Biufrii2.mjs.map} +1 -1
- package/dist/{runner-DTqkzOzc.d.mts → runner-EAtf0ZIe.d.mts} +2 -2
- package/dist/{runner-DTqkzOzc.d.mts.map → runner-EAtf0ZIe.d.mts.map} +1 -1
- package/dist/runtime.d.mts +6 -6
- package/dist/runtime.mjs +2 -2
- package/dist/{search-BsYMed12.mjs → search-BXB-jfu2.mjs} +13 -11
- package/dist/search-BXB-jfu2.mjs.map +1 -0
- package/dist/seed/index.d.mts +2 -2
- package/dist/seed/index.mjs +7 -7
- package/dist/seo/index.d.mts +1 -1
- package/dist/storage/local.d.mts +1 -1
- package/dist/storage/s3.d.mts +11 -3
- package/dist/storage/s3.d.mts.map +1 -1
- package/dist/storage/s3.mjs +75 -14
- package/dist/storage/s3.mjs.map +1 -1
- package/dist/{transport-COOs9GSE.d.mts → transport-BFGblqwG.d.mts} +1 -1
- package/dist/{transport-COOs9GSE.d.mts.map → transport-BFGblqwG.d.mts.map} +1 -1
- package/dist/{transport-Bl8cTdYt.mjs → transport-yxiQsi8I.mjs} +1 -1
- package/dist/{transport-Bl8cTdYt.mjs.map → transport-yxiQsi8I.mjs.map} +1 -1
- package/dist/{types-CIsTnQvJ.d.mts → types-BbsYgi_R.d.mts} +1 -1
- package/dist/{types-CIsTnQvJ.d.mts.map → types-BbsYgi_R.d.mts.map} +1 -1
- package/dist/types-Bec-r_3_.mjs.map +1 -1
- package/dist/{types-BljtYPSd.d.mts → types-C1-PVaS_.d.mts} +14 -6
- package/dist/types-C1-PVaS_.d.mts.map +1 -0
- package/dist/{types-6dqxBqsH.d.mts → types-CaKte3hR.d.mts} +102 -4
- package/dist/types-CaKte3hR.d.mts.map +1 -0
- package/dist/{types-CcreFIIH.d.mts → types-DPfzHnjW.d.mts} +1 -1
- package/dist/{types-CcreFIIH.d.mts.map → types-DPfzHnjW.d.mts.map} +1 -1
- package/dist/{types-7-UjSEyB.d.mts → types-DRjfYOEv.d.mts} +1 -1
- package/dist/{types-7-UjSEyB.d.mts.map → types-DRjfYOEv.d.mts.map} +1 -1
- package/dist/{validate-CqRJb_xU.mjs → validate-VPnKoIzW.mjs} +11 -11
- package/dist/{validate-CqRJb_xU.mjs.map → validate-VPnKoIzW.mjs.map} +1 -1
- package/dist/{validate-B7KP7VLM.d.mts → validate-bfg9OR6N.d.mts} +4 -4
- package/dist/{validate-B7KP7VLM.d.mts.map → validate-bfg9OR6N.d.mts.map} +1 -1
- package/dist/version-REAapfsU.mjs +7 -0
- package/dist/version-REAapfsU.mjs.map +1 -0
- package/package.json +5 -5
- package/src/api/handlers/redirects.ts +95 -3
- package/src/api/schemas/redirects.ts +1 -0
- package/src/astro/integration/vite-config.ts +7 -4
- package/src/astro/routes/admin.astro +2 -2
- package/src/astro/routes/api/comments/[collection]/[contentId]/index.ts +2 -0
- package/src/astro/routes/api/import/wordpress/rewrite-urls.ts +2 -0
- package/src/astro/routes/api/manifest.ts +3 -1
- package/src/astro/storage/adapters.ts +19 -5
- package/src/astro/storage/types.ts +12 -4
- package/src/astro/types.ts +1 -0
- package/src/bylines/index.ts +2 -2
- package/src/database/dialect-helpers.ts +3 -0
- package/src/database/repositories/content.ts +5 -0
- package/src/database/repositories/redirect.ts +13 -0
- package/src/database/validate.ts +10 -10
- package/src/emdash-runtime.ts +5 -1
- package/src/index.ts +1 -0
- package/src/loader.ts +2 -0
- package/src/menus/index.ts +4 -0
- package/src/redirects/loops.ts +318 -0
- package/src/schema/registry.ts +3 -0
- package/src/search/fts-manager.ts +4 -0
- package/src/storage/s3.ts +94 -25
- package/src/storage/types.ts +13 -5
- package/src/utils/slugify.ts +11 -0
- package/src/version.ts +12 -0
- package/dist/content-BmXndhdi.mjs.map +0 -1
- package/dist/dialect-helpers-B9uSp2GJ.mjs.map +0 -1
- package/dist/index-UHEVQMus.d.mts.map +0 -1
- package/dist/loader-CHb2v0jm.mjs.map +0 -1
- package/dist/redirect-DIfIni3r.mjs.map +0 -1
- package/dist/registry-1EvbAfsC.mjs.map +0 -1
- package/dist/search-BsYMed12.mjs.map +0 -1
- package/dist/types-6dqxBqsH.d.mts.map +0 -1
- package/dist/types-BljtYPSd.d.mts.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types-CaKte3hR.d.mts","names":["ConfirmDialog","title","text","confirm","deny","style","ButtonElement","type","action_id","label","value","TextInputElement","placeholder","initial_value","multiline","NumberInputElement","min","max","SelectElement","Array","options","optionsRoute","ToggleElement","description","SecretInputElement","has_value","CheckboxElement","DateInputElement","ComboboxElement","RadioElement","Element","FieldCondition","field","eq","neq","FormField","condition","TableColumn","key","format","sortable","StatItem","trend","ChartSeries","name","data","color","TimeseriesChartConfig","chart_type","series","x_axis_name","y_axis_name","height","gradient","CustomChartConfig","Record","ChartConfig","BlockBase","block_id","HeaderBlock","SectionBlock","accessory","DividerBlock","FieldsBlock","fields","TableBlock","columns","rows","next_cursor","page_action_id","empty_text","ActionsBlock","elements","StatsBlock","items","FormBlock","submit","ImageBlock","url","alt","ContextBlock","ColumnsBlock","Block","ChartBlock","config","BannerBlock","variant","MeterBlock","custom_value","CodeBlock","code","language","BlockAction","FormSubmit","values","PageLoad","page","BlockInteraction","BlockResponse","blocks","toast","message","header","blockId","opts","section","divider","fieldsBlock","table","nextCursor","pageActionId","emptyText","actionsBlock","stats","form","actionId","image","context","columnsBlock","bannerBlock","textInput","initialValue","numberInput","select","toggle","button","secretInput","hasValue","checkbox","dateInput","combobox","radio","timeseriesChart","xAxisName","yAxisName","customChart","meter","customValue","codeBlock","actions","banner","ValidationError","path","validateBlocks","valid","errors","A","B","C","D","E","F","H","I","L","M","N","O","P","R","S","T","U","V","W","_","a","b","c","d","f","g","h","i","j","k","l","m","n","o","p","r","s","t","u","v","w","x","y","z"],"sources":["../../blocks/dist/validation-BG2u9jAE.d.ts","../src/plugins/types.ts"],"mappings":"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"}
|
|
@@ -190,4 +190,4 @@ declare const RESERVED_FIELD_SLUGS: string[];
|
|
|
190
190
|
declare const RESERVED_COLLECTION_SLUGS: string[];
|
|
191
191
|
//#endregion
|
|
192
192
|
export { ColumnType as a, FIELD_TYPE_TO_COLUMN as c, FieldValidation as d, FieldWidgetOptions as f, UpdateFieldInput as g, UpdateCollectionInput as h, CollectionWithFields as i, Field as l, RESERVED_FIELD_SLUGS as m, CollectionSource as n, CreateCollectionInput as o, RESERVED_COLLECTION_SLUGS as p, CollectionSupport as r, CreateFieldInput as s, Collection as t, FieldType as u };
|
|
193
|
-
//# sourceMappingURL=types-
|
|
193
|
+
//# sourceMappingURL=types-DPfzHnjW.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types-
|
|
1
|
+
{"version":3,"file":"types-DPfzHnjW.d.mts","names":[],"sources":["../src/schema/types.ts"],"mappings":";;AAUA;;;;;AAyCA;;;AAAA,KAzCY,SAAA;;;;KAyCA,UAAA;;;;cAKC,oBAAA,EAAsB,MAAA,CAAO,SAAA,EAAW,UAAA;;;AAqBrD;KAAY,iBAAA;;;;KAWA,gBAAA;;;;;UAWK,gBAAA;EAChB,IAAA;EACA,IAAA;EACA,KAAA;EACA,QAAA;EACA,OAAA;AAAA;AAAA,UAcgB,eAAA;EAChB,QAAA;EACA,GAAA;EACA,GAAA;EACA,SAAA;EACA,SAAA;EACA,OAAA;EACA,OAAA;EACA,SAAA,GAAY,gBAAA;EACZ,QAAA;EACA,QAAA;AAAA;;;;UAMgB,kBAAA;EAChB,IAAA;EACA,WAAA;EACA,UAAA;EACA,aAAA;EAAA,CACC,GAAA;AAAA;;;;UAMe,UAAA;EAChB,EAAA;EACA,IAAA;EACA,KAAA;EACA,aAAA;EACA,WAAA;EACA,IAAA;EACA,QAAA,EAAU,iBAAA;EACV,MAAA,GAAS,gBAAA;EAPT;EASA,MAAA;EAPA;EASA,UAAA;EAPA;EASA,eAAA;EAPA;EASA,kBAAA;EARA;EAUA,uBAAA;EARA;EAUA,wBAAA;EACA,SAAA;EACA,SAAA;AAAA;;;;UAMgB,KAAA;EAChB,EAAA;EACA,YAAA;EACA,IAAA;EACA,KAAA;EACA,IAAA,EAAM,SAAA;EACN,UAAA,EAAY,UAAA;EACZ,QAAA;EACA,MAAA;EACA,YAAA;EACA,UAAA,GAAa,eAAA;EACb,MAAA;EACA,OAAA,GAAU,kBAAA;EACV,SAAA;EACA,UAAA;EATA;EAWA,YAAA;EACA,SAAA;AAAA;;;;UAMgB,qBAAA;EAChB,IAAA;EACA,KAAA;EACA,aAAA;EACA,WAAA;EACA,IAAA;EACA,QAAA,GAAW,iBAAA;EACX,MAAA,GAAS,gBAAA;EACT,UAAA;EACA,MAAA;EACA,eAAA;AAAA;;;;UAMgB,qBAAA;EAChB,KAAA;EACA,aAAA;EACA,WAAA;EACA,IAAA;EACA,QAAA,GAAW,iBAAA;EACX,UAAA;EACA,MAAA;EACA,eAAA;EACA,kBAAA;EACA,uBAAA;EACA,wBAAA;AAAA;;AAXD;;UAiBiB,gBAAA;EAChB,IAAA;EACA,KAAA;EACA,IAAA,EAAM,SAAA;EACN,QAAA;EACA,MAAA;EACA,YAAA;EACA,UAAA,GAAa,eAAA;EACb,MAAA;EACA,OAAA,GAAU,kBAAA;EACV,SAAA;EAlBA;EAoBA,UAAA;EAlBA;EAoBA,YAAA;AAAA;AAdD;;;AAAA,UAoBiB,gBAAA;EAChB,KAAA;EACA,QAAA;EACA,MAAA;EACA,YAAA;EACA,UAAA,GAAa,eAAA;EACb,MAAA;EACA,OAAA,GAAU,kBAAA;EACV,SAAA;EAxBA;EA0BA,UAAA;EAxBA;EA0BA,YAAA;AAAA;;;;UAMgB,oBAAA,SAA6B,UAAA;EAC7C,MAAA,EAAQ,KAAA;AAAA;;;AAnBT;cAyBa,oBAAA;;;;cAmBA,yBAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types-
|
|
1
|
+
{"version":3,"file":"types-DRjfYOEv.d.mts","names":[],"sources":["../src/database/types.ts"],"mappings":"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"}
|
|
@@ -61,16 +61,6 @@ function validateIdentifier(value, label = "identifier") {
|
|
|
61
61
|
if (!IDENTIFIER_PATTERN.test(value)) throw new IdentifierError(`${label} must match /^[a-z][a-z0-9_]*$/ (got "${value}")`, value);
|
|
62
62
|
}
|
|
63
63
|
/**
|
|
64
|
-
* Validate that a string is a safe SQL identifier, allowing hyphens.
|
|
65
|
-
*
|
|
66
|
-
* Like `validateIdentifier` but also permits hyphens, which appear in
|
|
67
|
-
* plugin IDs (e.g., "my-plugin"). Matches `/^[a-z][a-z0-9_-]*$/`.
|
|
68
|
-
*
|
|
69
|
-
* @param value - The string to validate
|
|
70
|
-
* @param label - Human-readable label for error messages
|
|
71
|
-
* @throws {IdentifierError} If the value is not valid
|
|
72
|
-
*/
|
|
73
|
-
/**
|
|
74
64
|
* Validate that a string is a safe JSON field name for use in json_extract paths.
|
|
75
65
|
*
|
|
76
66
|
* More permissive than `validateIdentifier` — allows camelCase (mixed case)
|
|
@@ -86,6 +76,16 @@ function validateJsonFieldName(value, label = "JSON field name") {
|
|
|
86
76
|
if (value.length > MAX_IDENTIFIER_LENGTH) throw new IdentifierError(`${label} must be ${MAX_IDENTIFIER_LENGTH} characters or less, got ${value.length}`, value);
|
|
87
77
|
if (!GENERIC_IDENTIFIER_PATTERN.test(value)) throw new IdentifierError(`${label} must match /^[a-zA-Z][a-zA-Z0-9_]*$/ (got "${value}")`, value);
|
|
88
78
|
}
|
|
79
|
+
/**
|
|
80
|
+
* Validate that a string is a safe SQL identifier, allowing hyphens.
|
|
81
|
+
*
|
|
82
|
+
* Like `validateIdentifier` but also permits hyphens, which appear in
|
|
83
|
+
* plugin IDs (e.g., "my-plugin"). Matches `/^[a-z][a-z0-9_-]*$/`.
|
|
84
|
+
*
|
|
85
|
+
* @param value - The string to validate
|
|
86
|
+
* @param label - Human-readable label for error messages
|
|
87
|
+
* @throws {IdentifierError} If the value is not valid
|
|
88
|
+
*/
|
|
89
89
|
function validatePluginIdentifier(value, label = "plugin identifier") {
|
|
90
90
|
if (!value || typeof value !== "string") throw new IdentifierError(`${label} must be a non-empty string`, String(value));
|
|
91
91
|
if (value.length > MAX_IDENTIFIER_LENGTH) throw new IdentifierError(`${label} must be ${MAX_IDENTIFIER_LENGTH} characters or less, got ${value.length}`, value);
|
|
@@ -94,4 +94,4 @@ function validatePluginIdentifier(value, label = "plugin identifier") {
|
|
|
94
94
|
|
|
95
95
|
//#endregion
|
|
96
96
|
export { validateJsonFieldName as n, validatePluginIdentifier as r, validateIdentifier as t };
|
|
97
|
-
//# sourceMappingURL=validate-
|
|
97
|
+
//# sourceMappingURL=validate-VPnKoIzW.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate-
|
|
1
|
+
{"version":3,"file":"validate-VPnKoIzW.mjs","names":[],"sources":["../src/database/validate.ts"],"sourcesContent":["/**\n * SQL Identifier Validation\n *\n * Validates identifiers (table names, column names, index names) before\n * they are used in raw SQL expressions. This is the primary defense against\n * SQL injection via dynamic identifier interpolation.\n *\n * @see AGENTS.md § Database: Never Interpolate Into SQL\n */\n\n/**\n * Pattern for safe SQL identifiers.\n * Must start with a lowercase letter, followed by lowercase letters, digits, or underscores.\n */\nconst IDENTIFIER_PATTERN = /^[a-z][a-z0-9_]*$/;\n\n/**\n * Pattern for generic alphanumeric identifiers (case-insensitive).\n * Must start with a letter, followed by letters, digits, or underscores.\n */\nconst GENERIC_IDENTIFIER_PATTERN = /^[a-zA-Z][a-zA-Z0-9_]*$/;\n\n/**\n * Pattern for plugin identifiers.\n * Must start with a lowercase letter, followed by lowercase letters, digits, underscores, or hyphens.\n */\nconst PLUGIN_IDENTIFIER_PATTERN = /^[a-z][a-z0-9_-]*$/;\n\n/**\n * Maximum length for SQL identifiers.\n * SQLite has no formal limit, but we cap at 128 for sanity.\n */\nconst MAX_IDENTIFIER_LENGTH = 128;\n\n/**\n * Error thrown when an identifier fails validation.\n */\nexport class IdentifierError extends Error {\n\tconstructor(\n\t\tmessage: string,\n\t\tpublic identifier: string,\n\t) {\n\t\tsuper(message);\n\t\tthis.name = \"IdentifierError\";\n\t}\n}\n\n/**\n * Validate that a string is a safe SQL identifier.\n *\n * Safe identifiers match `/^[a-z][a-z0-9_]*$/` and are at most 128 characters.\n * This prevents SQL injection when identifiers must be interpolated into raw SQL\n * (e.g., dynamic table names, column names in json_extract paths).\n *\n * @param value - The string to validate\n * @param label - Human-readable label for error messages (e.g., \"field name\", \"table name\")\n * @throws {IdentifierError} If the value is not a valid identifier\n *\n * @example\n * ```typescript\n * validateIdentifier(fieldName, \"field name\");\n * // safe to use in: json_extract(data, '$.${fieldName}')\n * ```\n */\nexport function validateIdentifier(value: string, label = \"identifier\"): void {\n\tif (!value || typeof value !== \"string\") {\n\t\tthrow new IdentifierError(`${label} must be a non-empty string`, String(value));\n\t}\n\n\tif (value.length > MAX_IDENTIFIER_LENGTH) {\n\t\tthrow new IdentifierError(\n\t\t\t`${label} must be ${MAX_IDENTIFIER_LENGTH} characters or less, got ${value.length}`,\n\t\t\tvalue,\n\t\t);\n\t}\n\n\tif (!IDENTIFIER_PATTERN.test(value)) {\n\t\tthrow new IdentifierError(`${label} must match /^[a-z][a-z0-9_]*$/ (got \"${value}\")`, value);\n\t}\n}\n\n/**\n * Validate that a string is a safe JSON field name for use in json_extract paths.\n *\n * More permissive than `validateIdentifier` — allows camelCase (mixed case)\n * since JSON keys in plugin storage data blobs commonly use camelCase.\n * Matches `/^[a-zA-Z][a-zA-Z0-9_]*$/`.\n *\n * @param value - The string to validate\n * @param label - Human-readable label for error messages\n * @throws {IdentifierError} If the value is not valid\n */\nexport function validateJsonFieldName(value: string, label = \"JSON field name\"): void {\n\tif (!value || typeof value !== \"string\") {\n\t\tthrow new IdentifierError(`${label} must be a non-empty string`, String(value));\n\t}\n\n\tif (value.length > MAX_IDENTIFIER_LENGTH) {\n\t\tthrow new IdentifierError(\n\t\t\t`${label} must be ${MAX_IDENTIFIER_LENGTH} characters or less, got ${value.length}`,\n\t\t\tvalue,\n\t\t);\n\t}\n\n\tif (!GENERIC_IDENTIFIER_PATTERN.test(value)) {\n\t\tthrow new IdentifierError(\n\t\t\t`${label} must match /^[a-zA-Z][a-zA-Z0-9_]*$/ (got \"${value}\")`,\n\t\t\tvalue,\n\t\t);\n\t}\n}\n\n/**\n * Validate that a string is a safe SQL identifier, allowing hyphens.\n *\n * Like `validateIdentifier` but also permits hyphens, which appear in\n * plugin IDs (e.g., \"my-plugin\"). Matches `/^[a-z][a-z0-9_-]*$/`.\n *\n * @param value - The string to validate\n * @param label - Human-readable label for error messages\n * @throws {IdentifierError} If the value is not valid\n */\nexport function validatePluginIdentifier(value: string, label = \"plugin identifier\"): void {\n\tif (!value || typeof value !== \"string\") {\n\t\tthrow new IdentifierError(`${label} must be a non-empty string`, String(value));\n\t}\n\n\tif (value.length > MAX_IDENTIFIER_LENGTH) {\n\t\tthrow new IdentifierError(\n\t\t\t`${label} must be ${MAX_IDENTIFIER_LENGTH} characters or less, got ${value.length}`,\n\t\t\tvalue,\n\t\t);\n\t}\n\n\tif (!PLUGIN_IDENTIFIER_PATTERN.test(value)) {\n\t\tthrow new IdentifierError(`${label} must match /^[a-z][a-z0-9_-]*$/ (got \"${value}\")`, value);\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;AAcA,MAAM,qBAAqB;;;;;AAM3B,MAAM,6BAA6B;;;;;AAMnC,MAAM,4BAA4B;;;;;AAMlC,MAAM,wBAAwB;;;;AAK9B,IAAa,kBAAb,cAAqC,MAAM;CAC1C,YACC,SACA,AAAO,YACN;AACD,QAAM,QAAQ;EAFP;AAGP,OAAK,OAAO;;;;;;;;;;;;;;;;;;;;AAqBd,SAAgB,mBAAmB,OAAe,QAAQ,cAAoB;AAC7E,KAAI,CAAC,SAAS,OAAO,UAAU,SAC9B,OAAM,IAAI,gBAAgB,GAAG,MAAM,8BAA8B,OAAO,MAAM,CAAC;AAGhF,KAAI,MAAM,SAAS,sBAClB,OAAM,IAAI,gBACT,GAAG,MAAM,WAAW,sBAAsB,2BAA2B,MAAM,UAC3E,MACA;AAGF,KAAI,CAAC,mBAAmB,KAAK,MAAM,CAClC,OAAM,IAAI,gBAAgB,GAAG,MAAM,wCAAwC,MAAM,KAAK,MAAM;;;;;;;;;;;;;AAe9F,SAAgB,sBAAsB,OAAe,QAAQ,mBAAyB;AACrF,KAAI,CAAC,SAAS,OAAO,UAAU,SAC9B,OAAM,IAAI,gBAAgB,GAAG,MAAM,8BAA8B,OAAO,MAAM,CAAC;AAGhF,KAAI,MAAM,SAAS,sBAClB,OAAM,IAAI,gBACT,GAAG,MAAM,WAAW,sBAAsB,2BAA2B,MAAM,UAC3E,MACA;AAGF,KAAI,CAAC,2BAA2B,KAAK,MAAM,CAC1C,OAAM,IAAI,gBACT,GAAG,MAAM,8CAA8C,MAAM,KAC7D,MACA;;;;;;;;;;;;AAcH,SAAgB,yBAAyB,OAAe,QAAQ,qBAA2B;AAC1F,KAAI,CAAC,SAAS,OAAO,UAAU,SAC9B,OAAM,IAAI,gBAAgB,GAAG,MAAM,8BAA8B,OAAO,MAAM,CAAC;AAGhF,KAAI,MAAM,SAAS,sBAClB,OAAM,IAAI,gBACT,GAAG,MAAM,WAAW,sBAAsB,2BAA2B,MAAM,UAC3E,MACA;AAGF,KAAI,CAAC,0BAA0B,KAAK,MAAM,CACzC,OAAM,IAAI,gBAAgB,GAAG,MAAM,yCAAyC,MAAM,KAAK,MAAM"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { t as Database } from "./types-
|
|
2
|
-
import { u as FieldType } from "./types-
|
|
3
|
-
import { d as Storage } from "./types-
|
|
1
|
+
import { t as Database } from "./types-DRjfYOEv.mjs";
|
|
2
|
+
import { u as FieldType } from "./types-DPfzHnjW.mjs";
|
|
3
|
+
import { d as Storage } from "./types-C1-PVaS_.mjs";
|
|
4
4
|
import { Kysely } from "kysely";
|
|
5
5
|
|
|
6
6
|
//#region src/settings/types.d.ts
|
|
@@ -375,4 +375,4 @@ declare function loadUserSeed(): Promise<SeedFile | null>;
|
|
|
375
375
|
declare function validateSeed(data: unknown): ValidationResult;
|
|
376
376
|
//#endregion
|
|
377
377
|
export { SiteSettingKey as C, SeoSettings as S, SeedTaxonomyTerm as _, applySeed as a, ValidationResult as b, SeedCollection as c, SeedFile as d, SeedMenu as f, SeedTaxonomy as g, SeedSection as h, defaultSeed as i, SeedContentEntry as l, SeedRedirect as m, loadSeed as n, SeedApplyOptions as o, SeedMenuItem as p, loadUserSeed as r, SeedApplyResult as s, validateSeed as t, SeedField as u, SeedWidget as v, SiteSettings as w, MediaReference as x, SeedWidgetArea as y };
|
|
378
|
-
//# sourceMappingURL=validate-
|
|
378
|
+
//# sourceMappingURL=validate-bfg9OR6N.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate-
|
|
1
|
+
{"version":3,"file":"validate-bfg9OR6N.d.mts","names":[],"sources":["../src/settings/types.ts","../src/seed/types.ts","../src/seed/apply.ts","../src/seed/default.ts","../src/seed/load.ts","../src/seed/validate.ts"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version-REAapfsU.mjs","names":[],"sources":["../src/version.ts"],"sourcesContent":["/**\n * Build-time version constants, replaced by tsdown/Vite `define`.\n * Falls back to \"dev\" when running uncompiled (tests, dev).\n */\n\ndeclare const __EMDASH_VERSION__: string;\ndeclare const __EMDASH_COMMIT__: string;\n\nexport const VERSION: string =\n\ttypeof __EMDASH_VERSION__ !== \"undefined\" ? __EMDASH_VERSION__ : \"dev\";\n\nexport const COMMIT: string = typeof __EMDASH_COMMIT__ !== \"undefined\" ? __EMDASH_COMMIT__ : \"dev\";\n"],"mappings":";AAQA,MAAa;AAGb,MAAa"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "emdash",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Astro-native CMS with WordPress migration support",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.mjs",
|
|
@@ -178,9 +178,9 @@
|
|
|
178
178
|
"ulidx": "^2.4.1",
|
|
179
179
|
"upng-js": "^2.1.0",
|
|
180
180
|
"zod": "^4.3.5",
|
|
181
|
-
"@emdash-cms/admin": "0.
|
|
182
|
-
"@emdash-cms/auth": "0.
|
|
183
|
-
"@emdash-cms/gutenberg-to-portable-text": "0.
|
|
181
|
+
"@emdash-cms/admin": "0.3.0",
|
|
182
|
+
"@emdash-cms/auth": "0.3.0",
|
|
183
|
+
"@emdash-cms/gutenberg-to-portable-text": "0.3.0"
|
|
184
184
|
},
|
|
185
185
|
"optionalDependencies": {
|
|
186
186
|
"@libsql/kysely-libsql": "^0.4.0",
|
|
@@ -208,7 +208,7 @@
|
|
|
208
208
|
"vite": "^6.0.0",
|
|
209
209
|
"vitest": "^4.0.18",
|
|
210
210
|
"zod-openapi": "^5.4.6",
|
|
211
|
-
"@emdash-cms/blocks": "0.
|
|
211
|
+
"@emdash-cms/blocks": "0.3.0"
|
|
212
212
|
},
|
|
213
213
|
"repository": {
|
|
214
214
|
"type": "git",
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
import type { Kysely } from "kysely";
|
|
6
6
|
|
|
7
|
+
import { OptionsRepository } from "../../database/repositories/options.js";
|
|
7
8
|
import {
|
|
8
9
|
RedirectRepository,
|
|
9
10
|
type Redirect,
|
|
@@ -12,6 +13,7 @@ import {
|
|
|
12
13
|
} from "../../database/repositories/redirect.js";
|
|
13
14
|
import type { FindManyResult } from "../../database/repositories/types.js";
|
|
14
15
|
import type { Database } from "../../database/types.js";
|
|
16
|
+
import { wouldCreateLoop, detectLoops, type RedirectEdge } from "../../redirects/loops.js";
|
|
15
17
|
import { validatePattern, validateDestinationParams, isPattern } from "../../redirects/patterns.js";
|
|
16
18
|
import type { ApiResult } from "../types.js";
|
|
17
19
|
|
|
@@ -32,11 +34,20 @@ export async function handleRedirectList(
|
|
|
32
34
|
enabled?: boolean;
|
|
33
35
|
auto?: boolean;
|
|
34
36
|
},
|
|
35
|
-
): Promise<ApiResult<FindManyResult<Redirect
|
|
37
|
+
): Promise<ApiResult<FindManyResult<Redirect> & { loopRedirectIds?: string[] }>> {
|
|
36
38
|
try {
|
|
37
39
|
const repo = new RedirectRepository(db);
|
|
38
40
|
const result = await repo.findMany(params);
|
|
39
|
-
|
|
41
|
+
|
|
42
|
+
const loopRedirectIds = await getLoopRedirectIds(db);
|
|
43
|
+
|
|
44
|
+
return {
|
|
45
|
+
success: true,
|
|
46
|
+
data: {
|
|
47
|
+
...result,
|
|
48
|
+
...(loopRedirectIds.length > 0 ? { loopRedirectIds } : {}),
|
|
49
|
+
},
|
|
50
|
+
};
|
|
40
51
|
} catch {
|
|
41
52
|
return {
|
|
42
53
|
success: false,
|
|
@@ -105,6 +116,13 @@ export async function handleRedirectCreate(
|
|
|
105
116
|
};
|
|
106
117
|
}
|
|
107
118
|
|
|
119
|
+
// Check for redirect loops (skip if creating as disabled)
|
|
120
|
+
if (input.enabled !== false) {
|
|
121
|
+
const edges = toEdges(await repo.findAllEnabled());
|
|
122
|
+
const loopPath = wouldCreateLoop(input.source, input.destination, edges);
|
|
123
|
+
if (loopPath) return loopError(loopPath);
|
|
124
|
+
}
|
|
125
|
+
|
|
108
126
|
const redirect = await repo.create({
|
|
109
127
|
source: input.source,
|
|
110
128
|
destination: input.destination,
|
|
@@ -219,7 +237,8 @@ export async function handleRedirectUpdate(
|
|
|
219
237
|
}
|
|
220
238
|
|
|
221
239
|
// Validate destination params against the (possibly updated) source
|
|
222
|
-
|
|
240
|
+
const newSourceIsPattern = isPattern(newSource);
|
|
241
|
+
if (newSourceIsPattern) {
|
|
223
242
|
const destError = validateDestinationParams(newSource, newDest);
|
|
224
243
|
if (destError) {
|
|
225
244
|
return {
|
|
@@ -229,6 +248,13 @@ export async function handleRedirectUpdate(
|
|
|
229
248
|
}
|
|
230
249
|
}
|
|
231
250
|
|
|
251
|
+
// Check for redirect loops if source or destination changed
|
|
252
|
+
if (input.source !== undefined || input.destination !== undefined) {
|
|
253
|
+
const edges = toEdges(await repo.findAllEnabled());
|
|
254
|
+
const loopPath = wouldCreateLoop(newSource, newDest, edges, id);
|
|
255
|
+
if (loopPath) return loopError(loopPath);
|
|
256
|
+
}
|
|
257
|
+
|
|
232
258
|
const updated = await repo.update(id, {
|
|
233
259
|
source: input.source,
|
|
234
260
|
destination: input.destination,
|
|
@@ -244,6 +270,9 @@ export async function handleRedirectUpdate(
|
|
|
244
270
|
};
|
|
245
271
|
}
|
|
246
272
|
|
|
273
|
+
// Recompute cache — redirect was modified, so re-fetch
|
|
274
|
+
await updateLoopCache(db);
|
|
275
|
+
|
|
247
276
|
return { success: true, data: updated };
|
|
248
277
|
} catch {
|
|
249
278
|
return {
|
|
@@ -271,6 +300,8 @@ export async function handleRedirectDelete(
|
|
|
271
300
|
};
|
|
272
301
|
}
|
|
273
302
|
|
|
303
|
+
await updateLoopCache(db);
|
|
304
|
+
|
|
274
305
|
return { success: true, data: { deleted: true } };
|
|
275
306
|
} catch {
|
|
276
307
|
return {
|
|
@@ -280,6 +311,67 @@ export async function handleRedirectDelete(
|
|
|
280
311
|
}
|
|
281
312
|
}
|
|
282
313
|
|
|
314
|
+
// ---------------------------------------------------------------------------
|
|
315
|
+
// Loop analysis cache
|
|
316
|
+
// ---------------------------------------------------------------------------
|
|
317
|
+
|
|
318
|
+
function loopError(loopPath: string[]): ApiResult<never> {
|
|
319
|
+
const hops = loopPath
|
|
320
|
+
.slice(0, -1)
|
|
321
|
+
.map((p, i) => `${p} \u2192 ${loopPath[i + 1]!}`)
|
|
322
|
+
.join("\n");
|
|
323
|
+
return {
|
|
324
|
+
success: false,
|
|
325
|
+
error: {
|
|
326
|
+
code: "VALIDATION_ERROR",
|
|
327
|
+
message: `This redirect would create a loop:\n${hops}`,
|
|
328
|
+
},
|
|
329
|
+
};
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
function toEdges(redirects: Redirect[]): RedirectEdge[] {
|
|
333
|
+
return redirects.map((r) => ({
|
|
334
|
+
id: r.id,
|
|
335
|
+
source: r.source,
|
|
336
|
+
destination: r.destination,
|
|
337
|
+
enabled: r.enabled,
|
|
338
|
+
isPattern: r.isPattern,
|
|
339
|
+
}));
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
const LOOP_CACHE_KEY = "_redirect_loop_ids";
|
|
343
|
+
|
|
344
|
+
/**
|
|
345
|
+
* Recompute loop redirect IDs and store in the options table.
|
|
346
|
+
*/
|
|
347
|
+
async function updateLoopCache(db: Kysely<Database>): Promise<void> {
|
|
348
|
+
try {
|
|
349
|
+
const options = new OptionsRepository(db);
|
|
350
|
+
const edges = toEdges(await new RedirectRepository(db).findAllEnabled());
|
|
351
|
+
const loopRedirectIds = detectLoops(edges);
|
|
352
|
+
await options.set(LOOP_CACHE_KEY, loopRedirectIds);
|
|
353
|
+
} catch (error) {
|
|
354
|
+
console.error("Failed to update redirect loop cache:", error);
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
/**
|
|
359
|
+
* Get loop redirect IDs from cache, computing lazily on first access.
|
|
360
|
+
*/
|
|
361
|
+
async function getLoopRedirectIds(db: Kysely<Database>): Promise<string[]> {
|
|
362
|
+
try {
|
|
363
|
+
const options = new OptionsRepository(db);
|
|
364
|
+
const cached = await options.get<string[]>(LOOP_CACHE_KEY);
|
|
365
|
+
if (cached !== null) return cached;
|
|
366
|
+
|
|
367
|
+
// First access after upgrade — compute and cache
|
|
368
|
+
await updateLoopCache(db);
|
|
369
|
+
return (await options.get<string[]>(LOOP_CACHE_KEY)) ?? [];
|
|
370
|
+
} catch {
|
|
371
|
+
return [];
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
|
|
283
375
|
// ---------------------------------------------------------------------------
|
|
284
376
|
// 404 Log
|
|
285
377
|
// ---------------------------------------------------------------------------
|
|
@@ -13,6 +13,7 @@ import { fileURLToPath } from "node:url";
|
|
|
13
13
|
import type { AstroConfig } from "astro";
|
|
14
14
|
import type { Plugin } from "vite";
|
|
15
15
|
|
|
16
|
+
import { COMMIT, VERSION } from "../../version.js";
|
|
16
17
|
import type { EmDashConfig, PluginDescriptor } from "./runtime.js";
|
|
17
18
|
import {
|
|
18
19
|
VIRTUAL_CONFIG_ID,
|
|
@@ -278,6 +279,12 @@ export function createViteConfig(
|
|
|
278
279
|
const useSource = adminSourcePath !== undefined;
|
|
279
280
|
|
|
280
281
|
return {
|
|
282
|
+
// Astro SSR routes resolve version.ts from source (not tsdown dist),
|
|
283
|
+
// so Vite needs its own define pass for the __EMDASH_*__ placeholders.
|
|
284
|
+
define: {
|
|
285
|
+
__EMDASH_VERSION__: JSON.stringify(VERSION),
|
|
286
|
+
__EMDASH_COMMIT__: JSON.stringify(COMMIT),
|
|
287
|
+
},
|
|
281
288
|
resolve: {
|
|
282
289
|
dedupe: ["@emdash-cms/admin", "react", "react-dom"],
|
|
283
290
|
// Array form so more-specific entries are checked first.
|
|
@@ -286,10 +293,6 @@ export function createViteConfig(
|
|
|
286
293
|
// "@emdash-cms/admin/styles.css" through the source directory.
|
|
287
294
|
alias: [
|
|
288
295
|
{ find: "@emdash-cms/admin/styles.css", replacement: resolve(adminDistPath, "styles.css") },
|
|
289
|
-
{
|
|
290
|
-
find: "@emdash-cms/admin/locales/*",
|
|
291
|
-
replacement: resolve(adminDistPath, "locales", "*"),
|
|
292
|
-
},
|
|
293
296
|
{ find: "@emdash-cms/admin", replacement: useSource ? adminSourcePath : adminDistPath },
|
|
294
297
|
],
|
|
295
298
|
},
|
|
@@ -12,10 +12,10 @@ import AdminWrapper from "emdash/routes/PluginRegistry";
|
|
|
12
12
|
|
|
13
13
|
export const prerender = false;
|
|
14
14
|
|
|
15
|
-
import { resolveLocale } from "@emdash-cms/admin/locales";
|
|
15
|
+
import { resolveLocale, loadMessages } from "@emdash-cms/admin/locales";
|
|
16
16
|
|
|
17
17
|
const resolvedLocale = resolveLocale(Astro.request);
|
|
18
|
-
const
|
|
18
|
+
const messages = await loadMessages(resolvedLocale);
|
|
19
19
|
---
|
|
20
20
|
|
|
21
21
|
<!doctype html>
|
|
@@ -15,6 +15,7 @@ import { getSiteBaseUrl } from "#api/site-url.js";
|
|
|
15
15
|
import { sendCommentNotification } from "#comments/notifications.js";
|
|
16
16
|
import { createComment, type CommentHookRunner } from "#comments/service.js";
|
|
17
17
|
import { CommentRepository } from "#db/repositories/comment.js";
|
|
18
|
+
import { validateIdentifier } from "#db/validate.js";
|
|
18
19
|
import { extractRequestMeta } from "#plugins/request-meta.js";
|
|
19
20
|
import type { CollectionCommentSettings, ModerationDecision } from "#plugins/types.js";
|
|
20
21
|
|
|
@@ -106,6 +107,7 @@ export const POST: APIRoute = async ({ params, request, locals }) => {
|
|
|
106
107
|
}
|
|
107
108
|
|
|
108
109
|
// Verify the content item exists, is published, and not soft-deleted
|
|
110
|
+
validateIdentifier(collection, "collection");
|
|
109
111
|
const contentRow = await emdash.db
|
|
110
112
|
.selectFrom(`ec_${collection}` as never)
|
|
111
113
|
.select(["id" as never, "slug" as never, "author_id" as never, "published_at" as never])
|
|
@@ -17,6 +17,7 @@ import { requirePerm } from "#api/authorize.js";
|
|
|
17
17
|
import { apiError, apiSuccess, handleError } from "#api/error.js";
|
|
18
18
|
import { isParseError, parseBody } from "#api/parse.js";
|
|
19
19
|
import { wpRewriteUrlsBody } from "#api/schemas.js";
|
|
20
|
+
import { validateIdentifier } from "#db/validate.js";
|
|
20
21
|
import { normalizeMediaValue } from "#media/normalize.js";
|
|
21
22
|
import type { MediaProvider } from "#media/types.js";
|
|
22
23
|
import type { EmDashHandlers } from "#types";
|
|
@@ -280,6 +281,7 @@ async function rewriteUrls(
|
|
|
280
281
|
continue;
|
|
281
282
|
|
|
282
283
|
// Get table name
|
|
284
|
+
validateIdentifier(collection.slug, "collection slug");
|
|
283
285
|
const tableName = `ec_${collection.slug}`;
|
|
284
286
|
|
|
285
287
|
try {
|
|
@@ -11,6 +11,7 @@ import type { APIRoute } from "astro";
|
|
|
11
11
|
|
|
12
12
|
import { getAuthMode } from "#auth/mode.js";
|
|
13
13
|
|
|
14
|
+
import { COMMIT, VERSION } from "../../../version.js";
|
|
14
15
|
import type { EmDashManifest } from "../../types.js";
|
|
15
16
|
|
|
16
17
|
export const prerender = false;
|
|
@@ -43,7 +44,8 @@ export const GET: APIRoute = async ({ locals }) => {
|
|
|
43
44
|
signupEnabled,
|
|
44
45
|
}
|
|
45
46
|
: {
|
|
46
|
-
version:
|
|
47
|
+
version: VERSION,
|
|
48
|
+
commit: COMMIT,
|
|
47
49
|
hash: "default",
|
|
48
50
|
collections: {},
|
|
49
51
|
plugins: {},
|
|
@@ -32,20 +32,34 @@ import type { StorageDescriptor, S3StorageConfig, LocalStorageConfig } from "./t
|
|
|
32
32
|
/**
|
|
33
33
|
* S3-compatible storage adapter
|
|
34
34
|
*
|
|
35
|
-
* Works with AWS S3, Cloudflare R2 (via S3 API),
|
|
35
|
+
* Works with AWS S3, Cloudflare R2 (via S3 API), MinIO, etc.
|
|
36
|
+
*
|
|
37
|
+
* Any field omitted here is resolved from the matching `S3_*` environment
|
|
38
|
+
* variable when the container starts (`S3_ENDPOINT`, `S3_BUCKET`,
|
|
39
|
+
* `S3_ACCESS_KEY_ID`, `S3_SECRET_ACCESS_KEY`, `S3_REGION`, `S3_PUBLIC_URL`).
|
|
40
|
+
* Explicit values always take precedence over env vars.
|
|
41
|
+
*
|
|
42
|
+
* Note: env var resolution reads `process.env` on Node at runtime.
|
|
43
|
+
* Workers users should continue passing explicit values to `s3({...})`.
|
|
36
44
|
*
|
|
37
45
|
* @example
|
|
38
46
|
* ```ts
|
|
47
|
+
* // All fields from env (container deployments)
|
|
48
|
+
* storage: s3()
|
|
49
|
+
*
|
|
50
|
+
* // Mix: CDN from config, credentials from env
|
|
51
|
+
* storage: s3({ publicUrl: "https://cdn.example.com" })
|
|
52
|
+
*
|
|
53
|
+
* // All explicit (unchanged from before)
|
|
39
54
|
* storage: s3({
|
|
40
55
|
* endpoint: "https://xxx.r2.cloudflarestorage.com",
|
|
41
56
|
* bucket: "media",
|
|
42
|
-
* accessKeyId: process.env.R2_ACCESS_KEY_ID
|
|
43
|
-
* secretAccessKey: process.env.R2_SECRET_ACCESS_KEY
|
|
44
|
-
* publicUrl: "https://cdn.example.com", // optional CDN
|
|
57
|
+
* accessKeyId: process.env.R2_ACCESS_KEY_ID,
|
|
58
|
+
* secretAccessKey: process.env.R2_SECRET_ACCESS_KEY,
|
|
45
59
|
* })
|
|
46
60
|
* ```
|
|
47
61
|
*/
|
|
48
|
-
export function s3(config: S3StorageConfig): StorageDescriptor {
|
|
62
|
+
export function s3(config: Partial<S3StorageConfig> = {}): StorageDescriptor {
|
|
49
63
|
return {
|
|
50
64
|
entrypoint: "emdash/storage/s3",
|
|
51
65
|
config,
|
|
@@ -39,10 +39,18 @@ export interface S3StorageConfig {
|
|
|
39
39
|
endpoint: string;
|
|
40
40
|
/** Bucket name */
|
|
41
41
|
bucket: string;
|
|
42
|
-
/**
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
42
|
+
/**
|
|
43
|
+
* Access key ID.
|
|
44
|
+
* May be resolved from the `S3_ACCESS_KEY_ID` env var at runtime on Node.
|
|
45
|
+
* Must be provided together with `secretAccessKey`, or both omitted.
|
|
46
|
+
*/
|
|
47
|
+
accessKeyId?: string;
|
|
48
|
+
/**
|
|
49
|
+
* Secret access key.
|
|
50
|
+
* May be resolved from the `S3_SECRET_ACCESS_KEY` env var at runtime on Node.
|
|
51
|
+
* Must be provided together with `accessKeyId`, or both omitted.
|
|
52
|
+
*/
|
|
53
|
+
secretAccessKey?: string;
|
|
46
54
|
/** Optional region (defaults to "auto") */
|
|
47
55
|
region?: string;
|
|
48
56
|
/** Optional public URL prefix for CDN */
|
package/src/astro/types.ts
CHANGED
package/src/bylines/index.ts
CHANGED
|
@@ -199,8 +199,8 @@ async function getAuthorId(
|
|
|
199
199
|
collection: string,
|
|
200
200
|
entryId: string,
|
|
201
201
|
): Promise<string | null> {
|
|
202
|
+
validateIdentifier(collection, "collection");
|
|
202
203
|
const tableName = `ec_${collection}`;
|
|
203
|
-
validateIdentifier(tableName, "content table");
|
|
204
204
|
|
|
205
205
|
const result = await sql<{ author_id: string | null }>`
|
|
206
206
|
SELECT author_id FROM ${sql.ref(tableName)}
|
|
@@ -220,8 +220,8 @@ async function getAuthorIds(
|
|
|
220
220
|
collection: string,
|
|
221
221
|
entryIds: string[],
|
|
222
222
|
): Promise<Map<string, string>> {
|
|
223
|
+
validateIdentifier(collection, "collection");
|
|
223
224
|
const tableName = `ec_${collection}`;
|
|
224
|
-
validateIdentifier(tableName, "content table");
|
|
225
225
|
|
|
226
226
|
const map = new Map<string, string>();
|
|
227
227
|
for (const chunk of chunks(entryIds, SQL_BATCH_SIZE)) {
|
|
@@ -14,6 +14,7 @@ import type { ColumnDataType, Kysely, RawBuilder } from "kysely";
|
|
|
14
14
|
import { sql } from "kysely";
|
|
15
15
|
|
|
16
16
|
import type { DatabaseDialectType } from "../db/adapters.js";
|
|
17
|
+
import { validateIdentifier, validateJsonFieldName } from "./validate.js";
|
|
17
18
|
|
|
18
19
|
export type { DatabaseDialectType };
|
|
19
20
|
|
|
@@ -131,6 +132,8 @@ export function binaryType(db: Kysely<any>): ColumnDataType {
|
|
|
131
132
|
*/
|
|
132
133
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- accepts any Kysely instance
|
|
133
134
|
export function jsonExtractExpr(db: Kysely<any>, column: string, path: string): string {
|
|
135
|
+
validateIdentifier(column, "JSON column name");
|
|
136
|
+
validateJsonFieldName(path, "JSON path");
|
|
134
137
|
if (isPostgres(db)) {
|
|
135
138
|
return `${column}->>'${path}'`;
|
|
136
139
|
}
|