@studious-lms/server 1.8.0 → 1.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/dist/middleware/security.d.ts.map +1 -1
  2. package/dist/middleware/security.js +3 -3
  3. package/dist/middleware/security.js.map +1 -1
  4. package/dist/models/agenda.d.ts +2 -2
  5. package/dist/models/announcement.d.ts +2 -2
  6. package/dist/models/assignment.d.ts +33 -33
  7. package/dist/models/class.d.ts +2 -2
  8. package/dist/models/cloudStorage.d.ts +14 -1
  9. package/dist/models/cloudStorage.d.ts.map +1 -1
  10. package/dist/models/cloudStorage.js +123 -3
  11. package/dist/models/cloudStorage.js.map +1 -1
  12. package/dist/models/event.d.ts +3 -3
  13. package/dist/models/file.d.ts +27 -26
  14. package/dist/models/file.d.ts.map +1 -1
  15. package/dist/models/file.js +4 -39
  16. package/dist/models/file.js.map +1 -1
  17. package/dist/models/labChat.d.ts +6 -6
  18. package/dist/models/section.d.ts +1 -1
  19. package/dist/routers/_app.d.ts +444 -100
  20. package/dist/routers/_app.d.ts.map +1 -1
  21. package/dist/routers/_app.js +4 -2
  22. package/dist/routers/_app.js.map +1 -1
  23. package/dist/routers/agenda.d.ts +2 -2
  24. package/dist/routers/assignment.d.ts +31 -31
  25. package/dist/routers/class.d.ts +5 -5
  26. package/dist/routers/event.d.ts +2 -2
  27. package/dist/routers/file.d.ts +2 -2
  28. package/dist/routers/folder.d.ts +24 -0
  29. package/dist/routers/folder.d.ts.map +1 -1
  30. package/dist/routers/folder.js +27 -5
  31. package/dist/routers/folder.js.map +1 -1
  32. package/dist/routers/labChat.d.ts +2 -2
  33. package/dist/routers/newtonChat.d.ts +1 -1
  34. package/dist/routers/permissions.d.ts +120 -0
  35. package/dist/routers/permissions.d.ts.map +1 -0
  36. package/dist/routers/permissions.js +50 -0
  37. package/dist/routers/permissions.js.map +1 -0
  38. package/dist/routers/studentProgress.d.ts +45 -0
  39. package/dist/routers/studentProgress.d.ts.map +1 -1
  40. package/dist/routers/studentProgress.js +12 -3
  41. package/dist/routers/studentProgress.js.map +1 -1
  42. package/dist/routers/tag.d.ts +5 -5
  43. package/dist/services/agenda.d.ts +2 -2
  44. package/dist/services/assignment.d.ts +31 -31
  45. package/dist/services/class.d.ts +5 -5
  46. package/dist/services/class.js +3 -3
  47. package/dist/services/class.js.map +1 -1
  48. package/dist/services/event.d.ts +2 -2
  49. package/dist/services/file.d.ts +22 -5
  50. package/dist/services/file.d.ts.map +1 -1
  51. package/dist/services/file.js +81 -45
  52. package/dist/services/file.js.map +1 -1
  53. package/dist/services/folder.d.ts +97 -2
  54. package/dist/services/folder.d.ts.map +1 -1
  55. package/dist/services/folder.js +158 -87
  56. package/dist/services/folder.js.map +1 -1
  57. package/dist/services/labChat.d.ts +2 -2
  58. package/dist/services/permissions.d.ts +188 -0
  59. package/dist/services/permissions.d.ts.map +1 -0
  60. package/dist/services/permissions.js +661 -0
  61. package/dist/services/permissions.js.map +1 -0
  62. package/dist/services/studentProgress.d.ts +94 -0
  63. package/dist/services/studentProgress.d.ts.map +1 -1
  64. package/dist/services/studentProgress.js +94 -3
  65. package/dist/services/studentProgress.js.map +1 -1
  66. package/package.json +1 -1
  67. package/prisma/migrations/20260510170000_add_folder_permissions/migration.sql +93 -0
  68. package/prisma/schema.prisma +74 -0
  69. package/src/middleware/security.ts +1 -1
  70. package/src/models/cloudStorage.ts +134 -1
  71. package/src/models/file.ts +2 -37
  72. package/src/routers/_app.ts +2 -0
  73. package/src/routers/folder.ts +32 -2
  74. package/src/routers/permissions.ts +71 -0
  75. package/src/routers/studentProgress.ts +21 -0
  76. package/src/services/class.ts +1 -1
  77. package/src/services/file.ts +76 -47
  78. package/src/services/folder.ts +180 -91
  79. package/src/services/permissions.ts +778 -0
  80. package/src/services/studentProgress.ts +197 -11
  81. package/tests/unit/services/permissions.test.ts +463 -0
  82. package/tests/unit/services/studentProgress.test.ts +168 -2
@@ -1 +1 @@
1
- {"version":3,"file":"security.d.ts","sourceRoot":"/","sources":["middleware/security.ts"],"names":[],"mappings":"AAoBA,eAAO,MAAM,cAAc,sDAWzB,CAAC;AAGH,eAAO,MAAM,WAAW,sDAQtB,CAAC;AAGH,eAAO,MAAM,aAAa,sDAOxB,CAAC;AAGH,eAAO,MAAM,YAAY,sFAwBomF,CAAC,2BAA5nF,CAAC"}
1
+ {"version":3,"file":"security.d.ts","sourceRoot":"/","sources":["middleware/security.ts"],"names":[],"mappings":"AAoBA,eAAO,MAAM,cAAc,sDAWzB,CAAC;AAGH,eAAO,MAAM,WAAW,sDAQtB,CAAC;AAGH,eAAO,MAAM,aAAa,sDAOxB,CAAC;AAGH,eAAO,MAAM,YAAY,sFAwBmmF,CAAC,2BAA3nF,CAAC"}
@@ -1,5 +1,5 @@
1
1
 
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="e27a3dc9-6e2a-5b94-b404-01bf23ea1d5f")}catch(e){}}();
2
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="47d2d7ec-bf41-5da8-a7f7-78b133efc204")}catch(e){}}();
3
3
  import helmet from 'helmet';
4
4
  import rateLimit from 'express-rate-limit';
5
5
  const isDevelopment = process.env.NODE_ENV === 'development';
@@ -18,7 +18,7 @@ const rateLimitHandler = (req, res) => {
18
18
  // General API rate limiter - applies to all routes
19
19
  export const generalLimiter = rateLimit({
20
20
  windowMs: 10 * 60 * 1000, // 10 minutes
21
- max: 100, // Limit each IP to 100 requests per windowMs
21
+ max: 1000, // Limit each IP to 100 requests per windowMs
22
22
  message: 'Too many requests from this IP, please try again later.',
23
23
  standardHeaders: true, // Return rate limit info in the `RateLimit-*` headers
24
24
  legacyHeaders: false, // Disable the `X-RateLimit-*` headers
@@ -74,4 +74,4 @@ export const helmetConfig = helmet({
74
74
  },
75
75
  });
76
76
  //# sourceMappingURL=security.js.map
77
- //# debugId=e27a3dc9-6e2a-5b94-b404-01bf23ea1d5f
77
+ //# debugId=47d2d7ec-bf41-5da8-a7f7-78b133efc204
@@ -1 +1 @@
1
- {"version":3,"file":"security.js","sources":["middleware/security.ts"],"sourceRoot":"/","sourcesContent":["import helmet from 'helmet';\nimport rateLimit from 'express-rate-limit';\nimport type { Request, Response } from 'express';\n\nconst isDevelopment = process.env.NODE_ENV === 'development';\n\n// Custom handler for rate limit errors that returns JSON\n// This format can be intercepted on the frontend with:\n// error.data?.code === 'TOO_MANY_REQUESTS' || error.data?.httpStatus === 429\nconst rateLimitHandler = (req: Request, res: Response) => {\n // Return JSON structure that can be intercepted on frontend with:\n // error.data?.code === 'TOO_MANY_REQUESTS' || error.data?.httpStatus === 429\n // When tRPC wraps this, the response body becomes error.data, so we put code/httpStatus at top level\n res.status(429).json({\n code: 'TOO_MANY_REQUESTS',\n message: 'Too many requests, please try again later.',\n });\n};\n\n// General API rate limiter - applies to all routes\nexport const generalLimiter = rateLimit({\n windowMs: 10 * 60 * 1000, // 10 minutes\n max: 100, // Limit each IP to 100 requests per windowMs\n message: 'Too many requests from this IP, please try again later.',\n standardHeaders: true, // Return rate limit info in the `RateLimit-*` headers\n legacyHeaders: false, // Disable the `X-RateLimit-*` headers\n handler: rateLimitHandler,\n skip: (req) => {\n // Skip rate limiting for health checks\n return req.path === '/health' || req.method === 'OPTIONS';\n },\n});\n\n// Stricter rate limiter for authentication endpoints\nexport const authLimiter = rateLimit({\n windowMs: 5 * 60 * 1000, // 5 minutes\n max: 5, // Limit each IP to 5 login attempts per windowMs\n message: 'Too many authentication attempts, please try again later.',\n standardHeaders: true,\n legacyHeaders: false,\n skipSuccessfulRequests: true, // Don't count successful requests\n handler: rateLimitHandler,\n});\n\n// File upload rate limiter\nexport const uploadLimiter = rateLimit({\n windowMs: 30 * 60 * 1000, // 30 minutes\n max: 50, // Limit each IP to 50 uploads per hour\n message: 'Too many file uploads, please try again later.',\n standardHeaders: true,\n legacyHeaders: false,\n handler: rateLimitHandler,\n});\n\n// Helmet configuration\nexport const helmetConfig = helmet({\n contentSecurityPolicy: {\n directives: {\n defaultSrc: [\"'self'\"],\n styleSrc: [\"'self'\", \"'unsafe-inline'\"], // Allow inline styles for tRPC panel\n // Allow inline scripts only in development (for tRPC panel)\n // In production, keep strict CSP without unsafe-inline\n scriptSrc: isDevelopment \n ? [\"'self'\", \"'unsafe-inline'\"] \n : [\"'self'\"],\n imgSrc: [\"'self'\", \"data:\", \"https:\"], // Allow images from any HTTPS source\n connectSrc: [\"'self'\", \"https://*.sentry.io\"], // Allow Sentry connections\n fontSrc: [\"'self'\", \"data:\"],\n objectSrc: [\"'none'\"],\n mediaSrc: [\"'self'\"],\n frameSrc: [\"'none'\"],\n },\n },\n crossOriginEmbedderPolicy: false, // Disable if you need to embed resources\n hsts: {\n maxAge: 31536000, // 1 year\n includeSubDomains: true,\n preload: true,\n },\n});"],"names":[],"mappings":";;AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,SAAS,MAAM,oBAAoB,CAAC;AAG3C,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,CAAC;AAE7D,yDAAyD;AACzD,uDAAuD;AACvD,6EAA6E;AAC7E,MAAM,gBAAgB,GAAG,CAAC,GAAY,EAAE,GAAa,EAAE,EAAE;IACvD,kEAAkE;IAClE,6EAA6E;IAC7E,qGAAqG;IACrG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;QACnB,IAAI,EAAE,mBAAmB;QACzB,OAAO,EAAE,4CAA4C;KACtD,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,mDAAmD;AACnD,MAAM,CAAC,MAAM,cAAc,GAAG,SAAS,CAAC;IACtC,QAAQ,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,aAAa;IACvC,GAAG,EAAE,GAAG,EAAE,6CAA6C;IACvD,OAAO,EAAE,yDAAyD;IAClE,eAAe,EAAE,IAAI,EAAE,sDAAsD;IAC7E,aAAa,EAAE,KAAK,EAAE,sCAAsC;IAC5D,OAAO,EAAE,gBAAgB;IACzB,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE;QACZ,uCAAuC;QACvC,OAAO,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC;IAC5D,CAAC;CACF,CAAC,CAAC;AAEH,qDAAqD;AACrD,MAAM,CAAC,MAAM,WAAW,GAAG,SAAS,CAAC;IACnC,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,YAAY;IACrC,GAAG,EAAE,CAAC,EAAE,iDAAiD;IACzD,OAAO,EAAE,2DAA2D;IACpE,eAAe,EAAE,IAAI;IACrB,aAAa,EAAE,KAAK;IACpB,sBAAsB,EAAE,IAAI,EAAE,kCAAkC;IAChE,OAAO,EAAE,gBAAgB;CAC1B,CAAC,CAAC;AAEH,2BAA2B;AAC3B,MAAM,CAAC,MAAM,aAAa,GAAG,SAAS,CAAC;IACrC,QAAQ,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,aAAa;IACvC,GAAG,EAAE,EAAE,EAAE,uCAAuC;IAChD,OAAO,EAAE,gDAAgD;IACzD,eAAe,EAAE,IAAI;IACrB,aAAa,EAAE,KAAK;IACpB,OAAO,EAAE,gBAAgB;CAC1B,CAAC,CAAC;AAEH,uBAAuB;AACvB,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC;IACjC,qBAAqB,EAAE;QACrB,UAAU,EAAE;YACV,UAAU,EAAE,CAAC,QAAQ,CAAC;YACtB,QAAQ,EAAE,CAAC,QAAQ,EAAE,iBAAiB,CAAC,EAAE,qCAAqC;YAC9E,4DAA4D;YAC5D,uDAAuD;YACvD,SAAS,EAAE,aAAa;gBACtB,CAAC,CAAC,CAAC,QAAQ,EAAE,iBAAiB,CAAC;gBAC/B,CAAC,CAAC,CAAC,QAAQ,CAAC;YACd,MAAM,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,qCAAqC;YAC5E,UAAU,EAAE,CAAC,QAAQ,EAAE,qBAAqB,CAAC,EAAE,2BAA2B;YAC1E,OAAO,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;YAC5B,SAAS,EAAE,CAAC,QAAQ,CAAC;YACrB,QAAQ,EAAE,CAAC,QAAQ,CAAC;YACpB,QAAQ,EAAE,CAAC,QAAQ,CAAC;SACrB;KACF;IACD,yBAAyB,EAAE,KAAK,EAAE,yCAAyC;IAC3E,IAAI,EAAE;QACJ,MAAM,EAAE,QAAQ,EAAE,SAAS;QAC3B,iBAAiB,EAAE,IAAI;QACvB,OAAO,EAAE,IAAI;KACd;CACF,CAAC,CAAC","debug_id":"e27a3dc9-6e2a-5b94-b404-01bf23ea1d5f"}
1
+ {"version":3,"file":"security.js","sources":["middleware/security.ts"],"sourceRoot":"/","sourcesContent":["import helmet from 'helmet';\nimport rateLimit from 'express-rate-limit';\nimport type { Request, Response } from 'express';\n\nconst isDevelopment = process.env.NODE_ENV === 'development';\n\n// Custom handler for rate limit errors that returns JSON\n// This format can be intercepted on the frontend with:\n// error.data?.code === 'TOO_MANY_REQUESTS' || error.data?.httpStatus === 429\nconst rateLimitHandler = (req: Request, res: Response) => {\n // Return JSON structure that can be intercepted on frontend with:\n // error.data?.code === 'TOO_MANY_REQUESTS' || error.data?.httpStatus === 429\n // When tRPC wraps this, the response body becomes error.data, so we put code/httpStatus at top level\n res.status(429).json({\n code: 'TOO_MANY_REQUESTS',\n message: 'Too many requests, please try again later.',\n });\n};\n\n// General API rate limiter - applies to all routes\nexport const generalLimiter = rateLimit({\n windowMs: 10 * 60 * 1000, // 10 minutes\n max: 1000, // Limit each IP to 100 requests per windowMs\n message: 'Too many requests from this IP, please try again later.',\n standardHeaders: true, // Return rate limit info in the `RateLimit-*` headers\n legacyHeaders: false, // Disable the `X-RateLimit-*` headers\n handler: rateLimitHandler,\n skip: (req) => {\n // Skip rate limiting for health checks\n return req.path === '/health' || req.method === 'OPTIONS';\n },\n});\n\n// Stricter rate limiter for authentication endpoints\nexport const authLimiter = rateLimit({\n windowMs: 5 * 60 * 1000, // 5 minutes\n max: 5, // Limit each IP to 5 login attempts per windowMs\n message: 'Too many authentication attempts, please try again later.',\n standardHeaders: true,\n legacyHeaders: false,\n skipSuccessfulRequests: true, // Don't count successful requests\n handler: rateLimitHandler,\n});\n\n// File upload rate limiter\nexport const uploadLimiter = rateLimit({\n windowMs: 30 * 60 * 1000, // 30 minutes\n max: 50, // Limit each IP to 50 uploads per hour\n message: 'Too many file uploads, please try again later.',\n standardHeaders: true,\n legacyHeaders: false,\n handler: rateLimitHandler,\n});\n\n// Helmet configuration\nexport const helmetConfig = helmet({\n contentSecurityPolicy: {\n directives: {\n defaultSrc: [\"'self'\"],\n styleSrc: [\"'self'\", \"'unsafe-inline'\"], // Allow inline styles for tRPC panel\n // Allow inline scripts only in development (for tRPC panel)\n // In production, keep strict CSP without unsafe-inline\n scriptSrc: isDevelopment \n ? [\"'self'\", \"'unsafe-inline'\"] \n : [\"'self'\"],\n imgSrc: [\"'self'\", \"data:\", \"https:\"], // Allow images from any HTTPS source\n connectSrc: [\"'self'\", \"https://*.sentry.io\"], // Allow Sentry connections\n fontSrc: [\"'self'\", \"data:\"],\n objectSrc: [\"'none'\"],\n mediaSrc: [\"'self'\"],\n frameSrc: [\"'none'\"],\n },\n },\n crossOriginEmbedderPolicy: false, // Disable if you need to embed resources\n hsts: {\n maxAge: 31536000, // 1 year\n includeSubDomains: true,\n preload: true,\n },\n});"],"names":[],"mappings":";;AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,SAAS,MAAM,oBAAoB,CAAC;AAG3C,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,CAAC;AAE7D,yDAAyD;AACzD,uDAAuD;AACvD,6EAA6E;AAC7E,MAAM,gBAAgB,GAAG,CAAC,GAAY,EAAE,GAAa,EAAE,EAAE;IACvD,kEAAkE;IAClE,6EAA6E;IAC7E,qGAAqG;IACrG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;QACnB,IAAI,EAAE,mBAAmB;QACzB,OAAO,EAAE,4CAA4C;KACtD,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,mDAAmD;AACnD,MAAM,CAAC,MAAM,cAAc,GAAG,SAAS,CAAC;IACtC,QAAQ,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,aAAa;IACvC,GAAG,EAAE,IAAI,EAAE,6CAA6C;IACxD,OAAO,EAAE,yDAAyD;IAClE,eAAe,EAAE,IAAI,EAAE,sDAAsD;IAC7E,aAAa,EAAE,KAAK,EAAE,sCAAsC;IAC5D,OAAO,EAAE,gBAAgB;IACzB,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE;QACZ,uCAAuC;QACvC,OAAO,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC;IAC5D,CAAC;CACF,CAAC,CAAC;AAEH,qDAAqD;AACrD,MAAM,CAAC,MAAM,WAAW,GAAG,SAAS,CAAC;IACnC,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,YAAY;IACrC,GAAG,EAAE,CAAC,EAAE,iDAAiD;IACzD,OAAO,EAAE,2DAA2D;IACpE,eAAe,EAAE,IAAI;IACrB,aAAa,EAAE,KAAK;IACpB,sBAAsB,EAAE,IAAI,EAAE,kCAAkC;IAChE,OAAO,EAAE,gBAAgB;CAC1B,CAAC,CAAC;AAEH,2BAA2B;AAC3B,MAAM,CAAC,MAAM,aAAa,GAAG,SAAS,CAAC;IACrC,QAAQ,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,aAAa;IACvC,GAAG,EAAE,EAAE,EAAE,uCAAuC;IAChD,OAAO,EAAE,gDAAgD;IACzD,eAAe,EAAE,IAAI;IACrB,aAAa,EAAE,KAAK;IACpB,OAAO,EAAE,gBAAgB;CAC1B,CAAC,CAAC;AAEH,uBAAuB;AACvB,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC;IACjC,qBAAqB,EAAE;QACrB,UAAU,EAAE;YACV,UAAU,EAAE,CAAC,QAAQ,CAAC;YACtB,QAAQ,EAAE,CAAC,QAAQ,EAAE,iBAAiB,CAAC,EAAE,qCAAqC;YAC9E,4DAA4D;YAC5D,uDAAuD;YACvD,SAAS,EAAE,aAAa;gBACtB,CAAC,CAAC,CAAC,QAAQ,EAAE,iBAAiB,CAAC;gBAC/B,CAAC,CAAC,CAAC,QAAQ,CAAC;YACd,MAAM,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,qCAAqC;YAC5E,UAAU,EAAE,CAAC,QAAQ,EAAE,qBAAqB,CAAC,EAAE,2BAA2B;YAC1E,OAAO,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;YAC5B,SAAS,EAAE,CAAC,QAAQ,CAAC;YACrB,QAAQ,EAAE,CAAC,QAAQ,CAAC;YACpB,QAAQ,EAAE,CAAC,QAAQ,CAAC;SACrB;KACF;IACD,yBAAyB,EAAE,KAAK,EAAE,yCAAyC;IAC3E,IAAI,EAAE;QACJ,MAAM,EAAE,QAAQ,EAAE,SAAS;QAC3B,iBAAiB,EAAE,IAAI;QACvB,OAAO,EAAE,IAAI;KACd;CACF,CAAC,CAAC","debug_id":"47d2d7ec-bf41-5da8-a7f7-78b133efc204"}
@@ -14,8 +14,8 @@ export declare function findPersonalEvents(userId: string, rangeStart: Date, ran
14
14
  type: import(".prisma/client").$Enums.AssignmentType;
15
15
  id: string;
16
16
  createdAt: Date | null;
17
- modifiedAt: Date | null;
18
17
  classId: string;
18
+ modifiedAt: Date | null;
19
19
  title: string;
20
20
  instructions: string;
21
21
  dueDate: Date;
@@ -63,8 +63,8 @@ export declare function findClassEvents(userId: string, rangeStart: Date, rangeE
63
63
  type: import(".prisma/client").$Enums.AssignmentType;
64
64
  id: string;
65
65
  createdAt: Date | null;
66
- modifiedAt: Date | null;
67
66
  classId: string;
67
+ modifiedAt: Date | null;
68
68
  title: string;
69
69
  instructions: string;
70
70
  dueDate: Date;
@@ -138,8 +138,8 @@ export declare function findAnnouncementWithClass(id: string): import(".prisma/c
138
138
  } & {
139
139
  id: string;
140
140
  createdAt: Date;
141
- modifiedAt: Date | null;
142
141
  classId: string;
142
+ modifiedAt: Date | null;
143
143
  teacherId: string;
144
144
  remarks: string;
145
145
  }) | null, null, import("@prisma/client/runtime/library.js").DefaultArgs, {
@@ -261,8 +261,8 @@ export declare function updateAnnouncement(id: string, data: {
261
261
  export declare function deleteAnnouncement(id: string): import(".prisma/client").Prisma.Prisma__AnnouncementClient<{
262
262
  id: string;
263
263
  createdAt: Date;
264
- modifiedAt: Date | null;
265
264
  classId: string;
265
+ modifiedAt: Date | null;
266
266
  teacherId: string;
267
267
  remarks: string;
268
268
  }, never, import("@prisma/client/runtime/library.js").DefaultArgs, {
@@ -3,8 +3,8 @@ export declare function findAssignmentById(id: string): import(".prisma/client")
3
3
  type: import(".prisma/client").$Enums.AssignmentType;
4
4
  id: string;
5
5
  createdAt: Date | null;
6
- modifiedAt: Date | null;
7
6
  classId: string;
7
+ modifiedAt: Date | null;
8
8
  title: string;
9
9
  instructions: string;
10
10
  dueDate: Date;
@@ -85,8 +85,8 @@ export declare function findAssignmentWithDetails(id: string): import(".prisma/c
85
85
  type: import(".prisma/client").$Enums.AssignmentType;
86
86
  id: string;
87
87
  createdAt: Date | null;
88
- modifiedAt: Date | null;
89
88
  classId: string;
89
+ modifiedAt: Date | null;
90
90
  title: string;
91
91
  instructions: string;
92
92
  dueDate: Date;
@@ -123,6 +123,7 @@ export declare function findAssignmentForDelete(id: string, teacherId: string):
123
123
  name: string;
124
124
  id: string;
125
125
  userId: string | null;
126
+ folderId: string | null;
126
127
  size: number | null;
127
128
  uploadedAt: Date | null;
128
129
  uploadStatus: import(".prisma/client").$Enums.UploadStatus;
@@ -139,7 +140,6 @@ export declare function findAssignmentForDelete(id: string, teacherId: string):
139
140
  submissionId: string | null;
140
141
  annotationId: string | null;
141
142
  classDraftId: string | null;
142
- folderId: string | null;
143
143
  conversationId: string | null;
144
144
  messageId: string | null;
145
145
  announcementId: string | null;
@@ -151,6 +151,7 @@ export declare function findAssignmentForDelete(id: string, teacherId: string):
151
151
  name: string;
152
152
  id: string;
153
153
  userId: string | null;
154
+ folderId: string | null;
154
155
  size: number | null;
155
156
  uploadedAt: Date | null;
156
157
  uploadStatus: import(".prisma/client").$Enums.UploadStatus;
@@ -167,7 +168,6 @@ export declare function findAssignmentForDelete(id: string, teacherId: string):
167
168
  submissionId: string | null;
168
169
  annotationId: string | null;
169
170
  classDraftId: string | null;
170
- folderId: string | null;
171
171
  conversationId: string | null;
172
172
  messageId: string | null;
173
173
  announcementId: string | null;
@@ -180,6 +180,7 @@ export declare function findAssignmentForDelete(id: string, teacherId: string):
180
180
  name: string;
181
181
  id: string;
182
182
  userId: string | null;
183
+ folderId: string | null;
183
184
  size: number | null;
184
185
  uploadedAt: Date | null;
185
186
  uploadStatus: import(".prisma/client").$Enums.UploadStatus;
@@ -196,7 +197,6 @@ export declare function findAssignmentForDelete(id: string, teacherId: string):
196
197
  submissionId: string | null;
197
198
  annotationId: string | null;
198
199
  classDraftId: string | null;
199
- folderId: string | null;
200
200
  conversationId: string | null;
201
201
  messageId: string | null;
202
202
  announcementId: string | null;
@@ -208,6 +208,7 @@ export declare function findAssignmentForDelete(id: string, teacherId: string):
208
208
  name: string;
209
209
  id: string;
210
210
  userId: string | null;
211
+ folderId: string | null;
211
212
  size: number | null;
212
213
  uploadedAt: Date | null;
213
214
  uploadStatus: import(".prisma/client").$Enums.UploadStatus;
@@ -224,7 +225,6 @@ export declare function findAssignmentForDelete(id: string, teacherId: string):
224
225
  submissionId: string | null;
225
226
  annotationId: string | null;
226
227
  classDraftId: string | null;
227
- folderId: string | null;
228
228
  conversationId: string | null;
229
229
  messageId: string | null;
230
230
  announcementId: string | null;
@@ -254,6 +254,7 @@ export declare function findAssignmentForDelete(id: string, teacherId: string):
254
254
  name: string;
255
255
  id: string;
256
256
  userId: string | null;
257
+ folderId: string | null;
257
258
  size: number | null;
258
259
  uploadedAt: Date | null;
259
260
  uploadStatus: import(".prisma/client").$Enums.UploadStatus;
@@ -270,7 +271,6 @@ export declare function findAssignmentForDelete(id: string, teacherId: string):
270
271
  submissionId: string | null;
271
272
  annotationId: string | null;
272
273
  classDraftId: string | null;
273
- folderId: string | null;
274
274
  conversationId: string | null;
275
275
  messageId: string | null;
276
276
  announcementId: string | null;
@@ -282,6 +282,7 @@ export declare function findAssignmentForDelete(id: string, teacherId: string):
282
282
  name: string;
283
283
  id: string;
284
284
  userId: string | null;
285
+ folderId: string | null;
285
286
  size: number | null;
286
287
  uploadedAt: Date | null;
287
288
  uploadStatus: import(".prisma/client").$Enums.UploadStatus;
@@ -298,7 +299,6 @@ export declare function findAssignmentForDelete(id: string, teacherId: string):
298
299
  submissionId: string | null;
299
300
  annotationId: string | null;
300
301
  classDraftId: string | null;
301
- folderId: string | null;
302
302
  conversationId: string | null;
303
303
  messageId: string | null;
304
304
  announcementId: string | null;
@@ -308,8 +308,8 @@ export declare function findAssignmentForDelete(id: string, teacherId: string):
308
308
  type: import(".prisma/client").$Enums.AssignmentType;
309
309
  id: string;
310
310
  createdAt: Date | null;
311
- modifiedAt: Date | null;
312
311
  classId: string;
312
+ modifiedAt: Date | null;
313
313
  title: string;
314
314
  instructions: string;
315
315
  dueDate: Date;
@@ -378,8 +378,8 @@ export declare function findSubmissionByAssignmentAndStudent(assignmentId: strin
378
378
  type: import(".prisma/client").$Enums.AssignmentType;
379
379
  id: string;
380
380
  createdAt: Date | null;
381
- modifiedAt: Date | null;
382
381
  classId: string;
382
+ modifiedAt: Date | null;
383
383
  title: string;
384
384
  instructions: string;
385
385
  dueDate: Date;
@@ -406,6 +406,7 @@ export declare function findSubmissionByAssignmentAndStudent(assignmentId: strin
406
406
  name: string;
407
407
  id: string;
408
408
  userId: string | null;
409
+ folderId: string | null;
409
410
  size: number | null;
410
411
  uploadedAt: Date | null;
411
412
  uploadStatus: import(".prisma/client").$Enums.UploadStatus;
@@ -422,7 +423,6 @@ export declare function findSubmissionByAssignmentAndStudent(assignmentId: strin
422
423
  submissionId: string | null;
423
424
  annotationId: string | null;
424
425
  classDraftId: string | null;
425
- folderId: string | null;
426
426
  conversationId: string | null;
427
427
  messageId: string | null;
428
428
  announcementId: string | null;
@@ -434,6 +434,7 @@ export declare function findSubmissionByAssignmentAndStudent(assignmentId: strin
434
434
  name: string;
435
435
  id: string;
436
436
  userId: string | null;
437
+ folderId: string | null;
437
438
  size: number | null;
438
439
  uploadedAt: Date | null;
439
440
  uploadStatus: import(".prisma/client").$Enums.UploadStatus;
@@ -450,7 +451,6 @@ export declare function findSubmissionByAssignmentAndStudent(assignmentId: strin
450
451
  submissionId: string | null;
451
452
  annotationId: string | null;
452
453
  classDraftId: string | null;
453
- folderId: string | null;
454
454
  conversationId: string | null;
455
455
  messageId: string | null;
456
456
  announcementId: string | null;
@@ -524,8 +524,8 @@ export declare function findSubmissionByIdForClassMember(submissionId: string, c
524
524
  type: import(".prisma/client").$Enums.AssignmentType;
525
525
  id: string;
526
526
  createdAt: Date | null;
527
- modifiedAt: Date | null;
528
527
  classId: string;
528
+ modifiedAt: Date | null;
529
529
  title: string;
530
530
  instructions: string;
531
531
  dueDate: Date;
@@ -552,6 +552,7 @@ export declare function findSubmissionByIdForClassMember(submissionId: string, c
552
552
  name: string;
553
553
  id: string;
554
554
  userId: string | null;
555
+ folderId: string | null;
555
556
  size: number | null;
556
557
  uploadedAt: Date | null;
557
558
  uploadStatus: import(".prisma/client").$Enums.UploadStatus;
@@ -568,7 +569,6 @@ export declare function findSubmissionByIdForClassMember(submissionId: string, c
568
569
  submissionId: string | null;
569
570
  annotationId: string | null;
570
571
  classDraftId: string | null;
571
- folderId: string | null;
572
572
  conversationId: string | null;
573
573
  messageId: string | null;
574
574
  announcementId: string | null;
@@ -580,6 +580,7 @@ export declare function findSubmissionByIdForClassMember(submissionId: string, c
580
580
  name: string;
581
581
  id: string;
582
582
  userId: string | null;
583
+ folderId: string | null;
583
584
  size: number | null;
584
585
  uploadedAt: Date | null;
585
586
  uploadStatus: import(".prisma/client").$Enums.UploadStatus;
@@ -596,7 +597,6 @@ export declare function findSubmissionByIdForClassMember(submissionId: string, c
596
597
  submissionId: string | null;
597
598
  annotationId: string | null;
598
599
  classDraftId: string | null;
599
- folderId: string | null;
600
600
  conversationId: string | null;
601
601
  messageId: string | null;
602
602
  announcementId: string | null;
@@ -666,8 +666,8 @@ export declare function findSubmissionForUpdate(submissionId: string, userId: st
666
666
  type: import(".prisma/client").$Enums.AssignmentType;
667
667
  id: string;
668
668
  createdAt: Date | null;
669
- modifiedAt: Date | null;
670
669
  classId: string;
670
+ modifiedAt: Date | null;
671
671
  title: string;
672
672
  instructions: string;
673
673
  dueDate: Date;
@@ -695,6 +695,7 @@ export declare function findSubmissionForUpdate(submissionId: string, userId: st
695
695
  name: string;
696
696
  id: string;
697
697
  userId: string | null;
698
+ folderId: string | null;
698
699
  size: number | null;
699
700
  uploadedAt: Date | null;
700
701
  uploadStatus: import(".prisma/client").$Enums.UploadStatus;
@@ -711,7 +712,6 @@ export declare function findSubmissionForUpdate(submissionId: string, userId: st
711
712
  submissionId: string | null;
712
713
  annotationId: string | null;
713
714
  classDraftId: string | null;
714
- folderId: string | null;
715
715
  conversationId: string | null;
716
716
  messageId: string | null;
717
717
  announcementId: string | null;
@@ -723,6 +723,7 @@ export declare function findSubmissionForUpdate(submissionId: string, userId: st
723
723
  name: string;
724
724
  id: string;
725
725
  userId: string | null;
726
+ folderId: string | null;
726
727
  size: number | null;
727
728
  uploadedAt: Date | null;
728
729
  uploadStatus: import(".prisma/client").$Enums.UploadStatus;
@@ -739,7 +740,6 @@ export declare function findSubmissionForUpdate(submissionId: string, userId: st
739
740
  submissionId: string | null;
740
741
  annotationId: string | null;
741
742
  classDraftId: string | null;
742
- folderId: string | null;
743
743
  conversationId: string | null;
744
744
  messageId: string | null;
745
745
  announcementId: string | null;
@@ -797,8 +797,8 @@ export declare function createSubmission(assignmentId: string, studentId: string
797
797
  type: import(".prisma/client").$Enums.AssignmentType;
798
798
  id: string;
799
799
  createdAt: Date | null;
800
- modifiedAt: Date | null;
801
800
  classId: string;
801
+ modifiedAt: Date | null;
802
802
  title: string;
803
803
  instructions: string;
804
804
  dueDate: Date;
@@ -825,6 +825,7 @@ export declare function createSubmission(assignmentId: string, studentId: string
825
825
  name: string;
826
826
  id: string;
827
827
  userId: string | null;
828
+ folderId: string | null;
828
829
  size: number | null;
829
830
  uploadedAt: Date | null;
830
831
  uploadStatus: import(".prisma/client").$Enums.UploadStatus;
@@ -841,7 +842,6 @@ export declare function createSubmission(assignmentId: string, studentId: string
841
842
  submissionId: string | null;
842
843
  annotationId: string | null;
843
844
  classDraftId: string | null;
844
- folderId: string | null;
845
845
  conversationId: string | null;
846
846
  messageId: string | null;
847
847
  announcementId: string | null;
@@ -853,6 +853,7 @@ export declare function createSubmission(assignmentId: string, studentId: string
853
853
  name: string;
854
854
  id: string;
855
855
  userId: string | null;
856
+ folderId: string | null;
856
857
  size: number | null;
857
858
  uploadedAt: Date | null;
858
859
  uploadStatus: import(".prisma/client").$Enums.UploadStatus;
@@ -869,7 +870,6 @@ export declare function createSubmission(assignmentId: string, studentId: string
869
870
  submissionId: string | null;
870
871
  annotationId: string | null;
871
872
  classDraftId: string | null;
872
- folderId: string | null;
873
873
  conversationId: string | null;
874
874
  messageId: string | null;
875
875
  announcementId: string | null;
@@ -923,8 +923,8 @@ export declare function findAssignmentWithClassForTeacher(assignmentId: string,
923
923
  type: import(".prisma/client").$Enums.AssignmentType;
924
924
  id: string;
925
925
  createdAt: Date | null;
926
- modifiedAt: Date | null;
927
926
  classId: string;
927
+ modifiedAt: Date | null;
928
928
  title: string;
929
929
  instructions: string;
930
930
  dueDate: Date;
@@ -961,8 +961,8 @@ export declare function duplicateAssignment(sourceAssignmentId: string, targetCl
961
961
  type: import(".prisma/client").$Enums.AssignmentType;
962
962
  id: string;
963
963
  createdAt: Date | null;
964
- modifiedAt: Date | null;
965
964
  classId: string;
965
+ modifiedAt: Date | null;
966
966
  title: string;
967
967
  instructions: string;
968
968
  dueDate: Date;
@@ -1008,8 +1008,8 @@ export declare function findSubmissionsByAssignmentForTeacher(assignmentId: stri
1008
1008
  type: import(".prisma/client").$Enums.AssignmentType;
1009
1009
  id: string;
1010
1010
  createdAt: Date | null;
1011
- modifiedAt: Date | null;
1012
1011
  classId: string;
1012
+ modifiedAt: Date | null;
1013
1013
  title: string;
1014
1014
  instructions: string;
1015
1015
  dueDate: Date;
@@ -1037,6 +1037,7 @@ export declare function findSubmissionsByAssignmentForTeacher(assignmentId: stri
1037
1037
  name: string;
1038
1038
  id: string;
1039
1039
  userId: string | null;
1040
+ folderId: string | null;
1040
1041
  size: number | null;
1041
1042
  uploadedAt: Date | null;
1042
1043
  uploadStatus: import(".prisma/client").$Enums.UploadStatus;
@@ -1053,7 +1054,6 @@ export declare function findSubmissionsByAssignmentForTeacher(assignmentId: stri
1053
1054
  submissionId: string | null;
1054
1055
  annotationId: string | null;
1055
1056
  classDraftId: string | null;
1056
- folderId: string | null;
1057
1057
  conversationId: string | null;
1058
1058
  messageId: string | null;
1059
1059
  announcementId: string | null;
@@ -1065,6 +1065,7 @@ export declare function findSubmissionsByAssignmentForTeacher(assignmentId: stri
1065
1065
  name: string;
1066
1066
  id: string;
1067
1067
  userId: string | null;
1068
+ folderId: string | null;
1068
1069
  size: number | null;
1069
1070
  uploadedAt: Date | null;
1070
1071
  uploadStatus: import(".prisma/client").$Enums.UploadStatus;
@@ -1081,7 +1082,6 @@ export declare function findSubmissionsByAssignmentForTeacher(assignmentId: stri
1081
1082
  submissionId: string | null;
1082
1083
  annotationId: string | null;
1083
1084
  classDraftId: string | null;
1084
- folderId: string | null;
1085
1085
  conversationId: string | null;
1086
1086
  messageId: string | null;
1087
1087
  announcementId: string | null;
@@ -1138,8 +1138,8 @@ export declare function findSubmissionForTeacherUpdate(submissionId: string, tea
1138
1138
  type: import(".prisma/client").$Enums.AssignmentType;
1139
1139
  id: string;
1140
1140
  createdAt: Date | null;
1141
- modifiedAt: Date | null;
1142
1141
  classId: string;
1142
+ modifiedAt: Date | null;
1143
1143
  title: string;
1144
1144
  instructions: string;
1145
1145
  dueDate: Date;
@@ -1167,6 +1167,7 @@ export declare function findSubmissionForTeacherUpdate(submissionId: string, tea
1167
1167
  name: string;
1168
1168
  id: string;
1169
1169
  userId: string | null;
1170
+ folderId: string | null;
1170
1171
  size: number | null;
1171
1172
  uploadedAt: Date | null;
1172
1173
  uploadStatus: import(".prisma/client").$Enums.UploadStatus;
@@ -1183,7 +1184,6 @@ export declare function findSubmissionForTeacherUpdate(submissionId: string, tea
1183
1184
  submissionId: string | null;
1184
1185
  annotationId: string | null;
1185
1186
  classDraftId: string | null;
1186
- folderId: string | null;
1187
1187
  conversationId: string | null;
1188
1188
  messageId: string | null;
1189
1189
  announcementId: string | null;
@@ -1195,6 +1195,7 @@ export declare function findSubmissionForTeacherUpdate(submissionId: string, tea
1195
1195
  name: string;
1196
1196
  id: string;
1197
1197
  userId: string | null;
1198
+ folderId: string | null;
1198
1199
  size: number | null;
1199
1200
  uploadedAt: Date | null;
1200
1201
  uploadStatus: import(".prisma/client").$Enums.UploadStatus;
@@ -1211,7 +1212,6 @@ export declare function findSubmissionForTeacherUpdate(submissionId: string, tea
1211
1212
  submissionId: string | null;
1212
1213
  annotationId: string | null;
1213
1214
  classDraftId: string | null;
1214
- folderId: string | null;
1215
1215
  conversationId: string | null;
1216
1216
  messageId: string | null;
1217
1217
  announcementId: string | null;
@@ -1224,6 +1224,7 @@ export declare function findSubmissionForTeacherUpdate(submissionId: string, tea
1224
1224
  name: string;
1225
1225
  id: string;
1226
1226
  userId: string | null;
1227
+ folderId: string | null;
1227
1228
  size: number | null;
1228
1229
  uploadedAt: Date | null;
1229
1230
  uploadStatus: import(".prisma/client").$Enums.UploadStatus;
@@ -1240,7 +1241,6 @@ export declare function findSubmissionForTeacherUpdate(submissionId: string, tea
1240
1241
  submissionId: string | null;
1241
1242
  annotationId: string | null;
1242
1243
  classDraftId: string | null;
1243
- folderId: string | null;
1244
1244
  conversationId: string | null;
1245
1245
  messageId: string | null;
1246
1246
  announcementId: string | null;
@@ -1252,6 +1252,7 @@ export declare function findSubmissionForTeacherUpdate(submissionId: string, tea
1252
1252
  name: string;
1253
1253
  id: string;
1254
1254
  userId: string | null;
1255
+ folderId: string | null;
1255
1256
  size: number | null;
1256
1257
  uploadedAt: Date | null;
1257
1258
  uploadStatus: import(".prisma/client").$Enums.UploadStatus;
@@ -1268,7 +1269,6 @@ export declare function findSubmissionForTeacherUpdate(submissionId: string, tea
1268
1269
  submissionId: string | null;
1269
1270
  annotationId: string | null;
1270
1271
  classDraftId: string | null;
1271
- folderId: string | null;
1272
1272
  conversationId: string | null;
1273
1273
  messageId: string | null;
1274
1274
  announcementId: string | null;
@@ -1333,8 +1333,8 @@ export declare function attachAssignmentToEvent(assignmentId: string, eventId: s
1333
1333
  type: import(".prisma/client").$Enums.AssignmentType;
1334
1334
  id: string;
1335
1335
  createdAt: Date | null;
1336
- modifiedAt: Date | null;
1337
1336
  classId: string;
1337
+ modifiedAt: Date | null;
1338
1338
  title: string;
1339
1339
  instructions: string;
1340
1340
  dueDate: Date;
@@ -1387,8 +1387,8 @@ export declare function detachAssignmentFromEvent(assignmentId: string): import(
1387
1387
  type: import(".prisma/client").$Enums.AssignmentType;
1388
1388
  id: string;
1389
1389
  createdAt: Date | null;
1390
- modifiedAt: Date | null;
1391
1390
  classId: string;
1391
+ modifiedAt: Date | null;
1392
1392
  title: string;
1393
1393
  instructions: string;
1394
1394
  dueDate: Date;
@@ -336,8 +336,8 @@ export declare function findLabDraftsByClass(classId: string, teacherId: string)
336
336
  type: import(".prisma/client").$Enums.AssignmentType;
337
337
  id: string;
338
338
  createdAt: Date | null;
339
- modifiedAt: Date | null;
340
339
  classId: string;
340
+ modifiedAt: Date | null;
341
341
  title: string;
342
342
  instructions: string;
343
343
  dueDate: Date;
@@ -429,8 +429,8 @@ export declare function findAssignmentsWithFiles(classId: string): import(".pris
429
429
  type: import(".prisma/client").$Enums.AssignmentType;
430
430
  id: string;
431
431
  createdAt: Date | null;
432
- modifiedAt: Date | null;
433
432
  classId: string;
433
+ modifiedAt: Date | null;
434
434
  title: string;
435
435
  instructions: string;
436
436
  dueDate: Date;
@@ -133,7 +133,20 @@ export declare function renameFolder(folderId: string, name: string, color?: str
133
133
  };
134
134
  };
135
135
  }>;
136
- export declare function listFolderBreadcrumbs(folderId: string): Promise<{
136
+ /**
137
+ * Build the breadcrumb chain for a folder.
138
+ *
139
+ * Without `viewerId`: walks all the way up to the scope root (owner-style
140
+ * view).
141
+ *
142
+ * With `viewerId`: walks up but stops at the highest folder the viewer is
143
+ * actually granted on, OR at the scope root if the viewer is a scope member.
144
+ * This is the Drive-style "Shared with me" behavior — a grantee never sees
145
+ * ancestor folders they weren't shared on. The result for a grantee browsing
146
+ * `Owner/PrivateA/SharedB/C` (granted on B) reads `SharedB / C` — the ancestor
147
+ * `PrivateA` is correctly hidden.
148
+ */
149
+ export declare function listFolderBreadcrumbs(folderId: string, viewerId?: string): Promise<{
137
150
  id: string;
138
151
  name: string;
139
152
  }[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"cloudStorage.d.ts","sourceRoot":"/","sources":["models/cloudStorage.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC5C;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAazC,wBAAsB,qBAAqB,CAAC,KAAK,EAAE,UAAU;;;;;;;;;GAqD5D;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAmB5B;AAmBD,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgBtD;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;;;;;;;;;;;;;;;GASA;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM;;;;;;;;;;;;;;;GAK9C;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM;;;;;;;;;;;;;;;GAEhD;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;;;;;;;;;;;;;;;GAS1E;AAED,wBAAsB,qBAAqB,CAAC,QAAQ,EAAE,MAAM;QACjC,MAAM;UAAQ,MAAM;KAc9C"}
1
+ {"version":3,"file":"cloudStorage.d.ts","sourceRoot":"/","sources":["models/cloudStorage.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC5C;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAazC,wBAAsB,qBAAqB,CAAC,KAAK,EAAE,UAAU;;;;;;;;;GAqD5D;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAmB5B;AAmBD,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgBtD;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;;;;;;;;;;;;;;;GASA;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM;;;;;;;;;;;;;;;GAK9C;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM;;;;;;;;;;;;;;;GAEhD;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;;;;;;;;;;;;;;;GAS1E;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,MAAM;QAEQ,MAAM;UAAQ,MAAM;KAmI9C"}