@tinyrack/tinyauth-server 0.0.14 → 0.0.16
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/dist/entities/background-job.entity.d.ts +111 -0
- package/dist/entities/background-job.entity.d.ts.map +1 -0
- package/dist/entities/background-job.entity.js +41 -0
- package/dist/entities/background-job.entity.js.map +1 -0
- package/dist/entities/scheduler-job.entity.d.ts +134 -0
- package/dist/entities/scheduler-job.entity.d.ts.map +1 -0
- package/dist/entities/scheduler-job.entity.js +48 -0
- package/dist/entities/scheduler-job.entity.js.map +1 -0
- package/dist/entrypoints/app.d.ts +42 -2
- package/dist/entrypoints/app.d.ts.map +1 -1
- package/dist/entrypoints/database/postgres/compiled-functions.d.ts +280 -170
- package/dist/entrypoints/database/postgres/compiled-functions.d.ts.map +1 -1
- package/dist/entrypoints/database/postgres/compiled-functions.js +3442 -2124
- package/dist/entrypoints/database/postgres/compiled-functions.js.map +1 -1
- package/dist/entrypoints/database/postgres/postgres.d.ts +7 -2
- package/dist/entrypoints/database/postgres/postgres.d.ts.map +1 -1
- package/dist/entrypoints/database/postgres/postgres.js +3 -2
- package/dist/entrypoints/database/postgres/postgres.js.map +1 -1
- package/dist/entrypoints/database/sqlite/compiled-functions.d.ts +280 -170
- package/dist/entrypoints/database/sqlite/compiled-functions.d.ts.map +1 -1
- package/dist/entrypoints/database/sqlite/compiled-functions.js +3442 -2124
- package/dist/entrypoints/database/sqlite/compiled-functions.js.map +1 -1
- package/dist/entrypoints/database/sqlite/sqlite.d.ts +6 -2
- package/dist/entrypoints/database/sqlite/sqlite.d.ts.map +1 -1
- package/dist/entrypoints/database/sqlite/sqlite.js +2 -1
- package/dist/entrypoints/database/sqlite/sqlite.js.map +1 -1
- package/dist/entrypoints/identity-providers/apple.d.ts +1 -0
- package/dist/entrypoints/identity-providers/apple.d.ts.map +1 -1
- package/dist/entrypoints/identity-providers/apple.js +1 -0
- package/dist/entrypoints/identity-providers/apple.js.map +1 -1
- package/dist/entrypoints/identity-providers/generic-oauth.d.ts +2 -0
- package/dist/entrypoints/identity-providers/generic-oauth.d.ts.map +1 -1
- package/dist/entrypoints/identity-providers/generic-oauth.js +2 -0
- package/dist/entrypoints/identity-providers/generic-oauth.js.map +1 -1
- package/dist/entrypoints/scheduler/cron.d.ts +3 -0
- package/dist/entrypoints/scheduler/cron.d.ts.map +1 -0
- package/dist/entrypoints/scheduler/cron.js +34 -0
- package/dist/entrypoints/scheduler/cron.js.map +1 -0
- package/dist/entrypoints/scheduler/croner.d.ts +1 -1
- package/dist/entrypoints/scheduler/croner.d.ts.map +1 -1
- package/dist/entrypoints/scheduler/croner.js +27 -7
- package/dist/entrypoints/scheduler/croner.js.map +1 -1
- package/dist/entrypoints/scheduler/database.d.ts +38 -0
- package/dist/entrypoints/scheduler/database.d.ts.map +1 -0
- package/dist/entrypoints/scheduler/database.js +444 -0
- package/dist/entrypoints/scheduler/database.js.map +1 -0
- package/dist/entrypoints/scheduler/distributed-runner.d.ts +134 -0
- package/dist/entrypoints/scheduler/distributed-runner.d.ts.map +1 -0
- package/dist/entrypoints/scheduler/distributed-runner.js +327 -0
- package/dist/entrypoints/scheduler/distributed-runner.js.map +1 -0
- package/dist/lib/config/identity-providers.d.ts +4 -0
- package/dist/lib/config/identity-providers.d.ts.map +1 -1
- package/dist/lib/config/identity-providers.js +40 -0
- package/dist/lib/config/identity-providers.js.map +1 -1
- package/dist/lib/config/index.d.ts +2 -2
- package/dist/lib/config/index.d.ts.map +1 -1
- package/dist/lib/config/index.js +1 -1
- package/dist/lib/config/index.js.map +1 -1
- package/dist/lib/config/resolved.d.ts +3 -1
- package/dist/lib/config/resolved.d.ts.map +1 -1
- package/dist/lib/config/resolved.js +1 -1
- package/dist/lib/config/resolved.js.map +1 -1
- package/dist/lib/config/scheduler.d.ts +41 -2
- package/dist/lib/config/scheduler.d.ts.map +1 -1
- package/dist/lib/config/scheduler.js +9 -3
- package/dist/lib/config/scheduler.js.map +1 -1
- package/dist/lib/database/entities.d.ts.map +1 -1
- package/dist/lib/database/entities.js +4 -0
- package/dist/lib/database/entities.js.map +1 -1
- package/dist/lib/pkce.d.ts.map +1 -1
- package/dist/lib/pkce.js +5 -1
- package/dist/lib/pkce.js.map +1 -1
- package/dist/middleware/session.d.ts.map +1 -1
- package/dist/middleware/session.js +2 -0
- package/dist/middleware/session.js.map +1 -1
- package/dist/migrations/postgres/Migration20260512120000_add_scheduler_jobs.d.ts +5 -0
- package/dist/migrations/postgres/Migration20260512120000_add_scheduler_jobs.d.ts.map +1 -0
- package/dist/migrations/postgres/Migration20260512120000_add_scheduler_jobs.js +15 -0
- package/dist/migrations/postgres/Migration20260512120000_add_scheduler_jobs.js.map +1 -0
- package/dist/migrations/postgres/index.d.ts.map +1 -1
- package/dist/migrations/postgres/index.js +5 -1
- package/dist/migrations/postgres/index.js.map +1 -1
- package/dist/migrations/sqlite/Migration20260512120000_add_scheduler_jobs.d.ts +5 -0
- package/dist/migrations/sqlite/Migration20260512120000_add_scheduler_jobs.d.ts.map +1 -0
- package/dist/migrations/sqlite/Migration20260512120000_add_scheduler_jobs.js +13 -0
- package/dist/migrations/sqlite/Migration20260512120000_add_scheduler_jobs.js.map +1 -0
- package/dist/migrations/sqlite/index.d.ts.map +1 -1
- package/dist/migrations/sqlite/index.js +5 -1
- package/dist/migrations/sqlite/index.js.map +1 -1
- package/dist/repositories/background-job.repository.d.ts +5 -0
- package/dist/repositories/background-job.repository.d.ts.map +1 -0
- package/dist/repositories/background-job.repository.js +4 -0
- package/dist/repositories/background-job.repository.js.map +1 -0
- package/dist/repositories/scheduler-job.repository.d.ts +5 -0
- package/dist/repositories/scheduler-job.repository.d.ts.map +1 -0
- package/dist/repositories/scheduler-job.repository.js +4 -0
- package/dist/repositories/scheduler-job.repository.js.map +1 -0
- package/dist/routes/api/auth/passkey/verify/post.d.ts.map +1 -1
- package/dist/routes/api/auth/passkey/verify/post.js +1 -1
- package/dist/routes/api/auth/passkey/verify/post.js.map +1 -1
- package/dist/routes/api/index.d.ts +38 -0
- package/dist/routes/api/index.d.ts.map +1 -1
- package/dist/routes/api/oauth/_provider/callback/get.d.ts +19 -0
- package/dist/routes/api/oauth/_provider/callback/get.d.ts.map +1 -1
- package/dist/routes/api/oauth/_provider/callback/get.js +19 -10
- package/dist/routes/api/oauth/_provider/callback/get.js.map +1 -1
- package/dist/routes/api/oauth/_provider/callback/post.d.ts +19 -0
- package/dist/routes/api/oauth/_provider/callback/post.d.ts.map +1 -1
- package/dist/routes/api/oauth/_provider/callback/post.js +19 -10
- package/dist/routes/api/oauth/_provider/callback/post.js.map +1 -1
- package/dist/routes/api/oauth/index.d.ts +38 -0
- package/dist/routes/api/oauth/index.d.ts.map +1 -1
- package/dist/routes/index.d.ts +39 -1
- package/dist/routes/index.d.ts.map +1 -1
- package/dist/routes/oauth/client-auth.d.ts +10 -0
- package/dist/routes/oauth/client-auth.d.ts.map +1 -0
- package/dist/routes/oauth/client-auth.js +57 -0
- package/dist/routes/oauth/client-auth.js.map +1 -0
- package/dist/routes/oauth/index.d.ts +1 -1
- package/dist/routes/oauth/introspect/post.d.ts.map +1 -1
- package/dist/routes/oauth/introspect/post.js +36 -12
- package/dist/routes/oauth/introspect/post.js.map +1 -1
- package/dist/routes/oauth/revoke/post.d.ts.map +1 -1
- package/dist/routes/oauth/revoke/post.js +30 -12
- package/dist/routes/oauth/revoke/post.js.map +1 -1
- package/dist/routes/oauth/token/post.d.ts +1 -1
- package/dist/routes/oauth/token/post.d.ts.map +1 -1
- package/dist/routes/oauth/token/post.js +31 -9
- package/dist/routes/oauth/token/post.js.map +1 -1
- package/dist/schemas/field.d.ts.map +1 -1
- package/dist/schemas/field.js +4 -0
- package/dist/schemas/field.js.map +1 -1
- package/dist/services/container.d.ts +4 -2
- package/dist/services/container.d.ts.map +1 -1
- package/dist/services/container.js +7 -1
- package/dist/services/container.js.map +1 -1
- package/dist/services/jwt.service.d.ts +1 -0
- package/dist/services/jwt.service.d.ts.map +1 -1
- package/dist/services/jwt.service.js +29 -18
- package/dist/services/jwt.service.js.map +1 -1
- package/dist/services/mikro.service.d.ts +4 -0
- package/dist/services/mikro.service.d.ts.map +1 -1
- package/dist/services/mikro.service.js +6 -0
- package/dist/services/mikro.service.js.map +1 -1
- package/dist/services/oauth-authorize.service.d.ts +1 -0
- package/dist/services/oauth-authorize.service.d.ts.map +1 -1
- package/dist/services/oauth-authorize.service.js +10 -1
- package/dist/services/oauth-authorize.service.js.map +1 -1
- package/dist/services/oauth-client.service.d.ts +2 -0
- package/dist/services/oauth-client.service.d.ts.map +1 -1
- package/dist/services/oauth-client.service.js +26 -0
- package/dist/services/oauth-client.service.js.map +1 -1
- package/dist/services/oauth-connect.service.d.ts +5 -8
- package/dist/services/oauth-connect.service.d.ts.map +1 -1
- package/dist/services/oauth-connect.service.js +99 -15
- package/dist/services/oauth-connect.service.js.map +1 -1
- package/dist/services/oauth-token.service.d.ts +3 -2
- package/dist/services/oauth-token.service.d.ts.map +1 -1
- package/dist/services/oauth-token.service.js +44 -22
- package/dist/services/oauth-token.service.js.map +1 -1
- package/dist/services/passkey.service.d.ts +1 -1
- package/dist/services/passkey.service.d.ts.map +1 -1
- package/dist/services/passkey.service.js +11 -3
- package/dist/services/passkey.service.js.map +1 -1
- package/dist/services/scheduler.service.d.ts +6 -1
- package/dist/services/scheduler.service.d.ts.map +1 -1
- package/dist/services/scheduler.service.js +44 -11
- package/dist/services/scheduler.service.js.map +1 -1
- package/package.json +5 -1
- package/public/assets/{index-KMvNrUPy.js → index-CLq6d6iO.js} +22 -22
- package/public/assets/{index-KMvNrUPy.js.map → index-CLq6d6iO.js.map} +1 -1
- package/public/index.html +1 -1
|
@@ -1,6 +1,10 @@
|
|
|
1
|
+
import { type Options } from '@mikro-orm/core';
|
|
1
2
|
import type { DatabaseConfig } from '../../../lib/config/index.ts';
|
|
2
|
-
|
|
3
|
+
type SqliteDatabaseConfig = {
|
|
3
4
|
path: string;
|
|
4
5
|
test: boolean;
|
|
5
|
-
|
|
6
|
+
debug?: Options['debug'];
|
|
7
|
+
};
|
|
8
|
+
export declare function sqlite(database: SqliteDatabaseConfig): DatabaseConfig;
|
|
9
|
+
export {};
|
|
6
10
|
//# sourceMappingURL=sqlite.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../../../src/entrypoints/database/sqlite/sqlite.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../../../src/entrypoints/database/sqlite/sqlite.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+B,KAAK,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAI5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAKnE,KAAK,oBAAoB,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1B,CAAC;AAEF,wBAAgB,MAAM,CAAC,QAAQ,EAAE,oBAAoB,GAAG,cAAc,CA2BrE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../../../src/entrypoints/database/sqlite/sqlite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../../../src/entrypoints/database/sqlite/sqlite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA+B,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,iBAAiB,MAAM,yBAAyB,CAAC;AAQxD,MAAM,UAAU,MAAM,CAAC,QAA8B;IACnD,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;IAE1D,OAAO;QACL,kBAAkB,EAAE,KAAK,IAAI,EAAE;YAC7B,OAAO,YAAY,CAAC;gBAClB,MAAM,EAAE,YAAY;gBACpB,MAAM,EAAE,MAAM;gBACd,aAAa,EAAE,IAAI,iBAAiB,CAAC,MAAM,CAAC;gBAC5C,iBAAiB,EAAE,iBAAiB;gBACpC,QAAQ,EAAE,CAAC,GAAG,mBAAmB,EAAE,CAAC;gBACpC,UAAU,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC;gBACnC,UAAU,EAAE;oBACV,cAAc,EAAE,iBAAiB;oBACjC,QAAQ,EAAE,KAAK;iBAChB;gBACD,KAAK,EAAE,QAAQ,CAAC,KAAK,IAAI,KAAK;aAC/B,CAAC,CAAC;QACL,CAAC;QACD,UAAU,EAAE,KAAK,EAAE,GAAa,EAAE,EAAE;YAClC,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAClB,MAAM,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAC7B,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YAC1B,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -6,6 +6,7 @@ export interface AppleOAuthConfig {
|
|
|
6
6
|
icon_url?: string | undefined;
|
|
7
7
|
client_id: string;
|
|
8
8
|
client_secret: string;
|
|
9
|
+
unsafe_jwks_url_for_tests?: string | undefined;
|
|
9
10
|
scopes?: string[] | undefined;
|
|
10
11
|
response_mode?: 'query' | 'fragment' | 'form_post' | undefined;
|
|
11
12
|
email_conflict_strategy: 'auto_link' | 'require_link';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apple.d.ts","sourceRoot":"","sources":["../../../src/entrypoints/identity-providers/apple.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAExE,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC9B,aAAa,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,WAAW,GAAG,SAAS,CAAC;IAC/D,uBAAuB,EAAE,WAAW,GAAG,cAAc,CAAC;CACvD;AAED,wBAAgB,KAAK,CAAC,MAAM,EAAE,gBAAgB,GAAG,sBAAsB,
|
|
1
|
+
{"version":3,"file":"apple.d.ts","sourceRoot":"","sources":["../../../src/entrypoints/identity-providers/apple.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAExE,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,yBAAyB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/C,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC9B,aAAa,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,WAAW,GAAG,SAAS,CAAC;IAC/D,uBAAuB,EAAE,WAAW,GAAG,cAAc,CAAC;CACvD;AAED,wBAAgB,KAAK,CAAC,MAAM,EAAE,gBAAgB,GAAG,sBAAsB,CAsBtE"}
|
|
@@ -10,6 +10,7 @@ export function apple(config) {
|
|
|
10
10
|
authorization_url: 'https://appleid.apple.com/auth/authorize',
|
|
11
11
|
token_url: 'https://appleid.apple.com/auth/token',
|
|
12
12
|
userinfo_url: null,
|
|
13
|
+
jwks_url: config.unsafe_jwks_url_for_tests,
|
|
13
14
|
scopes: config.scopes || ['openid', 'email', 'name'],
|
|
14
15
|
response_mode: config.response_mode || 'form_post',
|
|
15
16
|
email_conflict_strategy: config.email_conflict_strategy,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apple.js","sourceRoot":"","sources":["../../../src/entrypoints/identity-providers/apple.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"apple.js","sourceRoot":"","sources":["../../../src/entrypoints/identity-providers/apple.ts"],"names":[],"mappings":"AAeA,MAAM,UAAU,KAAK,CAAC,MAAwB;IAC5C,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,EAAE;QAC9C,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,iBAAiB,EAAE,0CAA0C;QAC7D,SAAS,EAAE,sCAAsC;QACjD,YAAY,EAAE,IAAI;QAClB,QAAQ,EAAE,MAAM,CAAC,yBAAyB;QAC1C,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC;QACpD,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,WAAW;QAClD,uBAAuB,EAAE,MAAM,CAAC,uBAAuB;QACvD,gBAAgB,EAAE;YAChB,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,OAAO;YACd,cAAc,EAAE,gBAAgB;SACjC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -9,6 +9,8 @@ export interface GenericOAuthConfig {
|
|
|
9
9
|
authorization_url: string;
|
|
10
10
|
token_url: string;
|
|
11
11
|
userinfo_url?: string | null | undefined;
|
|
12
|
+
jwks_url?: string | undefined;
|
|
13
|
+
issuer?: string | undefined;
|
|
12
14
|
email_url?: string | undefined;
|
|
13
15
|
scopes: string[];
|
|
14
16
|
response_mode?: 'query' | 'fragment' | 'form_post' | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generic-oauth.d.ts","sourceRoot":"","sources":["../../../src/entrypoints/identity-providers/generic-oauth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAExE,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,WAAW,GAAG,SAAS,CAAC;IAC/D,uBAAuB,EAAE,WAAW,GAAG,cAAc,CAAC;IACtD,gBAAgB,EAAE;QAChB,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACpC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC1B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KAC9B,CAAC;CACH;AAED,wBAAgB,YAAY,CAC1B,MAAM,EAAE,kBAAkB,GACzB,sBAAsB,
|
|
1
|
+
{"version":3,"file":"generic-oauth.d.ts","sourceRoot":"","sources":["../../../src/entrypoints/identity-providers/generic-oauth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAExE,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,WAAW,GAAG,SAAS,CAAC;IAC/D,uBAAuB,EAAE,WAAW,GAAG,cAAc,CAAC;IACtD,gBAAgB,EAAE;QAChB,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACpC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC1B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KAC9B,CAAC;CACH;AAED,wBAAgB,YAAY,CAC1B,MAAM,EAAE,kBAAkB,GACzB,sBAAsB,CAoBxB"}
|
|
@@ -10,6 +10,8 @@ export function genericOAuth(config) {
|
|
|
10
10
|
authorization_url: config.authorization_url,
|
|
11
11
|
token_url: config.token_url,
|
|
12
12
|
userinfo_url: config.userinfo_url ?? null,
|
|
13
|
+
jwks_url: config.jwks_url,
|
|
14
|
+
issuer: config.issuer,
|
|
13
15
|
email_url: config.email_url,
|
|
14
16
|
scopes: config.scopes,
|
|
15
17
|
response_mode: config.response_mode,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generic-oauth.js","sourceRoot":"","sources":["../../../src/entrypoints/identity-providers/generic-oauth.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"generic-oauth.js","sourceRoot":"","sources":["../../../src/entrypoints/identity-providers/generic-oauth.ts"],"names":[],"mappings":"AA2BA,MAAM,UAAU,YAAY,CAC1B,MAA0B;IAE1B,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;QAC3C,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,IAAI;QACzC,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,uBAAuB,EAAE,MAAM,CAAC,uBAAuB;QACvD,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;KAC1C,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cron.d.ts","sourceRoot":"","sources":["../../../src/entrypoints/scheduler/cron.ts"],"names":[],"mappings":"AAEA,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAgBjE;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,CAcrE"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Cron } from 'croner';
|
|
2
|
+
export function validateCronExpression(expression) {
|
|
3
|
+
let job;
|
|
4
|
+
try {
|
|
5
|
+
job = new Cron(expression, { paused: true });
|
|
6
|
+
const nextRunAt = job.nextRun(new Date()) ?? null;
|
|
7
|
+
if (!nextRunAt) {
|
|
8
|
+
throw new Error('Cron expression has no future run');
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
catch (err) {
|
|
12
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
13
|
+
throw new Error(`Invalid cron expression "${expression}": ${message}`);
|
|
14
|
+
}
|
|
15
|
+
finally {
|
|
16
|
+
job?.stop();
|
|
17
|
+
}
|
|
18
|
+
return expression;
|
|
19
|
+
}
|
|
20
|
+
export function getNextCronRunAt(expression, from) {
|
|
21
|
+
let job;
|
|
22
|
+
try {
|
|
23
|
+
job = new Cron(expression, { paused: true });
|
|
24
|
+
const nextRunAt = job.nextRun(from) ?? null;
|
|
25
|
+
if (!nextRunAt) {
|
|
26
|
+
throw new Error(`Cron expression has no future run: ${expression}`);
|
|
27
|
+
}
|
|
28
|
+
return nextRunAt;
|
|
29
|
+
}
|
|
30
|
+
finally {
|
|
31
|
+
job?.stop();
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=cron.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cron.js","sourceRoot":"","sources":["../../../src/entrypoints/scheduler/cron.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,MAAM,UAAU,sBAAsB,CAAC,UAAkB;IACvD,IAAI,GAAqB,CAAC;IAC1B,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC;QAClD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,MAAM,IAAI,KAAK,CAAC,4BAA4B,UAAU,MAAM,OAAO,EAAE,CAAC,CAAC;IACzE,CAAC;YAAS,CAAC;QACT,GAAG,EAAE,IAAI,EAAE,CAAC;IACd,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,UAAkB,EAAE,IAAU;IAC7D,IAAI,GAAqB,CAAC;IAC1B,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QAE5C,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,sCAAsC,UAAU,EAAE,CAAC,CAAC;QACtE,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;YAAS,CAAC;QACT,GAAG,EAAE,IAAI,EAAE,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { SchedulerConfig } from '../../lib/config/index.ts';
|
|
2
2
|
export interface CronerSchedulerOptions {
|
|
3
|
-
|
|
3
|
+
cleanupCron?: string | undefined;
|
|
4
4
|
}
|
|
5
5
|
export declare function croner(options?: CronerSchedulerOptions): SchedulerConfig;
|
|
6
6
|
//# sourceMappingURL=croner.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"croner.d.ts","sourceRoot":"","sources":["../../../src/entrypoints/scheduler/croner.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,eAAe,EAEhB,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"croner.d.ts","sourceRoot":"","sources":["../../../src/entrypoints/scheduler/croner.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,eAAe,EAEhB,MAAM,2BAA2B,CAAC;AAKnC,MAAM,WAAW,sBAAsB;IACrC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAClC;AAED,wBAAgB,MAAM,CAAC,OAAO,GAAE,sBAA2B,GAAG,eAAe,CAgD5E"}
|
|
@@ -1,18 +1,38 @@
|
|
|
1
1
|
import { Cron } from 'croner';
|
|
2
|
+
import { validateCronExpression } from "./cron.js";
|
|
2
3
|
const DEFAULT_CRON = '0 2 * * *';
|
|
3
4
|
export function croner(options = {}) {
|
|
4
|
-
const
|
|
5
|
+
const cleanupCron = validateCronExpression(options.cleanupCron ?? DEFAULT_CRON);
|
|
5
6
|
return {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
cleanupCron,
|
|
8
|
+
start({ scheduledJobs, logger }) {
|
|
9
|
+
const cronJobs = scheduledJobs.map((job) => new Cron(job.schedule.expression, async () => {
|
|
10
|
+
try {
|
|
11
|
+
await job.handler({ logger });
|
|
12
|
+
}
|
|
13
|
+
catch (err) {
|
|
14
|
+
logger?.error({ err, jobId: job.id }, 'Scheduled job failed');
|
|
15
|
+
}
|
|
16
|
+
}));
|
|
10
17
|
const handle = {
|
|
11
18
|
stop() {
|
|
12
|
-
|
|
19
|
+
for (const cronJob of cronJobs) {
|
|
20
|
+
cronJob.stop();
|
|
21
|
+
}
|
|
13
22
|
},
|
|
14
23
|
getNextRunAt() {
|
|
15
|
-
|
|
24
|
+
const nextRuns = cronJobs
|
|
25
|
+
.map((cronJob) => cronJob.nextRun() ?? null)
|
|
26
|
+
.filter((nextRun) => nextRun !== null);
|
|
27
|
+
return nextRuns.reduce((earliest, nextRun) => {
|
|
28
|
+
if (!earliest || nextRun.getTime() < earliest.getTime()) {
|
|
29
|
+
return nextRun;
|
|
30
|
+
}
|
|
31
|
+
return earliest;
|
|
32
|
+
}, null);
|
|
33
|
+
},
|
|
34
|
+
async enqueue() {
|
|
35
|
+
throw new Error('Background jobs require a durable scheduler backend');
|
|
16
36
|
},
|
|
17
37
|
};
|
|
18
38
|
return handle;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"croner.js","sourceRoot":"","sources":["../../../src/entrypoints/scheduler/croner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"croner.js","sourceRoot":"","sources":["../../../src/entrypoints/scheduler/croner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAK9B,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAEnD,MAAM,YAAY,GAAG,WAAW,CAAC;AAMjC,MAAM,UAAU,MAAM,CAAC,UAAkC,EAAE;IACzD,MAAM,WAAW,GAAG,sBAAsB,CACxC,OAAO,CAAC,WAAW,IAAI,YAAY,CACpC,CAAC;IAEF,OAAO;QACL,WAAW;QACX,KAAK,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE;YAC7B,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAChC,CAAC,GAAG,EAAE,EAAE,CACN,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,KAAK,IAAI,EAAE;gBAC3C,IAAI,CAAC;oBACH,MAAM,GAAG,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;gBAChC,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,sBAAsB,CAAC,CAAC;gBAChE,CAAC;YACH,CAAC,CAAC,CACL,CAAC;YAEF,MAAM,MAAM,GAAoB;gBAC9B,IAAI;oBACF,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;wBAC/B,OAAO,CAAC,IAAI,EAAE,CAAC;oBACjB,CAAC;gBACH,CAAC;gBACD,YAAY;oBACV,MAAM,QAAQ,GAAG,QAAQ;yBACtB,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC;yBAC3C,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;oBAEzC,OAAO,QAAQ,CAAC,MAAM,CAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE;wBACxD,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;4BACxD,OAAO,OAAO,CAAC;wBACjB,CAAC;wBAED,OAAO,QAAQ,CAAC;oBAClB,CAAC,EAAE,IAAI,CAAC,CAAC;gBACX,CAAC;gBACD,KAAK,CAAC,OAAO;oBACX,MAAM,IAAI,KAAK,CACb,qDAAqD,CACtD,CAAC;gBACJ,CAAC;aACF,CAAC;YAEF,OAAO,MAAM,CAAC;QAChB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { SchedulerConfig, SchedulerConfigResolver } from '../../lib/config/index.ts';
|
|
2
|
+
import type { MikroService } from '../../services/mikro.service.ts';
|
|
3
|
+
import { type AcquiredBackgroundJob, type AcquiredSchedulerJob, type BackgroundJobCompletionInput, type BackgroundJobEnqueueInput, type BackgroundJobFailureCompletionInput, type DistributedBackgroundJobStore, type DistributedSchedulerStore, type PersistedSchedulerJobDefinition, type SchedulerCompletionInput, type SchedulerFailureCompletionInput } from './distributed-runner.ts';
|
|
4
|
+
export interface DatabaseSchedulerOptions {
|
|
5
|
+
cleanupCron?: string | undefined;
|
|
6
|
+
pollIntervalMs?: number | undefined;
|
|
7
|
+
lockTtlMs?: number | undefined;
|
|
8
|
+
backgroundRetryDelayMs?: number | undefined;
|
|
9
|
+
backgroundMaxAttempts?: number | undefined;
|
|
10
|
+
backgroundRetentionMs?: number | undefined;
|
|
11
|
+
instanceId?: string | undefined;
|
|
12
|
+
}
|
|
13
|
+
export interface BoundDatabaseSchedulerOptions extends DatabaseSchedulerOptions {
|
|
14
|
+
mikro: MikroService;
|
|
15
|
+
}
|
|
16
|
+
export declare class DatabaseSchedulerStore implements DistributedSchedulerStore {
|
|
17
|
+
private readonly mikro;
|
|
18
|
+
constructor(mikro: MikroService);
|
|
19
|
+
reconcileJobs(jobs: readonly PersistedSchedulerJobDefinition[], now: Date): Promise<void>;
|
|
20
|
+
acquireDueJob(now: Date, lockedUntil: Date, instanceId: string): Promise<AcquiredSchedulerJob | null>;
|
|
21
|
+
renewLease(jobId: string, instanceId: string, lockedUntil: Date, now: Date): Promise<boolean>;
|
|
22
|
+
completeJobSuccess(input: SchedulerCompletionInput): Promise<boolean>;
|
|
23
|
+
completeJobFailure(input: SchedulerFailureCompletionInput): Promise<boolean>;
|
|
24
|
+
findNextRunAt(): Promise<Date | null>;
|
|
25
|
+
}
|
|
26
|
+
export declare class DatabaseBackgroundJobStore implements DistributedBackgroundJobStore {
|
|
27
|
+
private readonly mikro;
|
|
28
|
+
constructor(mikro: MikroService);
|
|
29
|
+
enqueue(input: BackgroundJobEnqueueInput): Promise<string>;
|
|
30
|
+
acquireDueJob(now: Date, lockedUntil: Date, instanceId: string): Promise<AcquiredBackgroundJob | null>;
|
|
31
|
+
renewLease(id: string, instanceId: string, lockedUntil: Date, now: Date): Promise<boolean>;
|
|
32
|
+
completeJobSuccess(input: BackgroundJobCompletionInput): Promise<boolean>;
|
|
33
|
+
completeJobFailure(input: BackgroundJobFailureCompletionInput): Promise<boolean>;
|
|
34
|
+
cleanupCompletedJobs(before: Date): Promise<number>;
|
|
35
|
+
}
|
|
36
|
+
export declare function database(options: BoundDatabaseSchedulerOptions): SchedulerConfig;
|
|
37
|
+
export declare function database(options?: DatabaseSchedulerOptions): SchedulerConfigResolver;
|
|
38
|
+
//# sourceMappingURL=database.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../../src/entrypoints/scheduler/database.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,eAAe,EACf,uBAAuB,EAExB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAEpE,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,4BAA4B,EACjC,KAAK,yBAAyB,EAC9B,KAAK,mCAAmC,EAExC,KAAK,6BAA6B,EAElC,KAAK,yBAAyB,EAE9B,KAAK,+BAA+B,EACpC,KAAK,wBAAwB,EAC7B,KAAK,+BAA+B,EACrC,MAAM,yBAAyB,CAAC;AAWjC,MAAM,WAAW,wBAAwB;IACvC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,sBAAsB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C,qBAAqB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C,qBAAqB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC;AAED,MAAM,WAAW,6BACf,SAAQ,wBAAwB;IAChC,KAAK,EAAE,YAAY,CAAC;CACrB;AAkKD,qBAAa,sBAAuB,YAAW,yBAAyB;IACtE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;gBAEzB,KAAK,EAAE,YAAY;IAIzB,aAAa,CACjB,IAAI,EAAE,SAAS,+BAA+B,EAAE,EAChD,GAAG,EAAE,IAAI,GACR,OAAO,CAAC,IAAI,CAAC;IAkCV,aAAa,CACjB,GAAG,EAAE,IAAI,EACT,WAAW,EAAE,IAAI,EACjB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;IAmDjC,UAAU,CACd,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,IAAI,EACjB,GAAG,EAAE,IAAI,GACR,OAAO,CAAC,OAAO,CAAC;IAeb,kBAAkB,CAAC,KAAK,EAAE,wBAAwB,GAAG,OAAO,CAAC,OAAO,CAAC;IAsBrE,kBAAkB,CACtB,KAAK,EAAE,+BAA+B,GACrC,OAAO,CAAC,OAAO,CAAC;IAwBb,aAAa,IAAI,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;CAU5C;AAED,qBAAa,0BACX,YAAW,6BAA6B;IAExC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;gBAEzB,KAAK,EAAE,YAAY;IAIzB,OAAO,CAAC,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,MAAM,CAAC;IAyB1D,aAAa,CACjB,GAAG,EAAE,IAAI,EACT,WAAW,EAAE,IAAI,EACjB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC;IAqGlC,UAAU,CACd,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,IAAI,EACjB,GAAG,EAAE,IAAI,GACR,OAAO,CAAC,OAAO,CAAC;IAgBb,kBAAkB,CACtB,KAAK,EAAE,4BAA4B,GAClC,OAAO,CAAC,OAAO,CAAC;IAqBb,kBAAkB,CACtB,KAAK,EAAE,mCAAmC,GACzC,OAAO,CAAC,OAAO,CAAC;IAwBb,oBAAoB,CAAC,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;CAS1D;AA2DD,wBAAgB,QAAQ,CACtB,OAAO,EAAE,6BAA6B,GACrC,eAAe,CAAC;AACnB,wBAAgB,QAAQ,CACtB,OAAO,CAAC,EAAE,wBAAwB,GACjC,uBAAuB,CAAC"}
|