@falkenslab/moodle-driver 0.0.0-stage → 0.3.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/LICENSE +21 -0
- package/README.md +133 -2
- package/dist/areas/activities/build.d.ts +98 -0
- package/dist/areas/activities/build.js +246 -0
- package/dist/areas/activities/build.js.map +1 -0
- package/dist/areas/activities/content.d.ts +53 -0
- package/dist/areas/activities/content.js +113 -0
- package/dist/areas/activities/content.js.map +1 -0
- package/dist/areas/assignments/grader.d.ts +68 -0
- package/dist/areas/assignments/grader.js +169 -0
- package/dist/areas/assignments/grader.js.map +1 -0
- package/dist/areas/assignments/grading.d.ts +86 -0
- package/dist/areas/assignments/grading.js +162 -0
- package/dist/areas/assignments/grading.js.map +1 -0
- package/dist/areas/assignments/student.d.ts +57 -0
- package/dist/areas/assignments/student.js +115 -0
- package/dist/areas/assignments/student.js.map +1 -0
- package/dist/areas/calendar/calendar.d.ts +43 -0
- package/dist/areas/calendar/calendar.js +84 -0
- package/dist/areas/calendar/calendar.js.map +1 -0
- package/dist/areas/completion/completion.d.ts +50 -0
- package/dist/areas/completion/completion.js +112 -0
- package/dist/areas/completion/completion.js.map +1 -0
- package/dist/areas/courses/list.d.ts +59 -0
- package/dist/areas/courses/list.js +74 -0
- package/dist/areas/courses/list.js.map +1 -0
- package/dist/areas/courses/overview.d.ts +83 -0
- package/dist/areas/courses/overview.js +137 -0
- package/dist/areas/courses/overview.js.map +1 -0
- package/dist/areas/courses/state.d.ts +51 -0
- package/dist/areas/courses/state.js +45 -0
- package/dist/areas/courses/state.js.map +1 -0
- package/dist/areas/courses/structure.d.ts +89 -0
- package/dist/areas/courses/structure.js +104 -0
- package/dist/areas/courses/structure.js.map +1 -0
- package/dist/areas/forums/discussions.d.ts +57 -0
- package/dist/areas/forums/discussions.js +119 -0
- package/dist/areas/forums/discussions.js.map +1 -0
- package/dist/areas/forums/posts.d.ts +83 -0
- package/dist/areas/forums/posts.js +114 -0
- package/dist/areas/forums/posts.js.map +1 -0
- package/dist/areas/grades/gradebook.d.ts +104 -0
- package/dist/areas/grades/gradebook.js +250 -0
- package/dist/areas/grades/gradebook.js.map +1 -0
- package/dist/areas/grades/user-report.d.ts +26 -0
- package/dist/areas/grades/user-report.js +71 -0
- package/dist/areas/grades/user-report.js.map +1 -0
- package/dist/areas/h5p/h5p.d.ts +33 -0
- package/dist/areas/h5p/h5p.js +104 -0
- package/dist/areas/h5p/h5p.js.map +1 -0
- package/dist/areas/lessons/lessons.d.ts +60 -0
- package/dist/areas/lessons/lessons.js +145 -0
- package/dist/areas/lessons/lessons.js.map +1 -0
- package/dist/areas/messages/messages.d.ts +68 -0
- package/dist/areas/messages/messages.js +84 -0
- package/dist/areas/messages/messages.js.map +1 -0
- package/dist/areas/participants/participants.d.ts +57 -0
- package/dist/areas/participants/participants.js +135 -0
- package/dist/areas/participants/participants.js.map +1 -0
- package/dist/areas/questions/banks.d.ts +83 -0
- package/dist/areas/questions/banks.js +239 -0
- package/dist/areas/questions/banks.js.map +1 -0
- package/dist/areas/quizzes/attempts.d.ts +123 -0
- package/dist/areas/quizzes/attempts.js +300 -0
- package/dist/areas/quizzes/attempts.js.map +1 -0
- package/dist/areas/quizzes/results.d.ts +36 -0
- package/dist/areas/quizzes/results.js +93 -0
- package/dist/areas/quizzes/results.js.map +1 -0
- package/dist/areas/quizzes/structure.d.ts +42 -0
- package/dist/areas/quizzes/structure.js +100 -0
- package/dist/areas/quizzes/structure.js.map +1 -0
- package/dist/areas/site/info.d.ts +25 -0
- package/dist/areas/site/info.js +45 -0
- package/dist/areas/site/info.js.map +1 -0
- package/dist/areas/site/users.d.ts +56 -0
- package/dist/areas/site/users.js +89 -0
- package/dist/areas/site/users.js.map +1 -0
- package/dist/areas/surveys/choice.d.ts +38 -0
- package/dist/areas/surveys/choice.js +105 -0
- package/dist/areas/surveys/choice.js.map +1 -0
- package/dist/areas/surveys/surveys.d.ts +51 -0
- package/dist/areas/surveys/surveys.js +201 -0
- package/dist/areas/surveys/surveys.js.map +1 -0
- package/dist/browser/chromium.d.ts +15 -0
- package/dist/browser/chromium.js +53 -0
- package/dist/browser/chromium.js.map +1 -0
- package/dist/browser/cookies.d.ts +11 -0
- package/dist/browser/cookies.js +31 -0
- package/dist/browser/cookies.js.map +1 -0
- package/dist/browser/manager.d.ts +57 -0
- package/dist/browser/manager.js +177 -0
- package/dist/browser/manager.js.map +1 -0
- package/dist/browser.d.ts +53 -0
- package/dist/browser.js +167 -0
- package/dist/browser.js.map +1 -0
- package/dist/categories.d.ts +28 -0
- package/dist/categories.js +222 -0
- package/dist/categories.js.map +1 -0
- package/dist/chromiumInstaller.d.ts +15 -0
- package/dist/chromiumInstaller.js +52 -0
- package/dist/chromiumInstaller.js.map +1 -0
- package/dist/cli/args.d.ts +33 -0
- package/dist/cli/args.js +194 -0
- package/dist/cli/args.js.map +1 -0
- package/dist/cli/commands.generated.d.ts +4 -0
- package/dist/cli/commands.generated.js +2203 -0
- package/dist/cli/commands.generated.js.map +1 -0
- package/dist/cli/config.d.ts +46 -0
- package/dist/cli/config.js +107 -0
- package/dist/cli/config.js.map +1 -0
- package/dist/cli/main.d.ts +2 -0
- package/dist/cli/main.js +19 -0
- package/dist/cli/main.js.map +1 -0
- package/dist/cli/output.d.ts +4 -0
- package/dist/cli/output.js +71 -0
- package/dist/cli/output.js.map +1 -0
- package/dist/cli/run.d.ts +15 -0
- package/dist/cli/run.js +194 -0
- package/dist/cli/run.js.map +1 -0
- package/dist/cli/spec.d.ts +42 -0
- package/dist/cli/spec.js +4 -0
- package/dist/cli/spec.js.map +1 -0
- package/dist/client.d.ts +217 -0
- package/dist/client.js +179 -0
- package/dist/client.js.map +1 -0
- package/dist/core/ajax.d.ts +25 -0
- package/dist/core/ajax.js +85 -0
- package/dist/core/ajax.js.map +1 -0
- package/dist/core/editor.d.ts +18 -0
- package/dist/core/editor.js +51 -0
- package/dist/core/editor.js.map +1 -0
- package/dist/core/errors.d.ts +12 -0
- package/dist/core/errors.js +10 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/files.d.ts +16 -0
- package/dist/core/files.js +58 -0
- package/dist/core/files.js.map +1 -0
- package/dist/core/forms.d.ts +45 -0
- package/dist/core/forms.js +200 -0
- package/dist/core/forms.js.map +1 -0
- package/dist/core/http.d.ts +18 -0
- package/dist/core/http.js +22 -0
- package/dist/core/http.js.map +1 -0
- package/dist/core/inPage.d.ts +8 -0
- package/dist/core/inPage.js +10 -0
- package/dist/core/inPage.js.map +1 -0
- package/dist/core/login.d.ts +40 -0
- package/dist/core/login.js +83 -0
- package/dist/core/login.js.map +1 -0
- package/dist/core/pace.d.ts +4 -0
- package/dist/core/pace.js +21 -0
- package/dist/core/pace.js.map +1 -0
- package/dist/core/session.d.ts +55 -0
- package/dist/core/session.js +157 -0
- package/dist/core/session.js.map +1 -0
- package/dist/core/site.d.ts +8 -0
- package/dist/core/site.js +36 -0
- package/dist/core/site.js.map +1 -0
- package/dist/core/text.d.ts +21 -0
- package/dist/core/text.js +113 -0
- package/dist/core/text.js.map +1 -0
- package/dist/home.d.ts +19 -0
- package/dist/home.js +54 -0
- package/dist/home.js.map +1 -0
- package/dist/index.d.ts +40 -0
- package/dist/index.js +51 -0
- package/dist/index.js.map +1 -0
- package/dist/internals.d.ts +11 -0
- package/dist/internals.js +15 -0
- package/dist/internals.js.map +1 -0
- package/dist/moodle/activities.d.ts +94 -0
- package/dist/moodle/activities.js +240 -0
- package/dist/moodle/activities.js.map +1 -0
- package/dist/moodle/ajax.d.ts +22 -0
- package/dist/moodle/ajax.js +91 -0
- package/dist/moodle/ajax.js.map +1 -0
- package/dist/moodle/assign.d.ts +65 -0
- package/dist/moodle/assign.js +162 -0
- package/dist/moodle/assign.js.map +1 -0
- package/dist/moodle/calendar.d.ts +41 -0
- package/dist/moodle/calendar.js +80 -0
- package/dist/moodle/calendar.js.map +1 -0
- package/dist/moodle/choice.d.ts +33 -0
- package/dist/moodle/choice.js +100 -0
- package/dist/moodle/choice.js.map +1 -0
- package/dist/moodle/completion.d.ts +48 -0
- package/dist/moodle/completion.js +108 -0
- package/dist/moodle/completion.js.map +1 -0
- package/dist/moodle/content.d.ts +43 -0
- package/dist/moodle/content.js +105 -0
- package/dist/moodle/content.js.map +1 -0
- package/dist/moodle/course.d.ts +51 -0
- package/dist/moodle/course.js +45 -0
- package/dist/moodle/course.js.map +1 -0
- package/dist/moodle/courses.d.ts +57 -0
- package/dist/moodle/courses.js +70 -0
- package/dist/moodle/courses.js.map +1 -0
- package/dist/moodle/editor.d.ts +18 -0
- package/dist/moodle/editor.js +50 -0
- package/dist/moodle/editor.js.map +1 -0
- package/dist/moodle/files.d.ts +16 -0
- package/dist/moodle/files.js +57 -0
- package/dist/moodle/files.js.map +1 -0
- package/dist/moodle/forms.d.ts +44 -0
- package/dist/moodle/forms.js +199 -0
- package/dist/moodle/forms.js.map +1 -0
- package/dist/moodle/forum.d.ts +55 -0
- package/dist/moodle/forum.js +115 -0
- package/dist/moodle/forum.js.map +1 -0
- package/dist/moodle/forumPosts.d.ts +83 -0
- package/dist/moodle/forumPosts.js +113 -0
- package/dist/moodle/forumPosts.js.map +1 -0
- package/dist/moodle/gradebook.d.ts +102 -0
- package/dist/moodle/gradebook.js +246 -0
- package/dist/moodle/gradebook.js.map +1 -0
- package/dist/moodle/grades.d.ts +24 -0
- package/dist/moodle/grades.js +67 -0
- package/dist/moodle/grades.js.map +1 -0
- package/dist/moodle/grading.d.ts +92 -0
- package/dist/moodle/grading.js +161 -0
- package/dist/moodle/grading.js.map +1 -0
- package/dist/moodle/h5p.d.ts +31 -0
- package/dist/moodle/h5p.js +100 -0
- package/dist/moodle/h5p.js.map +1 -0
- package/dist/moodle/inPage.d.ts +8 -0
- package/dist/moodle/inPage.js +10 -0
- package/dist/moodle/inPage.js.map +1 -0
- package/dist/moodle/lesson.d.ts +57 -0
- package/dist/moodle/lesson.js +140 -0
- package/dist/moodle/lesson.js.map +1 -0
- package/dist/moodle/login.d.ts +37 -0
- package/dist/moodle/login.js +77 -0
- package/dist/moodle/login.js.map +1 -0
- package/dist/moodle/messages.d.ts +66 -0
- package/dist/moodle/messages.js +80 -0
- package/dist/moodle/messages.js.map +1 -0
- package/dist/moodle/overview.d.ts +83 -0
- package/dist/moodle/overview.js +137 -0
- package/dist/moodle/overview.js.map +1 -0
- package/dist/moodle/pace.d.ts +4 -0
- package/dist/moodle/pace.js +19 -0
- package/dist/moodle/pace.js.map +1 -0
- package/dist/moodle/participants.d.ts +55 -0
- package/dist/moodle/participants.js +131 -0
- package/dist/moodle/participants.js.map +1 -0
- package/dist/moodle/questionBank.d.ts +81 -0
- package/dist/moodle/questionBank.js +235 -0
- package/dist/moodle/questionBank.js.map +1 -0
- package/dist/moodle/quiz.d.ts +117 -0
- package/dist/moodle/quiz.js +291 -0
- package/dist/moodle/quiz.js.map +1 -0
- package/dist/moodle/quizResults.d.ts +36 -0
- package/dist/moodle/quizResults.js +93 -0
- package/dist/moodle/quizResults.js.map +1 -0
- package/dist/moodle/quizStructure.d.ts +42 -0
- package/dist/moodle/quizStructure.js +100 -0
- package/dist/moodle/quizStructure.js.map +1 -0
- package/dist/moodle/session.d.ts +39 -0
- package/dist/moodle/session.js +99 -0
- package/dist/moodle/session.js.map +1 -0
- package/dist/moodle/site.d.ts +8 -0
- package/dist/moodle/site.js +36 -0
- package/dist/moodle/site.js.map +1 -0
- package/dist/moodle/siteInfo.d.ts +25 -0
- package/dist/moodle/siteInfo.js +45 -0
- package/dist/moodle/siteInfo.js.map +1 -0
- package/dist/moodle/structure.d.ts +94 -0
- package/dist/moodle/structure.js +103 -0
- package/dist/moodle/structure.js.map +1 -0
- package/dist/moodle/submission.d.ts +48 -0
- package/dist/moodle/submission.js +109 -0
- package/dist/moodle/submission.js.map +1 -0
- package/dist/moodle/survey.d.ts +47 -0
- package/dist/moodle/survey.js +197 -0
- package/dist/moodle/survey.js.map +1 -0
- package/dist/moodle/text.d.ts +21 -0
- package/dist/moodle/text.js +113 -0
- package/dist/moodle/text.js.map +1 -0
- package/dist/moodle/user.d.ts +54 -0
- package/dist/moodle/user.js +78 -0
- package/dist/moodle/user.js.map +1 -0
- package/dist/options.d.ts +30 -0
- package/dist/options.js +35 -0
- package/dist/options.js.map +1 -0
- package/dist/sessionCookies.d.ts +11 -0
- package/dist/sessionCookies.js +31 -0
- package/dist/sessionCookies.js.map +1 -0
- package/dist/testing/fakeMoodle.d.ts +55 -0
- package/dist/testing/fakeMoodle.js +103 -0
- package/dist/testing/fakeMoodle.js.map +1 -0
- package/dist/testing/gradingPanel.d.ts +6 -0
- package/dist/testing/gradingPanel.js +22 -0
- package/dist/testing/gradingPanel.js.map +1 -0
- package/dist/testing/index.d.ts +5 -0
- package/dist/testing/index.js +18 -0
- package/dist/testing/index.js.map +1 -0
- package/package.json +77 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.generated.js","sourceRoot":"","sources":["../../src/cli/commands.generated.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,QAAQ,GAA2B;IAC9C;QACE,MAAM,EAAE,oBAAoB;QAC5B,aAAa,EAAE,+XAA+X;QAC9Y,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,UAAU;gBAClB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;YACD;gBACE,MAAM,EAAE,MAAM;gBACd,UAAU,EAAE,IAAI;gBAChB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,iBAAiB;QACzB,aAAa,EAAE,8UAA8U;QAC7V,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,YAAY;gBACpB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;YACD;gBACE,MAAM,EAAE,MAAM;gBACd,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,uEAAuE;gBAC/E,OAAO,EAAE;oBACP,MAAM,EAAE,MAAM;oBACd,QAAQ,EAAE;wBACR,KAAK;wBACL,MAAM;wBACN,MAAM;wBACN,OAAO;wBACP,UAAU;wBACV,QAAQ;qBACT;iBACF;aACF;SACF;QACD,SAAS,EAAE;YACT,MAAM,EAAE,SAAS;YACjB,UAAU,EAAE,IAAI;YAChB,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE;gBACR;oBACE,MAAM,EAAE,OAAO;oBACf,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,0BAA0B;oBAClC,OAAO,EAAE;wBACP,MAAM,EAAE,MAAM;wBACd,QAAQ,EAAE;4BACR,WAAW;4BACX,MAAM;yBACP;qBACF;iBACF;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,kBAAkB;QAC1B,aAAa,EAAE,0LAA0L;QACzM,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,YAAY;gBACpB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,kBAAkB;QAC1B,aAAa,EAAE,4GAA4G;QAC3H,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,UAAU;gBAClB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;SACF;QACD,SAAS,EAAE;YACT,MAAM,EAAE,SAAS;YACjB,UAAU,EAAE,KAAK;YACjB,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE;gBACR;oBACE,MAAM,EAAE,MAAM;oBACd,UAAU,EAAE,KAAK;oBACjB,MAAM,EAAE,QAAQ;oBAChB,OAAO,EAAE;wBACP,MAAM,EAAE,QAAQ;qBACjB;iBACF;gBACD;oBACE,MAAM,EAAE,aAAa;oBACrB,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,wJAAwJ;oBAChK,OAAO,EAAE;wBACP,MAAM,EAAE,MAAM;wBACd,QAAQ,EAAE;4BACR,MAAM;4BACN,QAAQ;4BACR,QAAQ;4BACR,SAAS;4BACT,MAAM;4BACN,eAAe;4BACf,sBAAsB;4BACtB,yBAAyB;4BACzB,SAAS;yBACV;qBACF;iBACF;gBACD;oBACE,MAAM,EAAE,UAAU;oBAClB,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,QAAQ;oBAChB,OAAO,EAAE;wBACP,MAAM,EAAE,QAAQ;qBACjB;iBACF;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,oBAAoB;QAC5B,aAAa,EAAE,qRAAqR;QACpS,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,YAAY;gBACpB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;SACF;QACD,SAAS,EAAE;YACT,MAAM,EAAE,SAAS;YACjB,UAAU,EAAE,KAAK;YACjB,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE;gBACR;oBACE,MAAM,EAAE,aAAa;oBACrB,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,UAAU;oBAClB,OAAO,EAAE;wBACP,MAAM,EAAE,SAAS;qBAClB;iBACF;gBACD;oBACE,MAAM,EAAE,QAAQ;oBAChB,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,wEAAwE;oBAChF,OAAO,EAAE;wBACP,MAAM,EAAE,MAAM;qBACf;iBACF;gBACD;oBACE,MAAM,EAAE,MAAM;oBACd,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,QAAQ;oBAChB,OAAO,EAAE;wBACP,MAAM,EAAE,QAAQ;qBACjB;iBACF;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,YAAY;QACpB,aAAa,EAAE,uFAAuF;QACtG,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,UAAU;gBAClB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;SACF;QACD,SAAS,EAAE;YACT,MAAM,EAAE,SAAS;YACjB,UAAU,EAAE,IAAI;YAChB,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE;gBACR;oBACE,MAAM,EAAE,MAAM;oBACd,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,QAAQ;oBAChB,OAAO,EAAE;wBACP,MAAM,EAAE,QAAQ;qBACjB;iBACF;gBACD;oBACE,MAAM,EAAE,gBAAgB;oBACxB,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,QAAQ;oBAChB,OAAO,EAAE;wBACP,MAAM,EAAE,QAAQ;qBACjB;iBACF;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,cAAc;QACtB,aAAa,EAAE,mIAAmI;QAClJ,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,YAAY;gBACpB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;YACD;gBACE,MAAM,EAAE,WAAW;gBACnB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE;oBACP,MAAM,EAAE,SAAS;iBAClB;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,kBAAkB;QAC1B,aAAa,EAAE,6WAA6W;QAC5X,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,YAAY;gBACpB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;YACD;gBACE,MAAM,EAAE,QAAQ;gBAChB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,mEAAmE;gBAC3E,OAAO,EAAE;oBACP,MAAM,EAAE,MAAM;iBACf;aACF;SACF;QACD,SAAS,EAAE;YACT,MAAM,EAAE,SAAS;YACjB,UAAU,EAAE,IAAI;YAChB,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE;gBACR;oBACE,MAAM,EAAE,OAAO;oBACf,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,0BAA0B;oBAClC,OAAO,EAAE;wBACP,MAAM,EAAE,MAAM;wBACd,QAAQ,EAAE;4BACR,WAAW;4BACX,MAAM;yBACP;qBACF;iBACF;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,qBAAqB;QAC7B,aAAa,EAAE,gRAAgR;QAC/R,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,WAAW;gBACnB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;YACD;gBACE,MAAM,EAAE,SAAS;gBACjB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,wDAAwD;gBAChE,OAAO,EAAE;oBACP,MAAM,EAAE,MAAM;iBACf;aACF;SACF;QACD,SAAS,EAAE;YACT,MAAM,EAAE,SAAS;YACjB,UAAU,EAAE,IAAI;YAChB,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE;gBACR;oBACE,MAAM,EAAE,OAAO;oBACf,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,0BAA0B;oBAClC,OAAO,EAAE;wBACP,MAAM,EAAE,MAAM;wBACd,QAAQ,EAAE;4BACR,WAAW;4BACX,MAAM;yBACP;qBACF;iBACF;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,uBAAuB;QAC/B,aAAa,EAAE,qGAAqG;QACpH,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,YAAY;gBACpB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;SACF;QACD,SAAS,EAAE;YACT,MAAM,EAAE,SAAS;YACjB,UAAU,EAAE,IAAI;YAChB,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE;gBACR;oBACE,MAAM,EAAE,gBAAgB;oBACxB,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,SAAS;oBACjB,OAAO,EAAE;wBACP,MAAM,EAAE,SAAS;qBAClB;iBACF;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,aAAa;QACrB,aAAa,EAAE,8DAA8D;QAC7E,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,YAAY;gBACpB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;SACF;QACD,SAAS,EAAE;YACT,MAAM,EAAE,MAAM;YACd,UAAU,EAAE,KAAK;YACjB,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,EAAE;SACb;KACF;IACD;QACE,MAAM,EAAE,kBAAkB;QAC1B,aAAa,EAAE,gLAAgL;QAC/L,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,UAAU;gBAClB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;SACF;QACD,SAAS,EAAE;YACT,MAAM,EAAE,SAAS;YACjB,UAAU,EAAE,IAAI;YAChB,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE;gBACR;oBACE,MAAM,EAAE,OAAO;oBACf,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,QAAQ;oBAChB,OAAO,EAAE;wBACP,MAAM,EAAE,QAAQ;qBACjB;iBACF;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,cAAc;QACtB,aAAa,EAAE,+DAA+D;QAC9E,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,gBAAgB;gBACxB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,eAAe;QACvB,aAAa,EAAE,4EAA4E;QAC3F,QAAQ,EAAE,EAAE;KACb;IACD;QACE,MAAM,EAAE,iBAAiB;QACzB,aAAa,EAAE,kRAAkR;QACjS,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,UAAU;gBAClB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;YACD;gBACE,MAAM,EAAE,WAAW;gBACnB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,qBAAqB;QAC7B,aAAa,EAAE,+FAA+F;QAC9G,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,UAAU;gBAClB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,aAAa;QACrB,aAAa,EAAE,qGAAqG;QACpH,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,QAAQ;gBAChB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;YACD;gBACE,MAAM,EAAE,UAAU;gBAClB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,iBAAiB;QACzB,aAAa,EAAE,0HAA0H;QACzI,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,UAAU;gBAClB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;SACF;QACD,SAAS,EAAE;YACT,MAAM,EAAE,SAAS;YACjB,UAAU,EAAE,IAAI;YAChB,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE;gBACR;oBACE,MAAM,EAAE,SAAS;oBACjB,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,SAAS;oBACjB,OAAO,EAAE;wBACP,MAAM,EAAE,SAAS;qBAClB;iBACF;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,eAAe;QACvB,aAAa,EAAE,+FAA+F;QAC9G,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,UAAU;gBAClB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;YACD;gBACE,MAAM,EAAE,OAAO;gBACf,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,MAAM,EAAE,MAAM;iBACf;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,gBAAgB;QACxB,aAAa,EAAE,yNAAyN;QACxO,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,OAAO;gBACf,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,2FAA2F;gBACnG,OAAO,EAAE;oBACP,MAAM,EAAE,MAAM;iBACf;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,aAAa;QACrB,aAAa,EAAE,qJAAqJ;QACpK,QAAQ,EAAE,EAAE;QACZ,SAAS,EAAE;YACT,MAAM,EAAE,SAAS;YACjB,UAAU,EAAE,KAAK;YACjB,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE;gBACR;oBACE,MAAM,EAAE,UAAU;oBAClB,UAAU,EAAE,KAAK;oBACjB,MAAM,EAAE,QAAQ;oBAChB,OAAO,EAAE;wBACP,MAAM,EAAE,QAAQ;qBACjB;iBACF;gBACD;oBACE,MAAM,EAAE,MAAM;oBACd,UAAU,EAAE,KAAK;oBACjB,MAAM,EAAE,QAAQ;oBAChB,OAAO,EAAE;wBACP,MAAM,EAAE,QAAQ;qBACjB;iBACF;gBACD;oBACE,MAAM,EAAE,OAAO;oBACf,UAAU,EAAE,KAAK;oBACjB,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE;wBACP,MAAM,EAAE,MAAM;qBACf;iBACF;gBACD;oBACE,MAAM,EAAE,iBAAiB;oBACzB,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,QAAQ;oBAChB,OAAO,EAAE;wBACP,MAAM,EAAE,QAAQ;qBACjB;iBACF;gBACD;oBACE,MAAM,EAAE,aAAa;oBACrB,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,QAAQ;oBAChB,OAAO,EAAE;wBACP,MAAM,EAAE,QAAQ;qBACjB;iBACF;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,gBAAgB;QACxB,aAAa,EAAE,qIAAqI;QACpJ,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,YAAY;gBACpB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;SACF;QACD,SAAS,EAAE;YACT,MAAM,EAAE,OAAO;YACf,UAAU,EAAE,KAAK;YACjB,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE;gBACR;oBACE,MAAM,EAAE,MAAM;oBACd,UAAU,EAAE,KAAK;oBACjB,MAAM,EAAE,+EAA+E;oBACvF,OAAO,EAAE;wBACP,MAAM,EAAE,MAAM;wBACd,QAAQ,EAAE;4BACR,aAAa;4BACb,WAAW;4BACX,aAAa;4BACb,WAAW;4BACX,OAAO;yBACR;qBACF;iBACF;gBACD;oBACE,MAAM,EAAE,MAAM;oBACd,UAAU,EAAE,KAAK;oBACjB,MAAM,EAAE,QAAQ;oBAChB,OAAO,EAAE;wBACP,MAAM,EAAE,QAAQ;qBACjB;iBACF;gBACD;oBACE,MAAM,EAAE,MAAM;oBACd,UAAU,EAAE,KAAK;oBACjB,MAAM,EAAE,QAAQ;oBAChB,OAAO,EAAE;wBACP,MAAM,EAAE,QAAQ;qBACjB;oBACD,aAAa,EAAE,6BAA6B;iBAC7C;gBACD;oBACE,MAAM,EAAE,SAAS;oBACjB,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,8EAA8E;oBACtF,OAAO,EAAE;wBACP,MAAM,EAAE,MAAM;qBACf;oBACD,aAAa,EAAE,qJAAqJ;iBACrK;gBACD;oBACE,MAAM,EAAE,SAAS;oBACjB,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,SAAS;oBACjB,OAAO,EAAE;wBACP,MAAM,EAAE,SAAS;qBAClB;oBACD,aAAa,EAAE,+BAA+B;iBAC/C;gBACD;oBACE,MAAM,EAAE,YAAY;oBACpB,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,QAAQ;oBAChB,OAAO,EAAE;wBACP,MAAM,EAAE,QAAQ;qBACjB;iBACF;gBACD;oBACE,MAAM,EAAE,aAAa;oBACrB,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,QAAQ;oBAChB,OAAO,EAAE;wBACP,MAAM,EAAE,QAAQ;qBACjB;iBACF;gBACD;oBACE,MAAM,EAAE,QAAQ;oBAChB,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,4BAA4B;oBACpC,OAAO,EAAE;wBACP,MAAM,EAAE,MAAM;qBACf;oBACD,aAAa,EAAE,8CAA8C;iBAC9D;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,WAAW;QACnB,aAAa,EAAE,iQAAiQ;QAChR,QAAQ,EAAE,EAAE;QACZ,SAAS,EAAE;YACT,MAAM,EAAE,SAAS;YACjB,UAAU,EAAE,IAAI;YAChB,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE;gBACR;oBACE,MAAM,EAAE,UAAU;oBAClB,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,QAAQ;oBAChB,OAAO,EAAE;wBACP,MAAM,EAAE,QAAQ;qBACjB;iBACF;gBACD;oBACE,MAAM,EAAE,MAAM;oBACd,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,QAAQ;oBAChB,OAAO,EAAE;wBACP,MAAM,EAAE,QAAQ;qBACjB;iBACF;gBACD;oBACE,MAAM,EAAE,UAAU;oBAClB,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,QAAQ;oBAChB,OAAO,EAAE;wBACP,MAAM,EAAE,QAAQ;qBACjB;iBACF;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,gBAAgB;QACxB,aAAa,EAAE,+GAA+G;QAC9H,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,UAAU;gBAClB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;YACD;gBACE,MAAM,EAAE,YAAY;gBACpB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,aAAa;QACrB,aAAa,EAAE,iDAAiD;QAChE,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,SAAS;gBACjB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,eAAe;QACvB,aAAa,EAAE,4EAA4E;QAC3F,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,UAAU;gBAClB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;YACD;gBACE,MAAM,EAAE,WAAW;gBACnB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,YAAY;QACpB,aAAa,EAAE,kEAAkE;QACjF,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,cAAc;gBACtB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,cAAc;QACtB,aAAa,EAAE,yMAAyM;QACxN,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,KAAK;gBACb,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;YACD;gBACE,MAAM,EAAE,SAAS;gBACjB,UAAU,EAAE,IAAI;gBAChB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,mBAAmB;QAC3B,aAAa,EAAE,wJAAwJ;QACvK,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,UAAU;gBAClB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;YACD;gBACE,MAAM,EAAE,YAAY;gBACpB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,cAAc;QACtB,aAAa,EAAE,4FAA4F;QAC3G,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,UAAU;gBAClB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;YACD;gBACE,MAAM,EAAE,YAAY;gBACpB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;SACF;QACD,SAAS,EAAE;YACT,MAAM,EAAE,SAAS;YACjB,UAAU,EAAE,KAAK;YACjB,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE;gBACR;oBACE,MAAM,EAAE,MAAM;oBACd,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,QAAQ;oBAChB,OAAO,EAAE;wBACP,MAAM,EAAE,QAAQ;qBACjB;iBACF;gBACD;oBACE,MAAM,EAAE,YAAY;oBACpB,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,sCAAsC;oBAC9C,OAAO,EAAE;wBACP,MAAM,EAAE,MAAM;wBACd,QAAQ,EAAE;4BACR,OAAO;4BACP,QAAQ;4BACR,SAAS;yBACV;qBACF;iBACF;gBACD;oBACE,MAAM,EAAE,WAAW;oBACnB,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,QAAQ;oBAChB,OAAO,EAAE;wBACP,MAAM,EAAE,QAAQ;qBACjB;iBACF;gBACD;oBACE,MAAM,EAAE,kBAAkB;oBAC1B,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,QAAQ;oBAChB,OAAO,EAAE;wBACP,MAAM,EAAE,QAAQ;qBACjB;iBACF;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,aAAa;QACrB,aAAa,EAAE,gEAAgE;QAC/E,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,UAAU;gBAClB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;YACD;gBACE,MAAM,EAAE,WAAW;gBACnB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;SACF;QACD,SAAS,EAAE;YACT,MAAM,EAAE,SAAS;YACjB,UAAU,EAAE,KAAK;YACjB,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE;gBACR;oBACE,MAAM,EAAE,MAAM;oBACd,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,QAAQ;oBAChB,OAAO,EAAE;wBACP,MAAM,EAAE,QAAQ;qBACjB;iBACF;gBACD;oBACE,MAAM,EAAE,SAAS;oBACjB,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,SAAS;oBACjB,OAAO,EAAE;wBACP,MAAM,EAAE,SAAS;qBAClB;iBACF;gBACD;oBACE,MAAM,EAAE,gBAAgB;oBACxB,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,QAAQ;oBAChB,OAAO,EAAE;wBACP,MAAM,EAAE,QAAQ;qBACjB;iBACF;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,mBAAmB;QAC3B,aAAa,EAAE,8EAA8E;QAC7F,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,WAAW;gBACnB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,kBAAkB;QAC1B,aAAa,EAAE,sFAAsF;QACrG,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,YAAY;gBACpB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,WAAW;QACnB,aAAa,EAAE,wFAAwF;QACvG,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,YAAY;gBACpB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,WAAW;QACnB,aAAa,EAAE,+JAA+J;QAC9K,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,YAAY;gBACpB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;YACD;gBACE,MAAM,EAAE,MAAM;gBACd,UAAU,EAAE,IAAI;gBAChB,MAAM,EAAE,YAAY;gBACpB,OAAO,EAAE;oBACP,MAAM,EAAE,MAAM;oBACd,QAAQ,EAAE;wBACR,eAAe;wBACf,UAAU;qBACX;iBACF;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,iBAAiB;QACzB,aAAa,EAAE,4XAA4X;QAC3Y,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,YAAY;gBACpB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;YACD;gBACE,MAAM,EAAE,QAAQ;gBAChB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;SACF;QACD,SAAS,EAAE;YACT,MAAM,EAAE,SAAS;YACjB,UAAU,EAAE,KAAK;YACjB,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE;gBACR;oBACE,MAAM,EAAE,OAAO;oBACf,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,iBAAiB;oBACzB,OAAO,EAAE;wBACP,MAAM,EAAE,QAAQ;qBACjB;iBACF;gBACD;oBACE,MAAM,EAAE,QAAQ;oBAChB,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,wBAAwB;oBAChC,OAAO,EAAE;wBACP,MAAM,EAAE,MAAM;qBACf;oBACD,aAAa,EAAE,0BAA0B;iBAC1C;gBACD;oBACE,MAAM,EAAE,OAAO;oBACf,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,wBAAwB;oBAChC,OAAO,EAAE;wBACP,MAAM,EAAE,MAAM;qBACf;oBACD,aAAa,EAAE,uBAAuB;iBACvC;gBACD;oBACE,MAAM,EAAE,SAAS;oBACjB,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,wBAAwB;oBAChC,OAAO,EAAE;wBACP,MAAM,EAAE,MAAM;qBACf;oBACD,aAAa,EAAE,iDAAiD;iBACjE;gBACD;oBACE,MAAM,EAAE,UAAU;oBAClB,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,QAAQ;oBAChB,OAAO,EAAE;wBACP,MAAM,EAAE,QAAQ;qBACjB;iBACF;gBACD;oBACE,MAAM,EAAE,QAAQ;oBAChB,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,SAAS;oBACjB,OAAO,EAAE;wBACP,MAAM,EAAE,SAAS;qBAClB;iBACF;gBACD;oBACE,MAAM,EAAE,QAAQ;oBAChB,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,4BAA4B;oBACpC,OAAO,EAAE;wBACP,MAAM,EAAE,MAAM;qBACf;iBACF;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,gBAAgB;QACxB,aAAa,EAAE,gHAAgH;QAC/H,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,UAAU;gBAClB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,cAAc;QACtB,aAAa,EAAE,kJAAkJ;QACjK,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,UAAU;gBAClB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;SACF;QACD,SAAS,EAAE;YACT,MAAM,EAAE,SAAS;YACjB,UAAU,EAAE,IAAI;YAChB,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE;gBACR;oBACE,MAAM,EAAE,OAAO;oBACf,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,QAAQ;oBAChB,OAAO,EAAE;wBACP,MAAM,EAAE,QAAQ;qBACjB;iBACF;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,gBAAgB;QACxB,aAAa,EAAE,2LAA2L;QAC1M,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,YAAY;gBACpB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;YACD;gBACE,MAAM,EAAE,SAAS;gBACjB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE;oBACP,MAAM,EAAE,SAAS;iBAClB;aACF;YACD;gBACE,MAAM,EAAE,OAAO;gBACf,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,MAAM,EAAE,MAAM;iBACf;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,QAAQ;QAChB,aAAa,EAAE,qEAAqE;QACpF,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,UAAU;gBAClB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,aAAa;QACrB,aAAa,EAAE,+GAA+G;QAC9H,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,YAAY;gBACpB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,iBAAiB;QACzB,aAAa,EAAE,+PAA+P;QAC9Q,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,YAAY;gBACpB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;SACF;QACD,SAAS,EAAE;YACT,MAAM,EAAE,SAAS;YACjB,UAAU,EAAE,KAAK;YACjB,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE;gBACR;oBACE,MAAM,EAAE,QAAQ;oBAChB,UAAU,EAAE,KAAK;oBACjB,MAAM,EAAE,oBAAoB;oBAC5B,OAAO,EAAE;wBACP,MAAM,EAAE,MAAM;wBACd,QAAQ,EAAE;4BACR,MAAM;4BACN,KAAK;yBACN;qBACF;iBACF;gBACD;oBACE,MAAM,EAAE,MAAM;oBACd,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,QAAQ;oBAChB,OAAO,EAAE;wBACP,MAAM,EAAE,QAAQ;qBACjB;iBACF;gBACD;oBACE,MAAM,EAAE,MAAM;oBACd,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,QAAQ;oBAChB,OAAO,EAAE;wBACP,MAAM,EAAE,QAAQ;qBACjB;iBACF;gBACD;oBACE,MAAM,EAAE,YAAY;oBACpB,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,QAAQ;oBAChB,OAAO,EAAE;wBACP,MAAM,EAAE,QAAQ;qBACjB;iBACF;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,YAAY;QACpB,aAAa,EAAE,wEAAwE;QACvF,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,YAAY;gBACpB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,iBAAiB;QACzB,aAAa,EAAE,+EAA+E;QAC9F,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,UAAU;gBAClB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,aAAa;QACrB,aAAa,EAAE,+DAA+D;QAC9E,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,gBAAgB;gBACxB,UAAU,EAAE,IAAI;gBAChB,MAAM,EAAE,kDAAkD;gBAC1D,OAAO,EAAE;oBACP,MAAM,EAAE,MAAM;oBACd,QAAQ,EAAE;wBACR,KAAK;wBACL,YAAY;wBACZ,QAAQ;wBACR,MAAM;qBACP;iBACF;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,OAAO;QACf,aAAa,EAAE,8HAA8H;QAC7I,QAAQ,EAAE,EAAE;QACZ,SAAS,EAAE;YACT,MAAM,EAAE,SAAS;YACjB,UAAU,EAAE,IAAI;YAChB,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE;gBACR;oBACE,MAAM,EAAE,WAAW;oBACnB,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,QAAQ;oBAChB,OAAO,EAAE;wBACP,MAAM,EAAE,QAAQ;qBACjB;iBACF;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,QAAQ;QAChB,aAAa,EAAE,oRAAoR;QACnS,QAAQ,EAAE,EAAE;KACb;IACD;QACE,MAAM,EAAE,uBAAuB;QAC/B,aAAa,EAAE,wHAAwH;QACvI,QAAQ,EAAE,EAAE;KACb;IACD;QACE,MAAM,EAAE,UAAU;QAClB,aAAa,EAAE,6CAA6C;QAC5D,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,UAAU;gBAClB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,eAAe;QACvB,aAAa,EAAE,4EAA4E;QAC3F,QAAQ,EAAE,EAAE;QACZ,SAAS,EAAE;YACT,MAAM,EAAE,SAAS;YACjB,UAAU,EAAE,IAAI;YAChB,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE;gBACR;oBACE,MAAM,EAAE,YAAY;oBACpB,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,SAAS;oBACjB,OAAO,EAAE;wBACP,MAAM,EAAE,SAAS;qBAClB;iBACF;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,oBAAoB;QAC5B,aAAa,EAAE,+GAA+G;QAC9H,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,YAAY;gBACpB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;YACD;gBACE,MAAM,EAAE,QAAQ;gBAChB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;YACD;gBACE,MAAM,EAAE,OAAO;gBACf,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,uEAAuE;gBAC/E,OAAO,EAAE;oBACP,MAAM,EAAE,MAAM;oBACd,QAAQ,EAAE;wBACR,YAAY;wBACZ,UAAU;wBACV,eAAe;wBACf,eAAe;qBAChB;iBACF;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,oBAAoB;QAC5B,aAAa,EAAE,gOAAgO;QAC/O,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,UAAU;gBAClB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,cAAc;QACtB,aAAa,EAAE,mSAAmS;QAClT,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,UAAU;gBAClB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;SACF;QACD,SAAS,EAAE;YACT,MAAM,EAAE,SAAS;YACjB,UAAU,EAAE,IAAI;YAChB,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE;gBACR;oBACE,MAAM,EAAE,MAAM;oBACd,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,QAAQ;oBAChB,OAAO,EAAE;wBACP,MAAM,EAAE,QAAQ;qBACjB;iBACF;gBACD;oBACE,MAAM,EAAE,OAAO;oBACf,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,QAAQ;oBAChB,OAAO,EAAE;wBACP,MAAM,EAAE,QAAQ;qBACjB;iBACF;gBACD;oBACE,MAAM,EAAE,eAAe;oBACvB,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE;wBACP,MAAM,EAAE,MAAM;qBACf;iBACF;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,mBAAmB;QAC3B,aAAa,EAAE,iLAAiL;QAChM,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,UAAU;gBAClB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,gBAAgB;QACxB,aAAa,EAAE,oEAAoE;QACnF,QAAQ,EAAE,EAAE;KACb;IACD;QACE,MAAM,EAAE,eAAe;QACvB,aAAa,EAAE,mGAAmG;QAClH,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,UAAU;gBAClB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,WAAW;QACnB,aAAa,EAAE,uEAAuE;QACtF,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,YAAY;gBACpB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,UAAU;QAClB,aAAa,EAAE,2IAA2I;QAC1J,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,YAAY;gBACpB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,aAAa;QACrB,aAAa,EAAE,6NAA6N;QAC5O,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,YAAY;gBACpB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;SACF;QACD,SAAS,EAAE;YACT,MAAM,EAAE,SAAS;YACjB,UAAU,EAAE,IAAI;YAChB,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE;gBACR;oBACE,MAAM,EAAE,WAAW;oBACnB,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,SAAS;oBACjB,OAAO,EAAE;wBACP,MAAM,EAAE,SAAS;qBAClB;iBACF;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,eAAe;QACvB,aAAa,EAAE,uGAAuG;QACtH,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,YAAY;gBACpB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,aAAa;QACrB,aAAa,EAAE,uEAAuE;QACtF,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,WAAW;gBACnB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,YAAY;QACpB,aAAa,EAAE,yFAAyF;QACxG,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,WAAW;gBACnB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,aAAa;QACrB,aAAa,EAAE,oEAAoE;QACnF,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,QAAQ;gBAChB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;YACD;gBACE,MAAM,EAAE,OAAO;gBACf,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,mCAAmC;gBAC3C,OAAO,EAAE;oBACP,MAAM,EAAE,MAAM;iBACf;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,QAAQ;QAChB,aAAa,EAAE,iLAAiL;QAChM,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,YAAY;gBACpB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,gBAAgB;QACxB,aAAa,EAAE,gIAAgI;QAC/I,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,YAAY;gBACpB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;SACF;QACD,SAAS,EAAE;YACT,MAAM,EAAE,OAAO;YACf,UAAU,EAAE,KAAK;YACjB,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE;gBACR;oBACE,MAAM,EAAE,YAAY;oBACpB,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,QAAQ;oBAChB,OAAO,EAAE;wBACP,MAAM,EAAE,QAAQ;qBACjB;iBACF;gBACD;oBACE,MAAM,EAAE,OAAO;oBACf,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,UAAU;oBAClB,OAAO,EAAE;wBACP,MAAM,EAAE,SAAS;qBAClB;iBACF;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,aAAa;QACrB,aAAa,EAAE,4GAA4G;QAC3H,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,QAAQ;gBAChB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;YACD;gBACE,MAAM,EAAE,MAAM;gBACd,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,eAAe;QACvB,aAAa,EAAE,6NAA6N;QAC5O,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,YAAY;gBACpB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;YACD;gBACE,MAAM,EAAE,MAAM;gBACd,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,SAAS;gBACjB,OAAO,EAAE;oBACP,MAAM,EAAE,SAAS;iBAClB;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,oBAAoB;QAC5B,aAAa,EAAE,8KAA8K;QAC7L,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,YAAY;gBACpB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;YACD;gBACE,MAAM,EAAE,cAAc;gBACtB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;SACF;QACD,SAAS,EAAE;YACT,MAAM,EAAE,SAAS;YACjB,UAAU,EAAE,KAAK;YACjB,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE;gBACR;oBACE,MAAM,EAAE,QAAQ;oBAChB,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,SAAS;oBACjB,OAAO,EAAE;wBACP,MAAM,EAAE,SAAS;qBAClB;iBACF;gBACD;oBACE,MAAM,EAAE,QAAQ;oBAChB,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,SAAS;oBACjB,OAAO,EAAE;wBACP,MAAM,EAAE,SAAS;qBAClB;iBACF;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,iBAAiB;QACzB,aAAa,EAAE,gMAAgM;QAC/M,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,YAAY;gBACpB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;YACD;gBACE,MAAM,EAAE,QAAQ;gBAChB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;SACF;QACD,SAAS,EAAE;YACT,MAAM,EAAE,SAAS;YACjB,UAAU,EAAE,KAAK;YACjB,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE;gBACR;oBACE,MAAM,EAAE,MAAM;oBACd,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE;wBACP,MAAM,EAAE,MAAM;qBACf;iBACF;gBACD;oBACE,MAAM,EAAE,OAAO;oBACf,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE;wBACP,MAAM,EAAE,MAAM;qBACf;iBACF;gBACD;oBACE,MAAM,EAAE,kBAAkB;oBAC1B,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,QAAQ;oBAChB,OAAO,EAAE;wBACP,MAAM,EAAE,QAAQ;qBACjB;iBACF;gBACD;oBACE,MAAM,EAAE,UAAU;oBAClB,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,QAAQ;oBAChB,OAAO,EAAE;wBACP,MAAM,EAAE,QAAQ;qBACjB;iBACF;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,UAAU;QAClB,aAAa,EAAE,6FAA6F;QAC5G,QAAQ,EAAE,EAAE;KACb;IACD;QACE,MAAM,EAAE,iBAAiB;QACzB,aAAa,EAAE,iDAAiD;QAChE,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,YAAY;gBACpB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;YACD;gBACE,MAAM,EAAE,OAAO;gBACf,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,kCAAkC;gBAC1C,OAAO,EAAE;oBACP,MAAM,EAAE,MAAM;iBACf;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,kBAAkB;QAC1B,aAAa,EAAE,+EAA+E;QAC9F,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,YAAY;gBACpB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,mBAAmB;QAC3B,aAAa,EAAE,yKAAyK;QACxL,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,YAAY;gBACpB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,kBAAkB;QAC1B,aAAa,EAAE,+MAA+M;QAC9N,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,YAAY;gBACpB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;SACF;QACD,SAAS,EAAE;YACT,MAAM,EAAE,SAAS;YACjB,UAAU,EAAE,IAAI;YAChB,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE;gBACR;oBACE,MAAM,EAAE,iBAAiB;oBACzB,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,SAAS;oBACjB,OAAO,EAAE;wBACP,MAAM,EAAE,SAAS;qBAClB;iBACF;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,cAAc;QACtB,aAAa,EAAE,yLAAyL;QACxM,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,YAAY;gBACpB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;YACD;gBACE,MAAM,EAAE,WAAW;gBACnB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,wBAAwB;gBAChC,OAAO,EAAE;oBACP,MAAM,EAAE,MAAM;iBACf;aACF;SACF;QACD,SAAS,EAAE;YACT,MAAM,EAAE,SAAS;YACjB,UAAU,EAAE,IAAI;YAChB,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE;gBACR;oBACE,MAAM,EAAE,MAAM;oBACd,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,YAAY;oBACpB,OAAO,EAAE;wBACP,MAAM,EAAE,MAAM;wBACd,QAAQ,EAAE;4BACR,eAAe;4BACf,UAAU;yBACX;qBACF;iBACF;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,gBAAgB;QACxB,aAAa,EAAE,4GAA4G;QAC3H,QAAQ,EAAE,EAAE;QACZ,SAAS,EAAE;YACT,MAAM,EAAE,SAAS;YACjB,UAAU,EAAE,IAAI;YAChB,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE;gBACR;oBACE,MAAM,EAAE,UAAU;oBAClB,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,QAAQ;oBAChB,OAAO,EAAE;wBACP,MAAM,EAAE,QAAQ;qBACjB;iBACF;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,gBAAgB;QACxB,aAAa,EAAE,mGAAmG;QAClH,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,YAAY;gBACpB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;SACF;QACD,SAAS,EAAE;YACT,MAAM,EAAE,OAAO;YACf,UAAU,EAAE,KAAK;YACjB,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE;gBACR;oBACE,MAAM,EAAE,MAAM;oBACd,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,QAAQ;oBAChB,OAAO,EAAE;wBACP,MAAM,EAAE,QAAQ;qBACjB;iBACF;gBACD;oBACE,MAAM,EAAE,aAAa;oBACrB,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,QAAQ;oBAChB,OAAO,EAAE;wBACP,MAAM,EAAE,QAAQ;qBACjB;oBACD,aAAa,EAAE,uDAAuD;iBACvE;gBACD;oBACE,MAAM,EAAE,SAAS;oBACjB,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,QAAQ;oBAChB,OAAO,EAAE;wBACP,MAAM,EAAE,QAAQ;qBACjB;oBACD,aAAa,EAAE,6CAA6C;iBAC7D;gBACD;oBACE,MAAM,EAAE,KAAK;oBACb,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,QAAQ;oBAChB,OAAO,EAAE;wBACP,MAAM,EAAE,QAAQ;qBACjB;oBACD,aAAa,EAAE,0BAA0B;iBAC1C;gBACD;oBACE,MAAM,EAAE,YAAY;oBACpB,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,sCAAsC;oBAC9C,OAAO,EAAE;wBACP,MAAM,EAAE,MAAM;wBACd,QAAQ,EAAE;4BACR,OAAO;4BACP,QAAQ;4BACR,SAAS;yBACV;qBACF;iBACF;gBACD;oBACE,MAAM,EAAE,UAAU;oBAClB,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,4BAA4B;oBACpC,OAAO,EAAE;wBACP,MAAM,EAAE,MAAM;qBACf;iBACF;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,cAAc;QACtB,aAAa,EAAE,2QAA2Q;QAC1R,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,UAAU;gBAClB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;SACF;QACD,SAAS,EAAE;YACT,MAAM,EAAE,SAAS;YACjB,UAAU,EAAE,KAAK;YACjB,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE;gBACR;oBACE,MAAM,EAAE,UAAU;oBAClB,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,QAAQ;oBAChB,OAAO,EAAE;wBACP,MAAM,EAAE,QAAQ;qBACjB;iBACF;gBACD;oBACE,MAAM,EAAE,WAAW;oBACnB,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,QAAQ;oBAChB,OAAO,EAAE;wBACP,MAAM,EAAE,QAAQ;qBACjB;iBACF;gBACD;oBACE,MAAM,EAAE,SAAS;oBACjB,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,QAAQ;oBAChB,OAAO,EAAE;wBACP,MAAM,EAAE,QAAQ;qBACjB;iBACF;gBACD;oBACE,MAAM,EAAE,UAAU;oBAClB,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,4BAA4B;oBACpC,OAAO,EAAE;wBACP,MAAM,EAAE,MAAM;qBACf;iBACF;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,iBAAiB;QACzB,aAAa,EAAE,2NAA2N;QAC1O,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,UAAU;gBAClB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;YACD;gBACE,MAAM,EAAE,QAAQ;gBAChB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;SACF;QACD,SAAS,EAAE;YACT,MAAM,EAAE,SAAS;YACjB,UAAU,EAAE,KAAK;YACjB,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE;gBACR;oBACE,MAAM,EAAE,UAAU;oBAClB,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,QAAQ;oBAChB,OAAO,EAAE;wBACP,MAAM,EAAE,QAAQ;qBACjB;iBACF;gBACD;oBACE,MAAM,EAAE,QAAQ;oBAChB,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,QAAQ;oBAChB,OAAO,EAAE;wBACP,MAAM,EAAE,QAAQ;qBACjB;iBACF;gBACD;oBACE,MAAM,EAAE,UAAU;oBAClB,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,QAAQ;oBAChB,OAAO,EAAE;wBACP,MAAM,EAAE,QAAQ;qBACjB;iBACF;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,UAAU;QAClB,aAAa,EAAE,sGAAsG;QACrH,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,QAAQ;gBAChB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,QAAQ;QAChB,aAAa,EAAE,8FAA8F;QAC7G,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,UAAU;gBAClB,UAAU,EAAE,IAAI;gBAChB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,MAAM,EAAE,QAAQ;iBACjB;aACF;SACF;KACF;CACF,CAAC;AAEF,oGAAoG;AACpG,MAAM,CAAC,MAAM,QAAQ,GAAsB,CAAC,UAAU,EAAC,cAAc,CAAC,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
export interface CliConfig {
|
|
2
|
+
/** The site commands work on when none is given: the last one logged in to. */
|
|
3
|
+
site?: string;
|
|
4
|
+
}
|
|
5
|
+
export interface SiteRecord {
|
|
6
|
+
/** The site's base URL, as given to `login`. */
|
|
7
|
+
url: string;
|
|
8
|
+
/** The profile commands use on this site unless told: the last one logged in with. */
|
|
9
|
+
default?: string;
|
|
10
|
+
/** A profile folder of the person's own, given to `login --profile`: used when there's no default. */
|
|
11
|
+
profileDir?: string;
|
|
12
|
+
}
|
|
13
|
+
/** The command's home: `MOODLE_DRIVER_HOME`, else `~/.moodle-driver` on every system. */
|
|
14
|
+
export declare function cliHome(env: NodeJS.ProcessEnv, home?: string): string;
|
|
15
|
+
export declare const loadConfig: (home: string) => CliConfig;
|
|
16
|
+
export declare const saveConfig: (home: string, config: CliConfig) => void;
|
|
17
|
+
export declare const loadSite: (home: string, site: string) => SiteRecord | undefined;
|
|
18
|
+
export declare const saveSite: (home: string, record: SiteRecord) => void;
|
|
19
|
+
/**
|
|
20
|
+
* The profile folder a command uses on a site: `--profile`, else the one named by `--as`, else the
|
|
21
|
+
* site's default, else the folder given to `login --profile`; `undefined` when the site has none yet.
|
|
22
|
+
*/
|
|
23
|
+
export declare function profileFor(home: string, site: string, { profile, as }: {
|
|
24
|
+
profile?: string;
|
|
25
|
+
as?: string;
|
|
26
|
+
}): {
|
|
27
|
+
profileDir: string;
|
|
28
|
+
name?: string;
|
|
29
|
+
} | undefined;
|
|
30
|
+
/** A folder to log in with before the person's username names it (see `nameProfile`), made now. */
|
|
31
|
+
export declare function pendingProfile(home: string, site: string): string;
|
|
32
|
+
/** Gives the profile logged in with in `pending` its name: the person's Moodle username. */
|
|
33
|
+
export declare function nameProfile(home: string, site: string, pending: string, username: string): string;
|
|
34
|
+
export interface SiteProfile {
|
|
35
|
+
site: string;
|
|
36
|
+
/** The profile's name, or `--profile` for a folder of the person's own. */
|
|
37
|
+
profile: string;
|
|
38
|
+
default: boolean;
|
|
39
|
+
/** The session file is there: Moodle may still have ended the session. */
|
|
40
|
+
session: boolean;
|
|
41
|
+
path: string;
|
|
42
|
+
}
|
|
43
|
+
/** Every site in the home with each of its profiles. */
|
|
44
|
+
export declare function listSites(home: string): SiteProfile[];
|
|
45
|
+
/** Deletes a site's folder, or one of its profiles; says what went. */
|
|
46
|
+
export declare function forgetSite(home: string, site: string, as?: string): string[];
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
// What the command remembers between runs, in its home (ADR-013): `config.json` with the default site,
|
|
2
|
+
// and a folder per site with its `site.json` (its URL and default profile) and its named browser profiles.
|
|
3
|
+
import { existsSync, mkdirSync, readFileSync, readdirSync, renameSync, rmSync, writeFileSync } from "node:fs";
|
|
4
|
+
import os from "node:os";
|
|
5
|
+
import path from "node:path";
|
|
6
|
+
import { defaultHome, profileName, siteDir, siteProfileDir } from "../home.js";
|
|
7
|
+
/** The command's home: `MOODLE_DRIVER_HOME`, else `~/.moodle-driver` on every system. */
|
|
8
|
+
export function cliHome(env, home = os.homedir()) {
|
|
9
|
+
return env.MOODLE_DRIVER_HOME || defaultHome(home);
|
|
10
|
+
}
|
|
11
|
+
function readJson(file) {
|
|
12
|
+
try {
|
|
13
|
+
return JSON.parse(readFileSync(file, "utf8"));
|
|
14
|
+
}
|
|
15
|
+
catch {
|
|
16
|
+
return undefined;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
function writeJson(file, value) {
|
|
20
|
+
mkdirSync(path.dirname(file), { recursive: true });
|
|
21
|
+
writeFileSync(file, `${JSON.stringify(value, null, 2)}\n`, { mode: 0o600 });
|
|
22
|
+
}
|
|
23
|
+
export const loadConfig = (home) => readJson(path.join(home, "config.json")) ?? {};
|
|
24
|
+
export const saveConfig = (home, config) => writeJson(path.join(home, "config.json"), config);
|
|
25
|
+
export const loadSite = (home, site) => readJson(path.join(siteDir(site, home), "site.json"));
|
|
26
|
+
export const saveSite = (home, record) => writeJson(path.join(siteDir(record.url, home), "site.json"), record);
|
|
27
|
+
/**
|
|
28
|
+
* The profile folder a command uses on a site: `--profile`, else the one named by `--as`, else the
|
|
29
|
+
* site's default, else the folder given to `login --profile`; `undefined` when the site has none yet.
|
|
30
|
+
*/
|
|
31
|
+
export function profileFor(home, site, { profile, as }) {
|
|
32
|
+
if (profile)
|
|
33
|
+
return { profileDir: profile };
|
|
34
|
+
const record = loadSite(home, site);
|
|
35
|
+
const name = as ?? record?.default;
|
|
36
|
+
if (name)
|
|
37
|
+
return { profileDir: siteProfileDir(site, { as: name, home }), name };
|
|
38
|
+
if (record?.profileDir)
|
|
39
|
+
return { profileDir: record.profileDir };
|
|
40
|
+
return undefined;
|
|
41
|
+
}
|
|
42
|
+
/** A folder to log in with before the person's username names it (see `nameProfile`), made now. */
|
|
43
|
+
export function pendingProfile(home, site) {
|
|
44
|
+
const dir = path.join(siteDir(site, home), "profiles", `.login-${process.pid}`);
|
|
45
|
+
mkdirSync(dir, { recursive: true });
|
|
46
|
+
return dir;
|
|
47
|
+
}
|
|
48
|
+
/** Gives the profile logged in with in `pending` its name: the person's Moodle username. */
|
|
49
|
+
export function nameProfile(home, site, pending, username) {
|
|
50
|
+
const name = profileName(username);
|
|
51
|
+
const target = siteProfileDir(site, { as: name, home });
|
|
52
|
+
// The same username is the same account: its older profile gives way to the new session.
|
|
53
|
+
rmSync(target, { recursive: true, force: true });
|
|
54
|
+
renameSync(pending, target);
|
|
55
|
+
return name;
|
|
56
|
+
}
|
|
57
|
+
/** Every site in the home with each of its profiles. */
|
|
58
|
+
export function listSites(home) {
|
|
59
|
+
const config = loadConfig(home);
|
|
60
|
+
const sitesDir = path.join(home, "sites");
|
|
61
|
+
if (!existsSync(sitesDir))
|
|
62
|
+
return [];
|
|
63
|
+
const rows = [];
|
|
64
|
+
for (const folder of readdirSync(sitesDir).sort()) {
|
|
65
|
+
const record = readJson(path.join(sitesDir, folder, "site.json"));
|
|
66
|
+
if (!record)
|
|
67
|
+
continue;
|
|
68
|
+
const profilesDir = path.join(sitesDir, folder, "profiles");
|
|
69
|
+
const names = existsSync(profilesDir) ? readdirSync(profilesDir).filter((name) => !name.startsWith(".")).sort() : [];
|
|
70
|
+
const isDefaultSite = config.site === record.url;
|
|
71
|
+
const row = (profile, dir, isDefault) => ({
|
|
72
|
+
site: record.url,
|
|
73
|
+
profile,
|
|
74
|
+
default: isDefaultSite && isDefault,
|
|
75
|
+
session: existsSync(path.join(dir, "moodle-session.json")),
|
|
76
|
+
path: dir,
|
|
77
|
+
});
|
|
78
|
+
for (const name of names)
|
|
79
|
+
rows.push(row(name, siteProfileDir(record.url, { as: name, home }), record.default === name));
|
|
80
|
+
if (record.profileDir)
|
|
81
|
+
rows.push(row("--profile", record.profileDir, !record.default));
|
|
82
|
+
}
|
|
83
|
+
return rows;
|
|
84
|
+
}
|
|
85
|
+
/** Deletes a site's folder, or one of its profiles; says what went. */
|
|
86
|
+
export function forgetSite(home, site, as) {
|
|
87
|
+
const dir = siteDir(site, home);
|
|
88
|
+
if (!existsSync(dir))
|
|
89
|
+
return [];
|
|
90
|
+
if (as !== undefined) {
|
|
91
|
+
const profile = siteProfileDir(site, { as, home });
|
|
92
|
+
if (!existsSync(profile))
|
|
93
|
+
return [];
|
|
94
|
+
rmSync(profile, { recursive: true, force: true });
|
|
95
|
+
const record = loadSite(home, site);
|
|
96
|
+
if (record?.default === as)
|
|
97
|
+
saveSite(home, { ...record, default: undefined });
|
|
98
|
+
return [profile];
|
|
99
|
+
}
|
|
100
|
+
// A folder of the person's own (`--profile`) is outside: it stays theirs.
|
|
101
|
+
rmSync(dir, { recursive: true, force: true });
|
|
102
|
+
const config = loadConfig(home);
|
|
103
|
+
if (config.site && siteDir(config.site, home) === dir)
|
|
104
|
+
saveConfig(home, { ...config, site: undefined });
|
|
105
|
+
return [dir];
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/main.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// The `moodle` command's entry point (`bin` in package.json): every method of the Moodle object from a
|
|
3
|
+
// terminal (ADR-012). The library itself prints nothing and reads no environment; this program does.
|
|
4
|
+
import { readFileSync } from "node:fs";
|
|
5
|
+
import { createMoodle } from "../client.js";
|
|
6
|
+
import { cliHome } from "./config.js";
|
|
7
|
+
import { run } from "./run.js";
|
|
8
|
+
const { version } = JSON.parse(readFileSync(new URL("../../package.json", import.meta.url), "utf8"));
|
|
9
|
+
process.exitCode = await run(process.argv.slice(2), {
|
|
10
|
+
createMoodle,
|
|
11
|
+
stdout: (text) => process.stdout.write(`${text}\n`),
|
|
12
|
+
stderr: (text) => process.stderr.write(`${text}\n`),
|
|
13
|
+
env: process.env,
|
|
14
|
+
cwd: process.cwd(),
|
|
15
|
+
home: cliHome(process.env),
|
|
16
|
+
interactive: process.stdout.isTTY === true,
|
|
17
|
+
version,
|
|
18
|
+
});
|
|
19
|
+
//# sourceMappingURL=main.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":";AACA,uGAAuG;AACvG,qGAAqG;AACrG,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,oBAAoB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAwB,CAAC;AAE5H,OAAO,CAAC,QAAQ,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;IAClD,YAAY;IACZ,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC;IACnD,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC;IACnD,GAAG,EAAE,OAAO,CAAC,GAAG;IAChB,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;IAClB,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC;IAC1B,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI;IAC1C,OAAO;CACR,CAAC,CAAC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
// What a method returned, for a person at a terminal (tables and key-value lines) or for a script (JSON).
|
|
2
|
+
const MAX_CELL = 48;
|
|
3
|
+
const isPlainObject = (value) => typeof value === "object" && value !== null && !Array.isArray(value) && !(value instanceof Date);
|
|
4
|
+
const isScalar = (value) => value === null || value === undefined || ["string", "number", "boolean"].includes(typeof value) || value instanceof Date;
|
|
5
|
+
function short(text, max = MAX_CELL) {
|
|
6
|
+
const line = text.replace(/\s+/g, " ").trim();
|
|
7
|
+
return line.length > max ? `${line.slice(0, max - 1)}…` : line;
|
|
8
|
+
}
|
|
9
|
+
function scalarText(value) {
|
|
10
|
+
if (value === undefined || value === null)
|
|
11
|
+
return "";
|
|
12
|
+
if (value instanceof Date)
|
|
13
|
+
return value.toISOString();
|
|
14
|
+
if (Array.isArray(value))
|
|
15
|
+
return value.every(isScalar) ? value.map(scalarText).join(", ") : `[${value.length}]`;
|
|
16
|
+
if (isPlainObject(value))
|
|
17
|
+
return JSON.stringify(value);
|
|
18
|
+
return String(value);
|
|
19
|
+
}
|
|
20
|
+
/** Rows of objects as a table: a column per field, nested values summarized. */
|
|
21
|
+
function table(rows) {
|
|
22
|
+
const columns = [...new Set(rows.flatMap((row) => Object.keys(row)))];
|
|
23
|
+
const cells = rows.map((row) => columns.map((column) => short(scalarText(row[column]))));
|
|
24
|
+
const widths = columns.map((column, i) => Math.max(column.length, ...cells.map((row) => row[i].length)));
|
|
25
|
+
const line = (values) => values.map((value, i) => value.padEnd(widths[i])).join(" ").trimEnd();
|
|
26
|
+
return [line(columns), line(widths.map((w) => "-".repeat(w))), ...cells.map(line)].join("\n");
|
|
27
|
+
}
|
|
28
|
+
function keyValues(object) {
|
|
29
|
+
const entries = Object.entries(object).filter(([, value]) => value !== undefined);
|
|
30
|
+
const width = Math.max(0, ...entries.filter(([, v]) => !isNested(v)).map(([key]) => key.length));
|
|
31
|
+
const lines = [];
|
|
32
|
+
const blocks = [];
|
|
33
|
+
for (const [key, value] of entries) {
|
|
34
|
+
if (isNested(value))
|
|
35
|
+
blocks.push(`${key}:\n${indent(human(value))}`);
|
|
36
|
+
else
|
|
37
|
+
lines.push(`${key.padEnd(width)} ${short(scalarText(value), 100)}`);
|
|
38
|
+
}
|
|
39
|
+
return [...(lines.length > 0 ? [lines.join("\n")] : []), ...blocks].join("\n\n");
|
|
40
|
+
}
|
|
41
|
+
const isNested = (value) => (Array.isArray(value) && value.some((item) => !isScalar(item))) || (isPlainObject(value) && Object.values(value).some((v) => !isScalar(v)));
|
|
42
|
+
const indent = (text) => text.split("\n").map((line) => ` ${line}`).join("\n");
|
|
43
|
+
/** A value as a person reads it at a terminal. */
|
|
44
|
+
export function human(value) {
|
|
45
|
+
if (value === undefined || value === null)
|
|
46
|
+
return "";
|
|
47
|
+
if (isScalar(value))
|
|
48
|
+
return scalarText(value);
|
|
49
|
+
if (Array.isArray(value)) {
|
|
50
|
+
if (value.length === 0)
|
|
51
|
+
return "(none)";
|
|
52
|
+
if (value.every(isPlainObject))
|
|
53
|
+
return table(value);
|
|
54
|
+
return value.map((item) => (isScalar(item) ? scalarText(item) : human(item))).join("\n");
|
|
55
|
+
}
|
|
56
|
+
const object = value;
|
|
57
|
+
// A write says first what it did.
|
|
58
|
+
if (typeof object.changed === "string") {
|
|
59
|
+
const { changed, ...rest } = object;
|
|
60
|
+
const after = Object.keys(rest).length > 0 ? `\n\n${keyValues(rest)}` : "";
|
|
61
|
+
return `✔ ${changed}${after}`;
|
|
62
|
+
}
|
|
63
|
+
return keyValues(object);
|
|
64
|
+
}
|
|
65
|
+
/** What the command prints for a result: JSON for scripts, else for a person. */
|
|
66
|
+
export function render(value, json) {
|
|
67
|
+
if (json)
|
|
68
|
+
return JSON.stringify(value ?? null, null, 2);
|
|
69
|
+
return human(value);
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=output.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/cli/output.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Moodle, MoodleOptions } from "../client.js";
|
|
2
|
+
export interface CliDeps {
|
|
3
|
+
createMoodle: (options: MoodleOptions) => Moodle;
|
|
4
|
+
stdout: (text: string) => void;
|
|
5
|
+
stderr: (text: string) => void;
|
|
6
|
+
env: NodeJS.ProcessEnv;
|
|
7
|
+
cwd: string;
|
|
8
|
+
/** The command's home: the default site, and a folder per site with its profiles (ADR-013). */
|
|
9
|
+
home: string;
|
|
10
|
+
/** Whether stdout is a terminal: progress and readable output then, JSON to a pipe. */
|
|
11
|
+
interactive: boolean;
|
|
12
|
+
version: string;
|
|
13
|
+
}
|
|
14
|
+
/** Runs one command line; returns the exit status (0 done, 1 failed, 2 a command line that doesn't fit). */
|
|
15
|
+
export declare function run(argv: string[], deps: CliDeps): Promise<number>;
|
package/dist/cli/run.js
ADDED
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
// The `moodle` command (ADR-012): every method of the Moodle object from a terminal. `run` takes its
|
|
2
|
+
// surroundings as arguments, so tests run it against the fake Moodle.
|
|
3
|
+
import { mkdirSync, rmSync } from "node:fs";
|
|
4
|
+
import path from "node:path";
|
|
5
|
+
import { ALL_DATA_CATEGORIES, DATA_CATEGORIES } from "../categories.js";
|
|
6
|
+
import { MoodleError } from "../core/errors.js";
|
|
7
|
+
import { NotLoggedInError } from "../core/session.js";
|
|
8
|
+
import { parseSiteUrl } from "../options.js";
|
|
9
|
+
import { UsageError, commandName, findCommand, kebab, methodArguments, splitLine } from "./args.js";
|
|
10
|
+
import { COMMANDS } from "./commands.generated.js";
|
|
11
|
+
import { forgetSite, listSites, loadConfig, loadSite, nameProfile, pendingProfile, profileFor, saveConfig, saveSite } from "./config.js";
|
|
12
|
+
import { render } from "./output.js";
|
|
13
|
+
const firstSentence = (text) => (/^.*?\.(\s|$)/.exec(text)?.[0] ?? text).trim().replace(/\.$/, "");
|
|
14
|
+
function overview() {
|
|
15
|
+
const width = Math.max(...COMMANDS.map((c) => kebab(c.name).length));
|
|
16
|
+
return [
|
|
17
|
+
"moodle: every operation of moodle-driver, from a terminal.",
|
|
18
|
+
"",
|
|
19
|
+
"Usage: moodle <command> [arguments] [--options]",
|
|
20
|
+
"",
|
|
21
|
+
"Start with: moodle login --site https://campus.example.org/",
|
|
22
|
+
"Then: moodle list-courses, moodle my-grades 3, moodle help <command>",
|
|
23
|
+
"",
|
|
24
|
+
"Global options:",
|
|
25
|
+
" --site <url> The Moodle site (remembered after login; or MOODLE_SITE)",
|
|
26
|
+
" --as <name> The profile on the site, by name (or MOODLE_AS; the site's default unless told)",
|
|
27
|
+
" --profile <dir> A browser profile folder of your own (or MOODLE_PROFILE)",
|
|
28
|
+
" --json Print JSON (the default when the output isn't a terminal)",
|
|
29
|
+
" --show Show the browser while the command works",
|
|
30
|
+
" --allow <list> Refuse commands that touch other data categories (own,course-content,…)",
|
|
31
|
+
" --help, --version",
|
|
32
|
+
"",
|
|
33
|
+
"The command's own:",
|
|
34
|
+
` ${"sites".padEnd(width)} The sites and profiles logged in to, which is the default, and whether each has a session`,
|
|
35
|
+
` ${"forget".padEnd(width)} Deletes a site and its sessions (forget <site>), or one account's profile (--as <name>)`,
|
|
36
|
+
"",
|
|
37
|
+
"Commands:",
|
|
38
|
+
...COMMANDS.map((c) => ` ${kebab(c.name).padEnd(width)} ${firstSentence(c.description).slice(0, 90)}`),
|
|
39
|
+
].join("\n");
|
|
40
|
+
}
|
|
41
|
+
function commandHelp(command) {
|
|
42
|
+
const usage = [`moodle ${kebab(command.name)}`, ...command.params.map((p) => (p.optional ? `[${p.name}]` : `<${p.name}>`)), ...(command.options ? ["[--options]"] : [])].join(" ");
|
|
43
|
+
const lines = [`Usage: ${usage}`, "", command.description];
|
|
44
|
+
if (command.params.length > 0) {
|
|
45
|
+
lines.push("", "Arguments:");
|
|
46
|
+
for (const p of command.params)
|
|
47
|
+
lines.push(` ${p.name}${p.optional ? " (optional)" : ""} ${p.type}${p.description ? ` ${p.description}` : ""}`);
|
|
48
|
+
}
|
|
49
|
+
if (command.options) {
|
|
50
|
+
lines.push("", `Options (--json '{…}' gives ${command.options.name} whole):`);
|
|
51
|
+
for (const f of command.options.fields)
|
|
52
|
+
lines.push(` --${kebab(f.name)}${f.optional ? "" : " (required)"} ${f.type}${f.description ? ` ${f.description}` : ""}`);
|
|
53
|
+
if (command.options.open)
|
|
54
|
+
lines.push(` --<name> <value> any other field of ${command.options.name}`);
|
|
55
|
+
}
|
|
56
|
+
const categories = categoriesOf(command.name);
|
|
57
|
+
if (categories)
|
|
58
|
+
lines.push("", `Data: ${categories.join(", ")}`);
|
|
59
|
+
return lines.join("\n");
|
|
60
|
+
}
|
|
61
|
+
const categoriesOf = (name) => DATA_CATEGORIES[name] ?? DATA_CATEGORIES[`Moodle.${name}`];
|
|
62
|
+
/** Runs one command line; returns the exit status (0 done, 1 failed, 2 a command line that doesn't fit). */
|
|
63
|
+
export async function run(argv, deps) {
|
|
64
|
+
let moodle;
|
|
65
|
+
// A first login's provisional profile, removed if the login doesn't get to name it.
|
|
66
|
+
let pending;
|
|
67
|
+
try {
|
|
68
|
+
const typed = commandName(argv);
|
|
69
|
+
const own = typed === "sites" || typed === "forget";
|
|
70
|
+
const command = typed && typed !== "help" && !own ? findCommand(COMMANDS, typed) : undefined;
|
|
71
|
+
const { global, positionals, flags } = splitLine(argv, command);
|
|
72
|
+
if (global.version) {
|
|
73
|
+
deps.stdout(deps.version);
|
|
74
|
+
return 0;
|
|
75
|
+
}
|
|
76
|
+
if (typed === "help") {
|
|
77
|
+
const about = positionals[0] ? findCommand(COMMANDS, positionals[0]) : undefined;
|
|
78
|
+
if (positionals[0] && !about)
|
|
79
|
+
throw new UsageError(`There's no command "${positionals[0]}".`);
|
|
80
|
+
deps.stdout(about ? commandHelp(about) : overview());
|
|
81
|
+
return 0;
|
|
82
|
+
}
|
|
83
|
+
if (!typed) {
|
|
84
|
+
deps.stdout(overview());
|
|
85
|
+
return global.help ? 0 : 2;
|
|
86
|
+
}
|
|
87
|
+
if (typed === "sites") {
|
|
88
|
+
const text = render(listSites(deps.home), global.json || !deps.interactive);
|
|
89
|
+
deps.stdout(text === "(none)" ? "No sites yet: `moodle login --site https://campus.example.org/`." : text);
|
|
90
|
+
return 0;
|
|
91
|
+
}
|
|
92
|
+
if (typed === "forget") {
|
|
93
|
+
const target = positionals[0];
|
|
94
|
+
if (!target)
|
|
95
|
+
throw new UsageError("forget needs <site>: `moodle sites` lists them.");
|
|
96
|
+
const gone = forgetSite(deps.home, parseSiteUrl(target), global.as);
|
|
97
|
+
if (gone.length === 0) {
|
|
98
|
+
deps.stderr(`not-found: ${target}${global.as ? ` has no profile ${global.as}` : " isn't a site logged in to"}; \`moodle sites\` lists them.`);
|
|
99
|
+
return 1;
|
|
100
|
+
}
|
|
101
|
+
deps.stdout(`✔ Deleted ${gone.join(", ")}`);
|
|
102
|
+
return 0;
|
|
103
|
+
}
|
|
104
|
+
if (!command)
|
|
105
|
+
throw new UsageError(`There's no command "${typed}". \`moodle help\` lists them.`);
|
|
106
|
+
if (global.help) {
|
|
107
|
+
deps.stdout(commandHelp(command));
|
|
108
|
+
return 0;
|
|
109
|
+
}
|
|
110
|
+
const config = loadConfig(deps.home);
|
|
111
|
+
const rawSite = global.site ?? deps.env.MOODLE_SITE ?? config.site;
|
|
112
|
+
if (!rawSite)
|
|
113
|
+
throw new UsageError("No site yet: log in first with `moodle login --site https://campus.example.org/`, or give --site.");
|
|
114
|
+
const site = parseSiteUrl(rawSite);
|
|
115
|
+
const ownProfile = global.profile ?? deps.env.MOODLE_PROFILE;
|
|
116
|
+
const loggingIn = command.name === "logIn";
|
|
117
|
+
const chosen = profileFor(deps.home, site, { profile: ownProfile, as: global.as ?? deps.env.MOODLE_AS });
|
|
118
|
+
// A first login with no name for its profile: a provisional folder, named after the person's username once in.
|
|
119
|
+
pending = !chosen && loggingIn ? pendingProfile(deps.home, site) : undefined;
|
|
120
|
+
// What anyone can ask without logging in needs no browser, so no profile either.
|
|
121
|
+
const browserless = command.name === "publicSiteInfo";
|
|
122
|
+
if (!chosen && !pending && !browserless) {
|
|
123
|
+
const names = listSites(deps.home).filter((p) => p.site === site).map((p) => p.profile);
|
|
124
|
+
if (names.length > 0)
|
|
125
|
+
throw new UsageError(`${site} has no default profile: pick one with --as (${names.join(", ")}), or make one the default with \`moodle login --as <name>\`.`);
|
|
126
|
+
throw new UsageError(`No profile for ${site} yet: log in with \`moodle login --site ${site}\`.`);
|
|
127
|
+
}
|
|
128
|
+
// A browserless command never opens this folder: the object launches no browser until it needs one.
|
|
129
|
+
const profileDir = chosen?.profileDir ?? pending ?? path.join(deps.home, "sites", ".none");
|
|
130
|
+
// A profile logged in to for the first time has its folder from now on, browser or not.
|
|
131
|
+
if (loggingIn)
|
|
132
|
+
mkdirSync(profileDir, { recursive: true });
|
|
133
|
+
if (global.allow) {
|
|
134
|
+
const allowed = global.allow.split(",").map((c) => c.trim());
|
|
135
|
+
const unknown = allowed.filter((c) => !ALL_DATA_CATEGORIES.includes(c));
|
|
136
|
+
if (unknown.length > 0)
|
|
137
|
+
throw new UsageError(`Unknown data categories in --allow: ${unknown.join(", ")}. They are ${ALL_DATA_CATEGORIES.join(", ")}.`);
|
|
138
|
+
const outside = (categoriesOf(command.name) ?? ["any"]).filter((c) => !allowed.includes(c));
|
|
139
|
+
if (outside.length > 0) {
|
|
140
|
+
deps.stderr(`refused: ${kebab(command.name)} touches ${outside.join(", ")}, outside --allow ${allowed.join(",")}.`);
|
|
141
|
+
return 1;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
const args = methodArguments(command, positionals, flags, deps.cwd);
|
|
145
|
+
const progress = deps.interactive ? (elapsed, total) => deps.stderr(` reading… ${Math.round(elapsed)}${total ? `/${Math.round(total)}` : ""} s`) : undefined;
|
|
146
|
+
moodle = deps.createMoodle({ site, profileDir, headless: true, downloadBrowser: true, downloadDir: deps.cwd, onProgress: progress });
|
|
147
|
+
if (global.show)
|
|
148
|
+
await moodle.setVisible(true);
|
|
149
|
+
const method = moodle[command.name];
|
|
150
|
+
const result = await method.apply(moodle, args);
|
|
151
|
+
if (loggingIn) {
|
|
152
|
+
// The site becomes the default, and the profile logged in with becomes the site's.
|
|
153
|
+
let name = chosen?.name;
|
|
154
|
+
if (pending) {
|
|
155
|
+
const userId = result.userId;
|
|
156
|
+
const username = await moodle.whoAmI().then((me) => me.username).catch(() => undefined);
|
|
157
|
+
await moodle.close();
|
|
158
|
+
name = nameProfile(deps.home, site, pending, username ?? `user-${userId}`);
|
|
159
|
+
pending = undefined;
|
|
160
|
+
}
|
|
161
|
+
const record = loadSite(deps.home, site);
|
|
162
|
+
saveSite(deps.home, { url: site, default: ownProfile ? undefined : name, profileDir: ownProfile ?? record?.profileDir });
|
|
163
|
+
saveConfig(deps.home, { ...config, site });
|
|
164
|
+
if (name && deps.interactive)
|
|
165
|
+
deps.stderr(`Profile "${name}" is the default for ${site}.`);
|
|
166
|
+
}
|
|
167
|
+
const text = render(result, global.json || !deps.interactive);
|
|
168
|
+
if (text)
|
|
169
|
+
deps.stdout(text);
|
|
170
|
+
return 0;
|
|
171
|
+
}
|
|
172
|
+
catch (error) {
|
|
173
|
+
if (error instanceof UsageError) {
|
|
174
|
+
deps.stderr(`${error.message}\n${error.message.includes("moodle help") ? "" : "`moodle help` lists the commands; `moodle help <command>` explains one."}`.trimEnd());
|
|
175
|
+
return 2;
|
|
176
|
+
}
|
|
177
|
+
if (error instanceof NotLoggedInError) {
|
|
178
|
+
deps.stderr(`${error.code}: ${error.message}\nLog in again with \`moodle login\`.`);
|
|
179
|
+
return 1;
|
|
180
|
+
}
|
|
181
|
+
if (error instanceof MoodleError) {
|
|
182
|
+
deps.stderr(`${error.code}: ${error.message}`);
|
|
183
|
+
return 1;
|
|
184
|
+
}
|
|
185
|
+
deps.stderr(error instanceof Error ? error.message : String(error));
|
|
186
|
+
return 1;
|
|
187
|
+
}
|
|
188
|
+
finally {
|
|
189
|
+
await moodle?.close().catch(() => undefined);
|
|
190
|
+
if (pending)
|
|
191
|
+
rmSync(pending, { recursive: true, force: true });
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
//# sourceMappingURL=run.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/cli/run.ts"],"names":[],"mappings":"AAAA,qGAAqG;AACrG,sEAAsE;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAqB,MAAM,kBAAkB,CAAC;AAE3F,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACpG,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACzI,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAgBrC,MAAM,aAAa,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAE3G,SAAS,QAAQ;IACf,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IACrE,OAAO;QACL,4DAA4D;QAC5D,EAAE;QACF,iDAAiD;QACjD,EAAE;QACF,8DAA8D;QAC9D,6EAA6E;QAC7E,EAAE;QACF,iBAAiB;QACjB,+EAA+E;QAC/E,sGAAsG;QACtG,+EAA+E;QAC/E,gFAAgF;QAChF,+DAA+D;QAC/D,8FAA8F;QAC9F,qBAAqB;QACrB,EAAE;QACF,oBAAoB;QACpB,KAAK,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,6FAA6F;QACvH,KAAK,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,2FAA2F;QACtH,EAAE;QACF,WAAW;QACX,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;KACzG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAS,WAAW,CAAC,OAAoB;IACvC,MAAM,KAAK,GAAG,CAAC,UAAU,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnL,MAAM,KAAK,GAAG,CAAC,UAAU,KAAK,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAC3D,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;QAC7B,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACrJ,CAAC;IACD,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,+BAA+B,OAAO,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,CAAC;QAC9E,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACpK,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI;YAAE,KAAK,CAAC,IAAI,CAAC,0CAA0C,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IACzG,CAAC;IACD,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,IAAI,UAAU;QAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,YAAY,GAAG,CAAC,IAAY,EAAuC,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;AAEvI,4GAA4G;AAC5G,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,IAAc,EAAE,IAAa;IACrD,IAAI,MAA0B,CAAC;IAC/B,oFAAoF;IACpF,IAAI,OAA2B,CAAC;IAChC,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,GAAG,GAAG,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,QAAQ,CAAC;QACpD,MAAM,OAAO,GAAG,KAAK,IAAI,KAAK,KAAK,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC7F,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAChE,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC1B,OAAO,CAAC,CAAC;QACX,CAAC;QACD,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;YACrB,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACjF,IAAI,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK;gBAAE,MAAM,IAAI,UAAU,CAAC,uBAAuB,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC9F,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;YACrD,OAAO,CAAC,CAAC;QACX,CAAC;QACD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;YACxB,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC;QACD,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;YACtB,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC5E,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,kEAAkE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC3G,OAAO,CAAC,CAAC;QACX,CAAC;QACD,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;YACvB,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,UAAU,CAAC,iDAAiD,CAAC,CAAC;YACrF,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;YACpE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACtB,IAAI,CAAC,MAAM,CAAC,cAAc,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,4BAA4B,gCAAgC,CAAC,CAAC;gBAC9I,OAAO,CAAC,CAAC;YACX,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC5C,OAAO,CAAC,CAAC;QACX,CAAC;QACD,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,UAAU,CAAC,uBAAuB,KAAK,gCAAgC,CAAC,CAAC;QACjG,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;YAClC,OAAO,CAAC,CAAC;QACX,CAAC;QAED,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC;QACnE,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,UAAU,CAAC,mGAAmG,CAAC,CAAC;QACxI,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;QACnC,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC;QAC7D,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC;QAC3C,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;QACzG,+GAA+G;QAC/G,OAAO,GAAG,CAAC,MAAM,IAAI,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC7E,iFAAiF;QACjF,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,KAAK,gBAAgB,CAAC;QACtD,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;YACxC,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YACxF,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;gBAAE,MAAM,IAAI,UAAU,CAAC,GAAG,IAAI,gDAAgD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAC;YACnL,MAAM,IAAI,UAAU,CAAC,kBAAkB,IAAI,2CAA2C,IAAI,KAAK,CAAC,CAAC;QACnG,CAAC;QACD,oGAAoG;QACpG,MAAM,UAAU,GAAG,MAAM,EAAE,UAAU,IAAI,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC3F,wFAAwF;QACxF,IAAI,SAAS;YAAE,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE1D,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAmB,CAAC;YAC/E,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YACxE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;gBAAE,MAAM,IAAI,UAAU,CAAC,uCAAuC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvJ,MAAM,OAAO,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5F,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,IAAI,CAAC,MAAM,CAAC,YAAY,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACpH,OAAO,CAAC,CAAC;YACX,CAAC;QACH,CAAC;QAED,MAAM,IAAI,GAAG,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACpE,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAe,EAAE,KAAc,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC/K,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC;QACrI,IAAI,MAAM,CAAC,IAAI;YAAE,MAAM,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAI,MAA2E,CAAC,OAAO,CAAC,IAAI,CAAE,CAAC;QAC3G,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAChD,IAAI,SAAS,EAAE,CAAC;YACd,mFAAmF;YACnF,IAAI,IAAI,GAAG,MAAM,EAAE,IAAI,CAAC;YACxB,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,MAAM,GAAI,MAA6B,CAAC,MAAM,CAAC;gBACrD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;gBACxF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;gBACrB,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,IAAI,QAAQ,MAAM,EAAE,CAAC,CAAC;gBAC3E,OAAO,GAAG,SAAS,CAAC;YACtB,CAAC;YACD,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACzC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,IAAI,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;YACzH,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3C,IAAI,IAAI,IAAI,IAAI,CAAC,WAAW;gBAAE,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,wBAAwB,IAAI,GAAG,CAAC,CAAC;QAC7F,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC9D,IAAI,IAAI;YAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5B,OAAO,CAAC,CAAC;IACX,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,UAAU,EAAE,CAAC;YAChC,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,yEAAyE,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;YACrK,OAAO,CAAC,CAAC;QACX,CAAC;QACD,IAAI,KAAK,YAAY,gBAAgB,EAAE,CAAC;YACtC,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,uCAAuC,CAAC,CAAC;YACpF,OAAO,CAAC,CAAC;QACX,CAAC;QACD,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;YACjC,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC/C,OAAO,CAAC,CAAC;QACX,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACpE,OAAO,CAAC,CAAC;IACX,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,OAAO;YAAE,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACjE,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/** How a value typed on the command line becomes the argument the method takes. */
|
|
2
|
+
export type ValueKind = {
|
|
3
|
+
kind: "number";
|
|
4
|
+
} | {
|
|
5
|
+
kind: "string";
|
|
6
|
+
} | {
|
|
7
|
+
kind: "boolean";
|
|
8
|
+
} | {
|
|
9
|
+
kind: "date";
|
|
10
|
+
} | {
|
|
11
|
+
kind: "enum";
|
|
12
|
+
values: string[];
|
|
13
|
+
} | {
|
|
14
|
+
kind: "numbers";
|
|
15
|
+
} | {
|
|
16
|
+
kind: "strings";
|
|
17
|
+
} | {
|
|
18
|
+
kind: "json";
|
|
19
|
+
};
|
|
20
|
+
export interface ParamSpec {
|
|
21
|
+
name: string;
|
|
22
|
+
optional: boolean;
|
|
23
|
+
/** The TypeScript type, as the API reference shows it. */
|
|
24
|
+
type: string;
|
|
25
|
+
value: ValueKind;
|
|
26
|
+
description?: string;
|
|
27
|
+
}
|
|
28
|
+
export interface CommandSpec {
|
|
29
|
+
/** The method's name: the command, also typed in kebab-case. */
|
|
30
|
+
name: string;
|
|
31
|
+
description: string;
|
|
32
|
+
/** The positional arguments, in order. */
|
|
33
|
+
params: ParamSpec[];
|
|
34
|
+
/** The last parameter, when it's an options object: its fields are `--flags`, or `--json` gives it whole. */
|
|
35
|
+
options?: {
|
|
36
|
+
name: string;
|
|
37
|
+
optional: boolean;
|
|
38
|
+
/** Takes any field (a service's arguments): unknown flags are passed as they come. */
|
|
39
|
+
open: boolean;
|
|
40
|
+
fields: ParamSpec[];
|
|
41
|
+
};
|
|
42
|
+
}
|