@playcademy/sdk 0.16.1-beta.6 → 0.16.1-beta.8
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/README.md +4 -3
- package/dist/index.js +27 -3
- package/dist/internal.d.ts +25 -1
- package/dist/internal.js +60 -6
- package/dist/server/edge.js +7 -2
- package/dist/server.js +7 -2
- package/dist/types.d.ts +24 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -139,9 +139,10 @@ const completed = await client.timeback.assessments.submit(attempt.attemptId, {
|
|
|
139
139
|
})
|
|
140
140
|
```
|
|
141
141
|
|
|
142
|
-
`start()` resumes
|
|
143
|
-
|
|
144
|
-
|
|
142
|
+
`start()` resumes a compatible unfinished attempt or selects content for a fixed test or standards
|
|
143
|
+
review. Save payloads merge at both the item and response levels; omitted values remain unchanged,
|
|
144
|
+
and `null` clears one response. Keep the returned `responseVersion` and send it with the next
|
|
145
|
+
mutation.
|
|
145
146
|
|
|
146
147
|
For local development, import the current ordered catalog before starting the dev host:
|
|
147
148
|
|
package/dist/index.js
CHANGED
|
@@ -823,7 +823,12 @@ var TIMEBACK_SUBJECTS = [
|
|
|
823
823
|
"Math",
|
|
824
824
|
"None"
|
|
825
825
|
];
|
|
826
|
-
var ASSESSMENT_PURPOSES = ["end_of_course", "diagnostic"];
|
|
826
|
+
var ASSESSMENT_PURPOSES = ["end_of_course", "diagnostic", "review"];
|
|
827
|
+
var TIMEBACK_ASSESSMENT_REVIEW_REQUEST_LIMITS = {
|
|
828
|
+
standards: 20,
|
|
829
|
+
itemsPerStandard: 5,
|
|
830
|
+
standardFieldLength: 128
|
|
831
|
+
};
|
|
827
832
|
var VALID_E_LEVELS = ["E1", "E2", "E3", "E4"];
|
|
828
833
|
var TIMEBACK_GAME_METRIC_DECIMAL_PLACES = {
|
|
829
834
|
xp: 1,
|
|
@@ -2952,7 +2957,7 @@ var VALID_MASTERY_INCLUDE_OPTIONS = ["perCourse"];
|
|
|
2952
2957
|
var ASSESSMENTS_ROUTE = TIMEBACK_ROUTES.ASSESSMENTS;
|
|
2953
2958
|
function validateAssessmentFilters(options) {
|
|
2954
2959
|
if (!isAssessmentPurpose(options?.purpose)) {
|
|
2955
|
-
throw new Error("purpose must be end_of_course or
|
|
2960
|
+
throw new Error("purpose must be end_of_course, diagnostic, or review");
|
|
2956
2961
|
}
|
|
2957
2962
|
if (options.grade !== undefined && !isValidGrade(options.grade)) {
|
|
2958
2963
|
throw new Error(`Invalid grade: ${options.grade}. Valid grades: ${VALID_GRADES.join(", ")}`);
|
|
@@ -2972,6 +2977,25 @@ function createTimebackNamespace(client) {
|
|
|
2972
2977
|
throw new Error("activityId is required");
|
|
2973
2978
|
}
|
|
2974
2979
|
validateAssessmentFilters(input);
|
|
2980
|
+
if (input.purpose === "review") {
|
|
2981
|
+
if (!Array.isArray(input.standards) || input.standards.length === 0) {
|
|
2982
|
+
throw new Error("standards must contain at least one standard for review");
|
|
2983
|
+
}
|
|
2984
|
+
if (input.standards.length > TIMEBACK_ASSESSMENT_REVIEW_REQUEST_LIMITS.standards) {
|
|
2985
|
+
throw new Error(`standards must contain at most ${TIMEBACK_ASSESSMENT_REVIEW_REQUEST_LIMITS.standards} standards`);
|
|
2986
|
+
}
|
|
2987
|
+
for (const standard of input.standards) {
|
|
2988
|
+
if (!standard || typeof standard !== "object" || !standard.framework?.trim() || !standard.identifier?.trim()) {
|
|
2989
|
+
throw new Error("review standards require a framework and identifier");
|
|
2990
|
+
}
|
|
2991
|
+
if (standard.framework.trim().length > TIMEBACK_ASSESSMENT_REVIEW_REQUEST_LIMITS.standardFieldLength || standard.identifier.trim().length > TIMEBACK_ASSESSMENT_REVIEW_REQUEST_LIMITS.standardFieldLength) {
|
|
2992
|
+
throw new Error(`review standard fields must be at most ${TIMEBACK_ASSESSMENT_REVIEW_REQUEST_LIMITS.standardFieldLength} characters`);
|
|
2993
|
+
}
|
|
2994
|
+
}
|
|
2995
|
+
if (input.itemsPerStandard !== undefined && (!Number.isInteger(input.itemsPerStandard) || input.itemsPerStandard <= 0 || input.itemsPerStandard > TIMEBACK_ASSESSMENT_REVIEW_REQUEST_LIMITS.itemsPerStandard)) {
|
|
2996
|
+
throw new Error(`itemsPerStandard must be a positive integer at most ${TIMEBACK_ASSESSMENT_REVIEW_REQUEST_LIMITS.itemsPerStandard}`);
|
|
2997
|
+
}
|
|
2998
|
+
}
|
|
2975
2999
|
return client["requestGameBackend"](`${ASSESSMENTS_ROUTE}/start`, "POST", input);
|
|
2976
3000
|
},
|
|
2977
3001
|
latest: async (options) => {
|
|
@@ -3421,7 +3445,7 @@ async function request({
|
|
|
3421
3445
|
return rawText && rawText.length > 0 ? rawText : undefined;
|
|
3422
3446
|
}
|
|
3423
3447
|
// src/version.ts
|
|
3424
|
-
var SDK_VERSION = "0.16.1-beta.
|
|
3448
|
+
var SDK_VERSION = "0.16.1-beta.8";
|
|
3425
3449
|
|
|
3426
3450
|
// src/clients/base.ts
|
|
3427
3451
|
class PlaycademyBaseClient {
|
package/dist/internal.d.ts
CHANGED
|
@@ -3216,6 +3216,29 @@ interface BucketFile {
|
|
|
3216
3216
|
lastModified: string;
|
|
3217
3217
|
contentType?: string;
|
|
3218
3218
|
}
|
|
3219
|
+
/**
|
|
3220
|
+
* Options for a single-page bucket listing
|
|
3221
|
+
*/
|
|
3222
|
+
interface BucketListPageOptions {
|
|
3223
|
+
/** Restrict results to keys starting with this prefix */
|
|
3224
|
+
prefix?: string;
|
|
3225
|
+
/** Opaque continuation cursor from the previous page's result */
|
|
3226
|
+
cursor?: string;
|
|
3227
|
+
/** Page size (1-1000); the server may return fewer */
|
|
3228
|
+
limit?: number;
|
|
3229
|
+
/** Roll deeper keys into `prefixes` entries, S3 delimiter style */
|
|
3230
|
+
delimiter?: string;
|
|
3231
|
+
}
|
|
3232
|
+
/**
|
|
3233
|
+
* One page of a bucket listing
|
|
3234
|
+
*/
|
|
3235
|
+
interface BucketFilePage {
|
|
3236
|
+
files: BucketFile[];
|
|
3237
|
+
/** Rolled-up common prefixes; present for delimiter listings that found any */
|
|
3238
|
+
prefixes?: string[];
|
|
3239
|
+
/** Present only when more pages remain */
|
|
3240
|
+
cursor?: string;
|
|
3241
|
+
}
|
|
3219
3242
|
/**
|
|
3220
3243
|
* KV key entry
|
|
3221
3244
|
*/
|
|
@@ -3790,6 +3813,7 @@ declare class PlaycademyInternalClient extends PlaycademyBaseClient {
|
|
|
3790
3813
|
};
|
|
3791
3814
|
bucket: {
|
|
3792
3815
|
list: (slug: string, prefix?: string) => Promise<BucketFile[]>;
|
|
3816
|
+
listPage: (slug: string, options?: BucketListPageOptions) => Promise<BucketFilePage>;
|
|
3793
3817
|
get: (slug: string, key: string) => Promise<ArrayBuffer>;
|
|
3794
3818
|
put: (slug: string, key: string, content: Blob | ArrayBuffer | Uint8Array, contentType?: string) => Promise<void>;
|
|
3795
3819
|
initiateUpload: (slug: string, key: string, contentType: string) => Promise<{
|
|
@@ -4051,4 +4075,4 @@ interface BeginInitHandshakeOptions {
|
|
|
4051
4075
|
declare function beginInitHandshake({ iframe, origin, payload, onTimeout, onSendError }: BeginInitHandshakeOptions): () => void;
|
|
4052
4076
|
|
|
4053
4077
|
export { ApiError, HANDSHAKE_MAX_DURATION_MS, HANDSHAKE_RESEND_INTERVAL_MS, INIT_WAIT_TIMEOUT_MS, MessageEvents, PlaycademyInternalClient as PlaycademyClient, PlaycademyError, PlaycademyInternalClient, beginInitHandshake, extractApiErrorInfo, isTrustedIframeMessage, messaging };
|
|
4054
|
-
export type { ApiErrorCode, ApiErrorInfo, AuthCallbackPayload, AuthOptions, AuthProviderType, AuthResult, AuthServerMessage, AuthStateChangePayload, AuthStateUpdate, BetterAuthApiKey, BetterAuthApiKeyResponse, BetterAuthSignInResponse, BucketFile, ChildCheckpointRelay, ClientConfig, ClientEvents, CourseMastery, CourseXp, DemoEndOptions, DemoEndPayload, DevUploadEvent, DevUploadHooks, EmbedActivity, EmbedActivityAbandoned, EmbedActivityCompleted, EmbedActivityFailed, EmbedLaunchOptions, EmbedResumeEnvelope, EmbedResumeStore, EmbedSession, EmbedSessionTiming, EmbedTimebackRecording, ErrorResponseBody, EventListeners, ExternalGame, FetchedGame, Game, GameContextPayload, GameCustomHostname, GameInitUser, GameRow as GameRecord, GameTokenResponse, GetHighestGradeMasteredOptions, GetMasteryOptions, GetXpOptions, HighestGradeMasteredResponse, HostedGame, InitErrorPayload, InitPayload, KVKeyEntry, KVKeyMetadata, KVSeedEntry, KVStatsResponse, KeyEventPayload, LaunchIntent, LoginResponse, MasteryResponse, MessageEventMap, ParentGameContext, ParentGameHandle, PlatformTimebackUser, PlatformTimebackUserContext, PlaycademyMode, PlaycademyServerClientConfig, PlaycademyServerClientState, ScoreSubmission, StartActivityOptions, StartActivityResult, TelemetryPayload, TimebackActivityEndRelay, TimebackActivityStartRelay, TimebackEnrollment, TimebackHeartbeatRelayRequest, TimebackInitContext, TimebackOrganization, TimebackUser, TimebackUserContext, TimebackUserHighestGradeMastered, TimebackUserMastery, TimebackUserRefreshField, TimebackUserRefreshOptions, TimebackUserXp, TokenRefreshPayload, TokenType, UpsertGameMetadataInput, UserRow as User, XpResponse };
|
|
4078
|
+
export type { ApiErrorCode, ApiErrorInfo, AuthCallbackPayload, AuthOptions, AuthProviderType, AuthResult, AuthServerMessage, AuthStateChangePayload, AuthStateUpdate, BetterAuthApiKey, BetterAuthApiKeyResponse, BetterAuthSignInResponse, BucketFile, BucketFilePage, BucketListPageOptions, ChildCheckpointRelay, ClientConfig, ClientEvents, CourseMastery, CourseXp, DemoEndOptions, DemoEndPayload, DevUploadEvent, DevUploadHooks, EmbedActivity, EmbedActivityAbandoned, EmbedActivityCompleted, EmbedActivityFailed, EmbedLaunchOptions, EmbedResumeEnvelope, EmbedResumeStore, EmbedSession, EmbedSessionTiming, EmbedTimebackRecording, ErrorResponseBody, EventListeners, ExternalGame, FetchedGame, Game, GameContextPayload, GameCustomHostname, GameInitUser, GameRow as GameRecord, GameTokenResponse, GetHighestGradeMasteredOptions, GetMasteryOptions, GetXpOptions, HighestGradeMasteredResponse, HostedGame, InitErrorPayload, InitPayload, KVKeyEntry, KVKeyMetadata, KVSeedEntry, KVStatsResponse, KeyEventPayload, LaunchIntent, LoginResponse, MasteryResponse, MessageEventMap, ParentGameContext, ParentGameHandle, PlatformTimebackUser, PlatformTimebackUserContext, PlaycademyMode, PlaycademyServerClientConfig, PlaycademyServerClientState, ScoreSubmission, StartActivityOptions, StartActivityResult, TelemetryPayload, TimebackActivityEndRelay, TimebackActivityStartRelay, TimebackEnrollment, TimebackHeartbeatRelayRequest, TimebackInitContext, TimebackOrganization, TimebackUser, TimebackUserContext, TimebackUserHighestGradeMastered, TimebackUserMastery, TimebackUserRefreshField, TimebackUserRefreshOptions, TimebackUserXp, TokenRefreshPayload, TokenType, UpsertGameMetadataInput, UserRow as User, XpResponse };
|
package/dist/internal.js
CHANGED
|
@@ -823,7 +823,12 @@ var TIMEBACK_SUBJECTS = [
|
|
|
823
823
|
"Math",
|
|
824
824
|
"None"
|
|
825
825
|
];
|
|
826
|
-
var ASSESSMENT_PURPOSES = ["end_of_course", "diagnostic"];
|
|
826
|
+
var ASSESSMENT_PURPOSES = ["end_of_course", "diagnostic", "review"];
|
|
827
|
+
var TIMEBACK_ASSESSMENT_REVIEW_REQUEST_LIMITS = {
|
|
828
|
+
standards: 20,
|
|
829
|
+
itemsPerStandard: 5,
|
|
830
|
+
standardFieldLength: 128
|
|
831
|
+
};
|
|
827
832
|
var VALID_E_LEVELS = ["E1", "E2", "E3", "E4"];
|
|
828
833
|
var TIMEBACK_GAME_METRIC_DECIMAL_PLACES = {
|
|
829
834
|
xp: 1,
|
|
@@ -2952,7 +2957,7 @@ var VALID_MASTERY_INCLUDE_OPTIONS = ["perCourse"];
|
|
|
2952
2957
|
var ASSESSMENTS_ROUTE = TIMEBACK_ROUTES.ASSESSMENTS;
|
|
2953
2958
|
function validateAssessmentFilters(options) {
|
|
2954
2959
|
if (!isAssessmentPurpose(options?.purpose)) {
|
|
2955
|
-
throw new Error("purpose must be end_of_course or
|
|
2960
|
+
throw new Error("purpose must be end_of_course, diagnostic, or review");
|
|
2956
2961
|
}
|
|
2957
2962
|
if (options.grade !== undefined && !isValidGrade(options.grade)) {
|
|
2958
2963
|
throw new Error(`Invalid grade: ${options.grade}. Valid grades: ${VALID_GRADES.join(", ")}`);
|
|
@@ -2972,6 +2977,25 @@ function createTimebackNamespace(client) {
|
|
|
2972
2977
|
throw new Error("activityId is required");
|
|
2973
2978
|
}
|
|
2974
2979
|
validateAssessmentFilters(input);
|
|
2980
|
+
if (input.purpose === "review") {
|
|
2981
|
+
if (!Array.isArray(input.standards) || input.standards.length === 0) {
|
|
2982
|
+
throw new Error("standards must contain at least one standard for review");
|
|
2983
|
+
}
|
|
2984
|
+
if (input.standards.length > TIMEBACK_ASSESSMENT_REVIEW_REQUEST_LIMITS.standards) {
|
|
2985
|
+
throw new Error(`standards must contain at most ${TIMEBACK_ASSESSMENT_REVIEW_REQUEST_LIMITS.standards} standards`);
|
|
2986
|
+
}
|
|
2987
|
+
for (const standard of input.standards) {
|
|
2988
|
+
if (!standard || typeof standard !== "object" || !standard.framework?.trim() || !standard.identifier?.trim()) {
|
|
2989
|
+
throw new Error("review standards require a framework and identifier");
|
|
2990
|
+
}
|
|
2991
|
+
if (standard.framework.trim().length > TIMEBACK_ASSESSMENT_REVIEW_REQUEST_LIMITS.standardFieldLength || standard.identifier.trim().length > TIMEBACK_ASSESSMENT_REVIEW_REQUEST_LIMITS.standardFieldLength) {
|
|
2992
|
+
throw new Error(`review standard fields must be at most ${TIMEBACK_ASSESSMENT_REVIEW_REQUEST_LIMITS.standardFieldLength} characters`);
|
|
2993
|
+
}
|
|
2994
|
+
}
|
|
2995
|
+
if (input.itemsPerStandard !== undefined && (!Number.isInteger(input.itemsPerStandard) || input.itemsPerStandard <= 0 || input.itemsPerStandard > TIMEBACK_ASSESSMENT_REVIEW_REQUEST_LIMITS.itemsPerStandard)) {
|
|
2996
|
+
throw new Error(`itemsPerStandard must be a positive integer at most ${TIMEBACK_ASSESSMENT_REVIEW_REQUEST_LIMITS.itemsPerStandard}`);
|
|
2997
|
+
}
|
|
2998
|
+
}
|
|
2975
2999
|
return client["requestGameBackend"](`${ASSESSMENTS_ROUTE}/start`, "POST", input);
|
|
2976
3000
|
},
|
|
2977
3001
|
latest: async (options) => {
|
|
@@ -3461,8 +3485,26 @@ class DeployPipeline {
|
|
|
3461
3485
|
}
|
|
3462
3486
|
|
|
3463
3487
|
// src/namespaces/platform/dev.ts
|
|
3488
|
+
var BUCKET_LIST_PAGE_SIZE = 1000;
|
|
3464
3489
|
function createDevNamespace(client) {
|
|
3465
3490
|
const deploy = new DeployPipeline(client);
|
|
3491
|
+
async function fetchBucketPage(slug, options = {}) {
|
|
3492
|
+
const params = new URLSearchParams;
|
|
3493
|
+
if (options.prefix) {
|
|
3494
|
+
params.set("prefix", options.prefix);
|
|
3495
|
+
}
|
|
3496
|
+
if (options.cursor) {
|
|
3497
|
+
params.set("cursor", options.cursor);
|
|
3498
|
+
}
|
|
3499
|
+
if (options.limit !== undefined) {
|
|
3500
|
+
params.set("limit", String(options.limit));
|
|
3501
|
+
}
|
|
3502
|
+
if (options.delimiter) {
|
|
3503
|
+
params.set("delimiter", options.delimiter);
|
|
3504
|
+
}
|
|
3505
|
+
const query = params.size > 0 ? `?${params.toString()}` : "";
|
|
3506
|
+
return client["request"](`/games/${slug}/bucket${query}`, "GET");
|
|
3507
|
+
}
|
|
3466
3508
|
return {
|
|
3467
3509
|
status: {
|
|
3468
3510
|
apply: () => client["request"]("/dev/apply", "POST"),
|
|
@@ -3594,10 +3636,22 @@ function createDevNamespace(client) {
|
|
|
3594
3636
|
},
|
|
3595
3637
|
bucket: {
|
|
3596
3638
|
list: async (slug, prefix) => {
|
|
3597
|
-
const
|
|
3598
|
-
|
|
3599
|
-
|
|
3639
|
+
const files = [];
|
|
3640
|
+
let cursor;
|
|
3641
|
+
do {
|
|
3642
|
+
const page = await fetchBucketPage(slug, {
|
|
3643
|
+
prefix,
|
|
3644
|
+
cursor,
|
|
3645
|
+
limit: BUCKET_LIST_PAGE_SIZE
|
|
3646
|
+
});
|
|
3647
|
+
for (const file of page.files) {
|
|
3648
|
+
files.push(file);
|
|
3649
|
+
}
|
|
3650
|
+
cursor = page.cursor;
|
|
3651
|
+
} while (cursor);
|
|
3652
|
+
return files;
|
|
3600
3653
|
},
|
|
3654
|
+
listPage: fetchBucketPage,
|
|
3601
3655
|
get: async (slug, key) => {
|
|
3602
3656
|
const res = await client["request"](`/games/${slug}/bucket/${encodeURIComponent(key)}`, "GET", { raw: true });
|
|
3603
3657
|
if (!res.ok) {
|
|
@@ -4266,7 +4320,7 @@ async function request({
|
|
|
4266
4320
|
return rawText && rawText.length > 0 ? rawText : undefined;
|
|
4267
4321
|
}
|
|
4268
4322
|
// src/version.ts
|
|
4269
|
-
var SDK_VERSION = "0.16.1-beta.
|
|
4323
|
+
var SDK_VERSION = "0.16.1-beta.8";
|
|
4270
4324
|
|
|
4271
4325
|
// src/clients/base.ts
|
|
4272
4326
|
class PlaycademyBaseClient {
|
package/dist/server/edge.js
CHANGED
|
@@ -41,7 +41,12 @@ var TIMEBACK_SUBJECTS = [
|
|
|
41
41
|
"Math",
|
|
42
42
|
"None"
|
|
43
43
|
];
|
|
44
|
-
var ASSESSMENT_PURPOSES = ["end_of_course", "diagnostic"];
|
|
44
|
+
var ASSESSMENT_PURPOSES = ["end_of_course", "diagnostic", "review"];
|
|
45
|
+
var TIMEBACK_ASSESSMENT_REVIEW_REQUEST_LIMITS = {
|
|
46
|
+
standards: 20,
|
|
47
|
+
itemsPerStandard: 5,
|
|
48
|
+
standardFieldLength: 128
|
|
49
|
+
};
|
|
45
50
|
var VALID_E_LEVELS = ["E1", "E2", "E3", "E4"];
|
|
46
51
|
var TIMEBACK_GAME_METRIC_DECIMAL_PLACES = {
|
|
47
52
|
xp: 1,
|
|
@@ -303,7 +308,7 @@ function extractApiErrorInfo(error) {
|
|
|
303
308
|
}
|
|
304
309
|
|
|
305
310
|
// src/version.ts
|
|
306
|
-
var SDK_VERSION = "0.16.1-beta.
|
|
311
|
+
var SDK_VERSION = "0.16.1-beta.8";
|
|
307
312
|
|
|
308
313
|
// src/server/request.ts
|
|
309
314
|
async function makeApiRequest(opts) {
|
package/dist/server.js
CHANGED
|
@@ -230,7 +230,12 @@ var TIMEBACK_SUBJECTS = [
|
|
|
230
230
|
"Math",
|
|
231
231
|
"None"
|
|
232
232
|
];
|
|
233
|
-
var ASSESSMENT_PURPOSES = ["end_of_course", "diagnostic"];
|
|
233
|
+
var ASSESSMENT_PURPOSES = ["end_of_course", "diagnostic", "review"];
|
|
234
|
+
var TIMEBACK_ASSESSMENT_REVIEW_REQUEST_LIMITS = {
|
|
235
|
+
standards: 20,
|
|
236
|
+
itemsPerStandard: 5,
|
|
237
|
+
standardFieldLength: 128
|
|
238
|
+
};
|
|
234
239
|
var VALID_E_LEVELS = ["E1", "E2", "E3", "E4"];
|
|
235
240
|
var TIMEBACK_GAME_METRIC_DECIMAL_PLACES = {
|
|
236
241
|
xp: 1,
|
|
@@ -492,7 +497,7 @@ function extractApiErrorInfo(error) {
|
|
|
492
497
|
}
|
|
493
498
|
|
|
494
499
|
// src/version.ts
|
|
495
|
-
var SDK_VERSION = "0.16.1-beta.
|
|
500
|
+
var SDK_VERSION = "0.16.1-beta.8";
|
|
496
501
|
|
|
497
502
|
// src/server/request.ts
|
|
498
503
|
async function makeApiRequest(opts) {
|
package/dist/types.d.ts
CHANGED
|
@@ -2578,6 +2578,29 @@ interface BucketFile {
|
|
|
2578
2578
|
lastModified: string;
|
|
2579
2579
|
contentType?: string;
|
|
2580
2580
|
}
|
|
2581
|
+
/**
|
|
2582
|
+
* Options for a single-page bucket listing
|
|
2583
|
+
*/
|
|
2584
|
+
interface BucketListPageOptions {
|
|
2585
|
+
/** Restrict results to keys starting with this prefix */
|
|
2586
|
+
prefix?: string;
|
|
2587
|
+
/** Opaque continuation cursor from the previous page's result */
|
|
2588
|
+
cursor?: string;
|
|
2589
|
+
/** Page size (1-1000); the server may return fewer */
|
|
2590
|
+
limit?: number;
|
|
2591
|
+
/** Roll deeper keys into `prefixes` entries, S3 delimiter style */
|
|
2592
|
+
delimiter?: string;
|
|
2593
|
+
}
|
|
2594
|
+
/**
|
|
2595
|
+
* One page of a bucket listing
|
|
2596
|
+
*/
|
|
2597
|
+
interface BucketFilePage {
|
|
2598
|
+
files: BucketFile[];
|
|
2599
|
+
/** Rolled-up common prefixes; present for delimiter listings that found any */
|
|
2600
|
+
prefixes?: string[];
|
|
2601
|
+
/** Present only when more pages remain */
|
|
2602
|
+
cursor?: string;
|
|
2603
|
+
}
|
|
2581
2604
|
/**
|
|
2582
2605
|
* KV key entry
|
|
2583
2606
|
*/
|
|
@@ -2671,4 +2694,4 @@ interface PlatformTimebackUser extends PlatformTimebackUserContext {
|
|
|
2671
2694
|
}
|
|
2672
2695
|
|
|
2673
2696
|
export { PlaycademyClient };
|
|
2674
|
-
export type { AuthCallbackPayload, AuthOptions, AuthProviderType, AuthResult, AuthServerMessage, AuthStateChangePayload, AuthStateUpdate, BetterAuthApiKey, BetterAuthApiKeyResponse, BetterAuthSignInResponse, BucketFile, ChildCheckpointRelay, ClientConfig, ClientEvents, CourseMastery, CourseXp, DemoEndOptions, DemoEndPayload, DevUploadEvent, DevUploadHooks, EmbedActivity, EmbedActivityAbandoned, EmbedActivityCompleted, EmbedActivityFailed, EmbedLaunchOptions, EmbedResumeEnvelope, EmbedResumeStore, EmbedSession, EmbedSessionTiming, EmbedTimebackRecording, EventListeners, ExternalGame, FetchedGame, Game, GameContextPayload, GameCustomHostname, GameInitUser, GameRow as GameRecord, GameTokenResponse, GetHighestGradeMasteredOptions, GetMasteryOptions, GetXpOptions, HighestGradeMasteredResponse, HostedGame, InitErrorPayload, InitPayload, KVKeyEntry, KVKeyMetadata, KVSeedEntry, KVStatsResponse, KeyEventPayload, LaunchIntent, LoginResponse, MasteryResponse, ParentGameContext, ParentGameHandle, PlatformTimebackUser, PlatformTimebackUserContext, PlaycademyMode, PlaycademyServerClientConfig, PlaycademyServerClientState, ScoreSubmission, StartActivityOptions, StartActivityResult, TelemetryPayload, TimebackActivityEndRelay, TimebackActivityStartRelay, TimebackEnrollment, TimebackHeartbeatRelayRequest, TimebackInitContext, TimebackOrganization, TimebackUser, TimebackUserContext, TimebackUserHighestGradeMastered, TimebackUserMastery, TimebackUserRefreshField, TimebackUserRefreshOptions, TimebackUserXp, TokenRefreshPayload, TokenType, UpsertGameMetadataInput, UserRow as User, XpResponse };
|
|
2697
|
+
export type { AuthCallbackPayload, AuthOptions, AuthProviderType, AuthResult, AuthServerMessage, AuthStateChangePayload, AuthStateUpdate, BetterAuthApiKey, BetterAuthApiKeyResponse, BetterAuthSignInResponse, BucketFile, BucketFilePage, BucketListPageOptions, ChildCheckpointRelay, ClientConfig, ClientEvents, CourseMastery, CourseXp, DemoEndOptions, DemoEndPayload, DevUploadEvent, DevUploadHooks, EmbedActivity, EmbedActivityAbandoned, EmbedActivityCompleted, EmbedActivityFailed, EmbedLaunchOptions, EmbedResumeEnvelope, EmbedResumeStore, EmbedSession, EmbedSessionTiming, EmbedTimebackRecording, EventListeners, ExternalGame, FetchedGame, Game, GameContextPayload, GameCustomHostname, GameInitUser, GameRow as GameRecord, GameTokenResponse, GetHighestGradeMasteredOptions, GetMasteryOptions, GetXpOptions, HighestGradeMasteredResponse, HostedGame, InitErrorPayload, InitPayload, KVKeyEntry, KVKeyMetadata, KVSeedEntry, KVStatsResponse, KeyEventPayload, LaunchIntent, LoginResponse, MasteryResponse, ParentGameContext, ParentGameHandle, PlatformTimebackUser, PlatformTimebackUserContext, PlaycademyMode, PlaycademyServerClientConfig, PlaycademyServerClientState, ScoreSubmission, StartActivityOptions, StartActivityResult, TelemetryPayload, TimebackActivityEndRelay, TimebackActivityStartRelay, TimebackEnrollment, TimebackHeartbeatRelayRequest, TimebackInitContext, TimebackOrganization, TimebackUser, TimebackUserContext, TimebackUserHighestGradeMastered, TimebackUserMastery, TimebackUserRefreshField, TimebackUserRefreshOptions, TimebackUserXp, TokenRefreshPayload, TokenType, UpsertGameMetadataInput, UserRow as User, XpResponse };
|