@lti-tool/core 0.9.0 → 0.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 (81) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/ltiTool.d.ts +88 -3
  3. package/dist/ltiTool.d.ts.map +1 -1
  4. package/dist/ltiTool.js +157 -3
  5. package/dist/schemas/client.schema.d.ts +1 -1
  6. package/dist/schemas/client.schema.d.ts.map +1 -1
  7. package/dist/schemas/client.schema.js +1 -1
  8. package/dist/schemas/common.schema.d.ts +1 -1
  9. package/dist/schemas/common.schema.d.ts.map +1 -1
  10. package/dist/schemas/common.schema.js +1 -1
  11. package/dist/schemas/deployment.schema.d.ts +1 -1
  12. package/dist/schemas/deployment.schema.d.ts.map +1 -1
  13. package/dist/schemas/deployment.schema.js +1 -1
  14. package/dist/schemas/lti13/ags/lineItem.schema.d.ts +80 -0
  15. package/dist/schemas/lti13/ags/lineItem.schema.d.ts.map +1 -0
  16. package/dist/schemas/lti13/ags/lineItem.schema.js +49 -0
  17. package/dist/schemas/lti13/ags/result.schema.d.ts +65 -0
  18. package/dist/schemas/lti13/ags/result.schema.d.ts.map +1 -0
  19. package/dist/schemas/lti13/ags/result.schema.js +35 -0
  20. package/dist/schemas/lti13/ags/scoreSubmission.schema.d.ts +25 -4
  21. package/dist/schemas/lti13/ags/scoreSubmission.schema.d.ts.map +1 -1
  22. package/dist/schemas/lti13/ags/scoreSubmission.schema.js +2 -1
  23. package/dist/schemas/lti13/claims/baseJwtClaims.schema.d.ts +1 -1
  24. package/dist/schemas/lti13/claims/baseJwtClaims.schema.d.ts.map +1 -1
  25. package/dist/schemas/lti13/claims/baseJwtClaims.schema.js +1 -1
  26. package/dist/schemas/lti13/claims/contextClaims.schema.d.ts +1 -1
  27. package/dist/schemas/lti13/claims/contextClaims.schema.d.ts.map +1 -1
  28. package/dist/schemas/lti13/claims/contextClaims.schema.js +1 -1
  29. package/dist/schemas/lti13/claims/coreLtiClaims.schema.d.ts +1 -1
  30. package/dist/schemas/lti13/claims/coreLtiClaims.schema.d.ts.map +1 -1
  31. package/dist/schemas/lti13/claims/coreLtiClaims.schema.js +1 -1
  32. package/dist/schemas/lti13/claims/platformClaims.schema.d.ts +1 -1
  33. package/dist/schemas/lti13/claims/platformClaims.schema.d.ts.map +1 -1
  34. package/dist/schemas/lti13/claims/platformClaims.schema.js +1 -1
  35. package/dist/schemas/lti13/claims/privacyClaims.schema.d.ts +1 -1
  36. package/dist/schemas/lti13/claims/privacyClaims.schema.d.ts.map +1 -1
  37. package/dist/schemas/lti13/claims/privacyClaims.schema.js +1 -1
  38. package/dist/schemas/lti13/claims/serviceClaims.schema.d.ts +1 -1
  39. package/dist/schemas/lti13/claims/serviceClaims.schema.d.ts.map +1 -1
  40. package/dist/schemas/lti13/claims/serviceClaims.schema.js +1 -1
  41. package/dist/schemas/lti13/lti13JwtPayload.schema.d.ts +1 -1
  42. package/dist/schemas/lti13/lti13JwtPayload.schema.d.ts.map +1 -1
  43. package/dist/schemas/lti13/lti13JwtPayload.schema.js +1 -1
  44. package/dist/schemas/lti13/lti13Launch.schema.d.ts +1 -1
  45. package/dist/schemas/lti13/lti13Launch.schema.d.ts.map +1 -1
  46. package/dist/schemas/lti13/lti13Launch.schema.js +1 -1
  47. package/dist/schemas/lti13/lti13Login.schema.d.ts +1 -1
  48. package/dist/schemas/lti13/lti13Login.schema.d.ts.map +1 -1
  49. package/dist/schemas/lti13/lti13Login.schema.js +1 -1
  50. package/dist/schemas/lti13/nrps/contextMembership.schema.d.ts +65 -0
  51. package/dist/schemas/lti13/nrps/contextMembership.schema.d.ts.map +1 -0
  52. package/dist/schemas/lti13/nrps/contextMembership.schema.js +47 -0
  53. package/dist/services/ags.service.d.ts +86 -0
  54. package/dist/services/ags.service.d.ts.map +1 -1
  55. package/dist/services/ags.service.js +184 -8
  56. package/dist/services/nrps.service.d.ts +28 -0
  57. package/dist/services/nrps.service.d.ts.map +1 -0
  58. package/dist/services/nrps.service.js +51 -0
  59. package/dist/services/token.service.d.ts.map +1 -1
  60. package/dist/services/token.service.js +2 -1
  61. package/package.json +1 -1
  62. package/src/ltiTool.ts +195 -5
  63. package/src/schemas/client.schema.ts +1 -1
  64. package/src/schemas/common.schema.ts +1 -1
  65. package/src/schemas/deployment.schema.ts +1 -1
  66. package/src/schemas/lti13/ags/lineItem.schema.ts +85 -0
  67. package/src/schemas/lti13/ags/result.schema.ts +55 -0
  68. package/src/schemas/lti13/ags/scoreSubmission.schema.ts +3 -1
  69. package/src/schemas/lti13/claims/baseJwtClaims.schema.ts +1 -1
  70. package/src/schemas/lti13/claims/contextClaims.schema.ts +1 -1
  71. package/src/schemas/lti13/claims/coreLtiClaims.schema.ts +1 -1
  72. package/src/schemas/lti13/claims/platformClaims.schema.ts +1 -1
  73. package/src/schemas/lti13/claims/privacyClaims.schema.ts +1 -1
  74. package/src/schemas/lti13/claims/serviceClaims.schema.ts +1 -1
  75. package/src/schemas/lti13/lti13JwtPayload.schema.ts +1 -1
  76. package/src/schemas/lti13/lti13Launch.schema.ts +1 -1
  77. package/src/schemas/lti13/lti13Login.schema.ts +1 -1
  78. package/src/schemas/lti13/nrps/contextMembership.schema.ts +55 -0
  79. package/src/services/ags.service.ts +253 -16
  80. package/src/services/nrps.service.ts +80 -0
  81. package/src/services/token.service.ts +4 -1
@@ -1,4 +1,4 @@
1
- import { z } from 'zod';
1
+ import * as z from 'zod';
2
2
  /**
3
3
  * Schema for submitting grades via LTI Assignment and Grade Services (AGS).
4
4
  * Validates score data according to LTI AGS v2.0 specification.
@@ -19,13 +19,34 @@ export declare const ScoreSubmissionSchema: z.ZodObject<{
19
19
  Completed: "Completed";
20
20
  }>>;
21
21
  gradingProgress: z.ZodDefault<z.ZodEnum<{
22
- NotReady: "NotReady";
23
- Failed: "Failed";
22
+ FullyGraded: "FullyGraded";
24
23
  Pending: "Pending";
25
24
  PendingManual: "PendingManual";
26
- FullyGraded: "FullyGraded";
25
+ Failed: "Failed";
26
+ NotReady: "NotReady";
27
27
  }>>;
28
28
  }, z.core.$strip>;
29
+ export declare const ScoreSubmissionsSchema: z.ZodArray<z.ZodObject<{
30
+ scoreGiven: z.ZodNumber;
31
+ scoreMaximum: z.ZodNumber;
32
+ comment: z.ZodOptional<z.ZodString>;
33
+ userId: z.ZodOptional<z.ZodString>;
34
+ timestamp: z.ZodOptional<z.ZodISODateTime>;
35
+ activityProgress: z.ZodDefault<z.ZodEnum<{
36
+ Initialized: "Initialized";
37
+ Started: "Started";
38
+ InProgress: "InProgress";
39
+ Submitted: "Submitted";
40
+ Completed: "Completed";
41
+ }>>;
42
+ gradingProgress: z.ZodDefault<z.ZodEnum<{
43
+ FullyGraded: "FullyGraded";
44
+ Pending: "Pending";
45
+ PendingManual: "PendingManual";
46
+ Failed: "Failed";
47
+ NotReady: "NotReady";
48
+ }>>;
49
+ }, z.core.$strip>>;
29
50
  /**
30
51
  * Type representing a validated score submission for LTI AGS.
31
52
  * Contains grade data and metadata to be sent to the platform.
@@ -1 +1 @@
1
- {"version":3,"file":"scoreSubmission.schema.d.ts","sourceRoot":"","sources":["../../../../src/schemas/lti13/ags/scoreSubmission.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;iBAuChC,CAAC;AAEH;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
1
+ {"version":3,"file":"scoreSubmission.schema.d.ts","sourceRoot":"","sources":["../../../../src/schemas/lti13/ags/scoreSubmission.schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;iBAuChC,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;kBAAiC,CAAC;AAErE;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
@@ -1,4 +1,4 @@
1
- import { z } from 'zod';
1
+ import * as z from 'zod';
2
2
  /**
3
3
  * Schema for submitting grades via LTI Assignment and Grade Services (AGS).
4
4
  * Validates score data according to LTI AGS v2.0 specification.
@@ -39,3 +39,4 @@ export const ScoreSubmissionSchema = z.object({
39
39
  .enum(['NotReady', 'Failed', 'Pending', 'PendingManual', 'FullyGraded'])
40
40
  .default('FullyGraded'),
41
41
  });
42
+ export const ScoreSubmissionsSchema = z.array(ScoreSubmissionSchema);
@@ -1,4 +1,4 @@
1
- import { z } from 'zod';
1
+ import * as z from 'zod';
2
2
  export declare const BaseJwtClaimsSchema: z.ZodObject<{
3
3
  iss: z.ZodString;
4
4
  sub: z.ZodString;
@@ -1 +1 @@
1
- {"version":3,"file":"baseJwtClaims.schema.d.ts","sourceRoot":"","sources":["../../../../src/schemas/lti13/claims/baseJwtClaims.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,mBAAmB;;;;;;;;iBAQ9B,CAAC"}
1
+ {"version":3,"file":"baseJwtClaims.schema.d.ts","sourceRoot":"","sources":["../../../../src/schemas/lti13/claims/baseJwtClaims.schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,eAAO,MAAM,mBAAmB;;;;;;;;iBAQ9B,CAAC"}
@@ -1,4 +1,4 @@
1
- import { z } from 'zod';
1
+ import * as z from 'zod';
2
2
  export const BaseJwtClaimsSchema = z.object({
3
3
  iss: z.string(),
4
4
  sub: z.string(),
@@ -1,4 +1,4 @@
1
- import { z } from 'zod';
1
+ import * as z from 'zod';
2
2
  export declare const ResourceLinkSchema: z.ZodOptional<z.ZodObject<{
3
3
  id: z.ZodString;
4
4
  title: z.ZodOptional<z.ZodString>;
@@ -1 +1 @@
1
- {"version":3,"file":"contextClaims.schema.d.ts","sourceRoot":"","sources":["../../../../src/schemas/lti13/claims/contextClaims.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,kBAAkB;;;kBAKlB,CAAC;AAEd,eAAO,MAAM,aAAa;;;;kBAMb,CAAC"}
1
+ {"version":3,"file":"contextClaims.schema.d.ts","sourceRoot":"","sources":["../../../../src/schemas/lti13/claims/contextClaims.schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,eAAO,MAAM,kBAAkB;;;kBAKlB,CAAC;AAEd,eAAO,MAAM,aAAa;;;;kBAMb,CAAC"}
@@ -1,4 +1,4 @@
1
- import { z } from 'zod';
1
+ import * as z from 'zod';
2
2
  export const ResourceLinkSchema = z
3
3
  .object({
4
4
  id: z.string(),
@@ -1,4 +1,4 @@
1
- import { z } from 'zod';
1
+ import * as z from 'zod';
2
2
  export declare const CoreLtiClaimsSchema: z.ZodObject<{
3
3
  'https://purl.imsglobal.org/spec/lti/claim/message_type': z.ZodUnion<readonly [z.ZodLiteral<"LtiResourceLinkRequest">, z.ZodLiteral<"LtiDeepLinkingRequest">]>;
4
4
  'https://purl.imsglobal.org/spec/lti/claim/version': z.ZodLiteral<"1.3.0">;
@@ -1 +1 @@
1
- {"version":3,"file":"coreLtiClaims.schema.d.ts","sourceRoot":"","sources":["../../../../src/schemas/lti13/claims/coreLtiClaims.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,mBAAmB;;;;;;iBAS9B,CAAC"}
1
+ {"version":3,"file":"coreLtiClaims.schema.d.ts","sourceRoot":"","sources":["../../../../src/schemas/lti13/claims/coreLtiClaims.schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,eAAO,MAAM,mBAAmB;;;;;;iBAS9B,CAAC"}
@@ -1,4 +1,4 @@
1
- import { z } from 'zod';
1
+ import * as z from 'zod';
2
2
  export const CoreLtiClaimsSchema = z.object({
3
3
  'https://purl.imsglobal.org/spec/lti/claim/message_type': z.union([
4
4
  z.literal('LtiResourceLinkRequest'),
@@ -1,4 +1,4 @@
1
- import { z } from 'zod';
1
+ import * as z from 'zod';
2
2
  export declare const ToolPlatformSchema: z.ZodOptional<z.ZodObject<{
3
3
  guid: z.ZodString;
4
4
  name: z.ZodOptional<z.ZodString>;
@@ -1 +1 @@
1
- {"version":3,"file":"platformClaims.schema.d.ts","sourceRoot":"","sources":["../../../../src/schemas/lti13/claims/platformClaims.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,kBAAkB;;;;;;;;kBAUlB,CAAC;AAEd,eAAO,MAAM,wBAAwB;;;;kBAMxB,CAAC;AAEd,eAAO,MAAM,SAAS;;kBAIT,CAAC"}
1
+ {"version":3,"file":"platformClaims.schema.d.ts","sourceRoot":"","sources":["../../../../src/schemas/lti13/claims/platformClaims.schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,eAAO,MAAM,kBAAkB;;;;;;;;kBAUlB,CAAC;AAEd,eAAO,MAAM,wBAAwB;;;;kBAMxB,CAAC;AAEd,eAAO,MAAM,SAAS;;kBAIT,CAAC"}
@@ -1,4 +1,4 @@
1
- import { z } from 'zod';
1
+ import * as z from 'zod';
2
2
  export const ToolPlatformSchema = z
3
3
  .object({
4
4
  guid: z.string(),
@@ -1,4 +1,4 @@
1
- import { z } from 'zod';
1
+ import * as z from 'zod';
2
2
  export declare const PrivacyClaimsSchema: z.ZodObject<{
3
3
  given_name: z.ZodString;
4
4
  family_name: z.ZodString;
@@ -1 +1 @@
1
- {"version":3,"file":"privacyClaims.schema.d.ts","sourceRoot":"","sources":["../../../../src/schemas/lti13/claims/privacyClaims.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,mBAAmB;;;;;iBAK9B,CAAC"}
1
+ {"version":3,"file":"privacyClaims.schema.d.ts","sourceRoot":"","sources":["../../../../src/schemas/lti13/claims/privacyClaims.schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,eAAO,MAAM,mBAAmB;;;;;iBAK9B,CAAC"}
@@ -1,4 +1,4 @@
1
- import { z } from 'zod';
1
+ import * as z from 'zod';
2
2
  export const PrivacyClaimsSchema = z.object({
3
3
  given_name: z.string(),
4
4
  family_name: z.string(),
@@ -1,4 +1,4 @@
1
- import { z } from 'zod';
1
+ import * as z from 'zod';
2
2
  export declare const AgsEndpointSchema: z.ZodOptional<z.ZodObject<{
3
3
  scope: z.ZodArray<z.ZodString>;
4
4
  lineitem: z.ZodOptional<z.ZodString>;
@@ -1 +1 @@
1
- {"version":3,"file":"serviceClaims.schema.d.ts","sourceRoot":"","sources":["../../../../src/schemas/lti13/claims/serviceClaims.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,iBAAiB;;;;kBAMjB,CAAC;AAEd,eAAO,MAAM,iBAAiB;;;kBAKjB,CAAC;AAEd,eAAO,MAAM,yBAAyB;;;;;;;;kBAUzB,CAAC"}
1
+ {"version":3,"file":"serviceClaims.schema.d.ts","sourceRoot":"","sources":["../../../../src/schemas/lti13/claims/serviceClaims.schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,eAAO,MAAM,iBAAiB;;;;kBAMjB,CAAC;AAEd,eAAO,MAAM,iBAAiB;;;kBAKjB,CAAC;AAEd,eAAO,MAAM,yBAAyB;;;;;;;;kBAUzB,CAAC"}
@@ -1,4 +1,4 @@
1
- import { z } from 'zod';
1
+ import * as z from 'zod';
2
2
  export const AgsEndpointSchema = z
3
3
  .object({
4
4
  scope: z.array(z.string()),
@@ -1,4 +1,4 @@
1
- import { z } from 'zod';
1
+ import * as z from 'zod';
2
2
  export declare const LTI13JwtPayloadSchema: z.ZodObject<{
3
3
  iss: z.ZodString;
4
4
  sub: z.ZodString;
@@ -1 +1 @@
1
- {"version":3,"file":"lti13JwtPayload.schema.d.ts","sourceRoot":"","sources":["../../../src/schemas/lti13/lti13JwtPayload.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAiBxB,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAgB9B,CAAC;AAEL,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
1
+ {"version":3,"file":"lti13JwtPayload.schema.d.ts","sourceRoot":"","sources":["../../../src/schemas/lti13/lti13JwtPayload.schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAiBzB,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAgB9B,CAAC;AAEL,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
@@ -1,4 +1,4 @@
1
- import { z } from 'zod';
1
+ import * as z from 'zod';
2
2
  import { BaseJwtClaimsSchema } from './claims/baseJwtClaims.schema.js';
3
3
  import { ContextSchema, ResourceLinkSchema } from './claims/contextClaims.schema.js';
4
4
  import { CoreLtiClaimsSchema } from './claims/coreLtiClaims.schema.js';
@@ -1,4 +1,4 @@
1
- import { z } from 'zod';
1
+ import * as z from 'zod';
2
2
  export declare const LTI13LaunchSchema: z.ZodObject<{
3
3
  id_token: z.ZodJWT;
4
4
  state: z.ZodString;
@@ -1 +1 @@
1
- {"version":3,"file":"lti13Launch.schema.d.ts","sourceRoot":"","sources":["../../../src/schemas/lti13/lti13Launch.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,iBAAiB;;;iBAG5B,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,wBAAwB;;;iBAGnC,CAAC"}
1
+ {"version":3,"file":"lti13Launch.schema.d.ts","sourceRoot":"","sources":["../../../src/schemas/lti13/lti13Launch.schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,eAAO,MAAM,iBAAiB;;;iBAG5B,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,wBAAwB;;;iBAGnC,CAAC"}
@@ -1,4 +1,4 @@
1
- import { z } from 'zod';
1
+ import * as z from 'zod';
2
2
  export const LTI13LaunchSchema = z.object({
3
3
  id_token: z.jwt(),
4
4
  state: z.string(),
@@ -1,4 +1,4 @@
1
- import { z } from 'zod';
1
+ import * as z from 'zod';
2
2
  export declare const LTI13LoginSchema: z.ZodObject<{
3
3
  iss: z.ZodString;
4
4
  login_hint: z.ZodString;
@@ -1 +1 @@
1
- {"version":3,"file":"lti13Login.schema.d.ts","sourceRoot":"","sources":["../../../src/schemas/lti13/lti13Login.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,gBAAgB;;;;;;;iBAO3B,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;iBAElC,CAAC"}
1
+ {"version":3,"file":"lti13Login.schema.d.ts","sourceRoot":"","sources":["../../../src/schemas/lti13/lti13Login.schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,eAAO,MAAM,gBAAgB;;;;;;;iBAO3B,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;iBAElC,CAAC"}
@@ -1,4 +1,4 @@
1
- import { z } from 'zod';
1
+ import * as z from 'zod';
2
2
  export const LTI13LoginSchema = z.object({
3
3
  iss: z.string().min(1),
4
4
  login_hint: z.string().min(1),
@@ -0,0 +1,65 @@
1
+ import * as z from 'zod';
2
+ /**
3
+ * Schema for individual member in NRPS response
4
+ */
5
+ export declare const NRPSMemberResponseSchema: z.ZodObject<{
6
+ status: z.ZodString;
7
+ name: z.ZodString;
8
+ picture: z.ZodOptional<z.ZodURL>;
9
+ given_name: z.ZodOptional<z.ZodString>;
10
+ family_name: z.ZodOptional<z.ZodString>;
11
+ middle_name: z.ZodOptional<z.ZodString>;
12
+ email: z.ZodOptional<z.ZodString>;
13
+ user_id: z.ZodString;
14
+ lis_person_sourcedid: z.ZodOptional<z.ZodString>;
15
+ roles: z.ZodArray<z.ZodString>;
16
+ }, z.core.$strip>;
17
+ /**
18
+ * Schema for context information in NRPS response
19
+ */
20
+ export declare const NRPSContextResponseSchema: z.ZodObject<{
21
+ id: z.ZodString;
22
+ label: z.ZodString;
23
+ title: z.ZodString;
24
+ }, z.core.$strip>;
25
+ /**
26
+ * Schema for full NRPS context membership response
27
+ */
28
+ export declare const NRPSContextMembershipResponseSchema: z.ZodObject<{
29
+ id: z.ZodURL;
30
+ context: z.ZodObject<{
31
+ id: z.ZodString;
32
+ label: z.ZodString;
33
+ title: z.ZodString;
34
+ }, z.core.$strip>;
35
+ members: z.ZodArray<z.ZodObject<{
36
+ status: z.ZodString;
37
+ name: z.ZodString;
38
+ picture: z.ZodOptional<z.ZodURL>;
39
+ given_name: z.ZodOptional<z.ZodString>;
40
+ family_name: z.ZodOptional<z.ZodString>;
41
+ middle_name: z.ZodOptional<z.ZodString>;
42
+ email: z.ZodOptional<z.ZodString>;
43
+ user_id: z.ZodString;
44
+ lis_person_sourcedid: z.ZodOptional<z.ZodString>;
45
+ roles: z.ZodArray<z.ZodString>;
46
+ }, z.core.$strip>>;
47
+ }, z.core.$strip>;
48
+ /**
49
+ * Clean public API schemas (camelCase for JS/TS consumers)
50
+ */
51
+ export declare const MemberSchema: z.ZodObject<{
52
+ status: z.ZodString;
53
+ name: z.ZodString;
54
+ picture: z.ZodOptional<z.ZodURL>;
55
+ givenName: z.ZodOptional<z.ZodString>;
56
+ familyName: z.ZodOptional<z.ZodString>;
57
+ middleName: z.ZodOptional<z.ZodString>;
58
+ email: z.ZodOptional<z.ZodString>;
59
+ userId: z.ZodString;
60
+ lisPersonSourcedId: z.ZodOptional<z.ZodString>;
61
+ roles: z.ZodArray<z.ZodString>;
62
+ }, z.core.$strip>;
63
+ export type Member = z.infer<typeof MemberSchema>;
64
+ export type Context = z.infer<typeof NRPSContextResponseSchema>;
65
+ //# sourceMappingURL=contextMembership.schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contextMembership.schema.d.ts","sourceRoot":"","sources":["../../../../src/schemas/lti13/nrps/contextMembership.schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB;;GAEG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;iBAWnC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,yBAAyB;;;;iBAIpC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,mCAAmC;;;;;;;;;;;;;;;;;;;iBAI9C,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;iBAWvB,CAAC;AAGH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAClD,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC"}
@@ -0,0 +1,47 @@
1
+ import * as z from 'zod';
2
+ /**
3
+ * Schema for individual member in NRPS response
4
+ */
5
+ export const NRPSMemberResponseSchema = z.object({
6
+ status: z.string(),
7
+ name: z.string(),
8
+ picture: z.url().optional(),
9
+ given_name: z.string().optional(),
10
+ family_name: z.string().optional(),
11
+ middle_name: z.string().optional(),
12
+ email: z.string().optional(), // Platforms don't force email regexp conformance
13
+ user_id: z.string(),
14
+ lis_person_sourcedid: z.string().optional(),
15
+ roles: z.array(z.string()),
16
+ });
17
+ /**
18
+ * Schema for context information in NRPS response
19
+ */
20
+ export const NRPSContextResponseSchema = z.object({
21
+ id: z.string(),
22
+ label: z.string(),
23
+ title: z.string(),
24
+ });
25
+ /**
26
+ * Schema for full NRPS context membership response
27
+ */
28
+ export const NRPSContextMembershipResponseSchema = z.object({
29
+ id: z.url(),
30
+ context: NRPSContextResponseSchema,
31
+ members: z.array(NRPSMemberResponseSchema),
32
+ });
33
+ /**
34
+ * Clean public API schemas (camelCase for JS/TS consumers)
35
+ */
36
+ export const MemberSchema = z.object({
37
+ status: z.string(),
38
+ name: z.string(),
39
+ picture: z.url().optional(),
40
+ givenName: z.string().optional(),
41
+ familyName: z.string().optional(),
42
+ middleName: z.string().optional(),
43
+ email: z.string().optional(), // Platforms don't force email regexp conformance
44
+ userId: z.string(),
45
+ lisPersonSourcedId: z.string().optional(),
46
+ roles: z.array(z.string()),
47
+ });
@@ -1,6 +1,7 @@
1
1
  import type { BaseLogger } from 'pino';
2
2
  import type { LTISession } from '../interfaces/ltiSession.js';
3
3
  import type { LTIStorage } from '../interfaces/ltiStorage.js';
4
+ import type { CreateLineItem, UpdateLineItem } from '../schemas/lti13/ags/lineItem.schema.js';
4
5
  import type { ScoreSubmission } from '../schemas/lti13/ags/scoreSubmission.schema.js';
5
6
  import type { TokenService } from './token.service.js';
6
7
  /**
@@ -34,5 +35,90 @@ export declare class AGSService {
34
35
  * ```
35
36
  */
36
37
  submitScore(session: LTISession, score: ScoreSubmission): Promise<Response>;
38
+ /**
39
+ * Retrieves all scores for a specific line item from the platform using Assignment and Grade Services.
40
+ *
41
+ * @param session - Active LTI session containing AGS line item endpoint configuration
42
+ * @returns Promise resolving to the HTTP response containing scores data for the line item
43
+ * @throws {Error} When AGS line item service is not available for the session or request fails
44
+ *
45
+ * @example
46
+ * ```typescript
47
+ * const response = await agsService.getScores(session);
48
+ * const scores = await response.json();
49
+ * console.log('All scores for this line item:', scores);
50
+ * ```
51
+ */
52
+ getScores(session: LTISession): Promise<Response>;
53
+ /**
54
+ * Retrieves line items (gradebook columns) from the platform using Assignment and Grade Services.
55
+ *
56
+ * @param session - Active LTI session containing AGS line items endpoint configuration
57
+ * @returns Promise resolving to the HTTP response containing line items data
58
+ * @throws {Error} When AGS line items service is not available for the session or request fails
59
+ *
60
+ * @example
61
+ * ```typescript
62
+ * const response = await agsService.listLineItems(session);
63
+ * const lineItems = await response.json();
64
+ * console.log('Available gradebook columns:', lineItems);
65
+ * ```
66
+ */
67
+ listLineItems(session: LTISession): Promise<Response>;
68
+ /**
69
+ * Retrieves a specific line item (gradebook column) from the platform using Assignment and Grade Services.
70
+ *
71
+ * @param session - Active LTI session containing AGS line item endpoint configuration
72
+ * @returns Promise resolving to the HTTP response containing the line item data
73
+ * @throws {Error} When AGS line item service is not available for the session or request fails
74
+ *
75
+ * @example
76
+ * ```typescript
77
+ * const response = await agsService.getLineItem(session);
78
+ * const lineItem = await response.json();
79
+ * console.log('Line item details:', lineItem);
80
+ * ```
81
+ */
82
+ getLineItem(session: LTISession): Promise<Response>;
83
+ /**
84
+ * Creates a new line item (gradebook column) on the platform using Assignment and Grade Services.
85
+ *
86
+ * @param session - Active LTI session containing AGS line items endpoint configuration
87
+ * @param createLineItem - Line item data including label, scoreMaximum, and optional metadata
88
+ * @returns Promise resolving to the HTTP response containing the created line item with generated ID
89
+ * @throws {Error} When AGS line item creation service is not available for the session or creation fails
90
+ *
91
+ * @example
92
+ * ```typescript
93
+ * const response = await agsService.createLineItem(session, {
94
+ * label: 'Quiz 1',
95
+ * scoreMaximum: 100,
96
+ * tag: 'quiz',
97
+ * resourceId: 'quiz-001'
98
+ * });
99
+ * const newLineItem = await response.json();
100
+ * console.log('Created line item:', newLineItem.id);
101
+ * ```
102
+ */
103
+ createLineItem(session: LTISession, createLineItem: CreateLineItem): Promise<Response>;
104
+ /**
105
+ * Updates an existing line item (gradebook column) on the platform using Assignment and Grade Services.
106
+ *
107
+ * @param session - Active LTI session containing AGS line item endpoint configuration
108
+ * @param updateLineItem - Updated line item data including all required fields
109
+ * @returns Promise resolving to the HTTP response containing the updated line item
110
+ * @throws {Error} When AGS line item service is not available for the session or update fails
111
+ */
112
+ updateLineItem(session: LTISession, updateLineItem: UpdateLineItem): Promise<Response>;
113
+ /**
114
+ * Deletes a line item (gradebook column) from the platform using Assignment and Grade Services.
115
+ *
116
+ * @param session - Active LTI session containing AGS line item endpoint configuration
117
+ * @returns Promise resolving to the HTTP response (typically 204 No Content on success)
118
+ * @throws {Error} When AGS line item service is not available for the session or deletion fails
119
+ */
120
+ deleteLineItem(session: LTISession): Promise<Response>;
121
+ private getAGSToken;
122
+ private validateAGSResponse;
37
123
  }
38
124
  //# sourceMappingURL=ags.service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ags.service.d.ts","sourceRoot":"","sources":["../../src/services/ags.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAEvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gDAAgD,CAAC;AAGtF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD;;;;;GAKG;AACH,qBAAa,UAAU;IAEnB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,MAAM;gBAFN,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,UAAU,EACnB,MAAM,EAAE,UAAU;IAG5B;;;;;;;;;;;;;;;;;;OAkBG;IACG,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC;CAkDlF"}
1
+ {"version":3,"file":"ags.service.d.ts","sourceRoot":"","sources":["../../src/services/ags.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAEvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,KAAK,EACV,cAAc,EACd,cAAc,EACf,MAAM,yCAAyC,CAAC;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gDAAgD,CAAC;AAGtF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD;;;;;GAKG;AACH,qBAAa,UAAU;IAEnB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,MAAM;gBAFN,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,UAAU,EACnB,MAAM,EAAE,UAAU;IAG5B;;;;;;;;;;;;;;;;;;OAkBG;IACG,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC;IAiCjF;;;;;;;;;;;;;OAaG;IACG,SAAS,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC;IA4BvD;;;;;;;;;;;;;OAaG;IACG,aAAa,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC;IAsB3D;;;;;;;;;;;;;OAaG;IACG,WAAW,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC;IAsBzD;;;;;;;;;;;;;;;;;;;OAmBG;IACG,cAAc,CAClB,OAAO,EAAE,UAAU,EACnB,cAAc,EAAE,cAAc,GAC7B,OAAO,CAAC,QAAQ,CAAC;IAuBpB;;;;;;;OAOG;IACG,cAAc,CAClB,OAAO,EAAE,UAAU,EACnB,cAAc,EAAE,cAAc,GAC7B,OAAO,CAAC,QAAQ,CAAC;IAuBpB;;;;;;OAMG;IACG,cAAc,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC;YAqB9C,WAAW;YAeX,mBAAmB;CAalC"}