@kontur.candy/generator 5.102.0 → 5.103.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/index.js +71 -5
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -67846,7 +67846,8 @@ class FormulaProcessor {
67846
67846
  if (this.isStringExpression(leftExpression) && this.isStringExpression(rightExpression)) {
67847
67847
  this.returnExpression(_babel_types__WEBPACK_IMPORTED_MODULE_0__.binaryExpression("===", leftExpression, rightExpression));
67848
67848
  } else {
67849
- this.returnExpression(_babel_types__WEBPACK_IMPORTED_MODULE_0__.callExpression(_babel_types__WEBPACK_IMPORTED_MODULE_0__.memberExpression(leftExpression, _babel_types__WEBPACK_IMPORTED_MODULE_0__.identifier("eq")), [rightExpression]));
67849
+ const rightArgument = _babel_types__WEBPACK_IMPORTED_MODULE_0__.isStringLiteral(rightExpression) ? _babel_types__WEBPACK_IMPORTED_MODULE_0__.callExpression(_babel_types__WEBPACK_IMPORTED_MODULE_0__.identifier("wrapDecimalOperand"), [rightExpression]) : rightExpression;
67850
+ this.returnExpression(_babel_types__WEBPACK_IMPORTED_MODULE_0__.callExpression(_babel_types__WEBPACK_IMPORTED_MODULE_0__.memberExpression(leftExpression, _babel_types__WEBPACK_IMPORTED_MODULE_0__.identifier("eq")), [rightArgument]));
67850
67851
  }
67851
67852
  }
67852
67853
  beforeChooseExpression() {
@@ -72065,6 +72066,10 @@ class KCXmlGeneratorBase {
72065
72066
  if (expression instanceof _AutoCalculationsGenerator_AutoCalculationsFromFormulas_KCXmlContract_Formula__WEBPACK_IMPORTED_MODULE_1__.FormulaPropertyByNameExpression) {
72066
72067
  return gcf(x => x.getProperty, JSON.stringify(expression.name));
72067
72068
  }
72069
+ if (expression instanceof _AutoCalculationsGenerator_AutoCalculationsFromFormulas_KCXmlContract_Formula__WEBPACK_IMPORTED_MODULE_1__.FormulaCastExpression) {
72070
+ const compiledExpression = this.compileExpression(prefix, targetFullPath, expression.expression, deps);
72071
+ return compiledExpression;
72072
+ }
72068
72073
  // -- не работает в рантайм калькуляторе
72069
72074
  if (expression instanceof _AutoCalculationsGenerator_AutoCalculationsFromFormulas_KCXmlContract_Formula__WEBPACK_IMPORTED_MODULE_1__.FormulaFirstOrDefaultExpression) {
72070
72075
  return "null";
@@ -72830,12 +72835,17 @@ async function readFormSources(formSourcesPath, farmDirectory) {
72830
72835
  const legacyfetchfunctionsDirectory = (await (0,fs_extra__WEBPACK_IMPORTED_MODULE_12__.pathExists)(path__WEBPACK_IMPORTED_MODULE_1___default().join(farmDirectory, "legacyfetchfunctions"))) ? path__WEBPACK_IMPORTED_MODULE_1___default().join(farmDirectory, "legacyfetchfunctions") : path__WEBPACK_IMPORTED_MODULE_1___default().join(farmDirectory, "candy.farm", "legacyfetchfunctions");
72831
72836
  sugarReferences.fetchFunctionFiles = (await readdirAsync(legacyfetchfunctionsDirectory)).map(x => path__WEBPACK_IMPORTED_MODULE_1___default().resolve(legacyfetchfunctionsDirectory, x));
72832
72837
  }
72838
+ const additionalNormalizers = await readAdditionalNormalizersFiles(formSourcesPath);
72839
+ const formJsonSettings = (_JSON$parse$settings = JSON.parse(await readFileSource(formSourcesPath, "form.json", "{}"))["settings"]) !== null && _JSON$parse$settings !== void 0 ? _JSON$parse$settings : {};
72840
+ if (additionalNormalizers.length > 0 && !formJsonSettings.useServerSideFLangNormalization) {
72841
+ throw new Error("[ERROR] Не проставлен флаг useServerSideFLangNormalization, но папка normalizers не пустая");
72842
+ }
72833
72843
  const result = {
72834
72844
  sugarContent: sugarContent,
72835
72845
  resources: {
72836
72846
  gfv: gfv,
72837
72847
  formSourcesPath: formSourcesPath,
72838
- formJsonSettings: (_JSON$parse$settings = JSON.parse(await readFileSource(formSourcesPath, "form.json", "{}"))["settings"]) !== null && _JSON$parse$settings !== void 0 ? _JSON$parse$settings : {},
72848
+ formJsonSettings: formJsonSettings,
72839
72849
  additionalSettings: await readFileSource(formSourcesPath, "settings.json", "{}"),
72840
72850
  autocalcsContent: await readAutoCalcFiles(path__WEBPACK_IMPORTED_MODULE_1___default().join(formSourcesPath, "autocalc")),
72841
72851
  helpersContent: await readJavaScriptFilesWithNames(path__WEBPACK_IMPORTED_MODULE_1___default().join(formSourcesPath, "helpers")),
@@ -72850,7 +72860,7 @@ async function readFormSources(formSourcesPath, farmDirectory) {
72850
72860
  fetchFunctionSources: await readFiles(sugarReferences.fetchFunctionFiles.map(x => path__WEBPACK_IMPORTED_MODULE_1___default().resolve(formSugarDirectoryPath, x))),
72851
72861
  localization: await connectJSFilesWithNames(path__WEBPACK_IMPORTED_MODULE_1___default().join(formSourcesPath, "localization")),
72852
72862
  importedFiles: await readImportedFiles(formSourcesPath),
72853
- additionalNormalizers: await readAdditionalNormalizersFiles(formSourcesPath)
72863
+ additionalNormalizers: additionalNormalizers
72854
72864
  }
72855
72865
  };
72856
72866
  if (gfv.startsWith("4")) {
@@ -73326,9 +73336,11 @@ __webpack_require__.r(__webpack_exports__);
73326
73336
  /* harmony export */ });
73327
73337
  /* harmony import */ var _Common_ModelPath_ModelPath__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../Common/ModelPath/ModelPath */ "./Common/ModelPath/ModelPath.ts");
73328
73338
  /* harmony import */ var _Common_hashUtils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../Common/hashUtils */ "./Common/hashUtils.ts");
73339
+ /* harmony import */ var _Common_TypingUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../Common/TypingUtils */ "./Common/TypingUtils.ts");
73329
73340
  var _BuildInTypeExpression;
73330
73341
 
73331
73342
 
73343
+
73332
73344
  class FLangNode {
73333
73345
  toString() {
73334
73346
  return this.convertToString();
@@ -73606,6 +73618,33 @@ class BuildInTypeExpression extends TypeReferenceExpression {
73606
73618
  convertToString() {
73607
73619
  return this.buildInTypeName;
73608
73620
  }
73621
+ static getByName(typeName) {
73622
+ switch (typeName) {
73623
+ case "string":
73624
+ return BuildInTypeExpression.string;
73625
+ case "decimal":
73626
+ return BuildInTypeExpression.decimal;
73627
+ case "dict":
73628
+ return BuildInTypeExpression.dict;
73629
+ case "bool":
73630
+ return BuildInTypeExpression.bool;
73631
+ case "null":
73632
+ return BuildInTypeExpression.null;
73633
+ case "dateTime":
73634
+ return BuildInTypeExpression.dateTime;
73635
+ case "int":
73636
+ return BuildInTypeExpression.int;
73637
+ case "array":
73638
+ return BuildInTypeExpression.array;
73639
+ case "hashSet":
73640
+ return BuildInTypeExpression.hashSet;
73641
+ case "object":
73642
+ return BuildInTypeExpression.object;
73643
+ default:
73644
+ (0,_Common_TypingUtils__WEBPACK_IMPORTED_MODULE_2__.ensureNever)(typeName);
73645
+ return (0,_Common_TypingUtils__WEBPACK_IMPORTED_MODULE_2__.reject)();
73646
+ }
73647
+ }
73609
73648
  }
73610
73649
  _BuildInTypeExpression = BuildInTypeExpression;
73611
73650
  BuildInTypeExpression.object = new _BuildInTypeExpression("object");
@@ -74734,7 +74773,9 @@ __webpack_require__.r(__webpack_exports__);
74734
74773
  /* harmony export */ dictFieldNameSuffix: () => (/* binding */ dictFieldNameSuffix),
74735
74774
  /* harmony export */ ensureCorrectFieldNameByExpressionType: () => (/* binding */ ensureCorrectFieldNameByExpressionType),
74736
74775
  /* harmony export */ ensureOperandsOfTypeOrNull: () => (/* binding */ ensureOperandsOfTypeOrNull),
74776
+ /* harmony export */ extractOriginalStringValueOrCastToStringIfNeeded: () => (/* binding */ extractOriginalStringValueOrCastToStringIfNeeded),
74737
74777
  /* harmony export */ extractValueReferenceFromCast: () => (/* binding */ extractValueReferenceFromCast),
74778
+ /* harmony export */ extractValueReferenceFromCastSafe: () => (/* binding */ extractValueReferenceFromCastSafe),
74738
74779
  /* harmony export */ getAllExpressionChildren: () => (/* binding */ getAllExpressionChildren),
74739
74780
  /* harmony export */ getSelectorIdFromRule: () => (/* binding */ getSelectorIdFromRule),
74740
74781
  /* harmony export */ hashSetFieldNameSuffix: () => (/* binding */ hashSetFieldNameSuffix),
@@ -74945,6 +74986,26 @@ function extractValueReferenceFromCast(expression) {
74945
74986
  }
74946
74987
  return (0,_Common_TypingUtils__WEBPACK_IMPORTED_MODULE_2__.reject)(`Cannot extract ValueReferenceExpression! ${(0,util__WEBPACK_IMPORTED_MODULE_0__.inspect)(expression)}`);
74947
74988
  }
74989
+ function extractValueReferenceFromCastSafe(expression) {
74990
+ if (expression instanceof _FLangCodeDom__WEBPACK_IMPORTED_MODULE_6__.ValueReferenceExpression) {
74991
+ return [true, expression];
74992
+ }
74993
+ if (expression instanceof _FLangCodeDom__WEBPACK_IMPORTED_MODULE_6__.CastExpression && expression.targetExpression instanceof _FLangCodeDom__WEBPACK_IMPORTED_MODULE_6__.ValueReferenceExpression) {
74994
+ return [true, expression.targetExpression];
74995
+ }
74996
+ if (expression instanceof _FLangCodeDom__WEBPACK_IMPORTED_MODULE_6__.CastExpression && expression.targetExpression instanceof _FLangCodeDom__WEBPACK_IMPORTED_MODULE_6__.NoDepsExpression && expression.targetExpression.expression instanceof _FLangCodeDom__WEBPACK_IMPORTED_MODULE_6__.ValueReferenceExpression) {
74997
+ return [true, expression.targetExpression.expression];
74998
+ }
74999
+ return [false];
75000
+ }
75001
+ function extractOriginalStringValueOrCastToStringIfNeeded(expression) {
75002
+ if (expression instanceof _FLangCodeDom__WEBPACK_IMPORTED_MODULE_6__.DecimalLiteralExpression) {
75003
+ return new _FLangCodeDom__WEBPACK_IMPORTED_MODULE_6__.StringLiteralExpression(expression.value.toString());
75004
+ }
75005
+ const [success, extractedExpr] = extractValueReferenceFromCastSafe(expression);
75006
+ const exprToCast = success ? extractedExpr : expression;
75007
+ return castOperandToStringIfNeed(exprToCast);
75008
+ }
74948
75009
  function ensureCorrectFieldNameByExpressionType(statement) {
74949
75010
  if (statement instanceof _FLangCodeDom__WEBPACK_IMPORTED_MODULE_6__.SetStatement) {
74950
75011
  const lastPart = _Common_IterableUtils__WEBPACK_IMPORTED_MODULE_1__.IterUtils.last(statement.left.modePath.getPathParts());
@@ -75431,8 +75492,8 @@ class FormulaExpressionToFlangExpressionConverter {
75431
75492
  return this.compileGetSumByKeysExpression(prefix, target, expression, addPrecalculationRule);
75432
75493
  }
75433
75494
  if (expression instanceof _AutoCalculationsGenerator_AutoCalculationsFromFormulas_KCXmlContract_Formula__WEBPACK_IMPORTED_MODULE_0__.FormulaOneOfExpression) {
75434
- const arg = (0,_FLang_FlangUtils__WEBPACK_IMPORTED_MODULE_8__.castOperandToStringIfNeed)(this.compileExpressionToFlangExpressionInternal(expression.argument, prefix, target, addPrecalculationRule));
75435
- const items = expression.items.expressions.map(item => (0,_FLang_FlangUtils__WEBPACK_IMPORTED_MODULE_8__.castOperandToStringIfNeed)(this.compileExpressionToFlangExpressionInternal(item, prefix, target, addPrecalculationRule)));
75495
+ const arg = (0,_FLang_FlangUtils__WEBPACK_IMPORTED_MODULE_8__.extractOriginalStringValueOrCastToStringIfNeeded)(this.compileExpressionToFlangExpressionInternal(expression.argument, prefix, target, addPrecalculationRule));
75496
+ const items = expression.items.expressions.map(item => (0,_FLang_FlangUtils__WEBPACK_IMPORTED_MODULE_8__.extractOriginalStringValueOrCastToStringIfNeeded)(this.compileExpressionToFlangExpressionInternal(item, prefix, target, addPrecalculationRule)));
75436
75497
  return new _FLang_FLangCodeDom__WEBPACK_IMPORTED_MODULE_9__.OneOfExpression(arg, items);
75437
75498
  }
75438
75499
  if (expression instanceof _AutoCalculationsGenerator_AutoCalculationsFromFormulas_KCXmlContract_Formula__WEBPACK_IMPORTED_MODULE_0__.FormulaHasAutoFlagExpression) {
@@ -75468,6 +75529,11 @@ class FormulaExpressionToFlangExpressionConverter {
75468
75529
  if (expression instanceof _AutoCalculationsGenerator_AutoCalculationsFromFormulas_KCXmlContract_Formula__WEBPACK_IMPORTED_MODULE_0__.FormulaPropertyByNameExpression) {
75469
75530
  return new _FLang_FLangCodeDom__WEBPACK_IMPORTED_MODULE_9__.StringLiteralExpression("");
75470
75531
  }
75532
+ if (expression instanceof _AutoCalculationsGenerator_AutoCalculationsFromFormulas_KCXmlContract_Formula__WEBPACK_IMPORTED_MODULE_0__.FormulaCastExpression) {
75533
+ const targetType = _FLang_FLangCodeDom__WEBPACK_IMPORTED_MODULE_9__.BuildInTypeExpression.getByName(expression.type);
75534
+ const arg = (0,_FLang_FlangUtils__WEBPACK_IMPORTED_MODULE_8__.castOperandToStringIfNeed)(this.compileExpressionToFlangExpressionInternal(expression.expression, prefix, target, addPrecalculationRule));
75535
+ return (0,_FLang_FlangUtils__WEBPACK_IMPORTED_MODULE_8__.castOperandIfNeed)(arg, targetType);
75536
+ }
75471
75537
  throw new Error(`Unsupported type of node: ${expression.constructor.name}, ${expression.sourceXmlNode.name}`);
75472
75538
  }
75473
75539
  castOperandForComparisonExpression(formulaExpression, flangExpression) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kontur.candy/generator",
3
- "version": "5.102.0",
3
+ "version": "5.103.0",
4
4
  "description": "Candy forms generator",
5
5
  "author": "SKBKontur Candy Team",
6
6
  "private": false,