@ts-ioc-container/bundler 1.5.0 → 2.1.0

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 (122) hide show
  1. package/AGENTS.md +47 -31
  2. package/README.md +157 -280
  3. package/cjm/app.js +39 -0
  4. package/cjm/bin.js +2 -2
  5. package/cjm/cli/Application.js +58 -0
  6. package/cjm/cli/IErrorHandler.js +5 -0
  7. package/cjm/cli/decorators.js +9 -0
  8. package/cjm/cli/index.js +17 -0
  9. package/cjm/cli/options.js +25 -0
  10. package/cjm/cli/usage.js +19 -0
  11. package/cjm/domain/CliIo.js +7 -0
  12. package/cjm/domain/GlobalConfig.js +7 -0
  13. package/cjm/exceptions/DomainException.js +54 -0
  14. package/cjm/exceptions/ExceptionHandler.js +38 -0
  15. package/cjm/features/build/BuildConfig.js +183 -0
  16. package/cjm/features/build/BuildController.js +91 -0
  17. package/cjm/features/build/BuildModule.js +16 -0
  18. package/cjm/{ImportPaths.js → features/build/domain/ImportPaths.js} +7 -29
  19. package/cjm/features/build/domain/configFiles.js +35 -0
  20. package/cjm/{emit.js → features/build/domain/emit.js} +10 -9
  21. package/cjm/{scan.js → features/build/domain/scan.js} +6 -3
  22. package/cjm/features/build/domain/tokenCollisions.js +29 -0
  23. package/cjm/features/build/domain/tsconfig.js +78 -0
  24. package/cjm/features/build/services/BundleBuilder.js +116 -0
  25. package/cjm/features/build/services/TicConfigService.js +68 -0
  26. package/cjm/features/help/HelpController.js +39 -0
  27. package/cjm/features/help/HelpModule.js +12 -0
  28. package/cjm/features/help/VersionController.js +45 -0
  29. package/cjm/index.js +87 -28
  30. package/cjm/modules/CommonModule.js +28 -0
  31. package/cjm/schema/ticConfigSchema.js +24 -0
  32. package/cjm/services/ConsoleLogger.js +36 -0
  33. package/cjm/services/HandlebarsRenderService.js +33 -0
  34. package/cjm/services/NodeFileSystemService.js +32 -0
  35. package/cjm/services/OutputService.js +33 -0
  36. package/package.json +10 -7
  37. package/tic.schema.json +118 -147
  38. package/tpl/index.cjs +36 -16
  39. package/typings/app.d.ts +24 -0
  40. package/typings/cli/Application.d.ts +16 -0
  41. package/typings/cli/Application.d.ts.map +1 -0
  42. package/typings/cli/IErrorHandler.d.ts +7 -0
  43. package/typings/cli/IErrorHandler.d.ts.map +1 -0
  44. package/typings/cli/decorators.d.ts +10 -0
  45. package/typings/cli/decorators.d.ts.map +1 -0
  46. package/typings/cli/index.d.ts +6 -0
  47. package/typings/cli/index.d.ts.map +1 -0
  48. package/typings/cli/options.d.ts +23 -0
  49. package/typings/cli/options.d.ts.map +1 -0
  50. package/typings/cli/usage.d.ts +2 -0
  51. package/typings/cli/usage.d.ts.map +1 -0
  52. package/typings/domain/CliIo.d.ts +10 -0
  53. package/typings/domain/CliIo.d.ts.map +1 -0
  54. package/typings/domain/GlobalConfig.d.ts +10 -0
  55. package/typings/domain/GlobalConfig.d.ts.map +1 -0
  56. package/typings/exceptions/DomainException.d.ts +37 -0
  57. package/typings/exceptions/DomainException.d.ts.map +1 -0
  58. package/typings/exceptions/ExceptionHandler.d.ts +12 -0
  59. package/typings/exceptions/ExceptionHandler.d.ts.map +1 -0
  60. package/typings/features/build/BuildConfig.d.ts +179 -0
  61. package/typings/features/build/BuildConfig.d.ts.map +1 -0
  62. package/typings/features/build/BuildController.d.ts +32 -0
  63. package/typings/features/build/BuildController.d.ts.map +1 -0
  64. package/typings/features/build/BuildModule.d.ts +5 -0
  65. package/typings/features/build/BuildModule.d.ts.map +1 -0
  66. package/typings/{ImportPaths.d.ts → features/build/domain/ImportPaths.d.ts} +4 -16
  67. package/typings/features/build/domain/ImportPaths.d.ts.map +1 -0
  68. package/typings/features/build/domain/configFiles.d.ts +13 -0
  69. package/typings/features/build/domain/configFiles.d.ts.map +1 -0
  70. package/typings/features/build/domain/emit.d.ts +42 -0
  71. package/typings/features/build/domain/emit.d.ts.map +1 -0
  72. package/typings/features/build/domain/glob.d.ts.map +1 -0
  73. package/typings/{scan.d.ts → features/build/domain/scan.d.ts} +4 -2
  74. package/typings/features/build/domain/scan.d.ts.map +1 -0
  75. package/typings/features/build/domain/tokenCollisions.d.ts +14 -0
  76. package/typings/features/build/domain/tokenCollisions.d.ts.map +1 -0
  77. package/typings/features/build/domain/tsconfig.d.ts +25 -0
  78. package/typings/features/build/domain/tsconfig.d.ts.map +1 -0
  79. package/typings/features/build/services/BundleBuilder.d.ts +68 -0
  80. package/typings/features/build/services/BundleBuilder.d.ts.map +1 -0
  81. package/typings/features/build/services/TicConfigService.d.ts +37 -0
  82. package/typings/features/build/services/TicConfigService.d.ts.map +1 -0
  83. package/typings/features/help/HelpController.d.ts +8 -0
  84. package/typings/features/help/HelpController.d.ts.map +1 -0
  85. package/typings/features/help/HelpModule.d.ts +5 -0
  86. package/typings/features/help/HelpModule.d.ts.map +1 -0
  87. package/typings/features/help/VersionController.d.ts +8 -0
  88. package/typings/features/help/VersionController.d.ts.map +1 -0
  89. package/typings/index.d.ts +25 -11
  90. package/typings/modules/CommonModule.d.ts +9 -0
  91. package/typings/modules/CommonModule.d.ts.map +1 -0
  92. package/typings/schema/ticConfigSchema.d.ts +7 -0
  93. package/typings/schema/ticConfigSchema.d.ts.map +1 -0
  94. package/typings/services/ConsoleLogger.d.ts +20 -0
  95. package/typings/services/ConsoleLogger.d.ts.map +1 -0
  96. package/typings/services/HandlebarsRenderService.d.ts +23 -0
  97. package/typings/services/HandlebarsRenderService.d.ts.map +1 -0
  98. package/typings/services/NodeFileSystemService.d.ts +21 -0
  99. package/typings/services/NodeFileSystemService.d.ts.map +1 -0
  100. package/typings/services/OutputService.d.ts +13 -0
  101. package/typings/services/OutputService.d.ts.map +1 -0
  102. package/cjm/build.js +0 -132
  103. package/cjm/cli.js +0 -84
  104. package/cjm/config.js +0 -162
  105. package/cjm/errors.js +0 -15
  106. package/cjm/exportPredicate.js +0 -13
  107. package/cjm/inclusion.js +0 -24
  108. package/cjm/predicateFile.js +0 -30
  109. package/cjm/render.js +0 -15
  110. package/cjm/utils.js +0 -2
  111. package/typings/build.d.ts +0 -45
  112. package/typings/cli.d.ts +0 -8
  113. package/typings/config.d.ts +0 -123
  114. package/typings/emit.d.ts +0 -18
  115. package/typings/errors.d.ts +0 -13
  116. package/typings/exportPredicate.d.ts +0 -36
  117. package/typings/inclusion.d.ts +0 -42
  118. package/typings/predicateFile.d.ts +0 -16
  119. package/typings/render.d.ts +0 -8
  120. package/typings/utils.d.ts +0 -3
  121. /package/cjm/{glob.js → features/build/domain/glob.js} +0 -0
  122. /package/typings/{glob.d.ts → features/build/domain/glob.d.ts} +0 -0
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.findPackageRoot = findPackageRoot;
7
+ exports.findConfigFiles = findConfigFiles;
8
+ const node_fs_1 = require("node:fs");
9
+ const node_path_1 = __importDefault(require("node:path"));
10
+ const DomainException_1 = require("../../../exceptions/DomainException");
11
+ const BuildConfig_1 = require("../BuildConfig");
12
+ function findPackageRoot(dir) {
13
+ const start = node_path_1.default.resolve(dir);
14
+ for (let current = start;; current = node_path_1.default.dirname(current)) {
15
+ if ((0, node_fs_1.existsSync)(node_path_1.default.join(current, 'package.json')))
16
+ return current;
17
+ if (node_path_1.default.dirname(current) === current)
18
+ return start;
19
+ }
20
+ }
21
+ function findConfigFiles(dir) {
22
+ const files = (0, node_fs_1.readdirSync)(dir, { withFileTypes: true })
23
+ .filter((entry) => entry.isFile() && (0, BuildConfig_1.configSuffix)(entry.name) !== undefined)
24
+ .map((entry) => entry.name)
25
+ .sort((a, b) => (a < b ? -1 : a > b ? 1 : 0));
26
+ const byStem = new Map();
27
+ for (const file of files) {
28
+ const stem = file.slice(0, -(0, BuildConfig_1.configSuffix)(file).length);
29
+ const other = byStem.get(stem);
30
+ if (other)
31
+ throw new DomainException_1.TicConfigError(`${other} and ${file} describe the same bundle; keep one`);
32
+ byStem.set(stem, file);
33
+ }
34
+ return files.map((file) => node_path_1.default.join(dir, file));
35
+ }
@@ -1,9 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BUNDLE_PROTOCOL = exports.GENERATED_HEADER = void 0;
4
+ exports.bundleView = bundleView;
3
5
  exports.emitBundle = emitBundle;
4
- const render_1 = require("./render");
6
+ const HandlebarsRenderService_1 = require("../../../services/HandlebarsRenderService");
7
+ exports.GENERATED_HEADER = '// Generated by `tic build`';
8
+ exports.BUNDLE_PROTOCOL = 'Bundle.ts.hbs';
5
9
  const RUNTIME_IMPORTS = ['IContainer', 'IContainerModule', 'IRegistration', 'Registration'];
6
- function emitBundle({ name, configPath, namespaces, classes }) {
10
+ function bundleView({ name, configPath, paths, tsconfigPath, classes }) {
7
11
  const taken = new Set([...RUNTIME_IMPORTS, 'registrations', name]);
8
12
  const uniqueName = (wanted) => {
9
13
  let candidate = wanted;
@@ -23,11 +27,8 @@ function emitBundle({ name, configPath, namespaces, classes }) {
23
27
  entry.named.push(binding === cls.exportName ? binding : `${cls.exportName} as ${binding}`);
24
28
  return binding;
25
29
  });
26
- return (0, render_1.renderProtocol)('Bundle.ts.hbs', {
27
- configPath,
28
- namespaces,
29
- name,
30
- imports: [...byFile.values()],
31
- registrations: bindings,
32
- });
30
+ return { configPath, paths, tsconfigPath, name, imports: [...byFile.values()], registrations: bindings };
31
+ }
32
+ function emitBundle(input) {
33
+ return (0, HandlebarsRenderService_1.renderProtocol)(exports.BUNDLE_PROTOCOL, bundleView(input));
33
34
  }
@@ -36,6 +36,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
36
36
  return (mod && mod.__esModule) ? mod : { "default": mod };
37
37
  };
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.isSourceFile = void 0;
39
40
  exports.listSourceFiles = listSourceFiles;
40
41
  exports.findClasses = findClasses;
41
42
  const node_fs_1 = require("node:fs");
@@ -43,6 +44,8 @@ const node_path_1 = __importDefault(require("node:path"));
43
44
  const ts = __importStar(require("typescript"));
44
45
  const SOURCE_FILE = /\.(tsx?|mts|cts)$/;
45
46
  const DECLARATION_FILE = /\.d\.[mc]?tsx?$/;
47
+ const isSourceFile = (file) => SOURCE_FILE.test(file) && !DECLARATION_FILE.test(file);
48
+ exports.isSourceFile = isSourceFile;
46
49
  function listSourceFiles(dir, recursive, isExcluded) {
47
50
  const files = [];
48
51
  const walk = (current) => {
@@ -52,7 +55,7 @@ function listSourceFiles(dir, recursive, isExcluded) {
52
55
  if (recursive && entry.name !== 'node_modules')
53
56
  walk(full);
54
57
  }
55
- else if (SOURCE_FILE.test(entry.name) && !DECLARATION_FILE.test(entry.name) && !isExcluded(full)) {
58
+ else if ((0, exports.isSourceFile)(entry.name) && !isExcluded(full)) {
56
59
  files.push(full);
57
60
  }
58
61
  }
@@ -143,11 +146,11 @@ function findClasses(file, selector, text = (0, node_fs_1.readFileSync)(file, 'u
143
146
  return false;
144
147
  if (selector.decorators && !selector.decorators.some((name) => decorators.includes(name)))
145
148
  return false;
146
- if (selector.nameGlob && !selector.nameGlob.test(className))
149
+ if (selector.name && !selector.name.test(className))
147
150
  return false;
148
151
  if (selector.excludeClasses?.includes(className))
149
152
  return false;
150
- if (selector.excludeNameGlob?.test(className))
153
+ if (selector.excludeName?.test(className))
151
154
  return false;
152
155
  return true;
153
156
  })
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.tokenCollisions = tokenCollisions;
4
+ function tokenCollisions(classes) {
5
+ const owners = new Map();
6
+ for (const cls of classes) {
7
+ for (const token of cls.tokens) {
8
+ const group = owners.get(token) ?? [];
9
+ if (!group.some((owner) => owner.className === cls.className))
10
+ group.push(cls);
11
+ owners.set(token, group);
12
+ }
13
+ }
14
+ return [...owners]
15
+ .filter(([, group]) => group.length > 1 && !scopeDisjoint(group))
16
+ .sort(([a], [b]) => (a < b ? -1 : a > b ? 1 : 0))
17
+ .map(([token, group]) => {
18
+ const names = group.map((cls) => cls.className);
19
+ return (`decorator token "${token}" is passed by ${names.join(', ')}; ` +
20
+ `registration is last-wins, exclude one with classes.excludeClasses`);
21
+ });
22
+ }
23
+ function scopeDisjoint(group) {
24
+ const [first, ...rest] = group;
25
+ return first.decoratorCalls.some(({ name, args }) => rest.every((cls) => {
26
+ const same = cls.decoratorCalls.find((call) => call.name === name);
27
+ return same !== undefined && same.args.join('\u0000') !== args.join('\u0000');
28
+ }));
29
+ }
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.loadTsconfig = loadTsconfig;
40
+ const node_fs_1 = require("node:fs");
41
+ const node_path_1 = __importDefault(require("node:path"));
42
+ const ts = __importStar(require("typescript"));
43
+ const DomainException_1 = require("../../../exceptions/DomainException");
44
+ const ImportPaths_1 = require("./ImportPaths");
45
+ const scan_1 = require("./scan");
46
+ const NO_INPUTS = 18003;
47
+ function commonDir(files) {
48
+ if (files.length === 0)
49
+ return undefined;
50
+ const [first, ...rest] = files.map((file) => node_path_1.default.dirname(file).split(node_path_1.default.sep));
51
+ let length = first.length;
52
+ for (const parts of rest) {
53
+ let i = 0;
54
+ while (i < length && i < parts.length && parts[i] === first[i])
55
+ i++;
56
+ length = i;
57
+ }
58
+ return first.slice(0, length).join(node_path_1.default.sep) || node_path_1.default.sep;
59
+ }
60
+ function loadTsconfig(tsconfig, importExtension) {
61
+ if (!(0, node_fs_1.existsSync)(tsconfig.file)) {
62
+ if (tsconfig.required)
63
+ throw new DomainException_1.TicConfigError(`tsconfig not found: ${tsconfig.file}`);
64
+ return { importPaths: new ImportPaths_1.ImportPaths([], importExtension ?? '') };
65
+ }
66
+ const { config, error } = ts.readConfigFile(tsconfig.file, ts.sys.readFile);
67
+ const parsed = ts.parseJsonConfigFileContent(config, ts.sys, node_path_1.default.dirname(tsconfig.file), undefined, tsconfig.file);
68
+ const [fatal] = [error, ...parsed.errors].filter((d) => !!d && d.code !== NO_INPUTS);
69
+ if (fatal) {
70
+ throw new DomainException_1.TicConfigError(`${tsconfig.file}: ${ts.flattenDiagnosticMessageText(fatal.messageText, '\n')}`);
71
+ }
72
+ const fileNames = parsed.fileNames.map((file) => node_path_1.default.resolve(file));
73
+ return {
74
+ importPaths: ImportPaths_1.ImportPaths.fromOptions(parsed.options, tsconfig.file, importExtension),
75
+ fileNames,
76
+ rootDir: parsed.options.rootDir ?? commonDir(fileNames.filter(scan_1.isSourceFile)) ?? node_path_1.default.dirname(tsconfig.file),
77
+ };
78
+ }
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ var __importDefault = (this && this.__importDefault) || function (mod) {
15
+ return (mod && mod.__esModule) ? mod : { "default": mod };
16
+ };
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.BundleBuilder = exports.IBundleBuilderKey = void 0;
19
+ const node_path_1 = __importDefault(require("node:path"));
20
+ const ts_ioc_container_1 = require("ts-ioc-container");
21
+ const GlobalConfig_1 = require("../../../domain/GlobalConfig");
22
+ const DomainException_1 = require("../../../exceptions/DomainException");
23
+ const HandlebarsRenderService_1 = require("../../../services/HandlebarsRenderService");
24
+ const NodeFileSystemService_1 = require("../../../services/NodeFileSystemService");
25
+ const BuildConfig_1 = require("../BuildConfig");
26
+ const configFiles_1 = require("../domain/configFiles");
27
+ const emit_1 = require("../domain/emit");
28
+ const glob_1 = require("../domain/glob");
29
+ const scan_1 = require("../domain/scan");
30
+ const tokenCollisions_1 = require("../domain/tokenCollisions");
31
+ const tsconfig_1 = require("../domain/tsconfig");
32
+ const TicConfigService_1 = require("./TicConfigService");
33
+ exports.IBundleBuilderKey = new ts_ioc_container_1.SingleToken('IBundleBuilder');
34
+ let BundleBuilder = class BundleBuilder {
35
+ cwd;
36
+ configs;
37
+ fs;
38
+ renderer;
39
+ constructor(cwd, configs, fs, renderer) {
40
+ this.cwd = cwd;
41
+ this.configs = configs;
42
+ this.fs = fs;
43
+ this.renderer = renderer;
44
+ }
45
+ build({ config, check = false } = {}) {
46
+ const resolved = config === undefined
47
+ ? (0, BuildConfig_1.resolveConfig)({ extends: BuildConfig_1.DEFAULT_EXTENDS }, node_path_1.default.join((0, configFiles_1.findPackageRoot)(this.cwd), TicConfigService_1.TSCONFIG_FILE))
48
+ : this.configs.load(node_path_1.default.resolve(this.cwd, config));
49
+ const { output, content, registrations, warnings } = this.generate(resolved);
50
+ const current = this.fs.fileExists(output) ? this.fs.readFile(output) : undefined;
51
+ const status = current === content ? 'unchanged' : check ? 'stale' : 'written';
52
+ if (status === 'written')
53
+ this.fs.writeFile(output, content);
54
+ return {
55
+ config: resolved.file,
56
+ output: { file: output, bundle: resolved.className, status, registrations, content },
57
+ warnings: [...resolved.warnings, ...warnings],
58
+ };
59
+ }
60
+ generate(config) {
61
+ const { importPaths: paths, fileNames, rootDir } = (0, tsconfig_1.loadTsconfig)(config.tsconfig, config.importExtension);
62
+ const output = config.output ?? (rootDir && node_path_1.default.join(rootDir, `${config.name}.bundle.ts`));
63
+ if (output === undefined)
64
+ throw new DomainException_1.TicConfigError('output: required when there is no tsconfig to extend');
65
+ const relative = (file) => (0, glob_1.toPosix)(node_path_1.default.relative(config.dir, file));
66
+ const { include, exclude } = config.files;
67
+ const isExcluded = (file) => {
68
+ if (file === output)
69
+ return true;
70
+ const filename = relative(file);
71
+ if (include && !include.some((glob) => glob.test(filename)))
72
+ return true;
73
+ return exclude.some((glob) => glob.test(filename));
74
+ };
75
+ const files = new Set();
76
+ if (config.files.paths) {
77
+ for (const entry of config.files.paths) {
78
+ const dir = paths.resolveNamespace(entry.path, config.dir);
79
+ for (const file of (0, scan_1.listSourceFiles)(dir, entry.recursive, isExcluded))
80
+ files.add(file);
81
+ }
82
+ }
83
+ else if (fileNames) {
84
+ for (const file of fileNames)
85
+ if ((0, scan_1.isSourceFile)(file) && !isExcluded(file))
86
+ files.add(file);
87
+ }
88
+ else {
89
+ throw new DomainException_1.TicConfigError(`files.paths: required when there is no tsconfig to extend (${config.tsconfig.file} not found)`);
90
+ }
91
+ const classes = [...files]
92
+ .sort((a, b) => (a < b ? -1 : a > b ? 1 : 0))
93
+ .flatMap((file) => {
94
+ const text = this.fs.readFile(file);
95
+ return text.startsWith(emit_1.GENERATED_HEADER) ? [] : (0, scan_1.findClasses)(file, config.classes, text);
96
+ })
97
+ .map((cls) => ({ ...cls, specifier: paths.specifier(output, cls.file) }));
98
+ const content = this.renderer.render(emit_1.BUNDLE_PROTOCOL, (0, emit_1.bundleView)({
99
+ name: config.className,
100
+ configPath: (0, glob_1.toPosix)(node_path_1.default.relative(node_path_1.default.dirname(output), config.file)),
101
+ paths: config.files.paths?.map((entry) => entry.path),
102
+ tsconfigPath: (0, glob_1.toPosix)(node_path_1.default.relative(node_path_1.default.dirname(output), config.tsconfig.file)),
103
+ classes,
104
+ }));
105
+ return { output, content, registrations: classes.length, warnings: (0, tokenCollisions_1.tokenCollisions)(classes) };
106
+ }
107
+ };
108
+ exports.BundleBuilder = BundleBuilder;
109
+ exports.BundleBuilder = BundleBuilder = __decorate([
110
+ (0, ts_ioc_container_1.register)(exports.IBundleBuilderKey),
111
+ __param(0, (0, ts_ioc_container_1.inject)((0, GlobalConfig_1.globalConfig)('cwd'))),
112
+ __param(1, (0, ts_ioc_container_1.inject)((0, ts_ioc_container_1.by)(TicConfigService_1.ITicConfigServiceKey))),
113
+ __param(2, (0, ts_ioc_container_1.inject)((0, ts_ioc_container_1.by)(NodeFileSystemService_1.IFileSystemServiceKey))),
114
+ __param(3, (0, ts_ioc_container_1.inject)((0, ts_ioc_container_1.by)(HandlebarsRenderService_1.IRenderServiceKey))),
115
+ __metadata("design:paramtypes", [String, Object, Object, Object])
116
+ ], BundleBuilder);
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ var __importDefault = (this && this.__importDefault) || function (mod) {
15
+ return (mod && mod.__esModule) ? mod : { "default": mod };
16
+ };
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.TicConfigService = exports.ITicConfigServiceKey = exports.TSCONFIG_FILE = void 0;
19
+ const node_path_1 = __importDefault(require("node:path"));
20
+ const ts_ioc_container_1 = require("ts-ioc-container");
21
+ const yaml_1 = require("yaml");
22
+ const GlobalConfig_1 = require("../../../domain/GlobalConfig");
23
+ const DomainException_1 = require("../../../exceptions/DomainException");
24
+ const NodeFileSystemService_1 = require("../../../services/NodeFileSystemService");
25
+ const BuildConfig_1 = require("../BuildConfig");
26
+ const configFiles_1 = require("../domain/configFiles");
27
+ exports.TSCONFIG_FILE = 'tsconfig.json';
28
+ exports.ITicConfigServiceKey = new ts_ioc_container_1.SingleToken('ITicConfigService');
29
+ let TicConfigService = class TicConfigService {
30
+ cwd;
31
+ fs;
32
+ constructor(cwd, fs) {
33
+ this.cwd = cwd;
34
+ this.fs = fs;
35
+ }
36
+ load(file) {
37
+ if (!this.fs.fileExists(file))
38
+ throw new DomainException_1.TicConfigError(`config file not found: ${file}`);
39
+ return (0, BuildConfig_1.resolveConfig)(parseConfig(file, this.fs.readFile(file)), file);
40
+ }
41
+ discover(named) {
42
+ if (named.length > 0)
43
+ return named.map((config) => node_path_1.default.resolve(this.cwd, config));
44
+ const root = (0, configFiles_1.findPackageRoot)(this.cwd);
45
+ const found = (0, configFiles_1.findConfigFiles)(root);
46
+ if (found.length > 0)
47
+ return found;
48
+ if (this.fs.fileExists(node_path_1.default.join(root, exports.TSCONFIG_FILE)))
49
+ return [undefined];
50
+ throw new DomainException_1.TicConfigError(`no *.bundle.{json,yaml,yml} or ${exports.TSCONFIG_FILE} in ${root}; name a config with --config`);
51
+ }
52
+ };
53
+ exports.TicConfigService = TicConfigService;
54
+ exports.TicConfigService = TicConfigService = __decorate([
55
+ (0, ts_ioc_container_1.register)(exports.ITicConfigServiceKey),
56
+ __param(0, (0, ts_ioc_container_1.inject)((0, GlobalConfig_1.globalConfig)('cwd'))),
57
+ __param(1, (0, ts_ioc_container_1.inject)((0, ts_ioc_container_1.by)(NodeFileSystemService_1.IFileSystemServiceKey))),
58
+ __metadata("design:paramtypes", [String, Object])
59
+ ], TicConfigService);
60
+ function parseConfig(file, text) {
61
+ const yaml = file.endsWith('.yaml') || file.endsWith('.yml');
62
+ try {
63
+ return yaml ? ((0, yaml_1.parse)(text) ?? {}) : JSON.parse(text);
64
+ }
65
+ catch (e) {
66
+ throw new DomainException_1.TicConfigError(`${file} is not valid ${yaml ? 'YAML' : 'JSON'}: ${e.message}`);
67
+ }
68
+ }
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.HelpController = void 0;
16
+ const ts_ioc_container_1 = require("ts-ioc-container");
17
+ const cli_1 = require("../../cli");
18
+ const OutputService_1 = require("../../services/OutputService");
19
+ let HelpController = class HelpController {
20
+ output;
21
+ constructor(output) {
22
+ this.output = output;
23
+ }
24
+ printUsage() {
25
+ this.output.write(cli_1.USAGE);
26
+ }
27
+ };
28
+ exports.HelpController = HelpController;
29
+ __decorate([
30
+ (0, cli_1.onDefault)(ts_ioc_container_1.invoke),
31
+ __metadata("design:type", Function),
32
+ __metadata("design:paramtypes", []),
33
+ __metadata("design:returntype", void 0)
34
+ ], HelpController.prototype, "printUsage", null);
35
+ exports.HelpController = HelpController = __decorate([
36
+ (0, ts_ioc_container_1.register)('help'),
37
+ __param(0, (0, ts_ioc_container_1.inject)((0, ts_ioc_container_1.by)(OutputService_1.IOutputServiceKey))),
38
+ __metadata("design:paramtypes", [Object])
39
+ ], HelpController);
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HelpModule = void 0;
4
+ const ts_ioc_container_1 = require("ts-ioc-container");
5
+ const HelpController_1 = require("./HelpController");
6
+ const VersionController_1 = require("./VersionController");
7
+ class HelpModule {
8
+ applyTo(container) {
9
+ container.addRegistration(ts_ioc_container_1.Registration.fromClass(HelpController_1.HelpController)).addRegistration(ts_ioc_container_1.Registration.fromClass(VersionController_1.VersionController));
10
+ }
11
+ }
12
+ exports.HelpModule = HelpModule;
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ var __importDefault = (this && this.__importDefault) || function (mod) {
15
+ return (mod && mod.__esModule) ? mod : { "default": mod };
16
+ };
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.VersionController = void 0;
19
+ const node_fs_1 = require("node:fs");
20
+ const node_path_1 = __importDefault(require("node:path"));
21
+ const ts_ioc_container_1 = require("ts-ioc-container");
22
+ const cli_1 = require("../../cli");
23
+ const OutputService_1 = require("../../services/OutputService");
24
+ const PACKAGE_JSON = node_path_1.default.resolve(__dirname, '../../../package.json');
25
+ let VersionController = class VersionController {
26
+ output;
27
+ constructor(output) {
28
+ this.output = output;
29
+ }
30
+ printVersion() {
31
+ this.output.write(JSON.parse((0, node_fs_1.readFileSync)(PACKAGE_JSON, 'utf8')).version);
32
+ }
33
+ };
34
+ exports.VersionController = VersionController;
35
+ __decorate([
36
+ (0, cli_1.onDefault)(ts_ioc_container_1.invoke),
37
+ __metadata("design:type", Function),
38
+ __metadata("design:paramtypes", []),
39
+ __metadata("design:returntype", void 0)
40
+ ], VersionController.prototype, "printVersion", null);
41
+ exports.VersionController = VersionController = __decorate([
42
+ (0, ts_ioc_container_1.register)('version'),
43
+ __param(0, (0, ts_ioc_container_1.inject)((0, ts_ioc_container_1.by)(OutputService_1.IOutputServiceKey))),
44
+ __metadata("design:paramtypes", [Object])
45
+ ], VersionController);
package/cjm/index.js CHANGED
@@ -1,36 +1,95 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.NamespaceNotFoundError = exports.TicConfigError = exports.TicError = exports.globToRegExp = exports.emitBundle = exports.listSourceFiles = exports.findClasses = exports.loadInclusionPredicate = exports.findConventionalPredicate = exports.INCLUSION_CONVENTION = exports.fileTags = exports.byTags = exports.loadExportPredicate = exports.findConventionalExportPredicate = exports.EXPORTS_CONVENTION = exports.ImportPaths = exports.DEFAULT_BUNDLE_NAME = exports.DEFAULT_EXCLUDE = exports.DEFAULT_CONFIG_FILE = exports.resolveConfig = exports.loadConfig = exports.run = exports.build = void 0;
4
- var build_1 = require("./build");
5
- Object.defineProperty(exports, "build", { enumerable: true, get: function () { return build_1.build; } });
3
+ exports.StdOutputService = exports.IOutputServiceKey = exports.CommonModule = exports.HelpModule = exports.globToRegExp = exports.tokenCollisions = exports.GENERATED_HEADER = exports.BUNDLE_PROTOCOL = exports.bundleView = exports.emitBundle = exports.listSourceFiles = exports.isSourceFile = exports.findClasses = exports.loadTsconfig = exports.ImportPaths = exports.ticConfigJsonSchema = exports.findPackageRoot = exports.findConfigFiles = exports.toClassName = exports.DEFAULT_DECORATORS = exports.DEFAULT_BUNDLE_NAME = exports.DEFAULT_EXCLUDE = exports.DEFAULT_EXTENDS = exports.CONFIG_FILE_SUFFIXES = exports.BUNDLE_CONFIG_SCHEMA = exports.resolveConfig = exports.TSCONFIG_FILE = exports.ITicConfigServiceKey = exports.TicConfigService = exports.IBundleBuilderKey = exports.BundleBuilder = exports.BUILD_OPTIONS = exports.BuildController = exports.BuildModule = exports.USAGE = exports.IErrorHandlerKey = exports.validate = exports.parseOptions = exports.commandArgs = exports.DEFAULT_ACTION = exports.onDefault = exports.action = exports.Application = exports.globalConfig = exports.GlobalConfigKey = exports.CliIoKey = exports.createContainer = exports.loadConfig = exports.run = exports.build = void 0;
4
+ exports.ExceptionHandler = exports.StaleBundlesError = exports.UsageError = exports.UnknownActionError = exports.UnknownCommandError = exports.MissingCommandError = exports.NamespaceNotFoundError = exports.TicConfigError = exports.TicError = exports.renderProtocol = exports.HandlebarsRenderService = exports.IRenderServiceKey = exports.NodeFileSystemService = exports.IFileSystemServiceKey = exports.ConsoleLogger = exports.ILoggerKey = void 0;
5
+ var app_1 = require("./app");
6
+ Object.defineProperty(exports, "build", { enumerable: true, get: function () { return app_1.build; } });
7
+ Object.defineProperty(exports, "run", { enumerable: true, get: function () { return app_1.run; } });
8
+ Object.defineProperty(exports, "loadConfig", { enumerable: true, get: function () { return app_1.loadConfig; } });
9
+ Object.defineProperty(exports, "createContainer", { enumerable: true, get: function () { return app_1.createContainer; } });
10
+ var CliIo_1 = require("./domain/CliIo");
11
+ Object.defineProperty(exports, "CliIoKey", { enumerable: true, get: function () { return CliIo_1.CliIoKey; } });
12
+ var GlobalConfig_1 = require("./domain/GlobalConfig");
13
+ Object.defineProperty(exports, "GlobalConfigKey", { enumerable: true, get: function () { return GlobalConfig_1.GlobalConfigKey; } });
14
+ Object.defineProperty(exports, "globalConfig", { enumerable: true, get: function () { return GlobalConfig_1.globalConfig; } });
6
15
  var cli_1 = require("./cli");
7
- Object.defineProperty(exports, "run", { enumerable: true, get: function () { return cli_1.run; } });
8
- var config_1 = require("./config");
9
- Object.defineProperty(exports, "loadConfig", { enumerable: true, get: function () { return config_1.loadConfig; } });
10
- Object.defineProperty(exports, "resolveConfig", { enumerable: true, get: function () { return config_1.resolveConfig; } });
11
- Object.defineProperty(exports, "DEFAULT_CONFIG_FILE", { enumerable: true, get: function () { return config_1.DEFAULT_CONFIG_FILE; } });
12
- Object.defineProperty(exports, "DEFAULT_EXCLUDE", { enumerable: true, get: function () { return config_1.DEFAULT_EXCLUDE; } });
13
- Object.defineProperty(exports, "DEFAULT_BUNDLE_NAME", { enumerable: true, get: function () { return config_1.DEFAULT_BUNDLE_NAME; } });
14
- var ImportPaths_1 = require("./ImportPaths");
16
+ Object.defineProperty(exports, "Application", { enumerable: true, get: function () { return cli_1.Application; } });
17
+ Object.defineProperty(exports, "action", { enumerable: true, get: function () { return cli_1.action; } });
18
+ Object.defineProperty(exports, "onDefault", { enumerable: true, get: function () { return cli_1.onDefault; } });
19
+ Object.defineProperty(exports, "DEFAULT_ACTION", { enumerable: true, get: function () { return cli_1.DEFAULT_ACTION; } });
20
+ Object.defineProperty(exports, "commandArgs", { enumerable: true, get: function () { return cli_1.commandArgs; } });
21
+ Object.defineProperty(exports, "parseOptions", { enumerable: true, get: function () { return cli_1.parseOptions; } });
22
+ Object.defineProperty(exports, "validate", { enumerable: true, get: function () { return cli_1.validate; } });
23
+ Object.defineProperty(exports, "IErrorHandlerKey", { enumerable: true, get: function () { return cli_1.IErrorHandlerKey; } });
24
+ Object.defineProperty(exports, "USAGE", { enumerable: true, get: function () { return cli_1.USAGE; } });
25
+ var BuildModule_1 = require("./features/build/BuildModule");
26
+ Object.defineProperty(exports, "BuildModule", { enumerable: true, get: function () { return BuildModule_1.BuildModule; } });
27
+ var BuildController_1 = require("./features/build/BuildController");
28
+ Object.defineProperty(exports, "BuildController", { enumerable: true, get: function () { return BuildController_1.BuildController; } });
29
+ Object.defineProperty(exports, "BUILD_OPTIONS", { enumerable: true, get: function () { return BuildController_1.BUILD_OPTIONS; } });
30
+ var BundleBuilder_1 = require("./features/build/services/BundleBuilder");
31
+ Object.defineProperty(exports, "BundleBuilder", { enumerable: true, get: function () { return BundleBuilder_1.BundleBuilder; } });
32
+ Object.defineProperty(exports, "IBundleBuilderKey", { enumerable: true, get: function () { return BundleBuilder_1.IBundleBuilderKey; } });
33
+ var TicConfigService_1 = require("./features/build/services/TicConfigService");
34
+ Object.defineProperty(exports, "TicConfigService", { enumerable: true, get: function () { return TicConfigService_1.TicConfigService; } });
35
+ Object.defineProperty(exports, "ITicConfigServiceKey", { enumerable: true, get: function () { return TicConfigService_1.ITicConfigServiceKey; } });
36
+ Object.defineProperty(exports, "TSCONFIG_FILE", { enumerable: true, get: function () { return TicConfigService_1.TSCONFIG_FILE; } });
37
+ var BuildConfig_1 = require("./features/build/BuildConfig");
38
+ Object.defineProperty(exports, "resolveConfig", { enumerable: true, get: function () { return BuildConfig_1.resolveConfig; } });
39
+ Object.defineProperty(exports, "BUNDLE_CONFIG_SCHEMA", { enumerable: true, get: function () { return BuildConfig_1.BUNDLE_CONFIG_SCHEMA; } });
40
+ Object.defineProperty(exports, "CONFIG_FILE_SUFFIXES", { enumerable: true, get: function () { return BuildConfig_1.CONFIG_FILE_SUFFIXES; } });
41
+ Object.defineProperty(exports, "DEFAULT_EXTENDS", { enumerable: true, get: function () { return BuildConfig_1.DEFAULT_EXTENDS; } });
42
+ Object.defineProperty(exports, "DEFAULT_EXCLUDE", { enumerable: true, get: function () { return BuildConfig_1.DEFAULT_EXCLUDE; } });
43
+ Object.defineProperty(exports, "DEFAULT_BUNDLE_NAME", { enumerable: true, get: function () { return BuildConfig_1.DEFAULT_BUNDLE_NAME; } });
44
+ Object.defineProperty(exports, "DEFAULT_DECORATORS", { enumerable: true, get: function () { return BuildConfig_1.DEFAULT_DECORATORS; } });
45
+ Object.defineProperty(exports, "toClassName", { enumerable: true, get: function () { return BuildConfig_1.toClassName; } });
46
+ var configFiles_1 = require("./features/build/domain/configFiles");
47
+ Object.defineProperty(exports, "findConfigFiles", { enumerable: true, get: function () { return configFiles_1.findConfigFiles; } });
48
+ Object.defineProperty(exports, "findPackageRoot", { enumerable: true, get: function () { return configFiles_1.findPackageRoot; } });
49
+ var ticConfigSchema_1 = require("./schema/ticConfigSchema");
50
+ Object.defineProperty(exports, "ticConfigJsonSchema", { enumerable: true, get: function () { return ticConfigSchema_1.ticConfigJsonSchema; } });
51
+ var ImportPaths_1 = require("./features/build/domain/ImportPaths");
15
52
  Object.defineProperty(exports, "ImportPaths", { enumerable: true, get: function () { return ImportPaths_1.ImportPaths; } });
16
- var exportPredicate_1 = require("./exportPredicate");
17
- Object.defineProperty(exports, "EXPORTS_CONVENTION", { enumerable: true, get: function () { return exportPredicate_1.EXPORTS_CONVENTION; } });
18
- Object.defineProperty(exports, "findConventionalExportPredicate", { enumerable: true, get: function () { return exportPredicate_1.findConventionalExportPredicate; } });
19
- Object.defineProperty(exports, "loadExportPredicate", { enumerable: true, get: function () { return exportPredicate_1.loadExportPredicate; } });
20
- var inclusion_1 = require("./inclusion");
21
- Object.defineProperty(exports, "byTags", { enumerable: true, get: function () { return inclusion_1.byTags; } });
22
- Object.defineProperty(exports, "fileTags", { enumerable: true, get: function () { return inclusion_1.fileTags; } });
23
- Object.defineProperty(exports, "INCLUSION_CONVENTION", { enumerable: true, get: function () { return inclusion_1.INCLUSION_CONVENTION; } });
24
- Object.defineProperty(exports, "findConventionalPredicate", { enumerable: true, get: function () { return inclusion_1.findConventionalPredicate; } });
25
- Object.defineProperty(exports, "loadInclusionPredicate", { enumerable: true, get: function () { return inclusion_1.loadInclusionPredicate; } });
26
- var scan_1 = require("./scan");
53
+ var tsconfig_1 = require("./features/build/domain/tsconfig");
54
+ Object.defineProperty(exports, "loadTsconfig", { enumerable: true, get: function () { return tsconfig_1.loadTsconfig; } });
55
+ var scan_1 = require("./features/build/domain/scan");
27
56
  Object.defineProperty(exports, "findClasses", { enumerable: true, get: function () { return scan_1.findClasses; } });
57
+ Object.defineProperty(exports, "isSourceFile", { enumerable: true, get: function () { return scan_1.isSourceFile; } });
28
58
  Object.defineProperty(exports, "listSourceFiles", { enumerable: true, get: function () { return scan_1.listSourceFiles; } });
29
- var emit_1 = require("./emit");
59
+ var emit_1 = require("./features/build/domain/emit");
30
60
  Object.defineProperty(exports, "emitBundle", { enumerable: true, get: function () { return emit_1.emitBundle; } });
31
- var glob_1 = require("./glob");
61
+ Object.defineProperty(exports, "bundleView", { enumerable: true, get: function () { return emit_1.bundleView; } });
62
+ Object.defineProperty(exports, "BUNDLE_PROTOCOL", { enumerable: true, get: function () { return emit_1.BUNDLE_PROTOCOL; } });
63
+ Object.defineProperty(exports, "GENERATED_HEADER", { enumerable: true, get: function () { return emit_1.GENERATED_HEADER; } });
64
+ var tokenCollisions_1 = require("./features/build/domain/tokenCollisions");
65
+ Object.defineProperty(exports, "tokenCollisions", { enumerable: true, get: function () { return tokenCollisions_1.tokenCollisions; } });
66
+ var glob_1 = require("./features/build/domain/glob");
32
67
  Object.defineProperty(exports, "globToRegExp", { enumerable: true, get: function () { return glob_1.globToRegExp; } });
33
- var errors_1 = require("./errors");
34
- Object.defineProperty(exports, "TicError", { enumerable: true, get: function () { return errors_1.TicError; } });
35
- Object.defineProperty(exports, "TicConfigError", { enumerable: true, get: function () { return errors_1.TicConfigError; } });
36
- Object.defineProperty(exports, "NamespaceNotFoundError", { enumerable: true, get: function () { return errors_1.NamespaceNotFoundError; } });
68
+ var HelpModule_1 = require("./features/help/HelpModule");
69
+ Object.defineProperty(exports, "HelpModule", { enumerable: true, get: function () { return HelpModule_1.HelpModule; } });
70
+ var CommonModule_1 = require("./modules/CommonModule");
71
+ Object.defineProperty(exports, "CommonModule", { enumerable: true, get: function () { return CommonModule_1.CommonModule; } });
72
+ var OutputService_1 = require("./services/OutputService");
73
+ Object.defineProperty(exports, "IOutputServiceKey", { enumerable: true, get: function () { return OutputService_1.IOutputServiceKey; } });
74
+ Object.defineProperty(exports, "StdOutputService", { enumerable: true, get: function () { return OutputService_1.StdOutputService; } });
75
+ var ConsoleLogger_1 = require("./services/ConsoleLogger");
76
+ Object.defineProperty(exports, "ILoggerKey", { enumerable: true, get: function () { return ConsoleLogger_1.ILoggerKey; } });
77
+ Object.defineProperty(exports, "ConsoleLogger", { enumerable: true, get: function () { return ConsoleLogger_1.ConsoleLogger; } });
78
+ var NodeFileSystemService_1 = require("./services/NodeFileSystemService");
79
+ Object.defineProperty(exports, "IFileSystemServiceKey", { enumerable: true, get: function () { return NodeFileSystemService_1.IFileSystemServiceKey; } });
80
+ Object.defineProperty(exports, "NodeFileSystemService", { enumerable: true, get: function () { return NodeFileSystemService_1.NodeFileSystemService; } });
81
+ var HandlebarsRenderService_1 = require("./services/HandlebarsRenderService");
82
+ Object.defineProperty(exports, "IRenderServiceKey", { enumerable: true, get: function () { return HandlebarsRenderService_1.IRenderServiceKey; } });
83
+ Object.defineProperty(exports, "HandlebarsRenderService", { enumerable: true, get: function () { return HandlebarsRenderService_1.HandlebarsRenderService; } });
84
+ Object.defineProperty(exports, "renderProtocol", { enumerable: true, get: function () { return HandlebarsRenderService_1.renderProtocol; } });
85
+ var DomainException_1 = require("./exceptions/DomainException");
86
+ Object.defineProperty(exports, "TicError", { enumerable: true, get: function () { return DomainException_1.TicError; } });
87
+ Object.defineProperty(exports, "TicConfigError", { enumerable: true, get: function () { return DomainException_1.TicConfigError; } });
88
+ Object.defineProperty(exports, "NamespaceNotFoundError", { enumerable: true, get: function () { return DomainException_1.NamespaceNotFoundError; } });
89
+ Object.defineProperty(exports, "MissingCommandError", { enumerable: true, get: function () { return DomainException_1.MissingCommandError; } });
90
+ Object.defineProperty(exports, "UnknownCommandError", { enumerable: true, get: function () { return DomainException_1.UnknownCommandError; } });
91
+ Object.defineProperty(exports, "UnknownActionError", { enumerable: true, get: function () { return DomainException_1.UnknownActionError; } });
92
+ Object.defineProperty(exports, "UsageError", { enumerable: true, get: function () { return DomainException_1.UsageError; } });
93
+ Object.defineProperty(exports, "StaleBundlesError", { enumerable: true, get: function () { return DomainException_1.StaleBundlesError; } });
94
+ var ExceptionHandler_1 = require("./exceptions/ExceptionHandler");
95
+ Object.defineProperty(exports, "ExceptionHandler", { enumerable: true, get: function () { return ExceptionHandler_1.ExceptionHandler; } });