@pandacss/config 1.0.0 → 1.1.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.
- package/dist/{chunk-B47HB6K3.mjs → chunk-KMUVLTV2.mjs} +13 -0
- package/dist/index.d.mts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +64 -22
- package/dist/index.mjs +39 -10
- package/dist/merge-config.js +12 -0
- package/dist/merge-config.mjs +1 -1
- package/package.json +6 -6
|
@@ -87,6 +87,18 @@ var reducers = {
|
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
89
|
return artifacts;
|
|
90
|
+
}),
|
|
91
|
+
"preset:resolved": createReducer((fns) => async (_args) => {
|
|
92
|
+
const args = Object.assign({}, _args);
|
|
93
|
+
const original = _args.preset;
|
|
94
|
+
let preset = args.preset;
|
|
95
|
+
for (const hookFn of fns) {
|
|
96
|
+
const result = await hookFn(Object.assign(args, { preset, original }));
|
|
97
|
+
if (result !== void 0) {
|
|
98
|
+
preset = result;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return preset;
|
|
90
102
|
})
|
|
91
103
|
};
|
|
92
104
|
var syncHooks = [
|
|
@@ -231,6 +243,7 @@ function mergeConfigs(configs) {
|
|
|
231
243
|
}
|
|
232
244
|
|
|
233
245
|
export {
|
|
246
|
+
mergeHooks,
|
|
234
247
|
isValidToken,
|
|
235
248
|
isTokenReference,
|
|
236
249
|
formatPath,
|
package/dist/index.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as _pandacss_types from '@pandacss/types';
|
|
2
|
-
import { Config, ConfigTsOptions, LoadConfigResult } from '@pandacss/types';
|
|
2
|
+
import { Config, ConfigTsOptions, PandaHooks, LoadConfigResult } from '@pandacss/types';
|
|
3
3
|
export { diffConfigs } from './diff-config.mjs';
|
|
4
4
|
import { TSConfig } from 'pkg-types';
|
|
5
5
|
import { P as PathMapping } from './ts-config-paths-qwrwgu2Q.mjs';
|
|
@@ -42,7 +42,7 @@ type ExtendableConfig = Extendable<Config>;
|
|
|
42
42
|
/**
|
|
43
43
|
* Recursively merge all presets into a single config (depth-first using stack)
|
|
44
44
|
*/
|
|
45
|
-
declare function getResolvedConfig(config: ExtendableConfig, cwd: string): Promise<Config>;
|
|
45
|
+
declare function getResolvedConfig(config: ExtendableConfig, cwd: string, hooks?: Partial<PandaHooks>): Promise<Config>;
|
|
46
46
|
|
|
47
47
|
/**
|
|
48
48
|
* Find, load and resolve the final config (including presets)
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as _pandacss_types from '@pandacss/types';
|
|
2
|
-
import { Config, ConfigTsOptions, LoadConfigResult } from '@pandacss/types';
|
|
2
|
+
import { Config, ConfigTsOptions, PandaHooks, LoadConfigResult } from '@pandacss/types';
|
|
3
3
|
export { diffConfigs } from './diff-config.js';
|
|
4
4
|
import { TSConfig } from 'pkg-types';
|
|
5
5
|
import { P as PathMapping } from './ts-config-paths-qwrwgu2Q.js';
|
|
@@ -42,7 +42,7 @@ type ExtendableConfig = Extendable<Config>;
|
|
|
42
42
|
/**
|
|
43
43
|
* Recursively merge all presets into a single config (depth-first using stack)
|
|
44
44
|
*/
|
|
45
|
-
declare function getResolvedConfig(config: ExtendableConfig, cwd: string): Promise<Config>;
|
|
45
|
+
declare function getResolvedConfig(config: ExtendableConfig, cwd: string, hooks?: Partial<PandaHooks>): Promise<Config>;
|
|
46
46
|
|
|
47
47
|
/**
|
|
48
48
|
* Find, load and resolve the final config (including presets)
|
package/dist/index.js
CHANGED
|
@@ -378,6 +378,9 @@ function getConfigDependencies(filePath, tsOptions = { pathMappings: [] }, compi
|
|
|
378
378
|
return { deps, aliases: foundModuleAliases };
|
|
379
379
|
}
|
|
380
380
|
|
|
381
|
+
// src/get-resolved-config.ts
|
|
382
|
+
var import_shared6 = require("@pandacss/shared");
|
|
383
|
+
|
|
381
384
|
// src/merge-config.ts
|
|
382
385
|
var import_shared5 = require("@pandacss/shared");
|
|
383
386
|
var import_merge_anything = require("merge-anything");
|
|
@@ -467,6 +470,18 @@ var reducers = {
|
|
|
467
470
|
}
|
|
468
471
|
}
|
|
469
472
|
return artifacts;
|
|
473
|
+
}),
|
|
474
|
+
"preset:resolved": createReducer((fns) => async (_args) => {
|
|
475
|
+
const args = Object.assign({}, _args);
|
|
476
|
+
const original = _args.preset;
|
|
477
|
+
let preset = args.preset;
|
|
478
|
+
for (const hookFn of fns) {
|
|
479
|
+
const result = await hookFn(Object.assign(args, { preset, original }));
|
|
480
|
+
if (result !== void 0) {
|
|
481
|
+
preset = result;
|
|
482
|
+
}
|
|
483
|
+
}
|
|
484
|
+
return preset;
|
|
470
485
|
})
|
|
471
486
|
};
|
|
472
487
|
var syncHooks = [
|
|
@@ -611,19 +626,39 @@ function mergeConfigs(configs) {
|
|
|
611
626
|
}
|
|
612
627
|
|
|
613
628
|
// src/get-resolved-config.ts
|
|
614
|
-
|
|
629
|
+
var hookUtils = {
|
|
630
|
+
omit: import_shared6.omit,
|
|
631
|
+
pick: import_shared6.pick,
|
|
632
|
+
traverse: import_shared6.traverse
|
|
633
|
+
};
|
|
634
|
+
async function getResolvedConfig(config, cwd, hooks) {
|
|
615
635
|
const stack = [config];
|
|
616
636
|
const configs = [];
|
|
617
637
|
while (stack.length > 0) {
|
|
618
638
|
const current = stack.pop();
|
|
619
639
|
const subPresets = current.presets ?? [];
|
|
620
640
|
for (const subPreset of subPresets) {
|
|
641
|
+
let presetConfig;
|
|
642
|
+
let presetName;
|
|
621
643
|
if (typeof subPreset === "string") {
|
|
622
644
|
const presetModule = await bundle(subPreset, cwd);
|
|
623
|
-
|
|
645
|
+
presetConfig = presetModule.config;
|
|
646
|
+
presetName = subPreset;
|
|
624
647
|
} else {
|
|
625
|
-
|
|
648
|
+
presetConfig = await subPreset;
|
|
649
|
+
presetName = presetConfig.name || "unknown-preset";
|
|
650
|
+
}
|
|
651
|
+
if (hooks?.["preset:resolved"]) {
|
|
652
|
+
const resolvedPreset = await hooks["preset:resolved"]({
|
|
653
|
+
preset: presetConfig,
|
|
654
|
+
name: presetName,
|
|
655
|
+
utils: hookUtils
|
|
656
|
+
});
|
|
657
|
+
if (resolvedPreset !== void 0) {
|
|
658
|
+
presetConfig = resolvedPreset;
|
|
659
|
+
}
|
|
626
660
|
}
|
|
661
|
+
stack.push(presetConfig);
|
|
627
662
|
}
|
|
628
663
|
configs.unshift(current);
|
|
629
664
|
}
|
|
@@ -634,7 +669,7 @@ async function getResolvedConfig(config, cwd) {
|
|
|
634
669
|
|
|
635
670
|
// src/resolve-config.ts
|
|
636
671
|
var import_logger4 = require("@pandacss/logger");
|
|
637
|
-
var
|
|
672
|
+
var import_shared11 = require("@pandacss/shared");
|
|
638
673
|
|
|
639
674
|
// src/bundled-preset.ts
|
|
640
675
|
var import_preset_base = require("@pandacss/preset-base");
|
|
@@ -652,7 +687,7 @@ var getBundledPreset = (preset) => {
|
|
|
652
687
|
|
|
653
688
|
// src/validate-config.ts
|
|
654
689
|
var import_logger3 = require("@pandacss/logger");
|
|
655
|
-
var
|
|
690
|
+
var import_shared10 = require("@pandacss/shared");
|
|
656
691
|
|
|
657
692
|
// src/validation/validate-artifact.ts
|
|
658
693
|
var validateArtifactNames = (names, addError) => {
|
|
@@ -672,13 +707,13 @@ var validateArtifactNames = (names, addError) => {
|
|
|
672
707
|
};
|
|
673
708
|
|
|
674
709
|
// src/validation/validate-breakpoints.ts
|
|
675
|
-
var
|
|
710
|
+
var import_shared7 = require("@pandacss/shared");
|
|
676
711
|
var validateBreakpoints = (breakpoints, addError) => {
|
|
677
712
|
if (!breakpoints) return;
|
|
678
713
|
const units = /* @__PURE__ */ new Set();
|
|
679
714
|
const values = Object.values(breakpoints);
|
|
680
715
|
for (const value of values) {
|
|
681
|
-
const unit = (0,
|
|
716
|
+
const unit = (0, import_shared7.getUnit)(value) ?? "px";
|
|
682
717
|
units.add(unit);
|
|
683
718
|
}
|
|
684
719
|
if (units.size > 1) {
|
|
@@ -687,11 +722,11 @@ var validateBreakpoints = (breakpoints, addError) => {
|
|
|
687
722
|
};
|
|
688
723
|
|
|
689
724
|
// src/validation/validate-condition.ts
|
|
690
|
-
var
|
|
725
|
+
var import_shared8 = require("@pandacss/shared");
|
|
691
726
|
var validateConditions = (conditions, addError) => {
|
|
692
727
|
if (!conditions) return;
|
|
693
728
|
Object.values(conditions).forEach((condition) => {
|
|
694
|
-
if ((0,
|
|
729
|
+
if ((0, import_shared8.isString)(condition)) {
|
|
695
730
|
if (!condition.startsWith("@") && !condition.includes("&")) {
|
|
696
731
|
addError("conditions", `Selectors should contain the \`&\` character: \`${condition}\``);
|
|
697
732
|
}
|
|
@@ -734,7 +769,7 @@ var validateRecipes = (options) => {
|
|
|
734
769
|
};
|
|
735
770
|
|
|
736
771
|
// src/validation/validate-tokens.ts
|
|
737
|
-
var
|
|
772
|
+
var import_shared9 = require("@pandacss/shared");
|
|
738
773
|
|
|
739
774
|
// src/validation/validate-token-references.ts
|
|
740
775
|
var validateTokenReferences = (props) => {
|
|
@@ -785,7 +820,7 @@ var validateTokens = (options) => {
|
|
|
785
820
|
const { tokenNames, semanticTokenNames, valueAtPath, refsByPath, typeByPath } = tokens2;
|
|
786
821
|
if (theme.tokens) {
|
|
787
822
|
const tokenPaths = /* @__PURE__ */ new Set();
|
|
788
|
-
(0,
|
|
823
|
+
(0, import_shared9.walkObject)(
|
|
789
824
|
theme.tokens,
|
|
790
825
|
(value, paths) => {
|
|
791
826
|
const path2 = paths.join(SEP);
|
|
@@ -825,7 +860,7 @@ var validateTokens = (options) => {
|
|
|
825
860
|
}
|
|
826
861
|
if (theme.semanticTokens) {
|
|
827
862
|
const tokenPaths = /* @__PURE__ */ new Set();
|
|
828
|
-
(0,
|
|
863
|
+
(0, import_shared9.walkObject)(
|
|
829
864
|
theme.semanticTokens,
|
|
830
865
|
(value, paths) => {
|
|
831
866
|
const path2 = paths.join(SEP);
|
|
@@ -836,7 +871,7 @@ var validateTokens = (options) => {
|
|
|
836
871
|
valueAtPath.set(path2.replace(SEP + "DEFAULT", ""), value);
|
|
837
872
|
}
|
|
838
873
|
if (!isValidToken(value)) return;
|
|
839
|
-
(0,
|
|
874
|
+
(0, import_shared9.walkObject)(value, (itemValue, paths2) => {
|
|
840
875
|
const valuePath = paths2.join(SEP);
|
|
841
876
|
const formattedPath = formatPath(path2);
|
|
842
877
|
typeByPath.set(formattedPath, "semanticTokens");
|
|
@@ -868,7 +903,7 @@ var validateTokens = (options) => {
|
|
|
868
903
|
addError("tokens", `Token key must not contain spaces: \`theme.tokens.${formattedPath}\``);
|
|
869
904
|
return;
|
|
870
905
|
}
|
|
871
|
-
if (!(0,
|
|
906
|
+
if (!(0, import_shared9.isObject)(value) && !path2.includes("value")) {
|
|
872
907
|
addError("tokens", `Token must contain 'value': \`theme.semanticTokens.${formattedPath}\``);
|
|
873
908
|
}
|
|
874
909
|
});
|
|
@@ -908,7 +943,7 @@ var validateConfig = (config) => {
|
|
|
908
943
|
${Array.from(warnings).map((err) => "- " + err).join("\n")}
|
|
909
944
|
`;
|
|
910
945
|
if (config.validation === "error") {
|
|
911
|
-
throw new
|
|
946
|
+
throw new import_shared10.PandaError("CONFIG_ERROR", errors);
|
|
912
947
|
}
|
|
913
948
|
import_logger3.logger.warn("config", errors);
|
|
914
949
|
return warnings;
|
|
@@ -916,9 +951,10 @@ ${Array.from(warnings).map((err) => "- " + err).join("\n")}
|
|
|
916
951
|
};
|
|
917
952
|
|
|
918
953
|
// src/resolve-config.ts
|
|
919
|
-
var
|
|
920
|
-
omit:
|
|
921
|
-
|
|
954
|
+
var hookUtils2 = {
|
|
955
|
+
omit: import_shared11.omit,
|
|
956
|
+
pick: import_shared11.pick,
|
|
957
|
+
traverse: import_shared11.traverse
|
|
922
958
|
};
|
|
923
959
|
async function resolveConfig(result, cwd) {
|
|
924
960
|
const presets = /* @__PURE__ */ new Set();
|
|
@@ -933,7 +969,13 @@ async function resolveConfig(result, cwd) {
|
|
|
933
969
|
presets.add(import_preset_panda.preset);
|
|
934
970
|
}
|
|
935
971
|
result.config.presets = Array.from(presets);
|
|
936
|
-
const
|
|
972
|
+
const userConfig = result.config;
|
|
973
|
+
const pluginHooks = userConfig.plugins ?? [];
|
|
974
|
+
if (userConfig.hooks) {
|
|
975
|
+
pluginHooks.push({ name: import_shared11.PANDA_CONFIG_NAME, hooks: userConfig.hooks });
|
|
976
|
+
}
|
|
977
|
+
const earlyHooks = mergeHooks(pluginHooks);
|
|
978
|
+
const mergedConfig = await getResolvedConfig(result.config, cwd, earlyHooks);
|
|
937
979
|
const hooks = mergedConfig.hooks ?? {};
|
|
938
980
|
if (mergedConfig.logLevel) {
|
|
939
981
|
import_logger4.logger.level = mergedConfig.logLevel;
|
|
@@ -948,14 +990,14 @@ async function resolveConfig(result, cwd) {
|
|
|
948
990
|
config: loadConfigResult.config,
|
|
949
991
|
path: loadConfigResult.path,
|
|
950
992
|
dependencies: loadConfigResult.dependencies,
|
|
951
|
-
utils:
|
|
993
|
+
utils: hookUtils2
|
|
952
994
|
});
|
|
953
995
|
if (result2) {
|
|
954
996
|
loadConfigResult.config = result2;
|
|
955
997
|
}
|
|
956
998
|
}
|
|
957
|
-
const serialized = (0,
|
|
958
|
-
const deserialize = () => (0,
|
|
999
|
+
const serialized = (0, import_shared11.stringifyJson)(Object.assign({}, loadConfigResult.config, { name: import_shared11.PANDA_CONFIG_NAME, presets: [] }));
|
|
1000
|
+
const deserialize = () => (0, import_shared11.parseJson)(serialized);
|
|
959
1001
|
return { ...loadConfigResult, serialized, deserialize, hooks };
|
|
960
1002
|
}
|
|
961
1003
|
|
package/dist/index.mjs
CHANGED
|
@@ -8,8 +8,9 @@ import {
|
|
|
8
8
|
isTokenReference,
|
|
9
9
|
isValidToken,
|
|
10
10
|
mergeConfigs,
|
|
11
|
+
mergeHooks,
|
|
11
12
|
serializeTokenValue
|
|
12
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-KMUVLTV2.mjs";
|
|
13
14
|
import {
|
|
14
15
|
resolveTsPathPattern
|
|
15
16
|
} from "./chunk-RPIVZP2I.mjs";
|
|
@@ -201,19 +202,40 @@ function getConfigDependencies(filePath, tsOptions = { pathMappings: [] }, compi
|
|
|
201
202
|
}
|
|
202
203
|
|
|
203
204
|
// src/get-resolved-config.ts
|
|
204
|
-
|
|
205
|
+
import { omit, pick, traverse } from "@pandacss/shared";
|
|
206
|
+
var hookUtils = {
|
|
207
|
+
omit,
|
|
208
|
+
pick,
|
|
209
|
+
traverse
|
|
210
|
+
};
|
|
211
|
+
async function getResolvedConfig(config, cwd, hooks) {
|
|
205
212
|
const stack = [config];
|
|
206
213
|
const configs = [];
|
|
207
214
|
while (stack.length > 0) {
|
|
208
215
|
const current = stack.pop();
|
|
209
216
|
const subPresets = current.presets ?? [];
|
|
210
217
|
for (const subPreset of subPresets) {
|
|
218
|
+
let presetConfig;
|
|
219
|
+
let presetName;
|
|
211
220
|
if (typeof subPreset === "string") {
|
|
212
221
|
const presetModule = await bundle(subPreset, cwd);
|
|
213
|
-
|
|
222
|
+
presetConfig = presetModule.config;
|
|
223
|
+
presetName = subPreset;
|
|
214
224
|
} else {
|
|
215
|
-
|
|
225
|
+
presetConfig = await subPreset;
|
|
226
|
+
presetName = presetConfig.name || "unknown-preset";
|
|
216
227
|
}
|
|
228
|
+
if (hooks?.["preset:resolved"]) {
|
|
229
|
+
const resolvedPreset = await hooks["preset:resolved"]({
|
|
230
|
+
preset: presetConfig,
|
|
231
|
+
name: presetName,
|
|
232
|
+
utils: hookUtils
|
|
233
|
+
});
|
|
234
|
+
if (resolvedPreset !== void 0) {
|
|
235
|
+
presetConfig = resolvedPreset;
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
stack.push(presetConfig);
|
|
217
239
|
}
|
|
218
240
|
configs.unshift(current);
|
|
219
241
|
}
|
|
@@ -224,7 +246,7 @@ async function getResolvedConfig(config, cwd) {
|
|
|
224
246
|
|
|
225
247
|
// src/resolve-config.ts
|
|
226
248
|
import { logger as logger3 } from "@pandacss/logger";
|
|
227
|
-
import { PANDA_CONFIG_NAME, omit, parseJson, stringifyJson, traverse } from "@pandacss/shared";
|
|
249
|
+
import { PANDA_CONFIG_NAME, omit as omit2, parseJson, pick as pick2, stringifyJson, traverse as traverse2 } from "@pandacss/shared";
|
|
228
250
|
|
|
229
251
|
// src/bundled-preset.ts
|
|
230
252
|
import { preset as presetBase } from "@pandacss/preset-base";
|
|
@@ -506,9 +528,10 @@ ${Array.from(warnings).map((err) => "- " + err).join("\n")}
|
|
|
506
528
|
};
|
|
507
529
|
|
|
508
530
|
// src/resolve-config.ts
|
|
509
|
-
var
|
|
510
|
-
omit,
|
|
511
|
-
|
|
531
|
+
var hookUtils2 = {
|
|
532
|
+
omit: omit2,
|
|
533
|
+
pick: pick2,
|
|
534
|
+
traverse: traverse2
|
|
512
535
|
};
|
|
513
536
|
async function resolveConfig(result, cwd) {
|
|
514
537
|
const presets = /* @__PURE__ */ new Set();
|
|
@@ -523,7 +546,13 @@ async function resolveConfig(result, cwd) {
|
|
|
523
546
|
presets.add(presetPanda);
|
|
524
547
|
}
|
|
525
548
|
result.config.presets = Array.from(presets);
|
|
526
|
-
const
|
|
549
|
+
const userConfig = result.config;
|
|
550
|
+
const pluginHooks = userConfig.plugins ?? [];
|
|
551
|
+
if (userConfig.hooks) {
|
|
552
|
+
pluginHooks.push({ name: PANDA_CONFIG_NAME, hooks: userConfig.hooks });
|
|
553
|
+
}
|
|
554
|
+
const earlyHooks = mergeHooks(pluginHooks);
|
|
555
|
+
const mergedConfig = await getResolvedConfig(result.config, cwd, earlyHooks);
|
|
527
556
|
const hooks = mergedConfig.hooks ?? {};
|
|
528
557
|
if (mergedConfig.logLevel) {
|
|
529
558
|
logger3.level = mergedConfig.logLevel;
|
|
@@ -538,7 +567,7 @@ async function resolveConfig(result, cwd) {
|
|
|
538
567
|
config: loadConfigResult.config,
|
|
539
568
|
path: loadConfigResult.path,
|
|
540
569
|
dependencies: loadConfigResult.dependencies,
|
|
541
|
-
utils:
|
|
570
|
+
utils: hookUtils2
|
|
542
571
|
});
|
|
543
572
|
if (result2) {
|
|
544
573
|
loadConfigResult.config = result2;
|
package/dist/merge-config.js
CHANGED
|
@@ -111,6 +111,18 @@ var reducers = {
|
|
|
111
111
|
}
|
|
112
112
|
}
|
|
113
113
|
return artifacts;
|
|
114
|
+
}),
|
|
115
|
+
"preset:resolved": createReducer((fns) => async (_args) => {
|
|
116
|
+
const args = Object.assign({}, _args);
|
|
117
|
+
const original = _args.preset;
|
|
118
|
+
let preset = args.preset;
|
|
119
|
+
for (const hookFn of fns) {
|
|
120
|
+
const result = await hookFn(Object.assign(args, { preset, original }));
|
|
121
|
+
if (result !== void 0) {
|
|
122
|
+
preset = result;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return preset;
|
|
114
126
|
})
|
|
115
127
|
};
|
|
116
128
|
var syncHooks = [
|
package/dist/merge-config.mjs
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pandacss/config",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "Find and load panda config",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.mjs",
|
|
@@ -73,11 +73,11 @@
|
|
|
73
73
|
"merge-anything": "5.1.7",
|
|
74
74
|
"microdiff": "1.3.2",
|
|
75
75
|
"typescript": "5.8.3",
|
|
76
|
-
"@pandacss/logger": "1.
|
|
77
|
-
"@pandacss/preset-base": "1.
|
|
78
|
-
"@pandacss/preset-panda": "1.
|
|
79
|
-
"@pandacss/shared": "1.
|
|
80
|
-
"@pandacss/types": "1.
|
|
76
|
+
"@pandacss/logger": "1.1.0",
|
|
77
|
+
"@pandacss/preset-base": "1.1.0",
|
|
78
|
+
"@pandacss/preset-panda": "1.1.0",
|
|
79
|
+
"@pandacss/shared": "1.1.0",
|
|
80
|
+
"@pandacss/types": "1.1.0"
|
|
81
81
|
},
|
|
82
82
|
"devDependencies": {
|
|
83
83
|
"pkg-types": "2.2.0"
|