@baeta/generator-sdk 0.0.9 → 0.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # @baeta/generator-sdk
2
2
 
3
+ ## 0.0.10
4
+
5
+ ### Patch Changes
6
+
7
+ - [#102](https://github.com/andreisergiu98/baeta/pull/102) [`c9e37fd`](https://github.com/andreisergiu98/baeta/commit/c9e37fd1d64588fd8eb63facd7eda08c0009470c) Thanks [@andreisergiu98](https://github.com/andreisergiu98)! - update dependencies
8
+
9
+ - [#102](https://github.com/andreisergiu98/baeta/pull/102) [`c9e37fd`](https://github.com/andreisergiu98/baeta/commit/c9e37fd1d64588fd8eb63facd7eda08c0009470c) Thanks [@andreisergiu98](https://github.com/andreisergiu98)! - update dependencies and builder
10
+
11
+ - [#106](https://github.com/andreisergiu98/baeta/pull/106) [`01788ab`](https://github.com/andreisergiu98/baeta/commit/01788ab04ff6956b2b50186af5bec8ed7ebbe76e) Thanks [@andreisergiu98](https://github.com/andreisergiu98)! - add compatibility with windows
12
+
13
+ - Updated dependencies [[`c9e37fd`](https://github.com/andreisergiu98/baeta/commit/c9e37fd1d64588fd8eb63facd7eda08c0009470c), [`c9e37fd`](https://github.com/andreisergiu98/baeta/commit/c9e37fd1d64588fd8eb63facd7eda08c0009470c), [`01788ab`](https://github.com/andreisergiu98/baeta/commit/01788ab04ff6956b2b50186af5bec8ed7ebbe76e)]:
14
+ - @baeta/plugin@0.0.21
15
+ - @baeta/util-path@0.0.2
16
+
3
17
  ## 0.0.9
4
18
 
5
19
  ### Patch Changes
package/dist/index.cjs CHANGED
@@ -1,6 +1,6 @@
1
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/file.ts
2
+ var _utilpath = require('@baeta/util-path'); var _utilpath2 = _interopRequireDefault(_utilpath);
2
3
  var _promises = require('fs/promises'); var _promises2 = _interopRequireDefault(_promises);
3
- var _path = require('path'); var _path2 = _interopRequireDefault(_path);
4
4
  var File = (_class = class {
5
5
  constructor(filename, content, tag, options) {;_class.prototype.__init.call(this);_class.prototype.__init2.call(this);_class.prototype.__init3.call(this);
6
6
  this.filename = filename;
@@ -14,7 +14,7 @@ var File = (_class = class {
14
14
  return;
15
15
  }
16
16
  this.persisted = true;
17
- const dir = _path.dirname.call(void 0, this.filename);
17
+ const dir = _utilpath.dirname.call(void 0, this.filename);
18
18
  await _promises2.default.mkdir(dir, { recursive: true });
19
19
  const content = await this.buildContent();
20
20
  return _promises2.default.writeFile(this.filename, content, "utf-8");
@@ -31,7 +31,7 @@ var File = (_class = class {
31
31
  return content;
32
32
  }
33
33
  buildHeader() {
34
- const ext = _path.extname.call(void 0, this.filename);
34
+ const ext = _utilpath.extname.call(void 0, this.filename);
35
35
  const headerItems = [];
36
36
  if (_optionalChain([this, 'access', _3 => _3.options, 'optionalAccess', _4 => _4.generationNotice]) !== false) {
37
37
  headerItems.push(
@@ -159,10 +159,10 @@ function getGeneratorPlugins(plugins) {
159
159
  }
160
160
 
161
161
  // lib/watcher.ts
162
+
162
163
  var _watcher = require('@parcel/watcher');
163
164
  var _micromatch = require('micromatch'); var _micromatch2 = _interopRequireDefault(_micromatch);
164
165
 
165
-
166
166
  // lib/watcher-ignore.ts
167
167
 
168
168
 
@@ -196,7 +196,7 @@ var WatcherIgnore = (_class3 = class {
196
196
  return result.isBrace || result.isGlobstar || result.isExtglob || result.isGlob;
197
197
  }
198
198
  resolveFile(file) {
199
- return _path2.default.isAbsolute(file) ? file : _path2.default.join(this.cwd, file);
199
+ return _utilpath2.default.isAbsolute(file) ? file : _utilpath2.default.join(this.cwd, file);
200
200
  }
201
201
  unignore(pattern) {
202
202
  if (pattern instanceof RegExp) {
@@ -254,14 +254,14 @@ var Watcher = (_class4 = class {
254
254
  return;
255
255
  }
256
256
  const filteredEvents = events.filter((event) => {
257
- return !this.watcherIgnore.isIgnored(event.path);
257
+ return !this.watcherIgnore.isIgnored(_utilpath.posixPath.call(void 0, event.path));
258
258
  });
259
259
  for (const event of filteredEvents) {
260
260
  for (const listener of this.listeners[event.type]) {
261
261
  listener({
262
262
  type: event.type,
263
- path: event.path,
264
- relativePath: _path2.default.relative(this.cwd, event.path)
263
+ path: _utilpath.posixPath.call(void 0, event.path),
264
+ relativePath: _utilpath.posixPath.call(void 0, _utilpath2.default.relative(this.cwd, event.path))
265
265
  });
266
266
  }
267
267
  }
@@ -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","micromatch","path"],"mappings":"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","sourcesContent":["import fs from 'fs/promises';\nimport { dirname, extname } from 'path';\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 { AsyncSubscription, Event, EventType, Options, subscribe } from '@parcel/watcher';\nimport micromatch from 'micromatch';\nimport path from 'path';\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(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: event.path,\n relativePath: 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 micromatch from 'micromatch';\nimport path from 'path';\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/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"]}
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  // lib/file.ts
2
+ import { dirname, extname } from "@baeta/util-path";
2
3
  import fs from "fs/promises";
3
- import { dirname, extname } from "path";
4
4
  var File = class {
5
5
  constructor(filename, content, tag, options) {
6
6
  this.filename = filename;
@@ -159,13 +159,13 @@ function getGeneratorPlugins(plugins) {
159
159
  }
160
160
 
161
161
  // lib/watcher.ts
162
+ import path2, { posixPath } from "@baeta/util-path";
162
163
  import { subscribe } from "@parcel/watcher";
163
164
  import micromatch2 from "micromatch";
164
- import path2 from "path";
165
165
 
166
166
  // lib/watcher-ignore.ts
167
+ import path from "@baeta/util-path";
167
168
  import micromatch from "micromatch";
168
- import path from "path";
169
169
  var WatcherIgnore = class {
170
170
  constructor(cwd) {
171
171
  this.cwd = cwd;
@@ -254,14 +254,14 @@ var Watcher = class {
254
254
  return;
255
255
  }
256
256
  const filteredEvents = events.filter((event) => {
257
- return !this.watcherIgnore.isIgnored(event.path);
257
+ return !this.watcherIgnore.isIgnored(posixPath(event.path));
258
258
  });
259
259
  for (const event of filteredEvents) {
260
260
  for (const listener of this.listeners[event.type]) {
261
261
  listener({
262
262
  type: event.type,
263
- path: event.path,
264
- relativePath: path2.relative(this.cwd, event.path)
263
+ path: posixPath(event.path),
264
+ relativePath: posixPath(path2.relative(this.cwd, event.path))
265
265
  });
266
266
  }
267
267
  }
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 fs from 'fs/promises';\nimport { dirname, extname } from 'path';\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 { AsyncSubscription, Event, EventType, Options, subscribe } from '@parcel/watcher';\nimport micromatch from 'micromatch';\nimport path from 'path';\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(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: event.path,\n relativePath: 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 micromatch from 'micromatch';\nimport path from 'path';\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","micromatch","path","path","micromatch","path"]}
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"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@baeta/generator-sdk",
3
- "version": "0.0.9",
3
+ "version": "0.0.10",
4
4
  "keywords": [
5
5
  "baeta",
6
6
  "graphql",
@@ -45,8 +45,9 @@
45
45
  "types": "tsc --noEmit"
46
46
  },
47
47
  "dependencies": {
48
- "@baeta/plugin": "^0.0.20",
49
- "@parcel/watcher": "^2.3.0",
48
+ "@baeta/plugin": "^0.0.21",
49
+ "@baeta/util-path": "^0.0.2",
50
+ "@parcel/watcher": "^2.4.0",
50
51
  "change-case-all": "2.1.0",
51
52
  "micromatch": "^4.0.5"
52
53
  },
@@ -54,8 +55,8 @@
54
55
  "@baeta/builder": "^0.0.0",
55
56
  "@baeta/tsconfig": "^0.0.0",
56
57
  "@types/micromatch": "^4.0.6",
57
- "@types/node": "^18.19.0",
58
- "typescript": "^5.3.2"
58
+ "@types/node": "^18.19.9",
59
+ "typescript": "^5.3.3"
59
60
  },
60
61
  "engines": {
61
62
  "node": ">=18.0.0"