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 |
|
16 | if 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 |
|
98 | ref: 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 |
|
152 | config:
|
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 |
|
163 | components
|
164 | viewmodels
|
165 | models
|
166 | services
|
167 | utils
|
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 |
|
177 | then only allow if in this.allowedFolders
|
178 |
|
179 | ---
|
180 |
|
181 | ### model dumping
|
182 |
|
183 | [x] - `yarn docs` outputs a text graph
|
184 |
|
185 | dump to simple text format
|
186 |
|
187 | so don't need dot to ascii
|
188 |
|
189 | format:
|
190 |
|
191 | ```
|
192 | packageName1 --> packageName2, packageName3
|
193 | folder1 --> folder2, folder3
|
194 | folder2 --> folder3
|
195 | folder3
|
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 | ```
|
205 | yarn 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 _/
|
216 | digraph G {
|
217 | d1 [shape=point,width=0.01,height=0.01];
|
218 | {a, b, c} -> d1 [dir=none];
|
219 | d1 -> d;
|
220 | d -> e;
|
221 | }
|
222 | ```
|
223 |
|
224 | ---
|
225 |
|
226 | ### TODO disallow import [relative, src] from recognised package
|
227 |
|
228 | extend 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 |
|
259 | https://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
|
268 | where 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 |
|
289 | https://c4model.com/#notation
|
290 |
|
291 | context, container, component, (code)
|
292 |
|
293 | ---
|
294 |
|
295 | ## end
|