@platforma-sdk/tengo-builder 2.4.24 → 2.4.26

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 (106) hide show
  1. package/dist/_virtual/_rolldown/runtime.cjs +29 -0
  2. package/dist/commands/build.cjs +106 -150
  3. package/dist/commands/build.cjs.map +1 -1
  4. package/dist/commands/build.d.ts +15 -10
  5. package/dist/commands/build.js +101 -126
  6. package/dist/commands/build.js.map +1 -1
  7. package/dist/commands/check.cjs +32 -36
  8. package/dist/commands/check.cjs.map +1 -1
  9. package/dist/commands/check.d.ts +13 -8
  10. package/dist/commands/check.js +30 -33
  11. package/dist/commands/check.js.map +1 -1
  12. package/dist/commands/dump/artifacts.cjs +22 -22
  13. package/dist/commands/dump/artifacts.cjs.map +1 -1
  14. package/dist/commands/dump/artifacts.d.ts +13 -8
  15. package/dist/commands/dump/artifacts.js +20 -19
  16. package/dist/commands/dump/artifacts.js.map +1 -1
  17. package/dist/commands/dump/software.cjs +19 -21
  18. package/dist/commands/dump/software.cjs.map +1 -1
  19. package/dist/commands/dump/software.d.ts +12 -7
  20. package/dist/commands/dump/software.js +17 -18
  21. package/dist/commands/dump/software.js.map +1 -1
  22. package/dist/commands/test.cjs +32 -33
  23. package/dist/commands/test.cjs.map +1 -1
  24. package/dist/commands/test.d.ts +13 -8
  25. package/dist/commands/test.js +30 -30
  26. package/dist/commands/test.js.map +1 -1
  27. package/dist/compiler/artifactset.cjs +59 -68
  28. package/dist/compiler/artifactset.cjs.map +1 -1
  29. package/dist/compiler/artifactset.js +60 -66
  30. package/dist/compiler/artifactset.js.map +1 -1
  31. package/dist/compiler/compiler.cjs +241 -314
  32. package/dist/compiler/compiler.cjs.map +1 -1
  33. package/dist/compiler/compiler.js +241 -312
  34. package/dist/compiler/compiler.js.map +1 -1
  35. package/dist/compiler/compileroptions.cjs +16 -35
  36. package/dist/compiler/compileroptions.cjs.map +1 -1
  37. package/dist/compiler/compileroptions.js +17 -33
  38. package/dist/compiler/compileroptions.js.map +1 -1
  39. package/dist/compiler/main.cjs +258 -334
  40. package/dist/compiler/main.cjs.map +1 -1
  41. package/dist/compiler/main.js +256 -311
  42. package/dist/compiler/main.js.map +1 -1
  43. package/dist/compiler/package.cjs +21 -35
  44. package/dist/compiler/package.cjs.map +1 -1
  45. package/dist/compiler/package.js +21 -34
  46. package/dist/compiler/package.js.map +1 -1
  47. package/dist/compiler/source.cjs +239 -308
  48. package/dist/compiler/source.cjs.map +1 -1
  49. package/dist/compiler/source.js +239 -304
  50. package/dist/compiler/source.js.map +1 -1
  51. package/dist/compiler/template.cjs +30 -35
  52. package/dist/compiler/template.cjs.map +1 -1
  53. package/dist/compiler/template.js +29 -33
  54. package/dist/compiler/template.js.map +1 -1
  55. package/dist/compiler/util.cjs +40 -61
  56. package/dist/compiler/util.cjs.map +1 -1
  57. package/dist/compiler/util.js +36 -39
  58. package/dist/compiler/util.js.map +1 -1
  59. package/dist/index.cjs +14 -14
  60. package/dist/index.cjs.map +1 -1
  61. package/dist/index.d.ts +15 -11
  62. package/dist/index.js +13 -12
  63. package/dist/index.js.map +1 -1
  64. package/dist/shared/basecmd.cjs +42 -33
  65. package/dist/shared/basecmd.cjs.map +1 -1
  66. package/dist/shared/basecmd.js +41 -31
  67. package/dist/shared/basecmd.js.map +1 -1
  68. package/dist/shared/dump.cjs +73 -107
  69. package/dist/shared/dump.cjs.map +1 -1
  70. package/dist/shared/dump.js +73 -105
  71. package/dist/shared/dump.js.map +1 -1
  72. package/dist/shared/proc.cjs +22 -18
  73. package/dist/shared/proc.cjs.map +1 -1
  74. package/dist/shared/proc.js +21 -16
  75. package/dist/shared/proc.js.map +1 -1
  76. package/package.json +10 -10
  77. package/dist/commands/build.d.ts.map +0 -1
  78. package/dist/commands/check.d.ts.map +0 -1
  79. package/dist/commands/dump/artifacts.d.ts.map +0 -1
  80. package/dist/commands/dump/software.d.ts.map +0 -1
  81. package/dist/commands/test.d.ts.map +0 -1
  82. package/dist/compiler/artifactset.d.ts +0 -24
  83. package/dist/compiler/artifactset.d.ts.map +0 -1
  84. package/dist/compiler/compiler.d.ts +0 -42
  85. package/dist/compiler/compiler.d.ts.map +0 -1
  86. package/dist/compiler/compileroptions.d.ts +0 -6
  87. package/dist/compiler/compileroptions.d.ts.map +0 -1
  88. package/dist/compiler/main.d.ts +0 -35
  89. package/dist/compiler/main.d.ts.map +0 -1
  90. package/dist/compiler/package.d.ts +0 -44
  91. package/dist/compiler/package.d.ts.map +0 -1
  92. package/dist/compiler/source.d.ts +0 -54
  93. package/dist/compiler/source.d.ts.map +0 -1
  94. package/dist/compiler/template.d.ts +0 -22
  95. package/dist/compiler/template.d.ts.map +0 -1
  96. package/dist/compiler/test.artifacts.d.ts +0 -47
  97. package/dist/compiler/test.artifacts.d.ts.map +0 -1
  98. package/dist/compiler/util.d.ts +0 -8
  99. package/dist/compiler/util.d.ts.map +0 -1
  100. package/dist/index.d.ts.map +0 -1
  101. package/dist/shared/basecmd.d.ts +0 -12
  102. package/dist/shared/basecmd.d.ts.map +0 -1
  103. package/dist/shared/dump.d.ts +0 -6
  104. package/dist/shared/dump.d.ts.map +0 -1
  105. package/dist/shared/proc.d.ts +0 -5
  106. package/dist/shared/proc.d.ts.map +0 -1
@@ -1,358 +1,303 @@
1
- import * as path from 'node:path';
2
- import * as fs from 'node:fs';
3
- import { pathType } from './util.js';
4
- import { TengoTemplateCompiler } from './compiler.js';
5
- import { parseSourceFile, ArtifactSource, getSha256 } from './source.js';
6
- import { fullNameToString, typedArtifactNameToString } from './package.js';
7
- import { newTemplateFromContent, templateToSource } from './template.js';
8
- import { tryResolve, tryResolveOrError } from '@milaboratories/resolve-helper';
9
- import { serializeTemplate } from '@milaboratories/pl-model-backend';
1
+ import { pathType } from "./util.js";
2
+ import { fullNameToString, typedArtifactNameToString } from "./package.js";
3
+ import { newTemplateFromContent, templateToSource } from "./template.js";
4
+ import { TengoTemplateCompiler } from "./compiler.js";
5
+ import { ArtifactSource, getSha256, parseSourceFile } from "./source.js";
6
+ import * as path from "node:path";
7
+ import * as fs from "node:fs";
8
+ import { serializeTemplate } from "@milaboratories/pl-model-backend";
9
+ import { tryResolve, tryResolveOrError } from "@milaboratories/resolve-helper";
10
10
 
11
+ //#region src/compiler/main.ts
11
12
  const compiledTplSuffix = ".plj.gz";
12
13
  const compiledLibSuffix = ".lib.tengo";
13
14
  const compiledSoftwareSuffix = ".sw.json";
14
15
  const compiledAssetSuffix = ".as.json";
15
- // We need to keep track of dependencies for correct tgo-test CLI utility configuraiton.
16
- // It is much simpler to do this here, than duplicate all tle logic regarding dependencies
17
- // in go code.
18
16
  const srcTestSuffix = ".test.tengo";
19
17
  const srcTplSuffix = ".tpl.tengo";
20
18
  const srcLibSuffix = ".lib.tengo";
21
19
  const srcSoftwareSuffix = ".sw.json";
22
20
  const srcAssetSuffix = ".as.json";
23
- const compilableSuffixes = [srcLibSuffix, srcTplSuffix, srcSoftwareSuffix, srcAssetSuffix];
21
+ const compilableSuffixes = [
22
+ srcLibSuffix,
23
+ srcTplSuffix,
24
+ srcSoftwareSuffix,
25
+ srcAssetSuffix
26
+ ];
24
27
  /**
25
- * Resolves path to package.json file of the given dependency package.
26
- */
28
+ * Resolves path to package.json file of the given dependency package.
29
+ */
27
30
  function resolvePackageJsonPackage(root, depPackageName) {
28
- if (!path.isAbsolute(root)) {
29
- throw new Error(`Root path must be absolute: ${root}`);
30
- }
31
- // First approach: resolving package's main entry point and try to find package.json
32
- // in dir tree upwards.
33
- let resolved = tryResolve(root, depPackageName);
34
- if (resolved) {
35
- let depth = 0;
36
- do {
37
- const p = path.join(resolved, "package.json");
38
- if (pathType(p) === "file")
39
- return p;
40
- depth++;
41
- resolved = path.dirname(resolved);
42
- } while (depth < 7 && path.basename(resolved) !== "node_modules");
43
- }
44
- // Second approach: trying to find package.json in the package dir.
45
- const resolved2 = tryResolveOrError(root, `${depPackageName}/package.json`);
46
- if (resolved2.result === undefined) {
47
- if (resolved2.err === "ERR_PACKAGE_PATH_NOT_EXPORTED")
48
- // tolerating not-exported package.json for dev dependencies
49
- return undefined;
50
- throw new Error(`Can't resolve package.json for package ${depPackageName ?? "."} relative to ${root}`);
51
- }
52
- return resolved2.result;
31
+ if (!path.isAbsolute(root)) throw new Error(`Root path must be absolute: ${root}`);
32
+ let resolved = tryResolve(root, depPackageName);
33
+ if (resolved) {
34
+ let depth = 0;
35
+ do {
36
+ const p = path.join(resolved, "package.json");
37
+ if (pathType(p) === "file") return p;
38
+ depth++;
39
+ resolved = path.dirname(resolved);
40
+ } while (depth < 7 && path.basename(resolved) !== "node_modules");
41
+ }
42
+ const resolved2 = tryResolveOrError(root, `${depPackageName}/package.json`);
43
+ if (resolved2.result === void 0) {
44
+ if (resolved2.err === "ERR_PACKAGE_PATH_NOT_EXPORTED") return void 0;
45
+ throw new Error(`Can't resolve package.json for package ${depPackageName ?? "."} relative to ${root}`);
46
+ }
47
+ return resolved2.result;
53
48
  }
54
49
  function resolvePackageJsonRoot(root) {
55
- if (!path.isAbsolute(root)) {
56
- throw new Error(`Root path must be absolute: ${root}`);
57
- }
58
- const p = path.join(root, "package.json");
59
- if (pathType(p) === "file")
60
- return p;
61
- throw new Error(`Can't resolve package.json in ${root}`);
50
+ if (!path.isAbsolute(root)) throw new Error(`Root path must be absolute: ${root}`);
51
+ const p = path.join(root, "package.json");
52
+ if (pathType(p) === "file") return p;
53
+ throw new Error(`Can't resolve package.json in ${root}`);
62
54
  }
63
55
  /**
64
- * Get package info from package.json and all dependencies.
65
- */
56
+ * Get package info from package.json and all dependencies.
57
+ */
66
58
  function getPackageInfo(root, logger, context = "root") {
67
- const packageJsonPath = resolvePackageJsonRoot(root);
68
- const packageJson = JSON.parse(fs.readFileSync(packageJsonPath).toString());
69
- // resolving dependencies
70
- const depInfos = [];
71
- if (packageJson.dependencies && context !== "devDependency") {
72
- for (const dep of Object.keys(packageJson.dependencies)) {
73
- const depPackageJson = resolvePackageJsonPackage(root, dep);
74
- if (depPackageJson === undefined)
75
- throw new Error(`Can't resolve package.json for dependency ${dep} of ${root}`);
76
- const depRoot = path.dirname(depPackageJson);
77
- depInfos.push(getPackageInfo(depRoot, logger, "dependency"));
78
- }
79
- }
80
- if (packageJson.devDependencies && context === "root") {
81
- for (const dep of Object.keys(packageJson.devDependencies)) {
82
- const depPackageJson = resolvePackageJsonPackage(root, dep);
83
- if (depPackageJson === undefined) {
84
- logger.warn(`Can't resolve package.json for dev dependency ${dep} of ${root}`);
85
- // tolerating not-exported package.json for dev dependencies
86
- continue;
87
- }
88
- const depRoot = path.dirname(depPackageJson);
89
- depInfos.push(getPackageInfo(depRoot, logger, "devDependency"));
90
- }
91
- }
92
- return {
93
- name: packageJson.name,
94
- version: packageJson.version,
95
- type: packageJson.type,
96
- dependencies: depInfos,
97
- root,
98
- context,
99
- };
59
+ const packageJsonPath = resolvePackageJsonRoot(root);
60
+ const packageJson = JSON.parse(fs.readFileSync(packageJsonPath).toString());
61
+ const depInfos = [];
62
+ if (packageJson.dependencies && context !== "devDependency") for (const dep of Object.keys(packageJson.dependencies)) {
63
+ const depPackageJson = resolvePackageJsonPackage(root, dep);
64
+ if (depPackageJson === void 0) throw new Error(`Can't resolve package.json for dependency ${dep} of ${root}`);
65
+ const depRoot = path.dirname(depPackageJson);
66
+ depInfos.push(getPackageInfo(depRoot, logger, "dependency"));
67
+ }
68
+ if (packageJson.devDependencies && context === "root") for (const dep of Object.keys(packageJson.devDependencies)) {
69
+ const depPackageJson = resolvePackageJsonPackage(root, dep);
70
+ if (depPackageJson === void 0) {
71
+ logger.warn(`Can't resolve package.json for dev dependency ${dep} of ${root}`);
72
+ continue;
73
+ }
74
+ const depRoot = path.dirname(depPackageJson);
75
+ depInfos.push(getPackageInfo(depRoot, logger, "devDependency"));
76
+ }
77
+ return {
78
+ name: packageJson.name,
79
+ version: packageJson.version,
80
+ type: packageJson.type,
81
+ dependencies: depInfos,
82
+ root,
83
+ context
84
+ };
100
85
  }
101
86
  function resolveLibsDst(mode, root) {
102
- return path.resolve(root, mode, "tengo", "lib");
87
+ return path.resolve(root, mode, "tengo", "lib");
103
88
  }
104
89
  function resolveTemplatesDst(mode, root) {
105
- return path.resolve(root, mode, "tengo", "tpl");
90
+ return path.resolve(root, mode, "tengo", "tpl");
106
91
  }
107
92
  function resolveSoftwareDst(mode, root) {
108
- return path.resolve(root, mode, "tengo", "software");
93
+ return path.resolve(root, mode, "tengo", "software");
109
94
  }
110
95
  function resolveAssetsDst(mode, root) {
111
- return path.resolve(root, mode, "tengo", "asset");
96
+ return path.resolve(root, mode, "tengo", "asset");
112
97
  }
113
98
  function loadDependencies(logger, compiler, packageInfo) {
114
- for (const dep of packageInfo.dependencies)
115
- loadDependencies(logger, compiler, dep);
116
- if (packageInfo.context === "root")
117
- // we are not reading compiled files for root package
118
- return;
119
- // we are in package folder
120
- const libDistFolder = resolveLibsDst("dist", packageInfo.root);
121
- const tplDistFolder = resolveTemplatesDst("dist", packageInfo.root);
122
- const softwareDistFolder = resolveSoftwareDst("dist", packageInfo.root);
123
- const assetDistFolder = resolveAssetsDst("dist", packageInfo.root);
124
- const libDistExists = pathType(libDistFolder) === "dir";
125
- const tplDistExists = pathType(tplDistFolder) === "dir";
126
- const softwareDistExists = pathType(softwareDistFolder) === "dir";
127
- const assetDistExists = pathType(assetDistFolder) === "dir";
128
- if (!libDistExists && !tplDistExists && !softwareDistExists && !assetDistExists)
129
- // if neither of tengo-specific folders detected, skipping package
130
- return;
131
- const packageId = { name: packageInfo.name, version: packageInfo.version };
132
- if (libDistExists) {
133
- loadLibsFromDir(logger, packageId, "dist", libDistFolder, compiler);
134
- }
135
- if (tplDistExists) {
136
- loadTemplatesFromDir(logger, packageId, "dist", tplDistFolder, compiler);
137
- }
138
- if (softwareDistExists) {
139
- loadSoftwareFromDir(logger, packageId, "dist", softwareDistFolder, compiler);
140
- }
141
- if (assetDistExists) {
142
- loadAssetsFromDir(logger, packageId, "dist", assetDistFolder, compiler);
143
- }
99
+ for (const dep of packageInfo.dependencies) loadDependencies(logger, compiler, dep);
100
+ if (packageInfo.context === "root") return;
101
+ const libDistFolder = resolveLibsDst("dist", packageInfo.root);
102
+ const tplDistFolder = resolveTemplatesDst("dist", packageInfo.root);
103
+ const softwareDistFolder = resolveSoftwareDst("dist", packageInfo.root);
104
+ const assetDistFolder = resolveAssetsDst("dist", packageInfo.root);
105
+ const libDistExists = pathType(libDistFolder) === "dir";
106
+ const tplDistExists = pathType(tplDistFolder) === "dir";
107
+ const softwareDistExists = pathType(softwareDistFolder) === "dir";
108
+ const assetDistExists = pathType(assetDistFolder) === "dir";
109
+ if (!libDistExists && !tplDistExists && !softwareDistExists && !assetDistExists) return;
110
+ const packageId = {
111
+ name: packageInfo.name,
112
+ version: packageInfo.version
113
+ };
114
+ if (libDistExists) loadLibsFromDir(logger, packageId, "dist", libDistFolder, compiler);
115
+ if (tplDistExists) loadTemplatesFromDir(logger, packageId, "dist", tplDistFolder, compiler);
116
+ if (softwareDistExists) loadSoftwareFromDir(logger, packageId, "dist", softwareDistFolder, compiler);
117
+ if (assetDistExists) loadAssetsFromDir(logger, packageId, "dist", assetDistFolder, compiler);
144
118
  }
145
119
  function loadLibsFromDir(logger, packageId, mode, folder, compiler) {
146
- for (const f of fs.readdirSync(folder)) {
147
- const file = path.resolve(folder, f);
148
- if (!f.endsWith(compiledLibSuffix))
149
- throw new Error(`unexpected file in 'lib' folder: ${file}`);
150
- const fullName = {
151
- type: "library",
152
- pkg: packageId.name,
153
- id: f.slice(0, f.length - compiledLibSuffix.length),
154
- version: packageId.version,
155
- };
156
- const src = parseSourceFile(logger, mode, file, fullName, true);
157
- compiler.addLib(src);
158
- logger.debug(`Adding dependency ${fullNameToString(fullName)} from ${file}`);
159
- if (src.dependencies.length > 0) {
160
- logger.debug("Dependencies:");
161
- for (const dep of src.dependencies)
162
- logger.debug(` - ${typedArtifactNameToString(dep)}`);
163
- }
164
- }
120
+ for (const f of fs.readdirSync(folder)) {
121
+ const file = path.resolve(folder, f);
122
+ if (!f.endsWith(compiledLibSuffix)) throw new Error(`unexpected file in 'lib' folder: ${file}`);
123
+ const fullName = {
124
+ type: "library",
125
+ pkg: packageId.name,
126
+ id: f.slice(0, f.length - 10),
127
+ version: packageId.version
128
+ };
129
+ const src = parseSourceFile(logger, mode, file, fullName, true);
130
+ compiler.addLib(src);
131
+ logger.debug(`Adding dependency ${fullNameToString(fullName)} from ${file}`);
132
+ if (src.dependencies.length > 0) {
133
+ logger.debug("Dependencies:");
134
+ for (const dep of src.dependencies) logger.debug(` - ${typedArtifactNameToString(dep)}`);
135
+ }
136
+ }
165
137
  }
166
138
  function loadTemplatesFromDir(logger, packageId, mode, folder, compiler) {
167
- // adding templates
168
- for (const f of fs.readdirSync(folder)) {
169
- const file = path.resolve(folder, f);
170
- if (!f.endsWith(compiledTplSuffix))
171
- throw new Error(`unexpected file in 'tpl' folder: ${file}`);
172
- const fullName = {
173
- type: "template",
174
- pkg: packageId.name,
175
- id: f.slice(0, f.length - compiledTplSuffix.length),
176
- version: packageId.version,
177
- };
178
- const tpl = newTemplateFromContent(mode, fullName, fs.readFileSync(file));
179
- compiler.addTemplate(templateToSource(tpl));
180
- logger.debug(`Adding dependency ${fullNameToString(fullName)} from ${file}`);
181
- }
139
+ for (const f of fs.readdirSync(folder)) {
140
+ const file = path.resolve(folder, f);
141
+ if (!f.endsWith(compiledTplSuffix)) throw new Error(`unexpected file in 'tpl' folder: ${file}`);
142
+ const fullName = {
143
+ type: "template",
144
+ pkg: packageId.name,
145
+ id: f.slice(0, f.length - 7),
146
+ version: packageId.version
147
+ };
148
+ const tpl = newTemplateFromContent(mode, fullName, fs.readFileSync(file));
149
+ compiler.addTemplate(templateToSource(tpl));
150
+ logger.debug(`Adding dependency ${fullNameToString(fullName)} from ${file}`);
151
+ }
182
152
  }
183
153
  function loadSoftwareFromDir(logger, packageId, mode, folder, compiler) {
184
- for (const f of fs.readdirSync(folder)) {
185
- const file = path.resolve(folder, f);
186
- if (!f.endsWith(compiledSoftwareSuffix))
187
- throw new Error(`unexpected file in 'software' folder: ${file}`);
188
- const fullName = {
189
- type: "software",
190
- pkg: packageId.name,
191
- id: f.slice(0, f.length - compiledSoftwareSuffix.length),
192
- version: packageId.version,
193
- };
194
- const source = fs.readFileSync(file).toString();
195
- const software = new ArtifactSource(mode, fullName, getSha256(source), source, file, [], []);
196
- logger.debug(`Adding dependency ${fullNameToString(fullName)} from ${file}`);
197
- compiler.addSoftware(software);
198
- }
154
+ for (const f of fs.readdirSync(folder)) {
155
+ const file = path.resolve(folder, f);
156
+ if (!f.endsWith(compiledSoftwareSuffix)) throw new Error(`unexpected file in 'software' folder: ${file}`);
157
+ const fullName = {
158
+ type: "software",
159
+ pkg: packageId.name,
160
+ id: f.slice(0, f.length - 8),
161
+ version: packageId.version
162
+ };
163
+ const source = fs.readFileSync(file).toString();
164
+ const software = new ArtifactSource(mode, fullName, getSha256(source), source, file, [], []);
165
+ logger.debug(`Adding dependency ${fullNameToString(fullName)} from ${file}`);
166
+ compiler.addSoftware(software);
167
+ }
199
168
  }
200
169
  function loadAssetsFromDir(logger, packageId, mode, folder, compiler) {
201
- for (const f of fs.readdirSync(folder)) {
202
- const file = path.resolve(folder, f);
203
- if (!f.endsWith(compiledAssetSuffix))
204
- throw new Error(`unexpected file in 'asset' folder: ${file}`);
205
- const fullName = {
206
- type: "asset",
207
- pkg: packageId.name,
208
- id: f.slice(0, f.length - compiledAssetSuffix.length),
209
- version: packageId.version,
210
- };
211
- const source = fs.readFileSync(file).toString();
212
- const asset = new ArtifactSource(mode, fullName, getSha256(source), source, file, [], []);
213
- logger.debug(`Adding dependency ${fullNameToString(fullName)} from ${file}`);
214
- compiler.addAsset(asset);
215
- }
170
+ for (const f of fs.readdirSync(folder)) {
171
+ const file = path.resolve(folder, f);
172
+ if (!f.endsWith(compiledAssetSuffix)) throw new Error(`unexpected file in 'asset' folder: ${file}`);
173
+ const fullName = {
174
+ type: "asset",
175
+ pkg: packageId.name,
176
+ id: f.slice(0, f.length - 8),
177
+ version: packageId.version
178
+ };
179
+ const source = fs.readFileSync(file).toString();
180
+ const asset = new ArtifactSource(mode, fullName, getSha256(source), source, file, [], []);
181
+ logger.debug(`Adding dependency ${fullNameToString(fullName)} from ${file}`);
182
+ compiler.addAsset(asset);
183
+ }
216
184
  }
217
185
  function parseSources(logger, packageId, mode, root, subdir) {
218
- const sources = [];
219
- for (const f of fs.readdirSync(path.join(root, subdir))) {
220
- const inRootPath = path.join(subdir, f); // path to item inside given <root>
221
- const fullPath = path.join(root, inRootPath); // full path to item from CWD (or abs path, if <root> is abs path)
222
- if (pathType(fullPath) === "dir") {
223
- const nested = parseSources(logger, packageId, mode, root, inRootPath);
224
- sources.push(...nested);
225
- continue;
226
- }
227
- // Handling index.lib.tengo files: rename them to <package-name>.lib.tengo
228
- const artifactName = f === "index.lib.tengo" ? `${path.dirname(inRootPath)}.lib.tengo` : inRootPath;
229
- const fullName = fullNameFromFileName(packageId, artifactName.replaceAll(path.sep, "."));
230
- if (!fullName) {
231
- logger.info(`Skipping unknown file type: ${artifactName}`);
232
- continue; // skip unknown file types
233
- }
234
- // if (subdir != '') {
235
- // throw new Error(`Templates and libraries should reside only inside '${root}' dir.
236
- // You are free to have any file and dirs structure inside '${root}' keeping other files where you want,
237
- // but regarding ${compilableSuffixes.join(', ')}, the flat file structure is mandatory.`);
238
- // }
239
- const file = path.resolve(root, inRootPath);
240
- logger.debug(`Parsing ${fullNameToString(fullName)} from ${file}`);
241
- const newSrc = parseSourceFile(logger, mode, file, fullName, true);
242
- if (newSrc.dependencies.length > 0) {
243
- logger.debug("Detected dependencies:");
244
- for (const dep of newSrc.dependencies)
245
- logger.debug(` - ${typedArtifactNameToString(dep)}`);
246
- }
247
- sources.push(newSrc);
248
- }
249
- return sources;
186
+ const sources = [];
187
+ for (const f of fs.readdirSync(path.join(root, subdir))) {
188
+ const inRootPath = path.join(subdir, f);
189
+ if (pathType(path.join(root, inRootPath)) === "dir") {
190
+ const nested = parseSources(logger, packageId, mode, root, inRootPath);
191
+ sources.push(...nested);
192
+ continue;
193
+ }
194
+ const artifactName = f === "index.lib.tengo" ? `${path.dirname(inRootPath)}.lib.tengo` : inRootPath;
195
+ const fullName = fullNameFromFileName(packageId, artifactName.replaceAll(path.sep, "."));
196
+ if (!fullName) {
197
+ logger.info(`Skipping unknown file type: ${artifactName}`);
198
+ continue;
199
+ }
200
+ const file = path.resolve(root, inRootPath);
201
+ logger.debug(`Parsing ${fullNameToString(fullName)} from ${file}`);
202
+ const newSrc = parseSourceFile(logger, mode, file, fullName, true);
203
+ if (newSrc.dependencies.length > 0) {
204
+ logger.debug("Detected dependencies:");
205
+ for (const dep of newSrc.dependencies) logger.debug(` - ${typedArtifactNameToString(dep)}`);
206
+ }
207
+ sources.push(newSrc);
208
+ }
209
+ return sources;
250
210
  }
251
211
  function newCompiler(logger, packageInfo, mode) {
252
- const compiler = new TengoTemplateCompiler(mode);
253
- // collect all data (templates, libs and software) from dependency tree
254
- loadDependencies(logger, compiler, packageInfo);
255
- return compiler;
212
+ const compiler = new TengoTemplateCompiler(mode);
213
+ loadDependencies(logger, compiler, packageInfo);
214
+ return compiler;
256
215
  }
257
216
  function fullNameFromFileName(packageId, artifactName) {
258
- const pkgAndVersion = { pkg: packageId.name, version: packageId.version };
259
- if (artifactName.endsWith(srcLibSuffix)) {
260
- return {
261
- ...pkgAndVersion,
262
- id: artifactName.substring(0, artifactName.length - srcLibSuffix.length),
263
- type: "library",
264
- };
265
- }
266
- if (artifactName.endsWith(srcTplSuffix)) {
267
- return {
268
- ...pkgAndVersion,
269
- id: artifactName.substring(0, artifactName.length - srcTplSuffix.length),
270
- type: "template",
271
- };
272
- }
273
- if (artifactName.endsWith(srcSoftwareSuffix)) {
274
- return {
275
- ...pkgAndVersion,
276
- id: artifactName.substring(0, artifactName.length - srcSoftwareSuffix.length),
277
- type: "software",
278
- };
279
- }
280
- if (artifactName.endsWith(srcAssetSuffix)) {
281
- return {
282
- ...pkgAndVersion,
283
- id: artifactName.substring(0, artifactName.length - srcAssetSuffix.length),
284
- type: "asset",
285
- };
286
- }
287
- if (artifactName.endsWith(srcTestSuffix)) {
288
- return {
289
- ...pkgAndVersion,
290
- id: artifactName.substring(0, artifactName.length - srcTestSuffix.length),
291
- type: "test",
292
- };
293
- }
294
- return null;
217
+ const pkgAndVersion = {
218
+ pkg: packageId.name,
219
+ version: packageId.version
220
+ };
221
+ if (artifactName.endsWith(srcLibSuffix)) return {
222
+ ...pkgAndVersion,
223
+ id: artifactName.substring(0, artifactName.length - 10),
224
+ type: "library"
225
+ };
226
+ if (artifactName.endsWith(srcTplSuffix)) return {
227
+ ...pkgAndVersion,
228
+ id: artifactName.substring(0, artifactName.length - 10),
229
+ type: "template"
230
+ };
231
+ if (artifactName.endsWith(srcSoftwareSuffix)) return {
232
+ ...pkgAndVersion,
233
+ id: artifactName.substring(0, artifactName.length - 8),
234
+ type: "software"
235
+ };
236
+ if (artifactName.endsWith(srcAssetSuffix)) return {
237
+ ...pkgAndVersion,
238
+ id: artifactName.substring(0, artifactName.length - 8),
239
+ type: "asset"
240
+ };
241
+ if (artifactName.endsWith(srcTestSuffix)) return {
242
+ ...pkgAndVersion,
243
+ id: artifactName.substring(0, artifactName.length - 11),
244
+ type: "test"
245
+ };
246
+ return null;
295
247
  }
296
248
  function compile(logger, packageInfo, mode) {
297
- const compiler = newCompiler(logger, packageInfo, mode);
298
- const sources = parseSources(logger, packageInfo, mode, "src", "");
299
- // checking that we have something to do
300
- if (sources.length === 0) {
301
- const lookFor = [];
302
- for (const suffix of compilableSuffixes) {
303
- lookFor.push(`*${suffix}`);
304
- }
305
- logger.error(`Nothing to compile. Looked for ${lookFor.join(", ")}`);
306
- process.exit(1);
307
- }
308
- // compilation
309
- logger.info(`Compiling '${mode}'...`);
310
- const compiled = compiler.compileAndAdd(sources);
311
- logger.debug(`Done.`);
312
- return compiled;
249
+ const compiler = newCompiler(logger, packageInfo, mode);
250
+ const sources = parseSources(logger, packageInfo, mode, "src", "");
251
+ if (sources.length === 0) {
252
+ const lookFor = [];
253
+ for (const suffix of compilableSuffixes) lookFor.push(`*${suffix}`);
254
+ logger.error(`Nothing to compile. Looked for ${lookFor.join(", ")}`);
255
+ process.exit(1);
256
+ }
257
+ logger.info(`Compiling '${mode}'...`);
258
+ const compiled = compiler.compileAndAdd(sources);
259
+ logger.debug(`Done.`);
260
+ return compiled;
313
261
  }
314
262
  function savePacks(logger, compiled, mode) {
315
- // writing libs
316
- if (compiled.libs.length > 0) {
317
- const libOutput = resolveLibsDst(mode, ".");
318
- fs.mkdirSync(libOutput, { recursive: true });
319
- for (const lib of compiled.libs) {
320
- const file = path.resolve(libOutput, lib.fullName.id + compiledLibSuffix);
321
- logger.info(` - writing ${file}`);
322
- fs.writeFileSync(file, lib.src);
323
- }
324
- }
325
- // writing templates
326
- if (compiled.templates.length > 0) {
327
- const tplOutput = resolveTemplatesDst(mode, ".");
328
- fs.mkdirSync(tplOutput, { recursive: true });
329
- for (const tpl of compiled.templates) {
330
- const file = path.resolve(tplOutput, tpl.fullName.id + compiledTplSuffix);
331
- logger.info(` - writing ${file}`);
332
- fs.writeFileSync(file, serializeTemplate(tpl.data));
333
- }
334
- }
335
- // writing software
336
- if (compiled.software.length > 0) {
337
- const swOutput = resolveSoftwareDst(mode, ".");
338
- fs.mkdirSync(swOutput, { recursive: true });
339
- for (const sw of compiled.software) {
340
- const file = path.resolve(swOutput, sw.fullName.id + compiledSoftwareSuffix);
341
- logger.info(` - writing ${file}`);
342
- fs.writeFileSync(file, sw.src);
343
- }
344
- }
345
- // writing assets
346
- if (compiled.assets.length > 0) {
347
- const swOutput = resolveAssetsDst(mode, ".");
348
- fs.mkdirSync(swOutput, { recursive: true });
349
- for (const sw of compiled.software) {
350
- const file = path.resolve(swOutput, sw.fullName.id + compiledAssetSuffix);
351
- logger.info(` - writing ${file}`);
352
- fs.writeFileSync(file, sw.src);
353
- }
354
- }
263
+ if (compiled.libs.length > 0) {
264
+ const libOutput = resolveLibsDst(mode, ".");
265
+ fs.mkdirSync(libOutput, { recursive: true });
266
+ for (const lib of compiled.libs) {
267
+ const file = path.resolve(libOutput, lib.fullName.id + compiledLibSuffix);
268
+ logger.info(` - writing ${file}`);
269
+ fs.writeFileSync(file, lib.src);
270
+ }
271
+ }
272
+ if (compiled.templates.length > 0) {
273
+ const tplOutput = resolveTemplatesDst(mode, ".");
274
+ fs.mkdirSync(tplOutput, { recursive: true });
275
+ for (const tpl of compiled.templates) {
276
+ const file = path.resolve(tplOutput, tpl.fullName.id + compiledTplSuffix);
277
+ logger.info(` - writing ${file}`);
278
+ fs.writeFileSync(file, serializeTemplate(tpl.data));
279
+ }
280
+ }
281
+ if (compiled.software.length > 0) {
282
+ const swOutput = resolveSoftwareDst(mode, ".");
283
+ fs.mkdirSync(swOutput, { recursive: true });
284
+ for (const sw of compiled.software) {
285
+ const file = path.resolve(swOutput, sw.fullName.id + compiledSoftwareSuffix);
286
+ logger.info(` - writing ${file}`);
287
+ fs.writeFileSync(file, sw.src);
288
+ }
289
+ }
290
+ if (compiled.assets.length > 0) {
291
+ const swOutput = resolveAssetsDst(mode, ".");
292
+ fs.mkdirSync(swOutput, { recursive: true });
293
+ for (const sw of compiled.software) {
294
+ const file = path.resolve(swOutput, sw.fullName.id + compiledAssetSuffix);
295
+ logger.info(` - writing ${file}`);
296
+ fs.writeFileSync(file, sw.src);
297
+ }
298
+ }
355
299
  }
356
300
 
357
- export { compile, fullNameFromFileName, getPackageInfo, newCompiler, parseSources, resolvePackageJsonRoot, savePacks };
358
- //# sourceMappingURL=main.js.map
301
+ //#endregion
302
+ export { compile, getPackageInfo, newCompiler, parseSources, savePacks };
303
+ //# sourceMappingURL=main.js.map