@ofocus/sdk 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 +80 -0
- package/api-report/ofocus-sdk.api.md +564 -0
- package/dist/.tsbuildinfo +1 -0
- package/dist/applescript.d.ts +30 -0
- package/dist/applescript.d.ts.map +1 -0
- package/dist/applescript.js +142 -0
- package/dist/applescript.js.map +1 -0
- package/dist/commands/batch.d.ts +23 -0
- package/dist/commands/batch.d.ts.map +1 -0
- package/dist/commands/batch.js +324 -0
- package/dist/commands/batch.js.map +1 -0
- package/dist/commands/complete.d.ts +14 -0
- package/dist/commands/complete.d.ts.map +1 -0
- package/dist/commands/complete.js +37 -0
- package/dist/commands/complete.js.map +1 -0
- package/dist/commands/create-project.d.ts +6 -0
- package/dist/commands/create-project.d.ts.map +1 -0
- package/dist/commands/create-project.js +124 -0
- package/dist/commands/create-project.js.map +1 -0
- package/dist/commands/drop.d.ts +26 -0
- package/dist/commands/drop.d.ts.map +1 -0
- package/dist/commands/drop.js +62 -0
- package/dist/commands/drop.js.map +1 -0
- package/dist/commands/folders.d.ts +10 -0
- package/dist/commands/folders.d.ts.map +1 -0
- package/dist/commands/folders.js +150 -0
- package/dist/commands/folders.js.map +1 -0
- package/dist/commands/inbox.d.ts +6 -0
- package/dist/commands/inbox.d.ts.map +1 -0
- package/dist/commands/inbox.js +124 -0
- package/dist/commands/inbox.js.map +1 -0
- package/dist/commands/perspectives.d.ts +20 -0
- package/dist/commands/perspectives.d.ts.map +1 -0
- package/dist/commands/perspectives.js +166 -0
- package/dist/commands/perspectives.js.map +1 -0
- package/dist/commands/projects.d.ts +6 -0
- package/dist/commands/projects.d.ts.map +1 -0
- package/dist/commands/projects.js +113 -0
- package/dist/commands/projects.js.map +1 -0
- package/dist/commands/repetition.d.ts +17 -0
- package/dist/commands/repetition.d.ts.map +1 -0
- package/dist/commands/repetition.js +59 -0
- package/dist/commands/repetition.js.map +1 -0
- package/dist/commands/review.d.ts +10 -0
- package/dist/commands/review.d.ts.map +1 -0
- package/dist/commands/review.js +132 -0
- package/dist/commands/review.js.map +1 -0
- package/dist/commands/search.d.ts +6 -0
- package/dist/commands/search.d.ts.map +1 -0
- package/dist/commands/search.js +150 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/commands/subtasks.d.ts +14 -0
- package/dist/commands/subtasks.d.ts.map +1 -0
- package/dist/commands/subtasks.js +370 -0
- package/dist/commands/subtasks.js.map +1 -0
- package/dist/commands/tags-crud.d.ts +22 -0
- package/dist/commands/tags-crud.d.ts.map +1 -0
- package/dist/commands/tags-crud.js +187 -0
- package/dist/commands/tags-crud.js.map +1 -0
- package/dist/commands/tags.d.ts +6 -0
- package/dist/commands/tags.d.ts.map +1 -0
- package/dist/commands/tags.js +61 -0
- package/dist/commands/tags.js.map +1 -0
- package/dist/commands/tasks.d.ts +6 -0
- package/dist/commands/tasks.d.ts.map +1 -0
- package/dist/commands/tasks.js +160 -0
- package/dist/commands/tasks.js.map +1 -0
- package/dist/commands/update.d.ts +6 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +179 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/errors.d.ts +38 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +77 -0
- package/dist/errors.js.map +1 -0
- package/dist/escape.d.ts +6 -0
- package/dist/escape.d.ts.map +1 -0
- package/dist/escape.js +8 -0
- package/dist/escape.js.map +1 -0
- package/dist/index.d.ts +30 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +36 -0
- package/dist/index.js.map +1 -0
- package/dist/ofocus-sdk.d.ts +608 -0
- package/dist/result.d.ts +15 -0
- package/dist/result.d.ts.map +1 -0
- package/dist/result.js +29 -0
- package/dist/result.js.map +1 -0
- package/dist/types.d.ts +228 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/validation.d.ts +57 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/validation.js +172 -0
- package/dist/validation.js.map +1 -0
- package/docs/index.md +30 -0
- package/docs/sdk.addtoinbox.md +68 -0
- package/docs/sdk.applescriptresult.data.md +11 -0
- package/docs/sdk.applescriptresult.error.md +11 -0
- package/docs/sdk.applescriptresult.md +92 -0
- package/docs/sdk.applescriptresult.success.md +11 -0
- package/docs/sdk.clierror.code.md +11 -0
- package/docs/sdk.clierror.details.md +11 -0
- package/docs/sdk.clierror.md +92 -0
- package/docs/sdk.clierror.message.md +11 -0
- package/docs/sdk.clioutput.data.md +11 -0
- package/docs/sdk.clioutput.error.md +11 -0
- package/docs/sdk.clioutput.md +90 -0
- package/docs/sdk.clioutput.success.md +11 -0
- package/docs/sdk.commandinfo.description.md +11 -0
- package/docs/sdk.commandinfo.md +90 -0
- package/docs/sdk.commandinfo.name.md +11 -0
- package/docs/sdk.commandinfo.usage.md +11 -0
- package/docs/sdk.completeresult.completed.md +11 -0
- package/docs/sdk.completeresult.md +90 -0
- package/docs/sdk.completeresult.taskid.md +11 -0
- package/docs/sdk.completeresult.taskname.md +11 -0
- package/docs/sdk.completetask.md +52 -0
- package/docs/sdk.createerror.md +82 -0
- package/docs/sdk.errorcode.md +24 -0
- package/docs/sdk.escapeapplescript.md +52 -0
- package/docs/sdk.failure.md +52 -0
- package/docs/sdk.failuremessage.md +52 -0
- package/docs/sdk.inboxoptions.defer.md +11 -0
- package/docs/sdk.inboxoptions.due.md +11 -0
- package/docs/sdk.inboxoptions.flag.md +11 -0
- package/docs/sdk.inboxoptions.md +134 -0
- package/docs/sdk.inboxoptions.note.md +11 -0
- package/docs/sdk.inboxoptions.tags.md +11 -0
- package/docs/sdk.jsonhelpers.md +13 -0
- package/docs/sdk.md +471 -0
- package/docs/sdk.ofperspective.id.md +11 -0
- package/docs/sdk.ofperspective.md +73 -0
- package/docs/sdk.ofperspective.name.md +11 -0
- package/docs/sdk.ofproject.folderid.md +11 -0
- package/docs/sdk.ofproject.foldername.md +11 -0
- package/docs/sdk.ofproject.id.md +11 -0
- package/docs/sdk.ofproject.md +192 -0
- package/docs/sdk.ofproject.name.md +11 -0
- package/docs/sdk.ofproject.note.md +11 -0
- package/docs/sdk.ofproject.remainingtaskcount.md +11 -0
- package/docs/sdk.ofproject.sequential.md +11 -0
- package/docs/sdk.ofproject.status.md +11 -0
- package/docs/sdk.ofproject.taskcount.md +11 -0
- package/docs/sdk.oftag.availabletaskcount.md +11 -0
- package/docs/sdk.oftag.id.md +11 -0
- package/docs/sdk.oftag.md +124 -0
- package/docs/sdk.oftag.name.md +11 -0
- package/docs/sdk.oftag.parentid.md +11 -0
- package/docs/sdk.oftag.parentname.md +11 -0
- package/docs/sdk.oftask.completed.md +11 -0
- package/docs/sdk.oftask.completiondate.md +11 -0
- package/docs/sdk.oftask.deferdate.md +11 -0
- package/docs/sdk.oftask.duedate.md +11 -0
- package/docs/sdk.oftask.flagged.md +11 -0
- package/docs/sdk.oftask.id.md +11 -0
- package/docs/sdk.oftask.md +226 -0
- package/docs/sdk.oftask.name.md +11 -0
- package/docs/sdk.oftask.note.md +11 -0
- package/docs/sdk.oftask.projectid.md +11 -0
- package/docs/sdk.oftask.projectname.md +11 -0
- package/docs/sdk.oftask.tags.md +11 -0
- package/docs/sdk.omnifocusscript.md +52 -0
- package/docs/sdk.omnifocusscriptwithhelpers.md +52 -0
- package/docs/sdk.parseapplescripterror.md +52 -0
- package/docs/sdk.projectqueryoptions.folder.md +11 -0
- package/docs/sdk.projectqueryoptions.md +96 -0
- package/docs/sdk.projectqueryoptions.sequential.md +11 -0
- package/docs/sdk.projectqueryoptions.status.md +11 -0
- package/docs/sdk.queryprojects.md +54 -0
- package/docs/sdk.querytags.md +54 -0
- package/docs/sdk.querytasks.md +54 -0
- package/docs/sdk.runapplescript.md +52 -0
- package/docs/sdk.runapplescriptfile.md +68 -0
- package/docs/sdk.success.md +52 -0
- package/docs/sdk.tagqueryoptions.md +58 -0
- package/docs/sdk.tagqueryoptions.parent.md +11 -0
- package/docs/sdk.taskqueryoptions.available.md +11 -0
- package/docs/sdk.taskqueryoptions.completed.md +11 -0
- package/docs/sdk.taskqueryoptions.dueafter.md +11 -0
- package/docs/sdk.taskqueryoptions.duebefore.md +11 -0
- package/docs/sdk.taskqueryoptions.flagged.md +11 -0
- package/docs/sdk.taskqueryoptions.md +172 -0
- package/docs/sdk.taskqueryoptions.project.md +11 -0
- package/docs/sdk.taskqueryoptions.tag.md +11 -0
- package/docs/sdk.taskupdateoptions.defer.md +11 -0
- package/docs/sdk.taskupdateoptions.due.md +11 -0
- package/docs/sdk.taskupdateoptions.flag.md +11 -0
- package/docs/sdk.taskupdateoptions.md +172 -0
- package/docs/sdk.taskupdateoptions.note.md +11 -0
- package/docs/sdk.taskupdateoptions.project.md +11 -0
- package/docs/sdk.taskupdateoptions.tags.md +11 -0
- package/docs/sdk.taskupdateoptions.title.md +11 -0
- package/docs/sdk.updatetask.md +66 -0
- package/docs/sdk.validatedatestring.md +54 -0
- package/docs/sdk.validateid.md +66 -0
- package/docs/sdk.validateprojectname.md +52 -0
- package/docs/sdk.validatetags.md +52 -0
- package/package.json +51 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tags.js","sourceRoot":"","sources":["../../src/commands/tags.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EACL,cAAc,EACd,0BAA0B,GAC3B,MAAM,mBAAmB,CAAC;AAE3B;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,UAA2B,EAAE;IAE7B,MAAM,MAAM,GAAG;;;;;;;QAOT,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,EAAE;QAChD,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;QAC3B,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,2CAA2C,CAAC,CAAC,CAAC,EAAE;QACjE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,iCAAiC,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,gCAAgC,CAAC,CAAC,CAAC,EAAE;QACxH,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;QAC/B,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA4B3C,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;;;;GAInC,CAAC;IAEF,MAAM,MAAM,GAAG,MAAM,cAAc,CACjC,0BAA0B,CAAC,MAAM,CAAC,CACnC,CAAC;IAEF,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,OAAO,CACZ,MAAM,CAAC,KAAK;YACV,WAAW,CAAC,SAAS,CAAC,aAAa,EAAE,sBAAsB,CAAC,CAC/D,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;AACpC,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { CliOutput, TaskQueryOptions, OFTask } from "../types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Query tasks from OmniFocus with optional filters.
|
|
4
|
+
*/
|
|
5
|
+
export declare function queryTasks(options?: TaskQueryOptions): Promise<CliOutput<OFTask[]>>;
|
|
6
|
+
//# sourceMappingURL=tasks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../src/commands/tasks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAavE;;GAEG;AACH,wBAAsB,UAAU,CAC9B,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAmK9B"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import { success, failure } from "../result.js";
|
|
2
|
+
import { ErrorCode, createError } from "../errors.js";
|
|
3
|
+
import { validateDateString, validateProjectName, } from "../validation.js";
|
|
4
|
+
import { escapeAppleScript } from "../escape.js";
|
|
5
|
+
import { runAppleScript, omniFocusScriptWithHelpers, } from "../applescript.js";
|
|
6
|
+
/**
|
|
7
|
+
* Query tasks from OmniFocus with optional filters.
|
|
8
|
+
*/
|
|
9
|
+
export async function queryTasks(options = {}) {
|
|
10
|
+
// Validate inputs
|
|
11
|
+
if (options.dueBefore !== undefined) {
|
|
12
|
+
const dateError = validateDateString(options.dueBefore);
|
|
13
|
+
if (dateError)
|
|
14
|
+
return failure(dateError);
|
|
15
|
+
}
|
|
16
|
+
if (options.dueAfter !== undefined) {
|
|
17
|
+
const dateError = validateDateString(options.dueAfter);
|
|
18
|
+
if (dateError)
|
|
19
|
+
return failure(dateError);
|
|
20
|
+
}
|
|
21
|
+
const projectError = validateProjectName(options.project);
|
|
22
|
+
if (projectError)
|
|
23
|
+
return failure(projectError);
|
|
24
|
+
// Build filter conditions
|
|
25
|
+
const conditions = [];
|
|
26
|
+
if (options.completed === true) {
|
|
27
|
+
conditions.push("completed is true");
|
|
28
|
+
}
|
|
29
|
+
else if (options.completed === false) {
|
|
30
|
+
conditions.push("completed is false");
|
|
31
|
+
}
|
|
32
|
+
if (options.flagged === true) {
|
|
33
|
+
conditions.push("flagged is true");
|
|
34
|
+
}
|
|
35
|
+
if (options.available === true) {
|
|
36
|
+
conditions.push("completed is false");
|
|
37
|
+
conditions.push("effectively dropped is false");
|
|
38
|
+
conditions.push("blocked is false");
|
|
39
|
+
}
|
|
40
|
+
// Project filter handled separately in script
|
|
41
|
+
// Tag filter handled separately in script
|
|
42
|
+
// Date filters handled separately in script
|
|
43
|
+
const whereClause = conditions.length > 0 ? `where ${conditions.join(" and ")}` : "";
|
|
44
|
+
const script = `
|
|
45
|
+
set output to "["
|
|
46
|
+
set isFirst to true
|
|
47
|
+
|
|
48
|
+
set allTasks to flattened tasks ${whereClause}
|
|
49
|
+
|
|
50
|
+
repeat with t in allTasks
|
|
51
|
+
-- Apply additional filters
|
|
52
|
+
set shouldInclude to true
|
|
53
|
+
|
|
54
|
+
${options.project ? `-- Filter by project (inbox tasks have no containing project)` : ""}
|
|
55
|
+
${options.project ? `try` : ""}
|
|
56
|
+
${options.project ? ` if name of containing project of t is not "${escapeAppleScript(options.project)}" then set shouldInclude to false` : ""}
|
|
57
|
+
${options.project ? `on error` : ""}
|
|
58
|
+
${options.project ? ` set shouldInclude to false` : ""}
|
|
59
|
+
${options.project ? `end try` : ""}
|
|
60
|
+
|
|
61
|
+
${options.tag ? `-- Filter by tag` : ""}
|
|
62
|
+
${options.tag ? `if shouldInclude then` : ""}
|
|
63
|
+
${options.tag ? ` set hasTag to false` : ""}
|
|
64
|
+
${options.tag ? ` repeat with tg in tags of t` : ""}
|
|
65
|
+
${options.tag ? ` if name of tg is "${escapeAppleScript(options.tag)}" then set hasTag to true` : ""}
|
|
66
|
+
${options.tag ? ` end repeat` : ""}
|
|
67
|
+
${options.tag ? ` if not hasTag then set shouldInclude to false` : ""}
|
|
68
|
+
${options.tag ? `end if` : ""}
|
|
69
|
+
|
|
70
|
+
${options.dueBefore ? `-- Filter by due before` : ""}
|
|
71
|
+
${options.dueBefore ? `if shouldInclude then` : ""}
|
|
72
|
+
${options.dueBefore ? ` try` : ""}
|
|
73
|
+
${options.dueBefore ? ` set taskDue to due date of t` : ""}
|
|
74
|
+
${options.dueBefore ? ` if taskDue > date "${options.dueBefore}" then set shouldInclude to false` : ""}
|
|
75
|
+
${options.dueBefore ? ` on error` : ""}
|
|
76
|
+
${options.dueBefore ? ` set shouldInclude to false` : ""}
|
|
77
|
+
${options.dueBefore ? ` end try` : ""}
|
|
78
|
+
${options.dueBefore ? `end if` : ""}
|
|
79
|
+
|
|
80
|
+
${options.dueAfter ? `-- Filter by due after` : ""}
|
|
81
|
+
${options.dueAfter ? `if shouldInclude then` : ""}
|
|
82
|
+
${options.dueAfter ? ` try` : ""}
|
|
83
|
+
${options.dueAfter ? ` set taskDue to due date of t` : ""}
|
|
84
|
+
${options.dueAfter ? ` if taskDue < date "${options.dueAfter}" then set shouldInclude to false` : ""}
|
|
85
|
+
${options.dueAfter ? ` on error` : ""}
|
|
86
|
+
${options.dueAfter ? ` set shouldInclude to false` : ""}
|
|
87
|
+
${options.dueAfter ? ` end try` : ""}
|
|
88
|
+
${options.dueAfter ? `end if` : ""}
|
|
89
|
+
|
|
90
|
+
if shouldInclude then
|
|
91
|
+
if not isFirst then set output to output & ","
|
|
92
|
+
set isFirst to false
|
|
93
|
+
|
|
94
|
+
set taskId to id of t
|
|
95
|
+
set taskName to name of t
|
|
96
|
+
set taskNote to note of t
|
|
97
|
+
set taskFlagged to flagged of t
|
|
98
|
+
set taskCompleted to completed of t
|
|
99
|
+
|
|
100
|
+
set dueStr to ""
|
|
101
|
+
try
|
|
102
|
+
set dueStr to (due date of t) as string
|
|
103
|
+
end try
|
|
104
|
+
|
|
105
|
+
set deferStr to ""
|
|
106
|
+
try
|
|
107
|
+
set deferStr to (defer date of t) as string
|
|
108
|
+
end try
|
|
109
|
+
|
|
110
|
+
set completionStr to ""
|
|
111
|
+
try
|
|
112
|
+
set completionStr to (completion date of t) as string
|
|
113
|
+
end try
|
|
114
|
+
|
|
115
|
+
set projId to ""
|
|
116
|
+
set projName to ""
|
|
117
|
+
try
|
|
118
|
+
set proj to containing project of t
|
|
119
|
+
set projId to id of proj
|
|
120
|
+
set projName to name of proj
|
|
121
|
+
end try
|
|
122
|
+
|
|
123
|
+
set tagNames to {}
|
|
124
|
+
repeat with tg in tags of t
|
|
125
|
+
set end of tagNames to name of tg
|
|
126
|
+
end repeat
|
|
127
|
+
|
|
128
|
+
set estMinutes to 0
|
|
129
|
+
try
|
|
130
|
+
set estMinutes to estimated minutes of t
|
|
131
|
+
if estMinutes is missing value then set estMinutes to 0
|
|
132
|
+
end try
|
|
133
|
+
|
|
134
|
+
set output to output & "{" & ¬
|
|
135
|
+
"\\"id\\": \\"" & taskId & "\\"," & ¬
|
|
136
|
+
"\\"name\\": \\"" & (my escapeJson(taskName)) & "\\"," & ¬
|
|
137
|
+
"\\"note\\": " & (my jsonString(taskNote)) & "," & ¬
|
|
138
|
+
"\\"flagged\\": " & taskFlagged & "," & ¬
|
|
139
|
+
"\\"completed\\": " & taskCompleted & "," & ¬
|
|
140
|
+
"\\"dueDate\\": " & (my jsonString(dueStr)) & "," & ¬
|
|
141
|
+
"\\"deferDate\\": " & (my jsonString(deferStr)) & "," & ¬
|
|
142
|
+
"\\"completionDate\\": " & (my jsonString(completionStr)) & "," & ¬
|
|
143
|
+
"\\"projectId\\": " & (my jsonString(projId)) & "," & ¬
|
|
144
|
+
"\\"projectName\\": " & (my jsonString(projName)) & "," & ¬
|
|
145
|
+
"\\"tags\\": " & (my jsonArray(tagNames)) & "," & ¬
|
|
146
|
+
"\\"estimatedMinutes\\": " & estMinutes & ¬
|
|
147
|
+
"}"
|
|
148
|
+
end if
|
|
149
|
+
end repeat
|
|
150
|
+
|
|
151
|
+
return output & "]"
|
|
152
|
+
`;
|
|
153
|
+
const result = await runAppleScript(omniFocusScriptWithHelpers(script));
|
|
154
|
+
if (!result.success) {
|
|
155
|
+
return failure(result.error ??
|
|
156
|
+
createError(ErrorCode.UNKNOWN_ERROR, "Failed to query tasks"));
|
|
157
|
+
}
|
|
158
|
+
return success(result.data ?? []);
|
|
159
|
+
}
|
|
160
|
+
//# sourceMappingURL=tasks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../src/commands/tasks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { CliOutput, TaskUpdateOptions, OFTask } from "../types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Update properties of an existing task in OmniFocus.
|
|
4
|
+
*/
|
|
5
|
+
export declare function updateTask(taskId: string, options: TaskUpdateOptions): Promise<CliOutput<OFTask>>;
|
|
6
|
+
//# sourceMappingURL=update.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAqBxE;;GAEG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAiM5B"}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
import { success, failure } from "../result.js";
|
|
2
|
+
import { ErrorCode, createError } from "../errors.js";
|
|
3
|
+
import { validateId, validateDateString, validateTags, validateProjectName, validateEstimatedMinutes, validateRepetitionRule, } from "../validation.js";
|
|
4
|
+
import { escapeAppleScript } from "../escape.js";
|
|
5
|
+
import { runAppleScript, omniFocusScriptWithHelpers, } from "../applescript.js";
|
|
6
|
+
import { buildRepetitionRuleScript, buildClearRepetitionScript, } from "./repetition.js";
|
|
7
|
+
/**
|
|
8
|
+
* Update properties of an existing task in OmniFocus.
|
|
9
|
+
*/
|
|
10
|
+
export async function updateTask(taskId, options) {
|
|
11
|
+
// Validate inputs
|
|
12
|
+
const idError = validateId(taskId, "task");
|
|
13
|
+
if (idError)
|
|
14
|
+
return failure(idError);
|
|
15
|
+
if (options.due !== undefined && options.due !== "") {
|
|
16
|
+
const dueError = validateDateString(options.due);
|
|
17
|
+
if (dueError)
|
|
18
|
+
return failure(dueError);
|
|
19
|
+
}
|
|
20
|
+
if (options.defer !== undefined && options.defer !== "") {
|
|
21
|
+
const deferError = validateDateString(options.defer);
|
|
22
|
+
if (deferError)
|
|
23
|
+
return failure(deferError);
|
|
24
|
+
}
|
|
25
|
+
const tagsError = validateTags(options.tags);
|
|
26
|
+
if (tagsError)
|
|
27
|
+
return failure(tagsError);
|
|
28
|
+
const projectError = validateProjectName(options.project);
|
|
29
|
+
if (projectError)
|
|
30
|
+
return failure(projectError);
|
|
31
|
+
const estimateError = validateEstimatedMinutes(options.estimatedMinutes);
|
|
32
|
+
if (estimateError)
|
|
33
|
+
return failure(estimateError);
|
|
34
|
+
const repeatError = validateRepetitionRule(options.repeat);
|
|
35
|
+
if (repeatError)
|
|
36
|
+
return failure(repeatError);
|
|
37
|
+
// Build the update statements
|
|
38
|
+
const updates = [];
|
|
39
|
+
if (options.title !== undefined) {
|
|
40
|
+
updates.push(`set name of theTask to "${escapeAppleScript(options.title)}"`);
|
|
41
|
+
}
|
|
42
|
+
if (options.note !== undefined) {
|
|
43
|
+
updates.push(`set note of theTask to "${escapeAppleScript(options.note)}"`);
|
|
44
|
+
}
|
|
45
|
+
if (options.flag !== undefined) {
|
|
46
|
+
updates.push("set flagged of theTask to " + String(options.flag));
|
|
47
|
+
}
|
|
48
|
+
if (options.due !== undefined) {
|
|
49
|
+
if (options.due === "") {
|
|
50
|
+
updates.push(`set due date of theTask to missing value`);
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
updates.push(`set due date of theTask to date "${options.due}"`);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
if (options.defer !== undefined) {
|
|
57
|
+
if (options.defer === "") {
|
|
58
|
+
updates.push(`set defer date of theTask to missing value`);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
updates.push(`set defer date of theTask to date "${options.defer}"`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
if (options.project !== undefined) {
|
|
65
|
+
if (options.project === "") {
|
|
66
|
+
updates.push(`set containing project of theTask to missing value`);
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
updates.push(`set theProject to first flattened project whose name is "${escapeAppleScript(options.project)}"`);
|
|
70
|
+
updates.push(`move theTask to end of tasks of theProject`);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
if (options.estimatedMinutes !== undefined) {
|
|
74
|
+
updates.push(`set estimated minutes of theTask to ${String(options.estimatedMinutes)}`);
|
|
75
|
+
}
|
|
76
|
+
if (options.clearEstimate === true) {
|
|
77
|
+
updates.push(`set estimated minutes of theTask to missing value`);
|
|
78
|
+
}
|
|
79
|
+
const updateScript = updates.join("\n ");
|
|
80
|
+
// Handle repetition rule
|
|
81
|
+
let repetitionScript = "";
|
|
82
|
+
if (options.clearRepeat === true) {
|
|
83
|
+
repetitionScript = buildClearRepetitionScript("theTask");
|
|
84
|
+
}
|
|
85
|
+
else if (options.repeat !== undefined) {
|
|
86
|
+
repetitionScript = buildRepetitionRuleScript("theTask", options.repeat);
|
|
87
|
+
}
|
|
88
|
+
// Handle tags - clear and re-add
|
|
89
|
+
let tagScript = "";
|
|
90
|
+
if (options.tags !== undefined) {
|
|
91
|
+
tagScript = `
|
|
92
|
+
-- Clear existing tags
|
|
93
|
+
repeat with existingTag in (tags of theTask)
|
|
94
|
+
remove existingTag from tags of theTask
|
|
95
|
+
end repeat
|
|
96
|
+
`;
|
|
97
|
+
for (const tagName of options.tags) {
|
|
98
|
+
tagScript += `
|
|
99
|
+
try
|
|
100
|
+
set theTag to first flattened tag whose name is "${escapeAppleScript(tagName)}"
|
|
101
|
+
add theTag to tags of theTask
|
|
102
|
+
end try
|
|
103
|
+
`;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
const script = `
|
|
107
|
+
set theTask to first flattened task whose id is "${escapeAppleScript(taskId)}"
|
|
108
|
+
|
|
109
|
+
${updateScript}
|
|
110
|
+
${tagScript}
|
|
111
|
+
${repetitionScript}
|
|
112
|
+
|
|
113
|
+
-- Return updated task info
|
|
114
|
+
set taskId to id of theTask
|
|
115
|
+
set taskName to name of theTask
|
|
116
|
+
set taskNote to note of theTask
|
|
117
|
+
set taskFlagged to flagged of theTask
|
|
118
|
+
set taskCompleted to completed of theTask
|
|
119
|
+
|
|
120
|
+
set dueStr to ""
|
|
121
|
+
try
|
|
122
|
+
set dueStr to (due date of theTask) as string
|
|
123
|
+
end try
|
|
124
|
+
|
|
125
|
+
set deferStr to ""
|
|
126
|
+
try
|
|
127
|
+
set deferStr to (defer date of theTask) as string
|
|
128
|
+
end try
|
|
129
|
+
|
|
130
|
+
set completionStr to ""
|
|
131
|
+
try
|
|
132
|
+
set completionStr to (completion date of theTask) as string
|
|
133
|
+
end try
|
|
134
|
+
|
|
135
|
+
set projId to ""
|
|
136
|
+
set projName to ""
|
|
137
|
+
try
|
|
138
|
+
set proj to containing project of theTask
|
|
139
|
+
set projId to id of proj
|
|
140
|
+
set projName to name of proj
|
|
141
|
+
end try
|
|
142
|
+
|
|
143
|
+
set tagNames to {}
|
|
144
|
+
repeat with t in tags of theTask
|
|
145
|
+
set end of tagNames to name of t
|
|
146
|
+
end repeat
|
|
147
|
+
|
|
148
|
+
set estMinutes to 0
|
|
149
|
+
try
|
|
150
|
+
set estMinutes to estimated minutes of theTask
|
|
151
|
+
if estMinutes is missing value then set estMinutes to 0
|
|
152
|
+
end try
|
|
153
|
+
|
|
154
|
+
return "{" & ¬
|
|
155
|
+
"\\"id\\": \\"" & taskId & "\\"," & ¬
|
|
156
|
+
"\\"name\\": \\"" & (my escapeJson(taskName)) & "\\"," & ¬
|
|
157
|
+
"\\"note\\": " & (my jsonString(taskNote)) & "," & ¬
|
|
158
|
+
"\\"flagged\\": " & taskFlagged & "," & ¬
|
|
159
|
+
"\\"completed\\": " & taskCompleted & "," & ¬
|
|
160
|
+
"\\"dueDate\\": " & (my jsonString(dueStr)) & "," & ¬
|
|
161
|
+
"\\"deferDate\\": " & (my jsonString(deferStr)) & "," & ¬
|
|
162
|
+
"\\"completionDate\\": " & (my jsonString(completionStr)) & "," & ¬
|
|
163
|
+
"\\"projectId\\": " & (my jsonString(projId)) & "," & ¬
|
|
164
|
+
"\\"projectName\\": " & (my jsonString(projName)) & "," & ¬
|
|
165
|
+
"\\"tags\\": " & (my jsonArray(tagNames)) & "," & ¬
|
|
166
|
+
"\\"estimatedMinutes\\": " & estMinutes & ¬
|
|
167
|
+
"}"
|
|
168
|
+
`;
|
|
169
|
+
const result = await runAppleScript(omniFocusScriptWithHelpers(script));
|
|
170
|
+
if (!result.success) {
|
|
171
|
+
return failure(result.error ??
|
|
172
|
+
createError(ErrorCode.UNKNOWN_ERROR, "Failed to update task"));
|
|
173
|
+
}
|
|
174
|
+
if (result.data === undefined) {
|
|
175
|
+
return failure(createError(ErrorCode.UNKNOWN_ERROR, "No task data returned"));
|
|
176
|
+
}
|
|
177
|
+
return success(result.data);
|
|
178
|
+
}
|
|
179
|
+
//# sourceMappingURL=update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,YAAY,EACZ,mBAAmB,EACnB,wBAAwB,EACxB,sBAAsB,GACvB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EACL,cAAc,EACd,0BAA0B,GAC3B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,iBAAiB,CAAC;AAEzB;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,MAAc,EACd,OAA0B;IAE1B,kBAAkB;IAClB,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC;IAErC,IAAI,OAAO,CAAC,GAAG,KAAK,SAAS,IAAI,OAAO,CAAC,GAAG,KAAK,EAAE,EAAE,CAAC;QACpD,MAAM,QAAQ,GAAG,kBAAkB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjD,IAAI,QAAQ;YAAE,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC;IAED,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,CAAC,KAAK,KAAK,EAAE,EAAE,CAAC;QACxD,MAAM,UAAU,GAAG,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACrD,IAAI,UAAU;YAAE,OAAO,OAAO,CAAC,UAAU,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,IAAI,SAAS;QAAE,OAAO,OAAO,CAAC,SAAS,CAAC,CAAC;IAEzC,MAAM,YAAY,GAAG,mBAAmB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1D,IAAI,YAAY;QAAE,OAAO,OAAO,CAAC,YAAY,CAAC,CAAC;IAE/C,MAAM,aAAa,GAAG,wBAAwB,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACzE,IAAI,aAAa;QAAE,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC;IAEjD,MAAM,WAAW,GAAG,sBAAsB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3D,IAAI,WAAW;QAAE,OAAO,OAAO,CAAC,WAAW,CAAC,CAAC;IAE7C,8BAA8B;IAC9B,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAChC,OAAO,CAAC,IAAI,CACV,2BAA2B,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAC/D,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,2BAA2B,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9E,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,4BAA4B,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,IAAI,OAAO,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;QAC9B,IAAI,OAAO,CAAC,GAAG,KAAK,EAAE,EAAE,CAAC;YACvB,OAAO,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;QAC3D,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,oCAAoC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAChC,IAAI,OAAO,CAAC,KAAK,KAAK,EAAE,EAAE,CAAC;YACzB,OAAO,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;QAC7D,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,sCAAsC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAClC,IAAI,OAAO,CAAC,OAAO,KAAK,EAAE,EAAE,CAAC;YAC3B,OAAO,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;QACrE,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CACV,4DAA4D,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAClG,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;QAC3C,OAAO,CAAC,IAAI,CACV,uCAAuC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAC1E,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,aAAa,KAAK,IAAI,EAAE,CAAC;QACnC,OAAO,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;IACpE,CAAC;IAED,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAE5C,yBAAyB;IACzB,IAAI,gBAAgB,GAAG,EAAE,CAAC;IAC1B,IAAI,OAAO,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;QACjC,gBAAgB,GAAG,0BAA0B,CAAC,SAAS,CAAC,CAAC;IAC3D,CAAC;SAAM,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACxC,gBAAgB,GAAG,yBAAyB,CAAC,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1E,CAAC;IAED,iCAAiC;IACjC,IAAI,SAAS,GAAG,EAAE,CAAC;IACnB,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC/B,SAAS,GAAG;;;;;KAKX,CAAC;QAEF,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACnC,SAAS,IAAI;;yDAEsC,iBAAiB,CAAC,OAAO,CAAC;;;OAG5E,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG;uDACsC,iBAAiB,CAAC,MAAM,CAAC;;MAE1E,YAAY;MACZ,SAAS;MACT,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDnB,CAAC;IAEF,MAAM,MAAM,GAAG,MAAM,cAAc,CACjC,0BAA0B,CAAC,MAAM,CAAC,CACnC,CAAC;IAEF,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,OAAO,CACZ,MAAM,CAAC,KAAK;YACV,WAAW,CAAC,SAAS,CAAC,aAAa,EAAE,uBAAuB,CAAC,CAChE,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,OAAO,CACZ,WAAW,CAAC,SAAS,CAAC,aAAa,EAAE,uBAAuB,CAAC,CAC9D,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC"}
|
package/dist/errors.d.ts
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error codes for semantic error handling.
|
|
3
|
+
*/
|
|
4
|
+
export declare const ErrorCode: {
|
|
5
|
+
readonly TASK_NOT_FOUND: "TASK_NOT_FOUND";
|
|
6
|
+
readonly PROJECT_NOT_FOUND: "PROJECT_NOT_FOUND";
|
|
7
|
+
readonly TAG_NOT_FOUND: "TAG_NOT_FOUND";
|
|
8
|
+
readonly FOLDER_NOT_FOUND: "FOLDER_NOT_FOUND";
|
|
9
|
+
readonly PERSPECTIVE_NOT_FOUND: "PERSPECTIVE_NOT_FOUND";
|
|
10
|
+
readonly DUPLICATE_NAME: "DUPLICATE_NAME";
|
|
11
|
+
readonly OMNIFOCUS_NOT_RUNNING: "OMNIFOCUS_NOT_RUNNING";
|
|
12
|
+
readonly INVALID_DATE_FORMAT: "INVALID_DATE_FORMAT";
|
|
13
|
+
readonly INVALID_ID_FORMAT: "INVALID_ID_FORMAT";
|
|
14
|
+
readonly INVALID_REPETITION_RULE: "INVALID_REPETITION_RULE";
|
|
15
|
+
readonly APPLESCRIPT_ERROR: "APPLESCRIPT_ERROR";
|
|
16
|
+
readonly JSON_PARSE_ERROR: "JSON_PARSE_ERROR";
|
|
17
|
+
readonly VALIDATION_ERROR: "VALIDATION_ERROR";
|
|
18
|
+
readonly UNKNOWN_ERROR: "UNKNOWN_ERROR";
|
|
19
|
+
};
|
|
20
|
+
export type ErrorCode = (typeof ErrorCode)[keyof typeof ErrorCode];
|
|
21
|
+
/**
|
|
22
|
+
* Structured error representation for CLI output.
|
|
23
|
+
*/
|
|
24
|
+
export interface CliError {
|
|
25
|
+
code: ErrorCode;
|
|
26
|
+
message: string;
|
|
27
|
+
details?: string;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Create a CliError with the given code and message.
|
|
31
|
+
*/
|
|
32
|
+
export declare function createError(code: ErrorCode, message: string, details?: string): CliError;
|
|
33
|
+
/**
|
|
34
|
+
* Parse an AppleScript error message into a structured CliError.
|
|
35
|
+
* Detects common error patterns and maps them to appropriate error codes.
|
|
36
|
+
*/
|
|
37
|
+
export declare function parseAppleScriptError(rawError: string): CliError;
|
|
38
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;CAeZ,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,OAAO,SAAS,CAAC,CAAC;AAEnE;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,GACf,QAAQ,CAEV;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAoGhE"}
|
package/dist/errors.js
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error codes for semantic error handling.
|
|
3
|
+
*/
|
|
4
|
+
export const ErrorCode = {
|
|
5
|
+
TASK_NOT_FOUND: "TASK_NOT_FOUND",
|
|
6
|
+
PROJECT_NOT_FOUND: "PROJECT_NOT_FOUND",
|
|
7
|
+
TAG_NOT_FOUND: "TAG_NOT_FOUND",
|
|
8
|
+
FOLDER_NOT_FOUND: "FOLDER_NOT_FOUND",
|
|
9
|
+
PERSPECTIVE_NOT_FOUND: "PERSPECTIVE_NOT_FOUND",
|
|
10
|
+
DUPLICATE_NAME: "DUPLICATE_NAME",
|
|
11
|
+
OMNIFOCUS_NOT_RUNNING: "OMNIFOCUS_NOT_RUNNING",
|
|
12
|
+
INVALID_DATE_FORMAT: "INVALID_DATE_FORMAT",
|
|
13
|
+
INVALID_ID_FORMAT: "INVALID_ID_FORMAT",
|
|
14
|
+
INVALID_REPETITION_RULE: "INVALID_REPETITION_RULE",
|
|
15
|
+
APPLESCRIPT_ERROR: "APPLESCRIPT_ERROR",
|
|
16
|
+
JSON_PARSE_ERROR: "JSON_PARSE_ERROR",
|
|
17
|
+
VALIDATION_ERROR: "VALIDATION_ERROR",
|
|
18
|
+
UNKNOWN_ERROR: "UNKNOWN_ERROR",
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Create a CliError with the given code and message.
|
|
22
|
+
*/
|
|
23
|
+
export function createError(code, message, details) {
|
|
24
|
+
return details !== undefined ? { code, message, details } : { code, message };
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Parse an AppleScript error message into a structured CliError.
|
|
28
|
+
* Detects common error patterns and maps them to appropriate error codes.
|
|
29
|
+
*/
|
|
30
|
+
export function parseAppleScriptError(rawError) {
|
|
31
|
+
const errorLower = rawError.toLowerCase();
|
|
32
|
+
// OmniFocus not running
|
|
33
|
+
if (errorLower.includes("application isn't running") ||
|
|
34
|
+
errorLower.includes("connection is invalid") ||
|
|
35
|
+
errorLower.includes("not running")) {
|
|
36
|
+
return createError(ErrorCode.OMNIFOCUS_NOT_RUNNING, "OmniFocus is not running", rawError);
|
|
37
|
+
}
|
|
38
|
+
// Task not found
|
|
39
|
+
if (errorLower.includes("can't get first flattened task") ||
|
|
40
|
+
errorLower.includes("no task") ||
|
|
41
|
+
(errorLower.includes("task") && errorLower.includes("doesn't exist"))) {
|
|
42
|
+
return createError(ErrorCode.TASK_NOT_FOUND, "Task not found", rawError);
|
|
43
|
+
}
|
|
44
|
+
// Project not found
|
|
45
|
+
if (errorLower.includes("can't get first flattened project") ||
|
|
46
|
+
errorLower.includes("no project") ||
|
|
47
|
+
(errorLower.includes("project") && errorLower.includes("doesn't exist"))) {
|
|
48
|
+
return createError(ErrorCode.PROJECT_NOT_FOUND, "Project not found", rawError);
|
|
49
|
+
}
|
|
50
|
+
// Tag not found
|
|
51
|
+
if (errorLower.includes("can't get first flattened tag") ||
|
|
52
|
+
errorLower.includes("no tag") ||
|
|
53
|
+
(errorLower.includes("tag") && errorLower.includes("doesn't exist"))) {
|
|
54
|
+
return createError(ErrorCode.TAG_NOT_FOUND, "Tag not found", rawError);
|
|
55
|
+
}
|
|
56
|
+
// Folder not found
|
|
57
|
+
if (errorLower.includes("can't get first flattened folder") ||
|
|
58
|
+
errorLower.includes("can't get folder") ||
|
|
59
|
+
errorLower.includes("no folder") ||
|
|
60
|
+
(errorLower.includes("folder") && errorLower.includes("doesn't exist"))) {
|
|
61
|
+
return createError(ErrorCode.FOLDER_NOT_FOUND, "Folder not found", rawError);
|
|
62
|
+
}
|
|
63
|
+
// Perspective not found
|
|
64
|
+
if (errorLower.includes("can't get perspective") ||
|
|
65
|
+
errorLower.includes("no perspective") ||
|
|
66
|
+
(errorLower.includes("perspective") && errorLower.includes("doesn't exist"))) {
|
|
67
|
+
return createError(ErrorCode.PERSPECTIVE_NOT_FOUND, "Perspective not found", rawError);
|
|
68
|
+
}
|
|
69
|
+
// Invalid date
|
|
70
|
+
if (errorLower.includes("can't make") &&
|
|
71
|
+
errorLower.includes("into type date")) {
|
|
72
|
+
return createError(ErrorCode.INVALID_DATE_FORMAT, "Invalid date format", rawError);
|
|
73
|
+
}
|
|
74
|
+
// Generic AppleScript error
|
|
75
|
+
return createError(ErrorCode.APPLESCRIPT_ERROR, "AppleScript execution failed", rawError);
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
package/dist/escape.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"escape.d.ts","sourceRoot":"","sources":["../src/escape.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAErD"}
|
package/dist/escape.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"escape.js","sourceRoot":"","sources":["../src/escape.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAW;IAC3C,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACzD,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export type { CliOutput, CliError, CommandInfo, OFTask, OFProject, OFTag, OFPerspective, OFFolder, OFTaskWithChildren, InboxOptions, TaskQueryOptions, ProjectQueryOptions, TagQueryOptions, TaskUpdateOptions, CreateProjectOptions, CreateFolderOptions, FolderQueryOptions, CreateTagOptions, UpdateTagOptions, SubtaskQueryOptions, BatchResult, RepetitionRule, SearchOptions, ReviewResult, } from "./types.js";
|
|
2
|
+
export { ErrorCode, createError, parseAppleScriptError } from "./errors.js";
|
|
3
|
+
export type { ErrorCode as ErrorCodeType } from "./errors.js";
|
|
4
|
+
export { success, failure, failureMessage } from "./result.js";
|
|
5
|
+
export { escapeAppleScript } from "./escape.js";
|
|
6
|
+
export { validateId, validateDateString, validateTags, validateProjectName, validateFolderName, validateTagName, validateRepetitionRule, validateEstimatedMinutes, validateSearchQuery, } from "./validation.js";
|
|
7
|
+
export { runAppleScript, runAppleScriptFile, omniFocusScript, omniFocusScriptWithHelpers, jsonHelpers, } from "./applescript.js";
|
|
8
|
+
export type { AppleScriptResult } from "./applescript.js";
|
|
9
|
+
export { addToInbox } from "./commands/inbox.js";
|
|
10
|
+
export { queryTasks } from "./commands/tasks.js";
|
|
11
|
+
export { queryProjects } from "./commands/projects.js";
|
|
12
|
+
export { queryTags } from "./commands/tags.js";
|
|
13
|
+
export { completeTask } from "./commands/complete.js";
|
|
14
|
+
export type { CompleteResult } from "./commands/complete.js";
|
|
15
|
+
export { updateTask } from "./commands/update.js";
|
|
16
|
+
export { createProject } from "./commands/create-project.js";
|
|
17
|
+
export { createFolder, queryFolders } from "./commands/folders.js";
|
|
18
|
+
export { dropTask, deleteTask } from "./commands/drop.js";
|
|
19
|
+
export type { DropResult, DeleteResult } from "./commands/drop.js";
|
|
20
|
+
export { createTag, updateTag, deleteTag } from "./commands/tags-crud.js";
|
|
21
|
+
export type { DeleteTagResult } from "./commands/tags-crud.js";
|
|
22
|
+
export { createSubtask, querySubtasks, moveTaskToParent, } from "./commands/subtasks.js";
|
|
23
|
+
export { completeTasks, updateTasks, deleteTasks, } from "./commands/batch.js";
|
|
24
|
+
export type { BatchCompleteItem, BatchDeleteItem, } from "./commands/batch.js";
|
|
25
|
+
export { buildRRule, buildRepetitionRuleScript } from "./commands/repetition.js";
|
|
26
|
+
export { searchTasks } from "./commands/search.js";
|
|
27
|
+
export { listPerspectives, queryPerspective } from "./commands/perspectives.js";
|
|
28
|
+
export type { PerspectiveQueryOptions } from "./commands/perspectives.js";
|
|
29
|
+
export { reviewProject, queryProjectsForReview } from "./commands/review.js";
|
|
30
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,SAAS,EACT,QAAQ,EACR,WAAW,EACX,MAAM,EACN,SAAS,EACT,KAAK,EACL,aAAa,EACb,QAAQ,EACR,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,WAAW,EACX,cAAc,EACd,aAAa,EACb,YAAY,GACb,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAC5E,YAAY,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,aAAa,CAAC;AAG9D,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,sBAAsB,EACtB,wBAAwB,EACxB,mBAAmB,GACpB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,0BAA0B,EAC1B,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAG1D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,YAAY,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGlD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAGnE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC1D,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGnE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAC1E,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG/D,OAAO,EACL,aAAa,EACb,aAAa,EACb,gBAAgB,GACjB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EACL,aAAa,EACb,WAAW,EACX,WAAW,GACZ,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,iBAAiB,EACjB,eAAe,GAChB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,UAAU,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAGjF,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGnD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAChF,YAAY,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAG1E,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
// Error handling
|
|
2
|
+
export { ErrorCode, createError, parseAppleScriptError } from "./errors.js";
|
|
3
|
+
// Result helpers
|
|
4
|
+
export { success, failure, failureMessage } from "./result.js";
|
|
5
|
+
// Utilities
|
|
6
|
+
export { escapeAppleScript } from "./escape.js";
|
|
7
|
+
export { validateId, validateDateString, validateTags, validateProjectName, validateFolderName, validateTagName, validateRepetitionRule, validateEstimatedMinutes, validateSearchQuery, } from "./validation.js";
|
|
8
|
+
// AppleScript utilities
|
|
9
|
+
export { runAppleScript, runAppleScriptFile, omniFocusScript, omniFocusScriptWithHelpers, jsonHelpers, } from "./applescript.js";
|
|
10
|
+
// Commands
|
|
11
|
+
export { addToInbox } from "./commands/inbox.js";
|
|
12
|
+
export { queryTasks } from "./commands/tasks.js";
|
|
13
|
+
export { queryProjects } from "./commands/projects.js";
|
|
14
|
+
export { queryTags } from "./commands/tags.js";
|
|
15
|
+
export { completeTask } from "./commands/complete.js";
|
|
16
|
+
export { updateTask } from "./commands/update.js";
|
|
17
|
+
// Phase 1: Projects & Folders
|
|
18
|
+
export { createProject } from "./commands/create-project.js";
|
|
19
|
+
export { createFolder, queryFolders } from "./commands/folders.js";
|
|
20
|
+
// Phase 1: Drop/Delete Tasks
|
|
21
|
+
export { dropTask, deleteTask } from "./commands/drop.js";
|
|
22
|
+
// Phase 1: Tags CRUD
|
|
23
|
+
export { createTag, updateTag, deleteTag } from "./commands/tags-crud.js";
|
|
24
|
+
// Phase 2: Subtasks
|
|
25
|
+
export { createSubtask, querySubtasks, moveTaskToParent, } from "./commands/subtasks.js";
|
|
26
|
+
// Phase 3: Batch Operations
|
|
27
|
+
export { completeTasks, updateTasks, deleteTasks, } from "./commands/batch.js";
|
|
28
|
+
// Phase 3: Repetition helpers
|
|
29
|
+
export { buildRRule, buildRepetitionRuleScript } from "./commands/repetition.js";
|
|
30
|
+
// Phase 4: Search
|
|
31
|
+
export { searchTasks } from "./commands/search.js";
|
|
32
|
+
// Phase 4: Perspectives
|
|
33
|
+
export { listPerspectives, queryPerspective } from "./commands/perspectives.js";
|
|
34
|
+
// Phase 4: Review
|
|
35
|
+
export { reviewProject, queryProjectsForReview } from "./commands/review.js";
|
|
36
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA4BA,iBAAiB;AACjB,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAG5E,iBAAiB;AACjB,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE/D,YAAY;AACZ,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,sBAAsB,EACtB,wBAAwB,EACxB,mBAAmB,GACpB,MAAM,iBAAiB,CAAC;AAEzB,wBAAwB;AACxB,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,0BAA0B,EAC1B,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAG1B,WAAW;AACX,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,8BAA8B;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAEnE,6BAA6B;AAC7B,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAG1D,qBAAqB;AACrB,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAG1E,oBAAoB;AACpB,OAAO,EACL,aAAa,EACb,aAAa,EACb,gBAAgB,GACjB,MAAM,wBAAwB,CAAC;AAEhC,4BAA4B;AAC5B,OAAO,EACL,aAAa,EACb,WAAW,EACX,WAAW,GACZ,MAAM,qBAAqB,CAAC;AAM7B,8BAA8B;AAC9B,OAAO,EAAE,UAAU,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAEjF,kBAAkB;AAClB,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,wBAAwB;AACxB,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAGhF,kBAAkB;AAClB,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC"}
|