@ebusd/ebus-typespec 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.
Files changed (55) hide show
  1. package/README.md +62 -0
  2. package/dist/src/csv_emitter.d.ts +14 -0
  3. package/dist/src/csv_emitter.js +493 -0
  4. package/dist/src/csv_emitter.js.map +1 -0
  5. package/dist/src/decorators.d.ts +284 -0
  6. package/dist/src/decorators.js +437 -0
  7. package/dist/src/decorators.js.map +1 -0
  8. package/dist/src/index.d.ts +6 -0
  9. package/dist/src/index.js +16 -0
  10. package/dist/src/index.js.map +1 -0
  11. package/dist/src/lib.d.ts +214 -0
  12. package/dist/src/lib.js +124 -0
  13. package/dist/src/lib.js.map +1 -0
  14. package/dist/src/linter.d.ts +1 -0
  15. package/dist/src/linter.js +47 -0
  16. package/dist/src/linter.js.map +1 -0
  17. package/dist/src/rules/no-function.rule.d.ts +3 -0
  18. package/dist/src/rules/no-function.rule.js +17 -0
  19. package/dist/src/rules/no-function.rule.js.map +1 -0
  20. package/dist/src/rules/no-interface.rule.d.ts +3 -0
  21. package/dist/src/rules/no-interface.rule.js +17 -0
  22. package/dist/src/rules/no-interface.rule.js.map +1 -0
  23. package/dist/src/rules/no-intrinsic.rule.d.ts +3 -0
  24. package/dist/src/rules/no-intrinsic.rule.js +19 -0
  25. package/dist/src/rules/no-intrinsic.rule.js.map +1 -0
  26. package/dist/src/rules/no-literal.rule.d.ts +3 -0
  27. package/dist/src/rules/no-literal.rule.js +20 -0
  28. package/dist/src/rules/no-literal.rule.js.map +1 -0
  29. package/dist/src/rules/no-object.rule.d.ts +3 -0
  30. package/dist/src/rules/no-object.rule.js +17 -0
  31. package/dist/src/rules/no-object.rule.js.map +1 -0
  32. package/dist/src/rules/no-operation.rule.d.ts +3 -0
  33. package/dist/src/rules/no-operation.rule.js +19 -0
  34. package/dist/src/rules/no-operation.rule.js.map +1 -0
  35. package/dist/src/rules/no-projection.rule.d.ts +3 -0
  36. package/dist/src/rules/no-projection.rule.js +17 -0
  37. package/dist/src/rules/no-projection.rule.js.map +1 -0
  38. package/dist/src/rules/no-template.rule.d.ts +3 -0
  39. package/dist/src/rules/no-template.rule.js +20 -0
  40. package/dist/src/rules/no-template.rule.js.map +1 -0
  41. package/dist/src/rules/no-tuple.rule.d.ts +3 -0
  42. package/dist/src/rules/no-tuple.rule.js +17 -0
  43. package/dist/src/rules/no-tuple.rule.js.map +1 -0
  44. package/dist/src/rules/no-union.rule.d.ts +3 -0
  45. package/dist/src/rules/no-union.rule.js +20 -0
  46. package/dist/src/rules/no-union.rule.js.map +1 -0
  47. package/dist/src/testing/index.d.ts +2 -0
  48. package/dist/src/testing/index.js +6 -0
  49. package/dist/src/testing/index.js.map +1 -0
  50. package/docs.md +453 -0
  51. package/lib/decorators.tsp +127 -0
  52. package/lib/main.tsp +3 -0
  53. package/lib/models.tsp +61 -0
  54. package/lib/types.tsp +169 -0
  55. package/package.json +61 -0
package/lib/types.tsp ADDED
@@ -0,0 +1,169 @@
1
+ namespace Ebus;
2
+
3
+ /** A symbol on the bus. */
4
+ scalar Symbol extends uint8
5
+
6
+ /** List of special symbols. */
7
+ union symbols {
8
+ SYN: 0xaa,
9
+ ESC: 0xa9,
10
+ Symbol,
11
+ }
12
+
13
+ /** A source address 'QQ. */
14
+ scalar Source extends Symbol
15
+
16
+ /** A target address 'ZZ'. */
17
+ scalar Target extends Symbol
18
+
19
+ /** List of special target addresses. */
20
+ union targets {
21
+ /** the special broadcast target address. */
22
+ Broadcast: 0xfe,
23
+ Target,
24
+ }
25
+ /** the special broadcast target address. */
26
+ alias BROADCAST = 0xfe; // todo should be possible as targets.Broadcast someday
27
+
28
+ /** the primary command symbol 'PB'. */
29
+ scalar Pb extends Symbol
30
+
31
+ /** the secondary command symbol 'SB'. */
32
+ scalar Sb extends Symbol
33
+
34
+ /** The known numeric base types. */
35
+ namespace num {
36
+ @encode("uint8")
37
+ scalar BI0 extends boolean
38
+ @encode("uint8")
39
+ scalar BI1 extends boolean
40
+ @encode("uint8")
41
+ scalar BI2 extends boolean
42
+ @encode("uint8")
43
+ scalar BI3 extends boolean
44
+ @encode("uint8")
45
+ scalar BI4 extends boolean
46
+ @encode("uint8")
47
+ scalar BI5 extends boolean
48
+ @encode("uint8")
49
+ scalar BI6 extends boolean
50
+ @encode("uint8")
51
+ scalar BI7 extends boolean
52
+ @internal.maxBits(7)
53
+ scalar BI0_7 extends uint8
54
+
55
+ scalar UCH extends uint8
56
+ scalar SCH extends int8
57
+ alias D1B = SCH;
58
+ @internal.bcd
59
+ scalar BCD extends uint8
60
+ @internal.hex
61
+ scalar HCD extends uint8
62
+ @divisor(2)
63
+ scalar D1C extends uint8
64
+
65
+ @internal.reverse
66
+ @internal.bcd
67
+ scalar PIN extends uint16
68
+ scalar UIN extends uint16
69
+ @internal.reverse
70
+ scalar UIR extends UIN
71
+ scalar SIN extends int16
72
+ @internal.reverse
73
+ scalar SIR extends SIN
74
+ @internal.hex
75
+ scalar HCD2 extends uint16
76
+
77
+ @divisor(256)
78
+ scalar D2B extends int16
79
+
80
+ @divisor(16)
81
+ scalar D2C extends int16
82
+
83
+ @divisor(1000)
84
+ scalar FLT extends int16
85
+ @internal.reverse
86
+ scalar FLR extends FLT
87
+
88
+ //todo 3 byte int
89
+ @internal.bcd
90
+ scalar BCD3 extends uint32 // todo 3 bytes
91
+ @internal.hex
92
+ scalar HCD3 extends uint32 // todo 3 bytes
93
+
94
+ scalar ULG extends uint32
95
+ @internal.reverse
96
+ scalar ULR extends ULG
97
+ scalar SLG extends int32
98
+ @internal.reverse
99
+ scalar SLR extends SLG
100
+ @internal.bcd
101
+ scalar BCD4 extends uint32
102
+ @internal.hex
103
+ scalar HCD4 extends uint32
104
+
105
+ scalar EXP extends float32
106
+ @internal.reverse
107
+ scalar EXR extends EXP
108
+ }
109
+
110
+ /** The known string base types. */
111
+ namespace str {
112
+ @maxLength(31)
113
+ scalar STR extends string
114
+ @encode("nullterm") // todo
115
+ @maxLength(31)
116
+ scalar NTS extends string
117
+ @maxLength(31)
118
+ scalar IGN extends string // todo bytes would be more logical, but have not length limit
119
+ @internal.hex
120
+ @maxLength(31)
121
+ scalar HEX extends string
122
+ }
123
+
124
+ /** The known date/time base types. */
125
+ namespace dtm {
126
+ scalar BDY extends uint8 // todo weekday
127
+ scalar HDY extends uint8 // todo weekday
128
+ @internal.bcd
129
+ @encode("", uint32)
130
+ scalar BDA extends plainDate
131
+ alias BDA4 = BDA;
132
+ scalar BDA3 extends BDA // todo 3 bytes
133
+ scalar BDZ extends BDA
134
+ @internal.hex
135
+ @encode("", uint32)
136
+ scalar HDA extends plainDate
137
+ alias HDA4 = HDA;
138
+ scalar HDA3 extends HDA
139
+ @encode("", uint16)
140
+ scalar DAY extends plainDate
141
+ @encode("", uint32)
142
+ scalar DTM extends offsetDateTime
143
+
144
+ @internal.bcd
145
+ scalar BTI extends plainTime // todo 3 bytes
146
+ @internal.hex
147
+ scalar HTI extends plainTime // todo 3 bytes
148
+ @internal.reverse
149
+ scalar VTI extends HTI
150
+ @internal.bcd
151
+ @encode("", uint16)
152
+ scalar BTM extends plainTime
153
+ @internal.reverse
154
+ scalar VTM extends BTM
155
+ @internal.hex
156
+ @encode("", uint16)
157
+ scalar HTM extends plainTime
158
+ @encode("", uint16)
159
+ scalar MIN extends plainTime // todo check if rather duration
160
+ @divisor(10)
161
+ @encode("", uint8)
162
+ scalar TTM extends plainTime
163
+ @divisor(30)
164
+ @encode("", uint8)
165
+ scalar TTH extends plainTime
166
+ @divisor(15)
167
+ @encode("", uint8) // todo actually 7 bits
168
+ scalar TTQ extends plainTime
169
+ }
package/package.json ADDED
@@ -0,0 +1,61 @@
1
+ {
2
+ "name": "@ebusd/ebus-typespec",
3
+ "version": "0.1.0",
4
+ "author": "John Baier",
5
+ "description": "TypeSpec library for defining eBUS messages and emitting to ebusd CSV.",
6
+ "homepage": "https://github.com/john30/ebus-typespec",
7
+ "readme": "https://github.com/john30/ebus-typespec/blob/main/README.md",
8
+ "license": "MIT",
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "git+https://github.com/john30/ebus-typespec.git"
12
+ },
13
+ "bugs": {
14
+ "url": "https://github.com/john30/ebus-typespec/issues"
15
+ },
16
+ "keywords": [
17
+ "TypeSpec",
18
+ "eBUS"
19
+ ],
20
+ "type": "module",
21
+ "main": "dist/src/index.js",
22
+ "tspMain": "lib/main.tsp",
23
+ "exports": {
24
+ ".": {
25
+ "types": "./dist/src/index.d.ts",
26
+ "default": "./dist/src/index.js"
27
+ },
28
+ "./testing": {
29
+ "types": "./dist/src/testing/index.d.ts",
30
+ "default": "./dist/src/testing/index.js"
31
+ }
32
+ },
33
+ "engines": {
34
+ "node": ">=20.0.0"
35
+ },
36
+ "files": [
37
+ "lib/*.tsp",
38
+ "dist/**",
39
+ "!dist/test/**",
40
+ "*.md"
41
+ ],
42
+ "peerDependencies": {
43
+ "@typespec/compiler": "latest"
44
+ },
45
+ "devDependencies": {
46
+ "@typespec/compiler": "latest",
47
+ "@types/node": "latest",
48
+ "@typespec/library-linter": "latest",
49
+ "@typespec/tspd": "latest",
50
+ "typedoc": "^0.25.13",
51
+ "typedoc-plugin-markdown": "^4.0.3",
52
+ "typescript": "^5.4.5"
53
+ },
54
+ "scripts": {
55
+ "build": "tsc && npm run build:tsp",
56
+ "watch": "tsc --watch",
57
+ "build:tsp": "tsp compile . --warn-as-error --import @typespec/library-linter --no-emit",
58
+ "test": "node --test ./dist/test/",
59
+ "docs": "npx tspd doc . --enable-experimental"
60
+ }
61
+ }