@logto/connector-logto-social-demo 1.1.2 → 1.2.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.
- package/lib/index.js +113 -102
- package/lib/index.js.map +1 -0
- package/package.json +10 -15
- package/lib/constant.d.ts +0 -7
- package/lib/index.d.ts +0 -3
- package/lib/types.d.ts +0 -20
package/lib/index.js
CHANGED
|
@@ -1,117 +1,128 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
1
|
+
// src/index.ts
|
|
2
|
+
import { validateConfig, ConnectorType } from "@logto/connector-kit";
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
4
|
+
// src/constant.ts
|
|
5
|
+
import { ConnectorConfigFormItemType, ConnectorPlatform } from "@logto/connector-kit";
|
|
6
|
+
|
|
7
|
+
// src/types.ts
|
|
8
|
+
import { z } from "zod";
|
|
9
|
+
var SocialProvider = /* @__PURE__ */ ((SocialProvider2) => {
|
|
10
|
+
SocialProvider2["Google"] = "google";
|
|
11
|
+
SocialProvider2["GitHub"] = "github";
|
|
12
|
+
SocialProvider2["Discord"] = "discord";
|
|
13
|
+
return SocialProvider2;
|
|
14
|
+
})(SocialProvider || {});
|
|
15
|
+
var socialDemoConfigGuard = z.object({
|
|
16
|
+
provider: z.nativeEnum(SocialProvider),
|
|
17
|
+
clientId: z.string(),
|
|
18
|
+
redirectUri: z.string()
|
|
14
19
|
});
|
|
15
20
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
21
|
+
// src/constant.ts
|
|
22
|
+
var defaultMetadata = {
|
|
23
|
+
id: "logto-social-demo",
|
|
24
|
+
target: "logto-social-demo",
|
|
25
|
+
platform: ConnectorPlatform.Universal,
|
|
26
|
+
name: {
|
|
27
|
+
en: "Logto Social Demo"
|
|
28
|
+
},
|
|
29
|
+
logo: "./logo.svg",
|
|
30
|
+
logoDark: null,
|
|
31
|
+
description: {
|
|
32
|
+
en: "The demo for social sign-in"
|
|
33
|
+
},
|
|
34
|
+
readme: "./README.md",
|
|
35
|
+
isStandard: true,
|
|
36
|
+
formItems: [
|
|
37
|
+
{
|
|
38
|
+
key: "provider",
|
|
39
|
+
label: "Provider",
|
|
40
|
+
type: ConnectorConfigFormItemType.Select,
|
|
41
|
+
selectItems: [
|
|
31
42
|
{
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
type: ConnectorConfigFormItemType.Select,
|
|
35
|
-
selectItems: [
|
|
36
|
-
{
|
|
37
|
-
title: 'Google',
|
|
38
|
-
value: SocialProvider.Google,
|
|
39
|
-
},
|
|
40
|
-
{
|
|
41
|
-
title: 'GitHub',
|
|
42
|
-
value: SocialProvider.GitHub,
|
|
43
|
-
},
|
|
44
|
-
{
|
|
45
|
-
title: 'Discord',
|
|
46
|
-
value: SocialProvider.Discord,
|
|
47
|
-
},
|
|
48
|
-
],
|
|
49
|
-
required: true,
|
|
43
|
+
title: "Google",
|
|
44
|
+
value: "google" /* Google */
|
|
50
45
|
},
|
|
51
46
|
{
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
type: ConnectorConfigFormItemType.Text,
|
|
55
|
-
required: true,
|
|
47
|
+
title: "GitHub",
|
|
48
|
+
value: "github" /* GitHub */
|
|
56
49
|
},
|
|
57
50
|
{
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
return {
|
|
76
|
-
params: {
|
|
77
|
-
scope: 'openid profile email',
|
|
78
|
-
response_type: 'code',
|
|
79
|
-
},
|
|
80
|
-
endpoint: 'https://accounts.google.com/o/oauth2/v2/auth',
|
|
81
|
-
};
|
|
51
|
+
title: "Discord",
|
|
52
|
+
value: "discord" /* Discord */
|
|
53
|
+
}
|
|
54
|
+
],
|
|
55
|
+
required: true
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
key: "clientId",
|
|
59
|
+
label: "Client ID",
|
|
60
|
+
type: ConnectorConfigFormItemType.Text,
|
|
61
|
+
required: true
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
key: "redirectUri",
|
|
65
|
+
label: "Redirect URI",
|
|
66
|
+
type: ConnectorConfigFormItemType.Text,
|
|
67
|
+
required: true
|
|
82
68
|
}
|
|
69
|
+
]
|
|
70
|
+
};
|
|
71
|
+
var getProviderConfigs = (provider) => {
|
|
72
|
+
if (provider === "github" /* GitHub */) {
|
|
83
73
|
return {
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
endpoint: 'https://discord.com/oauth2/authorize',
|
|
74
|
+
params: {
|
|
75
|
+
scope: "read:user"
|
|
76
|
+
},
|
|
77
|
+
endpoint: "https://github.com/login/oauth/authorize"
|
|
89
78
|
};
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
const getAuthorizationUri = (getConfig) => async ({ state }) => {
|
|
93
|
-
const config = await getConfig(defaultMetadata.id);
|
|
94
|
-
validateConfig(config, socialDemoConfigGuard);
|
|
95
|
-
const { provider, clientId, redirectUri } = config;
|
|
96
|
-
const { params, endpoint } = getProviderConfigs(provider);
|
|
97
|
-
const queryParameters = new URLSearchParams({
|
|
98
|
-
...params,
|
|
99
|
-
client_id: clientId,
|
|
100
|
-
redirect_uri: redirectUri, // Use preset redirect uri
|
|
101
|
-
state,
|
|
102
|
-
});
|
|
103
|
-
return `${endpoint}?${queryParameters.toString()}`;
|
|
104
|
-
};
|
|
105
|
-
const createSocialDemoConnector = async ({ getConfig }) => {
|
|
79
|
+
}
|
|
80
|
+
if (provider === "google" /* Google */) {
|
|
106
81
|
return {
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
throw new Error('Not implemented');
|
|
113
|
-
},
|
|
82
|
+
params: {
|
|
83
|
+
scope: "openid profile email",
|
|
84
|
+
response_type: "code"
|
|
85
|
+
},
|
|
86
|
+
endpoint: "https://accounts.google.com/o/oauth2/v2/auth"
|
|
114
87
|
};
|
|
88
|
+
}
|
|
89
|
+
return {
|
|
90
|
+
params: {
|
|
91
|
+
scope: "identify email",
|
|
92
|
+
response_type: "code"
|
|
93
|
+
},
|
|
94
|
+
endpoint: "https://discord.com/oauth2/authorize"
|
|
95
|
+
};
|
|
115
96
|
};
|
|
116
97
|
|
|
117
|
-
|
|
98
|
+
// src/index.ts
|
|
99
|
+
var getAuthorizationUri = (getConfig) => async ({ state }) => {
|
|
100
|
+
const config = await getConfig(defaultMetadata.id);
|
|
101
|
+
validateConfig(config, socialDemoConfigGuard);
|
|
102
|
+
const { provider, clientId, redirectUri } = config;
|
|
103
|
+
const { params, endpoint } = getProviderConfigs(provider);
|
|
104
|
+
const queryParameters = new URLSearchParams({
|
|
105
|
+
...params,
|
|
106
|
+
client_id: clientId,
|
|
107
|
+
redirect_uri: redirectUri,
|
|
108
|
+
// Use preset redirect uri
|
|
109
|
+
state
|
|
110
|
+
});
|
|
111
|
+
return `${endpoint}?${queryParameters.toString()}`;
|
|
112
|
+
};
|
|
113
|
+
var createSocialDemoConnector = async ({ getConfig }) => {
|
|
114
|
+
return {
|
|
115
|
+
metadata: defaultMetadata,
|
|
116
|
+
type: ConnectorType.Social,
|
|
117
|
+
configGuard: socialDemoConfigGuard,
|
|
118
|
+
getAuthorizationUri: getAuthorizationUri(getConfig),
|
|
119
|
+
getUserInfo: async () => {
|
|
120
|
+
throw new Error("Not implemented");
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
};
|
|
124
|
+
var src_default = createSocialDemoConnector;
|
|
125
|
+
export {
|
|
126
|
+
src_default as default
|
|
127
|
+
};
|
|
128
|
+
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/constant.ts","../src/types.ts"],"sourcesContent":["import type {\n GetAuthorizationUri,\n SocialConnector,\n CreateConnector,\n GetConnectorConfig,\n} from '@logto/connector-kit';\nimport { validateConfig, ConnectorType } from '@logto/connector-kit';\n\nimport { defaultMetadata, getProviderConfigs } from './constant.js';\nimport { socialDemoConfigGuard } from './types.js';\n\nconst getAuthorizationUri =\n (getConfig: GetConnectorConfig): GetAuthorizationUri =>\n async ({ state }) => {\n const config = await getConfig(defaultMetadata.id);\n validateConfig(config, socialDemoConfigGuard);\n\n const { provider, clientId, redirectUri } = config;\n\n const { params, endpoint } = getProviderConfigs(provider);\n\n const queryParameters = new URLSearchParams({\n ...params,\n client_id: clientId,\n redirect_uri: redirectUri, // Use preset redirect uri\n state,\n });\n\n return `${endpoint}?${queryParameters.toString()}`;\n };\n\nconst createSocialDemoConnector: CreateConnector<SocialConnector> = async ({ getConfig }) => {\n return {\n metadata: defaultMetadata,\n type: ConnectorType.Social,\n configGuard: socialDemoConfigGuard,\n getAuthorizationUri: getAuthorizationUri(getConfig),\n getUserInfo: async () => {\n throw new Error('Not implemented');\n },\n };\n};\n\nexport default createSocialDemoConnector;\n","import type { ConnectorMetadata } from '@logto/connector-kit';\nimport { ConnectorConfigFormItemType, ConnectorPlatform } from '@logto/connector-kit';\n\nimport { SocialProvider } from './types.js';\n\nexport const defaultMetadata: ConnectorMetadata = {\n id: 'logto-social-demo',\n target: 'logto-social-demo',\n platform: ConnectorPlatform.Universal,\n name: {\n en: 'Logto Social Demo',\n },\n logo: './logo.svg',\n logoDark: null,\n description: {\n en: 'The demo for social sign-in',\n },\n readme: './README.md',\n isStandard: true,\n formItems: [\n {\n key: 'provider',\n label: 'Provider',\n type: ConnectorConfigFormItemType.Select,\n selectItems: [\n {\n title: 'Google',\n value: SocialProvider.Google,\n },\n {\n title: 'GitHub',\n value: SocialProvider.GitHub,\n },\n {\n title: 'Discord',\n value: SocialProvider.Discord,\n },\n ],\n required: true,\n },\n {\n key: 'clientId',\n label: 'Client ID',\n type: ConnectorConfigFormItemType.Text,\n required: true,\n },\n {\n key: 'redirectUri',\n label: 'Redirect URI',\n type: ConnectorConfigFormItemType.Text,\n required: true,\n },\n ],\n};\n\nexport const getProviderConfigs = (\n provider: SocialProvider\n): { endpoint: string; params: Record<string, string> } => {\n if (provider === SocialProvider.GitHub) {\n return {\n params: {\n scope: 'read:user',\n },\n endpoint: 'https://github.com/login/oauth/authorize',\n };\n }\n\n if (provider === SocialProvider.Google) {\n return {\n params: {\n scope: 'openid profile email',\n response_type: 'code',\n },\n endpoint: 'https://accounts.google.com/o/oauth2/v2/auth',\n };\n }\n\n return {\n params: {\n scope: 'identify email',\n response_type: 'code',\n },\n endpoint: 'https://discord.com/oauth2/authorize',\n };\n};\n","import { z } from 'zod';\n\nexport enum SocialProvider {\n Google = 'google',\n GitHub = 'github',\n Discord = 'discord',\n}\n\nexport const socialDemoConfigGuard = z.object({\n provider: z.nativeEnum(SocialProvider),\n clientId: z.string(),\n redirectUri: z.string(),\n});\n\nexport type SocialDemoConfig = z.infer<typeof socialDemoConfigGuard>;\n"],"mappings":";AAMA,SAAS,gBAAgB,qBAAqB;;;ACL9C,SAAS,6BAA6B,yBAAyB;;;ACD/D,SAAS,SAAS;AAEX,IAAK,iBAAL,kBAAKA,oBAAL;AACL,EAAAA,gBAAA,YAAS;AACT,EAAAA,gBAAA,YAAS;AACT,EAAAA,gBAAA,aAAU;AAHA,SAAAA;AAAA,GAAA;AAML,IAAM,wBAAwB,EAAE,OAAO;AAAA,EAC5C,UAAU,EAAE,WAAW,cAAc;AAAA,EACrC,UAAU,EAAE,OAAO;AAAA,EACnB,aAAa,EAAE,OAAO;AACxB,CAAC;;;ADPM,IAAM,kBAAqC;AAAA,EAChD,IAAI;AAAA,EACJ,QAAQ;AAAA,EACR,UAAU,kBAAkB;AAAA,EAC5B,MAAM;AAAA,IACJ,IAAI;AAAA,EACN;AAAA,EACA,MAAM;AAAA,EACN,UAAU;AAAA,EACV,aAAa;AAAA,IACX,IAAI;AAAA,EACN;AAAA,EACA,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,WAAW;AAAA,IACT;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,MAAM,4BAA4B;AAAA,MAClC,aAAa;AAAA,QACX;AAAA,UACE,OAAO;AAAA,UACP;AAAA,QACF;AAAA,QACA;AAAA,UACE,OAAO;AAAA,UACP;AAAA,QACF;AAAA,QACA;AAAA,UACE,OAAO;AAAA,UACP;AAAA,QACF;AAAA,MACF;AAAA,MACA,UAAU;AAAA,IACZ;AAAA,IACA;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,MAAM,4BAA4B;AAAA,MAClC,UAAU;AAAA,IACZ;AAAA,IACA;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,MAAM,4BAA4B;AAAA,MAClC,UAAU;AAAA,IACZ;AAAA,EACF;AACF;AAEO,IAAM,qBAAqB,CAChC,aACyD;AACzD,MAAI,oCAAoC;AACtC,WAAO;AAAA,MACL,QAAQ;AAAA,QACN,OAAO;AAAA,MACT;AAAA,MACA,UAAU;AAAA,IACZ;AAAA,EACF;AAEA,MAAI,oCAAoC;AACtC,WAAO;AAAA,MACL,QAAQ;AAAA,QACN,OAAO;AAAA,QACP,eAAe;AAAA,MACjB;AAAA,MACA,UAAU;AAAA,IACZ;AAAA,EACF;AAEA,SAAO;AAAA,IACL,QAAQ;AAAA,MACN,OAAO;AAAA,MACP,eAAe;AAAA,IACjB;AAAA,IACA,UAAU;AAAA,EACZ;AACF;;;ADzEA,IAAM,sBACJ,CAAC,cACD,OAAO,EAAE,MAAM,MAAM;AACnB,QAAM,SAAS,MAAM,UAAU,gBAAgB,EAAE;AACjD,iBAAe,QAAQ,qBAAqB;AAE5C,QAAM,EAAE,UAAU,UAAU,YAAY,IAAI;AAE5C,QAAM,EAAE,QAAQ,SAAS,IAAI,mBAAmB,QAAQ;AAExD,QAAM,kBAAkB,IAAI,gBAAgB;AAAA,IAC1C,GAAG;AAAA,IACH,WAAW;AAAA,IACX,cAAc;AAAA;AAAA,IACd;AAAA,EACF,CAAC;AAED,SAAO,GAAG,QAAQ,IAAI,gBAAgB,SAAS,CAAC;AAClD;AAEF,IAAM,4BAA8D,OAAO,EAAE,UAAU,MAAM;AAC3F,SAAO;AAAA,IACL,UAAU;AAAA,IACV,MAAM,cAAc;AAAA,IACpB,aAAa;AAAA,IACb,qBAAqB,oBAAoB,SAAS;AAAA,IAClD,aAAa,YAAY;AACvB,YAAM,IAAI,MAAM,iBAAiB;AAAA,IACnC;AAAA,EACF;AACF;AAEA,IAAO,cAAQ;","names":["SocialProvider"]}
|
package/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@logto/connector-logto-social-demo",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"description": "OAuth standard connector implementation.",
|
|
5
5
|
"author": "Silverhand Inc. <contact@silverhand.io>",
|
|
6
6
|
"dependencies": {
|
|
7
7
|
"@logto/connector-kit": "^4.0.0",
|
|
8
8
|
"@silverhand/essentials": "^2.9.1",
|
|
9
9
|
"got": "^14.0.0",
|
|
10
|
-
"snakecase-keys": "^8.0.
|
|
11
|
-
"zod": "^3.
|
|
10
|
+
"snakecase-keys": "^8.0.1",
|
|
11
|
+
"zod": "^3.23.8"
|
|
12
12
|
},
|
|
13
13
|
"main": "./lib/index.js",
|
|
14
14
|
"module": "./lib/index.js",
|
|
@@ -41,30 +41,25 @@
|
|
|
41
41
|
"access": "public"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
|
-
"@rollup/plugin-commonjs": "^26.0.0",
|
|
45
|
-
"@rollup/plugin-json": "^6.1.0",
|
|
46
|
-
"@rollup/plugin-node-resolve": "^15.2.3",
|
|
47
|
-
"@rollup/plugin-typescript": "^11.1.6",
|
|
48
44
|
"@silverhand/eslint-config": "6.0.1",
|
|
49
45
|
"@silverhand/ts-config": "6.0.0",
|
|
50
46
|
"@types/node": "^20.11.20",
|
|
51
47
|
"@types/supertest": "^6.0.2",
|
|
52
|
-
"@vitest/coverage-v8": "^
|
|
48
|
+
"@vitest/coverage-v8": "^2.0.0",
|
|
53
49
|
"eslint": "^8.56.0",
|
|
54
50
|
"lint-staged": "^15.0.2",
|
|
55
51
|
"nock": "^13.3.1",
|
|
56
52
|
"prettier": "^3.0.0",
|
|
57
|
-
"rollup": "^4.12.0",
|
|
58
|
-
"rollup-plugin-output-size": "^1.3.0",
|
|
59
53
|
"supertest": "^7.0.0",
|
|
60
|
-
"
|
|
61
|
-
"
|
|
54
|
+
"tsup": "^8.1.0",
|
|
55
|
+
"typescript": "^5.5.3",
|
|
56
|
+
"vitest": "^2.0.0"
|
|
62
57
|
},
|
|
63
58
|
"scripts": {
|
|
64
59
|
"precommit": "lint-staged",
|
|
65
|
-
"
|
|
66
|
-
"build": "
|
|
67
|
-
"dev": "
|
|
60
|
+
"check": "tsc --noEmit",
|
|
61
|
+
"build": "tsup",
|
|
62
|
+
"dev": "tsup --watch",
|
|
68
63
|
"lint": "eslint --ext .ts src",
|
|
69
64
|
"lint:report": "pnpm lint --format json --output-file report.json",
|
|
70
65
|
"test": "vitest src",
|
package/lib/constant.d.ts
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import type { ConnectorMetadata } from '@logto/connector-kit';
|
|
2
|
-
import { SocialProvider } from './types.js';
|
|
3
|
-
export declare const defaultMetadata: ConnectorMetadata;
|
|
4
|
-
export declare const getProviderConfigs: (provider: SocialProvider) => {
|
|
5
|
-
endpoint: string;
|
|
6
|
-
params: Record<string, string>;
|
|
7
|
-
};
|
package/lib/index.d.ts
DELETED
package/lib/types.d.ts
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
export declare enum SocialProvider {
|
|
3
|
-
Google = "google",
|
|
4
|
-
GitHub = "github",
|
|
5
|
-
Discord = "discord"
|
|
6
|
-
}
|
|
7
|
-
export declare const socialDemoConfigGuard: z.ZodObject<{
|
|
8
|
-
provider: z.ZodNativeEnum<typeof SocialProvider>;
|
|
9
|
-
clientId: z.ZodString;
|
|
10
|
-
redirectUri: z.ZodString;
|
|
11
|
-
}, "strip", z.ZodTypeAny, {
|
|
12
|
-
provider: SocialProvider;
|
|
13
|
-
clientId: string;
|
|
14
|
-
redirectUri: string;
|
|
15
|
-
}, {
|
|
16
|
-
provider: SocialProvider;
|
|
17
|
-
clientId: string;
|
|
18
|
-
redirectUri: string;
|
|
19
|
-
}>;
|
|
20
|
-
export type SocialDemoConfig = z.infer<typeof socialDemoConfigGuard>;
|