takomo 6.0.0 → 6.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.
package/dist/index.d.ts CHANGED
@@ -22,6 +22,10 @@ export { CommandRole, OutputFormat } from "./takomo-core/command.js";
22
22
  export { InitSchemaProps, SchemaProvider, } from "./takomo-stacks-model/schemas.js";
23
23
  export { DeploymentStatus, Label } from "./targets/targets-model.js";
24
24
  export { EjsTemplateEngineProvider } from "./templating/ejs/ejs-template-engine-provider.js";
25
+ export { HandlebarsHelperProvider, InitHandlebarsHelperProps, } from "./templating/handlebars/handlebars-helper-provider.js";
26
+ export { HandlebarsHelper } from "./templating/handlebars/handlebars-helper.js";
27
+ export { HandlebarsTemplateEngineProvider, HandlebarsTemplateEngineProviderProps, } from "./templating/handlebars/handlebars-template-engine-provider.js";
28
+ export { TemplateEngineProps, TemplateEngineProvider, } from "./templating/template-engine-provider.js";
25
29
  export { RenderTemplateFileProps, RenderTemplateProps, TemplateEngine, } from "./templating/template-engine.js";
26
30
  export { FilePath } from "./utils/files.js";
27
31
  export { LogLevel, TkmLogger } from "./utils/logging.js";
package/dist/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import "source-map-support/register.js";
2
2
  export { run } from "./cli/index.js";
3
3
  export { EjsTemplateEngineProvider } from "./templating/ejs/ejs-template-engine-provider.js";
4
+ export { HandlebarsTemplateEngineProvider, } from "./templating/handlebars/handlebars-template-engine-provider.js";
4
5
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,gCAAgC,CAAA;AAavC,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AA0DpC,OAAO,EAAE,yBAAyB,EAAE,MAAM,kDAAkD,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,gCAAgC,CAAA;AAavC,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AA0DpC,OAAO,EAAE,yBAAyB,EAAE,MAAM,kDAAkD,CAAA;AAM5F,OAAO,EACL,gCAAgC,GAEjC,MAAM,gEAAgE,CAAA"}
@@ -15,6 +15,7 @@ export const createFileSystemCommandContext = async (props) => {
15
15
  write: true,
16
16
  bundle: true,
17
17
  sourcemap: true,
18
+ packages: "external",
18
19
  platform: "node",
19
20
  logLevel: "error",
20
21
  target: "node18.14.2",
@@ -1 +1 @@
1
- {"version":3,"file":"create-file-system-command-context.js","sourceRoot":"","sources":["../../../src/takomo-config-repository-fs/context/create-file-system-command-context.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAO/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AAEzE,OAAO,EAAE,UAAU,EAAY,MAAM,sBAAsB,CAAA;AAG3D,OAAO,EAAE,sBAAsB,EAAoB,MAAM,iBAAiB,CAAA;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AA0BrD,MAAM,CAAC,MAAM,8BAA8B,GAAG,KAAK,EACjD,KAA0C,EACP,EAAE;IACrC,MAAM,EACJ,KAAK,EACL,YAAY,EACZ,QAAQ,EACR,kBAAkB,EAClB,iBAAiB,EACjB,gCAAgC,EAChC,sCAAsC,EACtC,WAAW,EACX,SAAS,EACT,UAAU,EACV,iBAAiB,EACjB,gBAAgB,EAChB,IAAI,EACJ,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,MAAM,GACP,GAAG,KAAK,CAAA;IAET,MAAM,SAAS,GAAG,sBAAsB,CAAC,UAAU,CAAC,CAAA;IAEpD,MAAM,aAAa,GAAG,MAAM,iBAAiB,CAC3C,UAAU,EACV,SAAS,CAAC,iBAAiB,EAC3B,gBAAgB,CACjB,CAAA;IAED,MAAM,CAAC,WAAW,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAA;IAEpD,IAAI,aAAa,CAAC,OAAO,IAAI,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE;QAC1D,IAAI,MAAM,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;YACtD,MAAM,CAAC,KAAK,CACV,2CAA2C,aAAa,CAAC,OAAO,CAAC,UAAU,EAAE,CAC9E,CAAA;YAED,MAAM,KAAK,CAAC;gBACV,KAAK,EAAE,IAAI;gBACX,MAAM,EAAE,IAAI;gBACZ,SAAS,EAAE,IAAI;gBACf,QAAQ,EAAE,MAAM;gBAChB,QAAQ,EAAE,OAAO;gBACjB,MAAM,EAAE,aAAa;gBACrB,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,OAAO;gBACtC,WAAW,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC;gBAC/C,qDAAqD;gBACrD,MAAM,EAAE;oBACN,EAAE,EAAE,yFAAyF;iBAC9F;aACF,CAAC,CAAA;SACH;aAAM;YACL,MAAM,CAAC,KAAK,CACV,oDAAoD,aAAa,CAAC,OAAO,CAAC,UAAU,EAAE,CACvF,CAAA;SACF;KACF;IAED,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;IAE7C,MAAM,mBAAmB,GAAG,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACpE,QAAQ;KACT,CAAC,CAAC,CAAA;IAEH,MAAM,eAAe,GAAG,CAAC,GAAG,mBAAmB,EAAE,GAAG,YAAY,CAAC,CAAA;IAEjE,MAAM,SAAS,GAAG,MAAM,cAAc,CACpC,UAAU,EACV,eAAe,EACf,IAAI,EACJ,YAAY,CACb,CAAA;IAED,OAAO;QACL,SAAS;QACT,UAAU;QACV,KAAK;QACL,UAAU;QACV,YAAY;QACZ,QAAQ;QACR,kBAAkB;QAClB,iBAAiB;QACjB,sCAAsC;QACtC,gCAAgC;QAChC,WAAW;QACX,SAAS;QACT,iBAAiB;QACjB,aAAa;QACb,OAAO;QACP,SAAS;KACV,CAAA;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"create-file-system-command-context.js","sourceRoot":"","sources":["../../../src/takomo-config-repository-fs/context/create-file-system-command-context.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAO/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AAEzE,OAAO,EAAE,UAAU,EAAY,MAAM,sBAAsB,CAAA;AAG3D,OAAO,EAAE,sBAAsB,EAAoB,MAAM,iBAAiB,CAAA;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AA0BrD,MAAM,CAAC,MAAM,8BAA8B,GAAG,KAAK,EACjD,KAA0C,EACP,EAAE;IACrC,MAAM,EACJ,KAAK,EACL,YAAY,EACZ,QAAQ,EACR,kBAAkB,EAClB,iBAAiB,EACjB,gCAAgC,EAChC,sCAAsC,EACtC,WAAW,EACX,SAAS,EACT,UAAU,EACV,iBAAiB,EACjB,gBAAgB,EAChB,IAAI,EACJ,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,MAAM,GACP,GAAG,KAAK,CAAA;IAET,MAAM,SAAS,GAAG,sBAAsB,CAAC,UAAU,CAAC,CAAA;IAEpD,MAAM,aAAa,GAAG,MAAM,iBAAiB,CAC3C,UAAU,EACV,SAAS,CAAC,iBAAiB,EAC3B,gBAAgB,CACjB,CAAA;IAED,MAAM,CAAC,WAAW,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAA;IAEpD,IAAI,aAAa,CAAC,OAAO,IAAI,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE;QAC1D,IAAI,MAAM,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;YACtD,MAAM,CAAC,KAAK,CACV,2CAA2C,aAAa,CAAC,OAAO,CAAC,UAAU,EAAE,CAC9E,CAAA;YAED,MAAM,KAAK,CAAC;gBACV,KAAK,EAAE,IAAI;gBACX,MAAM,EAAE,IAAI;gBACZ,SAAS,EAAE,IAAI;gBACf,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE,MAAM;gBAChB,QAAQ,EAAE,OAAO;gBACjB,MAAM,EAAE,aAAa;gBACrB,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,OAAO;gBACtC,WAAW,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC;gBAC/C,qDAAqD;gBACrD,MAAM,EAAE;oBACN,EAAE,EAAE,yFAAyF;iBAC9F;aACF,CAAC,CAAA;SACH;aAAM;YACL,MAAM,CAAC,KAAK,CACV,oDAAoD,aAAa,CAAC,OAAO,CAAC,UAAU,EAAE,CACvF,CAAA;SACF;KACF;IAED,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;IAE7C,MAAM,mBAAmB,GAAG,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACpE,QAAQ;KACT,CAAC,CAAC,CAAA;IAEH,MAAM,eAAe,GAAG,CAAC,GAAG,mBAAmB,EAAE,GAAG,YAAY,CAAC,CAAA;IAEjE,MAAM,SAAS,GAAG,MAAM,cAAc,CACpC,UAAU,EACV,eAAe,EACf,IAAI,EACJ,YAAY,CACb,CAAA;IAED,OAAO;QACL,SAAS;QACT,UAAU;QACV,KAAK;QACL,UAAU;QACV,YAAY;QACZ,QAAQ;QACR,kBAAkB;QAClB,iBAAiB;QACjB,sCAAsC;QACtC,gCAAgC;QAChC,WAAW;QACX,SAAS;QACT,iBAAiB;QACjB,aAAa;QACb,OAAO;QACP,SAAS;KACV,CAAA;AACH,CAAC,CAAA"}
@@ -1,7 +1,7 @@
1
1
  import path from "path";
2
2
  import { ROOT_STACK_GROUP_PATH } from "../../takomo-stacks-model/constants.js";
3
3
  import { EjsTemplateEngineProvider } from "../../templating/ejs/ejs-template-engine-provider.js";
4
- import { HandlebarsTemplateEngineProvider } from "../../templating/handlebars/handlebars-template-engine-provider.js";
4
+ import { InternalHandlebarsTemplateEngineProvider } from "../../templating/handlebars/internal-handlebars-template-engine-provider.js";
5
5
  import { dirExists, fileExists, readFileContents, } from "../../utils/files.js";
6
6
  import { buildStackGroupConfigNode } from "./config-tree.js";
7
7
  import { loadCustomHooks, loadCustomResolvers, loadCustomSchemas, } from "./extensions.js";
@@ -26,7 +26,7 @@ const getTemplateEngineProvider = (takomoConfig, projectConfig, logger, partials
26
26
  }
27
27
  return projectConfig.templateEngine === "ejs"
28
28
  ? new EjsTemplateEngineProvider({ logger })
29
- : new HandlebarsTemplateEngineProvider({
29
+ : new InternalHandlebarsTemplateEngineProvider({
30
30
  logger,
31
31
  partialsDir,
32
32
  helpersDir,
@@ -1 +1 @@
1
- {"version":3,"file":"config-repository.js","sourceRoot":"","sources":["../../../src/takomo-config-repository-fs/stacks/config-repository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config-repository.js","sourceRoot":"","sources":["../../../src/takomo-config-repository-fs/stacks/config-repository.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Handlebars helper provider
3
+ */
4
+ import { FilePath } from "../../utils/files.js";
5
+ import { TkmLogger } from "../../utils/logging.js";
6
+ import { HandlebarsHelper } from "./handlebars-helper.js";
7
+ export interface InitHandlebarsHelperProps {
8
+ /**
9
+ * Current project directory.
10
+ */
11
+ readonly projectDir: FilePath;
12
+ /**
13
+ * Logger instance.
14
+ */
15
+ readonly logger: TkmLogger;
16
+ }
17
+ export interface HandlebarsHelperProvider {
18
+ /**
19
+ * Initialize a Handlebars helper
20
+ */
21
+ readonly init: (props: InitHandlebarsHelperProps) => Promise<HandlebarsHelper>;
22
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=handlebars-helper-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handlebars-helper-provider.js","sourceRoot":"","sources":["../../../src/templating/handlebars/handlebars-helper-provider.ts"],"names":[],"mappings":""}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Handlebars helper
3
+ */
4
+ export interface HandlebarsHelper {
5
+ /**
6
+ * Name which to refer to the helper from a Handlebars template.
7
+ */
8
+ readonly name: string;
9
+ /**
10
+ * Helper function to be invoked when a Handlebars template is rendered.
11
+ */
12
+ readonly fn: (...args: any) => unknown;
13
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=handlebars-helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handlebars-helper.js","sourceRoot":"","sources":["../../../src/templating/handlebars/handlebars-helper.ts"],"names":[],"mappings":""}
@@ -1,17 +1,31 @@
1
- import { InternalTakomoProjectConfig } from "../../config/project-config.js";
2
1
  import { FilePath } from "../../utils/files.js";
3
- import { TkmLogger } from "../../utils/logging.js";
4
2
  import { TemplateEngineProps, TemplateEngineProvider } from "../template-engine-provider.js";
5
3
  import { TemplateEngine } from "../template-engine.js";
6
- interface HandlebarsTemplateEngineProviderProps {
7
- readonly partialsDir: FilePath;
8
- readonly helpersDir: FilePath;
9
- readonly projectConfig: InternalTakomoProjectConfig;
10
- readonly logger: TkmLogger;
4
+ import { HandlebarsHelperProvider } from "./handlebars-helper-provider.js";
5
+ import { HandlebarsHelper } from "./handlebars-helper.js";
6
+ export interface HandlebarsTemplateEngineProviderProps {
7
+ /**
8
+ * List of directories from where to load Handlebars partial files.
9
+ */
10
+ readonly partialsDirs?: ReadonlyArray<FilePath>;
11
+ /**
12
+ * List of directories from where to load Handlebars helpers implemented with plain JavaScript.
13
+ */
14
+ readonly helpersDirs?: ReadonlyArray<FilePath>;
15
+ /**
16
+ * List of helpers.
17
+ */
18
+ readonly helpers?: ReadonlyArray<HandlebarsHelper>;
19
+ /**
20
+ * List of helper providers.
21
+ */
22
+ readonly helperProviders?: ReadonlyArray<HandlebarsHelperProvider>;
11
23
  }
24
+ /**
25
+ * Handlebars template engine provider.
26
+ */
12
27
  export declare class HandlebarsTemplateEngineProvider implements TemplateEngineProvider {
13
28
  #private;
14
- constructor(props: HandlebarsTemplateEngineProviderProps);
29
+ constructor(props?: HandlebarsTemplateEngineProviderProps);
15
30
  init({ projectDir, logger, }: TemplateEngineProps): Promise<TemplateEngine>;
16
31
  }
17
- export {};
@@ -1,53 +1,36 @@
1
- import { TakomoError } from "../../utils/errors.js";
2
- import { dirExists } from "../../utils/files.js";
1
+ import { expandFilePath } from "../../utils/files.js";
3
2
  import { HandlebarsTemplateEngine } from "./handlebars-template-engine.js";
4
3
  import { loadHandlebarsHelpers } from "./load-handlebars-helpers.js";
5
4
  import { loadHandlebarsPartials } from "./load-handlebars-partials.js";
5
+ /**
6
+ * Handlebars template engine provider.
7
+ */
6
8
  export class HandlebarsTemplateEngineProvider {
7
- #partialsDir;
8
- #helpersDir;
9
- #projectConfig;
10
- #logger;
11
- constructor(props) {
12
- this.#partialsDir = props.partialsDir;
13
- this.#helpersDir = props.helpersDir;
14
- this.#projectConfig = props.projectConfig;
15
- this.#logger = props.logger;
9
+ #partialsDirs;
10
+ #helpersDirs;
11
+ #helpers;
12
+ #helperProviders;
13
+ constructor(props = {}) {
14
+ this.#partialsDirs = props.partialsDirs ?? [];
15
+ this.#helpersDirs = props.helpersDirs ?? [];
16
+ this.#helpers = props.helpers ?? [];
17
+ this.#helperProviders = props.helperProviders ?? [];
16
18
  }
17
19
  async init({ projectDir, logger, }) {
18
20
  const te = new HandlebarsTemplateEngine({ projectDir, logger });
19
- for (const config of this.#projectConfig.helpers) {
20
- this.#logger.debug(`Register Handlebars helper from NPM package: ${config.package}`);
21
- const helperPackage = await import(config.package);
22
- if (!helperPackage.default) {
23
- throw new TakomoError(`Handlebars helper loaded from an NPM package ${config.package} does not have default export`);
24
- }
25
- const helper = helperPackage.default;
26
- const helperWithName = config.name
27
- ? { ...helper, name: config.name }
28
- : helper;
29
- if (typeof helperWithName.fn !== "function") {
30
- throw new TakomoError(`Handlebars helper loaded from an NPM package ${config.package} does not export property 'fn' of type function`);
31
- }
32
- if (typeof helperWithName.name !== "string") {
33
- throw new TakomoError(`Handlebars helper loaded from an NPM package ${config.package} does not export property 'name' of type string`);
34
- }
35
- te.registerHelper(helperWithName.name, helperWithName.fn);
36
- }
37
- const defaultHelpersDirExists = await dirExists(this.#helpersDir);
38
- const additionalHelpersDirs = this.#projectConfig.helpersDir;
39
- const helpersDirs = defaultHelpersDirExists
40
- ? [this.#helpersDir, ...additionalHelpersDirs]
41
- : additionalHelpersDirs;
42
- const defaultPartialsDirExists = await dirExists(this.#partialsDir);
43
- const additionalPartialsDirs = this.#projectConfig.partialsDir;
44
- const partialsDirs = defaultPartialsDirExists
45
- ? [this.#partialsDir, ...additionalPartialsDirs]
46
- : additionalPartialsDirs;
21
+ const helpersDirs = this.#helpersDirs.map((dir) => expandFilePath(projectDir, dir));
22
+ const partialsDirs = this.#partialsDirs.map((dir) => expandFilePath(projectDir, dir));
47
23
  await Promise.all([
48
- loadHandlebarsHelpers(helpersDirs, this.#logger, te),
49
- loadHandlebarsPartials(partialsDirs, this.#logger, te),
24
+ loadHandlebarsHelpers(helpersDirs, logger, te),
25
+ loadHandlebarsPartials(partialsDirs, logger, te),
50
26
  ]);
27
+ this.#helpers.forEach((helper) => {
28
+ te.registerHelper(helper.name, helper.fn);
29
+ });
30
+ const helpers = await Promise.all(this.#helperProviders.map((provider) => provider.init({ projectDir, logger })));
31
+ helpers.forEach((helper) => {
32
+ te.registerHelper(helper.name, helper.fn);
33
+ });
51
34
  return te;
52
35
  }
53
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"handlebars-template-engine-provider.js","sourceRoot":"","sources":["../../../src/templating/handlebars/handlebars-template-engine-provider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACnD,OAAO,EAAE,SAAS,EAAY,MAAM,sBAAsB,CAAA;AAO1D,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAA;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AAStE,MAAM,OAAO,gCAAgC;IAGlC,YAAY,CAAU;IACtB,WAAW,CAAU;IACrB,cAAc,CAA6B;IAC3C,OAAO,CAAW;IAE3B,YAAY,KAA4C;QACtD,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,WAAW,CAAA;QACrC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,UAAU,CAAA;QACnC,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,aAAa,CAAA;QACzC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,MAAM,CAAA;IAC7B,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EACT,UAAU,EACV,MAAM,GACc;QACpB,MAAM,EAAE,GAAG,IAAI,wBAAwB,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAA;QAE/D,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;YAChD,IAAI,CAAC,OAAO,CAAC,KAAK,CAChB,gDAAgD,MAAM,CAAC,OAAO,EAAE,CACjE,CAAA;YACD,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;YAElD,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;gBAC1B,MAAM,IAAI,WAAW,CACnB,gDAAgD,MAAM,CAAC,OAAO,+BAA+B,CAC9F,CAAA;aACF;YAED,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAA;YAEpC,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI;gBAChC,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE;gBAClC,CAAC,CAAC,MAAM,CAAA;YAEV,IAAI,OAAO,cAAc,CAAC,EAAE,KAAK,UAAU,EAAE;gBAC3C,MAAM,IAAI,WAAW,CACnB,gDAAgD,MAAM,CAAC,OAAO,iDAAiD,CAChH,CAAA;aACF;YAED,IAAI,OAAO,cAAc,CAAC,IAAI,KAAK,QAAQ,EAAE;gBAC3C,MAAM,IAAI,WAAW,CACnB,gDAAgD,MAAM,CAAC,OAAO,iDAAiD,CAChH,CAAA;aACF;YAED,EAAE,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE,CAAC,CAAA;SAC1D;QAED,MAAM,uBAAuB,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QACjE,MAAM,qBAAqB,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAA;QAE5D,MAAM,WAAW,GAAG,uBAAuB;YACzC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,qBAAqB,CAAC;YAC9C,CAAC,CAAC,qBAAqB,CAAA;QAEzB,MAAM,wBAAwB,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QACnE,MAAM,sBAAsB,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAA;QAE9D,MAAM,YAAY,GAAG,wBAAwB;YAC3C,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,sBAAsB,CAAC;YAChD,CAAC,CAAC,sBAAsB,CAAA;QAE1B,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,qBAAqB,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;YACpD,sBAAsB,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;SACvD,CAAC,CAAA;QAEF,OAAO,EAAE,CAAA;IACX,CAAC;CACF"}
1
+ {"version":3,"file":"handlebars-template-engine-provider.js","sourceRoot":"","sources":["../../../src/templating/handlebars/handlebars-template-engine-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAY,MAAM,sBAAsB,CAAA;AAQ/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAA;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AAsBtE;;GAEG;AACH,MAAM,OAAO,gCAAgC;IAGlC,aAAa,CAAyB;IACtC,YAAY,CAAyB;IACrC,QAAQ,CAAiC;IACzC,gBAAgB,CAAyC;IAElE,YAAY,QAA+C,EAAE;QAC3D,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,YAAY,IAAI,EAAE,CAAA;QAC7C,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,WAAW,IAAI,EAAE,CAAA;QAC3C,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,OAAO,IAAI,EAAE,CAAA;QACnC,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,eAAe,IAAI,EAAE,CAAA;IACrD,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EACT,UAAU,EACV,MAAM,GACc;QACpB,MAAM,EAAE,GAAG,IAAI,wBAAwB,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAA;QAE/D,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAChD,cAAc,CAAC,UAAU,EAAE,GAAG,CAAC,CAChC,CAAA;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAClD,cAAc,CAAC,UAAU,EAAE,GAAG,CAAC,CAChC,CAAA;QAED,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,CAAC;YAC9C,sBAAsB,CAAC,YAAY,EAAE,MAAM,EAAE,EAAE,CAAC;SACjD,CAAC,CAAA;QAEF,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YAC/B,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,CAAA;QAC3C,CAAC,CAAC,CAAA;QAEF,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CACrC,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CACtC,CACF,CAAA;QAED,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YACzB,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,CAAA;QAC3C,CAAC,CAAC,CAAA;QAEF,OAAO,EAAE,CAAA;IACX,CAAC;CACF"}
@@ -0,0 +1,17 @@
1
+ import { InternalTakomoProjectConfig } from "../../config/project-config.js";
2
+ import { FilePath } from "../../utils/files.js";
3
+ import { TkmLogger } from "../../utils/logging.js";
4
+ import { TemplateEngineProps, TemplateEngineProvider } from "../template-engine-provider.js";
5
+ import { TemplateEngine } from "../template-engine.js";
6
+ interface InternalHandlebarsTemplateEngineProviderProps {
7
+ readonly partialsDir: FilePath;
8
+ readonly helpersDir: FilePath;
9
+ readonly projectConfig: InternalTakomoProjectConfig;
10
+ readonly logger: TkmLogger;
11
+ }
12
+ export declare class InternalHandlebarsTemplateEngineProvider implements TemplateEngineProvider {
13
+ #private;
14
+ constructor(props: InternalHandlebarsTemplateEngineProviderProps);
15
+ init({ projectDir, logger, }: TemplateEngineProps): Promise<TemplateEngine>;
16
+ }
17
+ export {};
@@ -0,0 +1,54 @@
1
+ import { TakomoError } from "../../utils/errors.js";
2
+ import { dirExists } from "../../utils/files.js";
3
+ import { HandlebarsTemplateEngine } from "./handlebars-template-engine.js";
4
+ import { loadHandlebarsHelpers } from "./load-handlebars-helpers.js";
5
+ import { loadHandlebarsPartials } from "./load-handlebars-partials.js";
6
+ export class InternalHandlebarsTemplateEngineProvider {
7
+ #partialsDir;
8
+ #helpersDir;
9
+ #projectConfig;
10
+ #logger;
11
+ constructor(props) {
12
+ this.#partialsDir = props.partialsDir;
13
+ this.#helpersDir = props.helpersDir;
14
+ this.#projectConfig = props.projectConfig;
15
+ this.#logger = props.logger;
16
+ }
17
+ async init({ projectDir, logger, }) {
18
+ const te = new HandlebarsTemplateEngine({ projectDir, logger });
19
+ for (const config of this.#projectConfig.helpers) {
20
+ this.#logger.debug(`Register Handlebars helper from NPM package: ${config.package}`);
21
+ const helperPackage = await import(config.package);
22
+ if (!helperPackage.default) {
23
+ throw new TakomoError(`Handlebars helper loaded from an NPM package ${config.package} does not have default export`);
24
+ }
25
+ const helper = helperPackage.default;
26
+ const helperWithName = config.name
27
+ ? { ...helper, name: config.name }
28
+ : helper;
29
+ if (typeof helperWithName.fn !== "function") {
30
+ throw new TakomoError(`Handlebars helper loaded from an NPM package ${config.package} does not export property 'fn' of type function`);
31
+ }
32
+ if (typeof helperWithName.name !== "string") {
33
+ throw new TakomoError(`Handlebars helper loaded from an NPM package ${config.package} does not export property 'name' of type string`);
34
+ }
35
+ te.registerHelper(helperWithName.name, helperWithName.fn);
36
+ }
37
+ const defaultHelpersDirExists = await dirExists(this.#helpersDir);
38
+ const additionalHelpersDirs = this.#projectConfig.helpersDir;
39
+ const helpersDirs = defaultHelpersDirExists
40
+ ? [this.#helpersDir, ...additionalHelpersDirs]
41
+ : additionalHelpersDirs;
42
+ const defaultPartialsDirExists = await dirExists(this.#partialsDir);
43
+ const additionalPartialsDirs = this.#projectConfig.partialsDir;
44
+ const partialsDirs = defaultPartialsDirExists
45
+ ? [this.#partialsDir, ...additionalPartialsDirs]
46
+ : additionalPartialsDirs;
47
+ await Promise.all([
48
+ loadHandlebarsHelpers(helpersDirs, this.#logger, te),
49
+ loadHandlebarsPartials(partialsDirs, this.#logger, te),
50
+ ]);
51
+ return te;
52
+ }
53
+ }
54
+ //# sourceMappingURL=internal-handlebars-template-engine-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internal-handlebars-template-engine-provider.js","sourceRoot":"","sources":["../../../src/templating/handlebars/internal-handlebars-template-engine-provider.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,13 @@ import { FilePath } from "../utils/files.js";
2
2
  import { TkmLogger } from "../utils/logging.js";
3
3
  import { TemplateEngine } from "./template-engine.js";
4
4
  export interface TemplateEngineProps {
5
+ /**
6
+ * Current project directory.
7
+ */
5
8
  readonly projectDir: FilePath;
9
+ /**
10
+ * Logger instance.
11
+ */
6
12
  readonly logger: TkmLogger;
7
13
  }
8
14
  export interface TemplateEngineProvider {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "takomo",
3
- "version": "6.0.0",
3
+ "version": "6.1.0",
4
4
  "description": "Organize, configure and deploy CloudFormation stacks.",
5
5
  "keywords": [
6
6
  "aws",
@@ -72,10 +72,10 @@
72
72
  }
73
73
  },
74
74
  "devDependencies": {
75
- "ts-jest": "29.0.5",
75
+ "ts-jest": "29.1.0",
76
76
  "@jest/globals": "29.5.0",
77
77
  "@aws-sdk/client-ec2": "3.292.0",
78
- "@commitlint/cli": "17.4.4",
78
+ "@commitlint/cli": "17.5.1",
79
79
  "@commitlint/config-conventional": "17.4.4",
80
80
  "@jest/console": "29.5.0",
81
81
  "@takomo/test-custom-helper-lowercase": "0.0.1",
@@ -83,10 +83,10 @@
83
83
  "@takomo/test-custom-resolver-code": "0.0.1",
84
84
  "@takomo/test-custom-resolver-name": "0.0.1",
85
85
  "@types/date-and-time": "0.13.0",
86
- "@types/diff": "4.0.2",
86
+ "@types/diff": "5.0.3",
87
87
  "@types/folder-hash": "4.0.2",
88
88
  "@types/inquirer": "9.0.3",
89
- "@types/jest": "29.4.3",
89
+ "@types/jest": "29.5.0",
90
90
  "@types/jmespath": "0.15.0",
91
91
  "@types/js-yaml": "4.0.5",
92
92
  "@types/json-stable-stringify": "1.0.34",
@@ -108,15 +108,15 @@
108
108
  "husky": "8.0.3",
109
109
  "jest": "29.5.0",
110
110
  "jest-environment-testenv-recycler": "0.0.21",
111
- "jest-mock-extended": "3.0.3",
111
+ "jest-mock-extended": "3.0.4",
112
112
  "prettier": "2.8.4",
113
113
  "prettier-plugin-organize-imports": "3.2.2",
114
114
  "pretty-quick": "3.1.3",
115
115
  "ts-node": "10.9.1",
116
- "typedoc": "0.23.26",
116
+ "typedoc": "0.23.28",
117
117
  "typescript": "4.9.5",
118
- "semantic-release": "20.1.1",
119
- "npm-check-updates": "16.7.12"
118
+ "semantic-release": "21.0.1",
119
+ "npm-check-updates": "16.10.0"
120
120
  },
121
121
  "dependencies": {
122
122
  "@aws-sdk/client-cloudformation": "3.292.0",
@@ -132,14 +132,14 @@
132
132
  "@aws-sdk/types": "3.292.0",
133
133
  "chalk": "5.2.0",
134
134
  "cockatiel": "2.0.1",
135
- "date-and-time": "2.1.0",
136
- "diff": "5.0.0",
135
+ "date-and-time": "2.4.3",
136
+ "diff": "5.1.0",
137
137
  "dotenv": "16.0.3",
138
138
  "dotenv-expand": "10.0.0",
139
139
  "easy-table": "1.2.0",
140
140
  "folder-hash": "4.0.4",
141
141
  "handlebars": "4.7.7",
142
- "inquirer": "9.1.4",
142
+ "inquirer": "9.1.5",
143
143
  "inquirer-autocomplete-prompt": "3.0.0",
144
144
  "jmespath": "0.16.0",
145
145
  "joi": "17.8.3",
@@ -149,7 +149,7 @@
149
149
  "lodash.takerightwhile": "4.6.0",
150
150
  "neverthrow": "4.3.1",
151
151
  "p-queue": "7.3.4",
152
- "pretty-ms": "7.0.1",
152
+ "pretty-ms": "8.0.0",
153
153
  "ramda": "0.28.0",
154
154
  "readdirp": "3.6.0",
155
155
  "semver": "7.3.8",