@platforma-sdk/tengo-builder 2.4.13 → 2.4.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.
- package/README.md +4 -4
- package/bin/run.js +5 -5
- package/dist/commands/build.cjs +36 -36
- package/dist/commands/build.cjs.map +1 -1
- package/dist/commands/build.d.ts +5 -5
- package/dist/commands/build.js +36 -36
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/check.cjs +5 -5
- package/dist/commands/check.cjs.map +1 -1
- package/dist/commands/check.d.ts +2 -2
- package/dist/commands/check.d.ts.map +1 -1
- package/dist/commands/check.js +5 -5
- package/dist/commands/check.js.map +1 -1
- package/dist/commands/dump/artifacts.cjs +4 -6
- package/dist/commands/dump/artifacts.cjs.map +1 -1
- package/dist/commands/dump/artifacts.d.ts +2 -2
- package/dist/commands/dump/artifacts.d.ts.map +1 -1
- package/dist/commands/dump/artifacts.js +4 -6
- package/dist/commands/dump/artifacts.js.map +1 -1
- package/dist/commands/dump/software.cjs +3 -5
- package/dist/commands/dump/software.cjs.map +1 -1
- package/dist/commands/dump/software.d.ts +2 -2
- package/dist/commands/dump/software.d.ts.map +1 -1
- package/dist/commands/dump/software.js +3 -5
- package/dist/commands/dump/software.js.map +1 -1
- package/dist/commands/test.cjs +5 -5
- package/dist/commands/test.cjs.map +1 -1
- package/dist/commands/test.d.ts +2 -2
- package/dist/commands/test.d.ts.map +1 -1
- package/dist/commands/test.js +5 -5
- package/dist/commands/test.js.map +1 -1
- package/dist/compiler/artifactset.cjs +2 -2
- package/dist/compiler/artifactset.cjs.map +1 -1
- package/dist/compiler/artifactset.d.ts +1 -1
- package/dist/compiler/artifactset.d.ts.map +1 -1
- package/dist/compiler/artifactset.js +2 -2
- package/dist/compiler/artifactset.js.map +1 -1
- package/dist/compiler/compiler.cjs +37 -34
- package/dist/compiler/compiler.cjs.map +1 -1
- package/dist/compiler/compiler.d.ts +3 -3
- package/dist/compiler/compiler.d.ts.map +1 -1
- package/dist/compiler/compiler.js +37 -34
- package/dist/compiler/compiler.js.map +1 -1
- package/dist/compiler/compileroptions.cjs +12 -12
- package/dist/compiler/compileroptions.cjs.map +1 -1
- package/dist/compiler/compileroptions.d.ts +2 -2
- package/dist/compiler/compileroptions.js +12 -12
- package/dist/compiler/compileroptions.js.map +1 -1
- package/dist/compiler/main.cjs +58 -58
- package/dist/compiler/main.cjs.map +1 -1
- package/dist/compiler/main.d.ts +6 -6
- package/dist/compiler/main.d.ts.map +1 -1
- package/dist/compiler/main.js +58 -58
- package/dist/compiler/main.js.map +1 -1
- package/dist/compiler/package.cjs +5 -2
- package/dist/compiler/package.cjs.map +1 -1
- package/dist/compiler/package.d.ts +6 -6
- package/dist/compiler/package.d.ts.map +1 -1
- package/dist/compiler/package.js +5 -2
- package/dist/compiler/package.js.map +1 -1
- package/dist/compiler/source.cjs +50 -52
- package/dist/compiler/source.cjs.map +1 -1
- package/dist/compiler/source.d.ts +2 -2
- package/dist/compiler/source.d.ts.map +1 -1
- package/dist/compiler/source.js +50 -52
- package/dist/compiler/source.js.map +1 -1
- package/dist/compiler/template.cjs +7 -7
- package/dist/compiler/template.cjs.map +1 -1
- package/dist/compiler/template.d.ts +2 -2
- package/dist/compiler/template.d.ts.map +1 -1
- package/dist/compiler/template.js +7 -7
- package/dist/compiler/template.js.map +1 -1
- package/dist/compiler/test.artifacts.d.ts +1 -1
- package/dist/compiler/test.artifacts.d.ts.map +1 -1
- package/dist/compiler/util.cjs +12 -12
- package/dist/compiler/util.cjs.map +1 -1
- package/dist/compiler/util.d.ts +2 -2
- package/dist/compiler/util.js +12 -12
- package/dist/compiler/util.js.map +1 -1
- package/dist/index.cjs +5 -5
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +7 -7
- package/dist/index.js +5 -5
- package/dist/index.js.map +1 -1
- package/dist/shared/basecmd.cjs +15 -15
- package/dist/shared/basecmd.cjs.map +1 -1
- package/dist/shared/basecmd.d.ts +4 -4
- package/dist/shared/basecmd.js +15 -15
- package/dist/shared/basecmd.js.map +1 -1
- package/dist/shared/dump.cjs +28 -28
- package/dist/shared/dump.cjs.map +1 -1
- package/dist/shared/dump.d.ts +2 -2
- package/dist/shared/dump.d.ts.map +1 -1
- package/dist/shared/dump.js +28 -28
- package/dist/shared/dump.js.map +1 -1
- package/dist/shared/proc.cjs +5 -5
- package/dist/shared/proc.cjs.map +1 -1
- package/dist/shared/proc.d.ts +2 -2
- package/dist/shared/proc.js +5 -5
- package/dist/shared/proc.js.map +1 -1
- package/package.json +21 -19
- package/src/commands/build.ts +57 -55
- package/src/commands/check.ts +15 -12
- package/src/commands/dump/artifacts.ts +11 -15
- package/src/commands/dump/software.ts +9 -10
- package/src/commands/test.ts +15 -12
- package/src/compiler/artifactset.ts +7 -9
- package/src/compiler/compiler.test.ts +134 -137
- package/src/compiler/compiler.ts +62 -62
- package/src/compiler/compileroptions.ts +15 -15
- package/src/compiler/main.test.ts +23 -23
- package/src/compiler/main.ts +83 -100
- package/src/compiler/package.ts +14 -12
- package/src/compiler/source.test.ts +191 -183
- package/src/compiler/source.ts +106 -79
- package/src/compiler/template.test.ts +50 -49
- package/src/compiler/template.ts +11 -21
- package/src/compiler/test.artifacts.ts +47 -47
- package/src/compiler/util.ts +17 -17
- package/src/index.ts +10 -10
- package/src/shared/basecmd.ts +16 -16
- package/src/shared/dump.ts +49 -70
- package/src/shared/proc.ts +8 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compileroptions.js","sources":["../../src/compiler/compileroptions.ts"],"sourcesContent":["import type { TemplateDataV3, TemplateLibDataV3 } from
|
|
1
|
+
{"version":3,"file":"compileroptions.js","sources":["../../src/compiler/compileroptions.ts"],"sourcesContent":["import type { TemplateDataV3, TemplateLibDataV3 } from \"@milaboratories/pl-model-backend\";\nimport type { CompilerOption } from \"./package\";\nimport * as util from \"./util\";\n\nexport function applyTemplateCompilerOptions(opts: CompilerOption[], tpl: TemplateDataV3) {\n for (const opt of opts) {\n switch (opt.name) {\n case \"hash_override\": {\n tpl.hashOverride = hashOverride(opt.args);\n break;\n }\n }\n }\n}\n\nexport function applyLibraryCompilerOptions(opts: CompilerOption[], _lib: TemplateLibDataV3) {\n for (const opt of opts) {\n switch (opt.name) {\n case \"hash_override\": {\n throw new Error(\n `hash_override compiler option can be used ONLY on template level. Even in templates it is already dangerous enough` +\n ` to potentially break everything in Platforma Backend. In libraries with the transitive dependencies` +\n ` resolution and flattening of libraries list on template level, it becomes so unpredictibally disasterous, that` +\n ` we are doomed to never find the ends of a knot if anything goes wrong.`,\n );\n }\n }\n }\n}\n\nexport function hashOverride(args: string[]): string {\n if (args.length != 1) {\n throw new Error(\n \"hash_override compiler option expects exactly one argument: hash_override <some string>. Note, you can use only UUID as a value.\",\n );\n }\n\n const override = args[0].toLowerCase();\n\n if (!util.isUUID(override)) {\n throw new Error(\n \"hash_override must contain valid UUID as an override. As hash_override affects deduplication,\" +\n \" it becomes completely not possible to distinguish several different templates from each other on backend's side.\" +\n ' This means, if you set hash_override to a simple value (say, letter \"a\") on two completely different templates,' +\n \" they will be marked as interchangeable on backend's side with unpredictable consequences.\" +\n \" UUID looks like a safe enough tradeoff between the feature usage simplicity and duplication safety\",\n );\n }\n\n return override;\n}\n"],"names":["util.isUUID"],"mappings":";;AAIM,SAAU,4BAA4B,CAAC,IAAsB,EAAE,GAAmB,EAAA;AACtF,IAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;AACtB,QAAA,QAAQ,GAAG,CAAC,IAAI;YACd,KAAK,eAAe,EAAE;gBACpB,GAAG,CAAC,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;gBACzC;YACF;;IAEJ;AACF;AAEM,SAAU,2BAA2B,CAAC,IAAsB,EAAE,IAAuB,EAAA;AACzF,IAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;AACtB,QAAA,QAAQ,GAAG,CAAC,IAAI;YACd,KAAK,eAAe,EAAE;gBACpB,MAAM,IAAI,KAAK,CACb,CAAA,kHAAA,CAAoH;oBAClH,CAAA,oGAAA,CAAsG;oBACtG,CAAA,+GAAA,CAAiH;AACjH,oBAAA,CAAA,uEAAA,CAAyE,CAC5E;YACH;;IAEJ;AACF;AAEM,SAAU,YAAY,CAAC,IAAc,EAAA;AACzC,IAAA,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;AACpB,QAAA,MAAM,IAAI,KAAK,CACb,kIAAkI,CACnI;IACH;IAEA,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;IAEtC,IAAI,CAACA,MAAW,CAAC,QAAQ,CAAC,EAAE;QAC1B,MAAM,IAAI,KAAK,CACb,+FAA+F;YAC7F,mHAAmH;YACnH,kHAAkH;YAClH,4FAA4F;AAC5F,YAAA,qGAAqG,CACxG;IACH;AAEA,IAAA,OAAO,QAAQ;AACjB;;;;"}
|
package/dist/compiler/main.cjs
CHANGED
|
@@ -30,18 +30,18 @@ function _interopNamespaceDefault(e) {
|
|
|
30
30
|
var path__namespace = /*#__PURE__*/_interopNamespaceDefault(path);
|
|
31
31
|
var fs__namespace = /*#__PURE__*/_interopNamespaceDefault(fs);
|
|
32
32
|
|
|
33
|
-
const compiledTplSuffix =
|
|
34
|
-
const compiledLibSuffix =
|
|
35
|
-
const compiledSoftwareSuffix =
|
|
36
|
-
const compiledAssetSuffix =
|
|
33
|
+
const compiledTplSuffix = ".plj.gz";
|
|
34
|
+
const compiledLibSuffix = ".lib.tengo";
|
|
35
|
+
const compiledSoftwareSuffix = ".sw.json";
|
|
36
|
+
const compiledAssetSuffix = ".as.json";
|
|
37
37
|
// We need to keep track of dependencies for correct tgo-test CLI utility configuraiton.
|
|
38
38
|
// It is much simpler to do this here, than duplicate all tle logic regarding dependencies
|
|
39
39
|
// in go code.
|
|
40
|
-
const srcTestSuffix =
|
|
41
|
-
const srcTplSuffix =
|
|
42
|
-
const srcLibSuffix =
|
|
43
|
-
const srcSoftwareSuffix =
|
|
44
|
-
const srcAssetSuffix =
|
|
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
45
|
const compilableSuffixes = [srcLibSuffix, srcTplSuffix, srcSoftwareSuffix, srcAssetSuffix];
|
|
46
46
|
/**
|
|
47
47
|
* Resolves path to package.json file of the given dependency package.
|
|
@@ -56,20 +56,20 @@ function resolvePackageJsonPackage(root, depPackageName) {
|
|
|
56
56
|
if (resolved) {
|
|
57
57
|
let depth = 0;
|
|
58
58
|
do {
|
|
59
|
-
const p = path__namespace.join(resolved,
|
|
60
|
-
if (util.pathType(p) ===
|
|
59
|
+
const p = path__namespace.join(resolved, "package.json");
|
|
60
|
+
if (util.pathType(p) === "file")
|
|
61
61
|
return p;
|
|
62
62
|
depth++;
|
|
63
63
|
resolved = path__namespace.dirname(resolved);
|
|
64
|
-
} while (depth < 7 && path__namespace.basename(resolved) !==
|
|
64
|
+
} while (depth < 7 && path__namespace.basename(resolved) !== "node_modules");
|
|
65
65
|
}
|
|
66
66
|
// Second approach: trying to find package.json in the package dir.
|
|
67
67
|
const resolved2 = resolveHelper.tryResolveOrError(root, `${depPackageName}/package.json`);
|
|
68
68
|
if (resolved2.result === undefined) {
|
|
69
|
-
if (resolved2.err ===
|
|
69
|
+
if (resolved2.err === "ERR_PACKAGE_PATH_NOT_EXPORTED")
|
|
70
70
|
// tolerating not-exported package.json for dev dependencies
|
|
71
71
|
return undefined;
|
|
72
|
-
throw new Error(`Can't resolve package.json for package ${depPackageName ??
|
|
72
|
+
throw new Error(`Can't resolve package.json for package ${depPackageName ?? "."} relative to ${root}`);
|
|
73
73
|
}
|
|
74
74
|
return resolved2.result;
|
|
75
75
|
}
|
|
@@ -77,29 +77,29 @@ function resolvePackageJsonRoot(root) {
|
|
|
77
77
|
if (!path__namespace.isAbsolute(root)) {
|
|
78
78
|
throw new Error(`Root path must be absolute: ${root}`);
|
|
79
79
|
}
|
|
80
|
-
const p = path__namespace.join(root,
|
|
81
|
-
if (util.pathType(p) ===
|
|
80
|
+
const p = path__namespace.join(root, "package.json");
|
|
81
|
+
if (util.pathType(p) === "file")
|
|
82
82
|
return p;
|
|
83
83
|
throw new Error(`Can't resolve package.json in ${root}`);
|
|
84
84
|
}
|
|
85
85
|
/**
|
|
86
86
|
* Get package info from package.json and all dependencies.
|
|
87
87
|
*/
|
|
88
|
-
function getPackageInfo(root, logger, context =
|
|
88
|
+
function getPackageInfo(root, logger, context = "root") {
|
|
89
89
|
const packageJsonPath = resolvePackageJsonRoot(root);
|
|
90
90
|
const packageJson = JSON.parse(fs__namespace.readFileSync(packageJsonPath).toString());
|
|
91
91
|
// resolving dependencies
|
|
92
92
|
const depInfos = [];
|
|
93
|
-
if (packageJson.dependencies && context !==
|
|
93
|
+
if (packageJson.dependencies && context !== "devDependency") {
|
|
94
94
|
for (const dep of Object.keys(packageJson.dependencies)) {
|
|
95
95
|
const depPackageJson = resolvePackageJsonPackage(root, dep);
|
|
96
96
|
if (depPackageJson === undefined)
|
|
97
97
|
throw new Error(`Can't resolve package.json for dependency ${dep} of ${root}`);
|
|
98
98
|
const depRoot = path__namespace.dirname(depPackageJson);
|
|
99
|
-
depInfos.push(getPackageInfo(depRoot, logger,
|
|
99
|
+
depInfos.push(getPackageInfo(depRoot, logger, "dependency"));
|
|
100
100
|
}
|
|
101
101
|
}
|
|
102
|
-
if (packageJson.devDependencies && context ===
|
|
102
|
+
if (packageJson.devDependencies && context === "root") {
|
|
103
103
|
for (const dep of Object.keys(packageJson.devDependencies)) {
|
|
104
104
|
const depPackageJson = resolvePackageJsonPackage(root, dep);
|
|
105
105
|
if (depPackageJson === undefined) {
|
|
@@ -108,7 +108,7 @@ function getPackageInfo(root, logger, context = 'root') {
|
|
|
108
108
|
continue;
|
|
109
109
|
}
|
|
110
110
|
const depRoot = path__namespace.dirname(depPackageJson);
|
|
111
|
-
depInfos.push(getPackageInfo(depRoot, logger,
|
|
111
|
+
depInfos.push(getPackageInfo(depRoot, logger, "devDependency"));
|
|
112
112
|
}
|
|
113
113
|
}
|
|
114
114
|
return {
|
|
@@ -121,47 +121,47 @@ function getPackageInfo(root, logger, context = 'root') {
|
|
|
121
121
|
};
|
|
122
122
|
}
|
|
123
123
|
function resolveLibsDst(mode, root) {
|
|
124
|
-
return path__namespace.resolve(root, mode,
|
|
124
|
+
return path__namespace.resolve(root, mode, "tengo", "lib");
|
|
125
125
|
}
|
|
126
126
|
function resolveTemplatesDst(mode, root) {
|
|
127
|
-
return path__namespace.resolve(root, mode,
|
|
127
|
+
return path__namespace.resolve(root, mode, "tengo", "tpl");
|
|
128
128
|
}
|
|
129
129
|
function resolveSoftwareDst(mode, root) {
|
|
130
|
-
return path__namespace.resolve(root, mode,
|
|
130
|
+
return path__namespace.resolve(root, mode, "tengo", "software");
|
|
131
131
|
}
|
|
132
132
|
function resolveAssetsDst(mode, root) {
|
|
133
|
-
return path__namespace.resolve(root, mode,
|
|
133
|
+
return path__namespace.resolve(root, mode, "tengo", "asset");
|
|
134
134
|
}
|
|
135
135
|
function loadDependencies(logger, compiler, packageInfo) {
|
|
136
136
|
for (const dep of packageInfo.dependencies)
|
|
137
137
|
loadDependencies(logger, compiler, dep);
|
|
138
|
-
if (packageInfo.context ===
|
|
138
|
+
if (packageInfo.context === "root")
|
|
139
139
|
// we are not reading compiled files for root package
|
|
140
140
|
return;
|
|
141
141
|
// we are in package folder
|
|
142
|
-
const libDistFolder = resolveLibsDst(
|
|
143
|
-
const tplDistFolder = resolveTemplatesDst(
|
|
144
|
-
const softwareDistFolder = resolveSoftwareDst(
|
|
145
|
-
const assetDistFolder = resolveAssetsDst(
|
|
146
|
-
const libDistExists = util.pathType(libDistFolder) ===
|
|
147
|
-
const tplDistExists = util.pathType(tplDistFolder) ===
|
|
148
|
-
const softwareDistExists = util.pathType(softwareDistFolder) ===
|
|
149
|
-
const assetDistExists = util.pathType(assetDistFolder) ===
|
|
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
150
|
if (!libDistExists && !tplDistExists && !softwareDistExists && !assetDistExists)
|
|
151
151
|
// if neither of tengo-specific folders detected, skipping package
|
|
152
152
|
return;
|
|
153
153
|
const packageId = { name: packageInfo.name, version: packageInfo.version };
|
|
154
154
|
if (libDistExists) {
|
|
155
|
-
loadLibsFromDir(logger, packageId,
|
|
155
|
+
loadLibsFromDir(logger, packageId, "dist", libDistFolder, compiler);
|
|
156
156
|
}
|
|
157
157
|
if (tplDistExists) {
|
|
158
|
-
loadTemplatesFromDir(logger, packageId,
|
|
158
|
+
loadTemplatesFromDir(logger, packageId, "dist", tplDistFolder, compiler);
|
|
159
159
|
}
|
|
160
160
|
if (softwareDistExists) {
|
|
161
|
-
loadSoftwareFromDir(logger, packageId,
|
|
161
|
+
loadSoftwareFromDir(logger, packageId, "dist", softwareDistFolder, compiler);
|
|
162
162
|
}
|
|
163
163
|
if (assetDistExists) {
|
|
164
|
-
loadAssetsFromDir(logger, packageId,
|
|
164
|
+
loadAssetsFromDir(logger, packageId, "dist", assetDistFolder, compiler);
|
|
165
165
|
}
|
|
166
166
|
}
|
|
167
167
|
function loadLibsFromDir(logger, packageId, mode, folder, compiler) {
|
|
@@ -170,7 +170,7 @@ function loadLibsFromDir(logger, packageId, mode, folder, compiler) {
|
|
|
170
170
|
if (!f.endsWith(compiledLibSuffix))
|
|
171
171
|
throw new Error(`unexpected file in 'lib' folder: ${file}`);
|
|
172
172
|
const fullName = {
|
|
173
|
-
type:
|
|
173
|
+
type: "library",
|
|
174
174
|
pkg: packageId.name,
|
|
175
175
|
id: f.slice(0, f.length - compiledLibSuffix.length),
|
|
176
176
|
version: packageId.version,
|
|
@@ -179,7 +179,7 @@ function loadLibsFromDir(logger, packageId, mode, folder, compiler) {
|
|
|
179
179
|
compiler.addLib(src);
|
|
180
180
|
logger.debug(`Adding dependency ${_package.fullNameToString(fullName)} from ${file}`);
|
|
181
181
|
if (src.dependencies.length > 0) {
|
|
182
|
-
logger.debug(
|
|
182
|
+
logger.debug("Dependencies:");
|
|
183
183
|
for (const dep of src.dependencies)
|
|
184
184
|
logger.debug(` - ${_package.typedArtifactNameToString(dep)}`);
|
|
185
185
|
}
|
|
@@ -192,7 +192,7 @@ function loadTemplatesFromDir(logger, packageId, mode, folder, compiler) {
|
|
|
192
192
|
if (!f.endsWith(compiledTplSuffix))
|
|
193
193
|
throw new Error(`unexpected file in 'tpl' folder: ${file}`);
|
|
194
194
|
const fullName = {
|
|
195
|
-
type:
|
|
195
|
+
type: "template",
|
|
196
196
|
pkg: packageId.name,
|
|
197
197
|
id: f.slice(0, f.length - compiledTplSuffix.length),
|
|
198
198
|
version: packageId.version,
|
|
@@ -208,7 +208,7 @@ function loadSoftwareFromDir(logger, packageId, mode, folder, compiler) {
|
|
|
208
208
|
if (!f.endsWith(compiledSoftwareSuffix))
|
|
209
209
|
throw new Error(`unexpected file in 'software' folder: ${file}`);
|
|
210
210
|
const fullName = {
|
|
211
|
-
type:
|
|
211
|
+
type: "software",
|
|
212
212
|
pkg: packageId.name,
|
|
213
213
|
id: f.slice(0, f.length - compiledSoftwareSuffix.length),
|
|
214
214
|
version: packageId.version,
|
|
@@ -225,7 +225,7 @@ function loadAssetsFromDir(logger, packageId, mode, folder, compiler) {
|
|
|
225
225
|
if (!f.endsWith(compiledAssetSuffix))
|
|
226
226
|
throw new Error(`unexpected file in 'asset' folder: ${file}`);
|
|
227
227
|
const fullName = {
|
|
228
|
-
type:
|
|
228
|
+
type: "asset",
|
|
229
229
|
pkg: packageId.name,
|
|
230
230
|
id: f.slice(0, f.length - compiledAssetSuffix.length),
|
|
231
231
|
version: packageId.version,
|
|
@@ -241,14 +241,14 @@ function parseSources(logger, packageId, mode, root, subdir) {
|
|
|
241
241
|
for (const f of fs__namespace.readdirSync(path__namespace.join(root, subdir))) {
|
|
242
242
|
const inRootPath = path__namespace.join(subdir, f); // path to item inside given <root>
|
|
243
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) ===
|
|
244
|
+
if (util.pathType(fullPath) === "dir") {
|
|
245
245
|
const nested = parseSources(logger, packageId, mode, root, inRootPath);
|
|
246
246
|
sources.push(...nested);
|
|
247
247
|
continue;
|
|
248
248
|
}
|
|
249
249
|
// Handling index.lib.tengo files: rename them to <package-name>.lib.tengo
|
|
250
|
-
const artifactName = f ===
|
|
251
|
-
const fullName = fullNameFromFileName(packageId, artifactName.replaceAll(path__namespace.sep,
|
|
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
252
|
if (!fullName) {
|
|
253
253
|
logger.info(`Skipping unknown file type: ${artifactName}`);
|
|
254
254
|
continue; // skip unknown file types
|
|
@@ -262,7 +262,7 @@ function parseSources(logger, packageId, mode, root, subdir) {
|
|
|
262
262
|
logger.debug(`Parsing ${_package.fullNameToString(fullName)} from ${file}`);
|
|
263
263
|
const newSrc = source.parseSourceFile(logger, mode, file, fullName, true);
|
|
264
264
|
if (newSrc.dependencies.length > 0) {
|
|
265
|
-
logger.debug(
|
|
265
|
+
logger.debug("Detected dependencies:");
|
|
266
266
|
for (const dep of newSrc.dependencies)
|
|
267
267
|
logger.debug(` - ${_package.typedArtifactNameToString(dep)}`);
|
|
268
268
|
}
|
|
@@ -282,49 +282,49 @@ function fullNameFromFileName(packageId, artifactName) {
|
|
|
282
282
|
return {
|
|
283
283
|
...pkgAndVersion,
|
|
284
284
|
id: artifactName.substring(0, artifactName.length - srcLibSuffix.length),
|
|
285
|
-
type:
|
|
285
|
+
type: "library",
|
|
286
286
|
};
|
|
287
287
|
}
|
|
288
288
|
if (artifactName.endsWith(srcTplSuffix)) {
|
|
289
289
|
return {
|
|
290
290
|
...pkgAndVersion,
|
|
291
291
|
id: artifactName.substring(0, artifactName.length - srcTplSuffix.length),
|
|
292
|
-
type:
|
|
292
|
+
type: "template",
|
|
293
293
|
};
|
|
294
294
|
}
|
|
295
295
|
if (artifactName.endsWith(srcSoftwareSuffix)) {
|
|
296
296
|
return {
|
|
297
297
|
...pkgAndVersion,
|
|
298
298
|
id: artifactName.substring(0, artifactName.length - srcSoftwareSuffix.length),
|
|
299
|
-
type:
|
|
299
|
+
type: "software",
|
|
300
300
|
};
|
|
301
301
|
}
|
|
302
302
|
if (artifactName.endsWith(srcAssetSuffix)) {
|
|
303
303
|
return {
|
|
304
304
|
...pkgAndVersion,
|
|
305
305
|
id: artifactName.substring(0, artifactName.length - srcAssetSuffix.length),
|
|
306
|
-
type:
|
|
306
|
+
type: "asset",
|
|
307
307
|
};
|
|
308
308
|
}
|
|
309
309
|
if (artifactName.endsWith(srcTestSuffix)) {
|
|
310
310
|
return {
|
|
311
311
|
...pkgAndVersion,
|
|
312
312
|
id: artifactName.substring(0, artifactName.length - srcTestSuffix.length),
|
|
313
|
-
type:
|
|
313
|
+
type: "test",
|
|
314
314
|
};
|
|
315
315
|
}
|
|
316
316
|
return null;
|
|
317
317
|
}
|
|
318
318
|
function compile(logger, packageInfo, mode) {
|
|
319
319
|
const compiler = newCompiler(logger, packageInfo, mode);
|
|
320
|
-
const sources = parseSources(logger, packageInfo, mode,
|
|
320
|
+
const sources = parseSources(logger, packageInfo, mode, "src", "");
|
|
321
321
|
// checking that we have something to do
|
|
322
322
|
if (sources.length === 0) {
|
|
323
323
|
const lookFor = [];
|
|
324
324
|
for (const suffix of compilableSuffixes) {
|
|
325
325
|
lookFor.push(`*${suffix}`);
|
|
326
326
|
}
|
|
327
|
-
logger.error(`Nothing to compile. Looked for ${lookFor.join(
|
|
327
|
+
logger.error(`Nothing to compile. Looked for ${lookFor.join(", ")}`);
|
|
328
328
|
process.exit(1);
|
|
329
329
|
}
|
|
330
330
|
// compilation
|
|
@@ -336,7 +336,7 @@ function compile(logger, packageInfo, mode) {
|
|
|
336
336
|
function savePacks(logger, compiled, mode) {
|
|
337
337
|
// writing libs
|
|
338
338
|
if (compiled.libs.length > 0) {
|
|
339
|
-
const libOutput = resolveLibsDst(mode,
|
|
339
|
+
const libOutput = resolveLibsDst(mode, ".");
|
|
340
340
|
fs__namespace.mkdirSync(libOutput, { recursive: true });
|
|
341
341
|
for (const lib of compiled.libs) {
|
|
342
342
|
const file = path__namespace.resolve(libOutput, lib.fullName.id + compiledLibSuffix);
|
|
@@ -346,7 +346,7 @@ function savePacks(logger, compiled, mode) {
|
|
|
346
346
|
}
|
|
347
347
|
// writing templates
|
|
348
348
|
if (compiled.templates.length > 0) {
|
|
349
|
-
const tplOutput = resolveTemplatesDst(mode,
|
|
349
|
+
const tplOutput = resolveTemplatesDst(mode, ".");
|
|
350
350
|
fs__namespace.mkdirSync(tplOutput, { recursive: true });
|
|
351
351
|
for (const tpl of compiled.templates) {
|
|
352
352
|
const file = path__namespace.resolve(tplOutput, tpl.fullName.id + compiledTplSuffix);
|
|
@@ -356,7 +356,7 @@ function savePacks(logger, compiled, mode) {
|
|
|
356
356
|
}
|
|
357
357
|
// writing software
|
|
358
358
|
if (compiled.software.length > 0) {
|
|
359
|
-
const swOutput = resolveSoftwareDst(mode,
|
|
359
|
+
const swOutput = resolveSoftwareDst(mode, ".");
|
|
360
360
|
fs__namespace.mkdirSync(swOutput, { recursive: true });
|
|
361
361
|
for (const sw of compiled.software) {
|
|
362
362
|
const file = path__namespace.resolve(swOutput, sw.fullName.id + compiledSoftwareSuffix);
|
|
@@ -366,7 +366,7 @@ function savePacks(logger, compiled, mode) {
|
|
|
366
366
|
}
|
|
367
367
|
// writing assets
|
|
368
368
|
if (compiled.assets.length > 0) {
|
|
369
|
-
const swOutput = resolveAssetsDst(mode,
|
|
369
|
+
const swOutput = resolveAssetsDst(mode, ".");
|
|
370
370
|
fs__namespace.mkdirSync(swOutput, { recursive: true });
|
|
371
371
|
for (const sw of compiled.software) {
|
|
372
372
|
const file = path__namespace.resolve(swOutput, sw.fullName.id + compiledAssetSuffix);
|
|
@@ -1 +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 // 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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"}
|
|
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 { CompileMode, FullArtifactName } from \"./package\";\nimport { fullNameToString, typedArtifactNameToString } 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\") 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(\n `Can't resolve package.json for package ${depPackageName ?? \".\"} relative to ${root}`,\n );\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\") 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) 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(mode, fullName, getSha256(source), source, file, [], []);\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(mode, fullName, getSha256(source), source, file, [], []);\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 =\n 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 // 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(\n logger: winston.Logger,\n packageInfo: PackageInfo,\n mode: CompileMode,\n): 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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"}
|
package/dist/compiler/main.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import type { TemplatesAndLibs } from
|
|
3
|
-
import { TengoTemplateCompiler } from
|
|
4
|
-
import type { CompileMode, FullArtifactName } from
|
|
5
|
-
import { ArtifactSource } from
|
|
6
|
-
import type winston from
|
|
2
|
+
import type { TemplatesAndLibs } from "./compiler";
|
|
3
|
+
import { TengoTemplateCompiler } from "./compiler";
|
|
4
|
+
import type { CompileMode, FullArtifactName } from "./package";
|
|
5
|
+
import { ArtifactSource } from "./source";
|
|
6
|
+
import type winston from "winston";
|
|
7
7
|
interface PackageId {
|
|
8
8
|
/** Package name from package.json */
|
|
9
9
|
readonly name: string;
|
|
@@ -21,7 +21,7 @@ interface PackageInfo extends PackageId {
|
|
|
21
21
|
readonly dependencies: PackageInfo[];
|
|
22
22
|
}
|
|
23
23
|
export declare function resolvePackageJsonRoot(root: string): string;
|
|
24
|
-
type PackageInfoContext =
|
|
24
|
+
type PackageInfoContext = "root" | "dependency" | "devDependency";
|
|
25
25
|
/**
|
|
26
26
|
* Get package info from package.json and all dependencies.
|
|
27
27
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/compiler/main.ts"],"names":[],"mappings":";AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAEnD,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/compiler/main.ts"],"names":[],"mappings":";AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAEnD,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAE/D,OAAO,EAAE,cAAc,EAAmB,MAAM,UAAU,CAAC;AAE3D,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAInC,UAAU,SAAS;IACjB,qCAAqC;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,wCAAwC;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,UAAU,WAAY,SAAQ,SAAS;IACrC,qCAAqC;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,2BAA2B;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,8BAA8B;IAC9B,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IACrC,mBAAmB;IACnB,QAAQ,CAAC,YAAY,EAAE,WAAW,EAAE,CAAC;CACtC;AA4DD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQ3D;AAED,KAAK,kBAAkB,GAAG,MAAM,GAAG,YAAY,GAAG,eAAe,CAAC;AAElE;;GAEG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,OAAO,CAAC,MAAM,EACtB,OAAO,GAAE,kBAA2B,GACnC,WAAW,CAsCb;AAsKD,wBAAgB,YAAY,CAC1B,MAAM,EAAE,OAAO,CAAC,MAAM,EACtB,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,WAAW,EACjB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GACb,cAAc,EAAE,CAyClB;AAED,wBAAgB,WAAW,CACzB,MAAM,EAAE,OAAO,CAAC,MAAM,EACtB,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE,WAAW,GAChB,qBAAqB,CAOvB;AAED,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,SAAS,EACpB,YAAY,EAAE,MAAM,GACnB,gBAAgB,GAAG,IAAI,CA2CzB;AAED,wBAAgB,OAAO,CACrB,MAAM,EAAE,OAAO,CAAC,MAAM,EACtB,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE,WAAW,GAChB,gBAAgB,CAqBlB;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,IAAI,EAAE,WAAW,QA4C9F"}
|