ctx-core 5.28.1 → 5.29.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.
@@ -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,253 +1,254 @@
1
1
  {
2
- "name": "ctx-core",
3
- "version": "5.28.1",
4
- "description": "ctx-core core library",
5
- "keywords": [
6
- "ctx-core",
7
- "array",
8
- "combinators",
9
- "function",
10
- "object",
11
- "set"
12
- ],
13
- "homepage": "https://github.com/ctx-core/ctx-core#readme",
14
- "bugs": {
15
- "url": "https://github.com/ctx-core/ctx-core/issues"
16
- },
17
- "repository": {
18
- "type": "git",
19
- "url": "https://github.com/ctx-core/ctx-core.git"
20
- },
21
- "license": "Apache-2.0",
22
- "author": "Brian Takita",
23
- "type": "module",
24
- "files": [
25
- "*.d.ts",
26
- "*.js",
27
- "*.json",
28
- "all",
29
- "array",
30
- "atob",
31
- "base16",
32
- "be",
33
- "btoa",
34
- "buffer",
35
- "chain",
36
- "class",
37
- "cli-args",
38
- "color",
39
- "combinators",
40
- "crypto",
41
- "currency",
42
- "data",
43
- "date",
44
- "debounce",
45
- "deep_equal",
46
- "env",
47
- "error",
48
- "event_log",
49
- "falsy",
50
- "fetch",
51
- "fibonacci",
52
- "fs",
53
- "function",
54
- "functional",
55
- "html",
56
- "http",
57
- "math",
58
- "matrix",
59
- "nullish",
60
- "number",
61
- "object",
62
- "promise",
63
- "queue",
64
- "random",
65
- "regex",
66
- "rmemo",
67
- "run",
68
- "set",
69
- "sleep",
70
- "stream",
71
- "string",
72
- "tempfile",
73
- "test",
74
- "time",
75
- "tuple",
76
- "types",
77
- "uri",
78
- "uuid",
79
- "package.json"
80
- ],
81
- "exports": {
82
- ".": "./index.js",
83
- "./all": "./all/index.js",
84
- "./array": "./array/index.js",
85
- "./atob": "./atob/index.js",
86
- "./base16": "./base16/index.js",
87
- "./be": "./be/index.js",
88
- "./btoa": "./btoa/index.js",
89
- "./buffer": "./buffer/index.js",
90
- "./chain": "./chain/index.js",
91
- "./class": "./class/index.js",
92
- "./cli-args": "./cli-args/index.js",
93
- "./color": "./color/index.js",
94
- "./combinators": "./combinators/index.js",
95
- "./crypto": "./crypto/index.js",
96
- "./currency": "./currency/index.js",
97
- "./data": "./data/index.js",
98
- "./date": "./date/index.js",
99
- "./debounce": "./debounce/index.js",
100
- "./deep_equal": "./deep_equal/index.js",
101
- "./env": "./env/index.js",
102
- "./error": "./error/index.js",
103
- "./event_log": "./event_log/index.js",
104
- "./falsy": "./falsy/index.js",
105
- "./fetch": "./fetch/index.js",
106
- "./fibonacci": "./fibonacci/index.js",
107
- "./fs": "./fs/index.js",
108
- "./function": "./function/index.js",
109
- "./functional": "./functional/index.js",
110
- "./html": "./html/index.js",
111
- "./http": "./http/index.js",
112
- "./math": "./math/index.js",
113
- "./matrix": "./matrix/index.js",
114
- "./nullish": "./nullish/index.js",
115
- "./number": "./number/index.js",
116
- "./object": "./object/index.js",
117
- "./promise": "./promise/index.js",
118
- "./queue": "./queue/index.js",
119
- "./random": "./random/index.js",
120
- "./regex": "./regex/index.js",
121
- "./rmemo": "./rmemo/index.js",
122
- "./run": "./run/index.js",
123
- "./set": "./set/index.js",
124
- "./sleep": "./sleep/index.js",
125
- "./stream": "./stream/index.js",
126
- "./string": "./string/index.js",
127
- "./tempfile": "./tempfile/index.js",
128
- "./test": "./test/index.js",
129
- "./time": "./time/index.js",
130
- "./tuple": "./tuple/index.js",
131
- "./types": "./types/index.js",
132
- "./uri": "./uri/index.js",
133
- "./uuid": "./uuid/index.js",
134
- "./package.json": "./package.json"
135
- },
136
- "devDependencies": {
137
- "@arethetypeswrong/cli": "^0.13.6",
138
- "@ctx-core/preprocess": "^0.1.1",
139
- "@size-limit/preset-small-lib": "^11.0.2",
140
- "@types/node": "^20.11.5",
141
- "@types/sinon": "^17.0.3",
142
- "c8": "^9.1.0",
143
- "check-dts": "^0.7.2",
144
- "esbuild": "^0.19.12",
145
- "esmock": "^2.6.3",
146
- "sinon": "^17.0.1",
147
- "size-limit": "^11.0.2",
148
- "tsx": "^4.7.0",
149
- "typescript": "next",
150
- "uvu": "^0.5.6"
151
- },
152
- "publishConfig": {
153
- "access": "public",
154
- "cache": "~/.npm"
155
- },
156
- "sideEffects": false,
157
- "size-limit": [
158
- {
159
- "name": "ctx_",
160
- "import": {
161
- "./be": "{ ctx_ }"
162
- },
163
- "limit": "33 B"
164
- },
165
- {
166
- "name": "ns_ctx_",
167
- "import": {
168
- "./be": "{ ns_ctx_ }"
169
- },
170
- "limit": "85 B"
171
- },
172
- {
173
- "name": "be_",
174
- "import": {
175
- "./be": "{ be_ }"
176
- },
177
- "limit": "99 B"
178
- },
179
- {
180
- "name": "be_ ctx_",
181
- "import": {
182
- "./be": "{ be_, ctx_ }"
183
- },
184
- "limit": "131 B"
185
- },
186
- {
187
- "name": "be_ ns_ctx_",
188
- "import": {
189
- "./be": "{ be_, ctx_, ns_ctx_ }"
190
- },
191
- "limit": "191 B"
192
- },
193
- {
194
- "name": "be_ ctx_ ns_ctx_",
195
- "import": {
196
- "./be": "{ be_, ctx_, ns_ctx_ }"
197
- },
198
- "limit": "191 B"
199
- },
200
- {
201
- "name": "memo_",
202
- "import": {
203
- "./rmemo": "{ memo_ }"
204
- },
205
- "limit": "352 B"
206
- },
207
- {
208
- "name": "memo_ sig_",
209
- "import": {
210
- "./rmemo": "{ sig_, memo_ }"
211
- },
212
- "limit": "370 B"
213
- },
214
- {
215
- "name": "memo_ sig_ be_ ctx_",
216
- "import": {
217
- "./rmemo": "{ sig_, memo_, be_, ctx_ }"
218
- },
219
- "limit": "471 B"
220
- },
221
- {
222
- "name": "memo_ sig_ be_ ctx_ be_memo_pair_ be_sig_triple_",
223
- "import": {
224
- "./rmemo": "{ sig_, memo_, be_, ctx_, be_memo_pair_, be_sig_triple_ }"
225
- },
226
- "limit": "570 B"
227
- },
228
- {
229
- "name": "uuid",
230
- "import": {
231
- "./uuid": "{ uuid_ }"
232
- },
233
- "limit": "39 B"
234
- },
235
- {
236
- "name": "short uuid",
237
- "import": {
238
- "./uuid": "{ short_uuid_ }"
239
- },
240
- "limit": "116 B"
241
- }
242
- ],
243
- "scripts": {
244
- "build": ":",
245
- "clean": ":",
246
- "exec": "$@",
247
- "test": "pnpm run /^test:/",
248
- "test:size": "size-limit",
249
- "test:type": "check-dts",
250
- "test:unit": "NODE_OPTIONS=--loader=esmock tsx node_modules/uvu/bin.js . '\\.test\\.(ts|js)$'",
251
- "disable:test:coverage": "c8 pnpm test:unit"
252
- }
2
+ "name": "ctx-core",
3
+ "version": "5.29.0",
4
+ "description": "ctx-core core library",
5
+ "keywords": [
6
+ "ctx-core",
7
+ "array",
8
+ "combinators",
9
+ "function",
10
+ "object",
11
+ "set"
12
+ ],
13
+ "homepage": "https://github.com/ctx-core/ctx-core#readme",
14
+ "bugs": {
15
+ "url": "https://github.com/ctx-core/ctx-core/issues"
16
+ },
17
+ "repository": {
18
+ "type": "git",
19
+ "url": "https://github.com/ctx-core/ctx-core.git"
20
+ },
21
+ "license": "Apache-2.0",
22
+ "author": "Brian Takita",
23
+ "type": "module",
24
+ "files": [
25
+ "*.d.ts",
26
+ "*.js",
27
+ "*.json",
28
+ "all",
29
+ "array",
30
+ "atob",
31
+ "base16",
32
+ "be",
33
+ "btoa",
34
+ "buffer",
35
+ "chain",
36
+ "class",
37
+ "cli-args",
38
+ "color",
39
+ "combinators",
40
+ "crypto",
41
+ "currency",
42
+ "data",
43
+ "date",
44
+ "debounce",
45
+ "deep_equal",
46
+ "env",
47
+ "error",
48
+ "event_log",
49
+ "falsy",
50
+ "fetch",
51
+ "fibonacci",
52
+ "fs",
53
+ "function",
54
+ "functional",
55
+ "html",
56
+ "http",
57
+ "math",
58
+ "matrix",
59
+ "nullish",
60
+ "number",
61
+ "object",
62
+ "promise",
63
+ "queue",
64
+ "random",
65
+ "regex",
66
+ "rmemo",
67
+ "run",
68
+ "set",
69
+ "sleep",
70
+ "stream",
71
+ "string",
72
+ "tempfile",
73
+ "test",
74
+ "time",
75
+ "tuple",
76
+ "types",
77
+ "uri",
78
+ "uuid",
79
+ "package.json"
80
+ ],
81
+ "exports": {
82
+ ".": "./index.js",
83
+ "./all": "./all/index.js",
84
+ "./array": "./array/index.js",
85
+ "./atob": "./atob/index.js",
86
+ "./base16": "./base16/index.js",
87
+ "./be": "./be/index.js",
88
+ "./btoa": "./btoa/index.js",
89
+ "./buffer": "./buffer/index.js",
90
+ "./chain": "./chain/index.js",
91
+ "./class": "./class/index.js",
92
+ "./cli-args": "./cli-args/index.js",
93
+ "./color": "./color/index.js",
94
+ "./combinators": "./combinators/index.js",
95
+ "./crypto": "./crypto/index.js",
96
+ "./currency": "./currency/index.js",
97
+ "./data": "./data/index.js",
98
+ "./date": "./date/index.js",
99
+ "./debounce": "./debounce/index.js",
100
+ "./deep_equal": "./deep_equal/index.js",
101
+ "./env": "./env/index.js",
102
+ "./error": "./error/index.js",
103
+ "./event_log": "./event_log/index.js",
104
+ "./falsy": "./falsy/index.js",
105
+ "./fetch": "./fetch/index.js",
106
+ "./fibonacci": "./fibonacci/index.js",
107
+ "./fs": "./fs/index.js",
108
+ "./function": "./function/index.js",
109
+ "./functional": "./functional/index.js",
110
+ "./html": "./html/index.js",
111
+ "./http": "./http/index.js",
112
+ "./math": "./math/index.js",
113
+ "./matrix": "./matrix/index.js",
114
+ "./nullish": "./nullish/index.js",
115
+ "./number": "./number/index.js",
116
+ "./object": "./object/index.js",
117
+ "./promise": "./promise/index.js",
118
+ "./queue": "./queue/index.js",
119
+ "./random": "./random/index.js",
120
+ "./regex": "./regex/index.js",
121
+ "./rmemo": "./rmemo/index.js",
122
+ "./run": "./run/index.js",
123
+ "./set": "./set/index.js",
124
+ "./sleep": "./sleep/index.js",
125
+ "./stream": "./stream/index.js",
126
+ "./string": "./string/index.js",
127
+ "./tempfile": "./tempfile/index.js",
128
+ "./test": "./test/index.js",
129
+ "./time": "./time/index.js",
130
+ "./tuple": "./tuple/index.js",
131
+ "./types": "./types/index.js",
132
+ "./uri": "./uri/index.js",
133
+ "./uuid": "./uuid/index.js",
134
+ "./package.json": "./package.json"
135
+ },
136
+ "scripts": {
137
+ "build": ":",
138
+ "clean": ":",
139
+ "exec": "$@",
140
+ "prepublishOnly": "pnpm clean && pnpm build && pnpm test",
141
+ "test": "pnpm run /^test:/",
142
+ "test:size": "size-limit",
143
+ "test:type": "check-dts",
144
+ "test:unit": "NODE_OPTIONS=--loader=esmock tsx node_modules/uvu/bin.js . '\\.test\\.(ts|js)$'",
145
+ "disable:test:coverage": "c8 pnpm test:unit"
146
+ },
147
+ "devDependencies": {
148
+ "@arethetypeswrong/cli": "^0.13.6",
149
+ "@ctx-core/preprocess": "^0.1.1",
150
+ "@size-limit/preset-small-lib": "^11.0.2",
151
+ "@types/node": "^20.11.6",
152
+ "@types/sinon": "^17.0.3",
153
+ "c8": "^9.1.0",
154
+ "check-dts": "^0.7.2",
155
+ "esbuild": "^0.19.12",
156
+ "esmock": "^2.6.3",
157
+ "sinon": "^17.0.1",
158
+ "size-limit": "^11.0.2",
159
+ "tsx": "^4.7.0",
160
+ "typescript": "next",
161
+ "uvu": "^0.5.6"
162
+ },
163
+ "publishConfig": {
164
+ "access": "public",
165
+ "cache": "~/.npm"
166
+ },
167
+ "sideEffects": false,
168
+ "size-limit": [
169
+ {
170
+ "name": "ctx_",
171
+ "import": {
172
+ "./be": "{ ctx_ }"
173
+ },
174
+ "limit": "33 B"
175
+ },
176
+ {
177
+ "name": "ns_ctx_",
178
+ "import": {
179
+ "./be": "{ ns_ctx_ }"
180
+ },
181
+ "limit": "85 B"
182
+ },
183
+ {
184
+ "name": "be_",
185
+ "import": {
186
+ "./be": "{ be_ }"
187
+ },
188
+ "limit": "99 B"
189
+ },
190
+ {
191
+ "name": "be_ ctx_",
192
+ "import": {
193
+ "./be": "{ be_, ctx_ }"
194
+ },
195
+ "limit": "131 B"
196
+ },
197
+ {
198
+ "name": "be_ ns_ctx_",
199
+ "import": {
200
+ "./be": "{ be_, ctx_, ns_ctx_ }"
201
+ },
202
+ "limit": "191 B"
203
+ },
204
+ {
205
+ "name": "be_ ctx_ ns_ctx_",
206
+ "import": {
207
+ "./be": "{ be_, ctx_, ns_ctx_ }"
208
+ },
209
+ "limit": "191 B"
210
+ },
211
+ {
212
+ "name": "memo_",
213
+ "import": {
214
+ "./rmemo": "{ memo_ }"
215
+ },
216
+ "limit": "352 B"
217
+ },
218
+ {
219
+ "name": "memo_ sig_",
220
+ "import": {
221
+ "./rmemo": "{ sig_, memo_ }"
222
+ },
223
+ "limit": "370 B"
224
+ },
225
+ {
226
+ "name": "memo_ sig_ be_ ctx_",
227
+ "import": {
228
+ "./rmemo": "{ sig_, memo_, be_, ctx_ }"
229
+ },
230
+ "limit": "471 B"
231
+ },
232
+ {
233
+ "name": "memo_ sig_ be_ ctx_ be_memo_pair_ be_sig_triple_",
234
+ "import": {
235
+ "./rmemo": "{ sig_, memo_, be_, ctx_, be_memo_pair_, be_sig_triple_ }"
236
+ },
237
+ "limit": "570 B"
238
+ },
239
+ {
240
+ "name": "uuid",
241
+ "import": {
242
+ "./uuid": "{ uuid_ }"
243
+ },
244
+ "limit": "39 B"
245
+ },
246
+ {
247
+ "name": "short uuid",
248
+ "import": {
249
+ "./uuid": "{ short_uuid_ }"
250
+ },
251
+ "limit": "116 B"
252
+ }
253
+ ]
253
254
  }