@vc-shell/config-generator 2.0.0-alpha.2 → 2.0.0-alpha.20

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.
Files changed (42) hide show
  1. package/CHANGELOG.md +2695 -0
  2. package/dist/index.d.ts +2 -25
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +2 -44
  5. package/dist/index.js.map +1 -1
  6. package/dist/plugins/viteBladePlugin.d.ts +9 -0
  7. package/dist/plugins/viteBladePlugin.d.ts.map +1 -0
  8. package/dist/plugins/viteBladePlugin.js +94 -0
  9. package/dist/plugins/viteBladePlugin.js.map +1 -0
  10. package/dist/plugins/viteBladePlugin.test.d.ts +2 -0
  11. package/dist/plugins/viteBladePlugin.test.d.ts.map +1 -0
  12. package/dist/plugins/viteBladePlugin.test.js +90 -0
  13. package/dist/plugins/viteBladePlugin.test.js.map +1 -0
  14. package/dist/templates/vite.application.appconfig.d.ts.map +1 -1
  15. package/dist/templates/vite.application.appconfig.js +14 -5
  16. package/dist/templates/vite.application.appconfig.js.map +1 -1
  17. package/package.json +8 -11
  18. package/LICENSE +0 -12
  19. package/dist/templates/shared-deps.d.ts +0 -23
  20. package/dist/templates/shared-deps.d.ts.map +0 -1
  21. package/dist/templates/shared-deps.js +0 -33
  22. package/dist/templates/shared-deps.js.map +0 -1
  23. package/dist/templates/vite.dynamic-module.appconfig.d.ts +0 -7
  24. package/dist/templates/vite.dynamic-module.appconfig.d.ts.map +0 -1
  25. package/dist/templates/vite.dynamic-module.appconfig.js +0 -72
  26. package/dist/templates/vite.dynamic-module.appconfig.js.map +0 -1
  27. package/dist/templates/vite.dynamic-module.appconfig.test.d.ts +0 -2
  28. package/dist/templates/vite.dynamic-module.appconfig.test.d.ts.map +0 -1
  29. package/dist/templates/vite.dynamic-module.appconfig.test.js +0 -60
  30. package/dist/templates/vite.dynamic-module.appconfig.test.js.map +0 -1
  31. package/dist/templates/vite.host.appconfig.d.ts +0 -32
  32. package/dist/templates/vite.host.appconfig.d.ts.map +0 -1
  33. package/dist/templates/vite.host.appconfig.js +0 -42
  34. package/dist/templates/vite.host.appconfig.js.map +0 -1
  35. package/dist/templates/vite.host.appconfig.test.d.ts +0 -2
  36. package/dist/templates/vite.host.appconfig.test.d.ts.map +0 -1
  37. package/dist/templates/vite.host.appconfig.test.js +0 -51
  38. package/dist/templates/vite.host.appconfig.test.js.map +0 -1
  39. package/dist/types.d.ts +0 -36
  40. package/dist/types.d.ts.map +0 -1
  41. package/dist/types.js +0 -2
  42. package/dist/types.js.map +0 -1
@@ -1,72 +0,0 @@
1
- import vue from "@vitejs/plugin-vue";
2
- import { federation } from "@module-federation/vite";
3
- import { REMOTE_SHARED } from "./shared-deps.js";
4
- import { cwd } from "node:process";
5
- import { resolve } from "node:path";
6
- import { realpathSync } from "node:fs";
7
- /**
8
- * Strips CSS/style from ALL files outside the module's own source directory.
9
- * Remote MF modules should not emit CSS from shared deps (framework, vue, etc.)
10
- * because the host app already provides all base styles, component CSS, and fonts.
11
- *
12
- * Works regardless of how deps are resolved (node_modules, portal:, link:, etc.)
13
- */
14
- function stripExternalStyles() {
15
- let normalizedRoot;
16
- return {
17
- name: "strip-external-styles",
18
- enforce: "pre",
19
- buildStart() {
20
- // Resolve symlinks once at build start, not at import time.
21
- // This handles yarn link, portal:, and other symlink scenarios.
22
- try {
23
- normalizedRoot = realpathSync(resolve(cwd()));
24
- }
25
- catch {
26
- normalizedRoot = resolve(cwd());
27
- }
28
- },
29
- transform(code, id) {
30
- // Normalize the incoming id as well to handle symlinked deps
31
- let normalizedId;
32
- try {
33
- // Strip query params (e.g. ?type=style) before resolving
34
- const idPath = id.split("?")[0];
35
- normalizedId = realpathSync(idPath);
36
- }
37
- catch {
38
- normalizedId = id;
39
- }
40
- if (/type=style/.test(id) && !normalizedId.startsWith(normalizedRoot)) {
41
- return { code: "", map: null };
42
- }
43
- if (/\.(css|scss|sass|less|styl)$/.test(id) && !normalizedId.startsWith(normalizedRoot)) {
44
- return { code: "", map: null };
45
- }
46
- return null;
47
- },
48
- };
49
- }
50
- export default function dynamicModuleConfiguration(pkg, options) {
51
- const entry = options.entry ?? "./src/modules/index.ts";
52
- return {
53
- plugins: [
54
- stripExternalStyles(),
55
- vue(),
56
- federation({
57
- name: pkg.name,
58
- filename: "remoteEntry.js",
59
- exposes: options.exposes ?? {
60
- "./module": entry,
61
- },
62
- shared: { ...REMOTE_SHARED },
63
- dts: false,
64
- }),
65
- ],
66
- build: {
67
- target: "esnext",
68
- outDir: "dist",
69
- },
70
- };
71
- }
72
- //# sourceMappingURL=vite.dynamic-module.appconfig.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vite.dynamic-module.appconfig.js","sourceRoot":"","sources":["../../src/templates/vite.dynamic-module.appconfig.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,oBAAoB,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC;;;;;;GAMG;AACH,SAAS,mBAAmB;IAC1B,IAAI,cAAsB,CAAC;IAE3B,OAAO;QACL,IAAI,EAAE,uBAAuB;QAC7B,OAAO,EAAE,KAAK;QACd,UAAU;YACR,4DAA4D;YAC5D,gEAAgE;YAChE,IAAI,CAAC;gBACH,cAAc,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAChD,CAAC;YAAC,MAAM,CAAC;gBACP,cAAc,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;QACD,SAAS,CAAC,IAAI,EAAE,EAAE;YAChB,6DAA6D;YAC7D,IAAI,YAAoB,CAAC;YACzB,IAAI,CAAC;gBACH,yDAAyD;gBACzD,MAAM,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBAChC,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;YACtC,CAAC;YAAC,MAAM,CAAC;gBACP,YAAY,GAAG,EAAE,CAAC;YACpB,CAAC;YAED,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;gBACtE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;YACjC,CAAC;YACD,IAAI,8BAA8B,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;gBACxF,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;YACjC,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,0BAA0B,CAChD,GAAsC,EACtC,OAA6B;IAE7B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,wBAAwB,CAAC;IAExD,OAAO;QACL,OAAO,EAAE;YACP,mBAAmB,EAAE;YACrB,GAAG,EAAE;YACL,UAAU,CAAC;gBACT,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,QAAQ,EAAE,gBAAgB;gBAC1B,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI;oBAC1B,UAAU,EAAE,KAAK;iBAClB;gBACD,MAAM,EAAE,EAAE,GAAG,aAAa,EAAE;gBAC5B,GAAG,EAAE,KAAK;aACX,CAAC;SACH;QACD,KAAK,EAAE;YACL,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,MAAM;SACf;KACF,CAAC;AACJ,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=vite.dynamic-module.appconfig.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vite.dynamic-module.appconfig.test.d.ts","sourceRoot":"","sources":["../../src/templates/vite.dynamic-module.appconfig.test.ts"],"names":[],"mappings":""}
@@ -1,60 +0,0 @@
1
- import { describe, it, expect, vi } from "vitest";
2
- vi.mock("@module-federation/vite", () => ({
3
- federation: vi.fn((config) => ({ name: "mf-plugin", _config: config })),
4
- }));
5
- vi.mock("@vitejs/plugin-vue", () => ({
6
- default: vi.fn(() => ({ name: "vue-plugin" })),
7
- }));
8
- import dynamicModuleConfiguration from "./vite.dynamic-module.appconfig.js";
9
- describe("dynamicModuleConfiguration (MF)", () => {
10
- const pkg = { name: "reviews", version: "1.0.0" };
11
- it("produces MF remote config with correct name and exposes", () => {
12
- const config = dynamicModuleConfiguration(pkg, {
13
- compatibility: { framework: "^2.0.0" },
14
- });
15
- expect(config.plugins).toBeDefined();
16
- const mfPlugin = config.plugins.find((p) => p._config);
17
- expect(mfPlugin._config.name).toBe("reviews");
18
- expect(mfPlugin._config.filename).toBe("remoteEntry.js");
19
- expect(mfPlugin._config.exposes["./module"]).toBe("./src/modules/index.ts");
20
- });
21
- it("uses custom entry point when provided", () => {
22
- const config = dynamicModuleConfiguration(pkg, {
23
- entry: "./src/custom.ts",
24
- compatibility: { framework: "^2.0.0" },
25
- });
26
- const mfPlugin = config.plugins.find((p) => p._config);
27
- expect(mfPlugin._config.exposes["./module"]).toBe("./src/custom.ts");
28
- });
29
- it("sets build target to esnext", () => {
30
- const config = dynamicModuleConfiguration(pkg, {
31
- compatibility: { framework: "^2.0.0" },
32
- });
33
- expect(config.build?.target).toBe("esnext");
34
- });
35
- it("includes shared deps with singleton: true", () => {
36
- const config = dynamicModuleConfiguration(pkg, {
37
- compatibility: { framework: "^2.0.0" },
38
- });
39
- const mfPlugin = config.plugins.find((p) => p._config);
40
- expect(mfPlugin._config.shared.vue.singleton).toBe(true);
41
- expect(mfPlugin._config.shared["@vc-shell/framework"].singleton).toBe(true);
42
- });
43
- it("stripExternalStyles plugin has buildStart hook for path normalization", () => {
44
- const config = dynamicModuleConfiguration({ name: "test-module", version: "1.0.0" }, {});
45
- const stripPlugin = config.plugins?.flat().find((p) => p?.name === "strip-external-styles");
46
- expect(stripPlugin).toBeDefined();
47
- expect(typeof stripPlugin.buildStart).toBe("function");
48
- expect(typeof stripPlugin.transform).toBe("function");
49
- });
50
- it("uses custom exposes when provided", () => {
51
- const config = dynamicModuleConfiguration(pkg, {
52
- exposes: { "./custom": "./src/custom.ts" },
53
- compatibility: { framework: "^2.0.0" },
54
- });
55
- const mfPlugin = config.plugins.find((p) => p._config);
56
- expect(mfPlugin._config.exposes["./custom"]).toBe("./src/custom.ts");
57
- expect(mfPlugin._config.exposes["./module"]).toBeUndefined();
58
- });
59
- });
60
- //# sourceMappingURL=vite.dynamic-module.appconfig.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vite.dynamic-module.appconfig.test.js","sourceRoot":"","sources":["../../src/templates/vite.dynamic-module.appconfig.test.ts"],"names":[],"mappings":"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"}
@@ -1,32 +0,0 @@
1
- import type { UserConfig } from "vite";
2
- import { type SharedDepConfig } from "./shared-deps.js";
3
- export interface HostFederationOptions {
4
- sharedDeps?: Record<string, SharedDepConfig>;
5
- }
6
- /**
7
- * Vite plugin configuration for Module Federation HOST apps.
8
- *
9
- * **Build-time only.** This configures the MF build plugin so Vite can:
10
- * - Resolve `import` statements to shared deps without bundling duplicates
11
- * - Generate proper chunk structure for MF host semantics
12
- *
13
- * **Does NOT replace runtime init().** The runtime loader (`loader-mf.ts`)
14
- * still calls `@module-federation/enhanced/runtime` `init()` to register
15
- * actual module instances (`lib: () => Vue`, etc.) and discover remotes
16
- * from the server registry. Build-time plugin handles bundling;
17
- * runtime init handles module provision.
18
- *
19
- * @example
20
- * ```ts
21
- * // vite.config.ts (host app)
22
- * import { getApplicationConfiguration, getHostFederationConfig } from "@vc-shell/config-generator";
23
- * import { mergeConfig } from "vite";
24
- *
25
- * export default mergeConfig(
26
- * getApplicationConfiguration(),
27
- * getHostFederationConfig(),
28
- * );
29
- * ```
30
- */
31
- export declare function getHostFederationConfig(options?: HostFederationOptions): UserConfig;
32
- //# sourceMappingURL=vite.host.appconfig.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vite.host.appconfig.d.ts","sourceRoot":"","sources":["../../src/templates/vite.host.appconfig.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AACvC,OAAO,EAAkB,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AAErE,MAAM,WAAW,qBAAqB;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CAC9C;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,CAAC,EAAE,qBAAqB,GAC9B,UAAU,CAaZ"}
@@ -1,42 +0,0 @@
1
- import { federation } from "@module-federation/vite";
2
- import { DEFAULT_SHARED } from "./shared-deps.js";
3
- /**
4
- * Vite plugin configuration for Module Federation HOST apps.
5
- *
6
- * **Build-time only.** This configures the MF build plugin so Vite can:
7
- * - Resolve `import` statements to shared deps without bundling duplicates
8
- * - Generate proper chunk structure for MF host semantics
9
- *
10
- * **Does NOT replace runtime init().** The runtime loader (`loader-mf.ts`)
11
- * still calls `@module-federation/enhanced/runtime` `init()` to register
12
- * actual module instances (`lib: () => Vue`, etc.) and discover remotes
13
- * from the server registry. Build-time plugin handles bundling;
14
- * runtime init handles module provision.
15
- *
16
- * @example
17
- * ```ts
18
- * // vite.config.ts (host app)
19
- * import { getApplicationConfiguration, getHostFederationConfig } from "@vc-shell/config-generator";
20
- * import { mergeConfig } from "vite";
21
- *
22
- * export default mergeConfig(
23
- * getApplicationConfiguration(),
24
- * getHostFederationConfig(),
25
- * );
26
- * ```
27
- */
28
- export function getHostFederationConfig(options) {
29
- return {
30
- plugins: [
31
- federation({
32
- name: "host",
33
- remotes: {},
34
- shared: {
35
- ...DEFAULT_SHARED,
36
- ...options?.sharedDeps,
37
- },
38
- }),
39
- ],
40
- };
41
- }
42
- //# sourceMappingURL=vite.host.appconfig.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vite.host.appconfig.js","sourceRoot":"","sources":["../../src/templates/vite.host.appconfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,OAAO,EAAE,cAAc,EAAwB,MAAM,eAAe,CAAC;AAMrE;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,uBAAuB,CACrC,OAA+B;IAE/B,OAAO;QACL,OAAO,EAAE;YACP,UAAU,CAAC;gBACT,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,EAAE;gBACX,MAAM,EAAE;oBACN,GAAG,cAAc;oBACjB,GAAG,OAAO,EAAE,UAAU;iBACvB;aACF,CAAC;SACH;KACF,CAAC;AACJ,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=vite.host.appconfig.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vite.host.appconfig.test.d.ts","sourceRoot":"","sources":["../../src/templates/vite.host.appconfig.test.ts"],"names":[],"mappings":""}
@@ -1,51 +0,0 @@
1
- import { describe, it, expect, vi } from "vitest";
2
- import { SHARED_DEP_NAMES } from "./shared-deps.js";
3
- vi.mock("@module-federation/vite", () => ({
4
- federation: vi.fn((config) => ({ name: "mf-plugin", _config: config })),
5
- }));
6
- import { getHostFederationConfig } from "./vite.host.appconfig.js";
7
- it("SHARED_DEP_NAMES matches SHARED_DEPS_BASE keys", () => {
8
- expect(SHARED_DEP_NAMES).toEqual(expect.arrayContaining([
9
- "vue", "vue-router", "vue-i18n", "vee-validate",
10
- "lodash-es", "@vueuse/core", "@vc-shell/framework",
11
- ]));
12
- expect(SHARED_DEP_NAMES.length).toBe(7);
13
- });
14
- describe("getHostFederationConfig", () => {
15
- it("returns config with MF plugin containing default shared deps", () => {
16
- const config = getHostFederationConfig();
17
- expect(config.plugins).toBeDefined();
18
- expect(config.plugins).toHaveLength(1);
19
- const plugin = config.plugins[0];
20
- expect(plugin.name).toBe("mf-plugin");
21
- const mfConfig = plugin._config;
22
- expect(mfConfig.name).toBe("host");
23
- expect(mfConfig.remotes).toEqual({});
24
- const shared = mfConfig.shared;
25
- expect(shared.vue).toEqual({ singleton: true, requiredVersion: "^3.4.0" });
26
- expect(shared["vue-router"]).toEqual({ singleton: true, requiredVersion: "^4.0.0" });
27
- expect(shared["vue-i18n"]).toEqual({ singleton: true, requiredVersion: "^9.0.0" });
28
- expect(shared["@vc-shell/framework"]).toEqual({ singleton: true });
29
- expect(shared["vee-validate"]).toEqual({ singleton: true });
30
- expect(shared["lodash-es"]).toEqual({ singleton: true });
31
- expect(shared["@vueuse/core"]).toEqual({ singleton: true });
32
- });
33
- it("merges custom sharedDeps while keeping defaults", () => {
34
- const config = getHostFederationConfig({
35
- sharedDeps: {
36
- "my-lib": { singleton: true, requiredVersion: "^2.0.0" },
37
- vue: { singleton: true, requiredVersion: "^3.5.0", eager: true },
38
- },
39
- });
40
- const plugin = config.plugins[0];
41
- const shared = plugin._config.shared;
42
- // Custom dep added
43
- expect(shared["my-lib"]).toEqual({ singleton: true, requiredVersion: "^2.0.0" });
44
- // Vue overridden by custom
45
- expect(shared.vue).toEqual({ singleton: true, requiredVersion: "^3.5.0", eager: true });
46
- // Other defaults preserved
47
- expect(shared["vue-router"]).toEqual({ singleton: true, requiredVersion: "^4.0.0" });
48
- expect(shared["@vc-shell/framework"]).toEqual({ singleton: true });
49
- });
50
- });
51
- //# sourceMappingURL=vite.host.appconfig.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vite.host.appconfig.test.js","sourceRoot":"","sources":["../../src/templates/vite.host.appconfig.test.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts DELETED
@@ -1,36 +0,0 @@
1
- import { UserConfig } from "vite";
2
- /**
3
- * Compatibility options for dynamic modules
4
- */
5
- export interface CompatibilityOptions {
6
- /**
7
- * Compatible framework version range
8
- * @example "^1.1.0"
9
- */
10
- framework: string;
11
- /**
12
- * Compatible modules version ranges
13
- * @example { "@vc-shell/module-catalog": "^1.0.0" }
14
- */
15
- modules?: Record<string, string>;
16
- }
17
- /**
18
- * Dynamic module configuration options (Module Federation)
19
- */
20
- export interface DynamicModuleOptions extends UserConfig {
21
- /**
22
- * Entry point for the module
23
- * @default "./src/modules/index.ts"
24
- */
25
- entry?: string;
26
- /**
27
- * Custom MF exposes map. Overrides default `{ "./module": entry }`.
28
- */
29
- exposes?: Record<string, string>;
30
- /**
31
- * Compatibility constraints (metadata only — not used during build).
32
- * Used by the runtime registry API for version filtering.
33
- */
34
- compatibility?: CompatibilityOptions;
35
- }
36
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAElC;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,UAAU;IACtD;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEjC;;;OAGG;IACH,aAAa,CAAC,EAAE,oBAAoB,CAAC;CACtC"}
package/dist/types.js DELETED
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
package/dist/types.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}