@stoplight/spectral-core 1.20.0 → 1.21.0-beta-0.2

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.
@@ -1,4 +1,5 @@
1
1
  export declare function validateAlias(ruleset: {
2
2
  aliases?: Record<string, unknown>;
3
3
  overrides?: Record<string, unknown>;
4
+ extends?: Record<string, unknown>;
4
5
  }, alias: string, path: string): Error | void;
@@ -18,16 +18,44 @@ function getOverrides(overrides, key) {
18
18
  const actualOverrides = overrides[index];
19
19
  return (0, json_1.isPlainObject)(actualOverrides) && (0, json_1.isPlainObject)(actualOverrides.aliases) ? actualOverrides.aliases : null;
20
20
  }
21
+ function getExtended(extended, parsedPath) {
22
+ if (!Array.isArray(extended))
23
+ return null;
24
+ const key = parsedPath[1];
25
+ const index = Number(key);
26
+ if (Number.isNaN(index))
27
+ return null;
28
+ if (index < 0 && index >= extended.length)
29
+ return null;
30
+ const actualExtended = extended[index];
31
+ const aliases = (0, json_1.isPlainObject)(actualExtended) && (0, json_1.isPlainObject)(actualExtended.aliases) ? actualExtended.aliases : null;
32
+ if (parsedPath.length >= 4 && parsedPath[2] === 'overrides') {
33
+ return {
34
+ ...aliases,
35
+ ...getOverrides(actualExtended.overrides, parsedPath[3]),
36
+ };
37
+ }
38
+ return aliases;
39
+ }
40
+ function getResolvedAliases(parsedPath, ruleset) {
41
+ if (parsedPath[0] === 'extends') {
42
+ return getExtended(ruleset.extends, parsedPath);
43
+ }
44
+ else if (parsedPath[0] === 'overrides') {
45
+ return {
46
+ ...ruleset.aliases,
47
+ ...getOverrides(ruleset.overrides, parsedPath[1]),
48
+ };
49
+ }
50
+ else {
51
+ return ruleset.aliases;
52
+ }
53
+ }
21
54
  function validateAlias(ruleset, alias, path) {
22
55
  const parsedPath = (0, error_1.toParsedPath)(path);
23
56
  try {
24
57
  const formats = (0, lodash_1.get)(ruleset, [...parsedPath.slice(0, parsedPath.indexOf('rules') + 2), 'formats']);
25
- const aliases = parsedPath[0] === 'overrides'
26
- ? {
27
- ...ruleset.aliases,
28
- ...getOverrides(ruleset.overrides, parsedPath[1]),
29
- }
30
- : ruleset.aliases;
58
+ const aliases = getResolvedAliases(parsedPath, ruleset);
31
59
  (0, alias_1.resolveAlias)(aliases !== null && aliases !== void 0 ? aliases : null, alias, Array.isArray(formats) ? new formats_1.Formats(formats) : null);
32
60
  }
33
61
  catch (ex) {
@@ -1 +1 @@
1
- {"version":3,"file":"alias.js","sourceRoot":"","sources":["../../../../src/ruleset/validation/validators/alias.ts"],"names":[],"mappings":";;;AAAA,0CAAgD;AAChD,mCAA6B;AAC7B,uCAA2C;AAC3C,2CAAwC;AACxC,0CAAyD;AACzD,sCAAmD;AAEnD,SAAS,YAAY,CAAC,SAAkB,EAAE,GAAW;IACnD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;QAAE,OAAO,IAAI,CAAC;IAE3C,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACrC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,SAAS,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAExD,MAAM,eAAe,GAAY,SAAS,CAAC,KAAK,CAAC,CAAC;IAClD,OAAO,IAAA,oBAAa,EAAC,eAAe,CAAC,IAAI,IAAA,oBAAa,EAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AACnH,CAAC;AAED,SAAgB,aAAa,CAC3B,OAAmF,EACnF,KAAa,EACb,IAAY;IAEZ,MAAM,UAAU,GAAG,IAAA,oBAAY,EAAC,IAAI,CAAC,CAAC;IAEtC,IAAI;QACF,MAAM,OAAO,GAAY,IAAA,YAAG,EAAC,OAAO,EAAE,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;QAE5G,MAAM,OAAO,GACX,UAAU,CAAC,CAAC,CAAC,KAAK,WAAW;YAC3B,CAAC,CAAC;gBACE,GAAG,OAAO,CAAC,OAAO;gBAClB,GAAG,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;aAClD;YACH,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;QAEtB,IAAA,oBAAY,EAAC,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,iBAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;KAC5F;IAAC,OAAO,EAAE,EAAE;QACX,IAAI,EAAE,YAAY,cAAc,EAAE;YAChC,OAAO,IAAI,+BAAsB,CAAC,iBAAiB,EAAE,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;SAC9E;QAED,OAAO,IAAA,iBAAS,EAAC,EAAE,EAAE,IAAI,CAAC,CAAC;KAC5B;AACH,CAAC;AA1BD,sCA0BC"}
1
+ {"version":3,"file":"alias.js","sourceRoot":"","sources":["../../../../src/ruleset/validation/validators/alias.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Replacer = void 0;
4
- const tslib_1 = require("tslib");
5
- const simple_eval_1 = (0, tslib_1.__importDefault)(require("simple-eval"));
4
+ const expr_eval_fork_1 = require("expr-eval-fork");
6
5
  class Replacer {
7
6
  constructor(count) {
7
+ console.log('THIS IS Replacer constructor');
8
8
  this.regex = new RegExp(`#?${'{'.repeat(count)}([^}\n]+)${'}'.repeat(count)}`, 'g');
9
9
  this.functions = {};
10
10
  }
@@ -12,16 +12,36 @@ class Replacer {
12
12
  this.functions[name] = filter;
13
13
  }
14
14
  print(input, values) {
15
- return input.replace(this.regex, (substr, identifier, index) => {
15
+ console.log('THIS IS PRINT FUNCTION');
16
+ const parser = new expr_eval_fork_1.Parser();
17
+ const functions = parser.functions;
18
+ functions.toUpperCase = (value) => {
19
+ return String(value).toUpperCase();
20
+ };
21
+ functions.concat = (...args) => {
22
+ return args.map(String).join('');
23
+ };
24
+ Object.entries(this.functions).forEach(([name, fn]) => {
25
+ functions[name] = fn.bind(values);
26
+ });
27
+ const context = values;
28
+ return input.replace(this.regex, (_substr, identifier, index) => {
29
+ if (index < 0 || index >= input.length) {
30
+ return '';
31
+ }
16
32
  const shouldEvaluate = input[index] === '#';
17
33
  if (shouldEvaluate) {
18
- return String((0, simple_eval_1.default)(identifier, {
19
- ...Object.entries(this.functions).reduce((fns, [name, fn]) => {
20
- fns[name] = fn.bind(values);
21
- return fns;
22
- }, {}),
23
- ...values,
24
- }));
34
+ const expression = identifier.trim();
35
+ if (/constructor|process|require|global|mainModule|fs|child_process/.test(expression)) {
36
+ throw new Error('Disallowed expression detected');
37
+ }
38
+ try {
39
+ return String(parser.evaluate(expression, context));
40
+ }
41
+ catch (error) {
42
+ console.error('Expression evaluation error:', error);
43
+ return '';
44
+ }
25
45
  }
26
46
  if (!(identifier in values)) {
27
47
  return '';
@@ -1 +1 @@
1
- {"version":3,"file":"replacer.js","sourceRoot":"","sources":["../../src/utils/replacer.ts"],"names":[],"mappings":";;;;AACA,2EAAgC;AAIhC,MAAa,QAAQ;IAInB,YAAY,KAAa;QACvB,IAAI,CAAC,KAAK,GAAG,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QAEpF,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IACtB,CAAC;IAEM,WAAW,CAAC,IAAY,EAAE,MAAsB;QACrD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;IAChC,CAAC;IAEM,KAAK,CAAC,KAAa,EAAE,MAAS;QACnC,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE;YAE7D,MAAM,cAAc,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC;YAE5C,IAAI,cAAc,EAAE;gBAClB,OAAO,MAAM,CACX,IAAA,qBAAK,EAAC,UAAU,EAAE;oBAChB,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;wBAC3D,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;wBAC5B,OAAO,GAAG,CAAC;oBACb,CAAC,EAAE,EAAE,CAAC;oBACN,GAAG,MAAM;iBACV,CAAC,CACH,CAAC;aACH;YAED,IAAI,CAAC,CAAC,UAAU,IAAI,MAAM,CAAC,EAAE;gBAC3B,OAAO,EAAE,CAAC;aACX;YAGD,OAAO,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAvCD,4BAuCC"}
1
+ {"version":3,"file":"replacer.js","sourceRoot":"","sources":["../../src/utils/replacer.ts"],"names":[],"mappings":";;;AAEA,mDAA+C;AAI/C,MAAa,QAAQ;IAInB,YAAY,KAAa;QACvB,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAC5C,IAAI,CAAC,KAAK,GAAG,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QAEpF,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IACtB,CAAC;IAEM,WAAW,CAAC,IAAY,EAAE,MAAsB;QACrD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;IAChC,CAAC;IAgDM,KAAK,CAAC,KAAa,EAAE,MAAS;QACnC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QACtC,MAAM,MAAM,GAAG,IAAI,uBAAM,EAAE,CAAC;QAG5B,MAAM,SAAS,GAAG,MAAM,CAAC,SAAwD,CAAC;QAClF,SAAS,CAAC,WAAW,GAAG,CAAC,KAAY,EAAS,EAAE;YAC9C,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;QACrC,CAAC,CAAC;QAEF,SAAS,CAAC,MAAM,GAAG,CAAC,GAAG,IAAa,EAAS,EAAE;YAC7C,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnC,CAAC,CAAC;QAEF,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;YACpD,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAgC,CAAC;QACnE,CAAC,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,MAA0C,CAAC;QAE3D,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,UAAkB,EAAE,KAAa,EAAE,EAAE;YAC9E,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE;gBACtC,OAAO,EAAE,CAAC;aACX;YAED,MAAM,cAAc,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC;YAE5C,IAAI,cAAc,EAAE;gBAClB,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;gBAGrC,IAAI,gEAAgE,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;oBACrF,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;iBACnD;gBAGD,IAAI;oBACF,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;iBACrD;gBAAC,OAAO,KAAK,EAAE;oBACd,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;oBACrD,OAAO,EAAE,CAAC;iBACX;aACF;YAED,IAAI,CAAC,CAAC,UAAU,IAAI,MAAM,CAAC,EAAE;gBAC3B,OAAO,EAAE,CAAC;aACX;YAED,OAAO,MAAM,CAAC,MAAM,CAAC,UAAqB,CAAC,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAhHD,4BAgHC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stoplight/spectral-core",
3
- "version": "1.20.0",
3
+ "version": "1.21.0-beta-0.2",
4
4
  "sideEffects": false,
5
5
  "homepage": "https://github.com/stoplightio/spectral",
6
6
  "bugs": "https://github.com/stoplightio/spectral/issues",
@@ -47,13 +47,13 @@
47
47
  "ajv-errors": "~3.0.0",
48
48
  "ajv-formats": "~2.1.1",
49
49
  "es-aggregate-error": "^1.0.7",
50
+ "expr-eval-fork": "^3.0.1",
50
51
  "jsonpath-plus": "^10.3.0",
51
- "lodash": "~4.17.21",
52
+ "lodash": "~4.17.23",
52
53
  "lodash.topath": "^4.5.2",
53
54
  "minimatch": "3.1.2",
54
55
  "nimma": "0.2.3",
55
56
  "pony-cause": "^1.1.1",
56
- "simple-eval": "1.0.1",
57
57
  "tslib": "^2.8.1"
58
58
  },
59
59
  "devDependencies": {