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.
@@ -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 matter3 = engine.stringify(data, options2).trim();
10661
+ const matter4 = engine.stringify(data, options2).trim();
10653
10662
  let buf = "";
10654
- if (matter3 !== "{}") {
10655
- buf = newline(open) + newline(matter3) + newline(close);
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 matter3(input, options2) {
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 = matter3.cache[file.content];
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
- matter3.cache[file.content] = file;
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 = matter3.language(str2, opts);
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
- matter3.engines = engines2;
10831
- matter3.stringify = function(file, data, options2) {
10832
- if (typeof file === "string") file = matter3(file, options2);
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
- matter3.read = function(filepath, options2) {
10844
+ matter4.read = function(filepath, options2) {
10836
10845
  const str2 = fs.readFileSync(filepath, "utf8");
10837
- const file = matter3(str2, options2);
10846
+ const file = matter4(str2, options2);
10838
10847
  file.path = filepath;
10839
10848
  return file;
10840
10849
  };
10841
- matter3.test = function(str2, options2) {
10850
+ matter4.test = function(str2, options2) {
10842
10851
  return utils.startsWith(str2, defaults2(options2).delimiters[0]);
10843
10852
  };
10844
- matter3.language = function(str2, options2) {
10853
+ matter4.language = function(str2, options2) {
10845
10854
  const opts = defaults2(options2);
10846
10855
  const open = opts.delimiters[0];
10847
- if (matter3.test(str2)) {
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
- matter3.cache = {};
10857
- matter3.clearCache = function() {
10858
- matter3.cache = {};
10865
+ matter4.cache = {};
10866
+ matter4.clearCache = function() {
10867
+ matter4.cache = {};
10859
10868
  };
10860
- module2.exports = matter3;
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 isMap = (node) => !!node && typeof node === "object" && node[NODE_TYPE] === MAP;
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 isScalar = (node) => !!node && typeof node === "object" && node[NODE_TYPE] === SCALAR;
10880
- var isSeq = (node) => !!node && typeof node === "object" && node[NODE_TYPE] === SEQ;
10881
- function isCollection(node) {
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 isNode(node) {
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) => (isScalar(node) || isCollection(node)) && !!node.anchor;
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 = isCollection;
10920
+ exports2.isCollection = isCollection2;
10912
10921
  exports2.isDocument = isDocument;
10913
- exports2.isMap = isMap;
10914
- exports2.isNode = isNode;
10922
+ exports2.isMap = isMap2;
10923
+ exports2.isNode = isNode2;
10915
10924
  exports2.isPair = isPair;
10916
- exports2.isScalar = isScalar;
10917
- exports2.isSeq = 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 isMap = fc.start.source === "{";
15019
- const fcName = isMap ? "flow map" : "flow sequence";
15020
- const NodeClass = tag?.nodeClass ?? (isMap ? YAMLMap.YAMLMap : YAMLSeq.YAMLSeq);
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 (!isMap && ctx.options.strict && utilContainsNewline.containsNewline(key))
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 (!isMap && !sep3 && !props.found) {
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 (!isMap && !props.found && ctx.options.strict) {
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 (isMap) {
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 = isMap ? "}" : "]";
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 isCollection = (token) => !!token && "items" in token;
16450
- var isScalar = (token) => !!token && (token.type === "scalar" || token.type === "single-quoted-scalar" || token.type === "double-quoted-scalar" || token.type === "block-scalar");
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 = isCollection;
16534
- exports2.isScalar = 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 parseDocument(source, options2 = {}) {
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 = parseDocument(src, options2);
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 = 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 import_gray_matter2 = __toESM(require_gray_matter(), 1);
30029
- var import_yaml2 = __toESM(require_dist4(), 1);
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.63",
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.63",
57
- "canopycms-auth-clerk": "0.0.63"
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",