@intelligentgraphics/ig.gfx.packager 3.0.22 → 3.0.23

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.
Files changed (28) hide show
  1. package/build/bin.mjs +1 -1
  2. package/build/{cli-f6586dd5.mjs → cli-t3HbtHpD.mjs} +73 -87
  3. package/build/cli-t3HbtHpD.mjs.map +1 -0
  4. package/build/{dependencies-e2aa1797.mjs → dependencies-DevWjwri.mjs} +2 -2
  5. package/build/{dependencies-e2aa1797.mjs.map → dependencies-DevWjwri.mjs.map} +1 -1
  6. package/build/{generateIndex-019c6946.mjs → generateIndex-BtHP1bP3.mjs} +3 -3
  7. package/build/{generateIndex-019c6946.mjs.map → generateIndex-BtHP1bP3.mjs.map} +1 -1
  8. package/build/{generateParameterType-ae69726a.mjs → generateParameterType-DyylDiF2.mjs} +3 -3
  9. package/build/{generateParameterType-ae69726a.mjs.map → generateParameterType-DyylDiF2.mjs.map} +1 -1
  10. package/build/{index-3d1291e7.mjs → index-C3Hd8xoM.mjs} +55 -40
  11. package/build/index-C3Hd8xoM.mjs.map +1 -0
  12. package/build/{index-39c79102.mjs → index-CNupsFSp.mjs} +179 -172
  13. package/build/index-CNupsFSp.mjs.map +1 -0
  14. package/build/{postinstall-3328545c.mjs → postinstall-D2hLZlaK.mjs} +3 -3
  15. package/build/{postinstall-3328545c.mjs.map → postinstall-D2hLZlaK.mjs.map} +1 -1
  16. package/build/{publishNpm-532e17a0.mjs → publishNpm-h9T6BVws.mjs} +9 -7
  17. package/build/publishNpm-h9T6BVws.mjs.map +1 -0
  18. package/build/{scripts-7ed8dff6.mjs → scripts-EvIjiH6G.mjs} +1 -1
  19. package/build/{scripts-7ed8dff6.mjs.map → scripts-EvIjiH6G.mjs.map} +1 -1
  20. package/build/{versionFile-644c7ff8.mjs → versionFile-7rrD5z3c.mjs} +3 -3
  21. package/build/{versionFile-644c7ff8.mjs.map → versionFile-7rrD5z3c.mjs.map} +1 -1
  22. package/lib/lib.mjs +226 -205
  23. package/package.json +9 -9
  24. package/readme.md +22 -0
  25. package/build/cli-f6586dd5.mjs.map +0 -1
  26. package/build/index-39c79102.mjs.map +0 -1
  27. package/build/index-3d1291e7.mjs.map +0 -1
  28. package/build/publishNpm-532e17a0.mjs.map +0 -1
@@ -4,23 +4,39 @@ import * as terser from 'terser';
4
4
  import * as fs from 'fs';
5
5
  import 'resolve';
6
6
  import 'write-pkg';
7
- import { c as readPackageAnimationList, r as readPackageCreatorManifest, i as isErrorENOENT, q as readPackageNpmManifest } from './cli-f6586dd5.mjs';
7
+ import { e as readPackageAnimationList, r as readPackageCreatorManifest, i as isErrorENOENT, q as readPackageNpmManifest } from './cli-t3HbtHpD.mjs';
8
8
  import glob from 'glob';
9
9
  import 'node:path';
10
10
  import 'node:fs';
11
11
  import 'axios';
12
12
  import ts from 'typescript';
13
- import { g as getPackageTypescriptFiles } from './scripts-7ed8dff6.mjs';
13
+ import { g as getPackageTypescriptFiles } from './scripts-EvIjiH6G.mjs';
14
14
  import typedoc from 'typedoc';
15
15
  import require$$2 from 'events';
16
16
  import { SourceMapGenerator, SourceMapConsumer } from 'source-map-js';
17
17
  import Ajv from 'ajv';
18
+ import { EOL } from 'os';
18
19
 
19
- const logPackageMessage = (name, step, index, total, maxNameLength = 15)=>{
20
+ const consoleReporter = {
21
+ log (message) {
22
+ console.log(message);
23
+ },
24
+ error (message, _error) {
25
+ console.error(message);
26
+ }
27
+ };
28
+ const createPackageScopedReporter = (reporter, scope, index, total, maxNameLength = 15)=>{
20
29
  const numLength = total === undefined ? undefined : total.toString().length;
21
30
  const indexString = total === undefined || total < 2 ? "" : `${index.toString().padStart(numLength, "0")}/${total} `;
22
- const identifierString = `${indexString}${name.padEnd(maxNameLength)}`;
23
- console.log(`${identifierString} >> ${step}`);
31
+ const identifierString = `${indexString}${scope.padEnd(maxNameLength)}`;
32
+ return {
33
+ log (message) {
34
+ reporter.log(`${identifierString} >> ${message}`);
35
+ },
36
+ error (message, error) {
37
+ reporter.error(`${identifierString} >> ${message}`, error);
38
+ }
39
+ };
24
40
  };
25
41
 
26
42
  const tryReadTsConfig = (location)=>{
@@ -76,7 +92,7 @@ const createTSCBuildParticipant = (location, outputDir)=>(env)=>{
76
92
  const allDiagnostics = ts.getPreEmitDiagnostics(program);
77
93
  if (!emitResult.emitSkipped) {
78
94
  if (allDiagnostics.length > 0) {
79
- console.log(allDiagnostics.map(createErrorMessage).join("\n"));
95
+ console.log(ts.formatDiagnostics(allDiagnostics, host));
80
96
  }
81
97
  if (js === undefined || definitions === undefined) {
82
98
  throw new Error(`Unexpected: no js or definitions were created`);
@@ -90,7 +106,7 @@ const createTSCBuildParticipant = (location, outputDir)=>(env)=>{
90
106
  }
91
107
  });
92
108
  } else {
93
- const error = allDiagnostics.map(createErrorMessage).join("\n");
109
+ const error = ts.formatDiagnostics(allDiagnostics, host);
94
110
  throw new Error(error);
95
111
  }
96
112
  } catch (err) {
@@ -123,7 +139,7 @@ const createTSCWatchBuildParticipant = (location, outputDir)=>{
123
139
  }
124
140
  }
125
141
  };
126
- const reportDiagnostic = (diagnostic)=>{
142
+ const registerDiagnostic = (diagnostic)=>{
127
143
  switch(diagnostic.code){
128
144
  // file not found - https://github.com/microsoft/TypeScript/blob/93e6b9da0c4cb164ca90a5a1b07415e81e97f2b1/src/compiler/diagnosticMessages.json#L4640
129
145
  // probably deleted -> ignore
@@ -158,7 +174,7 @@ const createTSCWatchBuildParticipant = (location, outputDir)=>{
158
174
  sourceMap: undefined
159
175
  };
160
176
  if (emitState.diagnostics.length > 0) {
161
- const message = emitState.diagnostics.map(createErrorMessage).join("\n");
177
+ const message = ts.formatDiagnostics(emitState.diagnostics, formattingHost);
162
178
  onBuildEnd({
163
179
  type: "error",
164
180
  error: message
@@ -185,7 +201,12 @@ const createTSCWatchBuildParticipant = (location, outputDir)=>{
185
201
  break;
186
202
  }
187
203
  };
188
- const host = ts.createWatchCompilerHost(path.join(location.scriptsDir, "tsconfig.json"), getCompilerOptions(location, outputDir), customSys, ts.createSemanticDiagnosticsBuilderProgram, reportDiagnostic, reportWatchStatusChanged);
204
+ const host = ts.createWatchCompilerHost(path.join(location.scriptsDir, "tsconfig.json"), getCompilerOptions(location, outputDir), customSys, ts.createSemanticDiagnosticsBuilderProgram, registerDiagnostic, reportWatchStatusChanged);
205
+ const formattingHost = {
206
+ getCanonicalFileName: (path)=>path,
207
+ getCurrentDirectory: host.getCurrentDirectory,
208
+ getNewLine: ()=>ts.sys.newLine
209
+ };
189
210
  const watchProgram = ts.createWatchProgram(host);
190
211
  const files = getPackageTypescriptFiles(location);
191
212
  if (files.length === 0) {
@@ -205,14 +226,6 @@ const createTSCWatchBuildParticipant = (location, outputDir)=>{
205
226
  };
206
227
  };
207
228
  };
208
- const createErrorMessage = (diagnostic)=>{
209
- if (!diagnostic.file) {
210
- return `${ts.flattenDiagnosticMessageText(diagnostic.messageText, "\n")}`;
211
- }
212
- const { line, character } = diagnostic.file.getLineAndCharacterOfPosition(diagnostic.start);
213
- const message = ts.flattenDiagnosticMessageText(diagnostic.messageText, "\n");
214
- return `${diagnostic.file.fileName} (${line + 1},${character + 1}): ${message}`;
215
- };
216
229
  const getCompilerOptions = (location, outputDir)=>{
217
230
  const config = tryReadTsConfig(location);
218
231
  config.compilerOptions.lib = [
@@ -290,11 +303,11 @@ const toposort = (packages)=>{
290
303
  };
291
304
 
292
305
  class BuildManager extends require$$2 {
293
- constructor(manifest, writer, logStep){
306
+ constructor(manifest, writer, reporter){
294
307
  super();
295
308
  this.manifest = manifest;
296
309
  this.writer = writer;
297
- this.logStep = logStep;
310
+ this.reporter = reporter;
298
311
  this.participants = new Map();
299
312
  this.states = new Map();
300
313
  }
@@ -329,7 +342,7 @@ class BuildManager extends require$$2 {
329
342
  this.states.set(name, result);
330
343
  this.maybeEmit();
331
344
  },
332
- log: this.logStep
345
+ log: (message)=>this.reporter.log(message)
333
346
  });
334
347
  }
335
348
  }
@@ -767,7 +780,8 @@ const createAnimationWatchBuildParticipant = (location, manifest)=>(env)=>{
767
780
  });
768
781
  (async ()=>{
769
782
  for await (const event of fs$1.watch(location.scriptsDir)){
770
- if (event.filename.endsWith(".animation.json")) {
783
+ var _event_filename;
784
+ if ((_event_filename = event.filename) == null ? void 0 : _event_filename.endsWith(".animation.json")) {
771
785
  env.onBuildStart();
772
786
  try {
773
787
  const result = await bundleAnimations(location, manifest, env.log);
@@ -858,6 +872,7 @@ const buildFolders = async (options)=>{
858
872
  recursive: true
859
873
  });
860
874
  }
875
+ const baseReporter = options.reporter ?? consoleReporter;
861
876
  const workspace = options.workspace;
862
877
  const folders = options.packages;
863
878
  let sortedPackages = sortPackagesByBuildOrder(folders);
@@ -870,12 +885,12 @@ const buildFolders = async (options)=>{
870
885
  for (const location of sortedPackages){
871
886
  await ensureTsConfig(location);
872
887
  const data = manifests.get(location);
873
- const logStep = (step)=>logPackageMessage(data.Package, step, index, folders.length, maxNameLength);
888
+ const reporter = options.preparedReporter ?? createPackageScopedReporter(baseReporter, data.Package, index, folders.length, maxNameLength);
874
889
  const outputDirectory = options.outDir || location.scriptsDir;
875
890
  await fs$1.mkdir(outputDirectory, {
876
891
  recursive: true
877
892
  });
878
- const manager = new BuildManager(data, (result)=>writeBuildResult(result, data, location, workspace, outputDirectory, options.minimize, logStep), logStep);
893
+ const manager = new BuildManager(data, (result)=>writeBuildResult(result, data, location, workspace, outputDirectory, options.minimize, reporter), reporter);
879
894
  if (options.banner) {
880
895
  manager.addParticipant("banner", createBannerCommentBuildParticipant(options.banner));
881
896
  }
@@ -883,19 +898,19 @@ const buildFolders = async (options)=>{
883
898
  manager.addParticipant("animation", createAnimationBuildParticipant(location, data));
884
899
  await new Promise((resolve, reject)=>{
885
900
  manager.addListener("start", ()=>{
886
- logStep(`Build started`);
901
+ reporter.log(`Build started`);
887
902
  });
888
903
  manager.addListener("error", (error)=>{
889
904
  reject(new Error(error));
890
905
  });
891
906
  manager.addListener("build", ()=>{
892
- logStep(`Build complete`);
907
+ reporter.log(`Build complete`);
893
908
  resolve();
894
909
  });
895
910
  manager.run();
896
911
  });
897
912
  if (options.docs) {
898
- logStep("Generating typedoc documentation");
913
+ reporter.log("Generating typedoc documentation");
899
914
  await generateDocs(location, path.join(outputDirectory, `${data.Package}.d.ts`), path.join(workspace.path, "docs", data.Package), data.Package);
900
915
  }
901
916
  index++;
@@ -918,14 +933,14 @@ const buildFoldersWatch = async (options)=>{
918
933
  const maxNameLength = Array.from(manifests.values(), (manifest)=>manifest.Package.length).reduce((acc, length)=>Math.max(acc, length), 0);
919
934
  for (const location of sortedPackages){
920
935
  await ensureTsConfig(location);
936
+ const baseReporter = options.reporter ?? consoleReporter;
921
937
  const data = manifests.get(location);
922
- const currentIndex = index;
923
- const logStep = (step)=>logPackageMessage(data.Package, step, currentIndex, folders.length, maxNameLength);
938
+ const reporter = createPackageScopedReporter(baseReporter, data.Package, index, folders.length, maxNameLength);
924
939
  const outputDirectory = options.outDir || location.scriptsDir;
925
940
  await fs$1.mkdir(outputDirectory, {
926
941
  recursive: true
927
942
  });
928
- const manager = new BuildManager(data, (result)=>writeBuildResult(result, data, location, workspace, outputDirectory, options.minimize, logStep), logStep);
943
+ const manager = new BuildManager(data, (result)=>writeBuildResult(result, data, location, workspace, outputDirectory, options.minimize, reporter), reporter);
929
944
  if (options.banner) {
930
945
  manager.addParticipant("banner", createBannerCommentBuildParticipant(options.banner));
931
946
  }
@@ -933,14 +948,14 @@ const buildFoldersWatch = async (options)=>{
933
948
  manager.addParticipant("animation", createAnimationWatchBuildParticipant(location, data));
934
949
  await new Promise((resolve, reject)=>{
935
950
  manager.addListener("start", ()=>{
936
- logStep(`Build started`);
951
+ reporter.log(`Build started`);
937
952
  });
938
953
  manager.addListener("error", (error)=>{
939
- logStep(`Build failed: ${error}`);
954
+ reporter.log(`Build failed: ${EOL}${error}`);
940
955
  resolve();
941
956
  });
942
957
  manager.addListener("build", ()=>{
943
- logStep(`Build complete`);
958
+ reporter.log(`Build complete`);
944
959
  resolve();
945
960
  });
946
961
  manager.run();
@@ -949,7 +964,7 @@ const buildFoldersWatch = async (options)=>{
949
964
  }
950
965
  await new Promise(()=>{});
951
966
  };
952
- const writeBuildResult = async (buildResult, manifest, location, workspace, outputDirectory, minimize, logStep)=>{
967
+ const writeBuildResult = async (buildResult, manifest, location, workspace, outputDirectory, minimize, reporter)=>{
953
968
  let js = buildResult.js;
954
969
  if (buildResult.sourceMap) {
955
970
  js += `\n//# sourceMappingURL=${manifest.Package}.js.map`;
@@ -968,7 +983,7 @@ const writeBuildResult = async (buildResult, manifest, location, workspace, outp
968
983
  });
969
984
  }
970
985
  if (minimize) {
971
- logStep("Minifying the output");
986
+ reporter.log("Minifying the output");
972
987
  const minifyResult = await terser.minify(js, {
973
988
  ecma: 5,
974
989
  sourceMap: {
@@ -990,7 +1005,7 @@ const writeBuildResult = async (buildResult, manifest, location, workspace, outp
990
1005
  await fs$1.mkdir(path.join(workspace.path, "lib"), {
991
1006
  recursive: true
992
1007
  });
993
- logStep("Copying basics definition file to the lib folder");
1008
+ reporter.log("Copying basics definition file to the lib folder");
994
1009
  await fs$1.writeFile(path.join(workspace.path, "lib", `${manifest.Package}.d.ts`), buildResult.definitions, {
995
1010
  encoding: "utf8"
996
1011
  });
@@ -1015,14 +1030,14 @@ const ensureTsConfig = async (location)=>{
1015
1030
  try {
1016
1031
  const content = JSON.parse(await fs$1.readFile(tsconfigPath, "utf8"));
1017
1032
  applyTsConfigOption(content);
1018
- await fs$1.writeFile(tsconfigPath, JSON.stringify(content, undefined, " "), "utf8");
1033
+ await fs$1.writeFile(tsconfigPath, JSON.stringify(content, undefined, "\t"), "utf8");
1019
1034
  } catch (err) {
1020
1035
  if (!isErrorENOENT(err)) {
1021
1036
  throw err;
1022
1037
  }
1023
1038
  const content = {};
1024
1039
  applyTsConfigOption(content);
1025
- await fs$1.writeFile(tsconfigPath, JSON.stringify(content, undefined, " "), "utf8");
1040
+ await fs$1.writeFile(tsconfigPath, JSON.stringify(content, undefined, "\t"), "utf8");
1026
1041
  }
1027
1042
  };
1028
1043
  const applyTsConfigOption = (data)=>{
@@ -1116,5 +1131,5 @@ var index = /*#__PURE__*/Object.freeze({
1116
1131
  buildFoldersWatch: buildFoldersWatch
1117
1132
  });
1118
1133
 
1119
- export { buildFolders as b, index as i, logPackageMessage as l };
1120
- //# sourceMappingURL=index-3d1291e7.mjs.map
1134
+ export { consoleReporter as a, buildFolders as b, createPackageScopedReporter as c, index as i };
1135
+ //# sourceMappingURL=index-C3Hd8xoM.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-C3Hd8xoM.mjs","sources":["../../tools.core/build/log.mjs","../src/commands/build/tsc.ts","../src/commands/build/docs.ts","../src/lib/toposort.ts","../src/commands/build/manager.ts","../src/commands/build/animation.schema.ts","../src/commands/build/animations.ts","../src/commands/build/index.ts"],"sourcesContent":["const consoleReporter = {\n log (message) {\n console.log(message);\n },\n error (message, _error) {\n console.error(message);\n }\n};\nconst createPackageScopedReporter = (reporter, scope, index, total, maxNameLength = 15)=>{\n const numLength = total === undefined ? undefined : total.toString().length;\n const indexString = total === undefined || total < 2 ? \"\" : `${index.toString().padStart(numLength, \"0\")}/${total} `;\n const identifierString = `${indexString}${scope.padEnd(maxNameLength)}`;\n return {\n log (message) {\n reporter.log(`${identifierString} >> ${message}`);\n },\n error (message, error) {\n reporter.error(`${identifierString} >> ${message}`, error);\n }\n };\n};\n\nexport { consoleReporter, createPackageScopedReporter };\n//# sourceMappingURL=log.mjs.map\n","import ts from \"typescript\";\nimport * as path from \"path\";\nimport * as fs from \"fs\";\n\nimport { PackageLocation } from \"../../lib/package\";\n\nimport { getPackageTypescriptFiles } from \"../../lib/scripts\";\nimport { BuildParticipant, BuilderEnvironment } from \"./types\";\n\nexport const tryReadTsConfig = (location: PackageLocation) => {\n\tconst { config } = ts.readConfigFile(\n\t\tpath.join(location.scriptsDir, \"tsconfig.json\"),\n\t\t(path) => {\n\t\t\ttry {\n\t\t\t\treturn fs.readFileSync(path, \"utf8\");\n\t\t\t} catch {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t},\n\t);\n\n\treturn config as {\n\t\tcompilerOptions: ts.CompilerOptions;\n\t};\n};\n\nexport const createTSCBuildParticipant =\n\t(location: PackageLocation, outputDir: string): BuildParticipant =>\n\t(env: BuilderEnvironment) => {\n\t\tconst files = getPackageTypescriptFiles(location);\n\n\t\tif (files.length === 0) {\n\t\t\tenv.onBuildStart();\n\t\t\tenv.onBuildEnd({\n\t\t\t\ttype: \"success\",\n\t\t\t\tartefacts: {\n\t\t\t\t\tjs: \"\",\n\t\t\t\t\tdefinitions: \"\",\n\t\t\t\t},\n\t\t\t});\n\n\t\t\treturn { destroy: () => {} };\n\t\t}\n\n\t\ttry {\n\t\t\tenv.onBuildStart();\n\n\t\t\tenv.log(\"Compiling typescript files\");\n\n\t\t\tconst compilerOptions = getCompilerOptions(location, outputDir);\n\n\t\t\tconst host = ts.createCompilerHost(compilerOptions);\n\t\t\thost.getCurrentDirectory = () => location.scriptsDir;\n\n\t\t\tlet js: string | undefined;\n\t\t\tlet definitions: string | undefined;\n\t\t\tlet sourceMap: string | undefined;\n\n\t\t\thost.writeFile = (fileName, data, writeByteOrderMark) => {\n\t\t\t\tif (fileName.endsWith(\".js\")) {\n\t\t\t\t\tjs = data;\n\t\t\t\t} else if (fileName.endsWith(\".d.ts\")) {\n\t\t\t\t\tdefinitions = data;\n\t\t\t\t} else if (fileName.endsWith(\".js.map\")) {\n\t\t\t\t\tsourceMap = data;\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tconst programOptions: ts.CreateProgramOptions = {\n\t\t\t\trootNames: files,\n\t\t\t\toptions: compilerOptions,\n\t\t\t\thost,\n\t\t\t};\n\n\t\t\tconst program = ts.createProgram(programOptions);\n\t\t\tconst emitResult = program.emit();\n\t\t\tconst allDiagnostics = ts.getPreEmitDiagnostics(program);\n\n\t\t\tif (!emitResult.emitSkipped) {\n\t\t\t\tif (allDiagnostics.length > 0) {\n\t\t\t\t\tconsole.log(ts.formatDiagnostics(allDiagnostics, host));\n\t\t\t\t}\n\n\t\t\t\tif (js === undefined || definitions === undefined) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`Unexpected: no js or definitions were created`,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tenv.onBuildEnd({\n\t\t\t\t\ttype: \"success\",\n\t\t\t\t\tartefacts: {\n\t\t\t\t\t\tjs: js.replace(`//# sourceMappingURL=out.js.map`, \"\"),\n\t\t\t\t\t\tdefinitions,\n\t\t\t\t\t\tsourceMap,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconst error = ts.formatDiagnostics(allDiagnostics, host);\n\n\t\t\t\tthrow new Error(error);\n\t\t\t}\n\t\t} catch (err) {\n\t\t\tenv.onBuildEnd({\n\t\t\t\ttype: \"error\",\n\t\t\t\terror: err.message,\n\t\t\t});\n\t\t}\n\n\t\treturn {\n\t\t\tdestroy: () => {},\n\t\t};\n\t};\n\nexport const createTSCWatchBuildParticipant = (\n\tlocation: PackageLocation,\n\toutputDir: string,\n): BuildParticipant => {\n\treturn ({ onBuildStart, onBuildEnd }: BuilderEnvironment) => {\n\t\ttype State = {\n\t\t\tjs: string | undefined;\n\t\t\tdefinitions: string | undefined;\n\t\t\tdiagnostics: ts.Diagnostic[];\n\t\t\tsourceMap: string | undefined;\n\t\t};\n\n\t\tlet state: State = {\n\t\t\tdiagnostics: [],\n\t\t\tjs: undefined,\n\t\t\tdefinitions: undefined,\n\t\t\tsourceMap: undefined,\n\t\t};\n\n\t\tconst customSys: ts.System = {\n\t\t\t...ts.sys,\n\t\t\twriteFile: (fileName, data, writeByteOrderMark) => {\n\t\t\t\tif (fileName.endsWith(\".js\")) {\n\t\t\t\t\tstate.js = data;\n\t\t\t\t} else if (fileName.endsWith(\".d.ts\")) {\n\t\t\t\t\tstate.definitions = data;\n\t\t\t\t} else if (fileName.endsWith(\".js.map\")) {\n\t\t\t\t\tstate.sourceMap = data;\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\n\t\tconst registerDiagnostic = (diagnostic: ts.Diagnostic) => {\n\t\t\tswitch (diagnostic.code) {\n\t\t\t\t// file not found - https://github.com/microsoft/TypeScript/blob/93e6b9da0c4cb164ca90a5a1b07415e81e97f2b1/src/compiler/diagnosticMessages.json#L4640\n\t\t\t\t// probably deleted -> ignore\n\t\t\t\tcase 6053:\n\t\t\t\t\treturn;\n\n\t\t\t\t// no inputs were found - https://github.com/microsoft/TypeScript/blob/93e6b9da0c4cb164ca90a5a1b07415e81e97f2b1/src/compiler/diagnosticMessages.json#L6838\n\t\t\t\t// we don't care about this error. a user might have temporarily deleted the last ts file and will readd one later.\n\t\t\t\tcase 18003:\n\t\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tstate.diagnostics.push(diagnostic);\n\t\t};\n\n\t\tconst reportWatchStatusChanged = (diagnostic: ts.Diagnostic) => {\n\t\t\tswitch (diagnostic.code) {\n\t\t\t\t// regular watch mode - https://github.com/microsoft/TypeScript/blob/93e6b9da0c4cb164ca90a5a1b07415e81e97f2b1/src/compiler/diagnosticMessages.json#L4567\n\t\t\t\tcase 6031:\n\t\t\t\t// incremental watch mode - https://github.com/microsoft/TypeScript/blob/93e6b9da0c4cb164ca90a5a1b07415e81e97f2b1/src/compiler/diagnosticMessages.json#L4571\n\t\t\t\tcase 6032:\n\t\t\t\t\t// build start\n\t\t\t\t\tonBuildStart();\n\t\t\t\t\tbreak;\n\n\t\t\t\t// found one error - https://github.com/microsoft/TypeScript/blob/93e6b9da0c4cb164ca90a5a1b07415e81e97f2b1/src/compiler/diagnosticMessages.json#L5119\n\t\t\t\tcase 6193:\n\t\t\t\t// found n or 0 errors - https://github.com/microsoft/TypeScript/blob/93e6b9da0c4cb164ca90a5a1b07415e81e97f2b1/src/compiler/diagnosticMessages.json#L5123\n\t\t\t\tcase 6194:\n\t\t\t\t\t// build end\n\t\t\t\t\tconst emitState = state;\n\t\t\t\t\tstate = {\n\t\t\t\t\t\tdiagnostics: [],\n\t\t\t\t\t\tjs: undefined,\n\t\t\t\t\t\tdefinitions: undefined,\n\t\t\t\t\t\tsourceMap: undefined,\n\t\t\t\t\t};\n\n\t\t\t\t\tif (emitState.diagnostics.length > 0) {\n\t\t\t\t\t\tconst message = ts.formatDiagnostics(\n\t\t\t\t\t\t\temitState.diagnostics,\n\t\t\t\t\t\t\tformattingHost,\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tonBuildEnd({\n\t\t\t\t\t\t\ttype: \"error\",\n\t\t\t\t\t\t\terror: message,\n\t\t\t\t\t\t});\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (\n\t\t\t\t\t\temitState.js === undefined ||\n\t\t\t\t\t\temitState.definitions === undefined\n\t\t\t\t\t) {\n\t\t\t\t\t\tonBuildEnd({\n\t\t\t\t\t\t\ttype: \"success\",\n\t\t\t\t\t\t\tartefacts: {\n\t\t\t\t\t\t\t\tjs: \"\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tonBuildEnd({\n\t\t\t\t\t\ttype: \"success\",\n\t\t\t\t\t\tartefacts: {\n\t\t\t\t\t\t\tjs: emitState.js.replace(\n\t\t\t\t\t\t\t\t`//# sourceMappingURL=out.js.map`,\n\t\t\t\t\t\t\t\t\"\",\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tdefinitions: emitState.definitions,\n\t\t\t\t\t\t\tsourceMap: emitState.sourceMap,\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t};\n\n\t\tconst host = ts.createWatchCompilerHost(\n\t\t\tpath.join(location.scriptsDir, \"tsconfig.json\"),\n\t\t\tgetCompilerOptions(location, outputDir),\n\t\t\tcustomSys,\n\t\t\tts.createSemanticDiagnosticsBuilderProgram,\n\t\t\tregisterDiagnostic,\n\t\t\treportWatchStatusChanged,\n\t\t);\n\n\t\tconst formattingHost: ts.FormatDiagnosticsHost = {\n\t\t\tgetCanonicalFileName: (path) => path,\n\t\t\tgetCurrentDirectory: host.getCurrentDirectory,\n\t\t\tgetNewLine: () => ts.sys.newLine,\n\t\t};\n\n\t\tconst watchProgram = ts.createWatchProgram(host);\n\n\t\tconst files = getPackageTypescriptFiles(location);\n\n\t\tif (files.length === 0) {\n\t\t\tonBuildStart();\n\t\t\tonBuildEnd({\n\t\t\t\ttype: \"success\",\n\t\t\t\tartefacts: {\n\t\t\t\t\tjs: \"\",\n\t\t\t\t\tdefinitions: \"\",\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\treturn {\n\t\t\tdestroy: () => {\n\t\t\t\twatchProgram.close();\n\t\t\t},\n\t\t};\n\t};\n};\n\nconst getCompilerOptions = (location: PackageLocation, outputDir: string) => {\n\tconst config = tryReadTsConfig(location);\n\n\tconfig.compilerOptions.lib = [\"es5\", \"dom\"];\n\n\tconst result = ts.convertCompilerOptionsFromJson(\n\t\tconfig.compilerOptions,\n\t\tlocation.scriptsDir,\n\t);\n\n\tconst compilerOptions: ts.CompilerOptions = {\n\t\t...result.options,\n\t\tremoveComments: false,\n\t\tdeclaration: true,\n\t\tsourceMap: true,\n\t\tinlineSources: false,\n\t\t// We don't use tsc to actually emit the files, but we still need to set the correct\n\t\t// output directory so the compiler can rewrite the `reference path` directives.\n\t\toutFile: path.join(outputDir, \"out.js\"),\n\t\ttarget: ts.ScriptTarget.ES5,\n\t\tnoEmitOnError: true,\n\t};\n\n\treturn compilerOptions;\n};\n","import typedoc from \"typedoc\";\nimport glob from \"glob\";\nimport ts from \"typescript\";\nimport * as path from \"path\";\nimport { PackageLocation } from \"../../lib/package\";\n\nexport const generateDocs = async (\n\tlocation: PackageLocation,\n\tdeclarationFile: string,\n\toutFolder: string,\n\tname: string,\n) => {\n\tconst app = new typedoc.Application();\n\n\tconst mediaDir = path.join(location.manifestDir, \"Media\");\n\n\tapp.bootstrap({\n\t\tentryPoints: [declarationFile],\n\t\tmedia: mediaDir,\n\t\tout: outFolder,\n\t\ttsconfig: path.join(location.scriptsDir, \"tsconfig.json\"),\n\t\tskipErrorChecking: true,\n\t});\n\n\tapp.options.setCompilerOptions(\n\t\t[declarationFile],\n\t\t{\n\t\t\ttarget: ts.ScriptTarget.ES5,\n\t\t},\n\t\tundefined,\n\t);\n\n\tapp.options.setValue(\"name\", name);\n\n\tconst [readmePath] = glob.sync(\"**/readme.md\", {\n\t\tabsolute: true,\n\t\tcwd: location.manifestDir,\n\t});\n\n\tif (readmePath) {\n\t\tapp.options.setValue(\"readme\", readmePath);\n\t}\n\n\tconst project = app.convert();\n\n\tif (project) {\n\t\tawait app.generateDocs(project, outFolder);\n\t}\n};\n","// Stolen from ig.tools.core\n\nexport const toposort = (packages: Record<string, string[]>) => {\n\tconst queue = Object.getOwnPropertyNames(packages);\n\tconst result: string[] = [];\n\n\tlet index = 0;\n\n\twhile (queue.length > 0) {\n\t\tif (index >= queue.length) {\n\t\t\tthrow new Error(\"Packages can not have cyclic dependencies\");\n\t\t}\n\n\t\tconst queueEntry = queue[index];\n\n\t\tconst dependencies = packages[queueEntry];\n\t\tconst dependencyQueued = dependencies.some((dependency) =>\n\t\t\tqueue.includes(dependency),\n\t\t);\n\n\t\tif (dependencyQueued) {\n\t\t\tindex++;\n\t\t\tcontinue;\n\t\t}\n\n\t\tqueue.splice(index, 1);\n\t\tindex = 0;\n\t\tresult.push(queueEntry);\n\t}\n\n\treturn result;\n};\n","import {\n\tCreatorPackage,\n\tReporter,\n} from \"@intelligentgraphics/ig.gfx.tools.core\";\nimport {\n\tBuildArtefacts,\n\tBuildParticipant,\n\tBuildResult,\n\tBuildSuccessResult,\n} from \"./types\";\nimport EventEmitter from \"events\";\nimport { SourceMapConsumer, SourceMapGenerator } from \"source-map-js\";\nimport * as path from \"path\";\n\ntype State =\n\t| {\n\t\t\ttype: \"busy\";\n\t }\n\t| BuildResult;\n\nexport class BuildManager extends EventEmitter {\n\tprivate readonly participants = new Map<string, BuildParticipant>();\n\tprivate readonly states = new Map<string, State>();\n\n\tconstructor(\n\t\tprivate readonly manifest: CreatorPackage,\n\t\tprivate readonly writer: (result: BuildArtefacts) => Promise<void>,\n\t\tprivate readonly reporter: Reporter,\n\t) {\n\t\tsuper();\n\t}\n\n\tpublic addParticipant(name: string, participant: BuildParticipant) {\n\t\tthis.participants.set(name, participant);\n\t}\n\n\tpublic run() {\n\t\tfor (const [name] of this.participants) {\n\t\t\tthis.states.set(name, { type: \"busy\" });\n\t\t}\n\n\t\tthis.emit(\"start\");\n\n\t\tfor (const [name, participant] of this.participants) {\n\t\t\tparticipant({\n\t\t\t\tonBuildStart: () => {\n\t\t\t\t\tlet alreadyBusy = false;\n\n\t\t\t\t\tfor (const [name, state] of this.states) {\n\t\t\t\t\t\tif (state.type === \"busy\") {\n\t\t\t\t\t\t\talreadyBusy = true;\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.states.set(name, { type: \"busy\" });\n\n\t\t\t\t\tif (!alreadyBusy) {\n\t\t\t\t\t\tthis.emit(\"start\");\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tonBuildEnd: (result) => {\n\t\t\t\t\tthis.states.set(name, result);\n\n\t\t\t\t\tthis.maybeEmit();\n\t\t\t\t},\n\t\t\t\tlog: (message) => this.reporter.log(message),\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate maybeEmit() {\n\t\tconst errors: string[] = [];\n\t\tconst results: BuildSuccessResult[] = [];\n\n\t\tfor (const [_, state] of this.states) {\n\t\t\tif (state.type === \"busy\") {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (state.type === \"success\") {\n\t\t\t\tresults.push(state);\n\t\t\t} else if (state.type === \"error\") {\n\t\t\t\terrors.push(state.error);\n\t\t\t}\n\t\t}\n\n\t\tif (errors.length > 0) {\n\t\t\tthis.emit(\"error\", errors.join(\"\\n\"));\n\t\t\treturn;\n\t\t}\n\n\t\tconst completeResult: BuildArtefacts = {\n\t\t\tjs: \"\",\n\t\t};\n\n\t\tconst sourceMapGenerator = new SourceMapGenerator();\n\n\t\tfor (const result of results) {\n\t\t\tif (result.artefacts.js) {\n\t\t\t\tif (completeResult.js) {\n\t\t\t\t\tcompleteResult.js += \"\\n\";\n\t\t\t\t}\n\n\t\t\t\tif (result.artefacts.sourceMap) {\n\t\t\t\t\tconst lines = completeResult.js.split(\"\\n\").length - 1;\n\t\t\t\t\tconst sourceMap = new SourceMapConsumer(\n\t\t\t\t\t\tJSON.parse(result.artefacts.sourceMap),\n\t\t\t\t\t);\n\n\t\t\t\t\tconst sources = new Set<string>();\n\t\t\t\t\tsourceMap.eachMapping((mapping) => {\n\t\t\t\t\t\tsourceMapGenerator.addMapping({\n\t\t\t\t\t\t\tgenerated: {\n\t\t\t\t\t\t\t\tline: lines + mapping.generatedLine,\n\t\t\t\t\t\t\t\tcolumn: mapping.generatedColumn,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\toriginal: {\n\t\t\t\t\t\t\t\tline: mapping.originalLine,\n\t\t\t\t\t\t\t\tcolumn: mapping.originalColumn,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tsource: mapping.source,\n\t\t\t\t\t\t\tname: mapping.name,\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tsources.add(mapping.source);\n\t\t\t\t\t});\n\n\t\t\t\t\tfor (const source of sources) {\n\t\t\t\t\t\tconst content = sourceMap.sourceContentFor(source);\n\n\t\t\t\t\t\tif (content !== null) {\n\t\t\t\t\t\t\tsourceMapGenerator.setSourceContent(\n\t\t\t\t\t\t\t\tsource,\n\t\t\t\t\t\t\t\tcontent,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcompleteResult.js += result.artefacts.js;\n\t\t\t}\n\n\t\t\tif (result.artefacts.definitions) {\n\t\t\t\tif (completeResult.definitions) {\n\t\t\t\t\tcompleteResult.definitions += \"\\n\";\n\t\t\t\t} else {\n\t\t\t\t\tcompleteResult.definitions = \"\";\n\t\t\t\t}\n\n\t\t\t\tcompleteResult.definitions += result.artefacts.definitions;\n\t\t\t}\n\t\t}\n\n\t\tcompleteResult.sourceMap = sourceMapGenerator.toString();\n\n\t\tthis.writer(completeResult).then(() => {\n\t\t\tthis.emit(\"build\");\n\t\t});\n\t}\n}\n","export default {\n\t$schema: \"http://json-schema.org/draft-07/schema\",\n\t$id: \"https://archive.intelligentgraphics.biz/schemas/gfx/animation.json\",\n\t$comment: \"Version 2023-02-17, Source: ig.data.gfx/Specs/animation.json\",\n\ttitle: \"Animation description format\",\n\tadditionalProperties: false,\n\ttype: \"object\",\n\tproperties: {\n\t\t$schema: {\n\t\t\ttype: \"string\",\n\t\t},\n\t\tId: {\n\t\t\ttype: \"string\",\n\t\t\tdescription:\n\t\t\t\t\"Animation id, to be unique in the project scope. Needs to be a valid JavaScript identifier.\",\n\t\t},\n\t\tAnimations: {\n\t\t\ttype: \"array\",\n\t\t\tdescription: \"Declaration of animation states for gfx objects\",\n\t\t\titems: {\n\t\t\t\ttype: \"object\",\n\t\t\t\tadditionalProperties: false,\n\t\t\t\tproperties: {\n\t\t\t\t\t_: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tdescription: \"Comment\",\n\t\t\t\t\t},\n\t\t\t\t\tPath: {\n\t\t\t\t\t\t$ref: \"#/definitions/igxcPath\",\n\t\t\t\t\t},\n\t\t\t\t\tStates: {\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\tadditionalProperties: {\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\tPosition: {\n\t\t\t\t\t\t\t\t\t$ref: \"#/definitions/vec3\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tRotation: {\n\t\t\t\t\t\t\t\t\t$ref: \"#/definitions/rotation\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tScaling: {\n\t\t\t\t\t\t\t\t\t$ref: \"#/definitions/vec3\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tVisibility: {\n\t\t\t\t\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tDeformation: {\n\t\t\t\t\t\t\t\t\tanyOf: [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\ttype: \"number\",\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\tKinematics: {\n\t\t\toneOf: [\n\t\t\t\t{\n\t\t\t\t\t$ref: \"#/definitions/kinematicChain\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttype: \"array\",\n\t\t\t\t\titems: {\n\t\t\t\t\t\t$ref: \"#/definitions/kinematicChain\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\tLinkedPoints: {\n\t\t\ttype: \"object\",\n\t\t\tadditionalProperties: {\n\t\t\t\ttype: \"array\",\n\t\t\t\titems: {\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t_: {\n\t\t\ttype: \"string\",\n\t\t\tdescription: \"Comment\",\n\t\t},\n\t},\n\tdefinitions: {\n\t\tvec3: {\n\t\t\ttype: \"object\",\n\t\t\tadditionalProperties: false,\n\t\t\tproperties: {\n\t\t\t\tX: {\n\t\t\t\t\tanyOf: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"number\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t\tY: {\n\t\t\t\t\tanyOf: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"number\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t\tZ: {\n\t\t\t\t\tanyOf: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"number\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t\t_: {\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tdescription: \"Comment\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\trotation: {\n\t\t\ttype: \"object\",\n\t\t\tadditionalProperties: false,\n\t\t\tproperties: {\n\t\t\t\tQ: {\n\t\t\t\t\tdescription:\n\t\t\t\t\t\t\"If true, the rotation is considered to be a Quaternion. Otherwise, it's interpreted as Euler arcs and W will be ignored.\",\n\t\t\t\t\ttype: \"boolean\",\n\t\t\t\t},\n\t\t\t\tX: {\n\t\t\t\t\tanyOf: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"number\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t\tY: {\n\t\t\t\t\tanyOf: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"number\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t\tZ: {\n\t\t\t\t\tanyOf: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"number\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t\tW: {\n\t\t\t\t\tanyOf: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"number\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t\t_: {\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tdescription: \"Comment\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\tigxcPath: {\n\t\t\ttype: \"string\",\n\t\t\tdescription: \"Relative path of the target object\",\n\t\t\tpattern: \"^((o|e)\\\\d+(\\\\.(o|e)\\\\d+)*|\\\\.)$\",\n\t\t},\n\t\tparam: {\n\t\t\ttype: \"string\",\n\t\t\tpattern: \"^Param\\\\d+$\",\n\t\t},\n\t\tkinematicChain: {\n\t\t\ttype: \"object\",\n\t\t\tadditionalProperties: false,\n\t\t\tproperties: {\n\t\t\t\tGeometryBase: {\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t},\n\t\t\t\tJoints: {\n\t\t\t\t\ttype: \"array\",\n\t\t\t\t\titems: {\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tName: {\n\t\t\t\t\t\t\t\toneOf: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t$ref: \"#/definitions/param\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tHeadX: {\n\t\t\t\t\t\t\t\toneOf: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t$ref: \"#/definitions/param\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t$ref: \"#/definitions/igxcPath\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tHeadY: {\n\t\t\t\t\t\t\t\toneOf: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t$ref: \"#/definitions/param\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t$ref: \"#/definitions/igxcPath\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tHeadZ: {\n\t\t\t\t\t\t\t\toneOf: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t$ref: \"#/definitions/param\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t$ref: \"#/definitions/igxcPath\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tTail: {\n\t\t\t\t\t\t\t\toneOf: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t$ref: \"#/definitions/param\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t$ref: \"#/definitions/igxcPath\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tLimitLeft: {\n\t\t\t\t\t\t\t\ttype: \"number\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tLimitRight: {\n\t\t\t\t\t\t\t\ttype: \"number\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tLimitUp: {\n\t\t\t\t\t\t\t\ttype: \"number\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tLimitDown: {\n\t\t\t\t\t\t\t\ttype: \"number\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tFollowJointNode: {\n\t\t\t\t\t\t\t\t$ref: \"#/definitions/igxcPath\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t_TargetNodeForFollow: {\n\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tTarget: {\n\t\t\t\t\toneOf: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$ref: \"#/definitions/igxcPath\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$ref: \"#/definitions/param\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\tenum: [\"subbase\"],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t\tParent: {\n\t\t\t\t\toneOf: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$ref: \"#/definitions/igxcPath\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\tenum: [\"root\"],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t\tTolerance: {\n\t\t\t\t\ttype: \"number\",\n\t\t\t\t},\n\t\t\t\tMaxIterations: {\n\t\t\t\t\ttype: \"integer\",\n\t\t\t\t},\n\t\t\t\t_: {\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tdescription: \"Comment\",\n\t\t\t\t},\n\t\t\t\t__: {\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tdescription: \"Super Comment\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n};\n","import * as path from \"path\";\nimport * as fs from \"fs/promises\";\n\nimport {\n\tPackageLocation,\n\tCreatorPackage,\n\treadPackageAnimationList,\n} from \"@intelligentgraphics/ig.gfx.tools.core\";\n\nimport { BuildParticipant, BuilderEnvironment } from \"./types\";\nimport Ajv, { ValidateFunction } from \"ajv\";\nimport animationSchema from \"./animation.schema\";\n\nexport const createAnimationBuildParticipant = (\n\tlocation: PackageLocation,\n\tmanifest: CreatorPackage,\n): BuildParticipant => {\n\treturn (env: BuilderEnvironment) => {\n\t\tenv.onBuildStart();\n\n\t\tbundleAnimations(location, manifest, env.log)\n\t\t\t.then((result) => {\n\t\t\t\tenv.onBuildEnd({\n\t\t\t\t\ttype: \"success\",\n\t\t\t\t\tartefacts: {\n\t\t\t\t\t\tjs: result?.js ?? \"\",\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t})\n\t\t\t.catch((err) => {\n\t\t\t\tenv.onBuildEnd({\n\t\t\t\t\ttype: \"error\",\n\t\t\t\t\terror: err.message,\n\t\t\t\t});\n\t\t\t});\n\n\t\treturn {\n\t\t\tdestroy: () => {},\n\t\t};\n\t};\n};\n\nexport const createAnimationWatchBuildParticipant =\n\t(location: PackageLocation, manifest: CreatorPackage): BuildParticipant =>\n\t(env) => {\n\t\tenv.onBuildStart();\n\n\t\tbundleAnimations(location, manifest, env.log)\n\t\t\t.then((result) => {\n\t\t\t\tenv.onBuildEnd({\n\t\t\t\t\ttype: \"success\",\n\t\t\t\t\tartefacts: {\n\t\t\t\t\t\tjs: result?.js ?? \"\",\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t})\n\t\t\t.catch((err) => {\n\t\t\t\tenv.onBuildEnd({\n\t\t\t\t\ttype: \"error\",\n\t\t\t\t\terror: err.message,\n\t\t\t\t});\n\t\t\t});\n\n\t\t(async () => {\n\t\t\tfor await (const event of fs.watch(location.scriptsDir)) {\n\t\t\t\tif (event.filename?.endsWith(\".animation.json\")) {\n\t\t\t\t\tenv.onBuildStart();\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst result = await bundleAnimations(\n\t\t\t\t\t\t\tlocation,\n\t\t\t\t\t\t\tmanifest,\n\t\t\t\t\t\t\tenv.log,\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tenv.onBuildEnd({\n\t\t\t\t\t\t\ttype: \"success\",\n\t\t\t\t\t\t\tartefacts: {\n\t\t\t\t\t\t\t\tjs: result?.js ?? \"\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\tenv.onBuildEnd({\n\t\t\t\t\t\t\ttype: \"error\",\n\t\t\t\t\t\t\terror: err.message,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t})();\n\n\t\treturn {\n\t\t\tdestroy: () => {},\n\t\t};\n\t};\n\nconst bundleAnimations = async (\n\tlocation: PackageLocation,\n\tmanifest: CreatorPackage,\n\tlogStep: (message: string) => void,\n) => {\n\tconst animations = new Map<string, string>();\n\n\tfor (const scriptFilePath of readPackageAnimationList(location)) {\n\t\tconst content = await fs.readFile(scriptFilePath, {\n\t\t\tencoding: \"utf8\",\n\t\t})!;\n\n\t\tlet data: { Id: string; $schema?: string };\n\n\t\ttry {\n\t\t\tdata = JSON.parse(content);\n\t\t} catch (err) {\n\t\t\tconst relativePath = path.relative(location.path, scriptFilePath);\n\n\t\t\tif (err instanceof SyntaxError) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Encountered invalid syntax in file \"${relativePath}\": ${String(\n\t\t\t\t\t\terr,\n\t\t\t\t\t)}`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new Error(\n\t\t\t\t`Encountered an unexpected error while parsing animation json file at path \"${relativePath}\"`,\n\t\t\t\t{\n\t\t\t\t\tcause: err,\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\n\t\tif (!data.Id) {\n\t\t\tconst fileName = path.basename(scriptFilePath, \".animation.json\");\n\t\t\tdata.Id = fileName;\n\t\t}\n\n\t\t(await getAnimationJsonValidation())(data);\n\t\tdelete data.$schema;\n\t\tanimations.set(data.Id, JSON.stringify(data));\n\t}\n\n\tif (animations.size > 0) {\n\t\tconst scope = manifest.Scope ?? manifest.Package;\n\t\tconst scopeParts = scope.split(\".\");\n\n\t\tlet js = createNamespace(scopeParts);\n\n\t\tfor (const [name, content] of animations) {\n\t\t\tjs += `${scope}[\"${name}\"] = ` + content + \";\";\n\t\t\tlogStep(`Adding animation ${scope}.${name}`);\n\t\t}\n\n\t\treturn {\n\t\t\tjs,\n\t\t};\n\t}\n\n\treturn undefined;\n};\n\nconst createNamespace = (parts: string[]) => {\n\tlet code = `var ${parts[0]};`;\n\n\tfor (let index = 0; index < parts.length; index++) {\n\t\tconst path = parts.slice(0, index + 1).join(\".\");\n\n\t\tcode += `\\n(${path} = ${path} || {});`;\n\t}\n\n\treturn code;\n};\n\nlet validateAnimationJson: ValidateFunction | undefined;\n\nconst getAnimationJsonValidation = async () => {\n\tif (validateAnimationJson === undefined) {\n\t\tvalidateAnimationJson = new Ajv({\n\t\t\tcoerceTypes: true,\n\t\t\tallErrors: true,\n\t\t\tremoveAdditional: true,\n\t\t\tuseDefaults: \"empty\",\n\t\t\tvalidateSchema: \"log\",\n\t\t}).compile(animationSchema);\n\t}\n\n\treturn validateAnimationJson!;\n};\n","import * as path from \"path\";\nimport * as fs from \"fs/promises\";\nimport * as terser from \"terser\";\n\nimport {\n\tconsoleReporter,\n\tcreatePackageScopedReporter,\n\tisErrorENOENT,\n\tReporter,\n} from \"@intelligentgraphics/ig.gfx.tools.core\";\n\nimport {\n\tcreateTSCBuildParticipant,\n\tcreateTSCWatchBuildParticipant,\n} from \"./tsc\";\nimport { generateDocs } from \"./docs\";\nimport {\n\tCreatorPackage,\n\tPackageLocation,\n\treadPackageCreatorManifest,\n\treadPackageNpmManifest,\n} from \"../../lib/package\";\nimport { WorkspaceLocation } from \"../../lib/workspace\";\nimport { toposort } from \"../../lib/toposort\";\nimport { PackageJSON } from \"../../lib/packageJSON\";\nimport { BuildArtefacts, BuildParticipant } from \"./types\";\nimport { BuildManager } from \"./manager\";\nimport {\n\tcreateAnimationBuildParticipant,\n\tcreateAnimationWatchBuildParticipant,\n} from \"./animations\";\nimport { EOL } from \"os\";\n\nexport interface BannerOptions {\n\ttext: string | undefined;\n\tversion: string | undefined;\n\tcommit: string | undefined;\n\tcommitDirty: boolean | undefined;\n\tdate: Date | undefined;\n}\n\nexport interface BuildFoldersOptions {\n\tworkspace: WorkspaceLocation;\n\tpackages: PackageLocation[];\n\toutDir?: string;\n\tminimize: boolean;\n\tbanner?: BannerOptions;\n\tclean?: boolean;\n\tdocs?: boolean;\n\treporter?: Reporter;\n\tpreparedReporter?: Reporter;\n}\n\nexport interface BuildFolderOptions extends BuildFoldersOptions {\n\toutFile: string;\n}\n\nexport interface FolderBuilderResult {\n\tjs: string;\n\tdefinitions: string;\n}\n\nexport type FolderBuilder = (\n\tlocation: PackageLocation,\n\toutputDir: string,\n) => Promise<FolderBuilderResult>;\n\ntype FolderData = {\n\tlocation: PackageLocation;\n\tdata?: PackageJSON;\n};\n\nexport const buildFolders = async (options: BuildFoldersOptions) => {\n\tif (options.outDir !== undefined && options.clean) {\n\t\tawait fs.rm(options.outDir, { recursive: true });\n\t}\n\n\tconst baseReporter = options.reporter ?? consoleReporter;\n\tconst workspace = options.workspace;\n\tconst folders = options.packages;\n\n\tlet sortedPackages = sortPackagesByBuildOrder(folders);\n\n\tlet index = 1;\n\n\tconst manifests = new Map(\n\t\tsortedPackages.map(\n\t\t\t(location) =>\n\t\t\t\t[location, readPackageCreatorManifest(location)] as const,\n\t\t),\n\t);\n\n\tconst maxNameLength = Array.from(\n\t\tmanifests.values(),\n\t\t(manifest) => manifest.Package.length,\n\t).reduce((acc, length) => Math.max(acc, length), 0);\n\n\tconst managers: BuildManager[] = [];\n\n\tfor (const location of sortedPackages) {\n\t\tawait ensureTsConfig(location);\n\n\t\tconst data = manifests.get(location)!;\n\n\t\tconst reporter =\n\t\t\toptions.preparedReporter ??\n\t\t\tcreatePackageScopedReporter(\n\t\t\t\tbaseReporter,\n\t\t\t\tdata.Package,\n\t\t\t\tindex,\n\t\t\t\tfolders.length,\n\t\t\t\tmaxNameLength,\n\t\t\t);\n\n\t\tconst outputDirectory = options.outDir || location.scriptsDir;\n\t\tawait fs.mkdir(outputDirectory, { recursive: true });\n\n\t\tconst manager = new BuildManager(\n\t\t\tdata,\n\t\t\t(result) =>\n\t\t\t\twriteBuildResult(\n\t\t\t\t\tresult,\n\t\t\t\t\tdata,\n\t\t\t\t\tlocation,\n\t\t\t\t\tworkspace,\n\t\t\t\t\toutputDirectory,\n\t\t\t\t\toptions.minimize,\n\t\t\t\t\treporter,\n\t\t\t\t),\n\t\t\treporter,\n\t\t);\n\n\t\tif (options.banner) {\n\t\t\tmanager.addParticipant(\n\t\t\t\t\"banner\",\n\t\t\t\tcreateBannerCommentBuildParticipant(options.banner),\n\t\t\t);\n\t\t}\n\n\t\tmanager.addParticipant(\n\t\t\t\"tsc\",\n\t\t\tcreateTSCBuildParticipant(location, outputDirectory),\n\t\t);\n\n\t\tmanager.addParticipant(\n\t\t\t\"animation\",\n\t\t\tcreateAnimationBuildParticipant(location, data),\n\t\t);\n\n\t\tawait new Promise<void>((resolve, reject) => {\n\t\t\tmanager.addListener(\"start\", () => {\n\t\t\t\treporter.log(`Build started`);\n\t\t\t});\n\t\t\tmanager.addListener(\"error\", (error: string) => {\n\t\t\t\treject(new Error(error));\n\t\t\t});\n\t\t\tmanager.addListener(\"build\", () => {\n\t\t\t\treporter.log(`Build complete`);\n\t\t\t\tresolve();\n\t\t\t});\n\t\t\tmanager.run();\n\t\t});\n\n\t\tmanagers.push(manager);\n\n\t\tif (options.docs) {\n\t\t\treporter.log(\"Generating typedoc documentation\");\n\t\t\tawait generateDocs(\n\t\t\t\tlocation,\n\t\t\t\tpath.join(outputDirectory, `${data.Package}.d.ts`),\n\t\t\t\tpath.join(workspace.path, \"docs\", data.Package),\n\t\t\t\tdata.Package,\n\t\t\t);\n\t\t}\n\n\t\tindex++;\n\t}\n};\n\nexport const buildFoldersWatch = async (options: BuildFoldersOptions) => {\n\tif (options.outDir !== undefined && options.clean) {\n\t\tawait fs.rm(options.outDir, { recursive: true });\n\t}\n\n\tconst workspace = options.workspace;\n\tconst folders = options.packages;\n\n\tlet sortedPackages = sortPackagesByBuildOrder(folders);\n\n\tlet index = 1;\n\n\tconst manifests = new Map(\n\t\tsortedPackages.map(\n\t\t\t(location) =>\n\t\t\t\t[location, readPackageCreatorManifest(location)] as const,\n\t\t),\n\t);\n\n\tconst maxNameLength = Array.from(\n\t\tmanifests.values(),\n\t\t(manifest) => manifest.Package.length,\n\t).reduce((acc, length) => Math.max(acc, length), 0);\n\n\tconst managers: BuildManager[] = [];\n\n\tfor (const location of sortedPackages) {\n\t\tawait ensureTsConfig(location);\n\n\t\tconst baseReporter = options.reporter ?? consoleReporter;\n\n\t\tconst data = manifests.get(location)!;\n\n\t\tconst reporter = createPackageScopedReporter(\n\t\t\tbaseReporter,\n\t\t\tdata.Package,\n\t\t\tindex,\n\t\t\tfolders.length,\n\t\t\tmaxNameLength,\n\t\t);\n\n\t\tconst outputDirectory = options.outDir || location.scriptsDir;\n\t\tawait fs.mkdir(outputDirectory, { recursive: true });\n\n\t\tconst manager = new BuildManager(\n\t\t\tdata,\n\t\t\t(result) =>\n\t\t\t\twriteBuildResult(\n\t\t\t\t\tresult,\n\t\t\t\t\tdata,\n\t\t\t\t\tlocation,\n\t\t\t\t\tworkspace,\n\t\t\t\t\toutputDirectory,\n\t\t\t\t\toptions.minimize,\n\t\t\t\t\treporter,\n\t\t\t\t),\n\t\t\treporter,\n\t\t);\n\n\t\tif (options.banner) {\n\t\t\tmanager.addParticipant(\n\t\t\t\t\"banner\",\n\t\t\t\tcreateBannerCommentBuildParticipant(options.banner),\n\t\t\t);\n\t\t}\n\n\t\tmanager.addParticipant(\n\t\t\t\"tsc\",\n\t\t\tcreateTSCWatchBuildParticipant(location, outputDirectory),\n\t\t);\n\n\t\tmanager.addParticipant(\n\t\t\t\"animation\",\n\t\t\tcreateAnimationWatchBuildParticipant(location, data),\n\t\t);\n\n\t\tawait new Promise<void>((resolve, reject) => {\n\t\t\tmanager.addListener(\"start\", () => {\n\t\t\t\treporter.log(`Build started`);\n\t\t\t});\n\t\t\tmanager.addListener(\"error\", (error: string) => {\n\t\t\t\treporter.log(`Build failed: ${EOL}${error}`);\n\t\t\t\tresolve();\n\t\t\t});\n\t\t\tmanager.addListener(\"build\", () => {\n\t\t\t\treporter.log(`Build complete`);\n\t\t\t\tresolve();\n\t\t\t});\n\t\t\tmanager.run();\n\t\t});\n\n\t\tmanagers.push(manager);\n\n\t\tindex++;\n\t}\n\n\tawait new Promise(() => {});\n};\n\nconst writeBuildResult = async (\n\tbuildResult: BuildArtefacts,\n\tmanifest: CreatorPackage,\n\tlocation: PackageLocation,\n\tworkspace: WorkspaceLocation,\n\toutputDirectory: string,\n\tminimize: boolean,\n\treporter: Reporter,\n) => {\n\tlet js = buildResult.js;\n\n\tif (buildResult.sourceMap) {\n\t\tjs += `\\n//# sourceMappingURL=${manifest.Package}.js.map`;\n\t}\n\n\tawait fs.writeFile(\n\t\tpath.join(outputDirectory, `${manifest.Package}.js`),\n\t\tjs,\n\t\t{ encoding: \"utf8\" },\n\t);\n\tif (buildResult.definitions !== undefined) {\n\t\tawait fs.writeFile(\n\t\t\tpath.join(outputDirectory, `${manifest.Package}.d.ts`),\n\t\t\tbuildResult.definitions,\n\t\t\t{ encoding: \"utf8\" },\n\t\t);\n\t}\n\tif (buildResult.sourceMap !== undefined) {\n\t\tawait fs.writeFile(\n\t\t\tpath.join(outputDirectory, `${manifest.Package}.js.map`),\n\t\t\tbuildResult.sourceMap,\n\t\t\t{ encoding: \"utf8\" },\n\t\t);\n\t}\n\n\tif (minimize) {\n\t\treporter.log(\"Minifying the output\");\n\n\t\tconst minifyResult = await terser.minify(js, {\n\t\t\tecma: 5,\n\t\t\tsourceMap: {\n\t\t\t\tcontent: buildResult.sourceMap,\n\t\t\t\tincludeSources: false,\n\t\t\t},\n\t\t});\n\n\t\tconst minifiedPath = path.join(\n\t\t\toutputDirectory,\n\t\t\t`${manifest.Package}.min.js`,\n\t\t);\n\t\tawait fs.writeFile(minifiedPath, minifyResult.code!, {\n\t\t\tencoding: \"utf8\",\n\t\t});\n\t\tif (minifyResult.map !== undefined) {\n\t\t\tawait fs.writeFile(\n\t\t\t\tminifiedPath + \".map\",\n\t\t\t\ttypeof minifyResult.map === \"string\"\n\t\t\t\t\t? minifyResult.map\n\t\t\t\t\t: JSON.stringify(minifyResult.map),\n\t\t\t\t{ encoding: \"utf8\" },\n\t\t\t);\n\t\t}\n\t}\n\n\tif (\n\t\tlocation.path.includes(\"Basics\") &&\n\t\tbuildResult.definitions !== undefined\n\t) {\n\t\tawait fs.mkdir(path.join(workspace.path, \"lib\"), {\n\t\t\trecursive: true,\n\t\t});\n\n\t\treporter.log(\"Copying basics definition file to the lib folder\");\n\t\tawait fs.writeFile(\n\t\t\tpath.join(workspace.path, \"lib\", `${manifest.Package}.d.ts`),\n\t\t\tbuildResult.definitions,\n\t\t\t{ encoding: \"utf8\" },\n\t\t);\n\t}\n};\n\nconst createBannerCommentBuildParticipant =\n\t(options: BannerOptions): BuildParticipant =>\n\t(env) => {\n\t\tenv.onBuildStart();\n\n\t\tconst banner = createBannerComment(options);\n\n\t\tenv.onBuildEnd({\n\t\t\ttype: \"success\",\n\t\t\tartefacts: {\n\t\t\t\tjs: banner ?? \"\",\n\t\t\t\tdefinitions: banner ?? \"\",\n\t\t\t},\n\t\t});\n\n\t\treturn {\n\t\t\tdestroy: () => {},\n\t\t};\n\t};\n\nconst ensureTsConfig = async (location: PackageLocation) => {\n\tconst tsconfigPath = path.join(location.scriptsDir, \"tsconfig.json\");\n\n\ttry {\n\t\tconst content = JSON.parse(await fs.readFile(tsconfigPath, \"utf8\"));\n\t\tapplyTsConfigOption(content);\n\t\tawait fs.writeFile(\n\t\t\ttsconfigPath,\n\t\t\tJSON.stringify(content, undefined, \"\\t\"),\n\t\t\t\"utf8\",\n\t\t);\n\t} catch (err) {\n\t\tif (!isErrorENOENT(err)) {\n\t\t\tthrow err;\n\t\t}\n\n\t\tconst content = {};\n\t\tapplyTsConfigOption(content);\n\n\t\tawait fs.writeFile(\n\t\t\ttsconfigPath,\n\t\t\tJSON.stringify(content, undefined, \"\\t\"),\n\t\t\t\"utf8\",\n\t\t);\n\t}\n};\n\nconst applyTsConfigOption = (data: {\n\tcompilerOptions?: { target?: string; lib?: string[] };\n}) => {\n\tdata.compilerOptions = data.compilerOptions ?? {};\n\tdata.compilerOptions.target = \"es5\";\n\tdata.compilerOptions.lib = [\"es5\", \"dom\"];\n};\n\nconst sortPackagesByBuildOrder = (\n\tfolders: PackageLocation[],\n): PackageLocation[] => {\n\tconst packages = Array.from(folders).reduce(\n\t\t(\n\t\t\tacc: Record<string, FolderData>,\n\t\t\tlocation,\n\t\t): Record<string, FolderData> => {\n\t\t\tconst data = readPackageNpmManifest(location);\n\n\t\t\tif (data !== undefined) {\n\t\t\t\tacc[data.name] = {\n\t\t\t\t\tdata,\n\t\t\t\t\tlocation,\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tacc[location.path] = {\n\t\t\t\t\tdata: undefined,\n\t\t\t\t\tlocation,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn acc;\n\t\t},\n\t\t{},\n\t);\n\n\tconst packageDependencies = Object.getOwnPropertyNames(packages).reduce(\n\t\t(acc, packageName) => {\n\t\t\tconst packageData = packages[packageName];\n\n\t\t\tif (packageData.data === undefined) {\n\t\t\t\tacc[packageName] = [];\n\t\t\t} else {\n\t\t\t\tacc[packageName] = Object.getOwnPropertyNames({\n\t\t\t\t\t...packageData.data.devDependencies,\n\t\t\t\t\t...packageData.data.dependencies,\n\t\t\t\t\t...packageData.data.peerDependencies,\n\t\t\t\t}).filter((packageName) => packages[packageName] !== undefined);\n\t\t\t}\n\n\t\t\treturn acc;\n\t\t},\n\t\t{},\n\t);\n\n\tconst sortedPackages = toposort(packageDependencies);\n\tconst result: PackageLocation[] = [];\n\n\tfor (const packageName of sortedPackages) {\n\t\tconst location = packages[packageName].location;\n\n\t\tif (readPackageCreatorManifest(location).Package.endsWith(\".Basics\")) {\n\t\t\tresult.unshift(location);\n\t\t} else {\n\t\t\tresult.push(location);\n\t\t}\n\t}\n\n\treturn result;\n};\n\nconst createBannerComment = (banner: BannerOptions) => {\n\tconst bannerParts: string[] = [];\n\n\tif (banner.text) {\n\t\tbannerParts.push(\" * \" + banner.text);\n\t}\n\n\t{\n\t\tconst details: string[] = [];\n\n\t\tif (banner.version) {\n\t\t\tdetails.push(`Version: ${banner.version}`);\n\t\t}\n\t\tif (banner.commit) {\n\t\t\tif (banner.commitDirty) {\n\t\t\t\tdetails.push(`Commit: ${banner.commit} (dirty)`);\n\t\t\t} else {\n\t\t\t\tdetails.push(`Commit: ${banner.commit}`);\n\t\t\t}\n\t\t}\n\t\tif (banner.date) {\n\t\t\tdetails.push(`Date: ${banner.date.toISOString()}`);\n\t\t}\n\n\t\tconst detailsText = details.map((line) => ` * ${line}`).join(\"\\n\");\n\t\tif (detailsText) {\n\t\t\tbannerParts.push(detailsText);\n\t\t}\n\t}\n\n\tconst bannerText = bannerParts.join(\"\\n\\n\");\n\n\tif (bannerText) {\n\t\treturn `/*\n${bannerText}\n*\n* @preserve\t\t\t\n*/`;\n\t}\n\n\treturn undefined;\n};\n"],"names":["consoleReporter","log","message","console","error","_error","createPackageScopedReporter","reporter","scope","index","total","maxNameLength","numLength","undefined","toString","length","indexString","padStart","identifierString","padEnd","tryReadTsConfig","location","config","ts","readConfigFile","path","join","scriptsDir","fs","readFileSync","createTSCBuildParticipant","outputDir","env","files","getPackageTypescriptFiles","onBuildStart","onBuildEnd","type","artefacts","js","definitions","destroy","compilerOptions","getCompilerOptions","host","createCompilerHost","getCurrentDirectory","sourceMap","writeFile","fileName","data","writeByteOrderMark","endsWith","programOptions","rootNames","options","program","createProgram","emitResult","emit","allDiagnostics","getPreEmitDiagnostics","emitSkipped","formatDiagnostics","Error","replace","err","createTSCWatchBuildParticipant","state","diagnostics","customSys","sys","registerDiagnostic","diagnostic","code","push","reportWatchStatusChanged","emitState","formattingHost","createWatchCompilerHost","createSemanticDiagnosticsBuilderProgram","getCanonicalFileName","getNewLine","newLine","watchProgram","createWatchProgram","close","lib","result","convertCompilerOptionsFromJson","removeComments","declaration","inlineSources","outFile","target","ScriptTarget","ES5","noEmitOnError","generateDocs","declarationFile","outFolder","name","app","typedoc","Application","mediaDir","manifestDir","bootstrap","entryPoints","media","out","tsconfig","skipErrorChecking","setCompilerOptions","setValue","readmePath","glob","sync","absolute","cwd","project","convert","toposort","packages","queue","Object","getOwnPropertyNames","queueEntry","dependencies","dependencyQueued","some","dependency","includes","splice","BuildManager","EventEmitter","constructor","manifest","writer","participants","Map","states","addParticipant","participant","set","run","alreadyBusy","maybeEmit","errors","results","_","completeResult","sourceMapGenerator","SourceMapGenerator","lines","split","SourceMapConsumer","JSON","parse","sources","Set","eachMapping","mapping","addMapping","generated","line","generatedLine","column","generatedColumn","original","originalLine","originalColumn","source","add","content","sourceContentFor","setSourceContent","then","$schema","$id","$comment","title","additionalProperties","properties","Id","description","Animations","items","Path","$ref","States","Position","Rotation","Scaling","Visibility","Deformation","anyOf","Kinematics","oneOf","LinkedPoints","vec3","X","Y","Z","rotation","Q","W","igxcPath","pattern","param","kinematicChain","GeometryBase","Joints","Name","HeadX","HeadY","HeadZ","Tail","LimitLeft","LimitRight","LimitUp","LimitDown","FollowJointNode","_TargetNodeForFollow","Target","enum","Parent","Tolerance","MaxIterations","__","createAnimationBuildParticipant","bundleAnimations","catch","createAnimationWatchBuildParticipant","event","watch","filename","logStep","animations","scriptFilePath","readPackageAnimationList","readFile","encoding","relativePath","relative","SyntaxError","String","cause","basename","getAnimationJsonValidation","stringify","size","Scope","Package","scopeParts","createNamespace","parts","slice","validateAnimationJson","Ajv","coerceTypes","allErrors","removeAdditional","useDefaults","validateSchema","compile","animationSchema","buildFolders","outDir","clean","rm","recursive","baseReporter","workspace","folders","sortedPackages","sortPackagesByBuildOrder","manifests","map","readPackageCreatorManifest","Array","from","values","reduce","acc","Math","max","ensureTsConfig","get","preparedReporter","outputDirectory","mkdir","manager","writeBuildResult","minimize","banner","createBannerCommentBuildParticipant","Promise","resolve","reject","addListener","docs","buildFoldersWatch","EOL","buildResult","minifyResult","terser","minify","ecma","includeSources","minifiedPath","createBannerComment","tsconfigPath","applyTsConfigOption","isErrorENOENT","readPackageNpmManifest","packageDependencies","packageName","packageData","devDependencies","peerDependencies","filter","unshift","bannerParts","text","details","version","commit","commitDirty","date","toISOString","detailsText","bannerText"],"mappings":"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"}