@open-mercato/cli 0.7.0 → 0.7.1-develop.7103.1.41ff100d93

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 (184) hide show
  1. package/.turbo/turbo-build.log +7 -1
  2. package/dist/agentic/guides/module-facts.json +5509 -599
  3. package/dist/agentic/guides/module-facts.v2.json +5595 -599
  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/di-registrations-rich.md +11 -0
  7. package/dist/agentic/guides/modules/api_keys/di-service-tokens.md +11 -0
  8. package/dist/agentic/guides/modules/api_keys/exact-override-targets.md +1 -0
  9. package/dist/agentic/guides/modules/api_keys/index.md +4 -2
  10. package/dist/agentic/guides/modules/attachments/di-registrations-rich.md +6 -5
  11. package/dist/agentic/guides/modules/attachments/di-service-tokens.md +5 -4
  12. package/dist/agentic/guides/modules/attachments/exact-override-targets.md +6 -5
  13. package/dist/agentic/guides/modules/attachments/index.md +2 -2
  14. package/dist/agentic/guides/modules/audit_logs/index.md +1 -1
  15. package/dist/agentic/guides/modules/auth/di-registrations-rich.md +3 -2
  16. package/dist/agentic/guides/modules/auth/di-service-tokens.md +3 -2
  17. package/dist/agentic/guides/modules/auth/exact-override-targets.md +3 -2
  18. package/dist/agentic/guides/modules/auth/index.md +1 -1
  19. package/dist/agentic/guides/modules/business_rules/index.md +1 -1
  20. package/dist/agentic/guides/modules/catalog/incoming-installed-contributions.md +3 -0
  21. package/dist/agentic/guides/modules/catalog/index.md +2 -2
  22. package/dist/agentic/guides/modules/channel_apns/index.md +1 -1
  23. package/dist/agentic/guides/modules/channel_discord/acl-features.md +13 -0
  24. package/dist/agentic/guides/modules/channel_discord/ai-agents.md +11 -0
  25. package/dist/agentic/guides/modules/channel_discord/backend-pages.md +11 -0
  26. package/dist/agentic/guides/modules/channel_discord/cli-commands.md +13 -0
  27. package/dist/agentic/guides/modules/channel_discord/contribution-resolutions.md +14 -0
  28. package/dist/agentic/guides/modules/channel_discord/di-registrations-rich.md +12 -0
  29. package/dist/agentic/guides/modules/channel_discord/exact-override-targets.md +26 -0
  30. package/dist/agentic/guides/modules/channel_discord/index.md +22 -0
  31. package/dist/agentic/guides/modules/channel_discord/owned-contract-module-metadata.md +11 -0
  32. package/dist/agentic/guides/modules/channel_discord/setup.md +11 -0
  33. package/dist/agentic/guides/modules/channel_discord/umes-contributions.md +14 -0
  34. package/dist/agentic/guides/modules/channel_discord/workers.md +12 -0
  35. package/dist/agentic/guides/modules/channel_expo/index.md +1 -1
  36. package/dist/agentic/guides/modules/channel_fcm/index.md +1 -1
  37. package/dist/agentic/guides/modules/channel_gmail/index.md +1 -1
  38. package/dist/agentic/guides/modules/channel_imap/index.md +1 -1
  39. package/dist/agentic/guides/modules/checkout/index.md +1 -1
  40. package/dist/agentic/guides/modules/communication_channels/di-registrations-rich.md +9 -8
  41. package/dist/agentic/guides/modules/communication_channels/exact-override-targets.md +9 -8
  42. package/dist/agentic/guides/modules/communication_channels/incoming-installed-contributions.md +2 -0
  43. package/dist/agentic/guides/modules/communication_channels/index.md +3 -3
  44. package/dist/agentic/guides/modules/configs/index.md +1 -1
  45. package/dist/agentic/guides/modules/content/index.md +1 -1
  46. package/dist/agentic/guides/modules/currencies/index.md +1 -1
  47. package/dist/agentic/guides/modules/customer_accounts/index.md +1 -1
  48. package/dist/agentic/guides/modules/customers/active-extension-bindings.md +6 -3
  49. package/dist/agentic/guides/modules/customers/contribution-resolutions.md +1 -0
  50. package/dist/agentic/guides/modules/customers/events.md +2 -1
  51. package/dist/agentic/guides/modules/customers/incoming-installed-contributions.md +7 -0
  52. package/dist/agentic/guides/modules/customers/index.md +4 -4
  53. package/dist/agentic/guides/modules/customers/umes-contributions.md +1 -0
  54. package/dist/agentic/guides/modules/customers/umes-hosts.md +1 -0
  55. package/dist/agentic/guides/modules/dashboards/index.md +1 -1
  56. package/dist/agentic/guides/modules/data_sync/exact-override-targets.md +2 -2
  57. package/dist/agentic/guides/modules/data_sync/index.md +1 -1
  58. package/dist/agentic/guides/modules/data_sync/workers.md +2 -2
  59. package/dist/agentic/guides/modules/design_system/index.md +1 -1
  60. package/dist/agentic/guides/modules/devices/index.md +1 -1
  61. package/dist/agentic/guides/modules/dictionaries/index.md +1 -1
  62. package/dist/agentic/guides/modules/directory/di-registrations-rich.md +12 -0
  63. package/dist/agentic/guides/modules/directory/di-service-tokens.md +12 -0
  64. package/dist/agentic/guides/modules/directory/exact-override-targets.md +2 -0
  65. package/dist/agentic/guides/modules/directory/index.md +5 -3
  66. package/dist/agentic/guides/modules/documents/acl-features.md +17 -0
  67. package/dist/agentic/guides/modules/documents/backend-pages.md +13 -0
  68. package/dist/agentic/guides/modules/documents/contribution-resolutions.md +27 -0
  69. package/dist/agentic/guides/modules/documents/di-registrations-rich.md +21 -0
  70. package/dist/agentic/guides/modules/documents/domain-commands.md +37 -0
  71. package/dist/agentic/guides/modules/documents/encryption.md +11 -0
  72. package/dist/agentic/guides/modules/documents/entities.md +21 -0
  73. package/dist/agentic/guides/modules/documents/events.md +25 -0
  74. package/dist/agentic/guides/modules/documents/exact-override-targets.md +39 -0
  75. package/dist/agentic/guides/modules/documents/index.md +25 -0
  76. package/dist/agentic/guides/modules/documents/notifications.md +13 -0
  77. package/dist/agentic/guides/modules/documents/owned-contract-module-metadata.md +11 -0
  78. package/dist/agentic/guides/modules/documents/setup.md +11 -0
  79. package/dist/agentic/guides/modules/documents/umes-contributions.md +27 -0
  80. package/dist/agentic/guides/modules/documents/umes-hosts.md +36 -0
  81. package/dist/agentic/guides/modules/entities/index.md +1 -1
  82. package/dist/agentic/guides/modules/eudr/index.md +1 -1
  83. package/dist/agentic/guides/modules/events/index.md +1 -1
  84. package/dist/agentic/guides/modules/feature_toggles/index.md +1 -1
  85. package/dist/agentic/guides/modules/gateway_stripe/exact-override-targets.md +1 -1
  86. package/dist/agentic/guides/modules/gateway_stripe/index.md +1 -1
  87. package/dist/agentic/guides/modules/gateway_stripe/workers.md +1 -1
  88. package/dist/agentic/guides/modules/generators/index.md +1 -1
  89. package/dist/agentic/guides/modules/inbox_ops/index.md +1 -1
  90. package/dist/agentic/guides/modules/integrations/index.md +1 -1
  91. package/dist/agentic/guides/modules/messages/index.md +1 -1
  92. package/dist/agentic/guides/modules/notifications/index.md +1 -1
  93. package/dist/agentic/guides/modules/onboarding/index.md +1 -1
  94. package/dist/agentic/guides/modules/payment_gateways/index.md +1 -1
  95. package/dist/agentic/guides/modules/perspectives/index.md +1 -1
  96. package/dist/agentic/guides/modules/planner/index.md +1 -1
  97. package/dist/agentic/guides/modules/portal/index.md +1 -1
  98. package/dist/agentic/guides/modules/progress/index.md +1 -1
  99. package/dist/agentic/guides/modules/push_notifications/index.md +1 -1
  100. package/dist/agentic/guides/modules/query_index/index.md +1 -1
  101. package/dist/agentic/guides/modules/record_locks/index.md +1 -1
  102. package/dist/agentic/guides/modules/resources/index.md +1 -1
  103. package/dist/agentic/guides/modules/sales/active-extension-bindings.md +1 -0
  104. package/dist/agentic/guides/modules/sales/contribution-resolutions.md +1 -0
  105. package/dist/agentic/guides/modules/sales/exact-override-targets.md +5 -4
  106. package/dist/agentic/guides/modules/sales/host-extension-points.md +1 -1
  107. package/dist/agentic/guides/modules/sales/incoming-installed-contributions.md +2 -0
  108. package/dist/agentic/guides/modules/sales/index.md +3 -3
  109. package/dist/agentic/guides/modules/sales/setup.md +1 -1
  110. package/dist/agentic/guides/modules/sales/umes-contributions.md +1 -0
  111. package/dist/agentic/guides/modules/sales/umes-diagnostics.md +1 -0
  112. package/dist/agentic/guides/modules/sales/umes-hosts.md +9 -0
  113. package/dist/agentic/guides/modules/scheduler/cli-commands.md +1 -0
  114. package/dist/agentic/guides/modules/scheduler/exact-override-targets.md +3 -1
  115. package/dist/agentic/guides/modules/scheduler/index.md +2 -2
  116. package/dist/agentic/guides/modules/scheduler/workers.md +2 -1
  117. package/dist/agentic/guides/modules/search/index.md +1 -1
  118. package/dist/agentic/guides/modules/security/index.md +1 -1
  119. package/dist/agentic/guides/modules/security/owned-contract-module-metadata.md +1 -1
  120. package/dist/agentic/guides/modules/shipping_carriers/index.md +1 -1
  121. package/dist/agentic/guides/modules/sso/index.md +1 -1
  122. package/dist/agentic/guides/modules/staff/index.md +1 -1
  123. package/dist/agentic/guides/modules/storage_s3/index.md +1 -1
  124. package/dist/agentic/guides/modules/sync_akeneo/index.md +1 -1
  125. package/dist/agentic/guides/modules/sync_excel/index.md +1 -1
  126. package/dist/agentic/guides/modules/system_status_overlays/index.md +1 -1
  127. package/dist/agentic/guides/modules/translations/index.md +1 -1
  128. package/dist/agentic/guides/modules/warranty_claims/index.md +1 -1
  129. package/dist/agentic/guides/modules/webhooks/index.md +1 -1
  130. package/dist/agentic/guides/modules/wms/index.md +1 -1
  131. package/dist/agentic/guides/modules/workflows/index.md +1 -1
  132. package/dist/agentic/guides/reference-module-facts.json +2 -2
  133. package/dist/agentic/guides/reference-modules/example/index.md +1 -1
  134. package/dist/agentic/guides/upstream/manifest.json +1 -1
  135. package/dist/agentic/shared/AGENTS.md.template +3 -3
  136. package/dist/agentic/shared/ai/harness/README.md +2 -2
  137. package/dist/agentic/shared/ai/harness/RELEASE.md +8 -6
  138. package/dist/agentic/shared/ai/harness/cases.json +83 -0
  139. package/dist/agentic/shared/ai/harness/cases.schema.json +4 -4
  140. package/dist/agentic/shared/ai/harness/validators.json +1 -1
  141. package/dist/agentic/shared/scripts/run-agent-harness-release.mjs +37 -11
  142. package/dist/lib/generators/ast/index.js +4 -1
  143. package/dist/lib/generators/ast/index.js.map +2 -2
  144. package/dist/lib/generators/ast/source-file.js +8 -1
  145. package/dist/lib/generators/ast/source-file.js.map +2 -2
  146. package/dist/lib/generators/ast/writers.js +9 -1
  147. package/dist/lib/generators/ast/writers.js.map +2 -2
  148. package/dist/lib/generators/module-registry.js +424 -189
  149. package/dist/lib/generators/module-registry.js.map +2 -2
  150. package/dist/lib/generators/route-manifest-shards.js +4 -1
  151. package/dist/lib/generators/route-manifest-shards.js.map +2 -2
  152. package/dist/lib/spawn.js +3 -2
  153. package/dist/lib/spawn.js.map +2 -2
  154. package/dist/lib/testing/integration.js +162 -24
  155. package/dist/lib/testing/integration.js.map +2 -2
  156. package/dist/mercato.js +14 -0
  157. package/dist/mercato.js.map +2 -2
  158. package/package.json +8 -7
  159. package/src/__tests__/resolve-queue-abandon-hook.test.ts +39 -0
  160. package/src/lib/__tests__/spawn.test.ts +23 -0
  161. package/src/lib/generators/__tests__/__snapshots__/bootstrap-registrations.test.ts.snap +14 -0
  162. package/src/lib/generators/__tests__/__snapshots__/command-loaders.test.ts.snap +23 -0
  163. package/src/lib/generators/__tests__/ast-writers-escaping.test.ts +64 -0
  164. package/src/lib/generators/__tests__/bootstrap-registrations.test.ts +176 -0
  165. package/src/lib/generators/__tests__/command-loaders.test.ts +239 -0
  166. package/src/lib/generators/__tests__/generated-registry-imports.test.ts +128 -0
  167. package/src/lib/generators/__tests__/metadata-extraction.test.ts +44 -0
  168. package/src/lib/generators/__tests__/module-facts.bc-guard.test.ts +32 -8
  169. package/src/lib/generators/__tests__/module-facts.customers.fixture.test.ts +4 -1
  170. package/src/lib/generators/__tests__/module-facts.extension-hosts.test.ts +1 -1
  171. package/src/lib/generators/__tests__/module-subset.test.ts +96 -72
  172. package/src/lib/generators/__tests__/output-snapshots.test.ts +1 -1
  173. package/src/lib/generators/__tests__/registry-variant-parity.test.ts +258 -0
  174. package/src/lib/generators/__tests__/route-manifest-shards.test.ts +15 -0
  175. package/src/lib/generators/__tests__/structural-contracts.test.ts +7 -3
  176. package/src/lib/generators/ast/index.ts +2 -1
  177. package/src/lib/generators/ast/source-file.ts +13 -0
  178. package/src/lib/generators/ast/writers.ts +26 -1
  179. package/src/lib/generators/module-registry.ts +534 -227
  180. package/src/lib/generators/route-manifest-shards.ts +8 -1
  181. package/src/lib/spawn.ts +5 -4
  182. package/src/lib/testing/__tests__/integration.test.ts +435 -0
  183. package/src/lib/testing/integration.ts +254 -32
  184. package/src/mercato.ts +27 -0
@@ -1,3 +1,9 @@
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
+ }
1
7
  function writeLiteral(writer, value) {
2
8
  if (value === void 0) {
3
9
  writer.write("undefined");
@@ -8,7 +14,7 @@ function writeLiteral(writer, value) {
8
14
  return;
9
15
  }
10
16
  if (typeof value === "string") {
11
- writer.write(JSON.stringify(value));
17
+ writer.write(stringLiteral(value));
12
18
  return;
13
19
  }
14
20
  writer.write(String(value));
@@ -354,6 +360,7 @@ export {
354
360
  callExpression,
355
361
  conditionalExpression,
356
362
  elementAccess,
363
+ escapeGeneratedJsonLiteral,
357
364
  expressionStatement,
358
365
  forOfStatement,
359
366
  identifier,
@@ -376,6 +383,7 @@ export {
376
383
  propertyAccess,
377
384
  returnStatement,
378
385
  spreadExpression,
386
+ stringLiteral,
379
387
  templateLiteral,
380
388
  variableStatement,
381
389
  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\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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",
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": "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",
6
6
  "names": []
7
7
  }