synthra 0.1.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 (302) hide show
  1. checksums.yaml +7 -0
  2. data/.rspec +4 -0
  3. data/.rubocop.yml +40 -0
  4. data/.yardopts +18 -0
  5. data/ACCESS_DOCS.md +116 -0
  6. data/ADVANCED_FEATURES_SUMMARY.md +245 -0
  7. data/CHANGELOG.md +498 -0
  8. data/CODE_OF_CONDUCT.md +122 -0
  9. data/CONTRIBUTING.md +307 -0
  10. data/DOCUMENTATION.md +204 -0
  11. data/DOCUMENTATION_GUIDE.md +194 -0
  12. data/LICENSE +22 -0
  13. data/README.md +1458 -0
  14. data/Rakefile +128 -0
  15. data/benchmark/README.md +591 -0
  16. data/benchmark/batch_generation.rb +63 -0
  17. data/benchmark/engine_comparison.rb +295 -0
  18. data/benchmark/single_record.rb +108 -0
  19. data/benchmark/streaming.rb +74 -0
  20. data/docs/ACTIVERECORD_INFERENCE.md +524 -0
  21. data/docs/API_SERVER.md +278 -0
  22. data/docs/CONFIG_FILE.md +315 -0
  23. data/docs/DATA_CONTRACTS.md +312 -0
  24. data/docs/ENHANCED_REPL.md +304 -0
  25. data/docs/FACTORY_BOT.md +271 -0
  26. data/docs/GITHUB_ACTION.md +420 -0
  27. data/docs/GRAPHQL_EXPORT.md +303 -0
  28. data/docs/GRAPHQL_FEDERATION.md +651 -0
  29. data/docs/HOW_TO_GENERATE_DOCS.md +252 -0
  30. data/docs/LSP.md +189 -0
  31. data/docs/MIGRATION_GENERATOR.md +547 -0
  32. data/docs/MOCK_SERVER.md +280 -0
  33. data/docs/NATIVE_ENGINE.md +298 -0
  34. data/docs/OPENAPI_EXPORT.md +252 -0
  35. data/docs/PERFORMANCE_MODE.md +228 -0
  36. data/docs/PERSONAS.md +547 -0
  37. data/docs/PROPERTY_TESTING.md +284 -0
  38. data/docs/PROTOBUF_EXPORT.md +276 -0
  39. data/docs/QUALITY_METRICS.md +555 -0
  40. data/docs/QUICK_REFERENCE.md +88 -0
  41. data/docs/RAILS_ENGINE.md +404 -0
  42. data/docs/RAILS_INTEGRATION.md +454 -0
  43. data/docs/README.md +175 -0
  44. data/docs/REPL_QUICK_REFERENCE.md +149 -0
  45. data/docs/RUST_INTEGRATION_GUIDE.md +1376 -0
  46. data/docs/SCENARIOS.md +576 -0
  47. data/docs/SECURITY_TESTING.md +318 -0
  48. data/docs/SNAPSHOT_TESTING.md +308 -0
  49. data/docs/STRING_TEXT_TYPES_REFERENCE.md +512 -0
  50. data/docs/TERRAFORM_EXPORT.md +447 -0
  51. data/docs/TIME_TRAVEL.md +507 -0
  52. data/docs/USAGE_GUIDE.md +980 -0
  53. data/docs/WEBHOOK_SIMULATOR.md +579 -0
  54. data/docs/advanced_features.md +183 -0
  55. data/docs/api_reference.md +153 -0
  56. data/docs/behaviors.md +138 -0
  57. data/docs/best_practices.md +191 -0
  58. data/docs/dsl_reference.md +172 -0
  59. data/docs/examples.md +162 -0
  60. data/docs/generation_modes.md +125 -0
  61. data/docs/getting_started.md +92 -0
  62. data/docs/index.html +177 -0
  63. data/docs/strategic/CLOUD_REGISTRY_ARCHITECTURE.md +268 -0
  64. data/docs/strategic/SIMD_OPTIMIZATION_STRATEGY.md +153 -0
  65. data/docs/troubleshooting.md +215 -0
  66. data/docs/type_reference.md +224 -0
  67. data/examples/hostile_mode_demo.rb +64 -0
  68. data/exe/synthra +6 -0
  69. data/ext/synthra_native/Cargo.lock +972 -0
  70. data/ext/synthra_native/Cargo.toml +46 -0
  71. data/ext/synthra_native/extconf.rb +41 -0
  72. data/ext/synthra_native/src/generator.rs +397 -0
  73. data/ext/synthra_native/src/lib.rs +229 -0
  74. data/ext/synthra_native/src/types.rs +1485 -0
  75. data/lib/generators/synthra/install_generator.rb +86 -0
  76. data/lib/generators/synthra/templates/api_response.dsl +15 -0
  77. data/lib/generators/synthra/templates/fake_data.rake +116 -0
  78. data/lib/generators/synthra/templates/synthra.yml +31 -0
  79. data/lib/generators/synthra/templates/synthra_support.rb +19 -0
  80. data/lib/generators/synthra/templates/user.dsl +11 -0
  81. data/lib/synthra/activerecord_inference.rb +394 -0
  82. data/lib/synthra/api.rb +381 -0
  83. data/lib/synthra/api_server.rb +718 -0
  84. data/lib/synthra/behaviors/applicator.rb +165 -0
  85. data/lib/synthra/behaviors/base.rb +155 -0
  86. data/lib/synthra/behaviors/close_connection.rb +60 -0
  87. data/lib/synthra/behaviors/deprecated.rb +100 -0
  88. data/lib/synthra/behaviors/failure.rb +69 -0
  89. data/lib/synthra/behaviors/latency.rb +103 -0
  90. data/lib/synthra/behaviors/partial_data.rb +83 -0
  91. data/lib/synthra/behaviors/randomize_order.rb +74 -0
  92. data/lib/synthra/behaviors/registry.rb +238 -0
  93. data/lib/synthra/behaviors/simulate_error.rb +79 -0
  94. data/lib/synthra/cli/commands/base.rb +105 -0
  95. data/lib/synthra/cli/commands/diff.rb +227 -0
  96. data/lib/synthra/cli/commands/docs.rb +67 -0
  97. data/lib/synthra/cli/commands/export.rb +150 -0
  98. data/lib/synthra/cli/commands/generate.rb +72 -0
  99. data/lib/synthra/cli/commands/import.rb +80 -0
  100. data/lib/synthra/cli/commands/lint.rb +53 -0
  101. data/lib/synthra/cli/commands/live.rb +57 -0
  102. data/lib/synthra/cli/commands/seed.rb +99 -0
  103. data/lib/synthra/cli/commands/validate.rb +28 -0
  104. data/lib/synthra/cli.rb +2471 -0
  105. data/lib/synthra/config_file.rb +129 -0
  106. data/lib/synthra/configuration.rb +281 -0
  107. data/lib/synthra/contracts_registry.rb +408 -0
  108. data/lib/synthra/database_seeder.rb +268 -0
  109. data/lib/synthra/deterministic_ids.rb +218 -0
  110. data/lib/synthra/documentation_generator.rb +414 -0
  111. data/lib/synthra/engine.rb +251 -0
  112. data/lib/synthra/errors.rb +1169 -0
  113. data/lib/synthra/export/base.rb +85 -0
  114. data/lib/synthra/export/csv.rb +101 -0
  115. data/lib/synthra/export/graphql.rb +266 -0
  116. data/lib/synthra/export/graphql_federation.rb +377 -0
  117. data/lib/synthra/export/graphviz.rb +258 -0
  118. data/lib/synthra/export/javascript.rb +327 -0
  119. data/lib/synthra/export/json_data.rb +61 -0
  120. data/lib/synthra/export/json_schema.rb +290 -0
  121. data/lib/synthra/export/openapi.rb +514 -0
  122. data/lib/synthra/export/protobuf.rb +483 -0
  123. data/lib/synthra/export/python.rb +560 -0
  124. data/lib/synthra/export/sql.rb +381 -0
  125. data/lib/synthra/export/sql_insert.rb +152 -0
  126. data/lib/synthra/export/terraform.rb +501 -0
  127. data/lib/synthra/export/type_mapping.rb +389 -0
  128. data/lib/synthra/export/typescript.rb +300 -0
  129. data/lib/synthra/export/xml_data.rb +104 -0
  130. data/lib/synthra/export/yaml_data.rb +56 -0
  131. data/lib/synthra/export.rb +404 -0
  132. data/lib/synthra/factory_bot_integration.rb +157 -0
  133. data/lib/synthra/field.rb +440 -0
  134. data/lib/synthra/functions/registry.rb +104 -0
  135. data/lib/synthra/generator/context.rb +372 -0
  136. data/lib/synthra/generator/engine.rb +336 -0
  137. data/lib/synthra/generator/faker_adapter.rb +425 -0
  138. data/lib/synthra/generator/modes.rb +444 -0
  139. data/lib/synthra/generator/resolver.rb +256 -0
  140. data/lib/synthra/generator/rng.rb +273 -0
  141. data/lib/synthra/generator/streamer.rb +63 -0
  142. data/lib/synthra/generator/uniqueness.rb +118 -0
  143. data/lib/synthra/initializer.rb +97 -0
  144. data/lib/synthra/limits.rb +279 -0
  145. data/lib/synthra/live_preview.rb +518 -0
  146. data/lib/synthra/loader_config.rb +78 -0
  147. data/lib/synthra/lsp/server.rb +689 -0
  148. data/lib/synthra/migration_generator.rb +301 -0
  149. data/lib/synthra/mixin.rb +174 -0
  150. data/lib/synthra/mock_server.rb +458 -0
  151. data/lib/synthra/native_engine.rb +304 -0
  152. data/lib/synthra/openapi_importer.rb +228 -0
  153. data/lib/synthra/output/json_formatter.rb +40 -0
  154. data/lib/synthra/output/ndjson_formatter.rb +55 -0
  155. data/lib/synthra/parser/ast.rb +1287 -0
  156. data/lib/synthra/parser/lexer.rb +1152 -0
  157. data/lib/synthra/parser/parser.rb +1664 -0
  158. data/lib/synthra/parser/tokens.rb +461 -0
  159. data/lib/synthra/performance_mode.rb +364 -0
  160. data/lib/synthra/personas.rb +397 -0
  161. data/lib/synthra/property_testing.rb +172 -0
  162. data/lib/synthra/quality_metrics.rb +405 -0
  163. data/lib/synthra/rails_test_helper.rb +248 -0
  164. data/lib/synthra/registry.rb +533 -0
  165. data/lib/synthra/relationships.rb +193 -0
  166. data/lib/synthra/repl/enhanced_repl.rb +607 -0
  167. data/lib/synthra/repl/formatter.rb +191 -0
  168. data/lib/synthra/scenarios.rb +423 -0
  169. data/lib/synthra/schema.rb +605 -0
  170. data/lib/synthra/schema_inheritance.rb +104 -0
  171. data/lib/synthra/schema_versioning.rb +212 -0
  172. data/lib/synthra/snapshot_testing.rb +199 -0
  173. data/lib/synthra/time_travel.rb +338 -0
  174. data/lib/synthra/type_definitions.rb +274 -0
  175. data/lib/synthra/types/address_location/addresses.rb +125 -0
  176. data/lib/synthra/types/address_location/airports.rb +200 -0
  177. data/lib/synthra/types/address_location/banks_hospitals.rb +207 -0
  178. data/lib/synthra/types/address_location/locations.rb +406 -0
  179. data/lib/synthra/types/base.rb +48 -0
  180. data/lib/synthra/types/commerce_products/commerce.rb +119 -0
  181. data/lib/synthra/types/commerce_products/companies.rb +71 -0
  182. data/lib/synthra/types/commerce_products/construction.rb +126 -0
  183. data/lib/synthra/types/commerce_products/products.rb +205 -0
  184. data/lib/synthra/types/core/collections.rb +513 -0
  185. data/lib/synthra/types/core/defaults.rb +76 -0
  186. data/lib/synthra/types/core/enums.rb +102 -0
  187. data/lib/synthra/types/core/identifiers.rb +445 -0
  188. data/lib/synthra/types/core/primitives.rb +586 -0
  189. data/lib/synthra/types/core/references.rb +466 -0
  190. data/lib/synthra/types/core/sequences.rb +304 -0
  191. data/lib/synthra/types/crypto/crypto.rb +162 -0
  192. data/lib/synthra/types/date_time/dates.rb +387 -0
  193. data/lib/synthra/types/finance_banking/banking.rb +424 -0
  194. data/lib/synthra/types/finance_banking/credit_cards.rb +24 -0
  195. data/lib/synthra/types/finance_banking/identifiers.rb +93 -0
  196. data/lib/synthra/types/formula.rb +184 -0
  197. data/lib/synthra/types/health_medical/medical.rb +150 -0
  198. data/lib/synthra/types/hostile_payloads.rb +122 -0
  199. data/lib/synthra/types/json_array.rb +51 -0
  200. data/lib/synthra/types/media_entertainment/media.rb +62 -0
  201. data/lib/synthra/types/naughty_string.rb +30 -0
  202. data/lib/synthra/types/personal_names/chinese.rb +41 -0
  203. data/lib/synthra/types/personal_names/identifiers.rb +187 -0
  204. data/lib/synthra/types/personal_names/names.rb +246 -0
  205. data/lib/synthra/types/personal_names/national_id.rb +89 -0
  206. data/lib/synthra/types/personal_names/titles_suffixes.rb +41 -0
  207. data/lib/synthra/types/regex.rb +248 -0
  208. data/lib/synthra/types/registry.rb +182 -0
  209. data/lib/synthra/types/repeating_element.rb +50 -0
  210. data/lib/synthra/types/scenario.rb +29 -0
  211. data/lib/synthra/types/technology_internet/apps.rb +67 -0
  212. data/lib/synthra/types/technology_internet/communication.rb +162 -0
  213. data/lib/synthra/types/technology_internet/devices.rb +80 -0
  214. data/lib/synthra/types/technology_internet/formats.rb +139 -0
  215. data/lib/synthra/types/technology_internet/networking.rb +143 -0
  216. data/lib/synthra/types/template.rb +92 -0
  217. data/lib/synthra/types/text_content/business.rb +128 -0
  218. data/lib/synthra/types/text_content/colors.rb +70 -0
  219. data/lib/synthra/types/text_content/misc.rb +237 -0
  220. data/lib/synthra/types/text_content/security.rb +130 -0
  221. data/lib/synthra/types/text_content/text_generation.rb +532 -0
  222. data/lib/synthra/types/travel/travel.rb +150 -0
  223. data/lib/synthra/utils/string_distance.rb +133 -0
  224. data/lib/synthra/validator/dsl_validator.rb +339 -0
  225. data/lib/synthra/validator/path_validator.rb +615 -0
  226. data/lib/synthra/version.rb +35 -0
  227. data/lib/synthra/webhook_simulator.rb +341 -0
  228. data/lib/synthra.rb +259 -0
  229. data/schemas/address.dsl +16 -0
  230. data/schemas/api_response.dsl +8 -0
  231. data/schemas/error_payload.dsl +9 -0
  232. data/schemas/order.dsl +10 -0
  233. data/schemas/order_item.dsl +8 -0
  234. data/schemas/payment.dsl +11 -0
  235. data/schemas/social_post.dsl +13 -0
  236. data/schemas/user.dsl +10 -0
  237. data/scripts/batch_fix_all.rb +96 -0
  238. data/scripts/delete_old_files.rb +32 -0
  239. data/scripts/fix_all_grouped_files.rb +137 -0
  240. data/scripts/fix_all_indentation.rb +48 -0
  241. data/scripts/fix_all_syntax.rb +124 -0
  242. data/scripts/fix_grouped_files.rb +184 -0
  243. data/scripts/fix_syntax_errors.rb +108 -0
  244. data/scripts/group_domain_types.rb +112 -0
  245. data/scripts/group_domain_types_fixed.rb +150 -0
  246. data/scripts/merge_domains_to_one_file.rb +68 -0
  247. data/scripts/move_existing_types.rb +130 -0
  248. data/scripts/split_grouped_types.rb +142 -0
  249. data/tech_docs/README.md +134 -0
  250. data/tech_docs/advanced/streaming.md +405 -0
  251. data/tech_docs/advanced/thread_safety.md +253 -0
  252. data/tech_docs/api/overview.md +485 -0
  253. data/tech_docs/appendices/type_chart.md +193 -0
  254. data/tech_docs/basic_concepts.md +383 -0
  255. data/tech_docs/behaviors/overview.md +346 -0
  256. data/tech_docs/dsl/complex_types.md +790 -0
  257. data/tech_docs/dsl/core_types.md +464 -0
  258. data/tech_docs/dsl/datetime_types.md +325 -0
  259. data/tech_docs/dsl/field_modifiers.md +414 -0
  260. data/tech_docs/dsl/grammar.md +431 -0
  261. data/tech_docs/dsl/schema_definition.md +399 -0
  262. data/tech_docs/export/README.md +276 -0
  263. data/tech_docs/installation.md +273 -0
  264. data/tech_docs/integration/ci_cd.md +707 -0
  265. data/tech_docs/integration/ci_cd_guide.md +579 -0
  266. data/tech_docs/integration/factory_bot.md +485 -0
  267. data/tech_docs/integration/rails.md +630 -0
  268. data/tech_docs/integration/rspec.md +449 -0
  269. data/tech_docs/modes/overview.md +350 -0
  270. data/tech_docs/performance/NATIVE_RUST_EXTENSION.md +1270 -0
  271. data/tech_docs/performance/OPTIMIZATION_GUIDE.md +901 -0
  272. data/tech_docs/quick_start.md +256 -0
  273. data/tech_docs/templates/README.md +805 -0
  274. data/tech_docs/tutorials/advanced.md +371 -0
  275. data/tech_docs/tutorials/getting_started.md +189 -0
  276. data/tech_docs/tutorials/intermediate.md +231 -0
  277. data/tech_docs/tutorials/template_gallery.md +569 -0
  278. data/tech_example/01_basic_usage.rb +238 -0
  279. data/tech_example/02_types_demo.rb +336 -0
  280. data/tech_example/04_cli_usage.md +429 -0
  281. data/tech_example/05_database_seeding.rb +283 -0
  282. data/tech_example/07_rspec_integration.rb +359 -0
  283. data/tech_example/10_custom_types.rb +387 -0
  284. data/tech_example/12_behaviors.rb +372 -0
  285. data/tech_example/13_twitter_dm_example.rb +120 -0
  286. data/tech_example/14_exact_json_structure.rb +253 -0
  287. data/tech_example/16_lsp_server.rb +56 -0
  288. data/tech_example/17_property_testing.rb +92 -0
  289. data/tech_example/18_enhanced_repl.rb +120 -0
  290. data/tech_example/19_security_fuzzing.rb +145 -0
  291. data/tech_example/NEW_FEATURES.md +169 -0
  292. data/tech_example/README.md +118 -0
  293. data/tech_example/schemas/api_response.dsl +123 -0
  294. data/tech_example/schemas/ecommerce.dsl +121 -0
  295. data/tech_example/schemas/twitter_dm.dsl +109 -0
  296. data/tech_example/schemas/user.dsl +36 -0
  297. data/vscode-extension/README.md +246 -0
  298. data/vscode-extension/language-configuration.json +31 -0
  299. data/vscode-extension/package.json +55 -0
  300. data/vscode-extension/snippets/fakedatadsl.json +198 -0
  301. data/vscode-extension/syntaxes/fakedatadsl.tmLanguage.json +128 -0
  302. metadata +478 -0
@@ -0,0 +1,464 @@
1
+ # Core Types Reference
2
+
3
+ Complete reference for all core types in FakeDataDSL.
4
+
5
+ ## Table of Contents
6
+
7
+ - [Identifier Types](#identifier-types)
8
+ - [Text Types](#text-types)
9
+ - [Number Types](#number-types)
10
+ - [Boolean Type](#boolean-type)
11
+ - [Enum Type](#enum-type)
12
+ - [Date and Time Types](#date-and-time-types)
13
+
14
+ ---
15
+
16
+ ## Identifier Types
17
+
18
+ ### uuid
19
+
20
+ Generates a UUID (Universally Unique Identifier).
21
+
22
+ ```dsl
23
+ User:
24
+ id: uuid
25
+ id_v4: uuid(version: 4) # UUID v4 (random) - default
26
+ id_v6: uuid(version: 6) # UUID v6 (time-ordered)
27
+ id_v7: uuid(version: 7) # UUID v7 (Unix timestamp)
28
+ ```
29
+
30
+ | Argument | Type | Default | Description |
31
+ |----------|------|---------|-------------|
32
+ | `version` | Integer | 4 | UUID version (4, 6, or 7) |
33
+ | `unique` | Boolean | false | Ensure uniqueness within batch |
34
+
35
+ **Examples:**
36
+ ```
37
+ # v4 (random)
38
+ "550e8400-e29b-41d4-a716-446655440000"
39
+
40
+ # v7 (time-sortable)
41
+ "018e1c7c-8b1a-7000-8000-000000000000"
42
+ ```
43
+
44
+ ### ulid
45
+
46
+ Generates a ULID (Universally Unique Lexicographically Sortable Identifier).
47
+
48
+ ```dsl
49
+ Event:
50
+ id: ulid
51
+ ```
52
+
53
+ **Example:** `"01ARZ3NDEKTSV4RRFQ69G5FAV"`
54
+
55
+ ### id_sequence
56
+
57
+ Generates auto-incrementing integer IDs.
58
+
59
+ ```dsl
60
+ User:
61
+ id: id_sequence
62
+ id_from_100: id_sequence(start: 100)
63
+ ```
64
+
65
+ | Argument | Type | Default | Description |
66
+ |----------|------|---------|-------------|
67
+ | `start` | Integer | 1 | Starting value |
68
+ | `step` | Integer | 1 | Increment amount |
69
+
70
+ **Examples:** `1`, `2`, `3`, ...
71
+
72
+ ---
73
+
74
+ ## Text Types
75
+
76
+ ### text
77
+
78
+ Generates random text/string.
79
+
80
+ ```dsl
81
+ User:
82
+ bio: text
83
+ short_bio: text(10..50)
84
+ exact_length: text(20)
85
+ long_text: text(min: 100, max: 500)
86
+ ```
87
+
88
+ | Argument | Type | Default | Description |
89
+ |----------|------|---------|-------------|
90
+ | `min..max` | Range | 10..100 | Character length range |
91
+ | `length` | Integer | - | Exact length |
92
+ | `min` | Integer | 10 | Minimum length |
93
+ | `max` | Integer | 100 | Maximum length |
94
+
95
+ ### name
96
+
97
+ Generates a realistic full name.
98
+
99
+ ```dsl
100
+ User:
101
+ name: name
102
+ ```
103
+
104
+ **Examples:** `"John Smith"`, `"Maria Garcia"`, `"李明"`
105
+
106
+ ### first_name
107
+
108
+ Generates a first name.
109
+
110
+ ```dsl
111
+ User:
112
+ first_name: first_name
113
+ ```
114
+
115
+ **Examples:** `"John"`, `"Maria"`, `"Ahmed"`
116
+
117
+ ### last_name
118
+
119
+ Generates a last name.
120
+
121
+ ```dsl
122
+ User:
123
+ last_name: last_name
124
+ ```
125
+
126
+ **Examples:** `"Smith"`, `"García"`, `"田中"`
127
+
128
+ ### email
129
+
130
+ Generates an email address.
131
+
132
+ ```dsl
133
+ User:
134
+ email: email
135
+ unique_email: email(unique: true)
136
+ ```
137
+
138
+ | Argument | Type | Default | Description |
139
+ |----------|------|---------|-------------|
140
+ | `unique` | Boolean | false | Ensure uniqueness |
141
+
142
+ **Examples:** `"john.smith@example.com"`, `"maria_garcia123@mail.net"`
143
+
144
+ ### username
145
+
146
+ Generates a username.
147
+
148
+ ```dsl
149
+ User:
150
+ username: username
151
+ ```
152
+
153
+ **Examples:** `"john_smith42"`, `"cool_user_99"`
154
+
155
+ ### password
156
+
157
+ Generates a password string.
158
+
159
+ ```dsl
160
+ User:
161
+ password: password
162
+ strong_password: password(length: 16)
163
+ ```
164
+
165
+ | Argument | Type | Default | Description |
166
+ |----------|------|---------|-------------|
167
+ | `length` | Integer | 12 | Password length |
168
+
169
+ **Example:** `"Xy7#kL9@mN2$"`
170
+
171
+ ### paragraph
172
+
173
+ Generates one or more paragraphs.
174
+
175
+ ```dsl
176
+ Article:
177
+ content: paragraph
178
+ long_content: paragraph(count: 5)
179
+ ```
180
+
181
+ | Argument | Type | Default | Description |
182
+ |----------|------|---------|-------------|
183
+ | `count` | Integer | 1 | Number of paragraphs |
184
+
185
+ ### sentence
186
+
187
+ Generates one or more sentences.
188
+
189
+ ```dsl
190
+ Article:
191
+ summary: sentence
192
+ description: sentence(count: 3)
193
+ ```
194
+
195
+ | Argument | Type | Default | Description |
196
+ |----------|------|---------|-------------|
197
+ | `count` | Integer | 1 | Number of sentences |
198
+
199
+ ### word
200
+
201
+ Generates one or more words.
202
+
203
+ ```dsl
204
+ Tag:
205
+ name: word
206
+ multi_word: word(count: 3)
207
+ ```
208
+
209
+ | Argument | Type | Default | Description |
210
+ |----------|------|---------|-------------|
211
+ | `count` | Integer | 1 | Number of words |
212
+
213
+ ---
214
+
215
+ ## Number Types
216
+
217
+ ### number
218
+
219
+ Generates integer or floating-point numbers.
220
+
221
+ ```dsl
222
+ Product:
223
+ quantity: number
224
+ age: number(18..100)
225
+ price: number(0.99..999.99)
226
+ exact: number(42)
227
+ precise: number(0..100, precision: 2)
228
+ ```
229
+
230
+ | Argument | Type | Default | Description |
231
+ |----------|------|---------|-------------|
232
+ | `min..max` | Range | 0..100 | Value range |
233
+ | `min` | Number | 0 | Minimum value |
234
+ | `max` | Number | 100 | Maximum value |
235
+ | `precision` | Integer | 0 | Decimal places (0=integer) |
236
+
237
+ **Examples:**
238
+ - `number(1..100)` → `42`
239
+ - `number(0.0..100.0)` → `42.7834`
240
+ - `number(0..100, precision: 2)` → `42.78`
241
+
242
+ ### integer
243
+
244
+ Alias for `number` with integer output.
245
+
246
+ ```dsl
247
+ User:
248
+ age: integer(0..120)
249
+ ```
250
+
251
+ ### float
252
+
253
+ Alias for `number` with float output.
254
+
255
+ ```dsl
256
+ Product:
257
+ rating: float(0.0..5.0)
258
+ ```
259
+
260
+ ### latitude
261
+
262
+ Generates a valid latitude coordinate.
263
+
264
+ ```dsl
265
+ Location:
266
+ lat: latitude
267
+ ```
268
+
269
+ **Range:** -90.0 to 90.0
270
+
271
+ ### longitude
272
+
273
+ Generates a valid longitude coordinate.
274
+
275
+ ```dsl
276
+ Location:
277
+ lng: longitude
278
+ ```
279
+
280
+ **Range:** -180.0 to 180.0
281
+
282
+ ---
283
+
284
+ ## Boolean Type
285
+
286
+ ### boolean
287
+
288
+ Generates true or false.
289
+
290
+ ```dsl
291
+ User:
292
+ active: boolean
293
+ verified: boolean(true:90%)
294
+ banned: boolean(false:95%)
295
+ ```
296
+
297
+ | Argument | Type | Default | Description |
298
+ |----------|------|---------|-------------|
299
+ | `true:N%` | Percentage | 50% | Probability of true |
300
+ | `false:N%` | Percentage | 50% | Probability of false |
301
+
302
+ **Examples:**
303
+ - `boolean` → 50/50 chance
304
+ - `boolean(true:90%)` → 90% true, 10% false
305
+ - `boolean(false:80%)` → 20% true, 80% false
306
+
307
+ ---
308
+
309
+ ## Enum Type
310
+
311
+ ### enum
312
+
313
+ Selects one value from a list.
314
+
315
+ ```dsl
316
+ User:
317
+ # Equal probability
318
+ status: enum(active, inactive, pending)
319
+
320
+ # Weighted probability
321
+ role: enum(user:80%, admin:5%, moderator:15%)
322
+
323
+ # Mixed
324
+ tier: enum(free:70%, basic, premium:10%)
325
+ ```
326
+
327
+ | Argument | Type | Description |
328
+ |----------|------|-------------|
329
+ | `value` | String | Possible value (equal weight) |
330
+ | `value:N%` | String:Percentage | Value with specific probability |
331
+
332
+ **Rules:**
333
+ - Unweighted values share remaining probability equally
334
+ - Weights must sum to ≤ 100%
335
+ - At least one value required
336
+
337
+ **Examples:**
338
+ ```dsl
339
+ # All equal (33.3% each)
340
+ enum(a, b, c)
341
+
342
+ # Explicit weights
343
+ enum(common:70%, rare:20%, legendary:10%)
344
+
345
+ # Mixed (remaining 40% split equally: b=20%, c=20%)
346
+ enum(a:60%, b, c)
347
+ ```
348
+
349
+ ---
350
+
351
+ ## Date and Time Types
352
+
353
+ ### date
354
+
355
+ Generates a random date.
356
+
357
+ ```dsl
358
+ Event:
359
+ date: date
360
+ ```
361
+
362
+ **Format:** `"2024-06-15"` (ISO 8601)
363
+
364
+ ### past_date
365
+
366
+ Generates a date in the past.
367
+
368
+ ```dsl
369
+ User:
370
+ created_at: past_date
371
+ birthday: past_date(100y)
372
+ recent: past_date(30d)
373
+ last_month: past_date(1m)
374
+ ```
375
+
376
+ | Argument | Type | Default | Description |
377
+ |----------|------|---------|-------------|
378
+ | Duration | String | `1y` | How far back |
379
+
380
+ **Duration suffixes:**
381
+ - `d` - days (e.g., `30d` = 30 days)
382
+ - `m` - months (e.g., `6m` = 6 months)
383
+ - `y` - years (e.g., `2y` = 2 years)
384
+
385
+ ### future_date
386
+
387
+ Generates a date in the future.
388
+
389
+ ```dsl
390
+ Task:
391
+ due_date: future_date
392
+ next_week: future_date(7d)
393
+ next_year: future_date(1y)
394
+ ```
395
+
396
+ | Argument | Type | Default | Description |
397
+ |----------|------|---------|-------------|
398
+ | Duration | String | `1y` | How far forward |
399
+
400
+ ### timestamp
401
+
402
+ Generates a datetime timestamp.
403
+
404
+ ```dsl
405
+ Event:
406
+ occurred_at: timestamp
407
+ ```
408
+
409
+ **Format:** `"2024-06-15T14:30:00Z"` (ISO 8601 with time)
410
+
411
+ ### now
412
+
413
+ Generates the current timestamp.
414
+
415
+ ```dsl
416
+ AuditLog:
417
+ created_at: now
418
+ ```
419
+
420
+ **Format:** `"2024-07-15T10:30:45Z"` (current time)
421
+
422
+ ### datetime
423
+
424
+ Generates a datetime within a range.
425
+
426
+ ```dsl
427
+ Appointment:
428
+ scheduled_at: datetime(from: "2024-01-01", to: "2024-12-31")
429
+ ```
430
+
431
+ | Argument | Type | Description |
432
+ |----------|------|-------------|
433
+ | `from` | String | Start date/datetime |
434
+ | `to` | String | End date/datetime |
435
+
436
+ ---
437
+
438
+ ## Type Arguments Summary
439
+
440
+ ### Common Arguments
441
+
442
+ | Argument | Types | Description |
443
+ |----------|-------|-------------|
444
+ | `unique` | uuid, email, text | Ensure uniqueness within batch |
445
+ | `min`, `max` | number, text | Range bounds |
446
+ | `min..max` | number, text | Range shorthand |
447
+
448
+ ### Probability Arguments
449
+
450
+ | Argument | Types | Description |
451
+ |----------|-------|-------------|
452
+ | `true:N%` | boolean | Probability of true |
453
+ | `false:N%` | boolean | Probability of false |
454
+ | `value:N%` | enum | Probability of specific value |
455
+
456
+ ---
457
+
458
+ ## Next Steps
459
+
460
+ - [Date & Time Types](datetime_types.md) - More date/time options
461
+ - [Location Types](location_types.md) - Address, country, coordinates
462
+ - [Personal Types](personal_types.md) - Names, contact info
463
+ - [Complex Types](complex_types.md) - Arrays, objects, references
464
+