@baeta/generator-sdk 0.0.10 → 0.0.11
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/CHANGELOG.md +12 -0
- package/dist/index.cjs +67 -14
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +64 -4
- package/dist/index.d.ts +64 -4
- package/dist/index.js +70 -17
- package/dist/index.js.map +1 -1
- package/package.json +6 -6
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @baeta/generator-sdk
|
|
2
2
|
|
|
3
|
+
## 0.0.11
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#117](https://github.com/andreisergiu98/baeta/pull/117) [`18db339`](https://github.com/andreisergiu98/baeta/commit/18db339719aa309c619372d2161c5fdbc08fa316) Thanks [@andreisergiu98](https://github.com/andreisergiu98)! - add comments to config types
|
|
8
|
+
|
|
9
|
+
- [#119](https://github.com/andreisergiu98/baeta/pull/119) [`643a2eb`](https://github.com/andreisergiu98/baeta/commit/643a2eb17c2789cd25361ddeede149a0e459e68a) Thanks [@andreisergiu98](https://github.com/andreisergiu98)! - update dependencies
|
|
10
|
+
|
|
11
|
+
- Updated dependencies [[`643a2eb`](https://github.com/andreisergiu98/baeta/commit/643a2eb17c2789cd25361ddeede149a0e459e68a)]:
|
|
12
|
+
- @baeta/plugin@0.0.22
|
|
13
|
+
- @baeta/util-path@0.0.3
|
|
14
|
+
|
|
3
15
|
## 0.0.10
|
|
4
16
|
|
|
5
17
|
### Patch Changes
|
package/dist/index.cjs
CHANGED
|
@@ -1,5 +1,55 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } var _class; var _class2; var _class3; var _class4;// lib/
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } var _class; var _class2; var _class3; var _class4;// lib/config.ts
|
|
2
2
|
var _utilpath = require('@baeta/util-path'); var _utilpath2 = _interopRequireDefault(_utilpath);
|
|
3
|
+
function loadOptions(options) {
|
|
4
|
+
const cwd = _utilpath.posixPath.call(void 0, _nullishCoalesce(options.cwd, () => ( process.cwd())));
|
|
5
|
+
const schemas = _nullishCoalesce(options.schemas, () => ( ["src/**/*.graphql"]));
|
|
6
|
+
const modulesDir = _utilpath.posixPath.call(void 0, _utilpath.resolve.call(void 0, cwd, options.modulesDir || "src/modules"));
|
|
7
|
+
const moduleDefinitionName = options.moduleDefinitionName || "typedef.ts";
|
|
8
|
+
const defaultBaseTypesRoot = _utilpath.resolve.call(void 0, modulesDir, "../__generated__/types.ts");
|
|
9
|
+
const baseTypesRoot = _utilpath.resolve.call(void 0, cwd, options.baseTypesPath || defaultBaseTypesRoot);
|
|
10
|
+
const baseTypesPath = _utilpath.posixPath.call(void 0, _utilpath.relative.call(void 0, modulesDir, baseTypesRoot));
|
|
11
|
+
const contextType = resolveContextType(cwd, baseTypesRoot, options.contextType);
|
|
12
|
+
const extensions = resolveExtensionPath(modulesDir, moduleDefinitionName, options.extensions);
|
|
13
|
+
return {
|
|
14
|
+
cwd,
|
|
15
|
+
schemas,
|
|
16
|
+
modulesDir,
|
|
17
|
+
moduleDefinitionName,
|
|
18
|
+
baseTypesPath,
|
|
19
|
+
contextType,
|
|
20
|
+
extensions,
|
|
21
|
+
scalars: options.scalars,
|
|
22
|
+
fileOptions: options.fileOptions
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
function resolveContextType(root, baseTypesRoot, contextType) {
|
|
26
|
+
if (!contextType) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
if (_utilpath.isAbsolute.call(void 0, contextType)) {
|
|
30
|
+
return contextType;
|
|
31
|
+
}
|
|
32
|
+
if (contextType[0] === "!") {
|
|
33
|
+
return contextType.slice(1);
|
|
34
|
+
}
|
|
35
|
+
const contextTypeRoot = _utilpath.resolve.call(void 0, root, contextType);
|
|
36
|
+
return _utilpath.posixPath.call(void 0, _utilpath.relative.call(void 0, _utilpath.join.call(void 0, baseTypesRoot, "../"), contextTypeRoot));
|
|
37
|
+
}
|
|
38
|
+
function resolveExtensionPath(modulesDir, moduleDefinitionName, extensionsPath) {
|
|
39
|
+
if (!extensionsPath) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
if (_utilpath.isAbsolute.call(void 0, extensionsPath)) {
|
|
43
|
+
return extensionsPath;
|
|
44
|
+
}
|
|
45
|
+
if (extensionsPath[0] === "!") {
|
|
46
|
+
return extensionsPath.slice(1);
|
|
47
|
+
}
|
|
48
|
+
return _utilpath.posixPath.call(void 0, _utilpath.relative.call(void 0, _utilpath.join.call(void 0, modulesDir, moduleDefinitionName), extensionsPath));
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// lib/file.ts
|
|
52
|
+
|
|
3
53
|
var _promises = require('fs/promises'); var _promises2 = _interopRequireDefault(_promises);
|
|
4
54
|
var File = (_class = class {
|
|
5
55
|
constructor(filename, content, tag, options) {;_class.prototype.__init.call(this);_class.prototype.__init2.call(this);_class.prototype.__init3.call(this);
|
|
@@ -31,28 +81,30 @@ var File = (_class = class {
|
|
|
31
81
|
return content;
|
|
32
82
|
}
|
|
33
83
|
buildHeader() {
|
|
34
|
-
const ext = _utilpath.extname.call(void 0, this.filename);
|
|
35
84
|
const headerItems = [];
|
|
36
|
-
if (_optionalChain([this, 'access', _3 => _3.options, 'optionalAccess', _4 => _4.
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
"This file was generated by baeta. Do not edit it directly.",
|
|
40
|
-
ext
|
|
41
|
-
)}
|
|
42
|
-
`
|
|
85
|
+
if (_optionalChain([this, 'access', _3 => _3.options, 'optionalAccess', _4 => _4.addGenerationNoticeHeader]) !== false) {
|
|
86
|
+
const comment = this.createComment(
|
|
87
|
+
"This file was generated by Baeta. Do not edit it directly. All changes will be overwritten by the generator."
|
|
43
88
|
);
|
|
89
|
+
headerItems.push(comment);
|
|
44
90
|
}
|
|
45
|
-
if (_optionalChain([this, 'access', _5 => _5.options, 'optionalAccess', _6 => _6.
|
|
46
|
-
|
|
91
|
+
if (_optionalChain([this, 'access', _5 => _5.options, 'optionalAccess', _6 => _6.addEslintDisableHeader]) !== false) {
|
|
92
|
+
const comment = this.createComment("eslint-disable");
|
|
93
|
+
headerItems.push(comment);
|
|
47
94
|
}
|
|
48
95
|
if (_optionalChain([this, 'access', _7 => _7.options, 'optionalAccess', _8 => _8.addHeader])) {
|
|
49
|
-
|
|
96
|
+
const customHeader = this.options.addHeader(this.filename, this.content, this.tag);
|
|
97
|
+
headerItems.push(customHeader);
|
|
98
|
+
}
|
|
99
|
+
if (headerItems.length === 0) {
|
|
100
|
+
return "";
|
|
50
101
|
}
|
|
51
102
|
return `${headerItems.join("\n")}
|
|
52
103
|
|
|
53
104
|
`;
|
|
54
105
|
}
|
|
55
|
-
createComment(comment
|
|
106
|
+
createComment(comment) {
|
|
107
|
+
const extension = _utilpath.extname.call(void 0, this.filename);
|
|
56
108
|
if ([".gql", ".graphql"].includes(extension)) {
|
|
57
109
|
return `# ${comment}`;
|
|
58
110
|
}
|
|
@@ -305,5 +357,6 @@ var Watcher = (_class4 = class {
|
|
|
305
357
|
|
|
306
358
|
|
|
307
359
|
|
|
308
|
-
|
|
360
|
+
|
|
361
|
+
exports.File = File; exports.FileManager = FileManager; exports.GeneratorPluginVersion = GeneratorPluginVersion; exports.Watcher = Watcher; exports.createPluginV1 = createPluginV1; exports.getGeneratorPlugins = getGeneratorPlugins; exports.getModuleCreateName = getModuleCreateName; exports.getModuleGetName = getModuleGetName; exports.getModuleVariableName = getModuleVariableName; exports.isGeneratorPlugin = isGeneratorPlugin; exports.isMatch = isMatch; exports.loadOptions = loadOptions; exports.micromatch = _micromatch2.default;
|
|
309
362
|
//# sourceMappingURL=index.cjs.map
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../lib/file.ts","../lib/file-manager.ts","../lib/module.ts","../lib/plugin.ts","../lib/watcher.ts","../lib/watcher-ignore.ts"],"names":["GeneratorPluginVersion","path","micromatch"],"mappings":"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","sourcesContent":["import { dirname, extname } from '@baeta/util-path';\nimport fs from 'fs/promises';\n\nexport interface FileOptions {\n eslintDisable?: boolean;\n generationNotice?: boolean;\n addHeader?: (name: string, content: string, tag: string) => string;\n transformContent?: (name: string, content: string, tag: string) => string | Promise<string>;\n}\n\nexport class File {\n persisted = false;\n\n constructor(\n public filename: string,\n public content: string,\n public tag: string,\n private options?: FileOptions,\n ) {}\n\n write = async () => {\n if (this.persisted) {\n return;\n }\n this.persisted = true;\n\n const dir = dirname(this.filename);\n await fs.mkdir(dir, { recursive: true });\n\n const content = await this.buildContent();\n\n return fs.writeFile(this.filename, content, 'utf-8');\n };\n\n unlink = async () => {\n this.persisted = false;\n return fs.unlink(this.filename);\n };\n\n private async buildContent() {\n const content = this.buildHeader() + this.content;\n\n if (this.options?.transformContent) {\n return this.options.transformContent(this.filename, content, this.tag);\n }\n\n return content;\n }\n\n protected buildHeader() {\n const ext = extname(this.filename);\n\n const headerItems: string[] = [];\n\n if (this.options?.generationNotice !== false) {\n headerItems.push(\n `${this.createComment(\n 'This file was generated by baeta. Do not edit it directly.',\n ext,\n )}\\n`,\n );\n }\n\n if (this.options?.eslintDisable !== false) {\n headerItems.push(this.createComment('eslint-disable', ext));\n }\n\n if (this.options?.addHeader) {\n headerItems.push(this.options.addHeader(this.filename, this.content, this.tag));\n }\n\n return `${headerItems.join('\\n')}\\n\\n`;\n }\n\n protected createComment(comment: string, extension: string) {\n if (['.gql', '.graphql'].includes(extension)) {\n return `# ${comment}`;\n }\n\n return `/* ${comment} */`;\n }\n}\n","import { File, FileOptions } from './file';\n\nexport class FileManager {\n files: File[] = [];\n\n constructor(private fileOptions?: FileOptions) {}\n\n createAndAdd(filename: string, content: string, tag: string) {\n const file = new File(filename, content, tag, this.fileOptions);\n this.add(file);\n return file;\n }\n\n add(...file: File[]) {\n this.files.push(...file);\n }\n\n get(filename: string) {\n return this.files.find((file) => file.filename === filename);\n }\n\n getAll() {\n return this.files;\n }\n\n getByTag(tag: string) {\n return this.files.filter((file) => file.tag === tag);\n }\n\n remove(filename: string) {\n const index = this.files.findIndex((file) => file.filename === filename);\n this.files.splice(index, 1);\n }\n\n removeAll() {\n this.files = [];\n }\n\n removeByTag(tag: string) {\n this.files = this.files.filter((file) => file.tag !== tag);\n }\n\n writeAll() {\n const toWrite = this.files.filter((file) => !file.persisted);\n return Promise.all(toWrite.map((file) => file.write()));\n }\n\n writeByTag(tag: string) {\n const files = this.getByTag(tag);\n const toWrite = files.filter((file) => !file.persisted);\n return Promise.all(toWrite.map((file) => file.write()));\n }\n\n unlinkAll() {\n return Promise.all(this.files.map((file) => file.unlink())).then(() => {\n // void\n });\n }\n\n getPersistedFiles() {\n return this.files.filter((file) => file.persisted);\n }\n\n getPersistedFileNames() {\n return this.getPersistedFiles().map((file) => file.filename);\n }\n}\n","import { camelCase, pascalCase } from 'change-case-all';\n\nexport function getModuleGetName(name: string) {\n return `get${pascalCase(name)}Module`;\n}\n\nexport function getModuleCreateName(name: string) {\n return `create${pascalCase(name)}Module`;\n}\n\nexport function getModuleVariableName(name: string) {\n return camelCase(`${name}Module`);\n}\n","import { PluginType } from '@baeta/plugin';\nimport { NormalizedGeneratorOptions } from './config';\nimport { Ctx } from './ctx';\nimport { Watcher, WatcherFile } from './watcher';\n\nexport enum GeneratorPluginVersion {\n V1 = 'v1',\n}\n\nexport type GeneratorPluginV1Fn<Store = unknown> = (\n ctx: Ctx<Store>,\n next: () => Promise<void>,\n) => Promise<void>;\n\nexport type GeneratorPluginV1ReloadFn = (file: WatcherFile) => void;\n\nexport type GeneratorPluginV1WatchOptions = (\n options: NormalizedGeneratorOptions,\n watcher: Watcher,\n reload: GeneratorPluginV1ReloadFn,\n) => void;\n\nexport type GeneratorPluginV1Factory<Store = unknown> = {\n name: string;\n actionName: string;\n setup?: GeneratorPluginV1Fn<Store>;\n generate?: GeneratorPluginV1Fn<Store>;\n end?: GeneratorPluginV1Fn<Store>;\n watch?: GeneratorPluginV1WatchOptions;\n};\n\nexport interface GeneratorPluginV1<Store = unknown> {\n name: string;\n actionName: string;\n version: GeneratorPluginVersion.V1;\n type: PluginType.Generator;\n setup: GeneratorPluginV1Fn<Store>;\n generate: GeneratorPluginV1Fn<Store>;\n end: GeneratorPluginV1Fn<Store>;\n watch: GeneratorPluginV1WatchOptions;\n}\n\nconst defaultPluginFn: GeneratorPluginV1Fn<unknown> = async (ctx, next) => {\n return next();\n};\n\nconst defaultWatchFn = () => ({ include: [], ignore: [] });\n\nexport function createPluginV1<Store = {}>(\n options: GeneratorPluginV1Factory<Store>,\n): GeneratorPluginV1<Store> {\n return {\n name: options.name,\n actionName: options.actionName,\n version: GeneratorPluginVersion.V1,\n type: PluginType.Generator,\n end: options.end ?? defaultPluginFn,\n generate: options.generate ?? defaultPluginFn,\n setup: options.setup ?? defaultPluginFn,\n watch: options.watch ?? defaultWatchFn,\n };\n}\n\nexport function isGeneratorPlugin(plugin: {\n type: PluginType;\n}): plugin is GeneratorPluginV1<unknown> {\n return plugin.type === PluginType.Generator;\n}\n\nexport function getGeneratorPlugins(plugins?: Array<{ type: PluginType }>) {\n if (!plugins) {\n return [];\n }\n return plugins.filter(isGeneratorPlugin);\n}\n","import path, { posixPath } from '@baeta/util-path';\nimport { AsyncSubscription, Event, EventType, Options, subscribe } from '@parcel/watcher';\nimport micromatch from 'micromatch';\nimport { MatchPattern, WatcherIgnore } from './watcher-ignore';\n\nexport { micromatch };\nexport const isMatch = micromatch.isMatch;\n\nexport type WatcherListener = (path: WatcherFile) => void;\n\nexport interface WatcherFile {\n type: EventType;\n path: string;\n relativePath: string;\n}\nexport class Watcher {\n private subscription: AsyncSubscription;\n\n private listeners: Record<EventType, WatcherListener[]> = {\n create: [],\n update: [],\n delete: [],\n };\n\n private watcherIgnore: WatcherIgnore;\n\n constructor(\n private readonly cwd: string,\n private readonly options?: Options,\n ) {\n this.watcherIgnore = new WatcherIgnore(cwd);\n this.subscription = this.createSubscription();\n }\n\n onEvents = (err: Error | null, events: Event[]) => {\n if (err) {\n console.error(err);\n return;\n }\n\n const filteredEvents = events.filter((event) => {\n return !this.watcherIgnore.isIgnored(posixPath(event.path));\n });\n\n for (const event of filteredEvents) {\n for (const listener of this.listeners[event.type]) {\n listener({\n type: event.type,\n path: posixPath(event.path),\n relativePath: posixPath(path.relative(this.cwd, event.path)),\n });\n }\n }\n };\n\n on(event: EventType, listener: WatcherListener) {\n this.listeners[event].push(listener);\n }\n\n off(event: EventType, listener: WatcherListener) {\n this.listeners[event] = this.listeners[event].filter((l) => l !== listener);\n }\n\n ignore(pattern: MatchPattern) {\n this.watcherIgnore.ignore(pattern);\n }\n\n unignore(pattern: MatchPattern) {\n this.watcherIgnore.unignore(pattern);\n }\n\n createSubscription() {\n const promise = subscribe(this.cwd, this.onEvents, this.options);\n\n const unsubscribe = async () => {\n const subscription = await promise;\n await subscription.unsubscribe();\n };\n\n return {\n unsubscribe,\n };\n }\n\n close() {\n return this.subscription.unsubscribe();\n }\n}\n","import path from '@baeta/util-path';\nimport micromatch from 'micromatch';\n\nexport type MatchFn = (testString: string) => boolean;\nexport type MatchPattern = string | RegExp | MatchFn;\n\nexport class WatcherIgnore {\n private files: string[] = [];\n private regexps: RegExp[] = [];\n private functions: MatchFn[] = [];\n\n private globs: MatchFn[] = [];\n private globsMap = new Map<string, MatchFn>();\n\n constructor(private readonly cwd: string) {}\n\n ignore(pattern: MatchPattern) {\n if (pattern instanceof RegExp) {\n this.regexps.push(pattern);\n return;\n }\n\n if (typeof pattern === 'function') {\n this.functions.push(pattern);\n return;\n }\n\n if (!this.isMicromatch(pattern)) {\n this.files.push(this.resolveFile(pattern));\n return;\n }\n\n this.globsMap.set(pattern, micromatch.matcher(pattern));\n this.globs = Array.from(this.globsMap.values());\n }\n\n isMicromatch(pattern: string) {\n const result = micromatch.scan(pattern);\n return result.isBrace || result.isGlobstar || result.isExtglob || result.isGlob;\n }\n\n resolveFile(file: string) {\n return path.isAbsolute(file) ? file : path.join(this.cwd, file);\n }\n\n unignore(pattern: MatchPattern) {\n if (pattern instanceof RegExp) {\n this.regexps = this.regexps.filter((p) => p !== pattern);\n return;\n }\n\n if (typeof pattern === 'function') {\n this.functions = this.functions.filter((p) => p !== pattern);\n return;\n }\n\n if (!this.isMicromatch(pattern)) {\n const file = this.resolveFile(pattern);\n this.files = this.files.filter((p) => p !== file);\n return;\n }\n\n this.globsMap.delete(pattern);\n this.globs = Array.from(this.globsMap.values());\n }\n\n isIgnored(path: string) {\n if (this.files.includes(path)) {\n return true;\n }\n\n if (this.globs.some((f) => f(path))) {\n return true;\n }\n\n if (this.regexps.some((r) => r.test(path))) {\n return true;\n }\n\n if (this.functions.some((f) => f(path))) {\n return true;\n }\n\n return false;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../lib/config.ts","../lib/file.ts","../lib/file-manager.ts","../lib/module.ts","../lib/plugin.ts","../lib/watcher.ts","../lib/watcher-ignore.ts"],"names":["GeneratorPluginVersion","path","posixPath","micromatch"],"mappings":"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","sourcesContent":["import { isAbsolute, join, posixPath, relative, resolve } from '@baeta/util-path';\nimport { FileOptions } from './file';\n\n/**\n * Options for the graphql generator.\n */\nexport interface GeneratorOptions {\n /**\n * Current working directory.\n * @default process.cwd()\n */\n cwd?: string;\n\n /**\n * Glob pattern(s) to load graphql schema files.\n * @default ['src/∗∗/∗.graphql']\n */\n schemas: string[];\n\n /**\n * Directory where modules are defined.\n * @default 'src/modules'\n */\n modulesDir?: string;\n\n /**\n * Name for the generated module definition file. This will contain type definitions and the graphql ast.\n * @default 'typedef.ts'\n */\n moduleDefinitionName?: string;\n\n /**\n * Path for the generated base types file.\n * @default `${modulesDir}/../__generated__/types.ts`\n */\n baseTypesPath?: string;\n\n /**\n * Path where the context type is exported.\n * @example 'src/types/context#Context' // for named export\n * @example 'src/types/context' // for default export\n * @default undefined\n */\n contextType?: string;\n\n /**\n * Path where extensions (ex. auth-extension) are exported. Only default export is supported.\n * @example 'src/extensions'\n * @default undefined\n */\n extensions?: string;\n\n /**\n * Custom scalar mappings.\n * @example { DateTime: 'Date' }\n * @default undefined\n */\n scalars?: Record<string, string>;\n\n /**\n * Options for generated files.\n */\n fileOptions?: FileOptions;\n}\n\nexport interface NormalizedGeneratorOptions {\n cwd: string;\n schemas: string[];\n modulesDir: string;\n moduleDefinitionName: string;\n baseTypesPath: string;\n contextType?: string;\n extensions?: string;\n scalars?: Record<string, string>;\n fileOptions?: FileOptions;\n}\n\nexport function loadOptions(options: GeneratorOptions): NormalizedGeneratorOptions {\n const cwd = posixPath(options.cwd ?? process.cwd());\n const schemas = options.schemas ?? ['src/**/*.graphql'];\n const modulesDir = posixPath(resolve(cwd, options.modulesDir || 'src/modules'));\n const moduleDefinitionName = options.moduleDefinitionName || 'typedef.ts';\n\n const defaultBaseTypesRoot = resolve(modulesDir, '../__generated__/types.ts');\n const baseTypesRoot = resolve(cwd, options.baseTypesPath || defaultBaseTypesRoot);\n const baseTypesPath = posixPath(relative(modulesDir, baseTypesRoot));\n\n const contextType = resolveContextType(cwd, baseTypesRoot, options.contextType);\n const extensions = resolveExtensionPath(modulesDir, moduleDefinitionName, options.extensions);\n\n return {\n cwd,\n schemas,\n modulesDir,\n moduleDefinitionName,\n baseTypesPath,\n contextType,\n extensions,\n scalars: options.scalars,\n fileOptions: options.fileOptions,\n };\n}\n\nfunction resolveContextType(root: string, baseTypesRoot: string, contextType?: string) {\n if (!contextType) {\n return;\n }\n\n if (isAbsolute(contextType)) {\n return contextType;\n }\n\n if (contextType[0] === '!') {\n return contextType.slice(1);\n }\n\n const contextTypeRoot = resolve(root, contextType);\n\n return posixPath(relative(join(baseTypesRoot, '../'), contextTypeRoot));\n}\n\nfunction resolveExtensionPath(\n modulesDir: string,\n moduleDefinitionName: string,\n extensionsPath?: string,\n) {\n if (!extensionsPath) {\n return;\n }\n\n if (isAbsolute(extensionsPath)) {\n return extensionsPath;\n }\n\n if (extensionsPath[0] === '!') {\n return extensionsPath.slice(1);\n }\n\n return posixPath(relative(join(modulesDir, moduleDefinitionName), extensionsPath));\n}\n","import { dirname, extname } from '@baeta/util-path';\nimport fs from 'node:fs/promises';\n\n/**\n * Options for generated files.\n */\nexport interface FileOptions {\n /**\n * Add generation notice at the beginning of the file.\n * @default true\n */\n addGenerationNoticeHeader?: boolean;\n\n /**\n * Add eslint-disable comment at the beginning of the file.\n * @default true\n */\n addEslintDisableHeader?: boolean;\n\n /**\n * Add custom header at the beginning of the file.\n */\n addHeader?: (name: string, content: string, tag: string) => string;\n\n /**\n * Edit the content of the file before writing it.\n */\n transformContent?: (name: string, content: string, tag: string) => string | Promise<string>;\n}\n\nexport class File {\n persisted = false;\n\n constructor(\n public filename: string,\n public content: string,\n public tag: string,\n private options?: FileOptions,\n ) {}\n\n write = async () => {\n if (this.persisted) {\n return;\n }\n this.persisted = true;\n\n const dir = dirname(this.filename);\n await fs.mkdir(dir, { recursive: true });\n\n const content = await this.buildContent();\n\n return fs.writeFile(this.filename, content, 'utf-8');\n };\n\n unlink = async () => {\n this.persisted = false;\n return fs.unlink(this.filename);\n };\n\n private async buildContent() {\n const content = this.buildHeader() + this.content;\n\n if (this.options?.transformContent) {\n return this.options.transformContent(this.filename, content, this.tag);\n }\n\n return content;\n }\n\n protected buildHeader() {\n const headerItems: string[] = [];\n\n if (this.options?.addGenerationNoticeHeader !== false) {\n const comment = this.createComment(\n 'This file was generated by Baeta. Do not edit it directly. All changes will be overwritten by the generator.',\n );\n headerItems.push(comment);\n }\n\n if (this.options?.addEslintDisableHeader !== false) {\n const comment = this.createComment('eslint-disable');\n headerItems.push(comment);\n }\n\n if (this.options?.addHeader) {\n const customHeader = this.options.addHeader(this.filename, this.content, this.tag);\n headerItems.push(customHeader);\n }\n\n if (headerItems.length === 0) {\n return '';\n }\n\n return `${headerItems.join('\\n')}\\n\\n`;\n }\n\n protected createComment(comment: string) {\n const extension = extname(this.filename);\n\n if (['.gql', '.graphql'].includes(extension)) {\n return `# ${comment}`;\n }\n\n return `/* ${comment} */`;\n }\n}\n","import { File, FileOptions } from './file';\n\nexport class FileManager {\n files: File[] = [];\n\n constructor(private fileOptions?: FileOptions) {}\n\n createAndAdd(filename: string, content: string, tag: string) {\n const file = new File(filename, content, tag, this.fileOptions);\n this.add(file);\n return file;\n }\n\n add(...file: File[]) {\n this.files.push(...file);\n }\n\n get(filename: string) {\n return this.files.find((file) => file.filename === filename);\n }\n\n getAll() {\n return this.files;\n }\n\n getByTag(tag: string) {\n return this.files.filter((file) => file.tag === tag);\n }\n\n remove(filename: string) {\n const index = this.files.findIndex((file) => file.filename === filename);\n this.files.splice(index, 1);\n }\n\n removeAll() {\n this.files = [];\n }\n\n removeByTag(tag: string) {\n this.files = this.files.filter((file) => file.tag !== tag);\n }\n\n writeAll() {\n const toWrite = this.files.filter((file) => !file.persisted);\n return Promise.all(toWrite.map((file) => file.write()));\n }\n\n writeByTag(tag: string) {\n const files = this.getByTag(tag);\n const toWrite = files.filter((file) => !file.persisted);\n return Promise.all(toWrite.map((file) => file.write()));\n }\n\n unlinkAll() {\n return Promise.all(this.files.map((file) => file.unlink())).then(() => {\n // void\n });\n }\n\n getPersistedFiles() {\n return this.files.filter((file) => file.persisted);\n }\n\n getPersistedFileNames() {\n return this.getPersistedFiles().map((file) => file.filename);\n }\n}\n","import { camelCase, pascalCase } from 'change-case-all';\n\nexport function getModuleGetName(name: string) {\n return `get${pascalCase(name)}Module`;\n}\n\nexport function getModuleCreateName(name: string) {\n return `create${pascalCase(name)}Module`;\n}\n\nexport function getModuleVariableName(name: string) {\n return camelCase(`${name}Module`);\n}\n","import { PluginType } from '@baeta/plugin';\nimport { NormalizedGeneratorOptions } from './config';\nimport { Ctx } from './ctx';\nimport { Watcher, WatcherFile } from './watcher';\n\nexport enum GeneratorPluginVersion {\n V1 = 'v1',\n}\n\nexport type GeneratorPluginV1Fn<Store = unknown> = (\n ctx: Ctx<Store>,\n next: () => Promise<void>,\n) => Promise<void>;\n\nexport type GeneratorPluginV1ReloadFn = (file: WatcherFile) => void;\n\nexport type GeneratorPluginV1WatchOptions = (\n options: NormalizedGeneratorOptions,\n watcher: Watcher,\n reload: GeneratorPluginV1ReloadFn,\n) => void;\n\nexport type GeneratorPluginV1Factory<Store = unknown> = {\n name: string;\n actionName: string;\n setup?: GeneratorPluginV1Fn<Store>;\n generate?: GeneratorPluginV1Fn<Store>;\n end?: GeneratorPluginV1Fn<Store>;\n watch?: GeneratorPluginV1WatchOptions;\n};\n\nexport interface GeneratorPluginV1<Store = unknown> {\n name: string;\n actionName: string;\n version: GeneratorPluginVersion.V1;\n type: PluginType.Generator;\n setup: GeneratorPluginV1Fn<Store>;\n generate: GeneratorPluginV1Fn<Store>;\n end: GeneratorPluginV1Fn<Store>;\n watch: GeneratorPluginV1WatchOptions;\n}\n\nconst defaultPluginFn: GeneratorPluginV1Fn<unknown> = async (ctx, next) => {\n return next();\n};\n\nconst defaultWatchFn = () => ({ include: [], ignore: [] });\n\nexport function createPluginV1<Store = {}>(\n options: GeneratorPluginV1Factory<Store>,\n): GeneratorPluginV1<Store> {\n return {\n name: options.name,\n actionName: options.actionName,\n version: GeneratorPluginVersion.V1,\n type: PluginType.Generator,\n end: options.end ?? defaultPluginFn,\n generate: options.generate ?? defaultPluginFn,\n setup: options.setup ?? defaultPluginFn,\n watch: options.watch ?? defaultWatchFn,\n };\n}\n\nexport function isGeneratorPlugin(plugin: {\n type: PluginType;\n}): plugin is GeneratorPluginV1<unknown> {\n return plugin.type === PluginType.Generator;\n}\n\nexport function getGeneratorPlugins(plugins?: Array<{ type: PluginType }>) {\n if (!plugins) {\n return [];\n }\n return plugins.filter(isGeneratorPlugin);\n}\n","import path, { posixPath } from '@baeta/util-path';\nimport { AsyncSubscription, Event, EventType, Options, subscribe } from '@parcel/watcher';\nimport micromatch from 'micromatch';\nimport { MatchPattern, WatcherIgnore } from './watcher-ignore';\n\nexport { micromatch };\nexport const isMatch = micromatch.isMatch;\n\nexport type WatcherListener = (path: WatcherFile) => void;\n\nexport interface WatcherFile {\n type: EventType;\n path: string;\n relativePath: string;\n}\nexport class Watcher {\n private subscription: AsyncSubscription;\n\n private listeners: Record<EventType, WatcherListener[]> = {\n create: [],\n update: [],\n delete: [],\n };\n\n private watcherIgnore: WatcherIgnore;\n\n constructor(\n private readonly cwd: string,\n private readonly options?: Options,\n ) {\n this.watcherIgnore = new WatcherIgnore(cwd);\n this.subscription = this.createSubscription();\n }\n\n onEvents = (err: Error | null, events: Event[]) => {\n if (err) {\n console.error(err);\n return;\n }\n\n const filteredEvents = events.filter((event) => {\n return !this.watcherIgnore.isIgnored(posixPath(event.path));\n });\n\n for (const event of filteredEvents) {\n for (const listener of this.listeners[event.type]) {\n listener({\n type: event.type,\n path: posixPath(event.path),\n relativePath: posixPath(path.relative(this.cwd, event.path)),\n });\n }\n }\n };\n\n on(event: EventType, listener: WatcherListener) {\n this.listeners[event].push(listener);\n }\n\n off(event: EventType, listener: WatcherListener) {\n this.listeners[event] = this.listeners[event].filter((l) => l !== listener);\n }\n\n ignore(pattern: MatchPattern) {\n this.watcherIgnore.ignore(pattern);\n }\n\n unignore(pattern: MatchPattern) {\n this.watcherIgnore.unignore(pattern);\n }\n\n createSubscription() {\n const promise = subscribe(this.cwd, this.onEvents, this.options);\n\n const unsubscribe = async () => {\n const subscription = await promise;\n await subscription.unsubscribe();\n };\n\n return {\n unsubscribe,\n };\n }\n\n close() {\n return this.subscription.unsubscribe();\n }\n}\n","import path from '@baeta/util-path';\nimport micromatch from 'micromatch';\n\nexport type MatchFn = (testString: string) => boolean;\nexport type MatchPattern = string | RegExp | MatchFn;\n\nexport class WatcherIgnore {\n private files: string[] = [];\n private regexps: RegExp[] = [];\n private functions: MatchFn[] = [];\n\n private globs: MatchFn[] = [];\n private globsMap = new Map<string, MatchFn>();\n\n constructor(private readonly cwd: string) {}\n\n ignore(pattern: MatchPattern) {\n if (pattern instanceof RegExp) {\n this.regexps.push(pattern);\n return;\n }\n\n if (typeof pattern === 'function') {\n this.functions.push(pattern);\n return;\n }\n\n if (!this.isMicromatch(pattern)) {\n this.files.push(this.resolveFile(pattern));\n return;\n }\n\n this.globsMap.set(pattern, micromatch.matcher(pattern));\n this.globs = Array.from(this.globsMap.values());\n }\n\n isMicromatch(pattern: string) {\n const result = micromatch.scan(pattern);\n return result.isBrace || result.isGlobstar || result.isExtglob || result.isGlob;\n }\n\n resolveFile(file: string) {\n return path.isAbsolute(file) ? file : path.join(this.cwd, file);\n }\n\n unignore(pattern: MatchPattern) {\n if (pattern instanceof RegExp) {\n this.regexps = this.regexps.filter((p) => p !== pattern);\n return;\n }\n\n if (typeof pattern === 'function') {\n this.functions = this.functions.filter((p) => p !== pattern);\n return;\n }\n\n if (!this.isMicromatch(pattern)) {\n const file = this.resolveFile(pattern);\n this.files = this.files.filter((p) => p !== file);\n return;\n }\n\n this.globsMap.delete(pattern);\n this.globs = Array.from(this.globsMap.values());\n }\n\n isIgnored(path: string) {\n if (this.files.includes(path)) {\n return true;\n }\n\n if (this.globs.some((f) => f(path))) {\n return true;\n }\n\n if (this.regexps.some((r) => r.test(path))) {\n return true;\n }\n\n if (this.functions.some((f) => f(path))) {\n return true;\n }\n\n return false;\n }\n}\n"]}
|
package/dist/index.d.cts
CHANGED
|
@@ -3,10 +3,27 @@ import micromatch from 'micromatch';
|
|
|
3
3
|
export { default as micromatch } from 'micromatch';
|
|
4
4
|
import { PluginType } from '@baeta/plugin';
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* Options for generated files.
|
|
8
|
+
*/
|
|
6
9
|
interface FileOptions {
|
|
7
|
-
|
|
8
|
-
|
|
10
|
+
/**
|
|
11
|
+
* Add generation notice at the beginning of the file.
|
|
12
|
+
* @default true
|
|
13
|
+
*/
|
|
14
|
+
addGenerationNoticeHeader?: boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Add eslint-disable comment at the beginning of the file.
|
|
17
|
+
* @default true
|
|
18
|
+
*/
|
|
19
|
+
addEslintDisableHeader?: boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Add custom header at the beginning of the file.
|
|
22
|
+
*/
|
|
9
23
|
addHeader?: (name: string, content: string, tag: string) => string;
|
|
24
|
+
/**
|
|
25
|
+
* Edit the content of the file before writing it.
|
|
26
|
+
*/
|
|
10
27
|
transformContent?: (name: string, content: string, tag: string) => string | Promise<string>;
|
|
11
28
|
}
|
|
12
29
|
declare class File {
|
|
@@ -20,18 +37,60 @@ declare class File {
|
|
|
20
37
|
unlink: () => Promise<void>;
|
|
21
38
|
private buildContent;
|
|
22
39
|
protected buildHeader(): string;
|
|
23
|
-
protected createComment(comment: string
|
|
40
|
+
protected createComment(comment: string): string;
|
|
24
41
|
}
|
|
25
42
|
|
|
43
|
+
/**
|
|
44
|
+
* Options for the graphql generator.
|
|
45
|
+
*/
|
|
26
46
|
interface GeneratorOptions {
|
|
47
|
+
/**
|
|
48
|
+
* Current working directory.
|
|
49
|
+
* @default process.cwd()
|
|
50
|
+
*/
|
|
27
51
|
cwd?: string;
|
|
52
|
+
/**
|
|
53
|
+
* Glob pattern(s) to load graphql schema files.
|
|
54
|
+
* @default ['src/∗∗/∗.graphql']
|
|
55
|
+
*/
|
|
28
56
|
schemas: string[];
|
|
57
|
+
/**
|
|
58
|
+
* Directory where modules are defined.
|
|
59
|
+
* @default 'src/modules'
|
|
60
|
+
*/
|
|
29
61
|
modulesDir?: string;
|
|
62
|
+
/**
|
|
63
|
+
* Name for the generated module definition file. This will contain type definitions and the graphql ast.
|
|
64
|
+
* @default 'typedef.ts'
|
|
65
|
+
*/
|
|
30
66
|
moduleDefinitionName?: string;
|
|
67
|
+
/**
|
|
68
|
+
* Path for the generated base types file.
|
|
69
|
+
* @default `${modulesDir}/../__generated__/types.ts`
|
|
70
|
+
*/
|
|
31
71
|
baseTypesPath?: string;
|
|
72
|
+
/**
|
|
73
|
+
* Path where the context type is exported.
|
|
74
|
+
* @example 'src/types/context#Context' // for named export
|
|
75
|
+
* @example 'src/types/context' // for default export
|
|
76
|
+
* @default undefined
|
|
77
|
+
*/
|
|
32
78
|
contextType?: string;
|
|
79
|
+
/**
|
|
80
|
+
* Path where extensions (ex. auth-extension) are exported. Only default export is supported.
|
|
81
|
+
* @example 'src/extensions'
|
|
82
|
+
* @default undefined
|
|
83
|
+
*/
|
|
33
84
|
extensions?: string;
|
|
85
|
+
/**
|
|
86
|
+
* Custom scalar mappings.
|
|
87
|
+
* @example { DateTime: 'Date' }
|
|
88
|
+
* @default undefined
|
|
89
|
+
*/
|
|
34
90
|
scalars?: Record<string, string>;
|
|
91
|
+
/**
|
|
92
|
+
* Options for generated files.
|
|
93
|
+
*/
|
|
35
94
|
fileOptions?: FileOptions;
|
|
36
95
|
}
|
|
37
96
|
interface NormalizedGeneratorOptions {
|
|
@@ -45,6 +104,7 @@ interface NormalizedGeneratorOptions {
|
|
|
45
104
|
scalars?: Record<string, string>;
|
|
46
105
|
fileOptions?: FileOptions;
|
|
47
106
|
}
|
|
107
|
+
declare function loadOptions(options: GeneratorOptions): NormalizedGeneratorOptions;
|
|
48
108
|
|
|
49
109
|
declare class FileManager {
|
|
50
110
|
private fileOptions?;
|
|
@@ -140,4 +200,4 @@ declare function getGeneratorPlugins(plugins?: Array<{
|
|
|
140
200
|
type: PluginType;
|
|
141
201
|
}>): GeneratorPluginV1<unknown>[];
|
|
142
202
|
|
|
143
|
-
export { type Ctx, File, FileManager, type FileOptions, type GeneratorOptions, type GeneratorPluginV1, type GeneratorPluginV1Factory, type GeneratorPluginV1Fn, type GeneratorPluginV1ReloadFn, type GeneratorPluginV1WatchOptions, GeneratorPluginVersion, type NormalizedGeneratorOptions, Watcher, type WatcherFile, type WatcherListener, createPluginV1, getGeneratorPlugins, getModuleCreateName, getModuleGetName, getModuleVariableName, isGeneratorPlugin, isMatch };
|
|
203
|
+
export { type Ctx, File, FileManager, type FileOptions, type GeneratorOptions, type GeneratorPluginV1, type GeneratorPluginV1Factory, type GeneratorPluginV1Fn, type GeneratorPluginV1ReloadFn, type GeneratorPluginV1WatchOptions, GeneratorPluginVersion, type NormalizedGeneratorOptions, Watcher, type WatcherFile, type WatcherListener, createPluginV1, getGeneratorPlugins, getModuleCreateName, getModuleGetName, getModuleVariableName, isGeneratorPlugin, isMatch, loadOptions };
|
package/dist/index.d.ts
CHANGED
|
@@ -3,10 +3,27 @@ import micromatch from 'micromatch';
|
|
|
3
3
|
export { default as micromatch } from 'micromatch';
|
|
4
4
|
import { PluginType } from '@baeta/plugin';
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* Options for generated files.
|
|
8
|
+
*/
|
|
6
9
|
interface FileOptions {
|
|
7
|
-
|
|
8
|
-
|
|
10
|
+
/**
|
|
11
|
+
* Add generation notice at the beginning of the file.
|
|
12
|
+
* @default true
|
|
13
|
+
*/
|
|
14
|
+
addGenerationNoticeHeader?: boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Add eslint-disable comment at the beginning of the file.
|
|
17
|
+
* @default true
|
|
18
|
+
*/
|
|
19
|
+
addEslintDisableHeader?: boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Add custom header at the beginning of the file.
|
|
22
|
+
*/
|
|
9
23
|
addHeader?: (name: string, content: string, tag: string) => string;
|
|
24
|
+
/**
|
|
25
|
+
* Edit the content of the file before writing it.
|
|
26
|
+
*/
|
|
10
27
|
transformContent?: (name: string, content: string, tag: string) => string | Promise<string>;
|
|
11
28
|
}
|
|
12
29
|
declare class File {
|
|
@@ -20,18 +37,60 @@ declare class File {
|
|
|
20
37
|
unlink: () => Promise<void>;
|
|
21
38
|
private buildContent;
|
|
22
39
|
protected buildHeader(): string;
|
|
23
|
-
protected createComment(comment: string
|
|
40
|
+
protected createComment(comment: string): string;
|
|
24
41
|
}
|
|
25
42
|
|
|
43
|
+
/**
|
|
44
|
+
* Options for the graphql generator.
|
|
45
|
+
*/
|
|
26
46
|
interface GeneratorOptions {
|
|
47
|
+
/**
|
|
48
|
+
* Current working directory.
|
|
49
|
+
* @default process.cwd()
|
|
50
|
+
*/
|
|
27
51
|
cwd?: string;
|
|
52
|
+
/**
|
|
53
|
+
* Glob pattern(s) to load graphql schema files.
|
|
54
|
+
* @default ['src/∗∗/∗.graphql']
|
|
55
|
+
*/
|
|
28
56
|
schemas: string[];
|
|
57
|
+
/**
|
|
58
|
+
* Directory where modules are defined.
|
|
59
|
+
* @default 'src/modules'
|
|
60
|
+
*/
|
|
29
61
|
modulesDir?: string;
|
|
62
|
+
/**
|
|
63
|
+
* Name for the generated module definition file. This will contain type definitions and the graphql ast.
|
|
64
|
+
* @default 'typedef.ts'
|
|
65
|
+
*/
|
|
30
66
|
moduleDefinitionName?: string;
|
|
67
|
+
/**
|
|
68
|
+
* Path for the generated base types file.
|
|
69
|
+
* @default `${modulesDir}/../__generated__/types.ts`
|
|
70
|
+
*/
|
|
31
71
|
baseTypesPath?: string;
|
|
72
|
+
/**
|
|
73
|
+
* Path where the context type is exported.
|
|
74
|
+
* @example 'src/types/context#Context' // for named export
|
|
75
|
+
* @example 'src/types/context' // for default export
|
|
76
|
+
* @default undefined
|
|
77
|
+
*/
|
|
32
78
|
contextType?: string;
|
|
79
|
+
/**
|
|
80
|
+
* Path where extensions (ex. auth-extension) are exported. Only default export is supported.
|
|
81
|
+
* @example 'src/extensions'
|
|
82
|
+
* @default undefined
|
|
83
|
+
*/
|
|
33
84
|
extensions?: string;
|
|
85
|
+
/**
|
|
86
|
+
* Custom scalar mappings.
|
|
87
|
+
* @example { DateTime: 'Date' }
|
|
88
|
+
* @default undefined
|
|
89
|
+
*/
|
|
34
90
|
scalars?: Record<string, string>;
|
|
91
|
+
/**
|
|
92
|
+
* Options for generated files.
|
|
93
|
+
*/
|
|
35
94
|
fileOptions?: FileOptions;
|
|
36
95
|
}
|
|
37
96
|
interface NormalizedGeneratorOptions {
|
|
@@ -45,6 +104,7 @@ interface NormalizedGeneratorOptions {
|
|
|
45
104
|
scalars?: Record<string, string>;
|
|
46
105
|
fileOptions?: FileOptions;
|
|
47
106
|
}
|
|
107
|
+
declare function loadOptions(options: GeneratorOptions): NormalizedGeneratorOptions;
|
|
48
108
|
|
|
49
109
|
declare class FileManager {
|
|
50
110
|
private fileOptions?;
|
|
@@ -140,4 +200,4 @@ declare function getGeneratorPlugins(plugins?: Array<{
|
|
|
140
200
|
type: PluginType;
|
|
141
201
|
}>): GeneratorPluginV1<unknown>[];
|
|
142
202
|
|
|
143
|
-
export { type Ctx, File, FileManager, type FileOptions, type GeneratorOptions, type GeneratorPluginV1, type GeneratorPluginV1Factory, type GeneratorPluginV1Fn, type GeneratorPluginV1ReloadFn, type GeneratorPluginV1WatchOptions, GeneratorPluginVersion, type NormalizedGeneratorOptions, Watcher, type WatcherFile, type WatcherListener, createPluginV1, getGeneratorPlugins, getModuleCreateName, getModuleGetName, getModuleVariableName, isGeneratorPlugin, isMatch };
|
|
203
|
+
export { type Ctx, File, FileManager, type FileOptions, type GeneratorOptions, type GeneratorPluginV1, type GeneratorPluginV1Factory, type GeneratorPluginV1Fn, type GeneratorPluginV1ReloadFn, type GeneratorPluginV1WatchOptions, GeneratorPluginVersion, type NormalizedGeneratorOptions, Watcher, type WatcherFile, type WatcherListener, createPluginV1, getGeneratorPlugins, getModuleCreateName, getModuleGetName, getModuleVariableName, isGeneratorPlugin, isMatch, loadOptions };
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,56 @@
|
|
|
1
|
+
// lib/config.ts
|
|
2
|
+
import { isAbsolute, join, posixPath, relative, resolve } from "@baeta/util-path";
|
|
3
|
+
function loadOptions(options) {
|
|
4
|
+
const cwd = posixPath(options.cwd ?? process.cwd());
|
|
5
|
+
const schemas = options.schemas ?? ["src/**/*.graphql"];
|
|
6
|
+
const modulesDir = posixPath(resolve(cwd, options.modulesDir || "src/modules"));
|
|
7
|
+
const moduleDefinitionName = options.moduleDefinitionName || "typedef.ts";
|
|
8
|
+
const defaultBaseTypesRoot = resolve(modulesDir, "../__generated__/types.ts");
|
|
9
|
+
const baseTypesRoot = resolve(cwd, options.baseTypesPath || defaultBaseTypesRoot);
|
|
10
|
+
const baseTypesPath = posixPath(relative(modulesDir, baseTypesRoot));
|
|
11
|
+
const contextType = resolveContextType(cwd, baseTypesRoot, options.contextType);
|
|
12
|
+
const extensions = resolveExtensionPath(modulesDir, moduleDefinitionName, options.extensions);
|
|
13
|
+
return {
|
|
14
|
+
cwd,
|
|
15
|
+
schemas,
|
|
16
|
+
modulesDir,
|
|
17
|
+
moduleDefinitionName,
|
|
18
|
+
baseTypesPath,
|
|
19
|
+
contextType,
|
|
20
|
+
extensions,
|
|
21
|
+
scalars: options.scalars,
|
|
22
|
+
fileOptions: options.fileOptions
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
function resolveContextType(root, baseTypesRoot, contextType) {
|
|
26
|
+
if (!contextType) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
if (isAbsolute(contextType)) {
|
|
30
|
+
return contextType;
|
|
31
|
+
}
|
|
32
|
+
if (contextType[0] === "!") {
|
|
33
|
+
return contextType.slice(1);
|
|
34
|
+
}
|
|
35
|
+
const contextTypeRoot = resolve(root, contextType);
|
|
36
|
+
return posixPath(relative(join(baseTypesRoot, "../"), contextTypeRoot));
|
|
37
|
+
}
|
|
38
|
+
function resolveExtensionPath(modulesDir, moduleDefinitionName, extensionsPath) {
|
|
39
|
+
if (!extensionsPath) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
if (isAbsolute(extensionsPath)) {
|
|
43
|
+
return extensionsPath;
|
|
44
|
+
}
|
|
45
|
+
if (extensionsPath[0] === "!") {
|
|
46
|
+
return extensionsPath.slice(1);
|
|
47
|
+
}
|
|
48
|
+
return posixPath(relative(join(modulesDir, moduleDefinitionName), extensionsPath));
|
|
49
|
+
}
|
|
50
|
+
|
|
1
51
|
// lib/file.ts
|
|
2
52
|
import { dirname, extname } from "@baeta/util-path";
|
|
3
|
-
import fs from "fs/promises";
|
|
53
|
+
import fs from "node:fs/promises";
|
|
4
54
|
var File = class {
|
|
5
55
|
constructor(filename, content, tag, options) {
|
|
6
56
|
this.filename = filename;
|
|
@@ -31,28 +81,30 @@ var File = class {
|
|
|
31
81
|
return content;
|
|
32
82
|
}
|
|
33
83
|
buildHeader() {
|
|
34
|
-
const ext = extname(this.filename);
|
|
35
84
|
const headerItems = [];
|
|
36
|
-
if (this.options?.
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
"This file was generated by baeta. Do not edit it directly.",
|
|
40
|
-
ext
|
|
41
|
-
)}
|
|
42
|
-
`
|
|
85
|
+
if (this.options?.addGenerationNoticeHeader !== false) {
|
|
86
|
+
const comment = this.createComment(
|
|
87
|
+
"This file was generated by Baeta. Do not edit it directly. All changes will be overwritten by the generator."
|
|
43
88
|
);
|
|
89
|
+
headerItems.push(comment);
|
|
44
90
|
}
|
|
45
|
-
if (this.options?.
|
|
46
|
-
|
|
91
|
+
if (this.options?.addEslintDisableHeader !== false) {
|
|
92
|
+
const comment = this.createComment("eslint-disable");
|
|
93
|
+
headerItems.push(comment);
|
|
47
94
|
}
|
|
48
95
|
if (this.options?.addHeader) {
|
|
49
|
-
|
|
96
|
+
const customHeader = this.options.addHeader(this.filename, this.content, this.tag);
|
|
97
|
+
headerItems.push(customHeader);
|
|
98
|
+
}
|
|
99
|
+
if (headerItems.length === 0) {
|
|
100
|
+
return "";
|
|
50
101
|
}
|
|
51
102
|
return `${headerItems.join("\n")}
|
|
52
103
|
|
|
53
104
|
`;
|
|
54
105
|
}
|
|
55
|
-
createComment(comment
|
|
106
|
+
createComment(comment) {
|
|
107
|
+
const extension = extname(this.filename);
|
|
56
108
|
if ([".gql", ".graphql"].includes(extension)) {
|
|
57
109
|
return `# ${comment}`;
|
|
58
110
|
}
|
|
@@ -159,7 +211,7 @@ function getGeneratorPlugins(plugins) {
|
|
|
159
211
|
}
|
|
160
212
|
|
|
161
213
|
// lib/watcher.ts
|
|
162
|
-
import path2, { posixPath } from "@baeta/util-path";
|
|
214
|
+
import path2, { posixPath as posixPath2 } from "@baeta/util-path";
|
|
163
215
|
import { subscribe } from "@parcel/watcher";
|
|
164
216
|
import micromatch2 from "micromatch";
|
|
165
217
|
|
|
@@ -254,14 +306,14 @@ var Watcher = class {
|
|
|
254
306
|
return;
|
|
255
307
|
}
|
|
256
308
|
const filteredEvents = events.filter((event) => {
|
|
257
|
-
return !this.watcherIgnore.isIgnored(
|
|
309
|
+
return !this.watcherIgnore.isIgnored(posixPath2(event.path));
|
|
258
310
|
});
|
|
259
311
|
for (const event of filteredEvents) {
|
|
260
312
|
for (const listener of this.listeners[event.type]) {
|
|
261
313
|
listener({
|
|
262
314
|
type: event.type,
|
|
263
|
-
path:
|
|
264
|
-
relativePath:
|
|
315
|
+
path: posixPath2(event.path),
|
|
316
|
+
relativePath: posixPath2(path2.relative(this.cwd, event.path))
|
|
265
317
|
});
|
|
266
318
|
}
|
|
267
319
|
}
|
|
@@ -304,6 +356,7 @@ export {
|
|
|
304
356
|
getModuleVariableName,
|
|
305
357
|
isGeneratorPlugin,
|
|
306
358
|
isMatch,
|
|
359
|
+
loadOptions,
|
|
307
360
|
micromatch2 as micromatch
|
|
308
361
|
};
|
|
309
362
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../lib/file.ts","../lib/file-manager.ts","../lib/module.ts","../lib/plugin.ts","../lib/watcher.ts","../lib/watcher-ignore.ts"],"sourcesContent":["import { dirname, extname } from '@baeta/util-path';\nimport fs from 'fs/promises';\n\nexport interface FileOptions {\n eslintDisable?: boolean;\n generationNotice?: boolean;\n addHeader?: (name: string, content: string, tag: string) => string;\n transformContent?: (name: string, content: string, tag: string) => string | Promise<string>;\n}\n\nexport class File {\n persisted = false;\n\n constructor(\n public filename: string,\n public content: string,\n public tag: string,\n private options?: FileOptions,\n ) {}\n\n write = async () => {\n if (this.persisted) {\n return;\n }\n this.persisted = true;\n\n const dir = dirname(this.filename);\n await fs.mkdir(dir, { recursive: true });\n\n const content = await this.buildContent();\n\n return fs.writeFile(this.filename, content, 'utf-8');\n };\n\n unlink = async () => {\n this.persisted = false;\n return fs.unlink(this.filename);\n };\n\n private async buildContent() {\n const content = this.buildHeader() + this.content;\n\n if (this.options?.transformContent) {\n return this.options.transformContent(this.filename, content, this.tag);\n }\n\n return content;\n }\n\n protected buildHeader() {\n const ext = extname(this.filename);\n\n const headerItems: string[] = [];\n\n if (this.options?.generationNotice !== false) {\n headerItems.push(\n `${this.createComment(\n 'This file was generated by baeta. Do not edit it directly.',\n ext,\n )}\\n`,\n );\n }\n\n if (this.options?.eslintDisable !== false) {\n headerItems.push(this.createComment('eslint-disable', ext));\n }\n\n if (this.options?.addHeader) {\n headerItems.push(this.options.addHeader(this.filename, this.content, this.tag));\n }\n\n return `${headerItems.join('\\n')}\\n\\n`;\n }\n\n protected createComment(comment: string, extension: string) {\n if (['.gql', '.graphql'].includes(extension)) {\n return `# ${comment}`;\n }\n\n return `/* ${comment} */`;\n }\n}\n","import { File, FileOptions } from './file';\n\nexport class FileManager {\n files: File[] = [];\n\n constructor(private fileOptions?: FileOptions) {}\n\n createAndAdd(filename: string, content: string, tag: string) {\n const file = new File(filename, content, tag, this.fileOptions);\n this.add(file);\n return file;\n }\n\n add(...file: File[]) {\n this.files.push(...file);\n }\n\n get(filename: string) {\n return this.files.find((file) => file.filename === filename);\n }\n\n getAll() {\n return this.files;\n }\n\n getByTag(tag: string) {\n return this.files.filter((file) => file.tag === tag);\n }\n\n remove(filename: string) {\n const index = this.files.findIndex((file) => file.filename === filename);\n this.files.splice(index, 1);\n }\n\n removeAll() {\n this.files = [];\n }\n\n removeByTag(tag: string) {\n this.files = this.files.filter((file) => file.tag !== tag);\n }\n\n writeAll() {\n const toWrite = this.files.filter((file) => !file.persisted);\n return Promise.all(toWrite.map((file) => file.write()));\n }\n\n writeByTag(tag: string) {\n const files = this.getByTag(tag);\n const toWrite = files.filter((file) => !file.persisted);\n return Promise.all(toWrite.map((file) => file.write()));\n }\n\n unlinkAll() {\n return Promise.all(this.files.map((file) => file.unlink())).then(() => {\n // void\n });\n }\n\n getPersistedFiles() {\n return this.files.filter((file) => file.persisted);\n }\n\n getPersistedFileNames() {\n return this.getPersistedFiles().map((file) => file.filename);\n }\n}\n","import { camelCase, pascalCase } from 'change-case-all';\n\nexport function getModuleGetName(name: string) {\n return `get${pascalCase(name)}Module`;\n}\n\nexport function getModuleCreateName(name: string) {\n return `create${pascalCase(name)}Module`;\n}\n\nexport function getModuleVariableName(name: string) {\n return camelCase(`${name}Module`);\n}\n","import { PluginType } from '@baeta/plugin';\nimport { NormalizedGeneratorOptions } from './config';\nimport { Ctx } from './ctx';\nimport { Watcher, WatcherFile } from './watcher';\n\nexport enum GeneratorPluginVersion {\n V1 = 'v1',\n}\n\nexport type GeneratorPluginV1Fn<Store = unknown> = (\n ctx: Ctx<Store>,\n next: () => Promise<void>,\n) => Promise<void>;\n\nexport type GeneratorPluginV1ReloadFn = (file: WatcherFile) => void;\n\nexport type GeneratorPluginV1WatchOptions = (\n options: NormalizedGeneratorOptions,\n watcher: Watcher,\n reload: GeneratorPluginV1ReloadFn,\n) => void;\n\nexport type GeneratorPluginV1Factory<Store = unknown> = {\n name: string;\n actionName: string;\n setup?: GeneratorPluginV1Fn<Store>;\n generate?: GeneratorPluginV1Fn<Store>;\n end?: GeneratorPluginV1Fn<Store>;\n watch?: GeneratorPluginV1WatchOptions;\n};\n\nexport interface GeneratorPluginV1<Store = unknown> {\n name: string;\n actionName: string;\n version: GeneratorPluginVersion.V1;\n type: PluginType.Generator;\n setup: GeneratorPluginV1Fn<Store>;\n generate: GeneratorPluginV1Fn<Store>;\n end: GeneratorPluginV1Fn<Store>;\n watch: GeneratorPluginV1WatchOptions;\n}\n\nconst defaultPluginFn: GeneratorPluginV1Fn<unknown> = async (ctx, next) => {\n return next();\n};\n\nconst defaultWatchFn = () => ({ include: [], ignore: [] });\n\nexport function createPluginV1<Store = {}>(\n options: GeneratorPluginV1Factory<Store>,\n): GeneratorPluginV1<Store> {\n return {\n name: options.name,\n actionName: options.actionName,\n version: GeneratorPluginVersion.V1,\n type: PluginType.Generator,\n end: options.end ?? defaultPluginFn,\n generate: options.generate ?? defaultPluginFn,\n setup: options.setup ?? defaultPluginFn,\n watch: options.watch ?? defaultWatchFn,\n };\n}\n\nexport function isGeneratorPlugin(plugin: {\n type: PluginType;\n}): plugin is GeneratorPluginV1<unknown> {\n return plugin.type === PluginType.Generator;\n}\n\nexport function getGeneratorPlugins(plugins?: Array<{ type: PluginType }>) {\n if (!plugins) {\n return [];\n }\n return plugins.filter(isGeneratorPlugin);\n}\n","import path, { posixPath } from '@baeta/util-path';\nimport { AsyncSubscription, Event, EventType, Options, subscribe } from '@parcel/watcher';\nimport micromatch from 'micromatch';\nimport { MatchPattern, WatcherIgnore } from './watcher-ignore';\n\nexport { micromatch };\nexport const isMatch = micromatch.isMatch;\n\nexport type WatcherListener = (path: WatcherFile) => void;\n\nexport interface WatcherFile {\n type: EventType;\n path: string;\n relativePath: string;\n}\nexport class Watcher {\n private subscription: AsyncSubscription;\n\n private listeners: Record<EventType, WatcherListener[]> = {\n create: [],\n update: [],\n delete: [],\n };\n\n private watcherIgnore: WatcherIgnore;\n\n constructor(\n private readonly cwd: string,\n private readonly options?: Options,\n ) {\n this.watcherIgnore = new WatcherIgnore(cwd);\n this.subscription = this.createSubscription();\n }\n\n onEvents = (err: Error | null, events: Event[]) => {\n if (err) {\n console.error(err);\n return;\n }\n\n const filteredEvents = events.filter((event) => {\n return !this.watcherIgnore.isIgnored(posixPath(event.path));\n });\n\n for (const event of filteredEvents) {\n for (const listener of this.listeners[event.type]) {\n listener({\n type: event.type,\n path: posixPath(event.path),\n relativePath: posixPath(path.relative(this.cwd, event.path)),\n });\n }\n }\n };\n\n on(event: EventType, listener: WatcherListener) {\n this.listeners[event].push(listener);\n }\n\n off(event: EventType, listener: WatcherListener) {\n this.listeners[event] = this.listeners[event].filter((l) => l !== listener);\n }\n\n ignore(pattern: MatchPattern) {\n this.watcherIgnore.ignore(pattern);\n }\n\n unignore(pattern: MatchPattern) {\n this.watcherIgnore.unignore(pattern);\n }\n\n createSubscription() {\n const promise = subscribe(this.cwd, this.onEvents, this.options);\n\n const unsubscribe = async () => {\n const subscription = await promise;\n await subscription.unsubscribe();\n };\n\n return {\n unsubscribe,\n };\n }\n\n close() {\n return this.subscription.unsubscribe();\n }\n}\n","import path from '@baeta/util-path';\nimport micromatch from 'micromatch';\n\nexport type MatchFn = (testString: string) => boolean;\nexport type MatchPattern = string | RegExp | MatchFn;\n\nexport class WatcherIgnore {\n private files: string[] = [];\n private regexps: RegExp[] = [];\n private functions: MatchFn[] = [];\n\n private globs: MatchFn[] = [];\n private globsMap = new Map<string, MatchFn>();\n\n constructor(private readonly cwd: string) {}\n\n ignore(pattern: MatchPattern) {\n if (pattern instanceof RegExp) {\n this.regexps.push(pattern);\n return;\n }\n\n if (typeof pattern === 'function') {\n this.functions.push(pattern);\n return;\n }\n\n if (!this.isMicromatch(pattern)) {\n this.files.push(this.resolveFile(pattern));\n return;\n }\n\n this.globsMap.set(pattern, micromatch.matcher(pattern));\n this.globs = Array.from(this.globsMap.values());\n }\n\n isMicromatch(pattern: string) {\n const result = micromatch.scan(pattern);\n return result.isBrace || result.isGlobstar || result.isExtglob || result.isGlob;\n }\n\n resolveFile(file: string) {\n return path.isAbsolute(file) ? file : path.join(this.cwd, file);\n }\n\n unignore(pattern: MatchPattern) {\n if (pattern instanceof RegExp) {\n this.regexps = this.regexps.filter((p) => p !== pattern);\n return;\n }\n\n if (typeof pattern === 'function') {\n this.functions = this.functions.filter((p) => p !== pattern);\n return;\n }\n\n if (!this.isMicromatch(pattern)) {\n const file = this.resolveFile(pattern);\n this.files = this.files.filter((p) => p !== file);\n return;\n }\n\n this.globsMap.delete(pattern);\n this.globs = Array.from(this.globsMap.values());\n }\n\n isIgnored(path: string) {\n if (this.files.includes(path)) {\n return true;\n }\n\n if (this.globs.some((f) => f(path))) {\n return true;\n }\n\n if (this.regexps.some((r) => r.test(path))) {\n return true;\n }\n\n if (this.functions.some((f) => f(path))) {\n return true;\n }\n\n return false;\n }\n}\n"],"mappings":"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","names":["GeneratorPluginVersion","path","micromatch","path","micromatch","path"]}
|
|
1
|
+
{"version":3,"sources":["../lib/config.ts","../lib/file.ts","../lib/file-manager.ts","../lib/module.ts","../lib/plugin.ts","../lib/watcher.ts","../lib/watcher-ignore.ts"],"sourcesContent":["import { isAbsolute, join, posixPath, relative, resolve } from '@baeta/util-path';\nimport { FileOptions } from './file';\n\n/**\n * Options for the graphql generator.\n */\nexport interface GeneratorOptions {\n /**\n * Current working directory.\n * @default process.cwd()\n */\n cwd?: string;\n\n /**\n * Glob pattern(s) to load graphql schema files.\n * @default ['src/∗∗/∗.graphql']\n */\n schemas: string[];\n\n /**\n * Directory where modules are defined.\n * @default 'src/modules'\n */\n modulesDir?: string;\n\n /**\n * Name for the generated module definition file. This will contain type definitions and the graphql ast.\n * @default 'typedef.ts'\n */\n moduleDefinitionName?: string;\n\n /**\n * Path for the generated base types file.\n * @default `${modulesDir}/../__generated__/types.ts`\n */\n baseTypesPath?: string;\n\n /**\n * Path where the context type is exported.\n * @example 'src/types/context#Context' // for named export\n * @example 'src/types/context' // for default export\n * @default undefined\n */\n contextType?: string;\n\n /**\n * Path where extensions (ex. auth-extension) are exported. Only default export is supported.\n * @example 'src/extensions'\n * @default undefined\n */\n extensions?: string;\n\n /**\n * Custom scalar mappings.\n * @example { DateTime: 'Date' }\n * @default undefined\n */\n scalars?: Record<string, string>;\n\n /**\n * Options for generated files.\n */\n fileOptions?: FileOptions;\n}\n\nexport interface NormalizedGeneratorOptions {\n cwd: string;\n schemas: string[];\n modulesDir: string;\n moduleDefinitionName: string;\n baseTypesPath: string;\n contextType?: string;\n extensions?: string;\n scalars?: Record<string, string>;\n fileOptions?: FileOptions;\n}\n\nexport function loadOptions(options: GeneratorOptions): NormalizedGeneratorOptions {\n const cwd = posixPath(options.cwd ?? process.cwd());\n const schemas = options.schemas ?? ['src/**/*.graphql'];\n const modulesDir = posixPath(resolve(cwd, options.modulesDir || 'src/modules'));\n const moduleDefinitionName = options.moduleDefinitionName || 'typedef.ts';\n\n const defaultBaseTypesRoot = resolve(modulesDir, '../__generated__/types.ts');\n const baseTypesRoot = resolve(cwd, options.baseTypesPath || defaultBaseTypesRoot);\n const baseTypesPath = posixPath(relative(modulesDir, baseTypesRoot));\n\n const contextType = resolveContextType(cwd, baseTypesRoot, options.contextType);\n const extensions = resolveExtensionPath(modulesDir, moduleDefinitionName, options.extensions);\n\n return {\n cwd,\n schemas,\n modulesDir,\n moduleDefinitionName,\n baseTypesPath,\n contextType,\n extensions,\n scalars: options.scalars,\n fileOptions: options.fileOptions,\n };\n}\n\nfunction resolveContextType(root: string, baseTypesRoot: string, contextType?: string) {\n if (!contextType) {\n return;\n }\n\n if (isAbsolute(contextType)) {\n return contextType;\n }\n\n if (contextType[0] === '!') {\n return contextType.slice(1);\n }\n\n const contextTypeRoot = resolve(root, contextType);\n\n return posixPath(relative(join(baseTypesRoot, '../'), contextTypeRoot));\n}\n\nfunction resolveExtensionPath(\n modulesDir: string,\n moduleDefinitionName: string,\n extensionsPath?: string,\n) {\n if (!extensionsPath) {\n return;\n }\n\n if (isAbsolute(extensionsPath)) {\n return extensionsPath;\n }\n\n if (extensionsPath[0] === '!') {\n return extensionsPath.slice(1);\n }\n\n return posixPath(relative(join(modulesDir, moduleDefinitionName), extensionsPath));\n}\n","import { dirname, extname } from '@baeta/util-path';\nimport fs from 'node:fs/promises';\n\n/**\n * Options for generated files.\n */\nexport interface FileOptions {\n /**\n * Add generation notice at the beginning of the file.\n * @default true\n */\n addGenerationNoticeHeader?: boolean;\n\n /**\n * Add eslint-disable comment at the beginning of the file.\n * @default true\n */\n addEslintDisableHeader?: boolean;\n\n /**\n * Add custom header at the beginning of the file.\n */\n addHeader?: (name: string, content: string, tag: string) => string;\n\n /**\n * Edit the content of the file before writing it.\n */\n transformContent?: (name: string, content: string, tag: string) => string | Promise<string>;\n}\n\nexport class File {\n persisted = false;\n\n constructor(\n public filename: string,\n public content: string,\n public tag: string,\n private options?: FileOptions,\n ) {}\n\n write = async () => {\n if (this.persisted) {\n return;\n }\n this.persisted = true;\n\n const dir = dirname(this.filename);\n await fs.mkdir(dir, { recursive: true });\n\n const content = await this.buildContent();\n\n return fs.writeFile(this.filename, content, 'utf-8');\n };\n\n unlink = async () => {\n this.persisted = false;\n return fs.unlink(this.filename);\n };\n\n private async buildContent() {\n const content = this.buildHeader() + this.content;\n\n if (this.options?.transformContent) {\n return this.options.transformContent(this.filename, content, this.tag);\n }\n\n return content;\n }\n\n protected buildHeader() {\n const headerItems: string[] = [];\n\n if (this.options?.addGenerationNoticeHeader !== false) {\n const comment = this.createComment(\n 'This file was generated by Baeta. Do not edit it directly. All changes will be overwritten by the generator.',\n );\n headerItems.push(comment);\n }\n\n if (this.options?.addEslintDisableHeader !== false) {\n const comment = this.createComment('eslint-disable');\n headerItems.push(comment);\n }\n\n if (this.options?.addHeader) {\n const customHeader = this.options.addHeader(this.filename, this.content, this.tag);\n headerItems.push(customHeader);\n }\n\n if (headerItems.length === 0) {\n return '';\n }\n\n return `${headerItems.join('\\n')}\\n\\n`;\n }\n\n protected createComment(comment: string) {\n const extension = extname(this.filename);\n\n if (['.gql', '.graphql'].includes(extension)) {\n return `# ${comment}`;\n }\n\n return `/* ${comment} */`;\n }\n}\n","import { File, FileOptions } from './file';\n\nexport class FileManager {\n files: File[] = [];\n\n constructor(private fileOptions?: FileOptions) {}\n\n createAndAdd(filename: string, content: string, tag: string) {\n const file = new File(filename, content, tag, this.fileOptions);\n this.add(file);\n return file;\n }\n\n add(...file: File[]) {\n this.files.push(...file);\n }\n\n get(filename: string) {\n return this.files.find((file) => file.filename === filename);\n }\n\n getAll() {\n return this.files;\n }\n\n getByTag(tag: string) {\n return this.files.filter((file) => file.tag === tag);\n }\n\n remove(filename: string) {\n const index = this.files.findIndex((file) => file.filename === filename);\n this.files.splice(index, 1);\n }\n\n removeAll() {\n this.files = [];\n }\n\n removeByTag(tag: string) {\n this.files = this.files.filter((file) => file.tag !== tag);\n }\n\n writeAll() {\n const toWrite = this.files.filter((file) => !file.persisted);\n return Promise.all(toWrite.map((file) => file.write()));\n }\n\n writeByTag(tag: string) {\n const files = this.getByTag(tag);\n const toWrite = files.filter((file) => !file.persisted);\n return Promise.all(toWrite.map((file) => file.write()));\n }\n\n unlinkAll() {\n return Promise.all(this.files.map((file) => file.unlink())).then(() => {\n // void\n });\n }\n\n getPersistedFiles() {\n return this.files.filter((file) => file.persisted);\n }\n\n getPersistedFileNames() {\n return this.getPersistedFiles().map((file) => file.filename);\n }\n}\n","import { camelCase, pascalCase } from 'change-case-all';\n\nexport function getModuleGetName(name: string) {\n return `get${pascalCase(name)}Module`;\n}\n\nexport function getModuleCreateName(name: string) {\n return `create${pascalCase(name)}Module`;\n}\n\nexport function getModuleVariableName(name: string) {\n return camelCase(`${name}Module`);\n}\n","import { PluginType } from '@baeta/plugin';\nimport { NormalizedGeneratorOptions } from './config';\nimport { Ctx } from './ctx';\nimport { Watcher, WatcherFile } from './watcher';\n\nexport enum GeneratorPluginVersion {\n V1 = 'v1',\n}\n\nexport type GeneratorPluginV1Fn<Store = unknown> = (\n ctx: Ctx<Store>,\n next: () => Promise<void>,\n) => Promise<void>;\n\nexport type GeneratorPluginV1ReloadFn = (file: WatcherFile) => void;\n\nexport type GeneratorPluginV1WatchOptions = (\n options: NormalizedGeneratorOptions,\n watcher: Watcher,\n reload: GeneratorPluginV1ReloadFn,\n) => void;\n\nexport type GeneratorPluginV1Factory<Store = unknown> = {\n name: string;\n actionName: string;\n setup?: GeneratorPluginV1Fn<Store>;\n generate?: GeneratorPluginV1Fn<Store>;\n end?: GeneratorPluginV1Fn<Store>;\n watch?: GeneratorPluginV1WatchOptions;\n};\n\nexport interface GeneratorPluginV1<Store = unknown> {\n name: string;\n actionName: string;\n version: GeneratorPluginVersion.V1;\n type: PluginType.Generator;\n setup: GeneratorPluginV1Fn<Store>;\n generate: GeneratorPluginV1Fn<Store>;\n end: GeneratorPluginV1Fn<Store>;\n watch: GeneratorPluginV1WatchOptions;\n}\n\nconst defaultPluginFn: GeneratorPluginV1Fn<unknown> = async (ctx, next) => {\n return next();\n};\n\nconst defaultWatchFn = () => ({ include: [], ignore: [] });\n\nexport function createPluginV1<Store = {}>(\n options: GeneratorPluginV1Factory<Store>,\n): GeneratorPluginV1<Store> {\n return {\n name: options.name,\n actionName: options.actionName,\n version: GeneratorPluginVersion.V1,\n type: PluginType.Generator,\n end: options.end ?? defaultPluginFn,\n generate: options.generate ?? defaultPluginFn,\n setup: options.setup ?? defaultPluginFn,\n watch: options.watch ?? defaultWatchFn,\n };\n}\n\nexport function isGeneratorPlugin(plugin: {\n type: PluginType;\n}): plugin is GeneratorPluginV1<unknown> {\n return plugin.type === PluginType.Generator;\n}\n\nexport function getGeneratorPlugins(plugins?: Array<{ type: PluginType }>) {\n if (!plugins) {\n return [];\n }\n return plugins.filter(isGeneratorPlugin);\n}\n","import path, { posixPath } from '@baeta/util-path';\nimport { AsyncSubscription, Event, EventType, Options, subscribe } from '@parcel/watcher';\nimport micromatch from 'micromatch';\nimport { MatchPattern, WatcherIgnore } from './watcher-ignore';\n\nexport { micromatch };\nexport const isMatch = micromatch.isMatch;\n\nexport type WatcherListener = (path: WatcherFile) => void;\n\nexport interface WatcherFile {\n type: EventType;\n path: string;\n relativePath: string;\n}\nexport class Watcher {\n private subscription: AsyncSubscription;\n\n private listeners: Record<EventType, WatcherListener[]> = {\n create: [],\n update: [],\n delete: [],\n };\n\n private watcherIgnore: WatcherIgnore;\n\n constructor(\n private readonly cwd: string,\n private readonly options?: Options,\n ) {\n this.watcherIgnore = new WatcherIgnore(cwd);\n this.subscription = this.createSubscription();\n }\n\n onEvents = (err: Error | null, events: Event[]) => {\n if (err) {\n console.error(err);\n return;\n }\n\n const filteredEvents = events.filter((event) => {\n return !this.watcherIgnore.isIgnored(posixPath(event.path));\n });\n\n for (const event of filteredEvents) {\n for (const listener of this.listeners[event.type]) {\n listener({\n type: event.type,\n path: posixPath(event.path),\n relativePath: posixPath(path.relative(this.cwd, event.path)),\n });\n }\n }\n };\n\n on(event: EventType, listener: WatcherListener) {\n this.listeners[event].push(listener);\n }\n\n off(event: EventType, listener: WatcherListener) {\n this.listeners[event] = this.listeners[event].filter((l) => l !== listener);\n }\n\n ignore(pattern: MatchPattern) {\n this.watcherIgnore.ignore(pattern);\n }\n\n unignore(pattern: MatchPattern) {\n this.watcherIgnore.unignore(pattern);\n }\n\n createSubscription() {\n const promise = subscribe(this.cwd, this.onEvents, this.options);\n\n const unsubscribe = async () => {\n const subscription = await promise;\n await subscription.unsubscribe();\n };\n\n return {\n unsubscribe,\n };\n }\n\n close() {\n return this.subscription.unsubscribe();\n }\n}\n","import path from '@baeta/util-path';\nimport micromatch from 'micromatch';\n\nexport type MatchFn = (testString: string) => boolean;\nexport type MatchPattern = string | RegExp | MatchFn;\n\nexport class WatcherIgnore {\n private files: string[] = [];\n private regexps: RegExp[] = [];\n private functions: MatchFn[] = [];\n\n private globs: MatchFn[] = [];\n private globsMap = new Map<string, MatchFn>();\n\n constructor(private readonly cwd: string) {}\n\n ignore(pattern: MatchPattern) {\n if (pattern instanceof RegExp) {\n this.regexps.push(pattern);\n return;\n }\n\n if (typeof pattern === 'function') {\n this.functions.push(pattern);\n return;\n }\n\n if (!this.isMicromatch(pattern)) {\n this.files.push(this.resolveFile(pattern));\n return;\n }\n\n this.globsMap.set(pattern, micromatch.matcher(pattern));\n this.globs = Array.from(this.globsMap.values());\n }\n\n isMicromatch(pattern: string) {\n const result = micromatch.scan(pattern);\n return result.isBrace || result.isGlobstar || result.isExtglob || result.isGlob;\n }\n\n resolveFile(file: string) {\n return path.isAbsolute(file) ? file : path.join(this.cwd, file);\n }\n\n unignore(pattern: MatchPattern) {\n if (pattern instanceof RegExp) {\n this.regexps = this.regexps.filter((p) => p !== pattern);\n return;\n }\n\n if (typeof pattern === 'function') {\n this.functions = this.functions.filter((p) => p !== pattern);\n return;\n }\n\n if (!this.isMicromatch(pattern)) {\n const file = this.resolveFile(pattern);\n this.files = this.files.filter((p) => p !== file);\n return;\n }\n\n this.globsMap.delete(pattern);\n this.globs = Array.from(this.globsMap.values());\n }\n\n isIgnored(path: string) {\n if (this.files.includes(path)) {\n return true;\n }\n\n if (this.globs.some((f) => f(path))) {\n return true;\n }\n\n if (this.regexps.some((r) => r.test(path))) {\n return true;\n }\n\n if (this.functions.some((f) => f(path))) {\n return true;\n }\n\n return false;\n }\n}\n"],"mappings":"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","names":["GeneratorPluginVersion","path","posixPath","micromatch","path","micromatch","posixPath","path"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@baeta/generator-sdk",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.11",
|
|
4
4
|
"keywords": [
|
|
5
5
|
"baeta",
|
|
6
6
|
"graphql",
|
|
@@ -45,9 +45,9 @@
|
|
|
45
45
|
"types": "tsc --noEmit"
|
|
46
46
|
},
|
|
47
47
|
"dependencies": {
|
|
48
|
-
"@baeta/plugin": "^0.0.
|
|
49
|
-
"@baeta/util-path": "^0.0.
|
|
50
|
-
"@parcel/watcher": "^2.4.
|
|
48
|
+
"@baeta/plugin": "^0.0.22",
|
|
49
|
+
"@baeta/util-path": "^0.0.3",
|
|
50
|
+
"@parcel/watcher": "^2.4.1",
|
|
51
51
|
"change-case-all": "2.1.0",
|
|
52
52
|
"micromatch": "^4.0.5"
|
|
53
53
|
},
|
|
@@ -55,8 +55,8 @@
|
|
|
55
55
|
"@baeta/builder": "^0.0.0",
|
|
56
56
|
"@baeta/tsconfig": "^0.0.0",
|
|
57
57
|
"@types/micromatch": "^4.0.6",
|
|
58
|
-
"@types/node": "^18.19.
|
|
59
|
-
"typescript": "^5.
|
|
58
|
+
"@types/node": "^18.19.28",
|
|
59
|
+
"typescript": "^5.4.3"
|
|
60
60
|
},
|
|
61
61
|
"engines": {
|
|
62
62
|
"node": ">=18.0.0"
|