UNPKG

7.82 kBMarkdownView Raw
1# TODO
2
3- [x] setup basic tslint, with standard rules to lint its source
4- [x] re-make test data - packages
5- [x] remove refs to sdk
6- [x] re-make unit tests
7- [x] config in tslint.json
8- [x] merge tests for 'tsf-folders-imports-from-self' into 'tsf-folders-imports-between-packages'
9- [x] replace ignoreTests, ignoreFolders with ignorePaths: regex[]. also add to main rule
10- [x] model as a _graph_
11- [x] list TODOs for the new tslint props
12- [x] publish to npm (dist only, not source), consume
13- [x] yarn docs (generates a 'graph')
14- [x] publish to npm (dist only, not source), consume
15
16if OK to open-source:
17
18- [x] update readme: `node_modules/tslint-folders/tools` -> `node_modules/tslint-folders/dist/tools`
19- [x] make this repo public (URL same?)
20- [x] publish to npm with the source
21- [x] consume
22
23- [x] Add isThirdParty flag to PackageConfig so is not listed by docs.
24- [x] add keywords to package.json for npm
25
26- [x] rename isThirdParty to isExternal
27
28- [x] new rule `tsf-folders-file-names` [see branch 'feature/file-name-casing'] allowing _multiple_ values. see palantir `file-name-casing`
29
30- [x] add tests for sub-folders (under todo-area). include false positives: similar folders under package with no sub folders configured (contact-area).
31- [x] publish to npm (with source), consume
32- [x] allow disable check on sub folders
33- [x] add test where sub folders are below another folder
34- ~~bad import from sub folder should be warning not error~~
35- [x] rename rules to tsf- to avoid rules failing to load in projects that use other rule packages
36- [x] up minor version, pub
37- [x] ts-node can be _dev_ dep?
38- [x] consume
39
40- [x] allow gen doc w/o sub folders
41
42- [x] add Dot format
43
44- ~~add DotStyled~~ ~~allow any case~~
45
46- [x] add example to generate png
47
48- [x] add the missing options -dotColorScheme=path to pick up colors
49- [x] doc the new options - at least set them in package.json
50
51- [x] refactor
52
53- [x] add `-outpath=<path to output file>`
54
55- n/a `-orientation=<landscape|portrait>` -> landscape=true (default, due to sub-folder clusters)
56
57- n/a (future - filtering avoids this) some way to have 'portrait' layout? (rankdir does not really work)
58
59---
60
61### BEGIN diagrams
62
63- the diagram is too crowded!
64
65- ... group pkgs with same incomings. use points or invisible nodes
66
67- [x] try `compound=true`
68- [x] try `graph [ concentrate=true ...`
69
70_not true! - ~~// note: compound and concentrate do NOT work together? (would see error from dot)~~_
71
72- [x] fix new bug in optimizer: only replace edge from cluster if valid for ALL nodes in cluster
73
74- [x] add `-clusterFromTslintJson`, `diagramCluster=<cluster name>` to `tslint.json` - then GraphOptimizer can cluster by that name
75
76- [x] style \* package a bit like external
77
78- [x] test with, w/o the optimizer
79
80- [x] add `-disableGraphOptimizer`
81
82- [x] add `-package=<package importPath>` to out for that package only (hides topLevel cluster)
83
84- [x] (cosmetic) add -packageShape=box|oval|octagon|component|cyclinder|box3d|folder (default is oval) -subFolderShape=box|oval|octagon|component|cyclinder|box3d|folder (default is folder)
85
86- [ ] consume
87
88---
89
90- [x] improve optimizer
91
92- [x] add `-importBlacklist=<package name,package name>` to filter the imports (the referenced packages)
93
94- [x] add `-showImportAnyAsNodeNotEdges` - renders \* as 1 edge to an "(any)" node
95
96- try: `strict digraph x { ...`
97
98ref: https://graphviz.gitlab.io/faq/#FaqMerge
99
100- n/a - concentrate does this! ~~try add multiple invisible points to give layouter flexibility:~~
101
102- n/a other graphviz diagram type?
103
104- n/a try 'rank' to group nodes (need hint from tslint.json?) { rank=same; b, c, d }
105- n/a try `group` (avoids edge crossings?)
106
107### END diagrams
108
109---
110
111- [ ] make other rules configurable, without breaking config (cover via test sub-folders named by version) -
112
113- [ ] support typescript 3 -
114
115- [ ] release notes file?
116
117---
118
119### d3
120
121- [ ] d3 format (will not work in .md) - mini site - can have interaction to filter edges for selected node!
122- [ ] d3 mini site: bundle into 1 or 2 files. so use react, ts or vue?
123
124---
125
126### plantUml/c4
127
128- [ ] output to plantUml format? (see webscratchgit, crafting doc)
129
130- [ ] output to plantUml C4 format? (see webscratchgit, crafting doc)
131
132- [ ] add format like C4 -
133
134---
135
136- [ ] try add jest snapshot tests for the doc gen
137
138## 'nice to have' TODOs
139
140- [ ] ?add vs code debug config
141
142- ~~rename package to module ? is clearer? but not really correct, usually is 1 file. up minor.~~
143
144- ~~? add Jpg format (new npm? from new src folder)~~ use graphviz!
145
146- [ ] ? add examples folder with a site that has issues
147
148---
149
150## notes
151
152config:
153
154- [x] config from tslint-folders.json that's imported by tslint.json
155- [ ] throw if config has circ reference
156
157- [x] 'separable package' - import no recognised packages : no special case needed (simply no children)
158
159---
160
161- model internal folders:
162
163components
164viewmodels
165models
166services
167utils
168
169-- PackageSubFolder : PackageFolder
170
171- container: Package (no hierarchy of sub folders)
172
173- can import any PackageNode children of container
174
175- if importing a recognised PackageSubFolder (from container.allowedFolders)
176
177then only allow if in this.allowedFolders
178
179---
180
181### model dumping
182
183[x] - `yarn docs` outputs a text graph
184
185dump to simple text format
186
187so don't need dot to ascii
188
189format:
190
191```
192packageName1 --> packageName2, packageName3
193folder1 --> folder2, folder3
194folder2 --> folder3
195folder3
196```
197
198- ~~md format?~~
199
200* [x] dot as alt format could also be useful
201
202* ~~jpg format (internally dot -> jpg) in separate project tslint-folders-diagrams to control npm size~~
203
204```
205yarn docs tslint.json Dot
206```
207
208---
209
210#### diagram notes
211
212- add invisible.point - but concentrate does this!
213
214```
215/_ graph with invisible points _/
216digraph G {
217d1 [shape=point,width=0.01,height=0.01];
218{a, b, c} -> d1 [dir=none];
219d1 -> d;
220d -> e;
221}
222```
223
224---
225
226### TODO disallow import [relative, src] from recognised package
227
228extend the main rule, using the config:
229
230- [ ] import from recognised package should not include /src/
231 by adding a ban prop into PackageFolder:
232
233 ```
234 "ban": ["{PACKAGE}/src/", "/{PACKAGE}/"]
235 ```
236
237- [ ] (see ban prop) import from recognised package should not be relative (like /myPackage/)
238
239---
240
241### TODO make the 'test' rules be configurable
242
243- make configurable, without breaking config (cover via test sub-folders named by version)
244
245- [ ] make rule customisable: tsf-folders-test-with-breakpoint
246 by adding an includePaths: string[] prop and a debugTokens: ["browser.debug"]
247
248- [ ] make rule customisable: tsf-folders-disabled-tests
249 by adding an includePaths: string[] prop and a ban: ["it.only", "it.skip","describe.only","describe.skip"]
250
251---
252
253### TODO ts versions
254
255- support typescript 3
256
257- ts version history:
258
259https://github.com/Microsoft/TypeScript/commits/master/package.json
260
261- version to match ts ? else confusing. but need minor to make a breaking change!
262
263```
264-- tsf 2.9m.p = ts 2.9
265-- tsf 3.0m.p = ts 3.0
266-- tsf 3.1m.p = ts 3.1
267-- tsf 3.2m.p = ts 3.2
268where m = minor, p = patch
269```
270
271- add above summary to readme
272
273- branch like versions/tsf2.9
274- pub to npm as normal, with correct peer deps
275- dev on feature/x -> master
276- can rebase version branches onto master, as needed (bash script)
277- do NOT dev on version branch
278- doc in readme
279
280- how does tslint manage it?
281- is tslint version more important? But less so for user
282
283---
284
285### todo c4
286
287- [ ] add support for alt format C4 - plantUml C4?
288
289https://c4model.com/#notation
290
291context, container, component, (code)
292
293---
294
295## end