ctx-core 5.28.1 → 5.30.0

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.
@@ -5,7 +5,9 @@ export declare function memosig_<val_T, E = unknown>(def:memo_def_T<val_T, E>):s
5
5
  export declare function lock_memosig_<val_T, E = unknown>(def:memo_def_T<val_T, E>):sig_T<val_T, E>
6
6
  export declare function memo__bind<A extends unknown[], R, E = unknown>(
7
7
  fn:(...arg_a:A)=>R
8
- ):((...arg_a:A)=>R)&{
8
+ ):memo__bind_T<A, R, E>
9
+ export type memo__bind_T<A extends unknown[], R, E = unknown> =
10
+ ((...arg_a:A)=>R)&{
9
11
  memo_<val_T>(def:memo_def_T<val_T, E>):memo_T<val_T>
10
12
  }
11
13
  export declare function rmemo__on<val_T, E = unknown>(rmemo:rmemo_T<val_T, E>, off_fn?:(rmemo:rmemo_T<val_T, E>)=>unknown):void
@@ -1,5 +1,5 @@
1
- import type { url_segment_T } from '../url_segment/index.js'
2
- export declare function url__join(url_segment_a:url_segment_T[]):string
1
+ import type { nested_url_segment_a_T } from '../url_segment/index.js'
2
+ export declare function url__join(...url_segment_a:nested_url_segment_a_T):string
3
3
  export {
4
4
  url__join as join_url,
5
5
  }
@@ -1,24 +1,28 @@
1
1
  /// <reference types="../index.d.ts" />
2
2
  /**
3
- * @param {url_segment_T[]}url_segment_a
3
+ * @param {nested_url_segment_a_T}url_segment_a
4
4
  * @returns {string}
5
5
  */
6
- export function url__join(url_segment_a) {
7
- return url_segment_a.reduce((
8
- url,
9
- url_segment
10
- )=>{
11
- const url_segment_str = url_segment.toString()
12
- if (~[
13
- '/',
14
- '?',
15
- '&'
16
- ].indexOf(url_segment_str.slice(0, 1))) {
17
- return `${url}${url_segment_str}`
18
- } else {
19
- return `${url}/${url_segment_str}`
20
- }
21
- }, '')
6
+ export function url__join(...url_segment_a) {
7
+ let url = ''
8
+ let in_query = 0
9
+ for (let url_segment of url_segment_a.flat(Infinity)) {
10
+ let url_segment_str = '' + url_segment
11
+ url += (
12
+ ~[
13
+ '/',
14
+ '?',
15
+ '&'
16
+ ].indexOf(url_segment_str[0])
17
+ || (!url && url_segment_str.includes('://'))
18
+ ? url_segment_str
19
+ : in_query
20
+ ? '&' + url_segment_str
21
+ : '/' + url_segment_str
22
+ )
23
+ if (url_segment_str.includes('?')) in_query = 1
24
+ }
25
+ return url
22
26
  }
23
27
  export {
24
28
  url__join as join_url,
@@ -0,0 +1,27 @@
1
+ import { test } from 'uvu'
2
+ import { equal } from 'uvu/assert'
3
+ import { url__join } from './index.js'
4
+ test('url__join', ()=>{
5
+ equal(
6
+ url__join('foo', 'bar', 'baz'),
7
+ '/foo/bar/baz')
8
+ equal(
9
+ url__join(['foo', 'bar', 'baz']),
10
+ '/foo/bar/baz')
11
+ equal(
12
+ url__join('foo', ['bar', 'baz']),
13
+ '/foo/bar/baz')
14
+ equal(
15
+ url__join(['foo', ['bar', 'baz']]),
16
+ '/foo/bar/baz')
17
+ equal(
18
+ url__join(['foo', ['bar', 'baz', ['?id=1', '&something=else']]]),
19
+ '/foo/bar/baz?id=1&something=else')
20
+ equal(
21
+ url__join(['foo', ['bar', 'baz', ['?id=1', 'something=else']]]),
22
+ '/foo/bar/baz?id=1&something=else')
23
+ equal(
24
+ url__join(['http://localhost/foo/bar/baz?id=1', [['something=else']]]),
25
+ 'http://localhost/foo/bar/baz?id=1&something=else')
26
+ })
27
+ test.run()
@@ -1,2 +1,4 @@
1
1
  export declare type url_segment_T = string|number|boolean
2
2
  export declare type urlSegmentT = url_segment_T
3
+ export interface nested_url_segment_a_T extends Array<nested_url_segment_a_T | url_segment_T> {
4
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ctx-core",
3
- "version": "5.28.1",
3
+ "version": "5.30.0",
4
4
  "description": "ctx-core core library",
5
5
  "keywords": [
6
6
  "ctx-core",
@@ -137,7 +137,7 @@
137
137
  "@arethetypeswrong/cli": "^0.13.6",
138
138
  "@ctx-core/preprocess": "^0.1.1",
139
139
  "@size-limit/preset-small-lib": "^11.0.2",
140
- "@types/node": "^20.11.5",
140
+ "@types/node": "^20.11.6",
141
141
  "@types/sinon": "^17.0.3",
142
142
  "c8": "^9.1.0",
143
143
  "check-dts": "^0.7.2",