@logto/schemas 1.0.0-beta.11

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 (75) hide show
  1. package/LICENSE +373 -0
  2. package/alterations/1.0.0_beta.10-1-logto-config.ts +20 -0
  3. package/alterations/1.0.0_beta.10-1663923211-machine-to-machine-app.ts +31 -0
  4. package/alterations/1.0.0_beta.10-1664265197-custom-phrases.ts +22 -0
  5. package/alterations/1.0.0_beta.11-1664347703-rename-language-key-to-tag.ts +14 -0
  6. package/alterations/1.0.0_beta.11-1664356000-add-created-at-column-to-users.ts +20 -0
  7. package/alterations/1.0.0_beta.11-1664462389-correct-user-created-at-column-by-user-logs.ts +25 -0
  8. package/alterations/README.md +42 -0
  9. package/lib/api/error.d.ts +12 -0
  10. package/lib/api/error.js +2 -0
  11. package/lib/api/index.d.ts +1 -0
  12. package/lib/api/index.js +17 -0
  13. package/lib/db-entries/application.d.ts +25 -0
  14. package/lib/db-entries/application.js +57 -0
  15. package/lib/db-entries/connector.d.ts +14 -0
  16. package/lib/db-entries/connector.js +31 -0
  17. package/lib/db-entries/custom-phrase.d.ts +10 -0
  18. package/lib/db-entries/custom-phrase.js +25 -0
  19. package/lib/db-entries/custom-types.d.ts +19 -0
  20. package/lib/db-entries/custom-types.js +27 -0
  21. package/lib/db-entries/index.d.ts +13 -0
  22. package/lib/db-entries/index.js +30 -0
  23. package/lib/db-entries/log.d.ts +14 -0
  24. package/lib/db-entries/log.js +31 -0
  25. package/lib/db-entries/logto-config.d.ts +10 -0
  26. package/lib/db-entries/logto-config.js +25 -0
  27. package/lib/db-entries/oidc-model-instance.d.ts +16 -0
  28. package/lib/db-entries/oidc-model-instance.js +34 -0
  29. package/lib/db-entries/passcode.d.ts +25 -0
  30. package/lib/db-entries/passcode.js +56 -0
  31. package/lib/db-entries/resource.d.ts +14 -0
  32. package/lib/db-entries/resource.js +30 -0
  33. package/lib/db-entries/role.d.ts +10 -0
  34. package/lib/db-entries/role.js +24 -0
  35. package/lib/db-entries/setting.d.ts +10 -0
  36. package/lib/db-entries/setting.js +25 -0
  37. package/lib/db-entries/sign-in-experience.d.ts +23 -0
  38. package/lib/db-entries/sign-in-experience.js +53 -0
  39. package/lib/db-entries/user.d.ts +35 -0
  40. package/lib/db-entries/user.js +77 -0
  41. package/lib/foundations/index.d.ts +2 -0
  42. package/lib/foundations/index.js +18 -0
  43. package/lib/foundations/jsonb-types.d.ts +221 -0
  44. package/lib/foundations/jsonb-types.js +135 -0
  45. package/lib/foundations/schemas.d.ts +24 -0
  46. package/lib/foundations/schemas.js +2 -0
  47. package/lib/index.d.ts +5 -0
  48. package/lib/index.js +34 -0
  49. package/lib/seeds/application.d.ts +9 -0
  50. package/lib/seeds/application.js +20 -0
  51. package/lib/seeds/index.d.ts +5 -0
  52. package/lib/seeds/index.js +21 -0
  53. package/lib/seeds/resource.d.ts +2 -0
  54. package/lib/seeds/resource.js +13 -0
  55. package/lib/seeds/roles.d.ts +5 -0
  56. package/lib/seeds/roles.js +11 -0
  57. package/lib/seeds/setting.d.ts +3 -0
  58. package/lib/seeds/setting.js +19 -0
  59. package/lib/seeds/sign-in-experience.d.ts +3 -0
  60. package/lib/seeds/sign-in-experience.js +47 -0
  61. package/lib/types/alteration.d.ts +5 -0
  62. package/lib/types/alteration.js +2 -0
  63. package/lib/types/connector.d.ts +5 -0
  64. package/lib/types/connector.js +6 -0
  65. package/lib/types/index.d.ts +5 -0
  66. package/lib/types/index.js +21 -0
  67. package/lib/types/log.d.ts +577 -0
  68. package/lib/types/log.js +144 -0
  69. package/lib/types/logto-config.d.ts +32 -0
  70. package/lib/types/logto-config.js +40 -0
  71. package/lib/types/oidc-config.d.ts +12 -0
  72. package/lib/types/oidc-config.js +9 -0
  73. package/lib/types/user.d.ts +6 -0
  74. package/lib/types/user.js +21 -0
  75. package/package.json +74 -0
@@ -0,0 +1,144 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.logTypeGuard = exports.tokenTypeGuard = exports.TokenType = exports.baseLogPayloadGuard = exports.logResultGuard = exports.LogResult = void 0;
4
+ const zod_1 = require("zod");
5
+ var LogResult;
6
+ (function (LogResult) {
7
+ LogResult["Success"] = "Success";
8
+ LogResult["Error"] = "Error";
9
+ })(LogResult = exports.LogResult || (exports.LogResult = {}));
10
+ exports.logResultGuard = zod_1.z.nativeEnum(LogResult);
11
+ exports.baseLogPayloadGuard = zod_1.z.object({
12
+ result: exports.logResultGuard.optional(),
13
+ error: zod_1.z.record(zod_1.z.string(), zod_1.z.unknown()).optional(),
14
+ ip: zod_1.z.string().optional(),
15
+ userAgent: zod_1.z.string().optional(),
16
+ applicationId: zod_1.z.string().optional(),
17
+ sessionId: zod_1.z.string().optional(),
18
+ });
19
+ const arbitraryLogPayloadGuard = zod_1.z.record(zod_1.z.string(), zod_1.z.unknown());
20
+ const registerUsernamePasswordLogPayloadGuard = arbitraryLogPayloadGuard.and(zod_1.z.object({ userId: zod_1.z.string().optional(), username: zod_1.z.string().optional() }));
21
+ const registerEmailSendPasscodeLogPayloadGuard = arbitraryLogPayloadGuard.and(zod_1.z.object({ email: zod_1.z.string().optional(), connectorId: zod_1.z.string().optional() }));
22
+ const registerEmailLogPayloadGuard = arbitraryLogPayloadGuard.and(zod_1.z.object({
23
+ email: zod_1.z.string().optional(),
24
+ code: zod_1.z.string().optional(),
25
+ userId: zod_1.z.string().optional(),
26
+ }));
27
+ const registerSmsSendPasscodeLogPayloadGuard = arbitraryLogPayloadGuard.and(zod_1.z.object({
28
+ phone: zod_1.z.string().optional(),
29
+ connectorId: zod_1.z.string().optional(),
30
+ }));
31
+ const registerSmsLogPayloadGuard = arbitraryLogPayloadGuard.and(zod_1.z.object({
32
+ phone: zod_1.z.string().optional(),
33
+ code: zod_1.z.string().optional(),
34
+ userId: zod_1.z.string().optional(),
35
+ }));
36
+ const registerSocialBindLogPayloadGuard = arbitraryLogPayloadGuard.and(zod_1.z.object({
37
+ connectorId: zod_1.z.string().optional(),
38
+ userId: zod_1.z.string().optional(),
39
+ userInfo: zod_1.z.unknown().optional(),
40
+ }));
41
+ const registerSocialLogPayloadGuard = registerSocialBindLogPayloadGuard.and(zod_1.z.object({
42
+ code: zod_1.z.string().optional(),
43
+ state: zod_1.z.string().optional(),
44
+ redirectUri: zod_1.z.string().optional(),
45
+ redirectTo: zod_1.z.string().optional(),
46
+ }));
47
+ const signInUsernamePasswordLogPayloadGuard = arbitraryLogPayloadGuard.and(zod_1.z.object({
48
+ userId: zod_1.z.string().optional(),
49
+ username: zod_1.z.string().optional(),
50
+ }));
51
+ const signInEmailSendPasscodeLogPayloadGuard = arbitraryLogPayloadGuard.and(zod_1.z.object({
52
+ email: zod_1.z.string().optional(),
53
+ connectorId: zod_1.z.string().optional(),
54
+ }));
55
+ const signInEmailLogPayloadGuard = arbitraryLogPayloadGuard.and(zod_1.z.object({
56
+ email: zod_1.z.string().optional(),
57
+ code: zod_1.z.string().optional(),
58
+ userId: zod_1.z.string().optional(),
59
+ }));
60
+ const signInSmsSendPasscodeLogPayloadGuard = arbitraryLogPayloadGuard.and(zod_1.z.object({
61
+ phone: zod_1.z.string().optional(),
62
+ connectorId: zod_1.z.string().optional(),
63
+ }));
64
+ const signInSmsLogPayloadGuard = arbitraryLogPayloadGuard.and(zod_1.z.object({
65
+ phone: zod_1.z.string().optional(),
66
+ code: zod_1.z.string().optional(),
67
+ userId: zod_1.z.string().optional(),
68
+ }));
69
+ const signInSocialBindLogPayloadGuard = arbitraryLogPayloadGuard.and(zod_1.z.object({
70
+ connectorId: zod_1.z.string().optional(),
71
+ userId: zod_1.z.string().optional(),
72
+ userInfo: zod_1.z.unknown().optional(),
73
+ }));
74
+ const signInSocialLogPayloadGuard = signInSocialBindLogPayloadGuard.and(zod_1.z.object({
75
+ code: zod_1.z.string().optional(),
76
+ state: zod_1.z.string().optional(),
77
+ redirectUri: zod_1.z.string().optional(),
78
+ redirectTo: zod_1.z.string().optional(),
79
+ }));
80
+ const forgotPasswordSmsSendPasscodeLogPayloadGuard = arbitraryLogPayloadGuard.and(zod_1.z.object({
81
+ phone: zod_1.z.string().optional(),
82
+ connectorId: zod_1.z.string().optional(),
83
+ }));
84
+ const forgotPasswordSmsLogPayloadGuard = arbitraryLogPayloadGuard.and(zod_1.z.object({
85
+ phone: zod_1.z.string().optional(),
86
+ code: zod_1.z.string().optional(),
87
+ userId: zod_1.z.string().optional(),
88
+ }));
89
+ const forgotPasswordEmailSendPasscodeLogPayloadGuard = arbitraryLogPayloadGuard.and(zod_1.z.object({
90
+ email: zod_1.z.string().optional(),
91
+ connectorId: zod_1.z.string().optional(),
92
+ }));
93
+ const forgotPasswordEmailLogPayloadGuard = arbitraryLogPayloadGuard.and(zod_1.z.object({
94
+ email: zod_1.z.string().optional(),
95
+ code: zod_1.z.string().optional(),
96
+ userId: zod_1.z.string().optional(),
97
+ }));
98
+ const forgotPasswordResetLogPayloadGuard = arbitraryLogPayloadGuard.and(zod_1.z.object({
99
+ userId: zod_1.z.string().optional(),
100
+ }));
101
+ var TokenType;
102
+ (function (TokenType) {
103
+ TokenType["AccessToken"] = "AccessToken";
104
+ TokenType["RefreshToken"] = "RefreshToken";
105
+ TokenType["IdToken"] = "IdToken";
106
+ })(TokenType = exports.TokenType || (exports.TokenType = {}));
107
+ exports.tokenTypeGuard = zod_1.z.nativeEnum(TokenType);
108
+ const exchangeTokenLogPayloadGuard = arbitraryLogPayloadGuard.and(zod_1.z.object({
109
+ userId: zod_1.z.string().optional(),
110
+ params: zod_1.z.record(zod_1.z.string(), zod_1.z.unknown()).optional(),
111
+ issued: exports.tokenTypeGuard.array().optional(),
112
+ scope: zod_1.z.string().optional(),
113
+ }));
114
+ const revokeTokenLogPayloadGuard = arbitraryLogPayloadGuard.and(zod_1.z.object({
115
+ userId: zod_1.z.string().optional(),
116
+ params: zod_1.z.record(zod_1.z.string(), zod_1.z.unknown()).optional(),
117
+ tokenType: exports.tokenTypeGuard.optional(),
118
+ grantId: zod_1.z.string().optional(),
119
+ }));
120
+ const logPayloadsGuard = zod_1.z.object({
121
+ RegisterUsernamePassword: registerUsernamePasswordLogPayloadGuard,
122
+ RegisterEmailSendPasscode: registerEmailSendPasscodeLogPayloadGuard,
123
+ RegisterEmail: registerEmailLogPayloadGuard,
124
+ RegisterSmsSendPasscode: registerSmsSendPasscodeLogPayloadGuard,
125
+ RegisterSms: registerSmsLogPayloadGuard,
126
+ RegisterSocialBind: registerSocialBindLogPayloadGuard,
127
+ RegisterSocial: registerSocialLogPayloadGuard,
128
+ SignInUsernamePassword: signInUsernamePasswordLogPayloadGuard,
129
+ SignInEmailSendPasscode: signInEmailSendPasscodeLogPayloadGuard,
130
+ SignInEmail: signInEmailLogPayloadGuard,
131
+ SignInSmsSendPasscode: signInSmsSendPasscodeLogPayloadGuard,
132
+ SignInSms: signInSmsLogPayloadGuard,
133
+ SignInSocialBind: signInSocialBindLogPayloadGuard,
134
+ SignInSocial: signInSocialLogPayloadGuard,
135
+ ForgotPasswordSmsSendPasscode: forgotPasswordSmsSendPasscodeLogPayloadGuard,
136
+ ForgotPasswordSms: forgotPasswordSmsLogPayloadGuard,
137
+ ForgotPasswordEmailSendPasscode: forgotPasswordEmailSendPasscodeLogPayloadGuard,
138
+ ForgotPasswordEmail: forgotPasswordEmailLogPayloadGuard,
139
+ ForgotPasswordReset: forgotPasswordResetLogPayloadGuard,
140
+ CodeExchangeToken: exchangeTokenLogPayloadGuard,
141
+ RefreshTokenExchangeToken: exchangeTokenLogPayloadGuard,
142
+ RevokeToken: revokeTokenLogPayloadGuard,
143
+ });
144
+ exports.logTypeGuard = logPayloadsGuard.keyof();
@@ -0,0 +1,32 @@
1
+ import { ZodType } from 'zod';
2
+ export declare enum AlterationStateKey {
3
+ AlterationState = "alterationState"
4
+ }
5
+ export declare type AlterationState = {
6
+ timestamp: number;
7
+ updatedAt?: string;
8
+ };
9
+ export declare type AlterationStateType = {
10
+ [AlterationStateKey.AlterationState]: AlterationState;
11
+ };
12
+ export declare const alterationStateGuard: Readonly<{
13
+ [key in AlterationStateKey]: ZodType<AlterationStateType[key]>;
14
+ }>;
15
+ export declare enum LogtoOidcConfigKey {
16
+ PrivateKeys = "oidc.privateKeys",
17
+ CookieKeys = "oidc.cookieKeys",
18
+ RefreshTokenReuseInterval = "oidc.refreshTokenReuseInterval"
19
+ }
20
+ export declare type LogtoOidcConfigType = {
21
+ [LogtoOidcConfigKey.PrivateKeys]: string[];
22
+ [LogtoOidcConfigKey.CookieKeys]: string[];
23
+ [LogtoOidcConfigKey.RefreshTokenReuseInterval]: number;
24
+ };
25
+ export declare const logtoOidcConfigGuard: Readonly<{
26
+ [key in LogtoOidcConfigKey]: ZodType<LogtoOidcConfigType[key]>;
27
+ }>;
28
+ export declare type LogtoConfigKey = AlterationStateKey | LogtoOidcConfigKey;
29
+ export declare type LogtoConfigType = AlterationStateType | LogtoOidcConfigType;
30
+ export declare type LogtoConfigGuard = typeof alterationStateGuard & typeof logtoOidcConfigGuard;
31
+ export declare const logtoConfigKeys: readonly LogtoConfigKey[];
32
+ export declare const logtoConfigGuards: LogtoConfigGuard;
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.logtoConfigGuards = exports.logtoConfigKeys = exports.logtoOidcConfigGuard = exports.LogtoOidcConfigKey = exports.alterationStateGuard = exports.AlterationStateKey = void 0;
4
+ const zod_1 = require("zod");
5
+ // Alteration state
6
+ var AlterationStateKey;
7
+ (function (AlterationStateKey) {
8
+ AlterationStateKey["AlterationState"] = "alterationState";
9
+ })(AlterationStateKey = exports.AlterationStateKey || (exports.AlterationStateKey = {}));
10
+ exports.alterationStateGuard = Object.freeze({
11
+ [AlterationStateKey.AlterationState]: zod_1.z.object({
12
+ timestamp: zod_1.z.number(),
13
+ updatedAt: zod_1.z.string().optional(),
14
+ }),
15
+ });
16
+ // Logto OIDC config
17
+ var LogtoOidcConfigKey;
18
+ (function (LogtoOidcConfigKey) {
19
+ LogtoOidcConfigKey["PrivateKeys"] = "oidc.privateKeys";
20
+ LogtoOidcConfigKey["CookieKeys"] = "oidc.cookieKeys";
21
+ LogtoOidcConfigKey["RefreshTokenReuseInterval"] = "oidc.refreshTokenReuseInterval";
22
+ })(LogtoOidcConfigKey = exports.LogtoOidcConfigKey || (exports.LogtoOidcConfigKey = {}));
23
+ exports.logtoOidcConfigGuard = Object.freeze({
24
+ [LogtoOidcConfigKey.PrivateKeys]: zod_1.z.string().array(),
25
+ [LogtoOidcConfigKey.CookieKeys]: zod_1.z.string().array(),
26
+ /**
27
+ * This interval helps to avoid concurrency issues when exchanging the rotating refresh token multiple times within a given timeframe.
28
+ * During the leeway window (in seconds), the consumed refresh token will be considered as valid.
29
+ * This is useful for distributed apps and serverless apps like Next.js, in which there is no shared memory.
30
+ */
31
+ [LogtoOidcConfigKey.RefreshTokenReuseInterval]: zod_1.z.number().gte(3),
32
+ });
33
+ exports.logtoConfigKeys = Object.freeze([
34
+ ...Object.values(AlterationStateKey),
35
+ ...Object.values(LogtoOidcConfigKey),
36
+ ]);
37
+ exports.logtoConfigGuards = Object.freeze({
38
+ ...exports.alterationStateGuard,
39
+ ...exports.logtoOidcConfigGuard,
40
+ });
@@ -0,0 +1,12 @@
1
+ import { KeysToCamelCase } from '@silverhand/essentials';
2
+ export declare type SnakeCaseOidcConfig = {
3
+ authorization_endpoint: string;
4
+ userinfo_endpoint: string;
5
+ token_endpoint: string;
6
+ };
7
+ export declare type OidcConfig = KeysToCamelCase<SnakeCaseOidcConfig>;
8
+ export declare enum GrantType {
9
+ AuthorizationCode = "authorization_code",
10
+ RefreshToken = "refresh_token",
11
+ ClientCredentials = "client_credentials"
12
+ }
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GrantType = void 0;
4
+ var GrantType;
5
+ (function (GrantType) {
6
+ GrantType["AuthorizationCode"] = "authorization_code";
7
+ GrantType["RefreshToken"] = "refresh_token";
8
+ GrantType["ClientCredentials"] = "client_credentials";
9
+ })(GrantType = exports.GrantType || (exports.GrantType = {}));
@@ -0,0 +1,6 @@
1
+ import { CreateUser } from '../db-entries';
2
+ export declare const userInfoSelectFields: readonly ["id", "username", "primaryEmail", "primaryPhone", "name", "avatar", "roleNames", "customData", "identities", "lastSignInAt", "createdAt", "applicationId"];
3
+ export declare type UserInfo<Keys extends keyof CreateUser = typeof userInfoSelectFields[number]> = Pick<CreateUser, Keys>;
4
+ export declare enum UserRole {
5
+ Admin = "admin"
6
+ }
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UserRole = exports.userInfoSelectFields = void 0;
4
+ exports.userInfoSelectFields = Object.freeze([
5
+ 'id',
6
+ 'username',
7
+ 'primaryEmail',
8
+ 'primaryPhone',
9
+ 'name',
10
+ 'avatar',
11
+ 'roleNames',
12
+ 'customData',
13
+ 'identities',
14
+ 'lastSignInAt',
15
+ 'createdAt',
16
+ 'applicationId',
17
+ ]);
18
+ var UserRole;
19
+ (function (UserRole) {
20
+ UserRole["Admin"] = "admin";
21
+ })(UserRole = exports.UserRole || (exports.UserRole = {}));
package/package.json ADDED
@@ -0,0 +1,74 @@
1
+ {
2
+ "name": "@logto/schemas",
3
+ "version": "1.0.0-beta.11",
4
+ "main": "lib/index.js",
5
+ "author": "Silverhand Inc. <contact@silverhand.io>",
6
+ "license": "MPL-2.0",
7
+ "files": [
8
+ "lib",
9
+ "alterations"
10
+ ],
11
+ "publishConfig": {
12
+ "access": "public"
13
+ },
14
+ "engines": {
15
+ "node": "^16.0.0"
16
+ },
17
+ "devDependencies": {
18
+ "@silverhand/eslint-config": "1.2.0",
19
+ "@silverhand/essentials": "^1.3.0",
20
+ "@silverhand/jest-config": "1.2.2",
21
+ "@silverhand/ts-config": "1.2.1",
22
+ "@types/jest": "^29.1.2",
23
+ "@types/lodash.uniq": "^4.5.6",
24
+ "@types/node": "^16.0.0",
25
+ "@types/pluralize": "^0.0.29",
26
+ "camelcase": "^6.2.0",
27
+ "eslint": "^8.21.0",
28
+ "jest": "^29.1.2",
29
+ "lint-staged": "^13.0.0",
30
+ "lodash.uniq": "^4.5.0",
31
+ "pluralize": "^8.0.0",
32
+ "prettier": "^2.7.1",
33
+ "slonik": "^30.0.0",
34
+ "ts-node": "^10.9.1",
35
+ "typescript": "^4.7.4"
36
+ },
37
+ "eslintConfig": {
38
+ "extends": "@silverhand",
39
+ "rules": {
40
+ "@typescript-eslint/ban-types": "off"
41
+ },
42
+ "overrides": [
43
+ {
44
+ "files": [
45
+ "alterations/*.ts"
46
+ ],
47
+ "rules": {
48
+ "unicorn/filename-case": "off"
49
+ }
50
+ }
51
+ ]
52
+ },
53
+ "prettier": "@silverhand/eslint-config/.prettierrc",
54
+ "dependencies": {
55
+ "@logto/connector-kit": "1.0.0-beta.18",
56
+ "@logto/core-kit": "1.0.0-beta.18",
57
+ "@logto/language-kit": "1.0.0-beta.19",
58
+ "@logto/phrases": "^1.0.0-beta.11",
59
+ "@logto/phrases-ui": "^1.0.0-beta.11",
60
+ "zod": "^3.18.0"
61
+ },
62
+ "scripts": {
63
+ "precommit": "lint-staged",
64
+ "version": "./update-next.sh && git add alterations/",
65
+ "generate": "rm -rf src/db-entries && ts-node src/gen/index.ts && eslint \"src/db-entries/**\" --fix",
66
+ "build:alterations": "rm -rf alterations-js && tsc -p tsconfig.build.alterations.json",
67
+ "build": "pnpm generate && rm -rf lib/ && tsc -p tsconfig.build.json && pnpm build:alterations",
68
+ "dev": "tsc -p tsconfig.build.json --watch --preserveWatchOutput --incremental",
69
+ "lint": "eslint --ext .ts src",
70
+ "lint:report": "pnpm lint --format json --output-file report.json",
71
+ "test": "jest",
72
+ "test:ci": "jest"
73
+ }
74
+ }