@kubb/core 2.17.0 → 2.18.1
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/dist/{chunk-C6JPLJPT.cjs → chunk-2H4XNW5D.cjs} +351 -267
- package/dist/chunk-2H4XNW5D.cjs.map +1 -0
- package/dist/chunk-2OWVHAMB.cjs +2584 -0
- package/dist/chunk-2OWVHAMB.cjs.map +1 -0
- package/dist/chunk-3PQTRXZD.js +1597 -0
- package/dist/chunk-3PQTRXZD.js.map +1 -0
- package/dist/{chunk-PVJACA4A.js → chunk-4X5FFJPJ.js} +35 -2
- package/dist/chunk-4X5FFJPJ.js.map +1 -0
- package/dist/{chunk-6V72PGTE.cjs → chunk-5T2QA53B.cjs} +139 -3
- package/dist/chunk-5T2QA53B.cjs.map +1 -0
- package/dist/{chunk-CWXJJLZF.cjs → chunk-7HFYOZ7F.cjs} +12 -4
- package/dist/chunk-7HFYOZ7F.cjs.map +1 -0
- package/dist/chunk-FRT5NM5I.js +311 -0
- package/dist/chunk-FRT5NM5I.js.map +1 -0
- package/dist/chunk-I64YA7CN.cjs +322 -0
- package/dist/chunk-I64YA7CN.cjs.map +1 -0
- package/dist/{chunk-NLZ2T737.js → chunk-MDO6MCFJ.js} +9 -2
- package/dist/chunk-MDO6MCFJ.js.map +1 -0
- package/dist/{chunk-JFESCSNU.cjs → chunk-OCUNVJPQ.cjs} +6 -8
- package/dist/chunk-OCUNVJPQ.cjs.map +1 -0
- package/dist/{chunk-PQ7P6QX5.cjs → chunk-SU2W2A6V.cjs} +3 -3
- package/dist/{chunk-YQ5ZU5PV.js → chunk-UCKFXEKM.js} +3 -5
- package/dist/{chunk-YQ5ZU5PV.js.map → chunk-UCKFXEKM.js.map} +1 -1
- package/dist/fs.cjs +3 -6
- package/dist/fs.cjs.map +1 -1
- package/dist/fs.js +5 -7
- package/dist/index.cjs +10 -2553
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +6 -6
- package/dist/index.d.ts +6 -6
- package/dist/index.js +21 -1576
- package/dist/index.js.map +1 -1
- package/dist/logger.cjs +3 -4
- package/dist/mocks.cjs +19 -6
- package/dist/mocks.cjs.map +1 -1
- package/dist/mocks.d.cts +3 -2
- package/dist/mocks.d.ts +3 -2
- package/dist/mocks.js +16 -2
- package/dist/mocks.js.map +1 -1
- package/dist/transformers.cjs +3 -5
- package/dist/transformers.js +3 -5
- package/dist/utils.cjs +26 -194
- package/dist/utils.cjs.map +1 -1
- package/dist/utils.d.cts +4 -1
- package/dist/utils.d.ts +4 -1
- package/dist/utils.js +12 -172
- package/dist/utils.js.map +1 -1
- package/globals.d.ts +9 -12
- package/package.json +6 -6
- package/src/BarrelManager.ts +1 -1
- package/src/FileManager.ts +9 -9
- package/src/PluginManager.ts +6 -6
- package/src/build.ts +22 -10
- package/src/index.ts +1 -1
- package/src/plugin.ts +5 -9
- package/src/types.ts +4 -2
- package/src/utils/getParser.ts +17 -0
- package/src/utils/index.ts +1 -0
- package/dist/chunk-4ARKZPSY.js +0 -36
- package/dist/chunk-4ARKZPSY.js.map +0 -1
- package/dist/chunk-5PLDNXZK.js +0 -10
- package/dist/chunk-5PLDNXZK.js.map +0 -1
- package/dist/chunk-6V72PGTE.cjs.map +0 -1
- package/dist/chunk-C6JPLJPT.cjs.map +0 -1
- package/dist/chunk-CFHVVM3A.cjs +0 -132
- package/dist/chunk-CFHVVM3A.cjs.map +0 -1
- package/dist/chunk-CWXJJLZF.cjs.map +0 -1
- package/dist/chunk-FU3AZXHF.cjs +0 -19
- package/dist/chunk-FU3AZXHF.cjs.map +0 -1
- package/dist/chunk-GBVPADCA.js +0 -127
- package/dist/chunk-GBVPADCA.js.map +0 -1
- package/dist/chunk-JFESCSNU.cjs.map +0 -1
- package/dist/chunk-LEPKPXA4.cjs +0 -143
- package/dist/chunk-LEPKPXA4.cjs.map +0 -1
- package/dist/chunk-NLZ2T737.js.map +0 -1
- package/dist/chunk-PVJACA4A.js.map +0 -1
- package/dist/chunk-T7WVNL7N.cjs +0 -94
- package/dist/chunk-T7WVNL7N.cjs.map +0 -1
- /package/dist/{chunk-PQ7P6QX5.cjs.map → chunk-SU2W2A6V.cjs.map} +0 -0
package/src/PluginManager.ts
CHANGED
|
@@ -6,7 +6,7 @@ import { PromiseManager } from './PromiseManager.ts'
|
|
|
6
6
|
import { ValidationPluginError } from './errors.ts'
|
|
7
7
|
import { readSync } from './fs/read.ts'
|
|
8
8
|
import { LogLevel } from './logger.ts'
|
|
9
|
-
import {
|
|
9
|
+
import { pluginCore } from './plugin.ts'
|
|
10
10
|
import { transformReservedWord } from './transformers/transformReservedWord.ts'
|
|
11
11
|
import { EventEmitter } from './utils/EventEmitter.ts'
|
|
12
12
|
import { setUniqueName } from './utils/uniqueName.ts'
|
|
@@ -14,7 +14,7 @@ import { setUniqueName } from './utils/uniqueName.ts'
|
|
|
14
14
|
import type { PossiblePromise } from '@kubb/types'
|
|
15
15
|
import type { KubbFile } from './FileManager.ts'
|
|
16
16
|
import type { Logger } from './logger.ts'
|
|
17
|
-
import type {
|
|
17
|
+
import type { PluginCore } from './plugin.ts'
|
|
18
18
|
import type {
|
|
19
19
|
Config,
|
|
20
20
|
GetPluginFactoryOptions,
|
|
@@ -89,7 +89,7 @@ export class PluginManager {
|
|
|
89
89
|
|
|
90
90
|
readonly executed: Array<Executer> = []
|
|
91
91
|
readonly logger: Logger
|
|
92
|
-
readonly #core: Plugin<
|
|
92
|
+
readonly #core: Plugin<PluginCore>
|
|
93
93
|
|
|
94
94
|
readonly #usedPluginNames: Record<string, number> = {}
|
|
95
95
|
readonly #promiseManager: PromiseManager
|
|
@@ -110,7 +110,7 @@ export class PluginManager {
|
|
|
110
110
|
|
|
111
111
|
const plugins = config.plugins || []
|
|
112
112
|
|
|
113
|
-
const core =
|
|
113
|
+
const core = pluginCore({
|
|
114
114
|
config,
|
|
115
115
|
logger: this.logger,
|
|
116
116
|
pluginManager: this,
|
|
@@ -121,7 +121,7 @@ export class PluginManager {
|
|
|
121
121
|
})
|
|
122
122
|
|
|
123
123
|
// call core.api.call with empty context so we can transform `api()` to `api: {}`
|
|
124
|
-
this.#core = this.#parse(core as unknown as UserPlugin, this as any, core.api.call(null as any)) as Plugin<
|
|
124
|
+
this.#core = this.#parse(core as unknown as UserPlugin, this as any, core.api.call(null as any)) as Plugin<PluginCore>
|
|
125
125
|
|
|
126
126
|
this.plugins = [this.#core, ...plugins].map((plugin) => {
|
|
127
127
|
return this.#parse(plugin as UserPlugin, this, this.#core.api)
|
|
@@ -624,7 +624,7 @@ export class PluginManager {
|
|
|
624
624
|
#parse<TPlugin extends UserPluginWithLifeCycle>(
|
|
625
625
|
plugin: TPlugin,
|
|
626
626
|
pluginManager: PluginManager,
|
|
627
|
-
context:
|
|
627
|
+
context: PluginCore['api'] | undefined,
|
|
628
628
|
): Plugin<GetPluginFactoryOptions<TPlugin>> {
|
|
629
629
|
const usedPluginNames = pluginManager.#usedPluginNames
|
|
630
630
|
|
package/src/build.ts
CHANGED
|
@@ -65,7 +65,7 @@ async function setup(options: BuildOptions): Promise<PluginManager> {
|
|
|
65
65
|
const task = async (file: KubbFile.ResolvedFile): Promise<KubbFile.ResolvedFile> => {
|
|
66
66
|
const { path } = file
|
|
67
67
|
|
|
68
|
-
let source: string | null = FileManager.getSource(file)
|
|
68
|
+
let source: string | null = await FileManager.getSource(file)
|
|
69
69
|
|
|
70
70
|
const { result: loadedResult } = await pluginManager.hookFirst({
|
|
71
71
|
hookName: 'load',
|
|
@@ -188,11 +188,15 @@ export async function build(options: BuildOptions): Promise<BuildOutput> {
|
|
|
188
188
|
logger.emit('end', '💾 Writing completed')
|
|
189
189
|
}
|
|
190
190
|
|
|
191
|
-
|
|
192
|
-
|
|
191
|
+
const files = await Promise.all(
|
|
192
|
+
fileManager.files.map(async (file) => ({
|
|
193
193
|
...file,
|
|
194
|
-
source: FileManager.getSource(file),
|
|
194
|
+
source: await FileManager.getSource(file),
|
|
195
195
|
})),
|
|
196
|
+
)
|
|
197
|
+
|
|
198
|
+
return {
|
|
199
|
+
files,
|
|
196
200
|
pluginManager,
|
|
197
201
|
}
|
|
198
202
|
}
|
|
@@ -214,21 +218,29 @@ export async function safeBuild(options: BuildOptions): Promise<BuildOutput> {
|
|
|
214
218
|
logger.emit('end', '💾 Writing completed')
|
|
215
219
|
}
|
|
216
220
|
} catch (e) {
|
|
217
|
-
|
|
218
|
-
|
|
221
|
+
const files = await Promise.all(
|
|
222
|
+
fileManager.files.map(async (file) => ({
|
|
219
223
|
...file,
|
|
220
|
-
source: FileManager.getSource(file),
|
|
224
|
+
source: await FileManager.getSource(file),
|
|
221
225
|
})),
|
|
226
|
+
)
|
|
227
|
+
|
|
228
|
+
return {
|
|
229
|
+
files,
|
|
222
230
|
pluginManager,
|
|
223
231
|
error: e as Error,
|
|
224
232
|
}
|
|
225
233
|
}
|
|
226
234
|
|
|
227
|
-
|
|
228
|
-
|
|
235
|
+
const files = await Promise.all(
|
|
236
|
+
fileManager.files.map(async (file) => ({
|
|
229
237
|
...file,
|
|
230
|
-
source: FileManager.getSource(file),
|
|
238
|
+
source: await FileManager.getSource(file),
|
|
231
239
|
})),
|
|
240
|
+
)
|
|
241
|
+
|
|
242
|
+
return {
|
|
243
|
+
files,
|
|
232
244
|
pluginManager,
|
|
233
245
|
}
|
|
234
246
|
}
|
package/src/index.ts
CHANGED
|
@@ -4,7 +4,7 @@ export { Warning } from './errors.ts'
|
|
|
4
4
|
export { FileManager, KubbFile } from './FileManager.ts'
|
|
5
5
|
export { Generator } from './Generator.ts'
|
|
6
6
|
export { PackageManager } from './PackageManager.ts'
|
|
7
|
-
export { createPlugin
|
|
7
|
+
export { createPlugin } from './plugin.ts'
|
|
8
8
|
export { PluginManager } from './PluginManager.ts'
|
|
9
9
|
export { PromiseManager } from './PromiseManager.ts'
|
|
10
10
|
export type * from './types.ts'
|
package/src/plugin.ts
CHANGED
|
@@ -8,8 +8,8 @@ import type { Plugin, PluginContext, PluginFactoryOptions, UserPluginWithLifeCyc
|
|
|
8
8
|
|
|
9
9
|
type PluginFactory<T extends PluginFactoryOptions = PluginFactoryOptions> = (options: T['options']) => UserPluginWithLifeCycle<T>
|
|
10
10
|
|
|
11
|
-
export function createPlugin<T extends PluginFactoryOptions = PluginFactoryOptions>(factory: PluginFactory<T>) {
|
|
12
|
-
return (options
|
|
11
|
+
export function createPlugin<T extends PluginFactoryOptions = PluginFactoryOptions>(factory: PluginFactory<T>): PluginFactory<T> {
|
|
12
|
+
return (options) => {
|
|
13
13
|
return factory(options)
|
|
14
14
|
}
|
|
15
15
|
}
|
|
@@ -26,19 +26,15 @@ type Options = {
|
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
// not publicly exported
|
|
29
|
-
export type
|
|
29
|
+
export type PluginCore = PluginFactoryOptions<'core', Options, Options, PluginContext, never>
|
|
30
30
|
|
|
31
|
-
export const
|
|
32
|
-
export const pluginKey: CorePluginOptions['key'] = [pluginName] satisfies CorePluginOptions['key']
|
|
33
|
-
|
|
34
|
-
export const definePlugin = createPlugin<CorePluginOptions>((options) => {
|
|
31
|
+
export const pluginCore = createPlugin<PluginCore>((options) => {
|
|
35
32
|
const { fileManager, pluginManager, resolvePath, resolveName, logger } = options
|
|
36
33
|
|
|
37
34
|
return {
|
|
38
|
-
name:
|
|
35
|
+
name: 'core',
|
|
39
36
|
options,
|
|
40
37
|
key: ['core'],
|
|
41
|
-
|
|
42
38
|
api() {
|
|
43
39
|
return {
|
|
44
40
|
get config() {
|
package/src/types.ts
CHANGED
|
@@ -25,7 +25,7 @@ export type UserConfig = Omit<Config, 'root' | 'plugins'> & {
|
|
|
25
25
|
/**
|
|
26
26
|
* Plugin type can be KubbJSONPlugin or Plugin
|
|
27
27
|
* Example: ['@kubb/swagger', { output: false }]
|
|
28
|
-
* Or:
|
|
28
|
+
* Or: pluginSwagger({ output: false })
|
|
29
29
|
*/
|
|
30
30
|
plugins?: Array<Omit<UnknownUserPlugin, 'api'> | UnionPlugins | [name: string, options: object]>
|
|
31
31
|
}
|
|
@@ -155,13 +155,15 @@ export type PluginFactoryOptions<
|
|
|
155
155
|
/**
|
|
156
156
|
* Same behaviour like what has been done with `QueryKey` in `@tanstack/react-query`
|
|
157
157
|
*/
|
|
158
|
-
key:
|
|
158
|
+
key: PluginKey<TName | string>
|
|
159
159
|
options: TOptions
|
|
160
160
|
resolvedOptions: TResolvedOptions
|
|
161
161
|
api: TAPI
|
|
162
162
|
resolvePathOptions: TResolvePathOptions
|
|
163
163
|
}
|
|
164
164
|
|
|
165
|
+
export type PluginKey<TName> = [name: TName, identifier?: string | number]
|
|
166
|
+
|
|
165
167
|
export type GetPluginFactoryOptions<TPlugin extends UserPlugin> = TPlugin extends UserPlugin<infer X> ? X : never
|
|
166
168
|
|
|
167
169
|
export type UserPlugin<TOptions extends PluginFactoryOptions = PluginFactoryOptions> = {
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
type ParserModuleTs = typeof import('@kubb/parser-ts')
|
|
2
|
+
|
|
3
|
+
export type ParserModule = ParserModuleTs
|
|
4
|
+
|
|
5
|
+
export async function getParser(language: string | undefined) {
|
|
6
|
+
let modulePromise: Promise<ParserModule>
|
|
7
|
+
|
|
8
|
+
switch (language) {
|
|
9
|
+
default:
|
|
10
|
+
modulePromise = import('@kubb/parser-ts')
|
|
11
|
+
break
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
const module = await modulePromise
|
|
15
|
+
|
|
16
|
+
return module
|
|
17
|
+
}
|
package/src/utils/index.ts
CHANGED
package/dist/chunk-4ARKZPSY.js
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
// src/transformers/casing.ts
|
|
2
|
-
import { camelCase as changeCamelCase, pascalCase as changePascalCase, pathCase as changePathCase } from "change-case";
|
|
3
|
-
function camelCase(text, { isFile, prefix = "", suffix = "" } = {}) {
|
|
4
|
-
if (isFile) {
|
|
5
|
-
const splitArray = text.split(".");
|
|
6
|
-
return splitArray.map((item, i) => i === splitArray.length - 1 ? camelCase(item, { prefix, suffix }) : camelCase(item)).join("/");
|
|
7
|
-
}
|
|
8
|
-
return changeCamelCase(`${prefix} ${text} ${suffix}`, {
|
|
9
|
-
delimiter: "",
|
|
10
|
-
mergeAmbiguousCharacters: true
|
|
11
|
-
});
|
|
12
|
-
}
|
|
13
|
-
function pascalCase(text, { isFile, prefix = "", suffix = "" } = {}) {
|
|
14
|
-
if (isFile) {
|
|
15
|
-
const splitArray = text.split(".");
|
|
16
|
-
return splitArray.map((item, i) => i === splitArray.length - 1 ? pascalCase(item, { prefix, suffix }) : camelCase(item)).join("/");
|
|
17
|
-
}
|
|
18
|
-
return changePascalCase(`${prefix} ${text} ${suffix}`, {
|
|
19
|
-
delimiter: "",
|
|
20
|
-
mergeAmbiguousCharacters: true
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
function pathCase(text, { isFile, prefix = "", suffix = "" } = {}) {
|
|
24
|
-
if (isFile) {
|
|
25
|
-
const splitArray = text.split(".");
|
|
26
|
-
return splitArray.map((item, i) => i === splitArray.length - 1 ? pathCase(item, { prefix, suffix }) : camelCase(item)).join("/");
|
|
27
|
-
}
|
|
28
|
-
return changePathCase(`${prefix} ${text} ${suffix}`, { delimiter: "" });
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
export {
|
|
32
|
-
camelCase,
|
|
33
|
-
pascalCase,
|
|
34
|
-
pathCase
|
|
35
|
-
};
|
|
36
|
-
//# sourceMappingURL=chunk-4ARKZPSY.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/transformers/casing.ts"],"sourcesContent":["import { camelCase as changeCamelCase, pascalCase as changePascalCase, pathCase as changePathCase } from 'change-case'\n\ntype Options = {\n /**\n * When set it will replace all `.` with `/`.\n */\n isFile?: boolean\n prefix?: string\n suffix?: string\n}\n\nexport function camelCase(text: string, { isFile, prefix = '', suffix = '' }: Options = {}): string {\n if (isFile) {\n const splitArray = text.split('.')\n return splitArray.map((item, i) => (i === splitArray.length - 1 ? camelCase(item, { prefix, suffix }) : camelCase(item))).join('/')\n }\n\n return changeCamelCase(`${prefix} ${text} ${suffix}`, {\n delimiter: '',\n mergeAmbiguousCharacters: true,\n })\n}\n\nexport function pascalCase(text: string, { isFile, prefix = '', suffix = '' }: Options = {}): string {\n if (isFile) {\n const splitArray = text.split('.')\n return splitArray.map((item, i) => (i === splitArray.length - 1 ? pascalCase(item, { prefix, suffix }) : camelCase(item))).join('/')\n }\n\n return changePascalCase(`${prefix} ${text} ${suffix}`, {\n delimiter: '',\n mergeAmbiguousCharacters: true,\n })\n}\n\nexport function pathCase(text: string, { isFile, prefix = '', suffix = '' }: Options = {}): string {\n if (isFile) {\n const splitArray = text.split('.')\n return splitArray.map((item, i) => (i === splitArray.length - 1 ? pathCase(item, { prefix, suffix }) : camelCase(item))).join('/')\n }\n\n return changePathCase(`${prefix} ${text} ${suffix}`, { delimiter: '' })\n}\n"],"mappings":";AAAA,SAAS,aAAa,iBAAiB,cAAc,kBAAkB,YAAY,sBAAsB;AAWlG,SAAS,UAAU,MAAc,EAAE,QAAQ,SAAS,IAAI,SAAS,GAAG,IAAa,CAAC,GAAW;AAClG,MAAI,QAAQ;AACV,UAAM,aAAa,KAAK,MAAM,GAAG;AACjC,WAAO,WAAW,IAAI,CAAC,MAAM,MAAO,MAAM,WAAW,SAAS,IAAI,UAAU,MAAM,EAAE,QAAQ,OAAO,CAAC,IAAI,UAAU,IAAI,CAAE,EAAE,KAAK,GAAG;AAAA,EACpI;AAEA,SAAO,gBAAgB,GAAG,MAAM,IAAI,IAAI,IAAI,MAAM,IAAI;AAAA,IACpD,WAAW;AAAA,IACX,0BAA0B;AAAA,EAC5B,CAAC;AACH;AAEO,SAAS,WAAW,MAAc,EAAE,QAAQ,SAAS,IAAI,SAAS,GAAG,IAAa,CAAC,GAAW;AACnG,MAAI,QAAQ;AACV,UAAM,aAAa,KAAK,MAAM,GAAG;AACjC,WAAO,WAAW,IAAI,CAAC,MAAM,MAAO,MAAM,WAAW,SAAS,IAAI,WAAW,MAAM,EAAE,QAAQ,OAAO,CAAC,IAAI,UAAU,IAAI,CAAE,EAAE,KAAK,GAAG;AAAA,EACrI;AAEA,SAAO,iBAAiB,GAAG,MAAM,IAAI,IAAI,IAAI,MAAM,IAAI;AAAA,IACrD,WAAW;AAAA,IACX,0BAA0B;AAAA,EAC5B,CAAC;AACH;AAEO,SAAS,SAAS,MAAc,EAAE,QAAQ,SAAS,IAAI,SAAS,GAAG,IAAa,CAAC,GAAW;AACjG,MAAI,QAAQ;AACV,UAAM,aAAa,KAAK,MAAM,GAAG;AACjC,WAAO,WAAW,IAAI,CAAC,MAAM,MAAO,MAAM,WAAW,SAAS,IAAI,SAAS,MAAM,EAAE,QAAQ,OAAO,CAAC,IAAI,UAAU,IAAI,CAAE,EAAE,KAAK,GAAG;AAAA,EACnI;AAEA,SAAO,eAAe,GAAG,MAAM,IAAI,IAAI,IAAI,MAAM,IAAI,EAAE,WAAW,GAAG,CAAC;AACxE;","names":[]}
|
package/dist/chunk-5PLDNXZK.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/fs/clean.ts"],"sourcesContent":["import fs from 'fs-extra'\n\nexport async function clean(path: string): Promise<void> {\n return fs.remove(path)\n}\n"],"mappings":";AAAA,OAAO,QAAQ;AAEf,eAAsB,MAAM,MAA6B;AACvD,SAAO,GAAG,OAAO,IAAI;AACvB;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../node_modules/.pnpm/natural-orderby@3.0.2/node_modules/natural-orderby/dist/index.js"],"names":["compareNumbers","compareUnicode","stringCompare","compareChunks","compareOtherTypes","compareValues","normalizeAlphaChunk","parseNumber","normalizeNumericChunk","createChunkMap","createChunks","createChunkMaps","isFunction","isNaN","isNull","isObject","isSymbol","isUndefined","parseDate","numberify","stringify","getMappedValueRecord","compareMultiple","createIdentifierFn","getElementByIndex","getValueByIdentifier","baseOrderBy","getIdentifiers","getOrders"],"mappings":"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","sourcesContent":["/**\n * natural-orderby v3.0.2\n *\n * Copyright (c) Olaf Ennen\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nvar compareNumbers = function compareNumbers(numberA, numberB) {\n if (numberA < numberB) {\n return -1;\n }\n if (numberA > numberB) {\n return 1;\n }\n return 0;\n};\n\nvar compareUnicode = function compareUnicode(stringA, stringB) {\n var result = stringA.localeCompare(stringB);\n return result ? result / Math.abs(result) : 0;\n};\n\nvar RE_NUMBERS = /(^0x[\\da-fA-F]+$|^([+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?(?!\\.\\d+)(?=\\D|\\s|$))|\\d+)/g;\nvar RE_LEADING_OR_TRAILING_WHITESPACES = /^\\s+|\\s+$/g; // trim pre-post whitespace\nvar RE_WHITESPACES = /\\s+/g; // normalize all whitespace to single ' ' character\nvar RE_INT_OR_FLOAT = /^[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?$/; // identify integers and floats\nvar RE_DATE = /(^([\\w ]+,?[\\w ]+)?[\\w ]+,?[\\w ]+\\d+:\\d+(:\\d+)?[\\w ]?|^\\d{1,4}[/-]\\d{1,4}[/-]\\d{1,4}|^\\w+, \\w+ \\d+, \\d{4})/; // identify date strings\nvar RE_LEADING_ZERO = /^0+[1-9]{1}[0-9]*$/;\n// eslint-disable-next-line no-control-regex\nvar RE_UNICODE_CHARACTERS = /[^\\x00-\\x80]/;\n\nvar stringCompare = function stringCompare(stringA, stringB) {\n if (stringA < stringB) {\n return -1;\n }\n if (stringA > stringB) {\n return 1;\n }\n return 0;\n};\n\nvar compareChunks = function compareChunks(chunksA, chunksB) {\n var lengthA = chunksA.length;\n var lengthB = chunksB.length;\n var size = Math.min(lengthA, lengthB);\n for (var i = 0; i < size; i++) {\n var chunkA = chunksA[i];\n var chunkB = chunksB[i];\n if (chunkA.normalizedString !== chunkB.normalizedString) {\n if (chunkA.normalizedString === '' !== (chunkB.normalizedString === '')) {\n // empty strings have lowest value\n return chunkA.normalizedString === '' ? -1 : 1;\n }\n if (chunkA.parsedNumber !== undefined && chunkB.parsedNumber !== undefined) {\n // compare numbers\n var result = compareNumbers(chunkA.parsedNumber, chunkB.parsedNumber);\n if (result === 0) {\n // compare string value, if parsed numbers are equal\n // Example:\n // chunkA = { parsedNumber: 1, normalizedString: \"001\" }\n // chunkB = { parsedNumber: 1, normalizedString: \"01\" }\n // chunkA.parsedNumber === chunkB.parsedNumber\n // chunkA.normalizedString < chunkB.normalizedString\n return stringCompare(chunkA.normalizedString, chunkB.normalizedString);\n }\n return result;\n } else if (chunkA.parsedNumber !== undefined || chunkB.parsedNumber !== undefined) {\n // number < string\n return chunkA.parsedNumber !== undefined ? -1 : 1;\n } else if (RE_UNICODE_CHARACTERS.test(chunkA.normalizedString + chunkB.normalizedString)) {\n // use locale comparison only if one of the chunks contains unicode characters\n return compareUnicode(chunkA.normalizedString, chunkB.normalizedString);\n } else {\n // use common string comparison for performance reason\n return stringCompare(chunkA.normalizedString, chunkB.normalizedString);\n }\n }\n }\n // if the chunks are equal so far, the one which has more chunks is greater than the other one\n if (lengthA > size || lengthB > size) {\n return lengthA <= size ? -1 : 1;\n }\n return 0;\n};\n\nvar compareOtherTypes = function compareOtherTypes(valueA, valueB) {\n if (!valueA.chunks ? valueB.chunks : !valueB.chunks) {\n return !valueA.chunks ? 1 : -1;\n }\n if (valueA.isNaN ? !valueB.isNaN : valueB.isNaN) {\n return valueA.isNaN ? -1 : 1;\n }\n if (valueA.isSymbol ? !valueB.isSymbol : valueB.isSymbol) {\n return valueA.isSymbol ? -1 : 1;\n }\n if (valueA.isObject ? !valueB.isObject : valueB.isObject) {\n return valueA.isObject ? -1 : 1;\n }\n if (valueA.isArray ? !valueB.isArray : valueB.isArray) {\n return valueA.isArray ? -1 : 1;\n }\n if (valueA.isFunction ? !valueB.isFunction : valueB.isFunction) {\n return valueA.isFunction ? -1 : 1;\n }\n if (valueA.isNull ? !valueB.isNull : valueB.isNull) {\n return valueA.isNull ? -1 : 1;\n }\n return 0;\n};\n\nvar compareValues = function compareValues(valueA, valueB) {\n if (valueA.value === valueB.value) {\n return 0;\n }\n if (valueA.parsedNumber !== undefined && valueB.parsedNumber !== undefined) {\n return compareNumbers(valueA.parsedNumber, valueB.parsedNumber);\n }\n if (valueA.chunks && valueB.chunks) {\n return compareChunks(valueA.chunks, valueB.chunks);\n }\n return compareOtherTypes(valueA, valueB);\n};\n\nvar normalizeAlphaChunk = function normalizeAlphaChunk(chunk) {\n return chunk.replace(RE_WHITESPACES, ' ').replace(RE_LEADING_OR_TRAILING_WHITESPACES, '');\n};\n\nvar parseNumber = function parseNumber(value) {\n if (value.length !== 0) {\n var parsedNumber = Number(value);\n if (!Number.isNaN(parsedNumber)) {\n return parsedNumber;\n }\n }\n return undefined;\n};\n\nvar normalizeNumericChunk = function normalizeNumericChunk(chunk, index, chunks) {\n if (RE_INT_OR_FLOAT.test(chunk)) {\n // don´t parse a number, if there´s a preceding decimal point\n // to keep significance\n // e.g. 1.0020, 1.020\n if (!RE_LEADING_ZERO.test(chunk) || index === 0 || chunks[index - 1] !== '.') {\n return parseNumber(chunk) || 0;\n }\n }\n return undefined;\n};\n\nvar createChunkMap = function createChunkMap(chunk, index, chunks) {\n return {\n parsedNumber: normalizeNumericChunk(chunk, index, chunks),\n normalizedString: normalizeAlphaChunk(chunk)\n };\n};\n\nvar createChunks = function createChunks(value) {\n return value.replace(RE_NUMBERS, '\\0$1\\0').replace(/\\0$/, '').replace(/^\\0/, '').split('\\0');\n};\n\nvar createChunkMaps = function createChunkMaps(value) {\n var chunksMaps = createChunks(value).map(createChunkMap);\n return chunksMaps;\n};\n\nvar isFunction = function isFunction(value) {\n return typeof value === 'function';\n};\n\nvar isNaN = function isNaN(value) {\n return Number.isNaN(value) || value instanceof Number && Number.isNaN(value.valueOf());\n};\n\nvar isNull = function isNull(value) {\n return value === null;\n};\n\nvar isObject = function isObject(value) {\n return value !== null && typeof value === 'object' && !Array.isArray(value) && !(value instanceof Number) && !(value instanceof String) && !(value instanceof Boolean) && !(value instanceof Date);\n};\n\nvar isSymbol = function isSymbol(value) {\n return typeof value === 'symbol';\n};\n\nvar isUndefined = function isUndefined(value) {\n return value === undefined;\n};\n\nvar parseDate = function parseDate(value) {\n try {\n var parsedDate = Date.parse(value);\n if (!Number.isNaN(parsedDate)) {\n if (RE_DATE.test(value)) {\n return parsedDate;\n }\n }\n return undefined;\n } catch (_unused) {\n return undefined;\n }\n};\n\nvar numberify = function numberify(value) {\n var parsedNumber = parseNumber(value);\n if (parsedNumber !== undefined) {\n return parsedNumber;\n }\n return parseDate(value);\n};\n\nvar stringify = function stringify(value) {\n if (typeof value === 'boolean' || value instanceof Boolean) {\n return Number(value).toString();\n }\n if (typeof value === 'number' || value instanceof Number) {\n return value.toString();\n }\n if (value instanceof Date) {\n return value.getTime().toString();\n }\n if (typeof value === 'string' || value instanceof String) {\n return value.toLowerCase().replace(RE_LEADING_OR_TRAILING_WHITESPACES, '');\n }\n return '';\n};\n\nvar getMappedValueRecord = function getMappedValueRecord(value) {\n if (typeof value === 'string' || value instanceof String || (typeof value === 'number' || value instanceof Number) && !isNaN(value) || typeof value === 'boolean' || value instanceof Boolean || value instanceof Date) {\n var stringValue = stringify(value);\n var parsedNumber = numberify(stringValue);\n var chunks = createChunkMaps(parsedNumber ? \"\" + parsedNumber : stringValue);\n return {\n parsedNumber: parsedNumber,\n chunks: chunks,\n value: value\n };\n }\n return {\n isArray: Array.isArray(value),\n isFunction: isFunction(value),\n isNaN: isNaN(value),\n isNull: isNull(value),\n isObject: isObject(value),\n isSymbol: isSymbol(value),\n isUndefined: isUndefined(value),\n value: value\n };\n};\n\nvar baseCompare = function baseCompare(options) {\n return function (valueA, valueB) {\n var a = getMappedValueRecord(valueA);\n var b = getMappedValueRecord(valueB);\n var result = compareValues(a, b);\n return result * (options.order === 'desc' ? -1 : 1);\n };\n};\n\nvar isValidOrder = function isValidOrder(value) {\n return typeof value === 'string' && (value === 'asc' || value === 'desc');\n};\nvar getOptions = function getOptions(customOptions) {\n var order = 'asc';\n if (typeof customOptions === 'string' && isValidOrder(customOptions)) {\n order = customOptions;\n } else if (customOptions && typeof customOptions === 'object' && customOptions.order && isValidOrder(customOptions.order)) {\n order = customOptions.order;\n }\n return {\n order: order\n };\n};\n\n/**\n * Creates a compare function that defines the natural sort order considering\n * the given `options` which may be passed to [`Array.prototype.sort()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort).\n */\nfunction compare(options) {\n var validatedOptions = getOptions(options);\n return baseCompare(validatedOptions);\n}\n\nvar compareMultiple = function compareMultiple(recordA, recordB, orders) {\n var indexA = recordA.index,\n valuesA = recordA.values;\n var indexB = recordB.index,\n valuesB = recordB.values;\n var length = valuesA.length;\n var ordersLength = orders.length;\n for (var i = 0; i < length; i++) {\n var order = i < ordersLength ? orders[i] : null;\n if (order && typeof order === 'function') {\n var result = order(valuesA[i].value, valuesB[i].value);\n if (result) {\n return result;\n }\n } else {\n var _result = compareValues(valuesA[i], valuesB[i]);\n if (_result) {\n return _result * (order === 'desc' ? -1 : 1);\n }\n }\n }\n return indexA - indexB;\n};\n\nvar createIdentifierFn = function createIdentifierFn(identifier) {\n if (typeof identifier === 'function') {\n // identifier is already a lookup function\n return identifier;\n }\n return function (value) {\n if (Array.isArray(value)) {\n var index = Number(identifier);\n if (Number.isInteger(index)) {\n return value[index];\n }\n } else if (value && typeof value === 'object') {\n var result = Object.getOwnPropertyDescriptor(value, identifier);\n return result == null ? void 0 : result.value;\n }\n return value;\n };\n};\n\nvar getElementByIndex = function getElementByIndex(collection, index) {\n return collection[index];\n};\n\nvar getValueByIdentifier = function getValueByIdentifier(value, getValue) {\n return getValue(value);\n};\n\nvar baseOrderBy = function baseOrderBy(collection, identifiers, orders) {\n var identifierFns = identifiers.length ? identifiers.map(createIdentifierFn) : [function (value) {\n return value;\n }];\n\n // temporary array holds elements with position and sort-values\n var mappedCollection = collection.map(function (element, index) {\n var values = identifierFns.map(function (identifier) {\n return getValueByIdentifier(element, identifier);\n }).map(getMappedValueRecord);\n return {\n index: index,\n values: values\n };\n });\n\n // iterate over values and compare values until a != b or last value reached\n mappedCollection.sort(function (recordA, recordB) {\n return compareMultiple(recordA, recordB, orders);\n });\n return mappedCollection.map(function (element) {\n return getElementByIndex(collection, element.index);\n });\n};\n\nvar getIdentifiers = function getIdentifiers(identifiers) {\n if (!identifiers) {\n return [];\n }\n var identifierList = !Array.isArray(identifiers) ? [identifiers] : [].concat(identifiers);\n if (identifierList.some(function (identifier) {\n return typeof identifier !== 'string' && typeof identifier !== 'number' && typeof identifier !== 'function';\n })) {\n return [];\n }\n return identifierList;\n};\n\nvar getOrders = function getOrders(orders) {\n if (!orders) {\n return [];\n }\n var orderList = !Array.isArray(orders) ? [orders] : [].concat(orders);\n if (orderList.some(function (order) {\n return order !== 'asc' && order !== 'desc' && typeof order !== 'function';\n })) {\n return [];\n }\n return orderList;\n};\n\n/**\n * Creates an array of elements, natural sorted by specified identifiers and\n * the corresponding sort orders. This method implements a stable sort\n * algorithm, which means the original sort order of equal elements is\n * preserved.\n */\nfunction orderBy(collection, identifiers, orders) {\n if (!collection || !Array.isArray(collection)) {\n return [];\n }\n var validatedIdentifiers = getIdentifiers(identifiers);\n var validatedOrders = getOrders(orders);\n return baseOrderBy(collection, validatedIdentifiers, validatedOrders);\n}\n\nexport { compare, orderBy };\n"]}
|