canopycms-cdk 0.0.63 → 0.0.65
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/constructs/asset-support.d.ts +21 -2
- package/dist/constructs/asset-support.js +62 -4
- package/dist/constructs/cms-distribution.d.ts +41 -2
- package/dist/constructs/cms-distribution.js +60 -5
- package/dist/constructs/cms-service.d.ts +40 -2
- package/dist/constructs/cms-service.js +49 -6
- package/dist/index.d.ts +8 -9
- package/dist/index.js +4 -5
- package/dist/worker.d.ts +0 -1
- package/dist/worker.js +0 -1
- package/lambda/asset-transform/dist/handler.js +146 -53
- package/package.json +6 -5
- package/worker/dist/index.js +591 -360
- package/dist/constructs/asset-support.d.ts.map +0 -1
- package/dist/constructs/asset-support.js.map +0 -1
- package/dist/constructs/cms-distribution.d.ts.map +0 -1
- package/dist/constructs/cms-distribution.js.map +0 -1
- package/dist/constructs/cms-service.d.ts.map +0 -1
- package/dist/constructs/cms-service.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/worker.d.ts.map +0 -1
- package/dist/worker.js.map +0 -1
|
@@ -4279,7 +4279,12 @@ var init_field = __esm({
|
|
|
4279
4279
|
collections: external_exports.array(external_exports.string().min(1)).min(1).optional(),
|
|
4280
4280
|
entryTypes: external_exports.array(external_exports.string().min(1)).min(1).optional(),
|
|
4281
4281
|
displayField: external_exports.string().min(1).optional(),
|
|
4282
|
-
options: external_exports.array(referenceOptionSchema).optional()
|
|
4282
|
+
options: external_exports.array(referenceOptionSchema).optional(),
|
|
4283
|
+
// Must be listed here, not just on ReferenceFieldConfig: zod strips unknown keys by
|
|
4284
|
+
// default, so a consumer that adopts this schema's parse output would silently delete a
|
|
4285
|
+
// runtime-consumed flag and the feature would no-op with no error. (`resolvedSchema` is
|
|
4286
|
+
// absent on purpose — it is type-inference-only and stripping it changes no behavior.)
|
|
4287
|
+
includeBody: external_exports.boolean().optional()
|
|
4283
4288
|
});
|
|
4284
4289
|
fieldHolder = [external_exports.never()];
|
|
4285
4290
|
blockSchema = external_exports.object({
|
|
@@ -4394,7 +4399,7 @@ var init_media = __esm({
|
|
|
4394
4399
|
});
|
|
4395
4400
|
|
|
4396
4401
|
// ../canopycms/src/config/schemas/config.ts
|
|
4397
|
-
var defaultBranchAccessSchema, defaultPathAccessLevelSchema, defaultPathAccessLevelsSchema, defaultPathAccessSchema, defaultBaseBranchSchema, defaultRemoteNameSchema, defaultRemoteUrlSchema, gitBotAuthorNameSchema, gitBotAuthorEmailSchema, githubTokenEnvVarSchema, operatingModeSchema, deployedAsSchema, contentRootSchema, sourceRootSchema, deploymentNameSchema, devContentSyncSchema, devConfigSchema, editorConfigSchema, CanopyConfigSchema;
|
|
4402
|
+
var defaultBranchAccessSchema, defaultPathAccessLevelSchema, defaultPathAccessLevelsSchema, defaultPathAccessSchema, defaultBaseBranchSchema, defaultRemoteNameSchema, defaultRemoteUrlSchema, gitBotAuthorNameSchema, gitBotAuthorEmailSchema, githubTokenEnvVarSchema, operatingModeSchema, deployedAsSchema, contentRootSchema, sourceRootSchema, basePathSchema, deploymentNameSchema, devContentSyncSchema, devConfigSchema, editorConfigSchema, CanopyConfigSchema;
|
|
4398
4403
|
var init_config = __esm({
|
|
4399
4404
|
"../canopycms/src/config/schemas/config.ts"() {
|
|
4400
4405
|
"use strict";
|
|
@@ -4419,6 +4424,9 @@ var init_config = __esm({
|
|
|
4419
4424
|
deployedAsSchema = external_exports.enum(["static", "server"]).default("server");
|
|
4420
4425
|
contentRootSchema = relativePathSchema.default("content");
|
|
4421
4426
|
sourceRootSchema = external_exports.string().min(1).optional();
|
|
4427
|
+
basePathSchema = external_exports.string().transform((value) => value.trim()).refine((value) => value.length > 0, {
|
|
4428
|
+
message: "basePath must not be empty or only whitespace"
|
|
4429
|
+
}).optional();
|
|
4422
4430
|
deploymentNameSchema = external_exports.string().default("prod");
|
|
4423
4431
|
devContentSyncSchema = external_exports.enum(["off", "warn"]).default("warn");
|
|
4424
4432
|
devConfigSchema = external_exports.object({
|
|
@@ -4481,6 +4489,7 @@ var init_config = __esm({
|
|
|
4481
4489
|
deploymentName: deploymentNameSchema.optional(),
|
|
4482
4490
|
contentRoot: contentRootSchema.default("content"),
|
|
4483
4491
|
sourceRoot: sourceRootSchema.optional(),
|
|
4492
|
+
basePath: basePathSchema,
|
|
4484
4493
|
editor: editorConfigSchema.optional(),
|
|
4485
4494
|
authPlugin: external_exports.custom().optional(),
|
|
4486
4495
|
entryLinkUrl: external_exports.custom().optional(),
|
|
@@ -10649,10 +10658,10 @@ var require_stringify = __commonJS({
|
|
|
10649
10658
|
data = Object.assign({}, file.data, data);
|
|
10650
10659
|
const open = opts.delimiters[0];
|
|
10651
10660
|
const close = opts.delimiters[1];
|
|
10652
|
-
const
|
|
10661
|
+
const matter4 = engine.stringify(data, options2).trim();
|
|
10653
10662
|
let buf = "";
|
|
10654
|
-
if (
|
|
10655
|
-
buf = newline(open) + newline(
|
|
10663
|
+
if (matter4 !== "{}") {
|
|
10664
|
+
buf = newline(open) + newline(matter4) + newline(close);
|
|
10656
10665
|
}
|
|
10657
10666
|
if (typeof file.excerpt === "string" && file.excerpt !== "") {
|
|
10658
10667
|
if (str2.indexOf(file.excerpt.trim()) === -1) {
|
|
@@ -10758,19 +10767,19 @@ var require_gray_matter = __commonJS({
|
|
|
10758
10767
|
var toFile = require_to_file();
|
|
10759
10768
|
var parse3 = require_parse();
|
|
10760
10769
|
var utils = require_utils();
|
|
10761
|
-
function
|
|
10770
|
+
function matter4(input, options2) {
|
|
10762
10771
|
if (input === "") {
|
|
10763
10772
|
return { data: {}, content: input, excerpt: "", orig: input };
|
|
10764
10773
|
}
|
|
10765
10774
|
let file = toFile(input);
|
|
10766
|
-
const cached =
|
|
10775
|
+
const cached = matter4.cache[file.content];
|
|
10767
10776
|
if (!options2) {
|
|
10768
10777
|
if (cached) {
|
|
10769
10778
|
file = Object.assign({}, cached);
|
|
10770
10779
|
file.orig = cached.orig;
|
|
10771
10780
|
return file;
|
|
10772
10781
|
}
|
|
10773
|
-
|
|
10782
|
+
matter4.cache[file.content] = file;
|
|
10774
10783
|
}
|
|
10775
10784
|
return parseMatter(file, options2);
|
|
10776
10785
|
}
|
|
@@ -10792,7 +10801,7 @@ var require_gray_matter = __commonJS({
|
|
|
10792
10801
|
}
|
|
10793
10802
|
str2 = str2.slice(openLen);
|
|
10794
10803
|
const len = str2.length;
|
|
10795
|
-
const language =
|
|
10804
|
+
const language = matter4.language(str2, opts);
|
|
10796
10805
|
if (language.name) {
|
|
10797
10806
|
file.language = language.name;
|
|
10798
10807
|
str2 = str2.slice(language.raw.length);
|
|
@@ -10827,24 +10836,24 @@ var require_gray_matter = __commonJS({
|
|
|
10827
10836
|
}
|
|
10828
10837
|
return file;
|
|
10829
10838
|
}
|
|
10830
|
-
|
|
10831
|
-
|
|
10832
|
-
if (typeof file === "string") file =
|
|
10839
|
+
matter4.engines = engines2;
|
|
10840
|
+
matter4.stringify = function(file, data, options2) {
|
|
10841
|
+
if (typeof file === "string") file = matter4(file, options2);
|
|
10833
10842
|
return stringify(file, data, options2);
|
|
10834
10843
|
};
|
|
10835
|
-
|
|
10844
|
+
matter4.read = function(filepath, options2) {
|
|
10836
10845
|
const str2 = fs.readFileSync(filepath, "utf8");
|
|
10837
|
-
const file =
|
|
10846
|
+
const file = matter4(str2, options2);
|
|
10838
10847
|
file.path = filepath;
|
|
10839
10848
|
return file;
|
|
10840
10849
|
};
|
|
10841
|
-
|
|
10850
|
+
matter4.test = function(str2, options2) {
|
|
10842
10851
|
return utils.startsWith(str2, defaults2(options2).delimiters[0]);
|
|
10843
10852
|
};
|
|
10844
|
-
|
|
10853
|
+
matter4.language = function(str2, options2) {
|
|
10845
10854
|
const opts = defaults2(options2);
|
|
10846
10855
|
const open = opts.delimiters[0];
|
|
10847
|
-
if (
|
|
10856
|
+
if (matter4.test(str2)) {
|
|
10848
10857
|
str2 = str2.slice(open.length);
|
|
10849
10858
|
}
|
|
10850
10859
|
const language = str2.slice(0, str2.search(/\r?\n/));
|
|
@@ -10853,11 +10862,11 @@ var require_gray_matter = __commonJS({
|
|
|
10853
10862
|
name: language ? language.trim() : ""
|
|
10854
10863
|
};
|
|
10855
10864
|
};
|
|
10856
|
-
|
|
10857
|
-
|
|
10858
|
-
|
|
10865
|
+
matter4.cache = {};
|
|
10866
|
+
matter4.clearCache = function() {
|
|
10867
|
+
matter4.cache = {};
|
|
10859
10868
|
};
|
|
10860
|
-
module2.exports =
|
|
10869
|
+
module2.exports = matter4;
|
|
10861
10870
|
}
|
|
10862
10871
|
});
|
|
10863
10872
|
|
|
@@ -10874,11 +10883,11 @@ var require_identity = __commonJS({
|
|
|
10874
10883
|
var NODE_TYPE = Symbol.for("yaml.node.type");
|
|
10875
10884
|
var isAlias = (node) => !!node && typeof node === "object" && node[NODE_TYPE] === ALIAS;
|
|
10876
10885
|
var isDocument = (node) => !!node && typeof node === "object" && node[NODE_TYPE] === DOC;
|
|
10877
|
-
var
|
|
10886
|
+
var isMap2 = (node) => !!node && typeof node === "object" && node[NODE_TYPE] === MAP;
|
|
10878
10887
|
var isPair = (node) => !!node && typeof node === "object" && node[NODE_TYPE] === PAIR;
|
|
10879
|
-
var
|
|
10880
|
-
var
|
|
10881
|
-
function
|
|
10888
|
+
var isScalar2 = (node) => !!node && typeof node === "object" && node[NODE_TYPE] === SCALAR;
|
|
10889
|
+
var isSeq2 = (node) => !!node && typeof node === "object" && node[NODE_TYPE] === SEQ;
|
|
10890
|
+
function isCollection2(node) {
|
|
10882
10891
|
if (node && typeof node === "object")
|
|
10883
10892
|
switch (node[NODE_TYPE]) {
|
|
10884
10893
|
case MAP:
|
|
@@ -10887,7 +10896,7 @@ var require_identity = __commonJS({
|
|
|
10887
10896
|
}
|
|
10888
10897
|
return false;
|
|
10889
10898
|
}
|
|
10890
|
-
function
|
|
10899
|
+
function isNode2(node) {
|
|
10891
10900
|
if (node && typeof node === "object")
|
|
10892
10901
|
switch (node[NODE_TYPE]) {
|
|
10893
10902
|
case ALIAS:
|
|
@@ -10898,7 +10907,7 @@ var require_identity = __commonJS({
|
|
|
10898
10907
|
}
|
|
10899
10908
|
return false;
|
|
10900
10909
|
}
|
|
10901
|
-
var hasAnchor = (node) => (
|
|
10910
|
+
var hasAnchor = (node) => (isScalar2(node) || isCollection2(node)) && !!node.anchor;
|
|
10902
10911
|
exports2.ALIAS = ALIAS;
|
|
10903
10912
|
exports2.DOC = DOC;
|
|
10904
10913
|
exports2.MAP = MAP;
|
|
@@ -10908,13 +10917,13 @@ var require_identity = __commonJS({
|
|
|
10908
10917
|
exports2.SEQ = SEQ;
|
|
10909
10918
|
exports2.hasAnchor = hasAnchor;
|
|
10910
10919
|
exports2.isAlias = isAlias;
|
|
10911
|
-
exports2.isCollection =
|
|
10920
|
+
exports2.isCollection = isCollection2;
|
|
10912
10921
|
exports2.isDocument = isDocument;
|
|
10913
|
-
exports2.isMap =
|
|
10914
|
-
exports2.isNode =
|
|
10922
|
+
exports2.isMap = isMap2;
|
|
10923
|
+
exports2.isNode = isNode2;
|
|
10915
10924
|
exports2.isPair = isPair;
|
|
10916
|
-
exports2.isScalar =
|
|
10917
|
-
exports2.isSeq =
|
|
10925
|
+
exports2.isScalar = isScalar2;
|
|
10926
|
+
exports2.isSeq = isSeq2;
|
|
10918
10927
|
}
|
|
10919
10928
|
});
|
|
10920
10929
|
|
|
@@ -15015,9 +15024,9 @@ var require_resolve_flow_collection = __commonJS({
|
|
|
15015
15024
|
var blockMsg = "Block collections are not allowed within flow collections";
|
|
15016
15025
|
var isBlock = (token) => token && (token.type === "block-map" || token.type === "block-seq");
|
|
15017
15026
|
function resolveFlowCollection({ composeNode, composeEmptyNode }, ctx, fc, onError2, tag) {
|
|
15018
|
-
const
|
|
15019
|
-
const fcName =
|
|
15020
|
-
const NodeClass = tag?.nodeClass ?? (
|
|
15027
|
+
const isMap2 = fc.start.source === "{";
|
|
15028
|
+
const fcName = isMap2 ? "flow map" : "flow sequence";
|
|
15029
|
+
const NodeClass = tag?.nodeClass ?? (isMap2 ? YAMLMap.YAMLMap : YAMLSeq.YAMLSeq);
|
|
15021
15030
|
const coll = new NodeClass(ctx.schema);
|
|
15022
15031
|
coll.flow = true;
|
|
15023
15032
|
const atRoot = ctx.atRoot;
|
|
@@ -15053,7 +15062,7 @@ var require_resolve_flow_collection = __commonJS({
|
|
|
15053
15062
|
offset = props.end;
|
|
15054
15063
|
continue;
|
|
15055
15064
|
}
|
|
15056
|
-
if (!
|
|
15065
|
+
if (!isMap2 && ctx.options.strict && utilContainsNewline.containsNewline(key))
|
|
15057
15066
|
onError2(
|
|
15058
15067
|
key,
|
|
15059
15068
|
// checked by containsNewline()
|
|
@@ -15093,7 +15102,7 @@ var require_resolve_flow_collection = __commonJS({
|
|
|
15093
15102
|
}
|
|
15094
15103
|
}
|
|
15095
15104
|
}
|
|
15096
|
-
if (!
|
|
15105
|
+
if (!isMap2 && !sep3 && !props.found) {
|
|
15097
15106
|
const valueNode = value ? composeNode(ctx, value, props, onError2) : composeEmptyNode(ctx, props.end, sep3, null, props, onError2);
|
|
15098
15107
|
coll.items.push(valueNode);
|
|
15099
15108
|
offset = valueNode.range[2];
|
|
@@ -15116,7 +15125,7 @@ var require_resolve_flow_collection = __commonJS({
|
|
|
15116
15125
|
startOnNewline: false
|
|
15117
15126
|
});
|
|
15118
15127
|
if (valueProps.found) {
|
|
15119
|
-
if (!
|
|
15128
|
+
if (!isMap2 && !props.found && ctx.options.strict) {
|
|
15120
15129
|
if (sep3)
|
|
15121
15130
|
for (const st of sep3) {
|
|
15122
15131
|
if (st === valueProps.found)
|
|
@@ -15148,7 +15157,7 @@ var require_resolve_flow_collection = __commonJS({
|
|
|
15148
15157
|
const pair = new Pair.Pair(keyNode, valueNode);
|
|
15149
15158
|
if (ctx.options.keepSourceTokens)
|
|
15150
15159
|
pair.srcToken = collItem;
|
|
15151
|
-
if (
|
|
15160
|
+
if (isMap2) {
|
|
15152
15161
|
const map = coll;
|
|
15153
15162
|
if (utilMapIncludes.mapIncludes(ctx, map.items, keyNode))
|
|
15154
15163
|
onError2(keyStart, "DUPLICATE_KEY", "Map keys must be unique");
|
|
@@ -15164,7 +15173,7 @@ var require_resolve_flow_collection = __commonJS({
|
|
|
15164
15173
|
offset = valueNode ? valueNode.range[2] : valueProps.end;
|
|
15165
15174
|
}
|
|
15166
15175
|
}
|
|
15167
|
-
const expectedEnd =
|
|
15176
|
+
const expectedEnd = isMap2 ? "}" : "]";
|
|
15168
15177
|
const [ce, ...ee] = fc.end;
|
|
15169
15178
|
let cePos = offset;
|
|
15170
15179
|
if (ce?.source === expectedEnd)
|
|
@@ -16446,8 +16455,8 @@ var require_cst = __commonJS({
|
|
|
16446
16455
|
var DOCUMENT = "";
|
|
16447
16456
|
var FLOW_END = "";
|
|
16448
16457
|
var SCALAR = "";
|
|
16449
|
-
var
|
|
16450
|
-
var
|
|
16458
|
+
var isCollection2 = (token) => !!token && "items" in token;
|
|
16459
|
+
var isScalar2 = (token) => !!token && (token.type === "scalar" || token.type === "single-quoted-scalar" || token.type === "double-quoted-scalar" || token.type === "block-scalar");
|
|
16451
16460
|
function prettyToken(token) {
|
|
16452
16461
|
switch (token) {
|
|
16453
16462
|
case BOM:
|
|
@@ -16530,8 +16539,8 @@ var require_cst = __commonJS({
|
|
|
16530
16539
|
exports2.DOCUMENT = DOCUMENT;
|
|
16531
16540
|
exports2.FLOW_END = FLOW_END;
|
|
16532
16541
|
exports2.SCALAR = SCALAR;
|
|
16533
|
-
exports2.isCollection =
|
|
16534
|
-
exports2.isScalar =
|
|
16542
|
+
exports2.isCollection = isCollection2;
|
|
16543
|
+
exports2.isScalar = isScalar2;
|
|
16535
16544
|
exports2.prettyToken = prettyToken;
|
|
16536
16545
|
exports2.tokenType = tokenType;
|
|
16537
16546
|
}
|
|
@@ -18044,7 +18053,7 @@ var require_public_api = __commonJS({
|
|
|
18044
18053
|
return docs;
|
|
18045
18054
|
return Object.assign([], { empty: true }, composer$1.streamInfo());
|
|
18046
18055
|
}
|
|
18047
|
-
function
|
|
18056
|
+
function parseDocument2(source, options2 = {}) {
|
|
18048
18057
|
const { lineCounter: lineCounter2, prettyErrors } = parseOptions(options2);
|
|
18049
18058
|
const parser$1 = new parser4.Parser(lineCounter2?.addNewLine);
|
|
18050
18059
|
const composer$1 = new composer.Composer(options2);
|
|
@@ -18070,7 +18079,7 @@ var require_public_api = __commonJS({
|
|
|
18070
18079
|
} else if (options2 === void 0 && reviver && typeof reviver === "object") {
|
|
18071
18080
|
options2 = reviver;
|
|
18072
18081
|
}
|
|
18073
|
-
const doc =
|
|
18082
|
+
const doc = parseDocument2(src, options2);
|
|
18074
18083
|
if (!doc)
|
|
18075
18084
|
return null;
|
|
18076
18085
|
doc.warnings.forEach((warning) => log10.warn(doc.options.logLevel, warning));
|
|
@@ -18106,7 +18115,7 @@ var require_public_api = __commonJS({
|
|
|
18106
18115
|
}
|
|
18107
18116
|
exports2.parse = parse3;
|
|
18108
18117
|
exports2.parseAllDocuments = parseAllDocuments;
|
|
18109
|
-
exports2.parseDocument =
|
|
18118
|
+
exports2.parseDocument = parseDocument2;
|
|
18110
18119
|
exports2.stringify = stringify;
|
|
18111
18120
|
}
|
|
18112
18121
|
});
|
|
@@ -28330,6 +28339,8 @@ init_error();
|
|
|
28330
28339
|
|
|
28331
28340
|
// ../canopycms/src/utils/provisioning-lock.ts
|
|
28332
28341
|
var import_proper_lockfile2 = __toESM(require_proper_lockfile(), 1);
|
|
28342
|
+
init_error();
|
|
28343
|
+
init_logger();
|
|
28333
28344
|
|
|
28334
28345
|
// ../canopycms/src/git-manager.ts
|
|
28335
28346
|
var log4 = createDebugLogger({ prefix: "GitManager" });
|
|
@@ -28338,11 +28349,94 @@ var log4 = createDebugLogger({ prefix: "GitManager" });
|
|
|
28338
28349
|
var log5 = createDebugLogger({ prefix: "BranchWorkspace" });
|
|
28339
28350
|
|
|
28340
28351
|
// ../canopycms/src/content-store.ts
|
|
28352
|
+
var import_gray_matter2 = __toESM(require_gray_matter(), 1);
|
|
28353
|
+
var import_yaml2 = __toESM(require_dist4(), 1);
|
|
28354
|
+
|
|
28355
|
+
// ../canopycms/src/utils/content-serialize.ts
|
|
28341
28356
|
var import_gray_matter = __toESM(require_gray_matter(), 1);
|
|
28342
28357
|
var import_yaml = __toESM(require_dist4(), 1);
|
|
28343
28358
|
|
|
28359
|
+
// ../canopycms/src/validation/block-structural-keys.ts
|
|
28360
|
+
var BLOCK_DISCRIMINATOR_KEYS = ["template", "_type"];
|
|
28361
|
+
var BLOCK_STRUCTURAL_KEYS = new Set(BLOCK_DISCRIMINATOR_KEYS);
|
|
28362
|
+
|
|
28344
28363
|
// ../canopycms/src/utils/content-write-lock.ts
|
|
28345
28364
|
init_error();
|
|
28365
|
+
init_logger();
|
|
28366
|
+
|
|
28367
|
+
// ../canopycms/src/static/seo.ts
|
|
28368
|
+
var DEFAULT_SEO_FIELD_NAMES = {
|
|
28369
|
+
title: "metaTitle",
|
|
28370
|
+
description: "metaDescription",
|
|
28371
|
+
ogImage: "ogImage",
|
|
28372
|
+
ogType: "ogType",
|
|
28373
|
+
canonical: "canonical",
|
|
28374
|
+
noindex: "noindex",
|
|
28375
|
+
twitterCard: "twitterCard"
|
|
28376
|
+
};
|
|
28377
|
+
|
|
28378
|
+
// ../canopycms/src/entry-schema.ts
|
|
28379
|
+
var SEO_GROUP_FIELDS = [
|
|
28380
|
+
{
|
|
28381
|
+
name: DEFAULT_SEO_FIELD_NAMES.title,
|
|
28382
|
+
type: "string",
|
|
28383
|
+
label: "Meta Title",
|
|
28384
|
+
description: "Overrides the page title in search results and social cards.",
|
|
28385
|
+
required: false
|
|
28386
|
+
},
|
|
28387
|
+
{
|
|
28388
|
+
name: DEFAULT_SEO_FIELD_NAMES.description,
|
|
28389
|
+
type: "string",
|
|
28390
|
+
label: "Meta Description",
|
|
28391
|
+
description: "Summary shown under the title in search results.",
|
|
28392
|
+
required: false
|
|
28393
|
+
},
|
|
28394
|
+
{
|
|
28395
|
+
name: DEFAULT_SEO_FIELD_NAMES.ogImage,
|
|
28396
|
+
type: "string",
|
|
28397
|
+
label: "Social Image URL",
|
|
28398
|
+
description: "Image for social cards. Site-relative or absolute.",
|
|
28399
|
+
required: false
|
|
28400
|
+
},
|
|
28401
|
+
{
|
|
28402
|
+
name: DEFAULT_SEO_FIELD_NAMES.ogType,
|
|
28403
|
+
type: "select",
|
|
28404
|
+
label: "OpenGraph Type",
|
|
28405
|
+
options: ["website", "article", "profile"],
|
|
28406
|
+
required: false
|
|
28407
|
+
},
|
|
28408
|
+
{
|
|
28409
|
+
name: DEFAULT_SEO_FIELD_NAMES.canonical,
|
|
28410
|
+
type: "string",
|
|
28411
|
+
label: "Canonical URL",
|
|
28412
|
+
description: "Set only to point at a different canonical copy of this page.",
|
|
28413
|
+
required: false
|
|
28414
|
+
},
|
|
28415
|
+
{
|
|
28416
|
+
name: DEFAULT_SEO_FIELD_NAMES.noindex,
|
|
28417
|
+
type: "boolean",
|
|
28418
|
+
label: "Hide from search engines",
|
|
28419
|
+
description: "Marks the page noindex AND drops it from the sitemap.",
|
|
28420
|
+
required: false
|
|
28421
|
+
},
|
|
28422
|
+
{
|
|
28423
|
+
name: DEFAULT_SEO_FIELD_NAMES.twitterCard,
|
|
28424
|
+
type: "select",
|
|
28425
|
+
label: "Twitter Card",
|
|
28426
|
+
options: ["summary", "summary_large_image"],
|
|
28427
|
+
required: false
|
|
28428
|
+
}
|
|
28429
|
+
];
|
|
28430
|
+
|
|
28431
|
+
// ../canopycms/src/utils/entry-url.ts
|
|
28432
|
+
init_normalize();
|
|
28433
|
+
|
|
28434
|
+
// ../canopycms/src/url-collision.ts
|
|
28435
|
+
init_content_id_index();
|
|
28436
|
+
init_error();
|
|
28437
|
+
|
|
28438
|
+
// ../canopycms/src/utils/typed-filename.ts
|
|
28439
|
+
init_id();
|
|
28346
28440
|
|
|
28347
28441
|
// ../canopycms/src/content-store.ts
|
|
28348
28442
|
init_content_id_index();
|
|
@@ -28359,9 +28453,6 @@ var STALE_LOOKUP = Symbol("stale-index-lookup");
|
|
|
28359
28453
|
init_normalize();
|
|
28360
28454
|
init_error();
|
|
28361
28455
|
|
|
28362
|
-
// ../canopycms/src/utils/entry-url.ts
|
|
28363
|
-
init_normalize();
|
|
28364
|
-
|
|
28365
28456
|
// ../canopycms/src/entry-link-resolver.ts
|
|
28366
28457
|
var log6 = createDebugLogger({ prefix: "EntryLinks" });
|
|
28367
28458
|
var BASE58_CHAR = "[123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]";
|
|
@@ -30025,11 +30116,10 @@ init_config3();
|
|
|
30025
30116
|
init_normalize();
|
|
30026
30117
|
|
|
30027
30118
|
// ../canopycms/src/content-listing.ts
|
|
30028
|
-
var
|
|
30029
|
-
var
|
|
30119
|
+
var import_gray_matter3 = __toESM(require_gray_matter(), 1);
|
|
30120
|
+
var import_yaml3 = __toESM(require_dist4(), 1);
|
|
30030
30121
|
init_content_id_index();
|
|
30031
30122
|
init_error();
|
|
30032
|
-
init_id();
|
|
30033
30123
|
var log8 = createDebugLogger({ prefix: "ContentListing" });
|
|
30034
30124
|
|
|
30035
30125
|
// ../canopycms/src/context.ts
|
|
@@ -30486,6 +30576,9 @@ async function handleTransformRequest(event) {
|
|
|
30486
30576
|
if (meta.kind !== "raster") {
|
|
30487
30577
|
return errorResponse(400, "Not a raster asset - svg/pdf are served statically");
|
|
30488
30578
|
}
|
|
30579
|
+
if (parsed.slug !== meta.slug) {
|
|
30580
|
+
return errorResponse(404, "Not found");
|
|
30581
|
+
}
|
|
30489
30582
|
const requestedFormat = parsed.directives.identity ? void 0 : parsed.directives.format;
|
|
30490
30583
|
if (requestedFormat === void 0 && parsed.ext !== meta.ext) {
|
|
30491
30584
|
return errorResponse(400, "Extension does not match the source format");
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "canopycms-cdk",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.65",
|
|
4
4
|
"description": "AWS CDK constructs and EC2 worker for CanopyCMS deployment",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -29,7 +29,8 @@
|
|
|
29
29
|
},
|
|
30
30
|
"peerDependencies": {
|
|
31
31
|
"aws-cdk-lib": "^2.260.0",
|
|
32
|
-
"constructs": "^10.0.0"
|
|
32
|
+
"constructs": "^10.0.0",
|
|
33
|
+
"canopycms": "0.0.65"
|
|
33
34
|
},
|
|
34
35
|
"peerDependenciesMeta": {
|
|
35
36
|
"aws-cdk-lib": {
|
|
@@ -53,11 +54,11 @@
|
|
|
53
54
|
"tsx": "^4.19.0",
|
|
54
55
|
"typescript": "^5.6.3",
|
|
55
56
|
"vitest": "^4.1.0",
|
|
56
|
-
"canopycms": "0.0.
|
|
57
|
-
"canopycms-auth-clerk": "0.0.
|
|
57
|
+
"canopycms": "0.0.65",
|
|
58
|
+
"canopycms-auth-clerk": "0.0.65"
|
|
58
59
|
},
|
|
59
60
|
"scripts": {
|
|
60
|
-
"build": "tsc",
|
|
61
|
+
"build": "rm -rf dist && tsc && node ../../scripts/add-js-extensions.mjs dist",
|
|
61
62
|
"build:worker": "esbuild worker/index.ts --bundle --platform=node --target=node20 --format=esm --outfile=worker/dist/index.js --banner:js=\"import { createRequire } from 'module'; const require = createRequire(import.meta.url);\"",
|
|
62
63
|
"build:lambda": "node lambda/asset-transform/build.mjs",
|
|
63
64
|
"build:test-fixtures": "pnpm run build:worker && node lambda/asset-transform/build.mjs --skip-native",
|