@phosart/common 0.4.35 → 0.4.36

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.
@@ -7,7 +7,7 @@ export { formatDate } from './date.ts';
7
7
  export { markdown } from './markdown.ts';
8
8
  export { smoothScroll } from './smoothscroll.ts';
9
9
  export { setLibraryConfig, type LibraryConfig } from './phosart_config.svelte.ts';
10
- export { asRecord, multiRecordBy, deduplicateBy } from './util.ts';
10
+ export { asRecord, multiRecordBy, deduplicateBy, sveltekitAbsolutePath, sveltekitAnchoredPath } from './util.ts';
11
11
  export { asTree, pathView } from './tree.ts';
12
12
  export type { FolderElement, GalleryElement, GalleryTree, TreeElement } from './tree.ts';
13
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/util/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAClF,YAAY,EACX,QAAQ,EACR,MAAM,EACN,SAAS,EACT,YAAY,EACZ,OAAO,EACP,UAAU,EACV,KAAK,EACL,gBAAgB,EAChB,OAAO,EACP,MAAM,EACN,UAAU,EACV,YAAY,EACZ,WAAW,EACX,eAAe,EACf,mBAAmB,EACnB,WAAW,EACX,aAAa,EACb,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACrF,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClF,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,KAAK,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAClF,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AACnE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC7C,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/util/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAClF,YAAY,EACX,QAAQ,EACR,MAAM,EACN,SAAS,EACT,YAAY,EACZ,OAAO,EACP,UAAU,EACV,KAAK,EACL,gBAAgB,EAChB,OAAO,EACP,MAAM,EACN,UAAU,EACV,YAAY,EACZ,WAAW,EACX,eAAe,EACf,mBAAmB,EACnB,WAAW,EACX,aAAa,EACb,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACrF,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClF,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,KAAK,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAClF,OAAO,EACN,QAAQ,EACR,aAAa,EACb,aAAa,EACb,qBAAqB,EACrB,qBAAqB,EACrB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC7C,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC"}
@@ -6,5 +6,5 @@ export { formatDate } from "./date.js";
6
6
  export { markdown } from "./markdown.js";
7
7
  export { smoothScroll } from "./smoothscroll.js";
8
8
  export { setLibraryConfig } from "./phosart_config.svelte.js";
9
- export { asRecord, multiRecordBy, deduplicateBy } from "./util.js";
9
+ export { asRecord, multiRecordBy, deduplicateBy, sveltekitAbsolutePath, sveltekitAnchoredPath } from "./util.js";
10
10
  export { asTree, pathView } from "./tree.js";
@@ -1,4 +1,6 @@
1
1
  export declare function asRecord<T>(arr: T[], key: (el: T) => string, combine?: (a: T, b: T) => T): Record<string, T>;
2
2
  export declare function multiRecordBy<T>(arr: T[], key: (el: T) => string): Record<string, T[]>;
3
3
  export declare function deduplicateBy<T>(arr: T[], key: (el: T) => string, combine?: (a: T, b: T) => T): T[];
4
+ export declare function sveltekitAbsolutePath(resolveRelative: (s: string) => string, getCurrentPath: () => string): (s: string) => string;
5
+ export declare function sveltekitAnchoredPath(origin: string, resolveRelative: (s: string) => string, getCurrentPath: () => string): (s: string) => string;
4
6
  //# sourceMappingURL=util.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/lib/util/util.ts"],"names":[],"mappings":"AAIA,wBAAgB,QAAQ,CAAC,CAAC,EACzB,GAAG,EAAE,CAAC,EAAE,EACR,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,MAAM,EACtB,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,GACzB,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAYnB;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAMtF;AAED,wBAAgB,aAAa,CAAC,CAAC,EAC9B,GAAG,EAAE,CAAC,EAAE,EACR,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,MAAM,EACtB,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,GACzB,CAAC,EAAE,CAEL"}
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/lib/util/util.ts"],"names":[],"mappings":"AAIA,wBAAgB,QAAQ,CAAC,CAAC,EACzB,GAAG,EAAE,CAAC,EAAE,EACR,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,MAAM,EACtB,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,GACzB,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAYnB;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAMtF;AAED,wBAAgB,aAAa,CAAC,CAAC,EAC9B,GAAG,EAAE,CAAC,EAAE,EACR,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,MAAM,EACtB,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,GACzB,CAAC,EAAE,CAEL;AAED,wBAAgB,qBAAqB,CACpC,eAAe,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,EACtC,cAAc,EAAE,MAAM,MAAM,GAC1B,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAmBvB;AAED,wBAAgB,qBAAqB,CACpC,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,EACtC,cAAc,EAAE,MAAM,MAAM,GAC1B,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAGvB"}
package/dist/util/util.js CHANGED
@@ -20,3 +20,23 @@ export function multiRecordBy(arr, key) {
20
20
  export function deduplicateBy(arr, key, combine) {
21
21
  return Object.values(asRecord(arr, key, combine));
22
22
  }
23
+ export function sveltekitAbsolutePath(resolveRelative, getCurrentPath) {
24
+ return (s) => {
25
+ const pagepath = getCurrentPath().split('/').slice(0, -1);
26
+ const rel = resolveRelative(s).split('/');
27
+ if (rel[0]?.length === 0) {
28
+ // It's absolute
29
+ return rel.join('/');
30
+ }
31
+ const backs = rel.filter((r) => r == '..').length;
32
+ const resolved = pagepath
33
+ .slice(0, pagepath.length - backs)
34
+ .concat(rel.slice(backs))
35
+ .join('/');
36
+ return resolved;
37
+ };
38
+ }
39
+ export function sveltekitAnchoredPath(origin, resolveRelative, getCurrentPath) {
40
+ const abspath = sveltekitAbsolutePath(resolveRelative, getCurrentPath);
41
+ return (s) => `${origin}${abspath(s)}`;
42
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@phosart/common",
3
- "version": "0.4.35",
3
+ "version": "0.4.36",
4
4
  "files": [
5
5
  "dist",
6
6
  "!dist/**/*.test.*",
@@ -25,6 +25,12 @@ export { formatDate } from './date.ts';
25
25
  export { markdown } from './markdown.ts';
26
26
  export { smoothScroll } from './smoothscroll.ts';
27
27
  export { setLibraryConfig, type LibraryConfig } from './phosart_config.svelte.ts';
28
- export { asRecord, multiRecordBy, deduplicateBy } from './util.ts';
28
+ export {
29
+ asRecord,
30
+ multiRecordBy,
31
+ deduplicateBy,
32
+ sveltekitAbsolutePath,
33
+ sveltekitAnchoredPath
34
+ } from './util.ts';
29
35
  export { asTree, pathView } from './tree.ts';
30
36
  export type { FolderElement, GalleryElement, GalleryTree, TreeElement } from './tree.ts';
@@ -35,3 +35,36 @@ export function deduplicateBy<T>(
35
35
  ): T[] {
36
36
  return Object.values(asRecord(arr, key, combine));
37
37
  }
38
+
39
+ export function sveltekitAbsolutePath(
40
+ resolveRelative: (s: string) => string,
41
+ getCurrentPath: () => string
42
+ ): (s: string) => string {
43
+ return (s) => {
44
+ const pagepath = getCurrentPath().split('/').slice(0, -1);
45
+ const rel = resolveRelative(s).split('/');
46
+
47
+ if (rel[0]?.length === 0) {
48
+ // It's absolute
49
+ return rel.join('/');
50
+ }
51
+
52
+ const backs = rel.filter((r) => r == '..').length;
53
+
54
+ const resolved = pagepath
55
+ .slice(0, pagepath.length - backs)
56
+ .concat(rel.slice(backs))
57
+ .join('/');
58
+
59
+ return resolved;
60
+ };
61
+ }
62
+
63
+ export function sveltekitAnchoredPath(
64
+ origin: string,
65
+ resolveRelative: (s: string) => string,
66
+ getCurrentPath: () => string
67
+ ): (s: string) => string {
68
+ const abspath = sveltekitAbsolutePath(resolveRelative, getCurrentPath);
69
+ return (s) => `${origin}${abspath(s)}`;
70
+ }