@hyperscale0/udl 1.0.0-alpha.1

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 (97) hide show
  1. package/AUTHORS +8 -0
  2. package/CHANGELOG.md +36 -0
  3. package/LICENSE +661 -0
  4. package/LICENSING.md +51 -0
  5. package/README.md +163 -0
  6. package/SECURITY.md +42 -0
  7. package/TRADEMARKS.md +35 -0
  8. package/conformance/README.md +79 -0
  9. package/conformance/invalid/blank-title.expected.json +10 -0
  10. package/conformance/invalid/blank-title.udl +50 -0
  11. package/conformance/invalid/depth-budget.expected.json +10 -0
  12. package/conformance/invalid/depth-budget.udl +49 -0
  13. package/conformance/invalid/format-version.expected.json +10 -0
  14. package/conformance/invalid/format-version.udl +50 -0
  15. package/conformance/invalid/invalid-utf8.expected.json +10 -0
  16. package/conformance/invalid/invalid-utf8.udl +1 -0
  17. package/conformance/invalid/malformed-json.expected.json +10 -0
  18. package/conformance/invalid/malformed-json.udl +1 -0
  19. package/conformance/invalid/missing-create-verb.expected.json +10 -0
  20. package/conformance/invalid/missing-create-verb.udl +45 -0
  21. package/conformance/invalid/not-an-object.expected.json +10 -0
  22. package/conformance/invalid/not-an-object.udl +1 -0
  23. package/conformance/invalid/noun-id-not-snake-case.expected.json +10 -0
  24. package/conformance/invalid/noun-id-not-snake-case.udl +50 -0
  25. package/conformance/invalid/unknown-key.expected.json +10 -0
  26. package/conformance/invalid/unknown-key.udl +51 -0
  27. package/conformance/invalid/unreachable-state.expected.json +10 -0
  28. package/conformance/invalid/unreachable-state.udl +51 -0
  29. package/conformance/invalid/verb-without-transition.expected.json +10 -0
  30. package/conformance/invalid/verb-without-transition.udl +55 -0
  31. package/conformance/valid/cards.expected.json +5 -0
  32. package/conformance/valid/cards.udl +1092 -0
  33. package/conformance/valid/commerce-escrow.expected.json +5 -0
  34. package/conformance/valid/commerce-escrow.udl +1011 -0
  35. package/conformance/valid/hand-edited.expected.json +5 -0
  36. package/conformance/valid/hand-edited.udl +1 -0
  37. package/conformance/valid/insured-car-marketplace.expected.json +5 -0
  38. package/conformance/valid/insured-car-marketplace.udl +831 -0
  39. package/conformance/valid/insured-travel.expected.json +5 -0
  40. package/conformance/valid/insured-travel.udl +2621 -0
  41. package/conformance/valid/minimal.expected.json +5 -0
  42. package/conformance/valid/minimal.udl +50 -0
  43. package/conformance/valid/protection.expected.json +5 -0
  44. package/conformance/valid/protection.udl +1136 -0
  45. package/dist/canonical.d.ts +2 -0
  46. package/dist/canonical.d.ts.map +1 -0
  47. package/dist/canonical.js +35 -0
  48. package/dist/canonical.js.map +1 -0
  49. package/dist/cli.d.ts +3 -0
  50. package/dist/cli.d.ts.map +1 -0
  51. package/dist/cli.js +138 -0
  52. package/dist/cli.js.map +1 -0
  53. package/dist/duration.d.ts +3 -0
  54. package/dist/duration.d.ts.map +1 -0
  55. package/dist/duration.js +23 -0
  56. package/dist/duration.js.map +1 -0
  57. package/dist/evolution.d.ts +63 -0
  58. package/dist/evolution.d.ts.map +1 -0
  59. package/dist/evolution.js +345 -0
  60. package/dist/evolution.js.map +1 -0
  61. package/dist/finance.d.ts +53 -0
  62. package/dist/finance.d.ts.map +1 -0
  63. package/dist/finance.js +511 -0
  64. package/dist/finance.js.map +1 -0
  65. package/dist/index.d.ts +11 -0
  66. package/dist/index.d.ts.map +1 -0
  67. package/dist/index.js +8 -0
  68. package/dist/index.js.map +1 -0
  69. package/dist/limits.d.ts +33 -0
  70. package/dist/limits.d.ts.map +1 -0
  71. package/dist/limits.js +33 -0
  72. package/dist/limits.js.map +1 -0
  73. package/dist/parser.d.ts +4 -0
  74. package/dist/parser.d.ts.map +1 -0
  75. package/dist/parser.js +54 -0
  76. package/dist/parser.js.map +1 -0
  77. package/dist/schema.d.ts +757 -0
  78. package/dist/schema.d.ts.map +1 -0
  79. package/dist/schema.js +281 -0
  80. package/dist/schema.js.map +1 -0
  81. package/dist/validation.d.ts +64 -0
  82. package/dist/validation.d.ts.map +1 -0
  83. package/dist/validation.js +1323 -0
  84. package/dist/validation.js.map +1 -0
  85. package/package.json +84 -0
  86. package/spec/README.md +137 -0
  87. package/spec/udl.schema.json +1019 -0
  88. package/src/canonical.ts +41 -0
  89. package/src/cli.ts +148 -0
  90. package/src/duration.ts +26 -0
  91. package/src/evolution.ts +587 -0
  92. package/src/finance.ts +775 -0
  93. package/src/index.ts +59 -0
  94. package/src/limits.ts +32 -0
  95. package/src/parser.ts +61 -0
  96. package/src/schema.ts +339 -0
  97. package/src/validation.ts +2053 -0
@@ -0,0 +1,50 @@
1
+ {
2
+ "nouns": [
3
+ {
4
+ "fields": {
5
+ "reference": {
6
+ "type": "string"
7
+ }
8
+ },
9
+ "id": "noteItem",
10
+ "idPrefix": "note",
11
+ "lifecycle": {
12
+ "initial": "open",
13
+ "states": [
14
+ "open",
15
+ "closed"
16
+ ],
17
+ "transitions": {
18
+ "close": {
19
+ "from": [
20
+ "open"
21
+ ],
22
+ "to": "closed"
23
+ }
24
+ }
25
+ },
26
+ "required": [
27
+ "reference"
28
+ ],
29
+ "summary": "A note a tenant files and later closes.",
30
+ "title": "Note",
31
+ "verbs": {
32
+ "close": {
33
+ "moves": [],
34
+ "steps": [],
35
+ "summary": "Close the note."
36
+ },
37
+ "create": {
38
+ "moves": [],
39
+ "steps": [],
40
+ "summary": "File the note."
41
+ }
42
+ }
43
+ }
44
+ ],
45
+ "product": "minimal",
46
+ "subjects": [],
47
+ "title": "Minimal",
48
+ "udl": 1,
49
+ "version": 1
50
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "issues": [
3
+ {
4
+ "code": "invalid_shape",
5
+ "path": "$"
6
+ }
7
+ ],
8
+ "summary": "The grammar is closed: an unrecognized top-level key is refused, never ignored.",
9
+ "verdict": "invalid"
10
+ }
@@ -0,0 +1,51 @@
1
+ {
2
+ "nouns": [
3
+ {
4
+ "fields": {
5
+ "reference": {
6
+ "type": "string"
7
+ }
8
+ },
9
+ "id": "note",
10
+ "idPrefix": "note",
11
+ "lifecycle": {
12
+ "initial": "open",
13
+ "states": [
14
+ "open",
15
+ "closed"
16
+ ],
17
+ "transitions": {
18
+ "close": {
19
+ "from": [
20
+ "open"
21
+ ],
22
+ "to": "closed"
23
+ }
24
+ }
25
+ },
26
+ "required": [
27
+ "reference"
28
+ ],
29
+ "summary": "A note a tenant files and later closes.",
30
+ "title": "Note",
31
+ "verbs": {
32
+ "close": {
33
+ "moves": [],
34
+ "steps": [],
35
+ "summary": "Close the note."
36
+ },
37
+ "create": {
38
+ "moves": [],
39
+ "steps": [],
40
+ "summary": "File the note."
41
+ }
42
+ }
43
+ }
44
+ ],
45
+ "product": "minimal",
46
+ "subjects": [],
47
+ "title": "Minimal",
48
+ "udl": 1,
49
+ "version": 1,
50
+ "notes": "hello"
51
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "issues": [
3
+ {
4
+ "code": "invalid_semantics",
5
+ "path": "$.nouns[0].lifecycle.states[2]"
6
+ }
7
+ ],
8
+ "summary": "Lifecycle closure: a state no transition can reach is a typo, not a state.",
9
+ "verdict": "invalid"
10
+ }
@@ -0,0 +1,51 @@
1
+ {
2
+ "nouns": [
3
+ {
4
+ "fields": {
5
+ "reference": {
6
+ "type": "string"
7
+ }
8
+ },
9
+ "id": "note",
10
+ "idPrefix": "note",
11
+ "lifecycle": {
12
+ "initial": "open",
13
+ "states": [
14
+ "open",
15
+ "closed",
16
+ "archived"
17
+ ],
18
+ "transitions": {
19
+ "close": {
20
+ "from": [
21
+ "open"
22
+ ],
23
+ "to": "closed"
24
+ }
25
+ }
26
+ },
27
+ "required": [
28
+ "reference"
29
+ ],
30
+ "summary": "A note a tenant files and later closes.",
31
+ "title": "Note",
32
+ "verbs": {
33
+ "close": {
34
+ "moves": [],
35
+ "steps": [],
36
+ "summary": "Close the note."
37
+ },
38
+ "create": {
39
+ "moves": [],
40
+ "steps": [],
41
+ "summary": "File the note."
42
+ }
43
+ }
44
+ }
45
+ ],
46
+ "product": "minimal",
47
+ "subjects": [],
48
+ "title": "Minimal",
49
+ "udl": 1,
50
+ "version": 1
51
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "issues": [
3
+ {
4
+ "code": "invalid_semantics",
5
+ "path": "$.nouns[0].verbs.touch"
6
+ }
7
+ ],
8
+ "summary": "Every verb but create moves the instance between declared states.",
9
+ "verdict": "invalid"
10
+ }
@@ -0,0 +1,55 @@
1
+ {
2
+ "nouns": [
3
+ {
4
+ "fields": {
5
+ "reference": {
6
+ "type": "string"
7
+ }
8
+ },
9
+ "id": "note",
10
+ "idPrefix": "note",
11
+ "lifecycle": {
12
+ "initial": "open",
13
+ "states": [
14
+ "open",
15
+ "closed"
16
+ ],
17
+ "transitions": {
18
+ "close": {
19
+ "from": [
20
+ "open"
21
+ ],
22
+ "to": "closed"
23
+ }
24
+ }
25
+ },
26
+ "required": [
27
+ "reference"
28
+ ],
29
+ "summary": "A note a tenant files and later closes.",
30
+ "title": "Note",
31
+ "verbs": {
32
+ "close": {
33
+ "moves": [],
34
+ "steps": [],
35
+ "summary": "Close the note."
36
+ },
37
+ "create": {
38
+ "moves": [],
39
+ "steps": [],
40
+ "summary": "File the note."
41
+ },
42
+ "touch": {
43
+ "moves": [],
44
+ "steps": [],
45
+ "summary": "Touch the note."
46
+ }
47
+ }
48
+ }
49
+ ],
50
+ "product": "minimal",
51
+ "subjects": [],
52
+ "title": "Minimal",
53
+ "udl": 1,
54
+ "version": 1
55
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "canonical": "cards.udl",
3
+ "summary": "Card issuing: authorizations, transactions, and refunds over the sealed kernel.",
4
+ "verdict": "valid"
5
+ }