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,88 @@
|
|
|
1
|
+
import { google } from "googleapis";
|
|
2
|
+
import { readClientCredentialsFor } from "../config/credentials.js";
|
|
3
|
+
import { resolveClientWithOverride } from "../authclient/authclient.js";
|
|
4
|
+
import { KeyringStore, EncryptedFileBackend } from "../secrets/store.js";
|
|
5
|
+
import { AuthRequiredError } from "./errors.js";
|
|
6
|
+
import { credentialsEncPath } from "../config/paths.js";
|
|
7
|
+
/**
|
|
8
|
+
* Creates an authenticated client from stored credentials.
|
|
9
|
+
*
|
|
10
|
+
* Two paths:
|
|
11
|
+
* - Service Account (JWT): When resolver returns serviceAccount, uses google.auth.JWT
|
|
12
|
+
* with optional domain-wide delegation (impersonate → subject).
|
|
13
|
+
* - OAuth2: When no serviceAccount, uses stored refresh tokens + client credentials.
|
|
14
|
+
*/
|
|
15
|
+
export async function createAuthenticatedClient(resolveAccount, options = {}) {
|
|
16
|
+
const store = options.store ?? new KeyringStore(new EncryptedFileBackend(credentialsEncPath()));
|
|
17
|
+
const readCreds = options.readCredentials ?? readClientCredentialsFor;
|
|
18
|
+
const resolved = await resolveAccount();
|
|
19
|
+
const { email, clientOverride } = resolved;
|
|
20
|
+
const sa = resolved.serviceAccount ?? "";
|
|
21
|
+
const impersonate = resolved.impersonate ?? "";
|
|
22
|
+
if (email === "" && sa === "") {
|
|
23
|
+
throw new AuthRequiredError("api", "", "", new Error("no account specified; use --account <email> or --sa <email> or log in first"));
|
|
24
|
+
}
|
|
25
|
+
// Service Account (JWT) path
|
|
26
|
+
if (sa !== "") {
|
|
27
|
+
let saKeyJson;
|
|
28
|
+
if (options.readServiceAccountKey) {
|
|
29
|
+
const saKey = await options.readServiceAccountKey(sa);
|
|
30
|
+
saKeyJson = JSON.stringify(saKey);
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
saKeyJson = await store.getServiceAccountKey(sa);
|
|
34
|
+
}
|
|
35
|
+
if (!saKeyJson) {
|
|
36
|
+
throw new Error(`no service account key found for ${sa}; run: typee auth add-sa --key-file <key.json>`);
|
|
37
|
+
}
|
|
38
|
+
const saKey = JSON.parse(saKeyJson);
|
|
39
|
+
if (saKey.type !== "service_account") {
|
|
40
|
+
throw new Error(`key for ${sa} is not a service account key`);
|
|
41
|
+
}
|
|
42
|
+
const scopes = options.scopes ?? [];
|
|
43
|
+
const jwtOptions = {
|
|
44
|
+
email: saKey.client_email,
|
|
45
|
+
key: saKey.private_key,
|
|
46
|
+
scopes,
|
|
47
|
+
};
|
|
48
|
+
if (impersonate !== "") {
|
|
49
|
+
jwtOptions.subject = impersonate;
|
|
50
|
+
}
|
|
51
|
+
const jwtClient = new google.auth.JWT(jwtOptions);
|
|
52
|
+
return jwtClient;
|
|
53
|
+
}
|
|
54
|
+
// OAuth2 path
|
|
55
|
+
const client = await resolveClientWithOverride(email, clientOverride);
|
|
56
|
+
const credentials = await readCreds(client);
|
|
57
|
+
let token;
|
|
58
|
+
try {
|
|
59
|
+
token = await store.getToken(client, email);
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
throw new AuthRequiredError("api", email, client, new Error(`no token found for ${email}; run: typee login --email ${email}`));
|
|
63
|
+
}
|
|
64
|
+
const oauth2Client = new google.auth.OAuth2(credentials.clientId, credentials.clientSecret);
|
|
65
|
+
oauth2Client.setCredentials({ refresh_token: token.refreshToken });
|
|
66
|
+
return oauth2Client;
|
|
67
|
+
}
|
|
68
|
+
export class ServiceRuntime {
|
|
69
|
+
store;
|
|
70
|
+
readCredentials;
|
|
71
|
+
readServiceAccountKey;
|
|
72
|
+
resolveAccount;
|
|
73
|
+
constructor(options) {
|
|
74
|
+
this.store = options.store ?? new KeyringStore(new EncryptedFileBackend(credentialsEncPath()));
|
|
75
|
+
this.readCredentials = options.readCredentials ?? readClientCredentialsFor;
|
|
76
|
+
this.readServiceAccountKey = options.readServiceAccountKey;
|
|
77
|
+
this.resolveAccount = options.resolveAccount;
|
|
78
|
+
}
|
|
79
|
+
async getClient(scopes) {
|
|
80
|
+
return createAuthenticatedClient(this.resolveAccount, {
|
|
81
|
+
store: this.store,
|
|
82
|
+
readCredentials: this.readCredentials,
|
|
83
|
+
readServiceAccountKey: this.readServiceAccountKey,
|
|
84
|
+
scopes,
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=auth-factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-factory.js","sourceRoot":"","sources":["../../../src/googleapi/auth-factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../../../src/googleapi/calendar.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG,UAAU,GAAG,WAAW,GAAG,aAAa,CAAC;AAerF,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAOzE"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
const responseAliases = {
|
|
2
|
+
accept: "accepted",
|
|
3
|
+
accepted: "accepted",
|
|
4
|
+
yes: "accepted",
|
|
5
|
+
decline: "declined",
|
|
6
|
+
declined: "declined",
|
|
7
|
+
no: "declined",
|
|
8
|
+
tentative: "tentative",
|
|
9
|
+
maybe: "tentative",
|
|
10
|
+
needsaction: "needsAction",
|
|
11
|
+
"needs-action": "needsAction",
|
|
12
|
+
};
|
|
13
|
+
export function normalizeCalendarResponse(input) {
|
|
14
|
+
const key = input.trim().toLowerCase();
|
|
15
|
+
const normalized = responseAliases[key];
|
|
16
|
+
if (normalized === undefined) {
|
|
17
|
+
throw new Error("response must be one of: accepted, declined, tentative, needsAction");
|
|
18
|
+
}
|
|
19
|
+
return normalized;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=calendar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calendar.js","sourceRoot":"","sources":["../../../src/googleapi/calendar.ts"],"names":[],"mappings":"AAEA,MAAM,eAAe,GAAqC;IACxD,MAAM,EAAE,UAAU;IAClB,QAAQ,EAAE,UAAU;IACpB,GAAG,EAAE,UAAU;IACf,OAAO,EAAE,UAAU;IACnB,QAAQ,EAAE,UAAU;IACpB,EAAE,EAAE,UAAU;IACd,SAAS,EAAE,WAAW;IACtB,KAAK,EAAE,WAAW;IAClB,WAAW,EAAE,aAAa;IAC1B,cAAc,EAAE,aAAa;CAC9B,CAAC;AAEF,MAAM,UAAU,yBAAyB,CAAC,KAAa;IACrD,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACvC,MAAM,UAAU,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;IACzF,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export type CircuitBreakerOptions = {
|
|
2
|
+
threshold?: number;
|
|
3
|
+
resetMs?: number;
|
|
4
|
+
now?: () => number;
|
|
5
|
+
};
|
|
6
|
+
export declare class CircuitBreaker {
|
|
7
|
+
private failures;
|
|
8
|
+
private open;
|
|
9
|
+
private lastFailure;
|
|
10
|
+
private readonly threshold;
|
|
11
|
+
private readonly resetMs;
|
|
12
|
+
private readonly now;
|
|
13
|
+
constructor(opts?: CircuitBreakerOptions);
|
|
14
|
+
recordSuccess(): void;
|
|
15
|
+
recordFailure(): boolean;
|
|
16
|
+
isOpen(): boolean;
|
|
17
|
+
state(): "open" | "closed";
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=circuitbreaker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"circuitbreaker.d.ts","sourceRoot":"","sources":["../../../src/googleapi/circuitbreaker.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,qBAAqB,GAAG;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB,CAAC;AAEF,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,WAAW,CAAK;IAExB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;gBAEvB,IAAI,GAAE,qBAA0B;IAM5C,aAAa,IAAI,IAAI;IAKrB,aAAa,IAAI,OAAO;IAUxB,MAAM,IAAI,OAAO;IAYjB,KAAK,IAAI,MAAM,GAAG,QAAQ;CAG3B"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
const DEFAULT_THRESHOLD = 5;
|
|
2
|
+
const DEFAULT_RESET_MS = 30_000;
|
|
3
|
+
export class CircuitBreaker {
|
|
4
|
+
failures = 0;
|
|
5
|
+
open = false;
|
|
6
|
+
lastFailure = 0;
|
|
7
|
+
threshold;
|
|
8
|
+
resetMs;
|
|
9
|
+
now;
|
|
10
|
+
constructor(opts = {}) {
|
|
11
|
+
this.threshold = opts.threshold ?? DEFAULT_THRESHOLD;
|
|
12
|
+
this.resetMs = opts.resetMs ?? DEFAULT_RESET_MS;
|
|
13
|
+
this.now = opts.now ?? (() => Date.now());
|
|
14
|
+
}
|
|
15
|
+
recordSuccess() {
|
|
16
|
+
this.failures = 0;
|
|
17
|
+
this.open = false;
|
|
18
|
+
}
|
|
19
|
+
recordFailure() {
|
|
20
|
+
this.failures += 1;
|
|
21
|
+
this.lastFailure = this.now();
|
|
22
|
+
if (this.failures >= this.threshold) {
|
|
23
|
+
this.open = true;
|
|
24
|
+
return true;
|
|
25
|
+
}
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
isOpen() {
|
|
29
|
+
if (!this.open) {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
if (this.now() - this.lastFailure > this.resetMs) {
|
|
33
|
+
this.open = false;
|
|
34
|
+
this.failures = 0;
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
state() {
|
|
40
|
+
return this.isOpen() ? "open" : "closed";
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=circuitbreaker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"circuitbreaker.js","sourceRoot":"","sources":["../../../src/googleapi/circuitbreaker.ts"],"names":[],"mappings":"AAAA,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAC5B,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAQhC,MAAM,OAAO,cAAc;IACjB,QAAQ,GAAG,CAAC,CAAC;IACb,IAAI,GAAG,KAAK,CAAC;IACb,WAAW,GAAG,CAAC,CAAC;IAEP,SAAS,CAAS;IAClB,OAAO,CAAS;IAChB,GAAG,CAAe;IAEnC,YAAY,OAA8B,EAAE;QAC1C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,iBAAiB,CAAC;QACrD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,gBAAgB,CAAC;QAChD,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,aAAa;QACX,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;IACpB,CAAC;IAED,aAAa;QACX,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;QACnB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC9B,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACpC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACjB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM;QACJ,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YACjD,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;YAClB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;YAClB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC3C,CAAC;CACF"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare const DEFAULT_HTTP_TIMEOUT_MS = 30000;
|
|
2
|
+
export declare const DEFAULT_GMAIL_LIST_QUERY = "in:anywhere";
|
|
3
|
+
export type OAuthClientConfigInput = {
|
|
4
|
+
clientId: string;
|
|
5
|
+
clientSecret: string;
|
|
6
|
+
scopes: string[];
|
|
7
|
+
timeoutMs?: number;
|
|
8
|
+
};
|
|
9
|
+
export type OAuthClientConfig = {
|
|
10
|
+
clientId: string;
|
|
11
|
+
clientSecret: string;
|
|
12
|
+
scopes: string[];
|
|
13
|
+
timeoutMs: number;
|
|
14
|
+
};
|
|
15
|
+
export declare function buildOAuthClientConfig(input: OAuthClientConfigInput): OAuthClientConfig;
|
|
16
|
+
export declare function defaultGmailListQuery(query?: string): string;
|
|
17
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/googleapi/client.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uBAAuB,QAAS,CAAC;AAC9C,eAAO,MAAM,wBAAwB,gBAAgB,CAAC;AAEtD,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,sBAAsB,GAAG,iBAAiB,CAOvF;AAED,wBAAgB,qBAAqB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAM5D"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export const DEFAULT_HTTP_TIMEOUT_MS = 30_000;
|
|
2
|
+
export const DEFAULT_GMAIL_LIST_QUERY = "in:anywhere";
|
|
3
|
+
export function buildOAuthClientConfig(input) {
|
|
4
|
+
return {
|
|
5
|
+
clientId: input.clientId,
|
|
6
|
+
clientSecret: input.clientSecret,
|
|
7
|
+
scopes: [...input.scopes],
|
|
8
|
+
timeoutMs: input.timeoutMs ?? DEFAULT_HTTP_TIMEOUT_MS,
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
export function defaultGmailListQuery(query) {
|
|
12
|
+
const trimmed = query?.trim() ?? "";
|
|
13
|
+
if (trimmed === "") {
|
|
14
|
+
return DEFAULT_GMAIL_LIST_QUERY;
|
|
15
|
+
}
|
|
16
|
+
return trimmed;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/googleapi/client.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC;AAC9C,MAAM,CAAC,MAAM,wBAAwB,GAAG,aAAa,CAAC;AAgBtD,MAAM,UAAU,sBAAsB,CAAC,KAA6B;IAClE,OAAO;QACL,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;QACzB,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,uBAAuB;KACtD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAc;IAClD,MAAM,OAAO,GAAG,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACpC,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;QACnB,OAAO,wBAAwB,CAAC;IAClC,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drive.d.ts","sourceRoot":"","sources":["../../../src/googleapi/drive.ts"],"names":[],"mappings":"AAAA,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAMzE;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/D"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export function resolveDriveDownloadPath(id, out) {
|
|
2
|
+
const trimmedOut = out?.trim() ?? "";
|
|
3
|
+
if (trimmedOut !== "") {
|
|
4
|
+
return trimmedOut;
|
|
5
|
+
}
|
|
6
|
+
return `${id}.download`;
|
|
7
|
+
}
|
|
8
|
+
export function normalizeDriveSearchQuery(query) {
|
|
9
|
+
return query.trim();
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=drive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drive.js","sourceRoot":"","sources":["../../../src/googleapi/drive.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,wBAAwB,CAAC,EAAU,EAAE,GAAY;IAC/D,MAAM,UAAU,GAAG,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACrC,IAAI,UAAU,KAAK,EAAE,EAAE,CAAC;QACtB,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,OAAO,GAAG,EAAE,WAAW,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,KAAa;IACrD,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;AACtB,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export declare class AuthRequiredError extends Error {
|
|
2
|
+
readonly service: string;
|
|
3
|
+
readonly email: string;
|
|
4
|
+
readonly client: string;
|
|
5
|
+
readonly cause?: unknown | undefined;
|
|
6
|
+
constructor(service: string, email: string, client: string, cause?: unknown | undefined);
|
|
7
|
+
}
|
|
8
|
+
export declare class RateLimitError extends Error {
|
|
9
|
+
readonly retries: number;
|
|
10
|
+
readonly retryAfterMs: number;
|
|
11
|
+
constructor(retries: number, retryAfterMs?: number);
|
|
12
|
+
}
|
|
13
|
+
export declare class CircuitBreakerError extends Error {
|
|
14
|
+
constructor();
|
|
15
|
+
}
|
|
16
|
+
export declare class QuotaExceededError extends Error {
|
|
17
|
+
readonly resource: string;
|
|
18
|
+
constructor(resource?: string);
|
|
19
|
+
}
|
|
20
|
+
export declare class NotFoundError extends Error {
|
|
21
|
+
readonly resource: string;
|
|
22
|
+
readonly id: string;
|
|
23
|
+
constructor(resource: string, id?: string);
|
|
24
|
+
}
|
|
25
|
+
export declare class PermissionDeniedError extends Error {
|
|
26
|
+
readonly resource: string;
|
|
27
|
+
readonly action: string;
|
|
28
|
+
constructor(resource: string, action?: string);
|
|
29
|
+
}
|
|
30
|
+
export declare function isAuthRequiredError(error: unknown): error is AuthRequiredError;
|
|
31
|
+
export declare function isRateLimitError(error: unknown): error is RateLimitError;
|
|
32
|
+
export declare function isCircuitBreakerError(error: unknown): error is CircuitBreakerError;
|
|
33
|
+
export declare function isQuotaExceededError(error: unknown): error is QuotaExceededError;
|
|
34
|
+
export declare function isNotFoundError(error: unknown): error is NotFoundError;
|
|
35
|
+
export declare function isPermissionDeniedError(error: unknown): error is PermissionDeniedError;
|
|
36
|
+
export declare function toCliApiErrorMessage(service: string, error: unknown): string;
|
|
37
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/googleapi/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,iBAAkB,SAAQ,KAAK;IAExC,QAAQ,CAAC,OAAO,EAAE,MAAM;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO;gBAHf,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,OAAO,YAAA;CAU3B;AAED,qBAAa,cAAe,SAAQ,KAAK;IAErC,QAAQ,CAAC,OAAO,EAAE,MAAM;IACxB,QAAQ,CAAC,YAAY;gBADZ,OAAO,EAAE,MAAM,EACf,YAAY,SAAI;CAS5B;AAED,qBAAa,mBAAoB,SAAQ,KAAK;;CAK7C;AAED,qBAAa,kBAAmB,SAAQ,KAAK;IAC/B,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,SAAK;CAInC;AAED,qBAAa,aAAc,SAAQ,KAAK;IAEpC,QAAQ,CAAC,QAAQ,EAAE,MAAM;IACzB,QAAQ,CAAC,EAAE;gBADF,QAAQ,EAAE,MAAM,EAChB,EAAE,SAAK;CAKnB;AAED,qBAAa,qBAAsB,SAAQ,KAAK;IAE5C,QAAQ,CAAC,QAAQ,EAAE,MAAM;IACzB,QAAQ,CAAC,MAAM;gBADN,QAAQ,EAAE,MAAM,EAChB,MAAM,SAAK;CAKvB;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,iBAAiB,CAE9E;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAExE;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,mBAAmB,CAElF;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,kBAAkB,CAEhF;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAEtE;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,qBAAqB,CAEtF;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,CAc5E"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
export class AuthRequiredError extends Error {
|
|
2
|
+
service;
|
|
3
|
+
email;
|
|
4
|
+
client;
|
|
5
|
+
cause;
|
|
6
|
+
constructor(service, email, client, cause) {
|
|
7
|
+
super(client !== ""
|
|
8
|
+
? `auth required for ${service} ${email} (client ${client})`
|
|
9
|
+
: `auth required for ${service} ${email}`, cause ? { cause } : undefined);
|
|
10
|
+
this.service = service;
|
|
11
|
+
this.email = email;
|
|
12
|
+
this.client = client;
|
|
13
|
+
this.cause = cause;
|
|
14
|
+
this.name = "AuthRequiredError";
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
export class RateLimitError extends Error {
|
|
18
|
+
retries;
|
|
19
|
+
retryAfterMs;
|
|
20
|
+
constructor(retries, retryAfterMs = 0) {
|
|
21
|
+
super(retryAfterMs > 0
|
|
22
|
+
? `rate limit exceeded, retry after ${retryAfterMs}ms (attempted ${retries} retries)`
|
|
23
|
+
: `rate limit exceeded after ${retries} retries`);
|
|
24
|
+
this.retries = retries;
|
|
25
|
+
this.retryAfterMs = retryAfterMs;
|
|
26
|
+
this.name = "RateLimitError";
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
export class CircuitBreakerError extends Error {
|
|
30
|
+
constructor() {
|
|
31
|
+
super("circuit breaker is open, too many recent failures - try again later");
|
|
32
|
+
this.name = "CircuitBreakerError";
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
export class QuotaExceededError extends Error {
|
|
36
|
+
resource;
|
|
37
|
+
constructor(resource = "") {
|
|
38
|
+
super(resource !== "" ? `API quota exceeded for ${resource}` : "API quota exceeded");
|
|
39
|
+
this.resource = resource;
|
|
40
|
+
this.name = "QuotaExceededError";
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
export class NotFoundError extends Error {
|
|
44
|
+
resource;
|
|
45
|
+
id;
|
|
46
|
+
constructor(resource, id = "") {
|
|
47
|
+
super(id !== "" ? `${resource} not found: ${id}` : `${resource} not found`);
|
|
48
|
+
this.resource = resource;
|
|
49
|
+
this.id = id;
|
|
50
|
+
this.name = "NotFoundError";
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
export class PermissionDeniedError extends Error {
|
|
54
|
+
resource;
|
|
55
|
+
action;
|
|
56
|
+
constructor(resource, action = "") {
|
|
57
|
+
super(action !== "" ? `permission denied: cannot ${action} ${resource}` : `permission denied for ${resource}`);
|
|
58
|
+
this.resource = resource;
|
|
59
|
+
this.action = action;
|
|
60
|
+
this.name = "PermissionDeniedError";
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
export function isAuthRequiredError(error) {
|
|
64
|
+
return error instanceof AuthRequiredError;
|
|
65
|
+
}
|
|
66
|
+
export function isRateLimitError(error) {
|
|
67
|
+
return error instanceof RateLimitError;
|
|
68
|
+
}
|
|
69
|
+
export function isCircuitBreakerError(error) {
|
|
70
|
+
return error instanceof CircuitBreakerError;
|
|
71
|
+
}
|
|
72
|
+
export function isQuotaExceededError(error) {
|
|
73
|
+
return error instanceof QuotaExceededError;
|
|
74
|
+
}
|
|
75
|
+
export function isNotFoundError(error) {
|
|
76
|
+
return error instanceof NotFoundError;
|
|
77
|
+
}
|
|
78
|
+
export function isPermissionDeniedError(error) {
|
|
79
|
+
return error instanceof PermissionDeniedError;
|
|
80
|
+
}
|
|
81
|
+
export function toCliApiErrorMessage(service, error) {
|
|
82
|
+
if (isAuthRequiredError(error)
|
|
83
|
+
|| isRateLimitError(error)
|
|
84
|
+
|| isCircuitBreakerError(error)
|
|
85
|
+
|| isQuotaExceededError(error)
|
|
86
|
+
|| isNotFoundError(error)
|
|
87
|
+
|| isPermissionDeniedError(error)) {
|
|
88
|
+
return error.message;
|
|
89
|
+
}
|
|
90
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
91
|
+
return `${service} api request failed: ${message}`;
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/googleapi/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry-constants.d.ts","sourceRoot":"","sources":["../../../src/googleapi/retry-constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,sBAAsB,IAAI,CAAC;AACxC,eAAO,MAAM,wBAAwB,OAAO,CAAC;AAC7C,eAAO,MAAM,eAAe,IAAI,CAAC;AACjC,eAAO,MAAM,2BAA2B,OAAO,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry-constants.js","sourceRoot":"","sources":["../../../src/googleapi/retry-constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC;AACxC,MAAM,CAAC,MAAM,wBAAwB,GAAG,IAAI,CAAC;AAC7C,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC;AACjC,MAAM,CAAC,MAAM,2BAA2B,GAAG,IAAI,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../src/googleapi/transport.ts"],"names":[],"mappings":"AAAA,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAE7D;AAqBD,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,MAAM,GAAG,SAAS,EACpC,WAAW,EAAE,MAAM,EACnB,MAAM,GAAE,MAAM,MAAoB,GACjC,MAAM,CAuBR"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export function shouldRetryStatus(statusCode) {
|
|
2
|
+
return statusCode === 429 || statusCode >= 500;
|
|
3
|
+
}
|
|
4
|
+
function parseRetryAfterMs(value) {
|
|
5
|
+
if ((value ?? "").trim() === "") {
|
|
6
|
+
return undefined;
|
|
7
|
+
}
|
|
8
|
+
const raw = (value ?? "").trim();
|
|
9
|
+
const seconds = Number.parseInt(raw, 10);
|
|
10
|
+
if (!Number.isNaN(seconds)) {
|
|
11
|
+
return Math.max(0, seconds) * 1000;
|
|
12
|
+
}
|
|
13
|
+
const ts = Date.parse(raw);
|
|
14
|
+
if (Number.isNaN(ts)) {
|
|
15
|
+
return undefined;
|
|
16
|
+
}
|
|
17
|
+
return Math.max(0, ts - Date.now());
|
|
18
|
+
}
|
|
19
|
+
export function calculateBackoffMs(attempt, retryAfterHeader, baseDelayMs, random = Math.random) {
|
|
20
|
+
const retryAfterMs = parseRetryAfterMs(retryAfterHeader);
|
|
21
|
+
if (retryAfterMs !== undefined) {
|
|
22
|
+
return retryAfterMs;
|
|
23
|
+
}
|
|
24
|
+
if (baseDelayMs <= 0) {
|
|
25
|
+
return 0;
|
|
26
|
+
}
|
|
27
|
+
const base = baseDelayMs * 2 ** attempt;
|
|
28
|
+
if (!Number.isFinite(base) || base <= 0) {
|
|
29
|
+
return 0;
|
|
30
|
+
}
|
|
31
|
+
const jitterRange = Math.floor(base / 2);
|
|
32
|
+
if (jitterRange <= 0) {
|
|
33
|
+
return base;
|
|
34
|
+
}
|
|
35
|
+
const clamped = Math.max(0, Math.min(1, random()));
|
|
36
|
+
const jitter = Math.floor(clamped * jitterRange);
|
|
37
|
+
return base + jitter;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/googleapi/transport.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,iBAAiB,CAAC,UAAkB;IAClD,OAAO,UAAU,KAAK,GAAG,IAAI,UAAU,IAAI,GAAG,CAAC;AACjD,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAyB;IAClD,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAChC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,GAAG,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACjC,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACzC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACrC,CAAC;IAED,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;QACrB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,OAAe,EACf,gBAAoC,EACpC,WAAmB,EACnB,SAAuB,IAAI,CAAC,MAAM;IAElC,MAAM,YAAY,GAAG,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;IACzD,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;QACrB,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,IAAI,GAAG,WAAW,GAAG,CAAC,IAAI,OAAO,CAAC;IACxC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;QACxC,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;IACzC,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,WAAW,CAAC,CAAC;IACjD,OAAO,IAAI,GAAG,MAAM,CAAC;AACvB,CAAC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { type ClientCredentials } from "../config/credentials.js";
|
|
2
|
+
import type { Service } from "./service.js";
|
|
3
|
+
export type AuthorizeOptions = {
|
|
4
|
+
services?: Service[];
|
|
5
|
+
scopes: string[];
|
|
6
|
+
manual?: boolean;
|
|
7
|
+
forceConsent?: boolean;
|
|
8
|
+
timeoutMs?: number;
|
|
9
|
+
client?: string;
|
|
10
|
+
authCode?: string;
|
|
11
|
+
authUrl?: string;
|
|
12
|
+
requireState?: boolean;
|
|
13
|
+
};
|
|
14
|
+
export type ExchangeCodeRequest = {
|
|
15
|
+
clientId: string;
|
|
16
|
+
clientSecret: string;
|
|
17
|
+
scopes: string[];
|
|
18
|
+
code: string;
|
|
19
|
+
redirectUri: string;
|
|
20
|
+
forceConsent: boolean;
|
|
21
|
+
state?: string;
|
|
22
|
+
};
|
|
23
|
+
type ExchangeCodeResult = {
|
|
24
|
+
refreshToken?: string;
|
|
25
|
+
};
|
|
26
|
+
export type AuthorizeDeps = {
|
|
27
|
+
readClientCredentialsFor?: (client: string) => Promise<ClientCredentials>;
|
|
28
|
+
exchangeCode?: (request: ExchangeCodeRequest) => Promise<ExchangeCodeResult>;
|
|
29
|
+
};
|
|
30
|
+
export type ManualAuthURLResult = {
|
|
31
|
+
url: string;
|
|
32
|
+
stateReused: boolean;
|
|
33
|
+
};
|
|
34
|
+
export type ManualAuthURLDeps = {
|
|
35
|
+
readClientCredentialsFor?: (client: string) => Promise<ClientCredentials>;
|
|
36
|
+
randomState?: () => string;
|
|
37
|
+
randomRedirectUri?: () => Promise<string>;
|
|
38
|
+
};
|
|
39
|
+
export declare const ERR_INTERACTIVE_FLOW_REQUIRED = "interactive browser auth is not available in this build; use --manual or --remote";
|
|
40
|
+
export declare function validateAuthorizeOptions(opts: AuthorizeOptions): void;
|
|
41
|
+
export declare function authUrlParams(forceConsent: boolean): Record<string, string>;
|
|
42
|
+
export declare function randomState(): string;
|
|
43
|
+
export declare function manualAuthURL(opts: AuthorizeOptions, deps?: ManualAuthURLDeps): Promise<ManualAuthURLResult>;
|
|
44
|
+
export declare function authorize(opts: AuthorizeOptions, deps?: AuthorizeDeps): Promise<string>;
|
|
45
|
+
export type AuthorizeWithLocalServerOptions = {
|
|
46
|
+
scopes: string[];
|
|
47
|
+
client?: string;
|
|
48
|
+
forceConsent?: boolean;
|
|
49
|
+
timeoutMs?: number;
|
|
50
|
+
onAuthUrl?: (url: string) => void;
|
|
51
|
+
};
|
|
52
|
+
export type AuthorizeWithLocalServerDeps = {
|
|
53
|
+
readClientCredentialsFor?: (client: string) => Promise<ClientCredentials>;
|
|
54
|
+
exchangeCode?: (request: ExchangeCodeRequest) => Promise<ExchangeCodeResult>;
|
|
55
|
+
};
|
|
56
|
+
export type AuthorizeWithLocalServerResult = {
|
|
57
|
+
refreshToken: string;
|
|
58
|
+
authUrl: string;
|
|
59
|
+
};
|
|
60
|
+
export declare function authorizeWithLocalServer(opts: AuthorizeWithLocalServerOptions, deps?: AuthorizeWithLocalServerDeps): Promise<AuthorizeWithLocalServerResult>;
|
|
61
|
+
export {};
|
|
62
|
+
//# sourceMappingURL=oauth-flow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth-flow.d.ts","sourceRoot":"","sources":["../../../src/googleauth/oauth-flow.ts"],"names":[],"mappings":"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"}
|