livemark 0.27.0 → 0.27.1

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.
@@ -108,7 +108,7 @@ const articles = defineCollection({
108
108
  const patch = config.patches?.find(p => p.file === document._meta.filePath);
109
109
  const doc = patch ? { ...document, ...patch.article } : document;
110
110
  const filePath = resolve(config.root, doc._meta.filePath);
111
- const content = resolveIncludes(doc.content, filePath);
111
+ const content = await resolveIncludes(doc.content, filePath);
112
112
  const title = doc.title ?? extractTitle(content, doc._meta.path);
113
113
  const icon = doc.icon;
114
114
  const path = doc.path ?? toPath(doc._meta.filePath);
@@ -216,4 +216,4 @@ export default defineConfig({
216
216
  // @ts-expect-error tsgo picks wrong overload when rehype-slug augments unified types
217
217
  content: [articles],
218
218
  });
219
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1jb2xsZWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NvdXJjZS9jb250ZW50LWNvbGxlY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUM3QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBQ3BDLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDaEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBQzFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUNyRCxPQUFPLFdBQVcsTUFBTSxpQkFBaUIsQ0FBQTtBQUN6QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUN2RCxPQUFPLFdBQVcsTUFBTSxjQUFjLENBQUE7QUFDdEMsT0FBTyxVQUFVLE1BQU0sYUFBYSxDQUFBO0FBQ3BDLE9BQU8sb0JBQW9CLE1BQU0sd0JBQXdCLENBQUE7QUFDekQsT0FBTyxlQUFlLE1BQU0sa0JBQWtCLENBQUE7QUFDOUMsT0FBTyxZQUFZLE1BQU0sZUFBZSxDQUFBO0FBQ3hDLE9BQU8sU0FBUyxNQUFNLFlBQVksQ0FBQTtBQUNsQyxPQUFPLFVBQVUsTUFBTSxhQUFhLENBQUE7QUFDcEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBQ3JELE9BQU8sRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQTtBQUMvRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDN0MsT0FBTyxPQUFPLE1BQU0sdUJBQXVCLENBQUE7QUFDM0MsT0FB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TSxXQUFXLEdBQUcsY0FBYyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDdEQsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUs7WUFDckIsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQztZQUNqRSxDQUFDLENBQUMsU0FBUyxDQUFBO1FBQ2IsT0FBTztZQUNMLEdBQUcsR0FBRztZQUNOLElBQUksRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVE7WUFDeEIsV0FBVztZQUNYLEtBQUs7WUFDTCxLQUFLO1lBQ0wsSUFBSTtZQUNKLElBQUk7WUFDSixRQUFRO1lBQ1IsVUFBVTtZQUNWLEdBQUc7U0FDSixDQUFBO0lBQ0gsQ0FBQztDQUNGLENBQUMsQ0FBQTtBQUVGLGVBQWUsWUFBWSxDQUFDO0lBQzFCLHFGQUFxRjtJQUNyRixPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7Q0FDcEIsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXhlY1N5bmMgfSBmcm9tIFwibm9kZTpjaGlsZF9wcm9jZXNzXCJcbmltcG9ydCB7IGV4aXN0c1N5bmMgfSBmcm9tIFwibm9kZTpmc1wiXG5pbXBvcnQgeyBiYXNlbmFtZSwgcmVsYXRpdmUsIHJlc29sdmUgfSBmcm9tIFwibm9kZTpwYXRoXCJcbmltcG9ydCB7IERFRkFVTFRfRVhDTFVERVMgfSBmcm9tIFwiLi9zZXR0aW5ncy50c1wiXG5pbXBvcnQgeyBkZWZpbmVDb2xsZWN0aW9uLCBkZWZpbmVDb25maWcgfSBmcm9tIFwiQGNvbnRlbnQtY29sbGVjdGlvbnMvY29yZVwiXG5pbXBvcnQgeyBjb21waWxlTURYIH0gZnJvbSBcIkBjb250ZW50LWNvbGxlY3Rpb25zL21keFwiXG5pbXBvcnQgcmVoeXBlU2hpa2kgZnJvbSBcIkBzaGlraWpzL3JlaHlwZVwiXG5pbXBvcnQgeyB0cmFuc2Zvcm1lclR3b3NsYXNoIH0gZnJvbSBcIkBzaGlraWpzL3R3b3NsYXNoXCJcbmltcG9ydCByZWh5cGVLYXRleCBmcm9tIFwicmVoeXBlLWthdGV4XCJcbmltcG9ydCByZWh5cGVTbHVnIGZyb20gXCJyZWh5cGUtc2x1Z1wiXG5pbXBvcnQgcmVtYXJrRGVmaW5pdGlvbkxpc3QgZnJvbSBcInJlbWFyay1kZWZpbml0aW9uLWxpc3RcIlxuaW1wb3J0IHJlbWFya0RpcmVjdGl2ZSBmcm9tIFwicmVtYXJrLWRpcmVjdGl2ZVwiXG5pbXBvcnQgcmVtYXJrR2Vtb2ppIGZyb20gXCJyZW1hcmstZ2Vtb2ppXCJcbmltcG9ydCByZW1hcmtHZm0gZnJvbSBcInJlbWFyay1nZm1cIlxuaW1wb3J0IHJlbWFya01hdGggZnJvbSBcInJlbWFyay1tYXRoXCJcbmltcG9ydCB7IGxvYWRDb25maWcgfSBmcm9tIFwiLi9hY3Rpb25zL2NvbmZpZy9sb2FkLnRzXCJcbmltcG9ydCB7IGJ1aWxkQ2hhbmdlbG9nLCBjYWNoZUluY2x1ZGVHbG9iIH0gZnJvbSBcIi4vYWN0aW9ucy9jaGFuZ2Vsb2cvYnVpbGQudHNcIlxuaW1wb3J0IHsgQXJ0aWNsZSB9IGZyb20gXCIuL21vZGVscy9hcnRpY2xlLnRzXCJcbmltcG9ydCBzbHVnaWZ5IGZyb20gXCJAc2luZHJlc29yaHVzL3NsdWdpZnlcIlxuaW1wb3J0IHJlbWFya0N1c3RvbUhlYWRpbmdJZCBmcm9tIFwiLi9wbHVnaW5zL3JlbWFyay1jdXN0b20taGVhZGluZy1pZC50c1wiXG5pbXBvcnQgeyByZW1hcmtDYWxsb3V0IH0gZnJvbSBcIi4vcGx1Z2lucy9yZW1hcmstY2FsbG91dC50c1wiXG5pbXBvcnQgeyByZW1hcmtDYXJkIH0gZnJvbSBcIi4vcGx1Z2lucy9yZW1hcmstY2FyZC50c1wiXG5pbXBvcnQgeyByZW1hcmtDb2x1bW5zIH0gZnJvbSBcIi4vcGx1Z2lucy9yZW1hcmstY29sdW1ucy50c1wiXG5pbXBvcnQgeyByZW1hcmtUYWIgfSBmcm9tIFwiLi9wbHVnaW5zL3JlbWFyay10YWIudHNcIlxuaW1wb3J0IHsgcmVtYXJrQmFkZ2UgfSBmcm9tIFwiLi9wbHVnaW5zL3JlbWFyay1iYWRnZS50c1wiXG5pbXBvcnQgeyByZW1hcmtCdXR0b24gfSBmcm9tIFwiLi9wbHVnaW5zL3JlbWFyay1idXR0b24udHNcIlxuaW1wb3J0IHsgcmVtYXJrQWJiciB9IGZyb20gXCIuL3BsdWdpbnMvcmVtYXJrLWFiYnIudHNcIlxuaW1wb3J0IHsgcmVtYXJrRGVmbGlzdCB9IGZyb20gXCIuL3BsdWdpbnMvcmVtYXJrLWRlZmxpc3QudHNcIlxuaW1wb3J0IHsgcmVtYXJrRGV0YWlscyB9IGZyb20gXCIuL3BsdWdpbnMvcmVtYXJrLWRldGFpbHMudHNcIlxuaW1wb3J0IHsgcmVtYXJrRmlsZXRyZWUgfSBmcm9tIFwiLi9wbHVnaW5zL3JlbWFyay1maWxldHJlZS50c1wiXG5pbXBvcnQgeyByZW1hcmtJY29uIH0gZnJvbSBcIi4vcGx1Z2lucy9yZW1hcmstaWNvbi50c1wiXG5pbXBvcnQgeyByZW1hcmtDb2RlVGFicyB9IGZyb20gXCIuL3BsdWdpbnMvcmVtYXJrLWNvZGUtdGFicy50c1wiXG5pbXBvcnQgeyByZW1hcmtHaXRodWJDYWxsb3V0IH0gZnJvbSBcIi4vcGx1Z2lucy9yZW1hcmstZ2l0aHViLWNhbGxvdXQudHNcIlxuaW1wb3J0IHsgcmVtYXJrSW1hZ2UgfSBmcm9tIFwiLi9wbHVnaW5zL3JlbWFyay1pbWFnZS50c1wiXG5pbXBvcnQgeyByZW1hcmtNZWRpYSB9IGZyb20gXCIuL3BsdWdpbnMvcmVtYXJrLW1lZGlhLnRzXCJcbmltcG9ydCB7IHJlbWFya0Fuc2kgfSBmcm9tIFwiLi9wbHVnaW5zL3JlbWFyay1hbnNpLnRzXCJcbmltcG9ydCB7IHJlbWFya01lcm1haWQgfSBmcm9tIFwiLi9wbHVnaW5zL3JlbWFyay1tZXJtYWlkLnRzXCJcbmltcG9ydCB7IHJlbWFya1RvYyB9IGZyb20gXCIuL3BsdWdpbnMvcmVtYXJrLXRvYy50c1wiXG5pbXBvcnQgeyByZW1hcmtOcG0gfSBmcm9tIFwiLi9wbHVnaW5zL3JlbWFyay1ucG0udHNcIlxuaW1wb3J0IHsgcmVtYXJrU3RlcHMgfSBmcm9tIFwiLi9wbHVnaW5zL3JlbWFyay1zdGVwcy50c1wiXG5pbXBvcnQgeyByZW1hcmtQYXNzdGhyb3VnaERpcmVjdGl2ZSB9IGZyb20gXCIuL3BsdWdpbnMvcmVtYXJrLXBhc3N0aHJvdWdoLWRpcmVjdGl2ZS50c1wiXG5pbXBvcnQge1xuICB0cmFuc2Zvcm1lckxpbmVIaWdobGlnaHQsXG4gIHRyYW5zZm9ybWVyTm90YXRpb25zLFxufSBmcm9tIFwiLi9wbHVnaW5zL3NoaWtpLWxpbmUtaGlnaGxpZ2h0LnRzXCJcbmltcG9ydCB7IHJlaHlwZUlubGluZUNvZGUgfSBmcm9tIFwiLi9wbHVnaW5zL3JlaHlwZS1pbmxpbmUtY29kZS50c1wiXG5pbXBvcnQgeyByZWh5cGVUYXNrTGlzdEExMXkgfSBmcm9tIFwiLi9wbHVnaW5zL3JlaHlwZS10YXNrLWxpc3QtYTExeS50c1wiXG5pbXBvcnQgeyB0cmFuc2Zvcm1lckljb24gfSBmcm9tIFwiLi9wbHVnaW5zL3NoaWtpLWljb24udHNcIlxuaW1wb3J0IHsgcmVzb2x2ZUFzc2V0UGF0aCB9IGZyb20gXCIuL2hlbHBlcnMvcmVzb2x2ZS1hc3NldC1wYXRoLnRzXCJcbmltcG9ydCB7IHJlc29sdmVJbmNsdWRlcyB9IGZyb20gXCIuL2hlbHBlcnMvcmVzb2x2ZS1pbmNsdWRlcy50c1wiXG5pbXBvcnQgeyBleHRyYWN0U2VhcmNoVGV4dCB9IGZyb20gXCIuL2hlbHBlcnMvc2VhcmNoLXRleHQudHNcIlxuaW1wb3J0IHsgc3RyaXBMZWFkaW5nSDEgfSBmcm9tIFwiLi9oZWxwZXJzL2xsbXMudHNcIlxuaW1wb3J0IHsgZXh0cmFjdFRvYyB9IGZyb20gXCIuL2hlbHBlcnMvdG9jLnRzXCJcblxuY29uc3QgY29uZmlnID0gYXdhaXQgbG9hZENvbmZpZygpXG5cbmNvbnN0IGNoYW5nZWxvZ1NlY3Rpb25zID0gY29uZmlnLnNlY3Rpb25zPy5maWx0ZXIocyA9PiBzLnR5cGUgPT09IFwiY2hhbmdlbG9nXCIpID8/IFtdXG5mb3IgKGNvbnN0IHNlY3Rpb24gb2YgY2hhbmdlbG9nU2VjdGlvbnMpIHtcbiAgYXdhaXQgYnVpbGRDaGFuZ2Vsb2coc2VjdGlvbiwgY29uZmlnKVxufVxuXG5jb25zdCBjb25maWdJbmNsdWRlID0gQXJyYXkuaXNBcnJheShjb25maWcuaW5jbHVkZSkgPyBjb25maWcuaW5jbHVkZSA6IFtjb25maWcuaW5jbHVkZV1cbmNvbnN0IGluY2x1ZGUgPSBbXG4gIC4uLmNvbmZpZ0luY2x1ZGUsXG4gIC4uLmNoYW5nZWxvZ1NlY3Rpb25zLm1hcChzZWN0aW9uID0+IGNhY2hlSW5jbHVkZUdsb2Ioc2VjdGlvbiwgY29uZmlnKSksXG5dXG5cbmNvbnN0IHVzZXJFeGNsdWRlID0gY29uZmlnLmV4Y2x1ZGVcbiAgPyBBcnJheS5pc0FycmF5KGNvbmZpZy5leGNsdWRlKVxuICAgID8gY29uZmlnLmV4Y2x1ZGVcbiAgICA6IFtjb25maWcuZXhjbHVkZV1cbiAgOiBbXVxuLy8gV2hlbiB0aGUgY29uc3VtZXIgZG9lc24ndCBoYXZlIGEgLmdpdGlnbm9yZSwgZmFsbCBiYWNrIHRvIGEgc2Vuc2libGVcbi8vIGZsb29yIHNvIGAqKi8qLm1kYCBkb2Vzbid0IHN3ZWVwIHVwIGV2ZXJ5IFJFQURNRS5tZCB1bmRlciBub2RlX21vZHVsZXMsXG4vLyBidWlsZCBvdXRwdXRzLCBldGMuIFdpdGggYSAuZ2l0aWdub3JlIHByZXNlbnQgd2UgdHJ1c3QgdGhlIHVzZXIuXG5jb25zdCBoYXNHaXRpZ25vcmUgPSBleGlzdHNTeW5jKHJlc29sdmUoY29uZmlnLnJvb3QsIFwiLmdpdGlnbm9yZVwiKSlcbmNvbnN0IGRlZmF1bHRFeGNsdWRlID0gaGFzR2l0aWdub3JlID8gW10gOiBbLi4uREVGQVVMVF9FWENMVURFU11cbmNvbnN0IGV4Y2x1ZGUgPSBbLi4uZGVmYXVsdEV4Y2x1ZGUsIC4uLnVzZXJFeGNsdWRlXVxuXG4vLyBjb250ZW50LWNvbGxlY3Rpb25zIGNvbXBpbGVzIHRoaXMgZmlsZSB0byAuY29udGVudC1jb2xsZWN0aW9ucy9jYWNoZS87XG4vLyBnb2luZyB1cCAyIGxldmVscyByZWNvbnN0cnVjdHMgdGhlIGJhc2VEaXJlY3RvcnkgaXQgdXNlcyBmb3IgcGF0aCByZXNvbHV0aW9uXG5jb25zdCBiYXNlRGlyID0gcmVzb2x2ZShpbXBvcnQubWV0YS5kaXJuYW1lLCBcIi4uLy4uXCIpXG5jb25zdCBkaXJlY3RvcnkgPSByZWxhdGl2ZShiYXNlRGlyLCBjb25maWcucm9vdCkgfHwgXCIuXCJcblxuZnVuY3Rpb24gdG9QYXRoKGZpbGVQYXRoOiBzdHJpbmcpIHtcbiAgY29uc3QgbmFtZSA9IGJhc2VuYW1lKGZpbGVQYXRoKS5yZXBsYWNlKC9cXC5cXHcrJC8sIFwiXCIpXG4gIHJldHVybiBzbHVnaWZ5KG5hbWUpXG59XG5cbmZ1bmN0aW9uIGdldExhc3RVcGRhdGVkKGZpbGVQYXRoOiBzdHJpbmcpIHtcbiAgdHJ5IHtcbiAgICBjb25zdCB0aW1lc3RhbXAgPSBleGVjU3luYyhgZ2l0IGxvZyAtMSAtLWZvcm1hdD0lY0kgLS0gXCIke2ZpbGVQYXRofVwiYCwge1xuICAgICAgY3dkOiBjb25maWcucm9vdCxcbiAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgfSkudHJpbSgpXG4gICAgcmV0dXJuIHRpbWVzdGFtcCB8fCB1bmRlZmluZWRcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG59XG5cbmZ1bmN0aW9uIGV4dHJhY3RUaXRsZShjb250ZW50OiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICBjb25zdCBtYXRjaCA9IC9eI1xccysoLispJC9tLmV4ZWMoY29udGVudClcbiAgaWYgKG1hdGNoKSByZXR1cm4gbWF0Y2hbMV0hXG4gIHJldHVybiAoXG4gICAgcGF0aFxuICAgICAgLnNwbGl0KFwiL1wiKVxuICAgICAgLnBvcCgpXG4gICAgICA/LnJlcGxhY2UoL1xcLlxcdyskLywgXCJcIikgPz8gcGF0aFxuICApXG59XG5cbmNvbnN0IGFydGljbGVzID0gZGVmaW5lQ29sbGVjdGlvbih7XG4gIG5hbWU6IFwiYXJ0aWNsZXNcIixcbiAgZGlyZWN0b3J5LFxuICBpbmNsdWRlLFxuICBleGNsdWRlLFxuICBzY2hlbWE6IEFydGljbGUsXG4gIHRyYW5zZm9ybTogYXN5bmMgKGRvY3VtZW50LCBjb250ZXh0KSA9PiB7XG4gICAgY29uc3QgcGF0Y2ggPSBjb25maWcucGF0Y2hlcz8uZmluZChwID0+IHAuZmlsZSA9PT0gZG9jdW1lbnQuX21ldGEuZmlsZVBhdGgpXG4gICAgY29uc3QgZG9jID0gcGF0Y2ggPyB7IC4uLmRvY3VtZW50LCAuLi5wYXRjaC5hcnRpY2xlIH0gOiBkb2N1bWVudFxuICAgIGNvbnN0IGZpbGVQYXRoID0gcmVzb2x2ZShjb25maWcucm9vdCwgZG9jLl9tZXRhLmZpbGVQYXRoKVxuICAgIGNvbnN0IGNvbnRlbnQgPSByZXNvbHZlSW5jbHVkZXMoZG9jLmNvbnRlbnQsIGZpbGVQYXRoKVxuICAgIGNvbnN0IHRpdGxlID0gZG9jLnRpdGxlID8/IGV4dHJhY3RUaXRsZShjb250ZW50LCBkb2MuX21ldGEucGF0aClcbiAgICBjb25zdCBpY29uID0gZG9jLmljb25cbiAgICBjb25zdCBwYXRoID0gZG9jLnBhdGggPz8gdG9QYXRoKGRvYy5fbWV0YS5maWxlUGF0aClcbiAgICAvLyBUaGUgYXJ0aWNsZSdzIGgxIGlzIHJlbmRlcmVkIGZyb20gYHRpdGxlYCBieSB0aGUgbGF5b3V0LCBzbyBzdHJpcCBhbnlcbiAgICAvLyBsZWFkaW5nIGgxIGluIHRoZSBib2R5IHRvIGF2b2lkIHR3byBoMXMgc2lkZS1ieS1zaWRlIChlc3BlY2lhbGx5IHdoZW5cbiAgICAvLyBhIGNvbnRlbnQgcGF0Y2ggb3ZlcnJpZGVzIHRoZSB0aXRsZSB0byBzb21ldGhpbmcgZGlmZmVyZW50IGZyb20gdGhlXG4gICAgLy8gYm9keSdzIG93biBoZWFkaW5nKS5cbiAgICBjb25zdCBib2R5Q29udGVudCA9IHN0cmlwTGVhZGluZ0gxKGNvbnRlbnQpXG4gICAgY29uc3QgbWR4ID0gYXdhaXQgY29tcGlsZU1EWChcbiAgICAgIGNvbnRleHQsXG4gICAgICB7IC4uLmRvYywgY29udGVudDogYm9keUNvbnRlbnQgfSxcbiAgICAgIHtcbiAgICAgICAgcmVtYXJrUGx1Z2luczogW1xuICAgICAgICAgIHJlbWFya0dmbSxcbiAgICAgICAgICByZW1hcmtHZW1vamksXG4gICAgICAgICAgcmVtYXJrRGVmaW5pdGlvbkxpc3QsXG4gICAgICAgICAgcmVtYXJrRGVmbGlzdCxcbiAgICAgICAgICByZW1hcmtNYXRoLFxuICAgICAgICAgIHJlbWFya0RpcmVjdGl2ZSxcbiAgICAgICAgICByZW1hcmtDYWxsb3V0LFxuICAgICAgICAgIHJlbWFya0NhcmQsXG4gICAgICAgICAgcmVtYXJrQ29sdW1ucyxcbiAgICAgICAgICByZW1hcmtUYWIsXG4gICAgICAgICAgcmVtYXJrRGV0YWlscyxcbiAgICAgICAgICByZW1hcmtGaWxldHJlZSxcbiAgICAgICAgICByZW1hcmtJY29uLFxuICAgICAgICAgIHJlbWFya0JhZGdlLFxuICAgICAgICAgIHJlbWFya0J1dHRvbixcbiAgICAgICAgICByZW1hcmtBYmJyLFxuICAgICAgICAgIHJlbWFya0dpdGh1YkNhbGxvdXQsXG4gICAgICAgICAgW1xuICAgICAgICAgICAgcmVtYXJrSW1hZ2UsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGZpbGVQYXRoOiByZXNvbHZlKGNvbmZpZy5yb290LCBkb2MuX21ldGEuZmlsZVBhdGgpLFxuICAgICAgICAgICAgICByb290OiBjb25maWcucm9vdCxcbiAgICAgICAgICAgICAgYmFzZTogY29uZmlnLmJhc2UsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgcmVtYXJrQW5zaSxcbiAgICAgICAgICByZW1hcmtNZXJtYWlkLFxuICAgICAgICAgIHJlbWFya01lZGlhLFxuICAgICAgICAgIHJlbWFya1RvYyxcbiAgICAgICAgICByZW1hcmtOcG0sXG4gICAgICAgICAgcmVtYXJrQ29kZVRhYnMsXG4gICAgICAgICAgcmVtYXJrU3RlcHMsXG4gICAgICAgICAgcmVtYXJrQ3VzdG9tSGVhZGluZ0lkLFxuICAgICAgICAgIC8vIFJ1biBsYXN0OiBhbnl0aGluZyBzdGlsbCB0eXBlZCBhcyBhIGRpcmVjdGl2ZSBhZnRlciBldmVyeSBoYW5kbGVyXG4gICAgICAgICAgLy8gYWJvdmUgaXMgdW5pbnRlbmRlZCAoZS5nLiBgMy4yOjFgLCBgcG9ydDo4MDgwYCkg4oCUIHBhc3N0aHJvdWdoIGFzXG4gICAgICAgICAgLy8gcGxhaW4gdGV4dCBzbyBpdCBkb2Vzbid0IHJlbmRlciBhcyBhbiBlbXB0eSBzcGFuL2Rpdi5cbiAgICAgICAgICByZW1hcmtQYXNzdGhyb3VnaERpcmVjdGl2ZSxcbiAgICAgICAgXSxcbiAgICAgICAgcmVoeXBlUGx1Z2luczogW1xuICAgICAgICAgIFtcbiAgICAgICAgICAgIHJlaHlwZVNoaWtpLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0aGVtZXM6IHtcbiAgICAgICAgICAgICAgICBsaWdodDogY29uZmlnLmNvZGVUaGVtZUxpZ2h0LFxuICAgICAgICAgICAgICAgIGRhcms6IGNvbmZpZy5jb2RlVGhlbWVEYXJrLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAvLyBBIGZlbmNlIHdpdGggbm8gb3IgYW4gdW5rbm93biBsYW5nIGlzIG90aGVyd2lzZSBza2lwcGVkIGJ5IFNoaWtpIGFuZFxuICAgICAgICAgICAgICAvLyByZW5kZXJzIHdpdGhvdXQgbGluZSBwYWRkaW5nLCB0aGVtZSBjb2xvdXJzIG9yIHRyYW5zZm9ybWVycy5cbiAgICAgICAgICAgICAgZGVmYXVsdExhbmd1YWdlOiBcInRleHRcIixcbiAgICAgICAgICAgICAgZmFsbGJhY2tMYW5ndWFnZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgICAgIC8vIERhcmtlbiBjYXRwcHVjY2luLWxhdHRlJ3MgZ3JlZW4gKHRoZSBjb2xvdXIgdXNlZCBmb3Igc3RyaW5ncyBhbmRcbiAgICAgICAgICAgICAgLy8gc29tZSBjb21tZW50cykg4oCUIHRoZSB0aGVtZSBkZWZhdWx0ICM0MEEwMkIgbGFuZHMgYXQgMy4yOjEgb24gdGhlXG4gICAgICAgICAgICAgIC8vIGNvZGUtYmxvY2sgYmFja2dyb3VuZCwgYmVsb3cgdGhlIFdDQUcgQUEgNC41OjEgdGhyZXNob2xkLlxuICAgICAgICAgICAgICBjb2xvclJlcGxhY2VtZW50czoge1xuICAgICAgICAgICAgICAgIFwiY2F0cHB1Y2Npbi1sYXR0ZVwiOiB7XG4gICAgICAgICAgICAgICAgICBcIiM0MGEwMmJcIjogXCIjMmE3ZTE2XCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgdHJhbnNmb3JtZXJzOiBbXG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtZXJUd29zbGFzaCh7IGV4cGxpY2l0VHJpZ2dlcjogdHJ1ZSB9KSxcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm1lckljb24oKSxcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm1lck5vdGF0aW9ucygpLFxuICAgICAgICAgICAgICAgIHRyYW5zZm9ybWVyTGluZUhpZ2hsaWdodCgpLFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICBwYXJzZU1ldGFTdHJpbmc6IChtZXRhOiBzdHJpbmcpID0+ICh7IFwiZGF0YS1tZXRhXCI6IG1ldGEgfSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgcmVoeXBlSW5saW5lQ29kZSxcbiAgICAgICAgICByZWh5cGVTbHVnLFxuICAgICAgICAgIHJlaHlwZUthdGV4LFxuICAgICAgICAgIHJlaHlwZVRhc2tMaXN0QTExeSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgKVxuICAgIGNvbnN0IHRvY0l0ZW1zID0gZXh0cmFjdFRvYyhjb250ZW50KVxuICAgIGNvbnN0IHNlYXJjaFRleHQgPSBleHRyYWN0U2VhcmNoVGV4dChjb250ZW50KVxuICAgIGNvbnN0IGxhc3RVcGRhdGVkID0gZ2V0TGFzdFVwZGF0ZWQoZG9jLl9tZXRhLmZpbGVQYXRoKVxuICAgIGNvbnN0IGltYWdlID0gZG9jLmltYWdlXG4gICAgICA/IHJlc29sdmVBc3NldFBhdGgoZG9jLmltYWdlLCBmaWxlUGF0aCwgY29uZmlnLnJvb3QsIGNvbmZpZy5iYXNlKVxuICAgICAgOiB1bmRlZmluZWRcbiAgICByZXR1cm4ge1xuICAgICAgLi4uZG9jLFxuICAgICAgZmlsZTogZG9jLl9tZXRhLmZpbGVQYXRoLFxuICAgICAgbGFzdFVwZGF0ZWQsXG4gICAgICBpbWFnZSxcbiAgICAgIHRpdGxlLFxuICAgICAgaWNvbixcbiAgICAgIHBhdGgsXG4gICAgICB0b2NJdGVtcyxcbiAgICAgIHNlYXJjaFRleHQsXG4gICAgICBtZHgsXG4gICAgfVxuICB9LFxufSlcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29uZmlnKHtcbiAgLy8gQHRzLWV4cGVjdC1lcnJvciB0c2dvIHBpY2tzIHdyb25nIG92ZXJsb2FkIHdoZW4gcmVoeXBlLXNsdWcgYXVnbWVudHMgdW5pZmllZCB0eXBlc1xuICBjb250ZW50OiBbYXJ0aWNsZXNdLFxufSlcbiJdfQ==
219
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1jb2xsZWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NvdXJjZS9jb250ZW50LWNvbGxlY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUM3QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBQ3BDLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDaEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBQzFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUNyRCxPQUFPLFdBQVcsTUFBTSxpQkFBaUIsQ0FBQTtBQUN6QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUN2RCxPQUFPLFdBQVcsTUFBTSxjQUFjLENBQUE7QUFDdEMsT0FBTyxVQUFVLE1BQU0sYUFBYSxDQUFBO0FBQ3BDLE9BQU8sb0JBQW9CLE1BQU0sd0JBQXdCLENBQUE7QUFDekQsT0FBTyxlQUFlLE1BQU0sa0JBQWtCLENBQUE7QUFDOUMsT0FBTyxZQUFZLE1BQU0sZUFBZSxDQUFBO0FBQ3hDLE9BQU8sU0FBUyxNQUFNLFlBQVksQ0FBQTtBQUNsQyxPQUFPLFVBQVUsTUFBTSxhQUFhLENBQUE7QUFDcEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBQ3JELE9BQU8sRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQTtBQUMvRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDN0MsT0FBTyxPQUFPLE1BQU0sdUJBQXVCLENBQUE7QUFDM0MsT0FB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QyxNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUN0RCxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSztZQUNyQixDQUFDLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDO1lBQ2pFLENBQUMsQ0FBQyxTQUFTLENBQUE7UUFDYixPQUFPO1lBQ0wsR0FBRyxHQUFHO1lBQ04sSUFBSSxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUTtZQUN4QixXQUFXO1lBQ1gsS0FBSztZQUNMLEtBQUs7WUFDTCxJQUFJO1lBQ0osSUFBSTtZQUNKLFFBQVE7WUFDUixVQUFVO1lBQ1YsR0FBRztTQUNKLENBQUE7SUFDSCxDQUFDO0NBQ0YsQ0FBQyxDQUFBO0FBRUYsZUFBZSxZQUFZLENBQUM7SUFDMUIscUZBQXFGO0lBQ3JGLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQztDQUNwQixDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleGVjU3luYyB9IGZyb20gXCJub2RlOmNoaWxkX3Byb2Nlc3NcIlxuaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gXCJub2RlOmZzXCJcbmltcG9ydCB7IGJhc2VuYW1lLCByZWxhdGl2ZSwgcmVzb2x2ZSB9IGZyb20gXCJub2RlOnBhdGhcIlxuaW1wb3J0IHsgREVGQVVMVF9FWENMVURFUyB9IGZyb20gXCIuL3NldHRpbmdzLnRzXCJcbmltcG9ydCB7IGRlZmluZUNvbGxlY3Rpb24sIGRlZmluZUNvbmZpZyB9IGZyb20gXCJAY29udGVudC1jb2xsZWN0aW9ucy9jb3JlXCJcbmltcG9ydCB7IGNvbXBpbGVNRFggfSBmcm9tIFwiQGNvbnRlbnQtY29sbGVjdGlvbnMvbWR4XCJcbmltcG9ydCByZWh5cGVTaGlraSBmcm9tIFwiQHNoaWtpanMvcmVoeXBlXCJcbmltcG9ydCB7IHRyYW5zZm9ybWVyVHdvc2xhc2ggfSBmcm9tIFwiQHNoaWtpanMvdHdvc2xhc2hcIlxuaW1wb3J0IHJlaHlwZUthdGV4IGZyb20gXCJyZWh5cGUta2F0ZXhcIlxuaW1wb3J0IHJlaHlwZVNsdWcgZnJvbSBcInJlaHlwZS1zbHVnXCJcbmltcG9ydCByZW1hcmtEZWZpbml0aW9uTGlzdCBmcm9tIFwicmVtYXJrLWRlZmluaXRpb24tbGlzdFwiXG5pbXBvcnQgcmVtYXJrRGlyZWN0aXZlIGZyb20gXCJyZW1hcmstZGlyZWN0aXZlXCJcbmltcG9ydCByZW1hcmtHZW1vamkgZnJvbSBcInJlbWFyay1nZW1vamlcIlxuaW1wb3J0IHJlbWFya0dmbSBmcm9tIFwicmVtYXJrLWdmbVwiXG5pbXBvcnQgcmVtYXJrTWF0aCBmcm9tIFwicmVtYXJrLW1hdGhcIlxuaW1wb3J0IHsgbG9hZENvbmZpZyB9IGZyb20gXCIuL2FjdGlvbnMvY29uZmlnL2xvYWQudHNcIlxuaW1wb3J0IHsgYnVpbGRDaGFuZ2Vsb2csIGNhY2hlSW5jbHVkZUdsb2IgfSBmcm9tIFwiLi9hY3Rpb25zL2NoYW5nZWxvZy9idWlsZC50c1wiXG5pbXBvcnQgeyBBcnRpY2xlIH0gZnJvbSBcIi4vbW9kZWxzL2FydGljbGUudHNcIlxuaW1wb3J0IHNsdWdpZnkgZnJvbSBcIkBzaW5kcmVzb3JodXMvc2x1Z2lmeVwiXG5pbXBvcnQgcmVtYXJrQ3VzdG9tSGVhZGluZ0lkIGZyb20gXCIuL3BsdWdpbnMvcmVtYXJrLWN1c3RvbS1oZWFkaW5nLWlkLnRzXCJcbmltcG9ydCB7IHJlbWFya0NhbGxvdXQgfSBmcm9tIFwiLi9wbHVnaW5zL3JlbWFyay1jYWxsb3V0LnRzXCJcbmltcG9ydCB7IHJlbWFya0NhcmQgfSBmcm9tIFwiLi9wbHVnaW5zL3JlbWFyay1jYXJkLnRzXCJcbmltcG9ydCB7IHJlbWFya0NvbHVtbnMgfSBmcm9tIFwiLi9wbHVnaW5zL3JlbWFyay1jb2x1bW5zLnRzXCJcbmltcG9ydCB7IHJlbWFya1RhYiB9IGZyb20gXCIuL3BsdWdpbnMvcmVtYXJrLXRhYi50c1wiXG5pbXBvcnQgeyByZW1hcmtCYWRnZSB9IGZyb20gXCIuL3BsdWdpbnMvcmVtYXJrLWJhZGdlLnRzXCJcbmltcG9ydCB7IHJlbWFya0J1dHRvbiB9IGZyb20gXCIuL3BsdWdpbnMvcmVtYXJrLWJ1dHRvbi50c1wiXG5pbXBvcnQgeyByZW1hcmtBYmJyIH0gZnJvbSBcIi4vcGx1Z2lucy9yZW1hcmstYWJici50c1wiXG5pbXBvcnQgeyByZW1hcmtEZWZsaXN0IH0gZnJvbSBcIi4vcGx1Z2lucy9yZW1hcmstZGVmbGlzdC50c1wiXG5pbXBvcnQgeyByZW1hcmtEZXRhaWxzIH0gZnJvbSBcIi4vcGx1Z2lucy9yZW1hcmstZGV0YWlscy50c1wiXG5pbXBvcnQgeyByZW1hcmtGaWxldHJlZSB9IGZyb20gXCIuL3BsdWdpbnMvcmVtYXJrLWZpbGV0cmVlLnRzXCJcbmltcG9ydCB7IHJlbWFya0ljb24gfSBmcm9tIFwiLi9wbHVnaW5zL3JlbWFyay1pY29uLnRzXCJcbmltcG9ydCB7IHJlbWFya0NvZGVUYWJzIH0gZnJvbSBcIi4vcGx1Z2lucy9yZW1hcmstY29kZS10YWJzLnRzXCJcbmltcG9ydCB7IHJlbWFya0dpdGh1YkNhbGxvdXQgfSBmcm9tIFwiLi9wbHVnaW5zL3JlbWFyay1naXRodWItY2FsbG91dC50c1wiXG5pbXBvcnQgeyByZW1hcmtJbWFnZSB9IGZyb20gXCIuL3BsdWdpbnMvcmVtYXJrLWltYWdlLnRzXCJcbmltcG9ydCB7IHJlbWFya01lZGlhIH0gZnJvbSBcIi4vcGx1Z2lucy9yZW1hcmstbWVkaWEudHNcIlxuaW1wb3J0IHsgcmVtYXJrQW5zaSB9IGZyb20gXCIuL3BsdWdpbnMvcmVtYXJrLWFuc2kudHNcIlxuaW1wb3J0IHsgcmVtYXJrTWVybWFpZCB9IGZyb20gXCIuL3BsdWdpbnMvcmVtYXJrLW1lcm1haWQudHNcIlxuaW1wb3J0IHsgcmVtYXJrVG9jIH0gZnJvbSBcIi4vcGx1Z2lucy9yZW1hcmstdG9jLnRzXCJcbmltcG9ydCB7IHJlbWFya05wbSB9IGZyb20gXCIuL3BsdWdpbnMvcmVtYXJrLW5wbS50c1wiXG5pbXBvcnQgeyByZW1hcmtTdGVwcyB9IGZyb20gXCIuL3BsdWdpbnMvcmVtYXJrLXN0ZXBzLnRzXCJcbmltcG9ydCB7IHJlbWFya1Bhc3N0aHJvdWdoRGlyZWN0aXZlIH0gZnJvbSBcIi4vcGx1Z2lucy9yZW1hcmstcGFzc3Rocm91Z2gtZGlyZWN0aXZlLnRzXCJcbmltcG9ydCB7XG4gIHRyYW5zZm9ybWVyTGluZUhpZ2hsaWdodCxcbiAgdHJhbnNmb3JtZXJOb3RhdGlvbnMsXG59IGZyb20gXCIuL3BsdWdpbnMvc2hpa2ktbGluZS1oaWdobGlnaHQudHNcIlxuaW1wb3J0IHsgcmVoeXBlSW5saW5lQ29kZSB9IGZyb20gXCIuL3BsdWdpbnMvcmVoeXBlLWlubGluZS1jb2RlLnRzXCJcbmltcG9ydCB7IHJlaHlwZVRhc2tMaXN0QTExeSB9IGZyb20gXCIuL3BsdWdpbnMvcmVoeXBlLXRhc2stbGlzdC1hMTF5LnRzXCJcbmltcG9ydCB7IHRyYW5zZm9ybWVySWNvbiB9IGZyb20gXCIuL3BsdWdpbnMvc2hpa2ktaWNvbi50c1wiXG5pbXBvcnQgeyByZXNvbHZlQXNzZXRQYXRoIH0gZnJvbSBcIi4vaGVscGVycy9yZXNvbHZlLWFzc2V0LXBhdGgudHNcIlxuaW1wb3J0IHsgcmVzb2x2ZUluY2x1ZGVzIH0gZnJvbSBcIi4vaGVscGVycy9yZXNvbHZlLWluY2x1ZGVzLnRzXCJcbmltcG9ydCB7IGV4dHJhY3RTZWFyY2hUZXh0IH0gZnJvbSBcIi4vaGVscGVycy9zZWFyY2gtdGV4dC50c1wiXG5pbXBvcnQgeyBzdHJpcExlYWRpbmdIMSB9IGZyb20gXCIuL2hlbHBlcnMvbGxtcy50c1wiXG5pbXBvcnQgeyBleHRyYWN0VG9jIH0gZnJvbSBcIi4vaGVscGVycy90b2MudHNcIlxuXG5jb25zdCBjb25maWcgPSBhd2FpdCBsb2FkQ29uZmlnKClcblxuY29uc3QgY2hhbmdlbG9nU2VjdGlvbnMgPSBjb25maWcuc2VjdGlvbnM/LmZpbHRlcihzID0+IHMudHlwZSA9PT0gXCJjaGFuZ2Vsb2dcIikgPz8gW11cbmZvciAoY29uc3Qgc2VjdGlvbiBvZiBjaGFuZ2Vsb2dTZWN0aW9ucykge1xuICBhd2FpdCBidWlsZENoYW5nZWxvZyhzZWN0aW9uLCBjb25maWcpXG59XG5cbmNvbnN0IGNvbmZpZ0luY2x1ZGUgPSBBcnJheS5pc0FycmF5KGNvbmZpZy5pbmNsdWRlKSA/IGNvbmZpZy5pbmNsdWRlIDogW2NvbmZpZy5pbmNsdWRlXVxuY29uc3QgaW5jbHVkZSA9IFtcbiAgLi4uY29uZmlnSW5jbHVkZSxcbiAgLi4uY2hhbmdlbG9nU2VjdGlvbnMubWFwKHNlY3Rpb24gPT4gY2FjaGVJbmNsdWRlR2xvYihzZWN0aW9uLCBjb25maWcpKSxcbl1cblxuY29uc3QgdXNlckV4Y2x1ZGUgPSBjb25maWcuZXhjbHVkZVxuICA/IEFycmF5LmlzQXJyYXkoY29uZmlnLmV4Y2x1ZGUpXG4gICAgPyBjb25maWcuZXhjbHVkZVxuICAgIDogW2NvbmZpZy5leGNsdWRlXVxuICA6IFtdXG4vLyBXaGVuIHRoZSBjb25zdW1lciBkb2Vzbid0IGhhdmUgYSAuZ2l0aWdub3JlLCBmYWxsIGJhY2sgdG8gYSBzZW5zaWJsZVxuLy8gZmxvb3Igc28gYCoqLyoubWRgIGRvZXNuJ3Qgc3dlZXAgdXAgZXZlcnkgUkVBRE1FLm1kIHVuZGVyIG5vZGVfbW9kdWxlcyxcbi8vIGJ1aWxkIG91dHB1dHMsIGV0Yy4gV2l0aCBhIC5naXRpZ25vcmUgcHJlc2VudCB3ZSB0cnVzdCB0aGUgdXNlci5cbmNvbnN0IGhhc0dpdGlnbm9yZSA9IGV4aXN0c1N5bmMocmVzb2x2ZShjb25maWcucm9vdCwgXCIuZ2l0aWdub3JlXCIpKVxuY29uc3QgZGVmYXVsdEV4Y2x1ZGUgPSBoYXNHaXRpZ25vcmUgPyBbXSA6IFsuLi5ERUZBVUxUX0VYQ0xVREVTXVxuY29uc3QgZXhjbHVkZSA9IFsuLi5kZWZhdWx0RXhjbHVkZSwgLi4udXNlckV4Y2x1ZGVdXG5cbi8vIGNvbnRlbnQtY29sbGVjdGlvbnMgY29tcGlsZXMgdGhpcyBmaWxlIHRvIC5jb250ZW50LWNvbGxlY3Rpb25zL2NhY2hlLztcbi8vIGdvaW5nIHVwIDIgbGV2ZWxzIHJlY29uc3RydWN0cyB0aGUgYmFzZURpcmVjdG9yeSBpdCB1c2VzIGZvciBwYXRoIHJlc29sdXRpb25cbmNvbnN0IGJhc2VEaXIgPSByZXNvbHZlKGltcG9ydC5tZXRhLmRpcm5hbWUsIFwiLi4vLi5cIilcbmNvbnN0IGRpcmVjdG9yeSA9IHJlbGF0aXZlKGJhc2VEaXIsIGNvbmZpZy5yb290KSB8fCBcIi5cIlxuXG5mdW5jdGlvbiB0b1BhdGgoZmlsZVBhdGg6IHN0cmluZykge1xuICBjb25zdCBuYW1lID0gYmFzZW5hbWUoZmlsZVBhdGgpLnJlcGxhY2UoL1xcLlxcdyskLywgXCJcIilcbiAgcmV0dXJuIHNsdWdpZnkobmFtZSlcbn1cblxuZnVuY3Rpb24gZ2V0TGFzdFVwZGF0ZWQoZmlsZVBhdGg6IHN0cmluZykge1xuICB0cnkge1xuICAgIGNvbnN0IHRpbWVzdGFtcCA9IGV4ZWNTeW5jKGBnaXQgbG9nIC0xIC0tZm9ybWF0PSVjSSAtLSBcIiR7ZmlsZVBhdGh9XCJgLCB7XG4gICAgICBjd2Q6IGNvbmZpZy5yb290LFxuICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICB9KS50cmltKClcbiAgICByZXR1cm4gdGltZXN0YW1wIHx8IHVuZGVmaW5lZFxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cbn1cblxuZnVuY3Rpb24gZXh0cmFjdFRpdGxlKGNvbnRlbnQ6IHN0cmluZywgcGF0aDogc3RyaW5nKSB7XG4gIGNvbnN0IG1hdGNoID0gL14jXFxzKyguKykkL20uZXhlYyhjb250ZW50KVxuICBpZiAobWF0Y2gpIHJldHVybiBtYXRjaFsxXSFcbiAgcmV0dXJuIChcbiAgICBwYXRoXG4gICAgICAuc3BsaXQoXCIvXCIpXG4gICAgICAucG9wKClcbiAgICAgID8ucmVwbGFjZSgvXFwuXFx3KyQvLCBcIlwiKSA/PyBwYXRoXG4gIClcbn1cblxuY29uc3QgYXJ0aWNsZXMgPSBkZWZpbmVDb2xsZWN0aW9uKHtcbiAgbmFtZTogXCJhcnRpY2xlc1wiLFxuICBkaXJlY3RvcnksXG4gIGluY2x1ZGUsXG4gIGV4Y2x1ZGUsXG4gIHNjaGVtYTogQXJ0aWNsZSxcbiAgdHJhbnNmb3JtOiBhc3luYyAoZG9jdW1lbnQsIGNvbnRleHQpID0+IHtcbiAgICBjb25zdCBwYXRjaCA9IGNvbmZpZy5wYXRjaGVzPy5maW5kKHAgPT4gcC5maWxlID09PSBkb2N1bWVudC5fbWV0YS5maWxlUGF0aClcbiAgICBjb25zdCBkb2MgPSBwYXRjaCA/IHsgLi4uZG9jdW1lbnQsIC4uLnBhdGNoLmFydGljbGUgfSA6IGRvY3VtZW50XG4gICAgY29uc3QgZmlsZVBhdGggPSByZXNvbHZlKGNvbmZpZy5yb290LCBkb2MuX21ldGEuZmlsZVBhdGgpXG4gICAgY29uc3QgY29udGVudCA9IGF3YWl0IHJlc29sdmVJbmNsdWRlcyhkb2MuY29udGVudCwgZmlsZVBhdGgpXG4gICAgY29uc3QgdGl0bGUgPSBkb2MudGl0bGUgPz8gZXh0cmFjdFRpdGxlKGNvbnRlbnQsIGRvYy5fbWV0YS5wYXRoKVxuICAgIGNvbnN0IGljb24gPSBkb2MuaWNvblxuICAgIGNvbnN0IHBhdGggPSBkb2MucGF0aCA/PyB0b1BhdGgoZG9jLl9tZXRhLmZpbGVQYXRoKVxuICAgIC8vIFRoZSBhcnRpY2xlJ3MgaDEgaXMgcmVuZGVyZWQgZnJvbSBgdGl0bGVgIGJ5IHRoZSBsYXlvdXQsIHNvIHN0cmlwIGFueVxuICAgIC8vIGxlYWRpbmcgaDEgaW4gdGhlIGJvZHkgdG8gYXZvaWQgdHdvIGgxcyBzaWRlLWJ5LXNpZGUgKGVzcGVjaWFsbHkgd2hlblxuICAgIC8vIGEgY29udGVudCBwYXRjaCBvdmVycmlkZXMgdGhlIHRpdGxlIHRvIHNvbWV0aGluZyBkaWZmZXJlbnQgZnJvbSB0aGVcbiAgICAvLyBib2R5J3Mgb3duIGhlYWRpbmcpLlxuICAgIGNvbnN0IGJvZHlDb250ZW50ID0gc3RyaXBMZWFkaW5nSDEoY29udGVudClcbiAgICBjb25zdCBtZHggPSBhd2FpdCBjb21waWxlTURYKFxuICAgICAgY29udGV4dCxcbiAgICAgIHsgLi4uZG9jLCBjb250ZW50OiBib2R5Q29udGVudCB9LFxuICAgICAge1xuICAgICAgICByZW1hcmtQbHVnaW5zOiBbXG4gICAgICAgICAgcmVtYXJrR2ZtLFxuICAgICAgICAgIHJlbWFya0dlbW9qaSxcbiAgICAgICAgICByZW1hcmtEZWZpbml0aW9uTGlzdCxcbiAgICAgICAgICByZW1hcmtEZWZsaXN0LFxuICAgICAgICAgIHJlbWFya01hdGgsXG4gICAgICAgICAgcmVtYXJrRGlyZWN0aXZlLFxuICAgICAgICAgIHJlbWFya0NhbGxvdXQsXG4gICAgICAgICAgcmVtYXJrQ2FyZCxcbiAgICAgICAgICByZW1hcmtDb2x1bW5zLFxuICAgICAgICAgIHJlbWFya1RhYixcbiAgICAgICAgICByZW1hcmtEZXRhaWxzLFxuICAgICAgICAgIHJlbWFya0ZpbGV0cmVlLFxuICAgICAgICAgIHJlbWFya0ljb24sXG4gICAgICAgICAgcmVtYXJrQmFkZ2UsXG4gICAgICAgICAgcmVtYXJrQnV0dG9uLFxuICAgICAgICAgIHJlbWFya0FiYnIsXG4gICAgICAgICAgcmVtYXJrR2l0aHViQ2FsbG91dCxcbiAgICAgICAgICBbXG4gICAgICAgICAgICByZW1hcmtJbWFnZSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZmlsZVBhdGg6IHJlc29sdmUoY29uZmlnLnJvb3QsIGRvYy5fbWV0YS5maWxlUGF0aCksXG4gICAgICAgICAgICAgIHJvb3Q6IGNvbmZpZy5yb290LFxuICAgICAgICAgICAgICBiYXNlOiBjb25maWcuYmFzZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICByZW1hcmtBbnNpLFxuICAgICAgICAgIHJlbWFya01lcm1haWQsXG4gICAgICAgICAgcmVtYXJrTWVkaWEsXG4gICAgICAgICAgcmVtYXJrVG9jLFxuICAgICAgICAgIHJlbWFya05wbSxcbiAgICAgICAgICByZW1hcmtDb2RlVGFicyxcbiAgICAgICAgICByZW1hcmtTdGVwcyxcbiAgICAgICAgICByZW1hcmtDdXN0b21IZWFkaW5nSWQsXG4gICAgICAgICAgLy8gUnVuIGxhc3Q6IGFueXRoaW5nIHN0aWxsIHR5cGVkIGFzIGEgZGlyZWN0aXZlIGFmdGVyIGV2ZXJ5IGhhbmRsZXJcbiAgICAgICAgICAvLyBhYm92ZSBpcyB1bmludGVuZGVkIChlLmcuIGAzLjI6MWAsIGBwb3J0OjgwODBgKSDigJQgcGFzc3Rocm91Z2ggYXNcbiAgICAgICAgICAvLyBwbGFpbiB0ZXh0IHNvIGl0IGRvZXNuJ3QgcmVuZGVyIGFzIGFuIGVtcHR5IHNwYW4vZGl2LlxuICAgICAgICAgIHJlbWFya1Bhc3N0aHJvdWdoRGlyZWN0aXZlLFxuICAgICAgICBdLFxuICAgICAgICByZWh5cGVQbHVnaW5zOiBbXG4gICAgICAgICAgW1xuICAgICAgICAgICAgcmVoeXBlU2hpa2ksXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHRoZW1lczoge1xuICAgICAgICAgICAgICAgIGxpZ2h0OiBjb25maWcuY29kZVRoZW1lTGlnaHQsXG4gICAgICAgICAgICAgICAgZGFyazogY29uZmlnLmNvZGVUaGVtZURhcmssXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIC8vIEEgZmVuY2Ugd2l0aCBubyBvciBhbiB1bmtub3duIGxhbmcgaXMgb3RoZXJ3aXNlIHNraXBwZWQgYnkgU2hpa2kgYW5kXG4gICAgICAgICAgICAgIC8vIHJlbmRlcnMgd2l0aG91dCBsaW5lIHBhZGRpbmcsIHRoZW1lIGNvbG91cnMgb3IgdHJhbnNmb3JtZXJzLlxuICAgICAgICAgICAgICBkZWZhdWx0TGFuZ3VhZ2U6IFwidGV4dFwiLFxuICAgICAgICAgICAgICBmYWxsYmFja0xhbmd1YWdlOiBcInRleHRcIixcbiAgICAgICAgICAgICAgLy8gRGFya2VuIGNhdHBwdWNjaW4tbGF0dGUncyBncmVlbiAodGhlIGNvbG91ciB1c2VkIGZvciBzdHJpbmdzIGFuZFxuICAgICAgICAgICAgICAvLyBzb21lIGNvbW1lbnRzKSDigJQgdGhlIHRoZW1lIGRlZmF1bHQgIzQwQTAyQiBsYW5kcyBhdCAzLjI6MSBvbiB0aGVcbiAgICAgICAgICAgICAgLy8gY29kZS1ibG9jayBiYWNrZ3JvdW5kLCBiZWxvdyB0aGUgV0NBRyBBQSA0LjU6MSB0aHJlc2hvbGQuXG4gICAgICAgICAgICAgIGNvbG9yUmVwbGFjZW1lbnRzOiB7XG4gICAgICAgICAgICAgICAgXCJjYXRwcHVjY2luLWxhdHRlXCI6IHtcbiAgICAgICAgICAgICAgICAgIFwiIzQwYTAyYlwiOiBcIiMyYTdlMTZcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB0cmFuc2Zvcm1lcnM6IFtcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm1lclR3b3NsYXNoKHsgZXhwbGljaXRUcmlnZ2VyOiB0cnVlIH0pLFxuICAgICAgICAgICAgICAgIHRyYW5zZm9ybWVySWNvbigpLFxuICAgICAgICAgICAgICAgIHRyYW5zZm9ybWVyTm90YXRpb25zKCksXG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtZXJMaW5lSGlnaGxpZ2h0KCksXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIHBhcnNlTWV0YVN0cmluZzogKG1ldGE6IHN0cmluZykgPT4gKHsgXCJkYXRhLW1ldGFcIjogbWV0YSB9KSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICByZWh5cGVJbmxpbmVDb2RlLFxuICAgICAgICAgIHJlaHlwZVNsdWcsXG4gICAgICAgICAgcmVoeXBlS2F0ZXgsXG4gICAgICAgICAgcmVoeXBlVGFza0xpc3RBMTF5LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICApXG4gICAgY29uc3QgdG9jSXRlbXMgPSBleHRyYWN0VG9jKGNvbnRlbnQpXG4gICAgY29uc3Qgc2VhcmNoVGV4dCA9IGV4dHJhY3RTZWFyY2hUZXh0KGNvbnRlbnQpXG4gICAgY29uc3QgbGFzdFVwZGF0ZWQgPSBnZXRMYXN0VXBkYXRlZChkb2MuX21ldGEuZmlsZVBhdGgpXG4gICAgY29uc3QgaW1hZ2UgPSBkb2MuaW1hZ2VcbiAgICAgID8gcmVzb2x2ZUFzc2V0UGF0aChkb2MuaW1hZ2UsIGZpbGVQYXRoLCBjb25maWcucm9vdCwgY29uZmlnLmJhc2UpXG4gICAgICA6IHVuZGVmaW5lZFxuICAgIHJldHVybiB7XG4gICAgICAuLi5kb2MsXG4gICAgICBmaWxlOiBkb2MuX21ldGEuZmlsZVBhdGgsXG4gICAgICBsYXN0VXBkYXRlZCxcbiAgICAgIGltYWdlLFxuICAgICAgdGl0bGUsXG4gICAgICBpY29uLFxuICAgICAgcGF0aCxcbiAgICAgIHRvY0l0ZW1zLFxuICAgICAgc2VhcmNoVGV4dCxcbiAgICAgIG1keCxcbiAgICB9XG4gIH0sXG59KVxuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb25maWcoe1xuICAvLyBAdHMtZXhwZWN0LWVycm9yIHRzZ28gcGlja3Mgd3Jvbmcgb3ZlcmxvYWQgd2hlbiByZWh5cGUtc2x1ZyBhdWdtZW50cyB1bmlmaWVkIHR5cGVzXG4gIGNvbnRlbnQ6IFthcnRpY2xlc10sXG59KVxuIl19
@@ -1,2 +1,2 @@
1
1
  /** Resolves ::include{file="..."} directives by replacing them with referenced file contents */
2
- export declare function resolveIncludes(content: string, filePath: string, depth?: number): string;
2
+ export declare function resolveIncludes(content: string, filePath: string, depth?: number): Promise<string>;
@@ -1,4 +1,4 @@
1
- import { readFileSync } from "node:fs";
1
+ import { readFile } from "node:fs/promises";
2
2
  import { dirname, extname, resolve } from "node:path";
3
3
  const INCLUDE_RE = /^::include\{(.+)\}$/;
4
4
  const FRONTMATTER_RE = /^---\n[\s\S]*?\n---\n?/;
@@ -52,14 +52,14 @@ function parseAttributes(raw) {
52
52
  }
53
53
  return attrs;
54
54
  }
55
- function resolveDirective(rawAttrs, fileDir, depth) {
55
+ async function resolveDirective(rawAttrs, fileDir, depth) {
56
56
  const attrs = parseAttributes(rawAttrs);
57
57
  const file = attrs.file;
58
58
  if (!file)
59
59
  return undefined;
60
60
  const absolutePath = resolve(fileDir, file);
61
61
  try {
62
- let included = readFileSync(absolutePath, "utf-8");
62
+ let included = await readFile(absolutePath, "utf-8");
63
63
  const ext = extname(file).toLowerCase();
64
64
  const lang = extToLang[ext];
65
65
  if (lang && !file.endsWith(".md")) {
@@ -76,7 +76,7 @@ function resolveDirective(rawAttrs, fileDir, depth) {
76
76
  }
77
77
  }
78
78
  /** Resolves ::include{file="..."} directives by replacing them with referenced file contents */
79
- export function resolveIncludes(content, filePath, depth = 0) {
79
+ export async function resolveIncludes(content, filePath, depth = 0) {
80
80
  if (depth > 5)
81
81
  return content;
82
82
  const fileDir = dirname(filePath);
@@ -101,13 +101,13 @@ export function resolveIncludes(content, filePath, depth = 0) {
101
101
  }
102
102
  const includeMatch = INCLUDE_RE.exec(line);
103
103
  if (includeMatch) {
104
- const resolved = resolveDirective(includeMatch[1], fileDir, depth);
105
- result.push(resolved ?? line);
104
+ const directive = resolveDirective(includeMatch[1], fileDir, depth);
105
+ result.push(directive.then(resolved => resolved ?? line));
106
106
  }
107
107
  else {
108
108
  result.push(line);
109
109
  }
110
110
  }
111
- return result.join("\n");
111
+ return (await Promise.all(result)).join("\n");
112
112
  }
113
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZS1pbmNsdWRlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9oZWxwZXJzL3Jlc29sdmUtaW5jbHVkZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUN0QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFFckQsTUFBTSxVQUFVLEdBQUcscUJBQXFCLENBQUE7QUFDeEMsTUFBTSxjQUFjLEdBQUcsd0JBQXdCLENBQUE7QUFDL0MsTUFBTSxRQUFRLEdBQUcsZ0JBQWdCLENBQUE7QUFFakMsTUFBTSxTQUFTLEdBQTJCO0lBQ3hDLEtBQUssRUFBRSxZQUFZO0lBQ25CLE1BQU0sRUFBRSxLQUFLO0lBQ2IsS0FBSyxFQUFFLFlBQVk7SUFDbkIsTUFBTSxFQUFFLEtBQUs7SUFDYixLQUFLLEVBQUUsUUFBUTtJQUNmLEtBQUssRUFBRSxNQUFNO0lBQ2IsS0FBSyxFQUFFLElBQUk7SUFDWCxLQUFLLEVBQUUsTUFBTTtJQUNiLE9BQU8sRUFBRSxNQUFNO0lBQ2YsS0FBSyxFQUFFLFFBQVE7SUFDZixRQUFRLEVBQUUsT0FBTztJQUNqQixJQUFJLEVBQUUsR0FBRztJQUNULE1BQU0sRUFBRSxLQUFLO0lBQ2IsSUFBSSxFQUFFLEdBQUc7SUFDVCxLQUFLLEVBQUUsUUFBUTtJQUNmLE1BQU0sRUFBRSxLQUFLO0lBQ2IsT0FBTyxFQUFFLE1BQU07SUFDZixPQUFPLEVBQUUsTUFBTTtJQUNmLE9BQU8sRUFBRSxNQUFNO0lBQ2YsT0FBTyxFQUFFLE1BQU07SUFDZixNQUFNLEVBQUUsTUFBTTtJQUNkLE9BQU8sRUFBRSxNQUFNO0lBQ2YsTUFBTSxFQUFFLEtBQUs7SUFDYixNQUFNLEVBQUUsS0FBSztJQUNiLEtBQUssRUFBRSxNQUFNO0lBQ2IsT0FBTyxFQUFFLE1BQU07SUFDZixNQUFNLEVBQUUsS0FB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aW1wb3J0IHsgZGlybmFtZSwgZXh0bmFtZSwgcmVzb2x2ZSB9IGZyb20gXCJub2RlOnBhdGhcIlxuXG5jb25zdCBJTkNMVURFX1JFID0gL146OmluY2x1ZGVcXHsoLispXFx9JC9cbmNvbnN0IEZST05UTUFUVEVSX1JFID0gL14tLS1cXG5bXFxzXFxTXSo/XFxuLS0tXFxuPy9cbmNvbnN0IEZFTkNFX1JFID0gL14oYHszLH18fnszLH0pL1xuXG5jb25zdCBleHRUb0xhbmc6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIFwiLnRzXCI6IFwidHlwZXNjcmlwdFwiLFxuICBcIi50c3hcIjogXCJ0c3hcIixcbiAgXCIuanNcIjogXCJqYXZhc2NyaXB0XCIsXG4gIFwiLmpzeFwiOiBcImpzeFwiLFxuICBcIi5weVwiOiBcInB5dGhvblwiLFxuICBcIi5yc1wiOiBcInJ1c3RcIixcbiAgXCIuZ29cIjogXCJnb1wiLFxuICBcIi5yYlwiOiBcInJ1YnlcIixcbiAgXCIuamF2YVwiOiBcImphdmFcIixcbiAgXCIua3RcIjogXCJrb3RsaW5cIixcbiAgXCIuc3dpZnRcIjogXCJzd2lmdFwiLFxuICBcIi5jXCI6IFwiY1wiLFxuICBcIi5jcHBcIjogXCJjcHBcIixcbiAgXCIuaFwiOiBcImNcIixcbiAgXCIuY3NcIjogXCJjc2hhcnBcIixcbiAgXCIuY3NzXCI6IFwiY3NzXCIsXG4gIFwiLnNjc3NcIjogXCJzY3NzXCIsXG4gIFwiLmh0bWxcIjogXCJodG1sXCIsXG4gIFwiLmpzb25cIjogXCJqc29uXCIsXG4gIFwiLnlhbWxcIjogXCJ5YW1sXCIsXG4gIFwiLnltbFwiOiBcInlhbWxcIixcbiAgXCIudG9tbFwiOiBcInRvbWxcIixcbiAgXCIueG1sXCI6IFwieG1sXCIsXG4gIFwiLnNxbFwiOiBcInNxbFwiLFxuICBcIi5zaFwiOiBcImJhc2hcIixcbiAgXCIuYmFzaFwiOiBcImJhc2hcIixcbiAgXCIuenNoXCI6IFwienNoXCIsXG4gIFwiLmZpc2hcIjogXCJmaXNoXCIsXG4gIFwiLnBzMVwiOiBcInBvd2Vyc2hlbGxcIixcbiAgXCIuZG9ja2VyZmlsZVwiOiBcImRvY2tlcmZpbGVcIixcbiAgXCIuZ3JhcGhxbFwiOiBcImdyYXBocWxcIixcbiAgXCIucHJvdG9cIjogXCJwcm90b2J1ZlwiLFxuICBcIi5sdWFcIjogXCJsdWFcIixcbiAgXCIucGhwXCI6IFwicGhwXCIsXG4gIFwiLnJcIjogXCJyXCIsXG4gIFwiLnppZ1wiOiBcInppZ1wiLFxuICBcIi5leFwiOiBcImVsaXhpclwiLFxuICBcIi5leHNcIjogXCJlbGl4aXJcIixcbn1cblxuZnVuY3Rpb24gcGFyc2VBdHRyaWJ1dGVzKHJhdzogc3RyaW5nKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG4gIGNvbnN0IGF0dHJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge31cbiAgY29uc3QgcmUgPSAvKFxcdyspPVwiKFteXCJdKylcIi9nXG4gIGxldCBtOiBSZWdFeHBFeGVjQXJyYXkgfCBudWxsID0gbnVsbFxuICB3aGlsZSAoKG0gPSByZS5leGVjKHJhdykpICE9PSBudWxsKSB7XG4gICAgYXR0cnNbbVsxXSFdID0gbVsyXSFcbiAgfVxuICByZXR1cm4gYXR0cnNcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZURpcmVjdGl2ZShcbiAgcmF3QXR0cnM6IHN0cmluZyxcbiAgZmlsZURpcjogc3RyaW5nLFxuICBkZXB0aDogbnVtYmVyLFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgYXR0cnMgPSBwYXJzZUF0dHJpYnV0ZXMocmF3QXR0cnMpXG4gIGNvbnN0IGZpbGUgPSBhdHRycy5maWxlXG4gIGlmICghZmlsZSkgcmV0dXJuIHVuZGVmaW5lZFxuXG4gIGNvbnN0IGFic29sdXRlUGF0aCA9IHJlc29sdmUoZmlsZURpciwgZmlsZSlcbiAgdHJ5IHtcbiAgICBsZXQgaW5jbHVkZWQgPSByZWFkRmlsZVN5bmMoYWJzb2x1dGVQYXRoLCBcInV0Zi04XCIpXG5cbiAgICBjb25zdCBleHQgPSBleHRuYW1lKGZpbGUpLnRvTG93ZXJDYXNlKClcbiAgICBjb25zdCBsYW5nID0gZXh0VG9MYW5nW2V4dF1cblxuICAgIGlmIChsYW5nICYmICFmaWxlLmVuZHNXaXRoKFwiLm1kXCIpKSB7XG4gICAgICBjb25zdCBmaWxlbmFtZSA9IGZpbGUuc3BsaXQoXCIvXCIpLnBvcCgpIVxuICAgICAgY29uc3QgdGl0bGUgPSBgdGl0bGU9XCIke2ZpbGVuYW1lfVwiYFxuICAgICAgY29uc3QgbWV0YSA9IGF0dHJzLm1ldGEgPyBgICR7YXR0cnMubWV0YX1gIDogXCJcIlxuICAgICAgcmV0dXJuIFwiYGBgXCIgKyBsYW5nICsgXCIgXCIgKyB0aXRsZSArIG1ldGEgKyBcIlxcblwiICsgaW5jbHVkZWQudHJpbUVuZCgpICsgXCJcXG5gYGBcIlxuICAgIH1cblxuICAgIGluY2x1ZGVkID0gaW5jbHVkZWQucmVwbGFjZShGUk9OVE1BVFRFUl9SRSwgXCJcIilcbiAgICByZXR1cm4gcmVzb2x2ZUluY2x1ZGVzKGluY2x1ZGVkLnRyaW0oKSwgYWJzb2x1dGVQYXRoLCBkZXB0aCArIDEpXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxufVxuXG4vKiogUmVzb2x2ZXMgOjppbmNsdWRle2ZpbGU9XCIuLi5cIn0gZGlyZWN0aXZlcyBieSByZXBsYWNpbmcgdGhlbSB3aXRoIHJlZmVyZW5jZWQgZmlsZSBjb250ZW50cyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVJbmNsdWRlcyhjb250ZW50OiBzdHJpbmcsIGZpbGVQYXRoOiBzdHJpbmcsIGRlcHRoID0gMCk6IHN0cmluZyB7XG4gIGlmIChkZXB0aCA+IDUpIHJldHVybiBjb250ZW50XG5cbiAgY29uc3QgZmlsZURpciA9IGRpcm5hbWUoZmlsZVBhdGgpXG4gIGNvbnN0IGxpbmVzID0gY29udGVudC5zcGxpdChcIlxcblwiKVxuICBjb25zdCByZXN1bHQ6IHN0cmluZ1tdID0gW11cbiAgbGV0IGZlbmNlTWFya2VyOiBzdHJpbmcgfCB1bmRlZmluZWRcblxuICBmb3IgKGNvbnN0IGxpbmUgb2YgbGluZXMpIHtcbiAgICBjb25zdCBmZW5jZU1hdGNoID0gRkVOQ0VfUkUuZXhlYyhsaW5lKVxuICAgIGlmIChmZW5jZU1hdGNoKSB7XG4gICAgICBpZiAoIWZlbmNlTWFya2VyKSB7XG4gICAgICAgIGZlbmNlTWFya2VyID0gZmVuY2VNYXRjaFsxXSFcbiAgICAgIH0gZWxzZSBpZiAobGluZS5zdGFydHNXaXRoKGZlbmNlTWFya2VyKSkge1xuICAgICAgICBmZW5jZU1hcmtlciA9IHVuZGVmaW5lZFxuICAgICAgfVxuICAgICAgcmVzdWx0LnB1c2gobGluZSlcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgaWYgKGZlbmNlTWFya2VyKSB7XG4gICAgICByZXN1bHQucHVzaChsaW5lKVxuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICBjb25zdCBpbmNsdWRlTWF0Y2ggPSBJTkNMVURFX1JFLmV4ZWMobGluZSlcbiAgICBpZiAoaW5jbHVkZU1hdGNoKSB7XG4gICAgICBjb25zdCByZXNvbHZlZCA9IHJlc29sdmVEaXJlY3RpdmUoaW5jbHVkZU1hdGNoWzFdISwgZmlsZURpciwgZGVwdGgpXG4gICAgICByZXN1bHQucHVzaChyZXNvbHZlZCA/PyBsaW5lKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQucHVzaChsaW5lKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHQuam9pbihcIlxcblwiKVxufVxuIl19
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZS1pbmNsdWRlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9oZWxwZXJzL3Jlc29sdmUtaW5jbHVkZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUVyRCxNQUFNLFVBQVUsR0FBRyxxQkFBcUIsQ0FBQTtBQUN4QyxNQUFNLGNBQWMsR0FBRyx3QkFBd0IsQ0FBQTtBQUMvQyxNQUFNLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQTtBQUVqQyxNQUFNLFNBQVMsR0FBMkI7SUFDeEMsS0FBSyxFQUFFLFlBQVk7SUFDbkIsTUFBTSxFQUFFLEtBQUs7SUFDYixLQUFLLEVBQUUsWUFBWTtJQUNuQixNQUFNLEVBQUUsS0FBSztJQUNiLEtBQUssRUFBRSxRQUFRO0lBQ2YsS0FBSyxFQUFFLE1BQU07SUFDYixLQUFLLEVBQUUsSUFBSTtJQUNYLEtBQUssRUFBRSxNQUFNO0lBQ2IsT0FBTyxFQUFFLE1BQU07SUFDZixLQUFLLEVBQUUsUUFBUTtJQUNmLFFBQVEsRUFBRSxPQUFPO0lBQ2pCLElBQUksRUFBRSxHQUFHO0lBQ1QsTUFBTSxFQUFFLEtBQUs7SUFDYixJQUFJLEVBQUUsR0FBRztJQUNULEtBQUssRUFBRSxRQUFRO0lBQ2YsTUFBTSxFQUFFLEtBQUs7SUFDYixPQUFPLEVBQUUsTUFBTTtJQUNmLE9BQU8sRUFBRSxNQUFNO0lBQ2YsT0FBTyxFQUFFLE1BQU07SUFDZixPQUFPLEVBQUUsTUFBTTtJQUNmLE1BQU0sRUFBRSxNQUFNO0lBQ2QsT0FBTyxFQUFFLE1BQU07SUFDZixNQUFNLEVBQUUsS0FBSztJQUNiLE1BQU0sRUFBRSxLQUFLO0lBQ2IsS0FBSyxFQUFFLE1BQU07SUFDYixPQUFPLEVBQUUsTUFBTTtJQUNmLE1BQU0sRUFBRSxL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Q0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUMvQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVhZEZpbGUgfSBmcm9tIFwibm9kZTpmcy9wcm9taXNlc1wiXG5pbXBvcnQgeyBkaXJuYW1lLCBleHRuYW1lLCByZXNvbHZlIH0gZnJvbSBcIm5vZGU6cGF0aFwiXG5cbmNvbnN0IElOQ0xVREVfUkUgPSAvXjo6aW5jbHVkZVxceyguKylcXH0kL1xuY29uc3QgRlJPTlRNQVRURVJfUkUgPSAvXi0tLVxcbltcXHNcXFNdKj9cXG4tLS1cXG4/L1xuY29uc3QgRkVOQ0VfUkUgPSAvXihgezMsfXx+ezMsfSkvXG5cbmNvbnN0IGV4dFRvTGFuZzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgXCIudHNcIjogXCJ0eXBlc2NyaXB0XCIsXG4gIFwiLnRzeFwiOiBcInRzeFwiLFxuICBcIi5qc1wiOiBcImphdmFzY3JpcHRcIixcbiAgXCIuanN4XCI6IFwianN4XCIsXG4gIFwiLnB5XCI6IFwicHl0aG9uXCIsXG4gIFwiLnJzXCI6IFwicnVzdFwiLFxuICBcIi5nb1wiOiBcImdvXCIsXG4gIFwiLnJiXCI6IFwicnVieVwiLFxuICBcIi5qYXZhXCI6IFwiamF2YVwiLFxuICBcIi5rdFwiOiBcImtvdGxpblwiLFxuICBcIi5zd2lmdFwiOiBcInN3aWZ0XCIsXG4gIFwiLmNcIjogXCJjXCIsXG4gIFwiLmNwcFwiOiBcImNwcFwiLFxuICBcIi5oXCI6IFwiY1wiLFxuICBcIi5jc1wiOiBcImNzaGFycFwiLFxuICBcIi5jc3NcIjogXCJjc3NcIixcbiAgXCIuc2Nzc1wiOiBcInNjc3NcIixcbiAgXCIuaHRtbFwiOiBcImh0bWxcIixcbiAgXCIuanNvblwiOiBcImpzb25cIixcbiAgXCIueWFtbFwiOiBcInlhbWxcIixcbiAgXCIueW1sXCI6IFwieWFtbFwiLFxuICBcIi50b21sXCI6IFwidG9tbFwiLFxuICBcIi54bWxcIjogXCJ4bWxcIixcbiAgXCIuc3FsXCI6IFwic3FsXCIsXG4gIFwiLnNoXCI6IFwiYmFzaFwiLFxuICBcIi5iYXNoXCI6IFwiYmFzaFwiLFxuICBcIi56c2hcIjogXCJ6c2hcIixcbiAgXCIuZmlzaFwiOiBcImZpc2hcIixcbiAgXCIucHMxXCI6IFwicG93ZXJzaGVsbFwiLFxuICBcIi5kb2NrZXJmaWxlXCI6IFwiZG9ja2VyZmlsZVwiLFxuICBcIi5ncmFwaHFsXCI6IFwiZ3JhcGhxbFwiLFxuICBcIi5wcm90b1wiOiBcInByb3RvYnVmXCIsXG4gIFwiLmx1YVwiOiBcImx1YVwiLFxuICBcIi5waHBcIjogXCJwaHBcIixcbiAgXCIuclwiOiBcInJcIixcbiAgXCIuemlnXCI6IFwiemlnXCIsXG4gIFwiLmV4XCI6IFwiZWxpeGlyXCIsXG4gIFwiLmV4c1wiOiBcImVsaXhpclwiLFxufVxuXG5mdW5jdGlvbiBwYXJzZUF0dHJpYnV0ZXMocmF3OiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgY29uc3QgYXR0cnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fVxuICBjb25zdCByZSA9IC8oXFx3Kyk9XCIoW15cIl0rKVwiL2dcbiAgbGV0IG06IFJlZ0V4cEV4ZWNBcnJheSB8IG51bGwgPSBudWxsXG4gIHdoaWxlICgobSA9IHJlLmV4ZWMocmF3KSkgIT09IG51bGwpIHtcbiAgICBhdHRyc1ttWzFdIV0gPSBtWzJdIVxuICB9XG4gIHJldHVybiBhdHRyc1xufVxuXG5hc3luYyBmdW5jdGlvbiByZXNvbHZlRGlyZWN0aXZlKHJhd0F0dHJzOiBzdHJpbmcsIGZpbGVEaXI6IHN0cmluZywgZGVwdGg6IG51bWJlcikge1xuICBjb25zdCBhdHRycyA9IHBhcnNlQXR0cmlidXRlcyhyYXdBdHRycylcbiAgY29uc3QgZmlsZSA9IGF0dHJzLmZpbGVcbiAgaWYgKCFmaWxlKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgY29uc3QgYWJzb2x1dGVQYXRoID0gcmVzb2x2ZShmaWxlRGlyLCBmaWxlKVxuICB0cnkge1xuICAgIGxldCBpbmNsdWRlZCA9IGF3YWl0IHJlYWRGaWxlKGFic29sdXRlUGF0aCwgXCJ1dGYtOFwiKVxuXG4gICAgY29uc3QgZXh0ID0gZXh0bmFtZShmaWxlKS50b0xvd2VyQ2FzZSgpXG4gICAgY29uc3QgbGFuZyA9IGV4dFRvTGFuZ1tleHRdXG5cbiAgICBpZiAobGFuZyAmJiAhZmlsZS5lbmRzV2l0aChcIi5tZFwiKSkge1xuICAgICAgY29uc3QgZmlsZW5hbWUgPSBmaWxlLnNwbGl0KFwiL1wiKS5wb3AoKSFcbiAgICAgIGNvbnN0IHRpdGxlID0gYHRpdGxlPVwiJHtmaWxlbmFtZX1cImBcbiAgICAgIGNvbnN0IG1ldGEgPSBhdHRycy5tZXRhID8gYCAke2F0dHJzLm1ldGF9YCA6IFwiXCJcbiAgICAgIHJldHVybiBcImBgYFwiICsgbGFuZyArIFwiIFwiICsgdGl0bGUgKyBtZXRhICsgXCJcXG5cIiArIGluY2x1ZGVkLnRyaW1FbmQoKSArIFwiXFxuYGBgXCJcbiAgICB9XG5cbiAgICBpbmNsdWRlZCA9IGluY2x1ZGVkLnJlcGxhY2UoRlJPTlRNQVRURVJfUkUsIFwiXCIpXG4gICAgcmV0dXJuIHJlc29sdmVJbmNsdWRlcyhpbmNsdWRlZC50cmltKCksIGFic29sdXRlUGF0aCwgZGVwdGggKyAxKVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cbn1cblxuLyoqIFJlc29sdmVzIDo6aW5jbHVkZXtmaWxlPVwiLi4uXCJ9IGRpcmVjdGl2ZXMgYnkgcmVwbGFjaW5nIHRoZW0gd2l0aCByZWZlcmVuY2VkIGZpbGUgY29udGVudHMgKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXNvbHZlSW5jbHVkZXMoXG4gIGNvbnRlbnQ6IHN0cmluZyxcbiAgZmlsZVBhdGg6IHN0cmluZyxcbiAgZGVwdGggPSAwLFxuKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgaWYgKGRlcHRoID4gNSkgcmV0dXJuIGNvbnRlbnRcblxuICBjb25zdCBmaWxlRGlyID0gZGlybmFtZShmaWxlUGF0aClcbiAgY29uc3QgbGluZXMgPSBjb250ZW50LnNwbGl0KFwiXFxuXCIpXG4gIGNvbnN0IHJlc3VsdDogQXJyYXk8c3RyaW5nIHwgUHJvbWlzZTxzdHJpbmc+PiA9IFtdXG4gIGxldCBmZW5jZU1hcmtlcjogc3RyaW5nIHwgdW5kZWZpbmVkXG5cbiAgZm9yIChjb25zdCBsaW5lIG9mIGxpbmVzKSB7XG4gICAgY29uc3QgZmVuY2VNYXRjaCA9IEZFTkNFX1JFLmV4ZWMobGluZSlcbiAgICBpZiAoZmVuY2VNYXRjaCkge1xuICAgICAgaWYgKCFmZW5jZU1hcmtlcikge1xuICAgICAgICBmZW5jZU1hcmtlciA9IGZlbmNlTWF0Y2hbMV0hXG4gICAgICB9IGVsc2UgaWYgKGxpbmUuc3RhcnRzV2l0aChmZW5jZU1hcmtlcikpIHtcbiAgICAgICAgZmVuY2VNYXJrZXIgPSB1bmRlZmluZWRcbiAgICAgIH1cbiAgICAgIHJlc3VsdC5wdXNoKGxpbmUpXG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIGlmIChmZW5jZU1hcmtlcikge1xuICAgICAgcmVzdWx0LnB1c2gobGluZSlcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgY29uc3QgaW5jbHVkZU1hdGNoID0gSU5DTFVERV9SRS5leGVjKGxpbmUpXG4gICAgaWYgKGluY2x1ZGVNYXRjaCkge1xuICAgICAgY29uc3QgZGlyZWN0aXZlID0gcmVzb2x2ZURpcmVjdGl2ZShpbmNsdWRlTWF0Y2hbMV0hLCBmaWxlRGlyLCBkZXB0aClcbiAgICAgIHJlc3VsdC5wdXNoKGRpcmVjdGl2ZS50aGVuKHJlc29sdmVkID0+IHJlc29sdmVkID8/IGxpbmUpKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQucHVzaChsaW5lKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiAoYXdhaXQgUHJvbWlzZS5hbGwocmVzdWx0KSkuam9pbihcIlxcblwiKVxufVxuIl19
@@ -4,73 +4,73 @@ import { describe, expect, it } from "vite-plus/test";
4
4
  import { temporaryDirectory } from "tempy";
5
5
  import { resolveIncludes } from "./resolve-includes.js";
6
6
  describe("resolveIncludes", () => {
7
- it("should replace include directive with file content", () => {
7
+ it("should replace include directive with file content", async () => {
8
8
  const dir = temporaryDirectory();
9
9
  writeFileSync(join(dir, "snippet.md"), "Hello from snippet");
10
- const result = resolveIncludes('::include{file="snippet.md"}', join(dir, "main.md"));
10
+ const result = await resolveIncludes('::include{file="snippet.md"}', join(dir, "main.md"));
11
11
  expect(result).toBe("Hello from snippet");
12
12
  });
13
- it("should strip frontmatter from included files", () => {
13
+ it("should strip frontmatter from included files", async () => {
14
14
  const dir = temporaryDirectory();
15
15
  writeFileSync(join(dir, "snippet.md"), "---\ntitle: Test\n---\nContent here");
16
- const result = resolveIncludes('::include{file="snippet.md"}', join(dir, "main.md"));
16
+ const result = await resolveIncludes('::include{file="snippet.md"}', join(dir, "main.md"));
17
17
  expect(result).toBe("Content here");
18
18
  });
19
- it("should preserve surrounding content", () => {
19
+ it("should preserve surrounding content", async () => {
20
20
  const dir = temporaryDirectory();
21
21
  writeFileSync(join(dir, "snippet.md"), "Included text");
22
- const result = resolveIncludes('Before\n\n::include{file="snippet.md"}\n\nAfter', join(dir, "main.md"));
22
+ const result = await resolveIncludes('Before\n\n::include{file="snippet.md"}\n\nAfter', join(dir, "main.md"));
23
23
  expect(result).toBe("Before\n\nIncluded text\n\nAfter");
24
24
  });
25
- it("should keep directive when file is missing", () => {
26
- const result = resolveIncludes('::include{file="nonexistent.md"}', "/tmp/main.md");
25
+ it("should keep directive when file is missing", async () => {
26
+ const result = await resolveIncludes('::include{file="nonexistent.md"}', "/tmp/main.md");
27
27
  expect(result).toBe('::include{file="nonexistent.md"}');
28
28
  });
29
- it("should resolve nested includes", () => {
29
+ it("should resolve nested includes", async () => {
30
30
  const dir = temporaryDirectory();
31
31
  writeFileSync(join(dir, "inner.md"), "Inner content");
32
32
  writeFileSync(join(dir, "outer.md"), '::include{file="inner.md"}');
33
- const result = resolveIncludes('::include{file="outer.md"}', join(dir, "main.md"));
33
+ const result = await resolveIncludes('::include{file="outer.md"}', join(dir, "main.md"));
34
34
  expect(result).toBe("Inner content");
35
35
  });
36
- it("should limit recursion depth", () => {
36
+ it("should limit recursion depth", async () => {
37
37
  const dir = temporaryDirectory();
38
38
  writeFileSync(join(dir, "recursive.md"), '::include{file="recursive.md"}');
39
- const result = resolveIncludes('::include{file="recursive.md"}', join(dir, "main.md"));
39
+ const result = await resolveIncludes('::include{file="recursive.md"}', join(dir, "main.md"));
40
40
  expect(result).toBe('::include{file="recursive.md"}');
41
41
  });
42
- it("should resolve relative paths from included file location", () => {
42
+ it("should resolve relative paths from included file location", async () => {
43
43
  const dir = temporaryDirectory();
44
44
  mkdirSync(join(dir, "sub"));
45
45
  writeFileSync(join(dir, "sub", "child.md"), "Child content");
46
46
  writeFileSync(join(dir, "parent.md"), '::include{file="sub/child.md"}');
47
- const result = resolveIncludes('::include{file="parent.md"}', join(dir, "main.md"));
47
+ const result = await resolveIncludes('::include{file="parent.md"}', join(dir, "main.md"));
48
48
  expect(result).toBe("Child content");
49
49
  });
50
- it("should handle multiple includes in one file", () => {
50
+ it("should handle multiple includes in one file", async () => {
51
51
  const dir = temporaryDirectory();
52
52
  writeFileSync(join(dir, "a.md"), "Alpha");
53
53
  writeFileSync(join(dir, "b.md"), "Beta");
54
- const result = resolveIncludes('::include{file="a.md"}\n\n::include{file="b.md"}', join(dir, "main.md"));
54
+ const result = await resolveIncludes('::include{file="a.md"}\n\n::include{file="b.md"}', join(dir, "main.md"));
55
55
  expect(result).toBe("Alpha\n\nBeta");
56
56
  });
57
- it("should wrap code files in fenced blocks", () => {
57
+ it("should wrap code files in fenced blocks", async () => {
58
58
  const dir = temporaryDirectory();
59
59
  writeFileSync(join(dir, "example.ts"), 'const x = 1\nconst y = "hello"');
60
- const result = resolveIncludes('::include{file="example.ts"}', join(dir, "main.md"));
60
+ const result = await resolveIncludes('::include{file="example.ts"}', join(dir, "main.md"));
61
61
  expect(result).toBe('```typescript title="example.ts"\nconst x = 1\nconst y = "hello"\n```');
62
62
  });
63
- it("should pass meta to code fence", () => {
63
+ it("should pass meta to code fence", async () => {
64
64
  const dir = temporaryDirectory();
65
65
  writeFileSync(join(dir, "app.tsx"), "export default function App() {}");
66
- const result = resolveIncludes('::include{file="app.tsx" meta="{1} lineNumbers"}', join(dir, "main.md"));
66
+ const result = await resolveIncludes('::include{file="app.tsx" meta="{1} lineNumbers"}', join(dir, "main.md"));
67
67
  expect(result).toBe('```tsx title="app.tsx" {1} lineNumbers\nexport default function App() {}\n```');
68
68
  });
69
- it("should treat unknown extensions as markdown", () => {
69
+ it("should treat unknown extensions as markdown", async () => {
70
70
  const dir = temporaryDirectory();
71
71
  writeFileSync(join(dir, "notes.txt"), "Plain text");
72
- const result = resolveIncludes('::include{file="notes.txt"}', join(dir, "main.md"));
72
+ const result = await resolveIncludes('::include{file="notes.txt"}', join(dir, "main.md"));
73
73
  expect(result).toBe("Plain text");
74
74
  });
75
75
  });
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZS1pbmNsdWRlcy51bml0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL2hlbHBlcnMvcmVzb2x2ZS1pbmNsdWRlcy51bml0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBQ2xELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDaEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDckQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sT0FBTyxDQUFBO0FBQzFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUV2RCxRQUFRLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxFQUFFO0lBQy9CLEVBQUUsQ0FBQyxvREFBb0QsRUFBRSxHQUFHLEVBQUU7UUFDNUQsTUFBTSxHQUFHLEdBQUcsa0JBQWtCLEVBQUUsQ0FBQTtRQUNoQyxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxZQUFZLENBQUMsRUFBRSxvQkFBb0IsQ0FBQyxDQUFBO1FBQzVELE1BQU0sTUFBTSxHQUFHLGVBQWUsQ0FBQyw4QkFBOEIsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUE7UUFDcEYsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFBO0lBQzNDLENBQUMsQ0FBQyxDQUFBO0lBRUYsRUFBRSxDQUFDLDhDQUE4QyxFQUFFLEdBQUcsRUFBRTtRQUN0RCxNQUFNLEdBQUcsR0FBRyxrQkFBa0IsRUFBRSxDQUFBO1FBQ2hDLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLFlBQVksQ0FBQyxFQUFFLHFDQUFxQyxDQUFDLENBQUE7UUFDN0UsTUFBTSxNQUFNLEdBQUcsZUFBZSxD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QUFBO0lBRUYsRUFBRSxDQUFDLDZDQUE2QyxFQUFFLEdBQUcsRUFBRTtRQUNyRCxNQUFNLEdBQUcsR0FBRyxrQkFBa0IsRUFBRSxDQUFBO1FBQ2hDLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxFQUFFLFlBQVksQ0FBQyxDQUFBO1FBQ25ELE1BQU0sTUFBTSxHQUFHLGVBQWUsQ0FBQyw2QkFBNkIsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUE7UUFDbkYsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQTtJQUNuQyxDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbWtkaXJTeW5jLCB3cml0ZUZpbGVTeW5jIH0gZnJvbSBcIm5vZGU6ZnNcIlxuaW1wb3J0IHsgam9pbiB9IGZyb20gXCJub2RlOnBhdGhcIlxuaW1wb3J0IHsgZGVzY3JpYmUsIGV4cGVjdCwgaXQgfSBmcm9tIFwidml0ZS1wbHVzL3Rlc3RcIlxuaW1wb3J0IHsgdGVtcG9yYXJ5RGlyZWN0b3J5IH0gZnJvbSBcInRlbXB5XCJcbmltcG9ydCB7IHJlc29sdmVJbmNsdWRlcyB9IGZyb20gXCIuL3Jlc29sdmUtaW5jbHVkZXMudHNcIlxuXG5kZXNjcmliZShcInJlc29sdmVJbmNsdWRlc1wiLCAoKSA9PiB7XG4gIGl0KFwic2hvdWxkIHJlcGxhY2UgaW5jbHVkZSBkaXJlY3RpdmUgd2l0aCBmaWxlIGNvbnRlbnRcIiwgKCkgPT4ge1xuICAgIGNvbnN0IGRpciA9IHRlbXBvcmFyeURpcmVjdG9yeSgpXG4gICAgd3JpdGVGaWxlU3luYyhqb2luKGRpciwgXCJzbmlwcGV0Lm1kXCIpLCBcIkhlbGxvIGZyb20gc25pcHBldFwiKVxuICAgIGNvbnN0IHJlc3VsdCA9IHJlc29sdmVJbmNsdWRlcygnOjppbmNsdWRle2ZpbGU9XCJzbmlwcGV0Lm1kXCJ9Jywgam9pbihkaXIsIFwibWFpbi5tZFwiKSlcbiAgICBleHBlY3QocmVzdWx0KS50b0JlKFwiSGVsbG8gZnJvbSBzbmlwcGV0XCIpXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgc3RyaXAgZnJvbnRtYXR0ZXIgZnJvbSBpbmNsdWRlZCBmaWxlc1wiLCAoKSA9PiB7XG4gICAgY29uc3QgZGlyID0gdGVtcG9yYXJ5RGlyZWN0b3J5KClcbiAgICB3cml0ZUZpbGVTeW5jKGpvaW4oZGlyLCBcInNuaXBwZXQubWRcIiksIFwiLS0tXFxudGl0bGU6IFRlc3RcXG4tLS1cXG5Db250ZW50IGhlcmVcIilcbiAgICBjb25zdCByZXN1bHQgPSByZXNvbHZlSW5jbHVkZXMoJzo6aW5jbHVkZXtmaWxlPVwic25pcHBldC5tZFwifScsIGpvaW4oZGlyLCBcIm1haW4ubWRcIikpXG4gICAgZXhwZWN0KHJlc3VsdCkudG9CZShcIkNvbnRlbnQgaGVyZVwiKVxuICB9KVxuXG4gIGl0KFwic2hvdWxkIHByZXNlcnZlIHN1cnJvdW5kaW5nIGNvbnRlbnRcIiwgKCkgPT4ge1xuICAgIGNvbnN0IGRpciA9IHRlbXBvcmFyeURpcmVjdG9yeSgpXG4gICAgd3JpdGVGaWxlU3luYyhqb2luKGRpciwgXCJzbmlwcGV0Lm1kXCIpLCBcIkluY2x1ZGVkIHRleHRcIilcbiAgICBjb25zdCByZXN1bHQgPSByZXNvbHZlSW5jbHVkZXMoXG4gICAgICAnQmVmb3JlXFxuXFxuOjppbmNsdWRle2ZpbGU9XCJzbmlwcGV0Lm1kXCJ9XFxuXFxuQWZ0ZXInLFxuICAgICAgam9pbihkaXIsIFwibWFpbi5tZFwiKSxcbiAgICApXG4gICAgZXhwZWN0KHJlc3VsdCkudG9CZShcIkJlZm9yZVxcblxcbkluY2x1ZGVkIHRleHRcXG5cXG5BZnRlclwiKVxuICB9KVxuXG4gIGl0KFwic2hvdWxkIGtlZXAgZGlyZWN0aXZlIHdoZW4gZmlsZSBpcyBtaXNzaW5nXCIsICgpID0+IHtcbiAgICBjb25zdCByZXN1bHQgPSByZXNvbHZlSW5jbHVkZXMoJzo6aW5jbHVkZXtmaWxlPVwibm9uZXhpc3RlbnQubWRcIn0nLCBcIi90bXAvbWFpbi5tZFwiKVxuICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoJzo6aW5jbHVkZXtmaWxlPVwibm9uZXhpc3RlbnQubWRcIn0nKVxuICB9KVxuXG4gIGl0KFwic2hvdWxkIHJlc29sdmUgbmVzdGVkIGluY2x1ZGVzXCIsICgpID0+IHtcbiAgICBjb25zdCBkaXIgPSB0ZW1wb3JhcnlEaXJlY3RvcnkoKVxuICAgIHdyaXRlRmlsZVN5bmMoam9pbihkaXIsIFwiaW5uZXIubWRcIiksIFwiSW5uZXIgY29udGVudFwiKVxuICAgIHdyaXRlRmlsZVN5bmMoam9pbihkaXIsIFwib3V0ZXIubWRcIiksICc6OmluY2x1ZGV7ZmlsZT1cImlubmVyLm1kXCJ9JylcbiAgICBjb25zdCByZXN1bHQgPSByZXNvbHZlSW5jbHVkZXMoJzo6aW5jbHVkZXtmaWxlPVwib3V0ZXIubWRcIn0nLCBqb2luKGRpciwgXCJtYWluLm1kXCIpKVxuICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoXCJJbm5lciBjb250ZW50XCIpXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgbGltaXQgcmVjdXJzaW9uIGRlcHRoXCIsICgpID0+IHtcbiAgICBjb25zdCBkaXIgPSB0ZW1wb3JhcnlEaXJlY3RvcnkoKVxuICAgIHdyaXRlRmlsZVN5bmMoam9pbihkaXIsIFwicmVjdXJzaXZlLm1kXCIpLCAnOjppbmNsdWRle2ZpbGU9XCJyZWN1cnNpdmUubWRcIn0nKVxuICAgIGNvbnN0IHJlc3VsdCA9IHJlc29sdmVJbmNsdWRlcygnOjppbmNsdWRle2ZpbGU9XCJyZWN1cnNpdmUubWRcIn0nLCBqb2luKGRpciwgXCJtYWluLm1kXCIpKVxuICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoJzo6aW5jbHVkZXtmaWxlPVwicmVjdXJzaXZlLm1kXCJ9JylcbiAgfSlcblxuICBpdChcInNob3VsZCByZXNvbHZlIHJlbGF0aXZlIHBhdGhzIGZyb20gaW5jbHVkZWQgZmlsZSBsb2NhdGlvblwiLCAoKSA9PiB7XG4gICAgY29uc3QgZGlyID0gdGVtcG9yYXJ5RGlyZWN0b3J5KClcbiAgICBta2RpclN5bmMoam9pbihkaXIsIFwic3ViXCIpKVxuICAgIHdyaXRlRmlsZVN5bmMoam9pbihkaXIsIFwic3ViXCIsIFwiY2hpbGQubWRcIiksIFwiQ2hpbGQgY29udGVudFwiKVxuICAgIHdyaXRlRmlsZVN5bmMoam9pbihkaXIsIFwicGFyZW50Lm1kXCIpLCAnOjppbmNsdWRle2ZpbGU9XCJzdWIvY2hpbGQubWRcIn0nKVxuICAgIGNvbnN0IHJlc3VsdCA9IHJlc29sdmVJbmNsdWRlcygnOjppbmNsdWRle2ZpbGU9XCJwYXJlbnQubWRcIn0nLCBqb2luKGRpciwgXCJtYWluLm1kXCIpKVxuICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoXCJDaGlsZCBjb250ZW50XCIpXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgaGFuZGxlIG11bHRpcGxlIGluY2x1ZGVzIGluIG9uZSBmaWxlXCIsICgpID0+IHtcbiAgICBjb25zdCBkaXIgPSB0ZW1wb3JhcnlEaXJlY3RvcnkoKVxuICAgIHdyaXRlRmlsZVN5bmMoam9pbihkaXIsIFwiYS5tZFwiKSwgXCJBbHBoYVwiKVxuICAgIHdyaXRlRmlsZVN5bmMoam9pbihkaXIsIFwiYi5tZFwiKSwgXCJCZXRhXCIpXG4gICAgY29uc3QgcmVzdWx0ID0gcmVzb2x2ZUluY2x1ZGVzKFxuICAgICAgJzo6aW5jbHVkZXtmaWxlPVwiYS5tZFwifVxcblxcbjo6aW5jbHVkZXtmaWxlPVwiYi5tZFwifScsXG4gICAgICBqb2luKGRpciwgXCJtYWluLm1kXCIpLFxuICAgIClcbiAgICBleHBlY3QocmVzdWx0KS50b0JlKFwiQWxwaGFcXG5cXG5CZXRhXCIpXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgd3JhcCBjb2RlIGZpbGVzIGluIGZlbmNlZCBibG9ja3NcIiwgKCkgPT4ge1xuICAgIGNvbnN0IGRpciA9IHRlbXBvcmFyeURpcmVjdG9yeSgpXG4gICAgd3JpdGVGaWxlU3luYyhqb2luKGRpciwgXCJleGFtcGxlLnRzXCIpLCAnY29uc3QgeCA9IDFcXG5jb25zdCB5ID0gXCJoZWxsb1wiJylcbiAgICBjb25zdCByZXN1bHQgPSByZXNvbHZlSW5jbHVkZXMoJzo6aW5jbHVkZXtmaWxlPVwiZXhhbXBsZS50c1wifScsIGpvaW4oZGlyLCBcIm1haW4ubWRcIikpXG4gICAgZXhwZWN0KHJlc3VsdCkudG9CZShcbiAgICAgICdgYGB0eXBlc2NyaXB0IHRpdGxlPVwiZXhhbXBsZS50c1wiXFxuY29uc3QgeCA9IDFcXG5jb25zdCB5ID0gXCJoZWxsb1wiXFxuYGBgJyxcbiAgICApXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgcGFzcyBtZXRhIHRvIGNvZGUgZmVuY2VcIiwgKCkgPT4ge1xuICAgIGNvbnN0IGRpciA9IHRlbXBvcmFyeURpcmVjdG9yeSgpXG4gICAgd3JpdGVGaWxlU3luYyhqb2luKGRpciwgXCJhcHAudHN4XCIpLCBcImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEFwcCgpIHt9XCIpXG4gICAgY29uc3QgcmVzdWx0ID0gcmVzb2x2ZUluY2x1ZGVzKFxuICAgICAgJzo6aW5jbHVkZXtmaWxlPVwiYXBwLnRzeFwiIG1ldGE9XCJ7MX0gbGluZU51bWJlcnNcIn0nLFxuICAgICAgam9pbihkaXIsIFwibWFpbi5tZFwiKSxcbiAgICApXG4gICAgZXhwZWN0KHJlc3VsdCkudG9CZShcbiAgICAgICdgYGB0c3ggdGl0bGU9XCJhcHAudHN4XCIgezF9IGxpbmVOdW1iZXJzXFxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQXBwKCkge31cXG5gYGAnLFxuICAgIClcbiAgfSlcblxuICBpdChcInNob3VsZCB0cmVhdCB1bmtub3duIGV4dGVuc2lvbnMgYXMgbWFya2Rvd25cIiwgKCkgPT4ge1xuICAgIGNvbnN0IGRpciA9IHRlbXBvcmFyeURpcmVjdG9yeSgpXG4gICAgd3JpdGVGaWxlU3luYyhqb2luKGRpciwgXCJub3Rlcy50eHRcIiksIFwiUGxhaW4gdGV4dFwiKVxuICAgIGNvbnN0IHJlc3VsdCA9IHJlc29sdmVJbmNsdWRlcygnOjppbmNsdWRle2ZpbGU9XCJub3Rlcy50eHRcIn0nLCBqb2luKGRpciwgXCJtYWluLm1kXCIpKVxuICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoXCJQbGFpbiB0ZXh0XCIpXG4gIH0pXG59KVxuIl19
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZS1pbmNsdWRlcy51bml0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL2hlbHBlcnMvcmVzb2x2ZS1pbmNsdWRlcy51bml0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBQ2xELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDaEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDckQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sT0FBTyxDQUFBO0FBQzFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUV2RCxRQUFRLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxFQUFFO0lBQy9CLEVBQUUsQ0FBQyxvREFBb0QsRUFBRSxLQUFLLElBQUksRUFBRTtRQUNsRSxNQUFNLEdBQUcsR0FBRyxrQkFBa0IsRUFBRSxDQUFBO1FBQ2hDLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLFlBQVksQ0FBQyxFQUFFLG9CQUFvQixDQUFDLENBQUE7UUFDNUQsTUFBTSxNQUFNLEdBQUcsTUFBTSxlQUFlLENBQ2xDLDhCQUE4QixFQUM5QixJQUFJLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUNyQixDQUFBO1FBQ0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFBO0lBQzNDLENBQUMsQ0FBQyxDQUFBO0lBRUYsRUFBRSxDQUFDLDhDQUE4QyxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQzVELE1BQU0sR0FBRyxHQUFHLGtCQUFrQixFQUFFLENBQUE7UUFDaEMsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsWUFBWSxDQUFDLEVBQUUscUNBQXFDLENBQUMsQ0FBQTtRQUM3RSxNQUFN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SSxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FDckIsQ0FBQTtRQUNELE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQ2pCLCtFQUErRSxDQUNoRixDQUFBO0lBQ0gsQ0FBQyxDQUFDLENBQUE7SUFFRixFQUFFLENBQUMsNkNBQTZDLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDM0QsTUFBTSxHQUFHLEdBQUcsa0JBQWtCLEVBQUUsQ0FBQTtRQUNoQyxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxXQUFXLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQTtRQUNuRCxNQUFNLE1BQU0sR0FBRyxNQUFNLGVBQWUsQ0FDbEMsNkJBQTZCLEVBQzdCLElBQUksQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQ3JCLENBQUE7UUFDRCxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFBO0lBQ25DLENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBta2RpclN5bmMsIHdyaXRlRmlsZVN5bmMgfSBmcm9tIFwibm9kZTpmc1wiXG5pbXBvcnQgeyBqb2luIH0gZnJvbSBcIm5vZGU6cGF0aFwiXG5pbXBvcnQgeyBkZXNjcmliZSwgZXhwZWN0LCBpdCB9IGZyb20gXCJ2aXRlLXBsdXMvdGVzdFwiXG5pbXBvcnQgeyB0ZW1wb3JhcnlEaXJlY3RvcnkgfSBmcm9tIFwidGVtcHlcIlxuaW1wb3J0IHsgcmVzb2x2ZUluY2x1ZGVzIH0gZnJvbSBcIi4vcmVzb2x2ZS1pbmNsdWRlcy50c1wiXG5cbmRlc2NyaWJlKFwicmVzb2x2ZUluY2x1ZGVzXCIsICgpID0+IHtcbiAgaXQoXCJzaG91bGQgcmVwbGFjZSBpbmNsdWRlIGRpcmVjdGl2ZSB3aXRoIGZpbGUgY29udGVudFwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgZGlyID0gdGVtcG9yYXJ5RGlyZWN0b3J5KClcbiAgICB3cml0ZUZpbGVTeW5jKGpvaW4oZGlyLCBcInNuaXBwZXQubWRcIiksIFwiSGVsbG8gZnJvbSBzbmlwcGV0XCIpXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVzb2x2ZUluY2x1ZGVzKFxuICAgICAgJzo6aW5jbHVkZXtmaWxlPVwic25pcHBldC5tZFwifScsXG4gICAgICBqb2luKGRpciwgXCJtYWluLm1kXCIpLFxuICAgIClcbiAgICBleHBlY3QocmVzdWx0KS50b0JlKFwiSGVsbG8gZnJvbSBzbmlwcGV0XCIpXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgc3RyaXAgZnJvbnRtYXR0ZXIgZnJvbSBpbmNsdWRlZCBmaWxlc1wiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgZGlyID0gdGVtcG9yYXJ5RGlyZWN0b3J5KClcbiAgICB3cml0ZUZpbGVTeW5jKGpvaW4oZGlyLCBcInNuaXBwZXQubWRcIiksIFwiLS0tXFxudGl0bGU6IFRlc3RcXG4tLS1cXG5Db250ZW50IGhlcmVcIilcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZXNvbHZlSW5jbHVkZXMoXG4gICAgICAnOjppbmNsdWRle2ZpbGU9XCJzbmlwcGV0Lm1kXCJ9JyxcbiAgICAgIGpvaW4oZGlyLCBcIm1haW4ubWRcIiksXG4gICAgKVxuICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoXCJDb250ZW50IGhlcmVcIilcbiAgfSlcblxuICBpdChcInNob3VsZCBwcmVzZXJ2ZSBzdXJyb3VuZGluZyBjb250ZW50XCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBkaXIgPSB0ZW1wb3JhcnlEaXJlY3RvcnkoKVxuICAgIHdyaXRlRmlsZVN5bmMoam9pbihkaXIsIFwic25pcHBldC5tZFwiKSwgXCJJbmNsdWRlZCB0ZXh0XCIpXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVzb2x2ZUluY2x1ZGVzKFxuICAgICAgJ0JlZm9yZVxcblxcbjo6aW5jbHVkZXtmaWxlPVwic25pcHBldC5tZFwifVxcblxcbkFmdGVyJyxcbiAgICAgIGpvaW4oZGlyLCBcIm1haW4ubWRcIiksXG4gICAgKVxuICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoXCJCZWZvcmVcXG5cXG5JbmNsdWRlZCB0ZXh0XFxuXFxuQWZ0ZXJcIilcbiAgfSlcblxuICBpdChcInNob3VsZCBrZWVwIGRpcmVjdGl2ZSB3aGVuIGZpbGUgaXMgbWlzc2luZ1wiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVzb2x2ZUluY2x1ZGVzKFxuICAgICAgJzo6aW5jbHVkZXtmaWxlPVwibm9uZXhpc3RlbnQubWRcIn0nLFxuICAgICAgXCIvdG1wL21haW4ubWRcIixcbiAgICApXG4gICAgZXhwZWN0KHJlc3VsdCkudG9CZSgnOjppbmNsdWRle2ZpbGU9XCJub25leGlzdGVudC5tZFwifScpXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgcmVzb2x2ZSBuZXN0ZWQgaW5jbHVkZXNcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGRpciA9IHRlbXBvcmFyeURpcmVjdG9yeSgpXG4gICAgd3JpdGVGaWxlU3luYyhqb2luKGRpciwgXCJpbm5lci5tZFwiKSwgXCJJbm5lciBjb250ZW50XCIpXG4gICAgd3JpdGVGaWxlU3luYyhqb2luKGRpciwgXCJvdXRlci5tZFwiKSwgJzo6aW5jbHVkZXtmaWxlPVwiaW5uZXIubWRcIn0nKVxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlc29sdmVJbmNsdWRlcyhcbiAgICAgICc6OmluY2x1ZGV7ZmlsZT1cIm91dGVyLm1kXCJ9JyxcbiAgICAgIGpvaW4oZGlyLCBcIm1haW4ubWRcIiksXG4gICAgKVxuICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoXCJJbm5lciBjb250ZW50XCIpXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgbGltaXQgcmVjdXJzaW9uIGRlcHRoXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBkaXIgPSB0ZW1wb3JhcnlEaXJlY3RvcnkoKVxuICAgIHdyaXRlRmlsZVN5bmMoam9pbihkaXIsIFwicmVjdXJzaXZlLm1kXCIpLCAnOjppbmNsdWRle2ZpbGU9XCJyZWN1cnNpdmUubWRcIn0nKVxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlc29sdmVJbmNsdWRlcyhcbiAgICAgICc6OmluY2x1ZGV7ZmlsZT1cInJlY3Vyc2l2ZS5tZFwifScsXG4gICAgICBqb2luKGRpciwgXCJtYWluLm1kXCIpLFxuICAgIClcbiAgICBleHBlY3QocmVzdWx0KS50b0JlKCc6OmluY2x1ZGV7ZmlsZT1cInJlY3Vyc2l2ZS5tZFwifScpXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgcmVzb2x2ZSByZWxhdGl2ZSBwYXRocyBmcm9tIGluY2x1ZGVkIGZpbGUgbG9jYXRpb25cIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGRpciA9IHRlbXBvcmFyeURpcmVjdG9yeSgpXG4gICAgbWtkaXJTeW5jKGpvaW4oZGlyLCBcInN1YlwiKSlcbiAgICB3cml0ZUZpbGVTeW5jKGpvaW4oZGlyLCBcInN1YlwiLCBcImNoaWxkLm1kXCIpLCBcIkNoaWxkIGNvbnRlbnRcIilcbiAgICB3cml0ZUZpbGVTeW5jKGpvaW4oZGlyLCBcInBhcmVudC5tZFwiKSwgJzo6aW5jbHVkZXtmaWxlPVwic3ViL2NoaWxkLm1kXCJ9JylcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZXNvbHZlSW5jbHVkZXMoXG4gICAgICAnOjppbmNsdWRle2ZpbGU9XCJwYXJlbnQubWRcIn0nLFxuICAgICAgam9pbihkaXIsIFwibWFpbi5tZFwiKSxcbiAgICApXG4gICAgZXhwZWN0KHJlc3VsdCkudG9CZShcIkNoaWxkIGNvbnRlbnRcIilcbiAgfSlcblxuICBpdChcInNob3VsZCBoYW5kbGUgbXVsdGlwbGUgaW5jbHVkZXMgaW4gb25lIGZpbGVcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGRpciA9IHRlbXBvcmFyeURpcmVjdG9yeSgpXG4gICAgd3JpdGVGaWxlU3luYyhqb2luKGRpciwgXCJhLm1kXCIpLCBcIkFscGhhXCIpXG4gICAgd3JpdGVGaWxlU3luYyhqb2luKGRpciwgXCJiLm1kXCIpLCBcIkJldGFcIilcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZXNvbHZlSW5jbHVkZXMoXG4gICAgICAnOjppbmNsdWRle2ZpbGU9XCJhLm1kXCJ9XFxuXFxuOjppbmNsdWRle2ZpbGU9XCJiLm1kXCJ9JyxcbiAgICAgIGpvaW4oZGlyLCBcIm1haW4ubWRcIiksXG4gICAgKVxuICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoXCJBbHBoYVxcblxcbkJldGFcIilcbiAgfSlcblxuICBpdChcInNob3VsZCB3cmFwIGNvZGUgZmlsZXMgaW4gZmVuY2VkIGJsb2Nrc1wiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgZGlyID0gdGVtcG9yYXJ5RGlyZWN0b3J5KClcbiAgICB3cml0ZUZpbGVTeW5jKGpvaW4oZGlyLCBcImV4YW1wbGUudHNcIiksICdjb25zdCB4ID0gMVxcbmNvbnN0IHkgPSBcImhlbGxvXCInKVxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlc29sdmVJbmNsdWRlcyhcbiAgICAgICc6OmluY2x1ZGV7ZmlsZT1cImV4YW1wbGUudHNcIn0nLFxuICAgICAgam9pbihkaXIsIFwibWFpbi5tZFwiKSxcbiAgICApXG4gICAgZXhwZWN0KHJlc3VsdCkudG9CZShcbiAgICAgICdgYGB0eXBlc2NyaXB0IHRpdGxlPVwiZXhhbXBsZS50c1wiXFxuY29uc3QgeCA9IDFcXG5jb25zdCB5ID0gXCJoZWxsb1wiXFxuYGBgJyxcbiAgICApXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgcGFzcyBtZXRhIHRvIGNvZGUgZmVuY2VcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGRpciA9IHRlbXBvcmFyeURpcmVjdG9yeSgpXG4gICAgd3JpdGVGaWxlU3luYyhqb2luKGRpciwgXCJhcHAudHN4XCIpLCBcImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEFwcCgpIHt9XCIpXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVzb2x2ZUluY2x1ZGVzKFxuICAgICAgJzo6aW5jbHVkZXtmaWxlPVwiYXBwLnRzeFwiIG1ldGE9XCJ7MX0gbGluZU51bWJlcnNcIn0nLFxuICAgICAgam9pbihkaXIsIFwibWFpbi5tZFwiKSxcbiAgICApXG4gICAgZXhwZWN0KHJlc3VsdCkudG9CZShcbiAgICAgICdgYGB0c3ggdGl0bGU9XCJhcHAudHN4XCIgezF9IGxpbmVOdW1iZXJzXFxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQXBwKCkge31cXG5gYGAnLFxuICAgIClcbiAgfSlcblxuICBpdChcInNob3VsZCB0cmVhdCB1bmtub3duIGV4dGVuc2lvbnMgYXMgbWFya2Rvd25cIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGRpciA9IHRlbXBvcmFyeURpcmVjdG9yeSgpXG4gICAgd3JpdGVGaWxlU3luYyhqb2luKGRpciwgXCJub3Rlcy50eHRcIiksIFwiUGxhaW4gdGV4dFwiKVxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlc29sdmVJbmNsdWRlcyhcbiAgICAgICc6OmluY2x1ZGV7ZmlsZT1cIm5vdGVzLnR4dFwifScsXG4gICAgICBqb2luKGRpciwgXCJtYWluLm1kXCIpLFxuICAgIClcbiAgICBleHBlY3QocmVzdWx0KS50b0JlKFwiUGxhaW4gdGV4dFwiKVxuICB9KVxufSlcbiJdfQ==
@@ -45,10 +45,11 @@ export function agents(opts) {
45
45
  this.emitFile({ type: "asset", fileName, source });
46
46
  };
47
47
  const articles = await loadGeneratedArticles(root);
48
- for (const article of articles) {
49
- const content = resolveIncludes(article.content, resolve(opts.config.root, article.file));
48
+ const contents = await Promise.all(articles.map(article => resolveIncludes(article.content, resolve(opts.config.root, article.file))));
49
+ articles.forEach((article, index) => {
50
+ const content = contents[index] ?? article.content;
50
51
  emit(buildTwinFileName(article.path), renderMarkdownTwin({ article, content }));
51
- }
52
+ });
52
53
  const llms = renderLlmsText({ config: opts.config, articles });
53
54
  emit("llms.txt", llms);
54
55
  const hasTwin = (path) => articles.some(a => a.path === path);
@@ -106,4 +107,4 @@ async function loadGeneratedArticles(root) {
106
107
  const module = await import(__rewriteRelativeImportExtension(pathToFileURL(file).href));
107
108
  return GeneratedArticles.parse(module.default);
108
109
  }
109
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidml0ZS1hZ2VudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvcGx1Z2lucy92aXRlLWFnZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBQ2xELE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQ3pDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFFeEMsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQTtBQUN2QixPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLGVBQWUsRUFDZixpQkFBaUIsR0FDbEIsTUFBTSw0QkFBNEIsQ0FBQTtBQUNuQyxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLGNBQWMsRUFDZCxrQkFBa0IsRUFDbEIsa0JBQWtCLEdBQ25CLE1BQU0sb0JBQW9CLENBQUE7QUFDM0IsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFBO0FBT2hFLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FDL0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNQLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO0lBQ2hCLEtBQUssRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO0lBQ2pCLFdBQVcsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ2xDLEtBQUssRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzVCLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzNCLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO0lBQ2hCLE9BQU8sRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO0NBQ3BCLENBQUMsQ0FDSCxDQUFBO0FBRUQ7O2lGQUVpRjtBQUNqRixNQUFNLFVBQVUsTUFBTSxDQUFDLElBQW1CO0lBQ3hDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUE7SUFDL0QsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFBO0lBQ2IsT0FBTztRQUNMLElBQUksRUFBRSxpQkFBaUI7UUFDdkIsa0JBQWtCLENBQUMsR0FBRztZQUNwQixPQUFPLEdBQUcsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFBO1FBQzlCLENBQUM7UUFDRCxjQUFjLENBQUMsUUFBUTtZQUNyQixJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQTtRQUN0QixDQUFDO1FBQ0QsS0FBSyxDQUFDLGNBQWM7WUFDbEIsdUVBQXVFO1lBQ3ZFLHFFQUFxRTtZQUNyRSxNQUFNLElBQUksR0FBRyxDQUFDLFFBQWdCLEVBQUUsTUFBdUIsRUFBRSxFQUFFO2dCQUN6RCxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO29CQUFFLE9BQU07Z0JBQ2pELElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFBO1lBQ3BELENBQUMsQ0FBQTtZQUVELE1BQU0sUUFBUSxHQUFHLE1BQU0scUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDbEQsS0FBSyxNQUFNLE9BQU8sSUFBSSxRQUFRLEVBQUUsQ0FBQztnQkFDL0IsTUFBTSxPQUFPLEdBQUcsZUFBZSxDQUM3QixPQUFPLENBQUMsT0FBTyxFQUNmLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQ3hDLENBQUE7Z0JBQ0QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxrQkFBa0IsQ0FBQyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUE7WUFDakYsQ0FBQztZQUVELE1BQU0sSUFBSSxHQUFHLGNBQWMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUE7WUFDOUQsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQTtZQUN0QixNQUFNLE9BQU8sR0FBRyxDQUFDLElBQVksRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUE7WUFDckUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7Z0JBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQTtZQUN6Qyw2RUFBNkU7WUFDN0UsS0FBSyxNQUFNLE9BQU8sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsSUFBSSxFQUFFLEVBQUUsQ0FBQztnQkFDakQsSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLFFBQVEsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLEdBQUc7b0JBQUUsU0FBUTtnQkFDakUsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztvQkFBRSxTQUFRO2dCQUNyQyxJQUFJLENBQ0YsaUJBQWlCLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUNqQyxrQkFBa0IsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUMvRCxDQUFBO1lBQ0gsQ0FBQztZQUVELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQTtZQUN6QyxNQUFNLE1BQU0sR0FBRyxlQUFlLENBQUM7Z0JBQzdCLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUk7Z0JBQ3RCLFFBQVEsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO2FBQzFELENBQUMsQ0FBQTtZQUNGLEtBQUssTUFBTSxLQUFLLElBQUksTUFBTTtnQkFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQTtZQUM5RSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDbEIsSUFBSSxDQUNGLHFDQUFxQyxFQUNyQyxpQkFBaUIsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUN0RCxDQUFBO1lBQ0gsQ0FBQztZQUVELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUE7WUFDL0MsSUFBSSxDQUFDLFFBQVEsQ0FBQztnQkFDWixJQUFJLEVBQUUsT0FBTztnQkFDYixRQUFRLEVBQUUsVUFBVTtnQkFDcEIsTUFBTSxFQUFFLGFBQWEsQ0FBQztvQkFDcEIsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSTtvQkFDdEIsU0FBUyxFQUFFLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQztvQkFDNUIsUUFBUSxFQUFFLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtpQkFDNUUsQ0FBQzthQUNILENBQUMsQ0FBQTtRQUNKLENBQUM7S0FDRixDQUFBO0FBQ0gsQ0FBQztBQUVEOzs0QkFFNEI7QUFDNUIsTUFBTSxVQUFVLGFBQWEsQ0FBQyxLQUk3QjtJQUNDLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFBO0lBQzdCLE1BQU0sS0FBSyxHQUFHO1FBQ1osSUFBSSxJQUFJLGtEQUFrRDtRQUMxRCxJQUFJLElBQUksbURBQW1EO0tBQzVELENBQUE7SUFDRCxJQUFJLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNwQixLQUFLLENBQUMsSUFBSSxDQUNSLElBQUksSUFBSSxtRkFBbUYsQ0FDNUYsQ0FBQTtJQUNILENBQUM7SUFDRCxNQUFNLElBQUksR0FBRyxHQUFHLElBQUksY0FBYyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUE7SUFDdEQsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBQTtJQUMxQyxPQUFPLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQTtBQUNuRCxDQUFDO0FBRUQsS0FBSyxVQUFVLHFCQUFxQixDQUFDLElBQVk7SUFDL0MsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxzQkFBc0IsRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQTtJQUM5RSxNQUFNLE1BQU0sR0FBeUIsTUFBTSxNQUFNLGtDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUMsQ0FBQTtJQUMzRSxPQUFPLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUE7QUFDaEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4aXN0c1N5bmMsIHJlYWRGaWxlU3luYyB9IGZyb20gXCJub2RlOmZzXCJcbmltcG9ydCB7IGpvaW4sIHJlc29sdmUgfSBmcm9tIFwibm9kZTpwYXRoXCJcbmltcG9ydCB7IHBhdGhUb0ZpbGVVUkwgfSBmcm9tIFwibm9kZTp1cmxcIlxuaW1wb3J0IHR5cGUgeyBQbHVnaW4gfSBmcm9tIFwidml0ZVwiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQge1xuICBidWlsZFNraWxsRmlsZU5hbWUsXG4gIGxvYWRBZ2VudFNraWxscyxcbiAgcmVuZGVyU2tpbGxzSW5kZXgsXG59IGZyb20gXCIuLi9oZWxwZXJzL2FnZW50LXNraWxscy50c1wiXG5pbXBvcnQge1xuICBidWlsZFR3aW5GaWxlTmFtZSxcbiAgcmVuZGVyTGxtc1RleHQsXG4gIHJlbmRlck1hcmtkb3duVHdpbixcbiAgcmVuZGVyU2VjdGlvbkluZGV4LFxufSBmcm9tIFwiLi4vaGVscGVycy9sbG1zLnRzXCJcbmltcG9ydCB7IHJlc29sdmVJbmNsdWRlcyB9IGZyb20gXCIuLi9oZWxwZXJzL3Jlc29sdmUtaW5jbHVkZXMudHNcIlxuaW1wb3J0IHR5cGUgeyBDb25maWcgfSBmcm9tIFwiLi4vbW9kZWxzL2NvbmZpZy50c1wiXG5cbmV4cG9ydCBpbnRlcmZhY2UgQWdlbnRzT3B0aW9ucyB7XG4gIGNvbmZpZzogQ29uZmlnXG59XG5cbmNvbnN0IEdlbmVyYXRlZEFydGljbGVzID0gei5hcnJheShcbiAgei5vYmplY3Qoe1xuICAgIHBhdGg6IHouc3RyaW5nKCksXG4gICAgdGl0bGU6IHouc3RyaW5nKCksXG4gICAgZGVzY3JpcHRpb246IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBvcmRlcjogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICAgIGRhdGU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBmaWxlOiB6LnN0cmluZygpLFxuICAgIGNvbnRlbnQ6IHouc3RyaW5nKCksXG4gIH0pLFxuKVxuXG4vKiogRW1pdCB3aGF0IEFJIGFnZW50cyBsb29rIGZvciBpbnRvIHRoZSBjbGllbnQgYnVpbGQ6IGEgTWFya2Rvd24gdHdpbiBvZlxuICogIGV2ZXJ5IGFydGljbGUgYW5kIHNlY3Rpb24gbGlzdGluZyBhdCBgPHBhdGg+aW5kZXgubWRgLCBgbGxtcy50eHRgLCB0aGUgQWdlbnQgU2tpbGxzIGluZGV4IGZvclxuICogIGBjb25maWcuc2tpbGxzYCwgYW5kIGEgYF9oZWFkZXJzYCBmaWxlIHdob3NlIGBMaW5rYCBwb2ludHMgYWdlbnRzIGF0IHRoZW0uICovXG5leHBvcnQgZnVuY3Rpb24gYWdlbnRzKG9wdHM6IEFnZW50c09wdGlvbnMpOiBQbHVnaW4ge1xuICBjb25zdCBwdWJsaWNEaXIgPSBqb2luKG9wdHMuY29uZmlnLnJvb3QsIFwiLmxpdmVtYXJrXCIsIFwicHVibGljXCIpXG4gIGxldCByb290ID0gXCJcIlxuICByZXR1cm4ge1xuICAgIG5hbWU6IFwibGl2ZW1hcms6YWdlbnRzXCIsXG4gICAgYXBwbHlUb0Vudmlyb25tZW50KGVudikge1xuICAgICAgcmV0dXJuIGVudi5uYW1lID09PSBcImNsaWVudFwiXG4gICAgfSxcbiAgICBjb25maWdSZXNvbHZlZChyZXNvbHZlZCkge1xuICAgICAgcm9vdCA9IHJlc29sdmVkLnJvb3RcbiAgICB9LFxuICAgIGFzeW5jIGdlbmVyYXRlQnVuZGxlKCkge1xuICAgICAgLy8gVml0ZSBjb3BpZXMgdGhlIHB1YmxpY0RpciBiZWZvcmUgd3JpdGVCdW5kbGUsIHNvIGVtaXR0aW5nIGEgZmlsZSB0aGVcbiAgICAgIC8vIHByb2plY3Qgc2hpcHMgdW5kZXIgYC5saXZlbWFyay9wdWJsaWMvYCB3b3VsZCBzaWxlbnRseSByZXBsYWNlIGl0LlxuICAgICAgY29uc3QgZW1pdCA9IChmaWxlTmFtZTogc3RyaW5nLCBzb3VyY2U6IHN0cmluZyB8IEJ1ZmZlcikgPT4ge1xuICAgICAgICBpZiAoZXhpc3RzU3luYyhqb2luKHB1YmxpY0RpciwgZmlsZU5hbWUpKSkgcmV0dXJuXG4gICAgICAgIHRoaXMuZW1pdEZpbGUoeyB0eXBlOiBcImFzc2V0XCIsIGZpbGVOYW1lLCBzb3VyY2UgfSlcbiAgICAgIH1cblxuICAgICAgY29uc3QgYXJ0aWNsZXMgPSBhd2FpdCBsb2FkR2VuZXJhdGVkQXJ0aWNsZXMocm9vdClcbiAgICAgIGZvciAoY29uc3QgYXJ0aWNsZSBvZiBhcnRpY2xlcykge1xuICAgICAgICBjb25zdCBjb250ZW50ID0gcmVzb2x2ZUluY2x1ZGVzKFxuICAgICAgICAgIGFydGljbGUuY29udGVudCxcbiAgICAgICAgICByZXNvbHZlKG9wdHMuY29uZmlnLnJvb3QsIGFydGljbGUuZmlsZSksXG4gICAgICAgIClcbiAgICAgICAgZW1pdChidWlsZFR3aW5GaWxlTmFtZShhcnRpY2xlLnBhdGgpLCByZW5kZXJNYXJrZG93blR3aW4oeyBhcnRpY2xlLCBjb250ZW50IH0pKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBsbG1zID0gcmVuZGVyTGxtc1RleHQoeyBjb25maWc6IG9wdHMuY29uZmlnLCBhcnRpY2xlcyB9KVxuICAgICAgZW1pdChcImxsbXMudHh0XCIsIGxsbXMpXG4gICAgICBjb25zdCBoYXNUd2luID0gKHBhdGg6IHN0cmluZykgPT4gYXJ0aWNsZXMuc29tZShhID0+IGEucGF0aCA9PT0gcGF0aClcbiAgICAgIGlmICghaGFzVHdpbihcIi9cIikpIGVtaXQoXCJpbmRleC5tZFwiLCBsbG1zKVxuICAgICAgLy8gQSByZXdyaXRlIHRvIGEgbWlzc2luZyB0d2luIGlzIGEgNDA0LCBzbyBldmVyeSBsaXN0aW5nIHBhZ2UgbmVlZHMgb25lIHRvby5cbiAgICAgIGZvciAoY29uc3Qgc2VjdGlvbiBvZiBvcHRzLmNvbmZpZy5zZWN0aW9ucyA/PyBbXSkge1xuICAgICAgICBpZiAoc2VjdGlvbi50eXBlID09PSBcImN1c3RvbVwiIHx8IHNlY3Rpb24ucHJlZml4ID09PSBcIi9cIikgY29udGludWVcbiAgICAgICAgaWYgKGhhc1R3aW4oc2VjdGlvbi5wcmVmaXgpKSBjb250aW51ZVxuICAgICAgICBlbWl0KFxuICAgICAgICAgIGJ1aWxkVHdpbkZpbGVOYW1lKHNlY3Rpb24ucHJlZml4KSxcbiAgICAgICAgICByZW5kZXJTZWN0aW9uSW5kZXgoeyBjb25maWc6IG9wdHMuY29uZmlnLCBzZWN0aW9uLCBhcnRpY2xlcyB9KSxcbiAgICAgICAgKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBwYXR0ZXJucyA9IG9wdHMuY29uZmlnLnNraWxscyA/PyBbXVxuICAgICAgY29uc3Qgc2tpbGxzID0gbG9hZEFnZW50U2tpbGxzKHtcbiAgICAgICAgcm9vdDogb3B0cy5jb25maWcucm9vdCxcbiAgICAgICAgcGF0dGVybnM6IEFycmF5LmlzQXJyYXkocGF0dGVybnMpID8gcGF0dGVybnMgOiBbcGF0dGVybnNdLFxuICAgICAgfSlcbiAgICAgIGZvciAoY29uc3Qgc2tpbGwgb2Ygc2tpbGxzKSBlbWl0KGJ1aWxkU2tpbGxGaWxlTmFtZShza2lsbC5uYW1lKSwgc2tpbGwuc291cmNlKVxuICAgICAgaWYgKHNraWxscy5sZW5ndGgpIHtcbiAgICAgICAgZW1pdChcbiAgICAgICAgICBcIi53ZWxsLWtub3duL2FnZW50LXNraWxscy9pbmRleC5qc29uXCIsXG4gICAgICAgICAgcmVuZGVyU2tpbGxzSW5kZXgoeyBza2lsbHMsIGJhc2U6IG9wdHMuY29uZmlnLmJhc2UgfSksXG4gICAgICAgIClcbiAgICAgIH1cblxuICAgICAgY29uc3QgaGVhZGVyc0ZpbGUgPSBqb2luKHB1YmxpY0RpciwgXCJfaGVhZGVyc1wiKVxuICAgICAgdGhpcy5lbWl0RmlsZSh7XG4gICAgICAgIHR5cGU6IFwiYXNzZXRcIixcbiAgICAgICAgZmlsZU5hbWU6IFwiX2hlYWRlcnNcIixcbiAgICAgICAgc291cmNlOiByZW5kZXJIZWFkZXJzKHtcbiAgICAgICAgICBiYXNlOiBvcHRzLmNvbmZpZy5iYXNlLFxuICAgICAgICAgIGhhc1NraWxsczogc2tpbGxzLmxlbmd0aCA+IDAsXG4gICAgICAgICAgZXhpc3Rpbmc6IGV4aXN0c1N5bmMoaGVhZGVyc0ZpbGUpID8gcmVhZEZpbGVTeW5jKGhlYWRlcnNGaWxlLCBcInV0Zi04XCIpIDogXCJcIixcbiAgICAgICAgfSksXG4gICAgICB9KVxuICAgIH0sXG4gIH1cbn1cblxuLyoqIFJlbmRlciBgX2hlYWRlcnNgIChDbG91ZGZsYXJlLCBOZXRsaWZ5KTogYSBgTGlua2Agb24gdGhlIGhvbWUgcGFnZSBuYW1pbmdcbiAqICBgbGxtcy50eHRgLCBpdHMgTWFya2Rvd24gdHdpbiBhbmQgdGhlIHNraWxscyBpbmRleCwgYWZ0ZXIgYW55IHJ1bGVzIHRoZVxuICogIHByb2plY3Qgc2hpcHMgaXRzZWxmLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlckhlYWRlcnMocHJvcHM6IHtcbiAgYmFzZT86IHN0cmluZ1xuICBoYXNTa2lsbHM6IGJvb2xlYW5cbiAgZXhpc3Rpbmc/OiBzdHJpbmdcbn0pIHtcbiAgY29uc3QgYmFzZSA9IHByb3BzLmJhc2UgPz8gXCJcIlxuICBjb25zdCBsaW5rcyA9IFtcbiAgICBgPCR7YmFzZX0vbGxtcy50eHQ+OyByZWw9XCJkZXNjcmliZWRieVwiOyB0eXBlPVwidGV4dC9wbGFpblwiYCxcbiAgICBgPCR7YmFzZX0vaW5kZXgubWQ+OyByZWw9XCJhbHRlcm5hdGVcIjsgdHlwZT1cInRleHQvbWFya2Rvd25cImAsXG4gIF1cbiAgaWYgKHByb3BzLmhhc1NraWxscykge1xuICAgIGxpbmtzLnB1c2goXG4gICAgICBgPCR7YmFzZX0vLndlbGwta25vd24vYWdlbnQtc2tpbGxzL2luZGV4Lmpzb24+OyByZWw9XCJkZXNjcmliZWRieVwiOyB0eXBlPVwiYXBwbGljYXRpb24vanNvblwiYCxcbiAgICApXG4gIH1cbiAgY29uc3QgcnVsZSA9IGAke2Jhc2V9L1xcbiAgTGluazogJHtsaW5rcy5qb2luKFwiLCBcIil9XFxuYFxuICBjb25zdCBleGlzdGluZyA9IHByb3BzLmV4aXN0aW5nPy50cmltRW5kKClcbiAgcmV0dXJuIGV4aXN0aW5nID8gYCR7ZXhpc3Rpbmd9XFxuXFxuJHtydWxlfWAgOiBydWxlXG59XG5cbmFzeW5jIGZ1bmN0aW9uIGxvYWRHZW5lcmF0ZWRBcnRpY2xlcyhyb290OiBzdHJpbmcpIHtcbiAgY29uc3QgZmlsZSA9IGpvaW4ocm9vdCwgXCIuY29udGVudC1jb2xsZWN0aW9uc1wiLCBcImdlbmVyYXRlZFwiLCBcImFsbEFydGljbGVzLmpzXCIpXG4gIGNvbnN0IG1vZHVsZTogeyBkZWZhdWx0OiB1bmtub3duIH0gPSBhd2FpdCBpbXBvcnQocGF0aFRvRmlsZVVSTChmaWxlKS5ocmVmKVxuICByZXR1cm4gR2VuZXJhdGVkQXJ0aWNsZXMucGFyc2UobW9kdWxlLmRlZmF1bHQpXG59XG4iXX0=
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidml0ZS1hZ2VudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvcGx1Z2lucy92aXRlLWFnZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBQ2xELE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQ3pDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFFeEMsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQTtBQUN2QixPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLGVBQWUsRUFDZixpQkFBaUIsR0FDbEIsTUFBTSw0QkFBNEIsQ0FBQTtBQUNuQyxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLGNBQWMsRUFDZCxrQkFBa0IsRUFDbEIsa0JBQWtCLEdBQ25CLE1BQU0sb0JBQW9CLENBQUE7QUFDM0IsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFBO0FBT2hFLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FDL0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNQLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO0lBQ2hCLEtBQUssRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO0lBQ2pCLFdBQVcsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ2xDLEtBQUssRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzVCLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzNCLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO0lBQ2hCLE9BQU8sRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO0NBQ3BCLENBQUMsQ0FDSCxDQUFBO0FBRUQ7O2lG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QUM1QixNQUFNLFVBQVUsYUFBYSxDQUFDLEtBSTdCO0lBQ0MsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUE7SUFDN0IsTUFBTSxLQUFLLEdBQUc7UUFDWixJQUFJLElBQUksa0RBQWtEO1FBQzFELElBQUksSUFBSSxtREFBbUQ7S0FDNUQsQ0FBQTtJQUNELElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3BCLEtBQUssQ0FBQyxJQUFJLENBQ1IsSUFBSSxJQUFJLG1GQUFtRixDQUM1RixDQUFBO0lBQ0gsQ0FBQztJQUNELE1BQU0sSUFBSSxHQUFHLEdBQUcsSUFBSSxjQUFjLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQTtJQUN0RCxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFBO0lBQzFDLE9BQU8sUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBO0FBQ25ELENBQUM7QUFFRCxLQUFLLFVBQVUscUJBQXFCLENBQUMsSUFBWTtJQUMvQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLHNCQUFzQixFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFBO0lBQzlFLE1BQU0sTUFBTSxHQUF5QixNQUFNLE1BQU0sa0NBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBQyxDQUFBO0lBQzNFLE9BQU8saUJBQWlCLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQTtBQUNoRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXhpc3RzU3luYywgcmVhZEZpbGVTeW5jIH0gZnJvbSBcIm5vZGU6ZnNcIlxuaW1wb3J0IHsgam9pbiwgcmVzb2x2ZSB9IGZyb20gXCJub2RlOnBhdGhcIlxuaW1wb3J0IHsgcGF0aFRvRmlsZVVSTCB9IGZyb20gXCJub2RlOnVybFwiXG5pbXBvcnQgdHlwZSB7IFBsdWdpbiB9IGZyb20gXCJ2aXRlXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7XG4gIGJ1aWxkU2tpbGxGaWxlTmFtZSxcbiAgbG9hZEFnZW50U2tpbGxzLFxuICByZW5kZXJTa2lsbHNJbmRleCxcbn0gZnJvbSBcIi4uL2hlbHBlcnMvYWdlbnQtc2tpbGxzLnRzXCJcbmltcG9ydCB7XG4gIGJ1aWxkVHdpbkZpbGVOYW1lLFxuICByZW5kZXJMbG1zVGV4dCxcbiAgcmVuZGVyTWFya2Rvd25Ud2luLFxuICByZW5kZXJTZWN0aW9uSW5kZXgsXG59IGZyb20gXCIuLi9oZWxwZXJzL2xsbXMudHNcIlxuaW1wb3J0IHsgcmVzb2x2ZUluY2x1ZGVzIH0gZnJvbSBcIi4uL2hlbHBlcnMvcmVzb2x2ZS1pbmNsdWRlcy50c1wiXG5pbXBvcnQgdHlwZSB7IENvbmZpZyB9IGZyb20gXCIuLi9tb2RlbHMvY29uZmlnLnRzXCJcblxuZXhwb3J0IGludGVyZmFjZSBBZ2VudHNPcHRpb25zIHtcbiAgY29uZmlnOiBDb25maWdcbn1cblxuY29uc3QgR2VuZXJhdGVkQXJ0aWNsZXMgPSB6LmFycmF5KFxuICB6Lm9iamVjdCh7XG4gICAgcGF0aDogei5zdHJpbmcoKSxcbiAgICB0aXRsZTogei5zdHJpbmcoKSxcbiAgICBkZXNjcmlwdGlvbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIG9yZGVyOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gICAgZGF0ZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGZpbGU6IHouc3RyaW5nKCksXG4gICAgY29udGVudDogei5zdHJpbmcoKSxcbiAgfSksXG4pXG5cbi8qKiBFbWl0IHdoYXQgQUkgYWdlbnRzIGxvb2sgZm9yIGludG8gdGhlIGNsaWVudCBidWlsZDogYSBNYXJrZG93biB0d2luIG9mXG4gKiAgZXZlcnkgYXJ0aWNsZSBhbmQgc2VjdGlvbiBsaXN0aW5nIGF0IGA8cGF0aD5pbmRleC5tZGAsIGBsbG1zLnR4dGAsIHRoZSBBZ2VudCBTa2lsbHMgaW5kZXggZm9yXG4gKiAgYGNvbmZpZy5za2lsbHNgLCBhbmQgYSBgX2hlYWRlcnNgIGZpbGUgd2hvc2UgYExpbmtgIHBvaW50cyBhZ2VudHMgYXQgdGhlbS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZ2VudHMob3B0czogQWdlbnRzT3B0aW9ucyk6IFBsdWdpbiB7XG4gIGNvbnN0IHB1YmxpY0RpciA9IGpvaW4ob3B0cy5jb25maWcucm9vdCwgXCIubGl2ZW1hcmtcIiwgXCJwdWJsaWNcIilcbiAgbGV0IHJvb3QgPSBcIlwiXG4gIHJldHVybiB7XG4gICAgbmFtZTogXCJsaXZlbWFyazphZ2VudHNcIixcbiAgICBhcHBseVRvRW52aXJvbm1lbnQoZW52KSB7XG4gICAgICByZXR1cm4gZW52Lm5hbWUgPT09IFwiY2xpZW50XCJcbiAgICB9LFxuICAgIGNvbmZpZ1Jlc29sdmVkKHJlc29sdmVkKSB7XG4gICAgICByb290ID0gcmVzb2x2ZWQucm9vdFxuICAgIH0sXG4gICAgYXN5bmMgZ2VuZXJhdGVCdW5kbGUoKSB7XG4gICAgICAvLyBWaXRlIGNvcGllcyB0aGUgcHVibGljRGlyIGJlZm9yZSB3cml0ZUJ1bmRsZSwgc28gZW1pdHRpbmcgYSBmaWxlIHRoZVxuICAgICAgLy8gcHJvamVjdCBzaGlwcyB1bmRlciBgLmxpdmVtYXJrL3B1YmxpYy9gIHdvdWxkIHNpbGVudGx5IHJlcGxhY2UgaXQuXG4gICAgICBjb25zdCBlbWl0ID0gKGZpbGVOYW1lOiBzdHJpbmcsIHNvdXJjZTogc3RyaW5nIHwgQnVmZmVyKSA9PiB7XG4gICAgICAgIGlmIChleGlzdHNTeW5jKGpvaW4ocHVibGljRGlyLCBmaWxlTmFtZSkpKSByZXR1cm5cbiAgICAgICAgdGhpcy5lbWl0RmlsZSh7IHR5cGU6IFwiYXNzZXRcIiwgZmlsZU5hbWUsIHNvdXJjZSB9KVxuICAgICAgfVxuXG4gICAgICBjb25zdCBhcnRpY2xlcyA9IGF3YWl0IGxvYWRHZW5lcmF0ZWRBcnRpY2xlcyhyb290KVxuICAgICAgY29uc3QgY29udGVudHMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgYXJ0aWNsZXMubWFwKGFydGljbGUgPT5cbiAgICAgICAgICByZXNvbHZlSW5jbHVkZXMoYXJ0aWNsZS5jb250ZW50LCByZXNvbHZlKG9wdHMuY29uZmlnLnJvb3QsIGFydGljbGUuZmlsZSkpLFxuICAgICAgICApLFxuICAgICAgKVxuICAgICAgYXJ0aWNsZXMuZm9yRWFjaCgoYXJ0aWNsZSwgaW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgY29udGVudCA9IGNvbnRlbnRzW2luZGV4XSA/PyBhcnRpY2xlLmNvbnRlbnRcbiAgICAgICAgZW1pdChidWlsZFR3aW5GaWxlTmFtZShhcnRpY2xlLnBhdGgpLCByZW5kZXJNYXJrZG93blR3aW4oeyBhcnRpY2xlLCBjb250ZW50IH0pKVxuICAgICAgfSlcblxuICAgICAgY29uc3QgbGxtcyA9IHJlbmRlckxsbXNUZXh0KHsgY29uZmlnOiBvcHRzLmNvbmZpZywgYXJ0aWNsZXMgfSlcbiAgICAgIGVtaXQoXCJsbG1zLnR4dFwiLCBsbG1zKVxuICAgICAgY29uc3QgaGFzVHdpbiA9IChwYXRoOiBzdHJpbmcpID0+IGFydGljbGVzLnNvbWUoYSA9PiBhLnBhdGggPT09IHBhdGgpXG4gICAgICBpZiAoIWhhc1R3aW4oXCIvXCIpKSBlbWl0KFwiaW5kZXgubWRcIiwgbGxtcylcbiAgICAgIC8vIEEgcmV3cml0ZSB0byBhIG1pc3NpbmcgdHdpbiBpcyBhIDQwNCwgc28gZXZlcnkgbGlzdGluZyBwYWdlIG5lZWRzIG9uZSB0b28uXG4gICAgICBmb3IgKGNvbnN0IHNlY3Rpb24gb2Ygb3B0cy5jb25maWcuc2VjdGlvbnMgPz8gW10pIHtcbiAgICAgICAgaWYgKHNlY3Rpb24udHlwZSA9PT0gXCJjdXN0b21cIiB8fCBzZWN0aW9uLnByZWZpeCA9PT0gXCIvXCIpIGNvbnRpbnVlXG4gICAgICAgIGlmIChoYXNUd2luKHNlY3Rpb24ucHJlZml4KSkgY29udGludWVcbiAgICAgICAgZW1pdChcbiAgICAgICAgICBidWlsZFR3aW5GaWxlTmFtZShzZWN0aW9uLnByZWZpeCksXG4gICAgICAgICAgcmVuZGVyU2VjdGlvbkluZGV4KHsgY29uZmlnOiBvcHRzLmNvbmZpZywgc2VjdGlvbiwgYXJ0aWNsZXMgfSksXG4gICAgICAgIClcbiAgICAgIH1cblxuICAgICAgY29uc3QgcGF0dGVybnMgPSBvcHRzLmNvbmZpZy5za2lsbHMgPz8gW11cbiAgICAgIGNvbnN0IHNraWxscyA9IGxvYWRBZ2VudFNraWxscyh7XG4gICAgICAgIHJvb3Q6IG9wdHMuY29uZmlnLnJvb3QsXG4gICAgICAgIHBhdHRlcm5zOiBBcnJheS5pc0FycmF5KHBhdHRlcm5zKSA/IHBhdHRlcm5zIDogW3BhdHRlcm5zXSxcbiAgICAgIH0pXG4gICAgICBmb3IgKGNvbnN0IHNraWxsIG9mIHNraWxscykgZW1pdChidWlsZFNraWxsRmlsZU5hbWUoc2tpbGwubmFtZSksIHNraWxsLnNvdXJjZSlcbiAgICAgIGlmIChza2lsbHMubGVuZ3RoKSB7XG4gICAgICAgIGVtaXQoXG4gICAgICAgICAgXCIud2VsbC1rbm93bi9hZ2VudC1za2lsbHMvaW5kZXguanNvblwiLFxuICAgICAgICAgIHJlbmRlclNraWxsc0luZGV4KHsgc2tpbGxzLCBiYXNlOiBvcHRzLmNvbmZpZy5iYXNlIH0pLFxuICAgICAgICApXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGhlYWRlcnNGaWxlID0gam9pbihwdWJsaWNEaXIsIFwiX2hlYWRlcnNcIilcbiAgICAgIHRoaXMuZW1pdEZpbGUoe1xuICAgICAgICB0eXBlOiBcImFzc2V0XCIsXG4gICAgICAgIGZpbGVOYW1lOiBcIl9oZWFkZXJzXCIsXG4gICAgICAgIHNvdXJjZTogcmVuZGVySGVhZGVycyh7XG4gICAgICAgICAgYmFzZTogb3B0cy5jb25maWcuYmFzZSxcbiAgICAgICAgICBoYXNTa2lsbHM6IHNraWxscy5sZW5ndGggPiAwLFxuICAgICAgICAgIGV4aXN0aW5nOiBleGlzdHNTeW5jKGhlYWRlcnNGaWxlKSA/IHJlYWRGaWxlU3luYyhoZWFkZXJzRmlsZSwgXCJ1dGYtOFwiKSA6IFwiXCIsXG4gICAgICAgIH0pLFxuICAgICAgfSlcbiAgICB9LFxuICB9XG59XG5cbi8qKiBSZW5kZXIgYF9oZWFkZXJzYCAoQ2xvdWRmbGFyZSwgTmV0bGlmeSk6IGEgYExpbmtgIG9uIHRoZSBob21lIHBhZ2UgbmFtaW5nXG4gKiAgYGxsbXMudHh0YCwgaXRzIE1hcmtkb3duIHR3aW4gYW5kIHRoZSBza2lsbHMgaW5kZXgsIGFmdGVyIGFueSBydWxlcyB0aGVcbiAqICBwcm9qZWN0IHNoaXBzIGl0c2VsZi4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJIZWFkZXJzKHByb3BzOiB7XG4gIGJhc2U/OiBzdHJpbmdcbiAgaGFzU2tpbGxzOiBib29sZWFuXG4gIGV4aXN0aW5nPzogc3RyaW5nXG59KSB7XG4gIGNvbnN0IGJhc2UgPSBwcm9wcy5iYXNlID8/IFwiXCJcbiAgY29uc3QgbGlua3MgPSBbXG4gICAgYDwke2Jhc2V9L2xsbXMudHh0PjsgcmVsPVwiZGVzY3JpYmVkYnlcIjsgdHlwZT1cInRleHQvcGxhaW5cImAsXG4gICAgYDwke2Jhc2V9L2luZGV4Lm1kPjsgcmVsPVwiYWx0ZXJuYXRlXCI7IHR5cGU9XCJ0ZXh0L21hcmtkb3duXCJgLFxuICBdXG4gIGlmIChwcm9wcy5oYXNTa2lsbHMpIHtcbiAgICBsaW5rcy5wdXNoKFxuICAgICAgYDwke2Jhc2V9Ly53ZWxsLWtub3duL2FnZW50LXNraWxscy9pbmRleC5qc29uPjsgcmVsPVwiZGVzY3JpYmVkYnlcIjsgdHlwZT1cImFwcGxpY2F0aW9uL2pzb25cImAsXG4gICAgKVxuICB9XG4gIGNvbnN0IHJ1bGUgPSBgJHtiYXNlfS9cXG4gIExpbms6ICR7bGlua3Muam9pbihcIiwgXCIpfVxcbmBcbiAgY29uc3QgZXhpc3RpbmcgPSBwcm9wcy5leGlzdGluZz8udHJpbUVuZCgpXG4gIHJldHVybiBleGlzdGluZyA/IGAke2V4aXN0aW5nfVxcblxcbiR7cnVsZX1gIDogcnVsZVxufVxuXG5hc3luYyBmdW5jdGlvbiBsb2FkR2VuZXJhdGVkQXJ0aWNsZXMocm9vdDogc3RyaW5nKSB7XG4gIGNvbnN0IGZpbGUgPSBqb2luKHJvb3QsIFwiLmNvbnRlbnQtY29sbGVjdGlvbnNcIiwgXCJnZW5lcmF0ZWRcIiwgXCJhbGxBcnRpY2xlcy5qc1wiKVxuICBjb25zdCBtb2R1bGU6IHsgZGVmYXVsdDogdW5rbm93biB9ID0gYXdhaXQgaW1wb3J0KHBhdGhUb0ZpbGVVUkwoZmlsZSkuaHJlZilcbiAgcmV0dXJuIEdlbmVyYXRlZEFydGljbGVzLnBhcnNlKG1vZHVsZS5kZWZhdWx0KVxufVxuIl19
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "livemark",
3
- "version": "0.27.0",
3
+ "version": "0.27.1",
4
4
  "description": "Livemark description",
5
5
  "license": "MIT",
6
6
  "author": "Evgeny Karev",
@@ -124,6 +124,7 @@
124
124
  "check:lint": "vp fmt --check && vp lint",
125
125
  "check:types": "tsgo --noEmit",
126
126
  "format": "vp fmt --no-error-on-unmatched-pattern",
127
+ "measure:coverage": "vp test --run --coverage",
127
128
  "release": "pnpm publish --access public --ignore-scripts --no-git-checks",
128
129
  "scan": "pnpm scan:leaks && pnpm scan:vulns",
129
130
  "scan:leaks": "gitleaks git --config=.gitleaks.toml --verbose --redact",
@@ -120,7 +120,7 @@ const articles = defineCollection({
120
120
  const patch = config.patches?.find(p => p.file === document._meta.filePath)
121
121
  const doc = patch ? { ...document, ...patch.article } : document
122
122
  const filePath = resolve(config.root, doc._meta.filePath)
123
- const content = resolveIncludes(doc.content, filePath)
123
+ const content = await resolveIncludes(doc.content, filePath)
124
124
  const title = doc.title ?? extractTitle(content, doc._meta.path)
125
125
  const icon = doc.icon
126
126
  const path = doc.path ?? toPath(doc._meta.filePath)
@@ -1,4 +1,4 @@
1
- import { readFileSync } from "node:fs"
1
+ import { readFile } from "node:fs/promises"
2
2
  import { dirname, extname, resolve } from "node:path"
3
3
 
4
4
  const INCLUDE_RE = /^::include\{(.+)\}$/
@@ -56,18 +56,14 @@ function parseAttributes(raw: string): Record<string, string> {
56
56
  return attrs
57
57
  }
58
58
 
59
- function resolveDirective(
60
- rawAttrs: string,
61
- fileDir: string,
62
- depth: number,
63
- ): string | undefined {
59
+ async function resolveDirective(rawAttrs: string, fileDir: string, depth: number) {
64
60
  const attrs = parseAttributes(rawAttrs)
65
61
  const file = attrs.file
66
62
  if (!file) return undefined
67
63
 
68
64
  const absolutePath = resolve(fileDir, file)
69
65
  try {
70
- let included = readFileSync(absolutePath, "utf-8")
66
+ let included = await readFile(absolutePath, "utf-8")
71
67
 
72
68
  const ext = extname(file).toLowerCase()
73
69
  const lang = extToLang[ext]
@@ -87,12 +83,16 @@ function resolveDirective(
87
83
  }
88
84
 
89
85
  /** Resolves ::include{file="..."} directives by replacing them with referenced file contents */
90
- export function resolveIncludes(content: string, filePath: string, depth = 0): string {
86
+ export async function resolveIncludes(
87
+ content: string,
88
+ filePath: string,
89
+ depth = 0,
90
+ ): Promise<string> {
91
91
  if (depth > 5) return content
92
92
 
93
93
  const fileDir = dirname(filePath)
94
94
  const lines = content.split("\n")
95
- const result: string[] = []
95
+ const result: Array<string | Promise<string>> = []
96
96
  let fenceMarker: string | undefined
97
97
 
98
98
  for (const line of lines) {
@@ -114,12 +114,12 @@ export function resolveIncludes(content: string, filePath: string, depth = 0): s
114
114
 
115
115
  const includeMatch = INCLUDE_RE.exec(line)
116
116
  if (includeMatch) {
117
- const resolved = resolveDirective(includeMatch[1]!, fileDir, depth)
118
- result.push(resolved ?? line)
117
+ const directive = resolveDirective(includeMatch[1]!, fileDir, depth)
118
+ result.push(directive.then(resolved => resolved ?? line))
119
119
  } else {
120
120
  result.push(line)
121
121
  }
122
122
  }
123
123
 
124
- return result.join("\n")
124
+ return (await Promise.all(result)).join("\n")
125
125
  }
@@ -5,83 +5,104 @@ import { temporaryDirectory } from "tempy"
5
5
  import { resolveIncludes } from "./resolve-includes.ts"
6
6
 
7
7
  describe("resolveIncludes", () => {
8
- it("should replace include directive with file content", () => {
8
+ it("should replace include directive with file content", async () => {
9
9
  const dir = temporaryDirectory()
10
10
  writeFileSync(join(dir, "snippet.md"), "Hello from snippet")
11
- const result = resolveIncludes('::include{file="snippet.md"}', join(dir, "main.md"))
11
+ const result = await resolveIncludes(
12
+ '::include{file="snippet.md"}',
13
+ join(dir, "main.md"),
14
+ )
12
15
  expect(result).toBe("Hello from snippet")
13
16
  })
14
17
 
15
- it("should strip frontmatter from included files", () => {
18
+ it("should strip frontmatter from included files", async () => {
16
19
  const dir = temporaryDirectory()
17
20
  writeFileSync(join(dir, "snippet.md"), "---\ntitle: Test\n---\nContent here")
18
- const result = resolveIncludes('::include{file="snippet.md"}', join(dir, "main.md"))
21
+ const result = await resolveIncludes(
22
+ '::include{file="snippet.md"}',
23
+ join(dir, "main.md"),
24
+ )
19
25
  expect(result).toBe("Content here")
20
26
  })
21
27
 
22
- it("should preserve surrounding content", () => {
28
+ it("should preserve surrounding content", async () => {
23
29
  const dir = temporaryDirectory()
24
30
  writeFileSync(join(dir, "snippet.md"), "Included text")
25
- const result = resolveIncludes(
31
+ const result = await resolveIncludes(
26
32
  'Before\n\n::include{file="snippet.md"}\n\nAfter',
27
33
  join(dir, "main.md"),
28
34
  )
29
35
  expect(result).toBe("Before\n\nIncluded text\n\nAfter")
30
36
  })
31
37
 
32
- it("should keep directive when file is missing", () => {
33
- const result = resolveIncludes('::include{file="nonexistent.md"}', "/tmp/main.md")
38
+ it("should keep directive when file is missing", async () => {
39
+ const result = await resolveIncludes(
40
+ '::include{file="nonexistent.md"}',
41
+ "/tmp/main.md",
42
+ )
34
43
  expect(result).toBe('::include{file="nonexistent.md"}')
35
44
  })
36
45
 
37
- it("should resolve nested includes", () => {
46
+ it("should resolve nested includes", async () => {
38
47
  const dir = temporaryDirectory()
39
48
  writeFileSync(join(dir, "inner.md"), "Inner content")
40
49
  writeFileSync(join(dir, "outer.md"), '::include{file="inner.md"}')
41
- const result = resolveIncludes('::include{file="outer.md"}', join(dir, "main.md"))
50
+ const result = await resolveIncludes(
51
+ '::include{file="outer.md"}',
52
+ join(dir, "main.md"),
53
+ )
42
54
  expect(result).toBe("Inner content")
43
55
  })
44
56
 
45
- it("should limit recursion depth", () => {
57
+ it("should limit recursion depth", async () => {
46
58
  const dir = temporaryDirectory()
47
59
  writeFileSync(join(dir, "recursive.md"), '::include{file="recursive.md"}')
48
- const result = resolveIncludes('::include{file="recursive.md"}', join(dir, "main.md"))
60
+ const result = await resolveIncludes(
61
+ '::include{file="recursive.md"}',
62
+ join(dir, "main.md"),
63
+ )
49
64
  expect(result).toBe('::include{file="recursive.md"}')
50
65
  })
51
66
 
52
- it("should resolve relative paths from included file location", () => {
67
+ it("should resolve relative paths from included file location", async () => {
53
68
  const dir = temporaryDirectory()
54
69
  mkdirSync(join(dir, "sub"))
55
70
  writeFileSync(join(dir, "sub", "child.md"), "Child content")
56
71
  writeFileSync(join(dir, "parent.md"), '::include{file="sub/child.md"}')
57
- const result = resolveIncludes('::include{file="parent.md"}', join(dir, "main.md"))
72
+ const result = await resolveIncludes(
73
+ '::include{file="parent.md"}',
74
+ join(dir, "main.md"),
75
+ )
58
76
  expect(result).toBe("Child content")
59
77
  })
60
78
 
61
- it("should handle multiple includes in one file", () => {
79
+ it("should handle multiple includes in one file", async () => {
62
80
  const dir = temporaryDirectory()
63
81
  writeFileSync(join(dir, "a.md"), "Alpha")
64
82
  writeFileSync(join(dir, "b.md"), "Beta")
65
- const result = resolveIncludes(
83
+ const result = await resolveIncludes(
66
84
  '::include{file="a.md"}\n\n::include{file="b.md"}',
67
85
  join(dir, "main.md"),
68
86
  )
69
87
  expect(result).toBe("Alpha\n\nBeta")
70
88
  })
71
89
 
72
- it("should wrap code files in fenced blocks", () => {
90
+ it("should wrap code files in fenced blocks", async () => {
73
91
  const dir = temporaryDirectory()
74
92
  writeFileSync(join(dir, "example.ts"), 'const x = 1\nconst y = "hello"')
75
- const result = resolveIncludes('::include{file="example.ts"}', join(dir, "main.md"))
93
+ const result = await resolveIncludes(
94
+ '::include{file="example.ts"}',
95
+ join(dir, "main.md"),
96
+ )
76
97
  expect(result).toBe(
77
98
  '```typescript title="example.ts"\nconst x = 1\nconst y = "hello"\n```',
78
99
  )
79
100
  })
80
101
 
81
- it("should pass meta to code fence", () => {
102
+ it("should pass meta to code fence", async () => {
82
103
  const dir = temporaryDirectory()
83
104
  writeFileSync(join(dir, "app.tsx"), "export default function App() {}")
84
- const result = resolveIncludes(
105
+ const result = await resolveIncludes(
85
106
  '::include{file="app.tsx" meta="{1} lineNumbers"}',
86
107
  join(dir, "main.md"),
87
108
  )
@@ -90,10 +111,13 @@ describe("resolveIncludes", () => {
90
111
  )
91
112
  })
92
113
 
93
- it("should treat unknown extensions as markdown", () => {
114
+ it("should treat unknown extensions as markdown", async () => {
94
115
  const dir = temporaryDirectory()
95
116
  writeFileSync(join(dir, "notes.txt"), "Plain text")
96
- const result = resolveIncludes('::include{file="notes.txt"}', join(dir, "main.md"))
117
+ const result = await resolveIncludes(
118
+ '::include{file="notes.txt"}',
119
+ join(dir, "main.md"),
120
+ )
97
121
  expect(result).toBe("Plain text")
98
122
  })
99
123
  })
@@ -56,13 +56,15 @@ export function agents(opts: AgentsOptions): Plugin {
56
56
  }
57
57
 
58
58
  const articles = await loadGeneratedArticles(root)
59
- for (const article of articles) {
60
- const content = resolveIncludes(
61
- article.content,
62
- resolve(opts.config.root, article.file),
63
- )
59
+ const contents = await Promise.all(
60
+ articles.map(article =>
61
+ resolveIncludes(article.content, resolve(opts.config.root, article.file)),
62
+ ),
63
+ )
64
+ articles.forEach((article, index) => {
65
+ const content = contents[index] ?? article.content
64
66
  emit(buildTwinFileName(article.path), renderMarkdownTwin({ article, content }))
65
- }
67
+ })
66
68
 
67
69
  const llms = renderLlmsText({ config: opts.config, articles })
68
70
  emit("llms.txt", llms)