@shakerquiz/contracts 0.0.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 (47) hide show
  1. package/dprint.json +24 -0
  2. package/generate.js +57 -0
  3. package/jsconfig.json +18 -0
  4. package/package.json +23 -0
  5. package/source/contracts/PATCH/city/admin.json +126 -0
  6. package/source/contracts/PATCH/city/currency/admin.json +173 -0
  7. package/source/contracts/PATCH/city/timezone/admin.json +501 -0
  8. package/source/contracts/PATCH/game/admin.json +30 -0
  9. package/source/contracts/PATCH/game/organizer.json +30 -0
  10. package/source/contracts/PATCH/games/admin.json +34 -0
  11. package/source/contracts/PATCH/games/organizer.json +34 -0
  12. package/source/contracts/PATCH/registration/Unknown.json +10 -0
  13. package/source/contracts/PATCH/registration/admin.json +43 -0
  14. package/source/contracts/PATCH/registration/cancellation/Unknown.json +12 -0
  15. package/source/contracts/PATCH/registration/channel/Unknown.json +22 -0
  16. package/source/contracts/PATCH/registration/confirmation/Unknown.json +12 -0
  17. package/source/contracts/PATCH/registration/organizer.json +43 -0
  18. package/source/contracts/PATCH/theme/admin.json +19 -0
  19. package/source/contracts/PATCH/user/admin.json +30 -0
  20. package/source/contracts/PATCH/user/cities/admin.json +17 -0
  21. package/source/contracts/PATCH/user/password/admin.json +12 -0
  22. package/source/contracts/PATCH/user/role/admin.json +13 -0
  23. package/source/contracts/PATCH/users/cities/admin.json +19 -0
  24. package/source/contracts/PATCH/users/role/admin.json +19 -0
  25. package/source/contracts/PATCH/venue/admin.json +44 -0
  26. package/source/contracts/PATCH/venue/organizer.json +44 -0
  27. package/source/contracts/POST/checkin/Unknown.json +16 -0
  28. package/source/contracts/POST/city/admin.json +696 -0
  29. package/source/contracts/POST/cover/admin.json +24 -0
  30. package/source/contracts/POST/game/admin.json +27 -0
  31. package/source/contracts/POST/game/organizer.json +27 -0
  32. package/source/contracts/POST/game/registrations/export/admin.json +17 -0
  33. package/source/contracts/POST/game/registrations/export/organizer.json +17 -0
  34. package/source/contracts/POST/registration/Unknown.json +125 -0
  35. package/source/contracts/POST/registration/mailing/admin.json +16 -0
  36. package/source/contracts/POST/registration/mailing/organizer.json +16 -0
  37. package/source/contracts/POST/registrations/export/admin.json +17 -0
  38. package/source/contracts/POST/registrations/export/organizer.json +17 -0
  39. package/source/contracts/POST/theme/admin.json +24 -0
  40. package/source/contracts/POST/user/admin.json +12 -0
  41. package/source/contracts/POST/user/cities/admin.json +17 -0
  42. package/source/contracts/POST/user/password/admin.json +12 -0
  43. package/source/contracts/POST/user/role/admin.json +13 -0
  44. package/source/contracts/POST/venue/admin.json +38 -0
  45. package/source/contracts/POST/venue/organizer.json +38 -0
  46. package/source/contracts/PUT/cover/admin.json +13 -0
  47. package/source/index.js +83 -0
package/dprint.json ADDED
@@ -0,0 +1,24 @@
1
+ {
2
+ "typescript": {
3
+ "quoteStyle": "preferSingle",
4
+ "semiColons": "asi",
5
+ "indentWidth": 2,
6
+ "useTabs": false,
7
+ "useBraces": "maintain",
8
+ "arrowFunction.useParentheses": "preferNone",
9
+ "lineWidth": 120,
10
+ "importDeclaration.forceSingleLine": true
11
+ },
12
+ "json": {},
13
+ "markdown": {},
14
+ "dockerfile": {},
15
+ "yaml": {},
16
+ "excludes": [
17
+ "**/node_modules",
18
+ "**/*-lock.json"
19
+ ],
20
+ "plugins": [
21
+ "https://plugins.dprint.dev/typescript-0.93.0.wasm",
22
+ "https://plugins.dprint.dev/json-0.19.3.wasm"
23
+ ]
24
+ }
package/generate.js ADDED
@@ -0,0 +1,57 @@
1
+ import { Methods, Mode, Roles, Routes } from '@shakerquiz/utilities'
2
+
3
+ let identifier = (method, route, role) => method + '_' + route.replaceAll('/', '_') + '_' + role
4
+
5
+ let property = (method, route, role) => method + '/' + route + '/' + role
6
+
7
+ let pathnames = Methods
8
+ .flatMap(method => Routes.map(route => [method, route]))
9
+ .flatMap(([method, route]) => Roles.concat(Mode['Unknown']).map(role => [method, route, role]))
10
+ .map(([method, route, role]) => ({ method, route, role }))
11
+
12
+ Promise
13
+ .all(pathnames.map(({ method, route, role }) =>
14
+ Deno
15
+ .lstat('./source/contracts/' + method + '/' + route + '/' + role + '.json')
16
+ .then(() => ({ method, route, role }))
17
+ .catch(() => null)
18
+ ))
19
+ .then(components =>
20
+ Deno.writeTextFile(
21
+ './source/index.js',
22
+ ''
23
+ + components
24
+ .filter(Boolean)
25
+ .reduce((text, { method, route, role }) =>
26
+ text
27
+ + 'import'
28
+ + ' '
29
+ + identifier(method, route, role)
30
+ + ' '
31
+ + 'from'
32
+ + "'"
33
+ + './contracts/' + method + '/' + route + '/' + role + '.json'
34
+ + "'"
35
+ + ' '
36
+ + "with { type: 'json' }"
37
+ + '\n', '')
38
+ + '\n'
39
+ + 'export const Schema = Object.freeze({'
40
+ + '\n'
41
+ + components
42
+ .filter(Boolean)
43
+ .reduce((text, { method, route, role }) =>
44
+ text
45
+ + '\t'
46
+ + "'"
47
+ + property(method, route, role)
48
+ + "'"
49
+ + ':'
50
+ + ' '
51
+ + identifier(method, route, role)
52
+ + ','
53
+ + '\n', '')
54
+ + '})'
55
+ + '\n',
56
+ )
57
+ )
package/jsconfig.json ADDED
@@ -0,0 +1,18 @@
1
+ {
2
+ "compilerOptions": {
3
+ "baseUrl": ".",
4
+ "module": "NodeNext",
5
+ "moduleResolution": "nodenext",
6
+ "allowJs": true,
7
+ "emitDeclarationOnly": true,
8
+ "declaration": true,
9
+ "paths": {
10
+ "source/": [
11
+ "./source/*"
12
+ ]
13
+ }
14
+ },
15
+ "include": [
16
+ "source/**/*"
17
+ ]
18
+ }
package/package.json ADDED
@@ -0,0 +1,23 @@
1
+ {
2
+ "type": "module",
3
+ "name": "@shakerquiz/contracts",
4
+ "version": "0.0.0",
5
+ "author": "yurkimus <yurkimus@gmail.com>",
6
+ "license": "ISC",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://github.com/shaker-quiz/contracts.git"
10
+ },
11
+ "scripts": {
12
+ "prepublishOnly": "deno run -A ./generate.js"
13
+ },
14
+ "exports": {
15
+ ".": {
16
+ "default": "./source/index.js"
17
+ },
18
+ "./contracts/*.json": "./source/contracts/*.json"
19
+ },
20
+ "devDependencies": {
21
+ "@shakerquiz/utilities": "0.5.178"
22
+ }
23
+ }
@@ -0,0 +1,126 @@
1
+ {
2
+ "type": "object",
3
+ "properties": {
4
+ "is_franchise": {
5
+ "type": "boolean"
6
+ },
7
+ "price": {
8
+ "type": "number"
9
+ },
10
+ "game_time": {
11
+ "type": "string",
12
+ "format": "iso-time"
13
+ },
14
+ "vk_link": {
15
+ "type": [
16
+ "string",
17
+ "null"
18
+ ]
19
+ },
20
+ "tg_link": {
21
+ "type": [
22
+ "string",
23
+ "null"
24
+ ]
25
+ },
26
+ "inst_link": {
27
+ "type": [
28
+ "string",
29
+ "null"
30
+ ]
31
+ },
32
+ "min_members_count": {
33
+ "type": [
34
+ "number",
35
+ "null"
36
+ ]
37
+ },
38
+ "max_members_count": {
39
+ "type": [
40
+ "number",
41
+ "null"
42
+ ]
43
+ },
44
+ "custom_script": {
45
+ "type": [
46
+ "string",
47
+ "null"
48
+ ]
49
+ },
50
+ "custom_html": {
51
+ "type": [
52
+ "string",
53
+ "null"
54
+ ]
55
+ },
56
+ "vk_group_id": {
57
+ "type": [
58
+ "string",
59
+ "null"
60
+ ]
61
+ },
62
+ "chatapp_line": {
63
+ "type": [
64
+ "string",
65
+ "null"
66
+ ]
67
+ },
68
+ "chatapp_user": {
69
+ "type": [
70
+ "string",
71
+ "null"
72
+ ]
73
+ },
74
+ "chatapp_tag": {
75
+ "type": [
76
+ "string",
77
+ "null"
78
+ ]
79
+ },
80
+ "chatapp_category": {
81
+ "type": [
82
+ "string",
83
+ "null"
84
+ ]
85
+ },
86
+ "telegram_chat_id": {
87
+ "type": [
88
+ "string",
89
+ "null"
90
+ ]
91
+ },
92
+ "yandex_metrica": {
93
+ "type": [
94
+ "string",
95
+ "null"
96
+ ]
97
+ },
98
+ "chatapp_legacy": {
99
+ "type": [
100
+ "boolean"
101
+ ]
102
+ },
103
+ "phone": {
104
+ "type": [
105
+ "string",
106
+ "null"
107
+ ]
108
+ },
109
+ "email": {
110
+ "type": [
111
+ "string",
112
+ "null"
113
+ ]
114
+ },
115
+ "address": {
116
+ "type": [
117
+ "string",
118
+ "null"
119
+ ]
120
+ }
121
+ },
122
+ "required": [
123
+ "is_franchise"
124
+ ],
125
+ "additionalProperties": false
126
+ }
@@ -0,0 +1,173 @@
1
+ {
2
+ "type": "object",
3
+ "properties": {
4
+ "id": {
5
+ "type": "string",
6
+ "enum": [
7
+ "AED",
8
+ "AFN",
9
+ "ALL",
10
+ "AMD",
11
+ "ANG",
12
+ "AOA",
13
+ "ARS",
14
+ "AUD",
15
+ "AWG",
16
+ "AZN",
17
+ "BAM",
18
+ "BBD",
19
+ "BDT",
20
+ "BGN",
21
+ "BHD",
22
+ "BIF",
23
+ "BMD",
24
+ "BND",
25
+ "BOB",
26
+ "BRL",
27
+ "BSD",
28
+ "BTN",
29
+ "BWP",
30
+ "BYN",
31
+ "BZD",
32
+ "CAD",
33
+ "CDF",
34
+ "CHF",
35
+ "CLP",
36
+ "CNY",
37
+ "COP",
38
+ "CRC",
39
+ "CUC",
40
+ "CUP",
41
+ "CVE",
42
+ "CZK",
43
+ "DJF",
44
+ "DKK",
45
+ "DOP",
46
+ "DZD",
47
+ "EGP",
48
+ "ERN",
49
+ "ETB",
50
+ "EUR",
51
+ "FJD",
52
+ "FKP",
53
+ "GBP",
54
+ "GEL",
55
+ "GHS",
56
+ "GIP",
57
+ "GMD",
58
+ "GNF",
59
+ "GTQ",
60
+ "GYD",
61
+ "HKD",
62
+ "HNL",
63
+ "HRK",
64
+ "HTG",
65
+ "HUF",
66
+ "IDR",
67
+ "ILS",
68
+ "INR",
69
+ "IQD",
70
+ "IRR",
71
+ "ISK",
72
+ "JMD",
73
+ "JOD",
74
+ "JPY",
75
+ "KES",
76
+ "KGS",
77
+ "KHR",
78
+ "KMF",
79
+ "KPW",
80
+ "KRW",
81
+ "KWD",
82
+ "KYD",
83
+ "KZT",
84
+ "LAK",
85
+ "LBP",
86
+ "LKR",
87
+ "LRD",
88
+ "LSL",
89
+ "LYD",
90
+ "MAD",
91
+ "MDL",
92
+ "MGA",
93
+ "MKD",
94
+ "MMK",
95
+ "MNT",
96
+ "MOP",
97
+ "MRU",
98
+ "MUR",
99
+ "MVR",
100
+ "MWK",
101
+ "MXN",
102
+ "MYR",
103
+ "MZN",
104
+ "NAD",
105
+ "NGN",
106
+ "NIO",
107
+ "NOK",
108
+ "NPR",
109
+ "NZD",
110
+ "OMR",
111
+ "PAB",
112
+ "PEN",
113
+ "PGK",
114
+ "PHP",
115
+ "PKR",
116
+ "PLN",
117
+ "PYG",
118
+ "QAR",
119
+ "RON",
120
+ "RSD",
121
+ "RUB",
122
+ "RWF",
123
+ "SAR",
124
+ "SBD",
125
+ "SCR",
126
+ "SDG",
127
+ "SEK",
128
+ "SGD",
129
+ "SHP",
130
+ "SLL",
131
+ "SOS",
132
+ "SRD",
133
+ "SSP",
134
+ "STN",
135
+ "SVC",
136
+ "SYP",
137
+ "SZL",
138
+ "THB",
139
+ "TJS",
140
+ "TMT",
141
+ "TND",
142
+ "TOP",
143
+ "TRY",
144
+ "TTD",
145
+ "TWD",
146
+ "TZS",
147
+ "UAH",
148
+ "UGX",
149
+ "USD",
150
+ "UYU",
151
+ "UZS",
152
+ "VES",
153
+ "VND",
154
+ "VUV",
155
+ "WST",
156
+ "XAF",
157
+ "XCD",
158
+ "XDR",
159
+ "XOF",
160
+ "XPF",
161
+ "XSU",
162
+ "YER",
163
+ "ZAR",
164
+ "ZMW",
165
+ "ZWL"
166
+ ]
167
+ }
168
+ },
169
+ "required": [
170
+ "id"
171
+ ],
172
+ "additionalProperties": false
173
+ }