gtypee 1.0.2
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 +15 -0
- package/README.md +1431 -0
- package/dist/bin/gtypee.d.ts +3 -0
- package/dist/bin/gtypee.d.ts.map +1 -0
- package/dist/bin/gtypee.js +18 -0
- package/dist/bin/gtypee.js.map +1 -0
- package/dist/src/authclient/authclient.d.ts +11 -0
- package/dist/src/authclient/authclient.d.ts.map +1 -0
- package/dist/src/authclient/authclient.js +26 -0
- package/dist/src/authclient/authclient.js.map +1 -0
- package/dist/src/cmd/agent/commands.d.ts +3 -0
- package/dist/src/cmd/agent/commands.d.ts.map +1 -0
- package/dist/src/cmd/agent/commands.js +16 -0
- package/dist/src/cmd/agent/commands.js.map +1 -0
- package/dist/src/cmd/appscript/commands.d.ts +24 -0
- package/dist/src/cmd/appscript/commands.d.ts.map +1 -0
- package/dist/src/cmd/appscript/commands.js +116 -0
- package/dist/src/cmd/appscript/commands.js.map +1 -0
- package/dist/src/cmd/appscript/runtime.d.ts +4 -0
- package/dist/src/cmd/appscript/runtime.d.ts.map +1 -0
- package/dist/src/cmd/appscript/runtime.js +64 -0
- package/dist/src/cmd/appscript/runtime.js.map +1 -0
- package/dist/src/cmd/auth/commands.d.ts +67 -0
- package/dist/src/cmd/auth/commands.d.ts.map +1 -0
- package/dist/src/cmd/auth/commands.js +184 -0
- package/dist/src/cmd/auth/commands.js.map +1 -0
- package/dist/src/cmd/auth/runtime.d.ts +20 -0
- package/dist/src/cmd/auth/runtime.d.ts.map +1 -0
- package/dist/src/cmd/auth/runtime.js +237 -0
- package/dist/src/cmd/auth/runtime.js.map +1 -0
- package/dist/src/cmd/calendar/commands.d.ts +58 -0
- package/dist/src/cmd/calendar/commands.d.ts.map +1 -0
- package/dist/src/cmd/calendar/commands.js +161 -0
- package/dist/src/cmd/calendar/commands.js.map +1 -0
- package/dist/src/cmd/calendar/runtime.d.ts +4 -0
- package/dist/src/cmd/calendar/runtime.d.ts.map +1 -0
- package/dist/src/cmd/calendar/runtime.js +164 -0
- package/dist/src/cmd/calendar/runtime.js.map +1 -0
- package/dist/src/cmd/chat/commands.d.ts +27 -0
- package/dist/src/cmd/chat/commands.d.ts.map +1 -0
- package/dist/src/cmd/chat/commands.js +113 -0
- package/dist/src/cmd/chat/commands.js.map +1 -0
- package/dist/src/cmd/chat/runtime.d.ts +4 -0
- package/dist/src/cmd/chat/runtime.d.ts.map +1 -0
- package/dist/src/cmd/chat/runtime.js +67 -0
- package/dist/src/cmd/chat/runtime.js.map +1 -0
- package/dist/src/cmd/classroom/commands.d.ts +22 -0
- package/dist/src/cmd/classroom/commands.d.ts.map +1 -0
- package/dist/src/cmd/classroom/commands.js +91 -0
- package/dist/src/cmd/classroom/commands.js.map +1 -0
- package/dist/src/cmd/classroom/runtime.d.ts +4 -0
- package/dist/src/cmd/classroom/runtime.d.ts.map +1 -0
- package/dist/src/cmd/classroom/runtime.js +67 -0
- package/dist/src/cmd/classroom/runtime.js.map +1 -0
- package/dist/src/cmd/command-registry.d.ts +8 -0
- package/dist/src/cmd/command-registry.d.ts.map +1 -0
- package/dist/src/cmd/command-registry.js +40 -0
- package/dist/src/cmd/command-registry.js.map +1 -0
- package/dist/src/cmd/completion/commands.d.ts +3 -0
- package/dist/src/cmd/completion/commands.d.ts.map +1 -0
- package/dist/src/cmd/completion/commands.js +29 -0
- package/dist/src/cmd/completion/commands.js.map +1 -0
- package/dist/src/cmd/config/commands.d.ts +10 -0
- package/dist/src/cmd/config/commands.d.ts.map +1 -0
- package/dist/src/cmd/config/commands.js +106 -0
- package/dist/src/cmd/config/commands.js.map +1 -0
- package/dist/src/cmd/contacts/commands.d.ts +18 -0
- package/dist/src/cmd/contacts/commands.d.ts.map +1 -0
- package/dist/src/cmd/contacts/commands.js +79 -0
- package/dist/src/cmd/contacts/commands.js.map +1 -0
- package/dist/src/cmd/contacts/runtime.d.ts +4 -0
- package/dist/src/cmd/contacts/runtime.d.ts.map +1 -0
- package/dist/src/cmd/contacts/runtime.js +67 -0
- package/dist/src/cmd/contacts/runtime.js.map +1 -0
- package/dist/src/cmd/docs/commands.d.ts +24 -0
- package/dist/src/cmd/docs/commands.d.ts.map +1 -0
- package/dist/src/cmd/docs/commands.js +82 -0
- package/dist/src/cmd/docs/commands.js.map +1 -0
- package/dist/src/cmd/docs/runtime.d.ts +4 -0
- package/dist/src/cmd/docs/runtime.d.ts.map +1 -0
- package/dist/src/cmd/docs/runtime.js +77 -0
- package/dist/src/cmd/docs/runtime.js.map +1 -0
- package/dist/src/cmd/drive/commands.d.ts +112 -0
- package/dist/src/cmd/drive/commands.d.ts.map +1 -0
- package/dist/src/cmd/drive/commands.js +431 -0
- package/dist/src/cmd/drive/commands.js.map +1 -0
- package/dist/src/cmd/drive/runtime.d.ts +4 -0
- package/dist/src/cmd/drive/runtime.d.ts.map +1 -0
- package/dist/src/cmd/drive/runtime.js +336 -0
- package/dist/src/cmd/drive/runtime.js.map +1 -0
- package/dist/src/cmd/execution-context.d.ts +33 -0
- package/dist/src/cmd/execution-context.d.ts.map +1 -0
- package/dist/src/cmd/execution-context.js +31 -0
- package/dist/src/cmd/execution-context.js.map +1 -0
- package/dist/src/cmd/exit-codes/commands.d.ts +5 -0
- package/dist/src/cmd/exit-codes/commands.d.ts.map +1 -0
- package/dist/src/cmd/exit-codes/commands.js +25 -0
- package/dist/src/cmd/exit-codes/commands.js.map +1 -0
- package/dist/src/cmd/exit-codes.d.ts +4 -0
- package/dist/src/cmd/exit-codes.d.ts.map +1 -0
- package/dist/src/cmd/exit-codes.js +4 -0
- package/dist/src/cmd/exit-codes.js.map +1 -0
- package/dist/src/cmd/exit.d.ts +7 -0
- package/dist/src/cmd/exit.d.ts.map +1 -0
- package/dist/src/cmd/exit.js +19 -0
- package/dist/src/cmd/exit.js.map +1 -0
- package/dist/src/cmd/forms/commands.d.ts +19 -0
- package/dist/src/cmd/forms/commands.d.ts.map +1 -0
- package/dist/src/cmd/forms/commands.js +73 -0
- package/dist/src/cmd/forms/commands.js.map +1 -0
- package/dist/src/cmd/forms/runtime.d.ts +4 -0
- package/dist/src/cmd/forms/runtime.d.ts.map +1 -0
- package/dist/src/cmd/forms/runtime.js +38 -0
- package/dist/src/cmd/forms/runtime.js.map +1 -0
- package/dist/src/cmd/gmail/commands.d.ts +187 -0
- package/dist/src/cmd/gmail/commands.d.ts.map +1 -0
- package/dist/src/cmd/gmail/commands.js +767 -0
- package/dist/src/cmd/gmail/commands.js.map +1 -0
- package/dist/src/cmd/gmail/runtime.d.ts +9 -0
- package/dist/src/cmd/gmail/runtime.d.ts.map +1 -0
- package/dist/src/cmd/gmail/runtime.js +644 -0
- package/dist/src/cmd/gmail/runtime.js.map +1 -0
- package/dist/src/cmd/groups/commands.d.ts +26 -0
- package/dist/src/cmd/groups/commands.d.ts.map +1 -0
- package/dist/src/cmd/groups/commands.js +105 -0
- package/dist/src/cmd/groups/commands.js.map +1 -0
- package/dist/src/cmd/groups/runtime.d.ts +4 -0
- package/dist/src/cmd/groups/runtime.d.ts.map +1 -0
- package/dist/src/cmd/groups/runtime.js +61 -0
- package/dist/src/cmd/groups/runtime.js.map +1 -0
- package/dist/src/cmd/keep/commands.d.ts +23 -0
- package/dist/src/cmd/keep/commands.d.ts.map +1 -0
- package/dist/src/cmd/keep/commands.js +111 -0
- package/dist/src/cmd/keep/commands.js.map +1 -0
- package/dist/src/cmd/keep/runtime.d.ts +4 -0
- package/dist/src/cmd/keep/runtime.d.ts.map +1 -0
- package/dist/src/cmd/keep/runtime.js +82 -0
- package/dist/src/cmd/keep/runtime.js.map +1 -0
- package/dist/src/cmd/people/commands.d.ts +22 -0
- package/dist/src/cmd/people/commands.d.ts.map +1 -0
- package/dist/src/cmd/people/commands.js +96 -0
- package/dist/src/cmd/people/commands.js.map +1 -0
- package/dist/src/cmd/people/runtime.d.ts +4 -0
- package/dist/src/cmd/people/runtime.d.ts.map +1 -0
- package/dist/src/cmd/people/runtime.js +65 -0
- package/dist/src/cmd/people/runtime.js.map +1 -0
- package/dist/src/cmd/rewrite-desire-path-args.d.ts +2 -0
- package/dist/src/cmd/rewrite-desire-path-args.d.ts.map +1 -0
- package/dist/src/cmd/rewrite-desire-path-args.js +75 -0
- package/dist/src/cmd/rewrite-desire-path-args.js.map +1 -0
- package/dist/src/cmd/root.d.ts +10 -0
- package/dist/src/cmd/root.d.ts.map +1 -0
- package/dist/src/cmd/root.js +341 -0
- package/dist/src/cmd/root.js.map +1 -0
- package/dist/src/cmd/schema/commands.d.ts +3 -0
- package/dist/src/cmd/schema/commands.d.ts.map +1 -0
- package/dist/src/cmd/schema/commands.js +21 -0
- package/dist/src/cmd/schema/commands.js.map +1 -0
- package/dist/src/cmd/script-path.d.ts +2 -0
- package/dist/src/cmd/script-path.d.ts.map +1 -0
- package/dist/src/cmd/script-path.js +4 -0
- package/dist/src/cmd/script-path.js.map +1 -0
- package/dist/src/cmd/sheets/commands.d.ts +20 -0
- package/dist/src/cmd/sheets/commands.d.ts.map +1 -0
- package/dist/src/cmd/sheets/commands.js +79 -0
- package/dist/src/cmd/sheets/commands.js.map +1 -0
- package/dist/src/cmd/sheets/runtime.d.ts +4 -0
- package/dist/src/cmd/sheets/runtime.d.ts.map +1 -0
- package/dist/src/cmd/sheets/runtime.js +37 -0
- package/dist/src/cmd/sheets/runtime.js.map +1 -0
- package/dist/src/cmd/slides/commands.d.ts +24 -0
- package/dist/src/cmd/slides/commands.d.ts.map +1 -0
- package/dist/src/cmd/slides/commands.js +90 -0
- package/dist/src/cmd/slides/commands.js.map +1 -0
- package/dist/src/cmd/slides/runtime.d.ts +4 -0
- package/dist/src/cmd/slides/runtime.d.ts.map +1 -0
- package/dist/src/cmd/slides/runtime.js +92 -0
- package/dist/src/cmd/slides/runtime.js.map +1 -0
- package/dist/src/cmd/tasks/commands.d.ts +28 -0
- package/dist/src/cmd/tasks/commands.d.ts.map +1 -0
- package/dist/src/cmd/tasks/commands.js +103 -0
- package/dist/src/cmd/tasks/commands.js.map +1 -0
- package/dist/src/cmd/tasks/runtime.d.ts +4 -0
- package/dist/src/cmd/tasks/runtime.d.ts.map +1 -0
- package/dist/src/cmd/tasks/runtime.js +56 -0
- package/dist/src/cmd/tasks/runtime.js.map +1 -0
- package/dist/src/cmd/time/commands.d.ts +17 -0
- package/dist/src/cmd/time/commands.d.ts.map +1 -0
- package/dist/src/cmd/time/commands.js +88 -0
- package/dist/src/cmd/time/commands.js.map +1 -0
- package/dist/src/cmd/version/commands.d.ts +3 -0
- package/dist/src/cmd/version/commands.d.ts.map +1 -0
- package/dist/src/cmd/version/commands.js +17 -0
- package/dist/src/cmd/version/commands.js.map +1 -0
- package/dist/src/cmd/workspace/commands.d.ts +222 -0
- package/dist/src/cmd/workspace/commands.d.ts.map +1 -0
- package/dist/src/cmd/workspace/commands.js +685 -0
- package/dist/src/cmd/workspace/commands.js.map +1 -0
- package/dist/src/cmd/workspace/runtime.d.ts +8 -0
- package/dist/src/cmd/workspace/runtime.d.ts.map +1 -0
- package/dist/src/cmd/workspace/runtime.js +852 -0
- package/dist/src/cmd/workspace/runtime.js.map +1 -0
- package/dist/src/config/clients.d.ts +8 -0
- package/dist/src/config/clients.d.ts.map +1 -0
- package/dist/src/config/clients.js +95 -0
- package/dist/src/config/clients.js.map +1 -0
- package/dist/src/config/config.d.ts +11 -0
- package/dist/src/config/config.d.ts.map +1 -0
- package/dist/src/config/config.js +54 -0
- package/dist/src/config/config.js.map +1 -0
- package/dist/src/config/credentials.d.ts +16 -0
- package/dist/src/config/credentials.d.ts.map +1 -0
- package/dist/src/config/credentials.js +97 -0
- package/dist/src/config/credentials.js.map +1 -0
- package/dist/src/config/migration.d.ts +13 -0
- package/dist/src/config/migration.d.ts.map +1 -0
- package/dist/src/config/migration.js +70 -0
- package/dist/src/config/migration.js.map +1 -0
- package/dist/src/config/paths.d.ts +11 -0
- package/dist/src/config/paths.d.ts.map +1 -0
- package/dist/src/config/paths.js +74 -0
- package/dist/src/config/paths.js.map +1 -0
- package/dist/src/googleapi/auth-factory.d.ts +46 -0
- package/dist/src/googleapi/auth-factory.d.ts.map +1 -0
- package/dist/src/googleapi/auth-factory.js +88 -0
- package/dist/src/googleapi/auth-factory.js.map +1 -0
- package/dist/src/googleapi/calendar.d.ts +3 -0
- package/dist/src/googleapi/calendar.d.ts.map +1 -0
- package/dist/src/googleapi/calendar.js +21 -0
- package/dist/src/googleapi/calendar.js.map +1 -0
- package/dist/src/googleapi/circuitbreaker.d.ts +19 -0
- package/dist/src/googleapi/circuitbreaker.d.ts.map +1 -0
- package/dist/src/googleapi/circuitbreaker.js +43 -0
- package/dist/src/googleapi/circuitbreaker.js.map +1 -0
- package/dist/src/googleapi/client.d.ts +17 -0
- package/dist/src/googleapi/client.d.ts.map +1 -0
- package/dist/src/googleapi/client.js +18 -0
- package/dist/src/googleapi/client.js.map +1 -0
- package/dist/src/googleapi/drive.d.ts +3 -0
- package/dist/src/googleapi/drive.d.ts.map +1 -0
- package/dist/src/googleapi/drive.js +11 -0
- package/dist/src/googleapi/drive.js.map +1 -0
- package/dist/src/googleapi/errors.d.ts +37 -0
- package/dist/src/googleapi/errors.d.ts.map +1 -0
- package/dist/src/googleapi/errors.js +93 -0
- package/dist/src/googleapi/errors.js.map +1 -0
- package/dist/src/googleapi/retry-constants.d.ts +5 -0
- package/dist/src/googleapi/retry-constants.d.ts.map +1 -0
- package/dist/src/googleapi/retry-constants.js +5 -0
- package/dist/src/googleapi/retry-constants.js.map +1 -0
- package/dist/src/googleapi/transport.d.ts +3 -0
- package/dist/src/googleapi/transport.d.ts.map +1 -0
- package/dist/src/googleapi/transport.js +39 -0
- package/dist/src/googleapi/transport.js.map +1 -0
- package/dist/src/googleauth/oauth-flow.d.ts +62 -0
- package/dist/src/googleauth/oauth-flow.d.ts.map +1 -0
- package/dist/src/googleauth/oauth-flow.js +262 -0
- package/dist/src/googleauth/oauth-flow.js.map +1 -0
- package/dist/src/googleauth/service.d.ts +28 -0
- package/dist/src/googleauth/service.d.ts.map +1 -0
- package/dist/src/googleauth/service.js +345 -0
- package/dist/src/googleauth/service.js.map +1 -0
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +2 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/outfmt/outfmt.d.ts +8 -0
- package/dist/src/outfmt/outfmt.d.ts.map +1 -0
- package/dist/src/outfmt/outfmt.js +66 -0
- package/dist/src/outfmt/outfmt.js.map +1 -0
- package/dist/src/secrets/store.d.ts +61 -0
- package/dist/src/secrets/store.d.ts.map +1 -0
- package/dist/src/secrets/store.js +247 -0
- package/dist/src/secrets/store.js.map +1 -0
- package/dist/test/authclient/authclient.test.d.ts +2 -0
- package/dist/test/authclient/authclient.test.d.ts.map +1 -0
- package/dist/test/authclient/authclient.test.js +14 -0
- package/dist/test/authclient/authclient.test.js.map +1 -0
- package/dist/test/bin/gtypee-entrypoint.test.d.ts +2 -0
- package/dist/test/bin/gtypee-entrypoint.test.d.ts.map +1 -0
- package/dist/test/bin/gtypee-entrypoint.test.js +17 -0
- package/dist/test/bin/gtypee-entrypoint.test.js.map +1 -0
- package/dist/test/cmd/agent/commands.test.d.ts +2 -0
- package/dist/test/cmd/agent/commands.test.d.ts.map +1 -0
- package/dist/test/cmd/agent/commands.test.js +12 -0
- package/dist/test/cmd/agent/commands.test.js.map +1 -0
- package/dist/test/cmd/appscript/commands.test.d.ts +2 -0
- package/dist/test/cmd/appscript/commands.test.d.ts.map +1 -0
- package/dist/test/cmd/appscript/commands.test.js +104 -0
- package/dist/test/cmd/appscript/commands.test.js.map +1 -0
- package/dist/test/cmd/auth/commands.test.d.ts +2 -0
- package/dist/test/cmd/auth/commands.test.d.ts.map +1 -0
- package/dist/test/cmd/auth/commands.test.js +142 -0
- package/dist/test/cmd/auth/commands.test.js.map +1 -0
- package/dist/test/cmd/auth/runtime.test.d.ts +2 -0
- package/dist/test/cmd/auth/runtime.test.d.ts.map +1 -0
- package/dist/test/cmd/auth/runtime.test.js +214 -0
- package/dist/test/cmd/auth/runtime.test.js.map +1 -0
- package/dist/test/cmd/calendar/commands.test.d.ts +2 -0
- package/dist/test/cmd/calendar/commands.test.d.ts.map +1 -0
- package/dist/test/cmd/calendar/commands.test.js +121 -0
- package/dist/test/cmd/calendar/commands.test.js.map +1 -0
- package/dist/test/cmd/chat/commands.test.d.ts +2 -0
- package/dist/test/cmd/chat/commands.test.d.ts.map +1 -0
- package/dist/test/cmd/chat/commands.test.js +57 -0
- package/dist/test/cmd/chat/commands.test.js.map +1 -0
- package/dist/test/cmd/classroom/commands.test.d.ts +2 -0
- package/dist/test/cmd/classroom/commands.test.d.ts.map +1 -0
- package/dist/test/cmd/classroom/commands.test.js +61 -0
- package/dist/test/cmd/classroom/commands.test.js.map +1 -0
- package/dist/test/cmd/completion/commands.test.d.ts +2 -0
- package/dist/test/cmd/completion/commands.test.d.ts.map +1 -0
- package/dist/test/cmd/completion/commands.test.js +30 -0
- package/dist/test/cmd/completion/commands.test.js.map +1 -0
- package/dist/test/cmd/config/commands.test.d.ts +2 -0
- package/dist/test/cmd/config/commands.test.d.ts.map +1 -0
- package/dist/test/cmd/config/commands.test.js +21 -0
- package/dist/test/cmd/config/commands.test.js.map +1 -0
- package/dist/test/cmd/contacts/commands.test.d.ts +2 -0
- package/dist/test/cmd/contacts/commands.test.d.ts.map +1 -0
- package/dist/test/cmd/contacts/commands.test.js +51 -0
- package/dist/test/cmd/contacts/commands.test.js.map +1 -0
- package/dist/test/cmd/docs/commands.test.d.ts +2 -0
- package/dist/test/cmd/docs/commands.test.d.ts.map +1 -0
- package/dist/test/cmd/docs/commands.test.js +39 -0
- package/dist/test/cmd/docs/commands.test.js.map +1 -0
- package/dist/test/cmd/drive/commands.test.d.ts +2 -0
- package/dist/test/cmd/drive/commands.test.d.ts.map +1 -0
- package/dist/test/cmd/drive/commands.test.js +409 -0
- package/dist/test/cmd/drive/commands.test.js.map +1 -0
- package/dist/test/cmd/execution-context.test.d.ts +2 -0
- package/dist/test/cmd/execution-context.test.d.ts.map +1 -0
- package/dist/test/cmd/execution-context.test.js +29 -0
- package/dist/test/cmd/execution-context.test.js.map +1 -0
- package/dist/test/cmd/exit-codes/commands.test.d.ts +2 -0
- package/dist/test/cmd/exit-codes/commands.test.d.ts.map +1 -0
- package/dist/test/cmd/exit-codes/commands.test.js +19 -0
- package/dist/test/cmd/exit-codes/commands.test.js.map +1 -0
- package/dist/test/cmd/exit.test.d.ts +2 -0
- package/dist/test/cmd/exit.test.d.ts.map +1 -0
- package/dist/test/cmd/exit.test.js +14 -0
- package/dist/test/cmd/exit.test.js.map +1 -0
- package/dist/test/cmd/forms/commands.test.d.ts +2 -0
- package/dist/test/cmd/forms/commands.test.d.ts.map +1 -0
- package/dist/test/cmd/forms/commands.test.js +42 -0
- package/dist/test/cmd/forms/commands.test.js.map +1 -0
- package/dist/test/cmd/gmail/commands.test.d.ts +2 -0
- package/dist/test/cmd/gmail/commands.test.d.ts.map +1 -0
- package/dist/test/cmd/gmail/commands.test.js +315 -0
- package/dist/test/cmd/gmail/commands.test.js.map +1 -0
- package/dist/test/cmd/groups/commands.test.d.ts +2 -0
- package/dist/test/cmd/groups/commands.test.d.ts.map +1 -0
- package/dist/test/cmd/groups/commands.test.js +79 -0
- package/dist/test/cmd/groups/commands.test.js.map +1 -0
- package/dist/test/cmd/keep/commands.test.d.ts +2 -0
- package/dist/test/cmd/keep/commands.test.d.ts.map +1 -0
- package/dist/test/cmd/keep/commands.test.js +87 -0
- package/dist/test/cmd/keep/commands.test.js.map +1 -0
- package/dist/test/cmd/people/commands.test.d.ts +2 -0
- package/dist/test/cmd/people/commands.test.d.ts.map +1 -0
- package/dist/test/cmd/people/commands.test.js +52 -0
- package/dist/test/cmd/people/commands.test.js.map +1 -0
- package/dist/test/cmd/rewrite-desire-path-args.test.d.ts +2 -0
- package/dist/test/cmd/rewrite-desire-path-args.test.d.ts.map +1 -0
- package/dist/test/cmd/rewrite-desire-path-args.test.js +21 -0
- package/dist/test/cmd/rewrite-desire-path-args.test.js.map +1 -0
- package/dist/test/cmd/root.test.d.ts +2 -0
- package/dist/test/cmd/root.test.d.ts.map +1 -0
- package/dist/test/cmd/root.test.js +323 -0
- package/dist/test/cmd/root.test.js.map +1 -0
- package/dist/test/cmd/runtime-scopes.test.d.ts +2 -0
- package/dist/test/cmd/runtime-scopes.test.d.ts.map +1 -0
- package/dist/test/cmd/runtime-scopes.test.js +133 -0
- package/dist/test/cmd/runtime-scopes.test.js.map +1 -0
- package/dist/test/cmd/schema/commands.test.d.ts +2 -0
- package/dist/test/cmd/schema/commands.test.d.ts.map +1 -0
- package/dist/test/cmd/schema/commands.test.js +31 -0
- package/dist/test/cmd/schema/commands.test.js.map +1 -0
- package/dist/test/cmd/sheets/commands.test.d.ts +2 -0
- package/dist/test/cmd/sheets/commands.test.d.ts.map +1 -0
- package/dist/test/cmd/sheets/commands.test.js +39 -0
- package/dist/test/cmd/sheets/commands.test.js.map +1 -0
- package/dist/test/cmd/slides/commands.test.d.ts +2 -0
- package/dist/test/cmd/slides/commands.test.d.ts.map +1 -0
- package/dist/test/cmd/slides/commands.test.js +48 -0
- package/dist/test/cmd/slides/commands.test.js.map +1 -0
- package/dist/test/cmd/tasks/commands.test.d.ts +2 -0
- package/dist/test/cmd/tasks/commands.test.d.ts.map +1 -0
- package/dist/test/cmd/tasks/commands.test.js +74 -0
- package/dist/test/cmd/tasks/commands.test.js.map +1 -0
- package/dist/test/cmd/time/commands.test.d.ts +2 -0
- package/dist/test/cmd/time/commands.test.d.ts.map +1 -0
- package/dist/test/cmd/time/commands.test.js +52 -0
- package/dist/test/cmd/time/commands.test.js.map +1 -0
- package/dist/test/cmd/version/commands.test.d.ts +2 -0
- package/dist/test/cmd/version/commands.test.d.ts.map +1 -0
- package/dist/test/cmd/version/commands.test.js +12 -0
- package/dist/test/cmd/version/commands.test.js.map +1 -0
- package/dist/test/cmd/workspace/commands.test.d.ts +2 -0
- package/dist/test/cmd/workspace/commands.test.d.ts.map +1 -0
- package/dist/test/cmd/workspace/commands.test.js +285 -0
- package/dist/test/cmd/workspace/commands.test.js.map +1 -0
- package/dist/test/config/clients.test.d.ts +2 -0
- package/dist/test/config/clients.test.d.ts.map +1 -0
- package/dist/test/config/clients.test.js +42 -0
- package/dist/test/config/clients.test.js.map +1 -0
- package/dist/test/config/config.test.d.ts +2 -0
- package/dist/test/config/config.test.d.ts.map +1 -0
- package/dist/test/config/config.test.js +80 -0
- package/dist/test/config/config.test.js.map +1 -0
- package/dist/test/config/credentials.test.d.ts +2 -0
- package/dist/test/config/credentials.test.d.ts.map +1 -0
- package/dist/test/config/credentials.test.js +78 -0
- package/dist/test/config/credentials.test.js.map +1 -0
- package/dist/test/config/migration.test.d.ts +2 -0
- package/dist/test/config/migration.test.d.ts.map +1 -0
- package/dist/test/config/migration.test.js +136 -0
- package/dist/test/config/migration.test.js.map +1 -0
- package/dist/test/config/paths.test.d.ts +2 -0
- package/dist/test/config/paths.test.d.ts.map +1 -0
- package/dist/test/config/paths.test.js +31 -0
- package/dist/test/config/paths.test.js.map +1 -0
- package/dist/test/googleapi/auth-factory.test.d.ts +2 -0
- package/dist/test/googleapi/auth-factory.test.d.ts.map +1 -0
- package/dist/test/googleapi/auth-factory.test.js +215 -0
- package/dist/test/googleapi/auth-factory.test.js.map +1 -0
- package/dist/test/googleapi/circuitbreaker.test.d.ts +2 -0
- package/dist/test/googleapi/circuitbreaker.test.d.ts.map +1 -0
- package/dist/test/googleapi/circuitbreaker.test.js +30 -0
- package/dist/test/googleapi/circuitbreaker.test.js.map +1 -0
- package/dist/test/googleapi/client.test.d.ts +2 -0
- package/dist/test/googleapi/client.test.d.ts.map +1 -0
- package/dist/test/googleapi/client.test.js +16 -0
- package/dist/test/googleapi/client.test.js.map +1 -0
- package/dist/test/googleapi/errors.test.d.ts +2 -0
- package/dist/test/googleapi/errors.test.d.ts.map +1 -0
- package/dist/test/googleapi/errors.test.js +21 -0
- package/dist/test/googleapi/errors.test.js.map +1 -0
- package/dist/test/googleapi/transport.test.d.ts +2 -0
- package/dist/test/googleapi/transport.test.d.ts.map +1 -0
- package/dist/test/googleapi/transport.test.js +25 -0
- package/dist/test/googleapi/transport.test.js.map +1 -0
- package/dist/test/googleauth/oauth-flow.test.d.ts +2 -0
- package/dist/test/googleauth/oauth-flow.test.d.ts.map +1 -0
- package/dist/test/googleauth/oauth-flow.test.js +85 -0
- package/dist/test/googleauth/oauth-flow.test.js.map +1 -0
- package/dist/test/googleauth/service.test.d.ts +2 -0
- package/dist/test/googleauth/service.test.d.ts.map +1 -0
- package/dist/test/googleauth/service.test.js +51 -0
- package/dist/test/googleauth/service.test.js.map +1 -0
- package/dist/test/outfmt/outfmt.test.d.ts +2 -0
- package/dist/test/outfmt/outfmt.test.d.ts.map +1 -0
- package/dist/test/outfmt/outfmt.test.js +41 -0
- package/dist/test/outfmt/outfmt.test.js.map +1 -0
- package/dist/test/secrets/store.test.d.ts +2 -0
- package/dist/test/secrets/store.test.d.ts.map +1 -0
- package/dist/test/secrets/store.test.js +164 -0
- package/dist/test/secrets/store.test.js.map +1 -0
- package/dist/vitest.config.d.ts +3 -0
- package/dist/vitest.config.d.ts.map +1 -0
- package/dist/vitest.config.js +11 -0
- package/dist/vitest.config.js.map +1 -0
- package/logo.svg +16 -0
- package/package.json +69 -0
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import { google } from "googleapis";
|
|
2
|
+
import { ServiceRuntime } from "../../googleapi/auth-factory.js";
|
|
3
|
+
import { scopes } from "../../googleauth/service.js";
|
|
4
|
+
function toResponseStatus(response) {
|
|
5
|
+
switch (response) {
|
|
6
|
+
case "accepted":
|
|
7
|
+
return "accepted";
|
|
8
|
+
case "declined":
|
|
9
|
+
return "declined";
|
|
10
|
+
case "tentative":
|
|
11
|
+
return "tentative";
|
|
12
|
+
case "needsAction":
|
|
13
|
+
return "needsAction";
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
export function buildCalendarCommandDeps(options) {
|
|
17
|
+
const runtime = new ServiceRuntime(options);
|
|
18
|
+
return {
|
|
19
|
+
listEvents: async (query) => {
|
|
20
|
+
const auth = await runtime.getClient(scopes("calendar"));
|
|
21
|
+
const calendar = google.calendar({ version: "v3", auth });
|
|
22
|
+
const params = {
|
|
23
|
+
calendarId: "primary",
|
|
24
|
+
singleEvents: true,
|
|
25
|
+
orderBy: "startTime",
|
|
26
|
+
maxResults: 250,
|
|
27
|
+
};
|
|
28
|
+
if (query.from !== undefined) {
|
|
29
|
+
params.timeMin = query.from;
|
|
30
|
+
}
|
|
31
|
+
if (query.to !== undefined) {
|
|
32
|
+
params.timeMax = query.to;
|
|
33
|
+
}
|
|
34
|
+
const response = await calendar.events.list(params);
|
|
35
|
+
const items = response.data.items ?? [];
|
|
36
|
+
return items.map((event) => ({
|
|
37
|
+
id: event.id ?? "",
|
|
38
|
+
summary: event.summary ?? "(no title)",
|
|
39
|
+
start: event.start?.dateTime ?? event.start?.date ?? "",
|
|
40
|
+
}));
|
|
41
|
+
},
|
|
42
|
+
createEvent: async (input) => {
|
|
43
|
+
const auth = await runtime.getClient(scopes("calendar"));
|
|
44
|
+
const calendar = google.calendar({ version: "v3", auth });
|
|
45
|
+
const response = await calendar.events.insert({
|
|
46
|
+
calendarId: "primary",
|
|
47
|
+
requestBody: {
|
|
48
|
+
summary: input.summary,
|
|
49
|
+
start: { dateTime: input.start },
|
|
50
|
+
end: { dateTime: input.end },
|
|
51
|
+
},
|
|
52
|
+
});
|
|
53
|
+
return {
|
|
54
|
+
id: response.data.id ?? "",
|
|
55
|
+
created: response.status === 200,
|
|
56
|
+
};
|
|
57
|
+
},
|
|
58
|
+
updateEvent: async (input) => {
|
|
59
|
+
const auth = await runtime.getClient(scopes("calendar"));
|
|
60
|
+
const calendar = google.calendar({ version: "v3", auth });
|
|
61
|
+
const requestBody = {};
|
|
62
|
+
if (input.summary !== undefined) {
|
|
63
|
+
requestBody.summary = input.summary;
|
|
64
|
+
}
|
|
65
|
+
if (input.start !== undefined) {
|
|
66
|
+
requestBody.start = { dateTime: input.start };
|
|
67
|
+
}
|
|
68
|
+
if (input.end !== undefined) {
|
|
69
|
+
requestBody.end = { dateTime: input.end };
|
|
70
|
+
}
|
|
71
|
+
const response = await calendar.events.patch({
|
|
72
|
+
calendarId: "primary",
|
|
73
|
+
eventId: input.id,
|
|
74
|
+
requestBody,
|
|
75
|
+
});
|
|
76
|
+
return {
|
|
77
|
+
id: response.data.id ?? "",
|
|
78
|
+
updated: response.status === 200,
|
|
79
|
+
};
|
|
80
|
+
},
|
|
81
|
+
respondEvent: async (input) => {
|
|
82
|
+
const auth = await runtime.getClient(scopes("calendar"));
|
|
83
|
+
const calendar = google.calendar({ version: "v3", auth });
|
|
84
|
+
// Fetch the current event to find the authenticated user's attendee entry
|
|
85
|
+
const existing = await calendar.events.get({
|
|
86
|
+
calendarId: "primary",
|
|
87
|
+
eventId: input.id,
|
|
88
|
+
});
|
|
89
|
+
const attendees = existing.data.attendees ?? [];
|
|
90
|
+
const selfAttendee = attendees.find((a) => a.self === true);
|
|
91
|
+
if (selfAttendee === undefined) {
|
|
92
|
+
// If the user is not in the attendees list, add them with the response
|
|
93
|
+
attendees.push({
|
|
94
|
+
self: true,
|
|
95
|
+
responseStatus: toResponseStatus(input.response),
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
selfAttendee.responseStatus = toResponseStatus(input.response);
|
|
100
|
+
}
|
|
101
|
+
const response = await calendar.events.patch({
|
|
102
|
+
calendarId: "primary",
|
|
103
|
+
eventId: input.id,
|
|
104
|
+
requestBody: { attendees },
|
|
105
|
+
});
|
|
106
|
+
return {
|
|
107
|
+
id: response.data.id ?? "",
|
|
108
|
+
response: input.response,
|
|
109
|
+
applied: response.status === 200,
|
|
110
|
+
};
|
|
111
|
+
},
|
|
112
|
+
listConflicts: async (query) => {
|
|
113
|
+
const auth = await runtime.getClient(scopes("calendar"));
|
|
114
|
+
const calendar = google.calendar({ version: "v3", auth });
|
|
115
|
+
const params = {
|
|
116
|
+
calendarId: "primary",
|
|
117
|
+
singleEvents: true,
|
|
118
|
+
orderBy: "startTime",
|
|
119
|
+
maxResults: 250,
|
|
120
|
+
};
|
|
121
|
+
if (query.from !== undefined) {
|
|
122
|
+
params.timeMin = query.from;
|
|
123
|
+
}
|
|
124
|
+
if (query.to !== undefined) {
|
|
125
|
+
params.timeMax = query.to;
|
|
126
|
+
}
|
|
127
|
+
const response = await calendar.events.list(params);
|
|
128
|
+
const items = response.data.items ?? [];
|
|
129
|
+
// Sort by start time and detect pairwise overlaps
|
|
130
|
+
const sorted = items
|
|
131
|
+
.filter((e) => e.start?.dateTime !== undefined && e.end?.dateTime !== undefined)
|
|
132
|
+
.sort((a, b) => {
|
|
133
|
+
const aStart = a.start.dateTime;
|
|
134
|
+
const bStart = b.start.dateTime;
|
|
135
|
+
return aStart < bStart ? -1 : aStart > bStart ? 1 : 0;
|
|
136
|
+
});
|
|
137
|
+
const conflicts = [];
|
|
138
|
+
for (let i = 0; i < sorted.length; i++) {
|
|
139
|
+
const a = sorted[i];
|
|
140
|
+
for (let j = i + 1; j < sorted.length; j++) {
|
|
141
|
+
const b = sorted[j];
|
|
142
|
+
const aEnd = a.end.dateTime;
|
|
143
|
+
const bStart = b.start.dateTime;
|
|
144
|
+
// If b starts at or after a ends, no overlap (and no further overlaps since sorted)
|
|
145
|
+
if (bStart >= aEnd)
|
|
146
|
+
break;
|
|
147
|
+
const bEnd = b.end.dateTime;
|
|
148
|
+
const aStart = a.start.dateTime;
|
|
149
|
+
// Overlap exists: compute the intersection
|
|
150
|
+
const overlapStart = aStart > bStart ? aStart : bStart;
|
|
151
|
+
const overlapEnd = aEnd < bEnd ? aEnd : bEnd;
|
|
152
|
+
conflicts.push({
|
|
153
|
+
firstId: a.id ?? "",
|
|
154
|
+
secondId: b.id ?? "",
|
|
155
|
+
overlapStart,
|
|
156
|
+
overlapEnd,
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
return conflicts;
|
|
161
|
+
},
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../../src/cmd/calendar/runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { Command } from "commander";
|
|
2
|
+
import type { OutputMode } from "../../outfmt/outfmt.js";
|
|
3
|
+
export type ChatMessage = {
|
|
4
|
+
id: string;
|
|
5
|
+
text: string;
|
|
6
|
+
};
|
|
7
|
+
export type ChatSpace = {
|
|
8
|
+
id: string;
|
|
9
|
+
displayName: string;
|
|
10
|
+
};
|
|
11
|
+
export type ChatCommandDeps = {
|
|
12
|
+
ensureWorkspace?: () => Promise<void>;
|
|
13
|
+
listSpaces?: () => Promise<ChatSpace[]>;
|
|
14
|
+
getSpace?: (spaceId: string) => Promise<ChatSpace>;
|
|
15
|
+
createSpace?: (displayName: string) => Promise<{
|
|
16
|
+
id: string;
|
|
17
|
+
created: boolean;
|
|
18
|
+
}>;
|
|
19
|
+
listMessages?: (spaceId: string) => Promise<ChatMessage[]>;
|
|
20
|
+
sendMessage?: (spaceId: string, text: string) => Promise<{
|
|
21
|
+
id: string;
|
|
22
|
+
sent: boolean;
|
|
23
|
+
}>;
|
|
24
|
+
};
|
|
25
|
+
export declare function formatChatMessages(messages: ChatMessage[], mode: OutputMode): string;
|
|
26
|
+
export declare function registerChatCommands(chatCommand: Command, deps?: ChatCommandDeps): void;
|
|
27
|
+
//# sourceMappingURL=commands.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../../../src/cmd/chat/commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAIzD,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,eAAe,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IACxC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;IACnD,WAAW,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACjF,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAC3D,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CACzF,CAAC;AAmBF,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM,CAQpF;AAED,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,OAAO,EAAE,IAAI,GAAE,eAAoB,GAAG,IAAI,CAyF3F"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { toCliApiErrorMessage } from "../../googleapi/errors.js";
|
|
2
|
+
import { buildExecutionContext } from "../execution-context.js";
|
|
3
|
+
const defaultDeps = {
|
|
4
|
+
ensureWorkspace: async () => undefined,
|
|
5
|
+
listSpaces: async () => [],
|
|
6
|
+
getSpace: async (spaceId) => ({ id: spaceId, displayName: "" }),
|
|
7
|
+
createSpace: async () => ({ id: "", created: false }),
|
|
8
|
+
listMessages: async () => [],
|
|
9
|
+
sendMessage: async () => ({ id: "", sent: false }),
|
|
10
|
+
};
|
|
11
|
+
async function runWithStableApiError(service, call) {
|
|
12
|
+
try {
|
|
13
|
+
return await call();
|
|
14
|
+
}
|
|
15
|
+
catch (error) {
|
|
16
|
+
throw new Error(toCliApiErrorMessage(service, error), { cause: error });
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
export function formatChatMessages(messages, mode) {
|
|
20
|
+
if (mode === "json") {
|
|
21
|
+
return JSON.stringify({ messages }, null, 2);
|
|
22
|
+
}
|
|
23
|
+
if (messages.length === 0) {
|
|
24
|
+
return "No messages found";
|
|
25
|
+
}
|
|
26
|
+
return messages.map((message) => `${message.id}\t${message.text}`).join("\n");
|
|
27
|
+
}
|
|
28
|
+
export function registerChatCommands(chatCommand, deps = {}) {
|
|
29
|
+
const resolvedDeps = {
|
|
30
|
+
...defaultDeps,
|
|
31
|
+
...deps,
|
|
32
|
+
};
|
|
33
|
+
chatCommand
|
|
34
|
+
.command("spaces")
|
|
35
|
+
.description("List chat spaces")
|
|
36
|
+
.action(async function actionSpaces() {
|
|
37
|
+
const rootOptions = this.optsWithGlobals();
|
|
38
|
+
const ctx = buildExecutionContext(rootOptions);
|
|
39
|
+
await resolvedDeps.ensureWorkspace();
|
|
40
|
+
const spaces = await runWithStableApiError("chat", () => resolvedDeps.listSpaces());
|
|
41
|
+
if (ctx.output.mode === "json") {
|
|
42
|
+
process.stdout.write(`${JSON.stringify({ spaces }, null, 2)}\n`);
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
if (spaces.length === 0) {
|
|
46
|
+
process.stdout.write("No spaces found\n");
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
process.stdout.write(spaces.map((space) => `${space.id}\t${space.displayName}`).join("\n") + "\n");
|
|
50
|
+
});
|
|
51
|
+
chatCommand
|
|
52
|
+
.command("get-space")
|
|
53
|
+
.description("Get chat space")
|
|
54
|
+
.requiredOption("--space <spaceId>", "Space id")
|
|
55
|
+
.action(async function actionGetSpace() {
|
|
56
|
+
const rootOptions = this.optsWithGlobals();
|
|
57
|
+
const ctx = buildExecutionContext(rootOptions);
|
|
58
|
+
const opts = this.opts();
|
|
59
|
+
await resolvedDeps.ensureWorkspace();
|
|
60
|
+
const space = await runWithStableApiError("chat", () => resolvedDeps.getSpace(opts.space));
|
|
61
|
+
if (ctx.output.mode === "json") {
|
|
62
|
+
process.stdout.write(`${JSON.stringify(space, null, 2)}\n`);
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
process.stdout.write(`${space.id}\t${space.displayName}\n`);
|
|
66
|
+
});
|
|
67
|
+
chatCommand
|
|
68
|
+
.command("create-space")
|
|
69
|
+
.description("Create chat space")
|
|
70
|
+
.requiredOption("--name <displayName>", "Space display name")
|
|
71
|
+
.action(async function actionCreateSpace() {
|
|
72
|
+
const rootOptions = this.optsWithGlobals();
|
|
73
|
+
const ctx = buildExecutionContext(rootOptions);
|
|
74
|
+
const opts = this.opts();
|
|
75
|
+
await resolvedDeps.ensureWorkspace();
|
|
76
|
+
const result = await runWithStableApiError("chat", () => resolvedDeps.createSpace(opts.name));
|
|
77
|
+
if (ctx.output.mode === "json") {
|
|
78
|
+
process.stdout.write(`${JSON.stringify(result, null, 2)}\n`);
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
process.stdout.write(result.created ? `Space created (${result.id || "unknown"})\n` : "Space create was not applied\n");
|
|
82
|
+
});
|
|
83
|
+
chatCommand
|
|
84
|
+
.command("messages")
|
|
85
|
+
.description("List chat messages in a space")
|
|
86
|
+
.requiredOption("--space <spaceId>", "Space id")
|
|
87
|
+
.action(async function actionMessages() {
|
|
88
|
+
const rootOptions = this.optsWithGlobals();
|
|
89
|
+
const ctx = buildExecutionContext(rootOptions);
|
|
90
|
+
const opts = this.opts();
|
|
91
|
+
await resolvedDeps.ensureWorkspace();
|
|
92
|
+
const messages = await runWithStableApiError("chat", () => resolvedDeps.listMessages(opts.space));
|
|
93
|
+
process.stdout.write(`${formatChatMessages(messages, ctx.output.mode)}\n`);
|
|
94
|
+
});
|
|
95
|
+
chatCommand
|
|
96
|
+
.command("send")
|
|
97
|
+
.description("Send chat message")
|
|
98
|
+
.requiredOption("--space <spaceId>", "Space id")
|
|
99
|
+
.requiredOption("--text <text>", "Message text")
|
|
100
|
+
.action(async function actionSend() {
|
|
101
|
+
const rootOptions = this.optsWithGlobals();
|
|
102
|
+
const ctx = buildExecutionContext(rootOptions);
|
|
103
|
+
const opts = this.opts();
|
|
104
|
+
await resolvedDeps.ensureWorkspace();
|
|
105
|
+
const result = await runWithStableApiError("chat", () => resolvedDeps.sendMessage(opts.space, opts.text));
|
|
106
|
+
if (ctx.output.mode === "json") {
|
|
107
|
+
process.stdout.write(`${JSON.stringify(result, null, 2)}\n`);
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
process.stdout.write(result.sent ? `Message sent (${result.id || "unknown"})\n` : "Message send was not applied\n");
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../../../src/cmd/chat/commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type ServiceRuntimeOptions } from "../../googleapi/auth-factory.js";
|
|
2
|
+
import type { ChatCommandDeps } from "./commands.js";
|
|
3
|
+
export declare function buildChatCommandDeps(options: ServiceRuntimeOptions): Required<ChatCommandDeps>;
|
|
4
|
+
//# sourceMappingURL=runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../../src/cmd/chat/runtime.ts"],"names":[],"mappings":"AAEA,OAAO,EAAkB,KAAK,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAE7F,OAAO,KAAK,EAAE,eAAe,EAA0B,MAAM,eAAe,CAAC;AAE7E,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,qBAAqB,GAAG,QAAQ,CAAC,eAAe,CAAC,CA8E9F"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { google } from "googleapis";
|
|
2
|
+
import { ServiceRuntime } from "../../googleapi/auth-factory.js";
|
|
3
|
+
import { scopes } from "../../googleauth/service.js";
|
|
4
|
+
export function buildChatCommandDeps(options) {
|
|
5
|
+
const runtime = new ServiceRuntime(options);
|
|
6
|
+
return {
|
|
7
|
+
ensureWorkspace: async () => {
|
|
8
|
+
await runtime.getClient(scopes("chat"));
|
|
9
|
+
},
|
|
10
|
+
listSpaces: async () => {
|
|
11
|
+
const auth = await runtime.getClient(scopes("chat"));
|
|
12
|
+
const chat = google.chat({ version: "v1", auth });
|
|
13
|
+
const response = await chat.spaces.list();
|
|
14
|
+
const spaces = response.data.spaces ?? [];
|
|
15
|
+
return spaces.map((space) => ({
|
|
16
|
+
id: space.name ?? "",
|
|
17
|
+
displayName: space.displayName ?? "",
|
|
18
|
+
}));
|
|
19
|
+
},
|
|
20
|
+
getSpace: async (spaceId) => {
|
|
21
|
+
const auth = await runtime.getClient(scopes("chat"));
|
|
22
|
+
const chat = google.chat({ version: "v1", auth });
|
|
23
|
+
const response = await chat.spaces.get({ name: spaceId });
|
|
24
|
+
return {
|
|
25
|
+
id: response.data.name ?? "",
|
|
26
|
+
displayName: response.data.displayName ?? "",
|
|
27
|
+
};
|
|
28
|
+
},
|
|
29
|
+
createSpace: async (displayName) => {
|
|
30
|
+
const auth = await runtime.getClient(scopes("chat"));
|
|
31
|
+
const chat = google.chat({ version: "v1", auth });
|
|
32
|
+
const response = await chat.spaces.create({
|
|
33
|
+
requestBody: {
|
|
34
|
+
displayName,
|
|
35
|
+
spaceType: "SPACE",
|
|
36
|
+
},
|
|
37
|
+
});
|
|
38
|
+
return {
|
|
39
|
+
id: response.data.name ?? "",
|
|
40
|
+
created: response.status === 200,
|
|
41
|
+
};
|
|
42
|
+
},
|
|
43
|
+
listMessages: async (spaceId) => {
|
|
44
|
+
const auth = await runtime.getClient(scopes("chat"));
|
|
45
|
+
const chat = google.chat({ version: "v1", auth });
|
|
46
|
+
const response = await chat.spaces.messages.list({ parent: spaceId });
|
|
47
|
+
const messages = response.data.messages ?? [];
|
|
48
|
+
return messages.map((message) => ({
|
|
49
|
+
id: message.name ?? "",
|
|
50
|
+
text: message.text ?? "",
|
|
51
|
+
}));
|
|
52
|
+
},
|
|
53
|
+
sendMessage: async (spaceId, text) => {
|
|
54
|
+
const auth = await runtime.getClient(scopes("chat"));
|
|
55
|
+
const chat = google.chat({ version: "v1", auth });
|
|
56
|
+
const response = await chat.spaces.messages.create({
|
|
57
|
+
parent: spaceId,
|
|
58
|
+
requestBody: { text },
|
|
59
|
+
});
|
|
60
|
+
return {
|
|
61
|
+
id: response.data.name ?? "",
|
|
62
|
+
sent: response.status === 200,
|
|
63
|
+
};
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../../src/cmd/chat/runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { Command } from "commander";
|
|
2
|
+
import type { OutputMode } from "../../outfmt/outfmt.js";
|
|
3
|
+
export type ClassroomCourse = {
|
|
4
|
+
id: string;
|
|
5
|
+
name: string;
|
|
6
|
+
};
|
|
7
|
+
export type ClassroomCommandDeps = {
|
|
8
|
+
ensureWorkspace?: () => Promise<void>;
|
|
9
|
+
listCourses?: () => Promise<ClassroomCourse[]>;
|
|
10
|
+
getCourse?: (courseId: string) => Promise<ClassroomCourse>;
|
|
11
|
+
createCourse?: (name: string) => Promise<{
|
|
12
|
+
id: string;
|
|
13
|
+
created: boolean;
|
|
14
|
+
}>;
|
|
15
|
+
listSubmissions?: (courseId: string) => Promise<Array<{
|
|
16
|
+
id: string;
|
|
17
|
+
state: string;
|
|
18
|
+
}>>;
|
|
19
|
+
};
|
|
20
|
+
export declare function formatClassroomCourses(courses: ClassroomCourse[], mode: OutputMode): string;
|
|
21
|
+
export declare function registerClassroomCommands(classroomCommand: Command, deps?: ClassroomCommandDeps): void;
|
|
22
|
+
//# sourceMappingURL=commands.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../../../src/cmd/classroom/commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAIzD,MAAM,MAAM,eAAe,GAAG;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,eAAe,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IAC/C,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;IAC3D,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC3E,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;CACvF,CAAC;AAkBF,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,eAAe,EAAE,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM,CAQ3F;AAED,wBAAgB,yBAAyB,CAAC,gBAAgB,EAAE,OAAO,EAAE,IAAI,GAAE,oBAAyB,GAAG,IAAI,CAmE1G"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { toCliApiErrorMessage } from "../../googleapi/errors.js";
|
|
2
|
+
import { buildExecutionContext } from "../execution-context.js";
|
|
3
|
+
const defaultDeps = {
|
|
4
|
+
ensureWorkspace: async () => undefined,
|
|
5
|
+
listCourses: async () => [],
|
|
6
|
+
getCourse: async (courseId) => ({ id: courseId, name: "" }),
|
|
7
|
+
createCourse: async () => ({ id: "", created: false }),
|
|
8
|
+
listSubmissions: async () => [],
|
|
9
|
+
};
|
|
10
|
+
async function runWithStableApiError(service, call) {
|
|
11
|
+
try {
|
|
12
|
+
return await call();
|
|
13
|
+
}
|
|
14
|
+
catch (error) {
|
|
15
|
+
throw new Error(toCliApiErrorMessage(service, error), { cause: error });
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
export function formatClassroomCourses(courses, mode) {
|
|
19
|
+
if (mode === "json") {
|
|
20
|
+
return JSON.stringify({ courses }, null, 2);
|
|
21
|
+
}
|
|
22
|
+
if (courses.length === 0) {
|
|
23
|
+
return "No courses found";
|
|
24
|
+
}
|
|
25
|
+
return courses.map((course) => `${course.id}\t${course.name}`).join("\n");
|
|
26
|
+
}
|
|
27
|
+
export function registerClassroomCommands(classroomCommand, deps = {}) {
|
|
28
|
+
const resolvedDeps = {
|
|
29
|
+
...defaultDeps,
|
|
30
|
+
...deps,
|
|
31
|
+
};
|
|
32
|
+
classroomCommand
|
|
33
|
+
.command("courses")
|
|
34
|
+
.description("List courses")
|
|
35
|
+
.action(async function actionCourses() {
|
|
36
|
+
const rootOptions = this.optsWithGlobals();
|
|
37
|
+
const ctx = buildExecutionContext(rootOptions);
|
|
38
|
+
await resolvedDeps.ensureWorkspace();
|
|
39
|
+
const courses = await runWithStableApiError("classroom", () => resolvedDeps.listCourses());
|
|
40
|
+
process.stdout.write(`${formatClassroomCourses(courses, ctx.output.mode)}\n`);
|
|
41
|
+
});
|
|
42
|
+
classroomCommand
|
|
43
|
+
.command("get-course")
|
|
44
|
+
.description("Get course")
|
|
45
|
+
.requiredOption("--course <courseId>", "Course id")
|
|
46
|
+
.action(async function actionGetCourse() {
|
|
47
|
+
const rootOptions = this.optsWithGlobals();
|
|
48
|
+
const ctx = buildExecutionContext(rootOptions);
|
|
49
|
+
const opts = this.opts();
|
|
50
|
+
await resolvedDeps.ensureWorkspace();
|
|
51
|
+
const course = await runWithStableApiError("classroom", () => resolvedDeps.getCourse(opts.course));
|
|
52
|
+
process.stdout.write(`${formatClassroomCourses([course], ctx.output.mode)}\n`);
|
|
53
|
+
});
|
|
54
|
+
classroomCommand
|
|
55
|
+
.command("create-course")
|
|
56
|
+
.description("Create course")
|
|
57
|
+
.requiredOption("--name <name>", "Course name")
|
|
58
|
+
.action(async function actionCreateCourse() {
|
|
59
|
+
const rootOptions = this.optsWithGlobals();
|
|
60
|
+
const ctx = buildExecutionContext(rootOptions);
|
|
61
|
+
const opts = this.opts();
|
|
62
|
+
await resolvedDeps.ensureWorkspace();
|
|
63
|
+
const result = await runWithStableApiError("classroom", () => resolvedDeps.createCourse(opts.name));
|
|
64
|
+
if (ctx.output.mode === "json") {
|
|
65
|
+
process.stdout.write(`${JSON.stringify(result, null, 2)}\n`);
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
process.stdout.write(result.created ? `Course created (${result.id || "unknown"})\n` : "Course create was not applied\n");
|
|
69
|
+
});
|
|
70
|
+
classroomCommand
|
|
71
|
+
.command("submissions")
|
|
72
|
+
.description("List submissions for a course")
|
|
73
|
+
.requiredOption("--course <courseId>", "Course id")
|
|
74
|
+
.action(async function actionSubmissions() {
|
|
75
|
+
const rootOptions = this.optsWithGlobals();
|
|
76
|
+
const ctx = buildExecutionContext(rootOptions);
|
|
77
|
+
const opts = this.opts();
|
|
78
|
+
await resolvedDeps.ensureWorkspace();
|
|
79
|
+
const submissions = await runWithStableApiError("classroom", () => resolvedDeps.listSubmissions(opts.course));
|
|
80
|
+
if (ctx.output.mode === "json") {
|
|
81
|
+
process.stdout.write(`${JSON.stringify({ submissions }, null, 2)}\n`);
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
if (submissions.length === 0) {
|
|
85
|
+
process.stdout.write("No submissions found\n");
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
process.stdout.write(submissions.map((s) => `${s.id}\t${s.state}`).join("\n") + "\n");
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../../../src/cmd/classroom/commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type ServiceRuntimeOptions } from "../../googleapi/auth-factory.js";
|
|
2
|
+
import type { ClassroomCommandDeps } from "./commands.js";
|
|
3
|
+
export declare function buildClassroomCommandDeps(options: ServiceRuntimeOptions): Required<ClassroomCommandDeps>;
|
|
4
|
+
//# sourceMappingURL=runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../../src/cmd/classroom/runtime.ts"],"names":[],"mappings":"AAEA,OAAO,EAAkB,KAAK,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAE7F,OAAO,KAAK,EAAE,oBAAoB,EAAmB,MAAM,eAAe,CAAC;AAE3E,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,qBAAqB,GAAG,QAAQ,CAAC,oBAAoB,CAAC,CA8ExG"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { google } from "googleapis";
|
|
2
|
+
import { ServiceRuntime } from "../../googleapi/auth-factory.js";
|
|
3
|
+
import { scopes } from "../../googleauth/service.js";
|
|
4
|
+
export function buildClassroomCommandDeps(options) {
|
|
5
|
+
const runtime = new ServiceRuntime(options);
|
|
6
|
+
return {
|
|
7
|
+
ensureWorkspace: async () => {
|
|
8
|
+
await runtime.getClient(scopes("classroom"));
|
|
9
|
+
},
|
|
10
|
+
listCourses: async () => {
|
|
11
|
+
const auth = await runtime.getClient(scopes("classroom"));
|
|
12
|
+
const classroom = google.classroom({ version: "v1", auth });
|
|
13
|
+
const response = await classroom.courses.list();
|
|
14
|
+
const courses = response.data.courses ?? [];
|
|
15
|
+
return courses.map((course) => ({
|
|
16
|
+
id: course.id ?? "",
|
|
17
|
+
name: course.name ?? "",
|
|
18
|
+
}));
|
|
19
|
+
},
|
|
20
|
+
getCourse: async (courseId) => {
|
|
21
|
+
const auth = await runtime.getClient(scopes("classroom"));
|
|
22
|
+
const classroom = google.classroom({ version: "v1", auth });
|
|
23
|
+
const response = await classroom.courses.get({ id: courseId });
|
|
24
|
+
return {
|
|
25
|
+
id: response.data.id ?? "",
|
|
26
|
+
name: response.data.name ?? "",
|
|
27
|
+
};
|
|
28
|
+
},
|
|
29
|
+
createCourse: async (name) => {
|
|
30
|
+
const auth = await runtime.getClient(scopes("classroom"));
|
|
31
|
+
const classroom = google.classroom({ version: "v1", auth });
|
|
32
|
+
const response = await classroom.courses.create({
|
|
33
|
+
requestBody: { name, ownerId: "me" },
|
|
34
|
+
});
|
|
35
|
+
return {
|
|
36
|
+
id: response.data.id ?? "",
|
|
37
|
+
created: response.status === 200,
|
|
38
|
+
};
|
|
39
|
+
},
|
|
40
|
+
listSubmissions: async (courseId) => {
|
|
41
|
+
const auth = await runtime.getClient(scopes("classroom"));
|
|
42
|
+
const classroom = google.classroom({ version: "v1", auth });
|
|
43
|
+
const courseWorkResponse = await classroom.courses.courseWork.list({
|
|
44
|
+
courseId,
|
|
45
|
+
});
|
|
46
|
+
const courseWorkItems = courseWorkResponse.data.courseWork ?? [];
|
|
47
|
+
const submissions = [];
|
|
48
|
+
for (const work of courseWorkItems) {
|
|
49
|
+
if (work.id == null)
|
|
50
|
+
continue;
|
|
51
|
+
const submissionsResponse = await classroom.courses.courseWork.studentSubmissions.list({
|
|
52
|
+
courseId,
|
|
53
|
+
courseWorkId: work.id,
|
|
54
|
+
});
|
|
55
|
+
const studentSubmissions = submissionsResponse.data.studentSubmissions ?? [];
|
|
56
|
+
for (const submission of studentSubmissions) {
|
|
57
|
+
submissions.push({
|
|
58
|
+
id: submission.id ?? "",
|
|
59
|
+
state: submission.state ?? "",
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return submissions;
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../../src/cmd/classroom/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEpC,OAAO,EAAE,cAAc,EAA8B,MAAM,iCAAiC,CAAC;AAC7F,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAGrD,MAAM,UAAU,yBAAyB,CAAC,OAA8B;IACtE,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC,CAAC;IAE5C,OAAO;QACL,eAAe,EAAE,KAAK,IAAI,EAAE;YAC1B,MAAM,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;QAC/C,CAAC;QAED,WAAW,EAAE,KAAK,IAAgC,EAAE;YAClD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;YAC1D,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAE5D,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAChD,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;YAE5C,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;gBAC9B,EAAE,EAAE,MAAM,CAAC,EAAE,IAAI,EAAE;gBACnB,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE;aACxB,CAAC,CAAC,CAAC;QACN,CAAC;QAED,SAAS,EAAE,KAAK,EAAE,QAAgB,EAA4B,EAAE;YAC9D,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;YAC1D,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAE5D,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;YAE/D,OAAO;gBACL,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE;gBAC1B,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE;aAC/B,CAAC;QACJ,CAAC;QAED,YAAY,EAAE,KAAK,EAAE,IAAY,EAA6C,EAAE;YAC9E,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;YAC1D,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAE5D,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC;gBAC9C,WAAW,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE;aACrC,CAAC,CAAC;YAEH,OAAO;gBACL,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE;gBAC1B,OAAO,EAAE,QAAQ,CAAC,MAAM,KAAK,GAAG;aACjC,CAAC;QACJ,CAAC;QAED,eAAe,EAAE,KAAK,EAAE,QAAgB,EAAiD,EAAE;YACzF,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;YAC1D,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAE5D,MAAM,kBAAkB,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC;gBACjE,QAAQ;aACT,CAAC,CAAC;YACH,MAAM,eAAe,GAAG,kBAAkB,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC;YAEjE,MAAM,WAAW,GAAyC,EAAE,CAAC;YAE7D,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC;gBACnC,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI;oBAAE,SAAS;gBAE9B,MAAM,mBAAmB,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC;oBACrF,QAAQ;oBACR,YAAY,EAAE,IAAI,CAAC,EAAE;iBACtB,CAAC,CAAC;gBACH,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,IAAI,CAAC,kBAAkB,IAAI,EAAE,CAAC;gBAE7E,KAAK,MAAM,UAAU,IAAI,kBAAkB,EAAE,CAAC;oBAC5C,WAAW,CAAC,IAAI,CAAC;wBACf,EAAE,EAAE,UAAU,CAAC,EAAE,IAAI,EAAE;wBACvB,KAAK,EAAE,UAAU,CAAC,KAAK,IAAI,EAAE;qBAC9B,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,OAAO,WAAW,CAAC;QACrB,CAAC;KACF,CAAC;AACJ,CAAC"}
|