mock-config-server 3.4.1 → 3.5.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 (137) hide show
  1. package/dist/bin/bin.js +5 -8
  2. package/dist/bin/build.js +52 -50
  3. package/dist/bin/cli.js +50 -43
  4. package/dist/bin/helpers/createTemplate.js +29 -21
  5. package/dist/bin/helpers/getMostSpecificPathFromError.js +34 -30
  6. package/dist/bin/helpers/getValidationMessageFromPath.js +11 -8
  7. package/dist/bin/helpers/index.js +21 -79
  8. package/dist/bin/helpers/isOnlyRequestedDataResolvingPropertyExists.js +13 -6
  9. package/dist/bin/helpers/resolveConfigFile.js +22 -19
  10. package/dist/bin/helpers/resolveConfigFilePath.js +19 -12
  11. package/dist/bin/helpers/resolveExportsFromSourceCode.js +13 -10
  12. package/dist/bin/init.js +114 -97
  13. package/dist/bin/run.js +42 -43
  14. package/dist/bin/validateMockServerConfig/baseUrlSchema/baseUrlSchema.js +9 -5
  15. package/dist/bin/validateMockServerConfig/corsSchema/corsSchema.js +32 -14
  16. package/dist/bin/validateMockServerConfig/databaseConfigSchema/databaseConfigSchema.js +19 -9
  17. package/dist/bin/validateMockServerConfig/graphqlConfigSchema/graphqlConfigSchema.js +38 -22
  18. package/dist/bin/validateMockServerConfig/graphqlConfigSchema/routeConfigSchema/routeConfigSchema.js +38 -28
  19. package/dist/bin/validateMockServerConfig/interceptorsSchema/interceptorsSchema.js +12 -8
  20. package/dist/bin/validateMockServerConfig/portSchema/portSchema.js +9 -5
  21. package/dist/bin/validateMockServerConfig/queueSchema/queueSchema.js +18 -9
  22. package/dist/bin/validateMockServerConfig/restConfigSchema/restConfigSchema.js +33 -19
  23. package/dist/bin/validateMockServerConfig/restConfigSchema/routeConfigSchema/routeConfigSchema.js +62 -48
  24. package/dist/bin/validateMockServerConfig/settingsSchema/settingsSchema.js +13 -9
  25. package/dist/bin/validateMockServerConfig/staticPathSchema/staticPathSchema.js +19 -9
  26. package/dist/bin/validateMockServerConfig/utils/checkModeSchema/checkModeSchema.js +27 -9
  27. package/dist/bin/validateMockServerConfig/utils/entitiesSchema/entitiesSchema.js +117 -60
  28. package/dist/bin/validateMockServerConfig/utils/index.js +20 -68
  29. package/dist/bin/validateMockServerConfig/utils/jsonSchema/jsonSchema.js +30 -10
  30. package/dist/bin/validateMockServerConfig/utils/plainObjectSchema/plainObjectSchema.js +9 -8
  31. package/dist/bin/validateMockServerConfig/utils/requiredPropertiesSchema/requiredPropertiesSchema.js +10 -7
  32. package/dist/bin/validateMockServerConfig/utils/sharedSchema/sharedSchema.js +18 -6
  33. package/dist/bin/validateMockServerConfig/validateApiMockServerConfig.js +43 -40
  34. package/dist/bin/validateMockServerConfig/validateMockServerConfig.js +38 -35
  35. package/dist/index.js +15 -13
  36. package/dist/src/core/database/createDatabaseRoutes/createDatabaseRoutes.js +25 -28
  37. package/dist/src/core/database/createDatabaseRoutes/helpers/array/createNewId/createNewId.js +14 -11
  38. package/dist/src/core/database/createDatabaseRoutes/helpers/array/findIndexById/findIndexById.js +8 -5
  39. package/dist/src/core/database/createDatabaseRoutes/helpers/array/index.js +17 -35
  40. package/dist/src/core/database/createDatabaseRoutes/helpers/array/isIndex/isIndex.js +8 -5
  41. package/dist/src/core/database/createDatabaseRoutes/helpers/createNestedDatabaseRoutes/createNestedDatabaseRoutes.js +157 -143
  42. package/dist/src/core/database/createDatabaseRoutes/helpers/createRewrittenDatabaseRoutes/createRewrittenDatabaseRoutes.js +15 -8
  43. package/dist/src/core/database/createDatabaseRoutes/helpers/createShallowDatabaseRoutes/createShallowDatabaseRoutes.js +88 -94
  44. package/dist/src/core/database/createDatabaseRoutes/helpers/filter/filter.js +44 -47
  45. package/dist/src/core/database/createDatabaseRoutes/helpers/index.js +19 -57
  46. package/dist/src/core/database/createDatabaseRoutes/helpers/pagination/pagination.js +32 -31
  47. package/dist/src/core/database/createDatabaseRoutes/helpers/search/search.js +34 -24
  48. package/dist/src/core/database/createDatabaseRoutes/helpers/sort/sort.js +38 -34
  49. package/dist/src/core/database/createDatabaseRoutes/helpers/splitDatabaseByNesting/splitDatabaseByNesting.js +26 -25
  50. package/dist/src/core/database/createDatabaseRoutes/storages/File/FileStorage.js +65 -50
  51. package/dist/src/core/database/createDatabaseRoutes/storages/File/FileWriter.js +55 -48
  52. package/dist/src/core/database/createDatabaseRoutes/storages/Memory/MemoryStorage.js +51 -41
  53. package/dist/src/core/database/createDatabaseRoutes/storages/index.js +16 -24
  54. package/dist/src/core/database/index.js +15 -13
  55. package/dist/src/core/graphql/createGraphQLRoutes/createGraphQLRoutes.js +126 -140
  56. package/dist/src/core/graphql/createGraphQLRoutes/helpers/index.js +15 -13
  57. package/dist/src/core/graphql/createGraphQLRoutes/helpers/prepareGraphQLRequestConfigs/prepareGraphQLRequestConfigs.js +36 -41
  58. package/dist/src/core/graphql/index.js +15 -13
  59. package/dist/src/core/middlewares/cookieParseMiddleware/cookieParseMiddleware.js +16 -13
  60. package/dist/src/core/middlewares/cookieParseMiddleware/helpers/index.js +15 -13
  61. package/dist/src/core/middlewares/cookieParseMiddleware/helpers/parseCookie/parseCookie.js +18 -15
  62. package/dist/src/core/middlewares/corsMiddleware/corsMiddleware.js +50 -47
  63. package/dist/src/core/middlewares/corsMiddleware/helpers/getAllowedOrigins/getAllowedOrigins.js +17 -12
  64. package/dist/src/core/middlewares/corsMiddleware/helpers/index.js +15 -13
  65. package/dist/src/core/middlewares/destroyerMiddleware/destroyerMiddleware.js +23 -20
  66. package/dist/src/core/middlewares/errorMiddleware/errorMiddleware.js +23 -17
  67. package/dist/src/core/middlewares/index.js +23 -91
  68. package/dist/src/core/middlewares/noCorsMiddleware/noCorsMiddleware.js +22 -19
  69. package/dist/src/core/middlewares/notFoundMiddleware/helpers/getGraphqlUrlSuggestions/getGraphqlUrlSuggestions.js +21 -23
  70. package/dist/src/core/middlewares/notFoundMiddleware/helpers/getLevenshteinDistance/getLevenshteinDistance.js +80 -80
  71. package/dist/src/core/middlewares/notFoundMiddleware/helpers/getRestUrlSuggestions/getRestUrlSuggestions.js +34 -34
  72. package/dist/src/core/middlewares/notFoundMiddleware/helpers/getRestUrlSuggestions/helpers/getActualRestUrlMeaningfulString/getActualRestUrlMeaningfulString.js +8 -5
  73. package/dist/src/core/middlewares/notFoundMiddleware/helpers/getRestUrlSuggestions/helpers/getPatternRestUrlMeaningfulString/getPatternRestUrlMeaningfulString.js +8 -5
  74. package/dist/src/core/middlewares/notFoundMiddleware/helpers/getRestUrlSuggestions/helpers/index.js +16 -24
  75. package/dist/src/core/middlewares/notFoundMiddleware/helpers/index.js +17 -35
  76. package/dist/src/core/middlewares/notFoundMiddleware/notFoundMiddleware.js +58 -60
  77. package/dist/src/core/middlewares/requestInterceptorMiddleware/requestInterceptorMiddleware.js +16 -17
  78. package/dist/src/core/middlewares/staticMiddleware/staticMiddleware.js +32 -25
  79. package/dist/src/core/rest/createRestRoutes/createRestRoutes.js +120 -130
  80. package/dist/src/core/rest/createRestRoutes/helpers/index.js +15 -13
  81. package/dist/src/core/rest/createRestRoutes/helpers/prepareRestRequestConfigs/prepareRestRequestConfigs.js +37 -43
  82. package/dist/src/core/rest/index.js +15 -13
  83. package/dist/src/index.js +16 -24
  84. package/dist/src/server/createDatabaseMockServer/createDatabaseMockServer.js +56 -53
  85. package/dist/src/server/createGraphQLMockServer/createGraphQLMockServer.js +64 -62
  86. package/dist/src/server/createMockServer/createMockServer.js +94 -91
  87. package/dist/src/server/createRestMockServer/createRestMockServer.js +64 -62
  88. package/dist/src/server/index.js +23 -91
  89. package/dist/src/server/startDatabaseMockServer/startDatabaseMockServer.js +25 -19
  90. package/dist/src/server/startGraphQLMockServer/startGraphQLMockServer.js +25 -19
  91. package/dist/src/server/startMockServer/startMockServer.js +25 -19
  92. package/dist/src/server/startRestMockServer/startRestMockServer.js +25 -19
  93. package/dist/src/utils/constants/appPath.js +8 -4
  94. package/dist/src/utils/constants/checkModes.js +74 -11
  95. package/dist/src/utils/constants/default.js +18 -14
  96. package/dist/src/utils/constants/index.js +17 -35
  97. package/dist/src/utils/helpers/asyncHandler.js +8 -5
  98. package/dist/src/utils/helpers/config/index.js +15 -13
  99. package/dist/src/utils/helpers/config/resolveEntityValues/resolveEntityValues.js +103 -110
  100. package/dist/src/utils/helpers/entities/convertToEntityDescriptor/convertToEntityDescriptor.js +12 -9
  101. package/dist/src/utils/helpers/entities/index.js +16 -24
  102. package/dist/src/utils/helpers/entities/isEntityDescriptor/isEntityDescriptor.js +9 -6
  103. package/dist/src/utils/helpers/files/index.js +15 -13
  104. package/dist/src/utils/helpers/files/isFilePathValid/isFilePathValid.js +22 -15
  105. package/dist/src/utils/helpers/graphql/getGraphQLInput/getGraphQLInput.js +25 -29
  106. package/dist/src/utils/helpers/graphql/index.js +17 -35
  107. package/dist/src/utils/helpers/graphql/parseGraphQLRequest/parseGraphQLRequest.js +13 -10
  108. package/dist/src/utils/helpers/graphql/parseQuery/parseQuery.js +23 -19
  109. package/dist/src/utils/helpers/index.js +26 -124
  110. package/dist/src/utils/helpers/interceptors/callRequestInterceptor/callRequestInterceptor.js +21 -21
  111. package/dist/src/utils/helpers/interceptors/callResponseInterceptors/callResponseInterceptors.js +62 -64
  112. package/dist/src/utils/helpers/interceptors/helpers/setDelay.js +10 -7
  113. package/dist/src/utils/helpers/interceptors/index.js +16 -24
  114. package/dist/src/utils/helpers/isPlainObject/isPlainObject.js +8 -5
  115. package/dist/src/utils/helpers/isPrimitive/isPrimitive.js +8 -5
  116. package/dist/src/utils/helpers/isRegExp/isRegExp.js +8 -5
  117. package/dist/src/utils/helpers/sleep.js +9 -6
  118. package/dist/src/utils/helpers/tests/createTmpDir.js +16 -9
  119. package/dist/src/utils/helpers/tests/index.js +15 -13
  120. package/dist/src/utils/helpers/url/convertWin32PathToUnix/convertWin32PathToUnix.js +8 -5
  121. package/dist/src/utils/helpers/url/getUrlParts/getUrlParts.js +9 -6
  122. package/dist/src/utils/helpers/url/index.js +18 -46
  123. package/dist/src/utils/helpers/url/removeLeadingAndTrailingSlashes/removeLeadingAndTrailingSlashes.js +8 -5
  124. package/dist/src/utils/helpers/url/urlJoin/urlJoin.js +18 -11
  125. package/dist/src/utils/types/checkModes.js +4 -1
  126. package/dist/src/utils/types/database.js +4 -1
  127. package/dist/src/utils/types/entities.js +4 -1
  128. package/dist/src/utils/types/graphql.js +4 -1
  129. package/dist/src/utils/types/index.js +24 -102
  130. package/dist/src/utils/types/interceptors.js +4 -1
  131. package/dist/src/utils/types/rest.js +4 -1
  132. package/dist/src/utils/types/server.js +4 -1
  133. package/dist/src/utils/types/utils.js +4 -1
  134. package/dist/src/utils/types/values.js +4 -1
  135. package/package.json +8 -9
  136. package/dist/bin/templates/.eslintrc.js +0 -14
  137. package/dist/bin/templates/tsconfig.json +0 -11
@@ -1,60 +1,22 @@
1
1
  "use strict";
2
-
3
2
  Object.defineProperty(exports, "__esModule", {
4
- value: true
3
+ value: true
5
4
  });
6
- var _array = require("./array");
7
- Object.keys(_array).forEach(function (key) {
8
- if (key === "default" || key === "__esModule") return;
9
- if (key in exports && exports[key] === _array[key]) return;
10
- Object.defineProperty(exports, key, {
11
- enumerable: true,
12
- get: function () {
13
- return _array[key];
14
- }
15
- });
16
- });
17
- var _createNestedDatabaseRoutes = require("./createNestedDatabaseRoutes/createNestedDatabaseRoutes");
18
- Object.keys(_createNestedDatabaseRoutes).forEach(function (key) {
19
- if (key === "default" || key === "__esModule") return;
20
- if (key in exports && exports[key] === _createNestedDatabaseRoutes[key]) return;
21
- Object.defineProperty(exports, key, {
22
- enumerable: true,
23
- get: function () {
24
- return _createNestedDatabaseRoutes[key];
25
- }
26
- });
27
- });
28
- var _createRewrittenDatabaseRoutes = require("./createRewrittenDatabaseRoutes/createRewrittenDatabaseRoutes");
29
- Object.keys(_createRewrittenDatabaseRoutes).forEach(function (key) {
30
- if (key === "default" || key === "__esModule") return;
31
- if (key in exports && exports[key] === _createRewrittenDatabaseRoutes[key]) return;
32
- Object.defineProperty(exports, key, {
33
- enumerable: true,
34
- get: function () {
35
- return _createRewrittenDatabaseRoutes[key];
36
- }
37
- });
38
- });
39
- var _createShallowDatabaseRoutes = require("./createShallowDatabaseRoutes/createShallowDatabaseRoutes");
40
- Object.keys(_createShallowDatabaseRoutes).forEach(function (key) {
41
- if (key === "default" || key === "__esModule") return;
42
- if (key in exports && exports[key] === _createShallowDatabaseRoutes[key]) return;
43
- Object.defineProperty(exports, key, {
44
- enumerable: true,
45
- get: function () {
46
- return _createShallowDatabaseRoutes[key];
47
- }
48
- });
49
- });
50
- var _splitDatabaseByNesting = require("./splitDatabaseByNesting/splitDatabaseByNesting");
51
- Object.keys(_splitDatabaseByNesting).forEach(function (key) {
52
- if (key === "default" || key === "__esModule") return;
53
- if (key in exports && exports[key] === _splitDatabaseByNesting[key]) return;
54
- Object.defineProperty(exports, key, {
55
- enumerable: true,
56
- get: function () {
57
- return _splitDatabaseByNesting[key];
58
- }
59
- });
60
- });
5
+ _export_star(require("./array"), exports);
6
+ _export_star(require("./createNestedDatabaseRoutes/createNestedDatabaseRoutes"), exports);
7
+ _export_star(require("./createRewrittenDatabaseRoutes/createRewrittenDatabaseRoutes"), exports);
8
+ _export_star(require("./createShallowDatabaseRoutes/createShallowDatabaseRoutes"), exports);
9
+ _export_star(require("./splitDatabaseByNesting/splitDatabaseByNesting"), exports);
10
+ function _export_star(from, to) {
11
+ Object.keys(from).forEach(function(k) {
12
+ if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) {
13
+ Object.defineProperty(to, k, {
14
+ enumerable: true,
15
+ get: function() {
16
+ return from[k];
17
+ }
18
+ });
19
+ }
20
+ });
21
+ return from;
22
+ }
@@ -1,36 +1,37 @@
1
1
  "use strict";
2
-
3
2
  Object.defineProperty(exports, "__esModule", {
4
- value: true
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "pagination", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return pagination;
9
+ }
5
10
  });
6
- exports.pagination = void 0;
7
11
  const DEFAULT_LIMIT = 10;
8
- const pagination = (array, queries) => {
9
- const {
10
- _page
11
- } = queries;
12
- if (!_page || +_page <= 0) return array;
13
- const page = +_page;
14
- const limit = queries._limit && +queries._limit > 0 ? +queries._limit : DEFAULT_LIMIT;
15
- const pages = Math.ceil(array.length / limit);
16
- if (page > pages) return array;
17
- const start = page * limit - limit;
18
- const end = page * limit;
19
- const results = array.slice(start, end);
20
- const next = page + 1 <= pages ? page + 1 : null;
21
- const prev = page - 1 !== 0 ? page - 1 : null;
22
- const last = pages > 0 ? pages : null;
23
- return {
24
- _link: {
25
- count: array.length,
26
- pages,
27
- first: 1,
28
- current: page,
29
- next,
30
- prev,
31
- last
32
- },
33
- results
34
- };
12
+ const pagination = (array, queries)=>{
13
+ const { _page } = queries;
14
+ if (!_page || +_page <= 0) return array;
15
+ const page = +_page;
16
+ const limit = queries._limit && +queries._limit > 0 ? +queries._limit : DEFAULT_LIMIT;
17
+ const pages = Math.ceil(array.length / limit);
18
+ if (page > pages) return array;
19
+ const start = page * limit - limit;
20
+ const end = page * limit;
21
+ const results = array.slice(start, end);
22
+ const next = page + 1 <= pages ? page + 1 : null;
23
+ const prev = page - 1 !== 0 ? page - 1 : null;
24
+ const last = pages > 0 ? pages : null;
25
+ return {
26
+ _link: {
27
+ count: array.length,
28
+ pages,
29
+ first: 1,
30
+ current: page,
31
+ next,
32
+ prev,
33
+ last
34
+ },
35
+ results
36
+ };
35
37
  };
36
- exports.pagination = pagination;
@@ -1,29 +1,39 @@
1
1
  "use strict";
2
-
3
2
  Object.defineProperty(exports, "__esModule", {
4
- value: true
3
+ value: true
5
4
  });
6
- exports.searchInNestedObjects = exports.search = void 0;
7
- const searchInNestedObjects = (obj, searchText) => {
8
- for (const key in obj) {
9
- if (typeof obj[key] === 'object' && obj[key] !== null) {
10
- if (searchInNestedObjects(obj[key], searchText)) {
11
- return true;
12
- }
13
- } else if (String(obj[key]).includes(searchText)) {
14
- return true;
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: all[name]
9
+ });
10
+ }
11
+ _export(exports, {
12
+ search: function() {
13
+ return search;
14
+ },
15
+ searchInNestedObjects: function() {
16
+ return searchInNestedObjects;
15
17
  }
16
- }
17
- return false;
18
- };
19
- exports.searchInNestedObjects = searchInNestedObjects;
20
- const search = (array, searchText) => array.filter(element => {
21
- if (typeof searchText === 'string') {
22
- return searchInNestedObjects(element, searchText);
23
- }
24
- if (Array.isArray(searchText)) {
25
- return searchText.some(text => searchInNestedObjects(element, text));
26
- }
27
- throw new Error('search technical error');
28
18
  });
29
- exports.search = search;
19
+ const searchInNestedObjects = (obj, searchText)=>{
20
+ for(const key in obj){
21
+ if (typeof obj[key] === "object" && obj[key] !== null) {
22
+ if (searchInNestedObjects(obj[key], searchText)) {
23
+ return true;
24
+ }
25
+ } else if (String(obj[key]).includes(searchText)) {
26
+ return true;
27
+ }
28
+ }
29
+ return false;
30
+ };
31
+ const search = (array, searchText)=>array.filter((element)=>{
32
+ if (typeof searchText === "string") {
33
+ return searchInNestedObjects(element, searchText);
34
+ }
35
+ if (Array.isArray(searchText)) {
36
+ return searchText.some((text)=>searchInNestedObjects(element, text));
37
+ }
38
+ throw new Error("search technical error");
39
+ });
@@ -1,41 +1,45 @@
1
1
  "use strict";
2
-
3
2
  Object.defineProperty(exports, "__esModule", {
4
- value: true
3
+ value: true
5
4
  });
6
- exports.sort = void 0;
7
- var _flat = require("flat");
8
- const DEFAULT_ORDER = 'asc';
9
- const getOrder = order => {
10
- if (order === 'asc' || order === 'desc') return order;
11
- return DEFAULT_ORDER;
12
- };
13
- const sortArray = (array, key, order) => array.sort((a, b) => {
14
- const flattenedA = (0, _flat.flatten)(a);
15
- const flattenedB = (0, _flat.flatten)(b);
16
- if (!flattenedA[key] || !flattenedB[key]) return 0;
17
- if (typeof flattenedA[key] === 'string' && typeof flattenedB[key] === 'string') {
18
- return order === 'asc' ? flattenedA[key].localeCompare(flattenedB[key]) : flattenedB[key].localeCompare(flattenedA[key]);
19
- }
20
- return order === 'asc' ? Number(flattenedA[key]) - Number(flattenedB[key]) : Number(flattenedB[key]) - Number(flattenedA[key]);
5
+ Object.defineProperty(exports, "sort", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return sort;
9
+ }
21
10
  });
22
- const sort = (array, queries) => {
23
- const {
24
- _sort,
25
- _order = DEFAULT_ORDER
26
- } = queries;
27
- if (!_sort) return array;
28
- const result = [...array];
29
- if (Array.isArray(_sort)) {
30
- const orders = Array.isArray(_order) ? _order : [_order];
31
- _sort.forEach((key, index) => {
32
- const order = getOrder(orders[index]);
33
- sortArray(result, key, order);
11
+ const _flat = require("flat");
12
+ const DEFAULT_ORDER = "asc";
13
+ const getOrder = (order)=>{
14
+ if (order === "asc" || order === "desc") return order;
15
+ return DEFAULT_ORDER;
16
+ };
17
+ const sortArray = (array, key, order)=>array.sort((a, b)=>{
18
+ const flattenedA = (0, _flat.flatten)(a);
19
+ const flattenedB = (0, _flat.flatten)(b);
20
+ if (!flattenedA[key] || !flattenedB[key]) return 0;
21
+ if (typeof flattenedA[key] === "string" && typeof flattenedB[key] === "string") {
22
+ return order === "asc" ? flattenedA[key].localeCompare(flattenedB[key]) : flattenedB[key].localeCompare(flattenedA[key]);
23
+ }
24
+ return order === "asc" ? Number(flattenedA[key]) - Number(flattenedB[key]) : Number(flattenedB[key]) - Number(flattenedA[key]);
34
25
  });
26
+ const sort = (array, queries)=>{
27
+ const { _sort, _order = DEFAULT_ORDER } = queries;
28
+ if (!_sort) return array;
29
+ const result = [
30
+ ...array
31
+ ];
32
+ if (Array.isArray(_sort)) {
33
+ const orders = Array.isArray(_order) ? _order : [
34
+ _order
35
+ ];
36
+ _sort.forEach((key, index)=>{
37
+ const order = getOrder(orders[index]);
38
+ sortArray(result, key, order);
39
+ });
40
+ return result;
41
+ }
42
+ const order = getOrder(Array.isArray(_order) ? _order[0] : _order);
43
+ sortArray(result, _sort, order);
35
44
  return result;
36
- }
37
- const order = getOrder(Array.isArray(_order) ? _order[0] : _order);
38
- sortArray(result, _sort, order);
39
- return result;
40
45
  };
41
- exports.sort = sort;
@@ -1,30 +1,31 @@
1
1
  "use strict";
2
-
3
2
  Object.defineProperty(exports, "__esModule", {
4
- value: true
3
+ value: true
5
4
  });
6
- exports.splitDatabaseByNesting = void 0;
7
- var _helpers = require("../../../../../utils/helpers");
8
- const isAllArrayElementsHaveValidTypeId = array => array.every(element => (0, _helpers.isPlainObject)(element) && (typeof element.id === 'number' || typeof element.id === 'string'));
9
- const isAllArrayElementsHaveUniqueId = array => {
10
- const uniqueIdsCount = new Set(array.map(({
11
- id
12
- }) => id)).size;
13
- return array.length === uniqueIdsCount;
14
- };
15
- const splitDatabaseByNesting = data => {
16
- const shallowDatabase = {};
17
- const nestedDatabase = {};
18
- Object.entries(data).forEach(([databaseEntityKey, databaseEntityValue]) => {
19
- if (Array.isArray(databaseEntityValue) && isAllArrayElementsHaveValidTypeId(databaseEntityValue) && isAllArrayElementsHaveUniqueId(databaseEntityValue)) {
20
- nestedDatabase[databaseEntityKey] = databaseEntityValue;
21
- return;
5
+ Object.defineProperty(exports, "splitDatabaseByNesting", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return splitDatabaseByNesting;
22
9
  }
23
- shallowDatabase[databaseEntityKey] = databaseEntityValue;
24
- });
25
- return {
26
- shallowDatabase,
27
- nestedDatabase
28
- };
10
+ });
11
+ const _helpers = require("../../../../../utils/helpers");
12
+ const isAllArrayElementsHaveValidTypeId = (array)=>array.every((element)=>(0, _helpers.isPlainObject)(element) && (typeof element.id === "number" || typeof element.id === "string"));
13
+ const isAllArrayElementsHaveUniqueId = (array)=>{
14
+ const uniqueIdsCount = new Set(array.map(({ id })=>id)).size;
15
+ return array.length === uniqueIdsCount;
16
+ };
17
+ const splitDatabaseByNesting = (data)=>{
18
+ const shallowDatabase = {};
19
+ const nestedDatabase = {};
20
+ Object.entries(data).forEach(([databaseEntityKey, databaseEntityValue])=>{
21
+ if (Array.isArray(databaseEntityValue) && isAllArrayElementsHaveValidTypeId(databaseEntityValue) && isAllArrayElementsHaveUniqueId(databaseEntityValue)) {
22
+ nestedDatabase[databaseEntityKey] = databaseEntityValue;
23
+ return;
24
+ }
25
+ shallowDatabase[databaseEntityKey] = databaseEntityValue;
26
+ });
27
+ return {
28
+ shallowDatabase,
29
+ nestedDatabase
30
+ };
29
31
  };
30
- exports.splitDatabaseByNesting = splitDatabaseByNesting;
@@ -1,59 +1,74 @@
1
1
  "use strict";
2
-
3
2
  Object.defineProperty(exports, "__esModule", {
4
- value: true
3
+ value: true
5
4
  });
6
- exports.FileStorage = void 0;
7
- var _fs = _interopRequireDefault(require("fs"));
8
- var _path = _interopRequireDefault(require("path"));
9
- var _constants = require("../../../../../utils/constants");
10
- var _helpers = require("../../helpers");
11
- var _FileWriter = require("./FileWriter");
12
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
5
+ Object.defineProperty(exports, "FileStorage", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return FileStorage;
9
+ }
10
+ });
11
+ const _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
12
+ const _path = /*#__PURE__*/ _interop_require_default(require("path"));
13
+ const _constants = require("../../../../../utils/constants");
14
+ const _helpers = require("../../helpers");
15
+ const _FileWriter = require("./FileWriter");
16
+ function _interop_require_default(obj) {
17
+ return obj && obj.__esModule ? obj : {
18
+ default: obj
19
+ };
20
+ }
13
21
  class FileStorage {
14
- constructor(fileName) {
15
- const filePath = _path.default.resolve(_constants.APP_PATH, fileName);
16
- this.fileWriter = new _FileWriter.FileWriter(filePath);
17
- this.data = JSON.parse(_fs.default.readFileSync(filePath, 'utf-8'));
18
- }
19
- read(key) {
20
- if (!key) return this.data;
21
- const keys = Array.isArray(key) ? key : [key];
22
- let readable = this.data;
23
- for (const currentKey of keys) {
24
- readable = readable[currentKey];
22
+ fileWriter;
23
+ data;
24
+ constructor(fileName){
25
+ const filePath = _path.default.resolve(_constants.APP_PATH, fileName);
26
+ this.fileWriter = new _FileWriter.FileWriter(filePath);
27
+ this.data = JSON.parse(_fs.default.readFileSync(filePath, "utf-8"));
25
28
  }
26
- return readable;
27
- }
28
- write(key, value) {
29
- const keys = Array.isArray(key) ? key : [key];
30
- let writable = this.data;
31
- let index = 0;
32
- // important:
33
- // stop iterate one element before end of keys for get access to writable object property
34
- while (index < keys.length - 1) {
35
- writable = writable[keys[index]];
36
- index += 1;
29
+ read(key) {
30
+ if (!key) return this.data;
31
+ const keys = Array.isArray(key) ? key : [
32
+ key
33
+ ];
34
+ let readable = this.data;
35
+ for (const currentKey of keys){
36
+ readable = readable[currentKey];
37
+ }
38
+ return readable;
37
39
  }
38
- writable[keys[index]] = value;
39
- this.fileWriter.write(JSON.stringify(this.data));
40
- }
41
- delete(key) {
42
- const keys = Array.isArray(key) ? key : [key];
43
- let deletable = this.data;
44
- let index = 0;
45
- // important:
46
- // stop iterate one element before end of key for get access to deletable object property
47
- while (index < keys.length - 1) {
48
- deletable = deletable[keys[index]];
49
- index += 1;
40
+ write(key, value) {
41
+ const keys = Array.isArray(key) ? key : [
42
+ key
43
+ ];
44
+ let writable = this.data;
45
+ let index = 0;
46
+ // important:
47
+ // stop iterate one element before end of keys for get access to writable object property
48
+ while(index < keys.length - 1){
49
+ writable = writable[keys[index]];
50
+ index += 1;
51
+ }
52
+ writable[keys[index]] = value;
53
+ this.fileWriter.write(JSON.stringify(this.data));
50
54
  }
51
- if (Array.isArray(deletable) && (0, _helpers.isIndex)(keys[index])) {
52
- deletable.splice(keys[index], 1);
53
- } else {
54
- delete deletable[keys[index]];
55
+ delete(key) {
56
+ const keys = Array.isArray(key) ? key : [
57
+ key
58
+ ];
59
+ let deletable = this.data;
60
+ let index = 0;
61
+ // ✅ important:
62
+ // stop iterate one element before end of key for get access to deletable object property
63
+ while(index < keys.length - 1){
64
+ deletable = deletable[keys[index]];
65
+ index += 1;
66
+ }
67
+ if (Array.isArray(deletable) && (0, _helpers.isIndex)(keys[index])) {
68
+ deletable.splice(keys[index], 1);
69
+ } else {
70
+ delete deletable[keys[index]];
71
+ }
72
+ this.fileWriter.write(JSON.stringify(this.data));
55
73
  }
56
- this.fileWriter.write(JSON.stringify(this.data));
57
- }
58
74
  }
59
- exports.FileStorage = FileStorage;
@@ -1,54 +1,61 @@
1
1
  "use strict";
2
-
3
2
  Object.defineProperty(exports, "__esModule", {
4
- value: true
3
+ value: true
5
4
  });
6
- exports.FileWriter = void 0;
7
- var _fs = _interopRequireDefault(require("fs"));
8
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
5
+ Object.defineProperty(exports, "FileWriter", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return FileWriter;
9
+ }
10
+ });
11
+ const _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
12
+ function _interop_require_default(obj) {
13
+ return obj && obj.__esModule ? obj : {
14
+ default: obj
15
+ };
16
+ }
9
17
  class FileWriter {
10
- nextData = null;
11
- nextDataPromise = null;
12
- nextDataResolve = null;
13
- writeIsLocked = false;
14
- constructor(filePath) {
15
- this.filePath = filePath;
16
- }
17
- lockedWrite(data) {
18
- var _this$nextDataPromise;
19
- this.nextData = data;
20
- this.nextDataPromise = (_this$nextDataPromise = this.nextDataPromise) !== null && _this$nextDataPromise !== void 0 ? _this$nextDataPromise : new Promise(resolve => {
21
- this.nextDataResolve = resolve;
22
- });
23
- return new Promise(resolve => {
24
- var _this$nextDataPromise2;
25
- (_this$nextDataPromise2 = this.nextDataPromise) === null || _this$nextDataPromise2 === void 0 || _this$nextDataPromise2.then(() => {
26
- resolve();
27
- });
28
- });
29
- }
30
- async unlockedWrite(data, recursionLevel = 0) {
31
- this.writeIsLocked = true;
32
- await _fs.default.promises.writeFile(this.filePath, data, 'utf-8');
33
- this.writeIsLocked = false;
34
-
35
- // ✅ important:
36
- // copy content of this.nextData into new variable
37
- // for avoid infinite recursion of 'unlockedWrite'
38
- const passedData = this.nextData;
39
- this.nextData = null;
40
- if (passedData) {
41
- await this.unlockedWrite(passedData, recursionLevel + 1);
42
- if (recursionLevel === 0) {
43
- var _this$nextDataResolve;
44
- (_this$nextDataResolve = this.nextDataResolve) === null || _this$nextDataResolve === void 0 || _this$nextDataResolve.call(this);
45
- this.nextDataPromise = null;
46
- this.nextDataResolve = null;
47
- }
18
+ filePath;
19
+ nextData = null;
20
+ nextDataPromise = null;
21
+ nextDataResolve = null;
22
+ writeIsLocked = false;
23
+ constructor(filePath){
24
+ this.filePath = filePath;
25
+ }
26
+ lockedWrite(data) {
27
+ this.nextData = data;
28
+ var _this_nextDataPromise;
29
+ this.nextDataPromise = (_this_nextDataPromise = this.nextDataPromise) !== null && _this_nextDataPromise !== void 0 ? _this_nextDataPromise : new Promise((resolve)=>{
30
+ this.nextDataResolve = resolve;
31
+ });
32
+ return new Promise((resolve)=>{
33
+ var _this_nextDataPromise;
34
+ (_this_nextDataPromise = this.nextDataPromise) === null || _this_nextDataPromise === void 0 ? void 0 : _this_nextDataPromise.then(()=>{
35
+ resolve();
36
+ });
37
+ });
38
+ }
39
+ async unlockedWrite(data, recursionLevel = 0) {
40
+ this.writeIsLocked = true;
41
+ await _fs.default.promises.writeFile(this.filePath, data, "utf-8");
42
+ this.writeIsLocked = false;
43
+ // ✅ important:
44
+ // copy content of this.nextData into new variable
45
+ // for avoid infinite recursion of 'unlockedWrite'
46
+ const passedData = this.nextData;
47
+ this.nextData = null;
48
+ if (passedData) {
49
+ await this.unlockedWrite(passedData, recursionLevel + 1);
50
+ if (recursionLevel === 0) {
51
+ var _this_nextDataResolve, _this;
52
+ (_this_nextDataResolve = (_this = this).nextDataResolve) === null || _this_nextDataResolve === void 0 ? void 0 : _this_nextDataResolve.call(_this);
53
+ this.nextDataPromise = null;
54
+ this.nextDataResolve = null;
55
+ }
56
+ }
57
+ }
58
+ write(data) {
59
+ return this.writeIsLocked ? this.lockedWrite(data) : this.unlockedWrite(data);
48
60
  }
49
- }
50
- write(data) {
51
- return this.writeIsLocked ? this.lockedWrite(data) : this.unlockedWrite(data);
52
- }
53
61
  }
54
- exports.FileWriter = FileWriter;