@softarc/native-federation-orchestrator 4.2.2 → 4.3.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 (156) hide show
  1. package/fesm2022/@softarc/native-federation-orchestrator.mjs +884 -917
  2. package/fesm2022/@softarc/native-federation-orchestrator.mjs.map +4 -4
  3. package/fesm2022/audit.mjs +2 -2
  4. package/fesm2022/audit.mjs.map +2 -2
  5. package/fesm2022/node.mjs +424 -444
  6. package/fesm2022/node.mjs.map +4 -4
  7. package/fesm2022/options.mjs +13 -13
  8. package/fesm2022/options.mjs.map +3 -3
  9. package/fesm2022/registry.mjs +2 -2
  10. package/fesm2022/registry.mjs.map +3 -3
  11. package/fesm2022/sdk.mjs +2 -2
  12. package/fesm2022/sdk.mjs.map +2 -2
  13. package/init-registry.mjs +1 -1
  14. package/node-loader/loader.mjs +1 -1
  15. package/node-loader/loader.mjs.map +1 -1
  16. package/package.json +2 -5
  17. package/quickstart.mjs +13 -13
  18. package/types/lib/audit/externals-audit.d.ts +4 -0
  19. package/types/lib/{2.app/driver-ports/audit → audit}/for-auditing-externals.port.d.ts +1 -1
  20. package/types/lib/audit.index.d.ts +2 -2
  21. package/types/lib/{2.app → core/2.app}/driver-ports/init/drivers.contract.d.ts +6 -0
  22. package/types/lib/core/2.app/driver-ports/init/flow.contract.d.ts +14 -0
  23. package/types/lib/{2.app/driver-ports/dynamic-init → core/2.app/driver-ports/init}/for-getting-remote-entry.port.d.ts +1 -1
  24. package/types/lib/{2.app → core/2.app}/driver-ports/init/index.d.ts +3 -0
  25. package/types/lib/{2.app → core/2.app}/driving-ports/for-remote-info-storage.port.d.ts +1 -1
  26. package/types/lib/{2.app → core/2.app}/driving-ports/for-scoped-externals-storage.port.d.ts +1 -1
  27. package/types/lib/{2.app → core/2.app}/driving-ports/for-shared-chunks-storage.port.d.ts +1 -1
  28. package/types/lib/{2.app → core/2.app}/driving-ports/for-shared-externals-storage.port.d.ts +1 -1
  29. package/types/lib/core/2.app/flows/init-remote-entry.flow.d.ts +4 -0
  30. package/types/lib/core/2.app/flows/init.flow.d.ts +4 -0
  31. package/types/lib/core/2.app/steps/commit-changes.d.ts +4 -0
  32. package/types/lib/core/2.app/steps/convert-to-import-map.d.ts +4 -0
  33. package/types/lib/core/2.app/steps/determine-shared-externals.d.ts +5 -0
  34. package/types/lib/core/2.app/steps/expose-module-loader.d.ts +4 -0
  35. package/types/lib/core/2.app/steps/generate-import-map.d.ts +5 -0
  36. package/types/lib/core/2.app/steps/get-remote-entries.d.ts +6 -0
  37. package/types/lib/core/2.app/steps/get-remote-entry.d.ts +5 -0
  38. package/types/lib/core/2.app/steps/process-remote-entries.d.ts +5 -0
  39. package/types/lib/core/2.app/steps/store-remote-entry.d.ts +23 -0
  40. package/types/lib/core/2.app/steps/update-cache.d.ts +5 -0
  41. package/types/lib/{3.adapters → core/3.adapters}/browser/sse-handler.d.ts +1 -1
  42. package/types/lib/core/5.di/federation-result.factory.d.ts +12 -0
  43. package/types/lib/core/5.di/init.factory.d.ts +12 -0
  44. package/types/lib/{init-federation.contract.d.ts → core/init-federation.contract.d.ts} +1 -1
  45. package/types/lib/index.d.ts +10 -8
  46. package/types/lib/{3.adapters/node → node/adapters}/fs-manifest-provider.d.ts +1 -1
  47. package/types/lib/{3.adapters/node → node/adapters}/fs-remote-entry-provider.d.ts +1 -1
  48. package/types/lib/{3.adapters/node → node/adapters}/node-loader.client.d.ts +1 -1
  49. package/types/lib/node/adapters/noop-sse.d.ts +3 -0
  50. package/types/lib/{init-federation.node.d.ts → node/init-federation.node.d.ts} +5 -5
  51. package/types/lib/{4.config/import-map → node}/resolve-host-instances.d.ts +3 -3
  52. package/types/lib/{4.config/import-map → node}/use-node.d.ts +2 -2
  53. package/types/lib/{utils/node → node/utils}/to-url.d.ts +1 -1
  54. package/types/lib/node.index.d.ts +5 -5
  55. package/types/lib/options.index.d.ts +5 -5
  56. package/types/lib/registry/for-managing-events.port.d.ts +2 -0
  57. package/types/lib/registry/setup-registry.d.ts +3 -0
  58. package/types/lib/registry.index.d.ts +5 -4
  59. package/types/lib/sdk.index.d.ts +4 -5
  60. package/types/lib/testing/handlers/log.handler.d.ts +3 -0
  61. package/types/lib/utils/clone-entry.d.ts +1 -1
  62. package/types/{init-registry.d.ts → scripts/init-registry.d.ts} +1 -1
  63. package/types/lib/1.domain/registry/index.d.ts +0 -2
  64. package/types/lib/2.app/driver-ports/audit/index.d.ts +0 -1
  65. package/types/lib/2.app/driver-ports/dynamic-init/drivers.contract.d.ts +0 -13
  66. package/types/lib/2.app/driver-ports/dynamic-init/flow.contract.d.ts +0 -8
  67. package/types/lib/2.app/driver-ports/dynamic-init/index.d.ts +0 -5
  68. package/types/lib/2.app/driver-ports/init/flow.contract.d.ts +0 -6
  69. package/types/lib/2.app/driver-ports/registry/for-managing-events.port.d.ts +0 -2
  70. package/types/lib/2.app/flows/audit/externals-audit.d.ts +0 -4
  71. package/types/lib/2.app/flows/dynamic-init/convert-to-import-map.d.ts +0 -4
  72. package/types/lib/2.app/flows/dynamic-init/get-remote-entry.d.ts +0 -5
  73. package/types/lib/2.app/flows/dynamic-init/update-cache.d.ts +0 -5
  74. package/types/lib/2.app/flows/init/commit-changes.d.ts +0 -4
  75. package/types/lib/2.app/flows/init/determine-shared-externals.d.ts +0 -5
  76. package/types/lib/2.app/flows/init/expose-module-loader.d.ts +0 -4
  77. package/types/lib/2.app/flows/init/generate-import-map.d.ts +0 -5
  78. package/types/lib/2.app/flows/init/get-remote-entries.d.ts +0 -6
  79. package/types/lib/2.app/flows/init/process-remote-entries.d.ts +0 -5
  80. package/types/lib/2.app/flows/registry/setup-registry.d.ts +0 -3
  81. package/types/lib/3.adapters/node/noop-sse.d.ts +0 -3
  82. package/types/lib/5.di/flows/dynamic-init.factory.d.ts +0 -14
  83. package/types/lib/5.di/flows/init.factory.d.ts +0 -14
  84. package/types/lib/6.mocks/handlers/log.handler.d.ts +0 -2
  85. /package/types/lib/{1.domain → core/1.domain}/externals/chunks.contract.d.ts +0 -0
  86. /package/types/lib/{1.domain → core/1.domain}/externals/external.contract.d.ts +0 -0
  87. /package/types/lib/{1.domain → core/1.domain}/externals/version.contract.d.ts +0 -0
  88. /package/types/lib/{1.domain → core/1.domain}/import-map/import-map.contract.d.ts +0 -0
  89. /package/types/lib/{1.domain → core/1.domain}/index.d.ts +0 -0
  90. /package/types/lib/{1.domain → core/1.domain}/remote/remote-info.contract.d.ts +0 -0
  91. /package/types/lib/{1.domain → core/1.domain}/remote/remote-module.contract.d.ts +0 -0
  92. /package/types/lib/{1.domain → core/1.domain}/remote-entry/manifest.contract.d.ts +0 -0
  93. /package/types/lib/{1.domain → core/1.domain}/remote-entry/remote-entry.contract.d.ts +0 -0
  94. /package/types/lib/{2.app → core/2.app}/config/config.contract.d.ts +0 -0
  95. /package/types/lib/{2.app → core/2.app}/config/host.contract.d.ts +0 -0
  96. /package/types/lib/{2.app → core/2.app}/config/import-map.contract.d.ts +0 -0
  97. /package/types/lib/{2.app → core/2.app}/config/index.d.ts +0 -0
  98. /package/types/lib/{2.app → core/2.app}/config/log.contract.d.ts +0 -0
  99. /package/types/lib/{2.app → core/2.app}/config/mode.contract.d.ts +0 -0
  100. /package/types/lib/{2.app → core/2.app}/config/storage.contract.d.ts +0 -0
  101. /package/types/lib/{2.app → core/2.app}/driver-ports/flow-factory.contract.d.ts +0 -0
  102. /package/types/lib/{2.app → core/2.app}/driver-ports/init/for-committing-changes.port.d.ts +0 -0
  103. /package/types/lib/{2.app/driver-ports/dynamic-init → core/2.app/driver-ports/init}/for-converting-to-import-map.d.ts +0 -0
  104. /package/types/lib/{2.app → core/2.app}/driver-ports/init/for-determining-shared-externals.port.d.ts +0 -0
  105. /package/types/lib/{2.app → core/2.app}/driver-ports/init/for-exposing-module-loader.port.d.ts +0 -0
  106. /package/types/lib/{2.app → core/2.app}/driver-ports/init/for-generating-import-map.d.ts +0 -0
  107. /package/types/lib/{2.app → core/2.app}/driver-ports/init/for-getting-remote-entries.port.d.ts +0 -0
  108. /package/types/lib/{2.app → core/2.app}/driver-ports/init/for-processing-remote-entries.port.d.ts +0 -0
  109. /package/types/lib/{2.app/driver-ports/dynamic-init → core/2.app/driver-ports/init}/for-updating-cache.d.ts +0 -0
  110. /package/types/lib/{2.app → core/2.app}/driving-ports/driving.contract.d.ts +0 -0
  111. /package/types/lib/{2.app → core/2.app}/driving-ports/for-browser-tasks.d.ts +0 -0
  112. /package/types/lib/{2.app → core/2.app}/driving-ports/for-providing-manifest.port.d.ts +0 -0
  113. /package/types/lib/{2.app → core/2.app}/driving-ports/for-providing-remote-entries.port.d.ts +0 -0
  114. /package/types/lib/{2.app → core/2.app}/driving-ports/for-sse.port.d.ts +0 -0
  115. /package/types/lib/{2.app → core/2.app}/driving-ports/for-version-checking.port.d.ts +0 -0
  116. /package/types/lib/{2.app → core/2.app}/driving-ports/index.d.ts +0 -0
  117. /package/types/lib/{3.adapters → core/3.adapters}/browser/browser.d.ts +0 -0
  118. /package/types/lib/{3.adapters → core/3.adapters}/checks/version.check.d.ts +0 -0
  119. /package/types/lib/{3.adapters → core/3.adapters}/http/manifest-provider.d.ts +0 -0
  120. /package/types/lib/{3.adapters → core/3.adapters}/http/remote-entry-provider.d.ts +0 -0
  121. /package/types/lib/{3.adapters → core/3.adapters}/storage/chunk.repository.d.ts +0 -0
  122. /package/types/lib/{3.adapters → core/3.adapters}/storage/remote-info.repository.d.ts +0 -0
  123. /package/types/lib/{3.adapters → core/3.adapters}/storage/scoped-externals.repository.d.ts +0 -0
  124. /package/types/lib/{3.adapters → core/3.adapters}/storage/shared-externals.repository.d.ts +0 -0
  125. /package/types/lib/{4.config → core/4.config}/host/host.config.d.ts +0 -0
  126. /package/types/lib/{4.config → core/4.config}/import-map/import-map.config.d.ts +0 -0
  127. /package/types/lib/{4.config → core/4.config}/import-map/index.d.ts +0 -0
  128. /package/types/lib/{4.config → core/4.config}/import-map/replace-in-dom.d.ts +0 -0
  129. /package/types/lib/{4.config → core/4.config}/import-map/trusted-types.d.ts +0 -0
  130. /package/types/lib/{4.config → core/4.config}/import-map/use-default.d.ts +0 -0
  131. /package/types/lib/{4.config → core/4.config}/import-map/use-import-shim.d.ts +0 -0
  132. /package/types/lib/{4.config → core/4.config}/logging/console.logger.d.ts +0 -0
  133. /package/types/lib/{4.config → core/4.config}/logging/index.d.ts +0 -0
  134. /package/types/lib/{4.config → core/4.config}/logging/log.config.d.ts +0 -0
  135. /package/types/lib/{4.config → core/4.config}/logging/log.handler.d.ts +0 -0
  136. /package/types/lib/{4.config → core/4.config}/logging/noop.logger.d.ts +0 -0
  137. /package/types/lib/{4.config → core/4.config}/mode/caching.profile.d.ts +0 -0
  138. /package/types/lib/{4.config → core/4.config}/mode/default.profile.d.ts +0 -0
  139. /package/types/lib/{4.config → core/4.config}/mode/index.d.ts +0 -0
  140. /package/types/lib/{4.config → core/4.config}/mode/mode.config.d.ts +0 -0
  141. /package/types/lib/{4.config → core/4.config}/storage/global-this.storage.d.ts +0 -0
  142. /package/types/lib/{4.config → core/4.config}/storage/index.d.ts +0 -0
  143. /package/types/lib/{4.config → core/4.config}/storage/local.storage.d.ts +0 -0
  144. /package/types/lib/{4.config → core/4.config}/storage/session.storage.d.ts +0 -0
  145. /package/types/lib/{4.config → core/4.config}/storage/storage.config.d.ts +0 -0
  146. /package/types/lib/{5.di → core/5.di}/config.factory.d.ts +0 -0
  147. /package/types/lib/{5.di → core/5.di}/driving.factory.d.ts +0 -0
  148. /package/types/lib/{init-federation.d.ts → core/init-federation.d.ts} +0 -0
  149. /package/types/lib/{native-federation.error.d.ts → core/native-federation.error.d.ts} +0 -0
  150. /package/types/lib/{3.adapters/node → node/adapters}/loader-url.d.ts +0 -0
  151. /package/types/lib/{utils/node → node/utils}/read-source.d.ts +0 -0
  152. /package/types/lib/{1.domain/registry → registry}/event-registry.contract.d.ts +0 -0
  153. /package/types/lib/{1.domain/registry → registry}/event.contract.d.ts +0 -0
  154. /package/types/lib/{2.app/config → registry}/registry.contract.d.ts +0 -0
  155. /package/types/{node-loader.d.ts → scripts/node-loader.d.ts} +0 -0
  156. /package/types/{quickstart.d.ts → scripts/quickstart.d.ts} +0 -0
@@ -1,4 +1,4 @@
1
- // src/lib/native-federation.error.ts
1
+ // src/lib/core/native-federation.error.ts
2
2
  var NFError = class extends Error {
3
3
  constructor(message, cause) {
4
4
  super(message, cause);
@@ -6,7 +6,7 @@ var NFError = class extends Error {
6
6
  }
7
7
  };
8
8
 
9
- // src/lib/2.app/flows/audit/externals-audit.ts
9
+ // src/lib/audit/externals-audit.ts
10
10
  function createExternalsAudit(config, ports) {
11
11
  return (remoteEntry) => {
12
12
  let success = true;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../src/lib/native-federation.error.ts", "../../src/lib/2.app/flows/audit/externals-audit.ts"],
4
- "sourcesContent": ["class NFError extends Error {\n constructor(message: string, cause?: Error) {\n super(message, cause);\n this.name = 'NFError';\n }\n}\n\nexport { NFError };\n", "import { NFError } from 'lib/native-federation.error';\nimport type { LoggingConfig, ModeConfig } from '../../config';\nimport type { DrivingContract } from '../../driving-ports/driving.contract';\nimport type { RemoteEntry, SharedExternal, SharedVersion } from 'lib/1.domain';\nimport type { ForAuditingExternals } from '../../driver-ports/audit/for-auditing-externals.port';\n\nexport function createExternalsAudit(\n config: LoggingConfig & ModeConfig,\n ports: Pick<DrivingContract, 'versionCheck' | 'sharedExternalsRepo' | 'scopedExternalsRepo'>\n): ForAuditingExternals {\n return remoteEntry => {\n let success = true;\n remoteEntry.shared\n .filter(external => !external.singleton)\n .forEach(external => {\n const isValid = checkIfExternalCouldBeSingleton(external, remoteEntry);\n if (!isValid) success = false;\n });\n\n const isValid = warnForScopedSingletons(remoteEntry);\n if (!isValid) success = false;\n\n if (!success && config.strict.strictExternalCompatibility) {\n config.log.error(3, `[${remoteEntry.name}] Not all externals are compatible.`);\n return Promise.reject(new NFError(`Failed externals audit`));\n }\n return Promise.resolve();\n };\n\n function checkIfExternalCouldBeSingleton(\n targetExternal: { packageName: string; requiredVersion: string },\n remoteEntry: RemoteEntry\n ) {\n for (const shareScope of ports.sharedExternalsRepo.getScopes()) {\n const sharedExternal =\n ports.sharedExternalsRepo.getFromScope(shareScope)[targetExternal.packageName];\n if (!sharedExternal) continue;\n\n for (const version of sharedExternal.versions) {\n if (version.action !== 'share') return true;\n\n if (ports.versionCheck.isCompatible(version.tag, targetExternal.requiredVersion)) {\n const msg = `[${remoteEntry.name}][scoped][${shareScope}][${targetExternal.packageName}] External is compatible with shared range '${version.remotes[0]!.requiredVersion}'. Should be 'singleton: true'`;\n config.log.warn(3, msg);\n return false;\n }\n }\n }\n return true;\n }\n\n function warnForScopedSingletons(remoteEntry: RemoteEntry) {\n let success = true;\n for (const shareScope of ports.sharedExternalsRepo.getScopes()) {\n for (const [packageName, external] of Object.entries<SharedExternal>(\n ports.sharedExternalsRepo.getFromScope(shareScope)\n )) {\n for (const version of external.versions as SharedVersion[]) {\n if (version.action !== 'scope') continue;\n\n if (version.remotes.some(remote => remote.name === remoteEntry.name)) {\n const sharedVersion = external.versions.find(v => v.action === 'share');\n const isOlder =\n sharedVersion && ports.versionCheck.compare(version.tag, sharedVersion.tag) === -1;\n\n let msg = `[${remoteEntry.name}][shared][${shareScope}][${packageName}@${version.tag}] External is ${\n isOlder ? 'older' : 'newer'\n } than shared compatible range '${sharedVersion?.remotes[0]!.requiredVersion}'.`;\n\n if (isOlder) {\n success = false;\n msg += \" Should be 'singleton: false'\";\n }\n config.log.warn(3, msg);\n }\n }\n }\n }\n return success;\n }\n}\n"],
3
+ "sources": ["../../src/lib/core/native-federation.error.ts", "../../src/lib/audit/externals-audit.ts"],
4
+ "sourcesContent": ["class NFError extends Error {\n constructor(message: string, cause?: Error) {\n super(message, cause);\n this.name = 'NFError';\n }\n}\n\nexport { NFError };\n", "import { NFError } from 'lib/core/native-federation.error';\nimport type { LoggingConfig, ModeConfig } from 'lib/core/2.app/config';\nimport type { DrivingContract } from 'lib/core/2.app/driving-ports/driving.contract';\nimport type { RemoteEntry, SharedExternal, SharedVersion } from 'lib/core/1.domain';\nimport type { ForAuditingExternals } from './for-auditing-externals.port';\n\nexport function createExternalsAudit(\n config: LoggingConfig & ModeConfig,\n ports: Pick<DrivingContract, 'versionCheck' | 'sharedExternalsRepo' | 'scopedExternalsRepo'>\n): ForAuditingExternals {\n return remoteEntry => {\n let success = true;\n remoteEntry.shared\n .filter(external => !external.singleton)\n .forEach(external => {\n const isValid = checkIfExternalCouldBeSingleton(external, remoteEntry);\n if (!isValid) success = false;\n });\n\n const isValid = warnForScopedSingletons(remoteEntry);\n if (!isValid) success = false;\n\n if (!success && config.strict.strictExternalCompatibility) {\n config.log.error(3, `[${remoteEntry.name}] Not all externals are compatible.`);\n return Promise.reject(new NFError(`Failed externals audit`));\n }\n return Promise.resolve();\n };\n\n function checkIfExternalCouldBeSingleton(\n targetExternal: { packageName: string; requiredVersion: string },\n remoteEntry: RemoteEntry\n ) {\n for (const shareScope of ports.sharedExternalsRepo.getScopes()) {\n const sharedExternal =\n ports.sharedExternalsRepo.getFromScope(shareScope)[targetExternal.packageName];\n if (!sharedExternal) continue;\n\n for (const version of sharedExternal.versions) {\n if (version.action !== 'share') return true;\n\n if (ports.versionCheck.isCompatible(version.tag, targetExternal.requiredVersion)) {\n const msg = `[${remoteEntry.name}][scoped][${shareScope}][${targetExternal.packageName}] External is compatible with shared range '${version.remotes[0]!.requiredVersion}'. Should be 'singleton: true'`;\n config.log.warn(3, msg);\n return false;\n }\n }\n }\n return true;\n }\n\n function warnForScopedSingletons(remoteEntry: RemoteEntry) {\n let success = true;\n for (const shareScope of ports.sharedExternalsRepo.getScopes()) {\n for (const [packageName, external] of Object.entries<SharedExternal>(\n ports.sharedExternalsRepo.getFromScope(shareScope)\n )) {\n for (const version of external.versions as SharedVersion[]) {\n if (version.action !== 'scope') continue;\n\n if (version.remotes.some(remote => remote.name === remoteEntry.name)) {\n const sharedVersion = external.versions.find(v => v.action === 'share');\n const isOlder =\n sharedVersion && ports.versionCheck.compare(version.tag, sharedVersion.tag) === -1;\n\n let msg = `[${remoteEntry.name}][shared][${shareScope}][${packageName}@${version.tag}] External is ${\n isOlder ? 'older' : 'newer'\n } than shared compatible range '${sharedVersion?.remotes[0]!.requiredVersion}'.`;\n\n if (isOlder) {\n success = false;\n msg += \" Should be 'singleton: false'\";\n }\n config.log.warn(3, msg);\n }\n }\n }\n }\n return success;\n }\n}\n"],
5
5
  "mappings": ";AAAA,IAAM,UAAN,cAAsB,MAAM;AAAA,EAC1B,YAAY,SAAiB,OAAe;AAC1C,UAAM,SAAS,KAAK;AACpB,SAAK,OAAO;AAAA,EACd;AACF;;;ACCO,SAAS,qBACd,QACA,OACsB;AACtB,SAAO,iBAAe;AACpB,QAAI,UAAU;AACd,gBAAY,OACT,OAAO,cAAY,CAAC,SAAS,SAAS,EACtC,QAAQ,cAAY;AACnB,YAAMA,WAAU,gCAAgC,UAAU,WAAW;AACrE,UAAI,CAACA,SAAS,WAAU;AAAA,IAC1B,CAAC;AAEH,UAAM,UAAU,wBAAwB,WAAW;AACnD,QAAI,CAAC,QAAS,WAAU;AAExB,QAAI,CAAC,WAAW,OAAO,OAAO,6BAA6B;AACzD,aAAO,IAAI,MAAM,GAAG,IAAI,YAAY,IAAI,qCAAqC;AAC7E,aAAO,QAAQ,OAAO,IAAI,QAAQ,wBAAwB,CAAC;AAAA,IAC7D;AACA,WAAO,QAAQ,QAAQ;AAAA,EACzB;AAEA,WAAS,gCACP,gBACA,aACA;AACA,eAAW,cAAc,MAAM,oBAAoB,UAAU,GAAG;AAC9D,YAAM,iBACJ,MAAM,oBAAoB,aAAa,UAAU,EAAE,eAAe,WAAW;AAC/E,UAAI,CAAC,eAAgB;AAErB,iBAAW,WAAW,eAAe,UAAU;AAC7C,YAAI,QAAQ,WAAW,QAAS,QAAO;AAEvC,YAAI,MAAM,aAAa,aAAa,QAAQ,KAAK,eAAe,eAAe,GAAG;AAChF,gBAAM,MAAM,IAAI,YAAY,IAAI,aAAa,UAAU,KAAK,eAAe,WAAW,+CAA+C,QAAQ,QAAQ,CAAC,EAAG,eAAe;AACxK,iBAAO,IAAI,KAAK,GAAG,GAAG;AACtB,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAEA,WAAS,wBAAwB,aAA0B;AACzD,QAAI,UAAU;AACd,eAAW,cAAc,MAAM,oBAAoB,UAAU,GAAG;AAC9D,iBAAW,CAAC,aAAa,QAAQ,KAAK,OAAO;AAAA,QAC3C,MAAM,oBAAoB,aAAa,UAAU;AAAA,MACnD,GAAG;AACD,mBAAW,WAAW,SAAS,UAA6B;AAC1D,cAAI,QAAQ,WAAW,QAAS;AAEhC,cAAI,QAAQ,QAAQ,KAAK,YAAU,OAAO,SAAS,YAAY,IAAI,GAAG;AACpE,kBAAM,gBAAgB,SAAS,SAAS,KAAK,OAAK,EAAE,WAAW,OAAO;AACtE,kBAAM,UACJ,iBAAiB,MAAM,aAAa,QAAQ,QAAQ,KAAK,cAAc,GAAG,MAAM;AAElF,gBAAI,MAAM,IAAI,YAAY,IAAI,aAAa,UAAU,KAAK,WAAW,IAAI,QAAQ,GAAG,iBAClF,UAAU,UAAU,OACtB,kCAAkC,eAAe,QAAQ,CAAC,EAAG,eAAe;AAE5E,gBAAI,SAAS;AACX,wBAAU;AACV,qBAAO;AAAA,YACT;AACA,mBAAO,IAAI,KAAK,GAAG,GAAG;AAAA,UACxB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACF;",
6
6
  "names": ["isValid"]
7
7
  }