@ciwergrp/nuxid 1.0.2-release

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 (145) hide show
  1. package/README.md +119 -0
  2. package/bin/kiban.mjs +41 -0
  3. package/console/request.mjs +337 -0
  4. package/dist/module.d.mts +188 -0
  5. package/dist/module.json +9 -0
  6. package/dist/module.mjs +439 -0
  7. package/dist/runtime/form.d.ts +21 -0
  8. package/dist/runtime/form.js +161 -0
  9. package/dist/runtime/helper/array/collapse.d.ts +1 -0
  10. package/dist/runtime/helper/array/collapse.js +9 -0
  11. package/dist/runtime/helper/array/crossJoin.d.ts +1 -0
  12. package/dist/runtime/helper/array/crossJoin.js +17 -0
  13. package/dist/runtime/helper/array/every.d.ts +1 -0
  14. package/dist/runtime/helper/array/every.js +3 -0
  15. package/dist/runtime/helper/array/first.d.ts +1 -0
  16. package/dist/runtime/helper/array/first.js +11 -0
  17. package/dist/runtime/helper/array/flatten.d.ts +1 -0
  18. package/dist/runtime/helper/array/flatten.js +14 -0
  19. package/dist/runtime/helper/array/index.d.ts +46 -0
  20. package/dist/runtime/helper/array/index.js +69 -0
  21. package/dist/runtime/helper/array/join.d.ts +1 -0
  22. package/dist/runtime/helper/array/join.js +11 -0
  23. package/dist/runtime/helper/array/last.d.ts +1 -0
  24. package/dist/runtime/helper/array/last.js +11 -0
  25. package/dist/runtime/helper/array/map.d.ts +1 -0
  26. package/dist/runtime/helper/array/map.js +3 -0
  27. package/dist/runtime/helper/array/mapSpread.d.ts +1 -0
  28. package/dist/runtime/helper/array/mapSpread.js +3 -0
  29. package/dist/runtime/helper/array/partition.d.ts +1 -0
  30. package/dist/runtime/helper/array/partition.js +12 -0
  31. package/dist/runtime/helper/array/random.d.ts +1 -0
  32. package/dist/runtime/helper/array/random.js +19 -0
  33. package/dist/runtime/helper/array/reject.d.ts +1 -0
  34. package/dist/runtime/helper/array/reject.js +3 -0
  35. package/dist/runtime/helper/array/shuffle.d.ts +1 -0
  36. package/dist/runtime/helper/array/shuffle.js +8 -0
  37. package/dist/runtime/helper/array/sole.d.ts +1 -0
  38. package/dist/runtime/helper/array/sole.js +7 -0
  39. package/dist/runtime/helper/array/some.d.ts +1 -0
  40. package/dist/runtime/helper/array/some.js +3 -0
  41. package/dist/runtime/helper/array/sort.d.ts +1 -0
  42. package/dist/runtime/helper/array/sort.js +4 -0
  43. package/dist/runtime/helper/array/sortDesc.d.ts +1 -0
  44. package/dist/runtime/helper/array/sortDesc.js +9 -0
  45. package/dist/runtime/helper/array/take.d.ts +1 -0
  46. package/dist/runtime/helper/array/take.js +9 -0
  47. package/dist/runtime/helper/array/where.d.ts +1 -0
  48. package/dist/runtime/helper/array/where.js +3 -0
  49. package/dist/runtime/helper/array/whereNotNull.d.ts +1 -0
  50. package/dist/runtime/helper/array/whereNotNull.js +3 -0
  51. package/dist/runtime/helper/array/wrap.d.ts +1 -0
  52. package/dist/runtime/helper/array/wrap.js +6 -0
  53. package/dist/runtime/helper/index.d.ts +4 -0
  54. package/dist/runtime/helper/index.js +4 -0
  55. package/dist/runtime/helper/number/clamp.d.ts +1 -0
  56. package/dist/runtime/helper/number/clamp.js +3 -0
  57. package/dist/runtime/helper/number/currency.d.ts +1 -0
  58. package/dist/runtime/helper/number/currency.js +14 -0
  59. package/dist/runtime/helper/number/fileSize.d.ts +1 -0
  60. package/dist/runtime/helper/number/fileSize.js +12 -0
  61. package/dist/runtime/helper/number/format.d.ts +1 -0
  62. package/dist/runtime/helper/number/format.js +12 -0
  63. package/dist/runtime/helper/number/humanize.d.ts +5 -0
  64. package/dist/runtime/helper/number/humanize.js +39 -0
  65. package/dist/runtime/helper/number/index.d.ts +37 -0
  66. package/dist/runtime/helper/number/index.js +60 -0
  67. package/dist/runtime/helper/number/intl.d.ts +5 -0
  68. package/dist/runtime/helper/number/intl.js +32 -0
  69. package/dist/runtime/helper/number/ordinal.d.ts +1 -0
  70. package/dist/runtime/helper/number/ordinal.js +26 -0
  71. package/dist/runtime/helper/number/pairs.d.ts +1 -0
  72. package/dist/runtime/helper/number/pairs.js +11 -0
  73. package/dist/runtime/helper/number/parse.d.ts +4 -0
  74. package/dist/runtime/helper/number/parse.js +19 -0
  75. package/dist/runtime/helper/number/percentage.d.ts +1 -0
  76. package/dist/runtime/helper/number/percentage.js +14 -0
  77. package/dist/runtime/helper/number/spell.d.ts +2 -0
  78. package/dist/runtime/helper/number/spell.js +145 -0
  79. package/dist/runtime/helper/number/state.d.ts +1 -0
  80. package/dist/runtime/helper/number/state.js +8 -0
  81. package/dist/runtime/helper/number/trim.d.ts +1 -0
  82. package/dist/runtime/helper/number/trim.js +3 -0
  83. package/dist/runtime/helper/object/add.d.ts +2 -0
  84. package/dist/runtime/helper/object/add.js +8 -0
  85. package/dist/runtime/helper/object/dot.d.ts +1 -0
  86. package/dist/runtime/helper/object/dot.js +19 -0
  87. package/dist/runtime/helper/object/except.d.ts +2 -0
  88. package/dist/runtime/helper/object/except.js +10 -0
  89. package/dist/runtime/helper/object/forget.d.ts +2 -0
  90. package/dist/runtime/helper/object/forget.js +24 -0
  91. package/dist/runtime/helper/object/get.d.ts +2 -0
  92. package/dist/runtime/helper/object/get.js +15 -0
  93. package/dist/runtime/helper/object/has.d.ts +2 -0
  94. package/dist/runtime/helper/object/has.js +5 -0
  95. package/dist/runtime/helper/object/index.d.ts +22 -0
  96. package/dist/runtime/helper/object/index.js +33 -0
  97. package/dist/runtime/helper/object/only.d.ts +2 -0
  98. package/dist/runtime/helper/object/only.js +12 -0
  99. package/dist/runtime/helper/object/set.d.ts +2 -0
  100. package/dist/runtime/helper/object/set.js +23 -0
  101. package/dist/runtime/helper/object/undot.d.ts +1 -0
  102. package/dist/runtime/helper/object/undot.js +8 -0
  103. package/dist/runtime/helper/object/utils.d.ts +3 -0
  104. package/dist/runtime/helper/object/utils.js +10 -0
  105. package/dist/runtime/helper/state.d.ts +6 -0
  106. package/dist/runtime/helper/state.js +50 -0
  107. package/dist/runtime/helper/string/basic.d.ts +7 -0
  108. package/dist/runtime/helper/string/basic.js +42 -0
  109. package/dist/runtime/helper/string/bounds.d.ts +6 -0
  110. package/dist/runtime/helper/string/bounds.js +42 -0
  111. package/dist/runtime/helper/string/case.d.ts +9 -0
  112. package/dist/runtime/helper/string/case.js +50 -0
  113. package/dist/runtime/helper/string/index.d.ts +57 -0
  114. package/dist/runtime/helper/string/index.js +100 -0
  115. package/dist/runtime/helper/string/locale.d.ts +1 -0
  116. package/dist/runtime/helper/string/locale.js +1 -0
  117. package/dist/runtime/helper/string/match.d.ts +4 -0
  118. package/dist/runtime/helper/string/match.js +15 -0
  119. package/dist/runtime/helper/string/pad.d.ts +3 -0
  120. package/dist/runtime/helper/string/pad.js +12 -0
  121. package/dist/runtime/helper/string/plural.d.ts +3 -0
  122. package/dist/runtime/helper/string/plural.js +16 -0
  123. package/dist/runtime/helper/string/replace.d.ts +4 -0
  124. package/dist/runtime/helper/string/replace.js +25 -0
  125. package/dist/runtime/helper/string/slug.d.ts +1 -0
  126. package/dist/runtime/helper/string/slug.js +8 -0
  127. package/dist/runtime/helper/string/transliterate.d.ts +2 -0
  128. package/dist/runtime/helper/string/transliterate.js +8 -0
  129. package/dist/runtime/helper/string/words.d.ts +2 -0
  130. package/dist/runtime/helper/string/words.js +13 -0
  131. package/dist/runtime/lodash.d.ts +1 -0
  132. package/dist/runtime/lodash.js +1 -0
  133. package/dist/runtime/pinia/composables.d.ts +2 -0
  134. package/dist/runtime/pinia/composables.js +3 -0
  135. package/dist/runtime/pinia/payload-plugin.d.ts +5 -0
  136. package/dist/runtime/pinia/payload-plugin.js +15 -0
  137. package/dist/runtime/pinia/plugin.d.ts +6 -0
  138. package/dist/runtime/pinia/plugin.js +22 -0
  139. package/dist/runtime/plugin.d.ts +2 -0
  140. package/dist/runtime/plugin.js +4 -0
  141. package/dist/runtime/server/tsconfig.json +3 -0
  142. package/dist/runtime/validator.d.ts +13 -0
  143. package/dist/runtime/validator.js +445 -0
  144. package/dist/types.d.mts +11 -0
  145. package/package.json +90 -0
@@ -0,0 +1,445 @@
1
+ const createSameAsValidator = (otherField, formState, message) => {
2
+ return (_rule, value, callback) => {
3
+ const getNestedValue = (obj, path) => {
4
+ return path.split(".").reduce((current, key) => current?.[key], obj);
5
+ };
6
+ const otherValue = getNestedValue(formState, otherField);
7
+ if (value !== otherValue) {
8
+ callback(new Error(message));
9
+ } else {
10
+ callback();
11
+ }
12
+ };
13
+ };
14
+ const createPatternValidator = (pattern, message) => {
15
+ return (_rule, value, callback) => {
16
+ if (value && !pattern.test(value)) {
17
+ callback(new Error(message));
18
+ } else {
19
+ callback();
20
+ }
21
+ };
22
+ };
23
+ const createNumericValidator = (message) => {
24
+ return (_rule, value, callback) => {
25
+ if (value && Number.isNaN(Number(value))) {
26
+ callback(new Error(message));
27
+ } else {
28
+ callback();
29
+ }
30
+ };
31
+ };
32
+ const createIntegerValidator = (message) => {
33
+ return (_rule, value, callback) => {
34
+ if (value && !Number.isInteger(Number(value))) {
35
+ callback(new Error(message));
36
+ } else {
37
+ callback();
38
+ }
39
+ };
40
+ };
41
+ const createComparisonValidator = (otherField, formState, message, compare) => {
42
+ return (_rule, value, callback) => {
43
+ const otherValue = formState[otherField];
44
+ if (value && otherValue && !compare(value, otherValue)) {
45
+ callback(new Error(message));
46
+ } else {
47
+ callback();
48
+ }
49
+ };
50
+ };
51
+ const createDateValidator = (message) => {
52
+ return (_rule, value, callback) => {
53
+ if (!value) {
54
+ return callback();
55
+ }
56
+ const pattern = /^\d{4}-\d{2}-\d{2}$/;
57
+ if (!pattern.test(value)) {
58
+ return callback(new Error(message));
59
+ }
60
+ const date = new Date(value);
61
+ if (Number.isNaN(date.getTime()) || date.toISOString().slice(0, 10) !== value) {
62
+ return callback(new Error(message));
63
+ }
64
+ callback();
65
+ };
66
+ };
67
+ const createDateComparisonValidator = (compareDate, message, compare) => {
68
+ return (_rule, value, callback) => {
69
+ if (!value) {
70
+ return callback();
71
+ }
72
+ const pattern = /^\d{4}-\d{2}-\d{2}$/;
73
+ if (!pattern.test(value)) {
74
+ return callback(new Error(message));
75
+ }
76
+ const valueDate = new Date(value);
77
+ if (Number.isNaN(valueDate.getTime())) {
78
+ return callback(new Error(message));
79
+ }
80
+ const comparisonDate = new Date(compareDate);
81
+ if (Number.isNaN(comparisonDate.getTime())) {
82
+ return callback(new Error(`Invalid comparison date: ${compareDate}`));
83
+ }
84
+ if (!compare(valueDate, comparisonDate)) {
85
+ return callback(new Error(message));
86
+ }
87
+ callback();
88
+ };
89
+ };
90
+ const createArrayValidator = (message) => {
91
+ return (_rule, value, callback) => {
92
+ if (value === null || value === void 0) {
93
+ return callback();
94
+ }
95
+ if (!Array.isArray(value)) {
96
+ return callback(new Error(message));
97
+ }
98
+ callback();
99
+ };
100
+ };
101
+ const createURLValidator = (message) => {
102
+ return (_rule, value, callback) => {
103
+ if (!value) {
104
+ return callback();
105
+ }
106
+ try {
107
+ const parsed = new URL(value);
108
+ if (!["http:", "https:"].includes(parsed.protocol)) {
109
+ return callback(new Error(message));
110
+ }
111
+ } catch {
112
+ return callback(new Error(message));
113
+ }
114
+ callback();
115
+ };
116
+ };
117
+ const createIPValidator = (message) => {
118
+ const ipv4 = /^(?:25[0-5]|2[0-4]\d|[01]?\d?\d)(?:\.(?:25[0-5]|2[0-4]\d|[01]?\d?\d)){3}$/;
119
+ const ipv6 = /^(?:(?:[0-9a-f]{1,4}:){7}[0-9a-f]{1,4}|::1|::)$/i;
120
+ return (_rule, value, callback) => {
121
+ if (!value) {
122
+ return callback();
123
+ }
124
+ if (typeof value !== "string") {
125
+ return callback(new Error(message));
126
+ }
127
+ if (!ipv4.test(value) && !ipv6.test(value)) {
128
+ return callback(new Error(message));
129
+ }
130
+ callback();
131
+ };
132
+ };
133
+ const createHexColorValidator = (message) => {
134
+ const pattern = /^#?(?:[A-F0-9]{6}|[A-F0-9]{3})$/i;
135
+ return (_rule, value, callback) => {
136
+ if (!value) {
137
+ return callback();
138
+ }
139
+ if (typeof value !== "string" || !pattern.test(value)) {
140
+ return callback(new Error(message));
141
+ }
142
+ callback();
143
+ };
144
+ };
145
+ const createInValidator = (allowed, message) => {
146
+ const allowedSet = new Set(allowed);
147
+ return (_rule, value, callback) => {
148
+ if (value === void 0 || value === null || value === "") {
149
+ return callback();
150
+ }
151
+ if (!allowedSet.has(String(value))) {
152
+ return callback(new Error(message));
153
+ }
154
+ callback();
155
+ };
156
+ };
157
+ export const createValidationRules = (definitions, formState, options = {}) => {
158
+ const { messages = {}, attributes = {}, authorize, prepareForValidation } = options;
159
+ const fieldTriggers = options.trigger || {};
160
+ const pickTrigger = (f, defaultTrig) => {
161
+ return fieldTriggers[f] ?? defaultTrig;
162
+ };
163
+ if (authorize && !authorize()) {
164
+ throw new Error("This action is unauthorized.");
165
+ }
166
+ let dataToValidate = { ...formState };
167
+ if (prepareForValidation) {
168
+ dataToValidate = prepareForValidation(dataToValidate);
169
+ }
170
+ const rules = {};
171
+ const getMessage = (fieldName, rule, defaultMessage) => {
172
+ const customMessageKey = `${fieldName}.${rule}`;
173
+ return messages[customMessageKey] || defaultMessage;
174
+ };
175
+ for (const fieldName in definitions) {
176
+ const fieldDefinition = definitions[fieldName];
177
+ if (!fieldDefinition) {
178
+ continue;
179
+ }
180
+ let laravelRules;
181
+ if ("sometimes" in fieldDefinition && typeof fieldDefinition.sometimes === "function") {
182
+ if (!fieldDefinition.sometimes(dataToValidate)) {
183
+ continue;
184
+ }
185
+ laravelRules = fieldDefinition.rules;
186
+ } else {
187
+ laravelRules = fieldDefinition;
188
+ }
189
+ const fieldRules = [];
190
+ const attributeName = attributes[fieldName] || fieldName;
191
+ laravelRules.forEach((ruleString) => {
192
+ const [rule, params] = ruleString.split(":");
193
+ const paramValues = params?.split(",") ?? [];
194
+ const firstParam = paramValues[0] ?? "";
195
+ switch (rule) {
196
+ case "required":
197
+ fieldRules.push({
198
+ required: true,
199
+ message: getMessage(fieldName, "required", `${attributeName} is required`),
200
+ trigger: pickTrigger(fieldName, "blur")
201
+ });
202
+ break;
203
+ case "email":
204
+ fieldRules.push({
205
+ type: "email",
206
+ message: getMessage(fieldName, "email", "Please provide a valid email address"),
207
+ trigger: pickTrigger(fieldName, ["blur", "change"])
208
+ });
209
+ break;
210
+ case "min":
211
+ if (!firstParam) {
212
+ return;
213
+ }
214
+ fieldRules.push({
215
+ min: Number(firstParam),
216
+ message: getMessage(fieldName, "min", `${attributeName} must be at least ${firstParam} characters`),
217
+ trigger: pickTrigger(fieldName, "blur"),
218
+ transform: (value) => value?.trim()
219
+ });
220
+ break;
221
+ case "max":
222
+ if (!firstParam) {
223
+ return;
224
+ }
225
+ fieldRules.push({
226
+ max: Number(firstParam),
227
+ message: getMessage(fieldName, "max", `${attributeName} cannot be more than ${firstParam} characters`),
228
+ trigger: pickTrigger(fieldName, "blur"),
229
+ transform: (value) => value?.trim()
230
+ });
231
+ break;
232
+ case "same": {
233
+ if (!firstParam) {
234
+ return;
235
+ }
236
+ const sameOtherAttr = attributes[firstParam] || firstParam;
237
+ fieldRules.push({
238
+ validator: createSameAsValidator(firstParam, dataToValidate, getMessage(fieldName, "same", `${attributeName} must match ${sameOtherAttr}`)),
239
+ trigger: pickTrigger(fieldName, "blur")
240
+ });
241
+ break;
242
+ }
243
+ case "different": {
244
+ if (!firstParam) {
245
+ return;
246
+ }
247
+ const diffOtherAttr = attributes[firstParam] || firstParam;
248
+ fieldRules.push({
249
+ validator: createComparisonValidator(firstParam, dataToValidate, getMessage(fieldName, "different", `${attributeName} must be different from ${diffOtherAttr}`), (a, b) => a !== b),
250
+ trigger: pickTrigger(fieldName, "blur")
251
+ });
252
+ break;
253
+ }
254
+ case "date":
255
+ fieldRules.push({
256
+ validator: createDateValidator(getMessage(fieldName, "date", `${attributeName} must be a valid date in YYYY-MM-DD format`)),
257
+ trigger: pickTrigger(fieldName, "blur")
258
+ });
259
+ break;
260
+ case "before":
261
+ if (!firstParam) {
262
+ return;
263
+ }
264
+ fieldRules.push({
265
+ validator: createDateComparisonValidator(
266
+ firstParam,
267
+ getMessage(fieldName, "before", `${attributeName} must be a date before ${firstParam}`),
268
+ (valueDate, compareDate) => valueDate < compareDate
269
+ ),
270
+ trigger: pickTrigger(fieldName, "blur")
271
+ });
272
+ break;
273
+ case "after":
274
+ if (!firstParam) {
275
+ return;
276
+ }
277
+ fieldRules.push({
278
+ validator: createDateComparisonValidator(
279
+ firstParam,
280
+ getMessage(fieldName, "after", `${attributeName} must be a date after ${firstParam}`),
281
+ (valueDate, compareDate) => valueDate > compareDate
282
+ ),
283
+ trigger: pickTrigger(fieldName, "blur")
284
+ });
285
+ break;
286
+ case "alpha":
287
+ fieldRules.push({
288
+ validator: createPatternValidator(/^[a-z]+$/i, getMessage(fieldName, "alpha", `${attributeName} may only contain letters`)),
289
+ trigger: pickTrigger(fieldName, "blur")
290
+ });
291
+ break;
292
+ case "alpha_num":
293
+ fieldRules.push({
294
+ validator: createPatternValidator(/^[a-z0-9]+$/i, getMessage(fieldName, "alpha_num", `${attributeName} may only contain letters and numbers`)),
295
+ trigger: pickTrigger(fieldName, "blur")
296
+ });
297
+ break;
298
+ case "alpha_dash":
299
+ fieldRules.push({
300
+ validator: createPatternValidator(/^[\w-]+$/, getMessage(fieldName, "alpha_dash", `${attributeName} may only contain letters, numbers, dashes, and underscores`)),
301
+ trigger: pickTrigger(fieldName, "blur")
302
+ });
303
+ break;
304
+ case "alphanumeric_space":
305
+ fieldRules.push({
306
+ validator: createPatternValidator(/^[\w -]+$/, getMessage(fieldName, "alphanumeric_space", `${attributeName} may only contain letters, numbers, spaces, dashes, and underscores`)),
307
+ trigger: pickTrigger(fieldName, "blur")
308
+ });
309
+ break;
310
+ case "alpha_space":
311
+ fieldRules.push({
312
+ validator: createPatternValidator(/^[a-z _-]+$/i, getMessage(fieldName, "alpha_space", `${attributeName} may only contain letters, spaces, dashes, and underscores`)),
313
+ trigger: pickTrigger(fieldName, "blur")
314
+ });
315
+ break;
316
+ case "array":
317
+ fieldRules.push({
318
+ validator: createArrayValidator(getMessage(fieldName, "array", `${attributeName} must be an array`)),
319
+ trigger: pickTrigger(fieldName, "change")
320
+ });
321
+ break;
322
+ case "starts_with": {
323
+ if (!paramValues.length) {
324
+ return;
325
+ }
326
+ const startsWithPattern = new RegExp(`^(?:${paramValues.join("|")})`);
327
+ fieldRules.push({
328
+ validator: createPatternValidator(startsWithPattern, getMessage(fieldName, "starts_with", `${attributeName} must start with one of the following: ${paramValues.join(", ")}`)),
329
+ trigger: pickTrigger(fieldName, "blur")
330
+ });
331
+ break;
332
+ }
333
+ case "ends_with": {
334
+ if (!paramValues.length) {
335
+ return;
336
+ }
337
+ const endsWithPattern = new RegExp(`(?:${paramValues.join("|")})$`);
338
+ fieldRules.push({
339
+ validator: createPatternValidator(endsWithPattern, getMessage(fieldName, "ends_with", `${attributeName} must end with one of the following: ${paramValues.join(", ")}`)),
340
+ trigger: pickTrigger(fieldName, "blur")
341
+ });
342
+ break;
343
+ }
344
+ case "regex":
345
+ if (!params) {
346
+ return;
347
+ }
348
+ fieldRules.push({
349
+ validator: createPatternValidator(new RegExp(params), getMessage(fieldName, "regex", `${attributeName} format is invalid`)),
350
+ trigger: pickTrigger(fieldName, "blur")
351
+ });
352
+ break;
353
+ case "url":
354
+ fieldRules.push({
355
+ validator: createURLValidator(getMessage(fieldName, "url", `${attributeName} must be a valid URL (http/https)`)),
356
+ trigger: pickTrigger(fieldName, "blur")
357
+ });
358
+ break;
359
+ case "ip":
360
+ fieldRules.push({
361
+ validator: createIPValidator(getMessage(fieldName, "ip", `${attributeName} must be a valid IP address`)),
362
+ trigger: pickTrigger(fieldName, "blur")
363
+ });
364
+ break;
365
+ case "hex_color":
366
+ fieldRules.push({
367
+ validator: createHexColorValidator(getMessage(fieldName, "hex_color", `${attributeName} must be a valid hex color`)),
368
+ trigger: pickTrigger(fieldName, "blur")
369
+ });
370
+ break;
371
+ case "in": {
372
+ if (!paramValues.length) {
373
+ return;
374
+ }
375
+ const allowedValues = paramValues ?? [];
376
+ fieldRules.push({
377
+ validator: createInValidator(allowedValues, getMessage(fieldName, "in", `${attributeName} must be one of: ${allowedValues.join(", ")}`)),
378
+ trigger: pickTrigger(fieldName, "change")
379
+ });
380
+ break;
381
+ }
382
+ case "numeric":
383
+ fieldRules.push({
384
+ validator: createNumericValidator(getMessage(fieldName, "numeric", `${attributeName} must be a number`)),
385
+ trigger: pickTrigger(fieldName, "blur")
386
+ });
387
+ break;
388
+ case "integer":
389
+ fieldRules.push({
390
+ validator: createIntegerValidator(getMessage(fieldName, "integer", `${attributeName} must be an integer`)),
391
+ trigger: pickTrigger(fieldName, "blur")
392
+ });
393
+ break;
394
+ case "gt": {
395
+ if (!firstParam) {
396
+ return;
397
+ }
398
+ const gtOtherAttr = attributes[firstParam] || firstParam;
399
+ fieldRules.push({
400
+ validator: createComparisonValidator(firstParam, dataToValidate, getMessage(fieldName, "gt", `${attributeName} must be greater than ${gtOtherAttr}`), (a, b) => Number(a) > Number(b)),
401
+ trigger: pickTrigger(fieldName, "blur")
402
+ });
403
+ break;
404
+ }
405
+ case "gte": {
406
+ if (!firstParam) {
407
+ return;
408
+ }
409
+ const gteOtherAttr = attributes[firstParam] || firstParam;
410
+ fieldRules.push({
411
+ validator: createComparisonValidator(firstParam, dataToValidate, getMessage(fieldName, "gte", `${attributeName} must be greater than or equal to ${gteOtherAttr}`), (a, b) => Number(a) >= Number(b)),
412
+ trigger: "blur"
413
+ });
414
+ break;
415
+ }
416
+ case "lt": {
417
+ if (!firstParam) {
418
+ return;
419
+ }
420
+ const ltOtherAttr = attributes[firstParam] || firstParam;
421
+ fieldRules.push({
422
+ validator: createComparisonValidator(firstParam, dataToValidate, getMessage(fieldName, "lt", `${attributeName} must be less than ${ltOtherAttr}`), (a, b) => Number(a) < Number(b)),
423
+ trigger: "blur"
424
+ });
425
+ break;
426
+ }
427
+ case "lte": {
428
+ if (!firstParam) {
429
+ return;
430
+ }
431
+ const lteOtherAttr = attributes[firstParam] || firstParam;
432
+ fieldRules.push({
433
+ validator: createComparisonValidator(firstParam, dataToValidate, getMessage(fieldName, "lte", `${attributeName} must be less than or equal to ${lteOtherAttr}`), (a, b) => Number(a) <= Number(b)),
434
+ trigger: "blur"
435
+ });
436
+ break;
437
+ }
438
+ case "bail":
439
+ break;
440
+ }
441
+ });
442
+ rules[fieldName] = fieldRules;
443
+ }
444
+ return rules;
445
+ };
@@ -0,0 +1,11 @@
1
+ export { type useForm } from '../dist/runtime/form.js'
2
+
3
+ export { default } from './module.mjs'
4
+
5
+ export { type ModuleOptions } from './module.mjs'
6
+
7
+ export * from '../dist/runtime/form.js'
8
+
9
+ export * from '../dist/runtime/validator.js'
10
+
11
+ export * from '../dist/runtime/helper/index.js'
package/package.json ADDED
@@ -0,0 +1,90 @@
1
+ {
2
+ "name": "@ciwergrp/nuxid",
3
+ "version": "1.0.2-release",
4
+ "description": "All-in-one essential modules for Nuxt",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "https://gitlab.com/ciwergrp/nuxid.git"
8
+ },
9
+ "keywords": [
10
+ "nuxt",
11
+ "essentials",
12
+ "nuxid"
13
+ ],
14
+ "author": {
15
+ "name": "Bagus",
16
+ "email": "bagusp81@gmail.com"
17
+ },
18
+ "license": "MIT",
19
+ "type": "module",
20
+ "exports": {
21
+ ".": {
22
+ "types": "./dist/types.d.mts",
23
+ "import": "./dist/module.mjs"
24
+ }
25
+ },
26
+ "main": "./dist/module.mjs",
27
+ "typesVersions": {
28
+ "*": {
29
+ ".": [
30
+ "./dist/types.d.mts"
31
+ ]
32
+ }
33
+ },
34
+ "bin": {
35
+ "kiban": "./bin/kiban.mjs"
36
+ },
37
+ "files": [
38
+ "dist",
39
+ "bin",
40
+ "console",
41
+ "package.json",
42
+ "README.md"
43
+ ],
44
+ "publishConfig": {
45
+ "access": "public"
46
+ },
47
+ "dependencies": {
48
+ "@element-plus/nuxt": "1.1.4",
49
+ "@formatjs/intl": "4.0.7",
50
+ "@inquirer/prompts": "8.1.0",
51
+ "@nuxt/icon": "2.1.1",
52
+ "@nuxt/kit": "4.2.2",
53
+ "@sentry/nuxt": "10.32.1",
54
+ "@sindresorhus/slugify": "3.0.0",
55
+ "@sindresorhus/transliterate": "2.3.0",
56
+ "@vueuse/nuxt": "14.1.0",
57
+ "element-plus": "2.13.0",
58
+ "hls.js": "1.6.15",
59
+ "lodash-es": "4.17.22",
60
+ "moment": "2.30.1",
61
+ "pinia": "3.0.4",
62
+ "pluralize": "8.0.0",
63
+ "socket.io-client": "4.8.3"
64
+ },
65
+ "devDependencies": {
66
+ "@nuxt/devtools": "^3.1.0",
67
+ "@nuxt/eslint-config": "^1.10.0",
68
+ "@nuxt/module-builder": "^1.0.2",
69
+ "@nuxt/schema": "^4.2.1",
70
+ "@nuxt/test-utils": "^3.20.1",
71
+ "@types/lodash-es": "^4.17.12",
72
+ "@types/node": "latest",
73
+ "changelogen": "^0.6.2",
74
+ "eslint": "^9.39.1",
75
+ "nuxt": "^4.2.1",
76
+ "typescript": "~5.9.3",
77
+ "vitest": "^4.0.13",
78
+ "vue-tsc": "^3.1.5"
79
+ },
80
+ "scripts": {
81
+ "dev": "npm run dev:prepare && nuxi dev playground",
82
+ "dev:build": "nuxi build playground",
83
+ "dev:prepare": "nuxt-module-build build --stub && nuxt-module-build prepare && nuxi prepare playground",
84
+ "release": "npm run lint && npm run test && npm run prepack && changelogen --release && npm publish && git push --follow-tags",
85
+ "lint": "eslint .",
86
+ "test": "vitest run",
87
+ "test:watch": "vitest watch",
88
+ "test:types": "vue-tsc --noEmit && cd playground && vue-tsc --noEmit"
89
+ }
90
+ }