@routebot/constants 0.3.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.
package/README.md ADDED
@@ -0,0 +1,9 @@
1
+ # @routebot/constants
2
+
3
+ Shared constants (FE/BE).
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm i @routebot/constants
9
+ ```
@@ -0,0 +1,177 @@
1
+ const CURRENT_EDUCATION_YEAR_ID = "661c8d1e862b3f2c307b1276";
2
+
3
+ const IOS_APP_LINK = "https://tinyurl.com/servistesinios";
4
+ const ANDROID_APP_LINK = "https://tinyurl.com/servistesinandroid";
5
+
6
+ // people that can use app
7
+ const USER_TYPES = {
8
+ DRIVER: "50",
9
+ SCHOOL_PARENT: "2",
10
+ PERSONEL: "10",
11
+ };
12
+
13
+ const CLIENT_ROLES = {
14
+ SUPER_ADMIN: "super_admin",
15
+ OWNER: "owner",
16
+ ADMIN: "admin",
17
+ EDITOR: "editor",
18
+ VIEWER: "viewer",
19
+ DEMO: "demo",
20
+ };
21
+
22
+ const SERVICE_TYPES = {
23
+ SCHOOL: "school",
24
+ SOUTHWIND: "southwind", //school ile ayni sadece isimlendirmelerde personel yazmasi gerekiyor
25
+ PERSONEL: "personel", // bu farklı olan
26
+ };
27
+
28
+ const SCHOOL_TYPES = {
29
+ SCHOOL: "1",
30
+ PERSONEL: "2",
31
+ };
32
+
33
+ // Helpers
34
+ function isSchoolPersonel(school) {
35
+ return school?.type === SCHOOL_TYPES.PERSONEL;
36
+ }
37
+
38
+ const OPTION_TYPES = {
39
+ TR: {
40
+ USER_TYPES_SCHOOL: [
41
+ { value: USER_TYPES.SCHOOL_PARENT, label: "Veli" },
42
+ { value: USER_TYPES.DRIVER, label: "Sürücü" },
43
+ ],
44
+
45
+ USER_TYPES_PERSONEL: [
46
+ { value: USER_TYPES.PERSONEL, label: "Personel" },
47
+ { value: USER_TYPES.DRIVER, label: "Sürücü" },
48
+ ],
49
+ },
50
+
51
+ EN: {
52
+ USER_TYPES_SCHOOL: [
53
+ { value: USER_TYPES.SCHOOL_PARENT, label: "Parent" },
54
+ { value: USER_TYPES.DRIVER, label: "Driver" },
55
+ ],
56
+
57
+ USER_TYPES_PERSONEL: [
58
+ { value: USER_TYPES.PERSONEL, label: "Passenger" },
59
+ { value: USER_TYPES.DRIVER, label: "Driver" },
60
+ ],
61
+ },
62
+ };
63
+
64
+ const SPECIAL_USER_IDS = {
65
+ DEMO_USER: "65dc104970167a3c6ca464b0",
66
+ DEMO_DRIVER: "61aee5393958380016e7db4b",
67
+ SYSTEM_TEST_USER: "61e3c7a2cd698a001617f59e",
68
+ SYSTEM_TEST_DRIVER: "62e32eef3da7b2508040c4d3",
69
+ DEFAULT_DRIVER: "63299827ef13360016a66e81",
70
+ UNKOWN_USER: "6255585f62dc1a001650b3ef",
71
+ BENIM_NUMARAM_TEST: "68068979156e55241cc7d6d8",
72
+ };
73
+
74
+ const SPECIAL_STUDENT_IDS = {
75
+ DEMO_STUDENT_1: "61c04423d794c8001693b322",
76
+ DEMO_STUDENT_2: "61c04443d794c8001693b329",
77
+ DEMO_STUDENT_3: "61c0445bd794c8001693b32f",
78
+ UNKOWN_STUDENT: "6718df09c33300ede6031275",
79
+ };
80
+
81
+ const SPECIAL_RELATION_IDS = {
82
+ DEMO_RELATION_1: "66ec34a3e9c63300158486a5",
83
+ DEMO_RELATION_2: "66eec2cfdc3f2b00154c3eaa",
84
+ SYSTEM_TEST_RELATION_1: "66eedb022c1eb2001519ae5b",
85
+ SYSTEM_TEST_RELATION_2: "66eedb1606a73e001511b514",
86
+ };
87
+
88
+ const SPECIAL_VEHICLE_ROUTEIDS = {
89
+ DEMO_VEHICLE_ROUTE_1: "66eeda6f6e82d500152a739c",
90
+ DEMO_VEHICLE_ROUTE_2: "66f16438456f910015197941",
91
+ };
92
+
93
+ const SPECIAL_ATTENDANT_IDS = {
94
+ SYSTEM_ATTENDANT: "688e90e2bdb41d0b22efdb43",
95
+ };
96
+
97
+ const FORBIDDEN_IDS = [
98
+ ...Object.values(SPECIAL_USER_IDS),
99
+ ...Object.values(SPECIAL_STUDENT_IDS),
100
+ ...Object.values(SPECIAL_RELATION_IDS),
101
+ ...Object.values(SPECIAL_VEHICLE_ROUTEIDS),
102
+ ...Object.values(SPECIAL_ATTENDANT_IDS),
103
+ ];
104
+
105
+ const HTTP_CODES = {
106
+ OK: 200,
107
+ CREATED: 201,
108
+ ACCEPTED: 202,
109
+ NO_CONTENT: 204,
110
+ MOVED_PERMANENTLY: 301,
111
+ FOUND: 302,
112
+ NOT_MODIFIED: 304,
113
+ BAD_REQUEST: 400,
114
+ UNAUTHORIZED: 401,
115
+ FORBIDDEN: 403,
116
+ NOT_FOUND: 404,
117
+ METHOD_NOT_ALLOWED: 405,
118
+ CONFLICT: 409,
119
+ GONE: 410,
120
+ PAYLOAD_TOO_LARGE: 413,
121
+ UNSUPPORTED_MEDIA_TYPE: 415,
122
+ UNPROCESSABLE_ENTITY: 422,
123
+ TOO_MANY_REQUESTS: 429,
124
+ ITEM_NOT_FOUND: 430,
125
+ INTERNAL_SERVER_ERROR: 500,
126
+ NOT_IMPLEMENTED: 501,
127
+ BAD_GATEWAY: 502,
128
+ SERVICE_UNAVAILABLE: 503,
129
+ GATEWAY_TIMEOUT: 504,
130
+ EMAIL_NOT_VERIFIED: 510,
131
+ INVALID_ORIGIN_POINT: 511,
132
+ INVALID_DESTINATION_POINT: 512,
133
+ DIRECTION_NOT_FOUND: 513,
134
+ FILE_NOT_FOUND: 514,
135
+ INVALID_INPUT: 515,
136
+ NO_GENEL_LISTE_SHEET: 516,
137
+ NOT_ACTIONABLE: 517,
138
+ USER_HAS_RELATION: 601,
139
+ USER_IN_A_SERVICE: 602,
140
+ STUDENT_HAS_RELATION: 603,
141
+ STUDENT_IN_A_SERVICE: 604,
142
+ STUDENT_HAS_CONTRACT: 605,
143
+ STUDENT_ALREADY_EXISTS: 606,
144
+ RELATION_ALREADY_EXISTS: 607,
145
+ INVALID_LOCATION: 608,
146
+ SMS_NOT_SENT: 609,
147
+ STOP_HAS_USER: 610,
148
+ SAME_USER_WITH_SAME_PHONE: 611,
149
+ MULTIPLE_SHEETS_NOT_ALLOWED_IN_EXCEL: 612,
150
+ CONTRACT_HAS_RECEIPT: 613,
151
+ CONTRACT_HAS_WITHDRAW: 614,
152
+ INVALID_EXCEL_FORMAT: 615,
153
+ VEHICLE_ALREADY_EXISTS: 616,
154
+ IDENTITY_ALREADY_EXISTS: 617,
155
+ USER_IN_A_DRIVER_DETAILS: 618,
156
+ ATTENDANT_HAS_VEHICLE: 619,
157
+ SCHOOL_HAD_TIED_TO_DATA: 620,
158
+ TRANSFERREGION_HAS_USER: 621,
159
+ TRANSFERREGION_HAS_PERSONEL_SERVICE: 622,
160
+ TRANSFERREGION_HAS_VEHICLE_ROUTE: 623,
161
+ };
162
+
163
+ module.exports = {
164
+ HTTP_CODES,
165
+ CLIENT_ROLES,
166
+ SERVICE_TYPES,
167
+ OPTION_TYPES,
168
+ SPECIAL_USER_IDS,
169
+ SPECIAL_STUDENT_IDS,
170
+ FORBIDDEN_IDS,
171
+ CURRENT_EDUCATION_YEAR_ID,
172
+ USER_TYPES,
173
+ IOS_APP_LINK,
174
+ ANDROID_APP_LINK,
175
+ SCHOOL_TYPES,
176
+ isSchoolPersonel,
177
+ };
@@ -0,0 +1,168 @@
1
+ const COUNTRIES = [
2
+ { code: "TR", value_en: "Turkey", value_tr: "Türkiye", phonePrefix: "+90", smsEnabled: true },
3
+ {
4
+ code: "US",
5
+ value_en: "United States",
6
+ value_tr: "Amerika Birleşik Devletleri",
7
+ phonePrefix: "+1",
8
+ smsEnabled: false,
9
+ },
10
+ { code: "GB", value_en: "United Kingdom", value_tr: "Birleşik Krallık", phonePrefix: "+44", smsEnabled: false },
11
+ { code: "DE", value_en: "Germany", value_tr: "Almanya", phonePrefix: "+49", smsEnabled: false },
12
+ { code: "FR", value_en: "France", value_tr: "Fransa", phonePrefix: "+33", smsEnabled: false },
13
+ { code: "NL", value_en: "Netherlands", value_tr: "Hollanda", phonePrefix: "+31", smsEnabled: false },
14
+ { code: "CA", value_en: "Canada", value_tr: "Kanada", phonePrefix: "+1", smsEnabled: false },
15
+ { code: "ES", value_en: "Spain", value_tr: "İspanya", phonePrefix: "+34", smsEnabled: false },
16
+ { code: "IT", value_en: "Italy", value_tr: "İtalya", phonePrefix: "+39", smsEnabled: false },
17
+ {
18
+ code: "AE",
19
+ value_en: "United Arab Emirates",
20
+ value_tr: "Birleşik Arap Emirlikleri",
21
+ phonePrefix: "+971",
22
+ smsEnabled: false,
23
+ },
24
+ { code: "RU", value_en: "Russia", value_tr: "Rusya", phonePrefix: "+7", smsEnabled: false },
25
+ { code: "IN", value_en: "India", value_tr: "Hindistan", phonePrefix: "+91", smsEnabled: false },
26
+ { code: "CN", value_en: "China", value_tr: "Çin", phonePrefix: "+86", smsEnabled: false },
27
+ { code: "JP", value_en: "Japan", value_tr: "Japonya", phonePrefix: "+81", smsEnabled: false },
28
+ { code: "KR", value_en: "South Korea", value_tr: "Güney Kore", phonePrefix: "+82", smsEnabled: false },
29
+ { code: "BR", value_en: "Brazil", value_tr: "Brezilya", phonePrefix: "+55", smsEnabled: false },
30
+ { code: "AR", value_en: "Argentina", value_tr: "Arjantin", phonePrefix: "+54", smsEnabled: false },
31
+ { code: "MX", value_en: "Mexico", value_tr: "Meksika", phonePrefix: "+52", smsEnabled: false },
32
+ { code: "SA", value_en: "Saudi Arabia", value_tr: "Suudi Arabistan", phonePrefix: "+966", smsEnabled: false },
33
+ { code: "ZA", value_en: "South Africa", value_tr: "Güney Afrika", phonePrefix: "+27", smsEnabled: false },
34
+ { code: "PK", value_en: "Pakistan", value_tr: "Pakistan", phonePrefix: "+92", smsEnabled: false },
35
+ { code: "ID", value_en: "Indonesia", value_tr: "Endonezya", phonePrefix: "+62", smsEnabled: false },
36
+ { code: "BD", value_en: "Bangladesh", value_tr: "Bangladeş", phonePrefix: "+880", smsEnabled: false },
37
+ { code: "IR", value_en: "Iran", value_tr: "İran", phonePrefix: "+98", smsEnabled: false },
38
+ { code: "IQ", value_en: "Iraq", value_tr: "Irak", phonePrefix: "+964", smsEnabled: false },
39
+ { code: "SY", value_en: "Syria", value_tr: "Suriye", phonePrefix: "+963", smsEnabled: false },
40
+ { code: "JO", value_en: "Jordan", value_tr: "Ürdün", phonePrefix: "+962", smsEnabled: false },
41
+ { code: "LB", value_en: "Lebanon", value_tr: "Lübnan", phonePrefix: "+961", smsEnabled: false },
42
+ { code: "UA", value_en: "Ukraine", value_tr: "Ukrayna", phonePrefix: "+380", smsEnabled: false },
43
+ { code: "PL", value_en: "Poland", value_tr: "Polonya", phonePrefix: "+48", smsEnabled: false },
44
+ { code: "SE", value_en: "Sweden", value_tr: "İsveç", phonePrefix: "+46", smsEnabled: false },
45
+ { code: "NO", value_en: "Norway", value_tr: "Norveç", phonePrefix: "+47", smsEnabled: false },
46
+ { code: "FI", value_en: "Finland", value_tr: "Finlandiya", phonePrefix: "+358", smsEnabled: false },
47
+ { code: "GR", value_en: "Greece", value_tr: "Yunanistan", phonePrefix: "+30", smsEnabled: false },
48
+ { code: "CH", value_en: "Switzerland", value_tr: "İsviçre", phonePrefix: "+41", smsEnabled: false },
49
+ { code: "BE", value_en: "Belgium", value_tr: "Belçika", phonePrefix: "+32", smsEnabled: false },
50
+ { code: "AT", value_en: "Austria", value_tr: "Avusturya", phonePrefix: "+43", smsEnabled: false },
51
+ { code: "PT", value_en: "Portugal", value_tr: "Portekiz", phonePrefix: "+351", smsEnabled: false },
52
+ { code: "CO", value_en: "Colombia", value_tr: "Kolombiya", phonePrefix: "+57", smsEnabled: false },
53
+ { code: "NG", value_en: "Nigeria", value_tr: "Nijerya", phonePrefix: "+234", smsEnabled: false },
54
+ { code: "KE", value_en: "Kenya", value_tr: "Kenya", phonePrefix: "+254", smsEnabled: false },
55
+ { code: "EG", value_en: "Egypt", value_tr: "Mısır", phonePrefix: "+20", smsEnabled: false },
56
+ { code: "AU", value_en: "Australia", value_tr: "Avustralya", phonePrefix: "+61", smsEnabled: false },
57
+ { code: "NZ", value_en: "New Zealand", value_tr: "Yeni Zelanda", phonePrefix: "+64", smsEnabled: false },
58
+ { code: "SG", value_en: "Singapore", value_tr: "Singapur", phonePrefix: "+65", smsEnabled: false },
59
+ { code: "MY", value_en: "Malaysia", value_tr: "Malezya", phonePrefix: "+60", smsEnabled: false },
60
+ { code: "TH", value_en: "Thailand", value_tr: "Tayland", phonePrefix: "+66", smsEnabled: false },
61
+ { code: "VN", value_en: "Vietnam", value_tr: "Vietnam", phonePrefix: "+84", smsEnabled: false },
62
+ { code: "PH", value_en: "Philippines", value_tr: "Filipinler", phonePrefix: "+63", smsEnabled: false },
63
+ { code: "HK", value_en: "Hong Kong", value_tr: "Hong Kong", phonePrefix: "+852", smsEnabled: false },
64
+ { code: "TW", value_en: "Taiwan", value_tr: "Tayvan", phonePrefix: "+886", smsEnabled: false },
65
+ { code: "IL", value_en: "Israel", value_tr: "İsrail", phonePrefix: "+972", smsEnabled: false },
66
+ { code: "CZ", value_en: "Czech Republic", value_tr: "Çekya", phonePrefix: "+420", smsEnabled: false },
67
+ { code: "HU", value_en: "Hungary", value_tr: "Macaristan", phonePrefix: "+36", smsEnabled: false },
68
+ { code: "RO", value_en: "Romania", value_tr: "Romanya", phonePrefix: "+40", smsEnabled: false },
69
+ { code: "SK", value_en: "Slovakia", value_tr: "Slovakya", phonePrefix: "+421", smsEnabled: false },
70
+ { code: "BG", value_en: "Bulgaria", value_tr: "Bulgaristan", phonePrefix: "+359", smsEnabled: false },
71
+ { code: "HR", value_en: "Croatia", value_tr: "Hırvatistan", phonePrefix: "+385", smsEnabled: false },
72
+ { code: "SI", value_en: "Slovenia", value_tr: "Slovenya", phonePrefix: "+386", smsEnabled: false },
73
+ { code: "GE", value_en: "Georgia", value_tr: "Gürcistan", phonePrefix: "+995", smsEnabled: false },
74
+ { code: "AZ", value_en: "Azerbaijan", value_tr: "Azerbaycan", phonePrefix: "+994", smsEnabled: false },
75
+ { code: "KZ", value_en: "Kazakhstan", value_tr: "Kazakistan", phonePrefix: "+7", smsEnabled: false },
76
+ { code: "RS", value_en: "Serbia", value_tr: "Sırbistan", phonePrefix: "+381", smsEnabled: false },
77
+ { code: "BA", value_en: "Bosnia and Herzegovina", value_tr: "Bosna Hersek", phonePrefix: "+387", smsEnabled: false },
78
+ { code: "MK", value_en: "North Macedonia", value_tr: "Kuzey Makedonya", phonePrefix: "+389", smsEnabled: false },
79
+ { code: "AL", value_en: "Albania", value_tr: "Arnavutluk", phonePrefix: "+355", smsEnabled: false },
80
+ { code: "IE", value_en: "Ireland", value_tr: "İrlanda", phonePrefix: "+353", smsEnabled: false },
81
+ { code: "IS", value_en: "Iceland", value_tr: "İzlanda", phonePrefix: "+354", smsEnabled: false },
82
+ { code: "CL", value_en: "Chile", value_tr: "Şili", phonePrefix: "+56", smsEnabled: false },
83
+ { code: "DZ", value_en: "Algeria", value_tr: "Cezayir", phonePrefix: "+213", smsEnabled: false },
84
+ { code: "MA", value_en: "Morocco", value_tr: "Fas", phonePrefix: "+212", smsEnabled: false },
85
+ { code: "TN", value_en: "Tunisia", value_tr: "Tunus", phonePrefix: "+216", smsEnabled: false },
86
+ { code: "PE", value_en: "Peru", value_tr: "Peru", phonePrefix: "+51", smsEnabled: false },
87
+ { code: "VE", value_en: "Venezuela", value_tr: "Venezuela", phonePrefix: "+58", smsEnabled: false },
88
+ { code: "EC", value_en: "Ecuador", value_tr: "Ekvador", phonePrefix: "+593", smsEnabled: false },
89
+ { code: "CU", value_en: "Cuba", value_tr: "Küba", phonePrefix: "+53", smsEnabled: false },
90
+ { code: "QA", value_en: "Qatar", value_tr: "Katar", phonePrefix: "+974", smsEnabled: false },
91
+ { code: "KW", value_en: "Kuwait", value_tr: "Kuveyt", phonePrefix: "+965", smsEnabled: false },
92
+ { code: "OM", value_en: "Oman", value_tr: "Umman", phonePrefix: "+968", smsEnabled: false },
93
+ { code: "BH", value_en: "Bahrain", value_tr: "Bahreyn", phonePrefix: "+973", smsEnabled: false },
94
+ { code: "LU", value_en: "Luxembourg", value_tr: "Lüksemburg", phonePrefix: "+352", smsEnabled: false },
95
+ { code: "MT", value_en: "Malta", value_tr: "Malta", phonePrefix: "+356", smsEnabled: false },
96
+ { code: "CY", value_en: "Cyprus", value_tr: "Kıbrıs", phonePrefix: "+357", smsEnabled: false },
97
+ { code: "EE", value_en: "Estonia", value_tr: "Estonya", phonePrefix: "+372", smsEnabled: false },
98
+ { code: "LT", value_en: "Lithuania", value_tr: "Litvanya", phonePrefix: "+370", smsEnabled: false },
99
+ { code: "LV", value_en: "Latvia", value_tr: "Letonya", phonePrefix: "+371", smsEnabled: false },
100
+ { code: "PA", value_en: "Panama", value_tr: "Panama", phonePrefix: "+507", smsEnabled: false },
101
+ { code: "CR", value_en: "Costa Rica", value_tr: "Kosta Rika", phonePrefix: "+506", smsEnabled: false },
102
+ { code: "GT", value_en: "Guatemala", value_tr: "Guatemala", phonePrefix: "+502", smsEnabled: false },
103
+ { code: "DO", value_en: "Dominican Republic", value_tr: "Dominik Cumhuriyeti", phonePrefix: "+1", smsEnabled: false },
104
+ { code: "JM", value_en: "Jamaica", value_tr: "Jamaika", phonePrefix: "+1", smsEnabled: false },
105
+ { code: "TZ", value_en: "Tanzania", value_tr: "Tanzanya", phonePrefix: "+255", smsEnabled: false },
106
+ { code: "UG", value_en: "Uganda", value_tr: "Uganda", phonePrefix: "+256", smsEnabled: false },
107
+ { code: "GH", value_en: "Ghana", value_tr: "Gana", phonePrefix: "+233", smsEnabled: false },
108
+ { code: "ET", value_en: "Ethiopia", value_tr: "Etiyopya", phonePrefix: "+251", smsEnabled: false },
109
+ { code: "SN", value_en: "Senegal", value_tr: "Senegal", phonePrefix: "+221", smsEnabled: false },
110
+ { code: "MM", value_en: "Myanmar", value_tr: "Myanmar", phonePrefix: "+95", smsEnabled: false },
111
+ { code: "KH", value_en: "Cambodia", value_tr: "Kamboçya", phonePrefix: "+855", smsEnabled: false },
112
+ { code: "LA", value_en: "Laos", value_tr: "Laos", phonePrefix: "+856", smsEnabled: false },
113
+ { code: "NP", value_en: "Nepal", value_tr: "Nepal", phonePrefix: "+977", smsEnabled: false },
114
+ { code: "MN", value_en: "Mongolia", value_tr: "Moğolistan", phonePrefix: "+976", smsEnabled: false },
115
+ { code: "BY", value_en: "Belarus", value_tr: "Belarus", phonePrefix: "+375", smsEnabled: false },
116
+ { code: "MD", value_en: "Moldova", value_tr: "Moldova", phonePrefix: "+373", smsEnabled: false },
117
+ { code: "LI", value_en: "Liechtenstein", value_tr: "Lihtenştayn", phonePrefix: "+423", smsEnabled: false },
118
+ { code: "SM", value_en: "San Marino", value_tr: "San Marino", phonePrefix: "+378", smsEnabled: false },
119
+ { code: "MC", value_en: "Monaco", value_tr: "Monako", phonePrefix: "+377", smsEnabled: false },
120
+ { code: "VA", value_en: "Vatican City", value_tr: "Vatikan", phonePrefix: "+379", smsEnabled: false },
121
+ { code: "AD", value_en: "Andorra", value_tr: "Andorra", phonePrefix: "+376", smsEnabled: false },
122
+ { code: "TM", value_en: "Turkmenistan", value_tr: "Türkmenistan", phonePrefix: "+993", smsEnabled: false },
123
+ { code: "TJ", value_en: "Tajikistan", value_tr: "Tacikistan", phonePrefix: "+992", smsEnabled: false },
124
+ { code: "KG", value_en: "Kyrgyzstan", value_tr: "Kırgızistan", phonePrefix: "+996", smsEnabled: false },
125
+ { code: "UZ", value_en: "Uzbekistan", value_tr: "Özbekistan", phonePrefix: "+998", smsEnabled: false },
126
+ ];
127
+
128
+ const getCurrentLanguage = () => {
129
+ if (typeof window !== "undefined") {
130
+ // eslint-disable-next-line no-undef
131
+ return (window?.localStorage?.i18nextLng || "en").substring(0, 2).toLowerCase();
132
+ }
133
+ return "en";
134
+ };
135
+
136
+ const getLocalizedCountryName = (code, lang = getCurrentLanguage()) => {
137
+ const country = COUNTRIES.find((c) => c?.code?.toUpperCase() === code?.toUpperCase());
138
+ if (!country) return null;
139
+ return country[`value_${lang}`] || country.value_en;
140
+ };
141
+
142
+ const COUNTRY_OPTIONS = COUNTRIES.map((c) => ({
143
+ value: c.code,
144
+ label: `${getLocalizedCountryName(c.code)} (${c.phonePrefix})`,
145
+ }));
146
+
147
+ module.exports = {
148
+ COUNTRIES,
149
+ COUNTRY_OPTIONS,
150
+ getCountryByCode: (code) => {
151
+ return COUNTRIES.find((country) => country.code === code);
152
+ },
153
+ getDialCodeByCountryCode: (code) => {
154
+ const country = COUNTRIES.find((c) => c.code.toUpperCase() === code.toUpperCase());
155
+ return country ? country.phonePrefix : null;
156
+ },
157
+ getCountryByPhonePrefix: (prefix) => {
158
+ return COUNTRIES.find((country) => country.phonePrefix === prefix);
159
+ },
160
+ isSmsEnabledForCountry: (code) => {
161
+ const country = COUNTRIES.find((c) => c.code.toUpperCase() === code.toUpperCase());
162
+ return country ? country.smsEnabled : false;
163
+ },
164
+ getAllCountryCodesLowerCase: () => {
165
+ return COUNTRIES.map((country) => country.code.toLowerCase());
166
+ },
167
+ getLocalizedCountryName,
168
+ };
@@ -0,0 +1,26 @@
1
+ const PERMISSION_TYPES = {
2
+ ACCESS_TO_SCHOOLS: "accessToSchools", // Page level - always true for now
3
+ ACCESS_TO_USERS: "accessToUsers", // Page level - always true for now
4
+ ACCESS_TO_PERSONELS: "accessToPersonels", // Initial selection is company domain based
5
+ ACCESS_TO_STUDENTS: "accessToStudents", // Initial selection is company domain based
6
+ ACCESS_TO_SHIFTS: "accessToShifts", //
7
+ ACCESS_TO_STOPS: "accessToStops",
8
+ ACCESS_TO_SERVICE_REPORTS: "accessToServiceReports",
9
+ ACCESS_TO_ACCOUNTING: "accessToAccounting",
10
+ ACCESS_TO_TRANSFERS: "accessToTransfers",
11
+ ACCESS_TO_IKARUS: "accessToIkarus",
12
+ ACCESS_TO_LIVE: "accessToLive",
13
+ USE_DESCRIPTION: "useDescription",
14
+ USE_CARD_ID: "useCardId",
15
+ ACCESS_TO_ADMIN: "accessToAdmin",
16
+ ACCESS_TO_INVENTORY: "accessToInventory",
17
+ ACCESS_TO_WALKING_DISTANCE: "accessToWalkingDistance",
18
+ ACCESS_TO_WRITE_INVENTORY: "accessToWriteInventory",
19
+ ACCESS_TO_SERVISTESIN: "accessToServistesin",
20
+ ACCESS_TO_TRACK_VEHICLE_ONLY: "accessToTrackVehicleOnly",
21
+ ACCESS_TO_GIVE_PERMISSIONS: "accessToGivePermissions",
22
+ };
23
+
24
+ module.exports = {
25
+ PERMISSION_TYPES,
26
+ };
@@ -0,0 +1,10 @@
1
+ const PLANS = {
2
+ DEMO: "demo",
3
+ FREE: "free",
4
+ PRO: "pro",
5
+ ENTERPRISE: "enterprise",
6
+ };
7
+
8
+ module.exports = {
9
+ PLANS,
10
+ };
@@ -0,0 +1,7 @@
1
+ const PROCESS_TYPES = {
2
+ DRAFT_ROUTES: "draft-routes",
3
+ };
4
+
5
+ module.exports = {
6
+ PROCESS_TYPES,
7
+ };
@@ -0,0 +1,37 @@
1
+ const SERVICE_TYPES = {
2
+ STUDENT: "STUDENT", // every day
3
+ PERSONEL: "PERSONEL", // every day
4
+ SHIFT: "SHIFT", // depends on shift, date required
5
+ STUDY: "STUDY", // depends on study days, date required
6
+ TRANSFER_PERSONEL: "TRANSFER_PERSONEL", // happens 1 time, date required
7
+ TRANSFER_STUDENT: "TRANSFER_STUDENT", // happens 1 time, date required
8
+ TRANSFER_RANDOM: "TRANSFER_RANDOM", // happens 1 time, date required
9
+ };
10
+
11
+ const ROUTE_TYPES = {
12
+ PICK_UP: "PICK_UP",
13
+ DROP_OFF: "DROP_OFF",
14
+ };
15
+
16
+ const ROUTE_TYPES_INCLUDING_BOTH = {
17
+ PICK_UP: "PICK_UP",
18
+ DROP_OFF: "DROP_OFF",
19
+ BOTH: "BOTH",
20
+ };
21
+
22
+ const SERVICE_STATUS_TYPES = {
23
+ NOT_STARTED: "NOT_STARTED",
24
+ GOING_TO_SCHOOL: "GOING_TO_SCHOOL",
25
+ ARRIVED_SCHOOL: "ARRIVED_SCHOOL",
26
+ PREPARING_AT_SCHOOL: "PREPARING_AT_SCHOOL",
27
+ LEAVED_SCHOOL: "LEAVED_SCHOOL",
28
+ FINISHED: "FINISHED",
29
+ QR_NEADED: "QR_NEADED",
30
+ };
31
+
32
+ module.exports = {
33
+ ROUTE_TYPES,
34
+ ROUTE_TYPES_INCLUDING_BOTH,
35
+ SERVICE_TYPES,
36
+ SERVICE_STATUS_TYPES,
37
+ };
@@ -0,0 +1,200 @@
1
+ const SMS_PROVIDERS = {
2
+ NETGSM: "NETGSM",
3
+ TWILIO: "TWILIO",
4
+ };
5
+
6
+ const SUPPORTED_SMS_COUNTRIES = [
7
+ "TR", // Türkiye
8
+ "DE", // Almanya
9
+ "GB", // İngiltere
10
+ "FR", // Fransa
11
+ ];
12
+
13
+ const SMS_TYPES = {
14
+ OTP: "OTP",
15
+ STANDARD: "STANDARD",
16
+ };
17
+
18
+ const PROVIDER_NOT_ACCEPTED_ERROR_CODES = {
19
+ INVALID_MESSAGE_LENGTH: "INVALID_MESSAGE_LENGTH",
20
+ INVALID_USERNAME_OR_PASSWORD: "INVALID_USERNAME_OR_PASSWORD",
21
+ INVALID_SENDER_NAME: "INVALID_SENDER_NAME",
22
+ INVALID_NUMBER: "INVALID_NUMBER",
23
+ OTP_PACKAGE_NOT_FOUND: "OTP_PACKAGE_NOT_FOUND",
24
+ INPUT_PARAMETER_ERROR: "INPUT_PARAMETER_ERROR",
25
+ QUERY_LIMIT_EXCEEDED: "QUERY_LIMIT_EXCEEDED",
26
+ SYSTEM_ERROR: "SYSTEM_ERROR",
27
+ UNKNOWN: "UNKNOWN",
28
+ };
29
+
30
+ const NET_GSM_NOT_ACCEPTED_ERROR_CODES = {
31
+ 20: PROVIDER_NOT_ACCEPTED_ERROR_CODES.INVALID_MESSAGE_LENGTH,
32
+ 30: PROVIDER_NOT_ACCEPTED_ERROR_CODES.INVALID_USERNAME_OR_PASSWORD,
33
+ 40: PROVIDER_NOT_ACCEPTED_ERROR_CODES.INVALID_SENDER_NAME,
34
+ 41: PROVIDER_NOT_ACCEPTED_ERROR_CODES.INVALID_SENDER_NAME,
35
+ 50: PROVIDER_NOT_ACCEPTED_ERROR_CODES.INVALID_NUMBER,
36
+ 51: PROVIDER_NOT_ACCEPTED_ERROR_CODES.INVALID_NUMBER,
37
+ 52: PROVIDER_NOT_ACCEPTED_ERROR_CODES.INVALID_NUMBER,
38
+ 60: PROVIDER_NOT_ACCEPTED_ERROR_CODES.OTP_PACKAGE_NOT_FOUND,
39
+ 70: PROVIDER_NOT_ACCEPTED_ERROR_CODES.INPUT_PARAMETER_ERROR,
40
+ 80: PROVIDER_NOT_ACCEPTED_ERROR_CODES.QUERY_LIMIT_EXCEEDED,
41
+ 100: PROVIDER_NOT_ACCEPTED_ERROR_CODES.SYSTEM_ERROR,
42
+ };
43
+
44
+ const TWILIO_NOT_ACCEPTED_ERROR_CODES = {
45
+ 21601: PROVIDER_NOT_ACCEPTED_ERROR_CODES.INVALID_MESSAGE_LENGTH,
46
+ 21602: PROVIDER_NOT_ACCEPTED_ERROR_CODES.INVALID_MESSAGE_LENGTH,
47
+ 21603: PROVIDER_NOT_ACCEPTED_ERROR_CODES.INVALID_NUMBER, // Invalid 'To' number
48
+ 21604: PROVIDER_NOT_ACCEPTED_ERROR_CODES.INVALID_NUMBER, // Invalid 'From' number
49
+ 21605: PROVIDER_NOT_ACCEPTED_ERROR_CODES.INVALID_NUMBER, // 'To' number is not verified
50
+ 21606: PROVIDER_NOT_ACCEPTED_ERROR_CODES.INVALID_SENDER_NAME,
51
+ 21608: PROVIDER_NOT_ACCEPTED_ERROR_CODES.UNKNOWN,
52
+ 21610: PROVIDER_NOT_ACCEPTED_ERROR_CODES.UNKNOWN,
53
+ 21612: PROVIDER_NOT_ACCEPTED_ERROR_CODES.OTP_PACKAGE_NOT_FOUND, // 'From' phone number is not SMS capable
54
+ 21614: PROVIDER_NOT_ACCEPTED_ERROR_CODES.INVALID_NUMBER, // 'To' number is not a valid mobile number
55
+ 21620: PROVIDER_NOT_ACCEPTED_ERROR_CODES.SYSTEM_ERROR, // Messaging service SID issue
56
+ 21701: PROVIDER_NOT_ACCEPTED_ERROR_CODES.INVALID_USERNAME_OR_PASSWORD, // Invalid credentials (e.g., SID/token)
57
+ 21101: PROVIDER_NOT_ACCEPTED_ERROR_CODES.QUERY_LIMIT_EXCEEDED,
58
+ 21211: PROVIDER_NOT_ACCEPTED_ERROR_CODES.INVALID_NUMBER, // Common: invalid phone number
59
+ 30001: PROVIDER_NOT_ACCEPTED_ERROR_CODES.UNKNOWN, // Message delivery failed
60
+ 30002: PROVIDER_NOT_ACCEPTED_ERROR_CODES.UNKNOWN, // Queue overflow
61
+ 30003: PROVIDER_NOT_ACCEPTED_ERROR_CODES.UNKNOWN,
62
+ 30004: PROVIDER_NOT_ACCEPTED_ERROR_CODES.INVALID_NUMBER,
63
+ 30005: PROVIDER_NOT_ACCEPTED_ERROR_CODES.UNKNOWN,
64
+ 30006: PROVIDER_NOT_ACCEPTED_ERROR_CODES.UNKNOWN,
65
+ 30007: PROVIDER_NOT_ACCEPTED_ERROR_CODES.UNKNOWN,
66
+ 30008: PROVIDER_NOT_ACCEPTED_ERROR_CODES.SYSTEM_ERROR,
67
+ };
68
+
69
+ const NET_GSM_OPERATORS_CODES = {
70
+ 10: "VODAFONE",
71
+ 20: "TURK_TELEKOM",
72
+ 30: "TURKCELL",
73
+ 40: "NETGSM_STH",
74
+ 41: "NETGSM_MOBIL",
75
+ 60: "TURKTELEKOM_SABIT",
76
+ 70: "TANIMSIZ_OPERATOR",
77
+ 160: "KKTC_VODAFONE",
78
+ 212: "YURTDISI",
79
+ 213: "YURTDISI",
80
+ 214: "YURTDISI",
81
+ 215: "YURTDISI",
82
+ 880: "KKTC_TURKCELL",
83
+ UNKNOWN: "UNKNOWN",
84
+ };
85
+
86
+ const SMS_STATUS_CALL_CODES = {
87
+ SUCCESS: "SUCCESS",
88
+ INVALID_AUTHENTICATION: "INVALID_AUTHENTICATION",
89
+ NO_RECORD_FOUND: "NO_RECORD_FOUND",
90
+ INVALID_QUERY: "INVALID_QUERY",
91
+ QUERY_LIMIT_EXCEEDED: "QUERY_LIMIT_EXCEEDED",
92
+ SYSTEM_ERROR: "SYSTEM_ERROR",
93
+ UNKNOWN: "UNKNOWN",
94
+ };
95
+
96
+ const NET_GSM_SMS_STATUS_CALL_CODES = {
97
+ "00": SMS_STATUS_CALL_CODES.SUCCESS,
98
+ 30: SMS_STATUS_CALL_CODES.INVALID_AUTHENTICATION,
99
+ 60: SMS_STATUS_CALL_CODES.NO_RECORD_FOUND,
100
+ 70: SMS_STATUS_CALL_CODES.INVALID_QUERY,
101
+ 80: SMS_STATUS_CALL_CODES.QUERY_LIMIT_EXCEEDED,
102
+ 100: SMS_STATUS_CALL_CODES.SYSTEM_ERROR,
103
+ 101: SMS_STATUS_CALL_CODES.SYSTEM_ERROR,
104
+ 102: SMS_STATUS_CALL_CODES.SYSTEM_ERROR,
105
+ 103: SMS_STATUS_CALL_CODES.SYSTEM_ERROR,
106
+ 104: SMS_STATUS_CALL_CODES.SYSTEM_ERROR,
107
+ 105: SMS_STATUS_CALL_CODES.SYSTEM_ERROR,
108
+ 106: SMS_STATUS_CALL_CODES.SYSTEM_ERROR,
109
+ 107: SMS_STATUS_CALL_CODES.SYSTEM_ERROR,
110
+ 108: SMS_STATUS_CALL_CODES.SYSTEM_ERROR,
111
+ 109: SMS_STATUS_CALL_CODES.SYSTEM_ERROR,
112
+ 110: SMS_STATUS_CALL_CODES.SYSTEM_ERROR,
113
+ };
114
+
115
+ const SMS_STATUS_CODES = {
116
+ QUEUED: "QUEUED",
117
+ DELIVERED: "DELIVERED",
118
+ TIMEOUT: "TIMEOUT",
119
+ INVALID_NUMBER: "INVALID_NUMBER",
120
+ OPERATOR_FAILED: "OPERATOR_FAILED",
121
+ REJECTED_BY_OPERATOR: "REJECTED_BY_OPERATOR",
122
+ SEND_ERROR: "SEND_ERROR",
123
+ DUPLICATE: "DUPLICATE",
124
+ BLACKLISTED: "BLACKLISTED",
125
+ IYS_REJECTED: "IYS_REJECTED",
126
+ IYS_ERROR: "IYS_ERROR",
127
+ UNKNOWN: "UNKNOWN",
128
+ };
129
+
130
+ const NET_GSM_SMS_STATUS_CODES = {
131
+ 0: SMS_STATUS_CODES.QUEUED,
132
+ 1: SMS_STATUS_CODES.DELIVERED,
133
+ 2: SMS_STATUS_CODES.TIMEOUT,
134
+ 3: SMS_STATUS_CODES.INVALID_NUMBER,
135
+ 4: SMS_STATUS_CODES.OPERATOR_FAILED,
136
+ 11: SMS_STATUS_CODES.REJECTED_BY_OPERATOR,
137
+ 12: SMS_STATUS_CODES.SEND_ERROR,
138
+ 13: SMS_STATUS_CODES.DUPLICATE,
139
+ 15: SMS_STATUS_CODES.BLACKLISTED,
140
+ 16: SMS_STATUS_CODES.IYS_REJECTED,
141
+ 17: SMS_STATUS_CODES.IYS_ERROR,
142
+ };
143
+
144
+ const SMS_STATUS_ERROR_CODES = {
145
+ UNDEFINED: undefined,
146
+ UNKNOWN: "UNKNOWN",
147
+ MESSAGE_BOX_FULL: "MESSAGE_BOX_FULL",
148
+ OUT_OF_COVERAGE: "OUT_OF_COVERAGE",
149
+ BUSY: "BUSY",
150
+ LINE_NOT_ACTIVE: "LINE_NOT_ACTIVE",
151
+ INVALID_NUMBER: "INVALID_NUMBER",
152
+ BLACKLISTED: "BLACKLISTED",
153
+ TIMEOUT: "TIMEOUT",
154
+ SMS_DISABLED: "SMS_DISABLED",
155
+ DEVICE_NOT_SUPPORTED: "DEVICE_NOT_SUPPORTED",
156
+ FORWARDING_FAILED: "FORWARDING_FAILED",
157
+ CALL_RESTRICTED: "CALL_RESTRICTED",
158
+ UNIDENTIFIED_SUBSCRIBER: "UNIDENTIFIED_SUBSCRIBER",
159
+ ILLEGAL_SUBSCRIBER: "ILLEGAL_SUBSCRIBER",
160
+ SYSTEM_ERROR: "SYSTEM_ERROR",
161
+ };
162
+
163
+ const NET_GSM_STATUS_ERROR_CODES = {
164
+ 0: SMS_STATUS_ERROR_CODES.UNDEFINED,
165
+ 101: SMS_STATUS_ERROR_CODES.MESSAGE_BOX_FULL,
166
+ 102: SMS_STATUS_ERROR_CODES.OUT_OF_COVERAGE,
167
+ 103: SMS_STATUS_ERROR_CODES.BUSY,
168
+ 104: SMS_STATUS_ERROR_CODES.LINE_NOT_ACTIVE,
169
+ 105: SMS_STATUS_ERROR_CODES.INVALID_NUMBER,
170
+ 106: SMS_STATUS_ERROR_CODES.BLACKLISTED,
171
+ 111: SMS_STATUS_ERROR_CODES.TIMEOUT,
172
+ 112: SMS_STATUS_ERROR_CODES.SMS_DISABLED,
173
+ 113: SMS_STATUS_ERROR_CODES.DEVICE_NOT_SUPPORTED,
174
+ 114: SMS_STATUS_ERROR_CODES.FORWARDING_FAILED,
175
+ 115: SMS_STATUS_ERROR_CODES.CALL_RESTRICTED,
176
+ 116: SMS_STATUS_ERROR_CODES.UNIDENTIFIED_SUBSCRIBER,
177
+ 117: SMS_STATUS_ERROR_CODES.ILLEGAL_SUBSCRIBER,
178
+ 119: SMS_STATUS_ERROR_CODES.SYSTEM_ERROR,
179
+ };
180
+
181
+ module.exports = {
182
+ SMS_PROVIDERS,
183
+ SMS_TYPES,
184
+ SUPPORTED_SMS_COUNTRIES,
185
+
186
+ NET_GSM_OPERATORS_CODES,
187
+
188
+ PROVIDER_NOT_ACCEPTED_ERROR_CODES, // During Send
189
+ NET_GSM_NOT_ACCEPTED_ERROR_CODES, // During Send
190
+ TWILIO_NOT_ACCEPTED_ERROR_CODES, // During Send
191
+
192
+ SMS_STATUS_CALL_CODES, // During Report
193
+ NET_GSM_SMS_STATUS_CALL_CODES, // During Report
194
+
195
+ SMS_STATUS_CODES, // During Report
196
+ NET_GSM_SMS_STATUS_CODES, // During Report
197
+
198
+ SMS_STATUS_ERROR_CODES, // During Report
199
+ NET_GSM_STATUS_ERROR_CODES, // During Report
200
+ };
@@ -0,0 +1,96 @@
1
+ // Stok kategorileri
2
+ const STOCK_CATEGORIES = {
3
+ SPARE_PARTS: "spare_parts", // Yedek parça
4
+ FUEL: "fuel", // Yakıt
5
+ MAINTENANCE: "maintenance", // Bakım malzemeleri
6
+ ELECTRONICS: "electronics", // Elektronik
7
+ CONSUMABLES: "consumables", // Sarf malzemeler
8
+ TOOLS: "tools", // Araç gereç
9
+ DOCUMENTS: "documents", // Doküman/evrak
10
+ OTHER: "other", // Diğer
11
+ };
12
+
13
+ // Stok durumları
14
+ const STOCK_STATUS = {
15
+ ACTIVE: "active", // Aktif
16
+ LOW_STOCK: "low_stock", // Düşük stok
17
+ OUT_OF_STOCK: "out_of_stock", // Stok tükendi
18
+ DISCONTINUED: "discontinued", // Üretimi durmuş
19
+ RESERVED: "reserved", // Rezerve edilmiş
20
+ };
21
+
22
+ // Stok birim türleri
23
+ const STOCK_UNITS = {
24
+ PIECE: "piece", // Adet
25
+ LITER: "liter", // Litre
26
+ KILOGRAM: "kilogram", // Kilogram
27
+ METER: "meter", // Metre
28
+ SQUARE_METER: "square_meter", // Metrekare
29
+ CUBIC_METER: "cubic_meter", // Metreküp
30
+ BOX: "box", // Kutu
31
+ PACKAGE: "package", // Paket
32
+ SET: "set", // Set
33
+ };
34
+
35
+ // Stok hareketi türleri
36
+ const MOVEMENT_TYPES = {
37
+ IN: "in", // Giriş
38
+ OUT: "out", // Çıkış
39
+ TRANSFER: "transfer", // Transfer
40
+ ADJUSTMENT: "adjustment", // Düzeltme
41
+ RETURN: "return", // İade
42
+ };
43
+
44
+ // Kategori etiketleri (Türkçe)
45
+ const CATEGORY_LABELS_TR = {
46
+ spare_parts: "Yedek Parça",
47
+ fuel: "Yakıt",
48
+ maintenance: "Bakım Malzemeleri",
49
+ electronics: "Elektronik",
50
+ consumables: "Sarf Malzemeler",
51
+ tools: "Araç Gereç",
52
+ documents: "Doküman/Evrak",
53
+ other: "Diğer",
54
+ };
55
+
56
+ // Durum etiketleri (Türkçe)
57
+ const STATUS_LABELS_TR = {
58
+ active: "Aktif",
59
+ low_stock: "Düşük Stok",
60
+ out_of_stock: "Stok Tükendi",
61
+ discontinued: "Üretimi Durmuş",
62
+ reserved: "Rezerve Edilmiş",
63
+ };
64
+
65
+ // Birim etiketleri (Türkçe)
66
+ const UNIT_LABELS_TR = {
67
+ piece: "Adet",
68
+ liter: "Litre",
69
+ kilogram: "Kilogram",
70
+ meter: "Metre",
71
+ square_meter: "Metrekare",
72
+ cubic_meter: "Metreküp",
73
+ box: "Kutu",
74
+ package: "Paket",
75
+ set: "Set",
76
+ };
77
+
78
+ // Hareket türü etiketleri (Türkçe)
79
+ const MOVEMENT_TYPE_LABELS_TR = {
80
+ in: "Giriş",
81
+ out: "Çıkış",
82
+ transfer: "Transfer",
83
+ adjustment: "Düzeltme",
84
+ return: "İade",
85
+ };
86
+
87
+ module.exports = {
88
+ STOCK_CATEGORIES,
89
+ STOCK_STATUS,
90
+ STOCK_UNITS,
91
+ MOVEMENT_TYPES,
92
+ CATEGORY_LABELS_TR,
93
+ STATUS_LABELS_TR,
94
+ UNIT_LABELS_TR,
95
+ MOVEMENT_TYPE_LABELS_TR,
96
+ };
package/index.js ADDED
@@ -0,0 +1,10 @@
1
+ module.exports = {
2
+ ...require("./constants/constants.js"),
3
+ ...require("./constants/countries.constants.js"),
4
+ ...require("./constants/permission.constants.js"),
5
+ ...require("./constants/plans.constants.js"),
6
+ ...require("./constants/process.constants.js"),
7
+ ...require("./constants/service.constants.js"),
8
+ ...require("./constants/sms.constants.js"),
9
+ ...require("./constants/stock.constants.js"),
10
+ };
package/package.json ADDED
@@ -0,0 +1,26 @@
1
+ {
2
+ "name": "@routebot/constants",
3
+ "version": "0.3.0",
4
+ "description": "Shared constants for RouteBot FE/BE",
5
+ "main": "index.js",
6
+ "files": [
7
+ "index.js",
8
+ "constants/*.js",
9
+ "README.md"
10
+ ],
11
+ "license": "MIT",
12
+ "repository": {
13
+ "type": "git",
14
+ "url": "https://github.com/emrahg-dev/routebot-constants.git"
15
+ },
16
+ "publishConfig": {
17
+ "access": "public"
18
+ },
19
+ "scripts": {
20
+ "release:patch": "npm version patch -m \"chore(release): %s\" && npm publish --access public && git push && git push --tags",
21
+ "release:minor": "npm version minor -m \"chore(release): %s\" && npm publish --access public && git push && git push --tags",
22
+ "release:major": "npm version major -m \"chore(release): %s\" && npm publish --access public && git push && git push --tags",
23
+ "prepublishOnly": "npm test",
24
+ "test": "node -e \"require('./index.js'); console.log('ok')\""
25
+ }
26
+ }