@eventcatalog/sdk 1.4.6 → 1.4.8

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.js CHANGED
@@ -36,12 +36,11 @@ module.exports = __toCommonJS(index_exports);
36
36
  var import_node_path10 = require("path");
37
37
 
38
38
  // src/events.ts
39
- var import_promises3 = __toESM(require("fs/promises"));
39
+ var import_promises2 = __toESM(require("fs/promises"));
40
40
  var import_node_path2 = require("path");
41
41
 
42
42
  // src/internal/utils.ts
43
43
  var import_glob = require("glob");
44
- var import_promises = __toESM(require("fs/promises"));
45
44
  var import_node_fs = __toESM(require("fs"));
46
45
  var import_fs_extra = require("fs-extra");
47
46
  var import_node_path = require("path");
@@ -79,7 +78,7 @@ var findFileById = async (catalogDir, id, version) => {
79
78
  var getFiles = async (pattern, ignore = "") => {
80
79
  try {
81
80
  const ignoreList = Array.isArray(ignore) ? ignore : [ignore];
82
- const files = await (0, import_glob.glob)(pattern, { ignore: ["node_modules/**", ...ignoreList] });
81
+ const files = (0, import_glob.globSync)(pattern, { ignore: ["node_modules/**", ...ignoreList] });
83
82
  return files;
84
83
  } catch (error) {
85
84
  throw new Error(`Error finding files: ${error}`);
@@ -88,18 +87,16 @@ var getFiles = async (pattern, ignore = "") => {
88
87
  var searchFilesForId = async (files, id, version) => {
89
88
  const idRegex = new RegExp(`^id:\\s*(['"]|>-)?\\s*${id}['"]?\\s*$`, "m");
90
89
  const versionRegex = new RegExp(`^version:\\s*['"]?${version}['"]?\\s*$`, "m");
91
- const matches = await Promise.all(
92
- files.map(async (file) => {
93
- const content = await import_promises.default.readFile(file, "utf-8");
94
- const hasIdMatch = content.match(idRegex);
95
- if (version && !content.match(versionRegex)) {
96
- return void 0;
97
- }
98
- if (hasIdMatch) {
99
- return file;
100
- }
101
- })
102
- );
90
+ const matches = files.map((file) => {
91
+ const content = import_node_fs.default.readFileSync(file, "utf-8");
92
+ const hasIdMatch = content.match(idRegex);
93
+ if (version && !content.match(versionRegex)) {
94
+ return void 0;
95
+ }
96
+ if (hasIdMatch) {
97
+ return file;
98
+ }
99
+ });
103
100
  return matches.filter(Boolean).filter((file) => file !== void 0);
104
101
  };
105
102
  var copyDir = async (catalogDir, source, target, filter) => {
@@ -130,9 +127,10 @@ var uniqueVersions = (messages) => {
130
127
  // src/internal/resources.ts
131
128
  var import_path = require("path");
132
129
  var import_gray_matter2 = __toESM(require("gray-matter"));
133
- var import_promises2 = __toESM(require("fs/promises"));
130
+ var import_promises = __toESM(require("fs/promises"));
134
131
  var import_node_fs2 = __toESM(require("fs"));
135
132
  var import_semver2 = require("semver");
133
+ var import_proper_lockfile = require("proper-lockfile");
136
134
  var versionResource = async (catalogDir, id) => {
137
135
  const files = await getFiles(`${catalogDir}/**/index.md`);
138
136
  const matchedFiles = await searchFilesForId(files, id);
@@ -147,7 +145,7 @@ var versionResource = async (catalogDir, id) => {
147
145
  await copyDir(catalogDir, sourceDirectory, targetDirectory, (src) => {
148
146
  return !src.includes("versioned");
149
147
  });
150
- await import_promises2.default.readdir(sourceDirectory).then(async (resourceFiles) => {
148
+ await import_promises.default.readdir(sourceDirectory).then(async (resourceFiles) => {
151
149
  await Promise.all(
152
150
  resourceFiles.map(async (file2) => {
153
151
  if (file2 !== "versioned") {
@@ -164,24 +162,39 @@ var writeResource = async (catalogDir, resource, options = {
164
162
  versionExistingContent: false
165
163
  }) => {
166
164
  const path = options.path || `/${resource.id}`;
167
- const exists = await versionExists(catalogDir, resource.id, resource.version);
168
- if (exists && !options.override) {
169
- throw new Error(`Failed to write ${resource.id} (${options.type}) as the version ${resource.version} already exists`);
165
+ const fullPath = (0, import_path.join)(catalogDir, path);
166
+ import_node_fs2.default.mkdirSync(fullPath, { recursive: true });
167
+ const lockPath = (0, import_path.join)(fullPath, "index.md");
168
+ if (!import_node_fs2.default.existsSync(lockPath)) {
169
+ import_node_fs2.default.writeFileSync(lockPath, "");
170
170
  }
171
- const { markdown, ...frontmatter } = resource;
172
- if (options.versionExistingContent && !exists) {
173
- const currentResource = await getResource(catalogDir, resource.id);
174
- if (currentResource) {
175
- if ((0, import_semver2.satisfies)(resource.version, `>${currentResource.version}`)) {
176
- await versionResource(catalogDir, resource.id);
177
- } else {
178
- throw new Error(`New version ${resource.version} is not greater than current version ${currentResource.version}`);
171
+ try {
172
+ await (0, import_proper_lockfile.lock)(lockPath, {
173
+ retries: 5,
174
+ stale: 1e4
175
+ // 10 seconds
176
+ });
177
+ const exists = await versionExists(catalogDir, resource.id, resource.version);
178
+ if (exists && !options.override) {
179
+ throw new Error(`Failed to write ${resource.id} (${options.type}) as the version ${resource.version} already exists`);
180
+ }
181
+ const { markdown, ...frontmatter } = resource;
182
+ if (options.versionExistingContent && !exists) {
183
+ const currentResource = await getResource(catalogDir, resource.id);
184
+ if (currentResource) {
185
+ if ((0, import_semver2.satisfies)(resource.version, `>${currentResource.version}`)) {
186
+ await versionResource(catalogDir, resource.id);
187
+ } else {
188
+ throw new Error(`New version ${resource.version} is not greater than current version ${currentResource.version}`);
189
+ }
179
190
  }
180
191
  }
192
+ const document = import_gray_matter2.default.stringify(markdown.trim(), frontmatter);
193
+ import_node_fs2.default.writeFileSync(lockPath, document);
194
+ } finally {
195
+ await (0, import_proper_lockfile.unlock)(lockPath).catch(() => {
196
+ });
181
197
  }
182
- const document = import_gray_matter2.default.stringify(markdown.trim(), frontmatter);
183
- import_node_fs2.default.mkdirSync((0, import_path.join)(catalogDir, path), { recursive: true });
184
- import_node_fs2.default.writeFileSync((0, import_path.join)(catalogDir, path, "index.md"), document);
185
198
  };
186
199
  var getResource = async (catalogDir, id, version, options) => {
187
200
  const file = await findFileById(catalogDir, id, version);
@@ -213,14 +226,14 @@ var rmResourceById = async (catalogDir, id, version, options) => {
213
226
  if (options?.persistFiles) {
214
227
  await Promise.all(
215
228
  matchedFiles.map(async (file) => {
216
- await import_promises2.default.rm(file, { recursive: true });
229
+ await import_promises.default.rm(file, { recursive: true });
217
230
  })
218
231
  );
219
232
  } else {
220
233
  await Promise.all(
221
234
  matchedFiles.map(async (file) => {
222
235
  const directory = (0, import_path.dirname)(file);
223
- await import_promises2.default.rm(directory, { recursive: true, force: true });
236
+ await import_promises.default.rm(directory, { recursive: true, force: true });
224
237
  })
225
238
  );
226
239
  }
@@ -233,7 +246,7 @@ var addFileToResource = async (catalogDir, id, file, version) => {
233
246
  var getFileFromResource = async (catalogDir, id, file, version) => {
234
247
  const pathToResource = await findFileById(catalogDir, id, version);
235
248
  if (!pathToResource) throw new Error("Cannot find directory of resource");
236
- const exists = await import_promises2.default.access((0, import_path.join)((0, import_path.dirname)(pathToResource), file.fileName)).then(() => true).catch(() => false);
249
+ const exists = await import_promises.default.access((0, import_path.join)((0, import_path.dirname)(pathToResource), file.fileName)).then(() => true).catch(() => false);
237
250
  if (!exists) throw new Error(`File ${file.fileName} does not exist in resource ${id} v(${version})`);
238
251
  return import_node_fs2.default.readFileSync((0, import_path.join)((0, import_path.dirname)(pathToResource), file.fileName), "utf-8");
239
252
  };
@@ -251,7 +264,7 @@ var writeEventToService = (directory) => async (event, service, options = { path
251
264
  await writeResource(directory, { ...event }, { ...options, path: pathForEvent, type: "event" });
252
265
  };
253
266
  var rmEvent = (directory) => async (path) => {
254
- await import_promises3.default.rm((0, import_node_path2.join)(directory, path), { recursive: true });
267
+ await import_promises2.default.rm((0, import_node_path2.join)(directory, path), { recursive: true });
255
268
  };
256
269
  var rmEventById = (directory) => async (id, version, persistFiles) => {
257
270
  await rmResourceById(directory, id, version, { type: "event", persistFiles });
@@ -267,7 +280,7 @@ var eventHasVersion = (directory) => async (id, version) => {
267
280
  };
268
281
 
269
282
  // src/commands.ts
270
- var import_promises4 = __toESM(require("fs/promises"));
283
+ var import_promises3 = __toESM(require("fs/promises"));
271
284
  var import_node_path3 = require("path");
272
285
  var getCommand = (directory) => async (id, version) => getResource(directory, id, version, { type: "command" });
273
286
  var getCommands = (directory) => async (options) => getResources(directory, { type: "commands", ...options });
@@ -278,7 +291,7 @@ var writeCommandToService = (directory) => async (command, service, options = {
278
291
  await writeResource(directory, { ...command }, { ...options, path: pathForEvent, type: "command" });
279
292
  };
280
293
  var rmCommand = (directory) => async (path) => {
281
- await import_promises4.default.rm((0, import_node_path3.join)(directory, path), { recursive: true });
294
+ await import_promises3.default.rm((0, import_node_path3.join)(directory, path), { recursive: true });
282
295
  };
283
296
  var rmCommandById = (directory) => async (id, version, persistFiles) => rmResourceById(directory, id, version, { type: "command", persistFiles });
284
297
  var versionCommand = (directory) => async (id) => versionResource(directory, id);
@@ -292,7 +305,7 @@ var commandHasVersion = (directory) => async (id, version) => {
292
305
  };
293
306
 
294
307
  // src/queries.ts
295
- var import_promises5 = __toESM(require("fs/promises"));
308
+ var import_promises4 = __toESM(require("fs/promises"));
296
309
  var import_node_path4 = require("path");
297
310
  var getQuery = (directory) => async (id, version) => getResource(directory, id, version, { type: "query" });
298
311
  var writeQuery = (directory) => async (query, options = { path: "" }) => writeResource(directory, { ...query }, { ...options, type: "query" });
@@ -303,7 +316,7 @@ var writeQueryToService = (directory) => async (query, service, options = { path
303
316
  await writeResource(directory, { ...query }, { ...options, path: pathForQuery, type: "query" });
304
317
  };
305
318
  var rmQuery = (directory) => async (path) => {
306
- await import_promises5.default.rm((0, import_node_path4.join)(directory, path), { recursive: true });
319
+ await import_promises4.default.rm((0, import_node_path4.join)(directory, path), { recursive: true });
307
320
  };
308
321
  var rmQueryById = (directory) => async (id, version, persistFiles) => {
309
322
  await rmResourceById(directory, id, version, { type: "query", persistFiles });
@@ -319,7 +332,7 @@ var queryHasVersion = (directory) => async (id, version) => {
319
332
  };
320
333
 
321
334
  // src/services.ts
322
- var import_promises6 = __toESM(require("fs/promises"));
335
+ var import_promises5 = __toESM(require("fs/promises"));
323
336
  var import_node_path5 = require("path");
324
337
  var getService = (directory) => async (id, version) => getResource(directory, id, version, { type: "service" });
325
338
  var getServices = (directory) => async (options) => getResources(directory, {
@@ -349,7 +362,7 @@ var writeServiceToDomain = (directory) => async (service, domain, options = { pa
349
362
  };
350
363
  var versionService = (directory) => async (id) => versionResource(directory, id);
351
364
  var rmService = (directory) => async (path) => {
352
- await import_promises6.default.rm((0, import_node_path5.join)(directory, path), { recursive: true });
365
+ await import_promises5.default.rm((0, import_node_path5.join)(directory, path), { recursive: true });
353
366
  };
354
367
  var rmServiceById = (directory) => async (id, version, persistFiles) => rmResourceById(directory, id, version, { type: "service", persistFiles });
355
368
  var addFileToService = (directory) => async (id, file, version) => addFileToResource(directory, id, file, version);
@@ -413,7 +426,7 @@ var serviceHasVersion = (directory) => async (id, version) => {
413
426
  };
414
427
 
415
428
  // src/domains.ts
416
- var import_promises7 = __toESM(require("fs/promises"));
429
+ var import_promises6 = __toESM(require("fs/promises"));
417
430
  var import_node_path6 = require("path");
418
431
  var getDomain = (directory) => async (id, version) => getResource(directory, id, version, { type: "domain" });
419
432
  var getDomains = (directory) => async (options) => getResources(directory, {
@@ -430,7 +443,7 @@ var writeDomain = (directory) => async (domain, options = { path: "" }) => {
430
443
  };
431
444
  var versionDomain = (directory) => async (id) => versionResource(directory, id);
432
445
  var rmDomain = (directory) => async (path) => {
433
- await import_promises7.default.rm((0, import_node_path6.join)(directory, path), { recursive: true });
446
+ await import_promises6.default.rm((0, import_node_path6.join)(directory, path), { recursive: true });
434
447
  };
435
448
  var rmDomainById = (directory) => async (id, version, persistFiles) => rmResourceById(directory, id, version, { type: "domain", persistFiles });
436
449
  var addFileToDomain = (directory) => async (id, file, version) => addFileToResource(directory, id, file, version);
@@ -453,13 +466,13 @@ var addServiceToDomain = (directory) => async (id, service, version) => {
453
466
  };
454
467
 
455
468
  // src/channels.ts
456
- var import_promises8 = __toESM(require("fs/promises"));
469
+ var import_promises7 = __toESM(require("fs/promises"));
457
470
  var import_node_path7 = require("path");
458
471
  var getChannel = (directory) => async (id, version) => getResource(directory, id, version, { type: "channel" });
459
472
  var getChannels = (directory) => async (options) => getResources(directory, { type: "channels", ...options });
460
473
  var writeChannel = (directory) => async (channel, options = { path: "" }) => writeResource(directory, { ...channel }, { ...options, type: "channel" });
461
474
  var rmChannel = (directory) => async (path) => {
462
- await import_promises8.default.rm((0, import_node_path7.join)(directory, path), { recursive: true });
475
+ await import_promises7.default.rm((0, import_node_path7.join)(directory, path), { recursive: true });
463
476
  };
464
477
  var rmChannelById = (directory) => async (id, version, persistFiles) => rmResourceById(directory, id, version, { type: "channel", persistFiles });
465
478
  var versionChannel = (directory) => async (id) => versionResource(directory, id);
@@ -505,7 +518,7 @@ var addMessageToChannel = (directory, collection) => async (id, _message, versio
505
518
  };
506
519
 
507
520
  // src/teams.ts
508
- var import_promises9 = __toESM(require("fs/promises"));
521
+ var import_promises8 = __toESM(require("fs/promises"));
509
522
  var import_node_fs3 = __toESM(require("fs"));
510
523
  var import_node_path8 = require("path");
511
524
  var import_gray_matter3 = __toESM(require("gray-matter"));
@@ -547,7 +560,7 @@ var writeTeam = (catalogDir) => async (team, options = {}) => {
547
560
  import_node_fs3.default.writeFileSync((0, import_node_path8.join)(catalogDir, "", `${resource.id}.md`), document);
548
561
  };
549
562
  var rmTeamById = (catalogDir) => async (id) => {
550
- await import_promises9.default.rm((0, import_node_path8.join)(catalogDir, `${id}.md`), { recursive: true });
563
+ await import_promises8.default.rm((0, import_node_path8.join)(catalogDir, `${id}.md`), { recursive: true });
551
564
  };
552
565
 
553
566
  // src/users.ts