@soda-gql/webpack-plugin 0.12.3 → 0.12.4
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/loader.cjs +1 -0
- package/dist/loader.cjs.map +1 -1
- package/dist/loader.d.cts.map +1 -1
- package/dist/loader.d.mts.map +1 -1
- package/dist/loader.mjs +1 -0
- package/dist/loader.mjs.map +1 -1
- package/package.json +8 -8
package/dist/loader.cjs
CHANGED
|
@@ -68,6 +68,7 @@ const sodaGqlLoader = function(source, inputSourceMap) {
|
|
|
68
68
|
sourcePath: filename,
|
|
69
69
|
inputSourceMap: inputSourceMap ? JSON.stringify(inputSourceMap) : void 0
|
|
70
70
|
});
|
|
71
|
+
if (result$1.errors.length > 0) for (const error of result$1.errors) console.warn(`[@soda-gql/webpack-plugin] SWC ${error.stage} warning: ${error.message} (${error.code})`);
|
|
71
72
|
if (result$1.transformed) {
|
|
72
73
|
const sourceMap = result$1.sourceMap ? JSON.parse(result$1.sourceMap) : void 0;
|
|
73
74
|
callback(null, result$1.sourceCode, sourceMap);
|
package/dist/loader.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.cjs","names":["sodaGqlLoader: LoaderDefinitionFunction<WebpackLoaderOptions>","relativePath","result"],"sources":["../src/loader.ts"],"sourcesContent":["import { relative, resolve } from \"node:path\";\nimport { createBabelTransformer } from \"@soda-gql/babel\";\nimport {\n createPluginSession,\n getSharedArtifact,\n getSharedPluginSession,\n getSharedState,\n getSharedSwcTransformer,\n getStateKey,\n type PluginSession,\n} from \"@soda-gql/builder/plugin-support\";\nimport { normalizePath } from \"@soda-gql/common\";\nimport type { LoaderDefinitionFunction } from \"webpack\";\nimport type { WebpackLoaderOptions } from \"./types\";\n\n/**\n * Ensure plugin session is initialized.\n * First tries to use shared session from plugin, falls back to creating own.\n */\nconst ensurePluginSession = (options: WebpackLoaderOptions): PluginSession | null => {\n const stateKey = getStateKey(options.configPath);\n\n // Try to use shared session from plugin first\n const sharedSession = getSharedPluginSession(stateKey);\n if (sharedSession) {\n return sharedSession;\n }\n\n // Fall back to creating own session (for standalone loader usage)\n return createPluginSession(\n {\n configPath: options.configPath,\n enabled: options.enabled,\n },\n \"@soda-gql/webpack-plugin/loader\",\n );\n};\n\n/**\n * Webpack loader that transforms soda-gql code using the babel-plugin.\n */\nconst sodaGqlLoader: LoaderDefinitionFunction<WebpackLoaderOptions> = function (source, inputSourceMap) {\n const callback = this.async();\n const options = this.getOptions();\n const filename = this.resourcePath;\n const stateKey = getStateKey(options.configPath);\n\n (async () => {\n try {\n const session = ensurePluginSession(options);\n if (!session) {\n // Plugin disabled or config load failed, pass through unchanged\n callback(null, source, inputSourceMap as Parameters<typeof callback>[2]);\n return;\n }\n\n // Try to use shared artifact from plugin first (more efficient in watch mode)\n let artifact = getSharedArtifact(stateKey);\n\n // Fall back to fetching artifact if not shared\n if (!artifact) {\n artifact = await session.getArtifactAsync();\n }\n\n if (!artifact) {\n callback(null, source, inputSourceMap as Parameters<typeof callback>[2]);\n return;\n }\n\n const baseDir = session.config.baseDir;\n\n // Helper to convert absolute path to relative for matching against artifact sourcePaths\n const toRelativePath = (absolutePath: string): string => {\n return normalizePath(relative(baseDir, absolutePath));\n };\n\n // Helper to convert relative path to absolute for webpack's addDependency\n const toAbsolutePath = (relativePath: string): string => {\n return normalizePath(resolve(baseDir, relativePath));\n };\n\n // Check if this file contains any soda-gql elements\n // Convert absolute path to relative for matching against artifact sourcePaths\n const relativePath = toRelativePath(filename);\n const hasElements = Object.values(artifact.elements).some(\n (element) => normalizePath(element.metadata.sourcePath) === relativePath,\n );\n\n if (!hasElements) {\n // Not a soda-gql file, pass through unchanged\n callback(null, source, inputSourceMap as Parameters<typeof callback>[2]);\n return;\n }\n\n // Add dependencies based on module adjacency for precise HMR\n const sharedState = getSharedState(stateKey);\n const relativeFilename = toRelativePath(filename);\n\n // Use module adjacency for efficient dependency tracking\n // moduleAdjacency maps: importedFile -> Set<importingFiles> (now using relative paths)\n if (sharedState.moduleAdjacency.size > 0) {\n // Add files that import this file (reverse dependencies)\n const importers = sharedState.moduleAdjacency.get(relativeFilename);\n if (importers) {\n for (const importer of importers) {\n // Convert relative path to absolute for webpack\n this.addDependency(toAbsolutePath(importer));\n }\n }\n\n // Add files that this file imports (forward dependencies)\n for (const [importedFile, importingFiles] of sharedState.moduleAdjacency) {\n if (importingFiles.has(relativeFilename)) {\n // Convert relative path to absolute for webpack\n this.addDependency(toAbsolutePath(importedFile));\n }\n }\n } else {\n // Fallback: Add all soda-gql source files as dependencies (conservative approach)\n for (const element of Object.values(artifact.elements)) {\n const elementPath = element.metadata.sourcePath;\n if (elementPath && elementPath !== relativePath) {\n // Convert relative path to absolute for webpack\n this.addDependency(toAbsolutePath(elementPath));\n }\n }\n }\n\n // Use SWC transformer if configured and available\n if (options.transformer === \"swc\") {\n const swcTransformer = getSharedSwcTransformer(stateKey);\n if (swcTransformer) {\n const result = swcTransformer.transform({\n sourceCode: source,\n sourcePath: filename,\n inputSourceMap: inputSourceMap ? JSON.stringify(inputSourceMap) : undefined,\n });\n\n if (result.transformed) {\n const sourceMap = result.sourceMap ? JSON.parse(result.sourceMap) : undefined;\n callback(null, result.sourceCode, sourceMap);\n return;\n }\n // Not transformed (no soda-gql code in file), pass through\n callback(null, source, inputSourceMap as Parameters<typeof callback>[2]);\n return;\n }\n // SWC transformer not available, fall through to Babel\n console.warn(\n \"[@soda-gql/webpack-plugin] SWC transformer not available, falling back to Babel. \" +\n \"Ensure the plugin has transformer: 'swc' option set.\",\n );\n }\n\n // Transform using babel-transformer directly (default)\n const babelTransformer = createBabelTransformer({\n artifact,\n config: session.config,\n sourceMap: true,\n });\n\n const result = babelTransformer.transform({\n sourceCode: source,\n sourcePath: filename,\n inputSourceMap: inputSourceMap ? JSON.stringify(inputSourceMap) : undefined,\n });\n\n if (result.transformed) {\n const sourceMap = result.sourceMap ? JSON.parse(result.sourceMap) : undefined;\n callback(null, result.sourceCode, sourceMap);\n } else {\n callback(null, source, inputSourceMap as Parameters<typeof callback>[2]);\n }\n } catch (error) {\n callback(error as Error);\n }\n })();\n};\n\nexport default sodaGqlLoader;\n\n// Mark as non-raw (we handle string source code)\nexport const raw = false;\n"],"mappings":";;;;;;;;;;;AAmBA,MAAM,uBAAuB,YAAwD;CAInF,MAAM,iIAHuB,QAAQ,WAAW,CAGM;AACtD,KAAI,cACF,QAAO;AAIT,mEACE;EACE,YAAY,QAAQ;EACpB,SAAS,QAAQ;EAClB,EACD,kCACD;;;;;AAMH,MAAMA,gBAAgE,SAAU,QAAQ,gBAAgB;CACtG,MAAM,WAAW,KAAK,OAAO;CAC7B,MAAM,UAAU,KAAK,YAAY;CACjC,MAAM,WAAW,KAAK;CACtB,MAAM,8DAAuB,QAAQ,WAAW;AAEhD,EAAC,YAAY;AACX,MAAI;GACF,MAAM,UAAU,oBAAoB,QAAQ;AAC5C,OAAI,CAAC,SAAS;AAEZ,aAAS,MAAM,QAAQ,eAAiD;AACxE;;GAIF,IAAI,oEAA6B,SAAS;AAG1C,OAAI,CAAC,SACH,YAAW,MAAM,QAAQ,kBAAkB;AAG7C,OAAI,CAAC,UAAU;AACb,aAAS,MAAM,QAAQ,eAAiD;AACxE;;GAGF,MAAM,UAAU,QAAQ,OAAO;GAG/B,MAAM,kBAAkB,iBAAiC;AACvD,wEAA8B,SAAS,aAAa,CAAC;;GAIvD,MAAM,kBAAkB,mBAAiC;AACvD,uEAA6B,SAASC,eAAa,CAAC;;GAKtD,MAAM,eAAe,eAAe,SAAS;AAK7C,OAAI,CAJgB,OAAO,OAAO,SAAS,SAAS,CAAC,MAClD,iDAA0B,QAAQ,SAAS,WAAW,KAAK,aAC7D,EAEiB;AAEhB,aAAS,MAAM,QAAQ,eAAiD;AACxE;;GAIF,MAAM,oEAA6B,SAAS;GAC5C,MAAM,mBAAmB,eAAe,SAAS;AAIjD,OAAI,YAAY,gBAAgB,OAAO,GAAG;IAExC,MAAM,YAAY,YAAY,gBAAgB,IAAI,iBAAiB;AACnE,QAAI,UACF,MAAK,MAAM,YAAY,UAErB,MAAK,cAAc,eAAe,SAAS,CAAC;AAKhD,SAAK,MAAM,CAAC,cAAc,mBAAmB,YAAY,gBACvD,KAAI,eAAe,IAAI,iBAAiB,CAEtC,MAAK,cAAc,eAAe,aAAa,CAAC;SAKpD,MAAK,MAAM,WAAW,OAAO,OAAO,SAAS,SAAS,EAAE;IACtD,MAAM,cAAc,QAAQ,SAAS;AACrC,QAAI,eAAe,gBAAgB,aAEjC,MAAK,cAAc,eAAe,YAAY,CAAC;;AAMrD,OAAI,QAAQ,gBAAgB,OAAO;IACjC,MAAM,gFAAyC,SAAS;AACxD,QAAI,gBAAgB;KAClB,MAAMC,WAAS,eAAe,UAAU;MACtC,YAAY;MACZ,YAAY;MACZ,gBAAgB,iBAAiB,KAAK,UAAU,eAAe,GAAG;MACnE,CAAC;AAEF,SAAIA,SAAO,aAAa;MACtB,MAAM,YAAYA,SAAO,YAAY,KAAK,MAAMA,SAAO,UAAU,GAAG;AACpE,eAAS,MAAMA,SAAO,YAAY,UAAU;AAC5C;;AAGF,cAAS,MAAM,QAAQ,eAAiD;AACxE;;AAGF,YAAQ,KACN,wIAED;;GAUH,MAAM,sDAN0C;IAC9C;IACA,QAAQ,QAAQ;IAChB,WAAW;IACZ,CAAC,CAE8B,UAAU;IACxC,YAAY;IACZ,YAAY;IACZ,gBAAgB,iBAAiB,KAAK,UAAU,eAAe,GAAG;IACnE,CAAC;AAEF,OAAI,OAAO,aAAa;IACtB,MAAM,YAAY,OAAO,YAAY,KAAK,MAAM,OAAO,UAAU,GAAG;AACpE,aAAS,MAAM,OAAO,YAAY,UAAU;SAE5C,UAAS,MAAM,QAAQ,eAAiD;WAEnE,OAAO;AACd,YAAS,MAAe;;KAExB;;AAGN,qBAAe;AAGf,MAAa,MAAM"}
|
|
1
|
+
{"version":3,"file":"loader.cjs","names":["sodaGqlLoader: LoaderDefinitionFunction<WebpackLoaderOptions>","relativePath","result"],"sources":["../src/loader.ts"],"sourcesContent":["import { relative, resolve } from \"node:path\";\nimport { createBabelTransformer } from \"@soda-gql/babel\";\nimport {\n createPluginSession,\n getSharedArtifact,\n getSharedPluginSession,\n getSharedState,\n getSharedSwcTransformer,\n getStateKey,\n type PluginSession,\n} from \"@soda-gql/builder/plugin-support\";\nimport { normalizePath } from \"@soda-gql/common\";\nimport type { LoaderDefinitionFunction } from \"webpack\";\nimport type { WebpackLoaderOptions } from \"./types\";\n\n/**\n * Ensure plugin session is initialized.\n * First tries to use shared session from plugin, falls back to creating own.\n */\nconst ensurePluginSession = (options: WebpackLoaderOptions): PluginSession | null => {\n const stateKey = getStateKey(options.configPath);\n\n // Try to use shared session from plugin first\n const sharedSession = getSharedPluginSession(stateKey);\n if (sharedSession) {\n return sharedSession;\n }\n\n // Fall back to creating own session (for standalone loader usage)\n return createPluginSession(\n {\n configPath: options.configPath,\n enabled: options.enabled,\n },\n \"@soda-gql/webpack-plugin/loader\",\n );\n};\n\n/**\n * Webpack loader that transforms soda-gql code using the babel-plugin.\n */\nconst sodaGqlLoader: LoaderDefinitionFunction<WebpackLoaderOptions> = function (source, inputSourceMap) {\n const callback = this.async();\n const options = this.getOptions();\n const filename = this.resourcePath;\n const stateKey = getStateKey(options.configPath);\n\n (async () => {\n try {\n const session = ensurePluginSession(options);\n if (!session) {\n // Plugin disabled or config load failed, pass through unchanged\n callback(null, source, inputSourceMap as Parameters<typeof callback>[2]);\n return;\n }\n\n // Try to use shared artifact from plugin first (more efficient in watch mode)\n let artifact = getSharedArtifact(stateKey);\n\n // Fall back to fetching artifact if not shared\n if (!artifact) {\n artifact = await session.getArtifactAsync();\n }\n\n if (!artifact) {\n callback(null, source, inputSourceMap as Parameters<typeof callback>[2]);\n return;\n }\n\n const baseDir = session.config.baseDir;\n\n // Helper to convert absolute path to relative for matching against artifact sourcePaths\n const toRelativePath = (absolutePath: string): string => {\n return normalizePath(relative(baseDir, absolutePath));\n };\n\n // Helper to convert relative path to absolute for webpack's addDependency\n const toAbsolutePath = (relativePath: string): string => {\n return normalizePath(resolve(baseDir, relativePath));\n };\n\n // Check if this file contains any soda-gql elements\n // Convert absolute path to relative for matching against artifact sourcePaths\n const relativePath = toRelativePath(filename);\n const hasElements = Object.values(artifact.elements).some(\n (element) => normalizePath(element.metadata.sourcePath) === relativePath,\n );\n\n if (!hasElements) {\n // Not a soda-gql file, pass through unchanged\n callback(null, source, inputSourceMap as Parameters<typeof callback>[2]);\n return;\n }\n\n // Add dependencies based on module adjacency for precise HMR\n const sharedState = getSharedState(stateKey);\n const relativeFilename = toRelativePath(filename);\n\n // Use module adjacency for efficient dependency tracking\n // moduleAdjacency maps: importedFile -> Set<importingFiles> (now using relative paths)\n if (sharedState.moduleAdjacency.size > 0) {\n // Add files that import this file (reverse dependencies)\n const importers = sharedState.moduleAdjacency.get(relativeFilename);\n if (importers) {\n for (const importer of importers) {\n // Convert relative path to absolute for webpack\n this.addDependency(toAbsolutePath(importer));\n }\n }\n\n // Add files that this file imports (forward dependencies)\n for (const [importedFile, importingFiles] of sharedState.moduleAdjacency) {\n if (importingFiles.has(relativeFilename)) {\n // Convert relative path to absolute for webpack\n this.addDependency(toAbsolutePath(importedFile));\n }\n }\n } else {\n // Fallback: Add all soda-gql source files as dependencies (conservative approach)\n for (const element of Object.values(artifact.elements)) {\n const elementPath = element.metadata.sourcePath;\n if (elementPath && elementPath !== relativePath) {\n // Convert relative path to absolute for webpack\n this.addDependency(toAbsolutePath(elementPath));\n }\n }\n }\n\n // Use SWC transformer if configured and available\n if (options.transformer === \"swc\") {\n const swcTransformer = getSharedSwcTransformer(stateKey);\n if (swcTransformer) {\n const result = swcTransformer.transform({\n sourceCode: source,\n sourcePath: filename,\n inputSourceMap: inputSourceMap ? JSON.stringify(inputSourceMap) : undefined,\n });\n\n if (result.errors.length > 0) {\n for (const error of result.errors) {\n console.warn(`[@soda-gql/webpack-plugin] SWC ${error.stage} warning: ${error.message} (${error.code})`);\n }\n }\n\n if (result.transformed) {\n const sourceMap = result.sourceMap ? JSON.parse(result.sourceMap) : undefined;\n callback(null, result.sourceCode, sourceMap);\n return;\n }\n // Not transformed (no soda-gql code in file), pass through\n callback(null, source, inputSourceMap as Parameters<typeof callback>[2]);\n return;\n }\n // SWC transformer not available, fall through to Babel\n console.warn(\n \"[@soda-gql/webpack-plugin] SWC transformer not available, falling back to Babel. \" +\n \"Ensure the plugin has transformer: 'swc' option set.\",\n );\n }\n\n // Transform using babel-transformer directly (default)\n const babelTransformer = createBabelTransformer({\n artifact,\n config: session.config,\n sourceMap: true,\n });\n\n const result = babelTransformer.transform({\n sourceCode: source,\n sourcePath: filename,\n inputSourceMap: inputSourceMap ? JSON.stringify(inputSourceMap) : undefined,\n });\n\n if (result.transformed) {\n const sourceMap = result.sourceMap ? JSON.parse(result.sourceMap) : undefined;\n callback(null, result.sourceCode, sourceMap);\n } else {\n callback(null, source, inputSourceMap as Parameters<typeof callback>[2]);\n }\n } catch (error) {\n callback(error as Error);\n }\n })();\n};\n\nexport default sodaGqlLoader;\n\n// Mark as non-raw (we handle string source code)\nexport const raw = false;\n"],"mappings":";;;;;;;;;;;AAmBA,MAAM,uBAAuB,YAAwD;CAInF,MAAM,iIAHuB,QAAQ,WAAW,CAGM;AACtD,KAAI,cACF,QAAO;AAIT,mEACE;EACE,YAAY,QAAQ;EACpB,SAAS,QAAQ;EAClB,EACD,kCACD;;;;;AAMH,MAAMA,gBAAgE,SAAU,QAAQ,gBAAgB;CACtG,MAAM,WAAW,KAAK,OAAO;CAC7B,MAAM,UAAU,KAAK,YAAY;CACjC,MAAM,WAAW,KAAK;CACtB,MAAM,8DAAuB,QAAQ,WAAW;AAEhD,EAAC,YAAY;AACX,MAAI;GACF,MAAM,UAAU,oBAAoB,QAAQ;AAC5C,OAAI,CAAC,SAAS;AAEZ,aAAS,MAAM,QAAQ,eAAiD;AACxE;;GAIF,IAAI,oEAA6B,SAAS;AAG1C,OAAI,CAAC,SACH,YAAW,MAAM,QAAQ,kBAAkB;AAG7C,OAAI,CAAC,UAAU;AACb,aAAS,MAAM,QAAQ,eAAiD;AACxE;;GAGF,MAAM,UAAU,QAAQ,OAAO;GAG/B,MAAM,kBAAkB,iBAAiC;AACvD,wEAA8B,SAAS,aAAa,CAAC;;GAIvD,MAAM,kBAAkB,mBAAiC;AACvD,uEAA6B,SAASC,eAAa,CAAC;;GAKtD,MAAM,eAAe,eAAe,SAAS;AAK7C,OAAI,CAJgB,OAAO,OAAO,SAAS,SAAS,CAAC,MAClD,iDAA0B,QAAQ,SAAS,WAAW,KAAK,aAC7D,EAEiB;AAEhB,aAAS,MAAM,QAAQ,eAAiD;AACxE;;GAIF,MAAM,oEAA6B,SAAS;GAC5C,MAAM,mBAAmB,eAAe,SAAS;AAIjD,OAAI,YAAY,gBAAgB,OAAO,GAAG;IAExC,MAAM,YAAY,YAAY,gBAAgB,IAAI,iBAAiB;AACnE,QAAI,UACF,MAAK,MAAM,YAAY,UAErB,MAAK,cAAc,eAAe,SAAS,CAAC;AAKhD,SAAK,MAAM,CAAC,cAAc,mBAAmB,YAAY,gBACvD,KAAI,eAAe,IAAI,iBAAiB,CAEtC,MAAK,cAAc,eAAe,aAAa,CAAC;SAKpD,MAAK,MAAM,WAAW,OAAO,OAAO,SAAS,SAAS,EAAE;IACtD,MAAM,cAAc,QAAQ,SAAS;AACrC,QAAI,eAAe,gBAAgB,aAEjC,MAAK,cAAc,eAAe,YAAY,CAAC;;AAMrD,OAAI,QAAQ,gBAAgB,OAAO;IACjC,MAAM,gFAAyC,SAAS;AACxD,QAAI,gBAAgB;KAClB,MAAMC,WAAS,eAAe,UAAU;MACtC,YAAY;MACZ,YAAY;MACZ,gBAAgB,iBAAiB,KAAK,UAAU,eAAe,GAAG;MACnE,CAAC;AAEF,SAAIA,SAAO,OAAO,SAAS,EACzB,MAAK,MAAM,SAASA,SAAO,OACzB,SAAQ,KAAK,kCAAkC,MAAM,MAAM,YAAY,MAAM,QAAQ,IAAI,MAAM,KAAK,GAAG;AAI3G,SAAIA,SAAO,aAAa;MACtB,MAAM,YAAYA,SAAO,YAAY,KAAK,MAAMA,SAAO,UAAU,GAAG;AACpE,eAAS,MAAMA,SAAO,YAAY,UAAU;AAC5C;;AAGF,cAAS,MAAM,QAAQ,eAAiD;AACxE;;AAGF,YAAQ,KACN,wIAED;;GAUH,MAAM,sDAN0C;IAC9C;IACA,QAAQ,QAAQ;IAChB,WAAW;IACZ,CAAC,CAE8B,UAAU;IACxC,YAAY;IACZ,YAAY;IACZ,gBAAgB,iBAAiB,KAAK,UAAU,eAAe,GAAG;IACnE,CAAC;AAEF,OAAI,OAAO,aAAa;IACtB,MAAM,YAAY,OAAO,YAAY,KAAK,MAAM,OAAO,UAAU,GAAG;AACpE,aAAS,MAAM,OAAO,YAAY,UAAU;SAE5C,UAAS,MAAM,QAAQ,eAAiD;WAEnE,OAAO;AACd,YAAS,MAAe;;KAExB;;AAGN,qBAAe;AAGf,MAAa,MAAM"}
|
package/dist/loader.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.cts","names":[],"sources":["../src/loader.ts"],"sourcesContent":[],"mappings":";;;;;;;AAaoD;
|
|
1
|
+
{"version":3,"file":"loader.d.cts","names":[],"sources":["../src/loader.ts"],"sourcesContent":[],"mappings":";;;;;;;AAaoD;AA+KpD,cAnJM,aAmJU,EAnJK,wBAmJL,CAnJ8B,oBAmJ9B,CAAA;cAAH,GAAA"}
|
package/dist/loader.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.mts","names":[],"sources":["../src/loader.ts"],"sourcesContent":[],"mappings":";;;;;;;AAaoD;
|
|
1
|
+
{"version":3,"file":"loader.d.mts","names":[],"sources":["../src/loader.ts"],"sourcesContent":[],"mappings":";;;;;;;AAaoD;AA+KpD,cAnJM,aAmJU,EAnJK,wBAmJL,CAnJ8B,oBAmJ9B,CAAA;cAAH,GAAA"}
|
package/dist/loader.mjs
CHANGED
|
@@ -67,6 +67,7 @@ const sodaGqlLoader = function(source, inputSourceMap) {
|
|
|
67
67
|
sourcePath: filename,
|
|
68
68
|
inputSourceMap: inputSourceMap ? JSON.stringify(inputSourceMap) : void 0
|
|
69
69
|
});
|
|
70
|
+
if (result$1.errors.length > 0) for (const error of result$1.errors) console.warn(`[@soda-gql/webpack-plugin] SWC ${error.stage} warning: ${error.message} (${error.code})`);
|
|
70
71
|
if (result$1.transformed) {
|
|
71
72
|
const sourceMap = result$1.sourceMap ? JSON.parse(result$1.sourceMap) : void 0;
|
|
72
73
|
callback(null, result$1.sourceCode, sourceMap);
|
package/dist/loader.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.mjs","names":["sodaGqlLoader: LoaderDefinitionFunction<WebpackLoaderOptions>","relativePath","result"],"sources":["../src/loader.ts"],"sourcesContent":["import { relative, resolve } from \"node:path\";\nimport { createBabelTransformer } from \"@soda-gql/babel\";\nimport {\n createPluginSession,\n getSharedArtifact,\n getSharedPluginSession,\n getSharedState,\n getSharedSwcTransformer,\n getStateKey,\n type PluginSession,\n} from \"@soda-gql/builder/plugin-support\";\nimport { normalizePath } from \"@soda-gql/common\";\nimport type { LoaderDefinitionFunction } from \"webpack\";\nimport type { WebpackLoaderOptions } from \"./types\";\n\n/**\n * Ensure plugin session is initialized.\n * First tries to use shared session from plugin, falls back to creating own.\n */\nconst ensurePluginSession = (options: WebpackLoaderOptions): PluginSession | null => {\n const stateKey = getStateKey(options.configPath);\n\n // Try to use shared session from plugin first\n const sharedSession = getSharedPluginSession(stateKey);\n if (sharedSession) {\n return sharedSession;\n }\n\n // Fall back to creating own session (for standalone loader usage)\n return createPluginSession(\n {\n configPath: options.configPath,\n enabled: options.enabled,\n },\n \"@soda-gql/webpack-plugin/loader\",\n );\n};\n\n/**\n * Webpack loader that transforms soda-gql code using the babel-plugin.\n */\nconst sodaGqlLoader: LoaderDefinitionFunction<WebpackLoaderOptions> = function (source, inputSourceMap) {\n const callback = this.async();\n const options = this.getOptions();\n const filename = this.resourcePath;\n const stateKey = getStateKey(options.configPath);\n\n (async () => {\n try {\n const session = ensurePluginSession(options);\n if (!session) {\n // Plugin disabled or config load failed, pass through unchanged\n callback(null, source, inputSourceMap as Parameters<typeof callback>[2]);\n return;\n }\n\n // Try to use shared artifact from plugin first (more efficient in watch mode)\n let artifact = getSharedArtifact(stateKey);\n\n // Fall back to fetching artifact if not shared\n if (!artifact) {\n artifact = await session.getArtifactAsync();\n }\n\n if (!artifact) {\n callback(null, source, inputSourceMap as Parameters<typeof callback>[2]);\n return;\n }\n\n const baseDir = session.config.baseDir;\n\n // Helper to convert absolute path to relative for matching against artifact sourcePaths\n const toRelativePath = (absolutePath: string): string => {\n return normalizePath(relative(baseDir, absolutePath));\n };\n\n // Helper to convert relative path to absolute for webpack's addDependency\n const toAbsolutePath = (relativePath: string): string => {\n return normalizePath(resolve(baseDir, relativePath));\n };\n\n // Check if this file contains any soda-gql elements\n // Convert absolute path to relative for matching against artifact sourcePaths\n const relativePath = toRelativePath(filename);\n const hasElements = Object.values(artifact.elements).some(\n (element) => normalizePath(element.metadata.sourcePath) === relativePath,\n );\n\n if (!hasElements) {\n // Not a soda-gql file, pass through unchanged\n callback(null, source, inputSourceMap as Parameters<typeof callback>[2]);\n return;\n }\n\n // Add dependencies based on module adjacency for precise HMR\n const sharedState = getSharedState(stateKey);\n const relativeFilename = toRelativePath(filename);\n\n // Use module adjacency for efficient dependency tracking\n // moduleAdjacency maps: importedFile -> Set<importingFiles> (now using relative paths)\n if (sharedState.moduleAdjacency.size > 0) {\n // Add files that import this file (reverse dependencies)\n const importers = sharedState.moduleAdjacency.get(relativeFilename);\n if (importers) {\n for (const importer of importers) {\n // Convert relative path to absolute for webpack\n this.addDependency(toAbsolutePath(importer));\n }\n }\n\n // Add files that this file imports (forward dependencies)\n for (const [importedFile, importingFiles] of sharedState.moduleAdjacency) {\n if (importingFiles.has(relativeFilename)) {\n // Convert relative path to absolute for webpack\n this.addDependency(toAbsolutePath(importedFile));\n }\n }\n } else {\n // Fallback: Add all soda-gql source files as dependencies (conservative approach)\n for (const element of Object.values(artifact.elements)) {\n const elementPath = element.metadata.sourcePath;\n if (elementPath && elementPath !== relativePath) {\n // Convert relative path to absolute for webpack\n this.addDependency(toAbsolutePath(elementPath));\n }\n }\n }\n\n // Use SWC transformer if configured and available\n if (options.transformer === \"swc\") {\n const swcTransformer = getSharedSwcTransformer(stateKey);\n if (swcTransformer) {\n const result = swcTransformer.transform({\n sourceCode: source,\n sourcePath: filename,\n inputSourceMap: inputSourceMap ? JSON.stringify(inputSourceMap) : undefined,\n });\n\n if (result.transformed) {\n const sourceMap = result.sourceMap ? JSON.parse(result.sourceMap) : undefined;\n callback(null, result.sourceCode, sourceMap);\n return;\n }\n // Not transformed (no soda-gql code in file), pass through\n callback(null, source, inputSourceMap as Parameters<typeof callback>[2]);\n return;\n }\n // SWC transformer not available, fall through to Babel\n console.warn(\n \"[@soda-gql/webpack-plugin] SWC transformer not available, falling back to Babel. \" +\n \"Ensure the plugin has transformer: 'swc' option set.\",\n );\n }\n\n // Transform using babel-transformer directly (default)\n const babelTransformer = createBabelTransformer({\n artifact,\n config: session.config,\n sourceMap: true,\n });\n\n const result = babelTransformer.transform({\n sourceCode: source,\n sourcePath: filename,\n inputSourceMap: inputSourceMap ? JSON.stringify(inputSourceMap) : undefined,\n });\n\n if (result.transformed) {\n const sourceMap = result.sourceMap ? JSON.parse(result.sourceMap) : undefined;\n callback(null, result.sourceCode, sourceMap);\n } else {\n callback(null, source, inputSourceMap as Parameters<typeof callback>[2]);\n }\n } catch (error) {\n callback(error as Error);\n }\n })();\n};\n\nexport default sodaGqlLoader;\n\n// Mark as non-raw (we handle string source code)\nexport const raw = false;\n"],"mappings":";;;;;;;;;;AAmBA,MAAM,uBAAuB,YAAwD;CAInF,MAAM,gBAAgB,uBAHL,YAAY,QAAQ,WAAW,CAGM;AACtD,KAAI,cACF,QAAO;AAIT,QAAO,oBACL;EACE,YAAY,QAAQ;EACpB,SAAS,QAAQ;EAClB,EACD,kCACD;;;;;AAMH,MAAMA,gBAAgE,SAAU,QAAQ,gBAAgB;CACtG,MAAM,WAAW,KAAK,OAAO;CAC7B,MAAM,UAAU,KAAK,YAAY;CACjC,MAAM,WAAW,KAAK;CACtB,MAAM,WAAW,YAAY,QAAQ,WAAW;AAEhD,EAAC,YAAY;AACX,MAAI;GACF,MAAM,UAAU,oBAAoB,QAAQ;AAC5C,OAAI,CAAC,SAAS;AAEZ,aAAS,MAAM,QAAQ,eAAiD;AACxE;;GAIF,IAAI,WAAW,kBAAkB,SAAS;AAG1C,OAAI,CAAC,SACH,YAAW,MAAM,QAAQ,kBAAkB;AAG7C,OAAI,CAAC,UAAU;AACb,aAAS,MAAM,QAAQ,eAAiD;AACxE;;GAGF,MAAM,UAAU,QAAQ,OAAO;GAG/B,MAAM,kBAAkB,iBAAiC;AACvD,WAAO,cAAc,SAAS,SAAS,aAAa,CAAC;;GAIvD,MAAM,kBAAkB,mBAAiC;AACvD,WAAO,cAAc,QAAQ,SAASC,eAAa,CAAC;;GAKtD,MAAM,eAAe,eAAe,SAAS;AAK7C,OAAI,CAJgB,OAAO,OAAO,SAAS,SAAS,CAAC,MAClD,YAAY,cAAc,QAAQ,SAAS,WAAW,KAAK,aAC7D,EAEiB;AAEhB,aAAS,MAAM,QAAQ,eAAiD;AACxE;;GAIF,MAAM,cAAc,eAAe,SAAS;GAC5C,MAAM,mBAAmB,eAAe,SAAS;AAIjD,OAAI,YAAY,gBAAgB,OAAO,GAAG;IAExC,MAAM,YAAY,YAAY,gBAAgB,IAAI,iBAAiB;AACnE,QAAI,UACF,MAAK,MAAM,YAAY,UAErB,MAAK,cAAc,eAAe,SAAS,CAAC;AAKhD,SAAK,MAAM,CAAC,cAAc,mBAAmB,YAAY,gBACvD,KAAI,eAAe,IAAI,iBAAiB,CAEtC,MAAK,cAAc,eAAe,aAAa,CAAC;SAKpD,MAAK,MAAM,WAAW,OAAO,OAAO,SAAS,SAAS,EAAE;IACtD,MAAM,cAAc,QAAQ,SAAS;AACrC,QAAI,eAAe,gBAAgB,aAEjC,MAAK,cAAc,eAAe,YAAY,CAAC;;AAMrD,OAAI,QAAQ,gBAAgB,OAAO;IACjC,MAAM,iBAAiB,wBAAwB,SAAS;AACxD,QAAI,gBAAgB;KAClB,MAAMC,WAAS,eAAe,UAAU;MACtC,YAAY;MACZ,YAAY;MACZ,gBAAgB,iBAAiB,KAAK,UAAU,eAAe,GAAG;MACnE,CAAC;AAEF,SAAIA,SAAO,aAAa;MACtB,MAAM,YAAYA,SAAO,YAAY,KAAK,MAAMA,SAAO,UAAU,GAAG;AACpE,eAAS,MAAMA,SAAO,YAAY,UAAU;AAC5C;;AAGF,cAAS,MAAM,QAAQ,eAAiD;AACxE;;AAGF,YAAQ,KACN,wIAED;;GAUH,MAAM,SANmB,uBAAuB;IAC9C;IACA,QAAQ,QAAQ;IAChB,WAAW;IACZ,CAAC,CAE8B,UAAU;IACxC,YAAY;IACZ,YAAY;IACZ,gBAAgB,iBAAiB,KAAK,UAAU,eAAe,GAAG;IACnE,CAAC;AAEF,OAAI,OAAO,aAAa;IACtB,MAAM,YAAY,OAAO,YAAY,KAAK,MAAM,OAAO,UAAU,GAAG;AACpE,aAAS,MAAM,OAAO,YAAY,UAAU;SAE5C,UAAS,MAAM,QAAQ,eAAiD;WAEnE,OAAO;AACd,YAAS,MAAe;;KAExB;;AAGN,qBAAe;AAGf,MAAa,MAAM"}
|
|
1
|
+
{"version":3,"file":"loader.mjs","names":["sodaGqlLoader: LoaderDefinitionFunction<WebpackLoaderOptions>","relativePath","result"],"sources":["../src/loader.ts"],"sourcesContent":["import { relative, resolve } from \"node:path\";\nimport { createBabelTransformer } from \"@soda-gql/babel\";\nimport {\n createPluginSession,\n getSharedArtifact,\n getSharedPluginSession,\n getSharedState,\n getSharedSwcTransformer,\n getStateKey,\n type PluginSession,\n} from \"@soda-gql/builder/plugin-support\";\nimport { normalizePath } from \"@soda-gql/common\";\nimport type { LoaderDefinitionFunction } from \"webpack\";\nimport type { WebpackLoaderOptions } from \"./types\";\n\n/**\n * Ensure plugin session is initialized.\n * First tries to use shared session from plugin, falls back to creating own.\n */\nconst ensurePluginSession = (options: WebpackLoaderOptions): PluginSession | null => {\n const stateKey = getStateKey(options.configPath);\n\n // Try to use shared session from plugin first\n const sharedSession = getSharedPluginSession(stateKey);\n if (sharedSession) {\n return sharedSession;\n }\n\n // Fall back to creating own session (for standalone loader usage)\n return createPluginSession(\n {\n configPath: options.configPath,\n enabled: options.enabled,\n },\n \"@soda-gql/webpack-plugin/loader\",\n );\n};\n\n/**\n * Webpack loader that transforms soda-gql code using the babel-plugin.\n */\nconst sodaGqlLoader: LoaderDefinitionFunction<WebpackLoaderOptions> = function (source, inputSourceMap) {\n const callback = this.async();\n const options = this.getOptions();\n const filename = this.resourcePath;\n const stateKey = getStateKey(options.configPath);\n\n (async () => {\n try {\n const session = ensurePluginSession(options);\n if (!session) {\n // Plugin disabled or config load failed, pass through unchanged\n callback(null, source, inputSourceMap as Parameters<typeof callback>[2]);\n return;\n }\n\n // Try to use shared artifact from plugin first (more efficient in watch mode)\n let artifact = getSharedArtifact(stateKey);\n\n // Fall back to fetching artifact if not shared\n if (!artifact) {\n artifact = await session.getArtifactAsync();\n }\n\n if (!artifact) {\n callback(null, source, inputSourceMap as Parameters<typeof callback>[2]);\n return;\n }\n\n const baseDir = session.config.baseDir;\n\n // Helper to convert absolute path to relative for matching against artifact sourcePaths\n const toRelativePath = (absolutePath: string): string => {\n return normalizePath(relative(baseDir, absolutePath));\n };\n\n // Helper to convert relative path to absolute for webpack's addDependency\n const toAbsolutePath = (relativePath: string): string => {\n return normalizePath(resolve(baseDir, relativePath));\n };\n\n // Check if this file contains any soda-gql elements\n // Convert absolute path to relative for matching against artifact sourcePaths\n const relativePath = toRelativePath(filename);\n const hasElements = Object.values(artifact.elements).some(\n (element) => normalizePath(element.metadata.sourcePath) === relativePath,\n );\n\n if (!hasElements) {\n // Not a soda-gql file, pass through unchanged\n callback(null, source, inputSourceMap as Parameters<typeof callback>[2]);\n return;\n }\n\n // Add dependencies based on module adjacency for precise HMR\n const sharedState = getSharedState(stateKey);\n const relativeFilename = toRelativePath(filename);\n\n // Use module adjacency for efficient dependency tracking\n // moduleAdjacency maps: importedFile -> Set<importingFiles> (now using relative paths)\n if (sharedState.moduleAdjacency.size > 0) {\n // Add files that import this file (reverse dependencies)\n const importers = sharedState.moduleAdjacency.get(relativeFilename);\n if (importers) {\n for (const importer of importers) {\n // Convert relative path to absolute for webpack\n this.addDependency(toAbsolutePath(importer));\n }\n }\n\n // Add files that this file imports (forward dependencies)\n for (const [importedFile, importingFiles] of sharedState.moduleAdjacency) {\n if (importingFiles.has(relativeFilename)) {\n // Convert relative path to absolute for webpack\n this.addDependency(toAbsolutePath(importedFile));\n }\n }\n } else {\n // Fallback: Add all soda-gql source files as dependencies (conservative approach)\n for (const element of Object.values(artifact.elements)) {\n const elementPath = element.metadata.sourcePath;\n if (elementPath && elementPath !== relativePath) {\n // Convert relative path to absolute for webpack\n this.addDependency(toAbsolutePath(elementPath));\n }\n }\n }\n\n // Use SWC transformer if configured and available\n if (options.transformer === \"swc\") {\n const swcTransformer = getSharedSwcTransformer(stateKey);\n if (swcTransformer) {\n const result = swcTransformer.transform({\n sourceCode: source,\n sourcePath: filename,\n inputSourceMap: inputSourceMap ? JSON.stringify(inputSourceMap) : undefined,\n });\n\n if (result.errors.length > 0) {\n for (const error of result.errors) {\n console.warn(`[@soda-gql/webpack-plugin] SWC ${error.stage} warning: ${error.message} (${error.code})`);\n }\n }\n\n if (result.transformed) {\n const sourceMap = result.sourceMap ? JSON.parse(result.sourceMap) : undefined;\n callback(null, result.sourceCode, sourceMap);\n return;\n }\n // Not transformed (no soda-gql code in file), pass through\n callback(null, source, inputSourceMap as Parameters<typeof callback>[2]);\n return;\n }\n // SWC transformer not available, fall through to Babel\n console.warn(\n \"[@soda-gql/webpack-plugin] SWC transformer not available, falling back to Babel. \" +\n \"Ensure the plugin has transformer: 'swc' option set.\",\n );\n }\n\n // Transform using babel-transformer directly (default)\n const babelTransformer = createBabelTransformer({\n artifact,\n config: session.config,\n sourceMap: true,\n });\n\n const result = babelTransformer.transform({\n sourceCode: source,\n sourcePath: filename,\n inputSourceMap: inputSourceMap ? JSON.stringify(inputSourceMap) : undefined,\n });\n\n if (result.transformed) {\n const sourceMap = result.sourceMap ? JSON.parse(result.sourceMap) : undefined;\n callback(null, result.sourceCode, sourceMap);\n } else {\n callback(null, source, inputSourceMap as Parameters<typeof callback>[2]);\n }\n } catch (error) {\n callback(error as Error);\n }\n })();\n};\n\nexport default sodaGqlLoader;\n\n// Mark as non-raw (we handle string source code)\nexport const raw = false;\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@soda-gql/webpack-plugin",
|
|
3
|
-
"version": "0.12.
|
|
3
|
+
"version": "0.12.4",
|
|
4
4
|
"description": "Webpack plugin for soda-gql with HMR support",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"private": false,
|
|
@@ -59,18 +59,18 @@
|
|
|
59
59
|
"./package.json": "./package.json"
|
|
60
60
|
},
|
|
61
61
|
"dependencies": {
|
|
62
|
-
"@soda-gql/builder": "0.12.
|
|
63
|
-
"@soda-gql/common": "0.12.
|
|
64
|
-
"@soda-gql/config": "0.12.
|
|
65
|
-
"@soda-gql/core": "0.12.
|
|
66
|
-
"@soda-gql/babel": "0.12.
|
|
62
|
+
"@soda-gql/builder": "0.12.4",
|
|
63
|
+
"@soda-gql/common": "0.12.4",
|
|
64
|
+
"@soda-gql/config": "0.12.4",
|
|
65
|
+
"@soda-gql/core": "0.12.4",
|
|
66
|
+
"@soda-gql/babel": "0.12.4"
|
|
67
67
|
},
|
|
68
68
|
"devDependencies": {
|
|
69
|
-
"@soda-gql/swc": "0.12.
|
|
69
|
+
"@soda-gql/swc": "0.12.4"
|
|
70
70
|
},
|
|
71
71
|
"peerDependencies": {
|
|
72
72
|
"webpack": "^5.0.0",
|
|
73
|
-
"@soda-gql/swc": "0.12.
|
|
73
|
+
"@soda-gql/swc": "0.12.4"
|
|
74
74
|
},
|
|
75
75
|
"optionalDependencies": {},
|
|
76
76
|
"peerDependenciesMeta": {
|