@open-mercato/cli 0.6.8-develop.7100.1.fbf66fca35 → 0.7.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 (185) hide show
  1. package/.turbo/turbo-build.log +1 -7
  2. package/dist/agentic/guides/module-facts.json +598 -5508
  3. package/dist/agentic/guides/module-facts.v2.json +598 -5594
  4. package/dist/agentic/guides/modules/ai_assistant/index.md +1 -1
  5. package/dist/agentic/guides/modules/api_docs/index.md +1 -1
  6. package/dist/agentic/guides/modules/api_keys/exact-override-targets.md +0 -1
  7. package/dist/agentic/guides/modules/api_keys/index.md +2 -4
  8. package/dist/agentic/guides/modules/attachments/di-registrations-rich.md +5 -6
  9. package/dist/agentic/guides/modules/attachments/di-service-tokens.md +4 -5
  10. package/dist/agentic/guides/modules/attachments/exact-override-targets.md +5 -6
  11. package/dist/agentic/guides/modules/attachments/index.md +2 -2
  12. package/dist/agentic/guides/modules/audit_logs/index.md +1 -1
  13. package/dist/agentic/guides/modules/auth/di-registrations-rich.md +2 -3
  14. package/dist/agentic/guides/modules/auth/di-service-tokens.md +2 -3
  15. package/dist/agentic/guides/modules/auth/exact-override-targets.md +2 -3
  16. package/dist/agentic/guides/modules/auth/index.md +1 -1
  17. package/dist/agentic/guides/modules/business_rules/index.md +1 -1
  18. package/dist/agentic/guides/modules/catalog/incoming-installed-contributions.md +0 -3
  19. package/dist/agentic/guides/modules/catalog/index.md +2 -2
  20. package/dist/agentic/guides/modules/channel_apns/index.md +1 -1
  21. package/dist/agentic/guides/modules/channel_expo/index.md +1 -1
  22. package/dist/agentic/guides/modules/channel_fcm/index.md +1 -1
  23. package/dist/agentic/guides/modules/channel_gmail/index.md +1 -1
  24. package/dist/agentic/guides/modules/channel_imap/index.md +1 -1
  25. package/dist/agentic/guides/modules/checkout/index.md +1 -1
  26. package/dist/agentic/guides/modules/communication_channels/di-registrations-rich.md +8 -9
  27. package/dist/agentic/guides/modules/communication_channels/exact-override-targets.md +8 -9
  28. package/dist/agentic/guides/modules/communication_channels/incoming-installed-contributions.md +0 -2
  29. package/dist/agentic/guides/modules/communication_channels/index.md +3 -3
  30. package/dist/agentic/guides/modules/configs/index.md +1 -1
  31. package/dist/agentic/guides/modules/content/index.md +1 -1
  32. package/dist/agentic/guides/modules/currencies/index.md +1 -1
  33. package/dist/agentic/guides/modules/customer_accounts/index.md +1 -1
  34. package/dist/agentic/guides/modules/customers/active-extension-bindings.md +3 -6
  35. package/dist/agentic/guides/modules/customers/contribution-resolutions.md +0 -1
  36. package/dist/agentic/guides/modules/customers/events.md +1 -2
  37. package/dist/agentic/guides/modules/customers/incoming-installed-contributions.md +0 -7
  38. package/dist/agentic/guides/modules/customers/index.md +4 -4
  39. package/dist/agentic/guides/modules/customers/umes-contributions.md +0 -1
  40. package/dist/agentic/guides/modules/customers/umes-hosts.md +0 -1
  41. package/dist/agentic/guides/modules/dashboards/index.md +1 -1
  42. package/dist/agentic/guides/modules/data_sync/exact-override-targets.md +2 -2
  43. package/dist/agentic/guides/modules/data_sync/index.md +1 -1
  44. package/dist/agentic/guides/modules/data_sync/workers.md +2 -2
  45. package/dist/agentic/guides/modules/design_system/index.md +1 -1
  46. package/dist/agentic/guides/modules/devices/index.md +1 -1
  47. package/dist/agentic/guides/modules/dictionaries/index.md +1 -1
  48. package/dist/agentic/guides/modules/directory/exact-override-targets.md +0 -2
  49. package/dist/agentic/guides/modules/directory/index.md +3 -5
  50. package/dist/agentic/guides/modules/entities/index.md +1 -1
  51. package/dist/agentic/guides/modules/eudr/index.md +1 -1
  52. package/dist/agentic/guides/modules/events/index.md +1 -1
  53. package/dist/agentic/guides/modules/feature_toggles/index.md +1 -1
  54. package/dist/agentic/guides/modules/gateway_stripe/exact-override-targets.md +1 -1
  55. package/dist/agentic/guides/modules/gateway_stripe/index.md +1 -1
  56. package/dist/agentic/guides/modules/gateway_stripe/workers.md +1 -1
  57. package/dist/agentic/guides/modules/generators/index.md +1 -1
  58. package/dist/agentic/guides/modules/inbox_ops/index.md +1 -1
  59. package/dist/agentic/guides/modules/integrations/index.md +1 -1
  60. package/dist/agentic/guides/modules/messages/index.md +1 -1
  61. package/dist/agentic/guides/modules/notifications/index.md +1 -1
  62. package/dist/agentic/guides/modules/onboarding/index.md +1 -1
  63. package/dist/agentic/guides/modules/payment_gateways/index.md +1 -1
  64. package/dist/agentic/guides/modules/perspectives/index.md +1 -1
  65. package/dist/agentic/guides/modules/planner/index.md +1 -1
  66. package/dist/agentic/guides/modules/portal/index.md +1 -1
  67. package/dist/agentic/guides/modules/progress/index.md +1 -1
  68. package/dist/agentic/guides/modules/push_notifications/index.md +1 -1
  69. package/dist/agentic/guides/modules/query_index/index.md +1 -1
  70. package/dist/agentic/guides/modules/record_locks/index.md +1 -1
  71. package/dist/agentic/guides/modules/resources/index.md +1 -1
  72. package/dist/agentic/guides/modules/sales/active-extension-bindings.md +0 -1
  73. package/dist/agentic/guides/modules/sales/contribution-resolutions.md +0 -1
  74. package/dist/agentic/guides/modules/sales/exact-override-targets.md +4 -5
  75. package/dist/agentic/guides/modules/sales/host-extension-points.md +1 -1
  76. package/dist/agentic/guides/modules/sales/incoming-installed-contributions.md +0 -2
  77. package/dist/agentic/guides/modules/sales/index.md +3 -3
  78. package/dist/agentic/guides/modules/sales/setup.md +1 -1
  79. package/dist/agentic/guides/modules/sales/umes-contributions.md +0 -1
  80. package/dist/agentic/guides/modules/sales/umes-diagnostics.md +0 -1
  81. package/dist/agentic/guides/modules/sales/umes-hosts.md +0 -9
  82. package/dist/agentic/guides/modules/scheduler/cli-commands.md +0 -1
  83. package/dist/agentic/guides/modules/scheduler/exact-override-targets.md +1 -3
  84. package/dist/agentic/guides/modules/scheduler/index.md +2 -2
  85. package/dist/agentic/guides/modules/scheduler/workers.md +1 -2
  86. package/dist/agentic/guides/modules/search/index.md +1 -1
  87. package/dist/agentic/guides/modules/security/index.md +1 -1
  88. package/dist/agentic/guides/modules/security/owned-contract-module-metadata.md +1 -1
  89. package/dist/agentic/guides/modules/shipping_carriers/index.md +1 -1
  90. package/dist/agentic/guides/modules/sso/index.md +1 -1
  91. package/dist/agentic/guides/modules/staff/index.md +1 -1
  92. package/dist/agentic/guides/modules/storage_s3/index.md +1 -1
  93. package/dist/agentic/guides/modules/sync_akeneo/index.md +1 -1
  94. package/dist/agentic/guides/modules/sync_excel/index.md +1 -1
  95. package/dist/agentic/guides/modules/system_status_overlays/index.md +1 -1
  96. package/dist/agentic/guides/modules/translations/index.md +1 -1
  97. package/dist/agentic/guides/modules/warranty_claims/index.md +1 -1
  98. package/dist/agentic/guides/modules/webhooks/index.md +1 -1
  99. package/dist/agentic/guides/modules/wms/index.md +1 -1
  100. package/dist/agentic/guides/modules/workflows/index.md +1 -1
  101. package/dist/agentic/guides/reference-module-facts.json +2 -2
  102. package/dist/agentic/guides/reference-modules/example/index.md +1 -1
  103. package/dist/agentic/guides/upstream/manifest.json +1 -1
  104. package/dist/agentic/shared/AGENTS.md.template +3 -3
  105. package/dist/agentic/shared/ai/harness/README.md +2 -2
  106. package/dist/agentic/shared/ai/harness/RELEASE.md +6 -8
  107. package/dist/agentic/shared/ai/harness/cases.json +0 -83
  108. package/dist/agentic/shared/ai/harness/cases.schema.json +4 -4
  109. package/dist/agentic/shared/ai/harness/validators.json +1 -1
  110. package/dist/agentic/shared/ai/skills/om-auto-upgrade-0.6.7-to-0.7.0/SKILL.md +12 -3
  111. package/dist/agentic/shared/scripts/run-agent-harness-release.mjs +11 -37
  112. package/dist/lib/generators/ast/index.js +1 -4
  113. package/dist/lib/generators/ast/index.js.map +2 -2
  114. package/dist/lib/generators/ast/source-file.js +1 -8
  115. package/dist/lib/generators/ast/source-file.js.map +2 -2
  116. package/dist/lib/generators/ast/writers.js +1 -9
  117. package/dist/lib/generators/ast/writers.js.map +2 -2
  118. package/dist/lib/generators/module-registry.js +189 -424
  119. package/dist/lib/generators/module-registry.js.map +2 -2
  120. package/dist/lib/generators/route-manifest-shards.js +1 -4
  121. package/dist/lib/generators/route-manifest-shards.js.map +2 -2
  122. package/dist/lib/spawn.js +2 -3
  123. package/dist/lib/spawn.js.map +2 -2
  124. package/dist/lib/testing/integration.js +24 -162
  125. package/dist/lib/testing/integration.js.map +2 -2
  126. package/dist/mercato.js +0 -14
  127. package/dist/mercato.js.map +2 -2
  128. package/package.json +7 -8
  129. package/src/lib/__tests__/spawn.test.ts +0 -23
  130. package/src/lib/generators/__tests__/metadata-extraction.test.ts +0 -44
  131. package/src/lib/generators/__tests__/module-facts.bc-guard.test.ts +8 -32
  132. package/src/lib/generators/__tests__/module-facts.customers.fixture.test.ts +1 -4
  133. package/src/lib/generators/__tests__/module-facts.extension-hosts.test.ts +1 -1
  134. package/src/lib/generators/__tests__/module-subset.test.ts +72 -96
  135. package/src/lib/generators/__tests__/output-snapshots.test.ts +1 -1
  136. package/src/lib/generators/__tests__/route-manifest-shards.test.ts +0 -15
  137. package/src/lib/generators/__tests__/structural-contracts.test.ts +3 -7
  138. package/src/lib/generators/ast/index.ts +1 -2
  139. package/src/lib/generators/ast/source-file.ts +0 -13
  140. package/src/lib/generators/ast/writers.ts +1 -26
  141. package/src/lib/generators/module-registry.ts +227 -534
  142. package/src/lib/generators/route-manifest-shards.ts +1 -8
  143. package/src/lib/spawn.ts +4 -5
  144. package/src/lib/testing/__tests__/integration.test.ts +0 -435
  145. package/src/lib/testing/integration.ts +32 -254
  146. package/src/mercato.ts +0 -27
  147. package/dist/agentic/guides/modules/api_keys/di-registrations-rich.md +0 -11
  148. package/dist/agentic/guides/modules/api_keys/di-service-tokens.md +0 -11
  149. package/dist/agentic/guides/modules/channel_discord/acl-features.md +0 -13
  150. package/dist/agentic/guides/modules/channel_discord/ai-agents.md +0 -11
  151. package/dist/agentic/guides/modules/channel_discord/backend-pages.md +0 -11
  152. package/dist/agentic/guides/modules/channel_discord/cli-commands.md +0 -13
  153. package/dist/agentic/guides/modules/channel_discord/contribution-resolutions.md +0 -14
  154. package/dist/agentic/guides/modules/channel_discord/di-registrations-rich.md +0 -12
  155. package/dist/agentic/guides/modules/channel_discord/exact-override-targets.md +0 -26
  156. package/dist/agentic/guides/modules/channel_discord/index.md +0 -22
  157. package/dist/agentic/guides/modules/channel_discord/owned-contract-module-metadata.md +0 -11
  158. package/dist/agentic/guides/modules/channel_discord/setup.md +0 -11
  159. package/dist/agentic/guides/modules/channel_discord/umes-contributions.md +0 -14
  160. package/dist/agentic/guides/modules/channel_discord/workers.md +0 -12
  161. package/dist/agentic/guides/modules/directory/di-registrations-rich.md +0 -12
  162. package/dist/agentic/guides/modules/directory/di-service-tokens.md +0 -12
  163. package/dist/agentic/guides/modules/documents/acl-features.md +0 -17
  164. package/dist/agentic/guides/modules/documents/backend-pages.md +0 -13
  165. package/dist/agentic/guides/modules/documents/contribution-resolutions.md +0 -27
  166. package/dist/agentic/guides/modules/documents/di-registrations-rich.md +0 -21
  167. package/dist/agentic/guides/modules/documents/domain-commands.md +0 -37
  168. package/dist/agentic/guides/modules/documents/encryption.md +0 -11
  169. package/dist/agentic/guides/modules/documents/entities.md +0 -21
  170. package/dist/agentic/guides/modules/documents/events.md +0 -25
  171. package/dist/agentic/guides/modules/documents/exact-override-targets.md +0 -39
  172. package/dist/agentic/guides/modules/documents/index.md +0 -25
  173. package/dist/agentic/guides/modules/documents/notifications.md +0 -13
  174. package/dist/agentic/guides/modules/documents/owned-contract-module-metadata.md +0 -11
  175. package/dist/agentic/guides/modules/documents/setup.md +0 -11
  176. package/dist/agentic/guides/modules/documents/umes-contributions.md +0 -27
  177. package/dist/agentic/guides/modules/documents/umes-hosts.md +0 -36
  178. package/src/__tests__/resolve-queue-abandon-hook.test.ts +0 -39
  179. package/src/lib/generators/__tests__/__snapshots__/bootstrap-registrations.test.ts.snap +0 -14
  180. package/src/lib/generators/__tests__/__snapshots__/command-loaders.test.ts.snap +0 -23
  181. package/src/lib/generators/__tests__/ast-writers-escaping.test.ts +0 -64
  182. package/src/lib/generators/__tests__/bootstrap-registrations.test.ts +0 -176
  183. package/src/lib/generators/__tests__/command-loaders.test.ts +0 -239
  184. package/src/lib/generators/__tests__/generated-registry-imports.test.ts +0 -128
  185. package/src/lib/generators/__tests__/registry-variant-parity.test.ts +0 -258
@@ -1,9 +1,3 @@
1
- function escapeGeneratedJsonLiteral(json) {
2
- return json.replace(/</g, "\\u003c").replace(/>/g, "\\u003e").replace(/\u2028/g, "\\u2028").replace(/\u2029/g, "\\u2029");
3
- }
4
- function stringLiteral(value) {
5
- return escapeGeneratedJsonLiteral(JSON.stringify(value));
6
- }
7
1
  function writeLiteral(writer, value) {
8
2
  if (value === void 0) {
9
3
  writer.write("undefined");
@@ -14,7 +8,7 @@ function writeLiteral(writer, value) {
14
8
  return;
15
9
  }
16
10
  if (typeof value === "string") {
17
- writer.write(stringLiteral(value));
11
+ writer.write(JSON.stringify(value));
18
12
  return;
19
13
  }
20
14
  writer.write(String(value));
@@ -360,7 +354,6 @@ export {
360
354
  callExpression,
361
355
  conditionalExpression,
362
356
  elementAccess,
363
- escapeGeneratedJsonLiteral,
364
357
  expressionStatement,
365
358
  forOfStatement,
366
359
  identifier,
@@ -383,7 +376,6 @@ export {
383
376
  propertyAccess,
384
377
  returnStatement,
385
378
  spreadExpression,
386
- stringLiteral,
387
379
  templateLiteral,
388
380
  variableStatement,
389
381
  writeArrayLiteral,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/lib/generators/ast/writers.ts"],
4
- "sourcesContent": ["import type { CodeBlockWriter, WriterFunction } from 'ts-morph'\n\nexport type GeneratedValue =\n | string\n | number\n | boolean\n | null\n | undefined\n | WriterFunction\n\nexport interface ObjectPropertyWriter {\n kind?: 'property'\n name: string\n value: GeneratedValue\n}\n\nexport interface SpreadPropertyWriter {\n kind: 'spread'\n value: GeneratedValue\n}\n\nexport type GeneratedObjectEntry = ObjectPropertyWriter | SpreadPropertyWriter\nexport type StatementWriter = WriterFunction\n\n/**\n * Escapes the characters that are legal inside a JSON string but hazardous inside a\n * generated JavaScript source file: `<` and `>` so an emitted value can never close a\n * surrounding script context, and U+2028 / U+2029 which older JavaScript parsers reject\n * inside a string literal. The escape sequences denote the same runtime string, so this\n * only ever changes the emitted text, never the emitted value.\n */\nexport function escapeGeneratedJsonLiteral(json: string): string {\n return json\n .replace(/</g, '\\\\u003c')\n .replace(/>/g, '\\\\u003e')\n .replace(/\\u2028/g, '\\\\u2028')\n .replace(/\\u2029/g, '\\\\u2029')\n}\n\n/**\n * The single point where a string value becomes source text on the AST path. The string\n * paths that are still emitted as templates share the escaping step above rather than\n * this function, because they also serialize objects, whose nested strings need the same\n * hardening.\n */\nexport function stringLiteral(value: string): string {\n return escapeGeneratedJsonLiteral(JSON.stringify(value))\n}\n\nexport function writeLiteral(writer: CodeBlockWriter, value: Exclude<GeneratedValue, WriterFunction>): void {\n if (value === undefined) {\n writer.write('undefined')\n return\n }\n\n if (value === null) {\n writer.write('null')\n return\n }\n\n if (typeof value === 'string') {\n writer.write(stringLiteral(value))\n return\n }\n\n writer.write(String(value))\n}\n\nexport function writeValue(writer: CodeBlockWriter, value: GeneratedValue): void {\n if (typeof value === 'function') {\n value(writer)\n return\n }\n\n writeLiteral(writer, value)\n}\n\nexport function writeCommaSeparated<T>(\n writer: CodeBlockWriter,\n items: readonly T[],\n writeItem: (writer: CodeBlockWriter, item: T, index: number) => void,\n): void {\n items.forEach((item, index) => {\n if (index > 0) {\n writer.write(', ')\n }\n writeItem(writer, item, index)\n })\n}\n\nexport function writeArrayLiteral<T>(\n writer: CodeBlockWriter,\n items: readonly T[],\n writeItem: (writer: CodeBlockWriter, item: T, index: number) => void,\n): void {\n if (items.length === 0) {\n writer.write('[]')\n return\n }\n\n writer.write('[')\n writer.newLine()\n writer.indent(() => {\n items.forEach((item, index) => {\n writeItem(writer, item, index)\n if (index < items.length - 1) {\n writer.write(',')\n }\n writer.newLine()\n })\n })\n writer.write(']')\n}\n\nexport function arrayLiteral<T>(\n items: readonly T[],\n writeItem: (writer: CodeBlockWriter, item: T, index: number) => void,\n): WriterFunction {\n return (writer) => {\n writeArrayLiteral(writer, items, writeItem)\n }\n}\n\nexport function writeObjectLiteral(\n writer: CodeBlockWriter,\n entries: readonly GeneratedObjectEntry[],\n): void {\n if (entries.length === 0) {\n writer.write('{}')\n return\n }\n\n writer.write('{')\n writer.newLine()\n writer.indent(() => {\n entries.forEach((entry, index) => {\n if (entry.kind === 'spread') {\n writer.write('...')\n writeValue(writer, entry.value)\n } else {\n writer.write(entry.name)\n writer.write(': ')\n writeValue(writer, entry.value)\n }\n\n if (index < entries.length - 1) {\n writer.write(',')\n }\n writer.newLine()\n })\n })\n writer.write('}')\n}\n\nexport function objectLiteral(entries: readonly GeneratedObjectEntry[]): WriterFunction {\n return (writer) => {\n writeObjectLiteral(writer, entries)\n }\n}\n\nexport function parenthesized(value: GeneratedValue): WriterFunction {\n return (writer) => {\n writer.write('(')\n writeValue(writer, value)\n writer.write(')')\n }\n}\n\nexport function callExpression(callee: GeneratedValue, args: readonly GeneratedValue[]): WriterFunction {\n return (writer) => {\n writeValue(writer, callee)\n writer.write('(')\n writeCommaSeparated(writer, args, writeValue)\n writer.write(')')\n }\n}\n\nexport function importExpression(moduleSpecifier: GeneratedValue): WriterFunction {\n return (writer) => {\n writer.write('import(')\n writeValue(writer, moduleSpecifier)\n writer.write(')')\n }\n}\n\nexport function awaitExpression(value: GeneratedValue): WriterFunction {\n return (writer) => {\n writer.write('await ')\n writeValue(writer, value)\n }\n}\n\nexport function identifier(name: string): WriterFunction {\n return (writer) => {\n writer.write(name)\n }\n}\n\nexport function propertyAccess(target: GeneratedValue, property: string): WriterFunction {\n return (writer) => {\n writeValue(writer, target)\n writer.write('.')\n writer.write(property)\n }\n}\n\nexport function prefixExpression(operator: string, value: GeneratedValue): WriterFunction {\n return (writer) => {\n writer.write(operator)\n writeValue(writer, value)\n }\n}\n\nexport function optionalPropertyAccess(target: GeneratedValue, property: string): WriterFunction {\n return (writer) => {\n writeValue(writer, target)\n writer.write('?.')\n writer.write(property)\n }\n}\n\nexport function elementAccess(target: GeneratedValue, index: GeneratedValue): WriterFunction {\n return (writer) => {\n writeValue(writer, target)\n writer.write('[')\n writeValue(writer, index)\n writer.write(']')\n }\n}\n\nexport function spreadExpression(value: GeneratedValue): WriterFunction {\n return (writer) => {\n writer.write('...')\n writeValue(writer, value)\n }\n}\n\nexport function asExpression(value: GeneratedValue, type: string): WriterFunction {\n return (writer) => {\n writer.write('(')\n writeValue(writer, value)\n writer.write(' as ')\n writer.write(type)\n writer.write(')')\n }\n}\n\nexport function nonNullAssertion(value: GeneratedValue): WriterFunction {\n return (writer) => {\n writeValue(writer, value)\n writer.write('!')\n }\n}\n\nexport function binaryExpression(left: GeneratedValue, operator: string, right: GeneratedValue): WriterFunction {\n return (writer) => {\n writeValue(writer, left)\n writer.write(` ${operator} `)\n writeValue(writer, right)\n }\n}\n\nexport function conditionalExpression(\n condition: GeneratedValue,\n whenTrue: GeneratedValue,\n whenFalse: GeneratedValue,\n): WriterFunction {\n return (writer) => {\n writeValue(writer, condition)\n writer.write(' ? ')\n writeValue(writer, whenTrue)\n writer.write(' : ')\n writeValue(writer, whenFalse)\n }\n}\n\nexport function logicalAnd(expressions: readonly GeneratedValue[]): WriterFunction {\n return (writer) => {\n expressions.forEach((expression, index) => {\n if (index > 0) {\n writer.write(' && ')\n }\n writeValue(writer, expression)\n })\n }\n}\n\nexport function logicalOr(expressions: readonly GeneratedValue[]): WriterFunction {\n return (writer) => {\n expressions.forEach((expression, index) => {\n if (index > 0) {\n writer.write(' || ')\n }\n writeValue(writer, expression)\n })\n }\n}\n\nexport function nullishCoalesce(expressions: readonly GeneratedValue[]): WriterFunction {\n return (writer) => {\n expressions.forEach((expression, index) => {\n if (index > 0) {\n writer.write(' ?? ')\n }\n writeValue(writer, expression)\n })\n }\n}\n\nexport function methodCall(target: GeneratedValue, method: string, args: readonly GeneratedValue[]): WriterFunction {\n return callExpression(propertyAccess(target, method), args)\n}\n\nexport function newExpression(callee: GeneratedValue, args: readonly GeneratedValue[]): WriterFunction {\n return (writer) => {\n writer.write('new ')\n writeValue(writer, callee)\n writer.write('(')\n writeCommaSeparated(writer, args, writeValue)\n writer.write(')')\n }\n}\n\nexport function invokeImmediately(expression: GeneratedValue): WriterFunction {\n return callExpression(parenthesized(expression), [])\n}\n\nexport function templateLiteral(parts: readonly GeneratedValue[]): WriterFunction {\n return (writer) => {\n writer.write('`')\n parts.forEach((part) => {\n if (typeof part === 'string') {\n writer.write(part.replaceAll('\\\\', '\\\\\\\\').replaceAll('`', '\\\\`').replaceAll('${', '\\\\${'))\n return\n }\n\n writer.write('${')\n writeValue(writer, part)\n writer.write('}')\n })\n writer.write('`')\n }\n}\n\nexport function writeStatements(writer: CodeBlockWriter, statements: readonly StatementWriter[]): void {\n statements.forEach((statement, index) => {\n statement(writer)\n if (index < statements.length - 1) {\n writer.newLine()\n }\n })\n}\n\nexport function returnStatement(expression?: GeneratedValue): StatementWriter {\n return (writer) => {\n writer.write('return')\n if (expression !== undefined) {\n writer.write(' ')\n writeValue(writer, expression)\n }\n writer.write(';')\n }\n}\n\nexport function variableStatement(options: {\n declarationKind?: 'const' | 'let' | 'var'\n name: string\n initializer: GeneratedValue\n type?: string\n}): StatementWriter {\n return (writer) => {\n writer.write(options.declarationKind ?? 'const')\n writer.write(' ')\n writer.write(options.name)\n if (options.type) {\n writer.write(': ')\n writer.write(options.type)\n }\n writer.write(' = ')\n writeValue(writer, options.initializer)\n writer.write(';')\n }\n}\n\nexport function assignmentStatement(target: GeneratedValue, value: GeneratedValue): StatementWriter {\n return (writer) => {\n writeValue(writer, target)\n writer.write(' = ')\n writeValue(writer, value)\n writer.write(';')\n }\n}\n\nexport function ifStatement(options: {\n condition: GeneratedValue\n thenStatements: readonly StatementWriter[]\n elseStatements?: readonly StatementWriter[]\n}): StatementWriter {\n return (writer) => {\n const elseStatements = options.elseStatements\n writer.write('if (')\n writeValue(writer, options.condition)\n writer.write(') ')\n writer.block(() => {\n writeStatements(writer, options.thenStatements)\n })\n\n if (elseStatements && elseStatements.length > 0) {\n writer.write(' else ')\n writer.block(() => {\n writeStatements(writer, elseStatements)\n })\n }\n }\n}\n\nexport function forOfStatement(options: {\n variable: string\n iterable: GeneratedValue\n statements: readonly StatementWriter[]\n declarationKind?: 'const' | 'let' | 'var'\n}): StatementWriter {\n return (writer) => {\n writer.write('for (')\n writer.write(options.declarationKind ?? 'const')\n writer.write(' ')\n writer.write(options.variable)\n writer.write(' of ')\n writeValue(writer, options.iterable)\n writer.write(') ')\n writer.block(() => {\n writeStatements(writer, options.statements)\n })\n }\n}\n\nexport function objectKeys(value: GeneratedValue): WriterFunction {\n return methodCall(identifier('Object'), 'keys', [value])\n}\n\nexport function objectEntries(value: GeneratedValue): WriterFunction {\n return methodCall(identifier('Object'), 'entries', [value])\n}\n\nexport function objectFromEntries(value: GeneratedValue): WriterFunction {\n return methodCall(identifier('Object'), 'fromEntries', [value])\n}\n\nexport function arrowFunction(options: {\n async?: boolean\n parameters?: string[]\n body: WriterFunction\n}): WriterFunction {\n return (writer) => {\n if (options.async) {\n writer.write('async ')\n }\n writer.write('(')\n writeCommaSeparated(writer, options.parameters ?? [], (currentWriter, parameter) => currentWriter.write(parameter))\n writer.write(') => ')\n options.body(writer)\n }\n}\n\nexport function block(body: WriterFunction): WriterFunction {\n return (writer) => {\n writer.block(() => {\n body(writer)\n })\n }\n}\n\nexport function expressionStatement(expression: GeneratedValue): WriterFunction {\n return (writer) => {\n writeValue(writer, expression)\n writer.write(';')\n }\n}\n"],
5
- "mappings": "AA+BO,SAAS,2BAA2B,MAAsB;AAC/D,SAAO,KACJ,QAAQ,MAAM,SAAS,EACvB,QAAQ,MAAM,SAAS,EACvB,QAAQ,WAAW,SAAS,EAC5B,QAAQ,WAAW,SAAS;AACjC;AAQO,SAAS,cAAc,OAAuB;AACnD,SAAO,2BAA2B,KAAK,UAAU,KAAK,CAAC;AACzD;AAEO,SAAS,aAAa,QAAyB,OAAsD;AAC1G,MAAI,UAAU,QAAW;AACvB,WAAO,MAAM,WAAW;AACxB;AAAA,EACF;AAEA,MAAI,UAAU,MAAM;AAClB,WAAO,MAAM,MAAM;AACnB;AAAA,EACF;AAEA,MAAI,OAAO,UAAU,UAAU;AAC7B,WAAO,MAAM,cAAc,KAAK,CAAC;AACjC;AAAA,EACF;AAEA,SAAO,MAAM,OAAO,KAAK,CAAC;AAC5B;AAEO,SAAS,WAAW,QAAyB,OAA6B;AAC/E,MAAI,OAAO,UAAU,YAAY;AAC/B,UAAM,MAAM;AACZ;AAAA,EACF;AAEA,eAAa,QAAQ,KAAK;AAC5B;AAEO,SAAS,oBACd,QACA,OACA,WACM;AACN,QAAM,QAAQ,CAAC,MAAM,UAAU;AAC7B,QAAI,QAAQ,GAAG;AACb,aAAO,MAAM,IAAI;AAAA,IACnB;AACA,cAAU,QAAQ,MAAM,KAAK;AAAA,EAC/B,CAAC;AACH;AAEO,SAAS,kBACd,QACA,OACA,WACM;AACN,MAAI,MAAM,WAAW,GAAG;AACtB,WAAO,MAAM,IAAI;AACjB;AAAA,EACF;AAEA,SAAO,MAAM,GAAG;AAChB,SAAO,QAAQ;AACf,SAAO,OAAO,MAAM;AAClB,UAAM,QAAQ,CAAC,MAAM,UAAU;AAC7B,gBAAU,QAAQ,MAAM,KAAK;AAC7B,UAAI,QAAQ,MAAM,SAAS,GAAG;AAC5B,eAAO,MAAM,GAAG;AAAA,MAClB;AACA,aAAO,QAAQ;AAAA,IACjB,CAAC;AAAA,EACH,CAAC;AACD,SAAO,MAAM,GAAG;AAClB;AAEO,SAAS,aACd,OACA,WACgB;AAChB,SAAO,CAAC,WAAW;AACjB,sBAAkB,QAAQ,OAAO,SAAS;AAAA,EAC5C;AACF;AAEO,SAAS,mBACd,QACA,SACM;AACN,MAAI,QAAQ,WAAW,GAAG;AACxB,WAAO,MAAM,IAAI;AACjB;AAAA,EACF;AAEA,SAAO,MAAM,GAAG;AAChB,SAAO,QAAQ;AACf,SAAO,OAAO,MAAM;AAClB,YAAQ,QAAQ,CAAC,OAAO,UAAU;AAChC,UAAI,MAAM,SAAS,UAAU;AAC3B,eAAO,MAAM,KAAK;AAClB,mBAAW,QAAQ,MAAM,KAAK;AAAA,MAChC,OAAO;AACL,eAAO,MAAM,MAAM,IAAI;AACvB,eAAO,MAAM,IAAI;AACjB,mBAAW,QAAQ,MAAM,KAAK;AAAA,MAChC;AAEA,UAAI,QAAQ,QAAQ,SAAS,GAAG;AAC9B,eAAO,MAAM,GAAG;AAAA,MAClB;AACA,aAAO,QAAQ;AAAA,IACjB,CAAC;AAAA,EACH,CAAC;AACD,SAAO,MAAM,GAAG;AAClB;AAEO,SAAS,cAAc,SAA0D;AACtF,SAAO,CAAC,WAAW;AACjB,uBAAmB,QAAQ,OAAO;AAAA,EACpC;AACF;AAEO,SAAS,cAAc,OAAuC;AACnE,SAAO,CAAC,WAAW;AACjB,WAAO,MAAM,GAAG;AAChB,eAAW,QAAQ,KAAK;AACxB,WAAO,MAAM,GAAG;AAAA,EAClB;AACF;AAEO,SAAS,eAAe,QAAwB,MAAiD;AACtG,SAAO,CAAC,WAAW;AACjB,eAAW,QAAQ,MAAM;AACzB,WAAO,MAAM,GAAG;AAChB,wBAAoB,QAAQ,MAAM,UAAU;AAC5C,WAAO,MAAM,GAAG;AAAA,EAClB;AACF;AAEO,SAAS,iBAAiB,iBAAiD;AAChF,SAAO,CAAC,WAAW;AACjB,WAAO,MAAM,SAAS;AACtB,eAAW,QAAQ,eAAe;AAClC,WAAO,MAAM,GAAG;AAAA,EAClB;AACF;AAEO,SAAS,gBAAgB,OAAuC;AACrE,SAAO,CAAC,WAAW;AACjB,WAAO,MAAM,QAAQ;AACrB,eAAW,QAAQ,KAAK;AAAA,EAC1B;AACF;AAEO,SAAS,WAAW,MAA8B;AACvD,SAAO,CAAC,WAAW;AACjB,WAAO,MAAM,IAAI;AAAA,EACnB;AACF;AAEO,SAAS,eAAe,QAAwB,UAAkC;AACvF,SAAO,CAAC,WAAW;AACjB,eAAW,QAAQ,MAAM;AACzB,WAAO,MAAM,GAAG;AAChB,WAAO,MAAM,QAAQ;AAAA,EACvB;AACF;AAEO,SAAS,iBAAiB,UAAkB,OAAuC;AACxF,SAAO,CAAC,WAAW;AACjB,WAAO,MAAM,QAAQ;AACrB,eAAW,QAAQ,KAAK;AAAA,EAC1B;AACF;AAEO,SAAS,uBAAuB,QAAwB,UAAkC;AAC/F,SAAO,CAAC,WAAW;AACjB,eAAW,QAAQ,MAAM;AACzB,WAAO,MAAM,IAAI;AACjB,WAAO,MAAM,QAAQ;AAAA,EACvB;AACF;AAEO,SAAS,cAAc,QAAwB,OAAuC;AAC3F,SAAO,CAAC,WAAW;AACjB,eAAW,QAAQ,MAAM;AACzB,WAAO,MAAM,GAAG;AAChB,eAAW,QAAQ,KAAK;AACxB,WAAO,MAAM,GAAG;AAAA,EAClB;AACF;AAEO,SAAS,iBAAiB,OAAuC;AACtE,SAAO,CAAC,WAAW;AACjB,WAAO,MAAM,KAAK;AAClB,eAAW,QAAQ,KAAK;AAAA,EAC1B;AACF;AAEO,SAAS,aAAa,OAAuB,MAA8B;AAChF,SAAO,CAAC,WAAW;AACjB,WAAO,MAAM,GAAG;AAChB,eAAW,QAAQ,KAAK;AACxB,WAAO,MAAM,MAAM;AACnB,WAAO,MAAM,IAAI;AACjB,WAAO,MAAM,GAAG;AAAA,EAClB;AACF;AAEO,SAAS,iBAAiB,OAAuC;AACtE,SAAO,CAAC,WAAW;AACjB,eAAW,QAAQ,KAAK;AACxB,WAAO,MAAM,GAAG;AAAA,EAClB;AACF;AAEO,SAAS,iBAAiB,MAAsB,UAAkB,OAAuC;AAC9G,SAAO,CAAC,WAAW;AACjB,eAAW,QAAQ,IAAI;AACvB,WAAO,MAAM,IAAI,QAAQ,GAAG;AAC5B,eAAW,QAAQ,KAAK;AAAA,EAC1B;AACF;AAEO,SAAS,sBACd,WACA,UACA,WACgB;AAChB,SAAO,CAAC,WAAW;AACjB,eAAW,QAAQ,SAAS;AAC5B,WAAO,MAAM,KAAK;AAClB,eAAW,QAAQ,QAAQ;AAC3B,WAAO,MAAM,KAAK;AAClB,eAAW,QAAQ,SAAS;AAAA,EAC9B;AACF;AAEO,SAAS,WAAW,aAAwD;AACjF,SAAO,CAAC,WAAW;AACjB,gBAAY,QAAQ,CAAC,YAAY,UAAU;AACzC,UAAI,QAAQ,GAAG;AACb,eAAO,MAAM,MAAM;AAAA,MACrB;AACA,iBAAW,QAAQ,UAAU;AAAA,IAC/B,CAAC;AAAA,EACH;AACF;AAEO,SAAS,UAAU,aAAwD;AAChF,SAAO,CAAC,WAAW;AACjB,gBAAY,QAAQ,CAAC,YAAY,UAAU;AACzC,UAAI,QAAQ,GAAG;AACb,eAAO,MAAM,MAAM;AAAA,MACrB;AACA,iBAAW,QAAQ,UAAU;AAAA,IAC/B,CAAC;AAAA,EACH;AACF;AAEO,SAAS,gBAAgB,aAAwD;AACtF,SAAO,CAAC,WAAW;AACjB,gBAAY,QAAQ,CAAC,YAAY,UAAU;AACzC,UAAI,QAAQ,GAAG;AACb,eAAO,MAAM,MAAM;AAAA,MACrB;AACA,iBAAW,QAAQ,UAAU;AAAA,IAC/B,CAAC;AAAA,EACH;AACF;AAEO,SAAS,WAAW,QAAwB,QAAgB,MAAiD;AAClH,SAAO,eAAe,eAAe,QAAQ,MAAM,GAAG,IAAI;AAC5D;AAEO,SAAS,cAAc,QAAwB,MAAiD;AACrG,SAAO,CAAC,WAAW;AACjB,WAAO,MAAM,MAAM;AACnB,eAAW,QAAQ,MAAM;AACzB,WAAO,MAAM,GAAG;AAChB,wBAAoB,QAAQ,MAAM,UAAU;AAC5C,WAAO,MAAM,GAAG;AAAA,EAClB;AACF;AAEO,SAAS,kBAAkB,YAA4C;AAC5E,SAAO,eAAe,cAAc,UAAU,GAAG,CAAC,CAAC;AACrD;AAEO,SAAS,gBAAgB,OAAkD;AAChF,SAAO,CAAC,WAAW;AACjB,WAAO,MAAM,GAAG;AAChB,UAAM,QAAQ,CAAC,SAAS;AACtB,UAAI,OAAO,SAAS,UAAU;AAC5B,eAAO,MAAM,KAAK,WAAW,MAAM,MAAM,EAAE,WAAW,KAAK,KAAK,EAAE,WAAW,MAAM,MAAM,CAAC;AAC1F;AAAA,MACF;AAEA,aAAO,MAAM,IAAI;AACjB,iBAAW,QAAQ,IAAI;AACvB,aAAO,MAAM,GAAG;AAAA,IAClB,CAAC;AACD,WAAO,MAAM,GAAG;AAAA,EAClB;AACF;AAEO,SAAS,gBAAgB,QAAyB,YAA8C;AACrG,aAAW,QAAQ,CAAC,WAAW,UAAU;AACvC,cAAU,MAAM;AAChB,QAAI,QAAQ,WAAW,SAAS,GAAG;AACjC,aAAO,QAAQ;AAAA,IACjB;AAAA,EACF,CAAC;AACH;AAEO,SAAS,gBAAgB,YAA8C;AAC5E,SAAO,CAAC,WAAW;AACjB,WAAO,MAAM,QAAQ;AACrB,QAAI,eAAe,QAAW;AAC5B,aAAO,MAAM,GAAG;AAChB,iBAAW,QAAQ,UAAU;AAAA,IAC/B;AACA,WAAO,MAAM,GAAG;AAAA,EAClB;AACF;AAEO,SAAS,kBAAkB,SAKd;AAClB,SAAO,CAAC,WAAW;AACjB,WAAO,MAAM,QAAQ,mBAAmB,OAAO;AAC/C,WAAO,MAAM,GAAG;AAChB,WAAO,MAAM,QAAQ,IAAI;AACzB,QAAI,QAAQ,MAAM;AAChB,aAAO,MAAM,IAAI;AACjB,aAAO,MAAM,QAAQ,IAAI;AAAA,IAC3B;AACA,WAAO,MAAM,KAAK;AAClB,eAAW,QAAQ,QAAQ,WAAW;AACtC,WAAO,MAAM,GAAG;AAAA,EAClB;AACF;AAEO,SAAS,oBAAoB,QAAwB,OAAwC;AAClG,SAAO,CAAC,WAAW;AACjB,eAAW,QAAQ,MAAM;AACzB,WAAO,MAAM,KAAK;AAClB,eAAW,QAAQ,KAAK;AACxB,WAAO,MAAM,GAAG;AAAA,EAClB;AACF;AAEO,SAAS,YAAY,SAIR;AAClB,SAAO,CAAC,WAAW;AACjB,UAAM,iBAAiB,QAAQ;AAC/B,WAAO,MAAM,MAAM;AACnB,eAAW,QAAQ,QAAQ,SAAS;AACpC,WAAO,MAAM,IAAI;AACjB,WAAO,MAAM,MAAM;AACjB,sBAAgB,QAAQ,QAAQ,cAAc;AAAA,IAChD,CAAC;AAED,QAAI,kBAAkB,eAAe,SAAS,GAAG;AAC/C,aAAO,MAAM,QAAQ;AACrB,aAAO,MAAM,MAAM;AACjB,wBAAgB,QAAQ,cAAc;AAAA,MACxC,CAAC;AAAA,IACH;AAAA,EACF;AACF;AAEO,SAAS,eAAe,SAKX;AAClB,SAAO,CAAC,WAAW;AACjB,WAAO,MAAM,OAAO;AACpB,WAAO,MAAM,QAAQ,mBAAmB,OAAO;AAC/C,WAAO,MAAM,GAAG;AAChB,WAAO,MAAM,QAAQ,QAAQ;AAC7B,WAAO,MAAM,MAAM;AACnB,eAAW,QAAQ,QAAQ,QAAQ;AACnC,WAAO,MAAM,IAAI;AACjB,WAAO,MAAM,MAAM;AACjB,sBAAgB,QAAQ,QAAQ,UAAU;AAAA,IAC5C,CAAC;AAAA,EACH;AACF;AAEO,SAAS,WAAW,OAAuC;AAChE,SAAO,WAAW,WAAW,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC;AACzD;AAEO,SAAS,cAAc,OAAuC;AACnE,SAAO,WAAW,WAAW,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC;AAC5D;AAEO,SAAS,kBAAkB,OAAuC;AACvE,SAAO,WAAW,WAAW,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC;AAChE;AAEO,SAAS,cAAc,SAIX;AACjB,SAAO,CAAC,WAAW;AACjB,QAAI,QAAQ,OAAO;AACjB,aAAO,MAAM,QAAQ;AAAA,IACvB;AACA,WAAO,MAAM,GAAG;AAChB,wBAAoB,QAAQ,QAAQ,cAAc,CAAC,GAAG,CAAC,eAAe,cAAc,cAAc,MAAM,SAAS,CAAC;AAClH,WAAO,MAAM,OAAO;AACpB,YAAQ,KAAK,MAAM;AAAA,EACrB;AACF;AAEO,SAAS,MAAM,MAAsC;AAC1D,SAAO,CAAC,WAAW;AACjB,WAAO,MAAM,MAAM;AACjB,WAAK,MAAM;AAAA,IACb,CAAC;AAAA,EACH;AACF;AAEO,SAAS,oBAAoB,YAA4C;AAC9E,SAAO,CAAC,WAAW;AACjB,eAAW,QAAQ,UAAU;AAC7B,WAAO,MAAM,GAAG;AAAA,EAClB;AACF;",
4
+ "sourcesContent": ["import type { CodeBlockWriter, WriterFunction } from 'ts-morph'\n\nexport type GeneratedValue =\n | string\n | number\n | boolean\n | null\n | undefined\n | WriterFunction\n\nexport interface ObjectPropertyWriter {\n kind?: 'property'\n name: string\n value: GeneratedValue\n}\n\nexport interface SpreadPropertyWriter {\n kind: 'spread'\n value: GeneratedValue\n}\n\nexport type GeneratedObjectEntry = ObjectPropertyWriter | SpreadPropertyWriter\nexport type StatementWriter = WriterFunction\n\nexport function writeLiteral(writer: CodeBlockWriter, value: Exclude<GeneratedValue, WriterFunction>): void {\n if (value === undefined) {\n writer.write('undefined')\n return\n }\n\n if (value === null) {\n writer.write('null')\n return\n }\n\n if (typeof value === 'string') {\n writer.write(JSON.stringify(value))\n return\n }\n\n writer.write(String(value))\n}\n\nexport function writeValue(writer: CodeBlockWriter, value: GeneratedValue): void {\n if (typeof value === 'function') {\n value(writer)\n return\n }\n\n writeLiteral(writer, value)\n}\n\nexport function writeCommaSeparated<T>(\n writer: CodeBlockWriter,\n items: readonly T[],\n writeItem: (writer: CodeBlockWriter, item: T, index: number) => void,\n): void {\n items.forEach((item, index) => {\n if (index > 0) {\n writer.write(', ')\n }\n writeItem(writer, item, index)\n })\n}\n\nexport function writeArrayLiteral<T>(\n writer: CodeBlockWriter,\n items: readonly T[],\n writeItem: (writer: CodeBlockWriter, item: T, index: number) => void,\n): void {\n if (items.length === 0) {\n writer.write('[]')\n return\n }\n\n writer.write('[')\n writer.newLine()\n writer.indent(() => {\n items.forEach((item, index) => {\n writeItem(writer, item, index)\n if (index < items.length - 1) {\n writer.write(',')\n }\n writer.newLine()\n })\n })\n writer.write(']')\n}\n\nexport function arrayLiteral<T>(\n items: readonly T[],\n writeItem: (writer: CodeBlockWriter, item: T, index: number) => void,\n): WriterFunction {\n return (writer) => {\n writeArrayLiteral(writer, items, writeItem)\n }\n}\n\nexport function writeObjectLiteral(\n writer: CodeBlockWriter,\n entries: readonly GeneratedObjectEntry[],\n): void {\n if (entries.length === 0) {\n writer.write('{}')\n return\n }\n\n writer.write('{')\n writer.newLine()\n writer.indent(() => {\n entries.forEach((entry, index) => {\n if (entry.kind === 'spread') {\n writer.write('...')\n writeValue(writer, entry.value)\n } else {\n writer.write(entry.name)\n writer.write(': ')\n writeValue(writer, entry.value)\n }\n\n if (index < entries.length - 1) {\n writer.write(',')\n }\n writer.newLine()\n })\n })\n writer.write('}')\n}\n\nexport function objectLiteral(entries: readonly GeneratedObjectEntry[]): WriterFunction {\n return (writer) => {\n writeObjectLiteral(writer, entries)\n }\n}\n\nexport function parenthesized(value: GeneratedValue): WriterFunction {\n return (writer) => {\n writer.write('(')\n writeValue(writer, value)\n writer.write(')')\n }\n}\n\nexport function callExpression(callee: GeneratedValue, args: readonly GeneratedValue[]): WriterFunction {\n return (writer) => {\n writeValue(writer, callee)\n writer.write('(')\n writeCommaSeparated(writer, args, writeValue)\n writer.write(')')\n }\n}\n\nexport function importExpression(moduleSpecifier: GeneratedValue): WriterFunction {\n return (writer) => {\n writer.write('import(')\n writeValue(writer, moduleSpecifier)\n writer.write(')')\n }\n}\n\nexport function awaitExpression(value: GeneratedValue): WriterFunction {\n return (writer) => {\n writer.write('await ')\n writeValue(writer, value)\n }\n}\n\nexport function identifier(name: string): WriterFunction {\n return (writer) => {\n writer.write(name)\n }\n}\n\nexport function propertyAccess(target: GeneratedValue, property: string): WriterFunction {\n return (writer) => {\n writeValue(writer, target)\n writer.write('.')\n writer.write(property)\n }\n}\n\nexport function prefixExpression(operator: string, value: GeneratedValue): WriterFunction {\n return (writer) => {\n writer.write(operator)\n writeValue(writer, value)\n }\n}\n\nexport function optionalPropertyAccess(target: GeneratedValue, property: string): WriterFunction {\n return (writer) => {\n writeValue(writer, target)\n writer.write('?.')\n writer.write(property)\n }\n}\n\nexport function elementAccess(target: GeneratedValue, index: GeneratedValue): WriterFunction {\n return (writer) => {\n writeValue(writer, target)\n writer.write('[')\n writeValue(writer, index)\n writer.write(']')\n }\n}\n\nexport function spreadExpression(value: GeneratedValue): WriterFunction {\n return (writer) => {\n writer.write('...')\n writeValue(writer, value)\n }\n}\n\nexport function asExpression(value: GeneratedValue, type: string): WriterFunction {\n return (writer) => {\n writer.write('(')\n writeValue(writer, value)\n writer.write(' as ')\n writer.write(type)\n writer.write(')')\n }\n}\n\nexport function nonNullAssertion(value: GeneratedValue): WriterFunction {\n return (writer) => {\n writeValue(writer, value)\n writer.write('!')\n }\n}\n\nexport function binaryExpression(left: GeneratedValue, operator: string, right: GeneratedValue): WriterFunction {\n return (writer) => {\n writeValue(writer, left)\n writer.write(` ${operator} `)\n writeValue(writer, right)\n }\n}\n\nexport function conditionalExpression(\n condition: GeneratedValue,\n whenTrue: GeneratedValue,\n whenFalse: GeneratedValue,\n): WriterFunction {\n return (writer) => {\n writeValue(writer, condition)\n writer.write(' ? ')\n writeValue(writer, whenTrue)\n writer.write(' : ')\n writeValue(writer, whenFalse)\n }\n}\n\nexport function logicalAnd(expressions: readonly GeneratedValue[]): WriterFunction {\n return (writer) => {\n expressions.forEach((expression, index) => {\n if (index > 0) {\n writer.write(' && ')\n }\n writeValue(writer, expression)\n })\n }\n}\n\nexport function logicalOr(expressions: readonly GeneratedValue[]): WriterFunction {\n return (writer) => {\n expressions.forEach((expression, index) => {\n if (index > 0) {\n writer.write(' || ')\n }\n writeValue(writer, expression)\n })\n }\n}\n\nexport function nullishCoalesce(expressions: readonly GeneratedValue[]): WriterFunction {\n return (writer) => {\n expressions.forEach((expression, index) => {\n if (index > 0) {\n writer.write(' ?? ')\n }\n writeValue(writer, expression)\n })\n }\n}\n\nexport function methodCall(target: GeneratedValue, method: string, args: readonly GeneratedValue[]): WriterFunction {\n return callExpression(propertyAccess(target, method), args)\n}\n\nexport function newExpression(callee: GeneratedValue, args: readonly GeneratedValue[]): WriterFunction {\n return (writer) => {\n writer.write('new ')\n writeValue(writer, callee)\n writer.write('(')\n writeCommaSeparated(writer, args, writeValue)\n writer.write(')')\n }\n}\n\nexport function invokeImmediately(expression: GeneratedValue): WriterFunction {\n return callExpression(parenthesized(expression), [])\n}\n\nexport function templateLiteral(parts: readonly GeneratedValue[]): WriterFunction {\n return (writer) => {\n writer.write('`')\n parts.forEach((part) => {\n if (typeof part === 'string') {\n writer.write(part.replaceAll('\\\\', '\\\\\\\\').replaceAll('`', '\\\\`').replaceAll('${', '\\\\${'))\n return\n }\n\n writer.write('${')\n writeValue(writer, part)\n writer.write('}')\n })\n writer.write('`')\n }\n}\n\nexport function writeStatements(writer: CodeBlockWriter, statements: readonly StatementWriter[]): void {\n statements.forEach((statement, index) => {\n statement(writer)\n if (index < statements.length - 1) {\n writer.newLine()\n }\n })\n}\n\nexport function returnStatement(expression?: GeneratedValue): StatementWriter {\n return (writer) => {\n writer.write('return')\n if (expression !== undefined) {\n writer.write(' ')\n writeValue(writer, expression)\n }\n writer.write(';')\n }\n}\n\nexport function variableStatement(options: {\n declarationKind?: 'const' | 'let' | 'var'\n name: string\n initializer: GeneratedValue\n type?: string\n}): StatementWriter {\n return (writer) => {\n writer.write(options.declarationKind ?? 'const')\n writer.write(' ')\n writer.write(options.name)\n if (options.type) {\n writer.write(': ')\n writer.write(options.type)\n }\n writer.write(' = ')\n writeValue(writer, options.initializer)\n writer.write(';')\n }\n}\n\nexport function assignmentStatement(target: GeneratedValue, value: GeneratedValue): StatementWriter {\n return (writer) => {\n writeValue(writer, target)\n writer.write(' = ')\n writeValue(writer, value)\n writer.write(';')\n }\n}\n\nexport function ifStatement(options: {\n condition: GeneratedValue\n thenStatements: readonly StatementWriter[]\n elseStatements?: readonly StatementWriter[]\n}): StatementWriter {\n return (writer) => {\n const elseStatements = options.elseStatements\n writer.write('if (')\n writeValue(writer, options.condition)\n writer.write(') ')\n writer.block(() => {\n writeStatements(writer, options.thenStatements)\n })\n\n if (elseStatements && elseStatements.length > 0) {\n writer.write(' else ')\n writer.block(() => {\n writeStatements(writer, elseStatements)\n })\n }\n }\n}\n\nexport function forOfStatement(options: {\n variable: string\n iterable: GeneratedValue\n statements: readonly StatementWriter[]\n declarationKind?: 'const' | 'let' | 'var'\n}): StatementWriter {\n return (writer) => {\n writer.write('for (')\n writer.write(options.declarationKind ?? 'const')\n writer.write(' ')\n writer.write(options.variable)\n writer.write(' of ')\n writeValue(writer, options.iterable)\n writer.write(') ')\n writer.block(() => {\n writeStatements(writer, options.statements)\n })\n }\n}\n\nexport function objectKeys(value: GeneratedValue): WriterFunction {\n return methodCall(identifier('Object'), 'keys', [value])\n}\n\nexport function objectEntries(value: GeneratedValue): WriterFunction {\n return methodCall(identifier('Object'), 'entries', [value])\n}\n\nexport function objectFromEntries(value: GeneratedValue): WriterFunction {\n return methodCall(identifier('Object'), 'fromEntries', [value])\n}\n\nexport function arrowFunction(options: {\n async?: boolean\n parameters?: string[]\n body: WriterFunction\n}): WriterFunction {\n return (writer) => {\n if (options.async) {\n writer.write('async ')\n }\n writer.write('(')\n writeCommaSeparated(writer, options.parameters ?? [], (currentWriter, parameter) => currentWriter.write(parameter))\n writer.write(') => ')\n options.body(writer)\n }\n}\n\nexport function block(body: WriterFunction): WriterFunction {\n return (writer) => {\n writer.block(() => {\n body(writer)\n })\n }\n}\n\nexport function expressionStatement(expression: GeneratedValue): WriterFunction {\n return (writer) => {\n writeValue(writer, expression)\n writer.write(';')\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }