livemark 0.27.0 → 0.27.2

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==
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Keep Tailwind's source scan out of the target's dependency link, which reaches the
3
+ * whole install (and, through a self-link, the whole project) from inside the Vite root.
4
+ */
5
+ export declare function excludeDependencySources(props: {
6
+ css: string;
7
+ targetDir: string;
8
+ }): string | undefined;
@@ -0,0 +1,13 @@
1
+ import { join, sep } from "node:path";
2
+ const TAILWIND_IMPORT = /@import\s+(["'])tailwindcss(\/utilities)?\1/;
3
+ /**
4
+ * Keep Tailwind's source scan out of the target's dependency link, which reaches the
5
+ * whole install (and, through a self-link, the whole project) from inside the Vite root.
6
+ */
7
+ export function excludeDependencySources(props) {
8
+ if (!TAILWIND_IMPORT.test(props.css))
9
+ return undefined;
10
+ const link = join(props.targetDir, "node_modules").split(sep).join("/");
11
+ return `${props.css}\n@source not "${link}";\n`;
12
+ }
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFpbHdpbmQtc291cmNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9oZWxwZXJzL3RhaWx3aW5kLXNvdXJjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFFckMsTUFBTSxlQUFlLEdBQUcsNkNBQTZDLENBQUE7QUFFckU7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLHdCQUF3QixDQUFDLEtBQXlDO0lBQ2hGLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7UUFBRSxPQUFPLFNBQVMsQ0FBQTtJQUN0RCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxjQUFjLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ3ZFLE9BQU8sR0FBRyxLQUFLLENBQUMsR0FBRyxrQkFBa0IsSUFBSSxNQUFNLENBQUE7QUFDakQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpvaW4sIHNlcCB9IGZyb20gXCJub2RlOnBhdGhcIlxuXG5jb25zdCBUQUlMV0lORF9JTVBPUlQgPSAvQGltcG9ydFxccysoW1wiJ10pdGFpbHdpbmRjc3MoXFwvdXRpbGl0aWVzKT9cXDEvXG5cbi8qKlxuICogS2VlcCBUYWlsd2luZCdzIHNvdXJjZSBzY2FuIG91dCBvZiB0aGUgdGFyZ2V0J3MgZGVwZW5kZW5jeSBsaW5rLCB3aGljaCByZWFjaGVzIHRoZVxuICogd2hvbGUgaW5zdGFsbCAoYW5kLCB0aHJvdWdoIGEgc2VsZi1saW5rLCB0aGUgd2hvbGUgcHJvamVjdCkgZnJvbSBpbnNpZGUgdGhlIFZpdGUgcm9vdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4Y2x1ZGVEZXBlbmRlbmN5U291cmNlcyhwcm9wczogeyBjc3M6IHN0cmluZzsgdGFyZ2V0RGlyOiBzdHJpbmcgfSkge1xuICBpZiAoIVRBSUxXSU5EX0lNUE9SVC50ZXN0KHByb3BzLmNzcykpIHJldHVybiB1bmRlZmluZWRcbiAgY29uc3QgbGluayA9IGpvaW4ocHJvcHMudGFyZ2V0RGlyLCBcIm5vZGVfbW9kdWxlc1wiKS5zcGxpdChzZXApLmpvaW4oXCIvXCIpXG4gIHJldHVybiBgJHtwcm9wcy5jc3N9XFxuQHNvdXJjZSBub3QgXCIke2xpbmt9XCI7XFxuYFxufVxuIl19
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,22 @@
1
+ import { describe, expect, it } from "vite-plus/test";
2
+ import { excludeDependencySources } from "./tailwind-sources.js";
3
+ const targetDir = "/project/.livemark/.target";
4
+ describe("excludeDependencySources", () => {
5
+ it("excludes the dependency link from a Tailwind entry", () => {
6
+ const css = `@import "tailwindcss";\n@import "./shape.css";`;
7
+ expect(excludeDependencySources({ css, targetDir })).toBe(`${css}\n@source not "/project/.livemark/.target/node_modules";\n`);
8
+ });
9
+ it("accepts single quotes, import options and a bare utilities layer", () => {
10
+ for (const css of [
11
+ `@import 'tailwindcss' source(none);`,
12
+ `@import "tailwindcss/utilities" layer(utilities);`,
13
+ ]) {
14
+ expect(excludeDependencySources({ css, targetDir })).toContain("@source not");
15
+ }
16
+ });
17
+ it("leaves other stylesheets alone", () => {
18
+ expect(excludeDependencySources({ css: `@import "tw-animate-css";`, targetDir })).toBeUndefined();
19
+ expect(excludeDependencySources({ css: `@import "tailwindcss/theme";`, targetDir })).toBeUndefined();
20
+ });
21
+ });
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFpbHdpbmQtc291cmNlcy51bml0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL2hlbHBlcnMvdGFpbHdpbmQtc291cmNlcy51bml0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQ3JELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBRWhFLE1BQU0sU0FBUyxHQUFHLDRCQUE0QixDQUFBO0FBRTlDLFFBQVEsQ0FBQywwQkFBMEIsRUFBRSxHQUFHLEVBQUU7SUFDeEMsRUFBRSxDQUFDLG9EQUFvRCxFQUFFLEdBQUcsRUFBRTtRQUM1RCxNQUFNLEdBQUcsR0FBRyxnREFBZ0QsQ0FBQTtRQUM1RCxNQUFNLENBQUMsd0JBQXdCLENBQUMsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDdkQsR0FBRyxHQUFHLDREQUE0RCxDQUNuRSxDQUFBO0lBQ0gsQ0FBQyxDQUFDLENBQUE7SUFFRixFQUFFLENBQUMsa0VBQWtFLEVBQUUsR0FBRyxFQUFFO1FBQzFFLEtBQUssTUFBTSxHQUFHLElBQUk7WUFDaEIscUNBQXFDO1lBQ3JDLG1EQUFtRDtTQUNwRCxFQUFFLENBQUM7WUFDRixNQUFNLENBQUMsd0JBQXdCLENBQUMsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQTtRQUMvRSxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUE7SUFFRixFQUFFLENBQUMsZ0NBQWdDLEVBQUUsR0FBRyxFQUFFO1FBQ3hDLE1BQU0sQ0FDSix3QkFBd0IsQ0FBQyxFQUFFLEdBQUcsRUFBRSwyQkFBMkIsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUMxRSxDQUFDLGFBQWEsRUFBRSxDQUFBO1FBQ2pCLE1BQU0sQ0FDSix3QkFBd0IsQ0FBQyxFQUFFLEdBQUcsRUFBRSw4QkFBOEIsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUM3RSxDQUFDLGFBQWEsRUFBRSxDQUFBO0lBQ25CLENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZXNjcmliZSwgZXhwZWN0LCBpdCB9IGZyb20gXCJ2aXRlLXBsdXMvdGVzdFwiXG5pbXBvcnQgeyBleGNsdWRlRGVwZW5kZW5jeVNvdXJjZXMgfSBmcm9tIFwiLi90YWlsd2luZC1zb3VyY2VzLnRzXCJcblxuY29uc3QgdGFyZ2V0RGlyID0gXCIvcHJvamVjdC8ubGl2ZW1hcmsvLnRhcmdldFwiXG5cbmRlc2NyaWJlKFwiZXhjbHVkZURlcGVuZGVuY3lTb3VyY2VzXCIsICgpID0+IHtcbiAgaXQoXCJleGNsdWRlcyB0aGUgZGVwZW5kZW5jeSBsaW5rIGZyb20gYSBUYWlsd2luZCBlbnRyeVwiLCAoKSA9PiB7XG4gICAgY29uc3QgY3NzID0gYEBpbXBvcnQgXCJ0YWlsd2luZGNzc1wiO1xcbkBpbXBvcnQgXCIuL3NoYXBlLmNzc1wiO2BcbiAgICBleHBlY3QoZXhjbHVkZURlcGVuZGVuY3lTb3VyY2VzKHsgY3NzLCB0YXJnZXREaXIgfSkpLnRvQmUoXG4gICAgICBgJHtjc3N9XFxuQHNvdXJjZSBub3QgXCIvcHJvamVjdC8ubGl2ZW1hcmsvLnRhcmdldC9ub2RlX21vZHVsZXNcIjtcXG5gLFxuICAgIClcbiAgfSlcblxuICBpdChcImFjY2VwdHMgc2luZ2xlIHF1b3RlcywgaW1wb3J0IG9wdGlvbnMgYW5kIGEgYmFyZSB1dGlsaXRpZXMgbGF5ZXJcIiwgKCkgPT4ge1xuICAgIGZvciAoY29uc3QgY3NzIG9mIFtcbiAgICAgIGBAaW1wb3J0ICd0YWlsd2luZGNzcycgc291cmNlKG5vbmUpO2AsXG4gICAgICBgQGltcG9ydCBcInRhaWx3aW5kY3NzL3V0aWxpdGllc1wiIGxheWVyKHV0aWxpdGllcyk7YCxcbiAgICBdKSB7XG4gICAgICBleHBlY3QoZXhjbHVkZURlcGVuZGVuY3lTb3VyY2VzKHsgY3NzLCB0YXJnZXREaXIgfSkpLnRvQ29udGFpbihcIkBzb3VyY2Ugbm90XCIpXG4gICAgfVxuICB9KVxuXG4gIGl0KFwibGVhdmVzIG90aGVyIHN0eWxlc2hlZXRzIGFsb25lXCIsICgpID0+IHtcbiAgICBleHBlY3QoXG4gICAgICBleGNsdWRlRGVwZW5kZW5jeVNvdXJjZXMoeyBjc3M6IGBAaW1wb3J0IFwidHctYW5pbWF0ZS1jc3NcIjtgLCB0YXJnZXREaXIgfSksXG4gICAgKS50b0JlVW5kZWZpbmVkKClcbiAgICBleHBlY3QoXG4gICAgICBleGNsdWRlRGVwZW5kZW5jeVNvdXJjZXMoeyBjc3M6IGBAaW1wb3J0IFwidGFpbHdpbmRjc3MvdGhlbWVcIjtgLCB0YXJnZXREaXIgfSksXG4gICAgKS50b0JlVW5kZWZpbmVkKClcbiAgfSlcbn0pXG4iXX0=
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidml0ZS1hZ2VudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvcGx1Z2lucy92aXRlLWFnZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBQ2xELE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQ3pDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFFeEMsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQTtBQUN2QixPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLGVBQWUsRUFDZixpQkFBaUIsR0FDbEIsTUFBTSw0QkFBNEIsQ0FBQTtBQUNuQyxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLGNBQWMsRUFDZCxrQkFBa0IsRUFDbEIsa0JBQWtCLEdBQ25CLE1BQU0sb0JBQW9CLENBQUE7QUFDM0IsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFBO0FBT2hFLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FDL0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNQLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO0lBQ2hCLEtBQUssRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO0lBQ2pCLFdBQVcsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ2xDLEtBQUssRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzVCLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzNCLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO0lBQ2hCLE9BQU8sRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO0NBQ3BCLENBQUMsQ0FDSCxDQUFBO0FBRUQ7O2lG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LEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNwQixLQUFLLENBQUMsSUFBSSxDQUNSLElBQUksSUFBSSxtRkFBbUYsQ0FDNUYsQ0FBQTtJQUNILENBQUM7SUFDRCxNQUFNLElBQUksR0FBRyxHQUFHLElBQUksY0FBYyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUE7SUFDdEQsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBQTtJQUMxQyxPQUFPLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQTtBQUNuRCxDQUFDO0FBRUQsS0FBSyxVQUFVLHFCQUFxQixDQUFDLElBQVk7SUFDL0MsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxzQkFBc0IsRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQTtJQUM5RSxNQUFNLE1BQU0sR0FBeUIsTUFBTSxNQUFNLGtDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUMsQ0FBQTtJQUMzRSxPQUFPLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUE7QUFDaEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4aXN0c1N5bmMsIHJlYWRGaWxlU3luYyB9IGZyb20gXCJub2RlOmZzXCJcbmltcG9ydCB7IGpvaW4sIHJlc29sdmUgfSBmcm9tIFwibm9kZTpwYXRoXCJcbmltcG9ydCB7IHBhdGhUb0ZpbGVVUkwgfSBmcm9tIFwibm9kZTp1cmxcIlxuaW1wb3J0IHR5cGUgeyBQbHVnaW4gfSBmcm9tIFwidml0ZVwiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQge1xuICBidWlsZFNraWxsRmlsZU5hbWUsXG4gIGxvYWRBZ2VudFNraWxscyxcbiAgcmVuZGVyU2tpbGxzSW5kZXgsXG59IGZyb20gXCIuLi9oZWxwZXJzL2FnZW50LXNraWxscy50c1wiXG5pbXBvcnQge1xuICBidWlsZFR3aW5GaWxlTmFtZSxcbiAgcmVuZGVyTGxtc1RleHQsXG4gIHJlbmRlck1hcmtkb3duVHdpbixcbiAgcmVuZGVyU2VjdGlvbkluZGV4LFxufSBmcm9tIFwiLi4vaGVscGVycy9sbG1zLnRzXCJcbmltcG9ydCB7IHJlc29sdmVJbmNsdWRlcyB9IGZyb20gXCIuLi9oZWxwZXJzL3Jlc29sdmUtaW5jbHVkZXMudHNcIlxuaW1wb3J0IHR5cGUgeyBDb25maWcgfSBmcm9tIFwiLi4vbW9kZWxzL2NvbmZpZy50c1wiXG5cbmV4cG9ydCBpbnRlcmZhY2UgQWdlbnRzT3B0aW9ucyB7XG4gIGNvbmZpZzogQ29uZmlnXG59XG5cbmNvbnN0IEdlbmVyYXRlZEFydGljbGVzID0gei5hcnJheShcbiAgei5vYmplY3Qoe1xuICAgIHBhdGg6IHouc3RyaW5nKCksXG4gICAgdGl0bGU6IHouc3RyaW5nKCksXG4gICAgZGVzY3JpcHRpb246IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBvcmRlcjogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICAgIGRhdGU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBmaWxlOiB6LnN0cmluZygpLFxuICAgIGNvbnRlbnQ6IHouc3RyaW5nKCksXG4gIH0pLFxuKVxuXG4vKiogRW1pdCB3aGF0IEFJIGFnZW50cyBsb29rIGZvciBpbnRvIHRoZSBjbGllbnQgYnVpbGQ6IGEgTWFya2Rvd24gdHdpbiBvZlxuICogIGV2ZXJ5IGFydGljbGUgYW5kIHNlY3Rpb24gbGlzdGluZyBhdCBgPHBhdGg+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
@@ -4,6 +4,7 @@ import { mergeConfig } from "vite";
4
4
  import packageJson from "../../package.json" with { type: "json" };
5
5
  import { buildTarget } from "../actions/target/build.js";
6
6
  import { renderInlineMarkdown } from "../helpers/render-inline-markdown.js";
7
+ import { excludeDependencySources } from "../helpers/tailwind-sources.js";
7
8
  import { resolveTargetExport } from "../helpers/target-export.js";
8
9
  import { WebsiteConfig } from "../models/config.js";
9
10
  import { ESCAPABLE_FILES, ESCAPABLE_FOLDERS } from "../settings.js";
@@ -68,6 +69,14 @@ export function livemark(opts) {
68
69
  const override = await resolveViteOverride(opts.config.vite, env);
69
70
  return override ? mergeConfig(base, override) : base;
70
71
  },
72
+ // Here, not in `styles/general.css`, so an escaped stylesheet keeps it. Works only
73
+ // while this plugin precedes `tailwind()`: both are `pre`, so array order decides.
74
+ transform: {
75
+ filter: { id: /\.css(\?|$)/ },
76
+ handler(css) {
77
+ return excludeDependencySources({ css, targetDir });
78
+ },
79
+ },
71
80
  resolveId(id) {
72
81
  if (id === VIRTUAL_ID)
73
82
  return VIRTUAL_RESOLVED_ID;
@@ -184,4 +193,4 @@ async function resolveViteOverride(vite, env) {
184
193
  function isObject(v) {
185
194
  return v !== null && typeof v === "object";
186
195
  }
187
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidml0ZS1saXZlbWFyay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9wbHVnaW5zL3ZpdGUtbGl2ZW1hcmsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUM5RCxPQUFPLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUVyQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQ2xDLE9BQU8sV0FBVyxNQUFNLG9CQUFvQixDQUFDLE9BQU8sSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFBO0FBQ2xFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQTtBQUN4RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQTtBQUMzRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQTtBQUVqRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBTW5FLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUE7QUFDbEQsTUFBTSxZQUFZLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEdBQUcsZUFBZSxHQUFHLEVBQUUsQ0FBQyxDQUFBO0FBRXBFOzs7Ozs7Ozs7Ozs7NkJBWTZCO0FBQzdCLE1BQU0sVUFBVSxHQUFHLGtCQUFrQixDQUFBO0FBQ3JDLE1BQU0sbUJBQW1CLEdBQUcsS0FBSyxVQUFVLEVBQUUsQ0FBQTtBQUU3Qzs7OzttRUFJbUU7QUFDbkUsTUFBTSxVQUFVLFFBQVEsQ0FBQyxJQUFxQjtJQUM1QyxNQUFNLGFBQWEsR0FB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QTtRQUMxRCxPQUFPLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUE7SUFDekMsQ0FBQztJQUNELE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQTtBQUNyQyxDQUFDO0FBRUQsU0FBUyxRQUFRLENBQUMsQ0FBVTtJQUMxQixPQUFPLENBQUMsS0FBSyxJQUFJLElBQUksT0FBTyxDQUFDLEtBQUssUUFBUSxDQUFBO0FBQzVDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcFN5bmMsIGV4aXN0c1N5bmMsIHJtU3luYywgc3RhdFN5bmMgfSBmcm9tIFwibm9kZTpmc1wiXG5pbXBvcnQgeyBqb2luLCBzZXAgfSBmcm9tIFwibm9kZTpwYXRoXCJcbmltcG9ydCB0eXBlIHsgQ29uZmlnRW52LCBQbHVnaW4sIFVzZXJDb25maWcgYXMgVml0ZVVzZXJDb25maWcgfSBmcm9tIFwidml0ZVwiXG5pbXBvcnQgeyBtZXJnZUNvbmZpZyB9IGZyb20gXCJ2aXRlXCJcbmltcG9ydCBwYWNrYWdlSnNvbiBmcm9tIFwiLi4vLi4vcGFja2FnZS5qc29uXCIgd2l0aCB7IHR5cGU6IFwianNvblwiIH1cbmltcG9ydCB7IGJ1aWxkVGFyZ2V0IH0gZnJvbSBcIi4uL2FjdGlvbnMvdGFyZ2V0L2J1aWxkLnRzXCJcbmltcG9ydCB7IHJlbmRlcklubGluZU1hcmtkb3duIH0gZnJvbSBcIi4uL2hlbHBlcnMvcmVuZGVyLWlubGluZS1tYXJrZG93bi50c1wiXG5pbXBvcnQgeyByZXNvbHZlVGFyZ2V0RXhwb3J0IH0gZnJvbSBcIi4uL2hlbHBlcnMvdGFyZ2V0LWV4cG9ydC50c1wiXG5pbXBvcnQgdHlwZSB7IENvbmZpZyB9IGZyb20gXCIuLi9tb2RlbHMvY29uZmlnLnRzXCJcbmltcG9ydCB7IFdlYnNpdGVDb25maWcgfSBmcm9tIFwiLi4vbW9kZWxzL2NvbmZpZy50c1wiXG5pbXBvcnQgeyBFU0NBUEFCTEVfRklMRVMsIEVTQ0FQQUJMRV9GT0xERVJTIH0gZnJvbSBcIi4uL3NldHRpbmdzLnRzXCJcblxuZXhwb3J0IGludGVyZmFjZSBMaXZlbWFya09wdGlvbnMge1xuICBjb25maWc6IENvbmZpZ1xufVxuXG5jb25zdCBTT1VSQ0VfRElSID0gam9pbihpbXBvcnQubWV0YS5kaXJuYW1lLCBcIi4uXCIpXG5jb25zdCBJU19JTlNUQUxMRUQgPSBTT1VSQ0VfRElSLmluY2x1ZGVzKGAke3NlcH1ub2RlX21vZHVsZXMke3NlcH1gKVxuXG4vKiogU2luZ2xlIHZpcnR1YWwgbW9kdWxlIGV4cG9zaW5nIGxpdmVtYXJrJ3MgcnVudGltZSB2YWx1ZXMgdG8gY29uc3VtZXJcbiAqICBvdmVycmlkZSBmaWxlcyB2aWEgbmFtZWQgZXhwb3J0czpcbiAqXG4gKiAgICAgIGltcG9ydCB7IGNvbmZpZyB9IGZyb20gXCJsaXZlbWFyazp2aXJ0dWFsXCJcbiAqXG4gKiAgQ3VycmVudGx5IGV4cG9ydHMgYGNvbmZpZ2AgKHZhbGlkYXRlZCBgV2Vic2l0ZUNvbmZpZ2ApIGFuZCBgYmFubmVySHRtbGBcbiAqICAoYGNvbmZpZy5iYW5uZXJgIHJlbmRlcmVkIGZyb20gaW5saW5lIE1hcmtkb3duIGF0IGJ1aWxkIHRpbWUpOyBmdXR1cmVcbiAqICBhZGRpdGlvbnMgKGUuZy4gYGFydGljbGVzYCwgYHNlY3Rpb25zYCkgbGFuZCBoZXJlIGFzIG5ldyBuYW1lZFxuICogIGV4cG9ydHMgd2l0aG91dCBjb25zdW1lcnMgY2hhbmdpbmcgdGhlaXIgaW1wb3J0IHN0YXRlbWVudHMuXG4gKlxuICogIFRoZSBgXFwwYCBwcmVmaXggb24gdGhlIHJlc29sdmVkIGlkIGlzIFZpdGUncyBjb252ZW50aW9uIHRvIHNpZ25hbFxuICogIFwidGhpcyBpcyBhIHZpcnR1YWwgbW9kdWxlIOKAlCBubyBvdGhlciBwbHVnaW4gc2hvdWxkIHRyeSB0byByZXNvbHZlXG4gKiAgb3IgbG9hZCBpdCBmcm9tIGRpc2tcIi4gKi9cbmNvbnN0IFZJUlRVQUxfSUQgPSBcImxpdmVtYXJrOnZpcnR1YWxcIlxuY29uc3QgVklSVFVBTF9SRVNPTFZFRF9JRCA9IGBcXDAke1ZJUlRVQUxfSUR9YFxuXG4vKiogT3ducyB0aGUgcHJvamVjdCdzIGAubGl2ZW1hcmsvLnRhcmdldC9gIG1vdW50OiBzeW50aGVzaXplcyBpdCB2aWFcbiAqICBgYnVpbGRUYXJnZXQoKWAsIHJldHVybnMgdGhlIFZpdGUgY29uZmlnIHRoYXQgYW5jaG9ycyB0aGVyZSwgYW5kXG4gKiAgY29waWVzIGAubGl2ZW1hcmsvYCBlZGl0cyAocGx1cyBsaXZlbWFyaydzIGBzb3VyY2UvYCBpbiBpdHMgb3duIGRldilcbiAqICBpbnRvIHRoZSB0YXJnZXQuIFZpdGUgd2F0Y2hlcyB0aGUgdGFyZ2V0IG5hdGl2ZWx5LCBzbyBpdHMgb3duIEhNUlxuICogIGRlY2lkZXMgYmV0d2VlbiBGYXN0IFJlZnJlc2gsIENTUyB1cGRhdGVzIGFuZCBhIHBhZ2UgcmVsb2FkLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxpdmVtYXJrKG9wdHM6IExpdmVtYXJrT3B0aW9ucyk6IFBsdWdpbiB7XG4gIGNvbnN0IG92ZXJyaWRlc1Jvb3QgPSBqb2luKG9wdHMuY29uZmlnLnJvb3QsIFwiLmxpdmVtYXJrXCIpXG4gIGNvbnN0IG91dERpciA9IGpvaW4ob3ZlcnJpZGVzUm9vdCwgXCJidWlsZFwiKVxuICBsZXQgdGFyZ2V0RGlyID0gXCJcIlxuICByZXR1cm4ge1xuICAgIG5hbWU6IFwibGl2ZW1hcmtcIixcbiAgICBlbmZvcmNlOiBcInByZVwiLFxuICAgIGFzeW5jIGNvbmZpZyhfLCBlbnYpIHtcbiAgICAgIHRhcmdldERpciA9IGJ1aWxkVGFyZ2V0KHtcbiAgICAgICAgY29uZmlnUGF0aDogb3B0cy5jb25maWcuY29uZmlnUGF0aCxcbiAgICAgICAgc291cmNlRGlyOiBTT1VSQ0VfRElSLFxuICAgICAgfSlcbiAgICAgIGNvbnN0IGJhc2U6IFZpdGVVc2VyQ29uZmlnID0ge1xuICAgICAgICByb290OiB0YXJnZXREaXIsXG4gICAgICAgIC8vIFRoZSBkZWZhdWx0IGA8cm9vdD4vbm9kZV9tb2R1bGVzLy52aXRlYCB3b3VsZCBsYW5kIGluc2lkZSB0aGVcbiAgICAgICAgLy8gZGVwZW5kZW5jeSBsaW5rLCBpLmUuIGluIGxpdmVtYXJrJ3Mgc2hhcmVkIGluc3RhbGwuXG4gICAgICAgIGNhY2hlRGlyOiBqb2luKHRhcmdldERpciwgXCIudml0ZVwiKSxcbiAgICAgICAgLy8gTW91bnQgZXZlcnl0aGluZyAoYXNzZXQgVVJMcywgbW9kdWxlcHJlbG9hZHMsIGRldiBzZXJ2ZXIpIHVuZGVyXG4gICAgICAgIC8vIGBjb25maWcuYmFzZWAgc28gdGhlIHNhbWUgYnVpbGQgd29ya3MgYXQgcm9vdCBvciBhdCBhIHN1Yi1wYXRoXG4gICAgICAgIC8vIChlLmcuIEdpdEh1YiBQYWdlcyBgaHR0cHM6Ly91c2VyLmdpdGh1Yi5pby9yZXBvL2ApLiBUaGUgcm91dGVyXG4gICAgICAgIC8vIGFuZCBhc3NldC1wYXRoIHJlc29sdmVyIG1pcnJvciB0aGlzIGF0IHJ1bnRpbWUuXG4gICAgICAgIGJhc2U6IG9wdHMuY29uZmlnLmJhc2UgPyBgJHtvcHRzLmNvbmZpZy5iYXNlfS9gIDogXCIvXCIsXG4gICAgICAgIC8vIG91dERpciBsaXZlcyBvdXRzaWRlIHRoZSB0YXJnZXQgcm9vdCwgc28gVml0ZSdzIHJlZnVzYWwgdG9cbiAgICAgICAgLy8gZW1wdHkgb3V0LW9mLXJvb3QgZGlyZWN0b3JpZXMgbmVlZHMgYGVtcHR5T3V0RGlyYC5cbiAgICAgICAgYnVpbGQ6IHsgb3V0RGlyLCBlbXB0eU91dERpcjogdHJ1ZSB9LFxuICAgICAgICByZXNvbHZlOiB7IGRlZHVwZTogW1wicmVhY3RcIiwgXCJyZWFjdC1kb21cIl0gfSxcbiAgICAgICAgLy8gRm9yIHRoZSBTU1IgYnVpbGQgb25seSwgaW5saW5lIGV2ZXJ5IG5vZGVfbW9kdWxlcyBkZXAgaW50b1xuICAgICAgICAvLyBzZXJ2ZXIuanMuIFRoZSBwcmVyZW5kZXIgc3RlcCAod2hpY2ggcnVucyBzZXJ2ZXIuanMgd2l0aFxuICAgICAgICAvLyBOb2RlKSB3YWxrcyBub2RlX21vZHVsZXMgZnJvbSB0aGUgYnVpbGQvIGRpciBhbmQgY2FuJ3QgcmVhY2hcbiAgICAgICAgLy8gcGFja2FnZXMgYnVyaWVkIGluIHBucG0ncyBgLnBucG0vKi9ub2RlX21vZHVsZXMvYCAoZS5nLlxuICAgICAgICAvLyBUYW5TdGFjay1pbnRlcm5hbCBhbGlhc2VzIGxpa2UgYGgzLXYyYCkuIFNlbGYtY29udGFpbmVkXG4gICAgICAgIC8vIGJ1bmRsZSBieXBhc3NlcyB0aGUgaXNzdWUuIERldiBTU1Iga2VlcHMgZXh0ZXJuYWxzIChmYXN0ZXIpLlxuICAgICAgICAuLi4oZW52LmNvbW1hbmQgPT09IFwiYnVpbGRcIiAmJiB7XG4gICAgICAgICAgZW52aXJvbm1lbnRzOiB7IHNzcjogeyByZXNvbHZlOiB7IG5vRXh0ZXJuYWw6IHRydWUgfSB9IH0sXG4gICAgICAgIH0pLFxuICAgICAgfVxuICAgICAgY29uc3Qgb3ZlcnJpZGUgPSBhd2FpdCByZXNvbHZlVml0ZU92ZXJyaWRlKG9wdHMuY29uZmlnLnZpdGUsIGVudilcbiAgICAgIHJldHVybiBvdmVycmlkZSA/IG1lcmdlQ29uZmlnKGJhc2UsIG92ZXJyaWRlKSA6IGJhc2VcbiAgICB9LFxuICAgIHJlc29sdmVJZChpZCkge1xuICAgICAgaWYgKGlkID09PSBWSVJUVUFMX0lEKSByZXR1cm4gVklSVFVBTF9SRVNPTFZFRF9JRFxuICAgICAgcmV0dXJuIHJlc29sdmVUYXJnZXRFeHBvcnQoeyBpZCwgdGFyZ2V0RGlyLCBleHBvcnRzOiBwYWNrYWdlSnNvbi5leHBvcnRzIH0pID8/IG51bGxcbiAgICB9LFxuICAgIGxvYWQoaWQpIHtcbiAgICAgIGlmIChpZCAhPT0gVklSVFVBTF9SRVNPTFZFRF9JRCkgcmV0dXJuIG51bGxcbiAgICAgIGNvbnN0IGNvbmZpZyA9IFdlYnNpdGVDb25maWcucGFyc2Uob3B0cy5jb25maWcpXG4gICAgICBjb25zdCBiYW5uZXJIdG1sID0gY29uZmlnLmJhbm5lclxuICAgICAgICA/IHJlbmRlcklubGluZU1hcmtkb3duKGNvbmZpZy5iYW5uZXIsIGNvbmZpZy5iYXNlKVxuICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgcmV0dXJuIFtcbiAgICAgICAgYGV4cG9ydCBjb25zdCBjb25maWcgPSAke0pTT04uc3RyaW5naWZ5KGNvbmZpZyl9YCxcbiAgICAgICAgYGV4cG9ydCBjb25zdCBiYW5uZXJIdG1sID0gJHtKU09OLnN0cmluZ2lmeShiYW5uZXJIdG1sKX1gLFxuICAgICAgXS5qb2luKFwiXFxuXCIpXG4gICAgfSxcbiAgICBjb25maWd1cmVTZXJ2ZXIoc2VydmVyKSB7XG4gICAgICAvLyBWaXRlIHdhdGNoZXMgb25seSBpdHMgcm9vdCAodGhlIHRhcmdldCk7IHRoZSBmaWxlcyB0aGUgdGFyZ2V0IGlzXG4gICAgICAvLyBjb3BpZWQgZnJvbSBqb2luIGl0cyB3YXRjaGVyIGhlcmUuIGAubGl2ZW1hcmsvYCBhbHdheXMgZXhpc3RzXG4gICAgICAvLyBiZWNhdXNlIHRoZSB0YXJnZXQgbGl2ZXMgaW5zaWRlIGl0LlxuICAgICAgc2VydmVyLndhdGNoZXIuYWRkKFtvcHRzLmNvbmZpZy5jb25maWdQYXRoLCBvdmVycmlkZXNSb290XSlcbiAgICAgIGlmICghSVNfSU5TVEFMTEVEKSBzZXJ2ZXIud2F0Y2hlci5hZGQoU09VUkNFX0RJUilcbiAgICAgIHNlcnZlci53YXRjaGVyLm9uKFwiY2hhbmdlXCIsIGZpbGUgPT4gb25DaGFuZ2UoZmlsZSwgXCJjaGFuZ2VcIikpXG4gICAgICBzZXJ2ZXIud2F0Y2hlci5vbihcImFkZFwiLCBmaWxlID0+IG9uQ2hhbmdlKGZpbGUsIFwiYWRkXCIpKVxuICAgICAgc2VydmVyLndhdGNoZXIub24oXCJ1bmxpbmtcIiwgZmlsZSA9PiBvbkNoYW5nZShmaWxlLCBcInVubGlua1wiKSlcbiAgICAgIHNlcnZlci53YXRjaGVyLm9uKFwidW5saW5rRGlyXCIsIGZpbGUgPT4gb25DaGFuZ2UoZmlsZSwgXCJ1bmxpbmtcIikpXG5cbiAgICAgIGZ1bmN0aW9uIG9uQ2hhbmdlKGZpbGU6IHN0cmluZywga2luZDogXCJjaGFuZ2VcIiB8IFwiYWRkXCIgfCBcInVubGlua1wiKSB7XG4gICAgICAgIGlmIChmaWxlID09PSBvcHRzLmNvbmZpZy5jb25maWdQYXRoKSB7XG4gICAgICAgICAgc2VydmVyLnJlc3RhcnQoKVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIGlmIChpc1dpdGhpbihmaWxlLCB0YXJnZXREaXIpIHx8IGlzV2l0aGluKGZpbGUsIG91dERpcikpIHJldHVyblxuICAgICAgICBjb25zdCBvdmVybGF5SGl0ID0gbWF0Y2hQYXRoKGZpbGUsIG92ZXJyaWRlc1Jvb3QpXG4gICAgICAgIGlmIChvdmVybGF5SGl0KSB7XG4gICAgICAgICAgc3luY092ZXJsYXkob3ZlcmxheUhpdCwga2luZCwgdGFyZ2V0RGlyLCBvdmVycmlkZXNSb290KVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNvdXJjZUhpdCA9IG1hdGNoUGF0aChmaWxlLCBTT1VSQ0VfRElSKVxuICAgICAgICBpZiAoc291cmNlSGl0ICYmICFzb3VyY2VIaXQucmVsLmluY2x1ZGVzKFwicm91dGVUcmVlLmdlbi50c1wiKSkge1xuICAgICAgICAgIHN5bmNTb3VyY2Uoc291cmNlSGl0LCBraW5kLCB0YXJnZXREaXIsIG92ZXJyaWRlc1Jvb3QpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICB9XG59XG5cbmludGVyZmFjZSBIaXQge1xuICByZWw6IHN0cmluZ1xuICBjYXRlZ29yeTogXCJmb2xkZXJcIiB8IFwiZmlsZVwiIHwgbnVsbFxufVxuXG5mdW5jdGlvbiBtYXRjaFBhdGgoZmlsZTogc3RyaW5nLCByb290OiBzdHJpbmcpOiBIaXQgfCBudWxsIHtcbiAgaWYgKCFpc1dpdGhpbihmaWxlLCByb290KSB8fCBmaWxlID09PSByb290KSByZXR1cm4gbnVsbFxuICBjb25zdCByZWwgPSBmaWxlLnNsaWNlKHJvb3QubGVuZ3RoICsgc2VwLmxlbmd0aClcbiAgcmV0dXJuIHsgcmVsLCBjYXRlZ29yeTogY2xhc3NpZnkocmVsKSB9XG59XG5cbmZ1bmN0aW9uIGlzV2l0aGluKGZpbGU6IHN0cmluZywgZGlyOiBzdHJpbmcpIHtcbiAgcmV0dXJuIGZpbGUgPT09IGRpciB8fCBmaWxlLnN0YXJ0c1dpdGgoYCR7ZGlyfSR7c2VwfWApXG59XG5cbmZ1bmN0aW9uIGNsYXNzaWZ5KHJlbDogc3RyaW5nKTogXCJmb2xkZXJcIiB8IFwiZmlsZVwiIHwgbnVsbCB7XG4gIGNvbnN0IFtoZWFkXSA9IHJlbC5zcGxpdChzZXApXG4gIGlmIChoZWFkICYmIEVTQ0FQQUJMRV9GT0xERVJTLmluY2x1ZGVzKGhlYWQpKSByZXR1cm4gXCJmb2xkZXJcIlxuICBpZiAoRVNDQVBBQkxFX0ZJTEVTLmluY2x1ZGVzKHJlbCkpIHJldHVybiBcImZpbGVcIlxuICAvLyBOb24tZXNjYXBhYmxlIHNvdXJjZSBmaWxlcyBzdGlsbCBuZWVkIHRvIGZsb3cgaW50byB0YXJnZXQgZHVyaW5nXG4gIC8vIGxpdmVtYXJrJ3Mgb3duIGRldiDigJQgdGhlIHVzZXIgaXMgZWRpdGluZyB0aGUgY2Fub25pY2FsIHNvdXJjZS5cbiAgcmV0dXJuIG51bGxcbn1cblxuZnVuY3Rpb24gc3luY092ZXJsYXkoXG4gIGhpdDogSGl0LFxuICBraW5kOiBcImNoYW5nZVwiIHwgXCJhZGRcIiB8IFwidW5saW5rXCIsXG4gIHRhcmdldERpcjogc3RyaW5nLFxuICBvdmVycmlkZXNSb290OiBzdHJpbmcsXG4pIHtcbiAgaWYgKCFoaXQuY2F0ZWdvcnkpIHJldHVyblxuICBjb25zdCBkZXN0ID0gam9pbih0YXJnZXREaXIsIGhpdC5yZWwpXG4gIGNvbnN0IHNvdXJjZSA9IGpvaW4oU09VUkNFX0RJUiwgaGl0LnJlbClcbiAgaWYgKGtpbmQgPT09IFwidW5saW5rXCIpIHtcbiAgICAvLyBDb3B5IGEgZmlsZSdzIGRlZmF1bHQgb3ZlciB0aGUgZXNjYXBlIGluIG9uZSB3cml0ZTogYW4gdW5saW5rIHRoZW5cbiAgICAvLyBhbiBhZGQgcmVhY2hlcyBWaXRlIGFzIHR3byBldmVudHMgYW5kIGNvc3RzIGEgcGFnZSByZWxvYWQuXG4gICAgaWYgKCFleGlzdHNTeW5jKHNvdXJjZSkgfHwgc3RhdFN5bmMoc291cmNlKS5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICBybVN5bmMoZGVzdCwgeyBmb3JjZTogdHJ1ZSwgcmVjdXJzaXZlOiB0cnVlIH0pXG4gICAgfVxuICAgIGlmIChleGlzdHNTeW5jKHNvdXJjZSkpIGNwU3luYyhzb3VyY2UsIGRlc3QsIHsgcmVjdXJzaXZlOiB0cnVlLCBmb3JjZTogdHJ1ZSB9KVxuICAgIHJldHVyblxuICB9XG4gIGNvbnN0IG92ZXJsYXkgPSBqb2luKG92ZXJyaWRlc1Jvb3QsIGhpdC5yZWwpXG4gIGlmIChleGlzdHNTeW5jKG92ZXJsYXkpKSBjcFN5bmMob3ZlcmxheSwgZGVzdCwgeyByZWN1cnNpdmU6IHRydWUsIGZvcmNlOiB0cnVlIH0pXG59XG5cbmZ1bmN0aW9uIHN5bmNTb3VyY2UoXG4gIGhpdDogSGl0LFxuICBraW5kOiBcImNoYW5nZVwiIHwgXCJhZGRcIiB8IFwidW5saW5rXCIsXG4gIHRhcmdldERpcjogc3RyaW5nLFxuICBvdmVycmlkZXNSb290OiBzdHJpbmcsXG4pIHtcbiAgLy8gSWYgdGhlIGNvbnN1bWVyIGhhcyBhbiBvdmVybGF5IGZvciB0aGlzIGZpbGUgKGFuZCBpdCdzIGVzY2FwYWJsZSksXG4gIC8vIHRoZSBvdmVybGF5IHdpbnMg4oCUIGlnbm9yZSBzb3VyY2UgY2hhbmdlcy5cbiAgaWYgKGhpdC5jYXRlZ29yeSAmJiBleGlzdHNTeW5jKGpvaW4ob3ZlcnJpZGVzUm9vdCwgaGl0LnJlbCkpKSByZXR1cm5cbiAgY29uc3QgZGVzdCA9IGpvaW4odGFyZ2V0RGlyLCBoaXQucmVsKVxuICBjb25zdCBzb3VyY2UgPSBqb2luKFNPVVJDRV9ESVIsIGhpdC5yZWwpXG4gIGlmIChraW5kID09PSBcInVubGlua1wiKSB7XG4gICAgcm1TeW5jKGRlc3QsIHsgZm9yY2U6IHRydWUsIHJlY3Vyc2l2ZTogdHJ1ZSB9KVxuICAgIHJldHVyblxuICB9XG4gIGlmIChleGlzdHNTeW5jKHNvdXJjZSkpIGNwU3luYyhzb3VyY2UsIGRlc3QsIHsgcmVjdXJzaXZlOiB0cnVlLCBmb3JjZTogdHJ1ZSB9KVxufVxuXG4vKiogUmVzb2x2ZSBsaXZlbWFyay5jb25maWcudHMncyBgdml0ZWAgZmllbGQg4oCUIGVpdGhlciBhIGNvbmZpZyBvYmplY3RcbiAqICBvciBhIGZ1bmN0aW9uIGAoZW52KSA9PiBjb25maWdgIChtYXRjaGluZyBWaXRlJ3Mgb3duIGBkZWZpbmVDb25maWdgKS5cbiAqICBTY2hlbWEgc3RvcmVzIGl0IGFzIGB1bmtub3duYDsgdHlwaW5nIGZvciB0aGUgY29uc3VtZXIncyBlZGl0b3JcbiAqICBsaXZlcyBvbiB7QGxpbmsgVml0ZU92ZXJyaWRlfS4gKi9cbmFzeW5jIGZ1bmN0aW9uIHJlc29sdmVWaXRlT3ZlcnJpZGUoXG4gIHZpdGU6IHVua25vd24sXG4gIGVudjogQ29uZmlnRW52LFxuKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IG51bGw+IHtcbiAgaWYgKCF2aXRlKSByZXR1cm4gbnVsbFxuICBpZiAodHlwZW9mIHZpdGUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFJlZmxlY3QuYXBwbHkodml0ZSwgdW5kZWZpbmVkLCBbZW52XSlcbiAgICByZXR1cm4gaXNPYmplY3QocmVzdWx0KSA/IHJlc3VsdCA6IG51bGxcbiAgfVxuICByZXR1cm4gaXNPYmplY3Qodml0ZSkgPyB2aXRlIDogbnVsbFxufVxuXG5mdW5jdGlvbiBpc09iamVjdCh2OiB1bmtub3duKTogdiBpcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gIHJldHVybiB2ICE9PSBudWxsICYmIHR5cGVvZiB2ID09PSBcIm9iamVjdFwiXG59XG4iXX0=
196
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidml0ZS1saXZlbWFyay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9wbHVnaW5zL3ZpdGUtbGl2ZW1hcmsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUM5RCxPQUFPLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUVyQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQ2xDLE9BQU8sV0FBVyxNQUFNLG9CQUFvQixDQUFDLE9BQU8sSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFBO0FBQ2xFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQTtBQUN4RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQTtBQUMzRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQTtBQUN6RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQTtBQUVqRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBTW5FLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUE7QUFDbEQsTUFBTSxZQUFZLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEdBQUcsZUFBZSxHQUFHLEVBQUUsQ0FBQyxDQUFBO0FBRXBFOzs7Ozs7Ozs7Ozs7NkJBWTZCO0FBQzdCLE1BQU0sVUFBVSxHQUFHLGtCQUFrQixDQUFBO0FBQ3JDLE1BQU0sbUJBQW1CLEdBQUcsS0FBSyxVQUFVLEVBQUUsQ0FBQTtBQUU3Qzs7OzttRUFJbUU7QUFDbkUs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cUNBR3FDO0FBQ3JDLEtBQUssVUFBVSxtQkFBbUIsQ0FDaEMsSUFBYSxFQUNiLEdBQWM7SUFFZCxJQUFJLENBQUMsSUFBSTtRQUFFLE9BQU8sSUFBSSxDQUFBO0lBQ3RCLElBQUksT0FBTyxJQUFJLEtBQUssVUFBVSxFQUFFLENBQUM7UUFDL0IsTUFBTSxNQUFNLEdBQUcsTUFBTSxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO1FBQzFELE9BQU8sUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQTtJQUN6QyxDQUFDO0lBQ0QsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBO0FBQ3JDLENBQUM7QUFFRCxTQUFTLFFBQVEsQ0FBQyxDQUFVO0lBQzFCLE9BQU8sQ0FBQyxLQUFLLElBQUksSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLENBQUE7QUFDNUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNwU3luYywgZXhpc3RzU3luYywgcm1TeW5jLCBzdGF0U3luYyB9IGZyb20gXCJub2RlOmZzXCJcbmltcG9ydCB7IGpvaW4sIHNlcCB9IGZyb20gXCJub2RlOnBhdGhcIlxuaW1wb3J0IHR5cGUgeyBDb25maWdFbnYsIFBsdWdpbiwgVXNlckNvbmZpZyBhcyBWaXRlVXNlckNvbmZpZyB9IGZyb20gXCJ2aXRlXCJcbmltcG9ydCB7IG1lcmdlQ29uZmlnIH0gZnJvbSBcInZpdGVcIlxuaW1wb3J0IHBhY2thZ2VKc29uIGZyb20gXCIuLi8uLi9wYWNrYWdlLmpzb25cIiB3aXRoIHsgdHlwZTogXCJqc29uXCIgfVxuaW1wb3J0IHsgYnVpbGRUYXJnZXQgfSBmcm9tIFwiLi4vYWN0aW9ucy90YXJnZXQvYnVpbGQudHNcIlxuaW1wb3J0IHsgcmVuZGVySW5saW5lTWFya2Rvd24gfSBmcm9tIFwiLi4vaGVscGVycy9yZW5kZXItaW5saW5lLW1hcmtkb3duLnRzXCJcbmltcG9ydCB7IGV4Y2x1ZGVEZXBlbmRlbmN5U291cmNlcyB9IGZyb20gXCIuLi9oZWxwZXJzL3RhaWx3aW5kLXNvdXJjZXMudHNcIlxuaW1wb3J0IHsgcmVzb2x2ZVRhcmdldEV4cG9ydCB9IGZyb20gXCIuLi9oZWxwZXJzL3RhcmdldC1leHBvcnQudHNcIlxuaW1wb3J0IHR5cGUgeyBDb25maWcgfSBmcm9tIFwiLi4vbW9kZWxzL2NvbmZpZy50c1wiXG5pbXBvcnQgeyBXZWJzaXRlQ29uZmlnIH0gZnJvbSBcIi4uL21vZGVscy9jb25maWcudHNcIlxuaW1wb3J0IHsgRVNDQVBBQkxFX0ZJTEVTLCBFU0NBUEFCTEVfRk9MREVSUyB9IGZyb20gXCIuLi9zZXR0aW5ncy50c1wiXG5cbmV4cG9ydCBpbnRlcmZhY2UgTGl2ZW1hcmtPcHRpb25zIHtcbiAgY29uZmlnOiBDb25maWdcbn1cblxuY29uc3QgU09VUkNFX0RJUiA9IGpvaW4oaW1wb3J0Lm1ldGEuZGlybmFtZSwgXCIuLlwiKVxuY29uc3QgSVNfSU5TVEFMTEVEID0gU09VUkNFX0RJUi5pbmNsdWRlcyhgJHtzZXB9bm9kZV9tb2R1bGVzJHtzZXB9YClcblxuLyoqIFNpbmdsZSB2aXJ0dWFsIG1vZHVsZSBleHBvc2luZyBsaXZlbWFyaydzIHJ1bnRpbWUgdmFsdWVzIHRvIGNvbnN1bWVyXG4gKiAgb3ZlcnJpZGUgZmlsZXMgdmlhIG5hbWVkIGV4cG9ydHM6XG4gKlxuICogICAgICBpbXBvcnQgeyBjb25maWcgfSBmcm9tIFwibGl2ZW1hcms6dmlydHVhbFwiXG4gKlxuICogIEN1cnJlbnRseSBleHBvcnRzIGBjb25maWdgICh2YWxpZGF0ZWQgYFdlYnNpdGVDb25maWdgKSBhbmQgYGJhbm5lckh0bWxgXG4gKiAgKGBjb25maWcuYmFubmVyYCByZW5kZXJlZCBmcm9tIGlubGluZSBNYXJrZG93biBhdCBidWlsZCB0aW1lKTsgZnV0dXJlXG4gKiAgYWRkaXRpb25zIChlLmcuIGBhcnRpY2xlc2AsIGBzZWN0aW9uc2ApIGxhbmQgaGVyZSBhcyBuZXcgbmFtZWRcbiAqICBleHBvcnRzIHdpdGhvdXQgY29uc3VtZXJzIGNoYW5naW5nIHRoZWlyIGltcG9ydCBzdGF0ZW1lbnRzLlxuICpcbiAqICBUaGUgYFxcMGAgcHJlZml4IG9uIHRoZSByZXNvbHZlZCBpZCBpcyBWaXRlJ3MgY29udmVudGlvbiB0byBzaWduYWxcbiAqICBcInRoaXMgaXMgYSB2aXJ0dWFsIG1vZHVsZSDigJQgbm8gb3RoZXIgcGx1Z2luIHNob3VsZCB0cnkgdG8gcmVzb2x2ZVxuICogIG9yIGxvYWQgaXQgZnJvbSBkaXNrXCIuICovXG5jb25zdCBWSVJUVUFMX0lEID0gXCJsaXZlbWFyazp2aXJ0dWFsXCJcbmNvbnN0IFZJUlRVQUxfUkVTT0xWRURfSUQgPSBgXFwwJHtWSVJUVUFMX0lEfWBcblxuLyoqIE93bnMgdGhlIHByb2plY3QncyBgLmxpdmVtYXJrLy50YXJnZXQvYCBtb3VudDogc3ludGhlc2l6ZXMgaXQgdmlhXG4gKiAgYGJ1aWxkVGFyZ2V0KClgLCByZXR1cm5zIHRoZSBWaXRlIGNvbmZpZyB0aGF0IGFuY2hvcnMgdGhlcmUsIGFuZFxuICogIGNvcGllcyBgLmxpdmVtYXJrL2AgZWRpdHMgKHBsdXMgbGl2ZW1hcmsncyBgc291cmNlL2AgaW4gaXRzIG93biBkZXYpXG4gKiAgaW50byB0aGUgdGFyZ2V0LiBWaXRlIHdhdGNoZXMgdGhlIHRhcmdldCBuYXRpdmVseSwgc28gaXRzIG93biBITVJcbiAqICBkZWNpZGVzIGJldHdlZW4gRmFzdCBSZWZyZXNoLCBDU1MgdXBkYXRlcyBhbmQgYSBwYWdlIHJlbG9hZC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsaXZlbWFyayhvcHRzOiBMaXZlbWFya09wdGlvbnMpOiBQbHVnaW4ge1xuICBjb25zdCBvdmVycmlkZXNSb290ID0gam9pbihvcHRzLmNvbmZpZy5yb290LCBcIi5saXZlbWFya1wiKVxuICBjb25zdCBvdXREaXIgPSBqb2luKG92ZXJyaWRlc1Jvb3QsIFwiYnVpbGRcIilcbiAgbGV0IHRhcmdldERpciA9IFwiXCJcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiBcImxpdmVtYXJrXCIsXG4gICAgZW5mb3JjZTogXCJwcmVcIixcbiAgICBhc3luYyBjb25maWcoXywgZW52KSB7XG4gICAgICB0YXJnZXREaXIgPSBidWlsZFRhcmdldCh7XG4gICAgICAgIGNvbmZpZ1BhdGg6IG9wdHMuY29uZmlnLmNvbmZpZ1BhdGgsXG4gICAgICAgIHNvdXJjZURpcjogU09VUkNFX0RJUixcbiAgICAgIH0pXG4gICAgICBjb25zdCBiYXNlOiBWaXRlVXNlckNvbmZpZyA9IHtcbiAgICAgICAgcm9vdDogdGFyZ2V0RGlyLFxuICAgICAgICAvLyBUaGUgZGVmYXVsdCBgPHJvb3Q+L25vZGVfbW9kdWxlcy8udml0ZWAgd291bGQgbGFuZCBpbnNpZGUgdGhlXG4gICAgICAgIC8vIGRlcGVuZGVuY3kgbGluaywgaS5lLiBpbiBsaXZlbWFyaydzIHNoYXJlZCBpbnN0YWxsLlxuICAgICAgICBjYWNoZURpcjogam9pbih0YXJnZXREaXIsIFwiLnZpdGVcIiksXG4gICAgICAgIC8vIE1vdW50IGV2ZXJ5dGhpbmcgKGFzc2V0IFVSTHMsIG1vZHVsZXByZWxvYWRzLCBkZXYgc2VydmVyKSB1bmRlclxuICAgICAgICAvLyBgY29uZmlnLmJhc2VgIHNvIHRoZSBzYW1lIGJ1aWxkIHdvcmtzIGF0IHJvb3Qgb3IgYXQgYSBzdWItcGF0aFxuICAgICAgICAvLyAoZS5nLiBHaXRIdWIgUGFnZXMgYGh0dHBzOi8vdXNlci5naXRodWIuaW8vcmVwby9gKS4gVGhlIHJvdXRlclxuICAgICAgICAvLyBhbmQgYXNzZXQtcGF0aCByZXNvbHZlciBtaXJyb3IgdGhpcyBhdCBydW50aW1lLlxuICAgICAgICBiYXNlOiBvcHRzLmNvbmZpZy5iYXNlID8gYCR7b3B0cy5jb25maWcuYmFzZX0vYCA6IFwiL1wiLFxuICAgICAgICAvLyBvdXREaXIgbGl2ZXMgb3V0c2lkZSB0aGUgdGFyZ2V0IHJvb3QsIHNvIFZpdGUncyByZWZ1c2FsIHRvXG4gICAgICAgIC8vIGVtcHR5IG91dC1vZi1yb290IGRpcmVjdG9yaWVzIG5lZWRzIGBlbXB0eU91dERpcmAuXG4gICAgICAgIGJ1aWxkOiB7IG91dERpciwgZW1wdHlPdXREaXI6IHRydWUgfSxcbiAgICAgICAgcmVzb2x2ZTogeyBkZWR1cGU6IFtcInJlYWN0XCIsIFwicmVhY3QtZG9tXCJdIH0sXG4gICAgICAgIC8vIEZvciB0aGUgU1NSIGJ1aWxkIG9ubHksIGlubGluZSBldmVyeSBub2RlX21vZHVsZXMgZGVwIGludG9cbiAgICAgICAgLy8gc2VydmVyLmpzLiBUaGUgcHJlcmVuZGVyIHN0ZXAgKHdoaWNoIHJ1bnMgc2VydmVyLmpzIHdpdGhcbiAgICAgICAgLy8gTm9kZSkgd2Fsa3Mgbm9kZV9tb2R1bGVzIGZyb20gdGhlIGJ1aWxkLyBkaXIgYW5kIGNhbid0IHJlYWNoXG4gICAgICAgIC8vIHBhY2thZ2VzIGJ1cmllZCBpbiBwbnBtJ3MgYC5wbnBtLyovbm9kZV9tb2R1bGVzL2AgKGUuZy5cbiAgICAgICAgLy8gVGFuU3RhY2staW50ZXJuYWwgYWxpYXNlcyBsaWtlIGBoMy12MmApLiBTZWxmLWNvbnRhaW5lZFxuICAgICAgICAvLyBidW5kbGUgYnlwYXNzZXMgdGhlIGlzc3VlLiBEZXYgU1NSIGtlZXBzIGV4dGVybmFscyAoZmFzdGVyKS5cbiAgICAgICAgLi4uKGVudi5jb21tYW5kID09PSBcImJ1aWxkXCIgJiYge1xuICAgICAgICAgIGVudmlyb25tZW50czogeyBzc3I6IHsgcmVzb2x2ZTogeyBub0V4dGVybmFsOiB0cnVlIH0gfSB9LFxuICAgICAgICB9KSxcbiAgICAgIH1cbiAgICAgIGNvbnN0IG92ZXJyaWRlID0gYXdhaXQgcmVzb2x2ZVZpdGVPdmVycmlkZShvcHRzLmNvbmZpZy52aXRlLCBlbnYpXG4gICAgICByZXR1cm4gb3ZlcnJpZGUgPyBtZXJnZUNvbmZpZyhiYXNlLCBvdmVycmlkZSkgOiBiYXNlXG4gICAgfSxcbiAgICAvLyBIZXJlLCBub3QgaW4gYHN0eWxlcy9nZW5lcmFsLmNzc2AsIHNvIGFuIGVzY2FwZWQgc3R5bGVzaGVldCBrZWVwcyBpdC4gV29ya3Mgb25seVxuICAgIC8vIHdoaWxlIHRoaXMgcGx1Z2luIHByZWNlZGVzIGB0YWlsd2luZCgpYDogYm90aCBhcmUgYHByZWAsIHNvIGFycmF5IG9yZGVyIGRlY2lkZXMuXG4gICAgdHJhbnNmb3JtOiB7XG4gICAgICBmaWx0ZXI6IHsgaWQ6IC9cXC5jc3MoXFw/fCQpLyB9LFxuICAgICAgaGFuZGxlcihjc3MpIHtcbiAgICAgICAgcmV0dXJuIGV4Y2x1ZGVEZXBlbmRlbmN5U291cmNlcyh7IGNzcywgdGFyZ2V0RGlyIH0pXG4gICAgICB9LFxuICAgIH0sXG4gICAgcmVzb2x2ZUlkKGlkKSB7XG4gICAgICBpZiAoaWQgPT09IFZJUlRVQUxfSUQpIHJldHVybiBWSVJUVUFMX1JFU09MVkVEX0lEXG4gICAgICByZXR1cm4gcmVzb2x2ZVRhcmdldEV4cG9ydCh7IGlkLCB0YXJnZXREaXIsIGV4cG9ydHM6IHBhY2thZ2VKc29uLmV4cG9ydHMgfSkgPz8gbnVsbFxuICAgIH0sXG4gICAgbG9hZChpZCkge1xuICAgICAgaWYgKGlkICE9PSBWSVJUVUFMX1JFU09MVkVEX0lEKSByZXR1cm4gbnVsbFxuICAgICAgY29uc3QgY29uZmlnID0gV2Vic2l0ZUNvbmZpZy5wYXJzZShvcHRzLmNvbmZpZylcbiAgICAgIGNvbnN0IGJhbm5lckh0bWwgPSBjb25maWcuYmFubmVyXG4gICAgICAgID8gcmVuZGVySW5saW5lTWFya2Rvd24oY29uZmlnLmJhbm5lciwgY29uZmlnLmJhc2UpXG4gICAgICAgIDogdW5kZWZpbmVkXG4gICAgICByZXR1cm4gW1xuICAgICAgICBgZXhwb3J0IGNvbnN0IGNvbmZpZyA9ICR7SlNPTi5zdHJpbmdpZnkoY29uZmlnKX1gLFxuICAgICAgICBgZXhwb3J0IGNvbnN0IGJhbm5lckh0bWwgPSAke0pTT04uc3RyaW5naWZ5KGJhbm5lckh0bWwpfWAsXG4gICAgICBdLmpvaW4oXCJcXG5cIilcbiAgICB9LFxuICAgIGNvbmZpZ3VyZVNlcnZlcihzZXJ2ZXIpIHtcbiAgICAgIC8vIFZpdGUgd2F0Y2hlcyBvbmx5IGl0cyByb290ICh0aGUgdGFyZ2V0KTsgdGhlIGZpbGVzIHRoZSB0YXJnZXQgaXNcbiAgICAgIC8vIGNvcGllZCBmcm9tIGpvaW4gaXRzIHdhdGNoZXIgaGVyZS4gYC5saXZlbWFyay9gIGFsd2F5cyBleGlzdHNcbiAgICAgIC8vIGJlY2F1c2UgdGhlIHRhcmdldCBsaXZlcyBpbnNpZGUgaXQuXG4gICAgICBzZXJ2ZXIud2F0Y2hlci5hZGQoW29wdHMuY29uZmlnLmNvbmZpZ1BhdGgsIG92ZXJyaWRlc1Jvb3RdKVxuICAgICAgaWYgKCFJU19JTlNUQUxMRUQpIHNlcnZlci53YXRjaGVyLmFkZChTT1VSQ0VfRElSKVxuICAgICAgc2VydmVyLndhdGNoZXIub24oXCJjaGFuZ2VcIiwgZmlsZSA9PiBvbkNoYW5nZShmaWxlLCBcImNoYW5nZVwiKSlcbiAgICAgIHNlcnZlci53YXRjaGVyLm9uKFwiYWRkXCIsIGZpbGUgPT4gb25DaGFuZ2UoZmlsZSwgXCJhZGRcIikpXG4gICAgICBzZXJ2ZXIud2F0Y2hlci5vbihcInVubGlua1wiLCBmaWxlID0+IG9uQ2hhbmdlKGZpbGUsIFwidW5saW5rXCIpKVxuICAgICAgc2VydmVyLndhdGNoZXIub24oXCJ1bmxpbmtEaXJcIiwgZmlsZSA9PiBvbkNoYW5nZShmaWxlLCBcInVubGlua1wiKSlcblxuICAgICAgZnVuY3Rpb24gb25DaGFuZ2UoZmlsZTogc3RyaW5nLCBraW5kOiBcImNoYW5nZVwiIHwgXCJhZGRcIiB8IFwidW5saW5rXCIpIHtcbiAgICAgICAgaWYgKGZpbGUgPT09IG9wdHMuY29uZmlnLmNvbmZpZ1BhdGgpIHtcbiAgICAgICAgICBzZXJ2ZXIucmVzdGFydCgpXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzV2l0aGluKGZpbGUsIHRhcmdldERpcikgfHwgaXNXaXRoaW4oZmlsZSwgb3V0RGlyKSkgcmV0dXJuXG4gICAgICAgIGNvbnN0IG92ZXJsYXlIaXQgPSBtYXRjaFBhdGgoZmlsZSwgb3ZlcnJpZGVzUm9vdClcbiAgICAgICAgaWYgKG92ZXJsYXlIaXQpIHtcbiAgICAgICAgICBzeW5jT3ZlcmxheShvdmVybGF5SGl0LCBraW5kLCB0YXJnZXREaXIsIG92ZXJyaWRlc1Jvb3QpXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc291cmNlSGl0ID0gbWF0Y2hQYXRoKGZpbGUsIFNPVVJDRV9ESVIpXG4gICAgICAgIGlmIChzb3VyY2VIaXQgJiYgIXNvdXJjZUhpdC5yZWwuaW5jbHVkZXMoXCJyb3V0ZVRyZWUuZ2VuLnRzXCIpKSB7XG4gICAgICAgICAgc3luY1NvdXJjZShzb3VyY2VIaXQsIGtpbmQsIHRhcmdldERpciwgb3ZlcnJpZGVzUm9vdClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gIH1cbn1cblxuaW50ZXJmYWNlIEhpdCB7XG4gIHJlbDogc3RyaW5nXG4gIGNhdGVnb3J5OiBcImZvbGRlclwiIHwgXCJmaWxlXCIgfCBudWxsXG59XG5cbmZ1bmN0aW9uIG1hdGNoUGF0aChmaWxlOiBzdHJpbmcsIHJvb3Q6IHN0cmluZyk6IEhpdCB8IG51bGwge1xuICBpZiAoIWlzV2l0aGluKGZpbGUsIHJvb3QpIHx8IGZpbGUgPT09IHJvb3QpIHJldHVybiBudWxsXG4gIGNvbnN0IHJlbCA9IGZpbGUuc2xpY2Uocm9vdC5sZW5ndGggKyBzZXAubGVuZ3RoKVxuICByZXR1cm4geyByZWwsIGNhdGVnb3J5OiBjbGFzc2lmeShyZWwpIH1cbn1cblxuZnVuY3Rpb24gaXNXaXRoaW4oZmlsZTogc3RyaW5nLCBkaXI6IHN0cmluZykge1xuICByZXR1cm4gZmlsZSA9PT0gZGlyIHx8IGZpbGUuc3RhcnRzV2l0aChgJHtkaXJ9JHtzZXB9YClcbn1cblxuZnVuY3Rpb24gY2xhc3NpZnkocmVsOiBzdHJpbmcpOiBcImZvbGRlclwiIHwgXCJmaWxlXCIgfCBudWxsIHtcbiAgY29uc3QgW2hlYWRdID0gcmVsLnNwbGl0KHNlcClcbiAgaWYgKGhlYWQgJiYgRVNDQVBBQkxFX0ZPTERFUlMuaW5jbHVkZXMoaGVhZCkpIHJldHVybiBcImZvbGRlclwiXG4gIGlmIChFU0NBUEFCTEVfRklMRVMuaW5jbHVkZXMocmVsKSkgcmV0dXJuIFwiZmlsZVwiXG4gIC8vIE5vbi1lc2NhcGFibGUgc291cmNlIGZpbGVzIHN0aWxsIG5lZWQgdG8gZmxvdyBpbnRvIHRhcmdldCBkdXJpbmdcbiAgLy8gbGl2ZW1hcmsncyBvd24gZGV2IOKAlCB0aGUgdXNlciBpcyBlZGl0aW5nIHRoZSBjYW5vbmljYWwgc291cmNlLlxuICByZXR1cm4gbnVsbFxufVxuXG5mdW5jdGlvbiBzeW5jT3ZlcmxheShcbiAgaGl0OiBIaXQsXG4gIGtpbmQ6IFwiY2hhbmdlXCIgfCBcImFkZFwiIHwgXCJ1bmxpbmtcIixcbiAgdGFyZ2V0RGlyOiBzdHJpbmcsXG4gIG92ZXJyaWRlc1Jvb3Q6IHN0cmluZyxcbikge1xuICBpZiAoIWhpdC5jYXRlZ29yeSkgcmV0dXJuXG4gIGNvbnN0IGRlc3QgPSBqb2luKHRhcmdldERpciwgaGl0LnJlbClcbiAgY29uc3Qgc291cmNlID0gam9pbihTT1VSQ0VfRElSLCBoaXQucmVsKVxuICBpZiAoa2luZCA9PT0gXCJ1bmxpbmtcIikge1xuICAgIC8vIENvcHkgYSBmaWxlJ3MgZGVmYXVsdCBvdmVyIHRoZSBlc2NhcGUgaW4gb25lIHdyaXRlOiBhbiB1bmxpbmsgdGhlblxuICAgIC8vIGFuIGFkZCByZWFjaGVzIFZpdGUgYXMgdHdvIGV2ZW50cyBhbmQgY29zdHMgYSBwYWdlIHJlbG9hZC5cbiAgICBpZiAoIWV4aXN0c1N5bmMoc291cmNlKSB8fCBzdGF0U3luYyhzb3VyY2UpLmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgIHJtU3luYyhkZXN0LCB7IGZvcmNlOiB0cnVlLCByZWN1cnNpdmU6IHRydWUgfSlcbiAgICB9XG4gICAgaWYgKGV4aXN0c1N5bmMoc291cmNlKSkgY3BTeW5jKHNvdXJjZSwgZGVzdCwgeyByZWN1cnNpdmU6IHRydWUsIGZvcmNlOiB0cnVlIH0pXG4gICAgcmV0dXJuXG4gIH1cbiAgY29uc3Qgb3ZlcmxheSA9IGpvaW4ob3ZlcnJpZGVzUm9vdCwgaGl0LnJlbClcbiAgaWYgKGV4aXN0c1N5bmMob3ZlcmxheSkpIGNwU3luYyhvdmVybGF5LCBkZXN0LCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSlcbn1cblxuZnVuY3Rpb24gc3luY1NvdXJjZShcbiAgaGl0OiBIaXQsXG4gIGtpbmQ6IFwiY2hhbmdlXCIgfCBcImFkZFwiIHwgXCJ1bmxpbmtcIixcbiAgdGFyZ2V0RGlyOiBzdHJpbmcsXG4gIG92ZXJyaWRlc1Jvb3Q6IHN0cmluZyxcbikge1xuICAvLyBJZiB0aGUgY29uc3VtZXIgaGFzIGFuIG92ZXJsYXkgZm9yIHRoaXMgZmlsZSAoYW5kIGl0J3MgZXNjYXBhYmxlKSxcbiAgLy8gdGhlIG92ZXJsYXkgd2lucyDigJQgaWdub3JlIHNvdXJjZSBjaGFuZ2VzLlxuICBpZiAoaGl0LmNhdGVnb3J5ICYmIGV4aXN0c1N5bmMoam9pbihvdmVycmlkZXNSb290LCBoaXQucmVsKSkpIHJldHVyblxuICBjb25zdCBkZXN0ID0gam9pbih0YXJnZXREaXIsIGhpdC5yZWwpXG4gIGNvbnN0IHNvdXJjZSA9IGpvaW4oU09VUkNFX0RJUiwgaGl0LnJlbClcbiAgaWYgKGtpbmQgPT09IFwidW5saW5rXCIpIHtcbiAgICBybVN5bmMoZGVzdCwgeyBmb3JjZTogdHJ1ZSwgcmVjdXJzaXZlOiB0cnVlIH0pXG4gICAgcmV0dXJuXG4gIH1cbiAgaWYgKGV4aXN0c1N5bmMoc291cmNlKSkgY3BTeW5jKHNvdXJjZSwgZGVzdCwgeyByZWN1cnNpdmU6IHRydWUsIGZvcmNlOiB0cnVlIH0pXG59XG5cbi8qKiBSZXNvbHZlIGxpdmVtYXJrLmNvbmZpZy50cydzIGB2aXRlYCBmaWVsZCDigJQgZWl0aGVyIGEgY29uZmlnIG9iamVjdFxuICogIG9yIGEgZnVuY3Rpb24gYChlbnYpID0+IGNvbmZpZ2AgKG1hdGNoaW5nIFZpdGUncyBvd24gYGRlZmluZUNvbmZpZ2ApLlxuICogIFNjaGVtYSBzdG9yZXMgaXQgYXMgYHVua25vd25gOyB0eXBpbmcgZm9yIHRoZSBjb25zdW1lcidzIGVkaXRvclxuICogIGxpdmVzIG9uIHtAbGluayBWaXRlT3ZlcnJpZGV9LiAqL1xuYXN5bmMgZnVuY3Rpb24gcmVzb2x2ZVZpdGVPdmVycmlkZShcbiAgdml0ZTogdW5rbm93bixcbiAgZW52OiBDb25maWdFbnYsXG4pOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgbnVsbD4ge1xuICBpZiAoIXZpdGUpIHJldHVybiBudWxsXG4gIGlmICh0eXBlb2Ygdml0ZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgUmVmbGVjdC5hcHBseSh2aXRlLCB1bmRlZmluZWQsIFtlbnZdKVxuICAgIHJldHVybiBpc09iamVjdChyZXN1bHQpID8gcmVzdWx0IDogbnVsbFxuICB9XG4gIHJldHVybiBpc09iamVjdCh2aXRlKSA/IHZpdGUgOiBudWxsXG59XG5cbmZ1bmN0aW9uIGlzT2JqZWN0KHY6IHVua25vd24pOiB2IGlzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgcmV0dXJuIHYgIT09IG51bGwgJiYgdHlwZW9mIHYgPT09IFwib2JqZWN0XCJcbn1cbiJdfQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "livemark",
3
- "version": "0.27.0",
3
+ "version": "0.27.2",
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
  })
@@ -0,0 +1,13 @@
1
+ import { join, sep } from "node:path"
2
+
3
+ const TAILWIND_IMPORT = /@import\s+(["'])tailwindcss(\/utilities)?\1/
4
+
5
+ /**
6
+ * Keep Tailwind's source scan out of the target's dependency link, which reaches the
7
+ * whole install (and, through a self-link, the whole project) from inside the Vite root.
8
+ */
9
+ export function excludeDependencySources(props: { css: string; targetDir: string }) {
10
+ if (!TAILWIND_IMPORT.test(props.css)) return undefined
11
+ const link = join(props.targetDir, "node_modules").split(sep).join("/")
12
+ return `${props.css}\n@source not "${link}";\n`
13
+ }
@@ -0,0 +1,31 @@
1
+ import { describe, expect, it } from "vite-plus/test"
2
+ import { excludeDependencySources } from "./tailwind-sources.ts"
3
+
4
+ const targetDir = "/project/.livemark/.target"
5
+
6
+ describe("excludeDependencySources", () => {
7
+ it("excludes the dependency link from a Tailwind entry", () => {
8
+ const css = `@import "tailwindcss";\n@import "./shape.css";`
9
+ expect(excludeDependencySources({ css, targetDir })).toBe(
10
+ `${css}\n@source not "/project/.livemark/.target/node_modules";\n`,
11
+ )
12
+ })
13
+
14
+ it("accepts single quotes, import options and a bare utilities layer", () => {
15
+ for (const css of [
16
+ `@import 'tailwindcss' source(none);`,
17
+ `@import "tailwindcss/utilities" layer(utilities);`,
18
+ ]) {
19
+ expect(excludeDependencySources({ css, targetDir })).toContain("@source not")
20
+ }
21
+ })
22
+
23
+ it("leaves other stylesheets alone", () => {
24
+ expect(
25
+ excludeDependencySources({ css: `@import "tw-animate-css";`, targetDir }),
26
+ ).toBeUndefined()
27
+ expect(
28
+ excludeDependencySources({ css: `@import "tailwindcss/theme";`, targetDir }),
29
+ ).toBeUndefined()
30
+ })
31
+ })
@@ -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)
@@ -5,6 +5,7 @@ import { mergeConfig } from "vite"
5
5
  import packageJson from "../../package.json" with { type: "json" }
6
6
  import { buildTarget } from "../actions/target/build.ts"
7
7
  import { renderInlineMarkdown } from "../helpers/render-inline-markdown.ts"
8
+ import { excludeDependencySources } from "../helpers/tailwind-sources.ts"
8
9
  import { resolveTargetExport } from "../helpers/target-export.ts"
9
10
  import type { Config } from "../models/config.ts"
10
11
  import { WebsiteConfig } from "../models/config.ts"
@@ -77,6 +78,14 @@ export function livemark(opts: LivemarkOptions): Plugin {
77
78
  const override = await resolveViteOverride(opts.config.vite, env)
78
79
  return override ? mergeConfig(base, override) : base
79
80
  },
81
+ // Here, not in `styles/general.css`, so an escaped stylesheet keeps it. Works only
82
+ // while this plugin precedes `tailwind()`: both are `pre`, so array order decides.
83
+ transform: {
84
+ filter: { id: /\.css(\?|$)/ },
85
+ handler(css) {
86
+ return excludeDependencySources({ css, targetDir })
87
+ },
88
+ },
80
89
  resolveId(id) {
81
90
  if (id === VIRTUAL_ID) return VIRTUAL_RESOLVED_ID
82
91
  return resolveTargetExport({ id, targetDir, exports: packageJson.exports }) ?? null