@capytale/activity.js 3.1.16 → 3.1.17
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/package.json +1 -1
- package/util/devconf.d.ts +4 -4
- package/util/devconf.js +21 -8
- package/util/devconf.js.map +1 -1
package/package.json
CHANGED
package/util/devconf.d.ts
CHANGED
|
@@ -2,15 +2,15 @@ type ActivityMode = "assignment" | "create" | "review" | "view";
|
|
|
2
2
|
export interface DevSettings {
|
|
3
3
|
enabled: boolean;
|
|
4
4
|
mode: 'basic' | 'decorated' | 'mapped';
|
|
5
|
-
url
|
|
6
|
-
decoUrl
|
|
7
|
-
urlMap
|
|
5
|
+
url: string;
|
|
6
|
+
decoUrl: string;
|
|
7
|
+
urlMap: Partial<{
|
|
8
8
|
[mode in ActivityMode]: string;
|
|
9
9
|
}>;
|
|
10
10
|
pwd: string;
|
|
11
11
|
}
|
|
12
12
|
declare function setAllowedHashes(hashes: number[]): void;
|
|
13
|
-
declare function getDevSettings(): DevSettings
|
|
13
|
+
declare function getDevSettings(): DevSettings;
|
|
14
14
|
declare function saveDevSettings(settings: DevSettings): boolean;
|
|
15
15
|
declare function customUrl(mode: ActivityMode, activityType: string): string | null;
|
|
16
16
|
declare const _default: {
|
package/util/devconf.js
CHANGED
|
@@ -1,4 +1,12 @@
|
|
|
1
1
|
const storageKey = 'capy_dev_settings';
|
|
2
|
+
const defaultSettings = {
|
|
3
|
+
enabled: false,
|
|
4
|
+
mode: 'basic',
|
|
5
|
+
url: '',
|
|
6
|
+
decoUrl: '',
|
|
7
|
+
urlMap: {},
|
|
8
|
+
pwd: ''
|
|
9
|
+
};
|
|
2
10
|
let allowedHashes = [];
|
|
3
11
|
function hash(s) {
|
|
4
12
|
let hash = 0, i, chr;
|
|
@@ -23,28 +31,33 @@ function isLegacy(settings) {
|
|
|
23
31
|
function getDevSettings() {
|
|
24
32
|
const settingsString = localStorage.getItem(storageKey);
|
|
25
33
|
if (settingsString == null) {
|
|
26
|
-
return
|
|
34
|
+
return defaultSettings;
|
|
27
35
|
}
|
|
28
36
|
try {
|
|
29
37
|
const settings = JSON.parse(settingsString);
|
|
38
|
+
if (!settings.pwd)
|
|
39
|
+
return defaultSettings;
|
|
30
40
|
if (!isAllowed(settings.pwd))
|
|
31
|
-
return
|
|
41
|
+
return defaultSettings;
|
|
32
42
|
if (isLegacy(settings)) {
|
|
33
43
|
return {
|
|
34
|
-
enabled: settings.customUrlEnabled,
|
|
44
|
+
enabled: settings.customUrlEnabled ?? false,
|
|
35
45
|
mode: settings.customUrlDeco ? 'decorated' : 'basic',
|
|
36
|
-
url: settings.customUrlDeco ?
|
|
37
|
-
decoUrl: settings.customUrlDeco ? settings.customUrl :
|
|
46
|
+
url: settings.customUrlDeco ? '' : (settings.customUrl ?? ''),
|
|
47
|
+
decoUrl: settings.customUrlDeco ? (settings.customUrl ?? '') : '',
|
|
48
|
+
urlMap: {},
|
|
38
49
|
pwd: settings.pwd
|
|
39
50
|
};
|
|
40
51
|
}
|
|
41
|
-
return settings;
|
|
52
|
+
return { ...defaultSettings, ...settings };
|
|
42
53
|
}
|
|
43
54
|
catch (e) {
|
|
44
|
-
return
|
|
55
|
+
return defaultSettings;
|
|
45
56
|
}
|
|
46
57
|
}
|
|
47
58
|
function saveDevSettings(settings) {
|
|
59
|
+
if (!settings.pwd)
|
|
60
|
+
return false;
|
|
48
61
|
if (!isAllowed(settings.pwd))
|
|
49
62
|
return false;
|
|
50
63
|
localStorage.setItem(storageKey, JSON.stringify(settings));
|
|
@@ -52,7 +65,7 @@ function saveDevSettings(settings) {
|
|
|
52
65
|
}
|
|
53
66
|
function customUrl(mode, activityType) {
|
|
54
67
|
const settings = getDevSettings();
|
|
55
|
-
if (settings
|
|
68
|
+
if (!settings.enabled)
|
|
56
69
|
return null;
|
|
57
70
|
if (settings.mode === 'basic') {
|
|
58
71
|
const url = settings.url;
|
package/util/devconf.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"devconf.js","sourceRoot":"","sources":["../src/util/devconf.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,GAAG,mBAAmB,CAAC;AAoBvC,IAAI,aAAa,GAAa,EAAE,CAAC;AACjC,SAAS,IAAI,CAAC,CAAS;IACrB,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;IACrB,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAChC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9B,GAAG,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;QAClC,IAAI,IAAI,CAAC,CAAC;IACZ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,SAAS,CAAC,GAAW;IAC5B,OAAO,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAgB;IACxC,aAAa,GAAG,MAAM,CAAC;AACzB,CAAC;AAED,SAAS,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"devconf.js","sourceRoot":"","sources":["../src/util/devconf.ts"],"names":[],"mappings":"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","sourcesContent":["const storageKey = 'capy_dev_settings';\n\ninterface LegacyDevSettings {\n customUrlEnabled: boolean;\n customUrl: string;\n customUrlDeco: boolean;\n pwd: string;\n}\n\ntype ActivityMode = \"assignment\" | \"create\" | \"review\" | \"view\";\n\nexport interface DevSettings {\n enabled: boolean;\n mode: 'basic' | 'decorated' | 'mapped';\n url: string;\n decoUrl: string;\n urlMap: Partial<{ [mode in ActivityMode]: string }>;\n pwd: string;\n}\n\nconst defaultSettings: DevSettings = {\n enabled: false,\n mode: 'basic',\n url: '',\n decoUrl: '',\n urlMap: {},\n pwd: ''\n};\n\nlet allowedHashes: number[] = [];\nfunction hash(s: string): number {\n let hash = 0, i, chr;\n if (s.length === 0) return hash;\n for (i = 0; i < s.length; i++) {\n chr = s.charCodeAt(i);\n hash = ((hash << 5) - hash) + chr;\n hash |= 0;\n }\n return hash;\n}\n\nfunction isAllowed(pwd: string): boolean {\n return allowedHashes.includes(hash(pwd));\n}\n\nfunction setAllowedHashes(hashes: number[]): void {\n allowedHashes = hashes;\n}\n\nfunction isLegacy(settings: Partial<DevSettings> | Partial<LegacyDevSettings>): settings is Partial<LegacyDevSettings> {\n return (settings as LegacyDevSettings).customUrlEnabled != null;\n}\n\nfunction getDevSettings(): DevSettings {\n const settingsString = localStorage.getItem(storageKey);\n if (settingsString == null) {\n return defaultSettings;\n }\n try {\n const settings: Partial<DevSettings> | Partial<LegacyDevSettings> = JSON.parse(settingsString);\n if (!settings.pwd) return defaultSettings;\n if (!isAllowed(settings.pwd)) return defaultSettings;\n if (isLegacy(settings)) {\n return {\n enabled: settings.customUrlEnabled ?? false,\n mode: settings.customUrlDeco ? 'decorated' : 'basic',\n url: settings.customUrlDeco ? '' : (settings.customUrl ?? ''),\n decoUrl: settings.customUrlDeco ? (settings.customUrl ?? '') : '',\n urlMap: {},\n pwd: settings.pwd\n };\n }\n return { ...defaultSettings, ...settings };\n } catch (e) {\n return defaultSettings;\n }\n}\n\nfunction saveDevSettings(settings: DevSettings): boolean {\n if (!settings.pwd) return false;\n if (!isAllowed(settings.pwd)) return false;\n localStorage.setItem(storageKey, JSON.stringify(settings));\n return true;\n}\n\nfunction customUrl(mode: ActivityMode, activityType: string): string | null {\n const settings = getDevSettings();\n if (!settings.enabled) return null;\n if (settings.mode === 'basic') {\n const url = settings.url;\n if (url == null) return null;\n return url;\n }\n if (settings.mode === 'decorated') {\n const url = settings.decoUrl;\n if (url == null) return null;\n if (activityType == null) return url;\n const pos = activityType.lastIndexOf('.');\n activityType = pos < 0 ? activityType : activityType.substring(pos + 1);\n return (url.endsWith('/')) ? `${url}${activityType}` : `${url}/${activityType}`;\n }\n if (settings.mode === 'mapped') {\n return settings.urlMap?.[mode] ?? null;\n }\n return null;\n}\n\nexport default {\n getDevSettings,\n saveDevSettings,\n customUrl,\n setAllowedHashes\n}"]}
|