@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.
- package/README.md +62 -0
- package/dist/src/csv_emitter.d.ts +14 -0
- package/dist/src/csv_emitter.js +493 -0
- package/dist/src/csv_emitter.js.map +1 -0
- package/dist/src/decorators.d.ts +284 -0
- package/dist/src/decorators.js +437 -0
- package/dist/src/decorators.js.map +1 -0
- package/dist/src/index.d.ts +6 -0
- package/dist/src/index.js +16 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/lib.d.ts +214 -0
- package/dist/src/lib.js +124 -0
- package/dist/src/lib.js.map +1 -0
- package/dist/src/linter.d.ts +1 -0
- package/dist/src/linter.js +47 -0
- package/dist/src/linter.js.map +1 -0
- package/dist/src/rules/no-function.rule.d.ts +3 -0
- package/dist/src/rules/no-function.rule.js +17 -0
- package/dist/src/rules/no-function.rule.js.map +1 -0
- package/dist/src/rules/no-interface.rule.d.ts +3 -0
- package/dist/src/rules/no-interface.rule.js +17 -0
- package/dist/src/rules/no-interface.rule.js.map +1 -0
- package/dist/src/rules/no-intrinsic.rule.d.ts +3 -0
- package/dist/src/rules/no-intrinsic.rule.js +19 -0
- package/dist/src/rules/no-intrinsic.rule.js.map +1 -0
- package/dist/src/rules/no-literal.rule.d.ts +3 -0
- package/dist/src/rules/no-literal.rule.js +20 -0
- package/dist/src/rules/no-literal.rule.js.map +1 -0
- package/dist/src/rules/no-object.rule.d.ts +3 -0
- package/dist/src/rules/no-object.rule.js +17 -0
- package/dist/src/rules/no-object.rule.js.map +1 -0
- package/dist/src/rules/no-operation.rule.d.ts +3 -0
- package/dist/src/rules/no-operation.rule.js +19 -0
- package/dist/src/rules/no-operation.rule.js.map +1 -0
- package/dist/src/rules/no-projection.rule.d.ts +3 -0
- package/dist/src/rules/no-projection.rule.js +17 -0
- package/dist/src/rules/no-projection.rule.js.map +1 -0
- package/dist/src/rules/no-template.rule.d.ts +3 -0
- package/dist/src/rules/no-template.rule.js +20 -0
- package/dist/src/rules/no-template.rule.js.map +1 -0
- package/dist/src/rules/no-tuple.rule.d.ts +3 -0
- package/dist/src/rules/no-tuple.rule.js +17 -0
- package/dist/src/rules/no-tuple.rule.js.map +1 -0
- package/dist/src/rules/no-union.rule.d.ts +3 -0
- package/dist/src/rules/no-union.rule.js +20 -0
- package/dist/src/rules/no-union.rule.js.map +1 -0
- package/dist/src/testing/index.d.ts +2 -0
- package/dist/src/testing/index.js +6 -0
- package/dist/src/testing/index.js.map +1 -0
- package/docs.md +453 -0
- package/lib/decorators.tsp +127 -0
- package/lib/main.tsp +3 -0
- package/lib/models.tsp +61 -0
- package/lib/types.tsp +169 -0
- 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
|
+
}
|