@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.
@@ -0,0 +1,613 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://krizaka-assets.b-cdn.net/org/v1/org.schema.json",
4
+ "title": "Krizaka organisation — public facts",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": [
8
+ "$schema",
9
+ "schemaVersion",
10
+ "version",
11
+ "updatedAt",
12
+ "company",
13
+ "brand",
14
+ "people",
15
+ "products",
16
+ "sites",
17
+ "contact",
18
+ "footer"
19
+ ],
20
+ "properties": {
21
+ "$schema": {
22
+ "type": "string"
23
+ },
24
+ "schemaVersion": {
25
+ "const": 1
26
+ },
27
+ "version": {
28
+ "type": "string",
29
+ "pattern": "^\\d+\\.\\d+\\.\\d+$"
30
+ },
31
+ "updatedAt": {
32
+ "type": "string",
33
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
34
+ },
35
+ "company": {
36
+ "type": "object",
37
+ "additionalProperties": false,
38
+ "required": [
39
+ "legalName",
40
+ "tradeName",
41
+ "neq",
42
+ "city",
43
+ "region",
44
+ "country",
45
+ "license",
46
+ "madeIn"
47
+ ],
48
+ "properties": {
49
+ "legalName": {
50
+ "type": "string",
51
+ "minLength": 1
52
+ },
53
+ "tradeName": {
54
+ "type": "string",
55
+ "minLength": 1
56
+ },
57
+ "neq": {
58
+ "type": "string",
59
+ "pattern": "^\\d{10}$"
60
+ },
61
+ "city": {
62
+ "type": "string",
63
+ "minLength": 1
64
+ },
65
+ "region": {
66
+ "type": "string",
67
+ "minLength": 1
68
+ },
69
+ "country": {
70
+ "type": "string",
71
+ "pattern": "^[A-Z]{2}$"
72
+ },
73
+ "license": {
74
+ "type": "string",
75
+ "minLength": 1
76
+ },
77
+ "madeIn": {
78
+ "type": "object",
79
+ "additionalProperties": false,
80
+ "required": [
81
+ "fr",
82
+ "en"
83
+ ],
84
+ "properties": {
85
+ "fr": {
86
+ "type": "string",
87
+ "minLength": 1
88
+ },
89
+ "en": {
90
+ "type": "string",
91
+ "minLength": 1
92
+ }
93
+ }
94
+ }
95
+ }
96
+ },
97
+ "brand": {
98
+ "type": "object",
99
+ "additionalProperties": false,
100
+ "required": [
101
+ "name",
102
+ "logo",
103
+ "mark",
104
+ "favicon",
105
+ "appleTouchIcon",
106
+ "socialPreview",
107
+ "manifest"
108
+ ],
109
+ "properties": {
110
+ "name": {
111
+ "type": "string",
112
+ "minLength": 1
113
+ },
114
+ "logo": {
115
+ "type": "object",
116
+ "additionalProperties": false,
117
+ "required": [
118
+ "dark",
119
+ "light"
120
+ ],
121
+ "properties": {
122
+ "dark": {
123
+ "type": "object",
124
+ "additionalProperties": false,
125
+ "required": [
126
+ "svg",
127
+ "png64",
128
+ "png256",
129
+ "png512",
130
+ "png1024"
131
+ ],
132
+ "properties": {
133
+ "svg": {
134
+ "type": "string",
135
+ "format": "uri",
136
+ "pattern": "^https://"
137
+ },
138
+ "png64": {
139
+ "type": "string",
140
+ "format": "uri",
141
+ "pattern": "^https://"
142
+ },
143
+ "png256": {
144
+ "type": "string",
145
+ "format": "uri",
146
+ "pattern": "^https://"
147
+ },
148
+ "png512": {
149
+ "type": "string",
150
+ "format": "uri",
151
+ "pattern": "^https://"
152
+ },
153
+ "png1024": {
154
+ "type": "string",
155
+ "format": "uri",
156
+ "pattern": "^https://"
157
+ }
158
+ }
159
+ },
160
+ "light": {
161
+ "type": "object",
162
+ "additionalProperties": false,
163
+ "required": [
164
+ "svg",
165
+ "png64",
166
+ "png256",
167
+ "png512",
168
+ "png1024"
169
+ ],
170
+ "properties": {
171
+ "svg": {
172
+ "type": "string",
173
+ "format": "uri",
174
+ "pattern": "^https://"
175
+ },
176
+ "png64": {
177
+ "type": "string",
178
+ "format": "uri",
179
+ "pattern": "^https://"
180
+ },
181
+ "png256": {
182
+ "type": "string",
183
+ "format": "uri",
184
+ "pattern": "^https://"
185
+ },
186
+ "png512": {
187
+ "type": "string",
188
+ "format": "uri",
189
+ "pattern": "^https://"
190
+ },
191
+ "png1024": {
192
+ "type": "string",
193
+ "format": "uri",
194
+ "pattern": "^https://"
195
+ }
196
+ }
197
+ }
198
+ }
199
+ },
200
+ "mark": {
201
+ "type": "object",
202
+ "additionalProperties": false,
203
+ "required": [
204
+ "dark",
205
+ "light"
206
+ ],
207
+ "properties": {
208
+ "dark": {
209
+ "type": "object",
210
+ "additionalProperties": false,
211
+ "required": [
212
+ "svg",
213
+ "png64",
214
+ "png256",
215
+ "png512",
216
+ "png1024"
217
+ ],
218
+ "properties": {
219
+ "svg": {
220
+ "type": "string",
221
+ "format": "uri",
222
+ "pattern": "^https://"
223
+ },
224
+ "png64": {
225
+ "type": "string",
226
+ "format": "uri",
227
+ "pattern": "^https://"
228
+ },
229
+ "png256": {
230
+ "type": "string",
231
+ "format": "uri",
232
+ "pattern": "^https://"
233
+ },
234
+ "png512": {
235
+ "type": "string",
236
+ "format": "uri",
237
+ "pattern": "^https://"
238
+ },
239
+ "png1024": {
240
+ "type": "string",
241
+ "format": "uri",
242
+ "pattern": "^https://"
243
+ }
244
+ }
245
+ },
246
+ "light": {
247
+ "type": "object",
248
+ "additionalProperties": false,
249
+ "required": [
250
+ "svg",
251
+ "png64",
252
+ "png256",
253
+ "png512",
254
+ "png1024"
255
+ ],
256
+ "properties": {
257
+ "svg": {
258
+ "type": "string",
259
+ "format": "uri",
260
+ "pattern": "^https://"
261
+ },
262
+ "png64": {
263
+ "type": "string",
264
+ "format": "uri",
265
+ "pattern": "^https://"
266
+ },
267
+ "png256": {
268
+ "type": "string",
269
+ "format": "uri",
270
+ "pattern": "^https://"
271
+ },
272
+ "png512": {
273
+ "type": "string",
274
+ "format": "uri",
275
+ "pattern": "^https://"
276
+ },
277
+ "png1024": {
278
+ "type": "string",
279
+ "format": "uri",
280
+ "pattern": "^https://"
281
+ }
282
+ }
283
+ }
284
+ }
285
+ },
286
+ "favicon": {
287
+ "type": "string",
288
+ "format": "uri",
289
+ "pattern": "^https://"
290
+ },
291
+ "appleTouchIcon": {
292
+ "type": "string",
293
+ "format": "uri",
294
+ "pattern": "^https://"
295
+ },
296
+ "socialPreview": {
297
+ "type": "string",
298
+ "format": "uri",
299
+ "pattern": "^https://"
300
+ },
301
+ "manifest": {
302
+ "type": "string",
303
+ "format": "uri",
304
+ "pattern": "^https://"
305
+ }
306
+ }
307
+ },
308
+ "people": {
309
+ "type": "object",
310
+ "additionalProperties": false,
311
+ "required": [
312
+ "defaults",
313
+ "banners"
314
+ ],
315
+ "properties": {
316
+ "defaults": {
317
+ "type": "array",
318
+ "items": {
319
+ "type": "object",
320
+ "additionalProperties": false,
321
+ "required": [
322
+ "id",
323
+ "kind",
324
+ "svg",
325
+ "webp256",
326
+ "webp512",
327
+ "alt"
328
+ ],
329
+ "properties": {
330
+ "id": {
331
+ "type": "string",
332
+ "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$"
333
+ },
334
+ "kind": {
335
+ "enum": [
336
+ "person",
337
+ "plain"
338
+ ]
339
+ },
340
+ "svg": {
341
+ "type": "string",
342
+ "format": "uri",
343
+ "pattern": "^https://"
344
+ },
345
+ "webp256": {
346
+ "type": "string",
347
+ "format": "uri",
348
+ "pattern": "^https://"
349
+ },
350
+ "webp512": {
351
+ "type": "string",
352
+ "format": "uri",
353
+ "pattern": "^https://"
354
+ },
355
+ "alt": {
356
+ "type": "object",
357
+ "additionalProperties": false,
358
+ "required": [
359
+ "fr",
360
+ "en"
361
+ ],
362
+ "properties": {
363
+ "fr": {
364
+ "type": "string",
365
+ "minLength": 1
366
+ },
367
+ "en": {
368
+ "type": "string",
369
+ "minLength": 1
370
+ }
371
+ }
372
+ }
373
+ }
374
+ }
375
+ },
376
+ "banners": {
377
+ "type": "array",
378
+ "items": {
379
+ "type": "object",
380
+ "additionalProperties": false,
381
+ "required": [
382
+ "id",
383
+ "url",
384
+ "alt"
385
+ ],
386
+ "properties": {
387
+ "id": {
388
+ "type": "string",
389
+ "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$"
390
+ },
391
+ "url": {
392
+ "type": "string",
393
+ "format": "uri",
394
+ "pattern": "^https://"
395
+ },
396
+ "alt": {
397
+ "type": "object",
398
+ "additionalProperties": false,
399
+ "required": [
400
+ "fr",
401
+ "en"
402
+ ],
403
+ "properties": {
404
+ "fr": {
405
+ "type": "string",
406
+ "minLength": 1
407
+ },
408
+ "en": {
409
+ "type": "string",
410
+ "minLength": 1
411
+ }
412
+ }
413
+ }
414
+ }
415
+ }
416
+ }
417
+ }
418
+ },
419
+ "products": {
420
+ "type": "array",
421
+ "minItems": 1,
422
+ "items": {
423
+ "type": "object",
424
+ "additionalProperties": false,
425
+ "required": [
426
+ "id",
427
+ "name",
428
+ "status",
429
+ "url",
430
+ "repo"
431
+ ],
432
+ "properties": {
433
+ "id": {
434
+ "type": "string",
435
+ "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$"
436
+ },
437
+ "name": {
438
+ "type": "string",
439
+ "minLength": 1
440
+ },
441
+ "status": {
442
+ "enum": [
443
+ "development",
444
+ "devPreview"
445
+ ]
446
+ },
447
+ "url": {
448
+ "type": "string",
449
+ "format": "uri",
450
+ "pattern": "^https://"
451
+ },
452
+ "repo": {
453
+ "type": "string",
454
+ "format": "uri",
455
+ "pattern": "^https://"
456
+ }
457
+ }
458
+ }
459
+ },
460
+ "sites": {
461
+ "type": "array",
462
+ "minItems": 1,
463
+ "items": {
464
+ "type": "object",
465
+ "additionalProperties": false,
466
+ "required": [
467
+ "id",
468
+ "name",
469
+ "url"
470
+ ],
471
+ "properties": {
472
+ "id": {
473
+ "type": "string",
474
+ "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$"
475
+ },
476
+ "name": {
477
+ "type": "string",
478
+ "minLength": 1
479
+ },
480
+ "url": {
481
+ "type": "string",
482
+ "format": "uri",
483
+ "pattern": "^https://"
484
+ }
485
+ }
486
+ }
487
+ },
488
+ "contact": {
489
+ "type": "object",
490
+ "additionalProperties": false,
491
+ "required": [
492
+ "page",
493
+ "email"
494
+ ],
495
+ "properties": {
496
+ "page": {
497
+ "type": "object",
498
+ "additionalProperties": false,
499
+ "required": [
500
+ "fr",
501
+ "en"
502
+ ],
503
+ "properties": {
504
+ "fr": {
505
+ "type": "string",
506
+ "format": "uri",
507
+ "pattern": "^https://"
508
+ },
509
+ "en": {
510
+ "type": "string",
511
+ "format": "uri",
512
+ "pattern": "^https://"
513
+ }
514
+ }
515
+ },
516
+ "email": {
517
+ "type": [
518
+ "string",
519
+ "null"
520
+ ],
521
+ "format": "email"
522
+ }
523
+ }
524
+ },
525
+ "footer": {
526
+ "type": "object",
527
+ "additionalProperties": false,
528
+ "required": [
529
+ "line",
530
+ "legal"
531
+ ],
532
+ "properties": {
533
+ "line": {
534
+ "type": "object",
535
+ "additionalProperties": false,
536
+ "required": [
537
+ "fr",
538
+ "en"
539
+ ],
540
+ "properties": {
541
+ "fr": {
542
+ "type": "string",
543
+ "minLength": 1
544
+ },
545
+ "en": {
546
+ "type": "string",
547
+ "minLength": 1
548
+ }
549
+ }
550
+ },
551
+ "legal": {
552
+ "type": "array",
553
+ "minItems": 1,
554
+ "items": {
555
+ "type": "object",
556
+ "additionalProperties": false,
557
+ "required": [
558
+ "id",
559
+ "label",
560
+ "url"
561
+ ],
562
+ "properties": {
563
+ "id": {
564
+ "enum": [
565
+ "privacy",
566
+ "terms"
567
+ ]
568
+ },
569
+ "label": {
570
+ "type": "object",
571
+ "additionalProperties": false,
572
+ "required": [
573
+ "fr",
574
+ "en"
575
+ ],
576
+ "properties": {
577
+ "fr": {
578
+ "type": "string",
579
+ "minLength": 1
580
+ },
581
+ "en": {
582
+ "type": "string",
583
+ "minLength": 1
584
+ }
585
+ }
586
+ },
587
+ "url": {
588
+ "type": "object",
589
+ "additionalProperties": false,
590
+ "required": [
591
+ "fr",
592
+ "en"
593
+ ],
594
+ "properties": {
595
+ "fr": {
596
+ "type": "string",
597
+ "format": "uri",
598
+ "pattern": "^https://"
599
+ },
600
+ "en": {
601
+ "type": "string",
602
+ "format": "uri",
603
+ "pattern": "^https://"
604
+ }
605
+ }
606
+ }
607
+ }
608
+ }
609
+ }
610
+ }
611
+ }
612
+ }
613
+ }
package/package.json CHANGED
@@ -1,6 +1,61 @@
1
1
  {
2
2
  "name": "@krizaka/org",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
3
+ "version": "0.1.0",
4
+ "description": "The public facts about Krizaka, in one validated JSON that every footer, site and app reads: legal name, NEQ, « Fait à Montréal » in French and English, brand marks, default avatars and banners, the live products and sites, the public contact, the footer line and the mobile apps' public runtime config. Typed data, JSON Schema, and the files published on the CDN.",
5
+ "keywords": [
6
+ "krizaka",
7
+ "organization",
8
+ "footer",
9
+ "brand",
10
+ "json-schema"
11
+ ],
12
+ "homepage": "https://ts.krizaka.com/org",
13
+ "bugs": "https://github.com/krizaka/krizaka-ts/issues",
14
+ "repository": {
15
+ "type": "git",
16
+ "url": "git+https://github.com/krizaka/krizaka-ts.git",
17
+ "directory": "packages/org"
18
+ },
19
+ "license": "Apache-2.0",
20
+ "author": "Krizaka (https://www.krizaka.com)",
21
+ "type": "module",
22
+ "main": "./dist/index.js",
23
+ "module": "./dist/index.js",
24
+ "types": "./dist/index.d.ts",
25
+ "exports": {
26
+ ".": {
27
+ "types": "./dist/index.d.ts",
28
+ "import": "./dist/index.js"
29
+ },
30
+ "./org.json": "./dist/org.json",
31
+ "./org.schema.json": "./dist/org.schema.json",
32
+ "./apps/*.json": "./dist/apps/*.json",
33
+ "./package.json": "./package.json"
34
+ },
35
+ "files": [
36
+ "dist",
37
+ "README.md",
38
+ "LICENSE"
39
+ ],
40
+ "sideEffects": false,
41
+ "engines": {
42
+ "node": ">=22"
43
+ },
44
+ "devDependencies": {
45
+ "@types/node": "^22.10.0",
46
+ "ajv": "^8.17.0",
47
+ "eslint": "^9.39.0",
48
+ "tsup": "^8.5.0",
49
+ "typescript": "^5.9.3",
50
+ "vitest": "^4.1.11",
51
+ "@krizaka/config": "^0.8.0"
52
+ },
53
+ "scripts": {
54
+ "build": "node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\" && tsup && node scripts/emit.mjs",
55
+ "lint": "eslint . --max-warnings 0 && tsc --noEmit",
56
+ "typecheck": "tsc --noEmit",
57
+ "test": "vitest run",
58
+ "check": "pnpm run lint && pnpm run test && pnpm run build",
59
+ "publish:cdn": "node scripts/publish.mjs"
60
+ }
6
61
  }