timeback 0.1.4 → 0.1.5
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 +40 -0
- package/dist/cli.js +27837 -7374
- package/dist/types/src/config.d.ts +84 -4
- package/package.json +7 -5
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
* Timeback Config Types
|
|
3
3
|
*
|
|
4
4
|
* Types for timeback.config.ts files.
|
|
5
|
+
*
|
|
6
|
+
* Note: Runtime validation is enforced by `@timeback/types/zod` (see
|
|
7
|
+
* `packages/types/src/zod/config.ts`). These TS types are a convenience layer
|
|
8
|
+
* and should not be treated as a replacement for Zod validation.
|
|
5
9
|
*/
|
|
6
10
|
import type { TimebackGrade, TimebackSubject } from './primitives';
|
|
7
11
|
/**
|
|
@@ -79,20 +83,88 @@ export interface CourseDefaults {
|
|
|
79
83
|
/** Course metadata */
|
|
80
84
|
metadata?: CourseMetadata;
|
|
81
85
|
}
|
|
86
|
+
/**
|
|
87
|
+
* Environment-specific course overrides.
|
|
88
|
+
*
|
|
89
|
+
* Non-identity fields that can differ per environment.
|
|
90
|
+
* Excludes `subject`, `grade`, `courseCode` (identity) and `ids` (already env-scoped).
|
|
91
|
+
*/
|
|
92
|
+
export interface CourseEnvOverrides {
|
|
93
|
+
/** Course level override for this environment */
|
|
94
|
+
level?: string;
|
|
95
|
+
/** Caliper sensor URL override for this environment */
|
|
96
|
+
sensor?: string;
|
|
97
|
+
/** Launch URL override for this environment (used in dashboard resource links) */
|
|
98
|
+
launchUrl?: string;
|
|
99
|
+
/** Metadata override for this environment (merged with base metadata) */
|
|
100
|
+
metadata?: CourseMetadata;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Per-environment course overrides.
|
|
104
|
+
*
|
|
105
|
+
* Allows staging and production to have different non-identity properties.
|
|
106
|
+
*/
|
|
107
|
+
export interface CourseOverrides {
|
|
108
|
+
/** Overrides applied when syncing to staging */
|
|
109
|
+
staging?: CourseEnvOverrides;
|
|
110
|
+
/** Overrides applied when syncing to production */
|
|
111
|
+
production?: CourseEnvOverrides;
|
|
112
|
+
}
|
|
82
113
|
/**
|
|
83
114
|
* Configuration for a single course in a Timeback app.
|
|
115
|
+
*
|
|
116
|
+
* Course identity is determined by one of:
|
|
117
|
+
* - **Grade-based**: `(subject, grade)` — traditional K-12 courses
|
|
118
|
+
* - **Grade-less**: `courseCode` — apps without grade levels (e.g., CS platforms)
|
|
119
|
+
*
|
|
120
|
+
* At least one identity must be present:
|
|
121
|
+
* - If `grade` is provided, the course is identified by `(subject, grade)`.
|
|
122
|
+
* - If `grade` is omitted, `courseCode` is required as the identifier.
|
|
123
|
+
*
|
|
124
|
+
* Sensor/LaunchUrl resolution:
|
|
125
|
+
* - Each course must have an effective sensor (either `course.sensor` or top-level `sensor`).
|
|
126
|
+
* - Each course must have an effective launchUrl (either `course.launchUrl` or top-level `launchUrl`).
|
|
127
|
+
*
|
|
128
|
+
* Environment overrides:
|
|
129
|
+
* - Use `overrides.staging` or `overrides.production` to vary non-identity fields per env.
|
|
84
130
|
*/
|
|
85
131
|
export interface CourseConfig extends CourseDefaults {
|
|
86
132
|
/** Subject area (e.g., 'Math', 'Reading') */
|
|
87
133
|
subject: TimebackSubject;
|
|
88
|
-
/**
|
|
89
|
-
|
|
134
|
+
/**
|
|
135
|
+
* Grade level (-1 = Pre-K, 0 = K, 1-12 = grades, 13 = AP).
|
|
136
|
+
* Optional for grade-less apps; if omitted, `courseCode` is required.
|
|
137
|
+
*/
|
|
138
|
+
grade?: TimebackGrade;
|
|
90
139
|
/** Timeback course IDs per environment (populated after sync) */
|
|
91
140
|
ids?: CourseIds | null;
|
|
141
|
+
/**
|
|
142
|
+
* Caliper sensor URL for this course.
|
|
143
|
+
* Overrides the top-level `sensor` if set.
|
|
144
|
+
*/
|
|
145
|
+
sensor?: string;
|
|
146
|
+
/**
|
|
147
|
+
* Launch URL for this course (used in dashboard resource links).
|
|
148
|
+
* Overrides the top-level `launchUrl` if set.
|
|
149
|
+
*/
|
|
150
|
+
launchUrl?: string;
|
|
151
|
+
/**
|
|
152
|
+
* Environment-specific overrides for non-identity fields.
|
|
153
|
+
* Merged with base course config when syncing to a specific environment.
|
|
154
|
+
*/
|
|
155
|
+
overrides?: CourseOverrides;
|
|
92
156
|
}
|
|
93
157
|
/**
|
|
94
158
|
* Root configuration for a Timeback app.
|
|
95
159
|
* Define this in your timeback.config.ts file.
|
|
160
|
+
*
|
|
161
|
+
* Sensor resolution: every course must have an effective sensor.
|
|
162
|
+
* - Set `sensor` at the top level as a default for all courses.
|
|
163
|
+
* - Override per course with `courses[].sensor`.
|
|
164
|
+
*
|
|
165
|
+
* LaunchUrl resolution: every course must have an effective launchUrl.
|
|
166
|
+
* - Set `launchUrl` at the top level as a default for all courses.
|
|
167
|
+
* - Override per course with `courses[].launchUrl`.
|
|
96
168
|
*/
|
|
97
169
|
export interface TimebackConfig {
|
|
98
170
|
/** Display name for your app */
|
|
@@ -101,6 +173,14 @@ export interface TimebackConfig {
|
|
|
101
173
|
defaults?: CourseDefaults;
|
|
102
174
|
/** Courses available in this app */
|
|
103
175
|
courses: CourseConfig[];
|
|
104
|
-
/**
|
|
105
|
-
|
|
176
|
+
/**
|
|
177
|
+
* Default Caliper sensor URL for activity events.
|
|
178
|
+
* Can be overridden per course with `courses[].sensor`.
|
|
179
|
+
*/
|
|
180
|
+
sensor?: string;
|
|
181
|
+
/**
|
|
182
|
+
* Default launch URL for dashboard resource links.
|
|
183
|
+
* Can be overridden per course with `courses[].launchUrl`.
|
|
184
|
+
*/
|
|
185
|
+
launchUrl?: string;
|
|
106
186
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "timeback",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.5",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
"./config": {
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
],
|
|
20
20
|
"scripts": {
|
|
21
21
|
"build": "bun build.ts",
|
|
22
|
+
"build:binary": "bun build-binary.ts --checksums",
|
|
22
23
|
"dev": "DEBUG=1 bun src/cli.ts",
|
|
23
24
|
"dev:studio": "DEBUG=studio:* bun src/cli.ts studio",
|
|
24
25
|
"start": "bun dist/cli.js",
|
|
@@ -32,18 +33,19 @@
|
|
|
32
33
|
"zod": "^4.2.1"
|
|
33
34
|
},
|
|
34
35
|
"devDependencies": {
|
|
35
|
-
"@timeback/caliper": "0.1.
|
|
36
|
-
"@timeback/core": "0.1.
|
|
36
|
+
"@timeback/caliper": "0.1.2",
|
|
37
|
+
"@timeback/core": "0.1.3",
|
|
37
38
|
"@timeback/edubridge": "0.1.1",
|
|
38
39
|
"@timeback/internal-cli-infra": "0.0.0",
|
|
39
40
|
"@timeback/internal-client-infra": "0.0.0",
|
|
40
41
|
"@timeback/internal-utils": "0.0.0",
|
|
41
|
-
"@timeback/oneroster": "0.1.
|
|
42
|
+
"@timeback/oneroster": "0.1.3",
|
|
43
|
+
"@timeback/powerpath": "0.1.1",
|
|
42
44
|
"@timeback/qti": "0.1.1",
|
|
43
45
|
"@timeback/types": "0.0.0",
|
|
44
46
|
"@types/bun": "latest",
|
|
45
47
|
"bun-plugin-dts": "^0.3.0",
|
|
46
|
-
"timeback-studio": "0.1.
|
|
48
|
+
"timeback-studio": "0.1.3"
|
|
47
49
|
},
|
|
48
50
|
"peerDependencies": {
|
|
49
51
|
"typescript": "^5"
|