@rc-tool/unified-auth-hosted-service 0.2.10 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. package/README.md +109 -114
  2. package/dist/cli/config-file.d.ts +7 -0
  3. package/dist/cli/config-file.d.ts.map +1 -0
  4. package/dist/cli/config-file.js +77 -0
  5. package/dist/cli/config-file.js.map +1 -0
  6. package/dist/cli/config.d.ts +21 -0
  7. package/dist/cli/config.d.ts.map +1 -0
  8. package/dist/cli/config.js +174 -0
  9. package/dist/cli/config.js.map +1 -0
  10. package/dist/cli/database.d.ts +33 -0
  11. package/dist/cli/database.d.ts.map +1 -0
  12. package/dist/cli/database.js +346 -0
  13. package/dist/cli/database.js.map +1 -0
  14. package/dist/cli/index.d.ts +1 -1
  15. package/dist/cli/index.d.ts.map +1 -1
  16. package/dist/cli/index.js +44 -79
  17. package/dist/cli/index.js.map +1 -1
  18. package/dist/cli.js +1 -1
  19. package/dist/cli.js.map +1 -1
  20. package/dist/config.d.ts +32 -0
  21. package/dist/config.d.ts.map +1 -0
  22. package/dist/config.js +7 -0
  23. package/dist/config.js.map +1 -0
  24. package/dist/hosted-service/applications.d.ts +0 -6
  25. package/dist/hosted-service/applications.d.ts.map +1 -1
  26. package/dist/hosted-service/applications.js +50 -8
  27. package/dist/hosted-service/applications.js.map +1 -1
  28. package/dist/hosted-service/better-auth.d.ts +10 -0
  29. package/dist/hosted-service/better-auth.d.ts.map +1 -0
  30. package/dist/hosted-service/better-auth.js +213 -0
  31. package/dist/hosted-service/better-auth.js.map +1 -0
  32. package/dist/hosted-service/constants.d.ts +0 -4
  33. package/dist/hosted-service/constants.d.ts.map +1 -1
  34. package/dist/hosted-service/constants.js +0 -4
  35. package/dist/hosted-service/constants.js.map +1 -1
  36. package/dist/hosted-service/http.d.ts.map +1 -1
  37. package/dist/hosted-service/http.js +6 -8
  38. package/dist/hosted-service/http.js.map +1 -1
  39. package/dist/hosted-service/login-page/components.d.ts +0 -1
  40. package/dist/hosted-service/login-page/components.d.ts.map +1 -1
  41. package/dist/hosted-service/login-page/components.js +0 -6
  42. package/dist/hosted-service/login-page/components.js.map +1 -1
  43. package/dist/hosted-service/login-page/index.d.ts.map +1 -1
  44. package/dist/hosted-service/login-page/index.js +2 -18
  45. package/dist/hosted-service/login-page/index.js.map +1 -1
  46. package/dist/hosted-service/login-page/links.d.ts.map +1 -1
  47. package/dist/hosted-service/login-page/links.js +1 -12
  48. package/dist/hosted-service/login-page/links.js.map +1 -1
  49. package/dist/hosted-service/login-page/styles.d.ts +1 -1
  50. package/dist/hosted-service/login-page/styles.d.ts.map +1 -1
  51. package/dist/hosted-service/login-page/styles.js +0 -2
  52. package/dist/hosted-service/login-page/styles.js.map +1 -1
  53. package/dist/hosted-service/login-page/types.d.ts +2 -8
  54. package/dist/hosted-service/login-page/types.d.ts.map +1 -1
  55. package/dist/hosted-service/routes.d.ts.map +1 -1
  56. package/dist/hosted-service/routes.js +3 -12
  57. package/dist/hosted-service/routes.js.map +1 -1
  58. package/dist/hosted-service/service.d.ts +5 -8
  59. package/dist/hosted-service/service.d.ts.map +1 -1
  60. package/dist/hosted-service/service.js +56 -168
  61. package/dist/hosted-service/service.js.map +1 -1
  62. package/dist/hosted-service/types.d.ts +36 -46
  63. package/dist/hosted-service/types.d.ts.map +1 -1
  64. package/dist/index.d.ts +3 -4
  65. package/dist/index.d.ts.map +1 -1
  66. package/dist/index.js +1 -2
  67. package/dist/index.js.map +1 -1
  68. package/package.json +8 -4
  69. package/dist/cli/env.d.ts +0 -40
  70. package/dist/cli/env.d.ts.map +0 -1
  71. package/dist/cli/env.js +0 -353
  72. package/dist/cli/env.js.map +0 -1
  73. package/dist/hosted-service/cookies.d.ts +0 -17
  74. package/dist/hosted-service/cookies.d.ts.map +0 -1
  75. package/dist/hosted-service/cookies.js +0 -56
  76. package/dist/hosted-service/cookies.js.map +0 -1
  77. package/dist/hosted-service/crypto.d.ts +0 -3
  78. package/dist/hosted-service/crypto.d.ts.map +0 -1
  79. package/dist/hosted-service/crypto.js +0 -39
  80. package/dist/hosted-service/crypto.js.map +0 -1
  81. package/dist/hosted-service/oauth.d.ts +0 -11
  82. package/dist/hosted-service/oauth.d.ts.map +0 -1
  83. package/dist/hosted-service/oauth.js +0 -37
  84. package/dist/hosted-service/oauth.js.map +0 -1
  85. package/dist/hosted-service/providers/feishu.d.ts +0 -4
  86. package/dist/hosted-service/providers/feishu.d.ts.map +0 -1
  87. package/dist/hosted-service/providers/feishu.js +0 -72
  88. package/dist/hosted-service/providers/feishu.js.map +0 -1
  89. package/dist/hosted-service/providers/github.d.ts +0 -4
  90. package/dist/hosted-service/providers/github.d.ts.map +0 -1
  91. package/dist/hosted-service/providers/github.js +0 -73
  92. package/dist/hosted-service/providers/github.js.map +0 -1
  93. package/dist/hosted-service/providers/google.d.ts +0 -4
  94. package/dist/hosted-service/providers/google.d.ts.map +0 -1
  95. package/dist/hosted-service/providers/google.js +0 -54
  96. package/dist/hosted-service/providers/google.js.map +0 -1
  97. package/dist/hosted-service/session.d.ts +0 -11
  98. package/dist/hosted-service/session.d.ts.map +0 -1
  99. package/dist/hosted-service/session.js +0 -54
  100. package/dist/hosted-service/session.js.map +0 -1
  101. package/dist/hosted-service/store/file.d.ts +0 -6
  102. package/dist/hosted-service/store/file.d.ts.map +0 -1
  103. package/dist/hosted-service/store/file.js +0 -63
  104. package/dist/hosted-service/store/file.js.map +0 -1
  105. package/dist/hosted-service/store/index.d.ts +0 -6
  106. package/dist/hosted-service/store/index.d.ts.map +0 -1
  107. package/dist/hosted-service/store/index.js +0 -3
  108. package/dist/hosted-service/store/index.js.map +0 -1
  109. package/dist/hosted-service/store/memory.d.ts +0 -6
  110. package/dist/hosted-service/store/memory.d.ts.map +0 -1
  111. package/dist/hosted-service/store/memory.js +0 -19
  112. package/dist/hosted-service/store/memory.js.map +0 -1
  113. package/dist/hosted-service/store/state.d.ts +0 -9
  114. package/dist/hosted-service/store/state.d.ts.map +0 -1
  115. package/dist/hosted-service/store/state.js +0 -156
  116. package/dist/hosted-service/store/state.js.map +0 -1
  117. package/dist/hosted-service/store/types.d.ts +0 -56
  118. package/dist/hosted-service/store/types.d.ts.map +0 -1
  119. package/dist/hosted-service/store/types.js +0 -2
  120. package/dist/hosted-service/store/types.js.map +0 -1
  121. package/dist/hosted-service-cli.d.ts +0 -2
  122. package/dist/hosted-service-cli.d.ts.map +0 -1
  123. package/dist/hosted-service-cli.js +0 -85
  124. package/dist/hosted-service-cli.js.map +0 -1
@@ -1,156 +0,0 @@
1
- import { randomBytes } from "node:crypto";
2
- export function createEmptyStoreState() {
3
- return {
4
- accounts: [],
5
- sessions: [],
6
- users: [],
7
- };
8
- }
9
- export function normalizeStoreState(value) {
10
- const state = value && typeof value === "object" ? value : {};
11
- return {
12
- accounts: Array.isArray(state.accounts) ? state.accounts : [],
13
- sessions: Array.isArray(state.sessions) ? state.sessions : [],
14
- users: Array.isArray(state.users) ? state.users : [],
15
- };
16
- }
17
- export function upsertOAuthUserInState(state, provider, providerUser) {
18
- const now = new Date().toISOString();
19
- const providerAccountId = providerUser.id;
20
- const account = findAccount(state, provider, providerAccountId);
21
- const user = account ? findOrCreateMissingUser(state, account, providerUser, provider, now) : findOrCreateUser(state, providerUser, provider, now);
22
- updateUserProfile(user, providerUser, provider, providerAccountId, now);
23
- upsertAccount(state, user, provider, providerUser, now);
24
- return toAuthUser(user, provider, providerAccountId, providerUser.metadata);
25
- }
26
- export function createSessionInState(state, input) {
27
- const now = new Date().toISOString();
28
- const session = {
29
- clientId: input.clientId,
30
- createdAt: now,
31
- expiresAt: input.expiresAt,
32
- id: `session_${createId()}`,
33
- provider: input.provider,
34
- providerAccountId: input.providerAccountId,
35
- updatedAt: now,
36
- userId: input.userId,
37
- };
38
- state.sessions.push(session);
39
- return session;
40
- }
41
- export function getSessionInState(state, sessionId) {
42
- const session = state.sessions.find((item) => item.id === sessionId);
43
- if (!session || Date.parse(session.expiresAt) <= Date.now()) {
44
- return null;
45
- }
46
- const user = state.users.find((item) => item.id === session.userId);
47
- if (!user) {
48
- return null;
49
- }
50
- const account = findAccount(state, session.provider, session.providerAccountId);
51
- return {
52
- session,
53
- user: toAuthUser(user, session.provider, session.providerAccountId, account?.metadata),
54
- };
55
- }
56
- export function deleteSessionInState(state, sessionId) {
57
- state.sessions = state.sessions.filter((item) => item.id !== sessionId);
58
- }
59
- function findOrCreateUser(state, providerUser, provider, now) {
60
- const byEmail = findUserByEmail(state, providerUser.email);
61
- if (byEmail) {
62
- return byEmail;
63
- }
64
- const user = {
65
- avatarUrl: providerUser.avatarUrl ?? null,
66
- createdAt: now,
67
- email: providerUser.email ?? null,
68
- id: `auth_${createId()}`,
69
- metadata: {},
70
- name: providerUser.name ?? null,
71
- registrationChannel: provider,
72
- updatedAt: now,
73
- };
74
- state.users.push(user);
75
- return user;
76
- }
77
- function findOrCreateMissingUser(state, account, providerUser, provider, now) {
78
- const user = state.users.find((item) => item.id === account.userId);
79
- if (user) {
80
- return user;
81
- }
82
- return findOrCreateUser(state, providerUser, provider, now);
83
- }
84
- function updateUserProfile(user, providerUser, provider, providerAccountId, now) {
85
- user.avatarUrl = providerUser.avatarUrl ?? user.avatarUrl;
86
- user.email = providerUser.email ?? user.email;
87
- user.metadata = mergeMetadata(user.metadata, providerUser.metadata, {
88
- provider,
89
- providerUserId: providerAccountId,
90
- registrationChannel: user.registrationChannel,
91
- });
92
- user.name = providerUser.name ?? user.name;
93
- user.updatedAt = now;
94
- }
95
- function upsertAccount(state, user, provider, providerUser, now) {
96
- const existing = findAccount(state, provider, providerUser.id);
97
- const metadata = mergeMetadata(providerUser.metadata, {
98
- provider,
99
- providerUserId: providerUser.id,
100
- });
101
- if (existing) {
102
- existing.email = providerUser.email ?? existing.email;
103
- existing.lastLoginAt = now;
104
- existing.metadata = metadata;
105
- existing.updatedAt = now;
106
- existing.userId = user.id;
107
- return;
108
- }
109
- state.accounts.push({
110
- createdAt: now,
111
- email: providerUser.email ?? null,
112
- id: `account_${createId()}`,
113
- lastLoginAt: now,
114
- metadata,
115
- provider,
116
- providerAccountId: providerUser.id,
117
- updatedAt: now,
118
- userId: user.id,
119
- });
120
- }
121
- function toAuthUser(user, provider, providerAccountId, providerMetadata) {
122
- return {
123
- avatarUrl: user.avatarUrl,
124
- email: user.email,
125
- id: user.id,
126
- metadata: mergeMetadata(user.metadata, providerMetadata, {
127
- provider,
128
- providerUserId: providerAccountId,
129
- registrationChannel: user.registrationChannel,
130
- }),
131
- name: user.name,
132
- };
133
- }
134
- function findAccount(state, provider, providerAccountId) {
135
- return state.accounts.find((item) => item.provider === provider && item.providerAccountId === providerAccountId);
136
- }
137
- function findUserByEmail(state, email) {
138
- const normalized = normalizeEmail(email);
139
- if (!normalized) {
140
- return undefined;
141
- }
142
- return state.users.find((item) => normalizeEmail(item.email) === normalized);
143
- }
144
- function mergeMetadata(...items) {
145
- return items.reduce((result, item) => ({
146
- ...result,
147
- ...(item ?? {}),
148
- }), {});
149
- }
150
- function normalizeEmail(email) {
151
- return email?.trim().toLowerCase() || undefined;
152
- }
153
- function createId() {
154
- return randomBytes(12).toString("base64url");
155
- }
156
- //# sourceMappingURL=state.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/hosted-service/store/state.ts"],"names":[],"mappings":"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"}
@@ -1,56 +0,0 @@
1
- import type { AuthUser } from "@rc-tool/unified-auth-sdk/service-client";
2
- export type HostedAuthProviderId = "dev" | "feishu" | "github" | "google";
3
- export interface HostedAuthUserRecord {
4
- avatarUrl: string | null;
5
- createdAt: string;
6
- email: string | null;
7
- id: string;
8
- metadata: Record<string, unknown>;
9
- name: string | null;
10
- registrationChannel: HostedAuthProviderId;
11
- updatedAt: string;
12
- }
13
- export interface HostedAuthAccountRecord {
14
- createdAt: string;
15
- email: string | null;
16
- id: string;
17
- lastLoginAt: string;
18
- metadata: Record<string, unknown>;
19
- provider: HostedAuthProviderId;
20
- providerAccountId: string;
21
- updatedAt: string;
22
- userId: string;
23
- }
24
- export interface HostedAuthSessionRecord {
25
- clientId: string;
26
- createdAt: string;
27
- expiresAt: string;
28
- id: string;
29
- provider: HostedAuthProviderId;
30
- providerAccountId: string;
31
- updatedAt: string;
32
- userId: string;
33
- }
34
- export interface HostedAuthStoreState {
35
- accounts: HostedAuthAccountRecord[];
36
- sessions: HostedAuthSessionRecord[];
37
- users: HostedAuthUserRecord[];
38
- }
39
- export interface HostedAuthSessionContext {
40
- session: HostedAuthSessionRecord;
41
- user: AuthUser;
42
- }
43
- export interface CreateHostedAuthSessionInput {
44
- clientId: string;
45
- expiresAt: string;
46
- provider: HostedAuthProviderId;
47
- providerAccountId: string;
48
- userId: string;
49
- }
50
- export interface HostedAuthStore {
51
- createSession(input: CreateHostedAuthSessionInput): Promise<HostedAuthSessionRecord>;
52
- deleteSession(sessionId: string): Promise<void>;
53
- getSession(sessionId: string): Promise<HostedAuthSessionContext | null>;
54
- upsertOAuthUser(provider: HostedAuthProviderId, providerUser: AuthUser): Promise<AuthUser>;
55
- }
56
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/hosted-service/store/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0CAA0C,CAAC;AAEzE,MAAM,MAAM,oBAAoB,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE1E,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,mBAAmB,EAAE,oBAAoB,CAAC;IAC1C,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,uBAAuB,EAAE,CAAC;IACpC,QAAQ,EAAE,uBAAuB,EAAE,CAAC;IACpC,KAAK,EAAE,oBAAoB,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,uBAAuB,CAAC;IACjC,IAAI,EAAE,QAAQ,CAAC;CAChB;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,aAAa,CAAC,KAAK,EAAE,4BAA4B,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACrF,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,GAAG,IAAI,CAAC,CAAC;IACxE,eAAe,CAAC,QAAQ,EAAE,oBAAoB,EAAE,YAAY,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;CAC5F"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/hosted-service/store/types.ts"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=hosted-service-cli.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hosted-service-cli.d.ts","sourceRoot":"","sources":["../src/hosted-service-cli.ts"],"names":[],"mappings":""}
@@ -1,85 +0,0 @@
1
- import { existsSync, readFileSync } from "node:fs";
2
- import { resolve } from "node:path";
3
- import { config as loadEnv, parse as parseEnv } from "dotenv";
4
- import { createHostedAuthNodeServer } from "./hosted-service-node.js";
5
- import { createFileAuthStore } from "./index.js";
6
- const FEISHU_ENV_KEYS = ["FEISHU_APP_ID", "FEISHU_APP_SECRET", "FEISHU_REDIRECT_URI"];
7
- loadEnv({ path: ".env.local", quiet: true });
8
- loadEnv({ quiet: true });
9
- loadLegacyFeishuEnv();
10
- function readEnv(name, fallback = "") {
11
- return process.env[name]?.trim() || fallback;
12
- }
13
- const port = Number(readEnv("AUTH_SERVICE_PORT", readEnv("PORT", "3005")));
14
- const authBaseURL = readEnv("AUTH_SERVICE_URL", `http://localhost:${port}`);
15
- const clientId = readEnv("AUTH_CLIENT_ID", "ai-pm");
16
- const redirectURI = readEnv("AUTH_ALLOWED_REDIRECT_URI", "http://localhost:3004/");
17
- const sessionSecret = readEnv("AUTH_SESSION_SECRET", readEnv("SESSION_SECRET", readEnv("BETTER_AUTH_SECRET", "unified-auth-local-secret")));
18
- const storeFile = readEnv("AUTH_STORE_FILE", ".auth/unified-auth-store.json");
19
- const authDatabaseUrl = readEnv("AUTH_DATABASE_URL", readEnv("DATABASE_URL"));
20
- const storeProvider = readEnv("AUTH_STORE_PROVIDER", authDatabaseUrl ? "prisma" : "file");
21
- function loadLegacyFeishuEnv() {
22
- const envFile = resolve(readEnv("AUTH_FEISHU_ENV_FILE", "../ai-pm/.env.local"));
23
- if (!existsSync(envFile)) {
24
- return;
25
- }
26
- const legacyEnv = parseEnv(readFileSync(envFile));
27
- for (const key of FEISHU_ENV_KEYS) {
28
- // 迁移期允许 SDK Auth Service 读取 AI PM 里的飞书 OAuth 配置,但只补缺失值;
29
- // 这样 Google/GitHub、数据库和未来 SDK 自有配置不会被旧项目环境变量意外覆盖。
30
- if (!process.env[key] && legacyEnv[key]) {
31
- process.env[key] = legacyEnv[key];
32
- }
33
- }
34
- }
35
- async function createAuthStore() {
36
- if (storeProvider === "prisma") {
37
- const { createPrismaAuthStore } = await importPrismaStore();
38
- return createPrismaAuthStore({ databaseUrl: authDatabaseUrl });
39
- }
40
- if (storeProvider === "file") {
41
- return createFileAuthStore({ filePath: storeFile });
42
- }
43
- throw new Error(`Unsupported AUTH_STORE_PROVIDER: ${storeProvider}`);
44
- }
45
- async function importPrismaStore() {
46
- const dynamicImport = new Function("specifier", "return import(specifier)");
47
- try {
48
- return await dynamicImport("@rc-tool/unified-auth-prisma-store");
49
- }
50
- catch (error) {
51
- throw new Error("AUTH_STORE_PROVIDER=prisma requires installing @rc-tool/unified-auth-prisma-store.", { cause: error });
52
- }
53
- }
54
- const server = createHostedAuthNodeServer({
55
- allowDevLogin: readEnv("AUTH_ALLOW_DEV_LOGIN", "true") !== "false",
56
- allowedRedirectURIs: [redirectURI],
57
- appName: readEnv("AUTH_CLIENT_NAME", "AI PM"),
58
- authBaseURL,
59
- clientId,
60
- cookieDomain: readEnv("AUTH_COOKIE_DOMAIN") || undefined,
61
- feishu: {
62
- appId: readEnv("FEISHU_APP_ID") || undefined,
63
- appSecret: readEnv("FEISHU_APP_SECRET") || undefined,
64
- redirectURI: readEnv("FEISHU_REDIRECT_URI") || undefined,
65
- },
66
- google: {
67
- clientId: readEnv("GOOGLE_CLIENT_ID") || undefined,
68
- clientSecret: readEnv("GOOGLE_CLIENT_SECRET") || undefined,
69
- redirectURI: readEnv("GOOGLE_REDIRECT_URI") || undefined,
70
- },
71
- github: {
72
- clientId: readEnv("GITHUB_CLIENT_ID") || undefined,
73
- clientSecret: readEnv("GITHUB_CLIENT_SECRET") || undefined,
74
- redirectURI: readEnv("GITHUB_REDIRECT_URI") || undefined,
75
- },
76
- redirectURI,
77
- sessionSecret,
78
- store: await createAuthStore(),
79
- });
80
- server.listen(port, () => {
81
- console.log(`Unified Auth Service listening on ${authBaseURL}`);
82
- console.log(`Configured client ${clientId} -> ${redirectURI}`);
83
- console.log(`Auth store: ${storeProvider}`);
84
- });
85
- //# sourceMappingURL=hosted-service-cli.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hosted-service-cli.js","sourceRoot":"","sources":["../src/hosted-service-cli.ts"],"names":[],"mappings":"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"}