@optique/core 1.0.0-dev.1533 → 1.0.0-dev.1536
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/parser.cjs +15 -4
- package/dist/parser.js +15 -4
- package/package.json +1 -1
package/dist/parser.cjs
CHANGED
|
@@ -52,7 +52,7 @@ function parseSync(parser, args, options) {
|
|
|
52
52
|
};
|
|
53
53
|
const previousBuffer = context.buffer;
|
|
54
54
|
context = result.next;
|
|
55
|
-
if (
|
|
55
|
+
if (isBufferUnchanged(previousBuffer, context.buffer)) return {
|
|
56
56
|
success: false,
|
|
57
57
|
error: require_message.message`Unexpected option or argument: ${context.buffer[0]}.`
|
|
58
58
|
};
|
|
@@ -69,6 +69,13 @@ function parseSync(parser, args, options) {
|
|
|
69
69
|
};
|
|
70
70
|
}
|
|
71
71
|
/**
|
|
72
|
+
* Returns `true` when the buffer has not changed between iterations,
|
|
73
|
+
* indicating a parser is stalling without consuming input.
|
|
74
|
+
*/
|
|
75
|
+
function isBufferUnchanged(previous, current) {
|
|
76
|
+
return current.length > 0 && current.length === previous.length && current.every((item, i) => item === previous[i]);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
72
79
|
* Parses an array of command-line arguments using the provided combined parser.
|
|
73
80
|
* This function processes the input arguments, applying the parser to each
|
|
74
81
|
* argument until all arguments are consumed or an error occurs.
|
|
@@ -104,7 +111,7 @@ async function parseAsync(parser, args, options) {
|
|
|
104
111
|
};
|
|
105
112
|
const previousBuffer = context.buffer;
|
|
106
113
|
context = result.next;
|
|
107
|
-
if (
|
|
114
|
+
if (isBufferUnchanged(previousBuffer, context.buffer)) return {
|
|
108
115
|
success: false,
|
|
109
116
|
error: require_message.message`Unexpected option or argument: ${context.buffer[0]}.`
|
|
110
117
|
};
|
|
@@ -196,7 +203,7 @@ function suggestSync(parser, args, options) {
|
|
|
196
203
|
if (!result.success) return Array.from(parser.suggest(context, prefix));
|
|
197
204
|
const previousBuffer = context.buffer;
|
|
198
205
|
context = result.next;
|
|
199
|
-
if (
|
|
206
|
+
if (isBufferUnchanged(previousBuffer, context.buffer)) return [];
|
|
200
207
|
}
|
|
201
208
|
return Array.from(parser.suggest(context, prefix));
|
|
202
209
|
}
|
|
@@ -239,7 +246,7 @@ async function suggestAsync(parser, args, options) {
|
|
|
239
246
|
}
|
|
240
247
|
const previousBuffer = context.buffer;
|
|
241
248
|
context = result.next;
|
|
242
|
-
if (
|
|
249
|
+
if (isBufferUnchanged(previousBuffer, context.buffer)) return [];
|
|
243
250
|
}
|
|
244
251
|
const suggestions = [];
|
|
245
252
|
for await (const suggestion of parser.suggest(context, prefix)) suggestions.push(suggestion);
|
|
@@ -359,7 +366,9 @@ function getDocPageSyncImpl(parser, args, options) {
|
|
|
359
366
|
while (context.buffer.length > 0) {
|
|
360
367
|
const result = parser.parse(context);
|
|
361
368
|
if (!result.success) break;
|
|
369
|
+
const previousBuffer = context.buffer;
|
|
362
370
|
context = result.next;
|
|
371
|
+
if (isBufferUnchanged(previousBuffer, context.buffer)) break;
|
|
363
372
|
}
|
|
364
373
|
return buildDocPage(parser, context, args);
|
|
365
374
|
}
|
|
@@ -377,7 +386,9 @@ async function getDocPageAsyncImpl(parser, args, options) {
|
|
|
377
386
|
while (context.buffer.length > 0) {
|
|
378
387
|
const result = await parser.parse(context);
|
|
379
388
|
if (!result.success) break;
|
|
389
|
+
const previousBuffer = context.buffer;
|
|
380
390
|
context = result.next;
|
|
391
|
+
if (isBufferUnchanged(previousBuffer, context.buffer)) break;
|
|
381
392
|
}
|
|
382
393
|
return buildDocPage(parser, context, args);
|
|
383
394
|
}
|
package/dist/parser.js
CHANGED
|
@@ -52,7 +52,7 @@ function parseSync(parser, args, options) {
|
|
|
52
52
|
};
|
|
53
53
|
const previousBuffer = context.buffer;
|
|
54
54
|
context = result.next;
|
|
55
|
-
if (
|
|
55
|
+
if (isBufferUnchanged(previousBuffer, context.buffer)) return {
|
|
56
56
|
success: false,
|
|
57
57
|
error: message`Unexpected option or argument: ${context.buffer[0]}.`
|
|
58
58
|
};
|
|
@@ -69,6 +69,13 @@ function parseSync(parser, args, options) {
|
|
|
69
69
|
};
|
|
70
70
|
}
|
|
71
71
|
/**
|
|
72
|
+
* Returns `true` when the buffer has not changed between iterations,
|
|
73
|
+
* indicating a parser is stalling without consuming input.
|
|
74
|
+
*/
|
|
75
|
+
function isBufferUnchanged(previous, current) {
|
|
76
|
+
return current.length > 0 && current.length === previous.length && current.every((item, i) => item === previous[i]);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
72
79
|
* Parses an array of command-line arguments using the provided combined parser.
|
|
73
80
|
* This function processes the input arguments, applying the parser to each
|
|
74
81
|
* argument until all arguments are consumed or an error occurs.
|
|
@@ -104,7 +111,7 @@ async function parseAsync(parser, args, options) {
|
|
|
104
111
|
};
|
|
105
112
|
const previousBuffer = context.buffer;
|
|
106
113
|
context = result.next;
|
|
107
|
-
if (
|
|
114
|
+
if (isBufferUnchanged(previousBuffer, context.buffer)) return {
|
|
108
115
|
success: false,
|
|
109
116
|
error: message`Unexpected option or argument: ${context.buffer[0]}.`
|
|
110
117
|
};
|
|
@@ -196,7 +203,7 @@ function suggestSync(parser, args, options) {
|
|
|
196
203
|
if (!result.success) return Array.from(parser.suggest(context, prefix));
|
|
197
204
|
const previousBuffer = context.buffer;
|
|
198
205
|
context = result.next;
|
|
199
|
-
if (
|
|
206
|
+
if (isBufferUnchanged(previousBuffer, context.buffer)) return [];
|
|
200
207
|
}
|
|
201
208
|
return Array.from(parser.suggest(context, prefix));
|
|
202
209
|
}
|
|
@@ -239,7 +246,7 @@ async function suggestAsync(parser, args, options) {
|
|
|
239
246
|
}
|
|
240
247
|
const previousBuffer = context.buffer;
|
|
241
248
|
context = result.next;
|
|
242
|
-
if (
|
|
249
|
+
if (isBufferUnchanged(previousBuffer, context.buffer)) return [];
|
|
243
250
|
}
|
|
244
251
|
const suggestions = [];
|
|
245
252
|
for await (const suggestion of parser.suggest(context, prefix)) suggestions.push(suggestion);
|
|
@@ -359,7 +366,9 @@ function getDocPageSyncImpl(parser, args, options) {
|
|
|
359
366
|
while (context.buffer.length > 0) {
|
|
360
367
|
const result = parser.parse(context);
|
|
361
368
|
if (!result.success) break;
|
|
369
|
+
const previousBuffer = context.buffer;
|
|
362
370
|
context = result.next;
|
|
371
|
+
if (isBufferUnchanged(previousBuffer, context.buffer)) break;
|
|
363
372
|
}
|
|
364
373
|
return buildDocPage(parser, context, args);
|
|
365
374
|
}
|
|
@@ -377,7 +386,9 @@ async function getDocPageAsyncImpl(parser, args, options) {
|
|
|
377
386
|
while (context.buffer.length > 0) {
|
|
378
387
|
const result = await parser.parse(context);
|
|
379
388
|
if (!result.success) break;
|
|
389
|
+
const previousBuffer = context.buffer;
|
|
380
390
|
context = result.next;
|
|
391
|
+
if (isBufferUnchanged(previousBuffer, context.buffer)) break;
|
|
381
392
|
}
|
|
382
393
|
return buildDocPage(parser, context, args);
|
|
383
394
|
}
|