@soda-gql/plugin-common 0.1.0 → 0.3.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.
- package/README.md +3 -3
- package/dist/index.cjs +34 -3
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +50 -27
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +50 -27
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +30 -4
- package/dist/index.mjs.map +1 -1
- package/package.json +25 -5
package/README.md
CHANGED
|
@@ -36,7 +36,7 @@ type TypeScriptGqlCall = GqlCall<ts.CallExpression>;
|
|
|
36
36
|
```
|
|
37
37
|
|
|
38
38
|
Available variants:
|
|
39
|
-
- `
|
|
39
|
+
- `GqlCallFragment<TCallNode>` - Fragment definitions
|
|
40
40
|
- `GqlCallSlice<TCallNode>` - Query/mutation/subscription slices
|
|
41
41
|
- `GqlCallOperation<TCallNode>` - Composed operations
|
|
42
42
|
- `GqlCallInlineOperation<TCallNode>` - Inline operations
|
|
@@ -205,7 +205,7 @@ function transformNode(node, metadata, artifact) {
|
|
|
205
205
|
}
|
|
206
206
|
|
|
207
207
|
const gqlCall = gqlCallResult.value;
|
|
208
|
-
// Transform based on gqlCall.type: "
|
|
208
|
+
// Transform based on gqlCall.type: "fragment" | "slice" | "operation" | "inlineOperation"
|
|
209
209
|
}
|
|
210
210
|
```
|
|
211
211
|
|
|
@@ -268,7 +268,7 @@ This package is written in TypeScript and provides complete type definitions:
|
|
|
268
268
|
```typescript
|
|
269
269
|
import type {
|
|
270
270
|
GqlCall,
|
|
271
|
-
|
|
271
|
+
GqlCallFragment,
|
|
272
272
|
GqlDefinitionMetadata,
|
|
273
273
|
PluginError,
|
|
274
274
|
PluginOptions,
|
package/dist/index.cjs
CHANGED
|
@@ -89,7 +89,9 @@ const getSharedState = (key) => {
|
|
|
89
89
|
pluginSession: null,
|
|
90
90
|
currentArtifact: null,
|
|
91
91
|
moduleAdjacency: /* @__PURE__ */ new Map(),
|
|
92
|
-
generation: 0
|
|
92
|
+
generation: 0,
|
|
93
|
+
swcTransformer: null,
|
|
94
|
+
transformerType: null
|
|
93
95
|
};
|
|
94
96
|
sharedStates.set(key, state);
|
|
95
97
|
}
|
|
@@ -128,6 +130,30 @@ const setSharedPluginSession = (key, session) => {
|
|
|
128
130
|
const getStateKey = (configPath) => {
|
|
129
131
|
return configPath ?? process.cwd();
|
|
130
132
|
};
|
|
133
|
+
/**
|
|
134
|
+
* Set shared SWC transformer.
|
|
135
|
+
*/
|
|
136
|
+
const setSharedSwcTransformer = (key, transformer) => {
|
|
137
|
+
getSharedState(key).swcTransformer = transformer;
|
|
138
|
+
};
|
|
139
|
+
/**
|
|
140
|
+
* Get shared SWC transformer.
|
|
141
|
+
*/
|
|
142
|
+
const getSharedSwcTransformer = (key) => {
|
|
143
|
+
return getSharedState(key).swcTransformer;
|
|
144
|
+
};
|
|
145
|
+
/**
|
|
146
|
+
* Set shared transformer type.
|
|
147
|
+
*/
|
|
148
|
+
const setSharedTransformerType = (key, transformerType) => {
|
|
149
|
+
getSharedState(key).transformerType = transformerType;
|
|
150
|
+
};
|
|
151
|
+
/**
|
|
152
|
+
* Get shared transformer type.
|
|
153
|
+
*/
|
|
154
|
+
const getSharedTransformerType = (key) => {
|
|
155
|
+
return getSharedState(key).transformerType;
|
|
156
|
+
};
|
|
131
157
|
|
|
132
158
|
//#endregion
|
|
133
159
|
//#region packages/plugin-common/src/utils/canonical-id.ts
|
|
@@ -137,7 +163,7 @@ const getStateKey = (configPath) => {
|
|
|
137
163
|
/**
|
|
138
164
|
* Resolve a canonical ID from a filename and AST path.
|
|
139
165
|
*/
|
|
140
|
-
const resolveCanonicalId = (filename, astPath) => (0,
|
|
166
|
+
const resolveCanonicalId = (filename, astPath) => (0, __soda_gql_common.createCanonicalId)((0, node_path.resolve)(filename), astPath);
|
|
141
167
|
|
|
142
168
|
//#endregion
|
|
143
169
|
exports.assertUnreachable = assertUnreachable;
|
|
@@ -146,8 +172,13 @@ exports.formatPluginError = formatPluginError;
|
|
|
146
172
|
exports.getSharedArtifact = getSharedArtifact;
|
|
147
173
|
exports.getSharedPluginSession = getSharedPluginSession;
|
|
148
174
|
exports.getSharedState = getSharedState;
|
|
175
|
+
exports.getSharedSwcTransformer = getSharedSwcTransformer;
|
|
176
|
+
exports.getSharedTransformerType = getSharedTransformerType;
|
|
149
177
|
exports.getStateKey = getStateKey;
|
|
150
178
|
exports.isPluginError = isPluginError;
|
|
151
179
|
exports.resolveCanonicalId = resolveCanonicalId;
|
|
152
180
|
exports.setSharedArtifact = setSharedArtifact;
|
|
153
|
-
exports.setSharedPluginSession = setSharedPluginSession;
|
|
181
|
+
exports.setSharedPluginSession = setSharedPluginSession;
|
|
182
|
+
exports.setSharedSwcTransformer = setSharedSwcTransformer;
|
|
183
|
+
exports.setSharedTransformerType = setSharedTransformerType;
|
|
184
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","names":[],"sources":["../src/errors.ts","../src/plugin-session.ts","../src/shared-state.ts","../src/utils/canonical-id.ts"],"sourcesContent":["/**\n * Error types and formatters for plugin-babel.\n * Simplified from plugin-shared to include only types actually used by the Babel transformer.\n */\n\nimport type { BuilderError } from \"@soda-gql/builder\";\nimport type { CanonicalId } from \"@soda-gql/common\";\n\ntype OptionsInvalidBuilderConfig = { readonly code: \"INVALID_BUILDER_CONFIG\"; readonly message: string };\ntype OptionsMissingBuilderConfig = { readonly code: \"MISSING_BUILDER_CONFIG\"; readonly message: string };\ntype OptionsConfigLoadFailed = { readonly code: \"CONFIG_LOAD_FAILED\"; readonly message: string };\n\ntype BuilderEntryNotFound = Extract<BuilderError, { code: \"ENTRY_NOT_FOUND\" }>;\ntype BuilderDocDuplicate = Extract<BuilderError, { code: \"DOC_DUPLICATE\" }>;\ntype BuilderCircularDependency = Extract<BuilderError, { code: \"GRAPH_CIRCULAR_DEPENDENCY\" }>;\ntype BuilderModuleEvaluationFailed = Extract<BuilderError, { code: \"RUNTIME_MODULE_LOAD_FAILED\" }>;\ntype BuilderWriteFailed = Extract<BuilderError, { code: \"WRITE_FAILED\" }>;\n\ntype AnalysisMetadataMissingCause = { readonly filename: string };\ntype AnalysisArtifactMissingCause = { readonly filename: string; readonly canonicalId: CanonicalId };\ntype AnalysisUnsupportedArtifactTypeCause = {\n readonly filename: string;\n readonly canonicalId: CanonicalId;\n readonly artifactType: string;\n};\n\ntype PluginErrorBase<Code extends string, Cause> = {\n readonly type: \"PluginError\";\n readonly code: Code;\n readonly message: string;\n readonly cause: Cause;\n};\n\nexport type PluginOptionsInvalidBuilderConfigError = PluginErrorBase<\n \"OPTIONS_INVALID_BUILDER_CONFIG\",\n OptionsInvalidBuilderConfig | OptionsMissingBuilderConfig | OptionsConfigLoadFailed\n> & { readonly stage: \"normalize-options\" };\n\nexport type PluginBuilderEntryNotFoundError = PluginErrorBase<\"SODA_GQL_BUILDER_ENTRY_NOT_FOUND\", BuilderEntryNotFound> & {\n readonly stage: \"builder\";\n readonly entry: string;\n};\n\nexport type PluginBuilderDocDuplicateError = PluginErrorBase<\"SODA_GQL_BUILDER_DOC_DUPLICATE\", BuilderDocDuplicate> & {\n readonly stage: \"builder\";\n readonly name: string;\n readonly sources: readonly string[];\n};\n\nexport type PluginBuilderCircularDependencyError = PluginErrorBase<\n \"SODA_GQL_BUILDER_CIRCULAR_DEPENDENCY\",\n BuilderCircularDependency\n> & { readonly stage: \"builder\"; readonly chain: readonly string[] };\n\nexport type PluginBuilderModuleEvaluationFailedError = PluginErrorBase<\n \"SODA_GQL_BUILDER_MODULE_EVALUATION_FAILED\",\n BuilderModuleEvaluationFailed\n> & { readonly stage: \"builder\"; readonly filePath: string; readonly astPath: string };\n\nexport type PluginBuilderWriteFailedError = PluginErrorBase<\"SODA_GQL_BUILDER_WRITE_FAILED\", BuilderWriteFailed> & {\n readonly stage: \"builder\";\n readonly outPath: string;\n};\n\nexport type PluginBuilderUnexpectedError = PluginErrorBase<\"SODA_GQL_BUILDER_UNEXPECTED\", unknown> & {\n readonly stage: \"builder\";\n};\n\nexport type PluginAnalysisMetadataMissingError = PluginErrorBase<\"SODA_GQL_METADATA_NOT_FOUND\", AnalysisMetadataMissingCause> & {\n readonly stage: \"analysis\";\n readonly filename: string;\n};\n\nexport type PluginAnalysisArtifactMissingError = PluginErrorBase<\n \"SODA_GQL_ANALYSIS_ARTIFACT_NOT_FOUND\",\n AnalysisArtifactMissingCause\n> & { readonly stage: \"analysis\"; readonly filename: string; readonly canonicalId: CanonicalId };\n\nexport type PluginAnalysisUnsupportedArtifactTypeError = PluginErrorBase<\n \"SODA_GQL_UNSUPPORTED_ARTIFACT_TYPE\",\n AnalysisUnsupportedArtifactTypeCause\n> & {\n readonly stage: \"analysis\";\n readonly filename: string;\n readonly canonicalId: CanonicalId;\n readonly artifactType: string;\n};\n\ntype TransformMissingBuilderArgCause = { readonly filename: string; readonly builderType: string; readonly argName: string };\ntype TransformUnsupportedValueTypeCause = { readonly valueType: string };\ntype TransformAstVisitorFailedCause = { readonly filename: string; readonly reason: string };\n\nexport type PluginTransformMissingBuilderArgError = PluginErrorBase<\n \"SODA_GQL_TRANSFORM_MISSING_BUILDER_ARG\",\n TransformMissingBuilderArgCause\n> & {\n readonly stage: \"transform\";\n readonly filename: string;\n readonly builderType: string;\n readonly argName: string;\n};\n\nexport type PluginTransformUnsupportedValueTypeError = PluginErrorBase<\n \"SODA_GQL_TRANSFORM_UNSUPPORTED_VALUE_TYPE\",\n TransformUnsupportedValueTypeCause\n> & { readonly stage: \"transform\"; readonly valueType: string };\n\nexport type PluginTransformAstVisitorFailedError = PluginErrorBase<\n \"SODA_GQL_TRANSFORM_AST_VISITOR_FAILED\",\n TransformAstVisitorFailedCause\n> & { readonly stage: \"transform\"; readonly filename: string; readonly reason: string };\n\n/**\n * Union of all plugin error types.\n */\nexport type PluginError =\n | PluginOptionsInvalidBuilderConfigError\n | PluginBuilderEntryNotFoundError\n | PluginBuilderDocDuplicateError\n | PluginBuilderCircularDependencyError\n | PluginBuilderModuleEvaluationFailedError\n | PluginBuilderWriteFailedError\n | PluginBuilderUnexpectedError\n | PluginAnalysisMetadataMissingError\n | PluginAnalysisArtifactMissingError\n | PluginAnalysisUnsupportedArtifactTypeError\n | PluginTransformMissingBuilderArgError\n | PluginTransformUnsupportedValueTypeError\n | PluginTransformAstVisitorFailedError;\n\n/**\n * Format a PluginError into a human-readable message.\n */\nexport const formatPluginError = (error: PluginError): string => {\n const codePrefix = `[${error.code}]`;\n const stageInfo = \"stage\" in error ? ` (${error.stage})` : \"\";\n return `${codePrefix}${stageInfo} ${error.message}`;\n};\n\n/**\n * Type guard for PluginError.\n */\nexport const isPluginError = (value: unknown): value is PluginError => {\n return (\n typeof value === \"object\" &&\n value !== null &&\n \"type\" in value &&\n value.type === \"PluginError\" &&\n \"code\" in value &&\n \"message\" in value\n );\n};\n\n/**\n * Assertion helper for unreachable code paths.\n * This is the ONLY acceptable throw in plugin code.\n */\nexport const assertUnreachable = (value: never, context?: string): never => {\n throw new Error(`[INTERNAL] Unreachable code path${context ? ` in ${context}` : \"\"}: received ${JSON.stringify(value)}`);\n};\n","/**\n * Plugin session management for all plugins.\n * Unified from plugin-babel and plugin-swc implementations.\n */\n\nimport type { BuilderArtifact } from \"@soda-gql/builder\";\nimport { createBuilderService } from \"@soda-gql/builder\";\nimport { cachedFn } from \"@soda-gql/common\";\nimport { loadConfig, type ResolvedSodaGqlConfig } from \"@soda-gql/config\";\n\n/**\n * Plugin options shared across all plugins.\n */\nexport type PluginOptions = {\n readonly configPath?: string;\n readonly enabled?: boolean;\n};\n\n/**\n * Plugin session containing builder service and configuration.\n */\nexport type PluginSession = {\n readonly config: ResolvedSodaGqlConfig;\n readonly getArtifact: () => BuilderArtifact | null;\n readonly getArtifactAsync: () => Promise<BuilderArtifact | null>;\n};\n\n/**\n * Create plugin session by loading config and creating cached builder service.\n * Returns null if disabled or config load fails.\n */\nexport const createPluginSession = (options: PluginOptions, pluginName: string): PluginSession | null => {\n const enabled = options.enabled ?? true;\n if (!enabled) {\n return null;\n }\n\n const configResult = loadConfig(options.configPath);\n if (configResult.isErr()) {\n console.error(`[${pluginName}] Failed to load config:`, {\n code: configResult.error.code,\n message: configResult.error.message,\n filePath: configResult.error.filePath,\n cause: configResult.error.cause,\n });\n return null;\n }\n\n const config = configResult.value;\n const ensureBuilderService = cachedFn(() => createBuilderService({ config }));\n\n /**\n * Build artifact on every invocation (like tsc-plugin).\n * If artifact.useBuilder is false and artifact.path is provided, load from file instead.\n * This ensures the artifact is always up-to-date with the latest source files.\n */\n const getArtifact = (): BuilderArtifact | null => {\n const builderService = ensureBuilderService();\n const buildResult = builderService.build();\n if (buildResult.isErr()) {\n console.error(`[${pluginName}] Failed to build artifact: ${buildResult.error.message}`);\n return null;\n }\n return buildResult.value;\n };\n\n /**\n * Async version of getArtifact.\n * Supports async metadata factories and parallel element evaluation.\n */\n const getArtifactAsync = async (): Promise<BuilderArtifact | null> => {\n const builderService = ensureBuilderService();\n const buildResult = await builderService.buildAsync();\n if (buildResult.isErr()) {\n console.error(`[${pluginName}] Failed to build artifact: ${buildResult.error.message}`);\n return null;\n }\n return buildResult.value;\n };\n\n return {\n config,\n getArtifact,\n getArtifactAsync,\n };\n};\n","import type { BuilderArtifact } from \"@soda-gql/builder\";\nimport type { PluginSession } from \"./plugin-session\";\n\n/**\n * Transformer type for code transformation.\n * - 'babel': Use Babel plugin (default, wider compatibility)\n * - 'swc': Use SWC transformer (faster, requires @soda-gql/swc-transformer)\n */\nexport type TransformerType = \"babel\" | \"swc\";\n\n/**\n * Minimal interface for SWC transformer.\n * Matches the Transformer interface from @soda-gql/swc-transformer.\n */\nexport interface SwcTransformerInterface {\n transform(input: { sourceCode: string; sourcePath: string; inputSourceMap?: string }): {\n transformed: boolean;\n sourceCode: string;\n sourceMap?: string;\n };\n}\n\n/**\n * Shared state between bundler plugins and loaders.\n * Enables efficient artifact sharing across build pipeline stages.\n */\nexport type SharedState = {\n pluginSession: PluginSession | null;\n currentArtifact: BuilderArtifact | null;\n moduleAdjacency: Map<string, Set<string>>;\n generation: number;\n swcTransformer: SwcTransformerInterface | null;\n transformerType: TransformerType | null;\n};\n\n// Global state for sharing between plugin and loader\nconst sharedStates = new Map<string, SharedState>();\n\n/**\n * Get shared state for a given project (identified by config path or cwd).\n */\nexport const getSharedState = (key: string): SharedState => {\n let state = sharedStates.get(key);\n if (!state) {\n state = {\n pluginSession: null,\n currentArtifact: null,\n moduleAdjacency: new Map(),\n generation: 0,\n swcTransformer: null,\n transformerType: null,\n };\n sharedStates.set(key, state);\n }\n return state;\n};\n\n/**\n * Update shared artifact.\n */\nexport const setSharedArtifact = (\n key: string,\n artifact: BuilderArtifact | null,\n moduleAdjacency?: Map<string, Set<string>>,\n): void => {\n const state = getSharedState(key);\n state.currentArtifact = artifact;\n if (moduleAdjacency) {\n state.moduleAdjacency = moduleAdjacency;\n }\n state.generation++;\n};\n\n/**\n * Get shared artifact.\n */\nexport const getSharedArtifact = (key: string): BuilderArtifact | null => {\n return getSharedState(key).currentArtifact;\n};\n\n/**\n * Get shared plugin session.\n */\nexport const getSharedPluginSession = (key: string): PluginSession | null => {\n return getSharedState(key).pluginSession;\n};\n\n/**\n * Set shared plugin session.\n */\nexport const setSharedPluginSession = (key: string, session: PluginSession | null): void => {\n getSharedState(key).pluginSession = session;\n};\n\n/**\n * Get the state key from config path or cwd.\n */\nexport const getStateKey = (configPath?: string): string => {\n return configPath ?? process.cwd();\n};\n\n/**\n * Set shared SWC transformer.\n */\nexport const setSharedSwcTransformer = (key: string, transformer: SwcTransformerInterface | null): void => {\n getSharedState(key).swcTransformer = transformer;\n};\n\n/**\n * Get shared SWC transformer.\n */\nexport const getSharedSwcTransformer = (key: string): SwcTransformerInterface | null => {\n return getSharedState(key).swcTransformer;\n};\n\n/**\n * Set shared transformer type.\n */\nexport const setSharedTransformerType = (key: string, transformerType: TransformerType | null): void => {\n getSharedState(key).transformerType = transformerType;\n};\n\n/**\n * Get shared transformer type.\n */\nexport const getSharedTransformerType = (key: string): TransformerType | null => {\n return getSharedState(key).transformerType;\n};\n","/**\n * Utility for working with canonical IDs.\n */\n\nimport { resolve } from \"node:path\";\nimport { type CanonicalId, createCanonicalId } from \"@soda-gql/common\";\n\n/**\n * Resolve a canonical ID from a filename and AST path.\n */\nexport const resolveCanonicalId = (filename: string, astPath: string): CanonicalId =>\n createCanonicalId(resolve(filename), astPath);\n"],"mappings":";;;;;;;;;AAqIA,MAAa,qBAAqB,UAA+B;AAG/D,QAAO,GAFY,IAAI,MAAM,KAAK,KAChB,WAAW,QAAQ,KAAK,MAAM,MAAM,KAAK,GAC1B,GAAG,MAAM;;;;;AAM5C,MAAa,iBAAiB,UAAyC;AACrE,QACE,OAAO,UAAU,YACjB,UAAU,QACV,UAAU,SACV,MAAM,SAAS,iBACf,UAAU,SACV,aAAa;;;;;;AAQjB,MAAa,qBAAqB,OAAc,YAA4B;AAC1E,OAAM,IAAI,MAAM,mCAAmC,UAAU,OAAO,YAAY,GAAG,aAAa,KAAK,UAAU,MAAM,GAAG;;;;;;;;;AC/H1H,MAAa,uBAAuB,SAAwB,eAA6C;AAEvG,KAAI,EADY,QAAQ,WAAW,MAEjC,QAAO;CAGT,MAAM,iDAA0B,QAAQ,WAAW;AACnD,KAAI,aAAa,OAAO,EAAE;AACxB,UAAQ,MAAM,IAAI,WAAW,2BAA2B;GACtD,MAAM,aAAa,MAAM;GACzB,SAAS,aAAa,MAAM;GAC5B,UAAU,aAAa,MAAM;GAC7B,OAAO,aAAa,MAAM;GAC3B,CAAC;AACF,SAAO;;CAGT,MAAM,SAAS,aAAa;CAC5B,MAAM,0GAA2D,EAAE,QAAQ,CAAC,CAAC;;;;;;CAO7E,MAAM,oBAA4C;EAEhD,MAAM,cADiB,sBAAsB,CACV,OAAO;AAC1C,MAAI,YAAY,OAAO,EAAE;AACvB,WAAQ,MAAM,IAAI,WAAW,8BAA8B,YAAY,MAAM,UAAU;AACvF,UAAO;;AAET,SAAO,YAAY;;;;;;CAOrB,MAAM,mBAAmB,YAA6C;EAEpE,MAAM,cAAc,MADG,sBAAsB,CACJ,YAAY;AACrD,MAAI,YAAY,OAAO,EAAE;AACvB,WAAQ,MAAM,IAAI,WAAW,8BAA8B,YAAY,MAAM,UAAU;AACvF,UAAO;;AAET,SAAO,YAAY;;AAGrB,QAAO;EACL;EACA;EACA;EACD;;;;;AChDH,MAAM,+BAAe,IAAI,KAA0B;;;;AAKnD,MAAa,kBAAkB,QAA6B;CAC1D,IAAI,QAAQ,aAAa,IAAI,IAAI;AACjC,KAAI,CAAC,OAAO;AACV,UAAQ;GACN,eAAe;GACf,iBAAiB;GACjB,iCAAiB,IAAI,KAAK;GAC1B,YAAY;GACZ,gBAAgB;GAChB,iBAAiB;GAClB;AACD,eAAa,IAAI,KAAK,MAAM;;AAE9B,QAAO;;;;;AAMT,MAAa,qBACX,KACA,UACA,oBACS;CACT,MAAM,QAAQ,eAAe,IAAI;AACjC,OAAM,kBAAkB;AACxB,KAAI,gBACF,OAAM,kBAAkB;AAE1B,OAAM;;;;;AAMR,MAAa,qBAAqB,QAAwC;AACxE,QAAO,eAAe,IAAI,CAAC;;;;;AAM7B,MAAa,0BAA0B,QAAsC;AAC3E,QAAO,eAAe,IAAI,CAAC;;;;;AAM7B,MAAa,0BAA0B,KAAa,YAAwC;AAC1F,gBAAe,IAAI,CAAC,gBAAgB;;;;;AAMtC,MAAa,eAAe,eAAgC;AAC1D,QAAO,cAAc,QAAQ,KAAK;;;;;AAMpC,MAAa,2BAA2B,KAAa,gBAAsD;AACzG,gBAAe,IAAI,CAAC,iBAAiB;;;;;AAMvC,MAAa,2BAA2B,QAAgD;AACtF,QAAO,eAAe,IAAI,CAAC;;;;;AAM7B,MAAa,4BAA4B,KAAa,oBAAkD;AACtG,gBAAe,IAAI,CAAC,kBAAkB;;;;;AAMxC,MAAa,4BAA4B,QAAwC;AAC/E,QAAO,eAAe,IAAI,CAAC;;;;;;;;;;;ACpH7B,MAAa,sBAAsB,UAAkB,4EACzB,SAAS,EAAE,QAAQ"}
|
package/dist/index.d.cts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { BuilderArtifact,
|
|
1
|
+
import { BuilderArtifact, BuilderArtifactFragment, BuilderArtifactOperation, BuilderError } from "@soda-gql/builder";
|
|
2
|
+
import { CanonicalId } from "@soda-gql/common";
|
|
2
3
|
import { ResolvedSodaGqlConfig } from "@soda-gql/config";
|
|
3
4
|
|
|
4
5
|
//#region packages/plugin-common/src/errors.d.ts
|
|
@@ -159,6 +160,27 @@ type PluginSession = {
|
|
|
159
160
|
declare const createPluginSession: (options: PluginOptions, pluginName: string) => PluginSession | null;
|
|
160
161
|
//#endregion
|
|
161
162
|
//#region packages/plugin-common/src/shared-state.d.ts
|
|
163
|
+
/**
|
|
164
|
+
* Transformer type for code transformation.
|
|
165
|
+
* - 'babel': Use Babel plugin (default, wider compatibility)
|
|
166
|
+
* - 'swc': Use SWC transformer (faster, requires @soda-gql/swc-transformer)
|
|
167
|
+
*/
|
|
168
|
+
type TransformerType = "babel" | "swc";
|
|
169
|
+
/**
|
|
170
|
+
* Minimal interface for SWC transformer.
|
|
171
|
+
* Matches the Transformer interface from @soda-gql/swc-transformer.
|
|
172
|
+
*/
|
|
173
|
+
interface SwcTransformerInterface {
|
|
174
|
+
transform(input: {
|
|
175
|
+
sourceCode: string;
|
|
176
|
+
sourcePath: string;
|
|
177
|
+
inputSourceMap?: string;
|
|
178
|
+
}): {
|
|
179
|
+
transformed: boolean;
|
|
180
|
+
sourceCode: string;
|
|
181
|
+
sourceMap?: string;
|
|
182
|
+
};
|
|
183
|
+
}
|
|
162
184
|
/**
|
|
163
185
|
* Shared state between bundler plugins and loaders.
|
|
164
186
|
* Enables efficient artifact sharing across build pipeline stages.
|
|
@@ -168,6 +190,8 @@ type SharedState = {
|
|
|
168
190
|
currentArtifact: BuilderArtifact | null;
|
|
169
191
|
moduleAdjacency: Map<string, Set<string>>;
|
|
170
192
|
generation: number;
|
|
193
|
+
swcTransformer: SwcTransformerInterface | null;
|
|
194
|
+
transformerType: TransformerType | null;
|
|
171
195
|
};
|
|
172
196
|
/**
|
|
173
197
|
* Get shared state for a given project (identified by config path or cwd).
|
|
@@ -193,49 +217,48 @@ declare const setSharedPluginSession: (key: string, session: PluginSession | nul
|
|
|
193
217
|
* Get the state key from config path or cwd.
|
|
194
218
|
*/
|
|
195
219
|
declare const getStateKey: (configPath?: string) => string;
|
|
220
|
+
/**
|
|
221
|
+
* Set shared SWC transformer.
|
|
222
|
+
*/
|
|
223
|
+
declare const setSharedSwcTransformer: (key: string, transformer: SwcTransformerInterface | null) => void;
|
|
224
|
+
/**
|
|
225
|
+
* Get shared SWC transformer.
|
|
226
|
+
*/
|
|
227
|
+
declare const getSharedSwcTransformer: (key: string) => SwcTransformerInterface | null;
|
|
228
|
+
/**
|
|
229
|
+
* Set shared transformer type.
|
|
230
|
+
*/
|
|
231
|
+
declare const setSharedTransformerType: (key: string, transformerType: TransformerType | null) => void;
|
|
232
|
+
/**
|
|
233
|
+
* Get shared transformer type.
|
|
234
|
+
*/
|
|
235
|
+
declare const getSharedTransformerType: (key: string) => TransformerType | null;
|
|
196
236
|
//#endregion
|
|
197
237
|
//#region packages/plugin-common/src/types/gql-call.d.ts
|
|
198
238
|
/**
|
|
199
239
|
* Base interface for all GraphQL call types.
|
|
200
|
-
* TCallNode represents the AST node type (e.g., t.CallExpression for Babel, ts.CallExpression for TypeScript).
|
|
201
240
|
*/
|
|
202
|
-
interface GqlCallBase
|
|
241
|
+
interface GqlCallBase {
|
|
203
242
|
readonly canonicalId: CanonicalId;
|
|
204
|
-
readonly builderCall: TCallNode;
|
|
205
243
|
}
|
|
206
244
|
/**
|
|
207
|
-
* GraphQL
|
|
245
|
+
* GraphQL fragment call.
|
|
208
246
|
*/
|
|
209
|
-
interface
|
|
210
|
-
readonly type: "
|
|
211
|
-
readonly artifact:
|
|
247
|
+
interface GqlCallFragment extends GqlCallBase {
|
|
248
|
+
readonly type: "fragment";
|
|
249
|
+
readonly artifact: BuilderArtifactFragment;
|
|
212
250
|
}
|
|
213
251
|
/**
|
|
214
|
-
* GraphQL
|
|
252
|
+
* GraphQL operation call.
|
|
215
253
|
*/
|
|
216
|
-
interface
|
|
217
|
-
readonly type: "slice";
|
|
218
|
-
readonly artifact: BuilderArtifactSlice;
|
|
219
|
-
}
|
|
220
|
-
/**
|
|
221
|
-
* GraphQL composed operation call.
|
|
222
|
-
* Unified naming: "operation" (was "composedOperation" in tsc-plugin).
|
|
223
|
-
*/
|
|
224
|
-
interface GqlCallOperation<TCallNode> extends GqlCallBase<TCallNode> {
|
|
254
|
+
interface GqlCallOperation extends GqlCallBase {
|
|
225
255
|
readonly type: "operation";
|
|
226
256
|
readonly artifact: BuilderArtifactOperation;
|
|
227
257
|
}
|
|
228
|
-
/**
|
|
229
|
-
* GraphQL inline operation call.
|
|
230
|
-
*/
|
|
231
|
-
interface GqlCallInlineOperation<TCallNode> extends GqlCallBase<TCallNode> {
|
|
232
|
-
readonly type: "inlineOperation";
|
|
233
|
-
readonly artifact: BuilderArtifactInlineOperation;
|
|
234
|
-
}
|
|
235
258
|
/**
|
|
236
259
|
* Union of all GraphQL call types.
|
|
237
260
|
*/
|
|
238
|
-
type GqlCall
|
|
261
|
+
type GqlCall = GqlCallFragment | GqlCallOperation;
|
|
239
262
|
//#endregion
|
|
240
263
|
//#region packages/plugin-common/src/types/metadata.d.ts
|
|
241
264
|
/**
|
|
@@ -257,5 +280,5 @@ type GqlDefinitionMetadata = {
|
|
|
257
280
|
*/
|
|
258
281
|
declare const resolveCanonicalId: (filename: string, astPath: string) => CanonicalId;
|
|
259
282
|
//#endregion
|
|
260
|
-
export { type GqlCall, type GqlCallBase, type
|
|
283
|
+
export { type GqlCall, type GqlCallBase, type GqlCallFragment, type GqlCallOperation, type GqlDefinitionMetadata, PluginAnalysisArtifactMissingError, PluginAnalysisMetadataMissingError, PluginAnalysisUnsupportedArtifactTypeError, PluginBuilderCircularDependencyError, PluginBuilderDocDuplicateError, PluginBuilderEntryNotFoundError, PluginBuilderModuleEvaluationFailedError, PluginBuilderUnexpectedError, PluginBuilderWriteFailedError, PluginError, PluginOptions, PluginOptionsInvalidBuilderConfigError, PluginSession, PluginTransformAstVisitorFailedError, PluginTransformMissingBuilderArgError, PluginTransformUnsupportedValueTypeError, SharedState, SwcTransformerInterface, TransformerType, assertUnreachable, createPluginSession, formatPluginError, getSharedArtifact, getSharedPluginSession, getSharedState, getSharedSwcTransformer, getSharedTransformerType, getStateKey, isPluginError, resolveCanonicalId, setSharedArtifact, setSharedPluginSession, setSharedSwcTransformer, setSharedTransformerType };
|
|
261
284
|
//# sourceMappingURL=index.d.cts.map
|
package/dist/index.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/errors.ts","../src/plugin-session.ts","../src/shared-state.ts","../src/types/gql-call.ts","../src/types/metadata.ts","../src/utils/canonical-id.ts"],"sourcesContent":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/errors.ts","../src/plugin-session.ts","../src/shared-state.ts","../src/types/gql-call.ts","../src/types/metadata.ts","../src/utils/canonical-id.ts"],"sourcesContent":[],"mappings":";;;;;;AAQgC,KAA3B,2BAAA,GAC2B;EAC3B,SAAA,IAAA,EAAA,wBAAuB;EAEvB,SAAA,OAAA,EAAA,MAAoB;AAAU,CAAA;AACD,KAJ7B,2BAAA,GAKyB;EACzB,SAAA,IAAA,EAAA,wBAA6B;EAC7B,SAAA,OAAA,EAAA,MAAkB;AAAU,CAAA;AAEA,KAR5B,uBAAA,GASA;EACA,SAAA,IAAA,EAAA,oBAAA;EAMA,SAAA,OAAA,EAAe,MAAA;AAOpB,CAAA;KArBK,oBAAA,GAAuB,OAuB1B,CAvBkC,YAuBlC,EAAA;EAA8B,IAAA,EAAA,iBAAA;CAA8B,CAAA;KAtBzD,mBAAA,GAAsB,OAoB0B,CApBlB,YAoBkB,EAAA;EAAe,IAAA,EAAA,eAAA;AAKpE,CAAA,CAAA;AAKA,KA7BK,yBAAA,GAA4B,OA6BS,CA7BD,YA6BsD,EAAA;EAMnF,IAAA,EAAA,2BAAA;AAKZ,CAAA,CAAA;AAKA,KA5CK,6BAAA,GAAgC,OA4CI,CA5CI,YA4CgD,EAAA;EAKjF,IAAA,EAAA,4BAA4B;AAIxC,CAAA,CAAA;AAKA,KAzDK,kBAAA,GAAqB,OAyDd,CAzDsB,YAyDY,EAAA;EAE5C,IAAA,EAAA,cAAA;CAF+C,CAAA;KAvD5C,4BAAA,GA0D8E;EAAW,SAAA,QAAA,EAAA,MAAA;AAE9F,CAAA;KA3DK,4BAAA,GA6DH;EAFuD,SAAA,QAAA,EAAA,MAAA;EAMjC,SAAA,WAAA,EAjE+D,WAiE/D;CAAW;AAEjC,KAlEG,oCAAA,GAoE+B;EAC/B,SAAA,QAAA,EAAA,MAAA;EACA,SAAA,WAAA,EApEmB,WAoEW;EAEvB,SAAA,YAAA,EAAA,MAAA;AAUZ,CAAA;AAKA,KAjFK,eAiFO,CAAA,aAAA,MAAA,EAAA,KAAoC,CAAA,GAAA;EAQpC,SAAA,IAAA,EAAW,aAAA;EACnB,SAAA,IAAA,EAxFa,IAwFb;EACA,SAAA,OAAA,EAAA,MAAA;EACA,SAAA,KAAA,EAxFc,KAwFd;CACA;AACA,KAvFQ,sCAAA,GAAyC,eAuFjD,CAAA,gCAAA,EArFF,2BAqFE,GArF4B,2BAqF5B,GArF0D,uBAqF1D,CAAA,GAAA;EACA,SAAA,KAAA,EAAA,mBAAA;CACA;AACA,KArFQ,+BAAA,GAAkC,eAqF1C,CAAA,kCAAA,EArF8F,oBAqF9F,CAAA,GAAA;EACA,SAAA,KAAA,EAAA,SAAA;EACA,SAAA,KAAA,EAAA,MAAA;CACA;AACA,KApFQ,8BAAA,GAAiC,eAoFzC,CAAA,gCAAA,EApF2F,mBAoF3F,CAAA,GAAA;EACA,SAAA,KAAA,EAAA,SAAA;EAAoC,SAAA,IAAA,EAAA,MAAA;EAK3B,SAAA,OAAA,EAAA,SAIZ,MAJwC,EAAA;AASzC,CAAA;AAea,KA5GD,oCAAA,GAAuC,eA8GlD,CAAA,sCAAA,EA5GC,yBA4GD,CAAA,GAAA;;;;AClJW,KDyCA,wCAAA,GAA2C,eCzC9B,CAAA,2CAAA,ED2CvB,6BC3CuB,CAAA,GAAA;EAQb,SAAA,KAAA,EAAa,SAAA;EACN,SAAA,QAAA,EAAA,MAAA;EACW,SAAA,OAAA,EAAA,MAAA;CACa;AAAR,KDmCvB,6BAAA,GAAgC,eCnCT,CAAA,+BAAA,EDmC0D,kBCnC1D,CAAA,GAAA;EAAO,SAAA,KAAA,EAAA,SAAA;EAO7B,SAAA,OAAA,EAAA,MAsDZ;;KDrBW,4BAAA,GAA+B;;AExD3C,CAAA;AAMiB,KFsDL,kCAAA,GAAqC,eEtDT,CAAA,6BAAA,EFsDwD,4BEtDxD,CAAA,GAAA;EAY5B,SAAA,KAAW,EAAA,UAAA;EACN,SAAA,QAAA,EAAA,MAAA;CACE;AACY,KF4CnB,kCAAA,GAAqC,eE5ClB,CAAA,sCAAA,EF8C7B,4BE9C6B,CAAA,GAAA;EAAZ,SAAA,KAAA,EAAA,UAAA;EAED,SAAA,QAAA,EAAA,MAAA;EACC,SAAA,WAAA,EF4CgE,WE5ChE;CAAe;AASrB,KFqCD,0CAAA,GAA6C,eEvBxD,CAAA,oCAAA,EFyBC,oCEzBD,CAAA,GAAA;EAKY,SAAA,KAAA,EAAA,UAWZ;EATW,SAAA,QAAA,EAAA,MAAA;EACoB,SAAA,WAAA,EFqBR,WErBQ;EAAZ,SAAA,YAAA,EAAA,MAAA;CAAG;AAavB,KFYK,+BAAA,GEZ2C;EAOnC,SAAA,QAAA,EAAA,MAEZ;EAKY,SAAA,WAAA,EAAA,MAEZ;EAKY,SAAA,OAEZ,EAAA,MAAA;AAKD,CAAA;AAOA,KFtBK,kCAAA,GEsBiD;EAOzC,SAAA,SAAA,EAAA,MAAA;AAOb,CAAA;KFnCK,8BAAA;;;AGhFL,CAAA;AAOiB,KH2EL,qCAAA,GAAwC,eG3EX,CAAA,wCAAW,EH6ElD,+BG7EkD,CAAA,GAAA;EAQnC,SAAA,KAAA,EAAA,WAAiB;EAQtB,SAAA,QAAO,EAAA,MAAG;;;;AC1BV,KJ+FA,wCAAA,GAA2C,eI/FtB,CAAA,2CAAA,EJiG/B,kCIjG+B,CAAA,GAAA;;;;ACGpB,KLiGD,oCAAA,GAAuC,eKhGJ,CAAA,uCAAA,ELkG7C,8BKlG6C,CAAA,GAAA;;;;;;;;KLwGnC,WAAA,GACR,yCACA,kCACA,iCACA,uCACA,2CACA,gCACA,+BACA,qCACA,qCACA,6CACA,wCACA,2CACA;;;;cAKS,2BAA4B;;;;cAS5B,4CAA2C;;;;;cAe3C;;;AArJmB;AACA;AACJ;AAGvB,KCAO,aAAA,GDAY;EACnB,SAAA,UAAA,CAAA,EAAA,MAAyB;EACzB,SAAA,OAAA,CAAA,EAAA,OAAA;AAAuC,CAAA;AACX;AAEA;AACiE;AAO7F,KCLO,aAAA,GDKQ;EAOR,SAAA,MAAA,ECXO,qBDWP;EAEV,SAAA,WAAA,EAAA,GAAA,GCZ4B,eDY5B,GAAA,IAAA;EAA8B,SAAA,gBAAA,EAAA,GAAA,GCXG,ODWH,CCXW,eDWX,GAAA,IAAA,CAAA;CAA8B;;;AAG9D;AAKA;AAMY,cClBC,mBDkBD,EAAA,CAAoC,OAAA,EClBH,aDoB3C,EAAA,UAAA,EAAA,MAFiD,EAAA,GClB8B,aDkBf,GAAA,IAAA;;;;;;AA3Cd;AAEpB;AAE3B,KEFO,eAAA,GFEgB,OAAA,GAAA,KAAA;AAAA;AAEO;AACD;AACM;AAEnC,UEFY,uBAAA,CFEiB;EAE7B,SAAA,CAAA,KAAA,EAAA;IACA,UAAA,EAAA,MAAA;IACA,UAAA,EAAA,MAAA;IAMA,cAAe,CAAA,EAAA,MAAA;EAOR,CAAA,CAAA,EAAA;IAEV,WAAA,EAAA,OAAA;IAA8B,UAAA,EAAA,MAAA;IAA8B,SAAA,CAAA,EAAA,MAAA;EAFT,CAAA;;AAKrD;AAKA;AAMA;AAKA;AAKY,KEjCA,WAAA,GFiCA;EAKA,aAAA,EErCK,aFqCL,GAA4B,IAAA;EAI5B,eAAA,EExCO,eFwCP,GAAA,IAAkC;EAKlC,eAAA,EE5CO,GF4CP,CAAA,MAAA,EE5CmB,GF4CnB,CAAA,MAAkC,CAAA,CAAA;EAE5C,UAAA,EAAA,MAAA;EAF+C,cAAA,EE1C/B,uBF0C+B,GAAA,IAAA;EAGkC,eAAA,EE5ChE,eF4CgE,GAAA,IAAA;CAAW;AAE9F;;;AAMwB,cE3CX,cF2CW,EAAA,CAAA,GAAA,EAAA,MAAA,EAAA,GE3CqB,WF2CrB;;AAEtB;AAEkC;AAE/B,cE9BQ,iBF8BsB,EAAA,CAAA,GAAA,EAAA,MAAA,EAAA,QAAA,EE5BvB,eF4BuB,GAAA,IAAA,EAAA,eAAA,CAAA,EE3Bf,GF2Be,CAAA,MAAA,EE3BH,GF2BG,CAAA,MAAA,CAAA,CAAA,EAAA,GAAA,IAAA;AAEnC;AAUA;AAKA;AAQY,cEvCC,iBFuCU,EAAA,CAAA,GAAA,EAAA,MAAA,EAAA,GEvCyB,eFuCzB,GAAA,IAAA;;;;AAInB,cEpCS,sBFoCT,EAAA,CAAA,GAAA,EAAA,MAAA,EAAA,GEpCiD,aFoCjD,GAAA,IAAA;;;;AAIA,cEjCS,sBFiCT,EAAA,CAAA,GAAA,EAAA,MAAA,EAAA,OAAA,EEjCyD,aFiCzD,GAAA,IAAA,EAAA,GAAA,IAAA;;;;AAIA,cE9BS,WF8BT,EAAA,CAAA,UAAA,CAAA,EAAA,MAAA,EAAA,GAAA,MAAA;;;AAMJ;AASa,cEtCA,uBF+CZ,EAAA,CAAA,GAAA,EAAA,MAAA,EAAA,WAAA,EE/CiE,uBF+CjE,GAAA,IAAA,EAAA,GAAA,IAAA;AAMD;;;cE9Ca,0CAAyC;ADlGtD;AAQA;;AAE8B,cC+FjB,wBD/FiB,EAAA,CAAA,GAAA,EAAA,MAAA,EAAA,eAAA,EC+FyC,eD/FzC,GAAA,IAAA,EAAA,GAAA,IAAA;;;;AAQjB,cC8FA,wBD9FgC,EAAA,CAAA,GAAA,EAAoC,MAAA,EAAA,GC8F1B,eD9FuC,GAAA,IAAA;;;ADzB1C;AAEpB;AACA;AAG3B,UGFY,WAAA,CHEQ;EACpB,SAAA,WAAA,EGFmB,WHEA;AAAU;AACM;AACI;AACX;AAG5B,UGFY,eAAA,SAAwB,WHE8C,CAAA;EAClF,SAAA,IAAA,EAAA,UAAA;EAMA,SAAA,QAAA,EGPgB,uBHSJ;AAKjB;;;;AAAqD,UGRpC,gBAAA,SAAyB,WHQW,CAAA;EAAe,SAAA,IAAA,EAAA,WAAA;EAKxD,SAAA,QAAA,EGXS,wBHWsB;AAK3C;AAMA;AAKA;AAKA;AAKY,KG/BA,OAAA,GAAU,eH+BkB,GG/BA,gBH+BG;;;;;;;;AA1DS;AAG/C,KIFO,qBAAA,GJEoB;EAC3B,SAAA,OAAA,EAAA,MAAA;EAEA,SAAA,UAAA,EAAA,OAAoB;EACpB,SAAA,UAAA,EAAA,OAAmB;EACnB,SAAA,aAAA,CAAA,EAAA,MAAyB;AAAU,CAAA;;;;AARY;AAEpB;AAE3B,cKAQ,kBLAe,EAAA,CAAA,QAAA,EAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,GKA2C,WLA3C"}
|
package/dist/index.d.mts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { BuilderArtifact,
|
|
1
|
+
import { BuilderArtifact, BuilderArtifactFragment, BuilderArtifactOperation, BuilderError } from "@soda-gql/builder";
|
|
2
|
+
import { CanonicalId } from "@soda-gql/common";
|
|
2
3
|
import { ResolvedSodaGqlConfig } from "@soda-gql/config";
|
|
3
4
|
|
|
4
5
|
//#region packages/plugin-common/src/errors.d.ts
|
|
@@ -159,6 +160,27 @@ type PluginSession = {
|
|
|
159
160
|
declare const createPluginSession: (options: PluginOptions, pluginName: string) => PluginSession | null;
|
|
160
161
|
//#endregion
|
|
161
162
|
//#region packages/plugin-common/src/shared-state.d.ts
|
|
163
|
+
/**
|
|
164
|
+
* Transformer type for code transformation.
|
|
165
|
+
* - 'babel': Use Babel plugin (default, wider compatibility)
|
|
166
|
+
* - 'swc': Use SWC transformer (faster, requires @soda-gql/swc-transformer)
|
|
167
|
+
*/
|
|
168
|
+
type TransformerType = "babel" | "swc";
|
|
169
|
+
/**
|
|
170
|
+
* Minimal interface for SWC transformer.
|
|
171
|
+
* Matches the Transformer interface from @soda-gql/swc-transformer.
|
|
172
|
+
*/
|
|
173
|
+
interface SwcTransformerInterface {
|
|
174
|
+
transform(input: {
|
|
175
|
+
sourceCode: string;
|
|
176
|
+
sourcePath: string;
|
|
177
|
+
inputSourceMap?: string;
|
|
178
|
+
}): {
|
|
179
|
+
transformed: boolean;
|
|
180
|
+
sourceCode: string;
|
|
181
|
+
sourceMap?: string;
|
|
182
|
+
};
|
|
183
|
+
}
|
|
162
184
|
/**
|
|
163
185
|
* Shared state between bundler plugins and loaders.
|
|
164
186
|
* Enables efficient artifact sharing across build pipeline stages.
|
|
@@ -168,6 +190,8 @@ type SharedState = {
|
|
|
168
190
|
currentArtifact: BuilderArtifact | null;
|
|
169
191
|
moduleAdjacency: Map<string, Set<string>>;
|
|
170
192
|
generation: number;
|
|
193
|
+
swcTransformer: SwcTransformerInterface | null;
|
|
194
|
+
transformerType: TransformerType | null;
|
|
171
195
|
};
|
|
172
196
|
/**
|
|
173
197
|
* Get shared state for a given project (identified by config path or cwd).
|
|
@@ -193,49 +217,48 @@ declare const setSharedPluginSession: (key: string, session: PluginSession | nul
|
|
|
193
217
|
* Get the state key from config path or cwd.
|
|
194
218
|
*/
|
|
195
219
|
declare const getStateKey: (configPath?: string) => string;
|
|
220
|
+
/**
|
|
221
|
+
* Set shared SWC transformer.
|
|
222
|
+
*/
|
|
223
|
+
declare const setSharedSwcTransformer: (key: string, transformer: SwcTransformerInterface | null) => void;
|
|
224
|
+
/**
|
|
225
|
+
* Get shared SWC transformer.
|
|
226
|
+
*/
|
|
227
|
+
declare const getSharedSwcTransformer: (key: string) => SwcTransformerInterface | null;
|
|
228
|
+
/**
|
|
229
|
+
* Set shared transformer type.
|
|
230
|
+
*/
|
|
231
|
+
declare const setSharedTransformerType: (key: string, transformerType: TransformerType | null) => void;
|
|
232
|
+
/**
|
|
233
|
+
* Get shared transformer type.
|
|
234
|
+
*/
|
|
235
|
+
declare const getSharedTransformerType: (key: string) => TransformerType | null;
|
|
196
236
|
//#endregion
|
|
197
237
|
//#region packages/plugin-common/src/types/gql-call.d.ts
|
|
198
238
|
/**
|
|
199
239
|
* Base interface for all GraphQL call types.
|
|
200
|
-
* TCallNode represents the AST node type (e.g., t.CallExpression for Babel, ts.CallExpression for TypeScript).
|
|
201
240
|
*/
|
|
202
|
-
interface GqlCallBase
|
|
241
|
+
interface GqlCallBase {
|
|
203
242
|
readonly canonicalId: CanonicalId;
|
|
204
|
-
readonly builderCall: TCallNode;
|
|
205
243
|
}
|
|
206
244
|
/**
|
|
207
|
-
* GraphQL
|
|
245
|
+
* GraphQL fragment call.
|
|
208
246
|
*/
|
|
209
|
-
interface
|
|
210
|
-
readonly type: "
|
|
211
|
-
readonly artifact:
|
|
247
|
+
interface GqlCallFragment extends GqlCallBase {
|
|
248
|
+
readonly type: "fragment";
|
|
249
|
+
readonly artifact: BuilderArtifactFragment;
|
|
212
250
|
}
|
|
213
251
|
/**
|
|
214
|
-
* GraphQL
|
|
252
|
+
* GraphQL operation call.
|
|
215
253
|
*/
|
|
216
|
-
interface
|
|
217
|
-
readonly type: "slice";
|
|
218
|
-
readonly artifact: BuilderArtifactSlice;
|
|
219
|
-
}
|
|
220
|
-
/**
|
|
221
|
-
* GraphQL composed operation call.
|
|
222
|
-
* Unified naming: "operation" (was "composedOperation" in tsc-plugin).
|
|
223
|
-
*/
|
|
224
|
-
interface GqlCallOperation<TCallNode> extends GqlCallBase<TCallNode> {
|
|
254
|
+
interface GqlCallOperation extends GqlCallBase {
|
|
225
255
|
readonly type: "operation";
|
|
226
256
|
readonly artifact: BuilderArtifactOperation;
|
|
227
257
|
}
|
|
228
|
-
/**
|
|
229
|
-
* GraphQL inline operation call.
|
|
230
|
-
*/
|
|
231
|
-
interface GqlCallInlineOperation<TCallNode> extends GqlCallBase<TCallNode> {
|
|
232
|
-
readonly type: "inlineOperation";
|
|
233
|
-
readonly artifact: BuilderArtifactInlineOperation;
|
|
234
|
-
}
|
|
235
258
|
/**
|
|
236
259
|
* Union of all GraphQL call types.
|
|
237
260
|
*/
|
|
238
|
-
type GqlCall
|
|
261
|
+
type GqlCall = GqlCallFragment | GqlCallOperation;
|
|
239
262
|
//#endregion
|
|
240
263
|
//#region packages/plugin-common/src/types/metadata.d.ts
|
|
241
264
|
/**
|
|
@@ -257,5 +280,5 @@ type GqlDefinitionMetadata = {
|
|
|
257
280
|
*/
|
|
258
281
|
declare const resolveCanonicalId: (filename: string, astPath: string) => CanonicalId;
|
|
259
282
|
//#endregion
|
|
260
|
-
export { type GqlCall, type GqlCallBase, type
|
|
283
|
+
export { type GqlCall, type GqlCallBase, type GqlCallFragment, type GqlCallOperation, type GqlDefinitionMetadata, PluginAnalysisArtifactMissingError, PluginAnalysisMetadataMissingError, PluginAnalysisUnsupportedArtifactTypeError, PluginBuilderCircularDependencyError, PluginBuilderDocDuplicateError, PluginBuilderEntryNotFoundError, PluginBuilderModuleEvaluationFailedError, PluginBuilderUnexpectedError, PluginBuilderWriteFailedError, PluginError, PluginOptions, PluginOptionsInvalidBuilderConfigError, PluginSession, PluginTransformAstVisitorFailedError, PluginTransformMissingBuilderArgError, PluginTransformUnsupportedValueTypeError, SharedState, SwcTransformerInterface, TransformerType, assertUnreachable, createPluginSession, formatPluginError, getSharedArtifact, getSharedPluginSession, getSharedState, getSharedSwcTransformer, getSharedTransformerType, getStateKey, isPluginError, resolveCanonicalId, setSharedArtifact, setSharedPluginSession, setSharedSwcTransformer, setSharedTransformerType };
|
|
261
284
|
//# sourceMappingURL=index.d.mts.map
|
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/errors.ts","../src/plugin-session.ts","../src/shared-state.ts","../src/types/gql-call.ts","../src/types/metadata.ts","../src/utils/canonical-id.ts"],"sourcesContent":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/errors.ts","../src/plugin-session.ts","../src/shared-state.ts","../src/types/gql-call.ts","../src/types/metadata.ts","../src/utils/canonical-id.ts"],"sourcesContent":[],"mappings":"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"}
|
package/dist/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { createBuilderService
|
|
2
|
-
import { cachedFn } from "@soda-gql/common";
|
|
1
|
+
import { createBuilderService } from "@soda-gql/builder";
|
|
2
|
+
import { cachedFn, createCanonicalId } from "@soda-gql/common";
|
|
3
3
|
import { loadConfig } from "@soda-gql/config";
|
|
4
4
|
import { resolve } from "node:path";
|
|
5
5
|
|
|
@@ -89,7 +89,9 @@ const getSharedState = (key) => {
|
|
|
89
89
|
pluginSession: null,
|
|
90
90
|
currentArtifact: null,
|
|
91
91
|
moduleAdjacency: /* @__PURE__ */ new Map(),
|
|
92
|
-
generation: 0
|
|
92
|
+
generation: 0,
|
|
93
|
+
swcTransformer: null,
|
|
94
|
+
transformerType: null
|
|
93
95
|
};
|
|
94
96
|
sharedStates.set(key, state);
|
|
95
97
|
}
|
|
@@ -128,6 +130,30 @@ const setSharedPluginSession = (key, session) => {
|
|
|
128
130
|
const getStateKey = (configPath) => {
|
|
129
131
|
return configPath ?? process.cwd();
|
|
130
132
|
};
|
|
133
|
+
/**
|
|
134
|
+
* Set shared SWC transformer.
|
|
135
|
+
*/
|
|
136
|
+
const setSharedSwcTransformer = (key, transformer) => {
|
|
137
|
+
getSharedState(key).swcTransformer = transformer;
|
|
138
|
+
};
|
|
139
|
+
/**
|
|
140
|
+
* Get shared SWC transformer.
|
|
141
|
+
*/
|
|
142
|
+
const getSharedSwcTransformer = (key) => {
|
|
143
|
+
return getSharedState(key).swcTransformer;
|
|
144
|
+
};
|
|
145
|
+
/**
|
|
146
|
+
* Set shared transformer type.
|
|
147
|
+
*/
|
|
148
|
+
const setSharedTransformerType = (key, transformerType) => {
|
|
149
|
+
getSharedState(key).transformerType = transformerType;
|
|
150
|
+
};
|
|
151
|
+
/**
|
|
152
|
+
* Get shared transformer type.
|
|
153
|
+
*/
|
|
154
|
+
const getSharedTransformerType = (key) => {
|
|
155
|
+
return getSharedState(key).transformerType;
|
|
156
|
+
};
|
|
131
157
|
|
|
132
158
|
//#endregion
|
|
133
159
|
//#region packages/plugin-common/src/utils/canonical-id.ts
|
|
@@ -140,5 +166,5 @@ const getStateKey = (configPath) => {
|
|
|
140
166
|
const resolveCanonicalId = (filename, astPath) => createCanonicalId(resolve(filename), astPath);
|
|
141
167
|
|
|
142
168
|
//#endregion
|
|
143
|
-
export { assertUnreachable, createPluginSession, formatPluginError, getSharedArtifact, getSharedPluginSession, getSharedState, getStateKey, isPluginError, resolveCanonicalId, setSharedArtifact, setSharedPluginSession };
|
|
169
|
+
export { assertUnreachable, createPluginSession, formatPluginError, getSharedArtifact, getSharedPluginSession, getSharedState, getSharedSwcTransformer, getSharedTransformerType, getStateKey, isPluginError, resolveCanonicalId, setSharedArtifact, setSharedPluginSession, setSharedSwcTransformer, setSharedTransformerType };
|
|
144
170
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":[],"sources":["../src/errors.ts","../src/plugin-session.ts","../src/shared-state.ts","../src/utils/canonical-id.ts"],"sourcesContent":["/**\n * Error types and formatters for plugin-babel.\n * Simplified from plugin-shared to include only types actually used by the Babel transformer.\n */\n\nimport type { BuilderError, CanonicalId } from \"@soda-gql/builder\";\n\ntype OptionsInvalidBuilderConfig = { readonly code: \"INVALID_BUILDER_CONFIG\"; readonly message: string };\ntype OptionsMissingBuilderConfig = { readonly code: \"MISSING_BUILDER_CONFIG\"; readonly message: string };\ntype OptionsConfigLoadFailed = { readonly code: \"CONFIG_LOAD_FAILED\"; readonly message: string };\n\ntype BuilderEntryNotFound = Extract<BuilderError, { code: \"ENTRY_NOT_FOUND\" }>;\ntype BuilderDocDuplicate = Extract<BuilderError, { code: \"DOC_DUPLICATE\" }>;\ntype BuilderCircularDependency = Extract<BuilderError, { code: \"GRAPH_CIRCULAR_DEPENDENCY\" }>;\ntype BuilderModuleEvaluationFailed = Extract<BuilderError, { code: \"RUNTIME_MODULE_LOAD_FAILED\" }>;\ntype BuilderWriteFailed = Extract<BuilderError, { code: \"WRITE_FAILED\" }>;\n\ntype AnalysisMetadataMissingCause = { readonly filename: string };\ntype AnalysisArtifactMissingCause = { readonly filename: string; readonly canonicalId: CanonicalId };\ntype AnalysisUnsupportedArtifactTypeCause = {\n readonly filename: string;\n readonly canonicalId: CanonicalId;\n readonly artifactType: string;\n};\n\ntype PluginErrorBase<Code extends string, Cause> = {\n readonly type: \"PluginError\";\n readonly code: Code;\n readonly message: string;\n readonly cause: Cause;\n};\n\nexport type PluginOptionsInvalidBuilderConfigError = PluginErrorBase<\n \"OPTIONS_INVALID_BUILDER_CONFIG\",\n OptionsInvalidBuilderConfig | OptionsMissingBuilderConfig | OptionsConfigLoadFailed\n> & { readonly stage: \"normalize-options\" };\n\nexport type PluginBuilderEntryNotFoundError = PluginErrorBase<\"SODA_GQL_BUILDER_ENTRY_NOT_FOUND\", BuilderEntryNotFound> & {\n readonly stage: \"builder\";\n readonly entry: string;\n};\n\nexport type PluginBuilderDocDuplicateError = PluginErrorBase<\"SODA_GQL_BUILDER_DOC_DUPLICATE\", BuilderDocDuplicate> & {\n readonly stage: \"builder\";\n readonly name: string;\n readonly sources: readonly string[];\n};\n\nexport type PluginBuilderCircularDependencyError = PluginErrorBase<\n \"SODA_GQL_BUILDER_CIRCULAR_DEPENDENCY\",\n BuilderCircularDependency\n> & { readonly stage: \"builder\"; readonly chain: readonly string[] };\n\nexport type PluginBuilderModuleEvaluationFailedError = PluginErrorBase<\n \"SODA_GQL_BUILDER_MODULE_EVALUATION_FAILED\",\n BuilderModuleEvaluationFailed\n> & { readonly stage: \"builder\"; readonly filePath: string; readonly astPath: string };\n\nexport type PluginBuilderWriteFailedError = PluginErrorBase<\"SODA_GQL_BUILDER_WRITE_FAILED\", BuilderWriteFailed> & {\n readonly stage: \"builder\";\n readonly outPath: string;\n};\n\nexport type PluginBuilderUnexpectedError = PluginErrorBase<\"SODA_GQL_BUILDER_UNEXPECTED\", unknown> & {\n readonly stage: \"builder\";\n};\n\nexport type PluginAnalysisMetadataMissingError = PluginErrorBase<\"SODA_GQL_METADATA_NOT_FOUND\", AnalysisMetadataMissingCause> & {\n readonly stage: \"analysis\";\n readonly filename: string;\n};\n\nexport type PluginAnalysisArtifactMissingError = PluginErrorBase<\n \"SODA_GQL_ANALYSIS_ARTIFACT_NOT_FOUND\",\n AnalysisArtifactMissingCause\n> & { readonly stage: \"analysis\"; readonly filename: string; readonly canonicalId: CanonicalId };\n\nexport type PluginAnalysisUnsupportedArtifactTypeError = PluginErrorBase<\n \"SODA_GQL_UNSUPPORTED_ARTIFACT_TYPE\",\n AnalysisUnsupportedArtifactTypeCause\n> & {\n readonly stage: \"analysis\";\n readonly filename: string;\n readonly canonicalId: CanonicalId;\n readonly artifactType: string;\n};\n\ntype TransformMissingBuilderArgCause = { readonly filename: string; readonly builderType: string; readonly argName: string };\ntype TransformUnsupportedValueTypeCause = { readonly valueType: string };\ntype TransformAstVisitorFailedCause = { readonly filename: string; readonly reason: string };\n\nexport type PluginTransformMissingBuilderArgError = PluginErrorBase<\n \"SODA_GQL_TRANSFORM_MISSING_BUILDER_ARG\",\n TransformMissingBuilderArgCause\n> & {\n readonly stage: \"transform\";\n readonly filename: string;\n readonly builderType: string;\n readonly argName: string;\n};\n\nexport type PluginTransformUnsupportedValueTypeError = PluginErrorBase<\n \"SODA_GQL_TRANSFORM_UNSUPPORTED_VALUE_TYPE\",\n TransformUnsupportedValueTypeCause\n> & { readonly stage: \"transform\"; readonly valueType: string };\n\nexport type PluginTransformAstVisitorFailedError = PluginErrorBase<\n \"SODA_GQL_TRANSFORM_AST_VISITOR_FAILED\",\n TransformAstVisitorFailedCause\n> & { readonly stage: \"transform\"; readonly filename: string; readonly reason: string };\n\n/**\n * Union of all plugin error types.\n */\nexport type PluginError =\n | PluginOptionsInvalidBuilderConfigError\n | PluginBuilderEntryNotFoundError\n | PluginBuilderDocDuplicateError\n | PluginBuilderCircularDependencyError\n | PluginBuilderModuleEvaluationFailedError\n | PluginBuilderWriteFailedError\n | PluginBuilderUnexpectedError\n | PluginAnalysisMetadataMissingError\n | PluginAnalysisArtifactMissingError\n | PluginAnalysisUnsupportedArtifactTypeError\n | PluginTransformMissingBuilderArgError\n | PluginTransformUnsupportedValueTypeError\n | PluginTransformAstVisitorFailedError;\n\n/**\n * Format a PluginError into a human-readable message.\n */\nexport const formatPluginError = (error: PluginError): string => {\n const codePrefix = `[${error.code}]`;\n const stageInfo = \"stage\" in error ? ` (${error.stage})` : \"\";\n return `${codePrefix}${stageInfo} ${error.message}`;\n};\n\n/**\n * Type guard for PluginError.\n */\nexport const isPluginError = (value: unknown): value is PluginError => {\n return (\n typeof value === \"object\" &&\n value !== null &&\n \"type\" in value &&\n value.type === \"PluginError\" &&\n \"code\" in value &&\n \"message\" in value\n );\n};\n\n/**\n * Assertion helper for unreachable code paths.\n * This is the ONLY acceptable throw in plugin code.\n */\nexport const assertUnreachable = (value: never, context?: string): never => {\n throw new Error(`[INTERNAL] Unreachable code path${context ? ` in ${context}` : \"\"}: received ${JSON.stringify(value)}`);\n};\n","/**\n * Plugin session management for all plugins.\n * Unified from plugin-babel and plugin-swc implementations.\n */\n\nimport type { BuilderArtifact } from \"@soda-gql/builder\";\nimport { createBuilderService } from \"@soda-gql/builder\";\nimport { cachedFn } from \"@soda-gql/common\";\nimport { loadConfig, type ResolvedSodaGqlConfig } from \"@soda-gql/config\";\n\n/**\n * Plugin options shared across all plugins.\n */\nexport type PluginOptions = {\n readonly configPath?: string;\n readonly enabled?: boolean;\n};\n\n/**\n * Plugin session containing builder service and configuration.\n */\nexport type PluginSession = {\n readonly config: ResolvedSodaGqlConfig;\n readonly getArtifact: () => BuilderArtifact | null;\n readonly getArtifactAsync: () => Promise<BuilderArtifact | null>;\n};\n\n/**\n * Create plugin session by loading config and creating cached builder service.\n * Returns null if disabled or config load fails.\n */\nexport const createPluginSession = (options: PluginOptions, pluginName: string): PluginSession | null => {\n const enabled = options.enabled ?? true;\n if (!enabled) {\n return null;\n }\n\n const configResult = loadConfig(options.configPath);\n if (configResult.isErr()) {\n console.error(`[${pluginName}] Failed to load config:`, {\n code: configResult.error.code,\n message: configResult.error.message,\n filePath: configResult.error.filePath,\n cause: configResult.error.cause,\n });\n return null;\n }\n\n const config = configResult.value;\n const ensureBuilderService = cachedFn(() => createBuilderService({ config }));\n\n /**\n * Build artifact on every invocation (like tsc-plugin).\n * If artifact.useBuilder is false and artifact.path is provided, load from file instead.\n * This ensures the artifact is always up-to-date with the latest source files.\n */\n const getArtifact = (): BuilderArtifact | null => {\n const builderService = ensureBuilderService();\n const buildResult = builderService.build();\n if (buildResult.isErr()) {\n console.error(`[${pluginName}] Failed to build artifact: ${buildResult.error.message}`);\n return null;\n }\n return buildResult.value;\n };\n\n /**\n * Async version of getArtifact.\n * Supports async metadata factories and parallel element evaluation.\n */\n const getArtifactAsync = async (): Promise<BuilderArtifact | null> => {\n const builderService = ensureBuilderService();\n const buildResult = await builderService.buildAsync();\n if (buildResult.isErr()) {\n console.error(`[${pluginName}] Failed to build artifact: ${buildResult.error.message}`);\n return null;\n }\n return buildResult.value;\n };\n\n return {\n config,\n getArtifact,\n getArtifactAsync,\n };\n};\n","import type { BuilderArtifact } from \"@soda-gql/builder\";\nimport type { PluginSession } from \"./plugin-session\";\n\n/**\n * Shared state between bundler plugins and loaders.\n * Enables efficient artifact sharing across build pipeline stages.\n */\nexport type SharedState = {\n pluginSession: PluginSession | null;\n currentArtifact: BuilderArtifact | null;\n moduleAdjacency: Map<string, Set<string>>;\n generation: number;\n};\n\n// Global state for sharing between plugin and loader\nconst sharedStates = new Map<string, SharedState>();\n\n/**\n * Get shared state for a given project (identified by config path or cwd).\n */\nexport const getSharedState = (key: string): SharedState => {\n let state = sharedStates.get(key);\n if (!state) {\n state = {\n pluginSession: null,\n currentArtifact: null,\n moduleAdjacency: new Map(),\n generation: 0,\n };\n sharedStates.set(key, state);\n }\n return state;\n};\n\n/**\n * Update shared artifact.\n */\nexport const setSharedArtifact = (\n key: string,\n artifact: BuilderArtifact | null,\n moduleAdjacency?: Map<string, Set<string>>,\n): void => {\n const state = getSharedState(key);\n state.currentArtifact = artifact;\n if (moduleAdjacency) {\n state.moduleAdjacency = moduleAdjacency;\n }\n state.generation++;\n};\n\n/**\n * Get shared artifact.\n */\nexport const getSharedArtifact = (key: string): BuilderArtifact | null => {\n return getSharedState(key).currentArtifact;\n};\n\n/**\n * Get shared plugin session.\n */\nexport const getSharedPluginSession = (key: string): PluginSession | null => {\n return getSharedState(key).pluginSession;\n};\n\n/**\n * Set shared plugin session.\n */\nexport const setSharedPluginSession = (key: string, session: PluginSession | null): void => {\n getSharedState(key).pluginSession = session;\n};\n\n/**\n * Get the state key from config path or cwd.\n */\nexport const getStateKey = (configPath?: string): string => {\n return configPath ?? process.cwd();\n};\n","/**\n * Utility for working with canonical IDs.\n */\n\nimport { resolve } from \"node:path\";\nimport { type CanonicalId, createCanonicalId } from \"@soda-gql/builder\";\n\n/**\n * Resolve a canonical ID from a filename and AST path.\n */\nexport const resolveCanonicalId = (filename: string, astPath: string): CanonicalId =>\n createCanonicalId(resolve(filename), astPath);\n"],"mappings":";;;;;;;;;AAoIA,MAAa,qBAAqB,UAA+B;AAG/D,QAAO,GAFY,IAAI,MAAM,KAAK,KAChB,WAAW,QAAQ,KAAK,MAAM,MAAM,KAAK,GAC1B,GAAG,MAAM;;;;;AAM5C,MAAa,iBAAiB,UAAyC;AACrE,QACE,OAAO,UAAU,YACjB,UAAU,QACV,UAAU,SACV,MAAM,SAAS,iBACf,UAAU,SACV,aAAa;;;;;;AAQjB,MAAa,qBAAqB,OAAc,YAA4B;AAC1E,OAAM,IAAI,MAAM,mCAAmC,UAAU,OAAO,YAAY,GAAG,aAAa,KAAK,UAAU,MAAM,GAAG;;;;;;;;;AC9H1H,MAAa,uBAAuB,SAAwB,eAA6C;AAEvG,KAAI,EADY,QAAQ,WAAW,MAEjC,QAAO;CAGT,MAAM,eAAe,WAAW,QAAQ,WAAW;AACnD,KAAI,aAAa,OAAO,EAAE;AACxB,UAAQ,MAAM,IAAI,WAAW,2BAA2B;GACtD,MAAM,aAAa,MAAM;GACzB,SAAS,aAAa,MAAM;GAC5B,UAAU,aAAa,MAAM;GAC7B,OAAO,aAAa,MAAM;GAC3B,CAAC;AACF,SAAO;;CAGT,MAAM,SAAS,aAAa;CAC5B,MAAM,uBAAuB,eAAe,qBAAqB,EAAE,QAAQ,CAAC,CAAC;;;;;;CAO7E,MAAM,oBAA4C;EAEhD,MAAM,cADiB,sBAAsB,CACV,OAAO;AAC1C,MAAI,YAAY,OAAO,EAAE;AACvB,WAAQ,MAAM,IAAI,WAAW,8BAA8B,YAAY,MAAM,UAAU;AACvF,UAAO;;AAET,SAAO,YAAY;;;;;;CAOrB,MAAM,mBAAmB,YAA6C;EAEpE,MAAM,cAAc,MADG,sBAAsB,CACJ,YAAY;AACrD,MAAI,YAAY,OAAO,EAAE;AACvB,WAAQ,MAAM,IAAI,WAAW,8BAA8B,YAAY,MAAM,UAAU;AACvF,UAAO;;AAET,SAAO,YAAY;;AAGrB,QAAO;EACL;EACA;EACA;EACD;;;;;ACrEH,MAAM,+BAAe,IAAI,KAA0B;;;;AAKnD,MAAa,kBAAkB,QAA6B;CAC1D,IAAI,QAAQ,aAAa,IAAI,IAAI;AACjC,KAAI,CAAC,OAAO;AACV,UAAQ;GACN,eAAe;GACf,iBAAiB;GACjB,iCAAiB,IAAI,KAAK;GAC1B,YAAY;GACb;AACD,eAAa,IAAI,KAAK,MAAM;;AAE9B,QAAO;;;;;AAMT,MAAa,qBACX,KACA,UACA,oBACS;CACT,MAAM,QAAQ,eAAe,IAAI;AACjC,OAAM,kBAAkB;AACxB,KAAI,gBACF,OAAM,kBAAkB;AAE1B,OAAM;;;;;AAMR,MAAa,qBAAqB,QAAwC;AACxE,QAAO,eAAe,IAAI,CAAC;;;;;AAM7B,MAAa,0BAA0B,QAAsC;AAC3E,QAAO,eAAe,IAAI,CAAC;;;;;AAM7B,MAAa,0BAA0B,KAAa,YAAwC;AAC1F,gBAAe,IAAI,CAAC,gBAAgB;;;;;AAMtC,MAAa,eAAe,eAAgC;AAC1D,QAAO,cAAc,QAAQ,KAAK;;;;;;;;;;;ACjEpC,MAAa,sBAAsB,UAAkB,YACnD,kBAAkB,QAAQ,SAAS,EAAE,QAAQ"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../src/errors.ts","../src/plugin-session.ts","../src/shared-state.ts","../src/utils/canonical-id.ts"],"sourcesContent":["/**\n * Error types and formatters for plugin-babel.\n * Simplified from plugin-shared to include only types actually used by the Babel transformer.\n */\n\nimport type { BuilderError } from \"@soda-gql/builder\";\nimport type { CanonicalId } from \"@soda-gql/common\";\n\ntype OptionsInvalidBuilderConfig = { readonly code: \"INVALID_BUILDER_CONFIG\"; readonly message: string };\ntype OptionsMissingBuilderConfig = { readonly code: \"MISSING_BUILDER_CONFIG\"; readonly message: string };\ntype OptionsConfigLoadFailed = { readonly code: \"CONFIG_LOAD_FAILED\"; readonly message: string };\n\ntype BuilderEntryNotFound = Extract<BuilderError, { code: \"ENTRY_NOT_FOUND\" }>;\ntype BuilderDocDuplicate = Extract<BuilderError, { code: \"DOC_DUPLICATE\" }>;\ntype BuilderCircularDependency = Extract<BuilderError, { code: \"GRAPH_CIRCULAR_DEPENDENCY\" }>;\ntype BuilderModuleEvaluationFailed = Extract<BuilderError, { code: \"RUNTIME_MODULE_LOAD_FAILED\" }>;\ntype BuilderWriteFailed = Extract<BuilderError, { code: \"WRITE_FAILED\" }>;\n\ntype AnalysisMetadataMissingCause = { readonly filename: string };\ntype AnalysisArtifactMissingCause = { readonly filename: string; readonly canonicalId: CanonicalId };\ntype AnalysisUnsupportedArtifactTypeCause = {\n readonly filename: string;\n readonly canonicalId: CanonicalId;\n readonly artifactType: string;\n};\n\ntype PluginErrorBase<Code extends string, Cause> = {\n readonly type: \"PluginError\";\n readonly code: Code;\n readonly message: string;\n readonly cause: Cause;\n};\n\nexport type PluginOptionsInvalidBuilderConfigError = PluginErrorBase<\n \"OPTIONS_INVALID_BUILDER_CONFIG\",\n OptionsInvalidBuilderConfig | OptionsMissingBuilderConfig | OptionsConfigLoadFailed\n> & { readonly stage: \"normalize-options\" };\n\nexport type PluginBuilderEntryNotFoundError = PluginErrorBase<\"SODA_GQL_BUILDER_ENTRY_NOT_FOUND\", BuilderEntryNotFound> & {\n readonly stage: \"builder\";\n readonly entry: string;\n};\n\nexport type PluginBuilderDocDuplicateError = PluginErrorBase<\"SODA_GQL_BUILDER_DOC_DUPLICATE\", BuilderDocDuplicate> & {\n readonly stage: \"builder\";\n readonly name: string;\n readonly sources: readonly string[];\n};\n\nexport type PluginBuilderCircularDependencyError = PluginErrorBase<\n \"SODA_GQL_BUILDER_CIRCULAR_DEPENDENCY\",\n BuilderCircularDependency\n> & { readonly stage: \"builder\"; readonly chain: readonly string[] };\n\nexport type PluginBuilderModuleEvaluationFailedError = PluginErrorBase<\n \"SODA_GQL_BUILDER_MODULE_EVALUATION_FAILED\",\n BuilderModuleEvaluationFailed\n> & { readonly stage: \"builder\"; readonly filePath: string; readonly astPath: string };\n\nexport type PluginBuilderWriteFailedError = PluginErrorBase<\"SODA_GQL_BUILDER_WRITE_FAILED\", BuilderWriteFailed> & {\n readonly stage: \"builder\";\n readonly outPath: string;\n};\n\nexport type PluginBuilderUnexpectedError = PluginErrorBase<\"SODA_GQL_BUILDER_UNEXPECTED\", unknown> & {\n readonly stage: \"builder\";\n};\n\nexport type PluginAnalysisMetadataMissingError = PluginErrorBase<\"SODA_GQL_METADATA_NOT_FOUND\", AnalysisMetadataMissingCause> & {\n readonly stage: \"analysis\";\n readonly filename: string;\n};\n\nexport type PluginAnalysisArtifactMissingError = PluginErrorBase<\n \"SODA_GQL_ANALYSIS_ARTIFACT_NOT_FOUND\",\n AnalysisArtifactMissingCause\n> & { readonly stage: \"analysis\"; readonly filename: string; readonly canonicalId: CanonicalId };\n\nexport type PluginAnalysisUnsupportedArtifactTypeError = PluginErrorBase<\n \"SODA_GQL_UNSUPPORTED_ARTIFACT_TYPE\",\n AnalysisUnsupportedArtifactTypeCause\n> & {\n readonly stage: \"analysis\";\n readonly filename: string;\n readonly canonicalId: CanonicalId;\n readonly artifactType: string;\n};\n\ntype TransformMissingBuilderArgCause = { readonly filename: string; readonly builderType: string; readonly argName: string };\ntype TransformUnsupportedValueTypeCause = { readonly valueType: string };\ntype TransformAstVisitorFailedCause = { readonly filename: string; readonly reason: string };\n\nexport type PluginTransformMissingBuilderArgError = PluginErrorBase<\n \"SODA_GQL_TRANSFORM_MISSING_BUILDER_ARG\",\n TransformMissingBuilderArgCause\n> & {\n readonly stage: \"transform\";\n readonly filename: string;\n readonly builderType: string;\n readonly argName: string;\n};\n\nexport type PluginTransformUnsupportedValueTypeError = PluginErrorBase<\n \"SODA_GQL_TRANSFORM_UNSUPPORTED_VALUE_TYPE\",\n TransformUnsupportedValueTypeCause\n> & { readonly stage: \"transform\"; readonly valueType: string };\n\nexport type PluginTransformAstVisitorFailedError = PluginErrorBase<\n \"SODA_GQL_TRANSFORM_AST_VISITOR_FAILED\",\n TransformAstVisitorFailedCause\n> & { readonly stage: \"transform\"; readonly filename: string; readonly reason: string };\n\n/**\n * Union of all plugin error types.\n */\nexport type PluginError =\n | PluginOptionsInvalidBuilderConfigError\n | PluginBuilderEntryNotFoundError\n | PluginBuilderDocDuplicateError\n | PluginBuilderCircularDependencyError\n | PluginBuilderModuleEvaluationFailedError\n | PluginBuilderWriteFailedError\n | PluginBuilderUnexpectedError\n | PluginAnalysisMetadataMissingError\n | PluginAnalysisArtifactMissingError\n | PluginAnalysisUnsupportedArtifactTypeError\n | PluginTransformMissingBuilderArgError\n | PluginTransformUnsupportedValueTypeError\n | PluginTransformAstVisitorFailedError;\n\n/**\n * Format a PluginError into a human-readable message.\n */\nexport const formatPluginError = (error: PluginError): string => {\n const codePrefix = `[${error.code}]`;\n const stageInfo = \"stage\" in error ? ` (${error.stage})` : \"\";\n return `${codePrefix}${stageInfo} ${error.message}`;\n};\n\n/**\n * Type guard for PluginError.\n */\nexport const isPluginError = (value: unknown): value is PluginError => {\n return (\n typeof value === \"object\" &&\n value !== null &&\n \"type\" in value &&\n value.type === \"PluginError\" &&\n \"code\" in value &&\n \"message\" in value\n );\n};\n\n/**\n * Assertion helper for unreachable code paths.\n * This is the ONLY acceptable throw in plugin code.\n */\nexport const assertUnreachable = (value: never, context?: string): never => {\n throw new Error(`[INTERNAL] Unreachable code path${context ? ` in ${context}` : \"\"}: received ${JSON.stringify(value)}`);\n};\n","/**\n * Plugin session management for all plugins.\n * Unified from plugin-babel and plugin-swc implementations.\n */\n\nimport type { BuilderArtifact } from \"@soda-gql/builder\";\nimport { createBuilderService } from \"@soda-gql/builder\";\nimport { cachedFn } from \"@soda-gql/common\";\nimport { loadConfig, type ResolvedSodaGqlConfig } from \"@soda-gql/config\";\n\n/**\n * Plugin options shared across all plugins.\n */\nexport type PluginOptions = {\n readonly configPath?: string;\n readonly enabled?: boolean;\n};\n\n/**\n * Plugin session containing builder service and configuration.\n */\nexport type PluginSession = {\n readonly config: ResolvedSodaGqlConfig;\n readonly getArtifact: () => BuilderArtifact | null;\n readonly getArtifactAsync: () => Promise<BuilderArtifact | null>;\n};\n\n/**\n * Create plugin session by loading config and creating cached builder service.\n * Returns null if disabled or config load fails.\n */\nexport const createPluginSession = (options: PluginOptions, pluginName: string): PluginSession | null => {\n const enabled = options.enabled ?? true;\n if (!enabled) {\n return null;\n }\n\n const configResult = loadConfig(options.configPath);\n if (configResult.isErr()) {\n console.error(`[${pluginName}] Failed to load config:`, {\n code: configResult.error.code,\n message: configResult.error.message,\n filePath: configResult.error.filePath,\n cause: configResult.error.cause,\n });\n return null;\n }\n\n const config = configResult.value;\n const ensureBuilderService = cachedFn(() => createBuilderService({ config }));\n\n /**\n * Build artifact on every invocation (like tsc-plugin).\n * If artifact.useBuilder is false and artifact.path is provided, load from file instead.\n * This ensures the artifact is always up-to-date with the latest source files.\n */\n const getArtifact = (): BuilderArtifact | null => {\n const builderService = ensureBuilderService();\n const buildResult = builderService.build();\n if (buildResult.isErr()) {\n console.error(`[${pluginName}] Failed to build artifact: ${buildResult.error.message}`);\n return null;\n }\n return buildResult.value;\n };\n\n /**\n * Async version of getArtifact.\n * Supports async metadata factories and parallel element evaluation.\n */\n const getArtifactAsync = async (): Promise<BuilderArtifact | null> => {\n const builderService = ensureBuilderService();\n const buildResult = await builderService.buildAsync();\n if (buildResult.isErr()) {\n console.error(`[${pluginName}] Failed to build artifact: ${buildResult.error.message}`);\n return null;\n }\n return buildResult.value;\n };\n\n return {\n config,\n getArtifact,\n getArtifactAsync,\n };\n};\n","import type { BuilderArtifact } from \"@soda-gql/builder\";\nimport type { PluginSession } from \"./plugin-session\";\n\n/**\n * Transformer type for code transformation.\n * - 'babel': Use Babel plugin (default, wider compatibility)\n * - 'swc': Use SWC transformer (faster, requires @soda-gql/swc-transformer)\n */\nexport type TransformerType = \"babel\" | \"swc\";\n\n/**\n * Minimal interface for SWC transformer.\n * Matches the Transformer interface from @soda-gql/swc-transformer.\n */\nexport interface SwcTransformerInterface {\n transform(input: { sourceCode: string; sourcePath: string; inputSourceMap?: string }): {\n transformed: boolean;\n sourceCode: string;\n sourceMap?: string;\n };\n}\n\n/**\n * Shared state between bundler plugins and loaders.\n * Enables efficient artifact sharing across build pipeline stages.\n */\nexport type SharedState = {\n pluginSession: PluginSession | null;\n currentArtifact: BuilderArtifact | null;\n moduleAdjacency: Map<string, Set<string>>;\n generation: number;\n swcTransformer: SwcTransformerInterface | null;\n transformerType: TransformerType | null;\n};\n\n// Global state for sharing between plugin and loader\nconst sharedStates = new Map<string, SharedState>();\n\n/**\n * Get shared state for a given project (identified by config path or cwd).\n */\nexport const getSharedState = (key: string): SharedState => {\n let state = sharedStates.get(key);\n if (!state) {\n state = {\n pluginSession: null,\n currentArtifact: null,\n moduleAdjacency: new Map(),\n generation: 0,\n swcTransformer: null,\n transformerType: null,\n };\n sharedStates.set(key, state);\n }\n return state;\n};\n\n/**\n * Update shared artifact.\n */\nexport const setSharedArtifact = (\n key: string,\n artifact: BuilderArtifact | null,\n moduleAdjacency?: Map<string, Set<string>>,\n): void => {\n const state = getSharedState(key);\n state.currentArtifact = artifact;\n if (moduleAdjacency) {\n state.moduleAdjacency = moduleAdjacency;\n }\n state.generation++;\n};\n\n/**\n * Get shared artifact.\n */\nexport const getSharedArtifact = (key: string): BuilderArtifact | null => {\n return getSharedState(key).currentArtifact;\n};\n\n/**\n * Get shared plugin session.\n */\nexport const getSharedPluginSession = (key: string): PluginSession | null => {\n return getSharedState(key).pluginSession;\n};\n\n/**\n * Set shared plugin session.\n */\nexport const setSharedPluginSession = (key: string, session: PluginSession | null): void => {\n getSharedState(key).pluginSession = session;\n};\n\n/**\n * Get the state key from config path or cwd.\n */\nexport const getStateKey = (configPath?: string): string => {\n return configPath ?? process.cwd();\n};\n\n/**\n * Set shared SWC transformer.\n */\nexport const setSharedSwcTransformer = (key: string, transformer: SwcTransformerInterface | null): void => {\n getSharedState(key).swcTransformer = transformer;\n};\n\n/**\n * Get shared SWC transformer.\n */\nexport const getSharedSwcTransformer = (key: string): SwcTransformerInterface | null => {\n return getSharedState(key).swcTransformer;\n};\n\n/**\n * Set shared transformer type.\n */\nexport const setSharedTransformerType = (key: string, transformerType: TransformerType | null): void => {\n getSharedState(key).transformerType = transformerType;\n};\n\n/**\n * Get shared transformer type.\n */\nexport const getSharedTransformerType = (key: string): TransformerType | null => {\n return getSharedState(key).transformerType;\n};\n","/**\n * Utility for working with canonical IDs.\n */\n\nimport { resolve } from \"node:path\";\nimport { type CanonicalId, createCanonicalId } from \"@soda-gql/common\";\n\n/**\n * Resolve a canonical ID from a filename and AST path.\n */\nexport const resolveCanonicalId = (filename: string, astPath: string): CanonicalId =>\n createCanonicalId(resolve(filename), astPath);\n"],"mappings":";;;;;;;;;AAqIA,MAAa,qBAAqB,UAA+B;AAG/D,QAAO,GAFY,IAAI,MAAM,KAAK,KAChB,WAAW,QAAQ,KAAK,MAAM,MAAM,KAAK,GAC1B,GAAG,MAAM;;;;;AAM5C,MAAa,iBAAiB,UAAyC;AACrE,QACE,OAAO,UAAU,YACjB,UAAU,QACV,UAAU,SACV,MAAM,SAAS,iBACf,UAAU,SACV,aAAa;;;;;;AAQjB,MAAa,qBAAqB,OAAc,YAA4B;AAC1E,OAAM,IAAI,MAAM,mCAAmC,UAAU,OAAO,YAAY,GAAG,aAAa,KAAK,UAAU,MAAM,GAAG;;;;;;;;;AC/H1H,MAAa,uBAAuB,SAAwB,eAA6C;AAEvG,KAAI,EADY,QAAQ,WAAW,MAEjC,QAAO;CAGT,MAAM,eAAe,WAAW,QAAQ,WAAW;AACnD,KAAI,aAAa,OAAO,EAAE;AACxB,UAAQ,MAAM,IAAI,WAAW,2BAA2B;GACtD,MAAM,aAAa,MAAM;GACzB,SAAS,aAAa,MAAM;GAC5B,UAAU,aAAa,MAAM;GAC7B,OAAO,aAAa,MAAM;GAC3B,CAAC;AACF,SAAO;;CAGT,MAAM,SAAS,aAAa;CAC5B,MAAM,uBAAuB,eAAe,qBAAqB,EAAE,QAAQ,CAAC,CAAC;;;;;;CAO7E,MAAM,oBAA4C;EAEhD,MAAM,cADiB,sBAAsB,CACV,OAAO;AAC1C,MAAI,YAAY,OAAO,EAAE;AACvB,WAAQ,MAAM,IAAI,WAAW,8BAA8B,YAAY,MAAM,UAAU;AACvF,UAAO;;AAET,SAAO,YAAY;;;;;;CAOrB,MAAM,mBAAmB,YAA6C;EAEpE,MAAM,cAAc,MADG,sBAAsB,CACJ,YAAY;AACrD,MAAI,YAAY,OAAO,EAAE;AACvB,WAAQ,MAAM,IAAI,WAAW,8BAA8B,YAAY,MAAM,UAAU;AACvF,UAAO;;AAET,SAAO,YAAY;;AAGrB,QAAO;EACL;EACA;EACA;EACD;;;;;AChDH,MAAM,+BAAe,IAAI,KAA0B;;;;AAKnD,MAAa,kBAAkB,QAA6B;CAC1D,IAAI,QAAQ,aAAa,IAAI,IAAI;AACjC,KAAI,CAAC,OAAO;AACV,UAAQ;GACN,eAAe;GACf,iBAAiB;GACjB,iCAAiB,IAAI,KAAK;GAC1B,YAAY;GACZ,gBAAgB;GAChB,iBAAiB;GAClB;AACD,eAAa,IAAI,KAAK,MAAM;;AAE9B,QAAO;;;;;AAMT,MAAa,qBACX,KACA,UACA,oBACS;CACT,MAAM,QAAQ,eAAe,IAAI;AACjC,OAAM,kBAAkB;AACxB,KAAI,gBACF,OAAM,kBAAkB;AAE1B,OAAM;;;;;AAMR,MAAa,qBAAqB,QAAwC;AACxE,QAAO,eAAe,IAAI,CAAC;;;;;AAM7B,MAAa,0BAA0B,QAAsC;AAC3E,QAAO,eAAe,IAAI,CAAC;;;;;AAM7B,MAAa,0BAA0B,KAAa,YAAwC;AAC1F,gBAAe,IAAI,CAAC,gBAAgB;;;;;AAMtC,MAAa,eAAe,eAAgC;AAC1D,QAAO,cAAc,QAAQ,KAAK;;;;;AAMpC,MAAa,2BAA2B,KAAa,gBAAsD;AACzG,gBAAe,IAAI,CAAC,iBAAiB;;;;;AAMvC,MAAa,2BAA2B,QAAgD;AACtF,QAAO,eAAe,IAAI,CAAC;;;;;AAM7B,MAAa,4BAA4B,KAAa,oBAAkD;AACtG,gBAAe,IAAI,CAAC,kBAAkB;;;;;AAMxC,MAAa,4BAA4B,QAAwC;AAC/E,QAAO,eAAe,IAAI,CAAC;;;;;;;;;;;ACpH7B,MAAa,sBAAsB,UAAkB,YACnD,kBAAkB,QAAQ,SAAS,EAAE,QAAQ"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@soda-gql/plugin-common",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
|
+
"description": "Shared utilities for soda-gql build plugins",
|
|
4
5
|
"type": "module",
|
|
5
6
|
"private": false,
|
|
6
7
|
"license": "MIT",
|
|
@@ -12,12 +13,31 @@
|
|
|
12
13
|
"email": "shota.hatada@whatasoda.me",
|
|
13
14
|
"url": "https://github.com/whatasoda"
|
|
14
15
|
},
|
|
16
|
+
"keywords": [
|
|
17
|
+
"graphql",
|
|
18
|
+
"codegen",
|
|
19
|
+
"zero-runtime",
|
|
20
|
+
"typescript",
|
|
21
|
+
"plugin"
|
|
22
|
+
],
|
|
23
|
+
"repository": {
|
|
24
|
+
"type": "git",
|
|
25
|
+
"url": "https://github.com/whatasoda/soda-gql.git",
|
|
26
|
+
"directory": "packages/plugin-common"
|
|
27
|
+
},
|
|
28
|
+
"homepage": "https://github.com/whatasoda/soda-gql#readme",
|
|
29
|
+
"bugs": {
|
|
30
|
+
"url": "https://github.com/whatasoda/soda-gql/issues"
|
|
31
|
+
},
|
|
32
|
+
"engines": {
|
|
33
|
+
"node": ">=18"
|
|
34
|
+
},
|
|
15
35
|
"main": "./dist/index.mjs",
|
|
16
36
|
"module": "./dist/index.mjs",
|
|
17
37
|
"types": "./dist/index.d.mts",
|
|
18
38
|
"exports": {
|
|
19
39
|
".": {
|
|
20
|
-
"@soda-gql": "
|
|
40
|
+
"@soda-gql": "./@x-index.ts",
|
|
21
41
|
"types": "./dist/index.d.mts",
|
|
22
42
|
"import": "./dist/index.mjs",
|
|
23
43
|
"require": "./dist/index.cjs",
|
|
@@ -26,9 +46,9 @@
|
|
|
26
46
|
"./package.json": "./package.json"
|
|
27
47
|
},
|
|
28
48
|
"dependencies": {
|
|
29
|
-
"@soda-gql/builder": "0.
|
|
30
|
-
"@soda-gql/common": "0.
|
|
31
|
-
"@soda-gql/config": "0.
|
|
49
|
+
"@soda-gql/builder": "0.3.0",
|
|
50
|
+
"@soda-gql/common": "0.3.0",
|
|
51
|
+
"@soda-gql/config": "0.3.0",
|
|
32
52
|
"neverthrow": "^8.1.1"
|
|
33
53
|
},
|
|
34
54
|
"devDependencies": {},
|