@appaflytech/zeyrek-ai-mcp 0.0.36 → 0.0.40

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 (210) hide show
  1. package/.env.example +15 -0
  2. package/README.md +5 -5
  3. package/dist/config.js +37 -0
  4. package/dist/index.js +2 -0
  5. package/dist/knowledge/access.js +802 -0
  6. package/dist/knowledge/backendConstraints.js +18 -1
  7. package/dist/knowledge/case.js +41 -0
  8. package/dist/knowledge/componentCatalog.js +524 -53
  9. package/dist/knowledge/componentEvents.js +132 -7
  10. package/dist/knowledge/connectDataBind.js +851 -0
  11. package/dist/knowledge/connectDataDefinition.js +344 -0
  12. package/dist/knowledge/connectDataExecute.js +93 -0
  13. package/dist/knowledge/connectDataRules.js +128 -0
  14. package/dist/knowledge/decision.js +121 -0
  15. package/dist/knowledge/expressionPrelude.js +60 -0
  16. package/dist/knowledge/layoutSummary.js +140 -2
  17. package/dist/knowledge/microserviceParameters.js +58 -0
  18. package/dist/knowledge/mining.js +94 -0
  19. package/dist/knowledge/mobileComponentCatalog.js +876 -0
  20. package/dist/knowledge/mobileComponentEvents.js +259 -0
  21. package/dist/knowledge/mobileStore.js +396 -0
  22. package/dist/knowledge/normalize.js +240 -72
  23. package/dist/knowledge/outlines.js +36 -0
  24. package/dist/knowledge/platform/lint.js +385 -0
  25. package/dist/knowledge/platform/mobile.js +142 -0
  26. package/dist/knowledge/platform/mobileLayoutLint.js +324 -0
  27. package/dist/knowledge/platform/mobileRules.js +231 -0
  28. package/dist/knowledge/platform/mobileSpacing.js +82 -0
  29. package/dist/knowledge/platform/mobileTabs.js +108 -0
  30. package/dist/knowledge/platform/nativeBoxModel.js +44 -0
  31. package/dist/knowledge/platform/profile.js +25 -0
  32. package/dist/knowledge/platform/resolve.js +122 -0
  33. package/dist/knowledge/platform/web.js +39 -0
  34. package/dist/knowledge/policy.js +18 -4
  35. package/dist/knowledge/process.js +510 -0
  36. package/dist/knowledge/reservedTables.js +79 -0
  37. package/dist/knowledge/rowFilter.js +43 -0
  38. package/dist/knowledge/rules.js +485 -22
  39. package/dist/knowledge/schemaGuard.js +11 -0
  40. package/dist/knowledge/styleResolve.js +64 -10
  41. package/dist/knowledge/styleResolveNative.js +529 -0
  42. package/dist/knowledge/themeResolve.js +3 -3
  43. package/dist/observability/trace.js +13 -5
  44. package/dist/platform/argumentAliases.js +128 -0
  45. package/dist/platform/bodyFile.js +103 -0
  46. package/dist/platform/capture/actions.js +398 -0
  47. package/dist/platform/capture/browser.js +1 -0
  48. package/dist/platform/capture/capture.js +683 -0
  49. package/dist/platform/capture/console-log.js +122 -0
  50. package/dist/platform/capture/index.js +11 -0
  51. package/dist/platform/capture/readiness.js +103 -0
  52. package/dist/platform/capture/summary.js +77 -0
  53. package/dist/platform/capture/target.js +5 -0
  54. package/dist/platform/capture/targets/studio-mobile.js +15 -0
  55. package/dist/platform/capture/targets/studio-web.js +5 -0
  56. package/dist/platform/diagnostics.js +10 -4
  57. package/dist/platform/domSummary.js +1 -1
  58. package/dist/platform/errors.js +163 -10
  59. package/dist/platform/http.js +29 -8
  60. package/dist/platform/impersonation.js +45 -0
  61. package/dist/platform/jsonArray.js +24 -0
  62. package/dist/platform/responses.js +39 -5
  63. package/dist/platform/schemaReadMemory.js +60 -0
  64. package/dist/platform/secrets.js +68 -2
  65. package/dist/platform/strictArguments.js +68 -12
  66. package/dist/platform/tokenVault.js +187 -4
  67. package/dist/resources/examples/bpm-gorev-kontrol.json +294 -0
  68. package/dist/resources/examples/bpm-iso-dokuman.json +228 -0
  69. package/dist/resources/examples/bpm-satinalma.json +376 -0
  70. package/dist/resources/examples/connect-data-convert-verify.json +107 -0
  71. package/dist/resources/examples/connect-data-dropdown-roles.json +66 -0
  72. package/dist/resources/examples/connect-data-edit-m2m.json +73 -0
  73. package/dist/resources/examples/connect-data-query-params.json +50 -0
  74. package/dist/resources/examples/connect-data-table-entity.json +147 -0
  75. package/dist/resources/examples/connect-data-workflow-microservice.json +65 -0
  76. package/dist/resources/examples/middleware-authenticate.json +1 -1
  77. package/dist/resources/examples/mobile-app-shell-drawer.json +244 -0
  78. package/dist/resources/examples/mobile-app-shell-stack.json +157 -0
  79. package/dist/resources/examples/mobile-app-shell-tab.json +208 -0
  80. package/dist/resources/examples/mobile-form-screen.json +365 -0
  81. package/dist/resources/examples/mobile-list-detail-form.json +703 -0
  82. package/dist/resources/examples/page-detail-profile.json +2 -1
  83. package/dist/resources/examples/page-dynamic-form.json +3 -2
  84. package/dist/resources/examples/page-flex-sections.json +1 -1
  85. package/dist/resources/examples/page-html-embed.json +1 -1
  86. package/dist/resources/examples/workflow-basic.json +8 -2
  87. package/dist/resources/guides/access.md +810 -0
  88. package/dist/resources/guides/bpm.md +691 -0
  89. package/dist/resources/guides/case.md +153 -0
  90. package/dist/resources/guides/component.md +92 -5
  91. package/dist/resources/guides/decision.md +185 -0
  92. package/dist/resources/guides/entity.md +50 -8
  93. package/dist/resources/guides/expressions.md +14 -5
  94. package/dist/resources/guides/functions.md +1 -1
  95. package/dist/resources/guides/getting-started.md +38 -1
  96. package/dist/resources/guides/layout.md +11 -7
  97. package/dist/resources/guides/merge.md +42 -7
  98. package/dist/resources/guides/microservice.md +88 -3
  99. package/dist/resources/guides/middleware.md +69 -5
  100. package/dist/resources/guides/mobile-layout.md +193 -0
  101. package/dist/resources/guides/mobile-publish.md +148 -0
  102. package/dist/resources/guides/mobile.md +565 -0
  103. package/dist/resources/guides/page.md +469 -82
  104. package/dist/resources/guides/theme.md +8 -2
  105. package/dist/resources/guides/translation.md +1 -1
  106. package/dist/resources/guides/workflow.md +58 -1
  107. package/dist/resources/read.js +41 -0
  108. package/dist/resources/rules.js +11 -5
  109. package/dist/resources/schema-fingerprint.json +7 -5
  110. package/dist/resources/schemas/AccessExplanationDto.json +144 -0
  111. package/dist/resources/schemas/AccessMatrixDto.json +170 -0
  112. package/dist/resources/schemas/AccessPermissionDto.json +57 -0
  113. package/dist/resources/schemas/AccessPolicyDto.json +223 -0
  114. package/dist/resources/schemas/AccessResourceDto.json +86 -0
  115. package/dist/resources/schemas/AppSessionDto.json +53 -0
  116. package/dist/resources/schemas/ConnectDataDescribeDto.json +344 -0
  117. package/dist/resources/schemas/ConnectDataRequestModel.json +202 -0
  118. package/dist/resources/schemas/ConnectDataResultDto.json +421 -0
  119. package/dist/resources/schemas/ConnectorCredentialDto.json +70 -0
  120. package/dist/resources/schemas/ConvertConnectDataToMicroserviceCommand.json +37 -0
  121. package/dist/resources/schemas/CreateAccessPolicyCommand.json +209 -0
  122. package/dist/resources/schemas/CreateDecisionCommand.json +221 -0
  123. package/dist/resources/schemas/CreateEntityCommand.json +118 -0
  124. package/dist/resources/schemas/CreateMicroserviceCommand.json +13 -1
  125. package/dist/resources/schemas/CreateProcessDefinitionCommand.json +1337 -0
  126. package/dist/resources/schemas/CreateQueryCommand.json +4 -0
  127. package/dist/resources/schemas/CreateWorkflowCommand.json +146 -1
  128. package/dist/resources/schemas/DataJobDto.json +6 -1
  129. package/dist/resources/schemas/DecisionDto.json +302 -0
  130. package/dist/resources/schemas/DetachConnectDataMicroserviceCommand.json +28 -0
  131. package/dist/resources/schemas/ExplainAccessQuery.json +33 -0
  132. package/dist/resources/schemas/GenerateProcessDocumentCommand.json +116 -0
  133. package/dist/resources/schemas/GlobalFunctionUpdateResultDto.json +24 -0
  134. package/dist/resources/schemas/MicroserviceDto.json +15 -3
  135. package/dist/resources/schemas/OrganizationProjectDto.json +343 -0
  136. package/dist/resources/schemas/OrganizationSchemaDto.json +196 -0
  137. package/dist/resources/schemas/OrganizationSchemaVersionDto.json +207 -0
  138. package/dist/resources/schemas/PatchProcessDefinitionCommand.json +76 -0
  139. package/dist/resources/schemas/PreviewMicroserviceCommand.json +10 -1
  140. package/dist/resources/schemas/PreviewWorkflowCommand.json +25 -1
  141. package/dist/resources/schemas/ProcessDefinitionDto.json +1480 -0
  142. package/dist/resources/schemas/ProcessSimulationDto.json +96 -0
  143. package/dist/resources/schemas/SaveConnectorCredentialCommand.json +90 -0
  144. package/dist/resources/schemas/SaveProcessEventSourceCommand.json +61 -0
  145. package/dist/resources/schemas/SaveProcessMailSourceCommand.json +89 -0
  146. package/dist/resources/schemas/SignProcessTaskCommand.json +73 -0
  147. package/dist/resources/schemas/SimulateProcessDefinitionQuery.json +92 -0
  148. package/dist/resources/schemas/StartMobileBuildCommand.json +54 -0
  149. package/dist/resources/schemas/StepDto.json +25 -1
  150. package/dist/resources/schemas/UpdateAccessPolicyCommand.json +209 -0
  151. package/dist/resources/schemas/UpdateDecisionCommand.json +216 -0
  152. package/dist/resources/schemas/UpdateEntityCommand.json +118 -0
  153. package/dist/resources/schemas/UpdateMicroserviceCommand.json +13 -1
  154. package/dist/resources/schemas/UpdateProcessDefinitionCommand.json +1357 -0
  155. package/dist/resources/schemas/UpdateQueryCommand.json +4 -0
  156. package/dist/resources/schemas/UpdateViewCommand.json +0 -2
  157. package/dist/resources/schemas/UpdateWorkflowCommand.json +146 -1
  158. package/dist/resources/schemas/UpsertMobileStoreSettingsCommand.json +333 -0
  159. package/dist/resources/schemas/ValidateProcessDefinitionQuery.json +1339 -0
  160. package/dist/server.js +31 -1
  161. package/dist/tools/access.js +369 -2
  162. package/dist/tools/accessOperations.js +135 -0
  163. package/dist/tools/accessPolicies.js +170 -0
  164. package/dist/tools/accessRuntime.js +203 -0
  165. package/dist/tools/applications.js +63 -3
  166. package/dist/tools/bpm.js +343 -0
  167. package/dist/tools/bpmGovernance.js +266 -0
  168. package/dist/tools/bpmOperations.js +230 -0
  169. package/dist/tools/bpmReporting.js +154 -0
  170. package/dist/tools/bpmRouting.js +150 -0
  171. package/dist/tools/bpmRuntime.js +396 -0
  172. package/dist/tools/case.js +178 -0
  173. package/dist/tools/caseRuntime.js +89 -0
  174. package/dist/tools/common.js +19 -6
  175. package/dist/tools/components.js +118 -14
  176. package/dist/tools/connectData.js +450 -0
  177. package/dist/tools/connectors.js +193 -0
  178. package/dist/tools/datasources.js +3 -3
  179. package/dist/tools/decisions.js +206 -0
  180. package/dist/tools/dependencies.js +1 -1
  181. package/dist/tools/deployments.js +38 -3
  182. package/dist/tools/designSchemaPatch.js +34 -9
  183. package/dist/tools/dtos.js +36 -5
  184. package/dist/tools/entities.js +79 -12
  185. package/dist/tools/environments.js +1 -1
  186. package/dist/tools/externalComponents.js +26 -5
  187. package/dist/tools/flows.js +119 -13
  188. package/dist/tools/folders.js +1 -1
  189. package/dist/tools/imports.js +5 -2
  190. package/dist/tools/layouts.js +50 -17
  191. package/dist/tools/merges.js +2 -2
  192. package/dist/tools/microservices.js +77 -25
  193. package/dist/tools/mobile.js +280 -0
  194. package/dist/tools/mobileStore.js +572 -0
  195. package/dist/tools/modules.js +48 -0
  196. package/dist/tools/organizationStructure.js +137 -0
  197. package/dist/tools/pages.js +467 -100
  198. package/dist/tools/platformInfo.js +28 -8
  199. package/dist/tools/profileWrite.js +92 -0
  200. package/dist/tools/projects.js +71 -9
  201. package/dist/tools/rows.js +69 -13
  202. package/dist/tools/schemaOps.js +61 -1
  203. package/dist/tools/screenWrite.js +36 -7
  204. package/dist/tools/screens.js +95 -5
  205. package/dist/tools/templates.js +26 -1
  206. package/dist/tools/translations.js +1 -1
  207. package/dist/tools/variables.js +11 -5
  208. package/dist/tools/workflows.js +10 -5
  209. package/package.json +2 -2
  210. package/dist/platform/screenshot.js +0 -1162
@@ -49,6 +49,13 @@ function referenceName(node) {
49
49
  return referenceName(allOf[0]);
50
50
  return undefined;
51
51
  }
52
+ /**
53
+ * `System.Text.Json.Nodes.JsonNode` gibi serbest JSON değerlerinin üretilen şeması katıdır
54
+ * (`options/parent/root`); içine inilirse meşru anahtarlar "platform yok sayıyor" diye raporlanır.
55
+ */
56
+ function isFreeFormJson(node) {
57
+ return /(^|.)Json(Node|Object|Array|Value|Element)$/.test(referenceName(node) ?? '');
58
+ }
52
59
  function resolve(document, node) {
53
60
  if (!node || typeof node !== 'object')
54
61
  return undefined;
@@ -76,6 +83,8 @@ function walk(document, schema, value, path, into) {
76
83
  if (!schema || !value || typeof value !== 'object')
77
84
  return;
78
85
  if (Array.isArray(value)) {
86
+ if (isFreeFormJson(schema.items))
87
+ return;
79
88
  const items = resolve(document, schema.items);
80
89
  value.forEach((entry, index) => walk(document, items, entry, `${path}[${index}]`, into));
81
90
  return;
@@ -95,6 +104,8 @@ function walk(document, schema, value, path, into) {
95
104
  into.push(child);
96
105
  continue;
97
106
  }
107
+ if (isFreeFormJson(properties[key]))
108
+ continue;
98
109
  walk(document, resolve(document, properties[key]), entry, child, into);
99
110
  }
100
111
  }
@@ -154,6 +154,26 @@ const resolveShadow = (shadow) => {
154
154
  return undefined;
155
155
  return SHADOW_VALUES[shadow] ?? String(shadow);
156
156
  };
157
+ /**
158
+ * Döndür / ölçekle / kaydır alanlarının kabul aralığı — frontend `style-groups/transform-fields.ts`
159
+ * `TRANSFORM_RANGES`'in kopyası (altın vakalar kilitler). Aralık dışı ve birimli değer yazılmaz.
160
+ */
161
+ export const TRANSFORM_RANGES = {
162
+ rotate: [-360, 360],
163
+ scale: [10, 500],
164
+ translateX: [-1000, 1000],
165
+ translateY: [-1000, 1000]
166
+ };
167
+ /** Frontend `TRANSFORM_FIELDS`: transform'lu ata `position: fixed` torununu hapsettiği için katmanlar ve kabuklar bu alanları `surfaceStyleGroup({ omit })` ile dışlar. */
168
+ const TRANSFORM_FIELDS = Object.keys(TRANSFORM_RANGES);
169
+ /** Sayı ya da sayısal metin, aralığın içinde; aksi `undefined` — frontend `transformValue`. */
170
+ export const transformValue = (value, field) => {
171
+ if (typeof value !== 'number' && (typeof value !== 'string' || value.trim() === ''))
172
+ return undefined;
173
+ const parsed = Number(value);
174
+ const [min, max] = TRANSFORM_RANGES[field];
175
+ return Number.isFinite(parsed) && parsed >= min && parsed <= max ? parsed : undefined;
176
+ };
157
177
  /**
158
178
  * Grupların alan listeleri — frontend `style-groups/style-group-schemas.ts`
159
179
  * `STYLE_GROUP_FIELDS`'in kopyası. Parite testi `components.json`'daki gerçek
@@ -170,7 +190,11 @@ export const STYLE_GROUP_FIELDS = {
170
190
  'borderLeft',
171
191
  'shadow',
172
192
  'contentOverflow',
173
- 'opacity'
193
+ 'opacity',
194
+ 'rotate',
195
+ 'scale',
196
+ 'translateX',
197
+ 'translateY'
174
198
  ],
175
199
  typographyStyle: [
176
200
  'textColor',
@@ -220,6 +244,21 @@ export function composeTypedStyle(input, ext) {
220
244
  if (opacity !== undefined && opacity >= 0 && opacity < 100) {
221
245
  groups.opacity = String(opacity / 100);
222
246
  }
247
+ // Döndür / ölçekle / kaydır (ADR 0005): kaydır → döndür → ölçekle, köken merkez;
248
+ // ölçek yüzdedir, nötr değer ve aralık dışı yazılmaz — frontend `composeSurfaceTransform`.
249
+ const transform = [];
250
+ const x = transformValue(surface.translateX, 'translateX') ?? 0;
251
+ const y = transformValue(surface.translateY, 'translateY') ?? 0;
252
+ if (x !== 0 || y !== 0)
253
+ transform.push(`translate(${x}px, ${y}px)`);
254
+ const rotate = transformValue(surface.rotate, 'rotate');
255
+ if (rotate !== undefined && rotate !== 0)
256
+ transform.push(`rotate(${rotate}deg)`);
257
+ const scale = transformValue(surface.scale, 'scale');
258
+ if (scale !== undefined && scale !== 100)
259
+ transform.push(`scale(${scale / 100})`);
260
+ if (transform.length)
261
+ groups.transform = transform.join(' ');
223
262
  // `ROOT_TARGET` (`&`) kökün kendisidir: kendi derleyicisi olmayan kaplarda
224
263
  // yüzey düğüm kutusuna yazılır ve kaydırılan da odur.
225
264
  if (isSet(surface.contentOverflow) && ext?.overflowTarget) {
@@ -251,8 +290,10 @@ export function composeTypedStyle(input, ext) {
251
290
  assign(rules, 'borderColor', hover.borderColor);
252
291
  assign(rules, 'boxShadow', resolveShadow(hover.shadow));
253
292
  const lift = asDimension(hover.lift);
254
- if (lift !== undefined)
255
- rules.transform = `translateY(calc(-1 * ${lift}))`;
293
+ // Kaldırma düğümün kendi transform'unu ezmez, önüne eklenir.
294
+ if (lift !== undefined) {
295
+ rules.transform = `translateY(calc(-1 * ${lift}))${typeof groups.transform === 'string' ? ` ${groups.transform}` : ''}`;
296
+ }
256
297
  if (Object.keys(rules).length) {
257
298
  const duration = asNumber(hover.transitionMs) ?? 160;
258
299
  groups.transition = `background-color ${duration}ms ease, border-color ${duration}ms ease, box-shadow ${duration}ms ease, transform ${duration}ms ease`;
@@ -470,22 +511,26 @@ export const TYPED_STYLE_COMPONENTS = {
470
511
  // onun altında kalıyordu (LAYOUT-006, 2026-09-29). Yüzey ve taşma köke.
471
512
  // navigationStyle menüye gider, resolvedStyle'a girmez.
472
513
  groups: ['surfaceStyle'],
473
- ext: { overflowTarget: ROOT_TARGET }
514
+ ext: { overflowTarget: ROOT_TARGET },
515
+ omit: { surfaceStyle: TRANSFORM_FIELDS }
474
516
  },
475
517
  'layout-shell': {
476
518
  // Aynı kök: zemin `.ng-layout-shell` KÖKÜNDE (SHELL-006, 2026-09-29).
477
519
  groups: ['surfaceStyle'],
478
- ext: { overflowTarget: ROOT_TARGET }
520
+ ext: { overflowTarget: ROOT_TARGET },
521
+ omit: { surfaceStyle: TRANSFORM_FIELDS }
479
522
  },
480
523
  'layout-region': {
481
524
  // Zemin `.ng-layout-region` KÖKÜNDE, taşma kaydırılan gövdede (REG-002, 2026-09-29).
482
525
  groups: ['surfaceStyle'],
483
- ext: { overflowTarget: '&__body' }
526
+ ext: { overflowTarget: '&__body' },
527
+ omit: { surfaceStyle: TRANSFORM_FIELDS }
484
528
  },
485
529
  'auth-layout': {
486
530
  // Zemin `.ng-auth` KÖKÜNDE (AUTH-006, 2026-09-29); yüzey ve taşma köke.
487
531
  groups: ['surfaceStyle'],
488
- ext: { overflowTarget: ROOT_TARGET }
532
+ ext: { overflowTarget: ROOT_TARGET },
533
+ omit: { surfaceStyle: TRANSFORM_FIELDS }
489
534
  },
490
535
  header: {
491
536
  // Şeridin zemini ve alt çizgisi kökte (HDR-007, 2026-09-29).
@@ -502,13 +547,15 @@ export const TYPED_STYLE_COMPONENTS = {
502
547
  // Panel portal ile düğüm kutusunun DIŞINA çizilir; yüzey panelin KÖKÜNDE
503
548
  // derlenir, taşma da panelin köküne iner (modal ölçümü, 2026-10-05).
504
549
  groups: ['surfaceStyle'],
505
- ext: { overflowTarget: ROOT_TARGET }
550
+ ext: { overflowTarget: ROOT_TARGET },
551
+ omit: { surfaceStyle: TRANSFORM_FIELDS }
506
552
  },
507
553
  drawer: {
508
554
  // Panel portal ile düğüm kutusunun DIŞINA çizilir; yüzey panelin KÖKÜNDE
509
555
  // derlenir, taşma da panelin köküne iner (drawer ölçümü, 2026-10-05).
510
556
  groups: ['surfaceStyle'],
511
- ext: { overflowTarget: ROOT_TARGET }
557
+ ext: { overflowTarget: ROOT_TARGET },
558
+ omit: { surfaceStyle: TRANSFORM_FIELDS }
512
559
  },
513
560
  icon: {
514
561
  // Yalnız hover: surface çipin (chipShape/chipColor), typography da boyutun
@@ -541,6 +588,13 @@ export const NODE_SURFACE_TYPES = new Set([
541
588
  'qm-content',
542
589
  'qm-sidebar'
543
590
  ]);
591
+ /**
592
+ * `style`'ı kendi içeriğinin CSS'i olarak alan tipler: `html`in `style`'ı uzun metindir ve yazarın
593
+ * işaretlemesine kapsamlı girer — web'de emotion sınıfı (`html.functions.ts` `resolveHtmlStyleClass`),
594
+ * mobilde korumalı belgenin stil bloğu (plans/mobil-plantcare-acigi f-20). "Düz CSS string style"
595
+ * (PAGE-014) ve "ham CSS çizilmez" (MOB-002) uyarıları bu tiplerde yanlıştır.
596
+ */
597
+ export const DOCUMENT_STYLE_TYPES = new Set(['html']);
544
598
  const NODE_SURFACE_EXTENSION = { overflowTarget: ROOT_TARGET };
545
599
  /** Düğüm kutusuna inen yüzey; kap tipi değilse ya da grup boşsa yok. */
546
600
  export function composeNodeSurfaceStyle(type, surfaceStyle) {
@@ -580,7 +634,7 @@ const unwrapProp = (value) => {
580
634
  result[key] = unwrapProp(item);
581
635
  return result;
582
636
  };
583
- const rawProp = (props, name) => {
637
+ export const rawProp = (props, name) => {
584
638
  const prop = props?.[name];
585
639
  // İfadeye bağlı prop'un değeri çalışma anında oluşur, burada çözülemez.
586
640
  return prop && typeof prop === 'object' && 'data' in prop ? unwrapProp(prop.data) : undefined;