@cbnventures/nova 0.11.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.
Files changed (134) hide show
  1. package/build/eslint.config.d.ts +3 -0
  2. package/build/eslint.config.d.ts.map +1 -0
  3. package/build/eslint.config.js +8 -0
  4. package/build/eslint.config.js.map +1 -0
  5. package/build/package.json +131 -0
  6. package/build/src/cli/index.d.ts +3 -0
  7. package/build/src/cli/index.d.ts.map +1 -0
  8. package/build/src/cli/index.js +258 -0
  9. package/build/src/cli/index.js.map +1 -0
  10. package/build/src/cli/recipe/sync-metadata.d.ts +5 -0
  11. package/build/src/cli/recipe/sync-metadata.d.ts.map +1 -0
  12. package/build/src/cli/recipe/sync-metadata.js +6 -0
  13. package/build/src/cli/recipe/sync-metadata.js.map +1 -0
  14. package/build/src/cli/recipe/sync-versions.d.ts +5 -0
  15. package/build/src/cli/recipe/sync-versions.d.ts.map +1 -0
  16. package/build/src/cli/recipe/sync-versions.js +6 -0
  17. package/build/src/cli/recipe/sync-versions.js.map +1 -0
  18. package/build/src/cli/utility/initialize.d.ts +19 -0
  19. package/build/src/cli/utility/initialize.d.ts.map +1 -0
  20. package/build/src/cli/utility/initialize.js +962 -0
  21. package/build/src/cli/utility/initialize.js.map +1 -0
  22. package/build/src/cli/utility/version.d.ts +11 -0
  23. package/build/src/cli/utility/version.d.ts.map +1 -0
  24. package/build/src/cli/utility/version.js +324 -0
  25. package/build/src/cli/utility/version.js.map +1 -0
  26. package/build/src/lib/item.d.ts +7 -0
  27. package/build/src/lib/item.d.ts.map +1 -0
  28. package/build/src/lib/item.js +55 -0
  29. package/build/src/lib/item.js.map +1 -0
  30. package/build/src/lib/nova-config.d.ts +21 -0
  31. package/build/src/lib/nova-config.d.ts.map +1 -0
  32. package/build/src/lib/nova-config.js +327 -0
  33. package/build/src/lib/nova-config.js.map +1 -0
  34. package/build/src/lib/regex.d.ts +19 -0
  35. package/build/src/lib/regex.d.ts.map +1 -0
  36. package/build/src/lib/regex.js +19 -0
  37. package/build/src/lib/regex.js.map +1 -0
  38. package/build/src/lib/utility.d.ts +11 -0
  39. package/build/src/lib/utility.d.ts.map +1 -0
  40. package/build/src/lib/utility.js +278 -0
  41. package/build/src/lib/utility.js.map +1 -0
  42. package/build/src/presets/eslint/dx-code-style.d.mts +4 -0
  43. package/build/src/presets/eslint/dx-code-style.d.mts.map +1 -0
  44. package/build/src/presets/eslint/dx-code-style.mjs +231 -0
  45. package/build/src/presets/eslint/dx-code-style.mjs.map +1 -0
  46. package/build/src/presets/eslint/dx-ignore.d.mts +4 -0
  47. package/build/src/presets/eslint/dx-ignore.d.mts.map +1 -0
  48. package/build/src/presets/eslint/dx-ignore.mjs +21 -0
  49. package/build/src/presets/eslint/dx-ignore.mjs.map +1 -0
  50. package/build/src/presets/eslint/env-browser.d.mts +4 -0
  51. package/build/src/presets/eslint/env-browser.d.mts.map +1 -0
  52. package/build/src/presets/eslint/env-browser.mjs +3 -0
  53. package/build/src/presets/eslint/env-browser.mjs.map +1 -0
  54. package/build/src/presets/eslint/env-edge.d.mts +4 -0
  55. package/build/src/presets/eslint/env-edge.d.mts.map +1 -0
  56. package/build/src/presets/eslint/env-edge.mjs +3 -0
  57. package/build/src/presets/eslint/env-edge.mjs.map +1 -0
  58. package/build/src/presets/eslint/env-node.d.mts +4 -0
  59. package/build/src/presets/eslint/env-node.d.mts.map +1 -0
  60. package/build/src/presets/eslint/env-node.mjs +68 -0
  61. package/build/src/presets/eslint/env-node.mjs.map +1 -0
  62. package/build/src/presets/eslint/env-service-worker.d.mts +4 -0
  63. package/build/src/presets/eslint/env-service-worker.d.mts.map +1 -0
  64. package/build/src/presets/eslint/env-service-worker.mjs +3 -0
  65. package/build/src/presets/eslint/env-service-worker.mjs.map +1 -0
  66. package/build/src/presets/eslint/env-web-worker.d.mts +4 -0
  67. package/build/src/presets/eslint/env-web-worker.d.mts.map +1 -0
  68. package/build/src/presets/eslint/env-web-worker.mjs +3 -0
  69. package/build/src/presets/eslint/env-web-worker.mjs.map +1 -0
  70. package/build/src/presets/eslint/fw-docusaurus.d.mts +4 -0
  71. package/build/src/presets/eslint/fw-docusaurus.d.mts.map +1 -0
  72. package/build/src/presets/eslint/fw-docusaurus.mjs +10 -0
  73. package/build/src/presets/eslint/fw-docusaurus.mjs.map +1 -0
  74. package/build/src/presets/eslint/fw-expressjs.d.mts +4 -0
  75. package/build/src/presets/eslint/fw-expressjs.d.mts.map +1 -0
  76. package/build/src/presets/eslint/fw-expressjs.mjs +8 -0
  77. package/build/src/presets/eslint/fw-expressjs.mjs.map +1 -0
  78. package/build/src/presets/eslint/fw-nextjs.d.mts +4 -0
  79. package/build/src/presets/eslint/fw-nextjs.d.mts.map +1 -0
  80. package/build/src/presets/eslint/fw-nextjs.mjs +8 -0
  81. package/build/src/presets/eslint/fw-nextjs.mjs.map +1 -0
  82. package/build/src/presets/eslint/index.d.mts +16 -0
  83. package/build/src/presets/eslint/index.d.mts.map +1 -0
  84. package/build/src/presets/eslint/index.mjs +16 -0
  85. package/build/src/presets/eslint/index.mjs.map +1 -0
  86. package/build/src/presets/eslint/lang-javascript.d.mts +4 -0
  87. package/build/src/presets/eslint/lang-javascript.d.mts.map +1 -0
  88. package/build/src/presets/eslint/lang-javascript.mjs +3 -0
  89. package/build/src/presets/eslint/lang-javascript.mjs.map +1 -0
  90. package/build/src/presets/eslint/lang-mdx.d.mts +4 -0
  91. package/build/src/presets/eslint/lang-mdx.d.mts.map +1 -0
  92. package/build/src/presets/eslint/lang-mdx.mjs +45 -0
  93. package/build/src/presets/eslint/lang-mdx.mjs.map +1 -0
  94. package/build/src/presets/eslint/lang-typescript.d.mts +4 -0
  95. package/build/src/presets/eslint/lang-typescript.d.mts.map +1 -0
  96. package/build/src/presets/eslint/lang-typescript.mjs +88 -0
  97. package/build/src/presets/eslint/lang-typescript.mjs.map +1 -0
  98. package/build/src/presets/eslint/platform-cloudflare-workers.d.mts +4 -0
  99. package/build/src/presets/eslint/platform-cloudflare-workers.d.mts.map +1 -0
  100. package/build/src/presets/eslint/platform-cloudflare-workers.mjs +8 -0
  101. package/build/src/presets/eslint/platform-cloudflare-workers.mjs.map +1 -0
  102. package/build/src/presets/eslint/tool-vite.d.mts +4 -0
  103. package/build/src/presets/eslint/tool-vite.d.mts.map +1 -0
  104. package/build/src/presets/eslint/tool-vite.mjs +8 -0
  105. package/build/src/presets/eslint/tool-vite.mjs.map +1 -0
  106. package/build/src/presets/tsconfig/dx-essentials.json +24 -0
  107. package/build/src/presets/tsconfig/dx-strict.json +33 -0
  108. package/build/src/presets/tsconfig/env-browser.json +12 -0
  109. package/build/src/presets/tsconfig/env-edge.json +12 -0
  110. package/build/src/presets/tsconfig/env-node.json +10 -0
  111. package/build/src/presets/tsconfig/env-service-worker.json +12 -0
  112. package/build/src/presets/tsconfig/env-web-worker.json +12 -0
  113. package/build/src/presets/tsconfig/fw-docusaurus.json +15 -0
  114. package/build/src/presets/tsconfig/fw-expressjs.json +10 -0
  115. package/build/src/presets/tsconfig/fw-nextjs.json +14 -0
  116. package/build/src/presets/tsconfig/platform-cloudflare-workers.json +14 -0
  117. package/build/src/presets/tsconfig/tool-vite.json +14 -0
  118. package/build/src/toolkit/cli-header.d.ts +10 -0
  119. package/build/src/toolkit/cli-header.d.ts.map +1 -0
  120. package/build/src/toolkit/cli-header.js +164 -0
  121. package/build/src/toolkit/cli-header.js.map +1 -0
  122. package/build/src/toolkit/index.d.ts +4 -0
  123. package/build/src/toolkit/index.d.ts.map +1 -0
  124. package/build/src/toolkit/index.js +4 -0
  125. package/build/src/toolkit/index.js.map +1 -0
  126. package/build/src/toolkit/logger.d.ts +13 -0
  127. package/build/src/toolkit/logger.d.ts.map +1 -0
  128. package/build/src/toolkit/logger.js +99 -0
  129. package/build/src/toolkit/logger.js.map +1 -0
  130. package/build/src/toolkit/markdown-table.d.ts +14 -0
  131. package/build/src/toolkit/markdown-table.d.ts.map +1 -0
  132. package/build/src/toolkit/markdown-table.js +69 -0
  133. package/build/src/toolkit/markdown-table.js.map +1 -0
  134. package/package.json +131 -0
@@ -0,0 +1,327 @@
1
+ import { promises as fs } from 'fs';
2
+ import * as path from 'path';
3
+ import { itemAllowedPoliciesByRole } from '../lib/item.js';
4
+ import { PATTERN_EMAIL_SIMPLE, PATTERN_SLUG_SCOPED, PATTERN_SLUG_SIMPLE } from '../lib/regex.js';
5
+ export class NovaConfig {
6
+ #config;
7
+ constructor() {
8
+ this.#config = {};
9
+ }
10
+ async load() {
11
+ const currentDirectory = process.cwd();
12
+ const configFileName = 'nova.config.json';
13
+ const configPath = path.join(currentDirectory, configFileName);
14
+ try {
15
+ const rawFile = await fs.readFile(configPath, 'utf-8');
16
+ const parsedFile = JSON.parse(rawFile);
17
+ this.#config = this.parse(parsedFile);
18
+ }
19
+ catch {
20
+ }
21
+ return this.#config;
22
+ }
23
+ set(config) {
24
+ this.#config = this.parse(config);
25
+ }
26
+ async save() {
27
+ this.#config = this.parse(this.#config);
28
+ const currentDirectory = process.cwd();
29
+ const configPath = path.join(currentDirectory, 'nova.config.json');
30
+ const serializedConfig = `${JSON.stringify(this.#config, null, 2)}\n`;
31
+ const normalizedConfig = JSON.stringify(this.#config);
32
+ let hasExistingFile = false;
33
+ let existingNormalized = '';
34
+ try {
35
+ const existingRaw = await fs.readFile(configPath, 'utf-8');
36
+ hasExistingFile = true;
37
+ try {
38
+ const existingParsed = JSON.parse(existingRaw);
39
+ existingNormalized = JSON.stringify(this.parse(existingParsed));
40
+ }
41
+ catch {
42
+ }
43
+ }
44
+ catch {
45
+ }
46
+ if (existingNormalized === normalizedConfig) {
47
+ return;
48
+ }
49
+ if (hasExistingFile) {
50
+ const now = new Date();
51
+ const timestamp = [
52
+ now.getUTCFullYear(),
53
+ (now.getUTCMonth() + 1).toString().padStart(2, '0'),
54
+ now.getUTCDate().toString().padStart(2, '0'),
55
+ ].join('-');
56
+ let suffix = 1;
57
+ while (true) {
58
+ const suffixLabel = suffix.toString().padStart(4, '0');
59
+ const backupFileName = `nova.config.${timestamp}_${suffixLabel}.json`;
60
+ const backupPath = path.join(currentDirectory, backupFileName);
61
+ try {
62
+ await fs.access(backupPath);
63
+ suffix += 1;
64
+ }
65
+ catch {
66
+ await fs.rename(configPath, backupPath);
67
+ break;
68
+ }
69
+ }
70
+ }
71
+ await fs.writeFile(configPath, serializedConfig, 'utf-8');
72
+ }
73
+ parse(value) {
74
+ const result = {};
75
+ if (!this.isPlainObject(value)) {
76
+ return result;
77
+ }
78
+ const project = this.parseProject(value['project']);
79
+ const entities = this.parseEntities(value['entities']);
80
+ const urls = this.parseUrls(value['urls']);
81
+ const workspaces = this.parseWorkspaces(value['workspaces'], project?.name?.slug);
82
+ if (project !== undefined) {
83
+ result.project = project;
84
+ }
85
+ if (entities !== undefined) {
86
+ result.entities = entities;
87
+ }
88
+ if (urls !== undefined) {
89
+ result.urls = urls;
90
+ }
91
+ if (workspaces !== undefined) {
92
+ result.workspaces = workspaces;
93
+ }
94
+ return result;
95
+ }
96
+ parseProject(value) {
97
+ if (!this.isPlainObject(value)) {
98
+ return undefined;
99
+ }
100
+ const project = {};
101
+ const valueName = value['name'];
102
+ const valueDescription = value['description'];
103
+ const valueKeywords = this.getArrayOfNonEmptyStrings(value['keywords']);
104
+ if (this.isPlainObject(valueName)) {
105
+ const name = {};
106
+ const slug = this.getNonEmptyString(valueName['slug']);
107
+ const title = this.getNonEmptyString(valueName['title']);
108
+ if (slug !== undefined) {
109
+ name.slug = slug;
110
+ }
111
+ if (title !== undefined) {
112
+ name.title = title;
113
+ }
114
+ if (Object.keys(name).length > 0) {
115
+ project.name = name;
116
+ }
117
+ }
118
+ if (this.isPlainObject(valueDescription)) {
119
+ const description = {};
120
+ const short = this.getNonEmptyString(valueDescription['short']);
121
+ const long = this.getNonEmptyString(valueDescription['long']);
122
+ if (short !== undefined) {
123
+ description.short = short;
124
+ }
125
+ if (long !== undefined) {
126
+ description.long = long;
127
+ }
128
+ if (Object.keys(description).length > 0) {
129
+ project.description = description;
130
+ }
131
+ }
132
+ if (valueKeywords !== undefined) {
133
+ project.keywords = valueKeywords;
134
+ }
135
+ return (Object.keys(project).length > 0) ? project : undefined;
136
+ }
137
+ parseEntities(value) {
138
+ if (!Array.isArray(value)) {
139
+ return undefined;
140
+ }
141
+ const entities = value
142
+ .filter(this.isPlainObject)
143
+ .map((entity) => {
144
+ const parsedEntity = {};
145
+ const name = this.getNonEmptyString(entity['name']);
146
+ const email = this.getEmail(entity['email']);
147
+ const url = this.getHttpUrl(entity['url']);
148
+ const roles = entity['roles'];
149
+ if (name !== undefined) {
150
+ parsedEntity.name = name;
151
+ }
152
+ if (email !== undefined) {
153
+ parsedEntity.email = email;
154
+ }
155
+ if (url !== undefined) {
156
+ parsedEntity.url = url;
157
+ }
158
+ if (Array.isArray(roles)) {
159
+ const parsedRoles = roles.filter(this.isEntityRole);
160
+ if (parsedRoles.length > 0) {
161
+ parsedEntity.roles = parsedRoles;
162
+ }
163
+ }
164
+ return (Object.keys(parsedEntity).length > 0) ? parsedEntity : null;
165
+ })
166
+ .filter((entity) => entity !== null);
167
+ return (entities.length > 0) ? entities : undefined;
168
+ }
169
+ parseUrls(value) {
170
+ if (!this.isPlainObject(value)) {
171
+ return undefined;
172
+ }
173
+ const urls = {};
174
+ const urlFields = [
175
+ 'homepage',
176
+ 'repository',
177
+ 'bugs',
178
+ 'license',
179
+ 'logo',
180
+ 'documentation',
181
+ 'github',
182
+ 'npm',
183
+ ];
184
+ for (const urlField of urlFields) {
185
+ const parsedUrl = this.getHttpUrl(value[urlField], urlField);
186
+ if (parsedUrl !== undefined) {
187
+ urls[urlField] = parsedUrl;
188
+ }
189
+ }
190
+ const fundSources = this.getArrayOfHttpUrls(value['fundSources']);
191
+ if (fundSources !== undefined) {
192
+ urls.fundSources = fundSources;
193
+ }
194
+ return (Object.keys(urls).length > 0) ? urls : undefined;
195
+ }
196
+ parseWorkspaces(value, slug) {
197
+ if (!this.isPlainObject(value)) {
198
+ return undefined;
199
+ }
200
+ const workspaces = {};
201
+ const allowedRoles = ['project', 'docs', 'config', 'app', 'package', 'tool'];
202
+ const configSlug = this.getNonEmptyString(slug);
203
+ const isNameAllowed = (role, name) => {
204
+ switch (role) {
205
+ case 'project':
206
+ if (configSlug !== undefined) {
207
+ return name === `${configSlug}-project`;
208
+ }
209
+ return name === 'project';
210
+ case 'docs':
211
+ if (configSlug !== undefined) {
212
+ return name === `${configSlug}-docs`;
213
+ }
214
+ return name === 'docs';
215
+ case 'tool':
216
+ case 'config':
217
+ case 'app':
218
+ const base = (configSlug !== undefined) ? `${configSlug}-${role}` : role;
219
+ if (!name.startsWith(`${base}-`)) {
220
+ return false;
221
+ }
222
+ const descriptor = name.slice(base.length + 1);
223
+ return descriptor.length > 0 && PATTERN_SLUG_SIMPLE.test(descriptor);
224
+ case 'package':
225
+ return PATTERN_SLUG_SIMPLE.test(name) || PATTERN_SLUG_SCOPED.test(name);
226
+ default:
227
+ return false;
228
+ }
229
+ };
230
+ for (const [path, options] of Object.entries(value)) {
231
+ if (!this.isPlainObject(options)) {
232
+ continue;
233
+ }
234
+ const nameCandidate = this.getNonEmptyString(options['name']);
235
+ const roleCandidate = this.getNonEmptyString(options['role']);
236
+ const policyCandidate = this.getNonEmptyString(options['policy']);
237
+ if (nameCandidate === undefined) {
238
+ continue;
239
+ }
240
+ const role = allowedRoles.find((allowedRole) => allowedRole === roleCandidate);
241
+ if (role === undefined) {
242
+ continue;
243
+ }
244
+ const allowedPolicies = itemAllowedPoliciesByRole[role];
245
+ const policy = allowedPolicies.find((allowedPolicy) => allowedPolicy === policyCandidate);
246
+ if (policy === undefined) {
247
+ continue;
248
+ }
249
+ if (!isNameAllowed(role, nameCandidate)) {
250
+ continue;
251
+ }
252
+ workspaces[path] = {
253
+ name: nameCandidate,
254
+ role,
255
+ policy,
256
+ };
257
+ }
258
+ return (Object.keys(workspaces).length > 0) ? workspaces : undefined;
259
+ }
260
+ isEntityRole(value) {
261
+ return (value === 'author'
262
+ || value === 'contributor'
263
+ || value === 'supporter');
264
+ }
265
+ isPlainObject(value) {
266
+ if (typeof value !== 'object' || value === null) {
267
+ return false;
268
+ }
269
+ if (Array.isArray(value)) {
270
+ return false;
271
+ }
272
+ const prototype = Object.getPrototypeOf(value);
273
+ return prototype === Object.prototype || prototype === null;
274
+ }
275
+ getArrayOfNonEmptyStrings(value) {
276
+ if (!Array.isArray(value)) {
277
+ return undefined;
278
+ }
279
+ const items = value
280
+ .map((item) => this.getNonEmptyString(item))
281
+ .filter((item) => item !== undefined);
282
+ return (items.length > 0) ? items : undefined;
283
+ }
284
+ getArrayOfHttpUrls(value, field) {
285
+ if (!Array.isArray(value)) {
286
+ return undefined;
287
+ }
288
+ const items = value
289
+ .map((item) => this.getHttpUrl(item, field))
290
+ .filter((item) => item !== undefined);
291
+ return (items.length > 0) ? items : undefined;
292
+ }
293
+ getEmail(value) {
294
+ const email = this.getNonEmptyString(value);
295
+ if (email === undefined) {
296
+ return undefined;
297
+ }
298
+ if (!PATTERN_EMAIL_SIMPLE.test(email)) {
299
+ return undefined;
300
+ }
301
+ return email;
302
+ }
303
+ getHttpUrl(value, field) {
304
+ const candidateUrl = this.getNonEmptyString(value);
305
+ if (candidateUrl === undefined) {
306
+ return undefined;
307
+ }
308
+ try {
309
+ const url = new URL(candidateUrl);
310
+ const genericProtocols = ['http:', 'https:'];
311
+ const repositoryProtocols = ['git:', 'git+https:', 'git+ssh:', 'git+http:', 'https:', 'http:'];
312
+ const allowedProtocols = (field === 'repository') ? repositoryProtocols : genericProtocols;
313
+ return allowedProtocols.includes(url.protocol) ? candidateUrl : undefined;
314
+ }
315
+ catch {
316
+ return undefined;
317
+ }
318
+ }
319
+ getNonEmptyString(value) {
320
+ if (typeof value !== 'string') {
321
+ return undefined;
322
+ }
323
+ const string = value.trim();
324
+ return (string.length > 0) ? string : undefined;
325
+ }
326
+ }
327
+ //# sourceMappingURL=nova-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nova-config.js","sourceRoot":"","sources":["../../../src/lib/nova-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ export declare const CHARACTER_DOUBLE_QUOTE: RegExp;
2
+ export declare const CHARACTER_PIPE: RegExp;
3
+ export declare const CHARACTER_SINGLE_QUOTE: RegExp;
4
+ export declare const LINEBREAK_CRLF_OR_LF: RegExp;
5
+ export declare const PATTERN_ANSI: RegExp;
6
+ export declare const PATTERN_ANSI_START: RegExp;
7
+ export declare const PATTERN_DOUBLE_QUOTED_STRING_CAPTURE: RegExp;
8
+ export declare const PATTERN_EMAIL_SIMPLE: RegExp;
9
+ export declare const PATTERN_ERROR_PREFIX: RegExp;
10
+ export declare const PATTERN_JAVA_VERSION_LINE: RegExp;
11
+ export declare const PATTERN_LEADING_NON_DIGITS: RegExp;
12
+ export declare const PATTERN_NOVA_PREFIX: RegExp;
13
+ export declare const PATTERN_REGISTRY_QUERY_LINE: RegExp;
14
+ export declare const PATTERN_RUSTC_VERSION_LINE: RegExp;
15
+ export declare const PATTERN_SEMVER: RegExp;
16
+ export declare const PATTERN_SLUG_SCOPED: RegExp;
17
+ export declare const PATTERN_SLUG_SIMPLE: RegExp;
18
+ export declare const WHITESPACE_PATTERN: RegExp;
19
+ //# sourceMappingURL=regex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"regex.d.ts","sourceRoot":"","sources":["../../../src/lib/regex.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,sBAAsB,QAAM,CAAC;AAO1C,eAAO,MAAM,cAAc,QAAO,CAAC;AAOnC,eAAO,MAAM,sBAAsB,QAAM,CAAC;AAO1C,eAAO,MAAM,oBAAoB,QAAU,CAAC;AAO5C,eAAO,MAAM,YAAY,QAA4B,CAAC;AAOtD,eAAO,MAAM,kBAAkB,QAA+B,CAAC;AAO/D,eAAO,MAAM,oCAAoC,QAAa,CAAC;AAO/D,eAAO,MAAM,oBAAoB,QAA+B,CAAC;AAOjE,eAAO,MAAM,oBAAoB,QAAe,CAAC;AAOjD,eAAO,MAAM,yBAAyB,QAAyZ,CAAC;AAOhc,eAAO,MAAM,0BAA0B,QAAS,CAAC;AAOjD,eAAO,MAAM,mBAAmB,QAAW,CAAC;AAO5C,eAAO,MAAM,2BAA2B,QAAkC,CAAC;AAO3E,eAAO,MAAM,0BAA0B,QAAwE,CAAC;AAOhH,eAAO,MAAM,cAAc,QAAmM,CAAC;AAO/N,eAAO,MAAM,mBAAmB,QAA4E,CAAC;AAO7G,eAAO,MAAM,mBAAmB,QAAwC,CAAC;AAOzE,eAAO,MAAM,kBAAkB,QAAQ,CAAC"}
@@ -0,0 +1,19 @@
1
+ export const CHARACTER_DOUBLE_QUOTE = /"/;
2
+ export const CHARACTER_PIPE = /\|/;
3
+ export const CHARACTER_SINGLE_QUOTE = /'/;
4
+ export const LINEBREAK_CRLF_OR_LF = /\r?\n/;
5
+ export const PATTERN_ANSI = /\x1B\[[0-?]*[ -/]*[@-~]/;
6
+ export const PATTERN_ANSI_START = /^(\x1B\[[0-?]*[ -/]*[@-~])/;
7
+ export const PATTERN_DOUBLE_QUOTED_STRING_CAPTURE = /^"(.*)"$/;
8
+ export const PATTERN_EMAIL_SIMPLE = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
9
+ export const PATTERN_ERROR_PREFIX = /^error:\s*/;
10
+ export const PATTERN_JAVA_VERSION_LINE = /^(?:openjdk|java)\s+(?<javaVersion>\d+(?:\.\d+){0,2})(?:\s+\d{4}-\d{2}-\d{2})?(?:\s+LTS)?[\s\S]*?(?:(?:Runtime Environment|SE Runtime Environment)\s+)?(?:(?<distro>Oracle GraalVM|GraalVM CE|GraalVM|Corretto|Temurin|Zulu|SapMachine|Microsoft|JBR|IBM Semeru Runtime Open Edition|Eclipse OpenJ9(?: VM)?|TencentKonaJDK|KonaJDK)(?:[-\s]?(?<distroVersion>[0-9][A-Za-z0-9.+-]*))?)?\s*\(build\s+(?<build>[^)]+)\)/;
11
+ export const PATTERN_LEADING_NON_DIGITS = /^\D*/;
12
+ export const PATTERN_NOVA_PREFIX = /nova.*/;
13
+ export const PATTERN_REGISTRY_QUERY_LINE = /^\s*(\S+)\s+(REG_\S+)\s+(.*)$/;
14
+ export const PATTERN_RUSTC_VERSION_LINE = /^rustc\s+(\d+\.\d+\.\d+)\s+\((\w+)\s+([\d-]+)\)(?:\s+\(([^)]+)\))?$/;
15
+ export const PATTERN_SEMVER = /(?<semver>(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)(?:-(?:0|[1-9]\d*|\d*[A-Za-z-][0-9A-Za-z-]*)(?:\.(?:0|[1-9]\d*|\d*[A-Za-z-][0-9A-Za-z-]*))*)?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?)/;
16
+ export const PATTERN_SLUG_SCOPED = /^@[a-z0-9]+(?:[a-z0-9-_]*[a-z0-9])?\/[a-z0-9]+(?:[a-z0-9-_]*[a-z0-9])?$/;
17
+ export const PATTERN_SLUG_SIMPLE = /^[a-z0-9]+(?:[a-z0-9-_]*[a-z0-9])?$/;
18
+ export const WHITESPACE_PATTERN = /\s+/;
19
+ //# sourceMappingURL=regex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"regex.js","sourceRoot":"","sources":["../../../src/lib/regex.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,CAAC;AAO1C,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC;AAOnC,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,CAAC;AAO1C,MAAM,CAAC,MAAM,oBAAoB,GAAG,OAAO,CAAC;AAO5C,MAAM,CAAC,MAAM,YAAY,GAAG,yBAAyB,CAAC;AAOtD,MAAM,CAAC,MAAM,kBAAkB,GAAG,4BAA4B,CAAC;AAO/D,MAAM,CAAC,MAAM,oCAAoC,GAAG,UAAU,CAAC;AAO/D,MAAM,CAAC,MAAM,oBAAoB,GAAG,4BAA4B,CAAC;AAOjE,MAAM,CAAC,MAAM,oBAAoB,GAAG,YAAY,CAAC;AAOjD,MAAM,CAAC,MAAM,yBAAyB,GAAG,sZAAsZ,CAAC;AAOhc,MAAM,CAAC,MAAM,0BAA0B,GAAG,MAAM,CAAC;AAOjD,MAAM,CAAC,MAAM,mBAAmB,GAAG,QAAQ,CAAC;AAO5C,MAAM,CAAC,MAAM,2BAA2B,GAAG,+BAA+B,CAAC;AAO3E,MAAM,CAAC,MAAM,0BAA0B,GAAG,qEAAqE,CAAC;AAOhH,MAAM,CAAC,MAAM,cAAc,GAAG,gMAAgM,CAAC;AAO/N,MAAM,CAAC,MAAM,mBAAmB,GAAG,yEAAyE,CAAC;AAO7G,MAAM,CAAC,MAAM,mBAAmB,GAAG,qCAAqC,CAAC;AAOzE,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { CurrentTimestampReturns, DetectShellReturns, DiscoverPathsWithFileDirection, DiscoverPathsWithFileFileName, DiscoverPathsWithFileReturns, ExecuteShellCommand, ExecuteShellReturns, IsCommandExistsCommand, IsCommandExistsReturns, IsExecuteShellErrorError, IsExecuteShellErrorTypeGuard, ParseLinuxOsReleaseFileReturns, ParseWindowsRegistryQueryRegistryPaths, ParseWindowsRegistryQueryReturns, PathExistsPath, PathExistsReturns } from '@/types/lib/utility.d.ts';
2
+ export declare function currentTimestamp(): CurrentTimestampReturns;
3
+ export declare function detectShell(): DetectShellReturns;
4
+ export declare function discoverPathsWithFile(fileName: DiscoverPathsWithFileFileName, direction: DiscoverPathsWithFileDirection): DiscoverPathsWithFileReturns;
5
+ export declare function executeShell(command: ExecuteShellCommand): ExecuteShellReturns;
6
+ export declare function isCommandExists(command: IsCommandExistsCommand): IsCommandExistsReturns;
7
+ export declare function isExecuteShellError(error: IsExecuteShellErrorError): error is IsExecuteShellErrorTypeGuard;
8
+ export declare function parseLinuxOsReleaseFile(): ParseLinuxOsReleaseFileReturns;
9
+ export declare function parseWindowsRegistryQuery(registryPaths: ParseWindowsRegistryQueryRegistryPaths): ParseWindowsRegistryQueryReturns;
10
+ export declare function pathExists(path: PathExistsPath): PathExistsReturns;
11
+ //# sourceMappingURL=utility.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utility.d.ts","sourceRoot":"","sources":["../../../src/lib/utility.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAIV,uBAAuB,EACvB,kBAAkB,EAClB,8BAA8B,EAC9B,6BAA6B,EAE7B,4BAA4B,EAE5B,mBAAmB,EAGnB,mBAAmB,EACnB,sBAAsB,EACtB,sBAAsB,EACtB,wBAAwB,EAExB,4BAA4B,EAE5B,8BAA8B,EAG9B,sCAAsC,EACtC,gCAAgC,EAChC,cAAc,EACd,iBAAiB,EAClB,MAAM,0BAA0B,CAAC;AASlC,wBAAgB,gBAAgB,IAAI,uBAAuB,CAoC1D;AASD,wBAAgB,WAAW,IAAI,kBAAkB,CAwBhD;AAYD,wBAAsB,qBAAqB,CAAC,QAAQ,EAAE,6BAA6B,EAAE,SAAS,EAAE,8BAA8B,GAAG,4BAA4B,CA+G5J;AAWD,wBAAsB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,mBAAmB,CA0FpF;AAWD,wBAAsB,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,sBAAsB,CAoB7F;AAWD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,wBAAwB,GAAG,KAAK,IAAI,4BAA4B,CAiB1G;AASD,wBAAsB,uBAAuB,IAAI,8BAA8B,CA2B9E;AAWD,wBAAsB,yBAAyB,CAAC,aAAa,EAAE,sCAAsC,GAAG,gCAAgC,CAqCvI;AAWD,wBAAsB,UAAU,CAAC,IAAI,EAAE,cAAc,GAAG,iBAAiB,CAQxE"}