screw-up 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,11 +1,11 @@
1
1
  /*!
2
2
  * name: screw-up
3
- * version: 1.1.0
3
+ * version: 1.2.0
4
4
  * description: Simply package metadata inserter on Vite plugin
5
5
  * author: Kouji Matsui (@kekyo@mi.kekyo.net)
6
6
  * license: MIT
7
7
  * repository.url: https://github.com/kekyo/screw-up.git
8
- * git.commit.hash: 379e392faba0e8bd008ed386eb113cdee3c79de9
8
+ * git.commit.hash: cc82696555da70d209bcd4d7ca6cba330360e074
9
9
  */
10
10
 
11
11
  import { screwUp } from './vite-plugin';
package/dist/index.js CHANGED
@@ -1,15 +1,171 @@
1
1
  /*!
2
2
  * name: screw-up
3
- * version: 1.1.0
3
+ * version: 1.2.0
4
4
  * description: Simply package metadata inserter on Vite plugin
5
5
  * author: Kouji Matsui (@kekyo@mi.kekyo.net)
6
6
  * license: MIT
7
7
  * repository.url: https://github.com/kekyo/screw-up.git
8
- * git.commit.hash: 379e392faba0e8bd008ed386eb113cdee3c79de9
8
+ * git.commit.hash: cc82696555da70d209bcd4d7ca6cba330360e074
9
9
  */
10
10
  import { readdir, readFile, writeFile, mkdir } from "fs/promises";
11
+ import { existsSync } from "fs";
11
12
  import { join, dirname } from "path";
12
- import { c as createConsoleLogger, r as resolvePackageMetadata, g as getFetchGitMetadata } from "./analyzer-BIXh0cn6.js";
13
+ import { c as createConsoleLogger, n as name, g as getFetchGitMetadata, v as version, a as git_commit_hash, r as resolvePackageMetadata } from "./packageMetadata-DOzhlPbz.js";
14
+ const __NOOP_HANDLER = () => {
15
+ };
16
+ const __NOOP_RELEASABLE = {
17
+ release: __NOOP_HANDLER,
18
+ [Symbol.dispose]: __NOOP_HANDLER
19
+ };
20
+ const onAbort = (signal, callback) => {
21
+ if (!signal) {
22
+ return __NOOP_RELEASABLE;
23
+ }
24
+ if (signal.aborted) {
25
+ try {
26
+ callback();
27
+ } catch (error) {
28
+ console.warn("AbortHook callback error: ", error);
29
+ }
30
+ return __NOOP_RELEASABLE;
31
+ }
32
+ let abortHandler;
33
+ abortHandler = () => {
34
+ if (abortHandler) {
35
+ signal.removeEventListener("abort", abortHandler);
36
+ abortHandler = void 0;
37
+ try {
38
+ callback();
39
+ } catch (error) {
40
+ console.warn("AbortHook callback error: ", error);
41
+ }
42
+ }
43
+ };
44
+ const release = () => {
45
+ if (abortHandler) {
46
+ signal.removeEventListener("abort", abortHandler);
47
+ abortHandler = void 0;
48
+ }
49
+ };
50
+ signal.addEventListener("abort", abortHandler, { once: true });
51
+ const handle = {
52
+ release,
53
+ [Symbol.dispose]: release
54
+ };
55
+ return handle;
56
+ };
57
+ const defer = (fn) => {
58
+ if (typeof setImmediate === "function") {
59
+ setImmediate(fn);
60
+ } else {
61
+ setTimeout(fn, 0);
62
+ }
63
+ };
64
+ const ABORTED_ERROR = () => new Error("Lock acquisition was aborted");
65
+ const createLockHandle = (releaseCallback) => {
66
+ let isActive = true;
67
+ const release = () => {
68
+ if (!isActive) {
69
+ return;
70
+ }
71
+ isActive = false;
72
+ releaseCallback();
73
+ };
74
+ return {
75
+ get isActive() {
76
+ return isActive;
77
+ },
78
+ release,
79
+ [Symbol.dispose]: release
80
+ };
81
+ };
82
+ const createAsyncLock = (maxConsecutiveCalls = 20) => {
83
+ let isLocked = false;
84
+ const queue = [];
85
+ let count = 0;
86
+ const processQueue = () => {
87
+ var _a;
88
+ if (isLocked || queue.length === 0) {
89
+ return;
90
+ }
91
+ const item = queue.shift();
92
+ if ((_a = item.signal) == null ? void 0 : _a.aborted) {
93
+ item.reject(ABORTED_ERROR());
94
+ scheduleNextProcess();
95
+ return;
96
+ }
97
+ isLocked = true;
98
+ const lockHandle = createLockHandle(releaseLock);
99
+ item.resolve(lockHandle);
100
+ };
101
+ const scheduleNextProcess = () => {
102
+ count++;
103
+ if (count >= maxConsecutiveCalls) {
104
+ count = 0;
105
+ defer(processQueue);
106
+ } else {
107
+ processQueue();
108
+ }
109
+ };
110
+ const releaseLock = () => {
111
+ if (!isLocked) {
112
+ return;
113
+ }
114
+ isLocked = false;
115
+ scheduleNextProcess();
116
+ };
117
+ const removeFromQueue = (item) => {
118
+ const index = queue.indexOf(item);
119
+ if (index !== -1) {
120
+ queue.splice(index, 1);
121
+ }
122
+ };
123
+ const lock = async (signal) => {
124
+ if (signal) {
125
+ if (signal.aborted) {
126
+ throw ABORTED_ERROR();
127
+ }
128
+ return new Promise((resolve, reject) => {
129
+ const queueItem = {
130
+ resolve: void 0,
131
+ reject: void 0,
132
+ signal
133
+ };
134
+ const abortHandle = onAbort(signal, () => {
135
+ removeFromQueue(queueItem);
136
+ reject(ABORTED_ERROR());
137
+ });
138
+ queueItem.resolve = (handle) => {
139
+ abortHandle.release();
140
+ resolve(handle);
141
+ };
142
+ queueItem.reject = (error) => {
143
+ abortHandle.release();
144
+ reject(error);
145
+ };
146
+ queue.push(queueItem);
147
+ processQueue();
148
+ });
149
+ } else {
150
+ return new Promise((resolve, reject) => {
151
+ queue.push({
152
+ resolve,
153
+ reject
154
+ });
155
+ processQueue();
156
+ });
157
+ }
158
+ };
159
+ return {
160
+ lock,
161
+ get isLocked() {
162
+ return isLocked;
163
+ },
164
+ get pendingCount() {
165
+ return queue.length;
166
+ }
167
+ };
168
+ };
13
169
  const generateBanner = (metadata, outputKeys) => {
14
170
  const parts = [];
15
171
  for (const key of outputKeys) {
@@ -49,23 +205,62 @@ const generateMetadataFile = (metadata, outputKeys) => {
49
205
  lines.push("");
50
206
  return lines.join("\n");
51
207
  };
208
+ const generateMetadataTypeFile = (outputKeys) => {
209
+ const lines = [];
210
+ lines.push("// This file is auto-generated by screw-up plugin");
211
+ lines.push("// Do not edit manually");
212
+ lines.push("");
213
+ for (const key of outputKeys) {
214
+ const sanitizedKey = sanitizeKey(key);
215
+ lines.push(`export declare const ${sanitizedKey}: string;`);
216
+ }
217
+ lines.push("");
218
+ return lines.join("\n");
219
+ };
52
220
  const screwUp = (options = {}) => {
53
221
  const {
54
222
  outputKeys = ["name", "version", "description", "author", "license", "repository.url", "git.commit.hash"],
55
223
  assetFilters = ["\\.d\\.ts$"],
56
224
  outputMetadataFile = false,
57
225
  outputMetadataFilePath = "src/generated/packageMetadata.ts",
226
+ outputMetadataFileTypePath,
58
227
  outputMetadataKeys = ["name", "version", "description", "author", "license", "repository.url", "git.commit.hash"],
59
228
  checkWorkingDirectoryStatus = true,
60
229
  alwaysOverrideVersionFromGit = true,
61
230
  insertMetadataBanner = true
62
231
  } = options;
63
232
  const assetFiltersRegex = assetFilters.map((filter) => new RegExp(filter));
64
- let logger = createConsoleLogger();
233
+ const resolvedOutputMetadataFileTypePath = outputMetadataFileTypePath || outputMetadataFilePath.replace(/\.ts$/, ".d.ts");
234
+ const generateMetadataSourceLocker = createAsyncLock();
235
+ const loggerPrefix = `${name}-vite`;
236
+ let logger = createConsoleLogger(loggerPrefix);
65
237
  let banner;
66
238
  let metadata;
67
239
  let projectRoot;
68
240
  let fetchGitMetadata = () => Promise.resolve({});
241
+ const writeFileIfChanged = async (filePath, content, description) => {
242
+ try {
243
+ let shouldWrite = !existsSync(filePath);
244
+ if (!shouldWrite) {
245
+ try {
246
+ const existingContent = await readFile(filePath, "utf-8");
247
+ shouldWrite = existingContent !== content;
248
+ } catch (e) {
249
+ shouldWrite = true;
250
+ }
251
+ }
252
+ if (shouldWrite) {
253
+ await mkdir(dirname(filePath), { recursive: true });
254
+ await writeFile(filePath, content);
255
+ return true;
256
+ } else {
257
+ return false;
258
+ }
259
+ } catch (error) {
260
+ logger.warn(`Failed to write ${description}: ${filePath}: ${error}`);
261
+ return false;
262
+ }
263
+ };
69
264
  const generateMetadataSourceFile = async () => {
70
265
  const result = await resolvePackageMetadata(
71
266
  projectRoot,
@@ -78,55 +273,122 @@ const screwUp = (options = {}) => {
78
273
  if (outputMetadataFile) {
79
274
  const metadataSourceContent = generateMetadataFile(metadata, outputMetadataKeys);
80
275
  const metadataSourcePath = join(projectRoot, outputMetadataFilePath);
81
- try {
82
- await mkdir(dirname(metadataSourcePath), { recursive: true });
83
- await writeFile(metadataSourcePath, metadataSourceContent);
84
- } catch (error) {
85
- logger.warn(`[screw-up]: Failed to write metadata source file: ${metadataSourcePath}: ${error}`);
276
+ return await writeFileIfChanged(metadataSourcePath, metadataSourceContent, "metadata source file");
277
+ }
278
+ return false;
279
+ };
280
+ const generateMetadataTypeDefinitionFile = async () => {
281
+ if (outputMetadataFile) {
282
+ const metadataTypeContent = generateMetadataTypeFile(outputMetadataKeys);
283
+ const metadataTypePath = join(projectRoot, resolvedOutputMetadataFileTypePath);
284
+ return await writeFileIfChanged(metadataTypePath, metadataTypeContent, "metadata type definition file");
285
+ }
286
+ return false;
287
+ };
288
+ const generateDummyMetadataFile = async () => {
289
+ if (outputMetadataFile) {
290
+ const metadataSourcePath = join(projectRoot, outputMetadataFilePath);
291
+ if (!existsSync(metadataSourcePath)) {
292
+ const dummyMetadata = {};
293
+ outputMetadataKeys.forEach((key) => {
294
+ dummyMetadata[key] = "[Require first build]";
295
+ });
296
+ const dummyContent = generateMetadataFile(dummyMetadata, outputMetadataKeys);
297
+ return await writeFileIfChanged(metadataSourcePath, dummyContent, "dummy metadata source file");
86
298
  }
87
299
  }
300
+ return false;
88
301
  };
89
302
  return {
90
303
  name: "screw-up",
91
- apply: "build",
92
304
  // Ensure screw-up runs before other plugins
93
305
  // (especially vite-plugin-dts, avoid packageMetadata.ts is not found)
94
306
  enforce: "pre",
307
+ // Plugin starting
308
+ applyToEnvironment: async () => {
309
+ logger.info(`${version}-${git_commit_hash}: Started.`);
310
+ if (projectRoot && await generateMetadataTypeDefinitionFile()) {
311
+ logger.info(`applyToEnvironment: Metadata type definition file is generated: ${resolvedOutputMetadataFileTypePath}`);
312
+ }
313
+ if (projectRoot && await generateDummyMetadataFile()) {
314
+ logger.info(`applyToEnvironment: Dummy metadata source file is generated: ${outputMetadataFilePath}`);
315
+ }
316
+ return true;
317
+ },
95
318
  // Configuration resolved phase
96
319
  configResolved: async (config) => {
97
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p;
98
- projectRoot = config.root;
99
- const _logger = {
100
- debug: (_d = (_c = (_a = config == null ? void 0 : config.logger) == null ? void 0 : _a.info) != null ? _c : (_b = config == null ? void 0 : config.customLogger) == null ? void 0 : _b.info) != null ? _d : logger.debug,
101
- info: (_h = (_g = (_e = config == null ? void 0 : config.logger) == null ? void 0 : _e.info) != null ? _g : (_f = config == null ? void 0 : config.customLogger) == null ? void 0 : _f.info) != null ? _h : logger.info,
102
- warn: (_l = (_k = (_i = config == null ? void 0 : config.logger) == null ? void 0 : _i.warn) != null ? _k : (_j = config == null ? void 0 : config.customLogger) == null ? void 0 : _j.warn) != null ? _l : logger.warn,
103
- error: (_p = (_o = (_m = config == null ? void 0 : config.logger) == null ? void 0 : _m.error) != null ? _o : (_n = config == null ? void 0 : config.customLogger) == null ? void 0 : _n.error) != null ? _p : logger.error
104
- };
105
- logger = _logger;
106
- fetchGitMetadata = getFetchGitMetadata(
107
- projectRoot,
108
- checkWorkingDirectoryStatus,
109
- logger
110
- );
111
- await generateMetadataSourceFile();
320
+ const l = await generateMetadataSourceLocker.lock();
321
+ try {
322
+ logger.debug(`configResolved: Started.`);
323
+ projectRoot = config.root;
324
+ if (config == null ? void 0 : config.logger) {
325
+ logger = createConsoleLogger(loggerPrefix, config.logger);
326
+ } else if (config == null ? void 0 : config.customLogger) {
327
+ logger = createConsoleLogger(loggerPrefix, config.customLogger);
328
+ }
329
+ fetchGitMetadata = getFetchGitMetadata(
330
+ projectRoot,
331
+ checkWorkingDirectoryStatus,
332
+ logger
333
+ );
334
+ if (await generateMetadataSourceFile()) {
335
+ logger.info(`configResolved: Metadata source file is generated: ${outputMetadataFilePath}`);
336
+ }
337
+ } finally {
338
+ logger.debug(`configResolved: Exited.`);
339
+ l.release();
340
+ }
341
+ },
342
+ // Server hook
343
+ configureServer: async (server) => {
344
+ const l = await generateMetadataSourceLocker.lock();
345
+ try {
346
+ logger.debug(`configureServer: Started.`);
347
+ if (outputMetadataFile && server.watcher) {
348
+ const metadataSourcePath = join(projectRoot, outputMetadataFilePath);
349
+ server.watcher.unwatch(metadataSourcePath);
350
+ logger.debug(`configureServer: Excluded from watcher: ${outputMetadataFilePath}`);
351
+ }
352
+ if (await generateMetadataSourceFile()) {
353
+ logger.info(`configureServer: Metadata source file is generated: ${outputMetadataFilePath}`);
354
+ }
355
+ } finally {
356
+ logger.debug(`configureServer: Exited.`);
357
+ l.release();
358
+ }
112
359
  },
113
360
  // Build start phase
114
361
  buildStart: async () => {
115
- await generateMetadataSourceFile();
362
+ const l = await generateMetadataSourceLocker.lock();
363
+ try {
364
+ logger.debug(`buildStart: Started.`);
365
+ if (await generateMetadataSourceFile()) {
366
+ logger.info(`buildStart: Metadata source file is generated: ${outputMetadataFilePath}`);
367
+ }
368
+ } finally {
369
+ logger.debug(`buildStart: Exited.`);
370
+ l.release();
371
+ }
116
372
  },
117
373
  // Generate bundle phase
118
374
  generateBundle: (_options, bundle) => {
119
375
  if (insertMetadataBanner) {
376
+ let count = 0;
120
377
  for (const fileName in bundle) {
121
378
  const chunk = bundle[fileName];
122
379
  if (chunk.type === "chunk") {
123
380
  chunk.code = insertBannerHeader(chunk.code, banner);
381
+ count++;
124
382
  } else if (chunk.type === "asset" && assetFiltersRegex.some((filter) => filter.test(fileName))) {
125
383
  if (typeof chunk.source === "string") {
126
384
  chunk.source = insertBannerHeader(chunk.source, banner + "\n");
385
+ count++;
127
386
  }
128
387
  }
129
388
  }
389
+ if (count >= 1) {
390
+ logger.debug(`generateBundle: Banner header inserted: ${count} file(s)`);
391
+ }
130
392
  }
131
393
  },
132
394
  // Write bundle phase
@@ -134,6 +396,7 @@ const screwUp = (options = {}) => {
134
396
  if (!insertMetadataBanner || !options2.dir) return;
135
397
  try {
136
398
  const files = await readdir(options2.dir, { recursive: true });
399
+ let count = 0;
137
400
  for (const file of files) {
138
401
  const filePath = join(options2.dir, file);
139
402
  if (assetFiltersRegex.some((filter) => filter.test(file))) {
@@ -141,11 +404,15 @@ const screwUp = (options = {}) => {
141
404
  const content = await readFile(filePath, "utf-8");
142
405
  if (!content.includes(banner)) {
143
406
  await writeFile(filePath, insertBannerHeader(content, banner + "\n"));
407
+ count++;
144
408
  }
145
409
  } catch (error) {
146
410
  }
147
411
  }
148
412
  }
413
+ if (count >= 1) {
414
+ logger.debug(`writeBundle: Banner header inserted: ${count} file(s)`);
415
+ }
149
416
  } catch (error) {
150
417
  }
151
418
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/vite-plugin.ts"],"sourcesContent":["// screw-up - Easy package metadata inserter on Vite plugin\n// Copyright (c) Kouji Matsui (@kekyo@mi.kekyo.net)\n// Under MIT.\n// https://github.com/kekyo/screw-up/\n\nimport type { Plugin } from 'vite';\nimport { readFile, writeFile, readdir, mkdir } from 'fs/promises';\nimport { join, dirname } from 'path';\nimport { resolvePackageMetadata, createConsoleLogger } from './internal';\nimport { ScrewUpOptions, PackageMetadata } from './types';\nimport { getFetchGitMetadata } from './analyzer';\n\n/**\n * Generate banner string from package.json metadata\n * @param metadata - Package metadata\n * @param outputKeys - Array of keys to output in specified order\n * @returns Banner string\n */\nexport const generateBanner = (metadata: PackageMetadata, outputKeys: string[]): string => {\n const parts: string[] = [];\n \n for (const key of outputKeys) {\n const value = metadata[key];\n if (value) {\n parts.push(`${key}: ${value}`);\n }\n }\n \n return parts.length > 0 ? `/*!\\n * ${parts.join('\\n * ')}\\n */` : '';\n};\n\n/**\n * Insert banner header at appropriate position considering shebang\n * @param content - The content to insert banner into\n * @param banner - The banner header to insert\n * @returns Content with banner header inserted\n */\nconst insertBannerHeader = (content: string, banner: string): string => {\n const lines = content.split('\\n');\n \n // Check if first line is shebang\n if (lines.length > 0 && lines[0].startsWith('#!')) {\n // Insert banner after shebang line\n return lines[0] + '\\n' + banner + '\\n' + lines.slice(1).join('\\n');\n } else {\n // Insert banner at the beginning\n return banner + '\\n' + content;\n }\n};\n\n/**\n * Convert string key to valid TypeScript identifier\n * @param key - The key to convert\n * @returns Valid TypeScript identifier\n */\nconst sanitizeKey = (key: string): string => {\n // Replace dots and other invalid characters with underscores\n return key.replace(/[^a-zA-Z0-9_]/g, '_').replace(/^(\\d)/, '_$1');\n};\n\n/**\n * Generate TypeScript metadata file content from package metadata\n * @param metadata - Package metadata\n * @param outputKeys - Array of keys to output\n * @returns TypeScript file content\n */\nconst generateMetadataFile = (metadata: PackageMetadata, outputKeys: string[]): string => {\n const lines: string[] = [];\n \n lines.push('// This file is auto-generated by screw-up plugin');\n lines.push('// Do not edit manually');\n lines.push('');\n \n for (const key of outputKeys) {\n const value = metadata[key];\n if (value) {\n const sanitizedKey = sanitizeKey(key);\n const escapedValue = JSON.stringify(value);\n lines.push(`export const ${sanitizedKey} = ${escapedValue};`);\n }\n }\n \n lines.push('');\n \n return lines.join('\\n');\n};\n\n/////////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Vite plugin that adds banner to the bundled code\n * @param options - Plugin options\n * @returns Vite plugin\n */\nexport const screwUp = (options: ScrewUpOptions = {}): Plugin => {\n const {\n outputKeys = ['name', 'version', 'description', 'author', 'license', 'repository.url', 'git.commit.hash'],\n assetFilters = ['\\\\.d\\\\.ts$'],\n outputMetadataFile = false,\n outputMetadataFilePath = 'src/generated/packageMetadata.ts',\n outputMetadataKeys = ['name', 'version', 'description', 'author', 'license', 'repository.url', 'git.commit.hash'],\n checkWorkingDirectoryStatus = true,\n alwaysOverrideVersionFromGit = true,\n insertMetadataBanner = true} = options;\n\n const assetFiltersRegex = assetFilters.map(filter => new RegExp(filter));\n\n let logger = createConsoleLogger();\n let banner: string;\n let metadata: any;\n let projectRoot: string;\n let fetchGitMetadata = () => Promise.resolve<any>({});\n\n // Generate and write metadata TypeScript file\n const generateMetadataSourceFile = async () => {\n // Resolve package metadata\n const result = await resolvePackageMetadata(\n projectRoot, fetchGitMetadata, alwaysOverrideVersionFromGit, logger);\n metadata = result.metadata;\n // Regenerate banner with updated metadata\n banner = generateBanner(metadata, outputKeys);\n if (outputMetadataFile) {\n const metadataSourceContent = generateMetadataFile(metadata, outputMetadataKeys);\n const metadataSourcePath = join(projectRoot, outputMetadataFilePath);\n\n try {\n // Ensure directory exists\n await mkdir(dirname(metadataSourcePath), { recursive: true });\n // Write metadata source file\n await writeFile(metadataSourcePath, metadataSourceContent);\n } catch (error) {\n logger.warn(`[screw-up]: Failed to write metadata source file: ${metadataSourcePath}: ${error}`);\n }\n }\n };\n\n return {\n name: 'screw-up',\n apply: 'build',\n // Ensure screw-up runs before other plugins\n // (especially vite-plugin-dts, avoid packageMetadata.ts is not found)\n enforce: 'pre',\n // Configuration resolved phase\n configResolved: async config => {\n // Save project root\n projectRoot = config.root;\n const _logger = {\n debug: config?.logger?.info ?? config?.customLogger?.info ?? logger.debug,\n info: config?.logger?.info ?? config?.customLogger?.info ?? logger.info,\n warn: config?.logger?.warn ?? config?.customLogger?.warn ?? logger.warn,\n error: config?.logger?.error ?? config?.customLogger?.error ?? logger.error,\n };\n logger = _logger;\n // Get Git metadata fetcher function\n fetchGitMetadata = getFetchGitMetadata(\n projectRoot, checkWorkingDirectoryStatus, logger);\n // Generate metadata TypeScript file early to ensure it's available during TypeScript compilation\n await generateMetadataSourceFile();\n },\n // Build start phase\n buildStart: async () => {\n // Re-resolve package metadata to capture any changes since configResolved\n // Update metadata TypeScript file with latest data\n await generateMetadataSourceFile();\n },\n // Generate bundle phase\n generateBundle: (_options, bundle) => {\n // Add banner to each output file if enabled\n if (insertMetadataBanner) {\n for (const fileName in bundle) {\n const chunk = bundle[fileName];\n if (chunk.type === 'chunk') {\n chunk.code = insertBannerHeader(chunk.code, banner);\n } else if (chunk.type === 'asset' && assetFiltersRegex.some(filter => filter.test(fileName))) {\n if (typeof chunk.source === 'string') {\n chunk.source = insertBannerHeader(chunk.source, banner + '\\n'); // insert more blank line\n }\n }\n }\n }\n },\n // Write bundle phase\n writeBundle: async options => {\n // Handle files written by other plugins (like vite-plugin-dts) if banner insertion is enabled\n if (!insertMetadataBanner || !options.dir) return;\n\n try {\n // Read all files in the output directory\n const files = await readdir(options.dir, { recursive: true });\n\n // Iterate over all files\n for (const file of files) {\n const filePath = join(options.dir, file);\n\n // Check if the file is target asset file\n if (assetFiltersRegex.some(filter => filter.test(file))) {\n try {\n // Read the asset file\n const content = await readFile(filePath, 'utf-8');\n // Append banner to the asset file if it doesn't already contain it\n if (!content.includes(banner)) {\n await writeFile(filePath, insertBannerHeader(content, banner + '\\n'));\n }\n } catch (error) {\n // Skip files that can't be read/written\n }\n }\n }\n } catch (error) {\n // Skip files that can't be read/written\n }\n }\n };\n};\n"],"names":["options"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../node_modules/async-primitives/dist/async-primitives.js","../src/vite-plugin.ts"],"sourcesContent":["const __NOOP_HANDLER = () => {\n};\nconst __NOOP_RELEASABLE = {\n release: __NOOP_HANDLER,\n [Symbol.dispose]: __NOOP_HANDLER\n};\nconst onAbort = (signal, callback) => {\n if (!signal) {\n return __NOOP_RELEASABLE;\n }\n if (signal.aborted) {\n try {\n callback();\n } catch (error) {\n console.warn(\"AbortHook callback error: \", error);\n }\n return __NOOP_RELEASABLE;\n }\n let abortHandler;\n abortHandler = () => {\n if (abortHandler) {\n signal.removeEventListener(\"abort\", abortHandler);\n abortHandler = void 0;\n try {\n callback();\n } catch (error) {\n console.warn(\"AbortHook callback error: \", error);\n }\n }\n };\n const release = () => {\n if (abortHandler) {\n signal.removeEventListener(\"abort\", abortHandler);\n abortHandler = void 0;\n }\n };\n signal.addEventListener(\"abort\", abortHandler, { once: true });\n const handle = {\n release,\n [Symbol.dispose]: release\n };\n return handle;\n};\nconst delay = (msec, signal) => {\n if (signal) {\n if (signal.aborted) {\n throw new Error(\"Delay was aborted\");\n }\n return new Promise((resolve, reject) => {\n const abortHandle = onAbort(signal, () => {\n clearTimeout(timeoutId);\n reject(new Error(\"Delay was aborted\"));\n });\n const timeoutId = setTimeout(() => {\n abortHandle.release();\n resolve();\n }, msec);\n });\n } else {\n return new Promise((resolve) => {\n setTimeout(resolve, msec);\n });\n }\n};\nconst defer = (fn) => {\n if (typeof setImmediate === \"function\") {\n setImmediate(fn);\n } else {\n setTimeout(fn, 0);\n }\n};\nconst ABORTED_ERROR = () => new Error(\"Lock acquisition was aborted\");\nconst createLockHandle = (releaseCallback) => {\n let isActive = true;\n const release = () => {\n if (!isActive) {\n return;\n }\n isActive = false;\n releaseCallback();\n };\n return {\n get isActive() {\n return isActive;\n },\n release,\n [Symbol.dispose]: release\n };\n};\nconst createAsyncLock = (maxConsecutiveCalls = 20) => {\n let isLocked = false;\n const queue = [];\n let count = 0;\n const processQueue = () => {\n var _a;\n if (isLocked || queue.length === 0) {\n return;\n }\n const item = queue.shift();\n if ((_a = item.signal) == null ? void 0 : _a.aborted) {\n item.reject(ABORTED_ERROR());\n scheduleNextProcess();\n return;\n }\n isLocked = true;\n const lockHandle = createLockHandle(releaseLock);\n item.resolve(lockHandle);\n };\n const scheduleNextProcess = () => {\n count++;\n if (count >= maxConsecutiveCalls) {\n count = 0;\n defer(processQueue);\n } else {\n processQueue();\n }\n };\n const releaseLock = () => {\n if (!isLocked) {\n return;\n }\n isLocked = false;\n scheduleNextProcess();\n };\n const removeFromQueue = (item) => {\n const index = queue.indexOf(item);\n if (index !== -1) {\n queue.splice(index, 1);\n }\n };\n const lock = async (signal) => {\n if (signal) {\n if (signal.aborted) {\n throw ABORTED_ERROR();\n }\n return new Promise((resolve, reject) => {\n const queueItem = {\n resolve: void 0,\n reject: void 0,\n signal\n };\n const abortHandle = onAbort(signal, () => {\n removeFromQueue(queueItem);\n reject(ABORTED_ERROR());\n });\n queueItem.resolve = (handle) => {\n abortHandle.release();\n resolve(handle);\n };\n queueItem.reject = (error) => {\n abortHandle.release();\n reject(error);\n };\n queue.push(queueItem);\n processQueue();\n });\n } else {\n return new Promise((resolve, reject) => {\n queue.push({\n resolve,\n reject\n });\n processQueue();\n });\n }\n };\n return {\n lock,\n get isLocked() {\n return isLocked;\n },\n get pendingCount() {\n return queue.length;\n }\n };\n};\nconst createDeferred = (signal) => {\n let resolve;\n let reject;\n const promise = new Promise((res, rej) => {\n resolve = res;\n reject = rej;\n });\n const disposer = onAbort(signal, () => {\n const _reject = reject;\n if (_reject) {\n resolve = void 0;\n reject = void 0;\n _reject(new Error(\"Deferred aborted\"));\n }\n });\n return {\n // The promise that resolves to the result\n promise,\n // Resolve the promise with a result\n resolve: (value) => {\n const _resolve = resolve;\n if (_resolve) {\n resolve = void 0;\n reject = void 0;\n disposer.release();\n _resolve(value);\n }\n },\n // Reject the promise with an error\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n reject: (error) => {\n const _reject = reject;\n if (_reject) {\n resolve = void 0;\n reject = void 0;\n disposer.release();\n _reject(error);\n }\n }\n };\n};\nconst createSignal = () => {\n const waiters = [];\n return {\n trigger: () => {\n if (waiters.length >= 1) {\n waiters.shift().resolve();\n }\n },\n wait: async (signal) => {\n if (signal == null ? void 0 : signal.aborted) {\n throw new Error(\"Signal aborted\");\n }\n const waiter = createDeferred();\n waiters.push(waiter);\n const disposer = onAbort(signal, () => {\n waiters.splice(waiters.indexOf(waiter), 1);\n waiter.reject(new Error(\"Signal aborted\"));\n });\n try {\n await waiter.promise;\n } finally {\n disposer.release();\n }\n }\n };\n};\nconst createManuallySignal = (initialState) => {\n const waiters = [];\n let raised = initialState != null ? initialState : false;\n return {\n trigger: () => {\n raised = false;\n const waiter = waiters.shift();\n if (waiter) {\n waiter.resolve();\n raised = false;\n }\n },\n raise: () => {\n while (waiters.length >= 1) {\n raised = true;\n waiters.shift().resolve();\n }\n raised = true;\n },\n drop: () => {\n raised = false;\n },\n wait: async (signal) => {\n if (raised) {\n return;\n }\n if (signal == null ? void 0 : signal.aborted) {\n throw new Error(\"Signal aborted\");\n }\n const waiter = createDeferred();\n waiters.push(waiter);\n const disposer = onAbort(signal, () => {\n waiters.splice(waiters.indexOf(waiter), 1);\n waiter.reject(new Error(\"Signal aborted\"));\n });\n try {\n await waiter.promise;\n } finally {\n disposer.release();\n }\n }\n };\n};\nconst createDeferredGenerator = (options) => {\n const maxItemReserved = options == null ? void 0 : options.maxItemReserved;\n const signal = options == null ? void 0 : options.signal;\n const queue = [];\n const arrived = createManuallySignal();\n const canReserve = maxItemReserved ? createManuallySignal(true) : void 0;\n const generator = async function* () {\n while (true) {\n while (true) {\n const item = queue.shift();\n if (maxItemReserved && queue.length === maxItemReserved - 1) {\n canReserve.raise();\n }\n if (!item) {\n break;\n }\n switch (item.kind) {\n case \"value\":\n yield item.value;\n break;\n case \"completed\":\n return;\n case \"error\":\n throw item.error;\n }\n if (signal == null ? void 0 : signal.aborted) {\n throw new Error(\"Deferred generator aborted\");\n }\n }\n arrived.drop();\n try {\n await arrived.wait(signal);\n } catch (error) {\n if (error instanceof Error && error.message === \"Signal aborted\") {\n error.message = \"Deferred generator aborted\";\n }\n throw error;\n }\n }\n }();\n const enqueue = async (item, signal2) => {\n while (true) {\n if (!maxItemReserved || queue.length < maxItemReserved) {\n const remains = queue.push(item);\n if (remains === 1) {\n arrived.raise();\n }\n if (remains === maxItemReserved) {\n canReserve.drop();\n }\n break;\n }\n try {\n await canReserve.wait(signal2);\n } catch (error) {\n if (error instanceof Error && error.message === \"Signal aborted\") {\n error.message = \"Deferred generator aborted\";\n }\n throw error;\n }\n }\n };\n return {\n // The async generator that yields values\n generator,\n // Yield a value to the generator\n yield: (value, signal2) => enqueue({ kind: \"value\", value }, signal2),\n // Complete the generator (equivalent to return)\n return: (signal2) => enqueue({ kind: \"completed\" }, signal2),\n // Throw an error to the generator\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n throw: (error, signal2) => enqueue({ kind: \"error\", error }, signal2)\n };\n};\nconst createLogicalContext = (id) => {\n return { id, data: /* @__PURE__ */ new Map() };\n};\nlet currentLogicalContext = createLogicalContext(Symbol(\"[root]\"));\nconst setCurrentLogicalContext = (context) => {\n currentLogicalContext = context;\n};\nconst trampoline = (adjustment, callback, thisArg, ...args) => {\n const previousLogicalContext = currentLogicalContext;\n currentLogicalContext = adjustment.contextToUse;\n try {\n return callback.call(thisArg, ...args);\n } finally {\n adjustment.contextAfter = currentLogicalContext;\n currentLogicalContext = previousLogicalContext;\n }\n};\nlet isPrepared = false;\nconst prepare = () => {\n if (isPrepared) {\n return;\n }\n isPrepared = true;\n if (typeof globalThis.setTimeout !== \"undefined\") {\n const __setTimeout = globalThis.setTimeout;\n globalThis.setTimeout = (handler, timeout, ...args) => {\n const capturedLogicalContext = currentLogicalContext;\n return __setTimeout(\n (...args2) => {\n const adjustment = { contextToUse: capturedLogicalContext };\n trampoline(adjustment, handler, void 0, ...args2);\n },\n timeout,\n ...args\n );\n };\n }\n if (typeof globalThis.setInterval !== \"undefined\") {\n const __setInterval = globalThis.setInterval;\n globalThis.setInterval = (handler, timeout, ...args) => {\n const capturedLogicalContext = currentLogicalContext;\n return __setInterval(\n (...args2) => {\n const adjustment = { contextToUse: capturedLogicalContext };\n trampoline(adjustment, handler, void 0, ...args2);\n },\n timeout,\n ...args\n );\n };\n }\n if (typeof globalThis.queueMicrotask !== \"undefined\") {\n const __queueMicrotask = globalThis.queueMicrotask;\n globalThis.queueMicrotask = (callback) => {\n const capturedLogicalContext = currentLogicalContext;\n return __queueMicrotask(() => {\n const adjustment = { contextToUse: capturedLogicalContext };\n trampoline(adjustment, callback, void 0);\n });\n };\n }\n if (typeof globalThis.setImmediate !== \"undefined\") {\n const __setImmediate = globalThis.setImmediate;\n globalThis.setImmediate = (callback, ...args) => {\n const capturedLogicalContext = currentLogicalContext;\n return __setImmediate((...callbackArgs) => {\n const adjustment = { contextToUse: capturedLogicalContext };\n trampoline(adjustment, callback, void 0, ...callbackArgs);\n }, ...args);\n };\n }\n if (typeof process !== \"undefined\" && process.nextTick) {\n const __nextTick = process.nextTick;\n process.nextTick = (callback, ...args) => {\n const capturedLogicalContext = currentLogicalContext;\n return __nextTick(() => {\n const adjustment = { contextToUse: capturedLogicalContext };\n trampoline(adjustment, callback, void 0, ...args);\n });\n };\n }\n if (typeof Promise !== \"undefined\") {\n const __then = Promise.prototype.then;\n const __catch = Promise.prototype.catch;\n const __finally = Promise.prototype.finally;\n Promise.prototype.then = function(onFulfilled, onRejected) {\n const capturedLogicalContext = currentLogicalContext;\n const resultPromise = __then.call(\n this,\n onFulfilled ? (value) => {\n const adjustment = { contextToUse: capturedLogicalContext };\n return trampoline(adjustment, onFulfilled, void 0, value);\n } : void 0,\n onRejected ? (reason) => {\n const adjustment = { contextToUse: capturedLogicalContext };\n return trampoline(adjustment, onRejected, void 0, reason);\n } : void 0\n );\n return resultPromise;\n };\n Promise.prototype.catch = function(onRejected) {\n const capturedLogicalContext = currentLogicalContext;\n const resultPromise = __catch.call(\n this,\n onRejected ? (reason) => {\n const adjustment = { contextToUse: capturedLogicalContext };\n return trampoline(adjustment, onRejected, void 0, reason);\n } : void 0\n );\n return resultPromise;\n };\n Promise.prototype.finally = function(onFinally) {\n const capturedLogicalContext = currentLogicalContext;\n const resultPromise = __finally.call(\n this,\n onFinally ? () => {\n const adjustment = { contextToUse: capturedLogicalContext };\n return trampoline(adjustment, onFinally, void 0);\n } : void 0\n );\n return resultPromise;\n };\n }\n if (typeof EventTarget !== \"undefined\" && EventTarget.prototype && EventTarget.prototype.addEventListener) {\n const __eventTargetAddEventListener = EventTarget.prototype.addEventListener;\n EventTarget.prototype.addEventListener = function(type, listener, options) {\n if (listener === null || listener === void 0) {\n return __eventTargetAddEventListener.call(this, type, listener, options);\n }\n if (typeof listener === \"function\") {\n const capturedLogicalContext = currentLogicalContext;\n const wrappedListener = (event) => {\n const adjustment = { contextToUse: capturedLogicalContext };\n return trampoline(adjustment, listener, event.currentTarget, event);\n };\n return __eventTargetAddEventListener.call(this, type, wrappedListener, options);\n } else if (typeof listener === \"object\" && \"handleEvent\" in listener) {\n const capturedLogicalContext = currentLogicalContext;\n const wrappedListener = {\n handleEvent: (event) => {\n const adjustment = { contextToUse: capturedLogicalContext };\n return trampoline(adjustment, () => listener.handleEvent(event));\n }\n };\n return __eventTargetAddEventListener.call(this, type, wrappedListener, options);\n }\n return __eventTargetAddEventListener.call(this, type, listener, options);\n };\n }\n if (typeof Element !== \"undefined\" && Element.prototype && Element.prototype.addEventListener) {\n const __elementAddEventListener = Element.prototype.addEventListener;\n Element.prototype.addEventListener = function(type, listener, options) {\n if (listener === null || listener === void 0) {\n return __elementAddEventListener.call(this, type, listener, options);\n }\n if (typeof listener === \"function\") {\n const capturedLogicalContext = currentLogicalContext;\n const wrappedListener = (event) => {\n const adjustment = { contextToUse: capturedLogicalContext };\n return trampoline(adjustment, listener, event.currentTarget, event);\n };\n return __elementAddEventListener.call(this, type, wrappedListener, options);\n } else if (typeof listener === \"object\" && \"handleEvent\" in listener) {\n const capturedLogicalContext = currentLogicalContext;\n const wrappedListener = {\n handleEvent: (event) => {\n const adjustment = { contextToUse: capturedLogicalContext };\n return trampoline(adjustment, () => listener.handleEvent(event));\n }\n };\n return __elementAddEventListener.call(this, type, wrappedListener, options);\n }\n return __elementAddEventListener.call(this, type, listener, options);\n };\n }\n if (typeof globalThis.requestAnimationFrame !== \"undefined\") {\n const __requestAnimationFrame = globalThis.requestAnimationFrame;\n globalThis.requestAnimationFrame = (callback) => {\n const capturedLogicalContext = currentLogicalContext;\n return __requestAnimationFrame((time) => {\n const adjustment = { contextToUse: capturedLogicalContext };\n return trampoline(adjustment, callback, void 0, time);\n });\n };\n }\n if (typeof globalThis.XMLHttpRequest !== \"undefined\") {\n const __XMLHttpRequest = globalThis.XMLHttpRequest;\n globalThis.XMLHttpRequest = class extends __XMLHttpRequest {\n constructor() {\n super();\n this._userHandlers = /* @__PURE__ */ new Map();\n const eventHandlerProperties = [\n \"onreadystatechange\",\n \"onloadstart\",\n \"onprogress\",\n \"onabort\",\n \"onerror\",\n \"onload\",\n \"ontimeout\",\n \"onloadend\"\n ];\n eventHandlerProperties.forEach((prop) => {\n Object.defineProperty(this, prop, {\n get: () => this._userHandlers.get(prop) || null,\n set: (newHandler) => {\n this._userHandlers.set(prop, newHandler);\n if (newHandler && typeof newHandler === \"function\") {\n const capturedLogicalContext = currentLogicalContext;\n const wrappedHandler = function(event) {\n const adjustment = { contextToUse: capturedLogicalContext };\n return trampoline(adjustment, newHandler, this, event);\n };\n const parentProto = Object.getPrototypeOf(Object.getPrototypeOf(this));\n const descriptor = Object.getOwnPropertyDescriptor(parentProto, prop);\n if (descriptor && descriptor.set) {\n descriptor.set.call(this, wrappedHandler);\n } else {\n this[`_${prop}`] = wrappedHandler;\n }\n } else {\n const parentProto = Object.getPrototypeOf(Object.getPrototypeOf(this));\n const descriptor = Object.getOwnPropertyDescriptor(parentProto, prop);\n if (descriptor && descriptor.set) {\n descriptor.set.call(this, null);\n } else {\n this[`_${prop}`] = null;\n }\n }\n },\n configurable: true,\n enumerable: true\n });\n });\n }\n addEventListener(type, listener, options) {\n const capturedLogicalContext = currentLogicalContext;\n if (!listener) {\n return super.addEventListener(type, listener, options);\n }\n if (typeof listener === \"function\") {\n const wrappedListener = (event) => {\n const adjustment = { contextToUse: capturedLogicalContext };\n return trampoline(adjustment, listener, event.currentTarget, event);\n };\n return super.addEventListener(type, wrappedListener, options);\n } else if (typeof listener === \"object\" && \"handleEvent\" in listener) {\n const wrappedListener = {\n handleEvent: (event) => {\n const adjustment = { contextToUse: capturedLogicalContext };\n return trampoline(adjustment, () => listener.handleEvent(event));\n }\n };\n return super.addEventListener(type, wrappedListener, options);\n }\n return super.addEventListener(type, listener, options);\n }\n };\n }\n if (typeof globalThis.WebSocket !== \"undefined\") {\n const __WebSocket = globalThis.WebSocket;\n globalThis.WebSocket = class extends __WebSocket {\n constructor(url, protocols) {\n super(url, protocols);\n this._userHandlers = /* @__PURE__ */ new Map();\n const eventHandlerProperties = [\n \"onopen\",\n \"onmessage\",\n \"onerror\",\n \"onclose\"\n ];\n eventHandlerProperties.forEach((prop) => {\n Object.defineProperty(this, prop, {\n get: () => this._userHandlers.get(prop) || null,\n set: (newHandler) => {\n this._userHandlers.set(prop, newHandler);\n if (newHandler && typeof newHandler === \"function\") {\n const capturedLogicalContext = currentLogicalContext;\n const wrappedHandler = function(event) {\n const adjustment = { contextToUse: capturedLogicalContext };\n return trampoline(adjustment, newHandler, this, event);\n };\n const parentProto = Object.getPrototypeOf(Object.getPrototypeOf(this));\n const descriptor = Object.getOwnPropertyDescriptor(parentProto, prop);\n if (descriptor && descriptor.set) {\n descriptor.set.call(this, wrappedHandler);\n } else {\n this[`_${prop}`] = wrappedHandler;\n }\n } else {\n const parentProto = Object.getPrototypeOf(Object.getPrototypeOf(this));\n const descriptor = Object.getOwnPropertyDescriptor(parentProto, prop);\n if (descriptor && descriptor.set) {\n descriptor.set.call(this, null);\n } else {\n this[`_${prop}`] = null;\n }\n }\n },\n configurable: true,\n enumerable: true\n });\n });\n }\n addEventListener(type, listener, options) {\n const capturedLogicalContext = currentLogicalContext;\n if (!listener) {\n return super.addEventListener(type, listener, options);\n }\n if (typeof listener === \"function\") {\n const wrappedListener = (event) => {\n const adjustment = { contextToUse: capturedLogicalContext };\n return trampoline(adjustment, listener, event.currentTarget, event);\n };\n return super.addEventListener(type, wrappedListener, options);\n } else if (typeof listener === \"object\" && \"handleEvent\" in listener) {\n const wrappedListener = {\n handleEvent: (event) => {\n const adjustment = { contextToUse: capturedLogicalContext };\n return trampoline(adjustment, () => listener.handleEvent(event));\n }\n };\n return super.addEventListener(type, wrappedListener, options);\n }\n return super.addEventListener(type, listener, options);\n }\n };\n }\n if (typeof globalThis.MutationObserver !== \"undefined\") {\n const __MutationObserver = globalThis.MutationObserver;\n globalThis.MutationObserver = class extends __MutationObserver {\n constructor(callback) {\n const capturedLogicalContext = currentLogicalContext;\n const wrappedCallback = (mutations, observer) => {\n const adjustment = { contextToUse: capturedLogicalContext };\n return trampoline(adjustment, callback, void 0, mutations, observer);\n };\n super(wrappedCallback);\n }\n };\n }\n if (typeof globalThis.ResizeObserver !== \"undefined\") {\n const __ResizeObserver = globalThis.ResizeObserver;\n globalThis.ResizeObserver = class extends __ResizeObserver {\n constructor(callback) {\n const capturedLogicalContext = currentLogicalContext;\n const wrappedCallback = (entries, observer) => {\n const adjustment = { contextToUse: capturedLogicalContext };\n return trampoline(adjustment, callback, void 0, entries, observer);\n };\n super(wrappedCallback);\n }\n };\n }\n if (typeof globalThis.IntersectionObserver !== \"undefined\") {\n const __IntersectionObserver = globalThis.IntersectionObserver;\n globalThis.IntersectionObserver = class extends __IntersectionObserver {\n constructor(callback, options) {\n const capturedLogicalContext = currentLogicalContext;\n const wrappedCallback = (entries, observer) => {\n const adjustment = { contextToUse: capturedLogicalContext };\n return trampoline(adjustment, callback, void 0, entries, observer);\n };\n super(wrappedCallback, options);\n }\n };\n }\n if (typeof globalThis.Worker !== \"undefined\") {\n const __Worker = globalThis.Worker;\n globalThis.Worker = class extends __Worker {\n constructor(scriptURL, options) {\n super(scriptURL, options);\n this._userHandlers = /* @__PURE__ */ new Map();\n const eventHandlerProperties = [\n \"onmessage\",\n \"onmessageerror\",\n \"onerror\"\n ];\n eventHandlerProperties.forEach((prop) => {\n Object.defineProperty(this, prop, {\n get: () => this._userHandlers.get(prop) || null,\n set: (newHandler) => {\n this._userHandlers.set(prop, newHandler);\n if (newHandler && typeof newHandler === \"function\") {\n const capturedLogicalContext = currentLogicalContext;\n const wrappedHandler = function(event) {\n const adjustment = { contextToUse: capturedLogicalContext };\n return trampoline(adjustment, newHandler, this, event);\n };\n const parentProto = Object.getPrototypeOf(Object.getPrototypeOf(this));\n const descriptor = Object.getOwnPropertyDescriptor(parentProto, prop);\n if (descriptor && descriptor.set) {\n descriptor.set.call(this, wrappedHandler);\n } else {\n this[`_${prop}`] = wrappedHandler;\n }\n } else {\n const parentProto = Object.getPrototypeOf(Object.getPrototypeOf(this));\n const descriptor = Object.getOwnPropertyDescriptor(parentProto, prop);\n if (descriptor && descriptor.set) {\n descriptor.set.call(this, null);\n } else {\n this[`_${prop}`] = null;\n }\n }\n },\n configurable: true,\n enumerable: true\n });\n });\n }\n addEventListener(type, listener, options) {\n const capturedLogicalContext = currentLogicalContext;\n if (!listener) {\n return super.addEventListener(type, listener, options);\n }\n if (typeof listener === \"function\") {\n const wrappedListener = (event) => {\n const adjustment = { contextToUse: capturedLogicalContext };\n return trampoline(adjustment, listener, event.currentTarget, event);\n };\n return super.addEventListener(type, wrappedListener, options);\n } else if (typeof listener === \"object\" && \"handleEvent\" in listener) {\n const wrappedListener = {\n handleEvent: (event) => {\n const adjustment = { contextToUse: capturedLogicalContext };\n return trampoline(adjustment, () => listener.handleEvent(event));\n }\n };\n return super.addEventListener(type, wrappedListener, options);\n }\n return super.addEventListener(type, listener, options);\n }\n };\n }\n if (typeof globalThis.MessagePort !== \"undefined\") {\n const __MessagePort = globalThis.MessagePort;\n const createMessagePortWrapper = (originalPort) => {\n const _userHandlers = /* @__PURE__ */ new Map();\n const eventHandlerProperties = [\"onmessage\", \"onmessageerror\"];\n eventHandlerProperties.forEach((prop) => {\n Object.defineProperty(originalPort, prop, {\n get: () => _userHandlers.get(prop) || null,\n set: (newHandler) => {\n _userHandlers.set(prop, newHandler);\n if (newHandler && typeof newHandler === \"function\") {\n const capturedLogicalContext = currentLogicalContext;\n const wrappedHandler = function(event) {\n const adjustment = { contextToUse: capturedLogicalContext };\n return trampoline(adjustment, newHandler, this, event);\n };\n const descriptor = Object.getOwnPropertyDescriptor(__MessagePort.prototype, prop);\n if (descriptor && descriptor.set) {\n descriptor.set.call(originalPort, wrappedHandler);\n }\n } else {\n const descriptor = Object.getOwnPropertyDescriptor(__MessagePort.prototype, prop);\n if (descriptor && descriptor.set) {\n descriptor.set.call(originalPort, null);\n }\n }\n },\n configurable: true,\n enumerable: true\n });\n });\n const originalAddEventListener = originalPort.addEventListener;\n originalPort.addEventListener = function(type, listener, options) {\n const capturedLogicalContext = currentLogicalContext;\n if (!listener) {\n return originalAddEventListener.call(this, type, listener, options);\n }\n if (typeof listener === \"function\") {\n const wrappedListener = (event) => {\n const adjustment = { contextToUse: capturedLogicalContext };\n return trampoline(adjustment, listener, event.currentTarget, event);\n };\n return originalAddEventListener.call(this, type, wrappedListener, options);\n } else if (typeof listener === \"object\" && \"handleEvent\" in listener) {\n const wrappedListener = {\n handleEvent: (event) => {\n const adjustment = { contextToUse: capturedLogicalContext };\n return trampoline(adjustment, () => listener.handleEvent(event));\n }\n };\n return originalAddEventListener.call(this, type, wrappedListener, options);\n }\n return originalAddEventListener.call(this, type, listener, options);\n };\n return originalPort;\n };\n if (typeof globalThis.MessageChannel !== \"undefined\") {\n const __MessageChannel = globalThis.MessageChannel;\n globalThis.MessageChannel = class extends __MessageChannel {\n constructor() {\n super();\n createMessagePortWrapper(this.port1);\n createMessagePortWrapper(this.port2);\n }\n };\n }\n }\n};\nconst setLogicalContextValue = (key, value) => {\n prepare();\n if (value !== void 0) {\n currentLogicalContext.data.set(key, value);\n } else {\n currentLogicalContext.data.delete(key);\n }\n};\nconst getLogicalContextValue = (key) => {\n prepare();\n return currentLogicalContext.data.get(key);\n};\nconst runOnNewLogicalContext = (prefix, handler) => {\n const previousLogicalContext = currentLogicalContext;\n setCurrentLogicalContext(createLogicalContext(Symbol(`${prefix}-${crypto.randomUUID()}`)));\n try {\n return handler();\n } finally {\n setCurrentLogicalContext(previousLogicalContext);\n }\n};\nconst getCurrentLogicalContextId = () => {\n prepare();\n return currentLogicalContext.id;\n};\nconst createAsyncLocal = () => {\n const key = Symbol(`async-local-${crypto.randomUUID()}`);\n return {\n setValue: (value) => {\n setLogicalContextValue(key, value);\n },\n getValue: () => {\n return getLogicalContextValue(key);\n }\n };\n};\nexport {\n createAsyncLocal,\n createAsyncLock,\n createDeferred,\n createDeferredGenerator,\n createManuallySignal,\n createSignal,\n defer,\n delay,\n getCurrentLogicalContextId,\n getLogicalContextValue,\n onAbort,\n runOnNewLogicalContext,\n setLogicalContextValue\n};\n","// screw-up - Easy package metadata inserter on Vite plugin\n// Copyright (c) Kouji Matsui (@kekyo@mi.kekyo.net)\n// Under MIT.\n// https://github.com/kekyo/screw-up/\n\nimport type { Plugin } from 'vite';\nimport { readFile, writeFile, readdir, mkdir } from 'fs/promises';\nimport { existsSync } from 'fs';\nimport { join, dirname } from 'path';\nimport { createAsyncLock } from 'async-primitives';\nimport { resolvePackageMetadata, createConsoleLogger } from './internal';\nimport { ScrewUpOptions, PackageMetadata } from './types';\nimport { getFetchGitMetadata } from './analyzer';\nimport { git_commit_hash, name, version } from './generated/packageMetadata';\n\n/**\n * Generate banner string from package.json metadata\n * @param metadata - Package metadata\n * @param outputKeys - Array of keys to output in specified order\n * @returns Banner string\n */\nexport const generateBanner = (metadata: PackageMetadata, outputKeys: string[]): string => {\n const parts: string[] = [];\n \n for (const key of outputKeys) {\n const value = metadata[key];\n if (value) {\n parts.push(`${key}: ${value}`);\n }\n }\n \n return parts.length > 0 ? `/*!\\n * ${parts.join('\\n * ')}\\n */` : '';\n};\n\n/**\n * Insert banner header at appropriate position considering shebang\n * @param content - The content to insert banner into\n * @param banner - The banner header to insert\n * @returns Content with banner header inserted\n */\nconst insertBannerHeader = (content: string, banner: string): string => {\n const lines = content.split('\\n');\n \n // Check if first line is shebang\n if (lines.length > 0 && lines[0].startsWith('#!')) {\n // Insert banner after shebang line\n return lines[0] + '\\n' + banner + '\\n' + lines.slice(1).join('\\n');\n } else {\n // Insert banner at the beginning\n return banner + '\\n' + content;\n }\n};\n\n/**\n * Convert string key to valid TypeScript identifier\n * @param key - The key to convert\n * @returns Valid TypeScript identifier\n */\nconst sanitizeKey = (key: string): string => {\n // Replace dots and other invalid characters with underscores\n return key.replace(/[^a-zA-Z0-9_]/g, '_').replace(/^(\\d)/, '_$1');\n};\n\n/**\n * Generate TypeScript metadata file content from package metadata\n * @param metadata - Package metadata\n * @param outputKeys - Array of keys to output\n * @returns TypeScript file content\n */\nconst generateMetadataFile = (metadata: PackageMetadata, outputKeys: string[]): string => {\n const lines: string[] = [];\n \n lines.push('// This file is auto-generated by screw-up plugin');\n lines.push('// Do not edit manually');\n lines.push('');\n \n for (const key of outputKeys) {\n const value = metadata[key];\n if (value) {\n const sanitizedKey = sanitizeKey(key);\n const escapedValue = JSON.stringify(value);\n lines.push(`export const ${sanitizedKey} = ${escapedValue};`);\n }\n }\n \n lines.push('');\n \n return lines.join('\\n');\n};\n\n/**\n * Generate TypeScript type definition file content from output keys\n * @param outputKeys - Array of keys to output\n * @returns TypeScript type definition file content\n */\nconst generateMetadataTypeFile = (outputKeys: string[]): string => {\n const lines: string[] = [];\n \n lines.push('// This file is auto-generated by screw-up plugin');\n lines.push('// Do not edit manually');\n lines.push('');\n \n for (const key of outputKeys) {\n const sanitizedKey = sanitizeKey(key);\n lines.push(`export declare const ${sanitizedKey}: string;`);\n }\n \n lines.push('');\n \n return lines.join('\\n');\n};\n\n/////////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Vite plugin that adds banner to the bundled code\n * @param options - Plugin options\n * @returns Vite plugin\n */\nexport const screwUp = (options: ScrewUpOptions = {}): Plugin => {\n const {\n outputKeys = ['name', 'version', 'description', 'author', 'license', 'repository.url', 'git.commit.hash'],\n assetFilters = ['\\\\.d\\\\.ts$'],\n outputMetadataFile = false,\n outputMetadataFilePath = 'src/generated/packageMetadata.ts',\n outputMetadataFileTypePath,\n outputMetadataKeys = ['name', 'version', 'description', 'author', 'license', 'repository.url', 'git.commit.hash'],\n checkWorkingDirectoryStatus = true,\n alwaysOverrideVersionFromGit = true,\n insertMetadataBanner = true} = options;\n\n const assetFiltersRegex = assetFilters.map(filter => new RegExp(filter));\n\n // Generate default type definition file path if not provided\n const resolvedOutputMetadataFileTypePath = outputMetadataFileTypePath || \n outputMetadataFilePath.replace(/\\.ts$/, '.d.ts');\n const generateMetadataSourceLocker = createAsyncLock();\n\n const loggerPrefix = `${name}-vite`;\n let logger = createConsoleLogger(loggerPrefix);\n let banner: string;\n let metadata: any;\n let projectRoot: string;\n let fetchGitMetadata = () => Promise.resolve<any>({});\n\n // Helper function to write file if content has changed\n const writeFileIfChanged = async (filePath: string, content: string, description: string): Promise<boolean> => {\n try {\n // Check if file exists and compare content\n let shouldWrite = !existsSync(filePath);\n if (!shouldWrite) {\n try {\n const existingContent = await readFile(filePath, 'utf-8');\n shouldWrite = existingContent !== content;\n } catch {\n // File doesn't exist or couldn't read, we should write it\n shouldWrite = true;\n }\n }\n\n if (shouldWrite) {\n // Ensure directory exists\n await mkdir(dirname(filePath), { recursive: true });\n // Write file only if content has changed\n await writeFile(filePath, content);\n return true;\n } else {\n // File content is the same, no need to write\n return false;\n }\n } catch (error) {\n logger.warn(`Failed to write ${description}: ${filePath}: ${error}`);\n return false;\n }\n };\n\n // Generate and write metadata TypeScript file\n const generateMetadataSourceFile = async () => {\n // Resolve package metadata\n const result = await resolvePackageMetadata(\n projectRoot, fetchGitMetadata, alwaysOverrideVersionFromGit, logger);\n metadata = result.metadata;\n // Regenerate banner with updated metadata\n banner = generateBanner(metadata, outputKeys);\n if (outputMetadataFile) {\n const metadataSourceContent = generateMetadataFile(metadata, outputMetadataKeys);\n const metadataSourcePath = join(projectRoot, outputMetadataFilePath);\n return await writeFileIfChanged(metadataSourcePath, metadataSourceContent, 'metadata source file');\n }\n return false;\n };\n\n // Generate and write metadata TypeScript type definition file\n const generateMetadataTypeDefinitionFile = async () => {\n if (outputMetadataFile) {\n const metadataTypeContent = generateMetadataTypeFile(outputMetadataKeys);\n const metadataTypePath = join(projectRoot, resolvedOutputMetadataFileTypePath);\n return await writeFileIfChanged(metadataTypePath, metadataTypeContent, 'metadata type definition file');\n }\n return false;\n };\n\n // Generate dummy metadata TypeScript file with empty string values\n const generateDummyMetadataFile = async () => {\n if (outputMetadataFile) {\n const metadataSourcePath = join(projectRoot, outputMetadataFilePath);\n // Only generate if file doesn't exist (don't overwrite existing files)\n if (!existsSync(metadataSourcePath)) {\n // Create dummy metadata with empty strings for all keys\n const dummyMetadata: any = {};\n outputMetadataKeys.forEach(key => {\n dummyMetadata[key] = '[Require first build]';\n });\n const dummyContent = generateMetadataFile(dummyMetadata, outputMetadataKeys);\n return await writeFileIfChanged(metadataSourcePath, dummyContent, 'dummy metadata source file');\n }\n }\n return false;\n };\n\n return {\n name: 'screw-up',\n // Ensure screw-up runs before other plugins\n // (especially vite-plugin-dts, avoid packageMetadata.ts is not found)\n enforce: 'pre',\n // Plugin starting\n applyToEnvironment: async () => {\n logger.info(`${version}-${git_commit_hash}: Started.`);\n \n // Generate type definition file early since it doesn't require actual metadata values\n if (projectRoot && await generateMetadataTypeDefinitionFile()) {\n logger.info(`applyToEnvironment: Metadata type definition file is generated: ${resolvedOutputMetadataFileTypePath}`);\n }\n \n // Generate dummy metadata source file to prevent import errors on initial build\n if (projectRoot && await generateDummyMetadataFile()) {\n logger.info(`applyToEnvironment: Dummy metadata source file is generated: ${outputMetadataFilePath}`);\n }\n \n return true;\n },\n // Configuration resolved phase\n configResolved: async config => {\n // Avoid race conditions.\n const l = await generateMetadataSourceLocker.lock();\n try {\n logger.debug(`configResolved: Started.`);\n\n // Save project root\n projectRoot = config.root;\n if (config?.logger) {\n logger = createConsoleLogger(loggerPrefix, config.logger);\n } else if (config?.customLogger) {\n logger = createConsoleLogger(loggerPrefix, config.customLogger);\n }\n // Get Git metadata fetcher function\n fetchGitMetadata = getFetchGitMetadata(\n projectRoot, checkWorkingDirectoryStatus, logger);\n // Generate metadata TypeScript file early to ensure it's available during TypeScript compilation\n if (await generateMetadataSourceFile()) {\n logger.info(`configResolved: Metadata source file is generated: ${outputMetadataFilePath}`);\n }\n } finally {\n logger.debug(`configResolved: Exited.`);\n l.release();\n }\n },\n // Server hook\n configureServer: async (server) => {\n // Avoid race conditions.\n const l = await generateMetadataSourceLocker.lock();\n try {\n logger.debug(`configureServer: Started.`);\n\n // Exclude generated metadata file from watcher to prevent infinite loop\n if (outputMetadataFile && server.watcher) {\n const metadataSourcePath = join(projectRoot, outputMetadataFilePath);\n // Use unwatch to exclude the file from being watched\n server.watcher.unwatch(metadataSourcePath);\n logger.debug(`configureServer: Excluded from watcher: ${outputMetadataFilePath}`);\n }\n\n if (await generateMetadataSourceFile()) {\n logger.info(`configureServer: Metadata source file is generated: ${outputMetadataFilePath}`);\n }\n } finally {\n logger.debug(`configureServer: Exited.`);\n l.release();\n }\n },\n // Build start phase\n buildStart: async () => {\n // Avoid race conditions.\n const l = await generateMetadataSourceLocker.lock();\n try {\n logger.debug(`buildStart: Started.`);\n // Re-resolve package metadata to capture any changes since configResolved\n // Update metadata TypeScript file with latest data\n if (await generateMetadataSourceFile()) {\n logger.info(`buildStart: Metadata source file is generated: ${outputMetadataFilePath}`);\n }\n } finally {\n logger.debug(`buildStart: Exited.`);\n l.release();\n }\n },\n // Generate bundle phase\n generateBundle: (_options, bundle) => {\n // Add banner to each output file if enabled\n if (insertMetadataBanner) {\n let count = 0;\n for (const fileName in bundle) {\n const chunk = bundle[fileName];\n if (chunk.type === 'chunk') {\n chunk.code = insertBannerHeader(chunk.code, banner);\n count++;\n } else if (chunk.type === 'asset' && assetFiltersRegex.some(filter => filter.test(fileName))) {\n if (typeof chunk.source === 'string') {\n chunk.source = insertBannerHeader(chunk.source, banner + '\\n'); // insert more blank line\n count++;\n }\n }\n }\n if (count >= 1) {\n logger.debug(`generateBundle: Banner header inserted: ${count} file(s)`);\n }\n }\n },\n // Write bundle phase\n writeBundle: async options => {\n // Handle files written by other plugins (like vite-plugin-dts) if banner insertion is enabled\n if (!insertMetadataBanner || !options.dir) return;\n\n try {\n // Read all files in the output directory\n const files = await readdir(options.dir, { recursive: true });\n\n // Iterate over all files\n let count = 0;\n for (const file of files) {\n const filePath = join(options.dir, file);\n\n // Check if the file is target asset file\n if (assetFiltersRegex.some(filter => filter.test(file))) {\n try {\n // Read the asset file\n const content = await readFile(filePath, 'utf-8');\n // Append banner to the asset file if it doesn't already contain it\n if (!content.includes(banner)) {\n await writeFile(filePath, insertBannerHeader(content, banner + '\\n'));\n count++;\n }\n } catch (error) {\n // Skip files that can't be read/written\n }\n }\n }\n if (count >= 1) {\n logger.debug(`writeBundle: Banner header inserted: ${count} file(s)`);\n }\n } catch (error) {\n // Skip files that can't be read/written\n }\n }\n };\n};\n"],"names":["options"],"mappings":"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","x_google_ignoreList":[0]}
@@ -1,11 +1,11 @@
1
1
  /*!
2
2
  * name: screw-up
3
- * version: 1.1.0
3
+ * version: 1.2.0
4
4
  * description: Simply package metadata inserter on Vite plugin
5
5
  * author: Kouji Matsui (@kekyo@mi.kekyo.net)
6
6
  * license: MIT
7
7
  * repository.url: https://github.com/kekyo/screw-up.git
8
- * git.commit.hash: 379e392faba0e8bd008ed386eb113cdee3c79de9
8
+ * git.commit.hash: cc82696555da70d209bcd4d7ca6cba330360e074
9
9
  */
10
10
 
11
11
  import { PackageMetadata } from './types';
@@ -35,9 +35,11 @@ export interface Logger {
35
35
  readonly error: (msg: string) => void;
36
36
  }
37
37
  /**
38
- * Default console logger implementation
39
- */
40
- export declare const createConsoleLogger: () => Logger;
38
+ * Default console logger implementation
39
+ * @param prefix - Log prefix
40
+ * @param driver - Console logging driver instance
41
+ */
42
+ export declare const createConsoleLogger: (prefix?: string, driver?: any) => Logger;
41
43
  /**
42
44
  * Result of package resolution with source tracking
43
45
  * @template T - Type of the package metadata
@@ -1 +1 @@
1
- {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAM1C;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC;AAED;;EAEE;AACF,eAAO,MAAM,mBAAmB,QAAO,MAOtC,CAAC;AAIF;;;GAGG;AACH,MAAM,WAAW,uBAAuB,CAAC,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;IACrB,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AA2BD;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,GAAU,WAAW,MAAM,EAAE,QAAQ,MAAM,KAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CA0BrG,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,wBAAwB,GACnC,eAAe,MAAM,EACrB,kBAAkB,MAAM,OAAO,CAAC,GAAG,CAAC,EACpC,8BAA8B,OAAO,EACrC,mBAAmB,GAAG,CAAC,MAAM,CAAC,EAC9B,QAAQ,MAAM,KACb,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CA0DvC,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,gCAAgC,GAC3C,aAAa,GAAG,EAChB,UAAU,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,EACvC,eAAe,MAAM,KACpB,GAiBF,CAAC;AAIF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,oBAAoB,GAC/B,kBAAkB,MAAM,OAAO,CAAC,GAAG,CAAC,EACpC,8BAA8B,OAAO,EACrC,WAAW,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,gBAAgB,eAAe,EAC/B,eAAe,eAAe,EAC9B,iBAAiB,MAAM,EACvB,gBAAgB,MAAM,EACtB,iBAAiB,MAAM,KAAG,OAAO,CAAC,eAAe,CA+BlD,CAAC;AAuIF;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,GACjC,aAAa,MAAM,EACnB,kBAAkB,MAAM,OAAO,CAAC,GAAG,CAAC,EACpC,8BAA8B,OAAO,EACrC,QAAQ,MAAM,KAAG,OAAO,CAAC,uBAAuB,CAAC,eAAe,CAAC,CAYlE,CAAC;AAkBF;;;;;;;;GAQG;AACH,eAAO,MAAM,2BAA2B,GACtC,aAAa,MAAM,EACnB,kBAAkB,MAAM,OAAO,CAAC,GAAG,CAAC,EACpC,8BAA8B,OAAO,EACrC,mBAAmB,GAAG,CAAC,MAAM,CAAC,EAC9B,QAAQ,MAAM,KAAG,OAAO,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAYtD,CAAC"}
1
+ {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAM1C;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC;AAED;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAAI,SAAS,MAAM,EAAE,SAAS,GAAG,KAAG,MAoBnE,CAAC;AAIF;;;GAGG;AACH,MAAM,WAAW,uBAAuB,CAAC,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;IACrB,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AA2BD;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,GAAU,WAAW,MAAM,EAAE,QAAQ,MAAM,KAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CA0BrG,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,wBAAwB,GACnC,eAAe,MAAM,EACrB,kBAAkB,MAAM,OAAO,CAAC,GAAG,CAAC,EACpC,8BAA8B,OAAO,EACrC,mBAAmB,GAAG,CAAC,MAAM,CAAC,EAC9B,QAAQ,MAAM,KACb,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CA0DvC,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,gCAAgC,GAC3C,aAAa,GAAG,EAChB,UAAU,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,EACvC,eAAe,MAAM,KACpB,GAiBF,CAAC;AAIF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,oBAAoB,GAC/B,kBAAkB,MAAM,OAAO,CAAC,GAAG,CAAC,EACpC,8BAA8B,OAAO,EACrC,WAAW,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,gBAAgB,eAAe,EAC/B,eAAe,eAAe,EAC9B,iBAAiB,MAAM,EACvB,gBAAgB,MAAM,EACtB,iBAAiB,MAAM,KAAG,OAAO,CAAC,eAAe,CA+BlD,CAAC;AAuIF;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,GACjC,aAAa,MAAM,EACnB,kBAAkB,MAAM,OAAO,CAAC,GAAG,CAAC,EACpC,8BAA8B,OAAO,EACrC,QAAQ,MAAM,KAAG,OAAO,CAAC,uBAAuB,CAAC,eAAe,CAAC,CAYlE,CAAC;AAkBF;;;;;;;;GAQG;AACH,eAAO,MAAM,2BAA2B,GACtC,aAAa,MAAM,EACnB,kBAAkB,MAAM,OAAO,CAAC,GAAG,CAAC,EACpC,8BAA8B,OAAO,EACrC,mBAAmB,GAAG,CAAC,MAAM,CAAC,EAC9B,QAAQ,MAAM,KAAG,OAAO,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAYtD,CAAC"}