@hkdigital/lib-sveltekit 0.1.62 → 0.1.65
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 +135 -135
- package/dist/assets/autospuiten/car-paint-picker.js +41 -41
- package/dist/assets/autospuiten/labels.js +7 -7
- package/dist/classes/data/IterableTree.js +243 -243
- package/dist/classes/data/Selector.js +190 -190
- package/dist/classes/data/index.js +2 -2
- package/dist/classes/index.js +4 -4
- package/dist/classes/promise/HkPromise.js +377 -377
- package/dist/classes/promise/index.js +1 -1
- package/dist/classes/stores/SubscribersCount.js +107 -107
- package/dist/classes/stores/index.js +1 -1
- package/dist/classes/streams/LogTransformStream.js +19 -19
- package/dist/classes/streams/ServerEventsStore.js +110 -110
- package/dist/classes/streams/TimeStampSource.js +26 -26
- package/dist/classes/streams/index.js +3 -3
- package/dist/classes/svelte/audio/AudioLoader.svelte.js +58 -58
- package/dist/classes/svelte/audio/AudioScene.svelte.js +295 -295
- package/dist/classes/svelte/audio/mocks.js +35 -35
- package/dist/classes/svelte/finite-state-machine/FiniteStateMachine.svelte.js +133 -133
- package/dist/classes/svelte/finite-state-machine/index.js +1 -1
- package/dist/classes/svelte/image/ImageLoader.svelte.js +47 -47
- package/dist/classes/svelte/image/ImageScene.svelte.js +253 -253
- package/dist/classes/svelte/image/ImageVariantsLoader.svelte.js +152 -152
- package/dist/classes/svelte/image/index.js +4 -4
- package/dist/classes/svelte/image/mocks.js +35 -35
- package/dist/classes/svelte/image/typedef.js +8 -8
- package/dist/classes/svelte/index.js +14 -14
- package/dist/classes/svelte/loading-state-machine/LoadingStateMachine.svelte.js +109 -109
- package/dist/classes/svelte/loading-state-machine/constants.js +16 -16
- package/dist/classes/svelte/loading-state-machine/index.js +3 -3
- package/dist/classes/svelte/network-loader/NetworkLoader.svelte.js +331 -331
- package/dist/classes/svelte/network-loader/constants.js +3 -3
- package/dist/classes/svelte/network-loader/index.js +3 -3
- package/dist/classes/svelte/network-loader/mocks.js +30 -30
- package/dist/classes/svelte/network-loader/typedef.js +8 -8
- package/dist/components/area/HkArea.svelte +49 -49
- package/dist/components/area/HkGridArea.svelte +77 -77
- package/dist/components/area/index.js +2 -2
- package/dist/components/buttons/button/Button.svelte +82 -82
- package/dist/components/buttons/button-icon-steeze/SteezeIconButton.svelte +30 -30
- package/dist/components/buttons/button-text/TextButton.svelte +21 -21
- package/dist/components/buttons/index.js +3 -3
- package/dist/components/debug/debug-panel-design-scaling/DebugPanelDesignScaling.svelte +146 -146
- package/dist/components/debug/index.js +1 -1
- package/dist/components/hkdev/blocks/TextBlock.svelte +46 -46
- package/dist/components/hkdev/buttons/CheckButton.svelte +62 -62
- package/dist/components/icons/HkIcon.svelte +86 -86
- package/dist/components/icons/HkTabIcon.svelte +116 -116
- package/dist/components/icons/SteezeIcon.svelte +97 -97
- package/dist/components/icons/index.js +6 -6
- package/dist/components/icons/typedef.js +16 -16
- package/dist/components/index.js +2 -2
- package/dist/components/inputs/index.js +1 -1
- package/dist/components/inputs/text-input/TestTextInput.svelte__ +102 -102
- package/dist/components/inputs/text-input/TextInput.svelte +223 -223
- package/dist/components/inputs/text-input/TextInput.svelte___ +83 -83
- package/dist/components/inputs/text-input/assets/IconInvalid.svelte +14 -14
- package/dist/components/inputs/text-input/assets/IconValid.svelte +12 -12
- package/dist/components/layout/grid-layers/GridLayers.svelte +167 -167
- package/dist/components/layout/index.js +1 -1
- package/dist/components/panels/index.js +1 -1
- package/dist/components/panels/panel/Panel.svelte +43 -43
- package/dist/components/rows/index.js +3 -3
- package/dist/components/rows/panel-grid-row/PanelGridRow.svelte +104 -104
- package/dist/components/rows/panel-row-2/PanelRow2.svelte +40 -40
- package/dist/components/tab-bar/HkTabBar.state.svelte.js +149 -149
- package/dist/components/tab-bar/HkTabBar.svelte +74 -74
- package/dist/components/tab-bar/HkTabBarSelector.state.svelte.js +93 -93
- package/dist/components/tab-bar/HkTabBarSelector.svelte +49 -49
- package/dist/components/tab-bar/index.js +17 -17
- package/dist/components/tab-bar/typedef.js +8 -8
- package/dist/config/imagetools-config.js +189 -189
- package/dist/config/imagetools.d.ts +71 -71
- package/dist/config/typedef.js +8 -8
- package/dist/constants/bases.js +13 -13
- package/dist/constants/errors/api.js +9 -9
- package/dist/constants/errors/generic.js +5 -5
- package/dist/constants/errors/index.js +3 -3
- package/dist/constants/errors/jwt.js +5 -5
- package/dist/constants/http/headers.js +6 -6
- package/dist/constants/http/index.js +2 -2
- package/dist/constants/http/methods.js +2 -2
- package/dist/constants/index.js +3 -3
- package/dist/constants/mime/application.js +5 -5
- package/dist/constants/mime/audio.js +13 -13
- package/dist/constants/mime/image.js +3 -3
- package/dist/constants/mime/index.js +4 -4
- package/dist/constants/mime/text.js +2 -2
- package/dist/constants/regexp/index.js +31 -31
- package/dist/constants/regexp/inspiratie.js__ +95 -95
- package/dist/constants/regexp/text.js +49 -49
- package/dist/constants/regexp/user.js +32 -32
- package/dist/constants/regexp/web.js +3 -3
- package/dist/constants/state-labels/input-states.js +11 -11
- package/dist/constants/state-labels/submit-states.js +4 -4
- package/dist/constants/time.js +28 -28
- package/dist/css/utilities.css +43 -43
- package/dist/design/design-config.js +73 -73
- package/dist/design/tailwind-theme-extend.js +158 -158
- package/dist/schemas/index.js +1 -1
- package/dist/schemas/validate-url.js +180 -180
- package/dist/server/index.js +1 -1
- package/dist/server/logger.js +94 -94
- package/dist/states/index.js +1 -1
- package/dist/states/navigation.svelte.js +55 -55
- package/dist/stores/index.js +1 -1
- package/dist/stores/theme.js +80 -80
- package/dist/themes/hkdev/components/blocks/text-block.css +41 -41
- package/dist/themes/hkdev/components/boxes/game-box.css +12 -12
- package/dist/themes/hkdev/components/buttons/button-icon-steeze.css +22 -22
- package/dist/themes/hkdev/components/buttons/button-text.css +32 -32
- package/dist/themes/hkdev/components/buttons/button.css +142 -142
- package/dist/themes/hkdev/components/buttons/skip-button.css +6 -6
- package/dist/themes/hkdev/components/icons/icon-steeze.css +22 -22
- package/dist/themes/hkdev/components/inputs/text-input.css +104 -104
- package/dist/themes/hkdev/components/panels/panel.css +27 -27
- package/dist/themes/hkdev/components/rows/panel-grid-row.css +6 -6
- package/dist/themes/hkdev/components/rows/panel-row-2.css +7 -7
- package/dist/themes/hkdev/components.css +47 -47
- package/dist/themes/hkdev/debug.css +1 -1
- package/dist/themes/hkdev/global/layout.css +39 -39
- package/dist/themes/hkdev/global/on-colors.css +53 -53
- package/dist/themes/hkdev/globals.css +11 -11
- package/dist/themes/hkdev/responsive.css +12 -12
- package/dist/themes/hkdev/theme-ext.js +15 -15
- package/dist/themes/hkdev/theme.js +235 -235
- package/dist/themes/index.js +1 -1
- package/dist/util/array/index.js +455 -455
- package/dist/util/bases/base58.js +262 -262
- package/dist/util/bases/index.js +1 -1
- package/dist/util/compare/index.js +247 -247
- package/dist/util/css/css-vars.js +83 -83
- package/dist/util/css/index.js +1 -1
- package/dist/util/design-system/components/states.js +22 -22
- package/dist/util/design-system/css/clamp.js +66 -66
- package/dist/util/design-system/css/root-design-vars.js +100 -100
- package/dist/util/design-system/index.js +5 -5
- package/dist/util/design-system/layout/scaling.js +228 -228
- package/dist/util/design-system/skeleton.js +208 -208
- package/dist/util/design-system/tailwind.js +288 -288
- package/dist/util/expect/arrays.js +47 -47
- package/dist/util/expect/index.js +259 -259
- package/dist/util/expect/primitives.js +55 -55
- package/dist/util/expect/url.js +60 -60
- package/dist/util/function/index.js +218 -218
- package/dist/util/http/errors.js +97 -97
- package/dist/util/http/headers.js +45 -45
- package/dist/util/http/http-request.js +294 -294
- package/dist/util/http/index.js +22 -22
- package/dist/util/http/json-request.js +143 -143
- package/dist/util/http/mocks.js +65 -65
- package/dist/util/http/response.js +241 -241
- package/dist/util/http/test-data__/content-length-test-hkdigital-small.V4HfZyBQ.avif +0 -0
- package/dist/util/http/url.js +52 -52
- package/dist/util/image/index.js +86 -86
- package/dist/util/index.js +2 -2
- package/dist/util/is/index.js +140 -140
- package/dist/util/iterate/index.js +234 -234
- package/dist/util/object/index.js +1361 -1361
- package/dist/util/singleton/index.js +97 -97
- package/dist/util/string/array-path.js +75 -75
- package/dist/util/string/convert.js +54 -54
- package/dist/util/string/fs.js +226 -226
- package/dist/util/string/index.js +5 -5
- package/dist/util/string/interpolate.js +61 -61
- package/dist/util/string/pad.js +10 -10
- package/dist/util/svelte/index.js +4 -4
- package/dist/util/svelte/loading/loading-tracker.svelte.js +108 -108
- package/dist/util/svelte/observe/index.js +49 -49
- package/dist/util/svelte/state-context/index.js +83 -83
- package/dist/util/svelte/wait/index.js +38 -38
- package/dist/util/sveltekit/index.js +1 -1
- package/dist/util/sveltekit/route-folders/index.js +101 -101
- package/dist/util/time/index.js +323 -323
- package/dist/util/unique/index.js +249 -249
- package/dist/valibot/date.js__ +10 -10
- package/dist/valibot/index.js +9 -9
- package/dist/valibot/url.js +95 -95
- package/dist/valibot/user.js +23 -23
- package/dist/widgets/button-group/ButtonGroup.svelte +82 -94
- package/dist/widgets/button-group/ButtonGroup.svelte.d.ts +0 -2
- package/dist/widgets/button-group/typedef.js +10 -10
- package/dist/widgets/compare-left-right/CompareLeftRight.svelte +179 -179
- package/dist/widgets/compare-left-right/index.js +1 -1
- package/dist/widgets/game-box/GameBox.svelte +579 -186
- package/dist/widgets/game-box/GameBox.svelte.d.ts +64 -4
- package/dist/widgets/game-box/gamebox.util.js +83 -83
- package/dist/widgets/hk-app-layout/HkAppLayout.state.svelte.js +25 -25
- package/dist/widgets/hk-app-layout/HkAppLayout.svelte +251 -251
- package/dist/widgets/image-box/ImageBox.svelte +212 -212
- package/dist/widgets/image-box/index.js +5 -5
- package/dist/widgets/image-box/typedef.js +32 -32
- package/dist/widgets/index.js +23 -23
- package/dist/widgets/presenter/(broken) Presenter.state.svelte.js__ +613 -0
- package/dist/widgets/presenter/ImageSlide.svelte +64 -64
- package/dist/widgets/presenter/Presenter.state.svelte.js +636 -636
- package/dist/widgets/presenter/Presenter.svelte +140 -140
- package/dist/widgets/presenter/Presenter.svelte__ +125 -0
- package/dist/widgets/presenter/constants.js +7 -7
- package/dist/widgets/presenter/index.js +10 -10
- package/dist/widgets/presenter/typedef.js +106 -106
- package/dist/widgets/presenter/util.js +210 -210
- package/dist/widgets/virtual-viewport/VirtualViewport.svelte +196 -196
- package/dist/zod/all.js +33 -33
- package/dist/zod/generic.js +11 -11
- package/dist/zod/javascript.js +32 -32
- package/dist/zod/user.js +16 -16
- package/dist/zod/web.js +52 -52
- package/package.json +102 -102
@@ -1,97 +1,97 @@
|
|
1
|
-
import { expect } from '../index.js';
|
2
|
-
|
3
|
-
const instancesByNeedle = new Map();
|
4
|
-
|
5
|
-
/**
|
6
|
-
* Get a singleton instance
|
7
|
-
* - A class can be supplied to create the singleton instance from
|
8
|
-
* - The singleton is identified by a needle string
|
9
|
-
*
|
10
|
-
* @param {object} _
|
11
|
-
* @param {any} _.class
|
12
|
-
* @param {*[]} [_.args] - Constructor arguments
|
13
|
-
* @param {string} [_.needle]
|
14
|
-
* If not supplied, a needle will be constructed from the serialized
|
15
|
-
* constructor arguments (args).
|
16
|
-
*/
|
17
|
-
export function getInstance({ needle, class: Class, args }) {
|
18
|
-
expect.class(Class);
|
19
|
-
|
20
|
-
if (!needle) {
|
21
|
-
// Stringify instance arguments and use it as needle
|
22
|
-
needle = JSON.stringify(args === undefined ? null : args);
|
23
|
-
}
|
24
|
-
|
25
|
-
expect.notEmptyString(needle);
|
26
|
-
|
27
|
-
const className = Class.constructor.name;
|
28
|
-
|
29
|
-
// console.log('getInstance()', { needle, args, className });
|
30
|
-
|
31
|
-
needle = `${className}:${needle}`;
|
32
|
-
|
33
|
-
let instance = instancesByNeedle.get(needle);
|
34
|
-
|
35
|
-
if (!instance) {
|
36
|
-
// console.log('Create new instance');
|
37
|
-
// @ts-ignore
|
38
|
-
instance = new Class(...(args ?? []));
|
39
|
-
|
40
|
-
instancesByNeedle.set(needle, instance);
|
41
|
-
}
|
42
|
-
|
43
|
-
return instance;
|
44
|
-
}
|
45
|
-
|
46
|
-
/**
|
47
|
-
* Creates a proxy that instantiates the singleton class upon it's first usage
|
48
|
-
*
|
49
|
-
* @template T
|
50
|
-
*
|
51
|
-
* @param {object} _
|
52
|
-
* @param {new() => T} _.class
|
53
|
-
* @param {*[]} [_.args] - Constructor arguments
|
54
|
-
*
|
55
|
-
* @returns {T & {init:()=>null}} proxy
|
56
|
-
*/
|
57
|
-
export function lazySingleton({ class: Class, args }) {
|
58
|
-
/** @type {T} */
|
59
|
-
let singleton;
|
60
|
-
|
61
|
-
/** @type {T & {init:()=>null}} */
|
62
|
-
// @ts-ignore
|
63
|
-
const proxy = new Proxy(
|
64
|
-
// @ts-ignore
|
65
|
-
{},
|
66
|
-
{
|
67
|
-
/**
|
68
|
-
* @param {T} target
|
69
|
-
* @param {string} prop
|
70
|
-
*/
|
71
|
-
// @ts-ignore
|
72
|
-
get(target, prop) {
|
73
|
-
// console.log('lazySingleton: get property', prop);
|
74
|
-
|
75
|
-
if (!singleton) {
|
76
|
-
// @ts-ignore
|
77
|
-
singleton = new Class(...(args ?? []));
|
78
|
-
}
|
79
|
-
|
80
|
-
if (prop === 'init') {
|
81
|
-
// @ts-ignore
|
82
|
-
if (prop in singleton) {
|
83
|
-
// The class has an init method itself, return a reference
|
84
|
-
return singleton[prop];
|
85
|
-
}
|
86
|
-
|
87
|
-
return () => null;
|
88
|
-
}
|
89
|
-
|
90
|
-
// @ts-ignore
|
91
|
-
return singleton[prop];
|
92
|
-
}
|
93
|
-
}
|
94
|
-
);
|
95
|
-
|
96
|
-
return proxy;
|
97
|
-
}
|
1
|
+
import { expect } from '../index.js';
|
2
|
+
|
3
|
+
const instancesByNeedle = new Map();
|
4
|
+
|
5
|
+
/**
|
6
|
+
* Get a singleton instance
|
7
|
+
* - A class can be supplied to create the singleton instance from
|
8
|
+
* - The singleton is identified by a needle string
|
9
|
+
*
|
10
|
+
* @param {object} _
|
11
|
+
* @param {any} _.class
|
12
|
+
* @param {*[]} [_.args] - Constructor arguments
|
13
|
+
* @param {string} [_.needle]
|
14
|
+
* If not supplied, a needle will be constructed from the serialized
|
15
|
+
* constructor arguments (args).
|
16
|
+
*/
|
17
|
+
export function getInstance({ needle, class: Class, args }) {
|
18
|
+
expect.class(Class);
|
19
|
+
|
20
|
+
if (!needle) {
|
21
|
+
// Stringify instance arguments and use it as needle
|
22
|
+
needle = JSON.stringify(args === undefined ? null : args);
|
23
|
+
}
|
24
|
+
|
25
|
+
expect.notEmptyString(needle);
|
26
|
+
|
27
|
+
const className = Class.constructor.name;
|
28
|
+
|
29
|
+
// console.log('getInstance()', { needle, args, className });
|
30
|
+
|
31
|
+
needle = `${className}:${needle}`;
|
32
|
+
|
33
|
+
let instance = instancesByNeedle.get(needle);
|
34
|
+
|
35
|
+
if (!instance) {
|
36
|
+
// console.log('Create new instance');
|
37
|
+
// @ts-ignore
|
38
|
+
instance = new Class(...(args ?? []));
|
39
|
+
|
40
|
+
instancesByNeedle.set(needle, instance);
|
41
|
+
}
|
42
|
+
|
43
|
+
return instance;
|
44
|
+
}
|
45
|
+
|
46
|
+
/**
|
47
|
+
* Creates a proxy that instantiates the singleton class upon it's first usage
|
48
|
+
*
|
49
|
+
* @template T
|
50
|
+
*
|
51
|
+
* @param {object} _
|
52
|
+
* @param {new() => T} _.class
|
53
|
+
* @param {*[]} [_.args] - Constructor arguments
|
54
|
+
*
|
55
|
+
* @returns {T & {init:()=>null}} proxy
|
56
|
+
*/
|
57
|
+
export function lazySingleton({ class: Class, args }) {
|
58
|
+
/** @type {T} */
|
59
|
+
let singleton;
|
60
|
+
|
61
|
+
/** @type {T & {init:()=>null}} */
|
62
|
+
// @ts-ignore
|
63
|
+
const proxy = new Proxy(
|
64
|
+
// @ts-ignore
|
65
|
+
{},
|
66
|
+
{
|
67
|
+
/**
|
68
|
+
* @param {T} target
|
69
|
+
* @param {string} prop
|
70
|
+
*/
|
71
|
+
// @ts-ignore
|
72
|
+
get(target, prop) {
|
73
|
+
// console.log('lazySingleton: get property', prop);
|
74
|
+
|
75
|
+
if (!singleton) {
|
76
|
+
// @ts-ignore
|
77
|
+
singleton = new Class(...(args ?? []));
|
78
|
+
}
|
79
|
+
|
80
|
+
if (prop === 'init') {
|
81
|
+
// @ts-ignore
|
82
|
+
if (prop in singleton) {
|
83
|
+
// The class has an init method itself, return a reference
|
84
|
+
return singleton[prop];
|
85
|
+
}
|
86
|
+
|
87
|
+
return () => null;
|
88
|
+
}
|
89
|
+
|
90
|
+
// @ts-ignore
|
91
|
+
return singleton[prop];
|
92
|
+
}
|
93
|
+
}
|
94
|
+
);
|
95
|
+
|
96
|
+
return proxy;
|
97
|
+
}
|
@@ -1,75 +1,75 @@
|
|
1
|
-
import { PATH_SEPARATOR } from '../object/index.js';
|
2
|
-
|
3
|
-
/**
|
4
|
-
* Convert a path string to an array path
|
5
|
-
* - The path string will be spit at the `pathSeparator` token
|
6
|
-
* - If the supplied path is already an array, the original array will
|
7
|
-
* be returned
|
8
|
-
*
|
9
|
-
* @param {string|string[]} path
|
10
|
-
* String or array path (e.g. "some.path.to")
|
11
|
-
*
|
12
|
-
* @param {string} [pathSeparator=PATH_SEPARATOR]
|
13
|
-
* A custom path separator to use instead of the default "."
|
14
|
-
*
|
15
|
-
* @returns {string} string path (e.g. "some.path.to")
|
16
|
-
*/
|
17
|
-
export function toStringPath(path, pathSeparator = PATH_SEPARATOR) {
|
18
|
-
if (Array.isArray(path)) {
|
19
|
-
return path.join(pathSeparator);
|
20
|
-
} else if (typeof path === 'string') {
|
21
|
-
// path is already a string
|
22
|
-
return path;
|
23
|
-
} else {
|
24
|
-
throw new Error(
|
25
|
-
'Missing or invalid parameter [path] (expected string or array)'
|
26
|
-
);
|
27
|
-
}
|
28
|
-
}
|
29
|
-
|
30
|
-
// -----------------------------------------------------------------------------
|
31
|
-
|
32
|
-
/**
|
33
|
-
* Make sure that the outputted path is an array path
|
34
|
-
* - The input value may be a array path
|
35
|
-
* - The input value may be a string path (no conversion needed)
|
36
|
-
*
|
37
|
-
* @param {string|string[]} path
|
38
|
-
*
|
39
|
-
* @returns {string[]} array path (list of strings)
|
40
|
-
*/
|
41
|
-
// export function fromPath( path )
|
42
|
-
// {
|
43
|
-
// if( typeof path === "string" )
|
44
|
-
// {
|
45
|
-
// return path;
|
46
|
-
// }
|
47
|
-
// else {
|
48
|
-
// expect.array( path,
|
49
|
-
// "Missing or invalid parameter [path] (expected string or string[])" );
|
50
|
-
|
51
|
-
// let strPath = proc.arrayToStringPathWeakMap.get( path );
|
52
|
-
|
53
|
-
// if( strPath )
|
54
|
-
// {
|
55
|
-
// // std.debug( "Using cached value", path );
|
56
|
-
// return strPath;
|
57
|
-
// }
|
58
|
-
|
59
|
-
// // Check array path
|
60
|
-
// for( let j = 0, n = path.length; j < n; j = j + 1 )
|
61
|
-
// {
|
62
|
-
// if( typeof path[j] !== "string" )
|
63
|
-
// {
|
64
|
-
// throw new Error("Invalid array path. Expected array of strings");
|
65
|
-
// }
|
66
|
-
// }
|
67
|
-
|
68
|
-
// strPath = path.join("/");
|
69
|
-
|
70
|
-
// proc.safeArrayPathsWeakMap.set( path, true );
|
71
|
-
// proc.arrayToStringPathWeakMap.set( path, strPath );
|
72
|
-
|
73
|
-
// return strPath;
|
74
|
-
// }
|
75
|
-
// }
|
1
|
+
import { PATH_SEPARATOR } from '../object/index.js';
|
2
|
+
|
3
|
+
/**
|
4
|
+
* Convert a path string to an array path
|
5
|
+
* - The path string will be spit at the `pathSeparator` token
|
6
|
+
* - If the supplied path is already an array, the original array will
|
7
|
+
* be returned
|
8
|
+
*
|
9
|
+
* @param {string|string[]} path
|
10
|
+
* String or array path (e.g. "some.path.to")
|
11
|
+
*
|
12
|
+
* @param {string} [pathSeparator=PATH_SEPARATOR]
|
13
|
+
* A custom path separator to use instead of the default "."
|
14
|
+
*
|
15
|
+
* @returns {string} string path (e.g. "some.path.to")
|
16
|
+
*/
|
17
|
+
export function toStringPath(path, pathSeparator = PATH_SEPARATOR) {
|
18
|
+
if (Array.isArray(path)) {
|
19
|
+
return path.join(pathSeparator);
|
20
|
+
} else if (typeof path === 'string') {
|
21
|
+
// path is already a string
|
22
|
+
return path;
|
23
|
+
} else {
|
24
|
+
throw new Error(
|
25
|
+
'Missing or invalid parameter [path] (expected string or array)'
|
26
|
+
);
|
27
|
+
}
|
28
|
+
}
|
29
|
+
|
30
|
+
// -----------------------------------------------------------------------------
|
31
|
+
|
32
|
+
/**
|
33
|
+
* Make sure that the outputted path is an array path
|
34
|
+
* - The input value may be a array path
|
35
|
+
* - The input value may be a string path (no conversion needed)
|
36
|
+
*
|
37
|
+
* @param {string|string[]} path
|
38
|
+
*
|
39
|
+
* @returns {string[]} array path (list of strings)
|
40
|
+
*/
|
41
|
+
// export function fromPath( path )
|
42
|
+
// {
|
43
|
+
// if( typeof path === "string" )
|
44
|
+
// {
|
45
|
+
// return path;
|
46
|
+
// }
|
47
|
+
// else {
|
48
|
+
// expect.array( path,
|
49
|
+
// "Missing or invalid parameter [path] (expected string or string[])" );
|
50
|
+
|
51
|
+
// let strPath = proc.arrayToStringPathWeakMap.get( path );
|
52
|
+
|
53
|
+
// if( strPath )
|
54
|
+
// {
|
55
|
+
// // std.debug( "Using cached value", path );
|
56
|
+
// return strPath;
|
57
|
+
// }
|
58
|
+
|
59
|
+
// // Check array path
|
60
|
+
// for( let j = 0, n = path.length; j < n; j = j + 1 )
|
61
|
+
// {
|
62
|
+
// if( typeof path[j] !== "string" )
|
63
|
+
// {
|
64
|
+
// throw new Error("Invalid array path. Expected array of strings");
|
65
|
+
// }
|
66
|
+
// }
|
67
|
+
|
68
|
+
// strPath = path.join("/");
|
69
|
+
|
70
|
+
// proc.safeArrayPathsWeakMap.set( path, true );
|
71
|
+
// proc.arrayToStringPathWeakMap.set( path, strPath );
|
72
|
+
|
73
|
+
// return strPath;
|
74
|
+
// }
|
75
|
+
// }
|
@@ -1,54 +1,54 @@
|
|
1
|
-
import * as expect from '../expect/index.js';
|
2
|
-
|
3
|
-
/**
|
4
|
-
* Remove strange characters from a string and replace whitespace by
|
5
|
-
* dashes.
|
6
|
-
*
|
7
|
-
* @returns {string} string that can be used as uri
|
8
|
-
*/
|
9
|
-
export function toUriName(str) {
|
10
|
-
expect.string(str);
|
11
|
-
|
12
|
-
str = str.toLowerCase().replace(/[^a-z0-9]+/gi, '-');
|
13
|
-
|
14
|
-
// TODO: remove duplicate dashes
|
15
|
-
|
16
|
-
return str;
|
17
|
-
}
|
18
|
-
|
19
|
-
/**
|
20
|
-
* Captizalize the first character of a string
|
21
|
-
*
|
22
|
-
* @param {string} str - Input string
|
23
|
-
*
|
24
|
-
* @returns {string} string with first letter capitalized
|
25
|
-
*/
|
26
|
-
export function capitalizeFirst(str) {
|
27
|
-
if (!str.length) {
|
28
|
-
return str;
|
29
|
-
}
|
30
|
-
|
31
|
-
return str.charAt(0).toUpperCase() + str.slice(1);
|
32
|
-
}
|
33
|
-
|
34
|
-
/**
|
35
|
-
* Converts a kebab-case string to Title Case.
|
36
|
-
*
|
37
|
-
* @param {string} kebabString - The kebab-case string to convert
|
38
|
-
* @return {string} The converted Title Case string
|
39
|
-
*/
|
40
|
-
export function kebabToTitleCase(kebabString) {
|
41
|
-
// Check if input is a string
|
42
|
-
if (typeof kebabString !== 'string') {
|
43
|
-
throw new Error('Input must be a string');
|
44
|
-
}
|
45
|
-
|
46
|
-
// Split the string by hyphens
|
47
|
-
return kebabString
|
48
|
-
.split('-')
|
49
|
-
.map((word) => {
|
50
|
-
// Capitalize the first letter of each word
|
51
|
-
return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();
|
52
|
-
})
|
53
|
-
.join(' ');
|
54
|
-
}
|
1
|
+
import * as expect from '../expect/index.js';
|
2
|
+
|
3
|
+
/**
|
4
|
+
* Remove strange characters from a string and replace whitespace by
|
5
|
+
* dashes.
|
6
|
+
*
|
7
|
+
* @returns {string} string that can be used as uri
|
8
|
+
*/
|
9
|
+
export function toUriName(str) {
|
10
|
+
expect.string(str);
|
11
|
+
|
12
|
+
str = str.toLowerCase().replace(/[^a-z0-9]+/gi, '-');
|
13
|
+
|
14
|
+
// TODO: remove duplicate dashes
|
15
|
+
|
16
|
+
return str;
|
17
|
+
}
|
18
|
+
|
19
|
+
/**
|
20
|
+
* Captizalize the first character of a string
|
21
|
+
*
|
22
|
+
* @param {string} str - Input string
|
23
|
+
*
|
24
|
+
* @returns {string} string with first letter capitalized
|
25
|
+
*/
|
26
|
+
export function capitalizeFirst(str) {
|
27
|
+
if (!str.length) {
|
28
|
+
return str;
|
29
|
+
}
|
30
|
+
|
31
|
+
return str.charAt(0).toUpperCase() + str.slice(1);
|
32
|
+
}
|
33
|
+
|
34
|
+
/**
|
35
|
+
* Converts a kebab-case string to Title Case.
|
36
|
+
*
|
37
|
+
* @param {string} kebabString - The kebab-case string to convert
|
38
|
+
* @return {string} The converted Title Case string
|
39
|
+
*/
|
40
|
+
export function kebabToTitleCase(kebabString) {
|
41
|
+
// Check if input is a string
|
42
|
+
if (typeof kebabString !== 'string') {
|
43
|
+
throw new Error('Input must be a string');
|
44
|
+
}
|
45
|
+
|
46
|
+
// Split the string by hyphens
|
47
|
+
return kebabString
|
48
|
+
.split('-')
|
49
|
+
.map((word) => {
|
50
|
+
// Capitalize the first letter of each word
|
51
|
+
return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();
|
52
|
+
})
|
53
|
+
.join(' ');
|
54
|
+
}
|