struct-fakerator 2.6.9 → 2.8.9

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 (300) hide show
  1. package/README.md +148 -93
  2. package/biome.json +30 -26
  3. package/dist/config.d.ts +1 -2
  4. package/dist/config.js +51 -19
  5. package/dist/config.mjs +2 -19
  6. package/dist/config_scheme.d.ts +7 -10
  7. package/dist/config_scheme.js +95 -17
  8. package/dist/config_scheme.mjs +46 -17
  9. package/dist/create_config.d.ts +9 -11
  10. package/dist/create_config.js +110 -18
  11. package/dist/create_config.mjs +60 -17
  12. package/dist/create_config.test.d.ts +1 -2
  13. package/dist/create_generator_fn.d.ts +9 -11
  14. package/dist/create_generator_fn.js +168 -21
  15. package/dist/create_generator_fn.mjs +115 -20
  16. package/dist/create_generator_fn.test.d.ts +1 -2
  17. package/dist/generator_fn.d.ts +1 -2
  18. package/dist/generator_fn.js +54 -22
  19. package/dist/generator_fn.mjs +2 -22
  20. package/dist/index.d.ts +5 -5
  21. package/dist/index.js +107 -44
  22. package/dist/index.mjs +6 -44
  23. package/dist/type.d.ts +10 -12
  24. package/dist/type.js +18 -1
  25. package/dist/type.mjs +0 -1
  26. package/dist/utils/airline.d.ts +14 -3
  27. package/dist/utils/airline.js +46 -15
  28. package/dist/utils/airline.mjs +6 -15
  29. package/dist/utils/animal.d.ts +30 -2
  30. package/dist/utils/animal.js +94 -39
  31. package/dist/utils/animal.mjs +18 -39
  32. package/dist/utils/color.d.ts +41 -3
  33. package/dist/utils/color.js +78 -31
  34. package/dist/utils/color.mjs +14 -31
  35. package/dist/utils/commerce.d.ts +24 -2
  36. package/dist/utils/commerce.js +66 -25
  37. package/dist/utils/commerce.mjs +11 -25
  38. package/dist/utils/common.d.ts +2 -2
  39. package/dist/utils/common.js +37 -9
  40. package/dist/utils/common.mjs +3 -9
  41. package/dist/utils/company.d.ts +18 -2
  42. package/dist/utils/company.js +70 -27
  43. package/dist/utils/company.mjs +12 -27
  44. package/dist/utils/database.d.ts +10 -2
  45. package/dist/utils/database.js +54 -19
  46. package/dist/utils/database.mjs +8 -19
  47. package/dist/utils/datatype.d.ts +4 -2
  48. package/dist/utils/datatype.js +38 -11
  49. package/dist/utils/datatype.mjs +4 -11
  50. package/dist/utils/datetime.d.ts +59 -2
  51. package/dist/utils/datetime.js +78 -31
  52. package/dist/utils/datetime.mjs +14 -31
  53. package/dist/utils/finance.d.ts +62 -3
  54. package/dist/utils/finance.js +110 -47
  55. package/dist/utils/finance.mjs +22 -47
  56. package/dist/utils/food.d.ts +18 -2
  57. package/dist/utils/food.js +70 -27
  58. package/dist/utils/food.mjs +12 -27
  59. package/dist/utils/git.d.ts +18 -2
  60. package/dist/utils/git.js +54 -19
  61. package/dist/utils/git.mjs +8 -19
  62. package/dist/utils/hacker.d.ts +12 -2
  63. package/dist/utils/hacker.js +58 -21
  64. package/dist/utils/hacker.mjs +9 -21
  65. package/dist/utils/image.d.ts +40 -2
  66. package/dist/utils/image.js +66 -25
  67. package/dist/utils/image.mjs +11 -25
  68. package/dist/utils/index.d.ts +26 -28
  69. package/dist/utils/index.js +136 -110
  70. package/dist/utils/index.mjs +27 -110
  71. package/dist/utils/internet.d.ts +77 -3
  72. package/dist/utils/internet.js +114 -49
  73. package/dist/utils/internet.mjs +23 -49
  74. package/dist/utils/location.d.ts +56 -2
  75. package/dist/utils/location.js +98 -41
  76. package/dist/utils/location.mjs +19 -41
  77. package/dist/utils/lorem.d.ts +45 -2
  78. package/dist/utils/lorem.js +70 -27
  79. package/dist/utils/lorem.mjs +12 -27
  80. package/dist/utils/music.d.ts +8 -2
  81. package/dist/utils/music.js +50 -17
  82. package/dist/utils/music.mjs +7 -17
  83. package/dist/utils/number.d.ts +34 -2
  84. package/dist/utils/number.js +58 -21
  85. package/dist/utils/number.mjs +9 -21
  86. package/dist/utils/person.d.ts +34 -3
  87. package/dist/utils/person.js +94 -39
  88. package/dist/utils/person.mjs +18 -39
  89. package/dist/utils/phone.d.ts +6 -2
  90. package/dist/utils/phone.js +42 -13
  91. package/dist/utils/phone.mjs +5 -13
  92. package/dist/utils/science.d.ts +4 -3
  93. package/dist/utils/science.js +42 -13
  94. package/dist/utils/science.mjs +5 -13
  95. package/dist/utils/string.d.ts +69 -2
  96. package/dist/utils/string.js +74 -29
  97. package/dist/utils/string.mjs +13 -29
  98. package/dist/utils/system.d.ts +35 -2
  99. package/dist/utils/system.js +82 -33
  100. package/dist/utils/system.mjs +15 -33
  101. package/dist/utils/utils.d.ts +2 -2
  102. package/dist/utils/utils.js +39 -9
  103. package/dist/utils/utils.mjs +5 -9
  104. package/dist/utils/vehicle.d.ts +18 -2
  105. package/dist/utils/vehicle.js +70 -27
  106. package/dist/utils/vehicle.mjs +12 -27
  107. package/dist/utils/word.d.ts +18 -22
  108. package/dist/utils/word.js +70 -31
  109. package/dist/utils/word.mjs +12 -31
  110. package/package.json +10 -31
  111. package/pnpm-workspace.yaml +2 -0
  112. package/rslib.config.ts +26 -0
  113. package/src/config.ts +3 -3
  114. package/src/config_scheme.ts +1 -1
  115. package/src/create_config.test.ts +0 -1
  116. package/src/create_config.ts +1 -1
  117. package/src/create_generator_fn.test.ts +13 -2
  118. package/src/create_generator_fn.ts +5 -5
  119. package/src/generator_fn.ts +1 -1
  120. package/src/index.ts +2 -2
  121. package/src/type.ts +1 -1
  122. package/src/utils/index.ts +1 -2
  123. package/src/utils/internet.ts +1 -1
  124. package/src/utils/utils.ts +1 -1
  125. package/tsconfig.json +2 -1
  126. package/dist/airline-98MCzMN8.d.ts +0 -26
  127. package/dist/airline-CuAxOEYH.d.mts +0 -26
  128. package/dist/animal-BohQ7s0w.d.mts +0 -53
  129. package/dist/animal-o8BFF7gd.d.ts +0 -53
  130. package/dist/chunk-23I6D5SJ.js +0 -57
  131. package/dist/chunk-3KXIZTCT.mjs +0 -20
  132. package/dist/chunk-3U6BNHWG.mjs +0 -2040
  133. package/dist/chunk-4DDCMYY5.mjs +0 -57
  134. package/dist/chunk-4VNS5WPM.js +0 -42
  135. package/dist/chunk-5KF6D2RT.js +0 -63
  136. package/dist/chunk-5O3L5474.mjs +0 -45
  137. package/dist/chunk-5PCDQHI5.mjs +0 -21
  138. package/dist/chunk-62INTWCD.mjs +0 -36
  139. package/dist/chunk-6HRHPVPM.js +0 -35
  140. package/dist/chunk-6UFUX7X4.js +0 -51
  141. package/dist/chunk-6ZK2LMFM.js +0 -21
  142. package/dist/chunk-7BIWHK77.js +0 -42
  143. package/dist/chunk-7UQSPUCL.mjs +0 -0
  144. package/dist/chunk-7VOPOQZO.js +0 -45
  145. package/dist/chunk-C3RGM3CB.js +0 -67
  146. package/dist/chunk-DGW666Q6.mjs +0 -48
  147. package/dist/chunk-DM5VFX6B.js +0 -17008
  148. package/dist/chunk-DTC7Q7P5.js +0 -45
  149. package/dist/chunk-EM67LVYX.mjs +0 -18
  150. package/dist/chunk-EMCK2BLM.js +0 -45
  151. package/dist/chunk-ES2CYGB7.js +0 -24
  152. package/dist/chunk-ET6EJB33.js +0 -36
  153. package/dist/chunk-EYOBG3PQ.mjs +0 -45
  154. package/dist/chunk-F4GVSNLH.js +0 -30
  155. package/dist/chunk-G43WDHZO.mjs +0 -63
  156. package/dist/chunk-GJSTX6ZS.mjs +0 -24
  157. package/dist/chunk-GYF6YSNX.js +0 -74
  158. package/dist/chunk-HBJP434N.mjs +0 -78
  159. package/dist/chunk-IAR3DUKD.js +0 -49
  160. package/dist/chunk-IL4E3ZNB.js +0 -78
  161. package/dist/chunk-IOXGSFEU.js +0 -20
  162. package/dist/chunk-JB6NCVX3.mjs +0 -63
  163. package/dist/chunk-JGY3KVDU.mjs +0 -45
  164. package/dist/chunk-JWCDEYMY.js +0 -48
  165. package/dist/chunk-LSFOERXQ.js +0 -18
  166. package/dist/chunk-MGR2M7BS.mjs +0 -56
  167. package/dist/chunk-MLJAHDYX.mjs +0 -167
  168. package/dist/chunk-MROZIQOV.mjs +0 -51
  169. package/dist/chunk-NHYNERHW.js +0 -56
  170. package/dist/chunk-PGSJJESY.js +0 -27
  171. package/dist/chunk-QTVSUA5W.mjs +0 -24
  172. package/dist/chunk-QZQ32UPU.mjs +0 -28
  173. package/dist/chunk-R2MQ3IW5.mjs +0 -33
  174. package/dist/chunk-RD2SB2KT.js +0 -36
  175. package/dist/chunk-RDZI4CMI.mjs +0 -42
  176. package/dist/chunk-RTYV5XDU.mjs +0 -36
  177. package/dist/chunk-RZPUHXXO.mjs +0 -49
  178. package/dist/chunk-SD3HVRQN.mjs +0 -48
  179. package/dist/chunk-SN4QTD6R.js +0 -1
  180. package/dist/chunk-TA725QXR.mjs +0 -35
  181. package/dist/chunk-TXAOQHVV.mjs +0 -27
  182. package/dist/chunk-TZ2RKEBF.js +0 -2040
  183. package/dist/chunk-U7MLTDS4.js +0 -167
  184. package/dist/chunk-UIYW7U2O.js +0 -28
  185. package/dist/chunk-UP2JIDGZ.js +0 -81
  186. package/dist/chunk-USLYTOPD.mjs +0 -41
  187. package/dist/chunk-V2AWKRQI.js +0 -26
  188. package/dist/chunk-VE3Q5LC3.mjs +0 -26
  189. package/dist/chunk-VG6JYCUC.mjs +0 -74
  190. package/dist/chunk-VMSMHNPY.js +0 -48
  191. package/dist/chunk-VSZRD7CB.js +0 -33
  192. package/dist/chunk-VX2IFBCP.mjs +0 -17008
  193. package/dist/chunk-WLKNXHFN.mjs +0 -30
  194. package/dist/chunk-XGB3TDIC.mjs +0 -42
  195. package/dist/chunk-YXGKUR3R.js +0 -63
  196. package/dist/chunk-Z5BNMPTX.mjs +0 -81
  197. package/dist/chunk-ZQA42PYM.mjs +0 -67
  198. package/dist/chunk-ZSR4TJQG.js +0 -24
  199. package/dist/chunk-ZWLHVT5O.js +0 -41
  200. package/dist/color-BT6BF8oV.d.mts +0 -61
  201. package/dist/color-lBH29suB.d.ts +0 -61
  202. package/dist/commerce-BqVjXEhQ.d.mts +0 -40
  203. package/dist/commerce-mdOpchjx.d.ts +0 -40
  204. package/dist/common-IR_KozaJ.d.mts +0 -11
  205. package/dist/common-t-ZQebCq.d.ts +0 -11
  206. package/dist/company-C3EU1J7k.d.ts +0 -35
  207. package/dist/company-cR_0hm6U.d.mts +0 -35
  208. package/dist/config-BTjogu5M.d.ts +0 -7
  209. package/dist/config-C1N2Brw-.d.mts +0 -7
  210. package/dist/config.d.mts +0 -2
  211. package/dist/config_scheme.d.mts +0 -32
  212. package/dist/create_config.d.mts +0 -58
  213. package/dist/create_config.test.d.mts +0 -2
  214. package/dist/create_config.test.js +0 -63
  215. package/dist/create_config.test.mjs +0 -63
  216. package/dist/create_generator_fn.d.mts +0 -12
  217. package/dist/create_generator_fn.test.d.mts +0 -2
  218. package/dist/create_generator_fn.test.js +0 -191
  219. package/dist/create_generator_fn.test.mjs +0 -191
  220. package/dist/database-DV9wgnca.d.ts +0 -23
  221. package/dist/database-UzO1Lwec.d.mts +0 -23
  222. package/dist/datatype-C92TZLxo.d.ts +0 -13
  223. package/dist/datatype-DZjmP0fA.d.mts +0 -13
  224. package/dist/datetime-CSUpnUXU.d.ts +0 -78
  225. package/dist/datetime-dnPA_lnt.d.mts +0 -78
  226. package/dist/finance-CstKW1nH.d.mts +0 -90
  227. package/dist/finance-gj0fiEmf.d.ts +0 -90
  228. package/dist/food-CInj1GX2.d.ts +0 -35
  229. package/dist/food-Dk3-40CY.d.mts +0 -35
  230. package/dist/generator_fn-CJDbnCZl.d.mts +0 -7
  231. package/dist/generator_fn-D-npAfnC.d.ts +0 -7
  232. package/dist/generator_fn.d.mts +0 -2
  233. package/dist/git-BHL1ppL4.d.ts +0 -31
  234. package/dist/git-w0nznSjX.d.mts +0 -31
  235. package/dist/hacker-DL7pR6JO.d.ts +0 -26
  236. package/dist/hacker-FcQXZGtz.d.mts +0 -26
  237. package/dist/image-B5OPCNhD.d.mts +0 -56
  238. package/dist/image-IyGCgqNf.d.ts +0 -56
  239. package/dist/index.d.mts +0 -5
  240. package/dist/internet-BukCBMX-.d.ts +0 -106
  241. package/dist/internet-C2ElurWb.d.mts +0 -106
  242. package/dist/location-BIZ-KsaI.d.ts +0 -80
  243. package/dist/location-WU_nRdjx.d.mts +0 -80
  244. package/dist/lorem-OlHaVntu.d.mts +0 -62
  245. package/dist/lorem-yMyLb-d-.d.ts +0 -62
  246. package/dist/magic-string.es-2DLPM6Q3.js +0 -1299
  247. package/dist/magic-string.es-NHTKQXSF.mjs +0 -1299
  248. package/dist/music-P8XZ4JSO.d.ts +0 -20
  249. package/dist/music-vcWm9dzu.d.mts +0 -20
  250. package/dist/number-BfwwKvTJ.d.mts +0 -48
  251. package/dist/number-D5QmTRsK.d.ts +0 -48
  252. package/dist/person-DXne2mKX.d.ts +0 -58
  253. package/dist/person-Si_vy67g.d.mts +0 -58
  254. package/dist/phone-Cbxvm_Qv.d.ts +0 -16
  255. package/dist/phone-g4FDs50M.d.mts +0 -16
  256. package/dist/science-BX8WhoEY.d.ts +0 -15
  257. package/dist/science-BfA9sVXz.d.mts +0 -15
  258. package/dist/string-DGScZrrP.d.mts +0 -87
  259. package/dist/string-Do4vhsl0.d.ts +0 -87
  260. package/dist/system-BpxbduIr.d.ts +0 -55
  261. package/dist/system-Cy0e05Cr.d.mts +0 -55
  262. package/dist/test.d.mts +0 -2
  263. package/dist/test.d.ts +0 -2
  264. package/dist/test.js +0 -15
  265. package/dist/test.mjs +0 -15
  266. package/dist/type.d.mts +0 -93
  267. package/dist/utils/airline.d.mts +0 -3
  268. package/dist/utils/animal.d.mts +0 -2
  269. package/dist/utils/color.d.mts +0 -3
  270. package/dist/utils/commerce.d.mts +0 -2
  271. package/dist/utils/common.d.mts +0 -2
  272. package/dist/utils/company.d.mts +0 -2
  273. package/dist/utils/database.d.mts +0 -2
  274. package/dist/utils/datatype.d.mts +0 -2
  275. package/dist/utils/datetime.d.mts +0 -2
  276. package/dist/utils/finance.d.mts +0 -3
  277. package/dist/utils/food.d.mts +0 -2
  278. package/dist/utils/git.d.mts +0 -2
  279. package/dist/utils/hacker.d.mts +0 -2
  280. package/dist/utils/image.d.mts +0 -2
  281. package/dist/utils/index.d.mts +0 -28
  282. package/dist/utils/internet.d.mts +0 -3
  283. package/dist/utils/location.d.mts +0 -2
  284. package/dist/utils/lorem.d.mts +0 -2
  285. package/dist/utils/music.d.mts +0 -2
  286. package/dist/utils/number.d.mts +0 -2
  287. package/dist/utils/person.d.mts +0 -3
  288. package/dist/utils/phone.d.mts +0 -2
  289. package/dist/utils/science.d.mts +0 -3
  290. package/dist/utils/string.d.mts +0 -2
  291. package/dist/utils/system.d.mts +0 -2
  292. package/dist/utils/utils.d.mts +0 -2
  293. package/dist/utils/vehicle.d.mts +0 -2
  294. package/dist/utils/word.d.mts +0 -75
  295. package/dist/utils-BImnOpvp.d.ts +0 -10
  296. package/dist/utils-zJKwaMUY.d.mts +0 -10
  297. package/dist/vehicle-D4yBDYMc.d.mts +0 -35
  298. package/dist/vehicle-Ufz4AoXu.d.ts +0 -35
  299. package/src/test.ts +0 -10
  300. package/tsup.config.ts +0 -8
package/README.md CHANGED
@@ -3,12 +3,12 @@
3
3
  - [假資料結構產生器](#假資料結構產生器)
4
4
  - [Wrapping fakerjs Functions](#wrapping-fakerjs-functions)
5
5
  - [用途](#用途)
6
- - [createValueGenerator](#createvaluegenerator)
7
- - [createSelectionGenerator](#createselectiongenerator)
8
- - [createObjectGenerator](#createobjectgenerator)
9
- - [createArrayGenerator](#createarraygenerator)
10
- - [createTupleGenerator](#createtuplegenerator)
11
- - [createBoundedSeriesGenerator](#createboundedseriesgenerator)
6
+ - [Value](#value)
7
+ - [Selection](#selection)
8
+ - [Object](#object)
9
+ - [Array](#array)
10
+ - [Tuple](#tuple)
11
+ - [BoundedSeries](#boundedseries)
12
12
  - [擴充](#擴充)
13
13
 
14
14
  ## Wrapping fakerjs Functions
@@ -42,146 +42,201 @@
42
42
 
43
43
  使用 faker js 時是單一純值不能產生結構,需要自己手動組合結構,此專案利用撰寫設定檔的方式來產生一個特定的假資料函數,減少手動組合結構的麻煩。
44
44
 
45
- ```javascript
46
- const test = {
45
+ ```typescript
46
+ import { StructConfig } from 'struct-fakerator'
47
+
48
+ const scheme = StructConfig.object({
49
+ name: StructConfig.value(() => 'hello'),
50
+ enum: StructConfig.select([1, 2, 3]),
51
+ list: StructConfig.array(StructConfig.value(() => 10), 5),
52
+ tuple: StructConfig.tuple([StructConfig.value(() => 'tuple1'), StructConfig.value(() => '100')])
53
+ })
54
+
55
+ // or
56
+ import {
57
+ createObjectConfig,
58
+ createArrayConfig,
59
+ createValueConfig,
60
+ createTupleConfig,
61
+ createSelectionConfig
62
+ } from 'struct-fakerator';
63
+
64
+
65
+ const scheme = createObjectConfig({
66
+ name: createValueConfig(() => 'hello'),
67
+ enum: createSelectionConfig([1, 2, 3]),
68
+ list: createArrayConfig(
69
+ createValueConfig(() => 10),
70
+ 5
71
+ ),
72
+ tuple: createTupleConfig([
73
+ createValueConfig(() => 'tuple1'),
74
+ createValueConfig(() => 100),
75
+ createValueConfig(() => false),
76
+ ])
77
+ });
78
+
79
+ // or
80
+ const scheme = {
47
81
  type: 'obj',
48
82
  content: {
49
83
  name: {
50
84
  type: 'value',
51
85
  generateFn: () => 'hello',
52
86
  },
87
+ enum: {
88
+ type: 'select',
89
+ items: [1, 2, 3],
90
+ },
53
91
  list: {
54
92
  type: 'arr',
55
- len: 5,
56
93
  item: {
57
94
  type: 'value',
58
95
  generateFn: () => 10,
59
96
  },
97
+ len: 5,
98
+ },
99
+ tuple: {
100
+ type: 'tuple',
101
+ configItems: [
102
+ {
103
+ type: 'value',
104
+ generateFn: () => 'tuple1',
105
+ },
106
+ {
107
+ type: 'value',
108
+ generateFn: () => 100,
109
+ },
110
+ {
111
+ type: 'value',
112
+ generateFn: () => false,
113
+ },
114
+ ],
60
115
  },
61
116
  },
62
117
  };
118
+ ```
63
119
 
64
- const generateFn = createGeneratorByType(test);
120
+ ```typescript
121
+ import { StructGenerator } from 'struct-fakerator';
65
122
 
66
- console.log(generateFn());
123
+ const result = StructGenerator.genFn(scheme)()
67
124
 
68
- /*
69
- {
70
- name: "hello"
71
- list: [10, 10, 10, 10, 10,]
72
- }
73
- */
74
- ```
125
+ console.log(result);
126
+ // {
127
+ // name: 'hello',
128
+ // enum: 1, // or 2 or 3
129
+ // list: [10, 10, 10, 10, 10],
130
+ // tuple: ['tuple1', 100, false]
131
+ // }
75
132
 
133
+ ```
76
134
 
77
135
 
78
- ### createValueGenerator
136
+ ### Value
79
137
 
80
- ```javascript
81
- const generateFn = createValueGenerator({
82
- type: 'value',
83
- generateFn: () => 10,
84
- })
138
+ ```typescript
139
+ const generateFn = StructGenerator.genFn(StructConfig.value(() => 10));
85
140
 
86
141
  console.log(generateFn());
87
-
88
142
  // 10
89
143
  ```
90
144
 
91
- ### createSelectionGenerator
145
+ ### Selection
92
146
 
93
- ```javascript
94
- const generateFn = createSelectionGenerator({
95
- type: 'select',
96
- items: [1, 2, 3, 4, 5],
97
- })
147
+ ```typescript
148
+ const generateFn = StructGenerator.genFn(StructConfig.select([1, 2, 3, 4, 5]))
98
149
 
99
150
  console.log(generateFn());
100
-
101
151
  // 1 or 2 or 3 or 4 or 5
102
152
  ```
103
153
 
104
- ### createObjectGenerator
105
-
106
- ```javascript
107
- const generateFn = createObjectGenerator({
108
- type: 'obj',
109
- content: {
110
- name: {
111
- type: 'value',
112
- generateFn: () => 'hello',
113
- },
114
- list: {
115
- type: 'arr',
116
- len: 5,
117
- item: {
118
- type: 'value',
119
- generateFn: () => 10,
120
- }
121
- }
122
- }
123
- })
154
+ ### Object
124
155
 
125
- console.log(generateFn());
156
+ ```typescript
157
+ const generateFn = StructGenerator.genFn(StructConfig.object({
158
+ name: StructConfig.value(() => 'hello'),
159
+ list: StructConfig.array(StructConfig.value(() => 10), 5),
160
+ }));
126
161
 
162
+ console.log(generateFn());
127
163
  // {
128
164
  // name: 'hello',
129
165
  // list: [10, 10, 10, 10, 10]
130
166
  // }
167
+
168
+ // with transformer function
169
+ const generateFn = StructGenerator.genFn(
170
+ StructConfig.object(
171
+ {
172
+ name: StructConfig.value(() => 'hello'),
173
+ list: StructConfig.array(
174
+ StructConfig.value(() => 10),
175
+ 5
176
+ ),
177
+ },
178
+ ({ name, list }) => list.map((item) => `${name} ${item}`)
179
+ )
180
+ );
181
+
182
+ console.log(generateFn());
183
+ // ["hello 10", "hello 10", "hello 10", "hello 10", "hello 10"]
131
184
  ```
132
- ### createArrayGenerator
133
185
 
186
+ ### Array
134
187
 
135
- ```javascript
136
- const generateFn = createArrayGenerator({
137
- type: 'arr',
138
- len: 5,
139
- item: {
140
- type: 'value',
141
- generateFn: () => 10,
142
- }
143
- })
188
+ ```typescript
189
+ const generateFn = StructGenerator.genFn(
190
+ StructConfig.array(
191
+ StructConfig.value(() => 10),
192
+ 5
193
+ )
194
+ );
144
195
 
145
196
  console.log(generateFn());
146
-
147
197
  // [10, 10, 10, 10, 10]
148
- ```
149
198
 
150
- ### createTupleGenerator
151
-
152
- ```javascript
153
- const generateFn = createTupleGenerator({
154
- type: 'tuple',
155
- configItems: [
156
- {
157
- type: 'value',
158
- generateFn: () => 10,
159
- },
160
- {
161
- type: 'value',
162
- generateFn: () => 'hello',
163
- },
164
- ]
165
- })
199
+ // with next function
200
+ const generateFn = StructGenerator.genFn(
201
+ StructConfig.array(
202
+ StructConfig.value(() => 10),
203
+ 5,
204
+ (prev, current) => prev + 1 + current
205
+ )
206
+ );
166
207
 
167
208
  console.log(generateFn());
168
-
169
- // [10, 'hello']
209
+ // [21, 32, 43, 54, 65]
170
210
  ```
171
211
 
172
- ### createBoundedSeriesGenerator
212
+ ### Tuple
173
213
 
174
- ```javascript
175
- const generateFn = createBoundedSeriesGenerator({
176
- type: 'bounded_series',
177
- upperLimit: 1.1,
178
- lowerLimit: 0.9,
179
- createInitValue: () => 100,
180
- count: 20
181
- })
214
+ ```typescript
215
+ const generateFn = StructGenerator.genFn(
216
+ StructConfig.tuple([
217
+ StructConfig.value(() => 'tuple1'),
218
+ StructConfig.value(() => 100),
219
+ StructConfig.value(() => false),
220
+ ])
221
+ );
182
222
 
183
223
  console.log(generateFn());
224
+ // ['tuple1', 100, false]
225
+ ```
226
+
227
+ ### BoundedSeries
184
228
 
229
+ ```typescript
230
+ const generateFn = StructGenerator.genFn(
231
+ StructConfig.boundedSeries({
232
+ upperLimit: 1.1,
233
+ lowerLimit: 0.9,
234
+ createInitValue: () => 100,
235
+ count: 20,
236
+ })
237
+ );
238
+
239
+ console.log(generateFn());
185
240
  // [100 * 0.9 <= num <= 100 * 1.1,
186
241
  // prev * 0.9 <= num <= prev * 1.1,
187
242
  // prev * 0.9 <= num <= prev * 1.1,
@@ -203,7 +258,7 @@ flowchart TB
203
258
 
204
259
  但並不是所有人情況都能自己手動建立函數,有可能是開放給別人使用的服務,沒辦法在使用方建立函數,這時 `createGeneratorByType` 第二個可以讓製作服務的人帶入自己的擴充,這樣這個函數就能接受更多種型態。
205
260
 
206
- ```javascript
261
+ ```typescript
207
262
  const createIntValueConfig = (option) => createValueConfig(() => faker.number.int(option));
208
263
  const createEmailValueConfig = (option) => createValueConfig(() => faker.internet.email(option));
209
264
 
package/biome.json CHANGED
@@ -1,27 +1,31 @@
1
1
  {
2
- "$schema": "https://biomejs.dev/schemas/1.9.4/schema.json",
3
- "organizeImports": {
4
- "enabled": true
5
- },
6
- "linter": {
7
- "enabled": true,
8
- "rules": {
9
- "recommended": true
10
- },
11
- "include": [
12
- "src/**/*"
13
- ]
14
- },
15
- "formatter": {
16
- "indentStyle": "space",
17
- "include": [
18
- "src/**/*",
19
- "tsup.config.ts"
20
- ]
21
- },
22
- "javascript": {
23
- "formatter": {
24
- "quoteStyle": "double"
25
- }
26
- }
27
- }
2
+ "$schema": "https://biomejs.dev/schemas/2.0.5/schema.json",
3
+ "linter": {
4
+ "enabled": true,
5
+ "rules": {
6
+ "recommended": true
7
+ },
8
+ "includes": ["src/**/*"]
9
+ },
10
+ "formatter": {
11
+ "indentStyle": "space",
12
+ "indentWidth": 2,
13
+ "lineEnding": "lf",
14
+ "includes": ["src/**/*", "tsup.config.ts", "rslib.config.ts"]
15
+ },
16
+ "javascript": {
17
+ "formatter": {
18
+ "quoteStyle": "double"
19
+ }
20
+ },
21
+ "assist": {
22
+ "actions": {
23
+ "source": {
24
+ "organizeImports": "on"
25
+ }
26
+ }
27
+ },
28
+ "files": {
29
+ "includes": ["src/**/*", "tsup.config.ts", "rslib.config.ts"]
30
+ }
31
+ }
package/dist/config.d.ts CHANGED
@@ -1,2 +1 @@
1
- export { createArrayConfig as array, createBoundedSeriesConfig as boundedSeries, createObjectConfig as object, createSelectionConfig as select, createTupleConfig as tuple, createValueConfig as value } from './create_config.js';
2
- import './type.js';
1
+ export { createArrayConfig as array, createBoundedSeriesConfig as boundedSeries, createObjectConfig as object, createSelectionConfig as select, createTupleConfig as tuple, createValueConfig as value, } from "./create_config";
package/dist/config.js CHANGED
@@ -1,19 +1,51 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});require('./chunk-V2AWKRQI.js');
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
- var _chunkC3RGM3CBjs = require('./chunk-C3RGM3CB.js');
10
- require('./chunk-ZWLHVT5O.js');
11
- require('./chunk-4VNS5WPM.js');
12
-
13
-
14
-
15
-
16
-
17
-
18
-
19
- exports.array = _chunkC3RGM3CBjs.createArrayConfig; exports.boundedSeries = _chunkC3RGM3CBjs.createBoundedSeriesConfig; exports.object = _chunkC3RGM3CBjs.createObjectConfig; exports.select = _chunkC3RGM3CBjs.createSelectionConfig; exports.tuple = _chunkC3RGM3CBjs.createTupleConfig; exports.value = _chunkC3RGM3CBjs.createValueConfig;
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ select: ()=>external_create_config_js_namespaceObject.createSelectionConfig,
28
+ object: ()=>external_create_config_js_namespaceObject.createObjectConfig,
29
+ tuple: ()=>external_create_config_js_namespaceObject.createTupleConfig,
30
+ value: ()=>external_create_config_js_namespaceObject.createValueConfig,
31
+ boundedSeries: ()=>external_create_config_js_namespaceObject.createBoundedSeriesConfig,
32
+ array: ()=>external_create_config_js_namespaceObject.createArrayConfig
33
+ });
34
+ const external_create_config_js_namespaceObject = require("./create_config.js");
35
+ exports.array = __webpack_exports__.array;
36
+ exports.boundedSeries = __webpack_exports__.boundedSeries;
37
+ exports.object = __webpack_exports__.object;
38
+ exports.select = __webpack_exports__.select;
39
+ exports.tuple = __webpack_exports__.tuple;
40
+ exports.value = __webpack_exports__.value;
41
+ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
42
+ "array",
43
+ "boundedSeries",
44
+ "object",
45
+ "select",
46
+ "tuple",
47
+ "value"
48
+ ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
49
+ Object.defineProperty(exports, '__esModule', {
50
+ value: true
51
+ });
package/dist/config.mjs CHANGED
@@ -1,19 +1,2 @@
1
- import "./chunk-VE3Q5LC3.mjs";
2
- import {
3
- createArrayConfig,
4
- createBoundedSeriesConfig,
5
- createObjectConfig,
6
- createSelectionConfig,
7
- createTupleConfig,
8
- createValueConfig
9
- } from "./chunk-ZQA42PYM.mjs";
10
- import "./chunk-USLYTOPD.mjs";
11
- import "./chunk-XGB3TDIC.mjs";
12
- export {
13
- createArrayConfig as array,
14
- createBoundedSeriesConfig as boundedSeries,
15
- createObjectConfig as object,
16
- createSelectionConfig as select,
17
- createTupleConfig as tuple,
18
- createValueConfig as value
19
- };
1
+ import { createArrayConfig, createBoundedSeriesConfig, createObjectConfig, createSelectionConfig, createTupleConfig, createValueConfig } from "./create_config.mjs";
2
+ export { createArrayConfig as array, createBoundedSeriesConfig as boundedSeries, createObjectConfig as object, createSelectionConfig as select, createTupleConfig as tuple, createValueConfig as value };
@@ -1,32 +1,29 @@
1
- import { z } from 'zod/v4';
2
-
3
- declare const valueConfigScheme: z.ZodObject<{
1
+ import { z } from "zod";
2
+ export declare const valueConfigScheme: z.ZodObject<{
4
3
  type: z.ZodString;
5
4
  generateFn: z.ZodAny;
6
5
  }, z.core.$strip>;
7
- declare const selectionConfigScheme: z.ZodObject<{
6
+ export declare const selectionConfigScheme: z.ZodObject<{
8
7
  type: z.ZodString;
9
8
  items: z.ZodArray<z.ZodAny>;
10
9
  }, z.core.$strip>;
11
- declare const arrayConfigScheme: z.ZodObject<{
10
+ export declare const arrayConfigScheme: z.ZodObject<{
12
11
  type: z.ZodString;
13
12
  item: z.ZodObject<{}, z.core.$strip>;
14
13
  len: z.ZodNumber;
15
14
  }, z.core.$strip>;
16
- declare const tupleConfigScheme: z.ZodObject<{
15
+ export declare const tupleConfigScheme: z.ZodObject<{
17
16
  type: z.ZodString;
18
17
  configItems: z.ZodArray<z.ZodAny>;
19
18
  }, z.core.$strip>;
20
- declare const objConfigScheme: z.ZodObject<{
19
+ export declare const objConfigScheme: z.ZodObject<{
21
20
  type: z.ZodString;
22
21
  content: z.ZodObject<{}, z.core.$strip>;
23
22
  }, z.core.$strip>;
24
- declare const boundedSeriesScheme: z.ZodObject<{
23
+ export declare const boundedSeriesScheme: z.ZodObject<{
25
24
  type: z.ZodString;
26
25
  upperLimit: z.ZodNumber;
27
26
  lowerLimit: z.ZodNumber;
28
27
  createInitValue: z.ZodAny;
29
28
  count: z.ZodNumber;
30
29
  }, z.core.$strip>;
31
-
32
- export { arrayConfigScheme, boundedSeriesScheme, objConfigScheme, selectionConfigScheme, tupleConfigScheme, valueConfigScheme };
@@ -1,17 +1,95 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
-
3
-
4
-
5
-
6
-
7
-
8
- var _chunkZWLHVT5Ojs = require('./chunk-ZWLHVT5O.js');
9
- require('./chunk-4VNS5WPM.js');
10
-
11
-
12
-
13
-
14
-
15
-
16
-
17
- exports.arrayConfigScheme = _chunkZWLHVT5Ojs.arrayConfigScheme; exports.boundedSeriesScheme = _chunkZWLHVT5Ojs.boundedSeriesScheme; exports.objConfigScheme = _chunkZWLHVT5Ojs.objConfigScheme; exports.selectionConfigScheme = _chunkZWLHVT5Ojs.selectionConfigScheme; exports.tupleConfigScheme = _chunkZWLHVT5Ojs.tupleConfigScheme; exports.valueConfigScheme = _chunkZWLHVT5Ojs.valueConfigScheme;
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ boundedSeriesScheme: ()=>boundedSeriesScheme,
28
+ tupleConfigScheme: ()=>tupleConfigScheme,
29
+ valueConfigScheme: ()=>valueConfigScheme,
30
+ arrayConfigScheme: ()=>arrayConfigScheme,
31
+ selectionConfigScheme: ()=>selectionConfigScheme,
32
+ objConfigScheme: ()=>objConfigScheme
33
+ });
34
+ const external_zod_namespaceObject = require("zod");
35
+ const valueConfigScheme = external_zod_namespaceObject.z.object({
36
+ type: external_zod_namespaceObject.z.string().regex(/^value$/, {
37
+ message: "invalid type string"
38
+ }),
39
+ generateFn: external_zod_namespaceObject.z.any()
40
+ });
41
+ const selectionConfigScheme = external_zod_namespaceObject.z.object({
42
+ type: external_zod_namespaceObject.z.string().regex(/^select$/, {
43
+ message: "invalid type string"
44
+ }),
45
+ items: external_zod_namespaceObject.z.any().array().nonempty({
46
+ message: "items can not be empty"
47
+ })
48
+ });
49
+ const arrayConfigScheme = external_zod_namespaceObject.z.object({
50
+ type: external_zod_namespaceObject.z.string().regex(/^arr$/, {
51
+ message: "invalid type string"
52
+ }),
53
+ item: external_zod_namespaceObject.z.object({}),
54
+ len: external_zod_namespaceObject.z.number().nonnegative()
55
+ });
56
+ const tupleConfigScheme = external_zod_namespaceObject.z.object({
57
+ type: external_zod_namespaceObject.z.string().regex(/^tuple$/, {
58
+ message: "invalid type string"
59
+ }),
60
+ configItems: external_zod_namespaceObject.z.any().array()
61
+ });
62
+ const objConfigScheme = external_zod_namespaceObject.z.object({
63
+ type: external_zod_namespaceObject.z.string().regex(/^obj$/, {
64
+ message: "invalid type string"
65
+ }),
66
+ content: external_zod_namespaceObject.z.object({})
67
+ });
68
+ const boundedSeriesScheme = external_zod_namespaceObject.z.object({
69
+ type: external_zod_namespaceObject.z.string().regex(/^bounded_series$/, {
70
+ message: "invalid type string"
71
+ }),
72
+ upperLimit: external_zod_namespaceObject.z.number().nonnegative(),
73
+ lowerLimit: external_zod_namespaceObject.z.number().nonnegative(),
74
+ createInitValue: external_zod_namespaceObject.z.any(),
75
+ count: external_zod_namespaceObject.z.number().nonnegative()
76
+ }).refine(({ upperLimit, lowerLimit })=>upperLimit >= lowerLimit, {
77
+ message: "lowerLimit can not greater then upperLimit"
78
+ });
79
+ exports.arrayConfigScheme = __webpack_exports__.arrayConfigScheme;
80
+ exports.boundedSeriesScheme = __webpack_exports__.boundedSeriesScheme;
81
+ exports.objConfigScheme = __webpack_exports__.objConfigScheme;
82
+ exports.selectionConfigScheme = __webpack_exports__.selectionConfigScheme;
83
+ exports.tupleConfigScheme = __webpack_exports__.tupleConfigScheme;
84
+ exports.valueConfigScheme = __webpack_exports__.valueConfigScheme;
85
+ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
86
+ "arrayConfigScheme",
87
+ "boundedSeriesScheme",
88
+ "objConfigScheme",
89
+ "selectionConfigScheme",
90
+ "tupleConfigScheme",
91
+ "valueConfigScheme"
92
+ ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
93
+ Object.defineProperty(exports, '__esModule', {
94
+ value: true
95
+ });