@gzl10/nexus-sdk 0.12.7 → 0.13.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.
@@ -0,0 +1,689 @@
1
+ import {
2
+ refOptions
3
+ } from "../chunk-JIEVWBDA.js";
4
+ import {
5
+ isActiveField,
6
+ orderField,
7
+ useIconField,
8
+ useLocalizedField,
9
+ useNumberField,
10
+ useSelectField,
11
+ useTextField,
12
+ useUrlField
13
+ } from "../chunk-6WVPKBUS.js";
14
+
15
+ // src/masters/helpers.ts
16
+ var MASTER_SEED_BASE_URL = "https://gitlab.gzl10.com/oss/nexus/-/raw/main/masters/data";
17
+ function masterSeedConfig(filename, uniqueKey = "code") {
18
+ return {
19
+ source: "url",
20
+ url: `${MASTER_SEED_BASE_URL}/${filename}`,
21
+ uniqueKey
22
+ };
23
+ }
24
+ var masterIdField = {
25
+ label: "ID",
26
+ input: "text",
27
+ hidden: true,
28
+ db: { type: "string", size: 26, nullable: false }
29
+ };
30
+ var masterIsActiveField = isActiveField;
31
+ var masterOrderField = orderField;
32
+ var masterCaslPermissions = {
33
+ "*": { actions: ["read"] },
34
+ ADMIN: { actions: ["manage"] }
35
+ };
36
+ function applyMasterConfig(base, config, defaultTable, _defaultSubject) {
37
+ if (!config) return base;
38
+ const result = { ...base };
39
+ if (config.table) {
40
+ result.table = config.table;
41
+ } else if (config.tablePrefix && defaultTable) {
42
+ result.table = `${config.tablePrefix}${defaultTable}`;
43
+ }
44
+ if (config.label) {
45
+ result.label = config.label;
46
+ }
47
+ if (config.labelPlural) {
48
+ result.labelPlural = config.labelPlural;
49
+ }
50
+ if (config.caslSubject && result.casl) {
51
+ result.casl = {
52
+ ...result.casl,
53
+ subject: config.caslSubject
54
+ };
55
+ }
56
+ return result;
57
+ }
58
+ function createMasterFactory(base, defaultTable, defaultSubject) {
59
+ return (config) => applyMasterConfig(base, config, defaultTable, defaultSubject);
60
+ }
61
+
62
+ // src/masters/independent/currency.master.ts
63
+ var DEFAULT_TABLE = "currencies";
64
+ var DEFAULT_SUBJECT = "MasterCurrency";
65
+ var baseCurrencyMaster = {
66
+ type: "reference",
67
+ table: `master_${DEFAULT_TABLE}`,
68
+ routePrefix: "/currencies",
69
+ label: { en: "Currency", es: "Moneda" },
70
+ labelPlural: { en: "Currencies", es: "Monedas" },
71
+ labelField: "label",
72
+ timestamps: true,
73
+ fields: {
74
+ id: useTextField({
75
+ label: { en: "Code (ISO 4217)", es: "C\xF3digo (ISO 4217)" },
76
+ required: true,
77
+ placeholder: "EUR",
78
+ size: 3,
79
+ validation: { pattern: "^[A-Z]{3}$" },
80
+ meta: { sortable: true }
81
+ }),
82
+ symbol: useTextField({
83
+ label: { en: "Symbol", es: "S\xEDmbolo" },
84
+ required: true,
85
+ placeholder: "\u20AC",
86
+ size: 5
87
+ }),
88
+ label: useLocalizedField({ label: { en: "Name", es: "Nombre" } }),
89
+ decimals: useNumberField({
90
+ label: { en: "Decimals", es: "Decimales" },
91
+ defaultValue: 2,
92
+ nullable: false,
93
+ validation: { min: 0, max: 4 }
94
+ }),
95
+ is_active: masterIsActiveField
96
+ },
97
+ indexes: [{ columns: ["label"] }],
98
+ seed: masterSeedConfig("currencies.json", "id"),
99
+ casl: {
100
+ subject: DEFAULT_SUBJECT,
101
+ permissions: masterCaslPermissions
102
+ }
103
+ };
104
+ var currencyMaster = baseCurrencyMaster;
105
+ var createCurrencyMaster = createMasterFactory(baseCurrencyMaster, DEFAULT_TABLE, DEFAULT_SUBJECT);
106
+
107
+ // src/masters/independent/language.master.ts
108
+ var DEFAULT_TABLE2 = "languages";
109
+ var DEFAULT_SUBJECT2 = "MasterLanguage";
110
+ var baseLanguageMaster = {
111
+ type: "reference",
112
+ table: `master_${DEFAULT_TABLE2}`,
113
+ routePrefix: "/languages",
114
+ label: { en: "Language", es: "Idioma" },
115
+ labelPlural: { en: "Languages", es: "Idiomas" },
116
+ labelField: "label",
117
+ timestamps: true,
118
+ fields: {
119
+ id: useTextField({
120
+ label: { en: "Code (ISO 639-1)", es: "C\xF3digo (ISO 639-1)" },
121
+ required: true,
122
+ placeholder: "es",
123
+ size: 2,
124
+ validation: { pattern: "^[a-z]{2}$" },
125
+ meta: { sortable: true }
126
+ }),
127
+ label: useLocalizedField({ label: { en: "Name", es: "Nombre" } }),
128
+ native_name: useTextField({
129
+ label: { en: "Native Name", es: "Nombre nativo" },
130
+ required: true,
131
+ placeholder: "Espa\xF1ol",
132
+ size: 100
133
+ }),
134
+ direction: useSelectField({
135
+ label: { en: "Direction", es: "Direcci\xF3n" },
136
+ options: [
137
+ { value: "ltr", label: { en: "Left to Right", es: "Izquierda a derecha" } },
138
+ { value: "rtl", label: { en: "Right to Left", es: "Derecha a izquierda" } }
139
+ ],
140
+ defaultValue: "ltr",
141
+ nullable: false,
142
+ size: 3
143
+ }),
144
+ is_active: masterIsActiveField
145
+ },
146
+ indexes: [{ columns: ["label"] }],
147
+ seed: masterSeedConfig("languages.json", "id"),
148
+ casl: {
149
+ subject: DEFAULT_SUBJECT2,
150
+ permissions: masterCaslPermissions
151
+ }
152
+ };
153
+ var languageMaster = baseLanguageMaster;
154
+ var createLanguageMaster = createMasterFactory(baseLanguageMaster, DEFAULT_TABLE2, DEFAULT_SUBJECT2);
155
+
156
+ // src/masters/independent/timezone.master.ts
157
+ var DEFAULT_TABLE3 = "timezones";
158
+ var DEFAULT_SUBJECT3 = "MasterTimezone";
159
+ var baseTimezoneMaster = {
160
+ type: "reference",
161
+ table: `master_${DEFAULT_TABLE3}`,
162
+ routePrefix: "/timezones",
163
+ label: { en: "Timezone", es: "Zona horaria" },
164
+ labelPlural: { en: "Timezones", es: "Zonas horarias" },
165
+ labelField: "label",
166
+ timestamps: true,
167
+ fields: {
168
+ id: useTextField({
169
+ label: { en: "Timezone", es: "Zona horaria" },
170
+ required: true,
171
+ placeholder: "Europe/Madrid",
172
+ size: 50,
173
+ meta: { sortable: true }
174
+ }),
175
+ offset: useTextField({
176
+ label: { en: "UTC Offset", es: "Desfase UTC" },
177
+ required: true,
178
+ placeholder: "+01:00",
179
+ size: 10,
180
+ validation: { pattern: "^[+-]\\d{2}:\\d{2}$" },
181
+ meta: { sortable: true }
182
+ }),
183
+ label: useLocalizedField({ label: { en: "Display Label", es: "Etiqueta" } }),
184
+ is_active: masterIsActiveField
185
+ },
186
+ indexes: [{ columns: ["offset"] }],
187
+ seed: masterSeedConfig("timezones.json", "id"),
188
+ casl: {
189
+ subject: DEFAULT_SUBJECT3,
190
+ permissions: masterCaslPermissions
191
+ }
192
+ };
193
+ var timezoneMaster = baseTimezoneMaster;
194
+ var createTimezoneMaster = createMasterFactory(baseTimezoneMaster, DEFAULT_TABLE3, DEFAULT_SUBJECT3);
195
+
196
+ // src/masters/independent/social-network.master.ts
197
+ var DEFAULT_TABLE4 = "social_networks";
198
+ var DEFAULT_SUBJECT4 = "MasterSocialNetwork";
199
+ var baseSocialNetworkMaster = {
200
+ type: "reference",
201
+ table: `master_${DEFAULT_TABLE4}`,
202
+ routePrefix: "/social-networks",
203
+ label: { en: "Social Network", es: "Red social" },
204
+ labelPlural: { en: "Social Networks", es: "Redes sociales" },
205
+ labelField: "label",
206
+ timestamps: true,
207
+ fields: {
208
+ id: useTextField({
209
+ label: { en: "Code", es: "C\xF3digo" },
210
+ required: true,
211
+ placeholder: "linkedin",
212
+ size: 30,
213
+ validation: { pattern: "^[a-z]+$" }
214
+ }),
215
+ label: useTextField({
216
+ label: { en: "Name", es: "Nombre" },
217
+ required: true,
218
+ placeholder: "LinkedIn",
219
+ size: 50,
220
+ meta: { sortable: true }
221
+ }),
222
+ icon: useIconField({ label: { en: "Icon", es: "Icono" }, required: true, placeholder: "mdi:linkedin" }),
223
+ base_url: useUrlField({
224
+ label: { en: "Base URL", es: "URL base" },
225
+ placeholder: "https://linkedin.com/in/",
226
+ size: 255
227
+ }),
228
+ placeholder: useTextField({
229
+ label: { en: "Input Placeholder", es: "Placeholder" },
230
+ placeholder: "@username",
231
+ size: 100
232
+ }),
233
+ order: masterOrderField,
234
+ is_active: masterIsActiveField
235
+ },
236
+ indexes: [{ columns: ["order"] }],
237
+ seed: masterSeedConfig("social-networks.json", "id"),
238
+ casl: {
239
+ subject: DEFAULT_SUBJECT4,
240
+ permissions: masterCaslPermissions
241
+ }
242
+ };
243
+ var socialNetworkMaster = baseSocialNetworkMaster;
244
+ var createSocialNetworkMaster = createMasterFactory(baseSocialNetworkMaster, DEFAULT_TABLE4, DEFAULT_SUBJECT4);
245
+
246
+ // src/masters/independent/gender.master.ts
247
+ var DEFAULT_TABLE5 = "genders";
248
+ var DEFAULT_SUBJECT5 = "MasterGender";
249
+ var baseGenderMaster = {
250
+ type: "reference",
251
+ table: `master_${DEFAULT_TABLE5}`,
252
+ routePrefix: "/genders",
253
+ label: { en: "Gender", es: "G\xE9nero" },
254
+ labelPlural: { en: "Genders", es: "G\xE9neros" },
255
+ labelField: "label",
256
+ timestamps: true,
257
+ fields: {
258
+ id: useTextField({
259
+ label: { en: "Code", es: "C\xF3digo" },
260
+ required: true,
261
+ placeholder: "MALE",
262
+ size: 20,
263
+ validation: { pattern: "^[A-Z_]+$" }
264
+ }),
265
+ label: useLocalizedField({ label: { en: "Name", es: "Nombre" } }),
266
+ order: masterOrderField
267
+ },
268
+ indexes: [{ columns: ["order"] }],
269
+ seed: masterSeedConfig("genders.json", "id"),
270
+ casl: {
271
+ subject: DEFAULT_SUBJECT5,
272
+ permissions: masterCaslPermissions
273
+ }
274
+ };
275
+ var genderMaster = baseGenderMaster;
276
+ var createGenderMaster = createMasterFactory(baseGenderMaster, DEFAULT_TABLE5, DEFAULT_SUBJECT5);
277
+
278
+ // src/masters/independent/marital-status.master.ts
279
+ var DEFAULT_TABLE6 = "marital_statuses";
280
+ var DEFAULT_SUBJECT6 = "MasterMaritalStatus";
281
+ var baseMaritalStatusMaster = {
282
+ type: "reference",
283
+ table: `master_${DEFAULT_TABLE6}`,
284
+ routePrefix: "/marital-statuses",
285
+ label: { en: "Marital Status", es: "Estado civil" },
286
+ labelPlural: { en: "Marital Statuses", es: "Estados civiles" },
287
+ labelField: "label",
288
+ timestamps: true,
289
+ fields: {
290
+ id: useTextField({
291
+ label: { en: "Code", es: "C\xF3digo" },
292
+ required: true,
293
+ placeholder: "SINGLE",
294
+ size: 20,
295
+ validation: { pattern: "^[A-Z_]+$" }
296
+ }),
297
+ label: useLocalizedField({ label: { en: "Name", es: "Nombre" } }),
298
+ order: masterOrderField
299
+ },
300
+ indexes: [{ columns: ["order"] }],
301
+ seed: masterSeedConfig("marital-statuses.json", "id"),
302
+ casl: {
303
+ subject: DEFAULT_SUBJECT6,
304
+ permissions: masterCaslPermissions
305
+ }
306
+ };
307
+ var maritalStatusMaster = baseMaritalStatusMaster;
308
+ var createMaritalStatusMaster = createMasterFactory(baseMaritalStatusMaster, DEFAULT_TABLE6, DEFAULT_SUBJECT6);
309
+
310
+ // src/masters/independent/education-level.master.ts
311
+ var DEFAULT_TABLE7 = "education_levels";
312
+ var DEFAULT_SUBJECT7 = "MasterEducationLevel";
313
+ var baseEducationLevelMaster = {
314
+ type: "reference",
315
+ table: `master_${DEFAULT_TABLE7}`,
316
+ routePrefix: "/education-levels",
317
+ label: { en: "Education Level", es: "Nivel de estudios" },
318
+ labelPlural: { en: "Education Levels", es: "Niveles de estudios" },
319
+ labelField: "label",
320
+ timestamps: true,
321
+ fields: {
322
+ id: useTextField({
323
+ label: { en: "Code", es: "C\xF3digo" },
324
+ required: true,
325
+ placeholder: "BACHELOR",
326
+ size: 30,
327
+ validation: { pattern: "^[A-Z_]+$" }
328
+ }),
329
+ label: useLocalizedField({ label: { en: "Name", es: "Nombre" } }),
330
+ order: {
331
+ ...masterOrderField,
332
+ hint: { en: "Lower = less education", es: "Menor = menos estudios" }
333
+ }
334
+ },
335
+ indexes: [{ columns: ["order"] }],
336
+ seed: masterSeedConfig("education-levels.json", "id"),
337
+ casl: {
338
+ subject: DEFAULT_SUBJECT7,
339
+ permissions: masterCaslPermissions
340
+ }
341
+ };
342
+ var educationLevelMaster = baseEducationLevelMaster;
343
+ var createEducationLevelMaster = createMasterFactory(baseEducationLevelMaster, DEFAULT_TABLE7, DEFAULT_SUBJECT7);
344
+
345
+ // src/masters/independent/industry.master.ts
346
+ var DEFAULT_TABLE8 = "industries";
347
+ var DEFAULT_SUBJECT8 = "MasterIndustry";
348
+ var baseIndustryMaster = {
349
+ type: "reference",
350
+ table: `master_${DEFAULT_TABLE8}`,
351
+ routePrefix: "/industries",
352
+ label: { en: "Industry", es: "Industria" },
353
+ labelPlural: { en: "Industries", es: "Industrias" },
354
+ labelField: "label",
355
+ timestamps: true,
356
+ fields: {
357
+ id: useTextField({
358
+ label: { en: "Code", es: "C\xF3digo" },
359
+ required: true,
360
+ placeholder: "TECH",
361
+ size: 30,
362
+ validation: { pattern: "^[A-Z_]+$" }
363
+ }),
364
+ label: useLocalizedField({ label: { en: "Name", es: "Nombre" } }),
365
+ icon: useIconField({ label: { en: "Icon", es: "Icono" }, placeholder: "mdi:factory" }),
366
+ order: masterOrderField
367
+ },
368
+ indexes: [{ columns: ["order"] }],
369
+ seed: masterSeedConfig("industries.json", "id"),
370
+ casl: {
371
+ subject: DEFAULT_SUBJECT8,
372
+ permissions: masterCaslPermissions
373
+ }
374
+ };
375
+ var industryMaster = baseIndustryMaster;
376
+ var createIndustryMaster = createMasterFactory(baseIndustryMaster, DEFAULT_TABLE8, DEFAULT_SUBJECT8);
377
+
378
+ // src/masters/independent/company-type.master.ts
379
+ var DEFAULT_TABLE9 = "company_types";
380
+ var DEFAULT_SUBJECT9 = "MasterCompanyType";
381
+ var baseCompanyTypeMaster = {
382
+ type: "reference",
383
+ table: `master_${DEFAULT_TABLE9}`,
384
+ routePrefix: "/company-types",
385
+ label: { en: "Company Type", es: "Tipo de empresa" },
386
+ labelPlural: { en: "Company Types", es: "Tipos de empresa" },
387
+ labelField: "label",
388
+ timestamps: true,
389
+ fields: {
390
+ id: useTextField({
391
+ label: { en: "Code", es: "C\xF3digo" },
392
+ required: true,
393
+ placeholder: "SL",
394
+ size: 20
395
+ }),
396
+ label: useLocalizedField({ label: { en: "Name", es: "Nombre" } }),
397
+ description: {
398
+ label: { en: "Description", es: "Descripci\xF3n" },
399
+ input: "textarea",
400
+ db: { type: "json", nullable: true },
401
+ meta: { searchable: true }
402
+ },
403
+ order: masterOrderField
404
+ },
405
+ indexes: [{ columns: ["order"] }],
406
+ seed: masterSeedConfig("company-types.json", "id"),
407
+ casl: {
408
+ subject: DEFAULT_SUBJECT9,
409
+ permissions: masterCaslPermissions
410
+ }
411
+ };
412
+ var companyTypeMaster = baseCompanyTypeMaster;
413
+ var createCompanyTypeMaster = createMasterFactory(baseCompanyTypeMaster, DEFAULT_TABLE9, DEFAULT_SUBJECT9);
414
+
415
+ // src/masters/independent/unit.master.ts
416
+ var DEFAULT_TABLE10 = "units";
417
+ var DEFAULT_SUBJECT10 = "MasterUnit";
418
+ var baseUnitMaster = {
419
+ type: "reference",
420
+ table: `master_${DEFAULT_TABLE10}`,
421
+ routePrefix: "/units",
422
+ label: { en: "Unit of Measure", es: "Unidad de medida" },
423
+ labelPlural: { en: "Units of Measure", es: "Unidades de medida" },
424
+ labelField: "label",
425
+ timestamps: true,
426
+ fields: {
427
+ id: useTextField({
428
+ label: { en: "Code", es: "C\xF3digo" },
429
+ required: true,
430
+ placeholder: "KG",
431
+ size: 10
432
+ }),
433
+ label: useLocalizedField({ label: { en: "Name", es: "Nombre" } }),
434
+ symbol: useTextField({
435
+ label: { en: "Symbol", es: "S\xEDmbolo" },
436
+ required: true,
437
+ placeholder: "kg",
438
+ size: 10
439
+ }),
440
+ category: useSelectField({
441
+ label: { en: "Category", es: "Categor\xEDa" },
442
+ options: [
443
+ { value: "weight", label: { en: "Weight", es: "Peso" } },
444
+ { value: "volume", label: { en: "Volume", es: "Volumen" } },
445
+ { value: "length", label: { en: "Length", es: "Longitud" } },
446
+ { value: "area", label: { en: "Area", es: "\xC1rea" } },
447
+ { value: "count", label: { en: "Count", es: "Cantidad" } },
448
+ { value: "time", label: { en: "Time", es: "Tiempo" } },
449
+ { value: "other", label: { en: "Other", es: "Otro" } }
450
+ ],
451
+ required: true,
452
+ size: 20,
453
+ meta: { sortable: true }
454
+ }),
455
+ order: masterOrderField
456
+ },
457
+ indexes: [{ columns: ["category", "order"] }],
458
+ seed: masterSeedConfig("units.json", "id"),
459
+ casl: {
460
+ subject: DEFAULT_SUBJECT10,
461
+ permissions: masterCaslPermissions
462
+ }
463
+ };
464
+ var unitMaster = baseUnitMaster;
465
+ var createUnitMaster = createMasterFactory(baseUnitMaster, DEFAULT_TABLE10, DEFAULT_SUBJECT10);
466
+
467
+ // src/masters/independent/product-category.master.ts
468
+ var DEFAULT_TABLE11 = "product_categories";
469
+ var DEFAULT_SUBJECT11 = "MasterProductCategory";
470
+ var baseProductCategoryMaster = {
471
+ type: "reference",
472
+ table: `master_${DEFAULT_TABLE11}`,
473
+ routePrefix: "/product-categories",
474
+ label: { en: "Product Category", es: "Categor\xEDa de producto" },
475
+ labelPlural: { en: "Product Categories", es: "Categor\xEDas de productos" },
476
+ labelField: "label",
477
+ timestamps: true,
478
+ fields: {
479
+ id: useTextField({
480
+ label: { en: "Code", es: "C\xF3digo" },
481
+ required: true,
482
+ placeholder: "ELECTRONICS",
483
+ size: 30,
484
+ validation: { pattern: "^[A-Z_]+$" }
485
+ }),
486
+ label: useLocalizedField({ label: { en: "Name", es: "Nombre" } }),
487
+ parent_id: {
488
+ label: { en: "Parent Category", es: "Categor\xEDa padre" },
489
+ input: "select",
490
+ db: { type: "string", size: 30, nullable: true },
491
+ relation: {
492
+ table: "master_product_categories",
493
+ column: "id",
494
+ onDelete: "SET NULL"
495
+ },
496
+ options: refOptions("masters", "product-categories")
497
+ },
498
+ icon: useIconField({ label: { en: "Icon", es: "Icono" }, placeholder: "mdi:laptop" }),
499
+ order: masterOrderField
500
+ },
501
+ indexes: [
502
+ { columns: ["parent_id"] },
503
+ { columns: ["order"] }
504
+ ],
505
+ seed: masterSeedConfig("product-categories.json", "id"),
506
+ casl: {
507
+ subject: DEFAULT_SUBJECT11,
508
+ permissions: masterCaslPermissions
509
+ }
510
+ };
511
+ var productCategoryMaster = baseProductCategoryMaster;
512
+ var createProductCategoryMaster = createMasterFactory(baseProductCategoryMaster, DEFAULT_TABLE11, DEFAULT_SUBJECT11);
513
+
514
+ // src/masters/independent/location.master.ts
515
+ var DEFAULT_TABLE12 = "locations";
516
+ var DEFAULT_SUBJECT12 = "MasterLocation";
517
+ var baseLocationMaster = {
518
+ type: "tree",
519
+ table: `master_${DEFAULT_TABLE12}`,
520
+ routePrefix: "/locations",
521
+ label: { en: "Location", es: "Ubicaci\xF3n" },
522
+ labelPlural: { en: "Locations", es: "Ubicaciones" },
523
+ labelField: "label",
524
+ timestamps: true,
525
+ allowCreate: false,
526
+ allowEdit: false,
527
+ allowDelete: false,
528
+ fields: {
529
+ id: useTextField({
530
+ label: { en: "Code", es: "C\xF3digo" },
531
+ required: true,
532
+ placeholder: "ES, ES-M, ES-M-28001",
533
+ size: 20
534
+ }),
535
+ label: useLocalizedField({ label: { en: "Name", es: "Nombre" } }),
536
+ level: useSelectField({
537
+ label: { en: "Level", es: "Nivel" },
538
+ options: [
539
+ { value: "country", label: { en: "Country", es: "Pa\xEDs" } },
540
+ { value: "province", label: { en: "Province", es: "Provincia" } },
541
+ { value: "city", label: { en: "City", es: "Ciudad" } }
542
+ ],
543
+ required: true,
544
+ size: 10,
545
+ meta: { sortable: true }
546
+ }),
547
+ code: useTextField({
548
+ label: { en: "ISO/Postal Code", es: "C\xF3digo ISO/Postal" },
549
+ placeholder: "ES, M, 28001",
550
+ size: 10
551
+ }),
552
+ lat: {
553
+ label: { en: "Latitude", es: "Latitud" },
554
+ input: "number",
555
+ db: { type: "decimal", precision: [10, 6], nullable: true }
556
+ },
557
+ lng: {
558
+ label: { en: "Longitude", es: "Longitud" },
559
+ input: "number",
560
+ db: { type: "decimal", precision: [10, 6], nullable: true }
561
+ },
562
+ is_active: masterIsActiveField
563
+ },
564
+ indexes: [
565
+ { columns: ["level"] },
566
+ { columns: ["code"] }
567
+ ],
568
+ seed: masterSeedConfig("locations.json", "id"),
569
+ casl: {
570
+ subject: DEFAULT_SUBJECT12,
571
+ permissions: masterCaslPermissions
572
+ }
573
+ };
574
+ var locationMaster = baseLocationMaster;
575
+ var createLocationMaster = createMasterFactory(baseLocationMaster, DEFAULT_TABLE12, DEFAULT_SUBJECT12);
576
+
577
+ // src/masters/dependent/phone-prefix.master.ts
578
+ var DEFAULT_TABLE13 = "phone_prefixes";
579
+ var DEFAULT_SUBJECT13 = "MasterPhonePrefix";
580
+ var basePhonePrefixMaster = {
581
+ type: "reference",
582
+ table: `master_${DEFAULT_TABLE13}`,
583
+ routePrefix: "/phone-prefixes",
584
+ label: { en: "Phone Prefix", es: "Prefijo telef\xF3nico" },
585
+ labelPlural: { en: "Phone Prefixes", es: "Prefijos telef\xF3nicos" },
586
+ labelField: "label",
587
+ timestamps: true,
588
+ fields: {
589
+ id: useTextField({
590
+ label: { en: "Prefix", es: "Prefijo" },
591
+ required: true,
592
+ placeholder: "+34",
593
+ size: 10,
594
+ validation: { pattern: "^\\+\\d{1,4}$" },
595
+ meta: { sortable: true }
596
+ }),
597
+ label: useTextField({
598
+ label: { en: "Display Label", es: "Etiqueta" },
599
+ required: true,
600
+ placeholder: "+34 (Spain)",
601
+ size: 50
602
+ }),
603
+ format: useTextField({
604
+ label: { en: "Format Mask", es: "M\xE1scara de formato" },
605
+ hint: { en: "X = digit, e.g. +XX XXX XXX XXX", es: "X = d\xEDgito, ej. +XX XXX XXX XXX" },
606
+ placeholder: "+XX XXX XXX XXX",
607
+ size: 50
608
+ })
609
+ },
610
+ indexes: [],
611
+ seed: masterSeedConfig("phone-prefixes.json", "id"),
612
+ casl: {
613
+ subject: DEFAULT_SUBJECT13,
614
+ permissions: masterCaslPermissions
615
+ }
616
+ };
617
+ var phonePrefixMaster = basePhonePrefixMaster;
618
+ var createPhonePrefixMaster = createMasterFactory(basePhonePrefixMaster, DEFAULT_TABLE13, DEFAULT_SUBJECT13);
619
+
620
+ // src/masters/dependent/document-type.master.ts
621
+ var DEFAULT_TABLE14 = "document_types";
622
+ var DEFAULT_SUBJECT14 = "MasterDocumentType";
623
+ var baseDocumentTypeMaster = {
624
+ type: "reference",
625
+ table: `master_${DEFAULT_TABLE14}`,
626
+ routePrefix: "/document-types",
627
+ label: { en: "Document Type", es: "Tipo de documento" },
628
+ labelPlural: { en: "Document Types", es: "Tipos de documento" },
629
+ labelField: "label",
630
+ timestamps: true,
631
+ fields: {
632
+ id: useTextField({
633
+ label: { en: "Code", es: "C\xF3digo" },
634
+ required: true,
635
+ placeholder: "DNI",
636
+ size: 20
637
+ }),
638
+ label: useLocalizedField({ label: { en: "Name", es: "Nombre" } }),
639
+ pattern: useTextField({
640
+ label: { en: "Validation Pattern", es: "Patr\xF3n de validaci\xF3n" },
641
+ hint: { en: "Regex pattern for validation", es: "Patr\xF3n regex para validaci\xF3n" },
642
+ placeholder: "^[0-9]{8}[A-Z]$"
643
+ })
644
+ },
645
+ indexes: [],
646
+ seed: masterSeedConfig("document-types.json", "id"),
647
+ casl: {
648
+ subject: DEFAULT_SUBJECT14,
649
+ permissions: masterCaslPermissions
650
+ }
651
+ };
652
+ var documentTypeMaster = baseDocumentTypeMaster;
653
+ var createDocumentTypeMaster = createMasterFactory(baseDocumentTypeMaster, DEFAULT_TABLE14, DEFAULT_SUBJECT14);
654
+ export {
655
+ applyMasterConfig,
656
+ companyTypeMaster,
657
+ createCompanyTypeMaster,
658
+ createCurrencyMaster,
659
+ createDocumentTypeMaster,
660
+ createEducationLevelMaster,
661
+ createGenderMaster,
662
+ createIndustryMaster,
663
+ createLanguageMaster,
664
+ createLocationMaster,
665
+ createMaritalStatusMaster,
666
+ createMasterFactory,
667
+ createPhonePrefixMaster,
668
+ createProductCategoryMaster,
669
+ createSocialNetworkMaster,
670
+ createTimezoneMaster,
671
+ createUnitMaster,
672
+ currencyMaster,
673
+ documentTypeMaster,
674
+ educationLevelMaster,
675
+ genderMaster,
676
+ industryMaster,
677
+ languageMaster,
678
+ locationMaster,
679
+ maritalStatusMaster,
680
+ masterCaslPermissions,
681
+ masterIdField,
682
+ masterIsActiveField,
683
+ masterOrderField,
684
+ phonePrefixMaster,
685
+ productCategoryMaster,
686
+ socialNetworkMaster,
687
+ timezoneMaster,
688
+ unitMaster
689
+ };