dynim-plugin-vite 1.0.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.
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Vite plugin for Dynim package exposure
3
+ */
4
+ export { dynimPackages, type DynimPackagesOptions } from './plugin.js';
5
+ export { dynimPackages as default } from './plugin.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,aAAa,CAAA;AACtE,OAAO,EAAE,aAAa,IAAI,OAAO,EAAE,MAAM,aAAa,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Vite plugin for Dynim package exposure
3
+ */
4
+ export { dynimPackages } from './plugin.js';
5
+ export { dynimPackages as default } from './plugin.js';
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Vite plugin for Dynim package exposure
3
+ *
4
+ * Generates a virtual module that exports all specified packages,
5
+ * so you don't have to manually import and map each one.
6
+ *
7
+ * Usage:
8
+ * ```ts
9
+ * // vite.config.ts
10
+ * import { dynimPackages } from 'dynim-plugin-vite'
11
+ *
12
+ * export default {
13
+ * plugins: [
14
+ * dynimPackages([
15
+ * 'react-router-dom',
16
+ * '@tanstack/react-query',
17
+ * 'axios',
18
+ * ])
19
+ * ]
20
+ * }
21
+ * ```
22
+ *
23
+ * Then in your app:
24
+ * ```ts
25
+ * import packages from 'virtual:dynim-packages'
26
+ *
27
+ * <DynimProvider config={{ packages }}>
28
+ * ```
29
+ */
30
+ import type { Plugin } from 'vite';
31
+ export interface DynimPackagesOptions {
32
+ /**
33
+ * List of package names to expose to dynim bundles.
34
+ * These must be installed in your project's node_modules.
35
+ */
36
+ packages: string[];
37
+ }
38
+ /**
39
+ * Vite plugin that generates a virtual module exporting all specified packages.
40
+ *
41
+ * @param packages - Array of package names, or options object
42
+ * @returns Vite plugin
43
+ *
44
+ * @example
45
+ * // Simple usage - array of package names
46
+ * dynimPackages(['react-router-dom', 'axios'])
47
+ *
48
+ * @example
49
+ * // Options object
50
+ * dynimPackages({ packages: ['react-router-dom', 'axios'] })
51
+ */
52
+ export declare function dynimPackages(packagesOrOptions: string[] | DynimPackagesOptions): Plugin;
53
+ export default dynimPackages;
54
+ //# sourceMappingURL=plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAKlC,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAC3B,iBAAiB,EAAE,MAAM,EAAE,GAAG,oBAAoB,GACjD,MAAM,CAwCR;AAED,eAAe,aAAa,CAAA"}
package/dist/plugin.js ADDED
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Vite plugin for Dynim package exposure
3
+ *
4
+ * Generates a virtual module that exports all specified packages,
5
+ * so you don't have to manually import and map each one.
6
+ *
7
+ * Usage:
8
+ * ```ts
9
+ * // vite.config.ts
10
+ * import { dynimPackages } from 'dynim-plugin-vite'
11
+ *
12
+ * export default {
13
+ * plugins: [
14
+ * dynimPackages([
15
+ * 'react-router-dom',
16
+ * '@tanstack/react-query',
17
+ * 'axios',
18
+ * ])
19
+ * ]
20
+ * }
21
+ * ```
22
+ *
23
+ * Then in your app:
24
+ * ```ts
25
+ * import packages from 'virtual:dynim-packages'
26
+ *
27
+ * <DynimProvider config={{ packages }}>
28
+ * ```
29
+ */
30
+ const VIRTUAL_MODULE_ID = 'virtual:dynim-packages';
31
+ const RESOLVED_VIRTUAL_MODULE_ID = '\0' + VIRTUAL_MODULE_ID;
32
+ /**
33
+ * Vite plugin that generates a virtual module exporting all specified packages.
34
+ *
35
+ * @param packages - Array of package names, or options object
36
+ * @returns Vite plugin
37
+ *
38
+ * @example
39
+ * // Simple usage - array of package names
40
+ * dynimPackages(['react-router-dom', 'axios'])
41
+ *
42
+ * @example
43
+ * // Options object
44
+ * dynimPackages({ packages: ['react-router-dom', 'axios'] })
45
+ */
46
+ export function dynimPackages(packagesOrOptions) {
47
+ const packageNames = Array.isArray(packagesOrOptions)
48
+ ? packagesOrOptions
49
+ : packagesOrOptions.packages;
50
+ return {
51
+ name: 'dynim-packages',
52
+ resolveId(id) {
53
+ if (id === VIRTUAL_MODULE_ID) {
54
+ return RESOLVED_VIRTUAL_MODULE_ID;
55
+ }
56
+ },
57
+ load(id) {
58
+ if (id === RESOLVED_VIRTUAL_MODULE_ID) {
59
+ // Generate import statements for each package
60
+ const imports = packageNames
61
+ .map((name, i) => `import * as _pkg${i} from '${name}'`)
62
+ .join('\n');
63
+ // Generate the packages object entries
64
+ // Spread namespace objects into plain objects so exports are enumerable
65
+ const entries = packageNames
66
+ .map((name, i) => ` '${name}': { ..._pkg${i} }`)
67
+ .join(',\n');
68
+ // Return the generated module code
69
+ return `${imports}
70
+
71
+ const packages = {
72
+ ${entries}
73
+ }
74
+
75
+ export default packages
76
+ export { packages }
77
+ `;
78
+ }
79
+ },
80
+ };
81
+ }
82
+ export default dynimPackages;
package/package.json ADDED
@@ -0,0 +1,34 @@
1
+ {
2
+ "name": "dynim-plugin-vite",
3
+ "version": "1.0.0",
4
+ "description": "Vite plugin for exposing packages to Dynim bundles",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.js"
12
+ },
13
+ "./virtual-module": {
14
+ "types": "./src/virtual-module.d.ts"
15
+ }
16
+ },
17
+ "files": [
18
+ "dist",
19
+ "src/virtual-module.d.ts",
20
+ "README.md"
21
+ ],
22
+ "scripts": {
23
+ "build": "tsc",
24
+ "dev": "tsc --watch"
25
+ },
26
+ "peerDependencies": {
27
+ "vite": ">=4.0.0"
28
+ },
29
+ "devDependencies": {
30
+ "typescript": "^5.9.3",
31
+ "vite": "^5.0.11"
32
+ },
33
+ "license": "MIT"
34
+ }
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Type declarations for the virtual:dynim-packages module.
3
+ *
4
+ * To use these types, add to your tsconfig.json:
5
+ * {
6
+ * "compilerOptions": {
7
+ * "types": ["dynim-plugin-vite/virtual-module"]
8
+ * }
9
+ * }
10
+ *
11
+ * Or add a reference in a .d.ts file:
12
+ * /// <reference types="dynim-plugin-vite/virtual-module" />
13
+ */
14
+
15
+ declare module 'virtual:dynim-packages' {
16
+ /**
17
+ * Object mapping package names to their exports.
18
+ * The actual shape depends on which packages you configured
19
+ * in the dynimPackages() plugin.
20
+ */
21
+ const packages: Record<string, unknown>
22
+ export default packages
23
+ export { packages }
24
+ }