@timeax/digital-service-engine 0.0.1 → 0.0.2

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@timeax/digital-service-engine",
3
- "version": "0.0.1",
3
+ "version": "0.0.2",
4
4
  "description": "Headless service props builder + minimal React Flow workspace.",
5
5
  "type": "module",
6
6
  "exports": {
@@ -44,7 +44,9 @@
44
44
  "dev": "tsup --watch",
45
45
  "typecheck": "tsc --noEmit",
46
46
  "test": "vitest run",
47
- "build:schema": "node scripts/generate-schemas.mjs"
47
+ "build:schema": "node scripts/generate-schemas.mjs",
48
+ "prepublishOnly": "npm run typecheck && npm test && npm run build",
49
+ "postpublish": "git push --follow-tags && npm version patch"
48
50
  },
49
51
  "repository": {
50
52
  "type": "git",
@@ -63,26 +65,33 @@
63
65
  "reactflow": "^11.11.4"
64
66
  },
65
67
  "devDependencies": {
68
+ "@radix-ui/react-label": "^2.1.8",
69
+ "@radix-ui/react-popover": "^1.1.15",
70
+ "@radix-ui/react-select": "^2.2.6",
71
+ "@radix-ui/react-slot": "^1.2.4",
66
72
  "@types/lodash-es": "^4.17.12",
67
73
  "@types/node": "^25.0.9",
68
- "@types/react": "^18.3.24",
74
+ "@types/react": "^18.3.28",
69
75
  "@types/react-dom": "^18.3.7",
76
+ "@vitejs/plugin-react": "^5.1.2",
70
77
  "jsdom": "^27.4.0",
71
78
  "prettier": "^3.6.2",
79
+ "react": "^19.2.4",
80
+ "react-dom": "^19.2.4",
81
+ "reactflow": "^11.11.4",
72
82
  "rimraf": "^5.0.10",
73
83
  "ts-json-schema-generator": "^2.4.0",
74
84
  "tsup": "^8.5.0",
75
85
  "typescript": "^5.9.2",
76
- "vitest": "^1.6.1",
77
- "@vitejs/plugin-react": "^5.1.2"
86
+ "vitest": "^1.6.1"
78
87
  },
79
88
  "dependencies": {
80
89
  "@radix-ui/react-dialog": "^1.1.15",
81
90
  "@radix-ui/react-dropdown-menu": "^2.1.16",
82
91
  "@radix-ui/react-separator": "^1.1.7",
83
- "@radix-ui/react-slot": "^1.2.3",
84
92
  "@radix-ui/react-tabs": "^1.1.13",
85
93
  "@timeax/cache-store": "^0.0.1",
94
+ "@timeax/form-palette": "^0.1.28",
86
95
  "class-variance-authority": "^0.7.1",
87
96
  "clsx": "^2.1.1",
88
97
  "elkjs": "^0.11.0",
@@ -73,6 +73,15 @@
73
73
  },
74
74
  "fallbacks": {
75
75
  "$ref": "#/definitions/ServiceFallback"
76
+ },
77
+ "name": {
78
+ "type": "string"
79
+ },
80
+ "notices": {
81
+ "type": "array",
82
+ "items": {
83
+ "$ref": "#/definitions/ServicePropsNotice"
84
+ }
76
85
  }
77
86
  },
78
87
  "required": [
@@ -296,13 +305,6 @@
296
305
  "required": {
297
306
  "type": "boolean"
298
307
  },
299
- "ui": {
300
- "type": "object",
301
- "additionalProperties": {
302
- "$ref": "#/definitions/Ui"
303
- },
304
- "description": "Host-defined prop names → typed UI nodes"
305
- },
306
308
  "defaults": {
307
309
  "type": "object",
308
310
  "additionalProperties": {},
@@ -454,13 +456,6 @@
454
456
  "required": {
455
457
  "type": "boolean"
456
458
  },
457
- "ui": {
458
- "type": "object",
459
- "additionalProperties": {
460
- "$ref": "#/definitions/Ui"
461
- },
462
- "description": "Host-defined prop names → typed UI nodes"
463
- },
464
459
  "defaults": {
465
460
  "type": "object",
466
461
  "additionalProperties": {},
@@ -560,236 +555,153 @@
560
555
  "utility"
561
556
  ]
562
557
  },
563
- "Ui": {
564
- "anyOf": [
565
- {
566
- "$ref": "#/definitions/UiString"
567
- },
568
- {
569
- "$ref": "#/definitions/UiNumber"
570
- },
571
- {
572
- "$ref": "#/definitions/UiBoolean"
573
- },
574
- {
575
- "$ref": "#/definitions/UiAnyOf"
576
- },
577
- {
578
- "$ref": "#/definitions/UiArray"
558
+ "ServiceFallback": {
559
+ "type": "object",
560
+ "properties": {
561
+ "nodes": {
562
+ "type": "object",
563
+ "additionalProperties": {
564
+ "type": "array",
565
+ "items": {
566
+ "$ref": "#/definitions/ServiceIdRef"
567
+ }
568
+ },
569
+ "description": "Node-scoped fallbacks: prefer these when that node’s primary service fails"
579
570
  },
580
- {
581
- "$ref": "#/definitions/UiObject"
571
+ "global": {
572
+ "type": "object",
573
+ "additionalProperties": {
574
+ "type": "array",
575
+ "items": {
576
+ "$ref": "#/definitions/ServiceIdRef"
577
+ }
578
+ },
579
+ "description": "Primary→fallback list used when no node-scoped entry is present"
582
580
  }
581
+ }
582
+ },
583
+ "ServiceIdRef": {
584
+ "type": [
585
+ "number",
586
+ "string"
583
587
  ]
584
588
  },
585
- "UiString": {
589
+ "ServicePropsNotice": {
586
590
  "type": "object",
587
591
  "properties": {
592
+ "id": {
593
+ "type": "string"
594
+ },
588
595
  "type": {
589
- "type": "string",
590
- "const": "string"
596
+ "$ref": "#/definitions/NoticeType"
591
597
  },
592
- "enum": {
593
- "type": "array",
594
- "items": {
595
- "type": "string"
596
- }
598
+ "kind": {
599
+ "$ref": "#/definitions/NoticeKind"
597
600
  },
598
- "minLength": {
599
- "type": "number"
601
+ "severity": {
602
+ "$ref": "#/definitions/NoticeSeverity"
600
603
  },
601
- "maxLength": {
602
- "type": "number"
604
+ "target": {
605
+ "$ref": "#/definitions/NoticeTarget"
603
606
  },
604
- "pattern": {
607
+ "title": {
605
608
  "type": "string"
606
609
  },
607
- "format": {
610
+ "description": {
608
611
  "type": "string"
609
- }
610
- },
611
- "required": [
612
- "type"
613
- ],
614
- "description": "string"
615
- },
616
- "UiNumber": {
617
- "type": "object",
618
- "properties": {
619
- "type": {
620
- "type": "string",
621
- "const": "number"
622
612
  },
623
- "minimum": {
624
- "type": "number"
613
+ "reason": {
614
+ "type": "string"
625
615
  },
626
- "maximum": {
627
- "type": "number"
616
+ "marked_at": {
617
+ "type": "string"
628
618
  },
629
- "multipleOf": {
630
- "type": "number"
631
- }
632
- },
633
- "required": [
634
- "type"
635
- ],
636
- "description": "number"
637
- },
638
- "UiBoolean": {
639
- "type": "object",
640
- "properties": {
641
- "type": {
642
- "type": "string",
643
- "const": "boolean"
644
- }
645
- },
646
- "required": [
647
- "type"
648
- ],
649
- "description": "boolean"
650
- },
651
- "UiAnyOf": {
652
- "type": "object",
653
- "properties": {
654
- "type": {
655
- "type": "string",
656
- "const": "anyOf"
619
+ "icon": {
620
+ "type": "string"
657
621
  },
658
- "multiple": {
659
- "type": "boolean"
622
+ "color": {
623
+ "type": "string"
660
624
  },
661
- "items": {
662
- "type": "array",
663
- "items": {
664
- "type": "object",
665
- "properties": {
666
- "type": {
667
- "type": "string",
668
- "enum": [
669
- "string",
670
- "number",
671
- "boolean"
672
- ]
673
- },
674
- "title": {
675
- "type": "string"
676
- },
677
- "description": {
678
- "type": "string"
679
- },
680
- "value": {
681
- "type": [
682
- "string",
683
- "number",
684
- "boolean"
685
- ]
686
- }
687
- },
688
- "required": [
689
- "type",
690
- "value"
691
- ]
692
- }
625
+ "meta": {
626
+ "type": "object",
627
+ "additionalProperties": {}
693
628
  }
694
629
  },
695
630
  "required": [
631
+ "id",
696
632
  "type",
697
- "items"
698
- ],
699
- "description": "enumerated choices"
633
+ "kind",
634
+ "severity",
635
+ "target",
636
+ "title"
637
+ ]
700
638
  },
701
- "UiArray": {
702
- "type": "object",
703
- "properties": {
704
- "type": {
705
- "type": "string",
706
- "const": "array"
707
- },
708
- "item": {
709
- "$ref": "#/definitions/Ui"
710
- },
711
- "items": {
712
- "type": "array",
713
- "items": {
714
- "$ref": "#/definitions/Ui"
715
- }
716
- },
717
- "minItems": {
718
- "type": "number"
719
- },
720
- "maxItems": {
721
- "type": "number"
722
- },
723
- "uniqueItems": {
724
- "type": "boolean"
725
- }
726
- },
727
- "required": [
728
- "type"
729
- ],
730
- "description": "arrays: homogeneous (item) or tuple (items)"
639
+ "NoticeType": {
640
+ "type": "string",
641
+ "enum": [
642
+ "public",
643
+ "private"
644
+ ]
731
645
  },
732
- "UiObject": {
733
- "type": "object",
734
- "properties": {
735
- "type": {
736
- "type": "string",
737
- "const": "object"
738
- },
739
- "fields": {
740
- "type": "object",
741
- "additionalProperties": {
742
- "$ref": "#/definitions/Ui"
743
- }
744
- },
745
- "required": {
746
- "type": "array",
747
- "items": {
748
- "type": "string"
749
- }
750
- },
751
- "order": {
752
- "type": "array",
753
- "items": {
754
- "type": "string"
755
- }
756
- }
757
- },
758
- "required": [
759
- "type",
760
- "fields"
646
+ "NoticeKind": {
647
+ "type": "string",
648
+ "enum": [
649
+ "label",
650
+ "warning",
651
+ "deprecation",
652
+ "compat",
653
+ "migration",
654
+ "policy"
761
655
  ],
762
- "description": "objects: nested props"
656
+ "description": "“label” is lightweight + UI-friendly (best, sale, hot, etc). Others remain semantic / governance oriented."
763
657
  },
764
- "ServiceFallback": {
765
- "type": "object",
766
- "properties": {
767
- "nodes": {
658
+ "NoticeSeverity": {
659
+ "type": "string",
660
+ "enum": [
661
+ "info",
662
+ "warning",
663
+ "error"
664
+ ]
665
+ },
666
+ "NoticeTarget": {
667
+ "anyOf": [
668
+ {
768
669
  "type": "object",
769
- "additionalProperties": {
770
- "type": "array",
771
- "items": {
772
- "$ref": "#/definitions/ServiceIdRef"
670
+ "properties": {
671
+ "scope": {
672
+ "type": "string",
673
+ "const": "global"
773
674
  }
774
675
  },
775
- "description": "Node-scoped fallbacks: prefer these when that node’s primary service fails"
676
+ "required": [
677
+ "scope"
678
+ ]
776
679
  },
777
- "global": {
680
+ {
778
681
  "type": "object",
779
- "additionalProperties": {
780
- "type": "array",
781
- "items": {
782
- "$ref": "#/definitions/ServiceIdRef"
682
+ "properties": {
683
+ "scope": {
684
+ "type": "string",
685
+ "const": "node"
686
+ },
687
+ "node_kind": {
688
+ "type": "string",
689
+ "enum": [
690
+ "tag",
691
+ "field",
692
+ "option"
693
+ ]
694
+ },
695
+ "node_id": {
696
+ "type": "string"
783
697
  }
784
698
  },
785
- "description": "Primary→fallback list used when no node-scoped entry is present"
699
+ "required": [
700
+ "scope",
701
+ "node_kind",
702
+ "node_id"
703
+ ]
786
704
  }
787
- }
788
- },
789
- "ServiceIdRef": {
790
- "type": [
791
- "number",
792
- "string"
793
705
  ]
794
706
  },
795
707
  "LayoutState": {