@eventcatalog/sdk 1.4.5 → 1.4.7

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/index.mjs CHANGED
@@ -8,6 +8,7 @@ import { join as join3 } from "node:path";
8
8
  // src/internal/utils.ts
9
9
  import { glob } from "glob";
10
10
  import fs from "node:fs/promises";
11
+ import fsSync from "node:fs";
11
12
  import { copy } from "fs-extra";
12
13
  import { join } from "node:path";
13
14
  import matter from "gray-matter";
@@ -69,7 +70,7 @@ var searchFilesForId = async (files, id, version) => {
69
70
  };
70
71
  var copyDir = async (catalogDir, source, target, filter) => {
71
72
  const tmpDirectory = join(catalogDir, "tmp");
72
- await fs.mkdir(tmpDirectory, { recursive: true });
73
+ fsSync.mkdirSync(tmpDirectory, { recursive: true });
73
74
  await copy(source, tmpDirectory, {
74
75
  overwrite: true,
75
76
  filter
@@ -78,7 +79,7 @@ var copyDir = async (catalogDir, source, target, filter) => {
78
79
  overwrite: true,
79
80
  filter
80
81
  });
81
- await fs.rm(tmpDirectory, { recursive: true });
82
+ fsSync.rmSync(tmpDirectory, { recursive: true });
82
83
  };
83
84
  var uniqueVersions = (messages) => {
84
85
  const uniqueSet = /* @__PURE__ */ new Set();
@@ -96,7 +97,9 @@ var uniqueVersions = (messages) => {
96
97
  import { dirname, join as join2 } from "path";
97
98
  import matter2 from "gray-matter";
98
99
  import fs2 from "node:fs/promises";
100
+ import fsSync2 from "node:fs";
99
101
  import { satisfies as satisfies2 } from "semver";
102
+ import { lock, unlock } from "proper-lockfile";
100
103
  var versionResource = async (catalogDir, id) => {
101
104
  const files = await getFiles(`${catalogDir}/**/index.md`);
102
105
  const matchedFiles = await searchFilesForId(files, id);
@@ -107,7 +110,7 @@ var versionResource = async (catalogDir, id) => {
107
110
  const sourceDirectory = dirname(file);
108
111
  const { data: { version = "0.0.1" } = {} } = matter2.read(file);
109
112
  const targetDirectory = getVersionedDirectory(sourceDirectory, version);
110
- await fs2.mkdir(targetDirectory, { recursive: true });
113
+ fsSync2.mkdirSync(targetDirectory, { recursive: true });
111
114
  await copyDir(catalogDir, sourceDirectory, targetDirectory, (src) => {
112
115
  return !src.includes("versioned");
113
116
  });
@@ -115,7 +118,7 @@ var versionResource = async (catalogDir, id) => {
115
118
  await Promise.all(
116
119
  resourceFiles.map(async (file2) => {
117
120
  if (file2 !== "versioned") {
118
- await fs2.rm(join2(sourceDirectory, file2), { recursive: true });
121
+ fsSync2.rmSync(join2(sourceDirectory, file2), { recursive: true });
119
122
  }
120
123
  })
121
124
  );
@@ -128,24 +131,39 @@ var writeResource = async (catalogDir, resource, options = {
128
131
  versionExistingContent: false
129
132
  }) => {
130
133
  const path = options.path || `/${resource.id}`;
131
- const exists = await versionExists(catalogDir, resource.id, resource.version);
132
- if (exists && !options.override) {
133
- throw new Error(`Failed to write ${resource.id} (${options.type}) as the version ${resource.version} already exists`);
134
+ const fullPath = join2(catalogDir, path);
135
+ fsSync2.mkdirSync(fullPath, { recursive: true });
136
+ const lockPath = join2(fullPath, "index.md");
137
+ if (!fsSync2.existsSync(lockPath)) {
138
+ fsSync2.writeFileSync(lockPath, "");
134
139
  }
135
- const { markdown, ...frontmatter } = resource;
136
- if (options.versionExistingContent && !exists) {
137
- const currentResource = await getResource(catalogDir, resource.id);
138
- if (currentResource) {
139
- if (satisfies2(resource.version, `>${currentResource.version}`)) {
140
- await versionResource(catalogDir, resource.id);
141
- } else {
142
- throw new Error(`New version ${resource.version} is not greater than current version ${currentResource.version}`);
140
+ try {
141
+ await lock(lockPath, {
142
+ retries: 5,
143
+ stale: 1e4
144
+ // 10 seconds
145
+ });
146
+ const exists = await versionExists(catalogDir, resource.id, resource.version);
147
+ if (exists && !options.override) {
148
+ throw new Error(`Failed to write ${resource.id} (${options.type}) as the version ${resource.version} already exists`);
149
+ }
150
+ const { markdown, ...frontmatter } = resource;
151
+ if (options.versionExistingContent && !exists) {
152
+ const currentResource = await getResource(catalogDir, resource.id);
153
+ if (currentResource) {
154
+ if (satisfies2(resource.version, `>${currentResource.version}`)) {
155
+ await versionResource(catalogDir, resource.id);
156
+ } else {
157
+ throw new Error(`New version ${resource.version} is not greater than current version ${currentResource.version}`);
158
+ }
143
159
  }
144
160
  }
161
+ const document = matter2.stringify(markdown.trim(), frontmatter);
162
+ fsSync2.writeFileSync(lockPath, document);
163
+ } finally {
164
+ await unlock(lockPath).catch(() => {
165
+ });
145
166
  }
146
- const document = matter2.stringify(markdown.trim(), frontmatter);
147
- await fs2.mkdir(join2(catalogDir, path), { recursive: true });
148
- return await fs2.writeFile(join2(catalogDir, path, "index.md"), document);
149
167
  };
150
168
  var getResource = async (catalogDir, id, version, options) => {
151
169
  const file = await findFileById(catalogDir, id, version);
@@ -192,14 +210,14 @@ var rmResourceById = async (catalogDir, id, version, options) => {
192
210
  var addFileToResource = async (catalogDir, id, file, version) => {
193
211
  const pathToResource = await findFileById(catalogDir, id, version);
194
212
  if (!pathToResource) throw new Error("Cannot find directory to write file to");
195
- await fs2.writeFile(join2(dirname(pathToResource), file.fileName), file.content);
213
+ fsSync2.writeFileSync(join2(dirname(pathToResource), file.fileName), file.content);
196
214
  };
197
215
  var getFileFromResource = async (catalogDir, id, file, version) => {
198
216
  const pathToResource = await findFileById(catalogDir, id, version);
199
217
  if (!pathToResource) throw new Error("Cannot find directory of resource");
200
218
  const exists = await fs2.access(join2(dirname(pathToResource), file.fileName)).then(() => true).catch(() => false);
201
219
  if (!exists) throw new Error(`File ${file.fileName} does not exist in resource ${id} v(${version})`);
202
- return fs2.readFile(join2(dirname(pathToResource), file.fileName), "utf-8");
220
+ return fsSync2.readFileSync(join2(dirname(pathToResource), file.fileName), "utf-8");
203
221
  };
204
222
  var getVersionedDirectory = (sourceDirectory, version) => {
205
223
  return join2(sourceDirectory, "versioned", version);
@@ -470,6 +488,7 @@ var addMessageToChannel = (directory, collection) => async (id, _message, versio
470
488
 
471
489
  // src/teams.ts
472
490
  import fs9 from "node:fs/promises";
491
+ import fsSync3 from "node:fs";
473
492
  import { join as join9 } from "node:path";
474
493
  import matter3 from "gray-matter";
475
494
  var getTeam = (catalogDir) => async (id) => {
@@ -506,15 +525,15 @@ var writeTeam = (catalogDir) => async (team, options = {}) => {
506
525
  }
507
526
  const { markdown, ...frontmatter } = resource;
508
527
  const document = matter3.stringify(markdown, frontmatter);
509
- await fs9.mkdir(join9(catalogDir, ""), { recursive: true });
510
- await fs9.writeFile(join9(catalogDir, "", `${resource.id}.md`), document);
528
+ fsSync3.mkdirSync(join9(catalogDir, ""), { recursive: true });
529
+ fsSync3.writeFileSync(join9(catalogDir, "", `${resource.id}.md`), document);
511
530
  };
512
531
  var rmTeamById = (catalogDir) => async (id) => {
513
532
  await fs9.rm(join9(catalogDir, `${id}.md`), { recursive: true });
514
533
  };
515
534
 
516
535
  // src/users.ts
517
- import fs10 from "node:fs/promises";
536
+ import fsSync4 from "node:fs";
518
537
  import { join as join10 } from "node:path";
519
538
  import matter4 from "gray-matter";
520
539
  var getUser = (catalogDir) => async (id) => {
@@ -553,11 +572,11 @@ var writeUser = (catalogDir) => async (user, options = {}) => {
553
572
  }
554
573
  const { markdown, ...frontmatter } = resource;
555
574
  const document = matter4.stringify(markdown, frontmatter);
556
- await fs10.mkdir(join10(catalogDir, ""), { recursive: true });
557
- await fs10.writeFile(join10(catalogDir, "", `${resource.id}.md`), document);
575
+ fsSync4.mkdirSync(join10(catalogDir, ""), { recursive: true });
576
+ fsSync4.writeFileSync(join10(catalogDir, "", `${resource.id}.md`), document);
558
577
  };
559
578
  var rmUserById = (catalogDir) => async (id) => {
560
- await fs10.rm(join10(catalogDir, `${id}.md`), { recursive: true });
579
+ fsSync4.rmSync(join10(catalogDir, `${id}.md`), { recursive: true });
561
580
  };
562
581
 
563
582
  // src/index.ts