Highly ambitious ATProtocol AppView service and sdks

fix cli template params for oauth clients and add transition:generic scope

Changed files
+7 -7
packages
cli
src
templates
deno-ssr
src
+6 -6
packages/cli/src/templates/deno-ssr/src/config.ts
··· 32 clientSecret: OAUTH_CLIENT_SECRET, 33 authBaseUrl: OAUTH_AIP_BASE_URL, 34 redirectUri: OAUTH_REDIRECT_URI, 35 - scopes: ["atproto", "openid", "profile"], 36 }; 37 38 // Export config and storage for creating user-scoped clients ··· 61 ); 62 63 // Helper function to create user-scoped OAuth client 64 - export function createOAuthClient(userId: string): OAuthClient { 65 - return new OAuthClient(oauthConfig, oauthStorage, userId); 66 } 67 68 // Helper function to create authenticated AtProto client for a user 69 - export function createSessionClient(userId: string): AtProtoClient { 70 - const userOAuthClient = createOAuthClient(userId); 71 return new AtProtoClient(API_URL!, SLICE_URI!, userOAuthClient); 72 } 73 74 // Public client for unauthenticated requests 75 - export const publicClient = new AtProtoClient(API_URL, SLICE_URI);
··· 32 clientSecret: OAUTH_CLIENT_SECRET, 33 authBaseUrl: OAUTH_AIP_BASE_URL, 34 redirectUri: OAUTH_REDIRECT_URI, 35 + scopes: ["atproto", "openid", "profile", "transition:generic"], 36 }; 37 38 // Export config and storage for creating user-scoped clients ··· 61 ); 62 63 // Helper function to create user-scoped OAuth client 64 + export function createOAuthClient(sessionId: string): OAuthClient { 65 + return new OAuthClient(oauthConfig, oauthStorage, sessionId); 66 } 67 68 // Helper function to create authenticated AtProto client for a user 69 + export function createSessionClient(sessionId: string): AtProtoClient { 70 + const userOAuthClient = createOAuthClient(sessionId); 71 return new AtProtoClient(API_URL!, SLICE_URI!, userOAuthClient); 72 } 73 74 // Public client for unauthenticated requests 75 + export const publicClient = new AtProtoClient(API_URL, SLICE_URI);
+1 -1
packages/cli/src/templates/embedded.ts
··· 73 }, 74 { 75 "path": "src/config.ts", 76 - "content": "aW1wb3J0IHsgT0F1dGhDbGllbnQsIFNRTGl0ZU9BdXRoU3RvcmFnZSB9IGZyb20gIkBzbGljZXMvb2F1dGgiOwppbXBvcnQgeyBTZXNzaW9uU3RvcmUsIFNRTGl0ZUFkYXB0ZXIsIHdpdGhPQXV0aFNlc3Npb24gfSBmcm9tICJAc2xpY2VzL3Nlc3Npb24iOwppbXBvcnQgeyBBdFByb3RvQ2xpZW50IH0gZnJvbSAiLi9nZW5lcmF0ZWRfY2xpZW50LnRzIjsKCmNvbnN0IE9BVVRIX0NMSUVOVF9JRCA9IERlbm8uZW52LmdldCgiT0FVVEhfQ0xJRU5UX0lEIik7CmNvbnN0IE9BVVRIX0NMSUVOVF9TRUNSRVQgPSBEZW5vLmVudi5nZXQoIk9BVVRIX0NMSUVOVF9TRUNSRVQiKTsKY29uc3QgT0FVVEhfUkVESVJFQ1RfVVJJID0gRGVuby5lbnYuZ2V0KCJPQVVUSF9SRURJUkVDVF9VUkkiKTsKY29uc3QgT0FVVEhfQUlQX0JBU0VfVVJMID0gRGVuby5lbnYuZ2V0KCJPQVVUSF9BSVBfQkFTRV9VUkwiKTsKY29uc3QgQVBJX1VSTCA9IERlbm8uZW52LmdldCgiQVBJX1VSTCIpOwpleHBvcnQgY29uc3QgU0xJQ0VfVVJJID0gRGVuby5lbnYuZ2V0KCJTTElDRV9VUkkiKTsKCmlmICgKICAhT0FVVEhfQ0xJRU5UX0lEIHx8CiAgIU9BVVRIX0NMSUVOVF9TRUNSRVQgfHwKICAhT0FVVEhfUkVESVJFQ1RfVVJJIHx8CiAgIU9BVVRIX0FJUF9CQVNFX1VSTCB8fAogICFBUElfVVJMIHx8CiAgIVNMSUNFX1VSSQopIHsKICB0aHJvdyBuZXcgRXJyb3IoCiAgICAiTWlzc2luZyBPQXV0aCBjb25maWd1cmF0aW9uLiBQbGVhc2UgZW5zdXJlIC5lbnYgZmlsZSBjb250YWluczpcbiIgKwogICAgICAiT0FVVEhfQ0xJRU5UX0lELCBPQVVUSF9DTElFTlRfU0VDUkVULCBPQVVUSF9SRURJUkVDVF9VUkksIE9BVVRIX0FJUF9CQVNFX1VSTCwgQVBJX1VSTCwgU0xJQ0VfVVJJIgogICk7Cn0KCmNvbnN0IERBVEFCQVNFX1VSTCA9IERlbm8uZW52LmdldCgiREFUQUJBU0VfVVJMIikgfHwgInNsaWNlcy5kYiI7CgovLyBPQXV0aCBzZXR1cApjb25zdCBvYXV0aFN0b3JhZ2UgPSBuZXcgU1FMaXRlT0F1dGhTdG9yYWdlKERBVEFCQVNFX1VSTCk7CmNvbnN0IG9hdXRoQ29uZmlnID0gewogIGNsaWVudElkOiBPQVVUSF9DTElFTlRfSUQsCiAgY2xpZW50U2VjcmV0OiBPQVVUSF9DTElFTlRfU0VDUkVULAogIGF1dGhCYXNlVXJsOiBPQVVUSF9BSVBfQkFTRV9VUkwsCiAgcmVkaXJlY3RVcmk6IE9BVVRIX1JFRElSRUNUX1VSSSwKICBzY29wZXM6IFsiYXRwcm90byIsICJvcGVuaWQiLCAicHJvZmlsZSJdLAp9OwoKLy8gRXhwb3J0IGNvbmZpZyBhbmQgc3RvcmFnZSBmb3IgY3JlYXRpbmcgdXNlci1zY29wZWQgY2xpZW50cwpleHBvcnQgeyBvYXV0aENvbmZpZywgb2F1dGhTdG9yYWdlIH07CgovLyBTZXNzaW9uIHNldHVwIChzaGFyZWQgZGF0YWJhc2UpCmV4cG9ydCBjb25zdCBzZXNzaW9uU3RvcmUgPSBuZXcgU2Vzc2lvblN0b3JlKHsKICBhZGFwdGVyOiBuZXcgU1FMaXRlQWRhcHRlcihEQVRBQkFTRV9VUkwpLAogIGNvb2tpZU5hbWU6ICJ7e1BST0pFQ1RfTkFNRX19LXNlc3Npb24iLAogIGNvb2tpZU9wdGlvbnM6IHsKICAgIGh0dHBPbmx5OiB0cnVlLAogICAgc2VjdXJlOiBEZW5vLmVudi5nZXQoIkRFTk9fRU5WIikgPT09ICJwcm9kdWN0aW9uIiwKICAgIHNhbWVTaXRlOiAibGF4IiwKICAgIHBhdGg6ICIvIiwKICB9LAp9KTsKCi8vIE9BdXRoICsgU2Vzc2lvbiBpbnRlZ3JhdGlvbgpleHBvcnQgY29uc3Qgb2F1dGhTZXNzaW9ucyA9IHdpdGhPQXV0aFNlc3Npb24oCiAgc2Vzc2lvblN0b3JlLAogIG9hdXRoQ29uZmlnLAogIG9hdXRoU3RvcmFnZSwKICB7CiAgICBhdXRvUmVmcmVzaDogdHJ1ZSwKICB9Cik7CgovLyBIZWxwZXIgZnVuY3Rpb24gdG8gY3JlYXRlIHVzZXItc2NvcGVkIE9BdXRoIGNsaWVudApleHBvcnQgZnVuY3Rpb24gY3JlYXRlT0F1dGhDbGllbnQodXNlcklkOiBzdHJpbmcpOiBPQXV0aENsaWVudCB7CiAgcmV0dXJuIG5ldyBPQXV0aENsaWVudChvYXV0aENvbmZpZywgb2F1dGhTdG9yYWdlLCB1c2VySWQpOwp9CgovLyBIZWxwZXIgZnVuY3Rpb24gdG8gY3JlYXRlIGF1dGhlbnRpY2F0ZWQgQXRQcm90byBjbGllbnQgZm9yIGEgdXNlcgpleHBvcnQgZnVuY3Rpb24gY3JlYXRlU2Vzc2lvbkNsaWVudCh1c2VySWQ6IHN0cmluZyk6IEF0UHJvdG9DbGllbnQgewogIGNvbnN0IHVzZXJPQXV0aENsaWVudCA9IGNyZWF0ZU9BdXRoQ2xpZW50KHVzZXJJZCk7CiAgcmV0dXJuIG5ldyBBdFByb3RvQ2xpZW50KEFQSV9VUkwhLCBTTElDRV9VUkkhLCB1c2VyT0F1dGhDbGllbnQpOwp9CgovLyBQdWJsaWMgY2xpZW50IGZvciB1bmF1dGhlbnRpY2F0ZWQgcmVxdWVzdHMKZXhwb3J0IGNvbnN0IHB1YmxpY0NsaWVudCA9IG5ldyBBdFByb3RvQ2xpZW50KEFQSV9VUkwsIFNMSUNFX1VSSSk7" 77 }, 78 { 79 "path": "src/routes/middleware.ts",
··· 73 }, 74 { 75 "path": "src/config.ts", 76 + "content": "aW1wb3J0IHsgT0F1dGhDbGllbnQsIFNRTGl0ZU9BdXRoU3RvcmFnZSB9IGZyb20gIkBzbGljZXMvb2F1dGgiOwppbXBvcnQgeyBTZXNzaW9uU3RvcmUsIFNRTGl0ZUFkYXB0ZXIsIHdpdGhPQXV0aFNlc3Npb24gfSBmcm9tICJAc2xpY2VzL3Nlc3Npb24iOwppbXBvcnQgeyBBdFByb3RvQ2xpZW50IH0gZnJvbSAiLi9nZW5lcmF0ZWRfY2xpZW50LnRzIjsKCmNvbnN0IE9BVVRIX0NMSUVOVF9JRCA9IERlbm8uZW52LmdldCgiT0FVVEhfQ0xJRU5UX0lEIik7CmNvbnN0IE9BVVRIX0NMSUVOVF9TRUNSRVQgPSBEZW5vLmVudi5nZXQoIk9BVVRIX0NMSUVOVF9TRUNSRVQiKTsKY29uc3QgT0FVVEhfUkVESVJFQ1RfVVJJID0gRGVuby5lbnYuZ2V0KCJPQVVUSF9SRURJUkVDVF9VUkkiKTsKY29uc3QgT0FVVEhfQUlQX0JBU0VfVVJMID0gRGVuby5lbnYuZ2V0KCJPQVVUSF9BSVBfQkFTRV9VUkwiKTsKY29uc3QgQVBJX1VSTCA9IERlbm8uZW52LmdldCgiQVBJX1VSTCIpOwpleHBvcnQgY29uc3QgU0xJQ0VfVVJJID0gRGVuby5lbnYuZ2V0KCJTTElDRV9VUkkiKTsKCmlmICgKICAhT0FVVEhfQ0xJRU5UX0lEIHx8CiAgIU9BVVRIX0NMSUVOVF9TRUNSRVQgfHwKICAhT0FVVEhfUkVESVJFQ1RfVVJJIHx8CiAgIU9BVVRIX0FJUF9CQVNFX1VSTCB8fAogICFBUElfVVJMIHx8CiAgIVNMSUNFX1VSSQopIHsKICB0aHJvdyBuZXcgRXJyb3IoCiAgICAiTWlzc2luZyBPQXV0aCBjb25maWd1cmF0aW9uLiBQbGVhc2UgZW5zdXJlIC5lbnYgZmlsZSBjb250YWluczpcbiIgKwogICAgICAiT0FVVEhfQ0xJRU5UX0lELCBPQVVUSF9DTElFTlRfU0VDUkVULCBPQVVUSF9SRURJUkVDVF9VUkksIE9BVVRIX0FJUF9CQVNFX1VSTCwgQVBJX1VSTCwgU0xJQ0VfVVJJIgogICk7Cn0KCmNvbnN0IERBVEFCQVNFX1VSTCA9IERlbm8uZW52LmdldCgiREFUQUJBU0VfVVJMIikgfHwgInNsaWNlcy5kYiI7CgovLyBPQXV0aCBzZXR1cApjb25zdCBvYXV0aFN0b3JhZ2UgPSBuZXcgU1FMaXRlT0F1dGhTdG9yYWdlKERBVEFCQVNFX1VSTCk7CmNvbnN0IG9hdXRoQ29uZmlnID0gewogIGNsaWVudElkOiBPQVVUSF9DTElFTlRfSUQsCiAgY2xpZW50U2VjcmV0OiBPQVVUSF9DTElFTlRfU0VDUkVULAogIGF1dGhCYXNlVXJsOiBPQVVUSF9BSVBfQkFTRV9VUkwsCiAgcmVkaXJlY3RVcmk6IE9BVVRIX1JFRElSRUNUX1VSSSwKICBzY29wZXM6IFsiYXRwcm90byIsICJvcGVuaWQiLCAicHJvZmlsZSIsICJ0cmFuc2l0aW9uOmdlbmVyaWMiXSwKfTsKCi8vIEV4cG9ydCBjb25maWcgYW5kIHN0b3JhZ2UgZm9yIGNyZWF0aW5nIHVzZXItc2NvcGVkIGNsaWVudHMKZXhwb3J0IHsgb2F1dGhDb25maWcsIG9hdXRoU3RvcmFnZSB9OwoKLy8gU2Vzc2lvbiBzZXR1cCAoc2hhcmVkIGRhdGFiYXNlKQpleHBvcnQgY29uc3Qgc2Vzc2lvblN0b3JlID0gbmV3IFNlc3Npb25TdG9yZSh7CiAgYWRhcHRlcjogbmV3IFNRTGl0ZUFkYXB0ZXIoREFUQUJBU0VfVVJMKSwKICBjb29raWVOYW1lOiAie3tQUk9KRUNUX05BTUV9fS1zZXNzaW9uIiwKICBjb29raWVPcHRpb25zOiB7CiAgICBodHRwT25seTogdHJ1ZSwKICAgIHNlY3VyZTogRGVuby5lbnYuZ2V0KCJERU5PX0VOViIpID09PSAicHJvZHVjdGlvbiIsCiAgICBzYW1lU2l0ZTogImxheCIsCiAgICBwYXRoOiAiLyIsCiAgfSwKfSk7CgovLyBPQXV0aCArIFNlc3Npb24gaW50ZWdyYXRpb24KZXhwb3J0IGNvbnN0IG9hdXRoU2Vzc2lvbnMgPSB3aXRoT0F1dGhTZXNzaW9uKAogIHNlc3Npb25TdG9yZSwKICBvYXV0aENvbmZpZywKICBvYXV0aFN0b3JhZ2UsCiAgewogICAgYXV0b1JlZnJlc2g6IHRydWUsCiAgfQopOwoKLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGNyZWF0ZSB1c2VyLXNjb3BlZCBPQXV0aCBjbGllbnQKZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU9BdXRoQ2xpZW50KHNlc3Npb25JZDogc3RyaW5nKTogT0F1dGhDbGllbnQgewogIHJldHVybiBuZXcgT0F1dGhDbGllbnQob2F1dGhDb25maWcsIG9hdXRoU3RvcmFnZSwgc2Vzc2lvbklkKTsKfQoKLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGNyZWF0ZSBhdXRoZW50aWNhdGVkIEF0UHJvdG8gY2xpZW50IGZvciBhIHVzZXIKZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNlc3Npb25DbGllbnQoc2Vzc2lvbklkOiBzdHJpbmcpOiBBdFByb3RvQ2xpZW50IHsKICBjb25zdCB1c2VyT0F1dGhDbGllbnQgPSBjcmVhdGVPQXV0aENsaWVudChzZXNzaW9uSWQpOwogIHJldHVybiBuZXcgQXRQcm90b0NsaWVudChBUElfVVJMISwgU0xJQ0VfVVJJISwgdXNlck9BdXRoQ2xpZW50KTsKfQoKLy8gUHVibGljIGNsaWVudCBmb3IgdW5hdXRoZW50aWNhdGVkIHJlcXVlc3RzCmV4cG9ydCBjb25zdCBwdWJsaWNDbGllbnQgPSBuZXcgQXRQcm90b0NsaWVudChBUElfVVJMLCBTTElDRV9VUkkpOwo=" 77 }, 78 { 79 "path": "src/routes/middleware.ts",