projen 0.54.58 → 0.55.2

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 (186) hide show
  1. package/.jsii +49 -19
  2. package/changelog.md +1 -1
  3. package/docs/api/API.md +14 -1
  4. package/docs/escape-hatches.md +19 -0
  5. package/lib/awscdk/auto-discover.js +4 -4
  6. package/lib/awscdk/awscdk-app-java.js +1 -1
  7. package/lib/awscdk/awscdk-app-py.js +1 -1
  8. package/lib/awscdk/awscdk-app-ts.js +1 -1
  9. package/lib/awscdk/awscdk-construct.js +2 -2
  10. package/lib/awscdk/awscdk-deps-java.js +1 -1
  11. package/lib/awscdk/awscdk-deps-js.js +1 -1
  12. package/lib/awscdk/awscdk-deps.js +1 -1
  13. package/lib/awscdk/cdk-config.js +1 -1
  14. package/lib/awscdk/cdk-tasks.js +1 -1
  15. package/lib/awscdk/integration-test.js +1 -1
  16. package/lib/awscdk/lambda-extension.js +1 -1
  17. package/lib/awscdk/lambda-function.js +2 -2
  18. package/lib/build/build-workflow.js +1 -1
  19. package/lib/cdk/auto-discover-base.js +2 -2
  20. package/lib/cdk/construct-lib.js +1 -1
  21. package/lib/cdk/integration-test-base.js +1 -1
  22. package/lib/cdk/jsii-docgen.js +1 -1
  23. package/lib/cdk/jsii-project.js +1 -1
  24. package/lib/cdk8s/auto-discover.js +2 -2
  25. package/lib/cdk8s/cdk8s-app-ts.js +1 -1
  26. package/lib/cdk8s/cdk8s-construct.js +1 -1
  27. package/lib/cdk8s/integration-test.js +1 -1
  28. package/lib/cdktf/cdktf-construct.js +1 -1
  29. package/lib/component.js +1 -1
  30. package/lib/dependencies.js +1 -1
  31. package/lib/dev-env.js +1 -1
  32. package/lib/docker-compose.js +2 -2
  33. package/lib/file.js +1 -1
  34. package/lib/gitattributes.js +1 -1
  35. package/lib/github/auto-approve.js +1 -1
  36. package/lib/github/auto-merge.js +1 -1
  37. package/lib/github/dependabot.js +1 -1
  38. package/lib/github/github-credentials.js +1 -1
  39. package/lib/github/github-project.js +1 -1
  40. package/lib/github/github.js +1 -1
  41. package/lib/github/mergify.js +1 -1
  42. package/lib/github/pr-template.js +1 -1
  43. package/lib/github/pull-request-lint.js +1 -1
  44. package/lib/github/stale.js +1 -1
  45. package/lib/github/task-workflow.js +1 -1
  46. package/lib/github/workflows.js +1 -1
  47. package/lib/gitlab/configuration.js +1 -1
  48. package/lib/gitlab/gitlab-configuration.js +1 -1
  49. package/lib/gitlab/nested-configuration.js +1 -1
  50. package/lib/gitpod.js +1 -1
  51. package/lib/ignore-file.js +1 -1
  52. package/lib/ini.js +1 -1
  53. package/lib/java/java-project.js +1 -1
  54. package/lib/java/junit.js +1 -1
  55. package/lib/java/maven-compile.js +1 -1
  56. package/lib/java/maven-packaging.js +1 -1
  57. package/lib/java/maven-sample.js +1 -1
  58. package/lib/java/pom.js +1 -1
  59. package/lib/java/projenrc.js +1 -1
  60. package/lib/javascript/bundler.js +1 -1
  61. package/lib/javascript/eslint.js +1 -1
  62. package/lib/javascript/jest.js +1 -1
  63. package/lib/javascript/node-package.js +1 -1
  64. package/lib/javascript/node-project.js +1 -1
  65. package/lib/javascript/npm-config.js +1 -1
  66. package/lib/javascript/prettier.js +1 -1
  67. package/lib/javascript/projenrc.js +1 -1
  68. package/lib/javascript/typescript-config.js +1 -1
  69. package/lib/javascript/upgrade-dependencies.js +2 -2
  70. package/lib/json.js +1 -1
  71. package/lib/license.js +1 -1
  72. package/lib/logger.js +1 -1
  73. package/lib/makefile.js +1 -1
  74. package/lib/object-file.js +1 -1
  75. package/lib/project-build.js +1 -1
  76. package/lib/project.d.ts +10 -0
  77. package/lib/project.js +28 -2
  78. package/lib/projects.js +1 -1
  79. package/lib/projenrc-json.js +1 -1
  80. package/lib/python/pip.js +1 -1
  81. package/lib/python/poetry.js +2 -2
  82. package/lib/python/projenrc.js +1 -1
  83. package/lib/python/pytest-sample.js +1 -1
  84. package/lib/python/pytest.js +1 -1
  85. package/lib/python/python-project.js +1 -1
  86. package/lib/python/python-sample.js +1 -1
  87. package/lib/python/requirements-file.js +1 -1
  88. package/lib/python/setuppy.js +1 -1
  89. package/lib/python/setuptools.js +1 -1
  90. package/lib/python/venv.js +1 -1
  91. package/lib/readme.js +1 -1
  92. package/lib/release/publisher.js +1 -1
  93. package/lib/release/release-trigger.js +1 -1
  94. package/lib/release/release.js +1 -1
  95. package/lib/sample-file.js +2 -2
  96. package/lib/semver.js +1 -1
  97. package/lib/source-code.js +1 -1
  98. package/lib/task-runtime.js +1 -1
  99. package/lib/task.js +1 -1
  100. package/lib/tasks.js +1 -1
  101. package/lib/testing.js +1 -1
  102. package/lib/textfile.js +1 -1
  103. package/lib/toml.js +1 -1
  104. package/lib/typescript/projenrc.js +1 -1
  105. package/lib/typescript/typescript-typedoc.js +1 -1
  106. package/lib/typescript/typescript.js +5 -5
  107. package/lib/util.d.ts +1 -1
  108. package/lib/version.js +1 -1
  109. package/lib/vscode/devcontainer.js +1 -1
  110. package/lib/vscode/launch-config.js +1 -1
  111. package/lib/vscode/vscode.js +1 -1
  112. package/lib/web/next.js +3 -3
  113. package/lib/web/postcss.js +1 -1
  114. package/lib/web/react.js +4 -4
  115. package/lib/web/tailwind.js +1 -1
  116. package/lib/xmlfile.js +1 -1
  117. package/lib/yaml.js +1 -1
  118. package/node_modules/yaml/README.md +1 -1
  119. package/node_modules/yaml/browser/dist/compose/compose-doc.js +1 -1
  120. package/node_modules/yaml/browser/dist/compose/compose-scalar.js +4 -4
  121. package/node_modules/yaml/browser/dist/compose/composer.js +1 -0
  122. package/node_modules/yaml/browser/dist/compose/resolve-block-map.js +7 -6
  123. package/node_modules/yaml/browser/dist/compose/resolve-block-scalar.js +3 -1
  124. package/node_modules/yaml/browser/dist/compose/resolve-flow-collection.js +4 -3
  125. package/node_modules/yaml/browser/dist/compose/resolve-flow-scalar.js +2 -1
  126. package/node_modules/yaml/browser/dist/compose/resolve-props.js +5 -1
  127. package/node_modules/yaml/browser/dist/doc/Document.js +9 -5
  128. package/node_modules/yaml/browser/dist/doc/anchors.js +2 -2
  129. package/node_modules/yaml/browser/dist/doc/createNode.js +7 -4
  130. package/node_modules/yaml/browser/dist/nodes/Pair.js +2 -2
  131. package/node_modules/yaml/browser/dist/nodes/Scalar.js +1 -1
  132. package/node_modules/yaml/browser/dist/nodes/YAMLMap.js +5 -4
  133. package/node_modules/yaml/browser/dist/nodes/YAMLSeq.js +1 -1
  134. package/node_modules/yaml/browser/dist/nodes/addPairToJSMap.js +1 -1
  135. package/node_modules/yaml/browser/dist/nodes/toJS.js +3 -1
  136. package/node_modules/yaml/browser/dist/parse/cst-visit.js +2 -2
  137. package/node_modules/yaml/browser/dist/parse/lexer.js +2 -1
  138. package/node_modules/yaml/browser/dist/parse/parser.js +64 -26
  139. package/node_modules/yaml/browser/dist/public-api.js +2 -1
  140. package/node_modules/yaml/browser/dist/schema/Schema.js +6 -2
  141. package/node_modules/yaml/browser/dist/schema/yaml-1.1/omap.js +1 -1
  142. package/node_modules/yaml/browser/dist/schema/yaml-1.1/pairs.js +2 -1
  143. package/node_modules/yaml/browser/dist/stringify/stringify.js +8 -8
  144. package/node_modules/yaml/browser/dist/stringify/stringifyComment.js +5 -3
  145. package/node_modules/yaml/browser/dist/stringify/stringifyPair.js +4 -1
  146. package/node_modules/yaml/browser/dist/stringify/stringifyString.js +2 -2
  147. package/node_modules/yaml/dist/compose/compose-doc.js +1 -1
  148. package/node_modules/yaml/dist/compose/compose-scalar.js +4 -4
  149. package/node_modules/yaml/dist/compose/composer.js +1 -0
  150. package/node_modules/yaml/dist/compose/resolve-block-map.js +7 -6
  151. package/node_modules/yaml/dist/compose/resolve-block-scalar.js +3 -1
  152. package/node_modules/yaml/dist/compose/resolve-flow-collection.js +4 -3
  153. package/node_modules/yaml/dist/compose/resolve-flow-scalar.js +2 -1
  154. package/node_modules/yaml/dist/compose/resolve-props.d.ts +2 -1
  155. package/node_modules/yaml/dist/compose/resolve-props.js +5 -1
  156. package/node_modules/yaml/dist/doc/Document.d.ts +1 -1
  157. package/node_modules/yaml/dist/doc/Document.js +9 -5
  158. package/node_modules/yaml/dist/doc/anchors.d.ts +2 -2
  159. package/node_modules/yaml/dist/doc/anchors.js +2 -2
  160. package/node_modules/yaml/dist/doc/createNode.d.ts +1 -1
  161. package/node_modules/yaml/dist/doc/createNode.js +7 -4
  162. package/node_modules/yaml/dist/doc/directives.d.ts +1 -1
  163. package/node_modules/yaml/dist/nodes/Pair.js +2 -2
  164. package/node_modules/yaml/dist/nodes/Scalar.js +1 -1
  165. package/node_modules/yaml/dist/nodes/YAMLMap.d.ts +3 -1
  166. package/node_modules/yaml/dist/nodes/YAMLMap.js +5 -4
  167. package/node_modules/yaml/dist/nodes/YAMLSeq.js +1 -1
  168. package/node_modules/yaml/dist/nodes/addPairToJSMap.js +1 -1
  169. package/node_modules/yaml/dist/nodes/toJS.js +3 -1
  170. package/node_modules/yaml/dist/options.d.ts +1 -1
  171. package/node_modules/yaml/dist/parse/cst-visit.js +2 -2
  172. package/node_modules/yaml/dist/parse/lexer.js +2 -1
  173. package/node_modules/yaml/dist/parse/parser.js +64 -26
  174. package/node_modules/yaml/dist/public-api.js +2 -1
  175. package/node_modules/yaml/dist/schema/Schema.js +6 -2
  176. package/node_modules/yaml/dist/schema/yaml-1.1/omap.js +1 -1
  177. package/node_modules/yaml/dist/schema/yaml-1.1/pairs.js +2 -1
  178. package/node_modules/yaml/dist/stringify/stringify.js +8 -8
  179. package/node_modules/yaml/dist/stringify/stringifyComment.js +5 -3
  180. package/node_modules/yaml/dist/stringify/stringifyPair.js +4 -1
  181. package/node_modules/yaml/dist/stringify/stringifyString.js +2 -2
  182. package/node_modules/yaml/dist/test-events.js +1 -1
  183. package/node_modules/yaml/package.json +2 -2
  184. package/package.json +5 -5
  185. package/releasetag.txt +1 -1
  186. package/version.txt +1 -1
@@ -243,14 +243,14 @@ function plainString(item, ctx, onComment, onChompKeep) {
243
243
  // - '\n ', ': ' or ' \n' anywhere
244
244
  // - '#' not preceded by a non-space char
245
245
  // - end with ' ' or ':'
246
- return implicitKey || inFlow || value.indexOf('\n') === -1
246
+ return implicitKey || inFlow || !value.includes('\n')
247
247
  ? quotedString(value, ctx)
248
248
  : blockString(item, ctx, onComment, onChompKeep);
249
249
  }
250
250
  if (!implicitKey &&
251
251
  !inFlow &&
252
252
  type !== Scalar.PLAIN &&
253
- value.indexOf('\n') !== -1) {
253
+ value.includes('\n')) {
254
254
  // Where allowed & type not set explicitly, prefer block style for multiline strings
255
255
  return blockString(item, ctx, onComment, onChompKeep);
256
256
  }
@@ -16,7 +16,7 @@ function composeDoc(options, directives, { offset, start, value, end }, onError)
16
16
  };
17
17
  const props = resolveProps.resolveProps(start, {
18
18
  indicator: 'doc-start',
19
- next: value || (end === null || end === void 0 ? void 0 : end[0]),
19
+ next: value !== null && value !== void 0 ? value : end === null || end === void 0 ? void 0 : end[0],
20
20
  offset,
21
21
  onError,
22
22
  startOnNewline: true
@@ -19,12 +19,12 @@ function composeScalar(ctx, token, tagToken, onError) {
19
19
  : ctx.schema[Node.SCALAR];
20
20
  let scalar;
21
21
  try {
22
- const res = tag.resolve(value, msg => onError(tagToken || token, 'TAG_RESOLVE_FAILED', msg), ctx.options);
22
+ const res = tag.resolve(value, msg => onError(tagToken !== null && tagToken !== void 0 ? tagToken : token, 'TAG_RESOLVE_FAILED', msg), ctx.options);
23
23
  scalar = Node.isScalar(res) ? res : new Scalar.Scalar(res);
24
24
  }
25
25
  catch (error) {
26
26
  const msg = error instanceof Error ? error.message : String(error);
27
- onError(tagToken || token, 'TAG_RESOLVE_FAILED', msg);
27
+ onError(tagToken !== null && tagToken !== void 0 ? tagToken : token, 'TAG_RESOLVE_FAILED', msg);
28
28
  scalar = new Scalar.Scalar(value);
29
29
  }
30
30
  scalar.range = range;
@@ -66,10 +66,10 @@ function findScalarTagByName(schema, value, tagName, tagToken, onError) {
66
66
  return schema[Node.SCALAR];
67
67
  }
68
68
  function findScalarTagByTest({ directives, schema }, value, token, onError) {
69
+ var _a;
69
70
  const tag = schema.tags.find(tag => { var _a; return tag.default && ((_a = tag.test) === null || _a === void 0 ? void 0 : _a.test(value)); }) || schema[Node.SCALAR];
70
71
  if (schema.compat) {
71
- const compat = schema.compat.find(tag => { var _a; return tag.default && ((_a = tag.test) === null || _a === void 0 ? void 0 : _a.test(value)); }) ||
72
- schema[Node.SCALAR];
72
+ const compat = (_a = schema.compat.find(tag => { var _a; return tag.default && ((_a = tag.test) === null || _a === void 0 ? void 0 : _a.test(value)); })) !== null && _a !== void 0 ? _a : schema[Node.SCALAR];
73
73
  if (tag.tag !== compat.tag) {
74
74
  const ts = directives.tagString(tag.tag);
75
75
  const cs = directives.tagString(compat.tag);
@@ -69,6 +69,7 @@ class Composer {
69
69
  else
70
70
  this.errors.push(new errors.YAMLParseError(pos, code, message));
71
71
  };
72
+ // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
72
73
  this.directives = new directives.Directives({ version: options.version || '1.2' });
73
74
  this.options = options;
74
75
  }
@@ -19,7 +19,7 @@ function resolveBlockMap({ composeNode, composeEmptyNode }, ctx, bm, onError) {
19
19
  // key properties
20
20
  const keyProps = resolveProps.resolveProps(start, {
21
21
  indicator: 'explicit-key-ind',
22
- next: key || (sep === null || sep === void 0 ? void 0 : sep[0]),
22
+ next: key !== null && key !== void 0 ? key : sep === null || sep === void 0 ? void 0 : sep[0],
23
23
  offset,
24
24
  onError,
25
25
  startOnNewline: true
@@ -42,12 +42,13 @@ function resolveBlockMap({ composeNode, composeEmptyNode }, ctx, bm, onError) {
42
42
  }
43
43
  continue;
44
44
  }
45
+ if (keyProps.hasNewlineAfterProp || utilContainsNewline.containsNewline(key)) {
46
+ onError(key !== null && key !== void 0 ? key : start[start.length - 1], 'MULTILINE_IMPLICIT_KEY', 'Implicit keys need to be on a single line');
47
+ }
45
48
  }
46
- else if (((_a = keyProps.found) === null || _a === void 0 ? void 0 : _a.indent) !== bm.indent)
49
+ else if (((_a = keyProps.found) === null || _a === void 0 ? void 0 : _a.indent) !== bm.indent) {
47
50
  onError(offset, 'BAD_INDENT', startColMsg);
48
- if (implicitKey && utilContainsNewline.containsNewline(key))
49
- onError(key, // checked by containsNewline()
50
- 'MULTILINE_IMPLICIT_KEY', 'Implicit keys need to be on a single line');
51
+ }
51
52
  // key value
52
53
  const keyStart = keyProps.end;
53
54
  const keyNode = key
@@ -58,7 +59,7 @@ function resolveBlockMap({ composeNode, composeEmptyNode }, ctx, bm, onError) {
58
59
  if (utilMapIncludes.mapIncludes(ctx, map.items, keyNode))
59
60
  onError(keyStart, 'DUPLICATE_KEY', 'Map keys must be unique');
60
61
  // value properties
61
- const valueProps = resolveProps.resolveProps(sep || [], {
62
+ const valueProps = resolveProps.resolveProps(sep !== null && sep !== void 0 ? sep : [], {
62
63
  indicator: 'map-value-ind',
63
64
  next: value,
64
65
  offset: keyNode.range[2],
@@ -184,7 +184,9 @@ function splitLines(source) {
184
184
  const split = source.split(/\n( *)/);
185
185
  const first = split[0];
186
186
  const m = first.match(/^( *)/);
187
- const line0 = m && m[1] ? [m[1], first.slice(m[1].length)] : ['', first];
187
+ const line0 = (m === null || m === void 0 ? void 0 : m[1])
188
+ ? [m[1], first.slice(m[1].length)]
189
+ : ['', first];
188
190
  const lines = [line0];
189
191
  for (let i = 1; i < split.length; i += 2)
190
192
  lines.push([split[i], split[i + 1]]);
@@ -12,6 +12,7 @@ var utilMapIncludes = require('./util-map-includes.js');
12
12
  const blockMsg = 'Block collections are not allowed within flow collections';
13
13
  const isBlock = (token) => token && (token.type === 'block-map' || token.type === 'block-seq');
14
14
  function resolveFlowCollection({ composeNode, composeEmptyNode }, ctx, fc, onError) {
15
+ var _a;
15
16
  const isMap = fc.start.source === '{';
16
17
  const fcName = isMap ? 'flow map' : 'flow sequence';
17
18
  const coll = isMap
@@ -28,7 +29,7 @@ function resolveFlowCollection({ composeNode, composeEmptyNode }, ctx, fc, onErr
28
29
  const props = resolveProps.resolveProps(start, {
29
30
  flow: fcName,
30
31
  indicator: 'explicit-key-ind',
31
- next: key || (sep === null || sep === void 0 ? void 0 : sep[0]),
32
+ next: key !== null && key !== void 0 ? key : sep === null || sep === void 0 ? void 0 : sep[0],
32
33
  offset,
33
34
  onError,
34
35
  startOnNewline: false
@@ -76,7 +77,7 @@ function resolveFlowCollection({ composeNode, composeEmptyNode }, ctx, fc, onErr
76
77
  if (prevItemComment) {
77
78
  let prev = coll.items[coll.items.length - 1];
78
79
  if (Node.isPair(prev))
79
- prev = prev.value || prev.key;
80
+ prev = (_a = prev.value) !== null && _a !== void 0 ? _a : prev.key;
80
81
  if (prev.comment)
81
82
  prev.comment += '\n' + prevItemComment;
82
83
  else
@@ -106,7 +107,7 @@ function resolveFlowCollection({ composeNode, composeEmptyNode }, ctx, fc, onErr
106
107
  if (isBlock(key))
107
108
  onError(keyNode.range, 'BLOCK_IN_FLOW', blockMsg);
108
109
  // value properties
109
- const valueProps = resolveProps.resolveProps(sep || [], {
110
+ const valueProps = resolveProps.resolveProps(sep !== null && sep !== void 0 ? sep : [], {
110
111
  flow: fcName,
111
112
  indicator: 'map-value-ind',
112
113
  next: value,
@@ -74,6 +74,7 @@ function singleQuotedValue(source, onError) {
74
74
  return foldLines(source.slice(1, -1)).replace(/''/g, "'");
75
75
  }
76
76
  function foldLines(source) {
77
+ var _a;
77
78
  /**
78
79
  * The negative lookbehind here and in the `re` RegExp is to
79
80
  * prevent causing a polynomial search time in certain cases.
@@ -113,7 +114,7 @@ function foldLines(source) {
113
114
  const last = /[ \t]*(.*)/sy;
114
115
  last.lastIndex = pos;
115
116
  match = last.exec(source);
116
- return res + sep + ((match && match[1]) || '');
117
+ return res + sep + ((_a = match === null || match === void 0 ? void 0 : match[1]) !== null && _a !== void 0 ? _a : '');
117
118
  }
118
119
  function doubleQuotedValue(source, onError) {
119
120
  let res = '';
@@ -1,7 +1,7 @@
1
1
  import type { SourceToken, Token } from '../parse/cst.js';
2
2
  import type { ComposeErrorHandler } from './composer.js';
3
3
  export interface ResolvePropsArg {
4
- flow?: string;
4
+ flow?: 'flow map' | 'flow sequence';
5
5
  indicator: 'doc-start' | 'explicit-key-ind' | 'map-value-ind' | 'seq-item-ind';
6
6
  next: Token | null | undefined;
7
7
  offset: number;
@@ -14,6 +14,7 @@ export declare function resolveProps(tokens: SourceToken[], { flow, indicator, n
14
14
  spaceBefore: boolean;
15
15
  comment: string;
16
16
  hasNewline: boolean;
17
+ hasNewlineAfterProp: boolean;
17
18
  anchor: SourceToken | null;
18
19
  tag: SourceToken | null;
19
20
  end: number;
@@ -7,6 +7,7 @@ function resolveProps(tokens, { flow, indicator, next, offset, onError, startOnN
7
7
  let comment = '';
8
8
  let commentSep = '';
9
9
  let hasNewline = false;
10
+ let hasNewlineAfterProp = false;
10
11
  let reqSpace = false;
11
12
  let anchor = null;
12
13
  let tag = null;
@@ -56,6 +57,8 @@ function resolveProps(tokens, { flow, indicator, next, offset, onError, startOnN
56
57
  commentSep += token.source;
57
58
  atNewline = true;
58
59
  hasNewline = true;
60
+ if (anchor || tag)
61
+ hasNewlineAfterProp = true;
59
62
  hasSpace = true;
60
63
  break;
61
64
  case 'anchor':
@@ -86,7 +89,7 @@ function resolveProps(tokens, { flow, indicator, next, offset, onError, startOnN
86
89
  if (anchor || tag)
87
90
  onError(token, 'BAD_PROP_ORDER', `Anchors and tags must be after the ${token.source} indicator`);
88
91
  if (found)
89
- onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${token.source} in ${flow || 'collection'}`);
92
+ onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${token.source} in ${flow !== null && flow !== void 0 ? flow : 'collection'}`);
90
93
  found = token;
91
94
  atNewline = false;
92
95
  hasSpace = false;
@@ -122,6 +125,7 @@ function resolveProps(tokens, { flow, indicator, next, offset, onError, startOnN
122
125
  spaceBefore,
123
126
  comment,
124
127
  hasNewline,
128
+ hasNewlineAfterProp,
125
129
  anchor,
126
130
  tag,
127
131
  end,
@@ -122,7 +122,7 @@ export declare class Document<T = unknown> {
122
122
  *
123
123
  * Overrides all previously set schema options.
124
124
  */
125
- setSchema(version: '1.1' | '1.2' | null, options?: SchemaOptions): void;
125
+ setSchema(version: '1.1' | '1.2' | 'next' | null, options?: SchemaOptions): void;
126
126
  /** A plain JavaScript representation of the document `contents`. */
127
127
  toJS(opt?: ToJSOptions & {
128
128
  [ignored: string]: unknown;
@@ -104,6 +104,7 @@ class Document {
104
104
  if (!node.anchor) {
105
105
  const prev = anchors.anchorNames(this);
106
106
  node.anchor =
107
+ // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
107
108
  !name || prev.has(name) ? anchors.findNewAnchor(name || 'a', prev) : name;
108
109
  }
109
110
  return new Alias.Alias(node.anchor);
@@ -125,8 +126,10 @@ class Document {
125
126
  options = replacer;
126
127
  replacer = undefined;
127
128
  }
128
- const { aliasDuplicateObjects, anchorPrefix, flow, keepUndefined, onTagObj, tag } = options || {};
129
- const { onAnchor, setAnchors, sourceObjects } = anchors.createNodeAnchors(this, anchorPrefix || 'a');
129
+ const { aliasDuplicateObjects, anchorPrefix, flow, keepUndefined, onTagObj, tag } = options !== null && options !== void 0 ? options : {};
130
+ const { onAnchor, setAnchors, sourceObjects } = anchors.createNodeAnchors(this,
131
+ // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
132
+ anchorPrefix || 'a');
130
133
  const ctx = {
131
134
  aliasDuplicateObjects: aliasDuplicateObjects !== null && aliasDuplicateObjects !== void 0 ? aliasDuplicateObjects : true,
132
135
  keepUndefined: keepUndefined !== null && keepUndefined !== void 0 ? keepUndefined : false,
@@ -257,10 +260,11 @@ class Document {
257
260
  opt = { merge: true, resolveKnownTags: false, schema: 'yaml-1.1' };
258
261
  break;
259
262
  case '1.2':
263
+ case 'next':
260
264
  if (this.directives)
261
- this.directives.yaml.version = '1.2';
265
+ this.directives.yaml.version = version;
262
266
  else
263
- this.directives = new directives.Directives({ version: '1.2' });
267
+ this.directives = new directives.Directives({ version });
264
268
  opt = { merge: false, resolveKnownTags: true, schema: 'core' };
265
269
  break;
266
270
  case null:
@@ -292,7 +296,7 @@ class Document {
292
296
  maxAliasCount: typeof maxAliasCount === 'number' ? maxAliasCount : 100,
293
297
  stringify: stringify.stringify
294
298
  };
295
- const res = toJS.toJS(this.contents, jsonArg || '', ctx);
299
+ const res = toJS.toJS(this.contents, jsonArg !== null && jsonArg !== void 0 ? jsonArg : '', ctx);
296
300
  if (typeof onAnchor === 'function')
297
301
  for (const { count, res } of ctx.anchors.values())
298
302
  onAnchor(res, count);
@@ -10,13 +10,13 @@ export declare function anchorNames(root: Document | Node): Set<string>;
10
10
  /** Find a new anchor name with the given `prefix` and a one-indexed suffix. */
11
11
  export declare function findNewAnchor(prefix: string, exclude: Set<string>): string;
12
12
  export declare function createNodeAnchors(doc: Document, prefix: string): {
13
- onAnchor(source: unknown): string;
13
+ onAnchor: (source: unknown) => string;
14
14
  /**
15
15
  * With circular references, the source node is only resolved after all
16
16
  * of its child nodes are. This is why anchors are set only after all of
17
17
  * the nodes have been created.
18
18
  */
19
- setAnchors(): void;
19
+ setAnchors: () => void;
20
20
  sourceObjects: Map<unknown, {
21
21
  anchor: string | null;
22
22
  node: Node | null;
@@ -39,7 +39,7 @@ function createNodeAnchors(doc, prefix) {
39
39
  const sourceObjects = new Map();
40
40
  let prevAnchors = null;
41
41
  return {
42
- onAnchor(source) {
42
+ onAnchor: (source) => {
43
43
  aliasObjects.push(source);
44
44
  if (!prevAnchors)
45
45
  prevAnchors = anchorNames(doc);
@@ -52,7 +52,7 @@ function createNodeAnchors(doc, prefix) {
52
52
  * of its child nodes are. This is why anchors are set only after all of
53
53
  * the nodes have been created.
54
54
  */
55
- setAnchors() {
55
+ setAnchors: () => {
56
56
  for (const source of aliasObjects) {
57
57
  const ref = sourceObjects.get(source);
58
58
  if (typeof ref === 'object' &&
@@ -5,7 +5,7 @@ import type { Replacer } from './Document.js';
5
5
  export interface CreateNodeContext {
6
6
  aliasDuplicateObjects: boolean;
7
7
  keepUndefined: boolean;
8
- onAnchor(source: unknown): string;
8
+ onAnchor: (source: unknown) => string;
9
9
  onTagObj?: (tagObj: ScalarTag | CollectionTag) => void;
10
10
  sourceObjects: Map<unknown, {
11
11
  anchor: string | null;
@@ -6,14 +6,15 @@ var Scalar = require('../nodes/Scalar.js');
6
6
 
7
7
  const defaultTagPrefix = 'tag:yaml.org,2002:';
8
8
  function findTagObject(value, tagName, tags) {
9
+ var _a;
9
10
  if (tagName) {
10
11
  const match = tags.filter(t => t.tag === tagName);
11
- const tagObj = match.find(t => !t.format) || match[0];
12
+ const tagObj = (_a = match.find(t => !t.format)) !== null && _a !== void 0 ? _a : match[0];
12
13
  if (!tagObj)
13
14
  throw new Error(`Tag ${tagName} not found`);
14
15
  return tagObj;
15
16
  }
16
- return tags.find(t => t.identify && t.identify(value) && !t.format);
17
+ return tags.find(t => { var _a; return ((_a = t.identify) === null || _a === void 0 ? void 0 : _a.call(t, value)) && !t.format; });
17
18
  }
18
19
  function createNode(value, tagName, ctx) {
19
20
  var _a, _b;
@@ -50,12 +51,14 @@ function createNode(value, tagName, ctx) {
50
51
  sourceObjects.set(value, ref);
51
52
  }
52
53
  }
53
- if (tagName && tagName.startsWith('!!'))
54
+ if (tagName === null || tagName === void 0 ? void 0 : tagName.startsWith('!!'))
54
55
  tagName = defaultTagPrefix + tagName.slice(2);
55
56
  let tagObj = findTagObject(value, tagName, schema.tags);
56
57
  if (!tagObj) {
57
- if (value && typeof value.toJSON === 'function')
58
+ if (value && typeof value.toJSON === 'function') {
59
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-call
58
60
  value = value.toJSON();
61
+ }
59
62
  if (!value || typeof value !== 'object') {
60
63
  const node = new Scalar.Scalar(value);
61
64
  if (ref)
@@ -3,7 +3,7 @@ export declare class Directives {
3
3
  static defaultYaml: Directives['yaml'];
4
4
  static defaultTags: Directives['tags'];
5
5
  yaml: {
6
- version: '1.1' | '1.2';
6
+ version: '1.1' | '1.2' | 'next';
7
7
  explicit?: boolean;
8
8
  };
9
9
  tags: Record<string, string>;
@@ -25,11 +25,11 @@ class Pair {
25
25
  return new Pair(key, value);
26
26
  }
27
27
  toJSON(_, ctx) {
28
- const pair = ctx && ctx.mapAsMap ? new Map() : {};
28
+ const pair = (ctx === null || ctx === void 0 ? void 0 : ctx.mapAsMap) ? new Map() : {};
29
29
  return addPairToJSMap.addPairToJSMap(ctx, pair, this);
30
30
  }
31
31
  toString(ctx, onComment, onChompKeep) {
32
- return ctx && ctx.doc
32
+ return (ctx === null || ctx === void 0 ? void 0 : ctx.doc)
33
33
  ? stringifyPair.stringifyPair(this, ctx, onComment, onChompKeep)
34
34
  : JSON.stringify(this);
35
35
  }
@@ -10,7 +10,7 @@ class Scalar extends Node.NodeBase {
10
10
  this.value = value;
11
11
  }
12
12
  toJSON(arg, ctx) {
13
- return ctx && ctx.keep ? this.value : toJS.toJS(this.value, arg, ctx);
13
+ return (ctx === null || ctx === void 0 ? void 0 : ctx.keep) ? this.value : toJS.toJS(this.value, arg, ctx);
14
14
  }
15
15
  toString() {
16
16
  return String(this.value);
@@ -36,6 +36,8 @@ export declare class YAMLMap<K = unknown, V = unknown> extends Collection {
36
36
  * @param {Class} Type - If set, forces the returned collection type
37
37
  * @returns Instance of Type, Map, or Object
38
38
  */
39
- toJSON(_?: unknown, ctx?: ToJSContext, Type?: any): any;
39
+ toJSON<T = unknown>(_?: unknown, ctx?: ToJSContext, Type?: {
40
+ new (): T;
41
+ }): any;
40
42
  toString(ctx?: StringifyContext, onComment?: () => void, onChompKeep?: () => void): string;
41
43
  }
@@ -34,6 +34,7 @@ class YAMLMap extends Collection.Collection {
34
34
  * collection will throw. Otherwise, overwrites the previous value.
35
35
  */
36
36
  add(pair, overwrite) {
37
+ var _a;
37
38
  let _pair;
38
39
  if (Node.isPair(pair))
39
40
  _pair = pair;
@@ -44,7 +45,7 @@ class YAMLMap extends Collection.Collection {
44
45
  else
45
46
  _pair = new Pair.Pair(pair.key, pair.value);
46
47
  const prev = findPair(this.items, _pair.key);
47
- const sortEntries = this.schema && this.schema.sortMapEntries;
48
+ const sortEntries = (_a = this.schema) === null || _a === void 0 ? void 0 : _a.sortMapEntries;
48
49
  if (prev) {
49
50
  if (!overwrite)
50
51
  throw new Error(`Key ${_pair.key} already set`);
@@ -74,7 +75,7 @@ class YAMLMap extends Collection.Collection {
74
75
  }
75
76
  get(key, keepScalar) {
76
77
  const it = findPair(this.items, key);
77
- const node = it && it.value;
78
+ const node = it === null || it === void 0 ? void 0 : it.value;
78
79
  return !keepScalar && Node.isScalar(node) ? node.value : node;
79
80
  }
80
81
  has(key) {
@@ -89,8 +90,8 @@ class YAMLMap extends Collection.Collection {
89
90
  * @returns Instance of Type, Map, or Object
90
91
  */
91
92
  toJSON(_, ctx, Type) {
92
- const map = Type ? new Type() : ctx && ctx.mapAsMap ? new Map() : {};
93
- if (ctx && ctx.onCreate)
93
+ const map = Type ? new Type() : (ctx === null || ctx === void 0 ? void 0 : ctx.mapAsMap) ? new Map() : {};
94
+ if (ctx === null || ctx === void 0 ? void 0 : ctx.onCreate)
94
95
  ctx.onCreate(map);
95
96
  for (const item of this.items)
96
97
  addPairToJSMap.addPairToJSMap(ctx, map, item);
@@ -76,7 +76,7 @@ class YAMLSeq extends Collection.Collection {
76
76
  }
77
77
  toJSON(_, ctx) {
78
78
  const seq = [];
79
- if (ctx && ctx.onCreate)
79
+ if (ctx === null || ctx === void 0 ? void 0 : ctx.onCreate)
80
80
  ctx.onCreate(seq);
81
81
  let i = 0;
82
82
  for (const item of this.items)
@@ -8,7 +8,7 @@ var toJS = require('./toJS.js');
8
8
 
9
9
  const MERGE_KEY = '<<';
10
10
  function addPairToJSMap(ctx, map, { key, value }) {
11
- if (ctx && ctx.doc.schema.merge && isMergeKey(key)) {
11
+ if ((ctx === null || ctx === void 0 ? void 0 : ctx.doc.schema.merge) && isMergeKey(key)) {
12
12
  value = Node.isAlias(value) ? value.resolve(ctx.doc) : value;
13
13
  if (Node.isSeq(value))
14
14
  for (const it of value.items)
@@ -13,9 +13,11 @@ var Node = require('./Node.js');
13
13
  * stringification.
14
14
  */
15
15
  function toJS(value, arg, ctx) {
16
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
16
17
  if (Array.isArray(value))
17
18
  return value.map((v, i) => toJS(v, String(i), ctx));
18
19
  if (value && typeof value.toJSON === 'function') {
20
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-call
19
21
  if (!ctx || !Node.hasAnchor(value))
20
22
  return value.toJSON(arg, ctx);
21
23
  const data = { aliasCount: 0, count: 1, res: undefined };
@@ -29,7 +31,7 @@ function toJS(value, arg, ctx) {
29
31
  ctx.onCreate(res);
30
32
  return res;
31
33
  }
32
- if (typeof value === 'bigint' && !(ctx && ctx.keep))
34
+ if (typeof value === 'bigint' && !(ctx === null || ctx === void 0 ? void 0 : ctx.keep))
33
35
  return Number(value);
34
36
  return value;
35
37
  }
@@ -73,7 +73,7 @@ export declare type DocumentOptions = {
73
73
  *
74
74
  * Default: `"1.2"`
75
75
  */
76
- version?: '1.1' | '1.2';
76
+ version?: '1.1' | '1.2' | 'next';
77
77
  };
78
78
  export declare type SchemaOptions = {
79
79
  /**
@@ -49,7 +49,7 @@ visit.REMOVE = REMOVE;
49
49
  visit.itemAtPath = (cst, path) => {
50
50
  let item = cst;
51
51
  for (const [field, index] of path) {
52
- const tok = item && item[field];
52
+ const tok = item === null || item === void 0 ? void 0 : item[field];
53
53
  if (tok && 'items' in tok) {
54
54
  item = tok.items[index];
55
55
  }
@@ -66,7 +66,7 @@ visit.itemAtPath = (cst, path) => {
66
66
  visit.parentCollection = (cst, path) => {
67
67
  const parent = visit.itemAtPath(cst, path.slice(0, -1));
68
68
  const field = path[path.length - 1][0];
69
- const coll = parent && parent[field];
69
+ const coll = parent === null || parent === void 0 ? void 0 : parent[field];
70
70
  if (coll && 'items' in coll)
71
71
  return coll;
72
72
  throw new Error('Parent collection not found');
@@ -150,12 +150,13 @@ class Lexer {
150
150
  * @returns A generator of lexical tokens
151
151
  */
152
152
  *lex(source, incomplete = false) {
153
+ var _a;
153
154
  if (source) {
154
155
  this.buffer = this.buffer ? this.buffer + source : source;
155
156
  this.lineEndPos = null;
156
157
  }
157
158
  this.atEnd = !incomplete;
158
- let next = this.next || 'stream';
159
+ let next = (_a = this.next) !== null && _a !== void 0 ? _a : 'stream';
159
160
  while (next && (incomplete || this.hasChars(1)))
160
161
  next = yield* this.parseNext(next);
161
162
  }