@jd-data-limited/easy-fm 3.0.2 → 3.0.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.
Files changed (3) hide show
  1. package/package.json +1 -1
  2. package/src/index.js +30 -19
  3. package/src/index.ts +29 -19
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jd-data-limited/easy-fm",
3
- "version": "3.0.2",
3
+ "version": "3.0.4",
4
4
  "dependencies": {
5
5
  "@types/btoa": "^1.2.3",
6
6
  "@types/events": "^3.0.0",
package/src/index.js CHANGED
@@ -1289,6 +1289,7 @@ export class Layout {
1289
1289
  return this.records.find();
1290
1290
  }
1291
1291
  runScript(script) {
1292
+ let trace = new Error();
1292
1293
  return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
1293
1294
  let url = `${this.endpoint}/script/${encodeURIComponent(script.name)}`;
1294
1295
  if (script.parameter)
@@ -1303,7 +1304,7 @@ export class Layout {
1303
1304
  }
1304
1305
  else {
1305
1306
  // console.log(res)
1306
- reject(new FMError(res.messages[0].code, res.status, res));
1307
+ reject(new FMError(res.messages[0].code, res.status, res, trace));
1307
1308
  }
1308
1309
  })
1309
1310
  .catch(e => {
@@ -1429,6 +1430,7 @@ export class RecordBase extends EventEmitter {
1429
1430
  });
1430
1431
  }
1431
1432
  get() {
1433
+ let trace = new Error();
1432
1434
  if (this.recordId === -1) {
1433
1435
  throw "Cannot get this RecordBase until a commit() is done.";
1434
1436
  }
@@ -1450,7 +1452,7 @@ export class RecordBase extends EventEmitter {
1450
1452
  resolve(this);
1451
1453
  }
1452
1454
  else {
1453
- reject(new FMError(res.messages[0].code, res.status, res));
1455
+ reject(new FMError(res.messages[0].code, res.status, res, trace));
1454
1456
  }
1455
1457
  })
1456
1458
  .catch(e => {
@@ -1458,22 +1460,24 @@ export class RecordBase extends EventEmitter {
1458
1460
  });
1459
1461
  }));
1460
1462
  }
1461
- commit(extraBody) {
1463
+ commit(extraBody = {}) {
1464
+ let trace = new Error();
1462
1465
  return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
1466
+ var _a, _b, _c;
1463
1467
  let data = this.toObject();
1464
1468
  delete data.recordId;
1465
1469
  delete data.modId;
1466
- if (extraBody.scripts.after) {
1470
+ if ((_a = extraBody.scripts) === null || _a === void 0 ? void 0 : _a.after) {
1467
1471
  data["script"] = extraBody.scripts.after.name;
1468
1472
  if (extraBody.scripts.after.parameter)
1469
1473
  data["param"] = extraBody.scripts.after.parameter;
1470
1474
  }
1471
- if (extraBody.scripts.prerequest) {
1475
+ if ((_b = extraBody.scripts) === null || _b === void 0 ? void 0 : _b.prerequest) {
1472
1476
  data["script"] = extraBody.scripts.after.name;
1473
1477
  if (extraBody.scripts.prerequest.parameter)
1474
1478
  data["param"] = extraBody.scripts.prerequest.parameter;
1475
1479
  }
1476
- if (extraBody.scripts.presort) {
1480
+ if ((_c = extraBody.scripts) === null || _c === void 0 ? void 0 : _c.presort) {
1477
1481
  data["script"] = extraBody.scripts.presort.name;
1478
1482
  if (extraBody.scripts.presort.parameter)
1479
1483
  data["param"] = extraBody.scripts.presort.parameter;
@@ -1487,7 +1491,7 @@ export class RecordBase extends EventEmitter {
1487
1491
  })
1488
1492
  .then(res => {
1489
1493
  if (typeof res.response.scriptError !== "undefined" && res.response.scriptError !== '0') {
1490
- reject(new FMError(res.response.scriptError, res.status, res));
1494
+ reject(new FMError(res.response.scriptError, res.status, res, trace));
1491
1495
  }
1492
1496
  else if (res.messages[0].code === "0") {
1493
1497
  this.recordId = parseInt(res.response.recordId);
@@ -1495,7 +1499,7 @@ export class RecordBase extends EventEmitter {
1495
1499
  resolve(this);
1496
1500
  }
1497
1501
  else {
1498
- reject(new FMError(res.messages[0].code, res.status, res));
1502
+ reject(new FMError(res.messages[0].code, res.status, res, trace));
1499
1503
  }
1500
1504
  })
1501
1505
  .catch(e => {
@@ -1511,7 +1515,7 @@ export class RecordBase extends EventEmitter {
1511
1515
  })
1512
1516
  .then(res => {
1513
1517
  if (typeof res.response.scriptError !== "undefined" && res.response.scriptError !== '0') {
1514
- reject(new FMError(res.response.scriptError, res.status, res));
1518
+ reject(new FMError(res.response.scriptError, res.status, res, trace));
1515
1519
  }
1516
1520
  else if (res.messages[0].code === "0") {
1517
1521
  this.modId = res.response.modId;
@@ -1519,7 +1523,7 @@ export class RecordBase extends EventEmitter {
1519
1523
  resolve(this);
1520
1524
  }
1521
1525
  else {
1522
- reject(new FMError(res.messages[0].code, res.status, res));
1526
+ reject(new FMError(res.messages[0].code, res.status, res, trace));
1523
1527
  }
1524
1528
  })
1525
1529
  .catch(e => {
@@ -1539,6 +1543,7 @@ export class RecordBase extends EventEmitter {
1539
1543
  return this.portals.find(p => p.name === portal);
1540
1544
  }
1541
1545
  delete() {
1546
+ let trace = new Error();
1542
1547
  return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
1543
1548
  this.layout.database.apiRequest(this.endpoint, {
1544
1549
  port: 443,
@@ -1546,14 +1551,14 @@ export class RecordBase extends EventEmitter {
1546
1551
  })
1547
1552
  .then(res => {
1548
1553
  if (typeof res.response.scriptError !== "undefined" && res.response.scriptError !== '0') {
1549
- reject(new FMError(res.response.scriptError, res.status, res));
1554
+ reject(new FMError(res.response.scriptError, res.status, res, trace));
1550
1555
  }
1551
1556
  else if (res.messages[0].code === "0") {
1552
1557
  this.emit("deleted");
1553
1558
  resolve();
1554
1559
  }
1555
1560
  else {
1556
- reject(new FMError(res.messages[0].code, res.status, res));
1561
+ reject(new FMError(res.messages[0].code, res.status, res, trace));
1557
1562
  }
1558
1563
  })
1559
1564
  .catch(e => {
@@ -1562,6 +1567,7 @@ export class RecordBase extends EventEmitter {
1562
1567
  }));
1563
1568
  }
1564
1569
  duplicate() {
1570
+ let trace = new Error();
1565
1571
  return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
1566
1572
  this.layout.database.apiRequest(this.endpoint, {
1567
1573
  port: 443,
@@ -1569,7 +1575,7 @@ export class RecordBase extends EventEmitter {
1569
1575
  })
1570
1576
  .then(res => {
1571
1577
  if (typeof res.response.scriptError !== "undefined" && res.response.scriptError !== '0') {
1572
- reject(new FMError(res.response.scriptError, res.status, res));
1578
+ reject(new FMError(res.response.scriptError, res.status, res, trace));
1573
1579
  }
1574
1580
  else if (res.messages[0].code === "0") {
1575
1581
  let data = this.toObject((a) => true, (a) => true, (a) => false, (a) => false);
@@ -1578,7 +1584,7 @@ export class RecordBase extends EventEmitter {
1578
1584
  resolve(_res);
1579
1585
  }
1580
1586
  else {
1581
- reject(new FMError(res.messages[0].code, res.status, res));
1587
+ reject(new FMError(res.messages[0].code, res.status, res, trace));
1582
1588
  }
1583
1589
  })
1584
1590
  .catch(e => {
@@ -1717,6 +1723,7 @@ export class Field {
1717
1723
  return this._value;
1718
1724
  }
1719
1725
  upload(buffer, filename, mime) {
1726
+ let trace = new Error();
1720
1727
  if (this.metadata.result !== "container")
1721
1728
  throw "Cannot upload a file to the field; " + this.id + " (not a container field)";
1722
1729
  return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
@@ -1733,7 +1740,7 @@ export class Field {
1733
1740
  resolve();
1734
1741
  }
1735
1742
  else {
1736
- reject(new FMError(_res.messages[0].code, _res.status, data));
1743
+ reject(new FMError(_res.messages[0].code, _res.status, data, trace));
1737
1744
  }
1738
1745
  })
1739
1746
  .catch(e => {
@@ -1795,7 +1802,7 @@ export class PortalRecord extends RecordBase {
1795
1802
  super._onSave();
1796
1803
  this.portal.record._onSave();
1797
1804
  }
1798
- commit(extraBody) {
1805
+ commit(extraBody = {}) {
1799
1806
  return this.portal.record.commit(extraBody);
1800
1807
  }
1801
1808
  toObject(fieldFilter) {
@@ -1903,6 +1910,7 @@ export class RecordGetRange extends RecordGetOperation {
1903
1910
  return this.fetch(extraBody);
1904
1911
  }
1905
1912
  fetch(extraBody = {}) {
1913
+ let trace = new Error();
1906
1914
  return new Promise((resolve, reject) => {
1907
1915
  // console.log(this.#toObject())
1908
1916
  this.layout.getLayoutMeta().then(() => {
@@ -1922,7 +1930,7 @@ export class RecordGetRange extends RecordGetOperation {
1922
1930
  resolve(data);
1923
1931
  }
1924
1932
  else {
1925
- reject(new FMError(res.messages[0].code, res.status, res));
1933
+ reject(new FMError(res.messages[0].code, res.status, res, trace));
1926
1934
  }
1927
1935
  }))
1928
1936
  .catch(e => {
@@ -1972,6 +1980,7 @@ export class Find extends RecordGetOperation {
1972
1980
  return this.fetch();
1973
1981
  }
1974
1982
  fetch() {
1983
+ let trace = new Error();
1975
1984
  return new Promise((resolve, reject) => {
1976
1985
  // console.log(this.#toObject())
1977
1986
  this.layout.getLayoutMeta()
@@ -1994,7 +2003,7 @@ export class Find extends RecordGetOperation {
1994
2003
  resolve(data);
1995
2004
  }
1996
2005
  else {
1997
- reject(new FMError(res.messages[0].code, res.status, res));
2006
+ reject(new FMError(res.messages[0].code, res.status, res, trace));
1998
2007
  }
1999
2008
  }))
2000
2009
  .catch(e => {
@@ -2004,7 +2013,7 @@ export class Find extends RecordGetOperation {
2004
2013
  }
2005
2014
  }
2006
2015
  export class FMError extends Error {
2007
- constructor(code, httpStatus, res) {
2016
+ constructor(code, httpStatus, res, trace) {
2008
2017
  if (typeof code === "string")
2009
2018
  code = parseInt(code);
2010
2019
  super(errs.find(err => err.e === code).d || "Unknown error");
@@ -2013,6 +2022,8 @@ export class FMError extends Error {
2013
2022
  this.messages = res.messages;
2014
2023
  this.code = typeof code === "string" ? parseInt(code) : code;
2015
2024
  Error.captureStackTrace(this, FMError);
2025
+ if (trace)
2026
+ this.stack = trace.stack;
2016
2027
  }
2017
2028
  }
2018
2029
  function generateAuthorizationHeaders(credentials) {
package/src/index.ts CHANGED
@@ -1442,6 +1442,7 @@ export class Layout {
1442
1442
  }
1443
1443
 
1444
1444
  runScript(script): Promise<string | FMError | Error> {
1445
+ let trace = new Error()
1445
1446
  return new Promise(async (resolve, reject) => {
1446
1447
  let url = `${this.endpoint}/script/${encodeURIComponent(script.name)}`
1447
1448
  if (script.parameter) url += "?script.param=" + encodeURIComponent(script.parameter)
@@ -1455,7 +1456,7 @@ export class Layout {
1455
1456
  }
1456
1457
  else {
1457
1458
  // console.log(res)
1458
- reject(new FMError(res.messages[0].code, res.status, res))
1459
+ reject(new FMError(res.messages[0].code, res.status, res, trace))
1459
1460
  }
1460
1461
  })
1461
1462
  .catch(e => {
@@ -1602,6 +1603,7 @@ export class RecordBase extends EventEmitter {
1602
1603
  }
1603
1604
 
1604
1605
  get() {
1606
+ let trace = new Error()
1605
1607
  if (this.recordId === -1) {
1606
1608
  throw "Cannot get this RecordBase until a commit() is done."
1607
1609
  }
@@ -1622,7 +1624,7 @@ export class RecordBase extends EventEmitter {
1622
1624
  resolve(this)
1623
1625
  }
1624
1626
  else {
1625
- reject(new FMError(res.messages[0].code, res.status, res))
1627
+ reject(new FMError(res.messages[0].code, res.status, res, trace))
1626
1628
  }
1627
1629
  })
1628
1630
  .catch(e => {
@@ -1631,21 +1633,22 @@ export class RecordBase extends EventEmitter {
1631
1633
  })
1632
1634
  }
1633
1635
 
1634
- commit(extraBody: extraBodyOptions): Promise<RecordBase | FMError> {
1636
+ commit(extraBody: extraBodyOptions = {}): Promise<RecordBase | FMError> {
1637
+ let trace = new Error()
1635
1638
  return new Promise(async (resolve, reject) => {
1636
1639
  let data = this.toObject()
1637
1640
  delete data.recordId
1638
1641
  delete data.modId
1639
1642
 
1640
- if (extraBody.scripts.after) {
1643
+ if (extraBody.scripts?.after) {
1641
1644
  data["script"] = extraBody.scripts.after.name
1642
1645
  if (extraBody.scripts.after.parameter) data["param"] = extraBody.scripts.after.parameter
1643
1646
  }
1644
- if (extraBody.scripts.prerequest) {
1647
+ if (extraBody.scripts?.prerequest) {
1645
1648
  data["script"] = extraBody.scripts.after.name
1646
1649
  if (extraBody.scripts.prerequest.parameter) data["param"] = extraBody.scripts.prerequest.parameter
1647
1650
  }
1648
- if (extraBody.scripts.presort) {
1651
+ if (extraBody.scripts?.presort) {
1649
1652
  data["script"] = extraBody.scripts.presort.name
1650
1653
  if (extraBody.scripts.presort.parameter) data["param"] = extraBody.scripts.presort.parameter
1651
1654
  }
@@ -1660,7 +1663,7 @@ export class RecordBase extends EventEmitter {
1660
1663
  })
1661
1664
  .then(res => {
1662
1665
  if (typeof res.response.scriptError !== "undefined" && res.response.scriptError !== '0') {
1663
- reject(new FMError(res.response.scriptError, res.status, res))
1666
+ reject(new FMError(res.response.scriptError, res.status, res, trace))
1664
1667
  }
1665
1668
  else if (res.messages[0].code === "0") {
1666
1669
  this.recordId = parseInt(res.response.recordId)
@@ -1668,7 +1671,7 @@ export class RecordBase extends EventEmitter {
1668
1671
  resolve(this)
1669
1672
  }
1670
1673
  else {
1671
- reject(new FMError(res.messages[0].code, res.status, res))
1674
+ reject(new FMError(res.messages[0].code, res.status, res, trace))
1672
1675
  }
1673
1676
  })
1674
1677
  .catch(e => {
@@ -1686,7 +1689,7 @@ export class RecordBase extends EventEmitter {
1686
1689
  })
1687
1690
  .then(res => {
1688
1691
  if (typeof res.response.scriptError !== "undefined" && res.response.scriptError !== '0') {
1689
- reject(new FMError(res.response.scriptError, res.status, res))
1692
+ reject(new FMError(res.response.scriptError, res.status, res, trace))
1690
1693
  }
1691
1694
  else if (res.messages[0].code === "0") {
1692
1695
  this.modId = res.response.modId
@@ -1694,7 +1697,7 @@ export class RecordBase extends EventEmitter {
1694
1697
  resolve(this)
1695
1698
  }
1696
1699
  else {
1697
- reject(new FMError(res.messages[0].code, res.status, res))
1700
+ reject(new FMError(res.messages[0].code, res.status, res, trace))
1698
1701
  }
1699
1702
  })
1700
1703
  .catch(e => {
@@ -1717,6 +1720,7 @@ export class RecordBase extends EventEmitter {
1717
1720
  }
1718
1721
 
1719
1722
  delete(): Promise<void> {
1723
+ let trace = new Error()
1720
1724
  return new Promise(async (resolve, reject) => {
1721
1725
  this.layout.database.apiRequest(this.endpoint, {
1722
1726
  port: 443,
@@ -1724,14 +1728,14 @@ export class RecordBase extends EventEmitter {
1724
1728
  })
1725
1729
  .then(res => {
1726
1730
  if (typeof res.response.scriptError !== "undefined" && res.response.scriptError !== '0') {
1727
- reject(new FMError(res.response.scriptError, res.status, res))
1731
+ reject(new FMError(res.response.scriptError, res.status, res, trace))
1728
1732
  }
1729
1733
  else if (res.messages[0].code === "0") {
1730
1734
  this.emit("deleted")
1731
1735
  resolve()
1732
1736
  }
1733
1737
  else {
1734
- reject(new FMError(res.messages[0].code, res.status, res))
1738
+ reject(new FMError(res.messages[0].code, res.status, res, trace))
1735
1739
  }
1736
1740
  })
1737
1741
  .catch(e => {
@@ -1741,6 +1745,7 @@ export class RecordBase extends EventEmitter {
1741
1745
  }
1742
1746
 
1743
1747
  duplicate(): Promise<RecordBase> {
1748
+ let trace = new Error()
1744
1749
  return new Promise(async (resolve, reject) => {
1745
1750
  this.layout.database.apiRequest(this.endpoint, {
1746
1751
  port: 443,
@@ -1748,7 +1753,7 @@ export class RecordBase extends EventEmitter {
1748
1753
  })
1749
1754
  .then(res => {
1750
1755
  if (typeof res.response.scriptError !== "undefined" && res.response.scriptError !== '0') {
1751
- reject(new FMError(res.response.scriptError, res.status, res))
1756
+ reject(new FMError(res.response.scriptError, res.status, res, trace))
1752
1757
  }
1753
1758
  else if (res.messages[0].code === "0") {
1754
1759
  let data = this.toObject((a) => true, (a) => true, (a) => false, (a) => false)
@@ -1758,7 +1763,7 @@ export class RecordBase extends EventEmitter {
1758
1763
  resolve(_res)
1759
1764
  }
1760
1765
  else {
1761
- reject(new FMError(res.messages[0].code, res.status, res))
1766
+ reject(new FMError(res.messages[0].code, res.status, res, trace))
1762
1767
  }
1763
1768
  })
1764
1769
  .catch(e => {
@@ -1920,6 +1925,7 @@ export class Field {
1920
1925
  }
1921
1926
 
1922
1927
  upload(buffer: Buffer, filename: string, mime: string): Promise<void | FMError> {
1928
+ let trace = new Error()
1923
1929
  if (this.metadata.result !== "container") throw "Cannot upload a file to the field; " + this.id + " (not a container field)"
1924
1930
  return new Promise(async (resolve, reject) => {
1925
1931
  let form = new FormData()
@@ -1936,7 +1942,7 @@ export class Field {
1936
1942
  resolve()
1937
1943
  }
1938
1944
  else {
1939
- reject(new FMError(_res.messages[0].code, _res.status, data))
1945
+ reject(new FMError(_res.messages[0].code, _res.status, data, trace))
1940
1946
  }
1941
1947
  })
1942
1948
  .catch(e => {
@@ -2014,7 +2020,7 @@ export class PortalRecord extends RecordBase {
2014
2020
  this.portal.record._onSave()
2015
2021
  }
2016
2022
 
2017
- commit(extraBody: extraBodyOptions) {
2023
+ commit(extraBody: extraBodyOptions = {}) {
2018
2024
  return this.portal.record.commit(extraBody)
2019
2025
  }
2020
2026
 
@@ -2125,6 +2131,7 @@ export class RecordGetRange extends RecordGetOperation {
2125
2131
  }
2126
2132
 
2127
2133
  fetch(extraBody: extraBodyOptions = {}): Promise<RecordBase[]> {
2134
+ let trace = new Error()
2128
2135
  return new Promise((resolve, reject) => {
2129
2136
  // console.log(this.#toObject())
2130
2137
  this.layout.getLayoutMeta().then(() => {
@@ -2143,7 +2150,7 @@ export class RecordGetRange extends RecordGetOperation {
2143
2150
  resolve(data)
2144
2151
  }
2145
2152
  else {
2146
- reject(new FMError(res.messages[0].code, res.status, res))
2153
+ reject(new FMError(res.messages[0].code, res.status, res, trace))
2147
2154
  }
2148
2155
  })
2149
2156
  .catch(e => {
@@ -2198,6 +2205,7 @@ export class Find extends RecordGetOperation {
2198
2205
  }
2199
2206
 
2200
2207
  fetch(): Promise<RecordBase[]> {
2208
+ let trace = new Error()
2201
2209
  return new Promise((resolve, reject) => {
2202
2210
  // console.log(this.#toObject())
2203
2211
  this.layout.getLayoutMeta()
@@ -2219,7 +2227,7 @@ export class Find extends RecordGetOperation {
2219
2227
  resolve(data)
2220
2228
  }
2221
2229
  else {
2222
- reject(new FMError(res.messages[0].code, res.status, res))
2230
+ reject(new FMError(res.messages[0].code, res.status, res, trace))
2223
2231
  }
2224
2232
  })
2225
2233
  .catch(e => {
@@ -2236,7 +2244,7 @@ export class FMError extends Error {
2236
2244
  readonly message: string
2237
2245
  readonly messages: string
2238
2246
 
2239
- constructor(code, httpStatus, res) {
2247
+ constructor(code, httpStatus, res, trace?: Error) {
2240
2248
  if (typeof code === "string") code = parseInt(code)
2241
2249
  super(errs.find(err => err.e === code).d || "Unknown error");
2242
2250
  this.httpStatus = httpStatus
@@ -2244,6 +2252,8 @@ export class FMError extends Error {
2244
2252
  this.messages = res.messages
2245
2253
  this.code = typeof code === "string" ? parseInt(code) : code
2246
2254
  Error.captureStackTrace(this, FMError)
2255
+
2256
+ if (trace) this.stack = trace.stack
2247
2257
  }
2248
2258
  }
2249
2259