@appweaver/core 1.0.25 → 1.1.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/package.json +1 -1
- package/prisma/client/internal/class.js +4 -4
- package/prisma/client/internal/prismaNamespace.d.ts +1 -0
- package/prisma/client/internal/prismaNamespace.js +1 -0
- package/prisma/client/internal/prismaNamespaceBrowser.d.ts +1 -0
- package/prisma/client/internal/prismaNamespaceBrowser.js +1 -0
- package/prisma/client/models/File.d.ts +29 -1
- package/resource/resource-service.d.ts +0 -1
- package/resource/resource-service.js +2 -39
- package/security/auth-service.d.ts +16 -1
- package/security/auth-service.js +28 -0
- package/security/create-auth-resources.d.ts +2 -1
- package/security/oauth2/create-oauth2-plugin.d.ts +2 -7
- package/security/oauth2/create-oauth2-plugin.js +45 -1
- package/security/oauth2/oauth2-custom.d.ts +1 -0
- package/security/oauth2/oauth2-custom.js +2 -1
- package/security/oauth2/oauth2-facebook.js +3 -2
- package/security/oauth2/oauth2-google.js +2 -1
- package/seeder/seeder.d.ts +1 -1
- package/seeder/seeder.js +5 -5
- package/server/index.d.ts +1 -0
- package/server/index.js +1 -0
- package/server/register-route.js +13 -0
- package/server/virtual-projection.d.ts +26 -0
- package/server/virtual-projection.js +231 -0
- package/storage/file-service.js +21 -7
- package/storage/resources/file/model.js +7 -8
- package/types/auth.d.ts +17 -1
- package/types/generated.d.ts +5 -0
- package/utils/file-util.d.ts +9 -0
- package/utils/file-util.js +16 -0
- package/utils/index.d.ts +1 -0
- package/utils/index.js +1 -0
- package/utils/virtual-util.d.ts +11 -0
- package/utils/virtual-util.js +53 -0
package/package.json
CHANGED
|
@@ -51,7 +51,7 @@ const config = {
|
|
|
51
51
|
"clientVersion": "7.8.0",
|
|
52
52
|
"engineVersion": "3c6e192761c0362d496ed980de936e2f3cebcd3a",
|
|
53
53
|
"activeProvider": "sqlite",
|
|
54
|
-
"inlineSchema": "// This is your Prisma schema file,\n// learn more about it in the docs: https://pris.ly/d/prisma-schema\n\n// Generated by Appweaver. Please do not edit this file manually.\n\ndatasource db {\n provider = \"sqlite\"\n}\n\ngenerator client {\n provider = \"prisma-client\"\n output = \"./client\"\n}\n\nmodel ApiKey {\n id Int @id @default(autoincrement())\n key String\n keyHash String @unique\n name String?\n description String?\n enabled Boolean @default(true)\n expiresAt DateTime?\n\n /// Audit columns\n updatedAt DateTime @updatedAt\n createdAt DateTime @default(now())\n}\n\nmodel OneTimeToken {\n id Int @id @default(autoincrement())\n tokenHash String\n purpose String\n expiresAt DateTime\n data Json\n\n /// Audit columns\n updatedAt DateTime @updatedAt\n createdAt DateTime @default(now())\n\n @@index([tokenHash, purpose])\n}\n\nmodel Permission {\n id Int @id @default(autoincrement())\n name String @unique\n\n /// Related columns\n roles Role[] @relation(\"RolePermissionsPermission\")\n\n /// Audit columns\n updatedAt DateTime @updatedAt\n createdAt DateTime @default(now())\n}\n\nmodel Role {\n id Int @id @default(autoincrement())\n name String @unique\n\n /// Related columns\n permissions Permission[] @relation(\"RolePermissionsPermission\")\n\n /// Audit columns\n updatedAt DateTime @updatedAt\n createdAt DateTime @default(now())\n}\n\nmodel Seeder {\n id String @id @default(uuid())\n checksum String\n seederName String @unique\n startedAt DateTime\n finishedAt DateTime\n logs String?\n\n @@map(\"_seeders\")\n}\n\nmodel File {\n id Int @id @default(autoincrement())\n name String @unique\n originalName String\n mimeType String\n sizeBytes Int\n title String?\n description String?\n resourceField String?\n resourceName String?\n resourceId Int?\n\n /// Audit columns\n updatedAt DateTime @updatedAt\n createdAt DateTime @default(now())\n\n @@index([resourceField, resourceName, resourceId])\n}\n",
|
|
54
|
+
"inlineSchema": "// This is your Prisma schema file,\n// learn more about it in the docs: https://pris.ly/d/prisma-schema\n\n// Generated by Appweaver. Please do not edit this file manually.\n\ndatasource db {\n provider = \"sqlite\"\n}\n\ngenerator client {\n provider = \"prisma-client\"\n output = \"./client\"\n}\n\nmodel ApiKey {\n id Int @id @default(autoincrement())\n key String\n keyHash String @unique\n name String?\n description String?\n enabled Boolean @default(true)\n expiresAt DateTime?\n\n /// Audit columns\n updatedAt DateTime @updatedAt\n createdAt DateTime @default(now())\n}\n\nmodel OneTimeToken {\n id Int @id @default(autoincrement())\n tokenHash String\n purpose String\n expiresAt DateTime\n data Json\n\n /// Audit columns\n updatedAt DateTime @updatedAt\n createdAt DateTime @default(now())\n\n @@index([tokenHash, purpose])\n}\n\nmodel Permission {\n id Int @id @default(autoincrement())\n name String @unique\n\n /// Related columns\n roles Role[] @relation(\"RolePermissionsPermission\")\n\n /// Audit columns\n updatedAt DateTime @updatedAt\n createdAt DateTime @default(now())\n}\n\nmodel Role {\n id Int @id @default(autoincrement())\n name String @unique\n\n /// Related columns\n permissions Permission[] @relation(\"RolePermissionsPermission\")\n\n /// Audit columns\n updatedAt DateTime @updatedAt\n createdAt DateTime @default(now())\n}\n\nmodel Seeder {\n id String @id @default(uuid())\n checksum String\n seederName String @unique\n startedAt DateTime\n finishedAt DateTime\n logs String?\n\n @@map(\"_seeders\")\n}\n\nmodel File {\n id Int @id @default(autoincrement())\n name String @unique\n originalName String\n mimeType String\n sizeBytes Int\n checksum String?\n title String?\n description String?\n resourceField String?\n resourceName String?\n resourceId Int?\n\n /// Audit columns\n updatedAt DateTime @updatedAt\n createdAt DateTime @default(now())\n\n @@index([resourceField, resourceName, resourceId])\n}\n",
|
|
55
55
|
"runtimeDataModel": {
|
|
56
56
|
"models": {},
|
|
57
57
|
"enums": {},
|
|
@@ -62,10 +62,10 @@ const config = {
|
|
|
62
62
|
"graph": ""
|
|
63
63
|
}
|
|
64
64
|
};
|
|
65
|
-
config.runtimeDataModel = JSON.parse("{\"models\":{\"ApiKey\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"key\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"keyHash\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"enabled\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"OneTimeToken\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"tokenHash\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"purpose\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"data\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"Permission\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"roles\",\"kind\":\"object\",\"type\":\"Role\",\"relationName\":\"RolePermissionsPermission\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"Role\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"permissions\",\"kind\":\"object\",\"type\":\"Permission\",\"relationName\":\"RolePermissionsPermission\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"Seeder\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"checksum\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"seederName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"startedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"finishedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"logs\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":\"_seeders\"},\"File\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"originalName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"mimeType\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sizeBytes\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"title\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"resourceField\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"resourceName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"resourceId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null}},\"enums\":{},\"types\":{}}");
|
|
65
|
+
config.runtimeDataModel = JSON.parse("{\"models\":{\"ApiKey\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"key\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"keyHash\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"enabled\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"OneTimeToken\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"tokenHash\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"purpose\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"data\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"Permission\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"roles\",\"kind\":\"object\",\"type\":\"Role\",\"relationName\":\"RolePermissionsPermission\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"Role\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"permissions\",\"kind\":\"object\",\"type\":\"Permission\",\"relationName\":\"RolePermissionsPermission\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"Seeder\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"checksum\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"seederName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"startedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"finishedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"logs\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":\"_seeders\"},\"File\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"originalName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"mimeType\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sizeBytes\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"checksum\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"title\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"resourceField\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"resourceName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"resourceId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null}},\"enums\":{},\"types\":{}}");
|
|
66
66
|
config.parameterizationSchema = {
|
|
67
|
-
strings: JSON.parse("[\"where\",\"ApiKey.findUnique\",\"ApiKey.findUniqueOrThrow\",\"orderBy\",\"cursor\",\"ApiKey.findFirst\",\"ApiKey.findFirstOrThrow\",\"ApiKey.findMany\",\"data\",\"ApiKey.createOne\",\"ApiKey.createMany\",\"ApiKey.createManyAndReturn\",\"ApiKey.updateOne\",\"ApiKey.updateMany\",\"ApiKey.updateManyAndReturn\",\"create\",\"update\",\"ApiKey.upsertOne\",\"ApiKey.deleteOne\",\"ApiKey.deleteMany\",\"having\",\"_count\",\"_avg\",\"_sum\",\"_min\",\"_max\",\"ApiKey.groupBy\",\"ApiKey.aggregate\",\"OneTimeToken.findUnique\",\"OneTimeToken.findUniqueOrThrow\",\"OneTimeToken.findFirst\",\"OneTimeToken.findFirstOrThrow\",\"OneTimeToken.findMany\",\"OneTimeToken.createOne\",\"OneTimeToken.createMany\",\"OneTimeToken.createManyAndReturn\",\"OneTimeToken.updateOne\",\"OneTimeToken.updateMany\",\"OneTimeToken.updateManyAndReturn\",\"OneTimeToken.upsertOne\",\"OneTimeToken.deleteOne\",\"OneTimeToken.deleteMany\",\"OneTimeToken.groupBy\",\"OneTimeToken.aggregate\",\"permissions\",\"roles\",\"Permission.findUnique\",\"Permission.findUniqueOrThrow\",\"Permission.findFirst\",\"Permission.findFirstOrThrow\",\"Permission.findMany\",\"Permission.createOne\",\"Permission.createMany\",\"Permission.createManyAndReturn\",\"Permission.updateOne\",\"Permission.updateMany\",\"Permission.updateManyAndReturn\",\"Permission.upsertOne\",\"Permission.deleteOne\",\"Permission.deleteMany\",\"Permission.groupBy\",\"Permission.aggregate\",\"Role.findUnique\",\"Role.findUniqueOrThrow\",\"Role.findFirst\",\"Role.findFirstOrThrow\",\"Role.findMany\",\"Role.createOne\",\"Role.createMany\",\"Role.createManyAndReturn\",\"Role.updateOne\",\"Role.updateMany\",\"Role.updateManyAndReturn\",\"Role.upsertOne\",\"Role.deleteOne\",\"Role.deleteMany\",\"Role.groupBy\",\"Role.aggregate\",\"Seeder.findUnique\",\"Seeder.findUniqueOrThrow\",\"Seeder.findFirst\",\"Seeder.findFirstOrThrow\",\"Seeder.findMany\",\"Seeder.createOne\",\"Seeder.createMany\",\"Seeder.createManyAndReturn\",\"Seeder.updateOne\",\"Seeder.updateMany\",\"Seeder.updateManyAndReturn\",\"Seeder.upsertOne\",\"Seeder.deleteOne\",\"Seeder.deleteMany\",\"Seeder.groupBy\",\"Seeder.aggregate\",\"File.findUnique\",\"File.findUniqueOrThrow\",\"File.findFirst\",\"File.findFirstOrThrow\",\"File.findMany\",\"File.createOne\",\"File.createMany\",\"File.createManyAndReturn\",\"File.updateOne\",\"File.updateMany\",\"File.updateManyAndReturn\",\"File.upsertOne\",\"File.deleteOne\",\"File.deleteMany\",\"File.groupBy\",\"File.aggregate\",\"AND\",\"OR\",\"NOT\",\"id\",\"name\",\"originalName\",\"mimeType\",\"sizeBytes\",\"title\",\"description\",\"resourceField\",\"resourceName\",\"resourceId\",\"updatedAt\",\"createdAt\",\"equals\",\"in\",\"notIn\",\"lt\",\"lte\",\"gt\",\"gte\",\"not\",\"contains\",\"startsWith\",\"endsWith\",\"
|
|
68
|
-
graph: "iQI9YAxuAADHAQAwbwAABAAQcAAAxwEAMHECAAAAAXIBALABACF3AQCwAQAhe0AAsgEAIXxAALIBACGSAUAAyQEAIZgBAQCvAQAhmQEBAAAAAZoBIADIAQAhAQAAAAEAIAEAAAABACAMbgAAxwEAMG8AAAQAEHAAAMcBADBxAgCuAQAhcgEAsAEAIXcBALABACF7QACyAQAhfEAAsgEAIZIBQADJAQAhmAEBAK8BACGZAQEArwEAIZoBIADIAQAhA3IAAMoBACB3AADKAQAgkgEAAMoBACADAAAABAAgAwAABQAwBAAAAQAgAwAAAAQAIAMAAAUAMAQAAAEAIAMAAAAEACADAAAFADAEAAABACAJcQIAAAABcgEAAAABdwEAAAABe0AAAAABfEAAAAABkgFAAAAAAZgBAQAAAAGZAQEAAAABmgEgAAAAAQEIAAAJACAJcQIAAAABcgEAAAABdwEAAAABe0AAAAABfEAAAAABkgFAAAAAAZgBAQAAAAGZAQEAAAABmgEgAAAAAQEIAAALADABCAAACwAwCXECANEBACFyAQDSAQAhdwEA0gEAIXtAANQBACF8QADUAQAhkgFAAIkCACGYAQEA0AEAIZkBAQDQAQAhmgEgAIgCACECAAAAAQAgCAAADgAgCXECANEBACFyAQDSAQAhdwEA0gEAIXtAANQBACF8QADUAQAhkgFAAIkCACGYAQEA0AEAIZkBAQDQAQAhmgEgAIgCACECAAAABAAgCAAAEAAgAgAAAAQAIAgAABAAIAMAAAABACAPAAAJACAQAAAOACABAAAAAQAgAQAAAAQAIAgVAACDAgAgFgAAhAIAIBcAAIcCACAYAACGAgAgGQAAhQIAIHIAAMoBACB3AADKAQAgkgEAAMoBACAMbgAAwAEAMG8AABcAEHAAAMABADBxAgCcAQAhcgEAngEAIXcBAJ4BACF7QACgAQAhfEAAoAEAIZIBQADCAQAhmAEBAJ0BACGZAQEAnQEAIZoBIADBAQAhAwAAAAQAIAMAABYAMBQAABcAIAMAAAAEACADAAAFADAEAAABACAKCAAAvwEAIG4AAL4BADBvAAAdABBwAAC-AQAwcQIAAAABe0AAsgEAIXxAALIBACGQAQEArwEAIZEBAQCvAQAhkgFAALIBACEBAAAAGgAgAQAAABoAIAoIAAC_AQAgbgAAvgEAMG8AAB0AEHAAAL4BADBxAgCuAQAhe0AAsgEAIXxAALIBACGQAQEArwEAIZEBAQCvAQAhkgFAALIBACEAAwAAAB0AIAMAAB4AMAQAABoAIAMAAAAdACADAAAeADAEAAAaACADAAAAHQAgAwAAHgAwBAAAGgAgBwiAAAAAAXECAAAAAXtAAAAAAXxAAAAAAZABAQAAAAGRAQEAAAABkgFAAAAAAQEIAAAiACAHCIAAAAABcQIAAAABe0AAAAABfEAAAAABkAEBAAAAAZEBAQAAAAGSAUAAAAABAQgAACQAMAEIAAAkADAHCIAAAAABcQIA0QEAIXtAANQBACF8QADUAQAhkAEBANABACGRAQEA0AEAIZIBQADUAQAhAgAAABoAIAgAACcAIAcIgAAAAAFxAgDRAQAhe0AA1AEAIXxAANQBACGQAQEA0AEAIZEBAQDQAQAhkgFAANQBACECAAAAHQAgCAAAKQAgAgAAAB0AIAgAACkAIAMAAAAaACAPAAAiACAQAAAnACABAAAAGgAgAQAAAB0AIAUVAAD-AQAgFgAA_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-AQAAAAV_AQAAAAWAAQEAAAABgQEBAAAAAYIBAQAAAAGDAQEAAAABhAEBAKcBACGFAQEAAAABhgEBAAAAAYcBAQAAAAENFQAApQEAIBYAAKYBACAXAAClAQAgGAAApQEAIBkAAKUBACB9AgAAAAF-AgAAAAV_AgAAAAWAAQIAAAABgQECAAAAAYIBAgAAAAGDAQIAAAABhAECAKQBACELFQAAogEAIBgAAKMBACAZAACjAQAgfUAAAAABfkAAAAAEf0AAAAAEgAFAAAAAAYEBQAAAAAGCAUAAAAABgwFAAAAAAYQBQAChAQAhCxUAAKIBACAYAACjAQAgGQAAowEAIH1AAAAAAX5AAAAABH9AAAAABIABQAAAAAGBAUAAAAABggFAAAAAAYMBQAAAAAGEAUAAoQEAIQh9AgAAAAF-AgAAAAR_AgAAAASAAQIAAAABgQECAAAAAYIBAgAAAAGDAQIAAAABhAECAKIBACEIfUAAAAABfkAAAAAEf0AAAAAEgAFAAAAAAYEBQAAAAAGCAUAAAAABgwFAAAAAAYQBQACjAQAhDRUAAKUBACAWAACmAQAgFwAApQEAIBgAAKUBACAZAAClAQAgfQIAAAABfgIAAAAFfwIAAAAFgAECAAAAAYEBAgAAAAGCAQIAAAABgwECAAAAAYQBAgCkAQAhCH0CAAAAAX4CAAAABX8CAAAABYABAgAAAAGBAQIAAAABggECAAAAAYMBAgAAAAGEAQIApQEAIQh9CAAAAAF-CAAAAAV_CAAAAAWAAQgAAAABgQEIAAAAAYIBCAAAAAGDAQgAAAABhAEIAKYBACEOFQAApQEAIBgAAKgBACAZAACoAQAgfQEAAAABfgEAAAAFfwEAAAAFgAEBAAAAAYEBAQAAAAGCAQEAAAABgwEBAAAAAYQBAQCnAQAhhQEBAAAAAYYBAQAAAAGHAQEAAAABC30BAAAAAX4BAAAABX8BAAAABYABAQAAAAGBAQEAAAABggEBAAAAAYMBAQAAAAGEAQEAqAEAIYUBAQAAAAGGAQEAAAABhwEBAAAAAQ4VAACiAQAgGAAAqgEAIBkAAKoBACB9AQAAAAF-AQAAAAR_AQAAAASAAQEAAAABgQEBAAAAAYIBAQAAAAGDAQEAAAABhAEBAKkBACGFAQEAAAABhgEBAAAAAYcBAQAAAAELfQEAAAABfgEAAAAEfwEAAAAEgAEBAAAAAYEBAQAAAAGCAQEAAAABgwEBAAAAAYQBAQCqAQAhhQEBAAAAAYYBAQAAAAGHAQEAAAABDRUAAKIBACAWAACsAQAgFwAAogEAIBgAAKIBACAZAACiAQAgfQIAAAABfgIAAAAEfwIAAAAEgAECAAAAAYEBAgAAAAGCAQIAAAABgwECAAAAAYQBAgCrAQAhCH0IAAAAAX4IAAAABH8IAAAABIABCAAAAAGBAQgAAAABggEIAAAAAYMBCAAAAAGEAQgArAEAIQ9uAACtAQAwbwAAhQEAEHAAAK0BADBxAgCuAQAhcgEArwEAIXMBAK8BACF0AQCvAQAhdQIArgEAIXYBALABACF3AQCwAQAheAEAsAEAIXkBALABACF6AgCxAQAhe0AAsgEAIXxAALIBACEIfQIAAAABfgIAAAAEfwIAAAAEgAECAAAAAYEBAgAAAAGCAQIAAAABgwECAAAAAYQBAgCiAQAhC30BAAAAAX4BAAAABH8BAAAABIABAQAAAAGBAQEAAAABggEBAAAAAYMBAQAAAAGEAQEAqgEAIYUBAQAAAAGGAQEAAAABhwEBAAAAAQt9AQAAAAF-AQAAAAV_AQAAAAWAAQEAAAABgQEBAAAAAYIBAQAAAAGDAQEAAAABhAEBAKgBACGFAQEAAAABhgEBAAAAAYcBAQAAAAEIfQIAAAABfgIAAAAFfwIAAAAFgAECAAAAAYEBAgAAAAGCAQIAAAABgwECAAAAAYQBAgClAQAhCH1AAAAAAX5AAAAABH9AAAAABIABQAAAAAGBAUAAAAABggFAAAAAAYMBQAAAAAGEAUAAowEAIQluAACzAQAwbwAAfwAQcAAAswEAMHEBAJ0BACGIAQEAnQEAIYkBAQCdAQAhigFAAKABACGLAUAAoAEAIYwBAQCeAQAhCW4AALQBADBvAABsABBwAAC0AQAwcQEArwEAIYgBAQCvAQAhiQEBAK8BACGKAUAAsgEAIYsBQACyAQAhjAEBALABACEHbgAAtQEAMG8AAGYAEHAAALUBADBxAgCcAQAhcgEAnQEAIXtAAKABACF8QACgAQAhB24AALYBADBvAABQABBwAAC2AQAwcQIAnAEAIXIBAJ0BACF7QACgAQAhfEAAoAEAIQgtAAC4AQAgbgAAtwEAMG8AADkAEHAAALcBADBxAgCuAQAhcgEArwEAIXtAALIBACF8QACyAQAhA40BAAA1ACCOAQAANQAgjwEAADUAIAgsAAC6AQAgbgAAuQEAMG8AADUAEHAAALkBADBxAgCuAQAhcgEArwEAIXtAALIBACF8QACyAQAhA40BAAA5ACCOAQAAOQAgjwEAADkAIAoIAAC8AQAgbgAAuwEAMG8AADAAEHAAALsBADBxAgCcAQAhe0AAoAEAIXxAAKABACGQAQEAnQEAIZEBAQCdAQAhkgFAAKABACEKFQAAogEAIBgAAL0BACAZAAC9AQAgfYAAAAABhAGAAAAAAZMBAQAAAAGUAQEAAAABlQEBAAAAAZYBgAAAAAGXAYAAAAABB32AAAAAAYQBgAAAAAGTAQEAAAABlAEBAAAAAZUBAQAAAAGWAYAAAAABlwGAAAAAAQoIAAC_AQAgbgAAvgEAMG8AAB0AEHAAAL4BADBxAgCuAQAhe0AAsgEAIXxAALIBACGQAQEArwEAIZEBAQCvAQAhkgFAALIBACEHfYAAAAABhAGAAAAAAZMBAQAAAAGUAQEAAAABlQEBAAAAAZYBgAAAAAGXAYAAAAABDG4AAMABADBvAAAXABBwAADAAQAwcQIAnAEAIXIBAJ4BACF3AQCeAQAhe0AAoAEAIXxAAKABACGSAUAAwgEAIZgBAQCdAQAhmQEBAJ0BACGaASAAwQEAIQUVAACiAQAgGAAAxgEAIBkAAMYBACB9IAAAAAGEASAAxQEAIQsVAAClAQAgGAAAxAEAIBkAAMQBACB9QAAAAAF-QAAAAAV_QAAAAAWAAUAAAAABgQFAAAAAAYIBQAAAAAGDAUAAAAABhAFAAMMBACELFQAApQEAIBgAAMQBACAZAADEAQAgfUAAAAABfkAAAAAFf0AAAAAFgAFAAAAAAYEBQAAAAAGCAUAAAAABgwFAAAAAAYQBQADDAQAhCH1AAAAAAX5AAAAABX9AAAAABYABQAAAAAGBAUAAAAABggFAAAAAAYMBQAAAAAGEAUAAxAEAIQUVAACiAQAgGAAAxgEAIBkAAMYBACB9IAAAAAGEASAAxQEAIQJ9IAAAAAGEASAAxgEAIQxuAADHAQAwbwAABAAQcAAAxwEAMHECAK4BACFyAQCwAQAhdwEAsAEAIXtAALIBACF8QACyAQAhkgFAAMkBACGYAQEArwEAIZkBAQCvAQAhmgEgAMgBACECfSAAAAABhAEgAMYBACEIfUAAAAABfkAAAAAFf0AAAAAFgAFAAAAAAYEBQAAAAAGCAUAAAAABgwFAAAAAAYQBQADEAQAhAAAAAAAAAZ0BAQAAAAEFnQECAAAAAaMBAgAAAAGkAQIAAAABpQECAAAAAaYBAgAAAAEBnQEBAAAAAQWdAQIAAAABowECAAAAAaQBAgAAAAGlAQIAAAABpgECAAAAAQGdAUAAAAABAAAAAAAAAAAKDwAA3gEAMBAAAOIBADCbAQAA3wEAMJwBAADgAQAwnQEAAOEBADCeAQAA4QEAMJ8BAADhAQAwoAEAAOEBADChAQAA4wEAMKIBAADkAQAwBHECAAAAAXIBAAAAAXtAAAAAAXxAAAAAAQIAAAAzACAPAADoAQAgAwAAADMAIA8AAOgBACAQAADnAQAgCC0AALgBACBuAAC3AQAwbwAAOQAQcAAAtwEAMHECAAAAAXIBAAAAAXtAALIBACF8QACyAQAhAgAAADMAIAgAAOcBACACAAAA5QEAIAgAAOYBACAHbgAA5AEAMG8AAOUBABBwAADkAQAwcQIArgEAIXIBAK8BACF7QACyAQAhfEAAsgEAIQduAADkAQAwbwAA5QEAEHAAAOQBADBxAgCuAQAhcgEArwEAIXtAALIBACF8QACyAQAhBHECANEBACFyAQDQAQAhe0AA1AEAIXxAANQBACEEcQIA0QEAIXIBANABACF7QADUAQAhfEAA1AEAIQRxAgAAAAFyAQAAAAF7QAAAAAF8QAAAAAEDDwAA3gEAMJsBAADfAQAwoAEAAOEBADAAAAAAAAoPAADwAQAwEAAA9AEAMJsBAADxAQAwnAEAAPIBADCdAQAA8wEAMJ4BAADzAQAwnwEAAPMBADCgAQAA8wEAMKEBAAD1AQAwogEAAPYBADAEcQIAAAABcgEAAAABe0AAAAABfEAAAAABAgAAADcAIA8AAPoBACADAAAANwAgDwAA-gEAIBAAAPkBACAILAAAugEAIG4AALkBADBvAAA1ABBwAAC5AQAwcQIAAAABcgEAAAABe0AAsgEAIXxAALIBACECAAAANwAgCAAA-QEAIAIAAAD3AQAgCAAA-AEAIAduAAD2AQAwbwAA9wEAEHAAAPYBADBxAgCuAQAhcgEArwEAIXtAALIBACF8QACyAQAhB24AAPYBADBvAAD3AQAQcAAA9gEAMHECAK4BACFyAQCvAQAhe0AAsgEAIXxAALIBACEEcQIA0QEAIXIBANABACF7QADUAQAhfEAA1AEAIQRxAgDRAQAhcgEA0AEAIXtAANQBACF8QADUAQAhBHECAAAAAXIBAAAAAXtAAAAAAXxAAAAAAQMPAADwAQAwmwEAAPEBADCgAQAA8wEAMAAAAAAAAAAAAAAAAAGdASAAAAABAZ0BQAAAAAEAAAAABRUABhYABxcACBgACRkACgAAAAAABRUABhYABxcACBgACRkACgAAAAUVABAWABEXABIYABMZABQAAAAAAAUVABAWABEXABIYABMZABQCFQAZLTgXAhUAGCw7FgEsPAABLT0AAAAFFQAdFgAeFwAfGAAgGQAhAAAAAAAFFQAdFgAeFwAfGAAgGQAhAAAFFQAmFgAnFwAoGAApGQAqAAAAAAAFFQAmFgAnFwAoGAApGQAqAAAAAxUAMBgAMRkAMgAAAAMVADAYADEZADIAAAAFFQA4FgA5FwA6GAA7GQA8AAAAAAAFFQA4FgA5FwA6GAA7GQA8AQIBAgMBBQYBBgcBBwgBCQoBCgwCCw0DDA8BDRECDhIEERMBEhQBExUCGhgFGxkLHBsMHRwMHh8MHyAMICEMISMMIiUCIyYNJCgMJSoCJisOJywMKC0MKS4CKjEPKzIVLjQWLz4WMD8WMUAWMkEWM0MWNEUCNUYaNkgWN0oCOEsbOUwWOk0WO04CPFEcPVIiPlMXP1QXQFUXQVYXQlcXQ1kXRFsCRVwjRl4XR2ACSGEkSWIXSmMXS2QCTGclTWgrTmosT2ssUG4sUW8sUnAsU3IsVHQCVXUtVncsV3kCWHouWXssWnwsW30CXIABL12BATNegwE0X4QBNGCHATRhiAE0YokBNGOLATRkjQECZY4BNWaQATRnkgECaJMBNmmUATRqlQE0a5YBAmyZATdtmgE9"
|
|
67
|
+
strings: JSON.parse("[\"where\",\"ApiKey.findUnique\",\"ApiKey.findUniqueOrThrow\",\"orderBy\",\"cursor\",\"ApiKey.findFirst\",\"ApiKey.findFirstOrThrow\",\"ApiKey.findMany\",\"data\",\"ApiKey.createOne\",\"ApiKey.createMany\",\"ApiKey.createManyAndReturn\",\"ApiKey.updateOne\",\"ApiKey.updateMany\",\"ApiKey.updateManyAndReturn\",\"create\",\"update\",\"ApiKey.upsertOne\",\"ApiKey.deleteOne\",\"ApiKey.deleteMany\",\"having\",\"_count\",\"_avg\",\"_sum\",\"_min\",\"_max\",\"ApiKey.groupBy\",\"ApiKey.aggregate\",\"OneTimeToken.findUnique\",\"OneTimeToken.findUniqueOrThrow\",\"OneTimeToken.findFirst\",\"OneTimeToken.findFirstOrThrow\",\"OneTimeToken.findMany\",\"OneTimeToken.createOne\",\"OneTimeToken.createMany\",\"OneTimeToken.createManyAndReturn\",\"OneTimeToken.updateOne\",\"OneTimeToken.updateMany\",\"OneTimeToken.updateManyAndReturn\",\"OneTimeToken.upsertOne\",\"OneTimeToken.deleteOne\",\"OneTimeToken.deleteMany\",\"OneTimeToken.groupBy\",\"OneTimeToken.aggregate\",\"permissions\",\"roles\",\"Permission.findUnique\",\"Permission.findUniqueOrThrow\",\"Permission.findFirst\",\"Permission.findFirstOrThrow\",\"Permission.findMany\",\"Permission.createOne\",\"Permission.createMany\",\"Permission.createManyAndReturn\",\"Permission.updateOne\",\"Permission.updateMany\",\"Permission.updateManyAndReturn\",\"Permission.upsertOne\",\"Permission.deleteOne\",\"Permission.deleteMany\",\"Permission.groupBy\",\"Permission.aggregate\",\"Role.findUnique\",\"Role.findUniqueOrThrow\",\"Role.findFirst\",\"Role.findFirstOrThrow\",\"Role.findMany\",\"Role.createOne\",\"Role.createMany\",\"Role.createManyAndReturn\",\"Role.updateOne\",\"Role.updateMany\",\"Role.updateManyAndReturn\",\"Role.upsertOne\",\"Role.deleteOne\",\"Role.deleteMany\",\"Role.groupBy\",\"Role.aggregate\",\"Seeder.findUnique\",\"Seeder.findUniqueOrThrow\",\"Seeder.findFirst\",\"Seeder.findFirstOrThrow\",\"Seeder.findMany\",\"Seeder.createOne\",\"Seeder.createMany\",\"Seeder.createManyAndReturn\",\"Seeder.updateOne\",\"Seeder.updateMany\",\"Seeder.updateManyAndReturn\",\"Seeder.upsertOne\",\"Seeder.deleteOne\",\"Seeder.deleteMany\",\"Seeder.groupBy\",\"Seeder.aggregate\",\"File.findUnique\",\"File.findUniqueOrThrow\",\"File.findFirst\",\"File.findFirstOrThrow\",\"File.findMany\",\"File.createOne\",\"File.createMany\",\"File.createManyAndReturn\",\"File.updateOne\",\"File.updateMany\",\"File.updateManyAndReturn\",\"File.upsertOne\",\"File.deleteOne\",\"File.deleteMany\",\"File.groupBy\",\"File.aggregate\",\"AND\",\"OR\",\"NOT\",\"id\",\"name\",\"originalName\",\"mimeType\",\"sizeBytes\",\"checksum\",\"title\",\"description\",\"resourceField\",\"resourceName\",\"resourceId\",\"updatedAt\",\"createdAt\",\"equals\",\"in\",\"notIn\",\"lt\",\"lte\",\"gt\",\"gte\",\"not\",\"contains\",\"startsWith\",\"endsWith\",\"seederName\",\"startedAt\",\"finishedAt\",\"logs\",\"every\",\"some\",\"none\",\"tokenHash\",\"purpose\",\"expiresAt\",\"string_contains\",\"string_starts_with\",\"string_ends_with\",\"array_starts_with\",\"array_ends_with\",\"key\",\"keyHash\",\"enabled\",\"connectOrCreate\",\"upsert\",\"set\",\"disconnect\",\"delete\",\"connect\",\"updateMany\",\"deleteMany\",\"increment\",\"decrement\",\"multiply\",\"divide\"]"),
|
|
68
|
+
graph: "iQI9YAxuAADHAQAwbwAABAAQcAAAxwEAMHECAAAAAXIBALABACF4AQCwAQAhfEAAsgEAIX1AALIBACGSAUAAyQEAIZgBAQCvAQAhmQEBAAAAAZoBIADIAQAhAQAAAAEAIAEAAAABACAMbgAAxwEAMG8AAAQAEHAAAMcBADBxAgCuAQAhcgEAsAEAIXgBALABACF8QACyAQAhfUAAsgEAIZIBQADJAQAhmAEBAK8BACGZAQEArwEAIZoBIADIAQAhA3IAAMoBACB4AADKAQAgkgEAAMoBACADAAAABAAgAwAABQAwBAAAAQAgAwAAAAQAIAMAAAUAMAQAAAEAIAMAAAAEACADAAAFADAEAAABACAJcQIAAAABcgEAAAABeAEAAAABfEAAAAABfUAAAAABkgFAAAAAAZgBAQAAAAGZAQEAAAABmgEgAAAAAQEIAAAJACAJcQIAAAABcgEAAAABeAEAAAABfEAAAAABfUAAAAABkgFAAAAAAZgBAQAAAAGZAQEAAAABmgEgAAAAAQEIAAALADABCAAACwAwCXECANEBACFyAQDSAQAheAEA0gEAIXxAANQBACF9QADUAQAhkgFAAIkCACGYAQEA0AEAIZkBAQDQAQAhmgEgAIgCACECAAAAAQAgCAAADgAgCXECANEBACFyAQDSAQAheAEA0gEAIXxAANQBACF9QADUAQAhkgFAAIkCACGYAQEA0AEAIZkBAQDQAQAhmgEgAIgCACECAAAABAAgCAAAEAAgAgAAAAQAIAgAABAAIAMAAAABACAPAAAJACAQAAAOACABAAAAAQAgAQAAAAQAIAgVAACDAgAgFgAAhAIAIBcAAIcCACAYAACGAgAgGQAAhQIAIHIAAMoBACB4AADKAQAgkgEAAMoBACAMbgAAwAEAMG8AABcAEHAAAMABADBxAgCcAQAhcgEAngEAIXgBAJ4BACF8QACgAQAhfUAAoAEAIZIBQADCAQAhmAEBAJ0BACGZAQEAnQEAIZoBIADBAQAhAwAAAAQAIAMAABYAMBQAABcAIAMAAAAEACADAAAFADAEAAABACAKCAAAvwEAIG4AAL4BADBvAAAdABBwAAC-AQAwcQIAAAABfEAAsgEAIX1AALIBACGQAQEArwEAIZEBAQCvAQAhkgFAALIBACEBAAAAGgAgAQAAABoAIAoIAAC_AQAgbgAAvgEAMG8AAB0AEHAAAL4BADBxAgCuAQAhfEAAsgEAIX1AALIBACGQAQEArwEAIZEBAQCvAQAhkgFAALIBACEAAwAAAB0AIAMAAB4AMAQAABoAIAMAAAAdACADAAAeADAEAAAaACADAAAAHQAgAwAAHgAwBAAAGgAgBwiAAAAAAXECAAAAAXxAAAAAAX1AAAAAAZABAQAAAAGRAQEAAAABkgFAAAAAAQEIAAAiACAHCIAAAAABcQIAAAABfEAAAAABfUAAAAABkAEBAAAAAZEBAQAAAAGSAUAAAAABAQgAACQAMAEIAAAkADAHCIAAAAABcQIA0QEAIXxAANQBACF9QADUAQAhkAEBANABACGRAQEA0AEAIZIBQADUAQAhAgAAABoAIAgAACcAIAcIgAAAAAFxAgDRAQAhfEAA1AEAIX1AANQBACGQAQEA0AEAIZEBAQDQAQAhkgFAANQBACECAAAAHQAgCAAAKQAgAgAAAB0AIAgAACkAIAMAAAAaACAPAAAiACAQAAAnACABAAAAGgAgAQAAAB0AIAUVAAD-AQAgFgAA_wEAIBcAAIICACAYAACBAgAgGQAAgAIAIAoIAAC8AQAgbgAAuwEAMG8AADAAEHAAALsBADBxAgCcAQAhfEAAoAEAIX1AAKABACGQAQEAnQEAIZEBAQCdAQAhkgFAAKABACEDAAAAHQAgAwAALwAwFAAAMAAgAwAAAB0AIAMAAB4AMAQAABoAIAgtAAC4AQAgbgAAtwEAMG8AADkAEHAAALcBADBxAgAAAAFyAQAAAAF8QACyAQAhfUAAsgEAIQEAAAAzACAILAAAugEAIG4AALkBADBvAAA1ABBwAAC5AQAwcQIArgEAIXIBAK8BACF8QACyAQAhfUAAsgEAIQEsAAD9AQAgCCwAALoBACBuAAC5AQAwbwAANQAQcAAAuQEAMHECAAAAAXIBAAAAAXxAALIBACF9QACyAQAhAwAAADUAIAMAADYAMAQAADcAIAgtAAC4AQAgbgAAtwEAMG8AADkAEHAAALcBADBxAgCuAQAhcgEArwEAIXxAALIBACF9QACyAQAhAS0AAPwBACADAAAAOQAgAwAAOgAwBAAAMwAgAQAAADkAIAEAAAA1ACABAAAAMwAgAwAAADkAIAMAADoAMAQAADMAIAMAAAA5ACADAAA6ADAEAAAzACADAAAAOQAgAwAAOgAwBAAAMwAgBS0AAPsBACBxAgAAAAFyAQAAAAF8QAAAAAF9QAAAAAEBCAAAQgAgBHECAAAAAXIBAAAAAXxAAAAAAX1AAAAAAQEIAABEADABCAAARAAwBS0AAO8BACBxAgDRAQAhcgEA0AEAIXxAANQBACF9QADUAQAhAgAAADMAIAgAAEcAIARxAgDRAQAhcgEA0AEAIXxAANQBACF9QADUAQAhAgAAADkAIAgAAEkAIAIAAAA5ACAIAABJACADAAAAMwAgDwAAQgAgEAAARwAgAQAAADMAIAEAAAA5ACAFFQAA6gEAIBYAAOsBACAXAADuAQAgGAAA7QEAIBkAAOwBACAHbgAAtgEAMG8AAFAAEHAAALYBADBxAgCcAQAhcgEAnQEAIXxAAKABACF9QACgAQAhAwAAADkAIAMAAE8AMBQAAFAAIAMAAAA5ACADAAA6ADAEAAAzACABAAAANwAgAQAAADcAIAMAAAA1ACADAAA2ADAEAAA3ACADAAAANQAgAwAANgAwBAAANwAgAwAAADUAIAMAADYAMAQAADcAIAUsAADpAQAgcQIAAAABcgEAAAABfEAAAAABfUAAAAABAQgAAFgAIARxAgAAAAFyAQAAAAF8QAAAAAF9QAAAAAEBCAAAWgAwAQgAAFoAMAUsAADdAQAgcQIA0QEAIXIBANABACF8QADUAQAhfUAA1AEAIQIAAAA3ACAIAABdACAEcQIA0QEAIXIBANABACF8QADUAQAhfUAA1AEAIQIAAAA1ACAIAABfACACAAAANQAgCAAAXwAgAwAAADcAIA8AAFgAIBAAAF0AIAEAAAA3ACABAAAANQAgBRUAANgBACAWAADZAQAgFwAA3AEAIBgAANsBACAZAADaAQAgB24AALUBADBvAABmABBwAAC1AQAwcQIAnAEAIXIBAJ0BACF8QACgAQAhfUAAoAEAIQMAAAA1ACADAABlADAUAABmACADAAAANQAgAwAANgAwBAAANwAgCW4AALQBADBvAABsABBwAAC0AQAwcQEAAAABdgEArwEAIYkBAQAAAAGKAUAAsgEAIYsBQACyAQAhjAEBALABACEBAAAAaQAgAQAAAGkAIAluAAC0AQAwbwAAbAAQcAAAtAEAMHEBAK8BACF2AQCvAQAhiQEBAK8BACGKAUAAsgEAIYsBQACyAQAhjAEBALABACEBjAEAAMoBACADAAAAbAAgAwAAbQAwBAAAaQAgAwAAAGwAIAMAAG0AMAQAAGkAIAMAAABsACADAABtADAEAABpACAGcQEAAAABdgEAAAABiQEBAAAAAYoBQAAAAAGLAUAAAAABjAEBAAAAAQEIAABxACAGcQEAAAABdgEAAAABiQEBAAAAAYoBQAAAAAGLAUAAAAABjAEBAAAAAQEIAABzADABCAAAcwAwBnEBANABACF2AQDQAQAhiQEBANABACGKAUAA1AEAIYsBQADUAQAhjAEBANIBACECAAAAaQAgCAAAdgAgBnEBANABACF2AQDQAQAhiQEBANABACGKAUAA1AEAIYsBQADUAQAhjAEBANIBACECAAAAbAAgCAAAeAAgAgAAAGwAIAgAAHgAIAMAAABpACAPAABxACAQAAB2ACABAAAAaQAgAQAAAGwAIAQVAADVAQAgGAAA1wEAIBkAANYBACCMAQAAygEAIAluAACzAQAwbwAAfwAQcAAAswEAMHEBAJ0BACF2AQCdAQAhiQEBAJ0BACGKAUAAoAEAIYsBQACgAQAhjAEBAJ4BACEDAAAAbAAgAwAAfgAwFAAAfwAgAwAAAGwAIAMAAG0AMAQAAGkAIBBuAACtAQAwbwAAhQEAEHAAAK0BADBxAgAAAAFyAQAAAAFzAQCvAQAhdAEArwEAIXUCAK4BACF2AQCwAQAhdwEAsAEAIXgBALABACF5AQCwAQAhegEAsAEAIXsCALEBACF8QACyAQAhfUAAsgEAIQEAAACCAQAgAQAAAIIBACAQbgAArQEAMG8AAIUBABBwAACtAQAwcQIArgEAIXIBAK8BACFzAQCvAQAhdAEArwEAIXUCAK4BACF2AQCwAQAhdwEAsAEAIXgBALABACF5AQCwAQAhegEAsAEAIXsCALEBACF8QACyAQAhfUAAsgEAIQZ2AADKAQAgdwAAygEAIHgAAMoBACB5AADKAQAgegAAygEAIHsAAMoBACADAAAAhQEAIAMAAIYBADAEAACCAQAgAwAAAIUBACADAACGAQAwBAAAggEAIAMAAACFAQAgAwAAhgEAMAQAAIIBACANcQIAAAABcgEAAAABcwEAAAABdAEAAAABdQIAAAABdgEAAAABdwEAAAABeAEAAAABeQEAAAABegEAAAABewIAAAABfEAAAAABfUAAAAABAQgAAIoBACANcQIAAAABcgEAAAABcwEAAAABdAEAAAABdQIAAAABdgEAAAABdwEAAAABeAEAAAABeQEAAAABegEAAAABewIAAAABfEAAAAABfUAAAAABAQgAAIwBADABCAAAjAEAMA1xAgDRAQAhcgEA0AEAIXMBANABACF0AQDQAQAhdQIA0QEAIXYBANIBACF3AQDSAQAheAEA0gEAIXkBANIBACF6AQDSAQAhewIA0wEAIXxAANQBACF9QADUAQAhAgAAAIIBACAIAACPAQAgDXECANEBACFyAQDQAQAhcwEA0AEAIXQBANABACF1AgDRAQAhdgEA0gEAIXcBANIBACF4AQDSAQAheQEA0gEAIXoBANIBACF7AgDTAQAhfEAA1AEAIX1AANQBACECAAAAhQEAIAgAAJEBACACAAAAhQEAIAgAAJEBACADAAAAggEAIA8AAIoBACAQAACPAQAgAQAAAIIBACABAAAAhQEAIAsVAADLAQAgFgAAzAEAIBcAAM8BACAYAADOAQAgGQAAzQEAIHYAAMoBACB3AADKAQAgeAAAygEAIHkAAMoBACB6AADKAQAgewAAygEAIBBuAACbAQAwbwAAmAEAEHAAAJsBADBxAgCcAQAhcgEAnQEAIXMBAJ0BACF0AQCdAQAhdQIAnAEAIXYBAJ4BACF3AQCeAQAheAEAngEAIXkBAJ4BACF6AQCeAQAhewIAnwEAIXxAAKABACF9QACgAQAhAwAAAIUBACADAACXAQAwFAAAmAEAIAMAAACFAQAgAwAAhgEAMAQAAIIBACAQbgAAmwEAMG8AAJgBABBwAACbAQAwcQIAnAEAIXIBAJ0BACFzAQCdAQAhdAEAnQEAIXUCAJwBACF2AQCeAQAhdwEAngEAIXgBAJ4BACF5AQCeAQAhegEAngEAIXsCAJ8BACF8QACgAQAhfUAAoAEAIQ0VAACiAQAgFgAArAEAIBcAAKIBACAYAACiAQAgGQAAogEAIH4CAAAAAX8CAAAABIABAgAAAASBAQIAAAABggECAAAAAYMBAgAAAAGEAQIAAAABhQECAKsBACEOFQAAogEAIBgAAKoBACAZAACqAQAgfgEAAAABfwEAAAAEgAEBAAAABIEBAQAAAAGCAQEAAAABgwEBAAAAAYQBAQAAAAGFAQEAqQEAIYYBAQAAAAGHAQEAAAABiAEBAAAAAQ4VAAClAQAgGAAAqAEAIBkAAKgBACB-AQAAAAF_AQAAAAWAAQEAAAAFgQEBAAAAAYIBAQAAAAGDAQEAAAABhAEBAAAAAYUBAQCnAQAhhgEBAAAAAYcBAQAAAAGIAQEAAAABDRUAAKUBACAWAACmAQAgFwAApQEAIBgAAKUBACAZAAClAQAgfgIAAAABfwIAAAAFgAECAAAABYEBAgAAAAGCAQIAAAABgwECAAAAAYQBAgAAAAGFAQIApAEAIQsVAACiAQAgGAAAowEAIBkAAKMBACB-QAAAAAF_QAAAAASAAUAAAAAEgQFAAAAAAYIBQAAAAAGDAUAAAAABhAFAAAAAAYUBQAChAQAhCxUAAKIBACAYAACjAQAgGQAAowEAIH5AAAAAAX9AAAAABIABQAAAAASBAUAAAAABggFAAAAAAYMBQAAAAAGEAUAAAAABhQFAAKEBACEIfgIAAAABfwIAAAAEgAECAAAABIEBAgAAAAGCAQIAAAABgwECAAAAAYQBAgAAAAGFAQIAogEAIQh-QAAAAAF_QAAAAASAAUAAAAAEgQFAAAAAAYIBQAAAAAGDAUAAAAABhAFAAAAAAYUBQACjAQAhDRUAAKUBACAWAACmAQAgFwAApQEAIBgAAKUBACAZAAClAQAgfgIAAAABfwIAAAAFgAECAAAABYEBAgAAAAGCAQIAAAABgwECAAAAAYQBAgAAAAGFAQIApAEAIQh-AgAAAAF_AgAAAAWAAQIAAAAFgQECAAAAAYIBAgAAAAGDAQIAAAABhAECAAAAAYUBAgClAQAhCH4IAAAAAX8IAAAABYABCAAAAAWBAQgAAAABggEIAAAAAYMBCAAAAAGEAQgAAAABhQEIAKYBACEOFQAApQEAIBgAAKgBACAZAACoAQAgfgEAAAABfwEAAAAFgAEBAAAABYEBAQAAAAGCAQEAAAABgwEBAAAAAYQBAQAAAAGFAQEApwEAIYYBAQAAAAGHAQEAAAABiAEBAAAAAQt-AQAAAAF_AQAAAAWAAQEAAAAFgQEBAAAAAYIBAQAAAAGDAQEAAAABhAEBAAAAAYUBAQCoAQAhhgEBAAAAAYcBAQAAAAGIAQEAAAABDhUAAKIBACAYAACqAQAgGQAAqgEAIH4BAAAAAX8BAAAABIABAQAAAASBAQEAAAABggEBAAAAAYMBAQAAAAGEAQEAAAABhQEBAKkBACGGAQEAAAABhwEBAAAAAYgBAQAAAAELfgEAAAABfwEAAAAEgAEBAAAABIEBAQAAAAGCAQEAAAABgwEBAAAAAYQBAQAAAAGFAQEAqgEAIYYBAQAAAAGHAQEAAAABiAEBAAAAAQ0VAACiAQAgFgAArAEAIBcAAKIBACAYAACiAQAgGQAAogEAIH4CAAAAAX8CAAAABIABAgAAAASBAQIAAAABggECAAAAAYMBAgAAAAGEAQIAAAABhQECAKsBACEIfggAAAABfwgAAAAEgAEIAAAABIEBCAAAAAGCAQgAAAABgwEIAAAAAYQBCAAAAAGFAQgArAEAIRBuAACtAQAwbwAAhQEAEHAAAK0BADBxAgCuAQAhcgEArwEAIXMBAK8BACF0AQCvAQAhdQIArgEAIXYBALABACF3AQCwAQAheAEAsAEAIXkBALABACF6AQCwAQAhewIAsQEAIXxAALIBACF9QACyAQAhCH4CAAAAAX8CAAAABIABAgAAAASBAQIAAAABggECAAAAAYMBAgAAAAGEAQIAAAABhQECAKIBACELfgEAAAABfwEAAAAEgAEBAAAABIEBAQAAAAGCAQEAAAABgwEBAAAAAYQBAQAAAAGFAQEAqgEAIYYBAQAAAAGHAQEAAAABiAEBAAAAAQt-AQAAAAF_AQAAAAWAAQEAAAAFgQEBAAAAAYIBAQAAAAGDAQEAAAABhAEBAAAAAYUBAQCoAQAhhgEBAAAAAYcBAQAAAAGIAQEAAAABCH4CAAAAAX8CAAAABYABAgAAAAWBAQIAAAABggECAAAAAYMBAgAAAAGEAQIAAAABhQECAKUBACEIfkAAAAABf0AAAAAEgAFAAAAABIEBQAAAAAGCAUAAAAABgwFAAAAAAYQBQAAAAAGFAUAAowEAIQluAACzAQAwbwAAfwAQcAAAswEAMHEBAJ0BACF2AQCdAQAhiQEBAJ0BACGKAUAAoAEAIYsBQACgAQAhjAEBAJ4BACEJbgAAtAEAMG8AAGwAEHAAALQBADBxAQCvAQAhdgEArwEAIYkBAQCvAQAhigFAALIBACGLAUAAsgEAIYwBAQCwAQAhB24AALUBADBvAABmABBwAAC1AQAwcQIAnAEAIXIBAJ0BACF8QACgAQAhfUAAoAEAIQduAAC2AQAwbwAAUAAQcAAAtgEAMHECAJwBACFyAQCdAQAhfEAAoAEAIX1AAKABACEILQAAuAEAIG4AALcBADBvAAA5ABBwAAC3AQAwcQIArgEAIXIBAK8BACF8QACyAQAhfUAAsgEAIQONAQAANQAgjgEAADUAII8BAAA1ACAILAAAugEAIG4AALkBADBvAAA1ABBwAAC5AQAwcQIArgEAIXIBAK8BACF8QACyAQAhfUAAsgEAIQONAQAAOQAgjgEAADkAII8BAAA5ACAKCAAAvAEAIG4AALsBADBvAAAwABBwAAC7AQAwcQIAnAEAIXxAAKABACF9QACgAQAhkAEBAJ0BACGRAQEAnQEAIZIBQACgAQAhChUAAKIBACAYAAC9AQAgGQAAvQEAIH6AAAAAAYUBgAAAAAGTAQEAAAABlAEBAAAAAZUBAQAAAAGWAYAAAAABlwGAAAAAAQd-gAAAAAGFAYAAAAABkwEBAAAAAZQBAQAAAAGVAQEAAAABlgGAAAAAAZcBgAAAAAEKCAAAvwEAIG4AAL4BADBvAAAdABBwAAC-AQAwcQIArgEAIXxAALIBACF9QACyAQAhkAEBAK8BACGRAQEArwEAIZIBQACyAQAhB36AAAAAAYUBgAAAAAGTAQEAAAABlAEBAAAAAZUBAQAAAAGWAYAAAAABlwGAAAAAAQxuAADAAQAwbwAAFwAQcAAAwAEAMHECAJwBACFyAQCeAQAheAEAngEAIXxAAKABACF9QACgAQAhkgFAAMIBACGYAQEAnQEAIZkBAQCdAQAhmgEgAMEBACEFFQAAogEAIBgAAMYBACAZAADGAQAgfiAAAAABhQEgAMUBACELFQAApQEAIBgAAMQBACAZAADEAQAgfkAAAAABf0AAAAAFgAFAAAAABYEBQAAAAAGCAUAAAAABgwFAAAAAAYQBQAAAAAGFAUAAwwEAIQsVAAClAQAgGAAAxAEAIBkAAMQBACB-QAAAAAF_QAAAAAWAAUAAAAAFgQFAAAAAAYIBQAAAAAGDAUAAAAABhAFAAAAAAYUBQADDAQAhCH5AAAAAAX9AAAAABYABQAAAAAWBAUAAAAABggFAAAAAAYMBQAAAAAGEAUAAAAABhQFAAMQBACEFFQAAogEAIBgAAMYBACAZAADGAQAgfiAAAAABhQEgAMUBACECfiAAAAABhQEgAMYBACEMbgAAxwEAMG8AAAQAEHAAAMcBADBxAgCuAQAhcgEAsAEAIXgBALABACF8QACyAQAhfUAAsgEAIZIBQADJAQAhmAEBAK8BACGZAQEArwEAIZoBIADIAQAhAn4gAAAAAYUBIADGAQAhCH5AAAAAAX9AAAAABYABQAAAAAWBAUAAAAABggFAAAAAAYMBQAAAAAGEAUAAAAABhQFAAMQBACEAAAAAAAABnQEBAAAAAQWdAQIAAAABowECAAAAAaQBAgAAAAGlAQIAAAABpgECAAAAAQGdAQEAAAABBZ0BAgAAAAGjAQIAAAABpAECAAAAAaUBAgAAAAGmAQIAAAABAZ0BQAAAAAEAAAAAAAAAAAoPAADeAQAwEAAA4gEAMJsBAADfAQAwnAEAAOABADCdAQAA4QEAMJ4BAADhAQAwnwEAAOEBADCgAQAA4QEAMKEBAADjAQAwogEAAOQBADAEcQIAAAABcgEAAAABfEAAAAABfUAAAAABAgAAADMAIA8AAOgBACADAAAAMwAgDwAA6AEAIBAAAOcBACAILQAAuAEAIG4AALcBADBvAAA5ABBwAAC3AQAwcQIAAAABcgEAAAABfEAAsgEAIX1AALIBACECAAAAMwAgCAAA5wEAIAIAAADlAQAgCAAA5gEAIAduAADkAQAwbwAA5QEAEHAAAOQBADBxAgCuAQAhcgEArwEAIXxAALIBACF9QACyAQAhB24AAOQBADBvAADlAQAQcAAA5AEAMHECAK4BACFyAQCvAQAhfEAAsgEAIX1AALIBACEEcQIA0QEAIXIBANABACF8QADUAQAhfUAA1AEAIQRxAgDRAQAhcgEA0AEAIXxAANQBACF9QADUAQAhBHECAAAAAXIBAAAAAXxAAAAAAX1AAAAAAQMPAADeAQAwmwEAAN8BADCgAQAA4QEAMAAAAAAACg8AAPABADAQAAD0AQAwmwEAAPEBADCcAQAA8gEAMJ0BAADzAQAwngEAAPMBADCfAQAA8wEAMKABAADzAQAwoQEAAPUBADCiAQAA9gEAMARxAgAAAAFyAQAAAAF8QAAAAAF9QAAAAAECAAAANwAgDwAA-gEAIAMAAAA3ACAPAAD6AQAgEAAA-QEAIAgsAAC6AQAgbgAAuQEAMG8AADUAEHAAALkBADBxAgAAAAFyAQAAAAF8QACyAQAhfUAAsgEAIQIAAAA3ACAIAAD5AQAgAgAAAPcBACAIAAD4AQAgB24AAPYBADBvAAD3AQAQcAAA9gEAMHECAK4BACFyAQCvAQAhfEAAsgEAIX1AALIBACEHbgAA9gEAMG8AAPcBABBwAAD2AQAwcQIArgEAIXIBAK8BACF8QACyAQAhfUAAsgEAIQRxAgDRAQAhcgEA0AEAIXxAANQBACF9QADUAQAhBHECANEBACFyAQDQAQAhfEAA1AEAIX1AANQBACEEcQIAAAABcgEAAAABfEAAAAABfUAAAAABAw8AAPABADCbAQAA8QEAMKABAADzAQAwAAAAAAAAAAAAAAAAAZ0BIAAAAAEBnQFAAAAAAQAAAAAFFQAGFgAHFwAIGAAJGQAKAAAAAAAFFQAGFgAHFwAIGAAJGQAKAAAABRUAEBYAERcAEhgAExkAFAAAAAAABRUAEBYAERcAEhgAExkAFAIVABktOBcCFQAYLDsWASw8AAEtPQAAAAUVAB0WAB4XAB8YACAZACEAAAAAAAUVAB0WAB4XAB8YACAZACEAAAUVACYWACcXACgYACkZACoAAAAAAAUVACYWACcXACgYACkZACoAAAADFQAwGAAxGQAyAAAAAxUAMBgAMRkAMgAAAAUVADgWADkXADoYADsZADwAAAAAAAUVADgWADkXADoYADsZADwBAgECAwEFBgEGBwEHCAEJCgEKDAILDQMMDwENEQIOEgQREwESFAETFQIaGAUbGQscGwwdHAweHwwfIAwgIQwhIwwiJQIjJg0kKAwlKgImKw4nLAwoLQwpLgIqMQ8rMhUuNBYvPhYwPxYxQBYyQRYzQxY0RQI1Rho2SBY3SgI4Sxs5TBY6TRY7TgI8URw9UiI-Uxc_VBdAVRdBVhdCVxdDWRdEWwJFXCNGXhdHYAJIYSRJYhdKYxdLZAJMZyVNaCtOaixPayxQbixRbyxScCxTcixUdAJVdS1WdyxXeQJYei5ZeyxafCxbfQJcgAEvXYEBM16DATRfhAE0YIcBNGGIATRiiQE0Y4sBNGSNAQJljgE1ZpABNGeSAQJokwE2aZQBNGqVATRrlgECbJkBN22aAT0"
|
|
69
69
|
};
|
|
70
70
|
async function decodeBase64AsWasm(wasmBase64) {
|
|
71
71
|
const { Buffer } = await Promise.resolve().then(() => __importStar(require('node:buffer')));
|
|
@@ -779,6 +779,7 @@ export declare const FileScalarFieldEnum: {
|
|
|
779
779
|
readonly originalName: "originalName";
|
|
780
780
|
readonly mimeType: "mimeType";
|
|
781
781
|
readonly sizeBytes: "sizeBytes";
|
|
782
|
+
readonly checksum: "checksum";
|
|
782
783
|
readonly title: "title";
|
|
783
784
|
readonly description: "description";
|
|
784
785
|
readonly resourceField: "resourceField";
|
|
@@ -89,6 +89,7 @@ export declare const FileScalarFieldEnum: {
|
|
|
89
89
|
readonly originalName: "originalName";
|
|
90
90
|
readonly mimeType: "mimeType";
|
|
91
91
|
readonly sizeBytes: "sizeBytes";
|
|
92
|
+
readonly checksum: "checksum";
|
|
92
93
|
readonly title: "title";
|
|
93
94
|
readonly description: "description";
|
|
94
95
|
readonly resourceField: "resourceField";
|
|
@@ -28,6 +28,7 @@ export type FileMinAggregateOutputType = {
|
|
|
28
28
|
originalName: string | null;
|
|
29
29
|
mimeType: string | null;
|
|
30
30
|
sizeBytes: number | null;
|
|
31
|
+
checksum: string | null;
|
|
31
32
|
title: string | null;
|
|
32
33
|
description: string | null;
|
|
33
34
|
resourceField: string | null;
|
|
@@ -42,6 +43,7 @@ export type FileMaxAggregateOutputType = {
|
|
|
42
43
|
originalName: string | null;
|
|
43
44
|
mimeType: string | null;
|
|
44
45
|
sizeBytes: number | null;
|
|
46
|
+
checksum: string | null;
|
|
45
47
|
title: string | null;
|
|
46
48
|
description: string | null;
|
|
47
49
|
resourceField: string | null;
|
|
@@ -56,6 +58,7 @@ export type FileCountAggregateOutputType = {
|
|
|
56
58
|
originalName: number;
|
|
57
59
|
mimeType: number;
|
|
58
60
|
sizeBytes: number;
|
|
61
|
+
checksum: number;
|
|
59
62
|
title: number;
|
|
60
63
|
description: number;
|
|
61
64
|
resourceField: number;
|
|
@@ -81,6 +84,7 @@ export type FileMinAggregateInputType = {
|
|
|
81
84
|
originalName?: true;
|
|
82
85
|
mimeType?: true;
|
|
83
86
|
sizeBytes?: true;
|
|
87
|
+
checksum?: true;
|
|
84
88
|
title?: true;
|
|
85
89
|
description?: true;
|
|
86
90
|
resourceField?: true;
|
|
@@ -95,6 +99,7 @@ export type FileMaxAggregateInputType = {
|
|
|
95
99
|
originalName?: true;
|
|
96
100
|
mimeType?: true;
|
|
97
101
|
sizeBytes?: true;
|
|
102
|
+
checksum?: true;
|
|
98
103
|
title?: true;
|
|
99
104
|
description?: true;
|
|
100
105
|
resourceField?: true;
|
|
@@ -109,6 +114,7 @@ export type FileCountAggregateInputType = {
|
|
|
109
114
|
originalName?: true;
|
|
110
115
|
mimeType?: true;
|
|
111
116
|
sizeBytes?: true;
|
|
117
|
+
checksum?: true;
|
|
112
118
|
title?: true;
|
|
113
119
|
description?: true;
|
|
114
120
|
resourceField?: true;
|
|
@@ -200,6 +206,7 @@ export type FileGroupByOutputType = {
|
|
|
200
206
|
originalName: string;
|
|
201
207
|
mimeType: string;
|
|
202
208
|
sizeBytes: number;
|
|
209
|
+
checksum: string | null;
|
|
203
210
|
title: string | null;
|
|
204
211
|
description: string | null;
|
|
205
212
|
resourceField: string | null;
|
|
@@ -225,6 +232,7 @@ export type FileWhereInput = {
|
|
|
225
232
|
originalName?: Prisma.StringFilter<"File"> | string;
|
|
226
233
|
mimeType?: Prisma.StringFilter<"File"> | string;
|
|
227
234
|
sizeBytes?: Prisma.IntFilter<"File"> | number;
|
|
235
|
+
checksum?: Prisma.StringNullableFilter<"File"> | string | null;
|
|
228
236
|
title?: Prisma.StringNullableFilter<"File"> | string | null;
|
|
229
237
|
description?: Prisma.StringNullableFilter<"File"> | string | null;
|
|
230
238
|
resourceField?: Prisma.StringNullableFilter<"File"> | string | null;
|
|
@@ -239,6 +247,7 @@ export type FileOrderByWithRelationInput = {
|
|
|
239
247
|
originalName?: Prisma.SortOrder;
|
|
240
248
|
mimeType?: Prisma.SortOrder;
|
|
241
249
|
sizeBytes?: Prisma.SortOrder;
|
|
250
|
+
checksum?: Prisma.SortOrderInput | Prisma.SortOrder;
|
|
242
251
|
title?: Prisma.SortOrderInput | Prisma.SortOrder;
|
|
243
252
|
description?: Prisma.SortOrderInput | Prisma.SortOrder;
|
|
244
253
|
resourceField?: Prisma.SortOrderInput | Prisma.SortOrder;
|
|
@@ -256,6 +265,7 @@ export type FileWhereUniqueInput = Prisma.AtLeast<{
|
|
|
256
265
|
originalName?: Prisma.StringFilter<"File"> | string;
|
|
257
266
|
mimeType?: Prisma.StringFilter<"File"> | string;
|
|
258
267
|
sizeBytes?: Prisma.IntFilter<"File"> | number;
|
|
268
|
+
checksum?: Prisma.StringNullableFilter<"File"> | string | null;
|
|
259
269
|
title?: Prisma.StringNullableFilter<"File"> | string | null;
|
|
260
270
|
description?: Prisma.StringNullableFilter<"File"> | string | null;
|
|
261
271
|
resourceField?: Prisma.StringNullableFilter<"File"> | string | null;
|
|
@@ -270,6 +280,7 @@ export type FileOrderByWithAggregationInput = {
|
|
|
270
280
|
originalName?: Prisma.SortOrder;
|
|
271
281
|
mimeType?: Prisma.SortOrder;
|
|
272
282
|
sizeBytes?: Prisma.SortOrder;
|
|
283
|
+
checksum?: Prisma.SortOrderInput | Prisma.SortOrder;
|
|
273
284
|
title?: Prisma.SortOrderInput | Prisma.SortOrder;
|
|
274
285
|
description?: Prisma.SortOrderInput | Prisma.SortOrder;
|
|
275
286
|
resourceField?: Prisma.SortOrderInput | Prisma.SortOrder;
|
|
@@ -292,6 +303,7 @@ export type FileScalarWhereWithAggregatesInput = {
|
|
|
292
303
|
originalName?: Prisma.StringWithAggregatesFilter<"File"> | string;
|
|
293
304
|
mimeType?: Prisma.StringWithAggregatesFilter<"File"> | string;
|
|
294
305
|
sizeBytes?: Prisma.IntWithAggregatesFilter<"File"> | number;
|
|
306
|
+
checksum?: Prisma.StringNullableWithAggregatesFilter<"File"> | string | null;
|
|
295
307
|
title?: Prisma.StringNullableWithAggregatesFilter<"File"> | string | null;
|
|
296
308
|
description?: Prisma.StringNullableWithAggregatesFilter<"File"> | string | null;
|
|
297
309
|
resourceField?: Prisma.StringNullableWithAggregatesFilter<"File"> | string | null;
|
|
@@ -305,6 +317,7 @@ export type FileCreateInput = {
|
|
|
305
317
|
originalName: string;
|
|
306
318
|
mimeType: string;
|
|
307
319
|
sizeBytes: number;
|
|
320
|
+
checksum?: string | null;
|
|
308
321
|
title?: string | null;
|
|
309
322
|
description?: string | null;
|
|
310
323
|
resourceField?: string | null;
|
|
@@ -319,6 +332,7 @@ export type FileUncheckedCreateInput = {
|
|
|
319
332
|
originalName: string;
|
|
320
333
|
mimeType: string;
|
|
321
334
|
sizeBytes: number;
|
|
335
|
+
checksum?: string | null;
|
|
322
336
|
title?: string | null;
|
|
323
337
|
description?: string | null;
|
|
324
338
|
resourceField?: string | null;
|
|
@@ -332,6 +346,7 @@ export type FileUpdateInput = {
|
|
|
332
346
|
originalName?: Prisma.StringFieldUpdateOperationsInput | string;
|
|
333
347
|
mimeType?: Prisma.StringFieldUpdateOperationsInput | string;
|
|
334
348
|
sizeBytes?: Prisma.IntFieldUpdateOperationsInput | number;
|
|
349
|
+
checksum?: Prisma.NullableStringFieldUpdateOperationsInput | string | null;
|
|
335
350
|
title?: Prisma.NullableStringFieldUpdateOperationsInput | string | null;
|
|
336
351
|
description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null;
|
|
337
352
|
resourceField?: Prisma.NullableStringFieldUpdateOperationsInput | string | null;
|
|
@@ -346,6 +361,7 @@ export type FileUncheckedUpdateInput = {
|
|
|
346
361
|
originalName?: Prisma.StringFieldUpdateOperationsInput | string;
|
|
347
362
|
mimeType?: Prisma.StringFieldUpdateOperationsInput | string;
|
|
348
363
|
sizeBytes?: Prisma.IntFieldUpdateOperationsInput | number;
|
|
364
|
+
checksum?: Prisma.NullableStringFieldUpdateOperationsInput | string | null;
|
|
349
365
|
title?: Prisma.NullableStringFieldUpdateOperationsInput | string | null;
|
|
350
366
|
description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null;
|
|
351
367
|
resourceField?: Prisma.NullableStringFieldUpdateOperationsInput | string | null;
|
|
@@ -360,6 +376,7 @@ export type FileCreateManyInput = {
|
|
|
360
376
|
originalName: string;
|
|
361
377
|
mimeType: string;
|
|
362
378
|
sizeBytes: number;
|
|
379
|
+
checksum?: string | null;
|
|
363
380
|
title?: string | null;
|
|
364
381
|
description?: string | null;
|
|
365
382
|
resourceField?: string | null;
|
|
@@ -373,6 +390,7 @@ export type FileUpdateManyMutationInput = {
|
|
|
373
390
|
originalName?: Prisma.StringFieldUpdateOperationsInput | string;
|
|
374
391
|
mimeType?: Prisma.StringFieldUpdateOperationsInput | string;
|
|
375
392
|
sizeBytes?: Prisma.IntFieldUpdateOperationsInput | number;
|
|
393
|
+
checksum?: Prisma.NullableStringFieldUpdateOperationsInput | string | null;
|
|
376
394
|
title?: Prisma.NullableStringFieldUpdateOperationsInput | string | null;
|
|
377
395
|
description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null;
|
|
378
396
|
resourceField?: Prisma.NullableStringFieldUpdateOperationsInput | string | null;
|
|
@@ -387,6 +405,7 @@ export type FileUncheckedUpdateManyInput = {
|
|
|
387
405
|
originalName?: Prisma.StringFieldUpdateOperationsInput | string;
|
|
388
406
|
mimeType?: Prisma.StringFieldUpdateOperationsInput | string;
|
|
389
407
|
sizeBytes?: Prisma.IntFieldUpdateOperationsInput | number;
|
|
408
|
+
checksum?: Prisma.NullableStringFieldUpdateOperationsInput | string | null;
|
|
390
409
|
title?: Prisma.NullableStringFieldUpdateOperationsInput | string | null;
|
|
391
410
|
description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null;
|
|
392
411
|
resourceField?: Prisma.NullableStringFieldUpdateOperationsInput | string | null;
|
|
@@ -401,6 +420,7 @@ export type FileCountOrderByAggregateInput = {
|
|
|
401
420
|
originalName?: Prisma.SortOrder;
|
|
402
421
|
mimeType?: Prisma.SortOrder;
|
|
403
422
|
sizeBytes?: Prisma.SortOrder;
|
|
423
|
+
checksum?: Prisma.SortOrder;
|
|
404
424
|
title?: Prisma.SortOrder;
|
|
405
425
|
description?: Prisma.SortOrder;
|
|
406
426
|
resourceField?: Prisma.SortOrder;
|
|
@@ -420,6 +440,7 @@ export type FileMaxOrderByAggregateInput = {
|
|
|
420
440
|
originalName?: Prisma.SortOrder;
|
|
421
441
|
mimeType?: Prisma.SortOrder;
|
|
422
442
|
sizeBytes?: Prisma.SortOrder;
|
|
443
|
+
checksum?: Prisma.SortOrder;
|
|
423
444
|
title?: Prisma.SortOrder;
|
|
424
445
|
description?: Prisma.SortOrder;
|
|
425
446
|
resourceField?: Prisma.SortOrder;
|
|
@@ -434,6 +455,7 @@ export type FileMinOrderByAggregateInput = {
|
|
|
434
455
|
originalName?: Prisma.SortOrder;
|
|
435
456
|
mimeType?: Prisma.SortOrder;
|
|
436
457
|
sizeBytes?: Prisma.SortOrder;
|
|
458
|
+
checksum?: Prisma.SortOrder;
|
|
437
459
|
title?: Prisma.SortOrder;
|
|
438
460
|
description?: Prisma.SortOrder;
|
|
439
461
|
resourceField?: Prisma.SortOrder;
|
|
@@ -460,6 +482,7 @@ export type FileSelect<ExtArgs extends runtime.Types.Extensions.InternalArgs = r
|
|
|
460
482
|
originalName?: boolean;
|
|
461
483
|
mimeType?: boolean;
|
|
462
484
|
sizeBytes?: boolean;
|
|
485
|
+
checksum?: boolean;
|
|
463
486
|
title?: boolean;
|
|
464
487
|
description?: boolean;
|
|
465
488
|
resourceField?: boolean;
|
|
@@ -474,6 +497,7 @@ export type FileSelectCreateManyAndReturn<ExtArgs extends runtime.Types.Extensio
|
|
|
474
497
|
originalName?: boolean;
|
|
475
498
|
mimeType?: boolean;
|
|
476
499
|
sizeBytes?: boolean;
|
|
500
|
+
checksum?: boolean;
|
|
477
501
|
title?: boolean;
|
|
478
502
|
description?: boolean;
|
|
479
503
|
resourceField?: boolean;
|
|
@@ -488,6 +512,7 @@ export type FileSelectUpdateManyAndReturn<ExtArgs extends runtime.Types.Extensio
|
|
|
488
512
|
originalName?: boolean;
|
|
489
513
|
mimeType?: boolean;
|
|
490
514
|
sizeBytes?: boolean;
|
|
515
|
+
checksum?: boolean;
|
|
491
516
|
title?: boolean;
|
|
492
517
|
description?: boolean;
|
|
493
518
|
resourceField?: boolean;
|
|
@@ -502,6 +527,7 @@ export type FileSelectScalar = {
|
|
|
502
527
|
originalName?: boolean;
|
|
503
528
|
mimeType?: boolean;
|
|
504
529
|
sizeBytes?: boolean;
|
|
530
|
+
checksum?: boolean;
|
|
505
531
|
title?: boolean;
|
|
506
532
|
description?: boolean;
|
|
507
533
|
resourceField?: boolean;
|
|
@@ -510,7 +536,7 @@ export type FileSelectScalar = {
|
|
|
510
536
|
updatedAt?: boolean;
|
|
511
537
|
createdAt?: boolean;
|
|
512
538
|
};
|
|
513
|
-
export type FileOmit<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetOmit<"id" | "name" | "originalName" | "mimeType" | "sizeBytes" | "title" | "description" | "resourceField" | "resourceName" | "resourceId" | "updatedAt" | "createdAt", ExtArgs["result"]["file"]>;
|
|
539
|
+
export type FileOmit<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetOmit<"id" | "name" | "originalName" | "mimeType" | "sizeBytes" | "checksum" | "title" | "description" | "resourceField" | "resourceName" | "resourceId" | "updatedAt" | "createdAt", ExtArgs["result"]["file"]>;
|
|
514
540
|
export type $FilePayload<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
|
|
515
541
|
name: "File";
|
|
516
542
|
objects: {};
|
|
@@ -520,6 +546,7 @@ export type $FilePayload<ExtArgs extends runtime.Types.Extensions.InternalArgs =
|
|
|
520
546
|
originalName: string;
|
|
521
547
|
mimeType: string;
|
|
522
548
|
sizeBytes: number;
|
|
549
|
+
checksum: string | null;
|
|
523
550
|
title: string | null;
|
|
524
551
|
description: string | null;
|
|
525
552
|
resourceField: string | null;
|
|
@@ -889,6 +916,7 @@ export interface FileFieldRefs {
|
|
|
889
916
|
readonly originalName: Prisma.FieldRef<"File", 'String'>;
|
|
890
917
|
readonly mimeType: Prisma.FieldRef<"File", 'String'>;
|
|
891
918
|
readonly sizeBytes: Prisma.FieldRef<"File", 'Int'>;
|
|
919
|
+
readonly checksum: Prisma.FieldRef<"File", 'String'>;
|
|
892
920
|
readonly title: Prisma.FieldRef<"File", 'String'>;
|
|
893
921
|
readonly description: Prisma.FieldRef<"File", 'String'>;
|
|
894
922
|
readonly resourceField: Prisma.FieldRef<"File", 'String'>;
|
|
@@ -78,7 +78,6 @@ export declare abstract class ResourceService<ReadOne = Resource, ReadMany = Res
|
|
|
78
78
|
private mapAggregationValues;
|
|
79
79
|
private makeAggregationIterator;
|
|
80
80
|
private projectResource;
|
|
81
|
-
private projectVirtualFields;
|
|
82
81
|
private sanitizeData;
|
|
83
82
|
private mapQueryFilter;
|
|
84
83
|
private mapRelationInclusions;
|
|
@@ -4,6 +4,7 @@ exports.ResourceService = void 0;
|
|
|
4
4
|
const date_fns_1 = require("date-fns");
|
|
5
5
|
const common_1 = require("@appweaver/common");
|
|
6
6
|
const context_1 = require("../context");
|
|
7
|
+
const utils_1 = require("../utils");
|
|
7
8
|
const security_1 = require("../security");
|
|
8
9
|
const cache_1 = require("../cache");
|
|
9
10
|
const errors_1 = require("../errors");
|
|
@@ -443,7 +444,7 @@ class ResourceService {
|
|
|
443
444
|
};
|
|
444
445
|
}
|
|
445
446
|
projectResource(resource) {
|
|
446
|
-
const projectedResource =
|
|
447
|
+
const projectedResource = (0, utils_1.projectVirtualFields)(resource, this._client.name);
|
|
447
448
|
if (!(0, common_1.isObject)(projectedResource['_count'])) {
|
|
448
449
|
return projectedResource;
|
|
449
450
|
}
|
|
@@ -454,44 +455,6 @@ class ResourceService {
|
|
|
454
455
|
delete projectedResource['_count'];
|
|
455
456
|
return projectedResource;
|
|
456
457
|
}
|
|
457
|
-
projectVirtualFields(resource, resourceName) {
|
|
458
|
-
if (!resource) {
|
|
459
|
-
return resource;
|
|
460
|
-
}
|
|
461
|
-
const projectedVirtual = { ...resource };
|
|
462
|
-
const resourceModel = (0, context_1.injectModel)(resourceName ?? this._client.name, false);
|
|
463
|
-
const relationsModel = resourceModel?.relationsModel;
|
|
464
|
-
const filesModel = resourceModel?.filesModel;
|
|
465
|
-
// Set output or default value for virtual fields
|
|
466
|
-
for (const [fieldName, virtual] of Object.entries(resourceModel?.config?.virtual ?? {})) {
|
|
467
|
-
const outputValue = virtual.output?.value;
|
|
468
|
-
if ((0, common_1.isFunction)(outputValue)) {
|
|
469
|
-
projectedVirtual[fieldName] = outputValue(projectedVirtual);
|
|
470
|
-
}
|
|
471
|
-
else if (outputValue) {
|
|
472
|
-
projectedVirtual[fieldName] = outputValue;
|
|
473
|
-
}
|
|
474
|
-
else if (virtual.required !== false) {
|
|
475
|
-
projectedVirtual[fieldName] =
|
|
476
|
-
virtual.default ?? (0, common_1.defaultScalarValue)(virtual);
|
|
477
|
-
}
|
|
478
|
-
}
|
|
479
|
-
// Recursively project virtual fields for nested relational objects
|
|
480
|
-
for (const key in projectedVirtual) {
|
|
481
|
-
const value = projectedVirtual[key];
|
|
482
|
-
const relationSchema = (0, common_1.extractSchemaProperties)(relationsModel, key);
|
|
483
|
-
const fileSchema = (0, common_1.extractSchemaProperties)(filesModel, key);
|
|
484
|
-
if ((0, common_1.isObject)(value) || ((0, common_1.isArray)(value) && (0, common_1.isObject)(value[0]))) {
|
|
485
|
-
const resourceName = (0, common_1.extractResourceName)(relationSchema ?? fileSchema);
|
|
486
|
-
if (resourceName) {
|
|
487
|
-
projectedVirtual[key] = (0, common_1.isArray)(value)
|
|
488
|
-
? value.map((item) => this.projectVirtualFields(item, resourceName))
|
|
489
|
-
: this.projectVirtualFields(value, resourceName);
|
|
490
|
-
}
|
|
491
|
-
}
|
|
492
|
-
}
|
|
493
|
-
return projectedVirtual;
|
|
494
|
-
}
|
|
495
458
|
sanitizeData(action, data, resourceName) {
|
|
496
459
|
const sanitizedData = { ...data };
|
|
497
460
|
const resourceModel = (0, context_1.injectModel)(resourceName ?? this._client.name, false);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { AuthScope, AuthSource, AuthUser, RouteConfig } from '@appweaver/common';
|
|
2
|
-
import { AuthTokens, JwtPayload, UserAdditionalData } from '../types';
|
|
2
|
+
import { AuthTokens, JwtPayload, UserAdditionalData, UserInfo } from '../types';
|
|
3
3
|
export declare class AuthService {
|
|
4
4
|
/**
|
|
5
5
|
* Finds an authenticated user by their unique identifier.
|
|
@@ -40,6 +40,21 @@ export declare class AuthService {
|
|
|
40
40
|
* @throws {HttpError} Throws an error if the registration process fails.
|
|
41
41
|
*/
|
|
42
42
|
registerAuthUser(source: AuthSource, email: string, password?: string, data?: Partial<UserAdditionalData>): Promise<AuthUser>;
|
|
43
|
+
/**
|
|
44
|
+
* Checks whether a user is allowed to be registered and/or authenticated via OAuth2 by invoking the optional
|
|
45
|
+
* `checkOAuth2User` callback configured on the auth service. When the callback returns nothing, the OAuth2 flow
|
|
46
|
+
* proceeds normally (registration of a new user or login of an existing one). When it returns a string or an error,
|
|
47
|
+
* the flow is aborted by throwing an `HttpError`.
|
|
48
|
+
*
|
|
49
|
+
* @param {AuthSource} source - The OAuth2 authentication source, e.g., oauth2Google, oauth2Facebook, oauth2Custom.
|
|
50
|
+
* @param {UserInfo} userInfo - The user info extracted from the OAuth2 provider.
|
|
51
|
+
* @param {AuthUser | null} authUser - The existing authenticated user matched by email, or null when the user does
|
|
52
|
+
* not exist yet (i.e., a new user would be registered).
|
|
53
|
+
* @return {Promise<void>} A promise that resolves when the user is allowed to proceed.
|
|
54
|
+
* @throws {HttpError} If the configured callback returns a string or an error (status 403 unless an `HttpError` is
|
|
55
|
+
* returned, in which case it is thrown as-is).
|
|
56
|
+
*/
|
|
57
|
+
checkOAuth2User(source: AuthSource, userInfo: UserInfo, authUser: AuthUser | null): Promise<void>;
|
|
43
58
|
/**
|
|
44
59
|
* Changes the password for the authenticated user.
|
|
45
60
|
*
|
package/security/auth-service.js
CHANGED
|
@@ -114,6 +114,34 @@ class AuthService {
|
|
|
114
114
|
throw new errors_1.HttpError('Auth user registration error', 500, e);
|
|
115
115
|
}
|
|
116
116
|
}
|
|
117
|
+
/**
|
|
118
|
+
* Checks whether a user is allowed to be registered and/or authenticated via OAuth2 by invoking the optional
|
|
119
|
+
* `checkOAuth2User` callback configured on the auth service. When the callback returns nothing, the OAuth2 flow
|
|
120
|
+
* proceeds normally (registration of a new user or login of an existing one). When it returns a string or an error,
|
|
121
|
+
* the flow is aborted by throwing an `HttpError`.
|
|
122
|
+
*
|
|
123
|
+
* @param {AuthSource} source - The OAuth2 authentication source, e.g., oauth2Google, oauth2Facebook, oauth2Custom.
|
|
124
|
+
* @param {UserInfo} userInfo - The user info extracted from the OAuth2 provider.
|
|
125
|
+
* @param {AuthUser | null} authUser - The existing authenticated user matched by email, or null when the user does
|
|
126
|
+
* not exist yet (i.e., a new user would be registered).
|
|
127
|
+
* @return {Promise<void>} A promise that resolves when the user is allowed to proceed.
|
|
128
|
+
* @throws {HttpError} If the configured callback returns a string or an error (status 403 unless an `HttpError` is
|
|
129
|
+
* returned, in which case it is thrown as-is).
|
|
130
|
+
*/
|
|
131
|
+
async checkOAuth2User(source, userInfo, authUser) {
|
|
132
|
+
const serviceConfig = this._authUserService[common_1.CONFIG];
|
|
133
|
+
if (!serviceConfig.checkOAuth2User) {
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
const result = await serviceConfig.checkOAuth2User(source, userInfo, authUser);
|
|
137
|
+
if (!result) {
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
if (result instanceof errors_1.HttpError) {
|
|
141
|
+
throw result;
|
|
142
|
+
}
|
|
143
|
+
throw new errors_1.HttpError(result instanceof Error ? result.message : result, 403, result instanceof Error ? result : undefined);
|
|
144
|
+
}
|
|
117
145
|
/**
|
|
118
146
|
* Changes the password for the authenticated user.
|
|
119
147
|
*
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Ctor, IResourceService, ResourceModel, ResourceModelConfig, ResourceServiceConfig } from '@appweaver/common';
|
|
2
|
-
import { RegistrationDataFn } from '../types';
|
|
2
|
+
import { CheckOAuth2UserFn, RegistrationDataFn } from '../types';
|
|
3
3
|
export declare function createAuthModel(config: ResourceModelConfig): ResourceModel;
|
|
4
4
|
export declare function createAuthService<T = any, C = any, U = any>(config: ResourceServiceConfig<T, C, U> & {
|
|
5
5
|
registrationData?: RegistrationDataFn<T>;
|
|
6
|
+
checkOAuth2User?: CheckOAuth2UserFn;
|
|
6
7
|
}): Ctor<IResourceService<T, T, C, U>>;
|
|
@@ -1,11 +1,6 @@
|
|
|
1
1
|
import { AuthSource } from '@appweaver/common';
|
|
2
|
-
import { Server } from '../../types';
|
|
3
|
-
export type UserInfo
|
|
4
|
-
id: string;
|
|
5
|
-
email: string;
|
|
6
|
-
firstName: string;
|
|
7
|
-
lastName: string;
|
|
8
|
-
};
|
|
2
|
+
import { Server, UserInfo } from '../../types';
|
|
3
|
+
export type { UserInfo };
|
|
9
4
|
export type OAuth2Config = {
|
|
10
5
|
enabled: boolean;
|
|
11
6
|
clientId?: string;
|
|
@@ -70,8 +70,19 @@ function createOAuth2Plugin(authSource, oAuth2Config) {
|
|
|
70
70
|
const { token } = await server[authSource].getAccessTokenFromAuthorizationCodeFlow(request);
|
|
71
71
|
const userInfo = await oAuth2Config.extractUserInfo(token.access_token);
|
|
72
72
|
let authUser = await authService.findByUsername(userInfo.email);
|
|
73
|
+
await authService.checkOAuth2User(authSource, userInfo, authUser);
|
|
73
74
|
if (!authUser) {
|
|
74
|
-
|
|
75
|
+
if (!common_1.config.SECURITY_OAUTH2_REGISTRATION_ENABLED) {
|
|
76
|
+
throw new errors_1.HttpError('Auth user does not exist and OAuth2 registration is disabled', 403);
|
|
77
|
+
}
|
|
78
|
+
authUser = await authService.registerAuthUser(authSource, userInfo.email, undefined, {
|
|
79
|
+
...(0, common_1.pickProperties)(userInfo, [
|
|
80
|
+
'firstName',
|
|
81
|
+
'lastName',
|
|
82
|
+
'avatarUrl'
|
|
83
|
+
]),
|
|
84
|
+
avatarFile: await fetchAvatarFile(userInfo)
|
|
85
|
+
});
|
|
75
86
|
}
|
|
76
87
|
else if (!authUser.verifiedEmail) {
|
|
77
88
|
throw new errors_1.HttpError('Auth user email address is not verified', 403);
|
|
@@ -83,3 +94,36 @@ function createOAuth2Plugin(authSource, oAuth2Config) {
|
|
|
83
94
|
});
|
|
84
95
|
});
|
|
85
96
|
}
|
|
97
|
+
/**
|
|
98
|
+
* Downloads the user's avatar image from the OAuth2 provider so it can be passed to the `registrationData` callback.
|
|
99
|
+
* Fetching is best-effort: any failure is logged and `undefined` is returned so the registration flow is not blocked.
|
|
100
|
+
*
|
|
101
|
+
* @param {UserInfo} userInfo - The user info extracted from the OAuth2 provider, including the optional avatar URL.
|
|
102
|
+
* @return {Promise<AvatarFile | undefined>} A promise resolving to the downloaded avatar file, or `undefined` when
|
|
103
|
+
* avatar fetching is disabled, no avatar URL is available, or the download fails.
|
|
104
|
+
*/
|
|
105
|
+
async function fetchAvatarFile(userInfo) {
|
|
106
|
+
if (!common_1.config.SECURITY_OAUTH2_FETCH_AVATAR_ENABLED || !userInfo.avatarUrl) {
|
|
107
|
+
return undefined;
|
|
108
|
+
}
|
|
109
|
+
try {
|
|
110
|
+
const resp = await fetch(userInfo.avatarUrl, { method: 'GET' });
|
|
111
|
+
if (!resp.ok) {
|
|
112
|
+
common_1.logger.debug({ url: userInfo.avatarUrl, status: resp.status }, 'OAuth2 avatar fetch failed');
|
|
113
|
+
return undefined;
|
|
114
|
+
}
|
|
115
|
+
const mimeType = resp.headers.get('content-type') ?? 'image/jpeg';
|
|
116
|
+
const data = Buffer.from(await resp.arrayBuffer());
|
|
117
|
+
const extension = mimeType.split('/')[1]?.split(';')[0] ?? 'jpg';
|
|
118
|
+
return {
|
|
119
|
+
name: `avatar-${userInfo.id}.${extension}`,
|
|
120
|
+
mimeType,
|
|
121
|
+
size: data.length,
|
|
122
|
+
data
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
catch (e) {
|
|
126
|
+
common_1.logger.debug({ url: userInfo.avatarUrl, err: e }, 'OAuth2 avatar fetch error');
|
|
127
|
+
return undefined;
|
|
128
|
+
}
|
|
129
|
+
}
|