@mojir/lits 2.1.3 → 2.1.4

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/dist/cli/cli.js CHANGED
@@ -92,7 +92,7 @@ typeof SuppressedError === "function" ? SuppressedError : function (error, suppr
92
92
  return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
93
93
  };
94
94
 
95
- var version = "2.1.3";
95
+ var version = "2.1.4";
96
96
 
97
97
  function getCodeMarker(sourceCodeInfo) {
98
98
  if (!sourceCodeInfo.position || !sourceCodeInfo.code)
@@ -696,6 +696,10 @@ function isLitsFunction(value) {
696
696
  return false;
697
697
  return !!value[FUNCTION_SYMBOL];
698
698
  }
699
+ function asLitsFunction(value, sourceCodeInfo) {
700
+ assertLitsFunction(value, sourceCodeInfo);
701
+ return value;
702
+ }
699
703
  function assertLitsFunction(value, sourceCodeInfo) {
700
704
  if (!isLitsFunction(value))
701
705
  throw getAssertionError('LitsFunction', value, sourceCodeInfo);
@@ -1384,26 +1388,37 @@ var sequenceNormalExpression = {
1384
1388
  paramCount: 1,
1385
1389
  },
1386
1390
  'map': {
1387
- evaluate: function (_a, sourceCodeInfo, contextStack, _b) {
1388
- var _c = __read(_a, 2), seq = _c[0], fn = _c[1];
1389
- var executeFunction = _b.executeFunction;
1390
- assertSeq(seq, sourceCodeInfo);
1391
- assertLitsFunction(fn, sourceCodeInfo);
1392
- if (Array.isArray(seq)) {
1393
- return seq.map(function (elem) { return executeFunction(fn, [elem], contextStack, sourceCodeInfo); });
1391
+ evaluate: function (params, sourceCodeInfo, contextStack, _a) {
1392
+ var executeFunction = _a.executeFunction;
1393
+ var fn = asLitsFunction(params.at(-1));
1394
+ var seqs = params.slice(0, -1);
1395
+ assertSeq(seqs[0], sourceCodeInfo);
1396
+ var isString = typeof seqs[0] === 'string';
1397
+ var len = seqs[0].length;
1398
+ seqs.slice(1).forEach(function (seq) {
1399
+ if (isString) {
1400
+ assertString(seq, sourceCodeInfo);
1401
+ }
1402
+ else {
1403
+ assertArray(seq, sourceCodeInfo);
1404
+ }
1405
+ len = Math.min(len, seq.length);
1406
+ });
1407
+ var paramArray = [];
1408
+ var _loop_1 = function (i) {
1409
+ paramArray.push(seqs.map(function (seq) { return seq[i]; }));
1410
+ };
1411
+ for (var i = 0; i < len; i++) {
1412
+ _loop_1(i);
1394
1413
  }
1395
- else {
1396
- return seq
1397
- .split('')
1398
- .map(function (elem) {
1399
- var newVal = executeFunction(fn, [elem], contextStack, sourceCodeInfo);
1400
- assertString(newVal, sourceCodeInfo, { char: true });
1401
- return newVal;
1402
- })
1403
- .join('');
1414
+ var mapped = paramArray.map(function (p) { return executeFunction(fn, p, contextStack, sourceCodeInfo); });
1415
+ if (!isString) {
1416
+ return mapped;
1404
1417
  }
1418
+ mapped.forEach(function (char) { return assertString(char, sourceCodeInfo); });
1419
+ return mapped.join('');
1405
1420
  },
1406
- paramCount: 2,
1421
+ paramCount: { min: 2 },
1407
1422
  },
1408
1423
  'pop': {
1409
1424
  evaluate: function (_a, sourceCodeInfo) {
@@ -1953,7 +1968,7 @@ var sequenceNormalExpression = {
1953
1968
  assertSeq(input, sourceCodeInfo);
1954
1969
  if (Array.isArray(input)) {
1955
1970
  var result = [];
1956
- var _loop_1 = function (item) {
1971
+ var _loop_2 = function (item) {
1957
1972
  assertAny(item, sourceCodeInfo);
1958
1973
  if (!result.some(function (existingItem) { return deepEqual(existingItem, item, sourceCodeInfo); })) {
1959
1974
  result.push(item);
@@ -1962,7 +1977,7 @@ var sequenceNormalExpression = {
1962
1977
  try {
1963
1978
  for (var input_1 = __values(input), input_1_1 = input_1.next(); !input_1_1.done; input_1_1 = input_1.next()) {
1964
1979
  var item = input_1_1.value;
1965
- _loop_1(item);
1980
+ _loop_2(item);
1966
1981
  }
1967
1982
  }
1968
1983
  catch (e_2_1) { e_2 = { error: e_2_1 }; }
@@ -11407,19 +11422,23 @@ var sequenceReference = {
11407
11422
  type: 'any',
11408
11423
  rest: true,
11409
11424
  },
11410
- args: __assign(__assign({}, getOperatorArgs('sequence', 'function')), { seq: {
11425
+ args: __assign(__assign({}, getOperatorArgs('sequence', 'function')), { seqs: {
11411
11426
  type: 'sequence',
11427
+ rest: true,
11428
+ description: 'At least one.',
11412
11429
  }, fun: {
11413
11430
  type: 'function',
11414
11431
  } }),
11415
11432
  variants: [
11416
- { argumentNames: ['seq', 'fun'] },
11433
+ { argumentNames: ['seqs', 'fun'] },
11417
11434
  ],
11418
- description: 'Creates a new array populated with the results of calling $fun on every elements in $seq.',
11435
+ description: 'Creates a new array populated with the results of calling $fun on every element in $seqs.',
11419
11436
  examples: [
11437
+ '[1, 2, 3] map -',
11420
11438
  '[1, 2, 3] map -> -($)',
11421
11439
  'map(["Albert", "Mojir", 42], str)',
11422
11440
  'map([1, 2, 3], inc)',
11441
+ 'map([1, 2, 3], [1, 10, 100], *)',
11423
11442
  ],
11424
11443
  },
11425
11444
  'filter': {
package/dist/index.esm.js CHANGED
@@ -1262,26 +1262,37 @@ var sequenceNormalExpression = {
1262
1262
  paramCount: 1,
1263
1263
  },
1264
1264
  'map': {
1265
- evaluate: function (_a, sourceCodeInfo, contextStack, _b) {
1266
- var _c = __read(_a, 2), seq = _c[0], fn = _c[1];
1267
- var executeFunction = _b.executeFunction;
1268
- assertSeq(seq, sourceCodeInfo);
1269
- assertLitsFunction(fn, sourceCodeInfo);
1270
- if (Array.isArray(seq)) {
1271
- return seq.map(function (elem) { return executeFunction(fn, [elem], contextStack, sourceCodeInfo); });
1265
+ evaluate: function (params, sourceCodeInfo, contextStack, _a) {
1266
+ var executeFunction = _a.executeFunction;
1267
+ var fn = asLitsFunction(params.at(-1));
1268
+ var seqs = params.slice(0, -1);
1269
+ assertSeq(seqs[0], sourceCodeInfo);
1270
+ var isString = typeof seqs[0] === 'string';
1271
+ var len = seqs[0].length;
1272
+ seqs.slice(1).forEach(function (seq) {
1273
+ if (isString) {
1274
+ assertString(seq, sourceCodeInfo);
1275
+ }
1276
+ else {
1277
+ assertArray(seq, sourceCodeInfo);
1278
+ }
1279
+ len = Math.min(len, seq.length);
1280
+ });
1281
+ var paramArray = [];
1282
+ var _loop_1 = function (i) {
1283
+ paramArray.push(seqs.map(function (seq) { return seq[i]; }));
1284
+ };
1285
+ for (var i = 0; i < len; i++) {
1286
+ _loop_1(i);
1272
1287
  }
1273
- else {
1274
- return seq
1275
- .split('')
1276
- .map(function (elem) {
1277
- var newVal = executeFunction(fn, [elem], contextStack, sourceCodeInfo);
1278
- assertString(newVal, sourceCodeInfo, { char: true });
1279
- return newVal;
1280
- })
1281
- .join('');
1288
+ var mapped = paramArray.map(function (p) { return executeFunction(fn, p, contextStack, sourceCodeInfo); });
1289
+ if (!isString) {
1290
+ return mapped;
1282
1291
  }
1292
+ mapped.forEach(function (char) { return assertString(char, sourceCodeInfo); });
1293
+ return mapped.join('');
1283
1294
  },
1284
- paramCount: 2,
1295
+ paramCount: { min: 2 },
1285
1296
  },
1286
1297
  'pop': {
1287
1298
  evaluate: function (_a, sourceCodeInfo) {
@@ -1831,7 +1842,7 @@ var sequenceNormalExpression = {
1831
1842
  assertSeq(input, sourceCodeInfo);
1832
1843
  if (Array.isArray(input)) {
1833
1844
  var result = [];
1834
- var _loop_1 = function (item) {
1845
+ var _loop_2 = function (item) {
1835
1846
  assertAny(item, sourceCodeInfo);
1836
1847
  if (!result.some(function (existingItem) { return deepEqual(existingItem, item, sourceCodeInfo); })) {
1837
1848
  result.push(item);
@@ -1840,7 +1851,7 @@ var sequenceNormalExpression = {
1840
1851
  try {
1841
1852
  for (var input_1 = __values(input), input_1_1 = input_1.next(); !input_1_1.done; input_1_1 = input_1.next()) {
1842
1853
  var item = input_1_1.value;
1843
- _loop_1(item);
1854
+ _loop_2(item);
1844
1855
  }
1845
1856
  }
1846
1857
  catch (e_2_1) { e_2 = { error: e_2_1 }; }
@@ -11301,19 +11312,23 @@ var sequenceReference = {
11301
11312
  type: 'any',
11302
11313
  rest: true,
11303
11314
  },
11304
- args: __assign(__assign({}, getOperatorArgs('sequence', 'function')), { seq: {
11315
+ args: __assign(__assign({}, getOperatorArgs('sequence', 'function')), { seqs: {
11305
11316
  type: 'sequence',
11317
+ rest: true,
11318
+ description: 'At least one.',
11306
11319
  }, fun: {
11307
11320
  type: 'function',
11308
11321
  } }),
11309
11322
  variants: [
11310
- { argumentNames: ['seq', 'fun'] },
11323
+ { argumentNames: ['seqs', 'fun'] },
11311
11324
  ],
11312
- description: 'Creates a new array populated with the results of calling $fun on every elements in $seq.',
11325
+ description: 'Creates a new array populated with the results of calling $fun on every element in $seqs.',
11313
11326
  examples: [
11327
+ '[1, 2, 3] map -',
11314
11328
  '[1, 2, 3] map -> -($)',
11315
11329
  'map(["Albert", "Mojir", 42], str)',
11316
11330
  'map([1, 2, 3], inc)',
11331
+ 'map([1, 2, 3], [1, 10, 100], *)',
11317
11332
  ],
11318
11333
  },
11319
11334
  'filter': {