imdone-core 2.0.0 → 2.0.1
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/.dependency-cruiser.cjs +412 -0
- package/.github/ISSUE_TEMPLATE/bug_report.md +37 -0
- package/.github/workflows/ci.yml +24 -0
- package/.imdoneignore +13 -0
- package/.mocharc.json +10 -0
- package/.prettierrc +6 -0
- package/CHANGELOG.md +160 -0
- package/_index.md +7 -0
- package/_navbar.md +1 -0
- package/build.js +57 -0
- package/esm-migration.md +446 -0
- package/index.html +184 -0
- package/lib/FileProjectContext.js +13 -0
- package/lib/ProjectContext.js +43 -0
- package/lib/adapters/date-time.js +15 -0
- package/lib/adapters/environment.js +3 -0
- package/lib/adapters/file-gateway.js +154 -0
- package/lib/adapters/git-download.js +55 -0
- package/lib/adapters/index.js +9 -0
- package/lib/adapters/logger.js +136 -0
- package/lib/adapters/markdown.js +180 -0
- package/lib/adapters/parsers/DateLanguageParser.js +12 -0
- package/lib/adapters/parsers/content-transformer.js +116 -0
- package/lib/adapters/parsers/file/LocalFileParserFactory.js +36 -0
- package/lib/adapters/parsers/file/ReadStreamCodeParser.js +126 -0
- package/lib/adapters/parsers/file/ReadStreamMarkdownParser.js +17 -0
- package/lib/adapters/parsers/file/ReadStreamTaskParser.js +106 -0
- package/lib/adapters/parsers/file/index.js +4 -0
- package/lib/adapters/parsers/function-parser.js +25 -0
- package/lib/adapters/parsers/index.js +5 -0
- package/lib/adapters/parsers/task/CardContentParser.js +367 -0
- package/lib/adapters/parsers/task/CheckStyleTaskParser.js +28 -0
- package/lib/adapters/parsers/task/CodeStyleTaskParser.js +24 -0
- package/lib/adapters/parsers/task/HashStyleTaskParser.js +27 -0
- package/lib/adapters/parsers/task/MarkdownStyleTaskParser.js +24 -0
- package/lib/adapters/parsers/task/TaskParser.js +38 -0
- package/lib/adapters/parsers/task/index.js +6 -0
- package/lib/adapters/storage/config.js +44 -0
- package/lib/adapters/storage/index.js +2 -0
- package/lib/adapters/storage/tags.js +29 -0
- package/lib/adapters/yaml.js +9 -0
- package/lib/card.js +299 -0
- package/lib/checksum.js +22 -0
- package/lib/config.js +249 -0
- package/lib/constants.js +68 -0
- package/lib/context/ApplicationContext.js +35 -0
- package/lib/context/index.js +1 -0
- package/lib/default-settings.js +37 -0
- package/lib/domain/entities/View.js +23 -0
- package/lib/domain/entities/index.js +1 -0
- package/lib/domain/index.js +2 -0
- package/lib/domain/usecases/GetViewsUsecase.js +44 -0
- package/lib/domain/usecases/SaveViewUsecase.js +51 -0
- package/lib/domain/usecases/index.js +2 -0
- package/lib/file.js +1391 -0
- package/lib/get-tasks-to-modify.js +117 -0
- package/lib/languages.js +113 -0
- package/lib/list.js +56 -0
- package/lib/migrate-config.js +165 -0
- package/lib/mixins/index.js +2 -0
- package/lib/mixins/repo-fs-store.js +359 -0
- package/lib/mixins/repo-watched-fs-store.js +206 -0
- package/lib/plugins/archive-plugin.js +72 -0
- package/lib/plugins/default-board-actions-plugin.js +56 -0
- package/lib/plugins/default-board-properties-plugin.js +101 -0
- package/lib/plugins/default-plugins.js +7 -0
- package/lib/plugins/epic-plugin.js +177 -0
- package/lib/plugins/extension-plugin.js +94 -0
- package/lib/plugins/index.js +9 -0
- package/lib/plugins/persist-tags-plugin.js +14 -0
- package/lib/plugins/plugin-manager.js +458 -0
- package/lib/plugins/plugin-registry.js +57 -0
- package/lib/project-factory.js +42 -0
- package/lib/project.js +864 -0
- package/lib/repository.js +1514 -0
- package/lib/task.js +780 -0
- package/lib/tools.js +176 -0
- package/lib/usecases/actions.js +32 -0
- package/lib/usecases/get-imdone-url.js +6 -0
- package/lib/usecases/get-project-tags.js +7 -0
- package/lib/usecases/get-tasks-in-file.js +26 -0
- package/lib/usecases/index.js +4 -0
- package/package.json +2 -6
- package/scripts/delete-markdown-indexes.js +87 -0
- package/scripts/generate-index.js +35 -0
- package/scripts/index-markdown.js +55 -0
- package/tsconfig.json +15 -0
- package/types/FileProjectContext.d.ts +4 -0
- package/types/ProjectContext.d.ts +9 -0
- package/types/adapters/date-time.d.ts +2 -0
- package/types/adapters/environment.d.ts +1 -0
- package/types/adapters/file-gateway.d.ts +51 -0
- package/types/adapters/git-download.d.ts +1 -0
- package/types/adapters/index.d.ts +9 -0
- package/types/adapters/logger.d.ts +24 -0
- package/types/adapters/markdown.d.ts +13 -0
- package/types/adapters/parsers/DateLanguageParser.d.ts +1 -0
- package/types/adapters/parsers/content-transformer.d.ts +10 -0
- package/types/adapters/parsers/file/LocalFileParserFactory.d.ts +5 -0
- package/types/adapters/parsers/file/ReadStreamCodeParser.d.ts +13 -0
- package/types/adapters/parsers/file/ReadStreamMarkdownParser.d.ts +7 -0
- package/types/adapters/parsers/file/ReadStreamTaskParser.d.ts +19 -0
- package/types/adapters/parsers/file/index.d.ts +4 -0
- package/types/adapters/parsers/function-parser.d.ts +1 -0
- package/types/adapters/parsers/index.d.ts +5 -0
- package/types/adapters/parsers/task/CardContentParser.d.ts +45 -0
- package/types/adapters/parsers/task/CheckStyleTaskParser.d.ts +12 -0
- package/types/adapters/parsers/task/CodeStyleTaskParser.d.ts +14 -0
- package/types/adapters/parsers/task/HashStyleTaskParser.d.ts +13 -0
- package/types/adapters/parsers/task/MarkdownStyleTaskParser.d.ts +14 -0
- package/types/adapters/parsers/task/TaskParser.d.ts +7 -0
- package/types/adapters/parsers/task/index.d.ts +6 -0
- package/types/adapters/storage/config.d.ts +6 -0
- package/types/adapters/storage/index.d.ts +2 -0
- package/types/adapters/storage/tags.d.ts +3 -0
- package/types/adapters/yaml.d.ts +2 -0
- package/types/card.d.ts +166 -0
- package/types/checksum.d.ts +8 -0
- package/types/config.d.ts +61 -0
- package/types/constants.d.ts +46 -0
- package/types/context/ApplicationContext.d.ts +24 -0
- package/types/context/index.d.ts +1 -0
- package/types/default-settings.d.ts +2 -0
- package/types/domain/entities/FileProjectContext.d.ts +5 -0
- package/types/domain/entities/View.d.ts +17 -0
- package/types/domain/entities/index.d.ts +1 -0
- package/types/domain/index.d.ts +2 -0
- package/types/domain/usecases/GetViewsUsecase.d.ts +4 -0
- package/types/domain/usecases/SaveViewUsecase.d.ts +8 -0
- package/types/domain/usecases/index.d.ts +2 -0
- package/types/file.d.ts +344 -0
- package/types/get-tasks-to-modify.d.ts +3 -0
- package/types/index.d.ts +23 -0
- package/types/languages.d.ts +649 -0
- package/types/list.d.ts +30 -0
- package/types/migrate-config.d.ts +1 -0
- package/types/mixins/index.d.ts +2 -0
- package/types/mixins/repo-fs-store.d.ts +2 -0
- package/types/mixins/repo-watched-fs-store.d.ts +2 -0
- package/types/plugins/archive-plugin.d.ts +8 -0
- package/types/plugins/default-board-actions-plugin.d.ts +9 -0
- package/types/plugins/default-board-properties-plugin.d.ts +16 -0
- package/types/plugins/default-plugins.d.ts +6 -0
- package/types/plugins/epic-plugin.d.ts +19 -0
- package/types/plugins/extension-plugin.d.ts +15 -0
- package/types/plugins/index.d.ts +9 -0
- package/types/plugins/persist-tags-plugin.d.ts +4 -0
- package/types/plugins/plugin-manager.d.ts +68 -0
- package/types/plugins/plugin-registry.d.ts +1 -0
- package/types/project-factory.d.ts +14 -0
- package/types/project.d.ts +158 -0
- package/types/repository.d.ts +996 -0
- package/types/task.d.ts +202 -0
- package/types/tools.d.ts +29 -0
- package/types/usecases/actions.d.ts +7 -0
- package/types/usecases/get-imdone-url.d.ts +1 -0
- package/types/usecases/get-project-tags.d.ts +1 -0
- package/types/usecases/get-tasks-in-file.d.ts +4 -0
- package/types/usecases/index.d.ts +4 -0
- package/vitest.config.js +13 -0
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export class View {
|
|
2
|
+
id
|
|
3
|
+
name
|
|
4
|
+
lists
|
|
5
|
+
filter
|
|
6
|
+
#modifiable
|
|
7
|
+
|
|
8
|
+
constructor({id, name, filter = "", lists = [], modifiable = false}) {
|
|
9
|
+
if (!name) throw new Error('Name is a required field')
|
|
10
|
+
this.id = id
|
|
11
|
+
this.name = name
|
|
12
|
+
this.lists = lists
|
|
13
|
+
this.filter = filter
|
|
14
|
+
this.#modifiable = modifiable
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
static DEFAULT_VIEW_ID = "default"
|
|
18
|
+
static DEFAULT_VIEW_NAME = "Default View"
|
|
19
|
+
|
|
20
|
+
get isModifiable () {
|
|
21
|
+
return this.#modifiable
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './View.js';
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { appContext as context } from '../../context/ApplicationContext.js'
|
|
2
|
+
import { View } from '../entities/View.js'
|
|
3
|
+
import { List } from '../../list.js'
|
|
4
|
+
|
|
5
|
+
export function getView(_id) {
|
|
6
|
+
return getViews().find(view => view.id === _id)
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export function getDefaultView() {
|
|
10
|
+
const lists = getConfig().lists.map(list => {
|
|
11
|
+
list = new List(list)
|
|
12
|
+
delete list.tasks
|
|
13
|
+
return list
|
|
14
|
+
})
|
|
15
|
+
const filter = getConfig().defaultFilter
|
|
16
|
+
const id = View.DEFAULT_VIEW_ID
|
|
17
|
+
const name = View.DEFAULT_VIEW_NAME
|
|
18
|
+
return new View({name, id, filter, lists})
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
function syncLists(currentLists, overrideLists) {
|
|
22
|
+
return currentLists.map(currentList => {
|
|
23
|
+
return overrideLists.find(list => list.name === currentList.name && list.id === currentList.id)
|
|
24
|
+
|| new List(currentList)
|
|
25
|
+
})
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export function getViews() {
|
|
29
|
+
const defaultView = getDefaultView()
|
|
30
|
+
const customViews = context().repo.config.views.map(
|
|
31
|
+
({name, id, filter, lists, modifiable = true}) => new View ({
|
|
32
|
+
name,
|
|
33
|
+
id,
|
|
34
|
+
filter,
|
|
35
|
+
lists: syncLists(defaultView.lists, lists),
|
|
36
|
+
modifiable
|
|
37
|
+
})
|
|
38
|
+
)
|
|
39
|
+
return [defaultView, ...customViews]
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
function getConfig() {
|
|
43
|
+
return context().repo.config
|
|
44
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { randomUUID} from 'node:crypto'
|
|
2
|
+
import { appContext as context } from '../../context/ApplicationContext.js'
|
|
3
|
+
import { getView } from './GetViewsUsecase.js'
|
|
4
|
+
import { View } from '../entities/View.js'
|
|
5
|
+
|
|
6
|
+
export async function saveView({id, name, lists, filter}) {
|
|
7
|
+
let view = getView(id)
|
|
8
|
+
|
|
9
|
+
if (!view) {
|
|
10
|
+
view = {id: randomUUID(), name, lists, filter}
|
|
11
|
+
context().repo.config.views.push(view)
|
|
12
|
+
} else if (view.id === View.DEFAULT_VIEW_ID) {
|
|
13
|
+
return
|
|
14
|
+
} else {
|
|
15
|
+
view.name = name
|
|
16
|
+
view.filter = filter
|
|
17
|
+
view.lists = lists
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
await saveConfig()
|
|
21
|
+
return view.id
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
async function saveConfig() {
|
|
25
|
+
return new Promise((resolve, reject) => {
|
|
26
|
+
context().repo.saveConfig((err) => {
|
|
27
|
+
if (err) return reject(err)
|
|
28
|
+
resolve()
|
|
29
|
+
})
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export async function removeDefaultViewFilter() {
|
|
34
|
+
const project = context().project
|
|
35
|
+
if (project.defaultFilter) {
|
|
36
|
+
project.setFilter(project.defaultFilter)
|
|
37
|
+
project.filter = project.defaultFilter
|
|
38
|
+
project.defaultFilter = ''
|
|
39
|
+
await saveConfig()
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export async function setDefaultViewFilter(filter = context().project.filter) {
|
|
44
|
+
const project = context().project
|
|
45
|
+
if (filter) {
|
|
46
|
+
project.defaultFilter = filter
|
|
47
|
+
project.filter = ''
|
|
48
|
+
project.setFilter(project.filter)
|
|
49
|
+
await saveConfig()
|
|
50
|
+
}
|
|
51
|
+
}
|