@diia-inhouse/genproto 3.2.5 → 3.2.7

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.
@@ -10,6 +10,7 @@ const promises_1 = __importDefault(require("node:fs/promises"));
10
10
  const node_path_1 = __importDefault(require("node:path"));
11
11
  const promises_2 = require("node:stream/promises");
12
12
  const glob_1 = require("glob");
13
+ const lodash_1 = require("lodash");
13
14
  const index_1 = require("./index");
14
15
  // import "designSystem/molecules/attentionIconMessageMlc.proto";
15
16
  const importRegex = /import "(?<path>[^"]+)";/;
@@ -68,10 +69,10 @@ class PythonCommandBuilder extends index_1.CommandBuilder {
68
69
  const localProtos = await (0, glob_1.glob)('proto' + protoPattern);
69
70
  const rulesTasks = [];
70
71
  for (const localProto of localProtos) {
71
- rulesTasks.push(replaceRulesTask(localProto, mapping, this.logger));
72
+ rulesTasks.push(replaceRulesTask(localProto, mapping, this.outputDir, this.logger));
72
73
  }
73
74
  const rules = await Promise.all(rulesTasks);
74
- replaceRules = [...new Map(rules.flat().map((rule) => [rule.from, rule])).values()];
75
+ replaceRules = [...new Map(rules.flat().map((rule) => [rule.regex.source, rule])).values()];
75
76
  const generatedFiles = await (0, glob_1.glob)(this.outputDir + '/**/*.py');
76
77
  const tasks = [];
77
78
  for (const generatedFile of generatedFiles) {
@@ -81,6 +82,12 @@ class PythonCommandBuilder extends index_1.CommandBuilder {
81
82
  }
82
83
  }
83
84
  exports.default = PythonCommandBuilder;
85
+ function doubleInnerUnderscores(str) {
86
+ return str.replaceAll(/([\da-z])_(?=[\da-z])/gi, '$1__');
87
+ }
88
+ function escapeRegex(str) {
89
+ return str.replaceAll(/[$()*+.?[\\\]^{|}]/g, String.raw `\$&`);
90
+ }
84
91
  async function touchFilesInTree(dirPath, fileName, logger) {
85
92
  const entries = await promises_1.default.readdir(dirPath, { withFileTypes: true }); // nosemgrep: eslint.detect-non-literal-fs-filename
86
93
  const targetFile = node_path_1.default.join(dirPath, fileName); // nosemgrep: eslint.detect-non-literal-fs-filename
@@ -99,11 +106,24 @@ async function touchFilesInTree(dirPath, fileName, logger) {
99
106
  }
100
107
  }
101
108
  }
102
- async function replaceRulesTask(localProto, mapping, logger) {
109
+ async function replaceRulesTask(localProto, mapping, outputDir, logger) {
103
110
  const replaceRules = [];
104
111
  let handle;
105
112
  try {
106
113
  handle = await promises_1.default.open(localProto); // nosemgrep: eslint.detect-non-literal-fs-filename
114
+ const protoDirname = node_path_1.default.dirname(localProto);
115
+ const protoFilename = node_path_1.default.basename(localProto, '.proto');
116
+ const protoFilenameSnake = (0, lodash_1.snakeCase)(protoFilename);
117
+ const protoFilenameSnakeImportAlies = doubleInnerUnderscores(protoFilenameSnake);
118
+ if (protoDirname === 'proto') {
119
+ // eslint-disable-next-line security/detect-non-literal-regexp
120
+ const rootImportRegex = new RegExp(// nosemgrep: eslint.detect-non-literal-regexp
121
+ `^${escapeRegex(`import ${protoFilenameSnake}_pb2 as ${protoFilenameSnakeImportAlies}__pb2`)}`);
122
+ replaceRules.push({
123
+ regex: rootImportRegex,
124
+ to: `from ${outputDir} import ${protoFilenameSnake}_pb2 as ${protoFilenameSnakeImportAlies}__pb2`,
125
+ });
126
+ }
107
127
  for await (const line of handle.readLines()) {
108
128
  const result = importRegex.exec(line);
109
129
  const importPath = result?.groups?.path;
@@ -112,15 +132,19 @@ async function replaceRulesTask(localProto, mapping, logger) {
112
132
  }
113
133
  const dirpath = node_path_1.default.dirname(importPath);
114
134
  const fileName = node_path_1.default.basename(importPath, '.proto');
135
+ const fileNameSnake = (0, lodash_1.snakeCase)(fileName);
115
136
  if (dirpath === '.') {
116
137
  const depname = mapping[importPath];
117
138
  if (depname === undefined) {
118
139
  logger.log(`Looking for ${importPath} in mapper, received ${depname}. Skipping the mapper.`);
119
140
  continue;
120
141
  }
142
+ logger.log(`I'm looking for ${fileNameSnake} (${fileName}) to map as "import ${fileNameSnake}_pb2"`);
143
+ // eslint-disable-next-line security/detect-non-literal-regexp
144
+ const flatImportRegex = new RegExp(`^${escapeRegex(`import ${fileNameSnake}_pb2`)}`); // nosemgrep: eslint.detect-non-literal-regexp
121
145
  replaceRules.push({
122
- from: `import ${fileName}_pb2`,
123
- to: `from ${depname} import ${fileName}_pb2`,
146
+ regex: flatImportRegex,
147
+ to: `from ${depname} import ${fileNameSnake}_pb2`,
124
148
  });
125
149
  }
126
150
  else {
@@ -130,9 +154,12 @@ async function replaceRulesTask(localProto, mapping, logger) {
130
154
  continue;
131
155
  }
132
156
  const importName = dirpath.replaceAll('/', '.');
157
+ logger.log(`I'm looking for ${fileNameSnake} (${fileName}) to map as "from ${importName} import ${fileNameSnake}_pb2"`);
158
+ // eslint-disable-next-line security/detect-non-literal-regexp
159
+ const nestedImportRegex = new RegExp(`^${escapeRegex(`from ${importName} import ${fileNameSnake}_pb2`)}`); // nosemgrep: eslint.detect-non-literal-regexp
133
160
  replaceRules.push({
134
- from: `from ${importName} import ${fileName}_pb2`,
135
- to: `from ${depname}.${importName} import ${fileName}_pb2`,
161
+ regex: nestedImportRegex,
162
+ to: `from ${depname}.${importName} import ${fileNameSnake}_pb2`,
136
163
  });
137
164
  }
138
165
  }
@@ -154,7 +181,7 @@ async function fileMapper(generatedFile, replaceRules, logger) {
154
181
  for await (const line of handle.readLines()) {
155
182
  let mutableLine = line;
156
183
  for (const rule of replaceRules) {
157
- mutableLine = mutableLine.replace(rule.from, rule.to);
184
+ mutableLine = mutableLine.replace(rule.regex, rule.to);
158
185
  }
159
186
  const writeOk = wstream.write(mutableLine + '\n');
160
187
  if (!writeOk) {
@@ -1 +1 @@
1
- {"version":3,"file":"pythonCommandBuilder.js","sourceRoot":"","sources":["../../src/command/pythonCommandBuilder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pythonCommandBuilder.js","sourceRoot":"","sources":["../../src/command/pythonCommandBuilder.ts"],"names":[],"mappings":";;;;;AAAA,4DAA4D;AAC5D,6CAAkC;AAClC,qCAAoE;AACpE,gEAAyC;AACzC,0DAA4B;AAC5B,mDAA+C;AAE/C,+BAA2B;AAC3B,mCAAkC;AAGlC,mCAAwC;AAExC,iEAAiE;AACjE,MAAM,WAAW,GAAG,0BAA0B,CAAA;AAC9C,MAAM,WAAW,GAAG,MAAM,CAAA;AAE1B,MAAqB,oBAAqB,SAAQ,sBAAc;IACpD,oBAAoB,GAA2B;QACnD,6CAA6C,EAAE,aAAa;QAC5D,qDAAqD,EAAE,qBAAqB;QAC5E,KAAK,EAAE,IAAI,CAAC,SAAS;KACxB,CAAA;IAED,KAAK,CAAC,aAAa;QACf,MAAM,OAAO,GAAG;YACZ,SAAS;YACT,sBAAsB;YACtB,gBAAgB,IAAI,CAAC,SAAS,EAAE;YAChC,qBAAqB,IAAI,CAAC,SAAS,EAAE;YACrC,aAAa,IAAI,CAAC,SAAS,EAAE;YAC7B,oBAAoB;YACpB,6CAA6C;YAC7C,iCAAiC;YACjC,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC;iBACpC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,oBAAU,EAAC,IAAI,CAAC,CAAC,CAAC,mDAAmD;iBACtF,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,gBAAgB,IAAI,EAAE,CAAC;SAC7C,CAAA;QAED,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACtC,OAAO,CAAC,IAAI,CAAC,gBAAgB,SAAS,EAAE,CAAC,CAAA;QAC7C,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAA;QAEtC,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;QAEhC,OAAO,OAAO,CAAA;IAClB,CAAC;IAED,KAAK,CAAC,WAAW;QACb,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAA;QAE7B,MAAM,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;IACtE,CAAC;IAED,oDAAoD;IACpD,sDAAsD;IACtD,sFAAsF;IACtF,sEAAsE;IACtE,qEAAqE;IACrE,4EAA4E;IAC5E,yCAAyC;IACzC,qDAAqD;IAC7C,KAAK,CAAC,gBAAgB;QAC1B,MAAM,YAAY,GAAG,aAAa,CAAA;QAClC,MAAM,OAAO,GAA2B,EAAE,CAAA;QAC1C,IAAI,YAAY,GAAoC,EAAE,CAAA;QAEtD,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC1C,MAAM,KAAK,GAAG,MAAM,IAAA,WAAI,EAAC,GAAG,GAAG,YAAY,CAAC,CAAA;YAE5C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACvB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAA;gBAE1D,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAA;gBAE7C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,GAAG,OAAO,GAAG,oBAAoB,CAAC,CAAA;YACrE,CAAC;QACL,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,IAAA,WAAI,EAAC,OAAO,GAAG,YAAY,CAAC,CAAA;QAEtD,MAAM,UAAU,GAAG,EAAE,CAAA;QACrB,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACnC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;QACvF,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;QAE3C,YAAY,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAA;QAE3F,MAAM,cAAc,GAAG,MAAM,IAAA,WAAI,EAAC,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,CAAA;QAE9D,MAAM,KAAK,GAAoB,EAAE,CAAA;QACjC,KAAK,MAAM,aAAa,IAAI,cAAc,EAAE,CAAC;YACzC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;QACpE,CAAC;QAED,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAC5B,CAAC;CACJ;AApFD,uCAoFC;AAED,SAAS,sBAAsB,CAAC,GAAW;IACvC,OAAO,GAAG,CAAC,UAAU,CAAC,yBAAyB,EAAE,MAAM,CAAC,CAAA;AAC5D,CAAC;AAED,SAAS,WAAW,CAAC,GAAW;IAC5B,OAAO,GAAG,CAAC,UAAU,CAAC,qBAAqB,EAAE,MAAM,CAAC,GAAG,CAAA,KAAK,CAAC,CAAA;AACjE,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,OAAe,EAAE,QAAgB,EAAE,MAAc;IAC7E,MAAM,OAAO,GAAG,MAAM,kBAAU,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAA,CAAC,mDAAmD;IAE9H,MAAM,UAAU,GAAG,mBAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA,CAAC,mDAAmD;IACnG,IAAI,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,kBAAU,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAA,CAAC,mDAAmD;QAEzG,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,CAAA,CAAC,mDAAmD;QAC/F,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;IACxB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,MAAM,CAAC,GAAG,CAAC,2BAA2B,OAAO,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAA;IACjG,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC1B,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACtB,MAAM,QAAQ,GAAG,mBAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA,CAAC,mDAAmD;YAEnG,MAAM,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAA;QACtD,CAAC;IACL,CAAC;AACL,CAAC;AAED,KAAK,UAAU,gBAAgB,CAC3B,UAAkB,EAClB,OAA+B,EAC/B,SAAiB,EACjB,MAAc;IAEd,MAAM,YAAY,GAAG,EAAE,CAAA;IAEvB,IAAI,MAAyC,CAAA;IAC7C,IAAI,CAAC;QACD,MAAM,GAAG,MAAM,kBAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA,CAAC,mDAAmD;QAE9F,MAAM,YAAY,GAAG,mBAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;QAC7C,MAAM,aAAa,GAAG,mBAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;QACzD,MAAM,kBAAkB,GAAG,IAAA,kBAAS,EAAC,aAAa,CAAC,CAAA;QACnD,MAAM,6BAA6B,GAAG,sBAAsB,CAAC,kBAAkB,CAAC,CAAA;QAEhF,IAAI,YAAY,KAAK,OAAO,EAAE,CAAC;YAC3B,8DAA8D;YAC9D,MAAM,eAAe,GAAG,IAAI,MAAM,CAAE,8CAA8C;YAC9E,IAAI,WAAW,CAAC,UAAU,kBAAkB,WAAW,6BAA6B,OAAO,CAAC,EAAE,CACjG,CAAA;YAED,YAAY,CAAC,IAAI,CAAC;gBACd,KAAK,EAAE,eAAe;gBACtB,EAAE,EAAE,QAAQ,SAAS,WAAW,kBAAkB,WAAW,6BAA6B,OAAO;aACpG,CAAC,CAAA;QACN,CAAC;QAED,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC;YAC1C,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACrC,MAAM,UAAU,GAAG,MAAM,EAAE,MAAM,EAAE,IAAI,CAAA;YAEvC,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;gBAC3B,SAAQ;YACZ,CAAC;YAED,MAAM,OAAO,GAAG,mBAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;YACxC,MAAM,QAAQ,GAAG,mBAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;YACpD,MAAM,aAAa,GAAG,IAAA,kBAAS,EAAC,QAAQ,CAAC,CAAA;YAEzC,IAAI,OAAO,KAAK,GAAG,EAAE,CAAC;gBAClB,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;gBAEnC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;oBACxB,MAAM,CAAC,GAAG,CAAC,eAAe,UAAU,wBAAwB,OAAO,wBAAwB,CAAC,CAAA;oBAC5F,SAAQ;gBACZ,CAAC;gBAED,MAAM,CAAC,GAAG,CAAC,mBAAmB,aAAa,KAAK,QAAQ,uBAAuB,aAAa,OAAO,CAAC,CAAA;gBAEpG,8DAA8D;gBAC9D,MAAM,eAAe,GAAG,IAAI,MAAM,CAAC,IAAI,WAAW,CAAC,UAAU,aAAa,MAAM,CAAC,EAAE,CAAC,CAAA,CAAC,8CAA8C;gBAEnI,YAAY,CAAC,IAAI,CAAC;oBACd,KAAK,EAAE,eAAe;oBACtB,EAAE,EAAE,QAAQ,OAAO,WAAW,aAAa,MAAM;iBACpD,CAAC,CAAA;YACN,CAAC;iBAAM,CAAC;gBACJ,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;gBAEnC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;oBACxB,MAAM,CAAC,GAAG,CAAC,eAAe,UAAU,wBAAwB,OAAO,wBAAwB,CAAC,CAAA;oBAC5F,SAAQ;gBACZ,CAAC;gBAED,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;gBAE/C,MAAM,CAAC,GAAG,CAAC,mBAAmB,aAAa,KAAK,QAAQ,qBAAqB,UAAU,WAAW,aAAa,OAAO,CAAC,CAAA;gBAEvH,8DAA8D;gBAC9D,MAAM,iBAAiB,GAAG,IAAI,MAAM,CAAC,IAAI,WAAW,CAAC,QAAQ,UAAU,WAAW,aAAa,MAAM,CAAC,EAAE,CAAC,CAAA,CAAC,8CAA8C;gBAExJ,YAAY,CAAC,IAAI,CAAC;oBACd,KAAK,EAAE,iBAAiB;oBACxB,EAAE,EAAE,QAAQ,OAAO,IAAI,UAAU,WAAW,aAAa,MAAM;iBAClE,CAAC,CAAA;YACN,CAAC;QACL,CAAC;IACL,CAAC;YAAS,CAAC;QACP,IAAI,MAAM,EAAE,CAAC;YACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QACxB,CAAC;IACL,CAAC;IAED,OAAO,YAAY,CAAA;AACvB,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,aAAqB,EAAE,YAA6C,EAAE,MAAc;IAC1G,IAAI,MAAyC,CAAA;IAC7C,IAAI,OAAgC,CAAA;IACpC,IAAI,IAAI,GAAG,KAAK,CAAA;IAChB,IAAI,CAAC;QACD,MAAM,GAAG,MAAM,kBAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA,CAAC,mDAAmD;QAEjG,OAAO,GAAG,IAAA,2BAAiB,EAAC,aAAa,GAAG,MAAM,CAAC,CAAA,CAAC,mDAAmD;QAEvG,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC;YAC1C,IAAI,WAAW,GAAG,IAAI,CAAA;YACtB,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;gBAC9B,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,CAAA;YAC1D,CAAC;YAED,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,CAAA;YAEjD,IAAI,CAAC,OAAO,EAAE,CAAC;gBACX,MAAM,IAAA,kBAAI,EAAC,OAAO,EAAE,OAAO,CAAC,CAAA;YAChC,CAAC;QACL,CAAC;QAED,IAAI,GAAG,IAAI,CAAA;IACf,CAAC;YAAS,CAAC;QACP,IAAI,MAAM,EAAE,CAAC;YACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QACxB,CAAC;QAED,IAAI,OAAO,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,EAAE,CAAA;YACb,MAAM,IAAA,mBAAQ,EAAC,OAAO,CAAC,CAAA;YAEvB,mDAAmD;YACnD,IAAI,CAAC,IAAI,IAAI,IAAA,oBAAU,EAAC,aAAa,GAAG,MAAM,CAAC,EAAE,CAAC;gBAC9C,MAAM,kBAAU,CAAC,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,CAAA,CAAC,mDAAmD;YACvG,CAAC;QACL,CAAC;IACL,CAAC;IAED,IAAI,CAAC;QACD,MAAM,kBAAU,CAAC,MAAM,CAAC,aAAa,GAAG,MAAM,EAAE,aAAa,CAAC,CAAA,CAAC,mDAAmD;QAClH,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAA;IACpC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,mDAAmD;QACnD,IAAI,IAAA,oBAAU,EAAC,aAAa,GAAG,MAAM,CAAC,EAAE,CAAC;YACrC,MAAM,kBAAU,CAAC,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,CAAA,CAAC,mDAAmD;QACvG,CAAC;QAED,MAAM,CAAC,GAAG,CAAC,sBAAsB,GAAG,EAAE,CAAC,CAAA;QACvC,MAAM,GAAG,CAAA;IACb,CAAC;AACL,CAAC"}
@@ -36,6 +36,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
36
36
  return (mod && mod.__esModule) ? mod : { "default": mod };
37
37
  };
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
+ const node_events_1 = require("node:events");
39
40
  const node_fs_1 = __importStar(require("node:fs"));
40
41
  const node_path_1 = __importDefault(require("node:path"));
41
42
  const node_readline_1 = require("node:readline");
@@ -85,12 +86,12 @@ exports.default = {
85
86
  for (const recPaths of await recursivePaths(dir)) {
86
87
  // eslint-disable-next-line security/detect-non-literal-fs-filename
87
88
  const stream = node_fs_1.default.createReadStream(recPaths); // nosemgrep: eslint.detect-non-literal-fs-filename
88
- const rl = node_readline_1.promises.createInterface({
89
+ const rl = (0, node_readline_1.createInterface)({
89
90
  input: stream,
90
91
  crlfDelay: Infinity,
91
92
  });
92
93
  let ownPackage = false;
93
- for await (const line of rl) {
94
+ rl.on('line', (line) => {
94
95
  const matchArr = line.match(/^\/\/ source: (.+)$/);
95
96
  if (matchArr) {
96
97
  const protoFile = matchArr[1];
@@ -99,11 +100,13 @@ exports.default = {
99
100
  // eslint-disable-next-line security/detect-non-literal-fs-filename
100
101
  if (node_fs_1.default.existsSync(protofilepath)) { // nosemgrep: eslint.detect-non-literal-fs-filename
101
102
  // eslint-disable-next-line security/detect-non-literal-fs-filename
102
- const contents = await node_fs_1.promises.readFile(protofilepath); // nosemgrep: eslint.detect-non-literal-fs-filename
103
+ const contents = node_fs_1.default.readFileSync(protofilepath); // nosemgrep: eslint.detect-non-literal-fs-filename
103
104
  ownPackage = contents.includes('package ua.gov.diia');
104
105
  }
105
106
  }
106
- }
107
+ });
108
+ await (0, node_events_1.once)(rl, 'close');
109
+ stream.destroy();
107
110
  const fileName = node_path_1.default.basename(recPaths, node_path_1.default.extname(recPaths));
108
111
  const parentDirName = node_path_1.default.basename(node_path_1.default.dirname(recPaths));
109
112
  const fileNameWithPrefix = node_path_1.default.join(parentDirName, fileName);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@diia-inhouse/genproto",
3
- "version": "3.2.5",
3
+ "version": "3.2.7",
4
4
  "description": "JS codegen from proto with imports from @diia-inhouse/types",
5
5
  "bin": {
6
6
  "genproto": "./dist/genproto.js"
@@ -15,7 +15,7 @@
15
15
  "lint-fix": "eslint --fix . && prettier --write .",
16
16
  "lint:lockfile": "lockfile-lint --path package-lock.json --allowed-hosts registry.npmjs.org --validate-https",
17
17
  "prepare": "npm run build",
18
- "test": "vitest run",
18
+ "test": "tsc --project tests/tsconfig.json && vitest run",
19
19
  "find-circulars": "madge --circular --extensions ts ./"
20
20
  },
21
21
  "engines": {
@@ -29,6 +29,7 @@
29
29
  ],
30
30
  "dependencies": {
31
31
  "glob": "11.1.0",
32
+ "lodash": "4.17.23",
32
33
  "lookpath": "1.2.2",
33
34
  "yargs": "17.7.2"
34
35
  },
@@ -38,15 +39,17 @@
38
39
  "devDependencies": {
39
40
  "@diia-inhouse/configs": "6.1.1",
40
41
  "@diia-inhouse/eslint-config": "8.6.0",
42
+ "@types/lodash": "4.17.24",
41
43
  "@types/node": "20.17.1",
42
44
  "@types/yargs": "17.0.33",
45
+ "@vitest/coverage-v8": "4.1.2",
43
46
  "eslint": "9.33.0",
44
47
  "lockfile-lint": "4.14.0",
45
48
  "madge": "7.0.0",
46
49
  "prettier": "3.3.3",
47
50
  "rimraf": "6.0.1",
48
51
  "semantic-release": "24.0.0",
49
- "vitest": "4.1.1"
52
+ "vitest": "4.1.2"
50
53
  },
51
54
  "release": {
52
55
  "extends": "@diia-inhouse/configs/dist/semantic-release/package"
@@ -6,6 +6,7 @@ import path from 'node:path'
6
6
  import { finished } from 'node:stream/promises'
7
7
 
8
8
  import { glob } from 'glob'
9
+ import { snakeCase } from 'lodash'
9
10
 
10
11
  import Logger from '../logger'
11
12
  import { CommandBuilder } from './index'
@@ -64,7 +65,7 @@ export default class PythonCommandBuilder extends CommandBuilder {
64
65
  private async mapPythonImports(): Promise<void> {
65
66
  const protoPattern = '/**/*.proto'
66
67
  const mapping: Record<string, string> = {}
67
- let replaceRules: { from: string; to: string }[] = []
68
+ let replaceRules: { regex: RegExp; to: string }[] = []
68
69
 
69
70
  for (const dep in this.cardinalDependencies) {
70
71
  const files = await glob(dep + protoPattern)
@@ -82,12 +83,12 @@ export default class PythonCommandBuilder extends CommandBuilder {
82
83
 
83
84
  const rulesTasks = []
84
85
  for (const localProto of localProtos) {
85
- rulesTasks.push(replaceRulesTask(localProto, mapping, this.logger))
86
+ rulesTasks.push(replaceRulesTask(localProto, mapping, this.outputDir, this.logger))
86
87
  }
87
88
 
88
89
  const rules = await Promise.all(rulesTasks)
89
90
 
90
- replaceRules = [...new Map(rules.flat().map((rule) => [rule.from, rule])).values()]
91
+ replaceRules = [...new Map(rules.flat().map((rule) => [rule.regex.source, rule])).values()]
91
92
 
92
93
  const generatedFiles = await glob(this.outputDir + '/**/*.py')
93
94
 
@@ -100,6 +101,14 @@ export default class PythonCommandBuilder extends CommandBuilder {
100
101
  }
101
102
  }
102
103
 
104
+ function doubleInnerUnderscores(str: string): string {
105
+ return str.replaceAll(/([\da-z])_(?=[\da-z])/gi, '$1__')
106
+ }
107
+
108
+ function escapeRegex(str: string): string {
109
+ return str.replaceAll(/[$()*+.?[\\\]^{|}]/g, String.raw`\$&`)
110
+ }
111
+
103
112
  async function touchFilesInTree(dirPath: string, fileName: string, logger: Logger): Promise<void> {
104
113
  const entries = await fsPromises.readdir(dirPath, { withFileTypes: true }) // nosemgrep: eslint.detect-non-literal-fs-filename
105
114
 
@@ -125,14 +134,32 @@ async function touchFilesInTree(dirPath: string, fileName: string, logger: Logge
125
134
  async function replaceRulesTask(
126
135
  localProto: string,
127
136
  mapping: Record<string, string>,
137
+ outputDir: string,
128
138
  logger: Logger,
129
- ): Promise<{ from: string; to: string }[]> {
139
+ ): Promise<{ regex: RegExp; to: string }[]> {
130
140
  const replaceRules = []
131
141
 
132
142
  let handle: fsPromises.FileHandle | undefined
133
143
  try {
134
144
  handle = await fsPromises.open(localProto) // nosemgrep: eslint.detect-non-literal-fs-filename
135
145
 
146
+ const protoDirname = path.dirname(localProto)
147
+ const protoFilename = path.basename(localProto, '.proto')
148
+ const protoFilenameSnake = snakeCase(protoFilename)
149
+ const protoFilenameSnakeImportAlies = doubleInnerUnderscores(protoFilenameSnake)
150
+
151
+ if (protoDirname === 'proto') {
152
+ // eslint-disable-next-line security/detect-non-literal-regexp
153
+ const rootImportRegex = new RegExp( // nosemgrep: eslint.detect-non-literal-regexp
154
+ `^${escapeRegex(`import ${protoFilenameSnake}_pb2 as ${protoFilenameSnakeImportAlies}__pb2`)}`,
155
+ )
156
+
157
+ replaceRules.push({
158
+ regex: rootImportRegex,
159
+ to: `from ${outputDir} import ${protoFilenameSnake}_pb2 as ${protoFilenameSnakeImportAlies}__pb2`,
160
+ })
161
+ }
162
+
136
163
  for await (const line of handle.readLines()) {
137
164
  const result = importRegex.exec(line)
138
165
  const importPath = result?.groups?.path
@@ -143,6 +170,7 @@ async function replaceRulesTask(
143
170
 
144
171
  const dirpath = path.dirname(importPath)
145
172
  const fileName = path.basename(importPath, '.proto')
173
+ const fileNameSnake = snakeCase(fileName)
146
174
 
147
175
  if (dirpath === '.') {
148
176
  const depname = mapping[importPath]
@@ -152,9 +180,14 @@ async function replaceRulesTask(
152
180
  continue
153
181
  }
154
182
 
183
+ logger.log(`I'm looking for ${fileNameSnake} (${fileName}) to map as "import ${fileNameSnake}_pb2"`)
184
+
185
+ // eslint-disable-next-line security/detect-non-literal-regexp
186
+ const flatImportRegex = new RegExp(`^${escapeRegex(`import ${fileNameSnake}_pb2`)}`) // nosemgrep: eslint.detect-non-literal-regexp
187
+
155
188
  replaceRules.push({
156
- from: `import ${fileName}_pb2`,
157
- to: `from ${depname} import ${fileName}_pb2`,
189
+ regex: flatImportRegex,
190
+ to: `from ${depname} import ${fileNameSnake}_pb2`,
158
191
  })
159
192
  } else {
160
193
  const depname = mapping[importPath]
@@ -166,9 +199,14 @@ async function replaceRulesTask(
166
199
 
167
200
  const importName = dirpath.replaceAll('/', '.')
168
201
 
202
+ logger.log(`I'm looking for ${fileNameSnake} (${fileName}) to map as "from ${importName} import ${fileNameSnake}_pb2"`)
203
+
204
+ // eslint-disable-next-line security/detect-non-literal-regexp
205
+ const nestedImportRegex = new RegExp(`^${escapeRegex(`from ${importName} import ${fileNameSnake}_pb2`)}`) // nosemgrep: eslint.detect-non-literal-regexp
206
+
169
207
  replaceRules.push({
170
- from: `from ${importName} import ${fileName}_pb2`,
171
- to: `from ${depname}.${importName} import ${fileName}_pb2`,
208
+ regex: nestedImportRegex,
209
+ to: `from ${depname}.${importName} import ${fileNameSnake}_pb2`,
172
210
  })
173
211
  }
174
212
  }
@@ -181,7 +219,7 @@ async function replaceRulesTask(
181
219
  return replaceRules
182
220
  }
183
221
 
184
- async function fileMapper(generatedFile: string, replaceRules: { from: string; to: string }[], logger: Logger): Promise<void> {
222
+ async function fileMapper(generatedFile: string, replaceRules: { regex: RegExp; to: string }[], logger: Logger): Promise<void> {
185
223
  let handle: fsPromises.FileHandle | undefined
186
224
  let wstream: WriteStream | undefined
187
225
  let isOk = false
@@ -193,7 +231,7 @@ async function fileMapper(generatedFile: string, replaceRules: { from: string; t
193
231
  for await (const line of handle.readLines()) {
194
232
  let mutableLine = line
195
233
  for (const rule of replaceRules) {
196
- mutableLine = mutableLine.replace(rule.from, rule.to)
234
+ mutableLine = mutableLine.replace(rule.regex, rule.to)
197
235
  }
198
236
 
199
237
  const writeOk = wstream.write(mutableLine + '\n')
@@ -1,6 +1,7 @@
1
+ import { once } from 'node:events'
1
2
  import syncFs, { promises as fs } from 'node:fs'
2
3
  import path from 'node:path'
3
- import { promises as readline } from 'node:readline'
4
+ import { createInterface } from 'node:readline'
4
5
 
5
6
  /**
6
7
  * Extract exported symbol names from a ts-proto generated TypeScript file.
@@ -55,13 +56,14 @@ export default {
55
56
  for (const recPaths of await recursivePaths(dir)) {
56
57
  // eslint-disable-next-line security/detect-non-literal-fs-filename
57
58
  const stream = syncFs.createReadStream(recPaths) // nosemgrep: eslint.detect-non-literal-fs-filename
58
- const rl = readline.createInterface({
59
+ const rl = createInterface({
59
60
  input: stream,
60
61
  crlfDelay: Infinity,
61
62
  })
62
63
 
63
64
  let ownPackage = false
64
- for await (const line of rl) {
65
+
66
+ rl.on('line', (line) => {
65
67
  const matchArr = line.match(/^\/\/ source: (.+)$/)
66
68
  if (matchArr) {
67
69
  const protoFile = matchArr[1]
@@ -71,12 +73,15 @@ export default {
71
73
  // eslint-disable-next-line security/detect-non-literal-fs-filename
72
74
  if (syncFs.existsSync(protofilepath)) { // nosemgrep: eslint.detect-non-literal-fs-filename
73
75
  // eslint-disable-next-line security/detect-non-literal-fs-filename
74
- const contents = await fs.readFile(protofilepath) // nosemgrep: eslint.detect-non-literal-fs-filename
76
+ const contents = syncFs.readFileSync(protofilepath) // nosemgrep: eslint.detect-non-literal-fs-filename
75
77
 
76
78
  ownPackage = contents.includes('package ua.gov.diia')
77
79
  }
78
80
  }
79
- }
81
+ })
82
+
83
+ await once(rl, 'close')
84
+ stream.destroy()
80
85
 
81
86
  const fileName = path.basename(recPaths, path.extname(recPaths))
82
87
  const parentDirName = path.basename(path.dirname(recPaths))