struct-fakerator 1.1.2 → 1.2.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.
package/.babelrc ADDED
@@ -0,0 +1,5 @@
1
+ {
2
+ "ignore": [
3
+ "src/*.test.js"
4
+ ]
5
+ }
package/biome.json CHANGED
@@ -7,10 +7,16 @@
7
7
  "enabled": true,
8
8
  "rules": {
9
9
  "recommended": true
10
- }
10
+ },
11
+ "include": [
12
+ "src/**/*"
13
+ ]
11
14
  },
12
15
  "formatter": {
13
- "indentStyle": "space"
16
+ "indentStyle": "space",
17
+ "include": [
18
+ "src/**/*"
19
+ ]
14
20
  },
15
21
  "javascript": {
16
22
  "formatter": {
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.valueConfigScheme = exports.tupleConfigScheme = exports.selectionConfigScheme = exports.objConfigScheme = exports.boundedSeriesScheme = exports.arrayConfigScheme = void 0;
7
+ var _zod = require("zod");
8
+ var valueConfigScheme = exports.valueConfigScheme = _zod.z.object({
9
+ type: _zod.z.string().regex(/^value$/, {
10
+ message: "invalid type string"
11
+ }),
12
+ generateFn: _zod.z["function"]()
13
+ });
14
+ var selectionConfigScheme = exports.selectionConfigScheme = _zod.z.object({
15
+ type: _zod.z.string().regex(/^select$/, {
16
+ message: "invalid type string"
17
+ }),
18
+ items: _zod.z.any().array().nonempty({
19
+ message: "items can not be empty"
20
+ })
21
+ });
22
+ var arrayConfigScheme = exports.arrayConfigScheme = _zod.z.object({
23
+ type: _zod.z.string().regex(/^arr$/, {
24
+ message: "invalid type string"
25
+ }),
26
+ item: _zod.z.object({}),
27
+ len: _zod.z.number().nonnegative()
28
+ });
29
+ var tupleConfigScheme = exports.tupleConfigScheme = _zod.z.object({
30
+ type: _zod.z.string().regex(/^tuple$/, {
31
+ message: "invalid type string"
32
+ }),
33
+ configItems: _zod.z.any().array()
34
+ });
35
+ var objConfigScheme = exports.objConfigScheme = _zod.z.object({
36
+ type: _zod.z.string().regex(/^obj$/, {
37
+ message: "invalid type string"
38
+ }),
39
+ content: _zod.z.object({})
40
+ });
41
+ var boundedSeriesScheme = exports.boundedSeriesScheme = _zod.z.object({
42
+ type: _zod.z.string().regex(/^bounded_series$/, {
43
+ message: "invalid type string"
44
+ }),
45
+ upperLimit: _zod.z.number().nonnegative(),
46
+ lowerLimit: _zod.z.number().nonnegative(),
47
+ createInitValue: _zod.z["function"]().args().returns(_zod.z.number()),
48
+ count: _zod.z.number().nonnegative()
49
+ }).refine(function (_ref) {
50
+ var upperLimit = _ref.upperLimit,
51
+ lowerLimit = _ref.lowerLimit;
52
+ return upperLimit >= lowerLimit;
53
+ }, {
54
+ message: "lowerLimit can not greater then upperLimit"
55
+ }).refine(function (_ref2) {
56
+ var createInitValue = _ref2.createInitValue;
57
+ return typeof createInitValue() === "number";
58
+ }, {
59
+ message: "createInitValue is not return number",
60
+ path: ["createInitValue"]
61
+ });
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createValueConfig = exports.createTupleConfig = exports.createSelectionConfig = exports.createObjectConfig = exports.createBoundedSeriesConfig = exports.createArrayConfig = void 0;
7
+ var _faker = require("@faker-js/faker");
8
+ var _config_scheme = require("./config_scheme.js");
9
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
10
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
11
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
12
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
13
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
14
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
15
+ /**
16
+ * value
17
+ * @param {function} generateFn - The function used to generate the value.
18
+ * @return {ValueConfig} The configuration object with the type "value" and the provided generate function.
19
+ */
20
+ var createValueConfig = exports.createValueConfig = function createValueConfig(generateFn) {
21
+ var config = {
22
+ type: "value",
23
+ generateFn: generateFn
24
+ };
25
+ _config_scheme.valueConfigScheme.parse(config);
26
+ return config;
27
+ };
28
+
29
+ /**
30
+ * selection
31
+ * @param {Array} items - The array of items to choose from.
32
+ * @return {SelectionConfig} The configuration object with the type "select" and the provided items.
33
+ */
34
+ var createSelectionConfig = exports.createSelectionConfig = function createSelectionConfig(items) {
35
+ var config = {
36
+ type: "select",
37
+ items: items
38
+ };
39
+ _config_scheme.selectionConfigScheme.parse(config);
40
+ return config;
41
+ };
42
+
43
+ /**
44
+ * object
45
+ * @param {object} content
46
+ * @return {ObjectConfig}
47
+ */
48
+ var createObjectConfig = exports.createObjectConfig = function createObjectConfig(content) {
49
+ var config = {
50
+ type: "obj",
51
+ content: content
52
+ };
53
+ _config_scheme.objConfigScheme.parse(config);
54
+ return config;
55
+ };
56
+
57
+ /**
58
+ * array
59
+ * @param {object} item
60
+ * @param {number} len
61
+ * @return {ArrayConfig}
62
+ */
63
+ var createArrayConfig = exports.createArrayConfig = function createArrayConfig(item, len) {
64
+ var config = {
65
+ type: "arr",
66
+ item: item,
67
+ len: len
68
+ };
69
+ _config_scheme.arrayConfigScheme.parse(config);
70
+ return config;
71
+ };
72
+
73
+ /**
74
+ * tuple
75
+ * @param {Array} configItems
76
+ * @return {TupleConfig}
77
+ */
78
+ var createTupleConfig = exports.createTupleConfig = function createTupleConfig(configItems) {
79
+ var config = {
80
+ type: "tuple",
81
+ configItems: configItems
82
+ };
83
+ _config_scheme.tupleConfigScheme.parse(config);
84
+ return config;
85
+ };
86
+
87
+ /**
88
+ * bounded series
89
+ * @param {{ upperLimit: number, lowerLimit: number, createInitValue: () => number, count: number }} config
90
+ * @return {BoundedSeriesConfig}
91
+ */
92
+ var createBoundedSeriesConfig = exports.createBoundedSeriesConfig = function createBoundedSeriesConfig(config) {
93
+ var newConfig = _objectSpread({
94
+ type: "bounded_series"
95
+ }, config);
96
+ _config_scheme.boundedSeriesScheme.parse(newConfig);
97
+ return newConfig;
98
+ };
@@ -0,0 +1,161 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createValueGenerator = exports.createTupleGenerator = exports.createSelectionGenerator = exports.createObjectGenerator = exports.createGeneratorByType = exports.createBoundedSeriesGenerator = exports.createArrayGenerator = void 0;
7
+ var _faker = require("@faker-js/faker");
8
+ var _config_scheme = require("./config_scheme.js");
9
+ function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
10
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
11
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
12
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
13
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
14
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
15
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
16
+ /**
17
+ * value
18
+ * @param {ValueConfig} config
19
+ * @return {function}
20
+ */
21
+ var createValueGenerator = exports.createValueGenerator = function createValueGenerator(config) {
22
+ _config_scheme.valueConfigScheme.parse(config);
23
+ return config.generateFn;
24
+ };
25
+
26
+ /**
27
+ * selection
28
+ * @param {SelectionConfig} config
29
+ * @return {function} The configuration object with the type "select" and the provided items.
30
+ */
31
+ var createSelectionGenerator = exports.createSelectionGenerator = function createSelectionGenerator(config) {
32
+ _config_scheme.selectionConfigScheme.parse(config);
33
+ var items = config.items;
34
+ return function () {
35
+ return items[_faker.faker.number["int"](items.length - 1)];
36
+ };
37
+ };
38
+
39
+ /**
40
+ * object
41
+ * @param {ObjectConfig} config
42
+ * @param {(() => ValueConfig)=} customTypeMatch
43
+ * @return {() => object}
44
+ */
45
+ var createObjectGenerator = exports.createObjectGenerator = function createObjectGenerator(config, customTypeMatch) {
46
+ _config_scheme.objConfigScheme.parse(config);
47
+ var keyWithFns = Object.entries(config.content).map(function (_ref) {
48
+ var _ref2 = _slicedToArray(_ref, 2),
49
+ key = _ref2[0],
50
+ subConfig = _ref2[1];
51
+ return [key, createGeneratorByType(subConfig, customTypeMatch)];
52
+ });
53
+ return function () {
54
+ var result = {};
55
+ var _iterator = _createForOfIteratorHelper(keyWithFns),
56
+ _step;
57
+ try {
58
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
59
+ var _step$value = _slicedToArray(_step.value, 2),
60
+ key = _step$value[0],
61
+ generateFn = _step$value[1];
62
+ result[key] = generateFn();
63
+ }
64
+ } catch (err) {
65
+ _iterator.e(err);
66
+ } finally {
67
+ _iterator.f();
68
+ }
69
+ return result;
70
+ };
71
+ };
72
+
73
+ /**
74
+ * array
75
+ * @param {ArrayConfig} config
76
+ * @param {(() => ValueConfig)=} customTypeMatch
77
+ * @return {() => Array}
78
+ */
79
+ var createArrayGenerator = exports.createArrayGenerator = function createArrayGenerator(config, customTypeMatch) {
80
+ _config_scheme.arrayConfigScheme.parse(config);
81
+ var itemGeneratorFn = createGeneratorByType(config.item, customTypeMatch);
82
+ return function () {
83
+ var _config$len;
84
+ return Array.from({
85
+ length: (_config$len = config.len) !== null && _config$len !== void 0 ? _config$len : 0
86
+ }, itemGeneratorFn);
87
+ };
88
+ };
89
+
90
+ /**
91
+ * tuple
92
+ * @param {TupleConfig} config
93
+ * @param {(() => ValueConfig)=} customTypeMatch
94
+ * @return {() => Array}
95
+ */
96
+ var createTupleGenerator = exports.createTupleGenerator = function createTupleGenerator(config, customTypeMatch) {
97
+ _config_scheme.tupleConfigScheme.parse(config);
98
+ var itemsFns = config.configItems.map(function (configItem) {
99
+ return createGeneratorByType(configItem, customTypeMatch);
100
+ });
101
+ return function () {
102
+ return itemsFns.map(function (generateFn) {
103
+ return generateFn();
104
+ });
105
+ };
106
+ };
107
+
108
+ /**
109
+ * bounded series
110
+ * @param {BoundedSeriesConfig} config
111
+ * @return {() => Array<number>}
112
+ */
113
+ var createBoundedSeriesGenerator = exports.createBoundedSeriesGenerator = function createBoundedSeriesGenerator(config) {
114
+ _config_scheme.boundedSeriesScheme.parse(config);
115
+ var upperLimit = config.upperLimit,
116
+ lowerLimit = config.lowerLimit,
117
+ createInitValue = config.createInitValue,
118
+ count = config.count;
119
+ return function () {
120
+ var value = createInitValue();
121
+ var boundedSeries = [];
122
+ for (var i = 0; i < count; i++) {
123
+ value = _faker.faker.number["float"]({
124
+ max: upperLimit,
125
+ min: lowerLimit
126
+ }) * value;
127
+ boundedSeries.push(value);
128
+ }
129
+ return boundedSeries;
130
+ };
131
+ };
132
+
133
+ /**
134
+ *
135
+ * @param {ValueConfig | SelectionConfig | ArrayConfig | ObjectConfig | TupleConfig | BoundedSeriesConfig} config
136
+ * @param {(() => ValueConfig)=} customTypeMatch
137
+ * @return {function}
138
+ */
139
+ var createGeneratorByType = exports.createGeneratorByType = function createGeneratorByType(config, customTypeMatch) {
140
+ switch (config.type) {
141
+ case "obj":
142
+ return createObjectGenerator(config, customTypeMatch);
143
+ case "arr":
144
+ return createArrayGenerator(config, customTypeMatch);
145
+ case "select":
146
+ return createSelectionGenerator(config);
147
+ case "tuple":
148
+ return createTupleGenerator(config, customTypeMatch);
149
+ case "value":
150
+ return createValueGenerator(config);
151
+ case "bounded_series":
152
+ return createBoundedSeriesGenerator(config);
153
+ default:
154
+ {
155
+ if (customTypeMatch) {
156
+ return createValueGenerator(customTypeMatch(config));
157
+ }
158
+ throw Error("config type \"".concat(config.type, "\" is not supported"));
159
+ }
160
+ }
161
+ };
package/cjs/index.js ADDED
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _create_config = require("./create_config");
7
+ Object.keys(_create_config).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _create_config[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function get() {
13
+ return _create_config[key];
14
+ }
15
+ });
16
+ });
17
+ var _create_generator_fn = require("./create_generator_fn");
18
+ Object.keys(_create_generator_fn).forEach(function (key) {
19
+ if (key === "default" || key === "__esModule") return;
20
+ if (key in exports && exports[key] === _create_generator_fn[key]) return;
21
+ Object.defineProperty(exports, key, {
22
+ enumerable: true,
23
+ get: function get() {
24
+ return _create_generator_fn[key];
25
+ }
26
+ });
27
+ });
package/cjs/type.js ADDED
@@ -0,0 +1,24 @@
1
+ /**
2
+ * @typedef {{ type: 'value', generateFn: Function}} ValueConfig
3
+ */
4
+
5
+ /**
6
+ * @typedef {{ type: 'select', items: Array }} SelectionConfig
7
+ */
8
+
9
+ /**
10
+ * @typedef {{ type: 'arr', item: Object, len: number }} ArrayConfig
11
+ */
12
+
13
+ /**
14
+ * @typedef {{ type: 'tuple', configItems: Array }} TupleConfig
15
+ */
16
+
17
+ /**
18
+ * @typedef {{ type: 'obj', content: Object }} ObjectConfig
19
+ */
20
+
21
+ /**
22
+ * @typedef {{ type: 'bounded_series', upperLimit: number, lowerLimit: number, createInitValue: function, count: number }} BoundedSeriesConfig
23
+ */
24
+ "use strict";
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.valueConfigScheme = exports.tupleConfigScheme = exports.selectionConfigScheme = exports.objConfigScheme = exports.boundedSeriesScheme = exports.arrayConfigScheme = void 0;
7
+ var _zod = require("zod");
8
+ var valueConfigScheme = exports.valueConfigScheme = _zod.z.object({
9
+ type: _zod.z.string().regex(/^value$/, {
10
+ message: "invalid type string"
11
+ }),
12
+ generateFn: _zod.z["function"]()
13
+ });
14
+ var selectionConfigScheme = exports.selectionConfigScheme = _zod.z.object({
15
+ type: _zod.z.string().regex(/^select$/, {
16
+ message: "invalid type string"
17
+ }),
18
+ items: _zod.z.any().array().nonempty({
19
+ message: "items can not be empty"
20
+ })
21
+ });
22
+ var arrayConfigScheme = exports.arrayConfigScheme = _zod.z.object({
23
+ type: _zod.z.string().regex(/^arr$/, {
24
+ message: "invalid type string"
25
+ }),
26
+ item: _zod.z.object({}),
27
+ len: _zod.z.number().nonnegative()
28
+ });
29
+ var tupleConfigScheme = exports.tupleConfigScheme = _zod.z.object({
30
+ type: _zod.z.string().regex(/^tuple$/, {
31
+ message: "invalid type string"
32
+ }),
33
+ configItems: _zod.z.any().array()
34
+ });
35
+ var objConfigScheme = exports.objConfigScheme = _zod.z.object({
36
+ type: _zod.z.string().regex(/^obj$/, {
37
+ message: "invalid type string"
38
+ }),
39
+ content: _zod.z.object({})
40
+ });
41
+ var boundedSeriesScheme = exports.boundedSeriesScheme = _zod.z.object({
42
+ type: _zod.z.string().regex(/^bounded_series$/, {
43
+ message: "invalid type string"
44
+ }),
45
+ upperLimit: _zod.z.number().nonnegative(),
46
+ lowerLimit: _zod.z.number().nonnegative(),
47
+ createInitValue: _zod.z["function"]().args().returns(_zod.z.number()),
48
+ count: _zod.z.number().nonnegative()
49
+ }).refine(function (_ref) {
50
+ var upperLimit = _ref.upperLimit,
51
+ lowerLimit = _ref.lowerLimit;
52
+ return upperLimit >= lowerLimit;
53
+ }, {
54
+ message: "lowerLimit can not greater then upperLimit"
55
+ }).refine(function (_ref2) {
56
+ var createInitValue = _ref2.createInitValue;
57
+ return typeof createInitValue() === "number";
58
+ }, {
59
+ message: "createInitValue is not return number",
60
+ path: ["createInitValue"]
61
+ });
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createValueConfig = exports.createTupleConfig = exports.createSelectionConfig = exports.createObjectConfig = exports.createBoundedSeriesConfig = exports.createArrayConfig = void 0;
7
+ var _faker = require("@faker-js/faker");
8
+ var _config_scheme = require("./config_scheme.js");
9
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
10
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
11
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
12
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
13
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
14
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
15
+ /**
16
+ * value
17
+ * @param {function} generateFn - The function used to generate the value.
18
+ * @return {ValueConfig} The configuration object with the type "value" and the provided generate function.
19
+ */
20
+ var createValueConfig = exports.createValueConfig = function createValueConfig(generateFn) {
21
+ var config = {
22
+ type: "value",
23
+ generateFn: generateFn
24
+ };
25
+ _config_scheme.valueConfigScheme.parse(config);
26
+ return config;
27
+ };
28
+
29
+ /**
30
+ * selection
31
+ * @param {Array} items - The array of items to choose from.
32
+ * @return {SelectionConfig} The configuration object with the type "select" and the provided items.
33
+ */
34
+ var createSelectionConfig = exports.createSelectionConfig = function createSelectionConfig(items) {
35
+ var config = {
36
+ type: "select",
37
+ items: items
38
+ };
39
+ _config_scheme.selectionConfigScheme.parse(config);
40
+ return config;
41
+ };
42
+
43
+ /**
44
+ * object
45
+ * @param {object} content
46
+ * @return {ObjectConfig}
47
+ */
48
+ var createObjectConfig = exports.createObjectConfig = function createObjectConfig(content) {
49
+ var config = {
50
+ type: "obj",
51
+ content: content
52
+ };
53
+ _config_scheme.objConfigScheme.parse(config);
54
+ return config;
55
+ };
56
+
57
+ /**
58
+ * array
59
+ * @param {object} item
60
+ * @param {number} len
61
+ * @return {ArrayConfig}
62
+ */
63
+ var createArrayConfig = exports.createArrayConfig = function createArrayConfig(item, len) {
64
+ var config = {
65
+ type: "arr",
66
+ item: item,
67
+ len: len
68
+ };
69
+ _config_scheme.arrayConfigScheme.parse(config);
70
+ return config;
71
+ };
72
+
73
+ /**
74
+ * tuple
75
+ * @param {Array} configItems
76
+ * @return {TupleConfig}
77
+ */
78
+ var createTupleConfig = exports.createTupleConfig = function createTupleConfig(configItems) {
79
+ var config = {
80
+ type: "tuple",
81
+ configItems: configItems
82
+ };
83
+ _config_scheme.tupleConfigScheme.parse(config);
84
+ return config;
85
+ };
86
+
87
+ /**
88
+ * bounded series
89
+ * @param {{ upperLimit: number, lowerLimit: number, createInitValue: () => number, count: number }} config
90
+ * @return {BoundedSeriesConfig}
91
+ */
92
+ var createBoundedSeriesConfig = exports.createBoundedSeriesConfig = function createBoundedSeriesConfig(config) {
93
+ var newConfig = _objectSpread({
94
+ type: "bounded_series"
95
+ }, config);
96
+ _config_scheme.boundedSeriesScheme.parse(newConfig);
97
+ return newConfig;
98
+ };
@@ -0,0 +1,161 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createValueGenerator = exports.createTupleGenerator = exports.createSelectionGenerator = exports.createObjectGenerator = exports.createGeneratorByType = exports.createBoundedSeriesGenerator = exports.createArrayGenerator = void 0;
7
+ var _faker = require("@faker-js/faker");
8
+ var _config_scheme = require("./config_scheme.js");
9
+ function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
10
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
11
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
12
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
13
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
14
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
15
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
16
+ /**
17
+ * value
18
+ * @param {ValueConfig} config
19
+ * @return {function}
20
+ */
21
+ var createValueGenerator = exports.createValueGenerator = function createValueGenerator(config) {
22
+ _config_scheme.valueConfigScheme.parse(config);
23
+ return config.generateFn;
24
+ };
25
+
26
+ /**
27
+ * selection
28
+ * @param {SelectionConfig} config
29
+ * @return {function} The configuration object with the type "select" and the provided items.
30
+ */
31
+ var createSelectionGenerator = exports.createSelectionGenerator = function createSelectionGenerator(config) {
32
+ _config_scheme.selectionConfigScheme.parse(config);
33
+ var items = config.items;
34
+ return function () {
35
+ return items[_faker.faker.number["int"](items.length - 1)];
36
+ };
37
+ };
38
+
39
+ /**
40
+ * object
41
+ * @param {ObjectConfig} config
42
+ * @param {(() => ValueConfig)=} customTypeMatch
43
+ * @return {() => object}
44
+ */
45
+ var createObjectGenerator = exports.createObjectGenerator = function createObjectGenerator(config, customTypeMatch) {
46
+ _config_scheme.objConfigScheme.parse(config);
47
+ var keyWithFns = Object.entries(config.content).map(function (_ref) {
48
+ var _ref2 = _slicedToArray(_ref, 2),
49
+ key = _ref2[0],
50
+ subConfig = _ref2[1];
51
+ return [key, createGeneratorByType(subConfig, customTypeMatch)];
52
+ });
53
+ return function () {
54
+ var result = {};
55
+ var _iterator = _createForOfIteratorHelper(keyWithFns),
56
+ _step;
57
+ try {
58
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
59
+ var _step$value = _slicedToArray(_step.value, 2),
60
+ key = _step$value[0],
61
+ generateFn = _step$value[1];
62
+ result[key] = generateFn();
63
+ }
64
+ } catch (err) {
65
+ _iterator.e(err);
66
+ } finally {
67
+ _iterator.f();
68
+ }
69
+ return result;
70
+ };
71
+ };
72
+
73
+ /**
74
+ * array
75
+ * @param {ArrayConfig} config
76
+ * @param {(() => ValueConfig)=} customTypeMatch
77
+ * @return {() => Array}
78
+ */
79
+ var createArrayGenerator = exports.createArrayGenerator = function createArrayGenerator(config, customTypeMatch) {
80
+ _config_scheme.arrayConfigScheme.parse(config);
81
+ var itemGeneratorFn = createGeneratorByType(config.item, customTypeMatch);
82
+ return function () {
83
+ var _config$len;
84
+ return Array.from({
85
+ length: (_config$len = config.len) !== null && _config$len !== void 0 ? _config$len : 0
86
+ }, itemGeneratorFn);
87
+ };
88
+ };
89
+
90
+ /**
91
+ * tuple
92
+ * @param {TupleConfig} config
93
+ * @param {(() => ValueConfig)=} customTypeMatch
94
+ * @return {() => Array}
95
+ */
96
+ var createTupleGenerator = exports.createTupleGenerator = function createTupleGenerator(config, customTypeMatch) {
97
+ _config_scheme.tupleConfigScheme.parse(config);
98
+ var itemsFns = config.configItems.map(function (configItem) {
99
+ return createGeneratorByType(configItem, customTypeMatch);
100
+ });
101
+ return function () {
102
+ return itemsFns.map(function (generateFn) {
103
+ return generateFn();
104
+ });
105
+ };
106
+ };
107
+
108
+ /**
109
+ * bounded series
110
+ * @param {BoundedSeriesConfig} config
111
+ * @return {() => Array<number>}
112
+ */
113
+ var createBoundedSeriesGenerator = exports.createBoundedSeriesGenerator = function createBoundedSeriesGenerator(config) {
114
+ _config_scheme.boundedSeriesScheme.parse(config);
115
+ var upperLimit = config.upperLimit,
116
+ lowerLimit = config.lowerLimit,
117
+ createInitValue = config.createInitValue,
118
+ count = config.count;
119
+ return function () {
120
+ var value = createInitValue();
121
+ var boundedSeries = [];
122
+ for (var i = 0; i < count; i++) {
123
+ value = _faker.faker.number["float"]({
124
+ max: upperLimit,
125
+ min: lowerLimit
126
+ }) * value;
127
+ boundedSeries.push(value);
128
+ }
129
+ return boundedSeries;
130
+ };
131
+ };
132
+
133
+ /**
134
+ *
135
+ * @param {ValueConfig | SelectionConfig | ArrayConfig | ObjectConfig | TupleConfig | BoundedSeriesConfig} config
136
+ * @param {(() => ValueConfig)=} customTypeMatch
137
+ * @return {function}
138
+ */
139
+ var createGeneratorByType = exports.createGeneratorByType = function createGeneratorByType(config, customTypeMatch) {
140
+ switch (config.type) {
141
+ case "obj":
142
+ return createObjectGenerator(config, customTypeMatch);
143
+ case "arr":
144
+ return createArrayGenerator(config, customTypeMatch);
145
+ case "select":
146
+ return createSelectionGenerator(config);
147
+ case "tuple":
148
+ return createTupleGenerator(config, customTypeMatch);
149
+ case "value":
150
+ return createValueGenerator(config);
151
+ case "bounded_series":
152
+ return createBoundedSeriesGenerator(config);
153
+ default:
154
+ {
155
+ if (customTypeMatch) {
156
+ return createValueGenerator(customTypeMatch(config));
157
+ }
158
+ throw Error("config type \"".concat(config.type, "\" is not supported"));
159
+ }
160
+ }
161
+ };
package/esm/index.js ADDED
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _create_config = require("./create_config");
7
+ Object.keys(_create_config).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _create_config[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function get() {
13
+ return _create_config[key];
14
+ }
15
+ });
16
+ });
17
+ var _create_generator_fn = require("./create_generator_fn");
18
+ Object.keys(_create_generator_fn).forEach(function (key) {
19
+ if (key === "default" || key === "__esModule") return;
20
+ if (key in exports && exports[key] === _create_generator_fn[key]) return;
21
+ Object.defineProperty(exports, key, {
22
+ enumerable: true,
23
+ get: function get() {
24
+ return _create_generator_fn[key];
25
+ }
26
+ });
27
+ });
package/esm/type.js ADDED
@@ -0,0 +1,24 @@
1
+ /**
2
+ * @typedef {{ type: 'value', generateFn: Function}} ValueConfig
3
+ */
4
+
5
+ /**
6
+ * @typedef {{ type: 'select', items: Array }} SelectionConfig
7
+ */
8
+
9
+ /**
10
+ * @typedef {{ type: 'arr', item: Object, len: number }} ArrayConfig
11
+ */
12
+
13
+ /**
14
+ * @typedef {{ type: 'tuple', configItems: Array }} TupleConfig
15
+ */
16
+
17
+ /**
18
+ * @typedef {{ type: 'obj', content: Object }} ObjectConfig
19
+ */
20
+
21
+ /**
22
+ * @typedef {{ type: 'bounded_series', upperLimit: number, lowerLimit: number, createInitValue: function, count: number }} BoundedSeriesConfig
23
+ */
24
+ "use strict";
package/package.json CHANGED
@@ -1,18 +1,25 @@
1
1
  {
2
2
  "name": "struct-fakerator",
3
- "version": "1.1.2",
3
+ "version": "1.2.2",
4
4
  "description": "",
5
- "main": "index.js",
5
+ "main": "cjs/index.js",
6
+ "module": "esm/index.mjs",
6
7
  "type": "module",
7
8
  "scripts": {
8
9
  "start": "node src/index.js",
9
10
  "dev": "node",
11
+ "build:cjs": "babel src --out-dir cjs --presets=@babel/preset-env",
12
+ "build:esm": "babel src --out-dir esm --presets=@babel/preset-env --plugins=@babel/plugin-transform-modules-commonjs",
13
+ "build": "pnpm build:cjs && pnpm build:esm",
10
14
  "test": "vitest"
11
15
  },
12
16
  "keywords": [],
13
17
  "author": "FizzyElt",
14
18
  "license": "ISC",
15
19
  "devDependencies": {
20
+ "@babel/cli": "^7.24.6",
21
+ "@babel/core": "^7.24.6",
22
+ "@babel/preset-env": "^7.24.6",
16
23
  "@biomejs/biome": "^1.7.1",
17
24
  "@faker-js/faker": "^8.4.1",
18
25
  "vitest": "^1.5.2"
package/src/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export * from "./create_config";
2
+ export * from "./create_generator_fn";
package/index.js DELETED
@@ -1,2 +0,0 @@
1
- export * from "./src/create_config";
2
- export * from "./src/create_generator_fn";