@gtkx/config 2.0.0-beta.10 → 2.0.0-beta.12
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 +11 -169
- package/dist/builtin-elements.d.ts +11 -0
- package/dist/builtin-elements.d.ts.map +1 -0
- package/dist/builtin-elements.js +329 -0
- package/dist/builtin-elements.js.map +1 -0
- package/dist/config-dependencies.d.ts +5 -3
- package/dist/config-dependencies.d.ts.map +1 -1
- package/dist/config-dependencies.js +57 -24
- package/dist/config-dependencies.js.map +1 -1
- package/dist/config-error.d.ts.map +1 -1
- package/dist/config-error.js.map +1 -1
- package/dist/config-reloader.d.ts +8 -0
- package/dist/config-reloader.d.ts.map +1 -0
- package/dist/config-reloader.js +32 -0
- package/dist/config-reloader.js.map +1 -0
- package/dist/config-source.d.ts +9 -0
- package/dist/config-source.d.ts.map +1 -0
- package/dist/config-source.js +32 -0
- package/dist/config-source.js.map +1 -0
- package/dist/config.d.ts +63 -29
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +72 -12
- package/dist/config.js.map +1 -1
- package/dist/deploy.d.ts +67 -13
- package/dist/deploy.d.ts.map +1 -1
- package/dist/deploy.js +169 -12
- package/dist/deploy.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/internal.d.ts +5 -3
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +5 -3
- package/dist/internal.js.map +1 -1
- package/dist/loader.d.ts +3 -1
- package/dist/loader.d.ts.map +1 -1
- package/dist/loader.js +18 -35
- package/dist/loader.js.map +1 -1
- package/dist/node-version.d.ts +2 -1
- package/dist/node-version.d.ts.map +1 -1
- package/dist/node-version.js +2 -1
- package/dist/node-version.js.map +1 -1
- package/dist/resource-base-path.d.ts.map +1 -1
- package/dist/schema-text.d.ts.map +1 -1
- package/dist/user-event-signals.d.ts.map +1 -1
- package/dist/virtual.d.ts +1 -1
- package/dist/virtual.d.ts.map +1 -1
- package/dist/virtual.js +3 -4
- package/dist/virtual.js.map +1 -1
- package/dist/vite-plugin.d.ts +2 -0
- package/dist/vite-plugin.d.ts.map +1 -1
- package/dist/vite-plugin.js +4 -3
- package/dist/vite-plugin.js.map +1 -1
- package/dist/vite-root.d.ts.map +1 -1
- package/package.json +15 -16
- package/src/builtin-elements.ts +338 -0
- package/src/config-dependencies.ts +65 -29
- package/src/config-error.ts +5 -3
- package/src/config-reloader.ts +45 -0
- package/src/config-source.ts +48 -0
- package/src/config.ts +87 -18
- package/src/deploy.ts +207 -29
- package/src/index.ts +9 -2
- package/src/internal.ts +5 -2
- package/src/loader.ts +27 -52
- package/src/node-version.ts +2 -1
- package/src/virtual.ts +5 -6
- package/src/vite-plugin.ts +9 -4
package/dist/config.js
CHANGED
|
@@ -14,8 +14,7 @@ const COMPILATION_MODES = ["infer", "syntax", "annotation", "all"];
|
|
|
14
14
|
/** Panic thresholds `babel-plugin-react-compiler` accepts. */
|
|
15
15
|
const PANIC_THRESHOLDS = ["none", "critical_errors", "all_errors"];
|
|
16
16
|
const REACT_COMPILER_TARGET = "19";
|
|
17
|
-
const librarySchema = girLibrary('must be of the form "Name-Version", such as "Adw-1"')
|
|
18
|
-
.refine((library) => !IMPLICIT_LIBRARIES.has(library), { error: "is bound implicitly; remove it" });
|
|
17
|
+
const librarySchema = girLibrary('must be of the form "Name-Version", such as "Adw-1"').refine((library) => !IMPLICIT_LIBRARIES.has(library), { error: "is bound implicitly; remove it" });
|
|
19
18
|
const librariesSchema = z
|
|
20
19
|
.array(librarySchema, { error: "must be a non-empty string array or omitted" })
|
|
21
20
|
.min(1, { error: "must be a non-empty string array or omitted" });
|
|
@@ -26,45 +25,83 @@ const applicationIdSchema = z
|
|
|
26
25
|
});
|
|
27
26
|
const reactCompilerSchema = z.union([
|
|
28
27
|
z.boolean(),
|
|
29
|
-
z.
|
|
28
|
+
z.strictObject({
|
|
29
|
+
/** Which functions the React Compiler processes. */
|
|
30
30
|
compilationMode: z.enum(COMPILATION_MODES).optional(),
|
|
31
|
+
/** Which React Compiler diagnostics fail the build. */
|
|
31
32
|
panicThreshold: z.enum(PANIC_THRESHOLDS).optional(),
|
|
32
33
|
}),
|
|
33
34
|
]);
|
|
34
35
|
const userEventSignalsSchema = z.record(z.string(), z.array(z.string({ error: "must be a non-empty signal name" }).min(1, { error: "must be a non-empty signal name" }), {
|
|
35
36
|
error: "must be an array of signal names",
|
|
36
37
|
}), { error: "must be a record of GLib type names to signal name arrays" });
|
|
37
|
-
const moduleExportSchema = z.
|
|
38
|
+
const moduleExportSchema = z.strictObject({
|
|
39
|
+
/** Module specifier containing the named export. */
|
|
38
40
|
module: z.string({ error: "must be a module specifier" }).min(1, { error: "must be a module specifier" }),
|
|
41
|
+
/** Name of the export to import from the module. */
|
|
39
42
|
export: z.string({ error: "must be an export name" }).min(1, { error: "must be an export name" }),
|
|
40
43
|
}, { error: "must be a { module, export } object" });
|
|
41
|
-
const
|
|
44
|
+
const elementPropsSchema = moduleExportSchema.extend({
|
|
45
|
+
/**
|
|
46
|
+
* How the exported props are combined: `intersection` is inherited; `factory` applies only to this type.
|
|
47
|
+
* Defaults to `intersection`.
|
|
48
|
+
*/
|
|
49
|
+
composition: z.enum(["factory", "intersection"]).optional(),
|
|
50
|
+
/** Props that can only be set when the element is created; changing them afterward throws. */
|
|
51
|
+
constructOnly: z.array(z.string()).optional(),
|
|
52
|
+
});
|
|
53
|
+
/** Schema for one element override and the source of {@link ElementConfigOptions}. */
|
|
54
|
+
const elementConfigSchema = z.strictObject({
|
|
55
|
+
/** Component export that wraps the generated element. */
|
|
42
56
|
component: moduleExportSchema.optional(),
|
|
43
|
-
props
|
|
57
|
+
/** Additional props type to combine with the generated element props. */
|
|
58
|
+
props: elementPropsSchema.optional(),
|
|
59
|
+
/** Whether the parent container creates this element's GObject instead of the element constructing its own. */
|
|
44
60
|
isLazy: z.boolean({ error: "must be a boolean" }).optional(),
|
|
61
|
+
/** Accepted child GLib type names to show in the generated element documentation. */
|
|
62
|
+
acceptedChildTypes: z.array(z.string()).optional(),
|
|
63
|
+
/** GObject properties to leave out of generated props, such as properties managed by an element behavior. */
|
|
45
64
|
omittedProps: z
|
|
46
65
|
.array(z.string({ error: "must be a non-empty property name" }).min(1, {
|
|
47
66
|
error: "must be a non-empty property name",
|
|
48
67
|
}), { error: "must be an array of property names" })
|
|
49
68
|
.optional(),
|
|
50
69
|
});
|
|
51
|
-
const elementsSchema = z.
|
|
70
|
+
const elementsSchema = z.strictObject({
|
|
71
|
+
/** Path, relative to the project root, of the module exporting the element behavior map. */
|
|
52
72
|
behaviors: z
|
|
53
73
|
.string({ error: "must be a path to a module exporting element behaviors" })
|
|
54
74
|
.min(1, { error: "must be a path to a module exporting element behaviors" })
|
|
55
75
|
.optional(),
|
|
76
|
+
/**
|
|
77
|
+
* Element configuration overrides keyed by GLib type name, such as `GtkWidget`.
|
|
78
|
+
* @see {@link ElementConfigOptions} for the fields accepted by each entry.
|
|
79
|
+
*/
|
|
56
80
|
config: z.record(z.string(), elementConfigSchema).optional(),
|
|
57
81
|
});
|
|
58
|
-
const agentsSchema = z.
|
|
82
|
+
const agentsSchema = z.strictObject({
|
|
83
|
+
/**
|
|
84
|
+
* Whether codegen maintains the GTKX rules in `AGENTS.md` and creates a missing `CLAUDE.md` import.
|
|
85
|
+
* Defaults to `true`.
|
|
86
|
+
*/
|
|
59
87
|
rules: z.boolean({ error: "must be a boolean" }).optional(),
|
|
88
|
+
/** Whether codegen writes the generated element reference to `.gtkx/reference`. Defaults to `true`. */
|
|
60
89
|
reference: z.boolean({ error: "must be a boolean" }).optional(),
|
|
61
90
|
});
|
|
62
|
-
const mcpSchema = z.
|
|
91
|
+
const mcpSchema = z.strictObject({
|
|
92
|
+
/**
|
|
93
|
+
* Tool name patterns applied in order: `*` matches any text and a leading `!` excludes matches.
|
|
94
|
+
* Omitted, empty, or exclusion-only lists start with all tools; other lists start with none.
|
|
95
|
+
*/
|
|
63
96
|
tools: z
|
|
64
97
|
.array(z.string({ error: "must be a tool name pattern" }).min(1, { error: "must be a tool name pattern" }), {
|
|
65
98
|
error: "must be an array of tool name patterns",
|
|
66
99
|
})
|
|
67
100
|
.optional(),
|
|
101
|
+
/**
|
|
102
|
+
* Whether the MCP server exposes only inspection and reference tools, excluding app interactions.
|
|
103
|
+
* Defaults to `false`.
|
|
104
|
+
*/
|
|
68
105
|
readOnly: z.boolean({ error: "must be a boolean" }).optional(),
|
|
69
106
|
});
|
|
70
107
|
const graduatedFutureSchema = z
|
|
@@ -78,7 +115,8 @@ const graduatedFutureSchema = z
|
|
|
78
115
|
v2TreeShaking: z.literal(true, { error: "can only be true; remove the flag" }).optional(),
|
|
79
116
|
})
|
|
80
117
|
.strict();
|
|
81
|
-
const deprecationsSchema = z.
|
|
118
|
+
const deprecationsSchema = z.strictObject({
|
|
119
|
+
/** Deprecation identifiers whose warnings are suppressed. There are currently no accepted identifiers. */
|
|
82
120
|
silence: z
|
|
83
121
|
.array(z.never({ error: "does not name a current deprecation" }), {
|
|
84
122
|
error: "must be an array of current deprecation ids",
|
|
@@ -86,18 +124,39 @@ const deprecationsSchema = z.object({
|
|
|
86
124
|
.optional(),
|
|
87
125
|
});
|
|
88
126
|
/** Schema every `gtkx.config.ts` is validated against, and the source of the {@link Config} type. */
|
|
89
|
-
const configSchema = z.
|
|
127
|
+
const configSchema = z.strictObject({
|
|
128
|
+
/**
|
|
129
|
+
* Additional GIR libraries to bind, such as `WebKit-6.0`.
|
|
130
|
+
* Adwaita and GTK are included implicitly and must not be listed.
|
|
131
|
+
*/
|
|
90
132
|
libraries: librariesSchema.optional(),
|
|
133
|
+
/** Additional GIR search directories. Relative paths are resolved from the project root. */
|
|
91
134
|
girPath: z.array(z.string(), { error: "must be an array of strings if provided" }).optional(),
|
|
135
|
+
/** Required GApplication identifier, such as `com.example.Tasks`. */
|
|
92
136
|
applicationId: applicationIdSchema,
|
|
137
|
+
/** Whether to enable the React Compiler, or options passed to it. Enabled by default. */
|
|
93
138
|
reactCompiler: reactCompilerSchema.optional(),
|
|
139
|
+
/**
|
|
140
|
+
* Whether GTKX generates project bindings. Set to `false` to reuse an installed binding store.
|
|
141
|
+
* Defaults to `true`.
|
|
142
|
+
*/
|
|
94
143
|
codegen: z.boolean({ error: "must be a boolean" }).optional(),
|
|
144
|
+
/**
|
|
145
|
+
* Additional signals to suppress during React property updates, keyed by GLib type name.
|
|
146
|
+
* Entries extend the built-in signal lists.
|
|
147
|
+
*/
|
|
95
148
|
userEventSignals: userEventSignalsSchema.optional(),
|
|
149
|
+
/** Custom element behaviors and overrides for generated components, props, and documentation. */
|
|
96
150
|
elements: elementsSchema.optional(),
|
|
151
|
+
/** Path to an icon theme directory or a single application icon file, relative to the project root. */
|
|
97
152
|
applicationIcon: text("must be a path to an icon theme directory or a single icon file").optional(),
|
|
153
|
+
/** Application metadata, bundled runtime settings, and packaging options used by `gtkx deploy`. */
|
|
98
154
|
deploy: deploySchema.optional(),
|
|
155
|
+
/** Controls the project instructions and reference files generated for coding agents. */
|
|
99
156
|
agents: agentsSchema.optional(),
|
|
157
|
+
/** Default tool selection and access mode for the project's MCP server. Command-line flags take precedence. */
|
|
100
158
|
mcp: mcpSchema.optional(),
|
|
159
|
+
/** Controls warnings for deprecated configuration and behavior. */
|
|
101
160
|
deprecations: deprecationsSchema.optional(),
|
|
102
161
|
});
|
|
103
162
|
/**
|
|
@@ -150,6 +209,7 @@ const elementEntryValues = (elements, pick) => Object.fromEntries(Object.entries
|
|
|
150
209
|
}));
|
|
151
210
|
const resolveElementComponents = (elements) => elementEntryValues(elements, (entry) => entry.component);
|
|
152
211
|
const resolveElementProps = (elements) => elementEntryValues(elements, (entry) => entry.props);
|
|
212
|
+
const resolveAcceptedChildTypes = (elements) => elementEntryValues(elements, (entry) => entry.acceptedChildTypes);
|
|
153
213
|
const resolveOmittedProps = (elements) => elementEntryValues(elements, (entry) => entry.omittedProps);
|
|
154
214
|
const isAgentRulesEnabled = (config) => config.agents?.rules !== false;
|
|
155
215
|
const isAgentReferenceEnabled = (config) => config.agents?.reference !== false;
|
|
@@ -164,5 +224,5 @@ const resolveConfig = (config, root) => ({
|
|
|
164
224
|
elements: resolveElementsModule(config.elements?.behaviors, root),
|
|
165
225
|
lazyElements: resolveLazyElements(config.elements),
|
|
166
226
|
});
|
|
167
|
-
export { APPLICATION_ID_MAX_LENGTH, defineConfig, isAgentReferenceEnabled, isAgentRulesEnabled, isValidApplicationId, graduatedFutureKeys, validateConfig, mergeConfig, resolveLazyElements, resolveElementComponents, resolveElementProps, resolveMcpSettings, resolveOmittedProps, resolveConfig, };
|
|
227
|
+
export { APPLICATION_ID_MAX_LENGTH, defineConfig, isAgentReferenceEnabled, isAgentRulesEnabled, isValidApplicationId, graduatedFutureKeys, validateConfig, mergeConfig, resolveLazyElements, resolveElementComponents, resolveElementProps, resolveAcceptedChildTypes, resolveMcpSettings, resolveOmittedProps, resolveConfig, };
|
|
168
228
|
//# sourceMappingURL=config.js.map
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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","sourcesContent":["import { createDefineConfig, type DefineConfig } from \"c12\";\nimport { defu } from \"defu\";\nimport { resolve } from \"node:path\";\nimport { z } from \"zod\";\nimport { configError, isRecord } from \"./config-error.ts\";\nimport { deploySchema } from \"./deploy.ts\";\nimport { girLibrary, text } from \"./schema-text.ts\";\nimport { resolveUserEventSignals } from \"./user-event-signals.ts\";\n\n/** Object form of the `reactCompiler` config key, forwarded to `babel-plugin-react-compiler`. */\ntype ReactCompilerOptions = {\n /** Which functions the compiler processes. */\n compilationMode?: (typeof COMPILATION_MODES)[number];\n /** Which compiler diagnostics fail the build. */\n panicThreshold?: (typeof PANIC_THRESHOLDS)[number];\n};\n\n/**\n * The React Compiler options the build hands to `babel-plugin-react-compiler`, with the React version\n * GTKX targets filled in.\n */\ntype ResolvedReactCompilerOptions = ReactCompilerOptions & {\n /** React major version the compiler emits for. */\n target: \"19\";\n};\n\n/**\n * User-facing configuration for a GTKX project, as authored in `gtkx.config.ts`: the GIR libraries\n * to bind and where to find them, the GApplication id, per-element configuration, the React\n * Compiler, codegen, and user event signal settings, and the `agents` and `mcp` blocks controlling\n * what coding agents are given.\n */\ntype Config = z.infer<typeof configSchema>;\ntype ModuleExport = z.infer<typeof moduleExportSchema>;\ntype ElementConfigEntry = z.infer<typeof elementConfigSchema>;\n\ntype McpSettings = {\n tools: string[];\n isReadOnly: boolean;\n};\n\n/** Configuration reduced to the values the app runtime and the build need, with paths already resolved. */\ntype ResolvedConfig = {\n /** The GApplication identifier the app registers under. */\n applicationId: string;\n /** React Compiler options for the build, or `null` when the compiler is disabled. */\n reactCompiler: ResolvedReactCompilerOptions | null;\n /**\n * Signal names, keyed by GLib type name, that stay suppressed while a React commit writes to a widget.\n * `notify` stays suppressed only for the property being written.\n */\n userEventSignals: Record<string, string[]>;\n /** Path of the module exporting per-element configs, or `null` when none is configured. */\n elements: string | null;\n /** GLib type names of the elements marked `isLazy`, whose GObject their parent container creates. */\n lazyElements: string[];\n};\n\nconst APPLICATION_ID_PATTERN = /^[A-Za-z_][A-Za-z0-9_-]*(\\.[A-Za-z_][A-Za-z0-9_-]*)+$/;\nconst APPLICATION_ID_MAX_LENGTH = 255;\nconst IMPLICIT_LIBRARIES: Set<string> = new Set([\"Adw-1\", \"Gtk-4.0\"]);\n/** Compilation modes `babel-plugin-react-compiler` accepts. */\nconst COMPILATION_MODES = [\"infer\", \"syntax\", \"annotation\", \"all\"] as const;\n/** Panic thresholds `babel-plugin-react-compiler` accepts. */\nconst PANIC_THRESHOLDS = [\"none\", \"critical_errors\", \"all_errors\"] as const;\nconst REACT_COMPILER_TARGET = \"19\";\n\nconst librarySchema = girLibrary('must be of the form \"Name-Version\", such as \"Adw-1\"')\n .refine((library) => !IMPLICIT_LIBRARIES.has(library), { error: \"is bound implicitly; remove it\" });\n\nconst librariesSchema = z\n .array(librarySchema, { error: \"must be a non-empty string array or omitted\" })\n .min(1, { error: \"must be a non-empty string array or omitted\" });\n\nconst applicationIdSchema = z\n .string({ error: \"must satisfy g_application_id_is_valid\" })\n .refine((value) => isValidApplicationId(value), {\n error: 'must satisfy g_application_id_is_valid, such as \"org.example.MyApp\"',\n });\n\nconst reactCompilerSchema = z.union([\n z.boolean(),\n z.object({\n compilationMode: z.enum(COMPILATION_MODES).optional(),\n panicThreshold: z.enum(PANIC_THRESHOLDS).optional(),\n }),\n]);\n\nconst userEventSignalsSchema = z.record(\n z.string(),\n z.array(\n z.string({ error: \"must be a non-empty signal name\" }).min(1, { error: \"must be a non-empty signal name\" }),\n {\n error: \"must be an array of signal names\",\n },\n ),\n { error: \"must be a record of GLib type names to signal name arrays\" },\n);\n\nconst moduleExportSchema = z.object(\n {\n module: z.string({ error: \"must be a module specifier\" }).min(1, { error: \"must be a module specifier\" }),\n export: z.string({ error: \"must be an export name\" }).min(1, { error: \"must be an export name\" }),\n },\n { error: \"must be a { module, export } object\" },\n);\n\nconst elementConfigSchema = z.object({\n component: moduleExportSchema.optional(),\n props: moduleExportSchema.optional(),\n isLazy: z.boolean({ error: \"must be a boolean\" }).optional(),\n omittedProps: z\n .array(\n z.string({ error: \"must be a non-empty property name\" }).min(1, {\n error: \"must be a non-empty property name\",\n }),\n { error: \"must be an array of property names\" },\n )\n .optional(),\n});\n\nconst elementsSchema = z.object({\n behaviors: z\n .string({ error: \"must be a path to a module exporting element behaviors\" })\n .min(1, { error: \"must be a path to a module exporting element behaviors\" })\n .optional(),\n config: z.record(z.string(), elementConfigSchema).optional(),\n});\n\nconst agentsSchema = z.object({\n rules: z.boolean({ error: \"must be a boolean\" }).optional(),\n reference: z.boolean({ error: \"must be a boolean\" }).optional(),\n});\n\nconst mcpSchema = z.object({\n tools: z\n .array(z.string({ error: \"must be a tool name pattern\" }).min(1, { error: \"must be a tool name pattern\" }), {\n error: \"must be an array of tool name patterns\",\n })\n .optional(),\n readOnly: z.boolean({ error: \"must be a boolean\" }).optional(),\n});\n\nconst graduatedFutureSchema = z\n .object({\n v2ByteArrays: z.literal(true, { error: \"can only be true; remove the flag\" }).optional(),\n v2ValueReturns: z.literal(true, { error: \"can only be true; remove the flag\" }).optional(),\n v2FinishResults: z.literal(true, { error: \"can only be true; remove the flag\" }).optional(),\n v2InoutReturns: z.literal(true, { error: \"can only be true; remove the flag\" }).optional(),\n v2ResourceImports: z.literal(true, { error: \"can only be true; remove the flag\" }).optional(),\n v2DefaultLibraries: z.literal(true, { error: \"can only be true; remove the flag\" }).optional(),\n v2TreeShaking: z.literal(true, { error: \"can only be true; remove the flag\" }).optional(),\n })\n .strict();\n\nconst deprecationsSchema = z.object({\n silence: z\n .array(z.never({ error: \"does not name a current deprecation\" }), {\n error: \"must be an array of current deprecation ids\",\n })\n .optional(),\n});\n\n/** Schema every `gtkx.config.ts` is validated against, and the source of the {@link Config} type. */\nconst configSchema = z.object({\n libraries: librariesSchema.optional(),\n girPath: z.array(z.string(), { error: \"must be an array of strings if provided\" }).optional(),\n applicationId: applicationIdSchema,\n reactCompiler: reactCompilerSchema.optional(),\n codegen: z.boolean({ error: \"must be a boolean\" }).optional(),\n userEventSignals: userEventSignalsSchema.optional(),\n elements: elementsSchema.optional(),\n applicationIcon: text(\"must be a path to an icon theme directory or a single icon file\").optional(),\n deploy: deploySchema.optional(),\n agents: agentsSchema.optional(),\n mcp: mcpSchema.optional(),\n deprecations: deprecationsSchema.optional(),\n});\n\n/**\n * Returns the given configuration unchanged, typed as {@link Config}, so `gtkx.config.ts` gets\n * autocompletion and type checking.\n */\nconst defineConfig: DefineConfig<Config> = createDefineConfig<Config>();\nconst validationSchema = configSchema.extend({ future: graduatedFutureSchema.optional() });\n\nconst isValidApplicationId = (applicationId: string): boolean =>\n applicationId.length <= APPLICATION_ID_MAX_LENGTH && APPLICATION_ID_PATTERN.test(applicationId);\n\nconst resolveReactCompilerOptions = (setting: Config[\"reactCompiler\"]): ResolvedReactCompilerOptions | null => {\n if (setting === false) {\n return null;\n }\n\n const overrides = setting === undefined || setting === true ? {} : setting;\n\n return {\n ...(overrides.compilationMode !== undefined && { compilationMode: overrides.compilationMode }),\n ...(overrides.panicThreshold !== undefined && { panicThreshold: overrides.panicThreshold }),\n target: REACT_COMPILER_TARGET,\n };\n};\n\nconst validateConfig = (config: unknown, configFile?: string): void => {\n const result = validationSchema.safeParse(config);\n\n if (!result.success) {\n throw configError(result.error, configFile);\n }\n};\n\nconst graduatedFutureKeys = (config: unknown): string[] => {\n if (!isRecord(config) || !isRecord(config.future)) {\n return [];\n }\n\n return Object.keys(config.future).toSorted((first, second) => first.localeCompare(second));\n};\n\n/**\n * Deep-merges a configuration over a base. `override` wins over `base` on conflicting scalar and object keys, while\n * arrays are concatenated with the `override` entries first.\n */\nconst mergeConfig = (base: Config, override: Config): Config => defu(override, base);\n\nconst resolveElementsModule = (behaviors: string | undefined, root: string | undefined): string | null => {\n if (behaviors === undefined) {\n return null;\n }\n\n return root === undefined ? behaviors : resolve(root, behaviors);\n};\n\nconst resolveLazyElements = (elements: Config[\"elements\"]): string[] =>\n Object.entries(elements?.config ?? {})\n .filter(([, entry]) => entry.isLazy === true)\n .map(([type]) => type);\n\nconst elementEntryValues = <T>(\n elements: Config[\"elements\"],\n pick: (entry: ElementConfigEntry) => T | undefined,\n): Record<string, T> =>\n Object.fromEntries(\n Object.entries(elements?.config ?? {}).flatMap(([type, entry]) => {\n const value = pick(entry);\n\n return value === undefined ? [] : [[type, value] as const];\n }),\n );\n\nconst resolveElementComponents = (elements: Config[\"elements\"]): Record<string, ModuleExport> =>\n elementEntryValues(elements, (entry) => entry.component);\n\nconst resolveElementProps = (elements: Config[\"elements\"]): Record<string, ModuleExport> =>\n elementEntryValues(elements, (entry) => entry.props);\n\nconst resolveOmittedProps = (elements: Config[\"elements\"]): Record<string, string[]> =>\n elementEntryValues(elements, (entry) => entry.omittedProps);\n\nconst isAgentRulesEnabled = (config: Config): boolean => config.agents?.rules !== false;\nconst isAgentReferenceEnabled = (config: Config): boolean => config.agents?.reference !== false;\n\nconst resolveMcpSettings = (config: Config): McpSettings => ({\n tools: config.mcp?.tools ?? [],\n isReadOnly: config.mcp?.readOnly === true,\n});\n\nconst resolveConfig = (config: Config, root?: string): ResolvedConfig => ({\n applicationId: config.applicationId,\n reactCompiler: resolveReactCompilerOptions(config.reactCompiler),\n userEventSignals: resolveUserEventSignals(config.userEventSignals),\n elements: resolveElementsModule(config.elements?.behaviors, root),\n lazyElements: resolveLazyElements(config.elements),\n});\n\nexport {\n APPLICATION_ID_MAX_LENGTH,\n defineConfig,\n isAgentReferenceEnabled,\n isAgentRulesEnabled,\n isValidApplicationId,\n graduatedFutureKeys,\n validateConfig,\n mergeConfig,\n resolveLazyElements,\n resolveElementComponents,\n resolveElementProps,\n resolveMcpSettings,\n resolveOmittedProps,\n resolveConfig,\n type McpSettings,\n type ResolvedReactCompilerOptions,\n type Config,\n type ResolvedConfig,\n};\n"]}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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","sourcesContent":["import { createDefineConfig, type DefineConfig } from \"c12\";\nimport { defu } from \"defu\";\nimport { resolve } from \"node:path\";\nimport { z } from \"zod\";\nimport { configError, isRecord } from \"./config-error.ts\";\nimport { deploySchema } from \"./deploy.ts\";\nimport { girLibrary, text } from \"./schema-text.ts\";\nimport { resolveUserEventSignals } from \"./user-event-signals.ts\";\n\n/** Object form of the `reactCompiler` config key, forwarded to `babel-plugin-react-compiler`. */\ntype ReactCompilerOptions = {\n /** Which functions the compiler processes. */\n compilationMode?: (typeof COMPILATION_MODES)[number];\n /** Which compiler diagnostics fail the build. */\n panicThreshold?: (typeof PANIC_THRESHOLDS)[number];\n};\n\n/**\n * The React Compiler options the build hands to `babel-plugin-react-compiler`, with the React version\n * GTKX targets filled in.\n */\ntype ResolvedReactCompilerOptions = ReactCompilerOptions & {\n /** React major version the compiler emits for. */\n target: \"19\";\n};\n\n/**\n * GTKX project configuration authored in `gtkx.config.ts` and validated when loaded.\n */\ntype Config = z.infer<typeof configSchema>;\ntype ModuleExport = z.infer<typeof moduleExportSchema>;\ntype ElementPropsExport = z.infer<typeof elementPropsSchema>;\n/** Overrides for one GLib type in `elements.config`, keyed by its registered type name. */\ntype ElementConfigOptions = z.infer<typeof elementConfigSchema>;\n\ntype McpSettings = {\n tools: string[];\n isReadOnly: boolean;\n};\n\n/** Configuration reduced to the values the app runtime and the build need, with paths already resolved. */\ntype ResolvedConfig = {\n /** The GApplication identifier the app registers under. */\n applicationId: string;\n /** React Compiler options for the build, or `null` when the compiler is disabled. */\n reactCompiler: ResolvedReactCompilerOptions | null;\n /**\n * Signal names, keyed by GLib type name, that stay suppressed while a React commit writes to a widget.\n * `notify` stays suppressed only for the property being written.\n */\n userEventSignals: Record<string, string[]>;\n /** Path of the module exporting per-element configs, or `null` when none is configured. */\n elements: string | null;\n /** GLib type names of the elements marked `isLazy`, whose GObject their parent container creates. */\n lazyElements: string[];\n};\n\nconst APPLICATION_ID_PATTERN = /^[A-Za-z_][A-Za-z0-9_-]*(\\.[A-Za-z_][A-Za-z0-9_-]*)+$/;\nconst APPLICATION_ID_MAX_LENGTH = 255;\nconst IMPLICIT_LIBRARIES: Set<string> = new Set([\"Adw-1\", \"Gtk-4.0\"]);\n/** Compilation modes `babel-plugin-react-compiler` accepts. */\nconst COMPILATION_MODES = [\"infer\", \"syntax\", \"annotation\", \"all\"] as const;\n/** Panic thresholds `babel-plugin-react-compiler` accepts. */\nconst PANIC_THRESHOLDS = [\"none\", \"critical_errors\", \"all_errors\"] as const;\nconst REACT_COMPILER_TARGET = \"19\";\n\nconst librarySchema = girLibrary('must be of the form \"Name-Version\", such as \"Adw-1\"').refine(\n (library) => !IMPLICIT_LIBRARIES.has(library),\n { error: \"is bound implicitly; remove it\" },\n);\n\nconst librariesSchema = z\n .array(librarySchema, { error: \"must be a non-empty string array or omitted\" })\n .min(1, { error: \"must be a non-empty string array or omitted\" });\n\nconst applicationIdSchema = z\n .string({ error: \"must satisfy g_application_id_is_valid\" })\n .refine((value) => isValidApplicationId(value), {\n error: 'must satisfy g_application_id_is_valid, such as \"org.example.MyApp\"',\n });\n\nconst reactCompilerSchema = z.union([\n z.boolean(),\n z.strictObject({\n /** Which functions the React Compiler processes. */\n compilationMode: z.enum(COMPILATION_MODES).optional(),\n /** Which React Compiler diagnostics fail the build. */\n panicThreshold: z.enum(PANIC_THRESHOLDS).optional(),\n }),\n]);\n\nconst userEventSignalsSchema = z.record(\n z.string(),\n z.array(\n z.string({ error: \"must be a non-empty signal name\" }).min(1, { error: \"must be a non-empty signal name\" }),\n {\n error: \"must be an array of signal names\",\n },\n ),\n { error: \"must be a record of GLib type names to signal name arrays\" },\n);\n\nconst moduleExportSchema = z.strictObject(\n {\n /** Module specifier containing the named export. */\n module: z.string({ error: \"must be a module specifier\" }).min(1, { error: \"must be a module specifier\" }),\n /** Name of the export to import from the module. */\n export: z.string({ error: \"must be an export name\" }).min(1, { error: \"must be an export name\" }),\n },\n { error: \"must be a { module, export } object\" },\n);\n\nconst elementPropsSchema = moduleExportSchema.extend({\n /**\n * How the exported props are combined: `intersection` is inherited; `factory` applies only to this type.\n * Defaults to `intersection`.\n */\n composition: z.enum([\"factory\", \"intersection\"]).optional(),\n /** Props that can only be set when the element is created; changing them afterward throws. */\n constructOnly: z.array(z.string()).optional(),\n});\n\n/** Schema for one element override and the source of {@link ElementConfigOptions}. */\nconst elementConfigSchema = z.strictObject({\n /** Component export that wraps the generated element. */\n component: moduleExportSchema.optional(),\n /** Additional props type to combine with the generated element props. */\n props: elementPropsSchema.optional(),\n /** Whether the parent container creates this element's GObject instead of the element constructing its own. */\n isLazy: z.boolean({ error: \"must be a boolean\" }).optional(),\n /** Accepted child GLib type names to show in the generated element documentation. */\n acceptedChildTypes: z.array(z.string()).optional(),\n /** GObject properties to leave out of generated props, such as properties managed by an element behavior. */\n omittedProps: z\n .array(\n z.string({ error: \"must be a non-empty property name\" }).min(1, {\n error: \"must be a non-empty property name\",\n }),\n { error: \"must be an array of property names\" },\n )\n .optional(),\n});\n\nconst elementsSchema = z.strictObject({\n /** Path, relative to the project root, of the module exporting the element behavior map. */\n behaviors: z\n .string({ error: \"must be a path to a module exporting element behaviors\" })\n .min(1, { error: \"must be a path to a module exporting element behaviors\" })\n .optional(),\n /**\n * Element configuration overrides keyed by GLib type name, such as `GtkWidget`.\n * @see {@link ElementConfigOptions} for the fields accepted by each entry.\n */\n config: z.record(z.string(), elementConfigSchema).optional(),\n});\n\nconst agentsSchema = z.strictObject({\n /**\n * Whether codegen maintains the GTKX rules in `AGENTS.md` and creates a missing `CLAUDE.md` import.\n * Defaults to `true`.\n */\n rules: z.boolean({ error: \"must be a boolean\" }).optional(),\n /** Whether codegen writes the generated element reference to `.gtkx/reference`. Defaults to `true`. */\n reference: z.boolean({ error: \"must be a boolean\" }).optional(),\n});\n\nconst mcpSchema = z.strictObject({\n /**\n * Tool name patterns applied in order: `*` matches any text and a leading `!` excludes matches.\n * Omitted, empty, or exclusion-only lists start with all tools; other lists start with none.\n */\n tools: z\n .array(z.string({ error: \"must be a tool name pattern\" }).min(1, { error: \"must be a tool name pattern\" }), {\n error: \"must be an array of tool name patterns\",\n })\n .optional(),\n /**\n * Whether the MCP server exposes only inspection and reference tools, excluding app interactions.\n * Defaults to `false`.\n */\n readOnly: z.boolean({ error: \"must be a boolean\" }).optional(),\n});\n\nconst graduatedFutureSchema = z\n .object({\n v2ByteArrays: z.literal(true, { error: \"can only be true; remove the flag\" }).optional(),\n v2ValueReturns: z.literal(true, { error: \"can only be true; remove the flag\" }).optional(),\n v2FinishResults: z.literal(true, { error: \"can only be true; remove the flag\" }).optional(),\n v2InoutReturns: z.literal(true, { error: \"can only be true; remove the flag\" }).optional(),\n v2ResourceImports: z.literal(true, { error: \"can only be true; remove the flag\" }).optional(),\n v2DefaultLibraries: z.literal(true, { error: \"can only be true; remove the flag\" }).optional(),\n v2TreeShaking: z.literal(true, { error: \"can only be true; remove the flag\" }).optional(),\n })\n .strict();\n\nconst deprecationsSchema = z.strictObject({\n /** Deprecation identifiers whose warnings are suppressed. There are currently no accepted identifiers. */\n silence: z\n .array(z.never({ error: \"does not name a current deprecation\" }), {\n error: \"must be an array of current deprecation ids\",\n })\n .optional(),\n});\n\n/** Schema every `gtkx.config.ts` is validated against, and the source of the {@link Config} type. */\nconst configSchema = z.strictObject({\n /**\n * Additional GIR libraries to bind, such as `WebKit-6.0`.\n * Adwaita and GTK are included implicitly and must not be listed.\n */\n libraries: librariesSchema.optional(),\n /** Additional GIR search directories. Relative paths are resolved from the project root. */\n girPath: z.array(z.string(), { error: \"must be an array of strings if provided\" }).optional(),\n /** Required GApplication identifier, such as `com.example.Tasks`. */\n applicationId: applicationIdSchema,\n /** Whether to enable the React Compiler, or options passed to it. Enabled by default. */\n reactCompiler: reactCompilerSchema.optional(),\n /**\n * Whether GTKX generates project bindings. Set to `false` to reuse an installed binding store.\n * Defaults to `true`.\n */\n codegen: z.boolean({ error: \"must be a boolean\" }).optional(),\n /**\n * Additional signals to suppress during React property updates, keyed by GLib type name.\n * Entries extend the built-in signal lists.\n */\n userEventSignals: userEventSignalsSchema.optional(),\n /** Custom element behaviors and overrides for generated components, props, and documentation. */\n elements: elementsSchema.optional(),\n /** Path to an icon theme directory or a single application icon file, relative to the project root. */\n applicationIcon: text(\"must be a path to an icon theme directory or a single icon file\").optional(),\n /** Application metadata, bundled runtime settings, and packaging options used by `gtkx deploy`. */\n deploy: deploySchema.optional(),\n /** Controls the project instructions and reference files generated for coding agents. */\n agents: agentsSchema.optional(),\n /** Default tool selection and access mode for the project's MCP server. Command-line flags take precedence. */\n mcp: mcpSchema.optional(),\n /** Controls warnings for deprecated configuration and behavior. */\n deprecations: deprecationsSchema.optional(),\n});\n\n/**\n * Returns the given configuration unchanged, typed as {@link Config}, so `gtkx.config.ts` gets\n * autocompletion and type checking.\n */\nconst defineConfig: DefineConfig<Config> = createDefineConfig<Config>();\nconst validationSchema = configSchema.extend({ future: graduatedFutureSchema.optional() });\n\nconst isValidApplicationId = (applicationId: string): boolean =>\n applicationId.length <= APPLICATION_ID_MAX_LENGTH && APPLICATION_ID_PATTERN.test(applicationId);\n\nconst resolveReactCompilerOptions = (setting: Config[\"reactCompiler\"]): ResolvedReactCompilerOptions | null => {\n if (setting === false) {\n return null;\n }\n\n const overrides = setting === undefined || setting === true ? {} : setting;\n\n return {\n ...(overrides.compilationMode !== undefined && { compilationMode: overrides.compilationMode }),\n ...(overrides.panicThreshold !== undefined && { panicThreshold: overrides.panicThreshold }),\n target: REACT_COMPILER_TARGET,\n };\n};\n\nconst validateConfig = (config: unknown, configFile?: string): void => {\n const result = validationSchema.safeParse(config);\n\n if (!result.success) {\n throw configError(result.error, configFile);\n }\n};\n\nconst graduatedFutureKeys = (config: unknown): string[] => {\n if (!isRecord(config) || !isRecord(config.future)) {\n return [];\n }\n\n return Object.keys(config.future).toSorted((first, second) => first.localeCompare(second));\n};\n\n/**\n * Deep-merges a configuration over a base. `override` wins over `base` on conflicting scalar and object keys, while\n * arrays are concatenated with the `override` entries first.\n */\nconst mergeConfig = (base: Config, override: Config): Config => defu(override, base);\n\nconst resolveElementsModule = (behaviors: string | undefined, root: string | undefined): string | null => {\n if (behaviors === undefined) {\n return null;\n }\n\n return root === undefined ? behaviors : resolve(root, behaviors);\n};\n\nconst resolveLazyElements = (elements: Config[\"elements\"]): string[] =>\n Object.entries(elements?.config ?? {})\n .filter(([, entry]) => entry.isLazy === true)\n .map(([type]) => type);\n\nconst elementEntryValues = <T>(\n elements: Config[\"elements\"],\n pick: (entry: ElementConfigOptions) => T | undefined,\n): Record<string, T> =>\n Object.fromEntries(\n Object.entries(elements?.config ?? {}).flatMap(([type, entry]) => {\n const value = pick(entry);\n\n return value === undefined ? [] : [[type, value] as const];\n }),\n );\n\nconst resolveElementComponents = (elements: Config[\"elements\"]): Record<string, ModuleExport> =>\n elementEntryValues(elements, (entry) => entry.component);\n\nconst resolveElementProps = (elements: Config[\"elements\"]): Record<string, ElementPropsExport> =>\n elementEntryValues(elements, (entry) => entry.props);\n\nconst resolveAcceptedChildTypes = (elements: Config[\"elements\"]): Record<string, string[]> =>\n elementEntryValues(elements, (entry) => entry.acceptedChildTypes);\n\nconst resolveOmittedProps = (elements: Config[\"elements\"]): Record<string, string[]> =>\n elementEntryValues(elements, (entry) => entry.omittedProps);\n\nconst isAgentRulesEnabled = (config: Config): boolean => config.agents?.rules !== false;\nconst isAgentReferenceEnabled = (config: Config): boolean => config.agents?.reference !== false;\n\nconst resolveMcpSettings = (config: Config): McpSettings => ({\n tools: config.mcp?.tools ?? [],\n isReadOnly: config.mcp?.readOnly === true,\n});\n\nconst resolveConfig = (config: Config, root?: string): ResolvedConfig => ({\n applicationId: config.applicationId,\n reactCompiler: resolveReactCompilerOptions(config.reactCompiler),\n userEventSignals: resolveUserEventSignals(config.userEventSignals),\n elements: resolveElementsModule(config.elements?.behaviors, root),\n lazyElements: resolveLazyElements(config.elements),\n});\n\nexport {\n APPLICATION_ID_MAX_LENGTH,\n defineConfig,\n isAgentReferenceEnabled,\n isAgentRulesEnabled,\n isValidApplicationId,\n graduatedFutureKeys,\n validateConfig,\n mergeConfig,\n resolveLazyElements,\n resolveElementComponents,\n resolveElementProps,\n resolveAcceptedChildTypes,\n resolveMcpSettings,\n resolveOmittedProps,\n resolveConfig,\n type McpSettings,\n type ResolvedReactCompilerOptions,\n type Config,\n type ElementConfigOptions,\n type ElementPropsExport,\n type ModuleExport,\n type ResolvedConfig,\n};\n"]}
|
package/dist/deploy.d.ts
CHANGED
|
@@ -1,9 +1,56 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
+
/** One software-center screenshot in `deploy.screenshots`. Either `url` or `file` must be set. */
|
|
3
|
+
type DeployScreenshotOptions = z.infer<typeof screenshotSchema>;
|
|
4
|
+
/** Screenshot entry schema and the source of {@link DeployScreenshotOptions}. */
|
|
5
|
+
declare const screenshotSchema: z.ZodObject<{
|
|
6
|
+
url: z.ZodOptional<z.ZodURL>;
|
|
7
|
+
file: z.ZodOptional<z.ZodString>;
|
|
8
|
+
caption: z.ZodOptional<z.ZodString>;
|
|
9
|
+
isDefault: z.ZodOptional<z.ZodBoolean>;
|
|
10
|
+
}, z.core.$strict>;
|
|
11
|
+
/** One AppStream release-history entry in `deploy.releases`. */
|
|
12
|
+
type DeployReleaseOptions = z.infer<typeof releaseSchema>;
|
|
13
|
+
/** Release-history entry schema and the source of {@link DeployReleaseOptions}. */
|
|
14
|
+
declare const releaseSchema: z.ZodObject<{
|
|
15
|
+
version: z.ZodString;
|
|
16
|
+
date: z.ZodISODate;
|
|
17
|
+
type: z.ZodOptional<z.ZodEnum<{
|
|
18
|
+
development: "development";
|
|
19
|
+
snapshot: "snapshot";
|
|
20
|
+
stable: "stable";
|
|
21
|
+
}>>;
|
|
22
|
+
urgency: z.ZodOptional<z.ZodEnum<{
|
|
23
|
+
critical: "critical";
|
|
24
|
+
high: "high";
|
|
25
|
+
low: "low";
|
|
26
|
+
medium: "medium";
|
|
27
|
+
}>>;
|
|
28
|
+
notes: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
29
|
+
url: z.ZodOptional<z.ZodURL>;
|
|
30
|
+
}, z.core.$strict>;
|
|
31
|
+
/** One file extension and MIME type registered through `deploy.fileAssociations`. */
|
|
32
|
+
type DeployFileAssociationOptions = z.infer<typeof fileAssociationSchema>;
|
|
33
|
+
/** File association schema and the source of {@link DeployFileAssociationOptions}. */
|
|
34
|
+
declare const fileAssociationSchema: z.ZodObject<{
|
|
35
|
+
extension: z.ZodString;
|
|
36
|
+
mimeType: z.ZodString;
|
|
37
|
+
description: z.ZodOptional<z.ZodString>;
|
|
38
|
+
}, z.core.$strict>;
|
|
39
|
+
/** One desktop launcher action in `deploy.desktopActions`, keyed by its action ID. */
|
|
40
|
+
type DeployDesktopActionOptions = z.infer<typeof desktopActionSchema>;
|
|
41
|
+
/** Desktop launcher action schema and the source of {@link DeployDesktopActionOptions}. */
|
|
42
|
+
declare const desktopActionSchema: z.ZodObject<{
|
|
43
|
+
name: z.ZodString;
|
|
44
|
+
args: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
45
|
+
icon: z.ZodOptional<z.ZodString>;
|
|
46
|
+
}, z.core.$strict>;
|
|
2
47
|
/**
|
|
3
48
|
* A `deploy.extraFiles` entry in object form: the source file, resolved against the project root, that is
|
|
4
49
|
* installed at the entry's prefix-relative destination, and the octal mode it is installed with.
|
|
5
50
|
*/
|
|
6
|
-
type DeployExtraFileOptions =
|
|
51
|
+
type DeployExtraFileOptions = {
|
|
52
|
+
/** Source file path, resolved relative to the project root. */
|
|
53
|
+
source: string;
|
|
7
54
|
/** Octal file mode. Setuid and setgid bits are rejected. */
|
|
8
55
|
mode?: string | undefined;
|
|
9
56
|
};
|
|
@@ -11,9 +58,17 @@ type DeployExtraFileOptions = Record<"source", string> & {
|
|
|
11
58
|
* The `deploy.node` options: where the Node.js runtime bundled with the application comes from, the version it
|
|
12
59
|
* is expected to be, whether its binary is stripped, and whether the launcher enables the compile cache.
|
|
13
60
|
*/
|
|
14
|
-
type DeployNodeOptions =
|
|
15
|
-
/**
|
|
61
|
+
type DeployNodeOptions = {
|
|
62
|
+
/** Runtime source: an official download, the running Node.js executable, or `path`. Defaults to `download`. */
|
|
63
|
+
source?: "download" | "host" | "path" | undefined;
|
|
64
|
+
/** Expected Node.js version. Downloaded runtimes default to exactly 26.8.2 when omitted. */
|
|
16
65
|
version?: string | undefined;
|
|
66
|
+
/** Node.js executable path relative to the project root, required when `source` is `path`. */
|
|
67
|
+
path?: string | undefined;
|
|
68
|
+
/** Strip the runtime when its architecture matches the host and `strip` is available. Defaults to `true`. */
|
|
69
|
+
shouldStrip?: boolean | undefined;
|
|
70
|
+
/** Enable Node.js compile caching in the generated launcher. Defaults to `true`. */
|
|
71
|
+
shouldUseCompileCache?: boolean | undefined;
|
|
17
72
|
};
|
|
18
73
|
declare const deploySchema: z.ZodObject<{
|
|
19
74
|
targets: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
@@ -70,10 +125,10 @@ declare const deploySchema: z.ZodObject<{
|
|
|
70
125
|
dark: z.ZodString;
|
|
71
126
|
}, z.core.$strict>>;
|
|
72
127
|
contentRating: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodEnum<{
|
|
73
|
-
none: "none";
|
|
74
128
|
intense: "intense";
|
|
75
129
|
mild: "mild";
|
|
76
130
|
moderate: "moderate";
|
|
131
|
+
none: "none";
|
|
77
132
|
}>>>;
|
|
78
133
|
releases: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
79
134
|
version: z.ZodString;
|
|
@@ -152,6 +207,9 @@ declare const deploySchema: z.ZodObject<{
|
|
|
152
207
|
postRemove: z.ZodOptional<z.ZodString>;
|
|
153
208
|
}, z.core.$strict>>;
|
|
154
209
|
node: z.ZodOptional<z.ZodType<DeployNodeOptions, unknown, z.core.$ZodTypeInternals<DeployNodeOptions, unknown>>>;
|
|
210
|
+
tools: z.ZodOptional<z.ZodObject<{
|
|
211
|
+
nfpm: z.ZodOptional<z.ZodString>;
|
|
212
|
+
}, z.core.$strict>>;
|
|
155
213
|
signing: z.ZodOptional<z.ZodObject<{
|
|
156
214
|
appimage: z.ZodOptional<z.ZodObject<{
|
|
157
215
|
gpgKeyId: z.ZodString;
|
|
@@ -164,9 +222,9 @@ declare const deploySchema: z.ZodObject<{
|
|
|
164
222
|
"dpkg-sig": "dpkg-sig";
|
|
165
223
|
}>>;
|
|
166
224
|
type: z.ZodOptional<z.ZodEnum<{
|
|
167
|
-
origin: "origin";
|
|
168
225
|
archive: "archive";
|
|
169
226
|
maint: "maint";
|
|
227
|
+
origin: "origin";
|
|
170
228
|
}>>;
|
|
171
229
|
signer: z.ZodOptional<z.ZodString>;
|
|
172
230
|
}, z.core.$strict>>;
|
|
@@ -181,11 +239,7 @@ declare const deploySchema: z.ZodObject<{
|
|
|
181
239
|
}, z.core.$strict>>;
|
|
182
240
|
appimage: z.ZodOptional<z.ZodObject<{
|
|
183
241
|
fileName: z.ZodOptional<z.ZodString>;
|
|
184
|
-
compression: z.ZodOptional<z.
|
|
185
|
-
gzip: "gzip";
|
|
186
|
-
xz: "xz";
|
|
187
|
-
zstd: "zstd";
|
|
188
|
-
}>>;
|
|
242
|
+
compression: z.ZodOptional<z.ZodLiteral<"zstd">>;
|
|
189
243
|
updateInformation: z.ZodOptional<z.ZodString>;
|
|
190
244
|
runtimeFile: z.ZodOptional<z.ZodString>;
|
|
191
245
|
}, z.core.$strict>>;
|
|
@@ -195,9 +249,9 @@ declare const deploySchema: z.ZodObject<{
|
|
|
195
249
|
priority: z.ZodOptional<z.ZodString>;
|
|
196
250
|
compression: z.ZodOptional<z.ZodEnum<{
|
|
197
251
|
gzip: "gzip";
|
|
252
|
+
none: "none";
|
|
198
253
|
xz: "xz";
|
|
199
254
|
zstd: "zstd";
|
|
200
|
-
none: "none";
|
|
201
255
|
}>>;
|
|
202
256
|
fields: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
203
257
|
}, z.core.$strict>>;
|
|
@@ -239,12 +293,12 @@ declare const deploySchema: z.ZodObject<{
|
|
|
239
293
|
group: z.ZodOptional<z.ZodString>;
|
|
240
294
|
compression: z.ZodOptional<z.ZodEnum<{
|
|
241
295
|
gzip: "gzip";
|
|
296
|
+
lzma: "lzma";
|
|
242
297
|
xz: "xz";
|
|
243
298
|
zstd: "zstd";
|
|
244
|
-
lzma: "lzma";
|
|
245
299
|
}>>;
|
|
246
300
|
prefixes: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
247
301
|
}, z.core.$strict>>;
|
|
248
302
|
}, z.core.$strict>;
|
|
249
|
-
export { deploySchema, type DeployExtraFileOptions, type DeployNodeOptions };
|
|
303
|
+
export { deploySchema, type DeployDesktopActionOptions, type DeployExtraFileOptions, type DeployFileAssociationOptions, type DeployNodeOptions, type DeployReleaseOptions, type DeployScreenshotOptions, };
|
|
250
304
|
//# sourceMappingURL=deploy.d.ts.map
|
package/dist/deploy.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../src/deploy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../src/deploy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA6ExB,kGAAkG;AAClG,KAAK,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAEhE,iFAAiF;AACjF,QAAA,MAAM,gBAAgB;;;;;kBAahB,CAAC;AAEP,gEAAgE;AAChE,KAAK,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE1D,mFAAmF;AACnF,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;;kBAajB,CAAC;AAEH,qFAAqF;AACrF,KAAK,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAE1E,sFAAsF;AACtF,QAAA,MAAM,qBAAqB;;;;kBAOzB,CAAC;AAEH,sFAAsF;AACtF,KAAK,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEtE,2FAA2F;AAC3F,QAAA,MAAM,mBAAmB;;;;kBAOvB,CAAC;AASH;;;GAGG;AACH,KAAK,sBAAsB,GAAG;IAC1B,+DAA+D;IAC/D,MAAM,EAAE,MAAM,CAAC;IACf,4DAA4D;IAC5D,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B,CAAC;AA6BF;;;GAGG;AACH,KAAK,iBAAiB,GAAG;IACrB,+GAA+G;IAC/G,MAAM,CAAC,EAAE,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAClD,4FAA4F;IAC5F,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,8FAA8F;IAC9F,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,6GAA6G;IAC7G,WAAW,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAClC,oFAAoF;IACpF,qBAAqB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC/C,CAAC;AAiLF,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAuIhB,CAAC;AAEH,OAAO,EACH,YAAY,EACZ,KAAK,0BAA0B,EAC/B,KAAK,sBAAsB,EAC3B,KAAK,4BAA4B,EACjC,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,GAC/B,CAAC"}
|