polen 0.11.0-next.1 → 0.11.0-next.10
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/build/api/config/configurator.d.ts +35 -23
- package/build/api/config/configurator.d.ts.map +1 -1
- package/build/api/config/configurator.js +0 -6
- package/build/api/config/configurator.js.map +1 -1
- package/build/api/config/merge.d.ts.map +1 -1
- package/build/api/config/merge.js +0 -11
- package/build/api/config/merge.js.map +1 -1
- package/build/api/content/metadata.d.ts +8 -2
- package/build/api/content/metadata.d.ts.map +1 -1
- package/build/api/content/metadata.js +1 -1
- package/build/api/content/metadata.js.map +1 -1
- package/build/api/schema/data-sources/data-sources.d.ts +1 -0
- package/build/api/schema/data-sources/data-sources.d.ts.map +1 -1
- package/build/api/schema/data-sources/data-sources.js +1 -0
- package/build/api/schema/data-sources/data-sources.js.map +1 -1
- package/build/api/schema/data-sources/introspection/introspection.d.ts +83 -0
- package/build/api/schema/data-sources/introspection/introspection.d.ts.map +1 -0
- package/build/api/schema/data-sources/introspection/introspection.js +110 -0
- package/build/api/schema/data-sources/introspection/introspection.js.map +1 -0
- package/build/api/schema/metadata.d.ts +11 -3
- package/build/api/schema/metadata.d.ts.map +1 -1
- package/build/api/schema/metadata.js +1 -1
- package/build/api/schema/metadata.js.map +1 -1
- package/build/api/schema/read.d.ts +83 -9
- package/build/api/schema/read.d.ts.map +1 -1
- package/build/api/schema/read.js +15 -6
- package/build/api/schema/read.js.map +1 -1
- package/build/api/schema-source/schema-source.d.ts +1 -1
- package/build/api/schema-source/schema-source.d.ts.map +1 -1
- package/build/api/schema-source/schema-source.js.map +1 -1
- package/build/api/static/manifest.d.ts +1 -2
- package/build/api/static/manifest.d.ts.map +1 -1
- package/build/api/static/manifest.js +1 -1
- package/build/api/static/manifest.js.map +1 -1
- package/build/api/vite/plugins/build.d.ts.map +1 -1
- package/build/api/vite/plugins/build.js +3 -0
- package/build/api/vite/plugins/build.js.map +1 -1
- package/build/api/vite/plugins/core.js +8 -8
- package/build/api/vite/plugins/core.js.map +1 -1
- package/build/api/vite/plugins/main.d.ts.map +1 -1
- package/build/api/vite/plugins/main.js +1 -8
- package/build/api/vite/plugins/main.js.map +1 -1
- package/build/api/vite/plugins/schema-assets.d.ts.map +1 -1
- package/build/api/vite/plugins/schema-assets.js +52 -11
- package/build/api/vite/plugins/schema-assets.js.map +1 -1
- package/build/cli/commands/open.js +1 -1
- package/build/cli/commands/open.js.map +1 -1
- package/build/lib/grafaid/schema/schema.d.ts +1 -1
- package/build/lib/grafaid/schema/schema.d.ts.map +1 -1
- package/build/lib/grafaid/schema/schema.js +1 -1
- package/build/lib/grafaid/schema/schema.js.map +1 -1
- package/build/lib/kit-temp.js +2 -2
- package/build/lib/kit-temp.js.map +1 -1
- package/build/lib/react-router-aid/react-router-aid.d.ts +5 -3
- package/build/lib/react-router-aid/react-router-aid.d.ts.map +1 -1
- package/build/lib/react-router-aid/react-router-aid.js +7 -4
- package/build/lib/react-router-aid/react-router-aid.js.map +1 -1
- package/build/template/routes/changelog.js +2 -2
- package/build/template/routes/changelog.js.map +1 -1
- package/build/template/routes/index.js +2 -2
- package/build/template/routes/index.js.map +1 -1
- package/build/template/routes/pages.js +2 -2
- package/build/template/routes/pages.js.map +1 -1
- package/build/template/routes/reference.d.ts +27 -4
- package/build/template/routes/reference.d.ts.map +1 -1
- package/build/template/routes/reference.js +81 -20
- package/build/template/routes/reference.js.map +1 -1
- package/build/template/routes/root.js +3 -3
- package/build/template/routes/root.js.map +1 -1
- package/build/template/server/ssg/get-route-paths.d.ts.map +1 -1
- package/build/template/server/ssg/get-route-paths.js +42 -3
- package/build/template/server/ssg/get-route-paths.js.map +1 -1
- package/build/template/sources/schema-source.d.ts +1 -1
- package/build/template/sources/schema-source.d.ts.map +1 -1
- package/build/template/sources/schema-source.js +2 -1
- package/build/template/sources/schema-source.js.map +1 -1
- package/package.json +16 -17
- package/src/api/config/configurator.ts +35 -30
- package/src/api/config/merge.ts +0 -16
- package/src/api/content/metadata.ts +1 -1
- package/src/api/schema/data-sources/data-sources.ts +1 -0
- package/src/api/schema/data-sources/introspection/introspection.ts +213 -0
- package/src/api/schema/metadata.ts +1 -1
- package/src/api/schema/read.ts +107 -16
- package/src/api/schema-source/schema-source.ts +3 -3
- package/src/api/static/manifest.ts +1 -1
- package/src/api/vite/plugins/build.ts +3 -0
- package/src/api/vite/plugins/core.ts +8 -8
- package/src/api/vite/plugins/main.ts +1 -9
- package/src/api/vite/plugins/schema-assets.ts +59 -12
- package/src/cli/commands/open.ts +1 -1
- package/src/lib/grafaid/schema/schema.ts +1 -0
- package/src/lib/kit-temp.ts +2 -2
- package/src/lib/mask/$.test.ts +3 -3
- package/src/lib/react-router-aid/react-router-aid.ts +12 -6
- package/src/template/routes/changelog.tsx +2 -2
- package/src/template/routes/index.tsx +2 -2
- package/src/template/routes/pages.tsx +2 -2
- package/src/template/routes/reference.tsx +88 -20
- package/src/template/routes/root.tsx +3 -3
- package/src/template/server/ssg/get-route-paths.test.ts +132 -0
- package/src/template/server/ssg/get-route-paths.ts +41 -3
- package/src/template/sources/schema-source.ts +2 -1
- package/build/template/routes/reference.$type.$field.d.ts +0 -5
- package/build/template/routes/reference.$type.$field.d.ts.map +0 -1
- package/build/template/routes/reference.$type.$field.js +0 -31
- package/build/template/routes/reference.$type.$field.js.map +0 -1
- package/build/template/routes/reference.$type.d.ts +0 -9
- package/build/template/routes/reference.$type.d.ts.map +0 -1
- package/build/template/routes/reference.$type.js +0 -25
- package/build/template/routes/reference.$type.js.map +0 -1
- package/build/template/routes/reference.version.$version.$type.$field.d.ts +0 -6
- package/build/template/routes/reference.version.$version.$type.$field.d.ts.map +0 -1
- package/build/template/routes/reference.version.$version.$type.$field.js +0 -32
- package/build/template/routes/reference.version.$version.$type.$field.js.map +0 -1
- package/build/template/routes/reference.version.$version.$type.d.ts +0 -11
- package/build/template/routes/reference.version.$version.$type.d.ts.map +0 -1
- package/build/template/routes/reference.version.$version.$type.js +0 -26
- package/build/template/routes/reference.version.$version.$type.js.map +0 -1
- package/src/template/routes/reference.$type.$field.tsx +0 -34
- package/src/template/routes/reference.$type.tsx +0 -29
- package/src/template/routes/reference.version.$version.$type.$field.tsx +0 -35
- package/src/template/routes/reference.version.$version.$type.tsx +0 -30
@@ -28,25 +28,56 @@ export interface ConfigInput {
|
|
28
28
|
* - `file` - Load from a single SDL file (default: schema.graphql)
|
29
29
|
* - `directory` - Load multiple SDL files with date prefixes (enables changelog)
|
30
30
|
* - `memory` - Define schemas programmatically in configuration
|
31
|
+
* - `introspection` - Fetch schema from a GraphQL endpoint
|
32
|
+
* - `data` - Use pre-built schema objects
|
31
33
|
*
|
32
34
|
* @example
|
33
35
|
* ```ts
|
34
|
-
* //
|
36
|
+
* // Default: looks for schema.graphql
|
37
|
+
* schema: {}
|
38
|
+
*
|
39
|
+
* // Load via introspection
|
35
40
|
* schema: {
|
36
|
-
* useDataSources: 'file',
|
37
41
|
* dataSources: {
|
38
|
-
*
|
42
|
+
* introspection: {
|
43
|
+
* url: 'https://api.example.com/graphql',
|
44
|
+
* headers: { 'Authorization': `Bearer ${process.env.API_TOKEN}` }
|
45
|
+
* }
|
39
46
|
* }
|
40
47
|
* }
|
41
48
|
*
|
42
49
|
* // Multiple versions for changelog
|
43
50
|
* schema: {
|
44
|
-
* useDataSources: 'directory',
|
45
51
|
* dataSources: {
|
46
52
|
* directory: { path: './schema' }
|
47
53
|
* }
|
48
54
|
* }
|
55
|
+
*
|
56
|
+
* // Custom source order
|
57
|
+
* schema: {
|
58
|
+
* useDataSources: ['introspection', 'file'],
|
59
|
+
* dataSources: {
|
60
|
+
* introspection: { url: 'https://api.example.com/graphql' },
|
61
|
+
* file: { path: './fallback.graphql' }
|
62
|
+
* }
|
63
|
+
* }
|
49
64
|
* ```
|
65
|
+
*
|
66
|
+
* **Two introspection features**:
|
67
|
+
* 1. **File Convention**: Polen auto-detects `schema.introspection.json` files
|
68
|
+
* 2. **Config-driven**: Polen fetches and caches introspection for you
|
69
|
+
*
|
70
|
+
* **Interoperability**: The `schema.introspection.json` file uses the standard
|
71
|
+
* GraphQL introspection format, compatible with GraphQL Codegen, Apollo CLI, etc.
|
72
|
+
*
|
73
|
+
* **Lifecycle**:
|
74
|
+
* - First run: Fetches from endpoint, saves to `schema.introspection.json`
|
75
|
+
* - Subsequent runs: Loads from JSON file (no network request)
|
76
|
+
* - To refresh: Delete the JSON file
|
77
|
+
* - Runs during `polen dev` and `polen build`, never at runtime
|
78
|
+
*
|
79
|
+
* **Query details**: Uses the standard introspection query from the GraphQL spec
|
80
|
+
* @see https://spec.graphql.org/draft/#sec-Introspection
|
50
81
|
*/
|
51
82
|
schema?: SchemaConfigInput;
|
52
83
|
/**
|
@@ -237,22 +268,6 @@ export interface ConfigInput {
|
|
237
268
|
* @default false
|
238
269
|
*/
|
239
270
|
isSelfContainedMode?: boolean;
|
240
|
-
/**
|
241
|
-
* Tweak the watch behavior.
|
242
|
-
*/
|
243
|
-
watch?: {
|
244
|
-
/**
|
245
|
-
* Restart the development server when some arbitrary files change.
|
246
|
-
*
|
247
|
-
* Use this to restart when files that are not already watched by vite change.
|
248
|
-
*
|
249
|
-
* @see https://github.com/antfu/vite-plugin-restart
|
250
|
-
*/
|
251
|
-
/**
|
252
|
-
* File paths to watch and restart the development server when they change.
|
253
|
-
*/
|
254
|
-
also?: string[];
|
255
|
-
};
|
256
271
|
/**
|
257
272
|
* Whether to enable debug mode.
|
258
273
|
*
|
@@ -287,9 +302,6 @@ export interface Config {
|
|
287
302
|
assets: string;
|
288
303
|
};
|
289
304
|
};
|
290
|
-
watch: {
|
291
|
-
also: string[];
|
292
|
-
};
|
293
305
|
templateVariables: TemplateVariables;
|
294
306
|
schemaAugmentations: SchemaAugmentation.Augmentation[];
|
295
307
|
schema: null | SchemaConfigInput;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"configurator.d.ts","sourceRoot":"","sources":["../../../src/api/config/configurator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAE3C,OAAO,EAAE,KAAK,YAAY,EAAgB,MAAM,gBAAgB,CAAA;AAEhE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAA;AAChF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAEhD,eAAO,MAAM,qBAAqB;;;;CAIxB,CAAA;AAEV,eAAO,MAAM,iBAAiB;;;;EAAsC,CAAA;AAEpE,MAAM,MAAM,iBAAiB,GAAG,OAAO,qBAAqB,CAAC,MAAM,OAAO,qBAAqB,CAAC,CAAA;AAEhG,KAAK,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;AAE3D;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B
|
1
|
+
{"version":3,"file":"configurator.d.ts","sourceRoot":"","sources":["../../../src/api/config/configurator.ts"],"names":[],"mappings":"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"}
|
@@ -74,9 +74,6 @@ const configInputDefaults = {
|
|
74
74
|
title: `My Developer Portal`,
|
75
75
|
},
|
76
76
|
schemaAugmentations: [],
|
77
|
-
watch: {
|
78
|
-
also: [],
|
79
|
-
},
|
80
77
|
build: {
|
81
78
|
architecture: BuildArchitecture.enum.ssg,
|
82
79
|
base: `/`,
|
@@ -166,9 +163,6 @@ baseRootDirPath) => {
|
|
166
163
|
if (configInput?.advanced?.explorer !== undefined) {
|
167
164
|
config.advanced.explorer = configInput.advanced.explorer;
|
168
165
|
}
|
169
|
-
if (configInput?.advanced?.watch?.also) {
|
170
|
-
config.watch.also = configInput.advanced.watch.also;
|
171
|
-
}
|
172
166
|
if (configInput?.server?.port !== undefined) {
|
173
167
|
config.server.port = configInput.server.port;
|
174
168
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"configurator.js","sourceRoot":"","sources":["../../../src/api/config/configurator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAClD,OAAO,EAAqB,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAChE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAA;AAC1D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;CACF,CAAA;AAEV,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAA;
|
1
|
+
{"version":3,"file":"configurator.js","sourceRoot":"","sources":["../../../src/api/config/configurator.ts"],"names":[],"mappings":"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"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../../src/api/config/merge.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAEpD;;;GAGG;AACH,eAAO,MAAM,WAAW,GACtB,MAAM,WAAW,EACjB,YAAY,WAAW,GAAG,SAAS,KAClC,
|
1
|
+
{"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../../src/api/config/merge.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAEpD;;;GAGG;AACH,eAAO,MAAM,WAAW,GACtB,MAAM,WAAW,EACjB,YAAY,WAAW,GAAG,SAAS,KAClC,WAiDF,CAAA"}
|
@@ -32,17 +32,6 @@ export const mergeInputs = (base, overrides) => {
|
|
32
32
|
// Merge advanced config
|
33
33
|
if (base.advanced ?? overrides.advanced) {
|
34
34
|
merged.advanced = spreadShallow(base.advanced, overrides.advanced);
|
35
|
-
// Merge advanced.watch config
|
36
|
-
if (base.advanced?.watch ?? overrides.advanced?.watch) {
|
37
|
-
merged.advanced.watch = spreadShallow(base.advanced?.watch, overrides.advanced?.watch);
|
38
|
-
// Merge watch.also arrays
|
39
|
-
if (base.advanced?.watch?.also ?? overrides.advanced?.watch?.also) {
|
40
|
-
merged.advanced.watch.also = [
|
41
|
-
...(base.advanced?.watch?.also ?? []),
|
42
|
-
...(overrides.advanced?.watch?.also ?? []),
|
43
|
-
];
|
44
|
-
}
|
45
|
-
}
|
46
35
|
// Merge Vite configs if present
|
47
36
|
if (base.advanced?.vite ?? overrides.advanced?.vite) {
|
48
37
|
merged.advanced.vite = Vite.mergeConfig(base.advanced?.vite ?? {}, overrides.advanced?.vite ?? {});
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"merge.js","sourceRoot":"","sources":["../../../src/api/config/merge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAG7C;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,IAAiB,EACjB,SAAmC,EACtB,EAAE;IACf,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,MAAM,GAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;IAE1D,+BAA+B;IAC/B,IAAI,IAAI,CAAC,MAAM,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;QACpC,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAA;IACjD,CAAC;IAED,qBAAqB;IACrB,IAAI,IAAI,CAAC,KAAK,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;QAClC,MAAM,CAAC,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,CAAA;IAC3D,CAAC;IAED,sBAAsB;IACtB,IAAI,IAAI,CAAC,MAAM,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;QACpC,MAAM,CAAC,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,CAAA;IAC9D,CAAC;IAED,wBAAwB;IACxB,IAAI,IAAI,CAAC,QAAQ,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;QACxC,MAAM,CAAC,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAA;QAElE,wCAAwC;QACxC,IAAI,IAAI,CAAC,QAAQ,EAAE,wBAAwB,IAAI,SAAS,CAAC,QAAQ,EAAE,wBAAwB,EAAE,CAAC;YAC5F,MAAM,CAAC,QAAQ,CAAC,wBAAwB,GAAG,aAAa,CACtD,IAAI,CAAC,QAAQ,EAAE,wBAAwB,EACvC,SAAS,CAAC,QAAQ,EAAE,wBAAwB,CAC7C,CAAA;QACH,CAAC;IACH,CAAC;IAED,wBAAwB;IACxB,IAAI,IAAI,CAAC,QAAQ,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;QACxC,MAAM,CAAC,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAA;QAElE,
|
1
|
+
{"version":3,"file":"merge.js","sourceRoot":"","sources":["../../../src/api/config/merge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAG7C;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,IAAiB,EACjB,SAAmC,EACtB,EAAE;IACf,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,MAAM,GAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;IAE1D,+BAA+B;IAC/B,IAAI,IAAI,CAAC,MAAM,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;QACpC,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAA;IACjD,CAAC;IAED,qBAAqB;IACrB,IAAI,IAAI,CAAC,KAAK,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;QAClC,MAAM,CAAC,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,CAAA;IAC3D,CAAC;IAED,sBAAsB;IACtB,IAAI,IAAI,CAAC,MAAM,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;QACpC,MAAM,CAAC,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,CAAA;IAC9D,CAAC;IAED,wBAAwB;IACxB,IAAI,IAAI,CAAC,QAAQ,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;QACxC,MAAM,CAAC,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAA;QAElE,wCAAwC;QACxC,IAAI,IAAI,CAAC,QAAQ,EAAE,wBAAwB,IAAI,SAAS,CAAC,QAAQ,EAAE,wBAAwB,EAAE,CAAC;YAC5F,MAAM,CAAC,QAAQ,CAAC,wBAAwB,GAAG,aAAa,CACtD,IAAI,CAAC,QAAQ,EAAE,wBAAwB,EACvC,SAAS,CAAC,QAAQ,EAAE,wBAAwB,CAC7C,CAAA;QACH,CAAC;IACH,CAAC;IAED,wBAAwB;IACxB,IAAI,IAAI,CAAC,QAAQ,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;QACxC,MAAM,CAAC,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAA;QAElE,gCAAgC;QAChC,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;YACpD,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CACrC,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,EAAE,EACzB,SAAS,CAAC,QAAQ,EAAE,IAAI,IAAI,EAAE,CAC/B,CAAA;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC,CAAA"}
|
@@ -1,10 +1,16 @@
|
|
1
|
-
import { z } from 'zod
|
1
|
+
import { z } from 'zod';
|
2
2
|
/**
|
3
3
|
* Schema for validating front matter content
|
4
4
|
*/
|
5
5
|
export declare const MetadataSchema: z.ZodObject<{
|
6
6
|
description: z.ZodOptional<z.ZodString>;
|
7
7
|
hidden: z.ZodDefault<z.ZodBoolean>;
|
8
|
-
}, z.
|
8
|
+
}, "strip", z.ZodTypeAny, {
|
9
|
+
hidden: boolean;
|
10
|
+
description?: string | undefined;
|
11
|
+
}, {
|
12
|
+
description?: string | undefined;
|
13
|
+
hidden?: boolean | undefined;
|
14
|
+
}>;
|
9
15
|
export type Metadata = z.infer<typeof MetadataSchema>;
|
10
16
|
//# sourceMappingURL=metadata.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../../src/api/content/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,
|
1
|
+
{"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../../src/api/content/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;;;;;EAGzB,CAAA;AAEF,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAA"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../../src/api/content/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,
|
1
|
+
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../../src/api/content/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CACnC,CAAC,CAAA"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"data-sources.d.ts","sourceRoot":"","sources":["../../../../src/api/schema/data-sources/data-sources.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,oBAAoB,CAAA;AAC5C,OAAO,KAAK,eAAe,MAAM,wCAAwC,CAAA;AACzE,OAAO,KAAK,UAAU,MAAM,8BAA8B,CAAA"}
|
1
|
+
{"version":3,"file":"data-sources.d.ts","sourceRoot":"","sources":["../../../../src/api/schema/data-sources/data-sources.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,aAAa,MAAM,kCAAkC,CAAA;AACjE,OAAO,KAAK,MAAM,MAAM,oBAAoB,CAAA;AAC5C,OAAO,KAAK,eAAe,MAAM,wCAAwC,CAAA;AACzE,OAAO,KAAK,UAAU,MAAM,8BAA8B,CAAA"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"data-sources.js","sourceRoot":"","sources":["../../../../src/api/schema/data-sources/data-sources.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,oBAAoB,CAAA;AAC5C,OAAO,KAAK,eAAe,MAAM,wCAAwC,CAAA;AACzE,OAAO,KAAK,UAAU,MAAM,8BAA8B,CAAA"}
|
1
|
+
{"version":3,"file":"data-sources.js","sourceRoot":"","sources":["../../../../src/api/schema/data-sources/data-sources.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,aAAa,MAAM,kCAAkC,CAAA;AACjE,OAAO,KAAK,MAAM,MAAM,oBAAoB,CAAA;AAC5C,OAAO,KAAK,eAAe,MAAM,wCAAwC,CAAA;AACzE,OAAO,KAAK,UAAU,MAAM,8BAA8B,CAAA"}
|
@@ -0,0 +1,83 @@
|
|
1
|
+
import { Grafaid } from '#lib/grafaid/index';
|
2
|
+
import type { NonEmptyChangeSets, SchemaReadResult } from '../../schema.js';
|
3
|
+
/**
|
4
|
+
* Configuration for loading schema via GraphQL introspection.
|
5
|
+
*
|
6
|
+
* Polen supports two introspection features:
|
7
|
+
* 1. **File Convention**: Automatically detects `schema.introspection.json` if present
|
8
|
+
* 2. **Automatic Introspection**: Fetches from your endpoint and creates the file
|
9
|
+
*
|
10
|
+
* When configured, Polen will:
|
11
|
+
* - Execute the standard GraphQL introspection query against your endpoint
|
12
|
+
* - Save the result to `schema.introspection.json` in your project root
|
13
|
+
* - Use this cached file for subsequent builds (no network requests)
|
14
|
+
*
|
15
|
+
* The saved file contains a standard GraphQL introspection query result as defined
|
16
|
+
* in the GraphQL specification, making it compatible with any tool that works with
|
17
|
+
* introspection data (GraphQL Codegen, Apollo CLI, etc.).
|
18
|
+
*
|
19
|
+
* To refresh the schema, delete `schema.introspection.json` and rebuild.
|
20
|
+
*
|
21
|
+
* **Technical details**:
|
22
|
+
* - Uses Graffle's introspection extension
|
23
|
+
* - Performs the full introspection query (all types, fields, descriptions, etc.)
|
24
|
+
* - No customization of the query is currently supported
|
25
|
+
*
|
26
|
+
* @see https://spec.graphql.org/draft/#sec-Introspection - GraphQL Introspection spec
|
27
|
+
* @see https://github.com/graphql/graphql-js/blob/main/src/utilities/getIntrospectionQuery.ts - Reference implementation
|
28
|
+
*
|
29
|
+
* @example
|
30
|
+
* ```ts
|
31
|
+
* // Basic introspection
|
32
|
+
* introspection: {
|
33
|
+
* url: 'https://api.example.com/graphql'
|
34
|
+
* }
|
35
|
+
*
|
36
|
+
* // With authentication
|
37
|
+
* introspection: {
|
38
|
+
* url: 'https://api.example.com/graphql',
|
39
|
+
* headers: {
|
40
|
+
* 'Authorization': `Bearer ${process.env.API_TOKEN}`
|
41
|
+
* }
|
42
|
+
* }
|
43
|
+
* ```
|
44
|
+
*/
|
45
|
+
export interface ConfigInput {
|
46
|
+
/**
|
47
|
+
* The GraphQL endpoint URL to introspect.
|
48
|
+
*
|
49
|
+
* Must be a valid GraphQL endpoint that supports introspection queries.
|
50
|
+
*
|
51
|
+
* @example 'https://api.example.com/graphql'
|
52
|
+
*/
|
53
|
+
url?: string;
|
54
|
+
/**
|
55
|
+
* Optional headers to include in the introspection request.
|
56
|
+
*
|
57
|
+
* Use this for authentication, API keys, or any custom headers
|
58
|
+
* required by your GraphQL endpoint.
|
59
|
+
*
|
60
|
+
* @example
|
61
|
+
* ```ts
|
62
|
+
* headers: {
|
63
|
+
* 'Authorization': `Bearer ${process.env.API_TOKEN}`,
|
64
|
+
* 'X-API-Key': process.env.API_KEY
|
65
|
+
* }
|
66
|
+
* ```
|
67
|
+
*/
|
68
|
+
headers?: Record<string, string>;
|
69
|
+
projectRoot?: string;
|
70
|
+
}
|
71
|
+
export interface Config {
|
72
|
+
url: string;
|
73
|
+
headers?: Record<string, string>;
|
74
|
+
projectRoot: string;
|
75
|
+
}
|
76
|
+
export declare const normalizeConfig: (configInput: ConfigInput) => Config;
|
77
|
+
export declare const readOrThrow: (configInput: ConfigInput) => Promise<SchemaReadResult>;
|
78
|
+
/**
|
79
|
+
* Create a single changeset from a schema object.
|
80
|
+
* This is the core logic for handling single (unversioned) schemas from introspection.
|
81
|
+
*/
|
82
|
+
export declare const createSingleSchemaChangeset: (schema: Grafaid.Schema.Schema) => Promise<NonEmptyChangeSets>;
|
83
|
+
//# sourceMappingURL=introspection.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"introspection.d.ts","sourceRoot":"","sources":["../../../../../src/api/schema/data-sources/introspection/introspection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAK5C,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAE3E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;;;OAMG;IACH,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,MAAM;IACrB,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,eAAO,MAAM,eAAe,GAAI,aAAa,WAAW,KAAG,MAgB1D,CAAA;AAQD,eAAO,MAAM,WAAW,GACtB,aAAa,WAAW,KACvB,OAAO,CAAC,gBAAgB,CA+E1B,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,2BAA2B,GAAU,QAAQ,OAAO,CAAC,MAAM,CAAC,MAAM,KAAG,OAAO,CAAC,kBAAkB,CAmB3G,CAAA"}
|
@@ -0,0 +1,110 @@
|
|
1
|
+
import { Grafaid } from '#lib/grafaid/index';
|
2
|
+
import { GraphqlChange } from '#lib/graphql-change/index';
|
3
|
+
import { GraphqlSchemaLoader } from '#lib/graphql-schema-loader/index';
|
4
|
+
import { Fs, Json, Path } from '@wollybeard/kit';
|
5
|
+
export const normalizeConfig = (configInput) => {
|
6
|
+
if (!configInput.url) {
|
7
|
+
throw new Error(`Introspection data source requires a URL`);
|
8
|
+
}
|
9
|
+
if (!configInput.projectRoot) {
|
10
|
+
throw new Error(`Introspection data source requires a projectRoot`);
|
11
|
+
}
|
12
|
+
const config = {
|
13
|
+
url: configInput.url,
|
14
|
+
headers: configInput.headers,
|
15
|
+
projectRoot: configInput.projectRoot,
|
16
|
+
};
|
17
|
+
return config;
|
18
|
+
};
|
19
|
+
const INTROSPECTION_FILE_NAME = `schema.introspection.json`;
|
20
|
+
const getIntrospectionFilePath = (projectRoot) => {
|
21
|
+
return Path.join(projectRoot, INTROSPECTION_FILE_NAME);
|
22
|
+
};
|
23
|
+
export const readOrThrow = async (configInput) => {
|
24
|
+
const config = normalizeConfig(configInput);
|
25
|
+
const introspectionFilePath = getIntrospectionFilePath(config.projectRoot);
|
26
|
+
// Check if introspection file exists
|
27
|
+
const introspectionFileContent = await Fs.read(introspectionFilePath);
|
28
|
+
let schema;
|
29
|
+
if (introspectionFileContent) {
|
30
|
+
// Load from existing file - no reCreate capability
|
31
|
+
try {
|
32
|
+
const introspectionData = Json.codec.decode(introspectionFileContent);
|
33
|
+
// Validate introspection data structure before passing to fromIntrospectionQuery
|
34
|
+
if (!introspectionData || typeof introspectionData !== 'object') {
|
35
|
+
throw new Error('Introspection data must be a valid JSON object');
|
36
|
+
}
|
37
|
+
// Allow fromIntrospectionQuery to handle validation of the introspection format
|
38
|
+
// It will provide more specific GraphQL-related error messages
|
39
|
+
if (!('data' in introspectionData)) {
|
40
|
+
throw new Error('Introspection data missing required "data" property (expected GraphQL introspection result format)');
|
41
|
+
}
|
42
|
+
schema = Grafaid.Schema.fromIntrospectionQuery(introspectionData);
|
43
|
+
}
|
44
|
+
catch (error) {
|
45
|
+
if (error instanceof SyntaxError) {
|
46
|
+
throw new Error(`Invalid JSON in ${introspectionFilePath}: ${error.message}`);
|
47
|
+
}
|
48
|
+
else {
|
49
|
+
throw new Error(`Invalid introspection data in ${introspectionFilePath}: ${error instanceof Error ? error.message : String(error)}. Delete this file to fetch fresh introspection data.`);
|
50
|
+
}
|
51
|
+
}
|
52
|
+
const schemaData = await createSingleSchemaChangeset(schema);
|
53
|
+
return {
|
54
|
+
data: schemaData,
|
55
|
+
source: { type: 'introspectionFile' },
|
56
|
+
};
|
57
|
+
}
|
58
|
+
else {
|
59
|
+
// Fetch via introspection - can reCreate
|
60
|
+
const introspectionResult = await GraphqlSchemaLoader.load({
|
61
|
+
type: `introspect`,
|
62
|
+
url: config.url,
|
63
|
+
headers: config.headers,
|
64
|
+
});
|
65
|
+
schema = introspectionResult;
|
66
|
+
// Get the raw introspection result for saving
|
67
|
+
const __schema = Grafaid.Schema.toIntrospectionQuery(schema);
|
68
|
+
// Wrap in GraphQL response format for consistency with API responses
|
69
|
+
const introspectionData = { data: { __schema } };
|
70
|
+
// Write to file
|
71
|
+
await Fs.write({
|
72
|
+
path: introspectionFilePath,
|
73
|
+
content: Json.codec.encode(introspectionData),
|
74
|
+
});
|
75
|
+
const schemaData = await createSingleSchemaChangeset(schema);
|
76
|
+
return {
|
77
|
+
data: schemaData,
|
78
|
+
source: {
|
79
|
+
type: 'introspectionAuto',
|
80
|
+
reCreate: async () => {
|
81
|
+
// Re-fetch using captured config - capture closure
|
82
|
+
const result = await readOrThrow(configInput);
|
83
|
+
return result.data;
|
84
|
+
},
|
85
|
+
},
|
86
|
+
};
|
87
|
+
}
|
88
|
+
};
|
89
|
+
/**
|
90
|
+
* Create a single changeset from a schema object.
|
91
|
+
* This is the core logic for handling single (unversioned) schemas from introspection.
|
92
|
+
*/
|
93
|
+
export const createSingleSchemaChangeset = async (schema) => {
|
94
|
+
const date = new Date(); // Generate date here for unversioned schema
|
95
|
+
const after = schema;
|
96
|
+
const before = Grafaid.Schema.empty;
|
97
|
+
const changes = await GraphqlChange.calcChangeset({
|
98
|
+
before,
|
99
|
+
after,
|
100
|
+
});
|
101
|
+
const changeset = {
|
102
|
+
date,
|
103
|
+
after,
|
104
|
+
before,
|
105
|
+
changes,
|
106
|
+
};
|
107
|
+
const result = [changeset];
|
108
|
+
return result;
|
109
|
+
};
|
110
|
+
//# sourceMappingURL=introspection.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"introspection.js","sourceRoot":"","sources":["../../../../../src/api/schema/data-sources/introspection/introspection.ts"],"names":[],"mappings":"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"}
|
@@ -1,8 +1,16 @@
|
|
1
|
-
import { z } from 'zod
|
1
|
+
import { z } from 'zod';
|
2
2
|
export declare const SchemaMetadataSchema: z.ZodObject<{
|
3
|
+
/** Whether a schema is present in the project */
|
3
4
|
hasSchema: z.ZodBoolean;
|
4
|
-
|
5
|
-
|
5
|
+
/** Array of available version identifiers */
|
6
|
+
versions: z.ZodArray<z.ZodString, "many">;
|
7
|
+
}, "strip", z.ZodTypeAny, {
|
8
|
+
hasSchema: boolean;
|
9
|
+
versions: string[];
|
10
|
+
}, {
|
11
|
+
hasSchema: boolean;
|
12
|
+
versions: string[];
|
13
|
+
}>;
|
6
14
|
export type SchemaMetadata = z.infer<typeof SchemaMetadataSchema>;
|
7
15
|
export declare const getMetadata: (path: string) => Promise<SchemaMetadata>;
|
8
16
|
//# sourceMappingURL=metadata.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../../src/api/schema/metadata.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,
|
1
|
+
{"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../../src/api/schema/metadata.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,eAAO,MAAM,oBAAoB;IAC/B,iDAAiD;;IAEjD,6CAA6C;;;;;;;;EAE7C,CAAA;AAEF,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAA;AAEjE,eAAO,MAAM,WAAW,GAAU,MAAM,MAAM,KAAG,OAAO,CAAC,cAAc,CAUtE,CAAA"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../../src/api/schema/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAA;AACpC,OAAO,EAAE,CAAC,EAAE,MAAM,
|
1
|
+
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../../src/api/schema/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAA;AACpC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,iDAAiD;IACjD,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE;IACtB,6CAA6C;IAC7C,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CAC9B,CAAC,CAAA;AAIF,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,EAAE,IAAY,EAA2B,EAAE;IACzE,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IACtC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO;YACL,SAAS,EAAE,KAAK;YAChB,QAAQ,EAAE,EAAE;SACb,CAAA;IACH,CAAC;IAED,OAAO,oBAAoB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;AAC3C,CAAC,CAAA"}
|
@@ -1,36 +1,94 @@
|
|
1
1
|
import { Arr } from '@wollybeard/kit';
|
2
2
|
import * as DataSources from './data-sources/data-sources.js';
|
3
3
|
import type { NonEmptyChangeSets } from './schema.js';
|
4
|
-
export type DataSourceType = `file` | `directory` | `memory` | `data`;
|
4
|
+
export type DataSourceType = `file` | `directory` | `memory` | `data` | `introspection` | `introspectionFile` | `introspectionAuto`;
|
5
|
+
/**
|
6
|
+
* Result of schema reading with provenance tracking for file watching and debugging.
|
7
|
+
*/
|
8
|
+
export interface SchemaReadResult {
|
9
|
+
data: NonEmptyChangeSets | null;
|
10
|
+
source: {
|
11
|
+
type: DataSourceType;
|
12
|
+
/**
|
13
|
+
* Recreate the schema data and file after it has been deleted.
|
14
|
+
*
|
15
|
+
* This function re-fetches data from the original source and recreates
|
16
|
+
* the schema file on disk. Only called by file watchers after deletion.
|
17
|
+
*
|
18
|
+
* @returns Promise resolving to the recreated schema data, or null if recreation fails
|
19
|
+
*/
|
20
|
+
reCreate?: () => Promise<NonEmptyChangeSets | null>;
|
21
|
+
};
|
22
|
+
}
|
5
23
|
/**
|
6
24
|
* Schema configuration for Polen.
|
25
|
+
*
|
26
|
+
* Polen supports multiple ways to load your GraphQL schema, from simple files
|
27
|
+
* to dynamic introspection. Configure which sources to use and in what order.
|
28
|
+
*
|
29
|
+
* @example
|
30
|
+
* ```ts
|
31
|
+
* // Load from a file (default)
|
32
|
+
* schema: {} // Looks for schema.graphql
|
33
|
+
*
|
34
|
+
* // Load via introspection
|
35
|
+
* schema: {
|
36
|
+
* dataSources: {
|
37
|
+
* introspection: {
|
38
|
+
* url: 'https://api.example.com/graphql',
|
39
|
+
* headers: { 'Authorization': 'Bearer token' }
|
40
|
+
* }
|
41
|
+
* }
|
42
|
+
* }
|
43
|
+
*
|
44
|
+
* // Try multiple sources in order
|
45
|
+
* schema: {
|
46
|
+
* useDataSources: ['introspection', 'file'],
|
47
|
+
* dataSources: {
|
48
|
+
* introspection: { url: 'https://api.example.com/graphql' },
|
49
|
+
* file: { path: './fallback-schema.graphql' }
|
50
|
+
* }
|
51
|
+
* }
|
52
|
+
* ```
|
7
53
|
*/
|
8
54
|
export interface Config {
|
9
55
|
/**
|
10
56
|
* Whether to enable schema loading.
|
11
57
|
*
|
12
|
-
* Set to `false` to disable schema features entirely.
|
58
|
+
* Set to `false` to disable schema features entirely. This removes
|
59
|
+
* the Reference and Changelog pages from your portal.
|
60
|
+
*
|
61
|
+
* @default true
|
13
62
|
*
|
14
|
-
* @
|
63
|
+
* @example
|
64
|
+
* ```ts
|
65
|
+
* // Disable schema features
|
66
|
+
* schema: { enabled: false }
|
67
|
+
* ```
|
15
68
|
*/
|
16
69
|
enabled?: boolean;
|
17
70
|
/**
|
18
71
|
* Which data sources to use for loading schemas.
|
19
72
|
*
|
20
|
-
* - `file` - Load from a single SDL file
|
21
|
-
* - `directory` - Load multiple SDL files from a directory
|
73
|
+
* - `file` - Load from a single SDL file (default: `./schema.graphql`)
|
74
|
+
* - `directory` - Load multiple SDL files from a directory (default: `./schema/`)
|
22
75
|
* - `memory` - Use schemas defined in configuration
|
23
76
|
* - `data` - Use a pre-built schema object
|
77
|
+
* - `introspection` - Load schema via GraphQL introspection
|
24
78
|
*
|
25
|
-
* If not specified, Polen
|
79
|
+
* If not specified, Polen tries all sources in this order:
|
80
|
+
* 1. `data` 2. `directory` 3. `file` 4. `memory` 5. `introspection`
|
26
81
|
*
|
27
82
|
* @example
|
28
83
|
* ```ts
|
29
84
|
* // Use only file source
|
30
85
|
* useDataSources: 'file'
|
31
86
|
*
|
32
|
-
* // Try multiple sources
|
33
|
-
* useDataSources: ['
|
87
|
+
* // Try multiple sources in custom order
|
88
|
+
* useDataSources: ['introspection', 'file']
|
89
|
+
*
|
90
|
+
* // Default behavior (try all sources)
|
91
|
+
* // useDataSources: undefined
|
34
92
|
* ```
|
35
93
|
*/
|
36
94
|
useDataSources?: Arr.Maybe<DataSourceType>;
|
@@ -54,8 +112,24 @@ export interface Config {
|
|
54
112
|
* Pre-built schema object to use directly.
|
55
113
|
*/
|
56
114
|
data?: NonEmptyChangeSets;
|
115
|
+
/**
|
116
|
+
* Configuration for loading schema via GraphQL introspection.
|
117
|
+
*
|
118
|
+
* Introspection fetches your schema directly from a running GraphQL endpoint.
|
119
|
+
* The schema is saved to `schema.introspection.json` in your project root.
|
120
|
+
* Delete this file to force a fresh introspection on the next build.
|
121
|
+
*
|
122
|
+
* @example
|
123
|
+
* ```ts
|
124
|
+
* introspection: {
|
125
|
+
* url: 'https://api.example.com/graphql',
|
126
|
+
* headers: { 'Authorization': 'Bearer token' }
|
127
|
+
* }
|
128
|
+
* ```
|
129
|
+
*/
|
130
|
+
introspection?: DataSources.Introspection.ConfigInput;
|
57
131
|
};
|
58
132
|
projectRoot: string;
|
59
133
|
}
|
60
|
-
export declare const readOrThrow: (config: Config) => Promise<
|
134
|
+
export declare const readOrThrow: (config: Config) => Promise<SchemaReadResult>;
|
61
135
|
//# sourceMappingURL=read.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../../src/api/schema/read.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,
|
1
|
+
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../../src/api/schema/read.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAY,MAAM,iBAAiB,CAAA;AAC/C,OAAO,KAAK,WAAW,MAAM,gCAAgC,CAAA;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAErD,MAAM,MAAM,cAAc,GACtB,MAAM,GACN,WAAW,GACX,QAAQ,GACR,MAAM,GACN,eAAe,GACf,mBAAmB,GACnB,mBAAmB,CAAA;AAEvB;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,kBAAkB,GAAG,IAAI,CAAA;IAC/B,MAAM,EAAE;QACN,IAAI,EAAE,cAAc,CAAA;QACpB;;;;;;;WAOG;QACH,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAA;KACpD,CAAA;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,WAAW,MAAM;IACrB;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,cAAc,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,CAAA;IAC1C;;OAEG;IACH,WAAW,CAAC,EAAE;QACZ;;WAEG;QACH,IAAI,CAAC,EAAE,WAAW,CAAC,UAAU,CAAC,WAAW,CAAA;QACzC;;WAEG;QACH,SAAS,CAAC,EAAE,WAAW,CAAC,eAAe,CAAC,WAAW,CAAA;QACnD;;WAEG;QACH,MAAM,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,WAAW,CAAA;QACvC;;WAEG;QACH,IAAI,CAAC,EAAE,kBAAkB,CAAA;QACzB;;;;;;;;;;;;;;WAcG;QACH,aAAa,CAAC,EAAE,WAAW,CAAC,aAAa,CAAC,WAAW,CAAA;KACtD,CAAA;IACD,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,eAAO,MAAM,WAAW,GACtB,QAAQ,MAAM,KACb,OAAO,CAAC,gBAAgB,CAiD1B,CAAA"}
|