@navita/vite-plugin 0.0.0-main-20230917201540

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 (4) hide show
  1. package/index.d.ts +10 -0
  2. package/index.js +114 -0
  3. package/index.mjs +93 -0
  4. package/package.json +18 -0
package/index.d.ts ADDED
@@ -0,0 +1,10 @@
1
+ import { ImportMap, EngineOptions } from '@navita/core/createRenderer';
2
+ import { Plugin } from 'vite';
3
+
4
+ interface Options {
5
+ importMap?: ImportMap;
6
+ engineOptions?: EngineOptions;
7
+ }
8
+ declare function navita(options?: Options): Plugin;
9
+
10
+ export { navita };
package/index.js ADDED
@@ -0,0 +1,114 @@
1
+ 'use strict';
2
+
3
+ var fs = require('node:fs');
4
+ var createRenderer = require('@navita/core/createRenderer');
5
+ var css = require('@navita/css');
6
+
7
+ function _interopNamespaceDefault(e) {
8
+ var n = Object.create(null);
9
+ if (e) {
10
+ Object.keys(e).forEach(function (k) {
11
+ if (k !== 'default') {
12
+ var d = Object.getOwnPropertyDescriptor(e, k);
13
+ Object.defineProperty(n, k, d.get ? d : {
14
+ enumerable: true,
15
+ get: function () { return e[k]; }
16
+ });
17
+ }
18
+ });
19
+ }
20
+ n.default = e;
21
+ return Object.freeze(n);
22
+ }
23
+
24
+ var fs__namespace = /*#__PURE__*/_interopNamespaceDefault(fs);
25
+
26
+ const VIRTUAL_MODULE_NAME = 'virtual:navita';
27
+ const VIRTUAL_CSS_NAME = 'virtual:navita.css';
28
+ function navita(options) {
29
+ let renderer;
30
+ const importMap = [
31
+ ...css.importMap,
32
+ ...options?.importMap || []
33
+ ];
34
+ let server;
35
+ let lastCssContent;
36
+ return {
37
+ name: "navita",
38
+ enforce: "pre",
39
+ configureServer (_server) {
40
+ lastCssContent = undefined;
41
+ server = _server;
42
+ },
43
+ async buildStart () {
44
+ const defaultEngineOptions = {
45
+ enableSourceMaps: !!server,
46
+ enableDebugIdentifiers: !!server,
47
+ ...options?.engineOptions || {}
48
+ };
49
+ renderer = createRenderer.createRenderer({
50
+ importMap,
51
+ engineOptions: defaultEngineOptions,
52
+ resolver: async (filepath, request)=>{
53
+ const resolved = await this.resolve(request, filepath);
54
+ return resolved?.id || null;
55
+ },
56
+ readFile: (path)=>{
57
+ return fs__namespace.promises.readFile(path, 'utf-8');
58
+ }
59
+ });
60
+ },
61
+ async resolveId (source) {
62
+ if (source === VIRTUAL_MODULE_NAME) {
63
+ return VIRTUAL_CSS_NAME;
64
+ }
65
+ return null;
66
+ },
67
+ async load (id) {
68
+ if (id === VIRTUAL_CSS_NAME) {
69
+ return lastCssContent;
70
+ }
71
+ return null;
72
+ },
73
+ async transform (code, id) {
74
+ // Bail as early as we can
75
+ if (!importMap.map((x)=>x.source).some((value)=>code.indexOf(value) !== -1)) {
76
+ return null;
77
+ }
78
+ const { result } = await renderer.transformAndProcess({
79
+ content: code,
80
+ filePath: id
81
+ });
82
+ const newCssContent = renderer.engine.renderCssToString();
83
+ if (lastCssContent !== newCssContent) {
84
+ if (server) {
85
+ const { moduleGraph } = server;
86
+ const virtualModule = moduleGraph.getModuleById(VIRTUAL_CSS_NAME);
87
+ if (virtualModule) {
88
+ moduleGraph.invalidateModule(virtualModule);
89
+ virtualModule.lastHMRTimestamp = Date.now();
90
+ }
91
+ }
92
+ lastCssContent = newCssContent;
93
+ }
94
+ return `
95
+ ${result}
96
+ import "${VIRTUAL_MODULE_NAME}";
97
+ `;
98
+ },
99
+ renderChunk (_, chunk) {
100
+ for (const id of Object.keys(chunk.modules)){
101
+ if (id.startsWith(VIRTUAL_CSS_NAME)) {
102
+ delete chunk.modules[id];
103
+ }
104
+ }
105
+ chunk.viteMetadata.importedCss.add(this.getFileName(this.emitFile({
106
+ name: "navita.css",
107
+ type: "asset",
108
+ source: renderer.engine.renderCssToString()
109
+ })));
110
+ }
111
+ };
112
+ }
113
+
114
+ exports.navita = navita;
package/index.mjs ADDED
@@ -0,0 +1,93 @@
1
+ import * as fs from 'node:fs';
2
+ import { createRenderer } from '@navita/core/createRenderer';
3
+ import { importMap } from '@navita/css';
4
+
5
+ const VIRTUAL_MODULE_NAME = 'virtual:navita';
6
+ const VIRTUAL_CSS_NAME = 'virtual:navita.css';
7
+ function navita(options) {
8
+ let renderer;
9
+ const importMap$1 = [
10
+ ...importMap,
11
+ ...options?.importMap || []
12
+ ];
13
+ let server;
14
+ let lastCssContent;
15
+ return {
16
+ name: "navita",
17
+ enforce: "pre",
18
+ configureServer (_server) {
19
+ lastCssContent = undefined;
20
+ server = _server;
21
+ },
22
+ async buildStart () {
23
+ const defaultEngineOptions = {
24
+ enableSourceMaps: !!server,
25
+ enableDebugIdentifiers: !!server,
26
+ ...options?.engineOptions || {}
27
+ };
28
+ renderer = createRenderer({
29
+ importMap: importMap$1,
30
+ engineOptions: defaultEngineOptions,
31
+ resolver: async (filepath, request)=>{
32
+ const resolved = await this.resolve(request, filepath);
33
+ return resolved?.id || null;
34
+ },
35
+ readFile: (path)=>{
36
+ return fs.promises.readFile(path, 'utf-8');
37
+ }
38
+ });
39
+ },
40
+ async resolveId (source) {
41
+ if (source === VIRTUAL_MODULE_NAME) {
42
+ return VIRTUAL_CSS_NAME;
43
+ }
44
+ return null;
45
+ },
46
+ async load (id) {
47
+ if (id === VIRTUAL_CSS_NAME) {
48
+ return lastCssContent;
49
+ }
50
+ return null;
51
+ },
52
+ async transform (code, id) {
53
+ // Bail as early as we can
54
+ if (!importMap$1.map((x)=>x.source).some((value)=>code.indexOf(value) !== -1)) {
55
+ return null;
56
+ }
57
+ const { result } = await renderer.transformAndProcess({
58
+ content: code,
59
+ filePath: id
60
+ });
61
+ const newCssContent = renderer.engine.renderCssToString();
62
+ if (lastCssContent !== newCssContent) {
63
+ if (server) {
64
+ const { moduleGraph } = server;
65
+ const virtualModule = moduleGraph.getModuleById(VIRTUAL_CSS_NAME);
66
+ if (virtualModule) {
67
+ moduleGraph.invalidateModule(virtualModule);
68
+ virtualModule.lastHMRTimestamp = Date.now();
69
+ }
70
+ }
71
+ lastCssContent = newCssContent;
72
+ }
73
+ return `
74
+ ${result}
75
+ import "${VIRTUAL_MODULE_NAME}";
76
+ `;
77
+ },
78
+ renderChunk (_, chunk) {
79
+ for (const id of Object.keys(chunk.modules)){
80
+ if (id.startsWith(VIRTUAL_CSS_NAME)) {
81
+ delete chunk.modules[id];
82
+ }
83
+ }
84
+ chunk.viteMetadata.importedCss.add(this.getFileName(this.emitFile({
85
+ name: "navita.css",
86
+ type: "asset",
87
+ source: renderer.engine.renderCssToString()
88
+ })));
89
+ }
90
+ };
91
+ }
92
+
93
+ export { navita };
package/package.json ADDED
@@ -0,0 +1,18 @@
1
+ {
2
+ "name": "@navita/vite-plugin",
3
+ "version": "0.0.0-main-20230917201540",
4
+ "license": "MIT",
5
+ "private": false,
6
+ "sideEffects": false,
7
+ "exports": {
8
+ ".": {
9
+ "import": "./index.mjs",
10
+ "require": "./index.js",
11
+ "types": "./index.d.ts"
12
+ }
13
+ },
14
+ "dependencies": {
15
+ "@navita/core": "0.0.0-main-20230917201540",
16
+ "@navita/css": "0.0.0-main-20230917201540"
17
+ }
18
+ }