placementt-core 1.300.1209 → 1.300.1211
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/lib/callables/activities.d.ts +73 -0
- package/lib/callables/activities.js +14 -12
- package/lib/callables/activities.js.map +1 -1
- package/lib/callables/registry.d.ts +102 -6
- package/lib/callables/userManagement.d.ts +53 -4
- package/lib/callables/userManagement.js +4 -1
- package/lib/callables/userManagement.js.map +1 -1
- package/lib/callables/userManagement.test.d.ts +1 -0
- package/lib/callables/userManagement.test.js +19 -0
- package/lib/callables/userManagement.test.js.map +1 -0
- package/lib/typeDefinitions.d.ts +3 -0
- package/lib/typeDefinitions.js.map +1 -1
- package/package.json +1 -1
- package/src/callables/activities.ts +13 -10
- package/src/callables/userManagement.test.ts +20 -0
- package/src/callables/userManagement.ts +4 -1
- package/src/typeDefinitions.ts +3 -0
|
@@ -1,4 +1,77 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
+
/**
|
|
3
|
+
* Contracts for staff adding student activities
|
|
4
|
+
* (`Placementt-Backend/functions/src/activities.ts`).
|
|
5
|
+
*/
|
|
6
|
+
/** A table's "select all", as DataViewerSelectionBackend: its filters and any search. */
|
|
7
|
+
export declare const selectAllSelection: z.ZodObject<{
|
|
8
|
+
allSelected: z.ZodBoolean;
|
|
9
|
+
search: z.ZodOptional<z.ZodString>;
|
|
10
|
+
filters: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
11
|
+
k: z.ZodString;
|
|
12
|
+
e: z.ZodOptional<z.ZodString>;
|
|
13
|
+
v: z.ZodUnknown;
|
|
14
|
+
}, "strip", z.ZodTypeAny, {
|
|
15
|
+
k: string;
|
|
16
|
+
v?: unknown;
|
|
17
|
+
e?: string | undefined;
|
|
18
|
+
}, {
|
|
19
|
+
k: string;
|
|
20
|
+
v?: unknown;
|
|
21
|
+
e?: string | undefined;
|
|
22
|
+
}>, "many">>;
|
|
23
|
+
}, "strip", z.ZodTypeAny, {
|
|
24
|
+
allSelected: boolean;
|
|
25
|
+
search?: string | undefined;
|
|
26
|
+
filters?: {
|
|
27
|
+
k: string;
|
|
28
|
+
v?: unknown;
|
|
29
|
+
e?: string | undefined;
|
|
30
|
+
}[] | undefined;
|
|
31
|
+
}, {
|
|
32
|
+
allSelected: boolean;
|
|
33
|
+
search?: string | undefined;
|
|
34
|
+
filters?: {
|
|
35
|
+
k: string;
|
|
36
|
+
v?: unknown;
|
|
37
|
+
e?: string | undefined;
|
|
38
|
+
}[] | undefined;
|
|
39
|
+
}>;
|
|
40
|
+
/** The students picked in the student table, as DataViewerSelectionBackend:
|
|
41
|
+
* a filter (with an optional search), or a list of uids. */
|
|
42
|
+
export declare const studentSelection: z.ZodUnion<[z.ZodObject<{
|
|
43
|
+
allSelected: z.ZodBoolean;
|
|
44
|
+
search: z.ZodOptional<z.ZodString>;
|
|
45
|
+
filters: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
46
|
+
k: z.ZodString;
|
|
47
|
+
e: z.ZodOptional<z.ZodString>;
|
|
48
|
+
v: z.ZodUnknown;
|
|
49
|
+
}, "strip", z.ZodTypeAny, {
|
|
50
|
+
k: string;
|
|
51
|
+
v?: unknown;
|
|
52
|
+
e?: string | undefined;
|
|
53
|
+
}, {
|
|
54
|
+
k: string;
|
|
55
|
+
v?: unknown;
|
|
56
|
+
e?: string | undefined;
|
|
57
|
+
}>, "many">>;
|
|
58
|
+
}, "strip", z.ZodTypeAny, {
|
|
59
|
+
allSelected: boolean;
|
|
60
|
+
search?: string | undefined;
|
|
61
|
+
filters?: {
|
|
62
|
+
k: string;
|
|
63
|
+
v?: unknown;
|
|
64
|
+
e?: string | undefined;
|
|
65
|
+
}[] | undefined;
|
|
66
|
+
}, {
|
|
67
|
+
allSelected: boolean;
|
|
68
|
+
search?: string | undefined;
|
|
69
|
+
filters?: {
|
|
70
|
+
k: string;
|
|
71
|
+
v?: unknown;
|
|
72
|
+
e?: string | undefined;
|
|
73
|
+
}[] | undefined;
|
|
74
|
+
}>, z.ZodArray<z.ZodString, "many">]>;
|
|
2
75
|
/** What staff fill in on the activity builder. Everything the server owns (who
|
|
3
76
|
* it belongs to, who made it, how it is verified, when) is set there, never sent. */
|
|
4
77
|
declare const staffActivity: z.ZodObject<{
|
|
@@ -1,23 +1,25 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.activitiesCallables = void 0;
|
|
3
|
+
exports.activitiesCallables = exports.studentSelection = exports.selectAllSelection = void 0;
|
|
4
4
|
const zod_1 = require("zod");
|
|
5
5
|
/**
|
|
6
6
|
* Contracts for staff adding student activities
|
|
7
7
|
* (`Placementt-Backend/functions/src/activities.ts`).
|
|
8
8
|
*/
|
|
9
|
+
/** A table's "select all", as DataViewerSelectionBackend: its filters and any search. */
|
|
10
|
+
exports.selectAllSelection = zod_1.z.object({
|
|
11
|
+
allSelected: zod_1.z.boolean(),
|
|
12
|
+
search: zod_1.z.string().optional(),
|
|
13
|
+
filters: zod_1.z.array(zod_1.z.object({
|
|
14
|
+
k: zod_1.z.string(),
|
|
15
|
+
e: zod_1.z.string().optional(),
|
|
16
|
+
v: zod_1.z.unknown(),
|
|
17
|
+
})).optional(),
|
|
18
|
+
});
|
|
9
19
|
/** The students picked in the student table, as DataViewerSelectionBackend:
|
|
10
20
|
* a filter (with an optional search), or a list of uids. */
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
allSelected: zod_1.z.boolean(),
|
|
14
|
-
search: zod_1.z.string().optional(),
|
|
15
|
-
filters: zod_1.z.array(zod_1.z.object({
|
|
16
|
-
k: zod_1.z.string(),
|
|
17
|
-
e: zod_1.z.string().optional(),
|
|
18
|
-
v: zod_1.z.unknown(),
|
|
19
|
-
})).optional(),
|
|
20
|
-
}),
|
|
21
|
+
exports.studentSelection = zod_1.z.union([
|
|
22
|
+
exports.selectAllSelection,
|
|
21
23
|
zod_1.z.array(zod_1.z.string().min(1).max(128)).max(5000),
|
|
22
24
|
]);
|
|
23
25
|
/** What staff fill in on the activity builder. Everything the server owns (who
|
|
@@ -50,7 +52,7 @@ exports.activitiesCallables = {
|
|
|
50
52
|
request: zod_1.z.object({
|
|
51
53
|
/** The school the students belong to. */
|
|
52
54
|
oId: zod_1.z.string().min(1).max(128),
|
|
53
|
-
students: studentSelection,
|
|
55
|
+
students: exports.studentSelection,
|
|
54
56
|
activity: staffActivity,
|
|
55
57
|
/** Set by `useExecuteCallableJob`. */
|
|
56
58
|
jobId: zod_1.z.string().optional(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activities.js","sourceRoot":"","sources":["../../src/callables/activities.ts"],"names":[],"mappings":";;;AAAA,6BAAsB;AAGtB;;;GAGG;AAEH;
|
|
1
|
+
{"version":3,"file":"activities.js","sourceRoot":"","sources":["../../src/callables/activities.ts"],"names":[],"mappings":"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"}
|
|
@@ -630,7 +630,39 @@ export declare const allCallables: {
|
|
|
630
630
|
};
|
|
631
631
|
"userManagement-checkStudentActivation": {
|
|
632
632
|
request: z.ZodObject<{
|
|
633
|
-
users: z.ZodUnion<[z.
|
|
633
|
+
users: z.ZodUnion<[z.ZodObject<{
|
|
634
|
+
allSelected: z.ZodBoolean;
|
|
635
|
+
search: z.ZodOptional<z.ZodString>;
|
|
636
|
+
filters: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
637
|
+
k: z.ZodString;
|
|
638
|
+
e: z.ZodOptional<z.ZodString>;
|
|
639
|
+
v: z.ZodUnknown;
|
|
640
|
+
}, "strip", z.ZodTypeAny, {
|
|
641
|
+
k: string;
|
|
642
|
+
v?: unknown;
|
|
643
|
+
e?: string | undefined;
|
|
644
|
+
}, {
|
|
645
|
+
k: string;
|
|
646
|
+
v?: unknown;
|
|
647
|
+
e?: string | undefined;
|
|
648
|
+
}>, "many">>;
|
|
649
|
+
}, "strip", z.ZodTypeAny, {
|
|
650
|
+
allSelected: boolean;
|
|
651
|
+
search?: string | undefined;
|
|
652
|
+
filters?: {
|
|
653
|
+
k: string;
|
|
654
|
+
v?: unknown;
|
|
655
|
+
e?: string | undefined;
|
|
656
|
+
}[] | undefined;
|
|
657
|
+
}, {
|
|
658
|
+
allSelected: boolean;
|
|
659
|
+
search?: string | undefined;
|
|
660
|
+
filters?: {
|
|
661
|
+
k: string;
|
|
662
|
+
v?: unknown;
|
|
663
|
+
e?: string | undefined;
|
|
664
|
+
}[] | undefined;
|
|
665
|
+
}>, z.ZodArray<z.ZodObject<{
|
|
634
666
|
path: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
635
667
|
where: z.ZodOptional<z.ZodArray<z.ZodArray<z.ZodUnknown, "many">, "many">>;
|
|
636
668
|
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
@@ -643,14 +675,30 @@ export declare const allCallables: {
|
|
|
643
675
|
filters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean]>>>;
|
|
644
676
|
cohortId: z.ZodOptional<z.ZodString>;
|
|
645
677
|
}, "strip", z.ZodTypeAny, {
|
|
646
|
-
users: Record<string, unknown> |
|
|
678
|
+
users: Record<string, unknown> | {
|
|
679
|
+
allSelected: boolean;
|
|
680
|
+
search?: string | undefined;
|
|
681
|
+
filters?: {
|
|
682
|
+
k: string;
|
|
683
|
+
v?: unknown;
|
|
684
|
+
e?: string | undefined;
|
|
685
|
+
}[] | undefined;
|
|
686
|
+
} | z.objectOutputType<{
|
|
647
687
|
path: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
648
688
|
where: z.ZodOptional<z.ZodArray<z.ZodArray<z.ZodUnknown, "many">, "many">>;
|
|
649
689
|
}, z.ZodTypeAny, "passthrough">[];
|
|
650
690
|
cohortId?: string | undefined;
|
|
651
691
|
filters?: Record<string, string | number | boolean> | undefined;
|
|
652
692
|
}, {
|
|
653
|
-
users: Record<string, unknown> |
|
|
693
|
+
users: Record<string, unknown> | {
|
|
694
|
+
allSelected: boolean;
|
|
695
|
+
search?: string | undefined;
|
|
696
|
+
filters?: {
|
|
697
|
+
k: string;
|
|
698
|
+
v?: unknown;
|
|
699
|
+
e?: string | undefined;
|
|
700
|
+
}[] | undefined;
|
|
701
|
+
} | z.objectInputType<{
|
|
654
702
|
path: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
655
703
|
where: z.ZodOptional<z.ZodArray<z.ZodArray<z.ZodUnknown, "many">, "many">>;
|
|
656
704
|
}, z.ZodTypeAny, "passthrough">[];
|
|
@@ -4836,7 +4884,39 @@ export declare const callableGroups: {
|
|
|
4836
4884
|
};
|
|
4837
4885
|
"userManagement-checkStudentActivation": {
|
|
4838
4886
|
request: z.ZodObject<{
|
|
4839
|
-
users: z.ZodUnion<[z.
|
|
4887
|
+
users: z.ZodUnion<[z.ZodObject<{
|
|
4888
|
+
allSelected: z.ZodBoolean;
|
|
4889
|
+
search: z.ZodOptional<z.ZodString>;
|
|
4890
|
+
filters: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
4891
|
+
k: z.ZodString;
|
|
4892
|
+
e: z.ZodOptional<z.ZodString>;
|
|
4893
|
+
v: z.ZodUnknown;
|
|
4894
|
+
}, "strip", z.ZodTypeAny, {
|
|
4895
|
+
k: string;
|
|
4896
|
+
v?: unknown;
|
|
4897
|
+
e?: string | undefined;
|
|
4898
|
+
}, {
|
|
4899
|
+
k: string;
|
|
4900
|
+
v?: unknown;
|
|
4901
|
+
e?: string | undefined;
|
|
4902
|
+
}>, "many">>;
|
|
4903
|
+
}, "strip", z.ZodTypeAny, {
|
|
4904
|
+
allSelected: boolean;
|
|
4905
|
+
search?: string | undefined;
|
|
4906
|
+
filters?: {
|
|
4907
|
+
k: string;
|
|
4908
|
+
v?: unknown;
|
|
4909
|
+
e?: string | undefined;
|
|
4910
|
+
}[] | undefined;
|
|
4911
|
+
}, {
|
|
4912
|
+
allSelected: boolean;
|
|
4913
|
+
search?: string | undefined;
|
|
4914
|
+
filters?: {
|
|
4915
|
+
k: string;
|
|
4916
|
+
v?: unknown;
|
|
4917
|
+
e?: string | undefined;
|
|
4918
|
+
}[] | undefined;
|
|
4919
|
+
}>, z.ZodArray<z.ZodObject<{
|
|
4840
4920
|
path: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
4841
4921
|
where: z.ZodOptional<z.ZodArray<z.ZodArray<z.ZodUnknown, "many">, "many">>;
|
|
4842
4922
|
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
@@ -4849,14 +4929,30 @@ export declare const callableGroups: {
|
|
|
4849
4929
|
filters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean]>>>;
|
|
4850
4930
|
cohortId: z.ZodOptional<z.ZodString>;
|
|
4851
4931
|
}, "strip", z.ZodTypeAny, {
|
|
4852
|
-
users: Record<string, unknown> |
|
|
4932
|
+
users: Record<string, unknown> | {
|
|
4933
|
+
allSelected: boolean;
|
|
4934
|
+
search?: string | undefined;
|
|
4935
|
+
filters?: {
|
|
4936
|
+
k: string;
|
|
4937
|
+
v?: unknown;
|
|
4938
|
+
e?: string | undefined;
|
|
4939
|
+
}[] | undefined;
|
|
4940
|
+
} | z.objectOutputType<{
|
|
4853
4941
|
path: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
4854
4942
|
where: z.ZodOptional<z.ZodArray<z.ZodArray<z.ZodUnknown, "many">, "many">>;
|
|
4855
4943
|
}, z.ZodTypeAny, "passthrough">[];
|
|
4856
4944
|
cohortId?: string | undefined;
|
|
4857
4945
|
filters?: Record<string, string | number | boolean> | undefined;
|
|
4858
4946
|
}, {
|
|
4859
|
-
users: Record<string, unknown> |
|
|
4947
|
+
users: Record<string, unknown> | {
|
|
4948
|
+
allSelected: boolean;
|
|
4949
|
+
search?: string | undefined;
|
|
4950
|
+
filters?: {
|
|
4951
|
+
k: string;
|
|
4952
|
+
v?: unknown;
|
|
4953
|
+
e?: string | undefined;
|
|
4954
|
+
}[] | undefined;
|
|
4955
|
+
} | z.objectInputType<{
|
|
4860
4956
|
path: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
4861
4957
|
where: z.ZodOptional<z.ZodArray<z.ZodArray<z.ZodUnknown, "many">, "many">>;
|
|
4862
4958
|
}, z.ZodTypeAny, "passthrough">[];
|
|
@@ -42,8 +42,41 @@ export declare const userManagementCallables: {
|
|
|
42
42
|
*/
|
|
43
43
|
"userManagement-checkStudentActivation": {
|
|
44
44
|
request: z.ZodObject<{
|
|
45
|
-
/**
|
|
46
|
-
|
|
45
|
+
/** A table's "select all" as a DataViewer selection, picked students keyed
|
|
46
|
+
* by uid, or (older clients) query objects. */
|
|
47
|
+
users: z.ZodUnion<[z.ZodObject<{
|
|
48
|
+
allSelected: z.ZodBoolean;
|
|
49
|
+
search: z.ZodOptional<z.ZodString>;
|
|
50
|
+
filters: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
51
|
+
k: z.ZodString;
|
|
52
|
+
e: z.ZodOptional<z.ZodString>;
|
|
53
|
+
v: z.ZodUnknown;
|
|
54
|
+
}, "strip", z.ZodTypeAny, {
|
|
55
|
+
k: string;
|
|
56
|
+
v?: unknown;
|
|
57
|
+
e?: string | undefined;
|
|
58
|
+
}, {
|
|
59
|
+
k: string;
|
|
60
|
+
v?: unknown;
|
|
61
|
+
e?: string | undefined;
|
|
62
|
+
}>, "many">>;
|
|
63
|
+
}, "strip", z.ZodTypeAny, {
|
|
64
|
+
allSelected: boolean;
|
|
65
|
+
search?: string | undefined;
|
|
66
|
+
filters?: {
|
|
67
|
+
k: string;
|
|
68
|
+
v?: unknown;
|
|
69
|
+
e?: string | undefined;
|
|
70
|
+
}[] | undefined;
|
|
71
|
+
}, {
|
|
72
|
+
allSelected: boolean;
|
|
73
|
+
search?: string | undefined;
|
|
74
|
+
filters?: {
|
|
75
|
+
k: string;
|
|
76
|
+
v?: unknown;
|
|
77
|
+
e?: string | undefined;
|
|
78
|
+
}[] | undefined;
|
|
79
|
+
}>, z.ZodArray<z.ZodObject<{
|
|
47
80
|
path: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
48
81
|
where: z.ZodOptional<z.ZodArray<z.ZodArray<z.ZodUnknown, "many">, "many">>;
|
|
49
82
|
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
@@ -57,14 +90,30 @@ export declare const userManagementCallables: {
|
|
|
57
90
|
filters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean]>>>;
|
|
58
91
|
cohortId: z.ZodOptional<z.ZodString>;
|
|
59
92
|
}, "strip", z.ZodTypeAny, {
|
|
60
|
-
users: Record<string, unknown> |
|
|
93
|
+
users: Record<string, unknown> | {
|
|
94
|
+
allSelected: boolean;
|
|
95
|
+
search?: string | undefined;
|
|
96
|
+
filters?: {
|
|
97
|
+
k: string;
|
|
98
|
+
v?: unknown;
|
|
99
|
+
e?: string | undefined;
|
|
100
|
+
}[] | undefined;
|
|
101
|
+
} | z.objectOutputType<{
|
|
61
102
|
path: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
62
103
|
where: z.ZodOptional<z.ZodArray<z.ZodArray<z.ZodUnknown, "many">, "many">>;
|
|
63
104
|
}, z.ZodTypeAny, "passthrough">[];
|
|
64
105
|
cohortId?: string | undefined;
|
|
65
106
|
filters?: Record<string, string | number | boolean> | undefined;
|
|
66
107
|
}, {
|
|
67
|
-
users: Record<string, unknown> |
|
|
108
|
+
users: Record<string, unknown> | {
|
|
109
|
+
allSelected: boolean;
|
|
110
|
+
search?: string | undefined;
|
|
111
|
+
filters?: {
|
|
112
|
+
k: string;
|
|
113
|
+
v?: unknown;
|
|
114
|
+
e?: string | undefined;
|
|
115
|
+
}[] | undefined;
|
|
116
|
+
} | z.objectInputType<{
|
|
68
117
|
path: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
69
118
|
where: z.ZodOptional<z.ZodArray<z.ZodArray<z.ZodUnknown, "many">, "many">>;
|
|
70
119
|
}, z.ZodTypeAny, "passthrough">[];
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.userManagementCallables = void 0;
|
|
4
4
|
const zod_1 = require("zod");
|
|
5
|
+
const activities_1 = require("./activities");
|
|
5
6
|
/**
|
|
6
7
|
* Contracts for the typed user management callables
|
|
7
8
|
* (`Placementt-Backend/functions/src/userManagement.ts`).
|
|
@@ -31,8 +32,10 @@ exports.userManagementCallables = {
|
|
|
31
32
|
*/
|
|
32
33
|
"userManagement-checkStudentActivation": {
|
|
33
34
|
request: zod_1.z.object({
|
|
34
|
-
/**
|
|
35
|
+
/** A table's "select all" as a DataViewer selection, picked students keyed
|
|
36
|
+
* by uid, or (older clients) query objects. */
|
|
35
37
|
users: zod_1.z.union([
|
|
38
|
+
activities_1.selectAllSelection,
|
|
36
39
|
zod_1.z.array(zod_1.z.object({
|
|
37
40
|
path: zod_1.z.array(zod_1.z.string()).optional(),
|
|
38
41
|
where: zod_1.z.array(zod_1.z.array(zod_1.z.unknown())).optional(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"userManagement.js","sourceRoot":"","sources":["../../src/callables/userManagement.ts"],"names":[],"mappings":";;;AAAA,6BAAsB;
|
|
1
|
+
{"version":3,"file":"userManagement.js","sourceRoot":"","sources":["../../src/callables/userManagement.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const userManagement_1 = require("./userManagement");
|
|
4
|
+
const check = userManagement_1.userManagementCallables["userManagement-checkStudentActivation"].request;
|
|
5
|
+
describe("userManagement-checkStudentActivation users", () => {
|
|
6
|
+
it("takes a table's select all as a DataViewer selection, filters intact", () => {
|
|
7
|
+
const users = { allSelected: true, search: "", filters: [{ k: "details.year", e: "==", v: "10" }] };
|
|
8
|
+
const parsed = check.parse({ users });
|
|
9
|
+
expect(parsed.users).toEqual(users);
|
|
10
|
+
});
|
|
11
|
+
it("still takes picked students keyed by uid", () => {
|
|
12
|
+
expect(check.parse({ users: { uid1: true, uid2: true } }).users).toEqual({ uid1: true, uid2: true });
|
|
13
|
+
});
|
|
14
|
+
it("still takes query objects from older clients", () => {
|
|
15
|
+
const users = [{ path: ["users"], where: [["oId", "==", "school"]] }];
|
|
16
|
+
expect(check.parse({ users }).users).toEqual(users);
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
//# sourceMappingURL=userManagement.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"userManagement.test.js","sourceRoot":"","sources":["../../src/callables/userManagement.test.ts"],"names":[],"mappings":";;AAAA,qDAAyD;AAEzD,MAAM,KAAK,GAAG,wCAAuB,CAAC,uCAAuC,CAAC,CAAC,OAAO,CAAC;AAEvF,QAAQ,CAAC,6CAA6C,EAAE,GAAG,EAAE;IACzD,EAAE,CAAC,sEAAsE,EAAE,GAAG,EAAE;QAC5E,MAAM,KAAK,GAAG,EAAC,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAC,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAC,CAAC,EAAC,CAAC;QAChG,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,EAAC,KAAK,EAAC,CAAC,CAAC;QACpC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAChD,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAC,KAAK,EAAE,EAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAC,EAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;IACnG,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACpD,MAAM,KAAK,GAAG,CAAC,EAAC,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,EAAC,CAAC,CAAC;QACpE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAC,KAAK,EAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
package/lib/typeDefinitions.d.ts
CHANGED
|
@@ -1267,6 +1267,8 @@ export type InstituteData = {
|
|
|
1267
1267
|
activityLoggingConfig?: StudentLaunchConfig;
|
|
1268
1268
|
careersLibraryConfig?: StudentLaunchConfig;
|
|
1269
1269
|
nextStepsConfig?: StudentLaunchConfig;
|
|
1270
|
+
/** Activate students as they are added (CSV, Wonde, MIS), if they have something to use. New schools start on; unset is off. */
|
|
1271
|
+
autoActivateNewStudents?: boolean;
|
|
1270
1272
|
destinationTracking?: boolean;
|
|
1271
1273
|
docCheck?: boolean;
|
|
1272
1274
|
adminLastCheckedDocs?: string;
|
|
@@ -1592,6 +1594,7 @@ export type CohortData = {
|
|
|
1592
1594
|
search: string | undefined;
|
|
1593
1595
|
filters: [string, unknown][] | undefined;
|
|
1594
1596
|
};
|
|
1597
|
+
/** @deprecated Replaced by InstituteData.autoActivateNewStudents. No longer read. */
|
|
1595
1598
|
autoActivateNewUsers?: boolean;
|
|
1596
1599
|
allowOverlappingDates?: boolean;
|
|
1597
1600
|
/** @deprecated The staff edit alert is now always sent. Removed by the email settings migration. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typeDefinitions.js","sourceRoot":"","sources":["../src/typeDefinitions.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"typeDefinitions.js","sourceRoot":"","sources":["../src/typeDefinitions.ts"],"names":[],"mappings":";;;AAkvIA,sDASC;AAeD,oDAKC;AAaD,0CAEC;AA/pED;;;;;kFAKkF;AACrE,QAAA,qBAAqB,GAAG,SAAS,CAAC;AAClC,QAAA,iBAAiB,GAAG,OAAO,CAAC;AA2kEzC;yEACyE;AAC5D,QAAA,0BAA0B,GAA2C;IAC9E,gBAAgB,EAAE,2BAA2B;IAC7C,mBAAmB,EAAE,sBAAsB;IAC3C,cAAc,EAAE,iBAAiB;IACjC,kBAAkB,EAAE,qBAAqB;IACzC,UAAU,EAAE,oCAAoC;IAChD,aAAa,EAAE,yBAAyB;IACxC,aAAa,EAAE,wBAAwB;IACvC,KAAK,EAAE,OAAO;CACjB,CAAC;AAEW,QAAA,0BAA0B,GAA+C;IAClF,QAAQ,EAAE,WAAW;IACrB,KAAK,EAAE,YAAY;IACnB,KAAK,EAAE,OAAO;CACjB,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,SAAgB,qBAAqB,CAAC,SAAsC;IACxE,QAAQ,SAAS,EAAE,CAAC;QACpB,KAAK,MAAM,CAAC,CAAC,OAAO,OAAO,CAAC;QAC5B,KAAK,OAAO,CAAC,CAAC,OAAO,OAAO,CAAC;QAC7B,KAAK,WAAW,CAAC;QACjB,KAAK,OAAO,CAAC;QACb,KAAK,OAAO,CAAC;QACb,OAAO,CAAC,CAAC,OAAO,UAAU,CAAC;IAC3B,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAgB,oBAAoB,CAChC,IAAwC,EACxC,MAA6C;IAE7C,OAAO,IAAI,EAAE,WAAW,IAAI,MAAM,EAAE,YAAY,IAAI,KAAK,CAAC;AAC9D,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAgB,eAAe,CAAC,KAA6D;IACzF,OAAO,GAAG,KAAK,CAAC,cAAc,IAAI,EAAE,IAAI,KAAK,CAAC,aAAa,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;AAC/E,CAAC"}
|
package/package.json
CHANGED
|
@@ -6,18 +6,21 @@ import {CallableGroup} from "./types";
|
|
|
6
6
|
* (`Placementt-Backend/functions/src/activities.ts`).
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
+
/** A table's "select all", as DataViewerSelectionBackend: its filters and any search. */
|
|
10
|
+
export const selectAllSelection = z.object({
|
|
11
|
+
allSelected: z.boolean(),
|
|
12
|
+
search: z.string().optional(),
|
|
13
|
+
filters: z.array(z.object({
|
|
14
|
+
k: z.string(),
|
|
15
|
+
e: z.string().optional(),
|
|
16
|
+
v: z.unknown(),
|
|
17
|
+
})).optional(),
|
|
18
|
+
});
|
|
19
|
+
|
|
9
20
|
/** The students picked in the student table, as DataViewerSelectionBackend:
|
|
10
21
|
* a filter (with an optional search), or a list of uids. */
|
|
11
|
-
const studentSelection = z.union([
|
|
12
|
-
|
|
13
|
-
allSelected: z.boolean(),
|
|
14
|
-
search: z.string().optional(),
|
|
15
|
-
filters: z.array(z.object({
|
|
16
|
-
k: z.string(),
|
|
17
|
-
e: z.string().optional(),
|
|
18
|
-
v: z.unknown(),
|
|
19
|
-
})).optional(),
|
|
20
|
-
}),
|
|
22
|
+
export const studentSelection = z.union([
|
|
23
|
+
selectAllSelection,
|
|
21
24
|
z.array(z.string().min(1).max(128)).max(5000),
|
|
22
25
|
]);
|
|
23
26
|
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import {userManagementCallables} from "./userManagement";
|
|
2
|
+
|
|
3
|
+
const check = userManagementCallables["userManagement-checkStudentActivation"].request;
|
|
4
|
+
|
|
5
|
+
describe("userManagement-checkStudentActivation users", () => {
|
|
6
|
+
it("takes a table's select all as a DataViewer selection, filters intact", () => {
|
|
7
|
+
const users = {allSelected: true, search: "", filters: [{k: "details.year", e: "==", v: "10"}]};
|
|
8
|
+
const parsed = check.parse({users});
|
|
9
|
+
expect(parsed.users).toEqual(users);
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
it("still takes picked students keyed by uid", () => {
|
|
13
|
+
expect(check.parse({users: {uid1: true, uid2: true}}).users).toEqual({uid1: true, uid2: true});
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
it("still takes query objects from older clients", () => {
|
|
17
|
+
const users = [{path: ["users"], where: [["oId", "==", "school"]]}];
|
|
18
|
+
expect(check.parse({users}).users).toEqual(users);
|
|
19
|
+
});
|
|
20
|
+
});
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import {z} from "zod";
|
|
2
2
|
import {CallableGroup} from "./types";
|
|
3
|
+
import {selectAllSelection} from "./activities";
|
|
3
4
|
|
|
4
5
|
/**
|
|
5
6
|
* Contracts for the typed user management callables
|
|
@@ -30,8 +31,10 @@ export const userManagementCallables = {
|
|
|
30
31
|
*/
|
|
31
32
|
"userManagement-checkStudentActivation": {
|
|
32
33
|
request: z.object({
|
|
33
|
-
/**
|
|
34
|
+
/** A table's "select all" as a DataViewer selection, picked students keyed
|
|
35
|
+
* by uid, or (older clients) query objects. */
|
|
34
36
|
users: z.union([
|
|
37
|
+
selectAllSelection,
|
|
35
38
|
z.array(z.object({
|
|
36
39
|
path: z.array(z.string()).optional(),
|
|
37
40
|
where: z.array(z.array(z.unknown())).optional(),
|
package/src/typeDefinitions.ts
CHANGED
|
@@ -1293,6 +1293,8 @@ export type InstituteData = {
|
|
|
1293
1293
|
activityLoggingConfig?: StudentLaunchConfig,
|
|
1294
1294
|
careersLibraryConfig?: StudentLaunchConfig,
|
|
1295
1295
|
nextStepsConfig?: StudentLaunchConfig,
|
|
1296
|
+
/** Activate students as they are added (CSV, Wonde, MIS), if they have something to use. New schools start on; unset is off. */
|
|
1297
|
+
autoActivateNewStudents?: boolean,
|
|
1296
1298
|
|
|
1297
1299
|
destinationTracking?: boolean,
|
|
1298
1300
|
docCheck?: boolean,
|
|
@@ -1632,6 +1634,7 @@ export type CohortData = {
|
|
|
1632
1634
|
search: string | undefined;
|
|
1633
1635
|
filters: [string, unknown][] | undefined;
|
|
1634
1636
|
},
|
|
1637
|
+
/** @deprecated Replaced by InstituteData.autoActivateNewStudents. No longer read. */
|
|
1635
1638
|
autoActivateNewUsers?: boolean,
|
|
1636
1639
|
allowOverlappingDates?: boolean,
|
|
1637
1640
|
/** @deprecated The staff edit alert is now always sent. Removed by the email settings migration. */
|