meca 1.0.3 → 1.0.4

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/meca.cjs CHANGED
@@ -13915,7 +13915,7 @@ var {
13915
13915
  } = import_index.default;
13916
13916
 
13917
13917
  // src/version.ts
13918
- var version = "1.0.3";
13918
+ var version = "1.0.4";
13919
13919
  var version_default = version;
13920
13920
 
13921
13921
  // ../../node_modules/myst-cli-utils/dist/logger.js
@@ -16609,7 +16609,14 @@ async function validateMeca(session, file, opts) {
16609
16609
  const manifestString = manifestEntry.getData().toString();
16610
16610
  const manifestItems = extractManifestItems(manifestString);
16611
16611
  const zipEntries = mecaZip.getEntries();
16612
- const manifestExtras = manifestItems.filter((item) => !zipEntries.map((entry) => entry.entryName).includes(item.href)).map((item) => item.href);
16612
+ const zipEntryNames = /* @__PURE__ */ new Set();
16613
+ zipEntries.forEach((entry) => {
16614
+ const nameParts = entry.entryName.split("/");
16615
+ for (let i2 = 1; i2 <= nameParts.length; i2++) {
16616
+ zipEntryNames.add(nameParts.slice(0, i2).join("/"));
16617
+ }
16618
+ });
16619
+ const manifestExtras = manifestItems.map((item) => item.href).filter((href) => !zipEntryNames.has(href.replace(/\/$/, "")));
16613
16620
  const zipExtras = zipEntries.filter((entry) => entry.entryName !== MANIFEST).filter((entry) => !entry.isDirectory).filter((entry) => !manifestItems.map((item) => item.href).includes(entry.entryName)).map((entry) => entry.entryName);
16614
16621
  if (zipExtras.length) {
16615
16622
  session.log.warn(
@@ -109,9 +109,18 @@ export async function validateMeca(session, file, opts) {
109
109
  const manifestString = manifestEntry.getData().toString();
110
110
  const manifestItems = extractManifestItems(manifestString);
111
111
  const zipEntries = mecaZip.getEntries();
112
+ // Get all file and folder names in the zip file.
113
+ // Folders may not be explicitly listed in zipEntries, so we compute all folders from file paths.
114
+ const zipEntryNames = new Set();
115
+ zipEntries.forEach((entry) => {
116
+ const nameParts = entry.entryName.split('/');
117
+ for (let i = 1; i <= nameParts.length; i++) {
118
+ zipEntryNames.add(nameParts.slice(0, i).join('/'));
119
+ }
120
+ });
112
121
  const manifestExtras = manifestItems
113
- .filter((item) => !zipEntries.map((entry) => entry.entryName).includes(item.href))
114
- .map((item) => item.href);
122
+ .map((item) => item.href)
123
+ .filter((href) => !zipEntryNames.has(href.replace(/\/$/, ''))); // Ignore trailing slash
115
124
  const zipExtras = zipEntries
116
125
  .filter((entry) => entry.entryName !== MANIFEST)
117
126
  .filter((entry) => !entry.isDirectory)
package/dist/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- declare const version = "1.0.3";
1
+ declare const version = "1.0.4";
2
2
  export default version;
package/dist/version.js CHANGED
@@ -1,2 +1,2 @@
1
- const version = '1.0.3';
1
+ const version = '1.0.4';
2
2
  export default version;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "meca",
3
- "version": "1.0.3",
3
+ "version": "1.0.4",
4
4
  "description": "Types and utilities for working with MECA",
5
5
  "author": "Rowan Cockett <rowan@curvenote.com>",
6
6
  "homepage": "https://github.com/curvenote/meca",
@@ -45,7 +45,7 @@
45
45
  },
46
46
  "dependencies": {
47
47
  "adm-zip": "^0.5.10",
48
- "jats-xml": "^1.0.3",
48
+ "jats-xml": "^1.0.4",
49
49
  "xml-js": "^1.6.11"
50
50
  },
51
51
  "peerDependencies": {