@krizaka/org 0.0.0-stage → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +25 -2
- package/dist/app.schema.json +76 -0
- package/dist/apps/akinaza.json +12 -0
- package/dist/apps/orazaka.json +12 -0
- package/dist/apps/yomizaka.json +12 -0
- package/dist/index.d.ts +681 -0
- package/dist/index.js +316 -0
- package/dist/index.js.map +1 -0
- package/dist/org.json +287 -0
- package/dist/org.schema.json +613 -0
- package/package.json +58 -3
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,681 @@
|
|
|
1
|
+
/** A text in both languages. */
|
|
2
|
+
interface Localized {
|
|
3
|
+
fr: string;
|
|
4
|
+
en: string;
|
|
5
|
+
}
|
|
6
|
+
type ProductStatus = "development" | "devPreview";
|
|
7
|
+
interface OrgProduct {
|
|
8
|
+
id: string;
|
|
9
|
+
name: string;
|
|
10
|
+
status: ProductStatus;
|
|
11
|
+
/** The product's own site. */
|
|
12
|
+
url: string;
|
|
13
|
+
/** Its public source repository. */
|
|
14
|
+
repo: string;
|
|
15
|
+
}
|
|
16
|
+
interface OrgSite {
|
|
17
|
+
id: string;
|
|
18
|
+
name: string;
|
|
19
|
+
url: string;
|
|
20
|
+
}
|
|
21
|
+
interface OrgAvatar {
|
|
22
|
+
id: string;
|
|
23
|
+
/** `person` is a silhouette, `plain` a plain disc. */
|
|
24
|
+
kind: "person" | "plain";
|
|
25
|
+
svg: string;
|
|
26
|
+
webp256: string;
|
|
27
|
+
webp512: string;
|
|
28
|
+
alt: Localized;
|
|
29
|
+
}
|
|
30
|
+
interface OrgBanner {
|
|
31
|
+
id: string;
|
|
32
|
+
/** 1536x512 WebP. */
|
|
33
|
+
url: string;
|
|
34
|
+
alt: Localized;
|
|
35
|
+
}
|
|
36
|
+
interface OrgMark {
|
|
37
|
+
svg: string;
|
|
38
|
+
png64: string;
|
|
39
|
+
png256: string;
|
|
40
|
+
png512: string;
|
|
41
|
+
png1024: string;
|
|
42
|
+
}
|
|
43
|
+
interface Org {
|
|
44
|
+
$schema: string;
|
|
45
|
+
/** The contract: `1` while the shape is the one of `org/v1/org.json`. */
|
|
46
|
+
schemaVersion: 1;
|
|
47
|
+
/** The version of `@krizaka/org` that carries this data. */
|
|
48
|
+
version: string;
|
|
49
|
+
/** The day the facts were last reviewed (YYYY-MM-DD). */
|
|
50
|
+
updatedAt: string;
|
|
51
|
+
company: {
|
|
52
|
+
legalName: string;
|
|
53
|
+
tradeName: string;
|
|
54
|
+
/** Numéro d'entreprise du Québec, already public in the legal footer. */
|
|
55
|
+
neq: string;
|
|
56
|
+
city: string;
|
|
57
|
+
region: string;
|
|
58
|
+
country: string;
|
|
59
|
+
license: string;
|
|
60
|
+
/** « Fait à Montréal ». */
|
|
61
|
+
madeIn: Localized;
|
|
62
|
+
};
|
|
63
|
+
brand: {
|
|
64
|
+
name: string;
|
|
65
|
+
logo: {
|
|
66
|
+
dark: OrgMark;
|
|
67
|
+
light: OrgMark;
|
|
68
|
+
};
|
|
69
|
+
mark: {
|
|
70
|
+
dark: OrgMark;
|
|
71
|
+
light: OrgMark;
|
|
72
|
+
};
|
|
73
|
+
favicon: string;
|
|
74
|
+
appleTouchIcon: string;
|
|
75
|
+
socialPreview: string;
|
|
76
|
+
manifest: string;
|
|
77
|
+
};
|
|
78
|
+
people: {
|
|
79
|
+
defaults: OrgAvatar[];
|
|
80
|
+
banners: OrgBanner[];
|
|
81
|
+
};
|
|
82
|
+
/** Only the products that are live. */
|
|
83
|
+
products: OrgProduct[];
|
|
84
|
+
sites: OrgSite[];
|
|
85
|
+
contact: {
|
|
86
|
+
page: Localized;
|
|
87
|
+
/** The public support address; `null` while none is public. */
|
|
88
|
+
email: string | null;
|
|
89
|
+
};
|
|
90
|
+
footer: {
|
|
91
|
+
line: Localized;
|
|
92
|
+
legal: {
|
|
93
|
+
id: "privacy" | "terms";
|
|
94
|
+
label: Localized;
|
|
95
|
+
url: Localized;
|
|
96
|
+
}[];
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
/** The part of an app's runtime config that depends on the environment. */
|
|
100
|
+
type AppEnvironment = "dev" | "production";
|
|
101
|
+
interface AppConfig {
|
|
102
|
+
$schema: string;
|
|
103
|
+
schemaVersion: 1;
|
|
104
|
+
/** The product this file configures. */
|
|
105
|
+
app: string;
|
|
106
|
+
/** The API's base URL per environment; `null` while that environment does not exist. */
|
|
107
|
+
apiBaseUrl: Record<AppEnvironment, string | null>;
|
|
108
|
+
/** Feature flags a client may know. */
|
|
109
|
+
features: Record<string, boolean>;
|
|
110
|
+
/** The oldest app version the backend still answers (semver). */
|
|
111
|
+
minAppVersion: string;
|
|
112
|
+
/** The org file's legal line, so a binary can show it without a network call. */
|
|
113
|
+
updatedAt: string;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
declare const APP_SCHEMA_URL = "https://krizaka-assets.b-cdn.net/org/v1/app.schema.json";
|
|
117
|
+
/** The runtime config a mobile app may know, per live product. The app reads it at start, with a copy built into the binary as fallback. */
|
|
118
|
+
declare const apps: Record<string, AppConfig>;
|
|
119
|
+
|
|
120
|
+
/** The pull zone that serves the brand files and this JSON. */
|
|
121
|
+
declare const CDN = "https://krizaka-assets.b-cdn.net";
|
|
122
|
+
declare const ORG_URL = "https://krizaka-assets.b-cdn.net/org/v1/org.json";
|
|
123
|
+
declare const ORG_SCHEMA_URL = "https://krizaka-assets.b-cdn.net/org/v1/org.schema.json";
|
|
124
|
+
/** The public facts about Krizaka. Reviewed by pull request; changing a fact is one PR here and a release. */
|
|
125
|
+
declare const org: Org;
|
|
126
|
+
|
|
127
|
+
/** The JSON Schema of `org/v1/org.json`. Nothing outside it is allowed (`additionalProperties: false` everywhere): a new fact is a new line here first. */
|
|
128
|
+
declare const orgSchema: {
|
|
129
|
+
readonly $schema: "https://json-schema.org/draft/2020-12/schema";
|
|
130
|
+
readonly $id: "https://krizaka-assets.b-cdn.net/org/v1/org.schema.json";
|
|
131
|
+
readonly title: "Krizaka organisation — public facts";
|
|
132
|
+
readonly type: "object";
|
|
133
|
+
readonly additionalProperties: false;
|
|
134
|
+
readonly required: readonly ["$schema", "schemaVersion", "version", "updatedAt", "company", "brand", "people", "products", "sites", "contact", "footer"];
|
|
135
|
+
readonly properties: {
|
|
136
|
+
readonly $schema: {
|
|
137
|
+
readonly type: "string";
|
|
138
|
+
};
|
|
139
|
+
readonly schemaVersion: {
|
|
140
|
+
readonly const: 1;
|
|
141
|
+
};
|
|
142
|
+
readonly version: {
|
|
143
|
+
readonly type: "string";
|
|
144
|
+
readonly pattern: "^\\d+\\.\\d+\\.\\d+$";
|
|
145
|
+
};
|
|
146
|
+
readonly updatedAt: {
|
|
147
|
+
readonly type: "string";
|
|
148
|
+
readonly pattern: "^\\d{4}-\\d{2}-\\d{2}$";
|
|
149
|
+
};
|
|
150
|
+
readonly company: {
|
|
151
|
+
readonly type: "object";
|
|
152
|
+
readonly additionalProperties: false;
|
|
153
|
+
readonly required: readonly ["legalName", "tradeName", "neq", "city", "region", "country", "license", "madeIn"];
|
|
154
|
+
readonly properties: {
|
|
155
|
+
readonly legalName: {
|
|
156
|
+
readonly type: "string";
|
|
157
|
+
readonly minLength: 1;
|
|
158
|
+
};
|
|
159
|
+
readonly tradeName: {
|
|
160
|
+
readonly type: "string";
|
|
161
|
+
readonly minLength: 1;
|
|
162
|
+
};
|
|
163
|
+
readonly neq: {
|
|
164
|
+
readonly type: "string";
|
|
165
|
+
readonly pattern: "^\\d{10}$";
|
|
166
|
+
};
|
|
167
|
+
readonly city: {
|
|
168
|
+
readonly type: "string";
|
|
169
|
+
readonly minLength: 1;
|
|
170
|
+
};
|
|
171
|
+
readonly region: {
|
|
172
|
+
readonly type: "string";
|
|
173
|
+
readonly minLength: 1;
|
|
174
|
+
};
|
|
175
|
+
readonly country: {
|
|
176
|
+
readonly type: "string";
|
|
177
|
+
readonly pattern: "^[A-Z]{2}$";
|
|
178
|
+
};
|
|
179
|
+
readonly license: {
|
|
180
|
+
readonly type: "string";
|
|
181
|
+
readonly minLength: 1;
|
|
182
|
+
};
|
|
183
|
+
readonly madeIn: {
|
|
184
|
+
readonly type: "object";
|
|
185
|
+
readonly additionalProperties: false;
|
|
186
|
+
readonly required: readonly ["fr", "en"];
|
|
187
|
+
readonly properties: {
|
|
188
|
+
readonly fr: {
|
|
189
|
+
readonly type: "string";
|
|
190
|
+
readonly minLength: 1;
|
|
191
|
+
};
|
|
192
|
+
readonly en: {
|
|
193
|
+
readonly type: "string";
|
|
194
|
+
readonly minLength: 1;
|
|
195
|
+
};
|
|
196
|
+
};
|
|
197
|
+
};
|
|
198
|
+
};
|
|
199
|
+
};
|
|
200
|
+
readonly brand: {
|
|
201
|
+
readonly type: "object";
|
|
202
|
+
readonly additionalProperties: false;
|
|
203
|
+
readonly required: readonly ["name", "logo", "mark", "favicon", "appleTouchIcon", "socialPreview", "manifest"];
|
|
204
|
+
readonly properties: {
|
|
205
|
+
readonly name: {
|
|
206
|
+
readonly type: "string";
|
|
207
|
+
readonly minLength: 1;
|
|
208
|
+
};
|
|
209
|
+
readonly logo: {
|
|
210
|
+
readonly type: "object";
|
|
211
|
+
readonly additionalProperties: false;
|
|
212
|
+
readonly required: readonly ["dark", "light"];
|
|
213
|
+
readonly properties: {
|
|
214
|
+
readonly dark: {
|
|
215
|
+
readonly type: "object";
|
|
216
|
+
readonly additionalProperties: false;
|
|
217
|
+
readonly required: readonly ["svg", "png64", "png256", "png512", "png1024"];
|
|
218
|
+
readonly properties: {
|
|
219
|
+
readonly svg: {
|
|
220
|
+
readonly type: "string";
|
|
221
|
+
readonly format: "uri";
|
|
222
|
+
readonly pattern: "^https://";
|
|
223
|
+
};
|
|
224
|
+
readonly png64: {
|
|
225
|
+
readonly type: "string";
|
|
226
|
+
readonly format: "uri";
|
|
227
|
+
readonly pattern: "^https://";
|
|
228
|
+
};
|
|
229
|
+
readonly png256: {
|
|
230
|
+
readonly type: "string";
|
|
231
|
+
readonly format: "uri";
|
|
232
|
+
readonly pattern: "^https://";
|
|
233
|
+
};
|
|
234
|
+
readonly png512: {
|
|
235
|
+
readonly type: "string";
|
|
236
|
+
readonly format: "uri";
|
|
237
|
+
readonly pattern: "^https://";
|
|
238
|
+
};
|
|
239
|
+
readonly png1024: {
|
|
240
|
+
readonly type: "string";
|
|
241
|
+
readonly format: "uri";
|
|
242
|
+
readonly pattern: "^https://";
|
|
243
|
+
};
|
|
244
|
+
};
|
|
245
|
+
};
|
|
246
|
+
readonly light: {
|
|
247
|
+
readonly type: "object";
|
|
248
|
+
readonly additionalProperties: false;
|
|
249
|
+
readonly required: readonly ["svg", "png64", "png256", "png512", "png1024"];
|
|
250
|
+
readonly properties: {
|
|
251
|
+
readonly svg: {
|
|
252
|
+
readonly type: "string";
|
|
253
|
+
readonly format: "uri";
|
|
254
|
+
readonly pattern: "^https://";
|
|
255
|
+
};
|
|
256
|
+
readonly png64: {
|
|
257
|
+
readonly type: "string";
|
|
258
|
+
readonly format: "uri";
|
|
259
|
+
readonly pattern: "^https://";
|
|
260
|
+
};
|
|
261
|
+
readonly png256: {
|
|
262
|
+
readonly type: "string";
|
|
263
|
+
readonly format: "uri";
|
|
264
|
+
readonly pattern: "^https://";
|
|
265
|
+
};
|
|
266
|
+
readonly png512: {
|
|
267
|
+
readonly type: "string";
|
|
268
|
+
readonly format: "uri";
|
|
269
|
+
readonly pattern: "^https://";
|
|
270
|
+
};
|
|
271
|
+
readonly png1024: {
|
|
272
|
+
readonly type: "string";
|
|
273
|
+
readonly format: "uri";
|
|
274
|
+
readonly pattern: "^https://";
|
|
275
|
+
};
|
|
276
|
+
};
|
|
277
|
+
};
|
|
278
|
+
};
|
|
279
|
+
};
|
|
280
|
+
readonly mark: {
|
|
281
|
+
readonly type: "object";
|
|
282
|
+
readonly additionalProperties: false;
|
|
283
|
+
readonly required: readonly ["dark", "light"];
|
|
284
|
+
readonly properties: {
|
|
285
|
+
readonly dark: {
|
|
286
|
+
readonly type: "object";
|
|
287
|
+
readonly additionalProperties: false;
|
|
288
|
+
readonly required: readonly ["svg", "png64", "png256", "png512", "png1024"];
|
|
289
|
+
readonly properties: {
|
|
290
|
+
readonly svg: {
|
|
291
|
+
readonly type: "string";
|
|
292
|
+
readonly format: "uri";
|
|
293
|
+
readonly pattern: "^https://";
|
|
294
|
+
};
|
|
295
|
+
readonly png64: {
|
|
296
|
+
readonly type: "string";
|
|
297
|
+
readonly format: "uri";
|
|
298
|
+
readonly pattern: "^https://";
|
|
299
|
+
};
|
|
300
|
+
readonly png256: {
|
|
301
|
+
readonly type: "string";
|
|
302
|
+
readonly format: "uri";
|
|
303
|
+
readonly pattern: "^https://";
|
|
304
|
+
};
|
|
305
|
+
readonly png512: {
|
|
306
|
+
readonly type: "string";
|
|
307
|
+
readonly format: "uri";
|
|
308
|
+
readonly pattern: "^https://";
|
|
309
|
+
};
|
|
310
|
+
readonly png1024: {
|
|
311
|
+
readonly type: "string";
|
|
312
|
+
readonly format: "uri";
|
|
313
|
+
readonly pattern: "^https://";
|
|
314
|
+
};
|
|
315
|
+
};
|
|
316
|
+
};
|
|
317
|
+
readonly light: {
|
|
318
|
+
readonly type: "object";
|
|
319
|
+
readonly additionalProperties: false;
|
|
320
|
+
readonly required: readonly ["svg", "png64", "png256", "png512", "png1024"];
|
|
321
|
+
readonly properties: {
|
|
322
|
+
readonly svg: {
|
|
323
|
+
readonly type: "string";
|
|
324
|
+
readonly format: "uri";
|
|
325
|
+
readonly pattern: "^https://";
|
|
326
|
+
};
|
|
327
|
+
readonly png64: {
|
|
328
|
+
readonly type: "string";
|
|
329
|
+
readonly format: "uri";
|
|
330
|
+
readonly pattern: "^https://";
|
|
331
|
+
};
|
|
332
|
+
readonly png256: {
|
|
333
|
+
readonly type: "string";
|
|
334
|
+
readonly format: "uri";
|
|
335
|
+
readonly pattern: "^https://";
|
|
336
|
+
};
|
|
337
|
+
readonly png512: {
|
|
338
|
+
readonly type: "string";
|
|
339
|
+
readonly format: "uri";
|
|
340
|
+
readonly pattern: "^https://";
|
|
341
|
+
};
|
|
342
|
+
readonly png1024: {
|
|
343
|
+
readonly type: "string";
|
|
344
|
+
readonly format: "uri";
|
|
345
|
+
readonly pattern: "^https://";
|
|
346
|
+
};
|
|
347
|
+
};
|
|
348
|
+
};
|
|
349
|
+
};
|
|
350
|
+
};
|
|
351
|
+
readonly favicon: {
|
|
352
|
+
readonly type: "string";
|
|
353
|
+
readonly format: "uri";
|
|
354
|
+
readonly pattern: "^https://";
|
|
355
|
+
};
|
|
356
|
+
readonly appleTouchIcon: {
|
|
357
|
+
readonly type: "string";
|
|
358
|
+
readonly format: "uri";
|
|
359
|
+
readonly pattern: "^https://";
|
|
360
|
+
};
|
|
361
|
+
readonly socialPreview: {
|
|
362
|
+
readonly type: "string";
|
|
363
|
+
readonly format: "uri";
|
|
364
|
+
readonly pattern: "^https://";
|
|
365
|
+
};
|
|
366
|
+
readonly manifest: {
|
|
367
|
+
readonly type: "string";
|
|
368
|
+
readonly format: "uri";
|
|
369
|
+
readonly pattern: "^https://";
|
|
370
|
+
};
|
|
371
|
+
};
|
|
372
|
+
};
|
|
373
|
+
readonly people: {
|
|
374
|
+
readonly type: "object";
|
|
375
|
+
readonly additionalProperties: false;
|
|
376
|
+
readonly required: readonly ["defaults", "banners"];
|
|
377
|
+
readonly properties: {
|
|
378
|
+
readonly defaults: {
|
|
379
|
+
readonly type: "array";
|
|
380
|
+
readonly items: {
|
|
381
|
+
readonly type: "object";
|
|
382
|
+
readonly additionalProperties: false;
|
|
383
|
+
readonly required: readonly ["id", "kind", "svg", "webp256", "webp512", "alt"];
|
|
384
|
+
readonly properties: {
|
|
385
|
+
readonly id: {
|
|
386
|
+
readonly type: "string";
|
|
387
|
+
readonly pattern: "^[a-z0-9]+(-[a-z0-9]+)*$";
|
|
388
|
+
};
|
|
389
|
+
readonly kind: {
|
|
390
|
+
readonly enum: readonly ["person", "plain"];
|
|
391
|
+
};
|
|
392
|
+
readonly svg: {
|
|
393
|
+
readonly type: "string";
|
|
394
|
+
readonly format: "uri";
|
|
395
|
+
readonly pattern: "^https://";
|
|
396
|
+
};
|
|
397
|
+
readonly webp256: {
|
|
398
|
+
readonly type: "string";
|
|
399
|
+
readonly format: "uri";
|
|
400
|
+
readonly pattern: "^https://";
|
|
401
|
+
};
|
|
402
|
+
readonly webp512: {
|
|
403
|
+
readonly type: "string";
|
|
404
|
+
readonly format: "uri";
|
|
405
|
+
readonly pattern: "^https://";
|
|
406
|
+
};
|
|
407
|
+
readonly alt: {
|
|
408
|
+
readonly type: "object";
|
|
409
|
+
readonly additionalProperties: false;
|
|
410
|
+
readonly required: readonly ["fr", "en"];
|
|
411
|
+
readonly properties: {
|
|
412
|
+
readonly fr: {
|
|
413
|
+
readonly type: "string";
|
|
414
|
+
readonly minLength: 1;
|
|
415
|
+
};
|
|
416
|
+
readonly en: {
|
|
417
|
+
readonly type: "string";
|
|
418
|
+
readonly minLength: 1;
|
|
419
|
+
};
|
|
420
|
+
};
|
|
421
|
+
};
|
|
422
|
+
};
|
|
423
|
+
};
|
|
424
|
+
};
|
|
425
|
+
readonly banners: {
|
|
426
|
+
readonly type: "array";
|
|
427
|
+
readonly items: {
|
|
428
|
+
readonly type: "object";
|
|
429
|
+
readonly additionalProperties: false;
|
|
430
|
+
readonly required: readonly ["id", "url", "alt"];
|
|
431
|
+
readonly properties: {
|
|
432
|
+
readonly id: {
|
|
433
|
+
readonly type: "string";
|
|
434
|
+
readonly pattern: "^[a-z0-9]+(-[a-z0-9]+)*$";
|
|
435
|
+
};
|
|
436
|
+
readonly url: {
|
|
437
|
+
readonly type: "string";
|
|
438
|
+
readonly format: "uri";
|
|
439
|
+
readonly pattern: "^https://";
|
|
440
|
+
};
|
|
441
|
+
readonly alt: {
|
|
442
|
+
readonly type: "object";
|
|
443
|
+
readonly additionalProperties: false;
|
|
444
|
+
readonly required: readonly ["fr", "en"];
|
|
445
|
+
readonly properties: {
|
|
446
|
+
readonly fr: {
|
|
447
|
+
readonly type: "string";
|
|
448
|
+
readonly minLength: 1;
|
|
449
|
+
};
|
|
450
|
+
readonly en: {
|
|
451
|
+
readonly type: "string";
|
|
452
|
+
readonly minLength: 1;
|
|
453
|
+
};
|
|
454
|
+
};
|
|
455
|
+
};
|
|
456
|
+
};
|
|
457
|
+
};
|
|
458
|
+
};
|
|
459
|
+
};
|
|
460
|
+
};
|
|
461
|
+
readonly products: {
|
|
462
|
+
readonly type: "array";
|
|
463
|
+
readonly minItems: 1;
|
|
464
|
+
readonly items: {
|
|
465
|
+
readonly type: "object";
|
|
466
|
+
readonly additionalProperties: false;
|
|
467
|
+
readonly required: readonly ["id", "name", "status", "url", "repo"];
|
|
468
|
+
readonly properties: {
|
|
469
|
+
readonly id: {
|
|
470
|
+
readonly type: "string";
|
|
471
|
+
readonly pattern: "^[a-z0-9]+(-[a-z0-9]+)*$";
|
|
472
|
+
};
|
|
473
|
+
readonly name: {
|
|
474
|
+
readonly type: "string";
|
|
475
|
+
readonly minLength: 1;
|
|
476
|
+
};
|
|
477
|
+
readonly status: {
|
|
478
|
+
readonly enum: readonly ["development", "devPreview"];
|
|
479
|
+
};
|
|
480
|
+
readonly url: {
|
|
481
|
+
readonly type: "string";
|
|
482
|
+
readonly format: "uri";
|
|
483
|
+
readonly pattern: "^https://";
|
|
484
|
+
};
|
|
485
|
+
readonly repo: {
|
|
486
|
+
readonly type: "string";
|
|
487
|
+
readonly format: "uri";
|
|
488
|
+
readonly pattern: "^https://";
|
|
489
|
+
};
|
|
490
|
+
};
|
|
491
|
+
};
|
|
492
|
+
};
|
|
493
|
+
readonly sites: {
|
|
494
|
+
readonly type: "array";
|
|
495
|
+
readonly minItems: 1;
|
|
496
|
+
readonly items: {
|
|
497
|
+
readonly type: "object";
|
|
498
|
+
readonly additionalProperties: false;
|
|
499
|
+
readonly required: readonly ["id", "name", "url"];
|
|
500
|
+
readonly properties: {
|
|
501
|
+
readonly id: {
|
|
502
|
+
readonly type: "string";
|
|
503
|
+
readonly pattern: "^[a-z0-9]+(-[a-z0-9]+)*$";
|
|
504
|
+
};
|
|
505
|
+
readonly name: {
|
|
506
|
+
readonly type: "string";
|
|
507
|
+
readonly minLength: 1;
|
|
508
|
+
};
|
|
509
|
+
readonly url: {
|
|
510
|
+
readonly type: "string";
|
|
511
|
+
readonly format: "uri";
|
|
512
|
+
readonly pattern: "^https://";
|
|
513
|
+
};
|
|
514
|
+
};
|
|
515
|
+
};
|
|
516
|
+
};
|
|
517
|
+
readonly contact: {
|
|
518
|
+
readonly type: "object";
|
|
519
|
+
readonly additionalProperties: false;
|
|
520
|
+
readonly required: readonly ["page", "email"];
|
|
521
|
+
readonly properties: {
|
|
522
|
+
readonly page: {
|
|
523
|
+
readonly type: "object";
|
|
524
|
+
readonly additionalProperties: false;
|
|
525
|
+
readonly required: readonly ["fr", "en"];
|
|
526
|
+
readonly properties: {
|
|
527
|
+
readonly fr: {
|
|
528
|
+
readonly type: "string";
|
|
529
|
+
readonly format: "uri";
|
|
530
|
+
readonly pattern: "^https://";
|
|
531
|
+
};
|
|
532
|
+
readonly en: {
|
|
533
|
+
readonly type: "string";
|
|
534
|
+
readonly format: "uri";
|
|
535
|
+
readonly pattern: "^https://";
|
|
536
|
+
};
|
|
537
|
+
};
|
|
538
|
+
};
|
|
539
|
+
readonly email: {
|
|
540
|
+
readonly type: readonly ["string", "null"];
|
|
541
|
+
readonly format: "email";
|
|
542
|
+
};
|
|
543
|
+
};
|
|
544
|
+
};
|
|
545
|
+
readonly footer: {
|
|
546
|
+
readonly type: "object";
|
|
547
|
+
readonly additionalProperties: false;
|
|
548
|
+
readonly required: readonly ["line", "legal"];
|
|
549
|
+
readonly properties: {
|
|
550
|
+
readonly line: {
|
|
551
|
+
readonly type: "object";
|
|
552
|
+
readonly additionalProperties: false;
|
|
553
|
+
readonly required: readonly ["fr", "en"];
|
|
554
|
+
readonly properties: {
|
|
555
|
+
readonly fr: {
|
|
556
|
+
readonly type: "string";
|
|
557
|
+
readonly minLength: 1;
|
|
558
|
+
};
|
|
559
|
+
readonly en: {
|
|
560
|
+
readonly type: "string";
|
|
561
|
+
readonly minLength: 1;
|
|
562
|
+
};
|
|
563
|
+
};
|
|
564
|
+
};
|
|
565
|
+
readonly legal: {
|
|
566
|
+
readonly type: "array";
|
|
567
|
+
readonly minItems: 1;
|
|
568
|
+
readonly items: {
|
|
569
|
+
readonly type: "object";
|
|
570
|
+
readonly additionalProperties: false;
|
|
571
|
+
readonly required: readonly ["id", "label", "url"];
|
|
572
|
+
readonly properties: {
|
|
573
|
+
readonly id: {
|
|
574
|
+
readonly enum: readonly ["privacy", "terms"];
|
|
575
|
+
};
|
|
576
|
+
readonly label: {
|
|
577
|
+
readonly type: "object";
|
|
578
|
+
readonly additionalProperties: false;
|
|
579
|
+
readonly required: readonly ["fr", "en"];
|
|
580
|
+
readonly properties: {
|
|
581
|
+
readonly fr: {
|
|
582
|
+
readonly type: "string";
|
|
583
|
+
readonly minLength: 1;
|
|
584
|
+
};
|
|
585
|
+
readonly en: {
|
|
586
|
+
readonly type: "string";
|
|
587
|
+
readonly minLength: 1;
|
|
588
|
+
};
|
|
589
|
+
};
|
|
590
|
+
};
|
|
591
|
+
readonly url: {
|
|
592
|
+
readonly type: "object";
|
|
593
|
+
readonly additionalProperties: false;
|
|
594
|
+
readonly required: readonly ["fr", "en"];
|
|
595
|
+
readonly properties: {
|
|
596
|
+
readonly fr: {
|
|
597
|
+
readonly type: "string";
|
|
598
|
+
readonly format: "uri";
|
|
599
|
+
readonly pattern: "^https://";
|
|
600
|
+
};
|
|
601
|
+
readonly en: {
|
|
602
|
+
readonly type: "string";
|
|
603
|
+
readonly format: "uri";
|
|
604
|
+
readonly pattern: "^https://";
|
|
605
|
+
};
|
|
606
|
+
};
|
|
607
|
+
};
|
|
608
|
+
};
|
|
609
|
+
};
|
|
610
|
+
};
|
|
611
|
+
};
|
|
612
|
+
};
|
|
613
|
+
};
|
|
614
|
+
};
|
|
615
|
+
/** The JSON Schema of `apps/<product>.json`. */
|
|
616
|
+
declare const appSchema: {
|
|
617
|
+
readonly $schema: "https://json-schema.org/draft/2020-12/schema";
|
|
618
|
+
readonly $id: "https://krizaka-assets.b-cdn.net/org/v1/app.schema.json";
|
|
619
|
+
readonly title: "Krizaka mobile app — public runtime config";
|
|
620
|
+
readonly type: "object";
|
|
621
|
+
readonly additionalProperties: false;
|
|
622
|
+
readonly required: readonly ["$schema", "schemaVersion", "app", "apiBaseUrl", "features", "minAppVersion", "updatedAt"];
|
|
623
|
+
readonly properties: {
|
|
624
|
+
readonly $schema: {
|
|
625
|
+
readonly type: "string";
|
|
626
|
+
};
|
|
627
|
+
readonly schemaVersion: {
|
|
628
|
+
readonly const: 1;
|
|
629
|
+
};
|
|
630
|
+
readonly app: {
|
|
631
|
+
readonly type: "string";
|
|
632
|
+
readonly pattern: "^[a-z0-9]+(-[a-z0-9]+)*$";
|
|
633
|
+
};
|
|
634
|
+
readonly apiBaseUrl: {
|
|
635
|
+
readonly type: "object";
|
|
636
|
+
readonly additionalProperties: false;
|
|
637
|
+
readonly required: readonly ["dev", "production"];
|
|
638
|
+
readonly properties: {
|
|
639
|
+
readonly dev: {
|
|
640
|
+
readonly anyOf: readonly [{
|
|
641
|
+
readonly type: "string";
|
|
642
|
+
readonly format: "uri";
|
|
643
|
+
readonly pattern: "^https://";
|
|
644
|
+
}, {
|
|
645
|
+
readonly type: "null";
|
|
646
|
+
}];
|
|
647
|
+
};
|
|
648
|
+
readonly production: {
|
|
649
|
+
readonly anyOf: readonly [{
|
|
650
|
+
readonly type: "string";
|
|
651
|
+
readonly format: "uri";
|
|
652
|
+
readonly pattern: "^https://";
|
|
653
|
+
}, {
|
|
654
|
+
readonly type: "null";
|
|
655
|
+
}];
|
|
656
|
+
};
|
|
657
|
+
};
|
|
658
|
+
};
|
|
659
|
+
readonly features: {
|
|
660
|
+
readonly type: "object";
|
|
661
|
+
readonly additionalProperties: {
|
|
662
|
+
readonly type: "boolean";
|
|
663
|
+
};
|
|
664
|
+
};
|
|
665
|
+
readonly minAppVersion: {
|
|
666
|
+
readonly type: "string";
|
|
667
|
+
readonly pattern: "^\\d+\\.\\d+\\.\\d+$";
|
|
668
|
+
};
|
|
669
|
+
readonly updatedAt: {
|
|
670
|
+
readonly type: "string";
|
|
671
|
+
readonly pattern: "^\\d{4}-\\d{2}-\\d{2}$";
|
|
672
|
+
};
|
|
673
|
+
};
|
|
674
|
+
};
|
|
675
|
+
|
|
676
|
+
/** The text of a localized pair for a language (`fr` or `en`; anything else reads English). */
|
|
677
|
+
declare const localized: (text: Localized, locale: string) => string;
|
|
678
|
+
/** The footer line of the family, « Une entreprise de Technologies Krizaka · Fait à Montréal ». */
|
|
679
|
+
declare const footerLine: (locale: string) => string;
|
|
680
|
+
|
|
681
|
+
export { APP_SCHEMA_URL, type AppConfig, type AppEnvironment, CDN, type Localized, ORG_SCHEMA_URL, ORG_URL, type Org, type OrgAvatar, type OrgBanner, type OrgMark, type OrgProduct, type OrgSite, type ProductStatus, appSchema, apps, footerLine, localized, org, orgSchema };
|