@fastkit/plugboy-vanilla-extract-plugin 0.0.2 → 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.
@@ -1,5 +1,6 @@
1
1
  import { definePlugin, findFile, findProjectPlugin } from '@fastkit/plugboy';
2
2
  import { vanillaExtractPlugin as vanillaExtractPlugin$1 } from '@vanilla-extract/esbuild-plugin';
3
+ import fs from 'node:fs/promises';
3
4
  import { vanillaExtractPlugin } from '@vanilla-extract/vite-plugin';
4
5
 
5
6
  // src/types.ts
@@ -26,8 +27,6 @@ function ESBuildVanillaExtract(options = {}) {
26
27
  }
27
28
  });
28
29
  }
29
-
30
- // src/plugin.ts
31
30
  async function createVanillaExtractPlugin(options = {}) {
32
31
  return definePlugin({
33
32
  name: PLUGIN_NAME,
@@ -40,6 +39,22 @@ async function createVanillaExtractPlugin(options = {}) {
40
39
  ctx.dirs.src.value,
41
40
  /\.css\.ts$/
42
41
  );
42
+ },
43
+ async onSuccess(builder, files) {
44
+ if (!builder.workspace.meta.hasVanillaExtract)
45
+ return;
46
+ const emptyVanillaImportRe = /(^|\n)import '@vanilla-extract\/css';?/g;
47
+ await Promise.all(
48
+ files.map(async ({ path: filePath }) => {
49
+ if (!filePath.endsWith(".mjs"))
50
+ return;
51
+ const code = await fs.readFile(filePath, "utf-8");
52
+ const replaced = code.replace(emptyVanillaImportRe, "");
53
+ if (code === replaced)
54
+ return;
55
+ await fs.writeFile(filePath, replaced.trimStart(), "utf-8");
56
+ })
57
+ );
43
58
  }
44
59
  },
45
60
  esbuildPlugins: [
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/types.ts","../src/plugin.ts","../src/esbuild.ts","../src/utils.ts","../src/vite.ts"],"names":["vanillaExtractPlugin"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeO,IAAM,cAAc;;;ACf3B,SAAS,cAAc,gBAAgB;;;ACCvC,SAAS,4BAA4B;;;ACDrC,IAAM,oBAAoB,CAAC,QAAQ;AAE5B,SAAS,iBAAiB,QAA4C;AAC3E,QAAM,SAAmB,CAAC,GAAG,iBAAiB;AAC9C,aAAW,SAAS,QAAQ;AAC1B,aAAS,OAAO,KAAK,GAAG,KAAK;AAAA,EAC/B;AACA,SAAO,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC;AACnC;;;ADHO,SAAS,sBACd,UAAyB,CAAC,GACX;AACf,QAAM,EAAE,iBAAiB,CAAC,EAAE,IAAI;AAChC,SAAO,qBAAqB;AAAA,IAC1B,GAAG;AAAA,IACH,gBAAgB;AAAA,MACd,GAAG;AAAA,MACH,UAAU,cAAc,eAAe,QAAQ;AAAA,IACjD;AAAA,EACF,CAAC;AACH;;;ADNA,eAAsB,2BAA2B,UAAyB,CAAC,GAAG;AAC5E,SAAO,aAAmC;AAAA,IACxC,MAAM;AAAA,IACN;AAAA,IACA,OAAO;AAAA,MACL,MAAM,eAAe,KAAK;AACxB,cAAM,EAAE,WAAW,CAAC,EAAE,IAAI,IAAI;AAE9B,YAAI,OAAO,WAAW,CAAC,GAAG,UAAU,mBAAmB;AAEvD,YAAI,KAAK,oBAAoB,MAAM,CAAC,CAAC;AAAA,UACnC,IAAI,KAAK,IAAI;AAAA,UACb;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,gBAAgB;AAAA,MACd,CAAC,cAAc;AACb,YAAI,CAAC,UAAU,KAAK;AAAmB;AACvC,eAAO,sBAAsB,OAAO;AAAA,MACtC;AAAA,IACF;AAAA,EACF,CAAC;AACH;;;AGhCA,SAAS,yBAAyB;AAElC,SAAS,wBAAAA,6BAA4B;AAWrC,eAAsB,yBACpB,UAA2C,CAAC,GACvB;AACrB,QAAM,SAAS,MAAM,kBAAwC,WAAW;AACxE,QAAM;AAAA,IACJ,aAAa;AAAA,IACb,gBAAgB,qBAAqB,CAAC;AAAA,EACxC,IAAI,QAAQ,WAAW,CAAC;AAExB,QAAM,EAAE,iBAAiB,CAAC,EAAE,IAAI;AAEhC,SAAOA,sBAAqB;AAAA,IAC1B,aAAa;AAAA,IACb,GAAG;AAAA,IACH,gBAAgB;AAAA,MACd,GAAG;AAAA,MACH,GAAG;AAAA,MACH,UAAU;AAAA,QACR,mBAAmB;AAAA,QACnB,eAAe;AAAA,MACjB;AAAA,IACF;AAAA,EACF,CAAC;AACH","sourcesContent":["import { Plugin } from '@fastkit/plugboy';\nimport type { vanillaExtractPlugin as esbuildPlugin } from '@vanilla-extract/esbuild-plugin';\n\ntype VanillaExtractPluginOptions = NonNullable<\n Parameters<typeof esbuildPlugin>[0]\n>;\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface VanillaExtractEsbuildOptions\n extends NonNullable<VanillaExtractPluginOptions['esbuildOptions']> {}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface PluginOptions\n extends Pick<VanillaExtractPluginOptions, 'identifiers' | 'esbuildOptions'> {}\n\nexport const PLUGIN_NAME = 'plugboy-vanilla-extract';\n\nexport interface VanillaExtractPlugin extends Plugin {\n name: typeof PLUGIN_NAME;\n options: PluginOptions;\n}\n","import { definePlugin, findFile } from '@fastkit/plugboy';\nimport { ESBuildVanillaExtract } from './esbuild';\nimport { VanillaExtractPlugin, PluginOptions, PLUGIN_NAME } from './types';\n\ndeclare module '@fastkit/plugboy' {\n export interface WorkspaceMeta {\n hasVanillaExtract: boolean;\n }\n}\n\nexport async function createVanillaExtractPlugin(options: PluginOptions = {}) {\n return definePlugin<VanillaExtractPlugin>({\n name: PLUGIN_NAME,\n options,\n hooks: {\n async setupWorkspace(ctx) {\n const { external = [] } = ctx.config;\n\n ctx.config.external = [...external, /@vanilla\\-extract/];\n\n ctx.meta.hasVanillaExtract = await !!findFile(\n ctx.dirs.src.value,\n /\\.css\\.ts$/,\n );\n },\n },\n esbuildPlugins: [\n (workspace) => {\n if (!workspace.meta.hasVanillaExtract) return;\n return ESBuildVanillaExtract(options);\n },\n ],\n });\n}\n","import { ESBuildPlugin } from '@fastkit/plugboy';\nimport { vanillaExtractPlugin } from '@vanilla-extract/esbuild-plugin';\nimport { PluginOptions } from './types';\nimport { mergeExternal } from './utils';\n\nexport function ESBuildVanillaExtract(\n options: PluginOptions = {},\n): ESBuildPlugin {\n const { esbuildOptions = {} } = options;\n return vanillaExtractPlugin({\n ...options,\n esbuildOptions: {\n ...esbuildOptions,\n external: mergeExternal(esbuildOptions.external),\n },\n }) as any;\n}\n","const EXTERNAL_DEFAULTS = ['node:*'];\n\nexport function mergeExternal(...chunks: (string[] | undefined)[]): string[] {\n const result: string[] = [...EXTERNAL_DEFAULTS];\n for (const chunk of chunks) {\n chunk && result.push(...chunk);\n }\n return Array.from(new Set(result));\n}\n","import { PLUGIN_NAME, VanillaExtractPlugin } from './types';\nimport { findProjectPlugin } from '@fastkit/plugboy';\nimport { Plugin as VitePlugin } from 'vite';\nimport { vanillaExtractPlugin } from '@vanilla-extract/vite-plugin';\nimport { mergeExternal } from './utils';\n\ntype VanillaExtractVitePluginOptions = NonNullable<\n Parameters<typeof vanillaExtractPlugin>[0]\n>;\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface ViteVanillaExtractPluginOptions\n extends VanillaExtractVitePluginOptions {}\n\nexport async function ViteVanillaExtractPlugin(\n options: ViteVanillaExtractPluginOptions = {},\n): Promise<VitePlugin> {\n const plugin = await findProjectPlugin<VanillaExtractPlugin>(PLUGIN_NAME);\n const {\n identifiers: baseIdentifiers,\n esbuildOptions: baseEsbuildOptions = {},\n } = plugin?.options || {};\n\n const { esbuildOptions = {} } = options;\n\n return vanillaExtractPlugin({\n identifiers: baseIdentifiers,\n ...options,\n esbuildOptions: {\n ...baseEsbuildOptions,\n ...esbuildOptions,\n external: mergeExternal(\n baseEsbuildOptions.external,\n esbuildOptions.external,\n ),\n },\n });\n}\n"]}
1
+ {"version":3,"sources":["../src/types.ts","../src/plugin.ts","../src/esbuild.ts","../src/utils.ts","../src/vite.ts"],"names":["vanillaExtractPlugin"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeO,IAAM,cAAc;;;ACf3B,SAAS,cAAc,gBAAgB;;;ACCvC,SAAS,4BAA4B;;;ACDrC,IAAM,oBAAoB,CAAC,QAAQ;AAE5B,SAAS,iBAAiB,QAA4C;AAC3E,QAAM,SAAmB,CAAC,GAAG,iBAAiB;AAC9C,aAAW,SAAS,QAAQ;AAC1B,aAAS,OAAO,KAAK,GAAG,KAAK;AAAA,EAC/B;AACA,SAAO,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC;AACnC;;;ADHO,SAAS,sBACd,UAAyB,CAAC,GACX;AACf,QAAM,EAAE,iBAAiB,CAAC,EAAE,IAAI;AAEhC,SAAO,qBAAqB;AAAA,IAC1B,GAAG;AAAA,IACH,gBAAgB;AAAA,MACd,GAAG;AAAA,MACH,UAAU,cAAc,eAAe,QAAQ;AAAA,IACjD;AAAA,EACF,CAAC;AACH;;;ADdA,OAAO,QAAQ;AAQf,eAAsB,2BAA2B,UAAyB,CAAC,GAAG;AAC5E,SAAO,aAAmC;AAAA,IACxC,MAAM;AAAA,IACN;AAAA,IACA,OAAO;AAAA,MACL,MAAM,eAAe,KAAK;AACxB,cAAM,EAAE,WAAW,CAAC,EAAE,IAAI,IAAI;AAE9B,YAAI,OAAO,WAAW,CAAC,GAAG,UAAU,mBAAmB;AAEvD,YAAI,KAAK,oBAAoB,MAAM,CAAC,CAAC;AAAA,UACnC,IAAI,KAAK,IAAI;AAAA,UACb;AAAA,QACF;AAAA,MACF;AAAA,MACA,MAAM,UAAU,SAAS,OAAO;AAC9B,YAAI,CAAC,QAAQ,UAAU,KAAK;AAAmB;AAC/C,cAAM,uBAAuB;AAC7B,cAAM,QAAQ;AAAA,UACZ,MAAM,IAAI,OAAO,EAAE,MAAM,SAAS,MAAM;AACtC,gBAAI,CAAC,SAAS,SAAS,MAAM;AAAG;AAChC,kBAAM,OAAO,MAAM,GAAG,SAAS,UAAU,OAAO;AAChD,kBAAM,WAAW,KAAK,QAAQ,sBAAsB,EAAE;AACtD,gBAAI,SAAS;AAAU;AAEvB,kBAAM,GAAG,UAAU,UAAU,SAAS,UAAU,GAAG,OAAO;AAAA,UAC5D,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAAA,IACA,gBAAgB;AAAA,MACd,CAAC,cAAc;AACb,YAAI,CAAC,UAAU,KAAK;AAAmB;AACvC,eAAO,sBAAsB,OAAO;AAAA,MACtC;AAAA,IACF;AAAA,EACF,CAAC;AACH;;;AG/CA,SAAS,yBAAyB;AAElC,SAAS,wBAAAA,6BAA4B;AAWrC,eAAsB,yBACpB,UAA2C,CAAC,GACvB;AACrB,QAAM,SAAS,MAAM,kBAAwC,WAAW;AACxE,QAAM;AAAA,IACJ,aAAa;AAAA,IACb,gBAAgB,qBAAqB,CAAC;AAAA,EACxC,IAAI,QAAQ,WAAW,CAAC;AAExB,QAAM,EAAE,iBAAiB,CAAC,EAAE,IAAI;AAEhC,SAAOA,sBAAqB;AAAA,IAC1B,aAAa;AAAA,IACb,GAAG;AAAA,IACH,gBAAgB;AAAA,MACd,GAAG;AAAA,MACH,GAAG;AAAA,MACH,UAAU;AAAA,QACR,mBAAmB;AAAA,QACnB,eAAe;AAAA,MACjB;AAAA,IACF;AAAA,EACF,CAAC;AACH","sourcesContent":["import { Plugin } from '@fastkit/plugboy';\nimport type { vanillaExtractPlugin as esbuildPlugin } from '@vanilla-extract/esbuild-plugin';\n\ntype VanillaExtractPluginOptions = NonNullable<\n Parameters<typeof esbuildPlugin>[0]\n>;\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface VanillaExtractEsbuildOptions\n extends NonNullable<VanillaExtractPluginOptions['esbuildOptions']> {}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface PluginOptions\n extends Pick<VanillaExtractPluginOptions, 'identifiers' | 'esbuildOptions'> {}\n\nexport const PLUGIN_NAME = 'plugboy-vanilla-extract';\n\nexport interface VanillaExtractPlugin extends Plugin {\n name: typeof PLUGIN_NAME;\n options: PluginOptions;\n}\n","import { definePlugin, findFile } from '@fastkit/plugboy';\nimport { ESBuildVanillaExtract } from './esbuild';\nimport { VanillaExtractPlugin, PluginOptions, PLUGIN_NAME } from './types';\nimport fs from 'node:fs/promises';\n\ndeclare module '@fastkit/plugboy' {\n export interface WorkspaceMeta {\n hasVanillaExtract: boolean;\n }\n}\n\nexport async function createVanillaExtractPlugin(options: PluginOptions = {}) {\n return definePlugin<VanillaExtractPlugin>({\n name: PLUGIN_NAME,\n options,\n hooks: {\n async setupWorkspace(ctx) {\n const { external = [] } = ctx.config;\n\n ctx.config.external = [...external, /@vanilla\\-extract/];\n\n ctx.meta.hasVanillaExtract = await !!findFile(\n ctx.dirs.src.value,\n /\\.css\\.ts$/,\n );\n },\n async onSuccess(builder, files) {\n if (!builder.workspace.meta.hasVanillaExtract) return;\n const emptyVanillaImportRe = /(^|\\n)import '@vanilla-extract\\/css';?/g;\n await Promise.all(\n files.map(async ({ path: filePath }) => {\n if (!filePath.endsWith('.mjs')) return;\n const code = await fs.readFile(filePath, 'utf-8');\n const replaced = code.replace(emptyVanillaImportRe, '');\n if (code === replaced) return;\n\n await fs.writeFile(filePath, replaced.trimStart(), 'utf-8');\n }),\n );\n },\n },\n esbuildPlugins: [\n (workspace) => {\n if (!workspace.meta.hasVanillaExtract) return;\n return ESBuildVanillaExtract(options);\n },\n ],\n });\n}\n","import { ESBuildPlugin } from '@fastkit/plugboy';\nimport { vanillaExtractPlugin } from '@vanilla-extract/esbuild-plugin';\nimport { PluginOptions } from './types';\nimport { mergeExternal } from './utils';\n\nexport function ESBuildVanillaExtract(\n options: PluginOptions = {},\n): ESBuildPlugin {\n const { esbuildOptions = {} } = options;\n\n return vanillaExtractPlugin({\n ...options,\n esbuildOptions: {\n ...esbuildOptions,\n external: mergeExternal(esbuildOptions.external),\n },\n }) as any;\n}\n","const EXTERNAL_DEFAULTS = ['node:*'];\n\nexport function mergeExternal(...chunks: (string[] | undefined)[]): string[] {\n const result: string[] = [...EXTERNAL_DEFAULTS];\n for (const chunk of chunks) {\n chunk && result.push(...chunk);\n }\n return Array.from(new Set(result));\n}\n","import { PLUGIN_NAME, VanillaExtractPlugin } from './types';\nimport { findProjectPlugin } from '@fastkit/plugboy';\nimport { Plugin as VitePlugin } from 'vite';\nimport { vanillaExtractPlugin } from '@vanilla-extract/vite-plugin';\nimport { mergeExternal } from './utils';\n\ntype VanillaExtractVitePluginOptions = NonNullable<\n Parameters<typeof vanillaExtractPlugin>[0]\n>;\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface ViteVanillaExtractPluginOptions\n extends VanillaExtractVitePluginOptions {}\n\nexport async function ViteVanillaExtractPlugin(\n options: ViteVanillaExtractPluginOptions = {},\n): Promise<VitePlugin> {\n const plugin = await findProjectPlugin<VanillaExtractPlugin>(PLUGIN_NAME);\n const {\n identifiers: baseIdentifiers,\n esbuildOptions: baseEsbuildOptions = {},\n } = plugin?.options || {};\n\n const { esbuildOptions = {} } = options;\n\n return vanillaExtractPlugin({\n identifiers: baseIdentifiers,\n ...options,\n esbuildOptions: {\n ...baseEsbuildOptions,\n ...esbuildOptions,\n external: mergeExternal(\n baseEsbuildOptions.external,\n esbuildOptions.external,\n ),\n },\n });\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fastkit/plugboy-vanilla-extract-plugin",
3
- "version": "0.0.2",
3
+ "version": "1.0.0",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "repository": {
@@ -39,11 +39,11 @@
39
39
  },
40
40
  "devDependencies": {
41
41
  "vite": "^4.1.1",
42
- "@fastkit/plugboy": "0.0.2"
42
+ "@fastkit/plugboy": "0.1.0"
43
43
  },
44
44
  "peerDependencies": {
45
45
  "vite": "^4.1.1",
46
- "@fastkit/plugboy": "0.0.2"
46
+ "@fastkit/plugboy": "0.1.0"
47
47
  },
48
48
  "peerDependenciesMeta": {
49
49
  "@vanilla-extract/vite-plugin": {