-
Notifications
You must be signed in to change notification settings - Fork 4
/
TODO
174 lines (147 loc) · 6.54 KB
/
TODO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
## TODO
### 2021-04-18 TYPESCRIPT EDITION
Typescript update: turn all of boltzmann into typescript. This lets us maintain
a single version of all files, then compile the typescript out for javascript
mode. Typescript also gives us a high-level pass on our compiled boltzmann.js
file for any given set of flags -- if it passes typescript it'll (probably)
work.
- [ ] add "setup for local boltzmann dev"
- this should allow testing files with `tap` + typescript
- to do this, we want to grab the package.json that would be generated for a new
typescript project along with tsconfig & typings and put them in cwd
- then `npm i`
- [ ] implement hayes' middleware validation typedefs
- [ ] add tests to ALL FILES / make sure all features are working as expected (again, write tests!)
- [ ] render {% changelog %} correctly in docstrings
- [ ] merge project files (no more ts and js variants; just treat it as one variant)
- [x] note missing defs from boltzmann.d.ts
- [x] "Next" is now "Handler"
- [x] "Response" does not exist / needs defined + exported I think
- [x] fixup docstrings -- they currently don't show in editor!
- [x] fill in `HACKING.md`
- [x] add test for "only production deps are installed" and make sure boltzmann still runs!
- [x] ensure devdeps are only required in dev mode
- [x] change "selftest" setup
- "selftest" is kind of a misnomer now: there's "test in situ" – i.e., before
concatenating a `boltzmann.ts` together – and "test compiled", which are integration
tests against a compiled `boltzmann.ts`
- [x] post-process typescript to get to javascript mode
- suggestion from ceej: move exports up to selftest blocks so we can transpile templates
- transpiling templates:
- ts is terrible at preserving comments, so "// {% if selftest %}" is now "void `{% if selftest %}`"
- also it really wants to control import syntax
- target module: ES2020, not CommonJS, then we'll rewrite the result (!!)
- also "grep -v 'void ``'"
- and turn off source maps
- drops endifs from:
- entrypoint
- prelude
- solution: break out export { } block
- status
- [x] stretch goal: make it possible to run tap against the JS transpilation
- [x] add JS transpilation step to `build.rs`
- [x] docstrings -- pull from reference docs (somehow)
### 2020-12-10
- [ ] typescript support
- [x] install tsconfig.json
- [x] node -r tsnode/register
- [x] add to run scripts
- [-] build script
- [ ] make sure it brings boltzmann.js in
- options
1. leave boltzmann as JS, generate TS for everything else <-- went this route
1. write a declaration file if they'll let us
2. somehow make it work without a declaration file
2. rewrite boltzmann in TS, compile to JS on scaffolding for non-TS targets
CJ and Chris' type goals:
- autocomplete in editor is gold
- typechecking is good
- but we don't like transpiling server services
- debugging becomes harder -- what's checked into your repo is not what's running
- language version becomes something you have to care about (compile target)
- bitrot: typescript may be a fad
- explodes the state space
- as javascript experts, the juice is not worth the squeeze, so to speak
- rust has better type inference
- it's not an "infection" of a base language
- perf/reliability guarantees
- we were asked to add typescript support (scaffolding a typescript project)
### 2020-12-04
- [x] documentation version picker
- ideally fully static:
- [x] download all versions of the docs
- [x] find all version selectors
- [x] update the selector with the new set of versions
- [x] create a "latest" tag
- [x] DONE
### 2020-06-05
- [x] investigate static site generators
- remark?
- [ ] finish off the docs
- [ ] add more examples
- [ ] use github pages
- [ ] cut docs into some kind of IA
- [ ] lint the docs somehow
- [ ] releasing
- [ ] cut a release
- [ ] release notes
- [ ] release a npx tool
### 2020-06-03
- [x] write a github CI action for releases
- [x] create artifacts
- [ ] cut a release
- [ ] release a npx tool
- [ ] finish off the docs
- [ ] add more examples
- [ ] use github pages
- [ ] cut docs into some kind of IA
- [ ] add npm run scripts
- [x] start, if it doesn't exist
- [x] test, if it doesn't exist
- [x] boltzmann:upgrade, to upgrade the thing
- [x] call decorators middleware
- [x] maybe make "jwt middleware" a flag
- [x] pick a better linter and install it by default
### 2020-05-28
- [ ] improve tool output
- answer the following: what does the user care about?
- what changed. why it changed.
- [x] npm installs (and uninstalls HA HA HA)
- [x] make ping and status controlled by options
- [x] bake templates into CLI binary
- [ ] github releases of the tool
- [ ] release npx package (boltzmann and boltzmann-cli)
### EOD 2020-05-27
CEEJ expresses intent to push docs changes directly to master.
We'll regroup to add information architecture.
Code changes will be PR'd in.
- [ ] CHRIS: ~Add two subcommands: `init` and `update`.~ **Edit**: We ended up not doing this
- [x] CEEJ: detect git state of destination dir, respecting force flag
- [x] CHRIS: load existing package.json
- [x] implement turning a thing off
- [x] attach "skip if present" data to Nodes (& skip creating them if they're present)
- [x] inspect the flags and map them to npm actions
- [x] run npm install in a subprocess
- [x] render our actual templates, for real
- [x] run the tests
- [x] write a github CI action for this repo
- [ ] write a github CI action for releases
- [ ] finish off the docs
- [ ] add more examples
- [ ] maybe make "jwt middleware" a flag
- [ ] pick a better linter and install it by default
### BOD 2020-05-27
- write the command-line tool lol.
- write examples
- Hide ajv by presenting a better facade for it.
Facts to make true:
- This is a rust tool
- it operates on `.`
- it takes its options as single-word arguments, with `--` in front of them optional
- mentioning a feature turns it on; `=off` removes the feature
- it generates a directory with some files in it
- it makes a package.json if none exists (npm -init -y)
- it installs its deps using bash to run npm
- it stores its options in package.json in the field `boltzmann`
- if you rerun it without options, it'll respect the ones in the package.json if found; cli options override the ones in package.json
`ludwig redis hc pg=off` scaffolds with redis and honeycomb, and turns off postgres.