@platforma-sdk/tengo-builder 2.1.14 → 2.1.15

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