@takuhon/core 0.1.0 → 0.2.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/dist/index.d.ts +1541 -321
- package/dist/index.js +734 -8
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/takuhon.schema.json +256 -2
package/takuhon.schema.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
-
"$id": "https://takuhon.example/schemas/0.
|
|
3
|
+
"$id": "https://takuhon.example/schemas/0.2.0/takuhon.schema.json",
|
|
4
4
|
"title": "Takuhon Profile",
|
|
5
5
|
"description": "Portable profile data format consumed by @takuhon/core. The canonical contract for profile content authored as takuhon.json.",
|
|
6
6
|
"type": "object",
|
|
@@ -43,6 +43,51 @@
|
|
|
43
43
|
"maxItems": 200,
|
|
44
44
|
"items": { "$ref": "#/$defs/Skill" }
|
|
45
45
|
},
|
|
46
|
+
"certifications": {
|
|
47
|
+
"type": "array",
|
|
48
|
+
"maxItems": 50,
|
|
49
|
+
"items": { "$ref": "#/$defs/Certification" }
|
|
50
|
+
},
|
|
51
|
+
"memberships": {
|
|
52
|
+
"type": "array",
|
|
53
|
+
"maxItems": 50,
|
|
54
|
+
"items": { "$ref": "#/$defs/Membership" }
|
|
55
|
+
},
|
|
56
|
+
"volunteering": {
|
|
57
|
+
"type": "array",
|
|
58
|
+
"maxItems": 50,
|
|
59
|
+
"items": { "$ref": "#/$defs/Volunteering" }
|
|
60
|
+
},
|
|
61
|
+
"honors": {
|
|
62
|
+
"type": "array",
|
|
63
|
+
"maxItems": 50,
|
|
64
|
+
"items": { "$ref": "#/$defs/Honor" }
|
|
65
|
+
},
|
|
66
|
+
"education": {
|
|
67
|
+
"type": "array",
|
|
68
|
+
"maxItems": 30,
|
|
69
|
+
"items": { "$ref": "#/$defs/Education" }
|
|
70
|
+
},
|
|
71
|
+
"publications": {
|
|
72
|
+
"type": "array",
|
|
73
|
+
"maxItems": 100,
|
|
74
|
+
"items": { "$ref": "#/$defs/Publication" }
|
|
75
|
+
},
|
|
76
|
+
"languages": {
|
|
77
|
+
"type": "array",
|
|
78
|
+
"maxItems": 30,
|
|
79
|
+
"items": { "$ref": "#/$defs/Language" }
|
|
80
|
+
},
|
|
81
|
+
"courses": {
|
|
82
|
+
"type": "array",
|
|
83
|
+
"maxItems": 100,
|
|
84
|
+
"items": { "$ref": "#/$defs/Course" }
|
|
85
|
+
},
|
|
86
|
+
"patents": {
|
|
87
|
+
"type": "array",
|
|
88
|
+
"maxItems": 50,
|
|
89
|
+
"items": { "$ref": "#/$defs/Patent" }
|
|
90
|
+
},
|
|
46
91
|
"contact": { "$ref": "#/$defs/Contact" },
|
|
47
92
|
"settings": { "$ref": "#/$defs/Settings" },
|
|
48
93
|
"meta": { "$ref": "#/$defs/Meta" }
|
|
@@ -320,7 +365,8 @@
|
|
|
320
365
|
"maxLength": 100,
|
|
321
366
|
"description": "Tool that produced this document (e.g. 'Takuhon', 'create-takuhon@0.1.0')."
|
|
322
367
|
},
|
|
323
|
-
"contentLicense": { "$ref": "#/$defs/ContentLicense" }
|
|
368
|
+
"contentLicense": { "$ref": "#/$defs/ContentLicense" },
|
|
369
|
+
"privacy": { "$ref": "#/$defs/MetaPrivacy" }
|
|
324
370
|
}
|
|
325
371
|
},
|
|
326
372
|
"ContentLicense": {
|
|
@@ -350,6 +396,214 @@
|
|
|
350
396
|
"description": "Free-form rights statement (used when spdxId='Proprietary' or for additional notices)."
|
|
351
397
|
}
|
|
352
398
|
}
|
|
399
|
+
},
|
|
400
|
+
"MetaPrivacy": {
|
|
401
|
+
"type": "object",
|
|
402
|
+
"additionalProperties": true,
|
|
403
|
+
"description": "Opt-out flags that strip personally identifying fields from public API output (GET /api/profile, /api/jsonld, /takuhon.json). Admin endpoints (PUT /api/admin/*, GET /api/export) ignore these flags. Privacy-by-default: omitting the object or individual flags is equivalent to true.",
|
|
404
|
+
"properties": {
|
|
405
|
+
"hideCredentialIds": {
|
|
406
|
+
"type": "boolean",
|
|
407
|
+
"default": true,
|
|
408
|
+
"description": "When true (default), strip certifications[*].credentialId from public responses."
|
|
409
|
+
},
|
|
410
|
+
"hideEducationGrades": {
|
|
411
|
+
"type": "boolean",
|
|
412
|
+
"default": true,
|
|
413
|
+
"description": "When true (default), strip education[*].grade from public responses."
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
},
|
|
417
|
+
"Certification": {
|
|
418
|
+
"type": "object",
|
|
419
|
+
"additionalProperties": true,
|
|
420
|
+
"required": ["id", "title", "issuingOrganization", "issueDate"],
|
|
421
|
+
"properties": {
|
|
422
|
+
"id": { "$ref": "#/$defs/Slug" },
|
|
423
|
+
"title": { "$ref": "#/$defs/LocalizedTitle" },
|
|
424
|
+
"issuingOrganization": { "$ref": "#/$defs/LocalizedTitle" },
|
|
425
|
+
"issueDate": { "$ref": "#/$defs/YearMonth" },
|
|
426
|
+
"expirationDate": {
|
|
427
|
+
"anyOf": [{ "$ref": "#/$defs/YearMonth" }, { "type": "null" }],
|
|
428
|
+
"description": "null = explicitly 'no expiration'. Omit if unknown/unstated."
|
|
429
|
+
},
|
|
430
|
+
"credentialId": {
|
|
431
|
+
"type": "string",
|
|
432
|
+
"minLength": 1,
|
|
433
|
+
"maxLength": 100,
|
|
434
|
+
"description": "License or certificate number. Public exposure controlled by meta.privacy.hideCredentialIds."
|
|
435
|
+
},
|
|
436
|
+
"url": { "$ref": "#/$defs/Url" },
|
|
437
|
+
"order": { "type": "integer", "minimum": 0 }
|
|
438
|
+
}
|
|
439
|
+
},
|
|
440
|
+
"Membership": {
|
|
441
|
+
"type": "object",
|
|
442
|
+
"additionalProperties": true,
|
|
443
|
+
"required": ["id", "organization", "startDate"],
|
|
444
|
+
"properties": {
|
|
445
|
+
"id": { "$ref": "#/$defs/Slug" },
|
|
446
|
+
"organization": { "$ref": "#/$defs/LocalizedTitle" },
|
|
447
|
+
"role": { "$ref": "#/$defs/LocalizedTitle" },
|
|
448
|
+
"description": { "$ref": "#/$defs/LocalizedBody" },
|
|
449
|
+
"startDate": { "$ref": "#/$defs/YearMonth" },
|
|
450
|
+
"endDate": {
|
|
451
|
+
"anyOf": [{ "$ref": "#/$defs/YearMonth" }, { "type": "null" }],
|
|
452
|
+
"description": "null = ongoing. Omit if unknown."
|
|
453
|
+
},
|
|
454
|
+
"isCurrent": { "type": "boolean" },
|
|
455
|
+
"url": { "$ref": "#/$defs/Url" },
|
|
456
|
+
"order": { "type": "integer", "minimum": 0 }
|
|
457
|
+
}
|
|
458
|
+
},
|
|
459
|
+
"Volunteering": {
|
|
460
|
+
"type": "object",
|
|
461
|
+
"additionalProperties": true,
|
|
462
|
+
"required": ["id", "organization", "role", "startDate"],
|
|
463
|
+
"properties": {
|
|
464
|
+
"id": { "$ref": "#/$defs/Slug" },
|
|
465
|
+
"organization": { "$ref": "#/$defs/LocalizedTitle" },
|
|
466
|
+
"role": { "$ref": "#/$defs/LocalizedTitle" },
|
|
467
|
+
"cause": { "$ref": "#/$defs/LocalizedTitle" },
|
|
468
|
+
"description": { "$ref": "#/$defs/LocalizedBody" },
|
|
469
|
+
"startDate": { "$ref": "#/$defs/YearMonth" },
|
|
470
|
+
"endDate": {
|
|
471
|
+
"anyOf": [{ "$ref": "#/$defs/YearMonth" }, { "type": "null" }]
|
|
472
|
+
},
|
|
473
|
+
"isCurrent": { "type": "boolean" },
|
|
474
|
+
"url": { "$ref": "#/$defs/Url" },
|
|
475
|
+
"order": { "type": "integer", "minimum": 0 }
|
|
476
|
+
}
|
|
477
|
+
},
|
|
478
|
+
"Honor": {
|
|
479
|
+
"type": "object",
|
|
480
|
+
"additionalProperties": true,
|
|
481
|
+
"required": ["id", "title", "issuer", "date"],
|
|
482
|
+
"properties": {
|
|
483
|
+
"id": { "$ref": "#/$defs/Slug" },
|
|
484
|
+
"title": { "$ref": "#/$defs/LocalizedTitle" },
|
|
485
|
+
"issuer": { "$ref": "#/$defs/LocalizedTitle" },
|
|
486
|
+
"description": { "$ref": "#/$defs/LocalizedBody" },
|
|
487
|
+
"date": { "$ref": "#/$defs/YearMonth" },
|
|
488
|
+
"url": { "$ref": "#/$defs/Url" },
|
|
489
|
+
"order": { "type": "integer", "minimum": 0 }
|
|
490
|
+
}
|
|
491
|
+
},
|
|
492
|
+
"Education": {
|
|
493
|
+
"type": "object",
|
|
494
|
+
"additionalProperties": true,
|
|
495
|
+
"required": ["id", "institution", "startDate"],
|
|
496
|
+
"properties": {
|
|
497
|
+
"id": { "$ref": "#/$defs/Slug" },
|
|
498
|
+
"institution": { "$ref": "#/$defs/LocalizedTitle" },
|
|
499
|
+
"degree": { "$ref": "#/$defs/LocalizedTitle" },
|
|
500
|
+
"fieldOfStudy": { "$ref": "#/$defs/LocalizedTitle" },
|
|
501
|
+
"description": { "$ref": "#/$defs/LocalizedBody" },
|
|
502
|
+
"grade": {
|
|
503
|
+
"type": "string",
|
|
504
|
+
"minLength": 1,
|
|
505
|
+
"maxLength": 50,
|
|
506
|
+
"description": "Free-form grade / class / GPA. Public exposure controlled by meta.privacy.hideEducationGrades."
|
|
507
|
+
},
|
|
508
|
+
"startDate": { "$ref": "#/$defs/YearMonth" },
|
|
509
|
+
"endDate": {
|
|
510
|
+
"anyOf": [{ "$ref": "#/$defs/YearMonth" }, { "type": "null" }],
|
|
511
|
+
"description": "null = currently enrolled."
|
|
512
|
+
},
|
|
513
|
+
"isCurrent": { "type": "boolean" },
|
|
514
|
+
"url": { "$ref": "#/$defs/Url" },
|
|
515
|
+
"order": { "type": "integer", "minimum": 0 }
|
|
516
|
+
}
|
|
517
|
+
},
|
|
518
|
+
"Publication": {
|
|
519
|
+
"type": "object",
|
|
520
|
+
"additionalProperties": true,
|
|
521
|
+
"required": ["id", "title", "date"],
|
|
522
|
+
"properties": {
|
|
523
|
+
"id": { "$ref": "#/$defs/Slug" },
|
|
524
|
+
"title": { "$ref": "#/$defs/LocalizedTitle" },
|
|
525
|
+
"publisher": { "$ref": "#/$defs/LocalizedTitle" },
|
|
526
|
+
"description": { "$ref": "#/$defs/LocalizedBody" },
|
|
527
|
+
"date": { "$ref": "#/$defs/YearMonth" },
|
|
528
|
+
"url": { "$ref": "#/$defs/Url" },
|
|
529
|
+
"doi": {
|
|
530
|
+
"type": "string",
|
|
531
|
+
"minLength": 1,
|
|
532
|
+
"maxLength": 200,
|
|
533
|
+
"description": "DOI identifier (e.g. '10.1145/3548643.3548644'). The full URL goes in 'url'."
|
|
534
|
+
},
|
|
535
|
+
"coAuthors": {
|
|
536
|
+
"type": "array",
|
|
537
|
+
"maxItems": 50,
|
|
538
|
+
"items": { "type": "string", "minLength": 1, "maxLength": 100 },
|
|
539
|
+
"description": "Co-author names in original script. Excludes the profile owner."
|
|
540
|
+
},
|
|
541
|
+
"order": { "type": "integer", "minimum": 0 }
|
|
542
|
+
}
|
|
543
|
+
},
|
|
544
|
+
"Language": {
|
|
545
|
+
"type": "object",
|
|
546
|
+
"additionalProperties": true,
|
|
547
|
+
"required": ["id", "language", "proficiency"],
|
|
548
|
+
"properties": {
|
|
549
|
+
"id": { "$ref": "#/$defs/Slug" },
|
|
550
|
+
"language": { "$ref": "#/$defs/LocaleTag" },
|
|
551
|
+
"displayName": { "$ref": "#/$defs/LocalizedTitle" },
|
|
552
|
+
"proficiency": {
|
|
553
|
+
"type": "string",
|
|
554
|
+
"enum": ["native", "fluent", "professional", "intermediate", "basic"],
|
|
555
|
+
"description": "LinkedIn-compatible 5-level proficiency."
|
|
556
|
+
},
|
|
557
|
+
"order": { "type": "integer", "minimum": 0 }
|
|
558
|
+
}
|
|
559
|
+
},
|
|
560
|
+
"Course": {
|
|
561
|
+
"type": "object",
|
|
562
|
+
"additionalProperties": true,
|
|
563
|
+
"required": ["id", "title"],
|
|
564
|
+
"properties": {
|
|
565
|
+
"id": { "$ref": "#/$defs/Slug" },
|
|
566
|
+
"title": { "$ref": "#/$defs/LocalizedTitle" },
|
|
567
|
+
"provider": { "$ref": "#/$defs/LocalizedTitle" },
|
|
568
|
+
"courseNumber": { "type": "string", "minLength": 1, "maxLength": 50 },
|
|
569
|
+
"description": { "$ref": "#/$defs/LocalizedBody" },
|
|
570
|
+
"completionDate": { "$ref": "#/$defs/YearMonth" },
|
|
571
|
+
"certificateUrl": { "$ref": "#/$defs/Url" },
|
|
572
|
+
"relatedEducationId": {
|
|
573
|
+
"$ref": "#/$defs/Slug",
|
|
574
|
+
"description": "Optional reference to an education[].id (e.g. for university coursework)."
|
|
575
|
+
},
|
|
576
|
+
"order": { "type": "integer", "minimum": 0 }
|
|
577
|
+
}
|
|
578
|
+
},
|
|
579
|
+
"Patent": {
|
|
580
|
+
"type": "object",
|
|
581
|
+
"additionalProperties": true,
|
|
582
|
+
"required": ["id", "title", "patentNumber", "status"],
|
|
583
|
+
"properties": {
|
|
584
|
+
"id": { "$ref": "#/$defs/Slug" },
|
|
585
|
+
"title": { "$ref": "#/$defs/LocalizedTitle" },
|
|
586
|
+
"patentNumber": { "type": "string", "minLength": 1, "maxLength": 100 },
|
|
587
|
+
"office": {
|
|
588
|
+
"type": "string",
|
|
589
|
+
"maxLength": 100,
|
|
590
|
+
"description": "Patent office name (e.g. 'USPTO', 'JPO', 'EPO')."
|
|
591
|
+
},
|
|
592
|
+
"status": {
|
|
593
|
+
"type": "string",
|
|
594
|
+
"enum": ["pending", "issued", "expired", "abandoned"]
|
|
595
|
+
},
|
|
596
|
+
"description": { "$ref": "#/$defs/LocalizedBody" },
|
|
597
|
+
"filingDate": { "$ref": "#/$defs/YearMonth" },
|
|
598
|
+
"grantDate": { "$ref": "#/$defs/YearMonth" },
|
|
599
|
+
"url": { "$ref": "#/$defs/Url" },
|
|
600
|
+
"coInventors": {
|
|
601
|
+
"type": "array",
|
|
602
|
+
"maxItems": 20,
|
|
603
|
+
"items": { "type": "string", "minLength": 1, "maxLength": 100 }
|
|
604
|
+
},
|
|
605
|
+
"order": { "type": "integer", "minimum": 0 }
|
|
606
|
+
}
|
|
353
607
|
}
|
|
354
608
|
}
|
|
355
609
|
}
|