@cratis/scene.engine 4.25.0 → 4.26.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 (108) hide show
  1. package/dist/cjs/index.js +41 -0
  2. package/dist/cjs/index.js.map +1 -1
  3. package/dist/cjs/sampleData/SampleRandom.js +77 -0
  4. package/dist/cjs/sampleData/SampleRandom.js.map +1 -0
  5. package/dist/cjs/sampleData/describeSampleDataCatalog.js +61 -0
  6. package/dist/cjs/sampleData/describeSampleDataCatalog.js.map +1 -0
  7. package/dist/cjs/sampleData/findSampleDataSet.js +18 -0
  8. package/dist/cjs/sampleData/findSampleDataSet.js.map +1 -0
  9. package/dist/cjs/sampleData/findSampleRowLiterals.js +73 -0
  10. package/dist/cjs/sampleData/findSampleRowLiterals.js.map +1 -0
  11. package/dist/cjs/sampleData/generateSample.js +188 -0
  12. package/dist/cjs/sampleData/generateSample.js.map +1 -0
  13. package/dist/cjs/sampleData/inferSampleFieldKind.js +176 -0
  14. package/dist/cjs/sampleData/inferSampleFieldKind.js.map +1 -0
  15. package/dist/cjs/sampleData/resolveSampleData.js +107 -0
  16. package/dist/cjs/sampleData/resolveSampleData.js.map +1 -0
  17. package/dist/cjs/sampleData/sampleDataRules.js +26 -0
  18. package/dist/cjs/sampleData/sampleDataRules.js.map +1 -0
  19. package/dist/cjs/sampleData/sampleLocales.js +359 -0
  20. package/dist/cjs/sampleData/sampleLocales.js.map +1 -0
  21. package/dist/cjs/sampleData/validateSampleDataPack.js +44 -0
  22. package/dist/cjs/sampleData/validateSampleDataPack.js.map +1 -0
  23. package/dist/cjs/sampleData/validateSampleDataPackages.js +71 -0
  24. package/dist/cjs/sampleData/validateSampleDataPackages.js.map +1 -0
  25. package/dist/cjs/sampleData/validateSampleDataSelection.js +52 -0
  26. package/dist/cjs/sampleData/validateSampleDataSelection.js.map +1 -0
  27. package/dist/esm/index.d.ts +1 -0
  28. package/dist/esm/index.d.ts.map +1 -1
  29. package/dist/esm/index.js +12 -0
  30. package/dist/esm/index.js.map +1 -1
  31. package/dist/esm/sampleData/SampleDataPackSource.d.ts +6 -0
  32. package/dist/esm/sampleData/SampleDataPackSource.d.ts.map +1 -0
  33. package/dist/esm/sampleData/SampleDataPackSource.js +2 -0
  34. package/dist/esm/sampleData/SampleDataPackSource.js.map +1 -0
  35. package/dist/esm/sampleData/SampleDataResolution.d.ts +29 -0
  36. package/dist/esm/sampleData/SampleDataResolution.d.ts.map +1 -0
  37. package/dist/esm/sampleData/SampleDataResolution.js +2 -0
  38. package/dist/esm/sampleData/SampleDataResolution.js.map +1 -0
  39. package/dist/esm/sampleData/SampleRandom.d.ts +14 -0
  40. package/dist/esm/sampleData/SampleRandom.d.ts.map +1 -0
  41. package/dist/esm/sampleData/SampleRandom.js +72 -0
  42. package/dist/esm/sampleData/SampleRandom.js.map +1 -0
  43. package/dist/esm/sampleData/describeSampleDataCatalog.d.ts +24 -0
  44. package/dist/esm/sampleData/describeSampleDataCatalog.d.ts.map +1 -0
  45. package/dist/esm/sampleData/describeSampleDataCatalog.js +57 -0
  46. package/dist/esm/sampleData/describeSampleDataCatalog.js.map +1 -0
  47. package/dist/esm/sampleData/findSampleDataSet.d.ts +3 -0
  48. package/dist/esm/sampleData/findSampleDataSet.d.ts.map +1 -0
  49. package/dist/esm/sampleData/findSampleDataSet.js +16 -0
  50. package/dist/esm/sampleData/findSampleDataSet.js.map +1 -0
  51. package/dist/esm/sampleData/findSampleRowLiterals.d.ts +11 -0
  52. package/dist/esm/sampleData/findSampleRowLiterals.d.ts.map +1 -0
  53. package/dist/esm/sampleData/findSampleRowLiterals.js +69 -0
  54. package/dist/esm/sampleData/findSampleRowLiterals.js.map +1 -0
  55. package/dist/esm/sampleData/generateSample.d.ts +6 -0
  56. package/dist/esm/sampleData/generateSample.d.ts.map +1 -0
  57. package/dist/esm/sampleData/generateSample.js +183 -0
  58. package/dist/esm/sampleData/generateSample.js.map +1 -0
  59. package/dist/esm/sampleData/index.d.ts +15 -0
  60. package/dist/esm/sampleData/index.d.ts.map +1 -0
  61. package/dist/esm/sampleData/index.js +15 -0
  62. package/dist/esm/sampleData/index.js.map +1 -0
  63. package/dist/esm/sampleData/inferSampleFieldKind.d.ts +3 -0
  64. package/dist/esm/sampleData/inferSampleFieldKind.d.ts.map +1 -0
  65. package/dist/esm/sampleData/inferSampleFieldKind.js +174 -0
  66. package/dist/esm/sampleData/inferSampleFieldKind.js.map +1 -0
  67. package/dist/esm/sampleData/resolveSampleData.d.ts +3 -0
  68. package/dist/esm/sampleData/resolveSampleData.d.ts.map +1 -0
  69. package/dist/esm/sampleData/resolveSampleData.js +105 -0
  70. package/dist/esm/sampleData/resolveSampleData.js.map +1 -0
  71. package/dist/esm/sampleData/sampleDataRules.d.ts +7 -0
  72. package/dist/esm/sampleData/sampleDataRules.d.ts.map +1 -0
  73. package/dist/esm/sampleData/sampleDataRules.js +19 -0
  74. package/dist/esm/sampleData/sampleDataRules.js.map +1 -0
  75. package/dist/esm/sampleData/sampleLocales.d.ts +13 -0
  76. package/dist/esm/sampleData/sampleLocales.d.ts.map +1 -0
  77. package/dist/esm/sampleData/sampleLocales.js +355 -0
  78. package/dist/esm/sampleData/sampleLocales.js.map +1 -0
  79. package/dist/esm/sampleData/validateSampleDataPack.d.ts +3 -0
  80. package/dist/esm/sampleData/validateSampleDataPack.d.ts.map +1 -0
  81. package/dist/esm/sampleData/validateSampleDataPack.js +42 -0
  82. package/dist/esm/sampleData/validateSampleDataPack.js.map +1 -0
  83. package/dist/esm/sampleData/validateSampleDataPackages.d.ts +3 -0
  84. package/dist/esm/sampleData/validateSampleDataPackages.d.ts.map +1 -0
  85. package/dist/esm/sampleData/validateSampleDataPackages.js +69 -0
  86. package/dist/esm/sampleData/validateSampleDataPackages.js.map +1 -0
  87. package/dist/esm/sampleData/validateSampleDataSelection.d.ts +3 -0
  88. package/dist/esm/sampleData/validateSampleDataSelection.d.ts.map +1 -0
  89. package/dist/esm/sampleData/validateSampleDataSelection.js +50 -0
  90. package/dist/esm/sampleData/validateSampleDataSelection.js.map +1 -0
  91. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  92. package/index.ts +1 -0
  93. package/package.json +3 -3
  94. package/sampleData/SampleDataPackSource.ts +13 -0
  95. package/sampleData/SampleDataResolution.ts +93 -0
  96. package/sampleData/SampleRandom.ts +85 -0
  97. package/sampleData/describeSampleDataCatalog.ts +108 -0
  98. package/sampleData/findSampleDataSet.ts +18 -0
  99. package/sampleData/findSampleRowLiterals.ts +86 -0
  100. package/sampleData/generateSample.ts +156 -0
  101. package/sampleData/index.ts +17 -0
  102. package/sampleData/inferSampleFieldKind.ts +64 -0
  103. package/sampleData/resolveSampleData.ts +96 -0
  104. package/sampleData/sampleDataRules.ts +30 -0
  105. package/sampleData/sampleLocales.ts +91 -0
  106. package/sampleData/validateSampleDataPack.ts +48 -0
  107. package/sampleData/validateSampleDataPackages.ts +79 -0
  108. package/sampleData/validateSampleDataSelection.ts +55 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateSample.js","sources":["../../../sampleData/generateSample.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { SampleFieldKind, SampleShape, SampleShapeField } from '@cratis/scene.model';\nimport { inferSampleFieldKind } from './inferSampleFieldKind';\nimport { SampleLocale, sampleLocaleFor } from './sampleLocales';\nimport { SampleRandom, rowSeed } from './SampleRandom';\n\n/** The seed used when none is given, so previews are stable without any configuration. */\nexport const defaultSampleSeed = 1;\n\n/** How many rows are generated when no count is given. */\nexport const defaultSampleRowCount = 5;\n\n/** The most rows one call generates. */\nexport const maximumSampleRowCount = 1000;\n\n/** Days since 1970-01-01 of 2024-01-01, the anchor generated dates count forward from. */\nconst anchorDay = 19723;\n\n/** Generated dates fall within this many days after the anchor. */\nconst dateSpanDays = 731;\n\n/**\n * Generates `rowCount` rows of a shape, deterministically for a seed: the same shape, seed, row count and\n * locale yield the same rows (byte-identical once serialized) in the C# and TypeScript engines.\n *\n * Each row has its own generator (see {@link rowSeed}), so row `i` is the same however many rows are asked\n * for. Within a row the fields are generated in declaration order. A nullable field first draws whether it is\n * null (one in five is) and then always draws its value, so the sequence never depends on nullability\n * outcomes. Values follow the field's kind and locale; enum fields only ever produce one of their values,\n * dates stay within 2024-2025 and amounts have two decimals.\n *\n * @param shape The shape to generate rows for.\n * @param seed The seed; defaults to {@link defaultSampleSeed}.\n * @param rowCount The number of rows; defaults to {@link defaultSampleRowCount}, clamped to `[0, 1000]`.\n * @param locale The BCP 47 locale tag selecting names, cities and formats; unknown tags use the default pool.\n */\nexport function generateSample(shape: SampleShape, seed?: number, rowCount?: number, locale?: string): Record<string, unknown>[] {\n const count = Math.min(Math.max(Math.trunc(rowCount ?? defaultSampleRowCount), 0), maximumSampleRowCount);\n const effectiveSeed = (seed ?? defaultSampleSeed) >>> 0;\n const pool = sampleLocaleFor(locale);\n const rows: Record<string, unknown>[] = [];\n\n for (let index = 0; index < count; index++) {\n const random = new SampleRandom(rowSeed(effectiveSeed, shape.name, index));\n const row: Record<string, unknown> = {};\n for (const field of shape.fields) {\n const isNull = field.nullable === true && random.nextInt(5) === 0;\n const value = generateValue(field, inferSampleFieldKind(field), random, pool);\n row[field.name] = isNull ? null : value;\n }\n rows.push(row);\n }\n\n return rows;\n}\n\nfunction generateValue(field: SampleShapeField, kind: SampleFieldKind, random: SampleRandom, pool: SampleLocale): unknown {\n switch (kind) {\n case SampleFieldKind.Id:\n return generateId(random);\n case SampleFieldKind.Name:\n return `${random.pick(pool.firstNames)} ${random.pick(pool.lastNames)}`;\n case SampleFieldKind.Company:\n return random.pick(pool.companies);\n case SampleFieldKind.Email: {\n const first = random.pick(pool.firstNames);\n const last = random.pick(pool.lastNames);\n return `${slug(first)}.${slug(last)}@${random.pick(pool.domains)}`;\n }\n case SampleFieldKind.Phone:\n return [...pool.phoneTemplate].map(character => (character === '#' ? String(random.nextInt(10)) : character)).join('');\n case SampleFieldKind.City:\n return random.pick(pool.cities);\n case SampleFieldKind.Text: {\n const words = Array.from({ length: 3 + random.nextInt(4) }, () => random.pick(pool.words));\n return capitalize(words.join(' '));\n }\n case SampleFieldKind.WholeNumber: {\n const [low, high] = range(field.min, field.max, 0, 1000, Math.trunc);\n return low + random.nextInt(high - low + 1);\n }\n case SampleFieldKind.Amount: {\n const [low, high] = range(field.min, field.max, 10, 5000, value => Math.floor(value * 100 + 0.5));\n return (low + random.nextInt(high - low + 1)) / 100;\n }\n case SampleFieldKind.Boolean:\n return random.nextInt(2) === 1;\n case SampleFieldKind.Date:\n return formatDay(anchorDay + random.nextInt(dateSpanDays));\n case SampleFieldKind.DateTime: {\n const day = anchorDay + random.nextInt(dateSpanDays);\n const seconds = random.nextInt(86400);\n return `${formatDay(day)}T${pad(Math.floor(seconds / 3600))}:${pad(Math.floor(seconds / 60) % 60)}:${pad(seconds % 60)}Z`;\n }\n case SampleFieldKind.Enum:\n return field.enumValues !== undefined && field.enumValues !== null && field.enumValues.length > 0 ? random.pick(field.enumValues) : null;\n default:\n return null;\n }\n}\n\nfunction range(min: number | undefined, max: number | undefined, defaultMin: number, defaultMax: number, convert: (value: number) => number): [number, number] {\n const low = convert(min ?? defaultMin);\n const high = convert(max ?? defaultMax);\n return high < low ? [high, low] : [low, high];\n}\n\nfunction generateId(random: SampleRandom): string {\n const a = random.next();\n const b = ((random.next() & 0xFFFF0FFF) | 0x00004000) >>> 0;\n const c = ((random.next() & 0x3FFFFFFF) | 0x80000000) >>> 0;\n const d = random.next();\n return `${hex(a, 8)}-${hex(b >>> 16, 4)}-${hex(b & 0xFFFF, 4)}-${hex(c >>> 16, 4)}-${hex(c & 0xFFFF, 4)}${hex(d, 8)}`;\n}\n\nconst transliterations = new Map<string, string>([['æ', 'ae'], ['ø', 'o'], ['å', 'a'], ['ä', 'a'], ['ö', 'o'], ['ü', 'u'], ['ß', 'ss'], ['é', 'e']]);\n\nfunction slug(text: string): string {\n let result = '';\n for (const character of text.toLowerCase()) {\n const mapped = transliterations.get(character) ?? character;\n for (const part of mapped) {\n if ((part >= 'a' && part <= 'z') || (part >= '0' && part <= '9')) result += part;\n }\n }\n return result;\n}\n\nfunction capitalize(text: string): string {\n const first = text.charAt(0);\n return first >= 'a' && first <= 'z' ? first.toUpperCase() + text.slice(1) : text;\n}\n\nfunction hex(value: number, digits: number): string {\n return (value >>> 0).toString(16).padStart(digits, '0');\n}\n\nfunction pad(value: number): string {\n return value < 10 ? `0${value}` : String(value);\n}\n\n/** Formats days since 1970-01-01 as `yyyy-MM-dd` (Howard Hinnant's civil-from-days). */\nfunction formatDay(days: number): string {\n const shifted = days + 719468;\n const era = Math.floor(shifted / 146097);\n const dayOfEra = shifted - era * 146097;\n const yearOfEra = Math.floor((dayOfEra - Math.floor(dayOfEra / 1460) + Math.floor(dayOfEra / 36524) - Math.floor(dayOfEra / 146096)) / 365);\n const dayOfYear = dayOfEra - (365 * yearOfEra + Math.floor(yearOfEra / 4) - Math.floor(yearOfEra / 100));\n const monthPrime = Math.floor((5 * dayOfYear + 2) / 153);\n const day = dayOfYear - Math.floor((153 * monthPrime + 2) / 5) + 1;\n const month = monthPrime < 10 ? monthPrime + 3 : monthPrime - 9;\n const year = yearOfEra + era * 400 + (month <= 2 ? 1 : 0);\n return `${String(year).padStart(4, '0')}-${pad(month)}-${pad(day)}`;\n}\n"],"names":["defaultSampleSeed","defaultSampleRowCount","maximumSampleRowCount","anchorDay","dateSpanDays","generateSample","shape","seed","rowCount","locale","count","Math","min","max","trunc","effectiveSeed","pool","sampleLocaleFor","rows","index","random","SampleRandom","rowSeed","name","row","field","fields","isNull","nullable","nextInt","value","generateValue","inferSampleFieldKind","push","kind","SampleFieldKind","Id","generateId","Name","pick","firstNames","lastNames","Company","companies","Email","first","last","slug","domains","Phone","phoneTemplate","map","character","String","join","City","cities","Text","words","Array","from","length","capitalize","WholeNumber","low","high","range","Amount","floor","Boolean","Date","formatDay","DateTime","day","seconds","pad","Enum","enumValues","undefined","defaultMin","defaultMax","convert","a","next","b","c","d","hex","transliterations","Map","text","result","toLowerCase","mapped","get","part","charAt","toUpperCase","slice","digits","toString","padStart","days","shifted","era","dayOfEra","yearOfEra","dayOfYear","monthPrime","month","year"],"mappings":";;;;;AAAA;AACA;AAOA,2FACO,MAAMA,iBAAAA,GAAoB;AAEjC,2DACO,MAAMC,qBAAAA,GAAwB;AAErC,yCACO,MAAMC,qBAAAA,GAAwB;AAErC,2FACA,MAAMC,SAAAA,GAAY,KAAA;AAElB,oEACA,MAAMC,YAAAA,GAAe,GAAA;AAErB;;;;;;;;;;;;;;IAeO,SAASC,cAAAA,CAAeC,KAAkB,EAAEC,IAAa,EAAEC,QAAiB,EAAEC,MAAe,EAAA;AAChG,IAAA,MAAMC,KAAAA,GAAQC,IAAAA,CAAKC,GAAG,CAACD,IAAAA,CAAKE,GAAG,CAACF,IAAAA,CAAKG,KAAK,CAACN,QAAAA,IAAYP,qBAAAA,CAAAA,EAAwB,CAAA,CAAA,EAAIC,qBAAAA,CAAAA;AACnF,IAAA,MAAMa,aAAAA,GAAiBR,CAAAA,IAAAA,IAAQP,iBAAgB,MAAO,CAAA;AACtD,IAAA,MAAMgB,OAAOC,eAAAA,CAAgBR,MAAAA,CAAAA;AAC7B,IAAA,MAAMS,OAAkC,EAAE;AAE1C,IAAA,IAAK,IAAIC,KAAAA,GAAQ,CAAA,EAAGA,KAAAA,GAAQT,OAAOS,KAAAA,EAAAA,CAAS;AACxC,QAAA,MAAMC,SAAS,IAAIC,YAAAA,CAAaC,QAAQP,aAAAA,EAAeT,KAAAA,CAAMiB,IAAI,EAAEJ,KAAAA,CAAAA,CAAAA;AACnE,QAAA,MAAMK,MAA+B,EAAC;AACtC,QAAA,KAAK,MAAMC,KAAAA,IAASnB,KAAAA,CAAMoB,MAAM,CAAE;YAC9B,MAAMC,MAAAA,GAASF,MAAMG,QAAQ,KAAK,QAAQR,MAAAA,CAAOS,OAAO,CAAC,CAAA,CAAA,KAAO,CAAA;AAChE,YAAA,MAAMC,KAAAA,GAAQC,aAAAA,CAAcN,KAAAA,EAAOO,oBAAAA,CAAqBP,QAAQL,MAAAA,EAAQJ,IAAAA,CAAAA;AACxEQ,YAAAA,GAAG,CAACC,KAAAA,CAAMF,IAAI,CAAC,GAAGI,SAAS,IAAA,GAAOG,KAAAA;AACtC,QAAA;AACAZ,QAAAA,IAAAA,CAAKe,IAAI,CAACT,GAAAA,CAAAA;AACd,IAAA;IAEA,OAAON,IAAAA;AACX;AAEA,SAASa,cAAcN,KAAuB,EAAES,IAAqB,EAAEd,MAAoB,EAAEJ,IAAkB,EAAA;IAC3G,OAAQkB,IAAAA;AACJ,QAAA,KAAKC,gBAAgBC,EAAE;AACnB,YAAA,OAAOC,UAAAA,CAAWjB,MAAAA,CAAAA;AACtB,QAAA,KAAKe,gBAAgBG,IAAI;AACrB,YAAA,OAAO,CAAA,EAAGlB,MAAAA,CAAOmB,IAAI,CAACvB,KAAKwB,UAAU,CAAA,CAAE,CAAC,EAAEpB,MAAAA,CAAOmB,IAAI,CAACvB,IAAAA,CAAKyB,SAAS,CAAA,CAAA,CAAG;AAC3E,QAAA,KAAKN,gBAAgBO,OAAO;AACxB,YAAA,OAAOtB,MAAAA,CAAOmB,IAAI,CAACvB,IAAAA,CAAK2B,SAAS,CAAA;AACrC,QAAA,KAAKR,gBAAgBS,KAAK;AAAE,YAAA;AACxB,gBAAA,MAAMC,KAAAA,GAAQzB,MAAAA,CAAOmB,IAAI,CAACvB,KAAKwB,UAAU,CAAA;AACzC,gBAAA,MAAMM,IAAAA,GAAO1B,MAAAA,CAAOmB,IAAI,CAACvB,KAAKyB,SAAS,CAAA;AACvC,gBAAA,OAAO,CAAA,EAAGM,IAAAA,CAAKF,KAAAA,CAAAA,CAAO,CAAC,EAAEE,IAAAA,CAAKD,IAAAA,CAAAA,CAAM,CAAC,EAAE1B,MAAAA,CAAOmB,IAAI,CAACvB,IAAAA,CAAKgC,OAAO,CAAA,CAAA,CAAG;AACtE,YAAA;AACA,QAAA,KAAKb,gBAAgBc,KAAK;YACtB,OAAO;AAAIjC,gBAAAA,GAAAA,IAAAA,CAAKkC;AAAc,aAAA,CAACC,GAAG,CAACC,CAAAA,SAAAA,GAAcA,SAAAA,KAAc,GAAA,GAAMC,MAAAA,CAAOjC,MAAAA,CAAOS,OAAO,CAAC,EAAA,CAAA,CAAA,GAAOuB,SAAAA,CAAAA,CAAYE,IAAI,CAAC,EAAA,CAAA;AACvH,QAAA,KAAKnB,gBAAgBoB,IAAI;AACrB,YAAA,OAAOnC,MAAAA,CAAOmB,IAAI,CAACvB,IAAAA,CAAKwC,MAAM,CAAA;AAClC,QAAA,KAAKrB,gBAAgBsB,IAAI;AAAE,YAAA;gBACvB,MAAMC,KAAAA,GAAQC,KAAAA,CAAMC,IAAI,CAAC;oBAAEC,MAAAA,EAAQ,CAAA,GAAIzC,MAAAA,CAAOS,OAAO,CAAC,CAAA;AAAG,iBAAA,EAAG,IAAMT,MAAAA,CAAOmB,IAAI,CAACvB,KAAK0C,KAAK,CAAA,CAAA;gBACxF,OAAOI,UAAAA,CAAWJ,KAAAA,CAAMJ,IAAI,CAAC,GAAA,CAAA,CAAA;AACjC,YAAA;AACA,QAAA,KAAKnB,gBAAgB4B,WAAW;AAAE,YAAA;AAC9B,gBAAA,MAAM,CAACC,GAAAA,EAAKC,IAAAA,CAAK,GAAGC,MAAMzC,KAAAA,CAAMb,GAAG,EAAEa,KAAAA,CAAMZ,GAAG,EAAE,CAAA,EAAG,IAAA,EAAMF,KAAKG,KAAK,CAAA;AACnE,gBAAA,OAAOkD,GAAAA,GAAM5C,MAAAA,CAAOS,OAAO,CAACoC,OAAOD,GAAAA,GAAM,CAAA,CAAA;AAC7C,YAAA;AACA,QAAA,KAAK7B,gBAAgBgC,MAAM;AAAE,YAAA;AACzB,gBAAA,MAAM,CAACH,GAAAA,EAAKC,IAAAA,CAAK,GAAGC,KAAAA,CAAMzC,KAAAA,CAAMb,GAAG,EAAEa,KAAAA,CAAMZ,GAAG,EAAE,EAAA,EAAI,MAAMiB,CAAAA,KAAAA,GAASnB,KAAKyD,KAAK,CAACtC,QAAQ,GAAA,GAAM,GAAA,CAAA,CAAA;gBAC5F,OAAQkC,CAAAA,GAAAA,GAAM5C,MAAAA,CAAOS,OAAO,CAACoC,IAAAA,GAAOD,GAAAA,GAAM,CAAA,CAAC,IAAK,GAAA;AACpD,YAAA;AACA,QAAA,KAAK7B,gBAAgBkC,OAAO;YACxB,OAAOjD,MAAAA,CAAOS,OAAO,CAAC,CAAA,CAAA,KAAO,CAAA;AACjC,QAAA,KAAKM,gBAAgBmC,IAAI;AACrB,YAAA,OAAOC,SAAAA,CAAUpE,SAAAA,GAAYiB,MAAAA,CAAOS,OAAO,CAACzB,YAAAA,CAAAA,CAAAA;AAChD,QAAA,KAAK+B,gBAAgBqC,QAAQ;AAAE,YAAA;AAC3B,gBAAA,MAAMC,GAAAA,GAAMtE,SAAAA,GAAYiB,MAAAA,CAAOS,OAAO,CAACzB,YAAAA,CAAAA;gBACvC,MAAMsE,OAAAA,GAAUtD,MAAAA,CAAOS,OAAO,CAAC,KAAA,CAAA;gBAC/B,OAAO,CAAA,EAAG0C,SAAAA,CAAUE,GAAAA,CAAAA,CAAK,CAAC,EAAEE,GAAAA,CAAIhE,IAAAA,CAAKyD,KAAK,CAACM,OAAAA,GAAU,IAAA,CAAA,CAAA,CAAO,CAAC,EAAEC,IAAIhE,IAAAA,CAAKyD,KAAK,CAACM,OAAAA,GAAU,EAAA,CAAA,GAAM,EAAA,CAAA,CAAI,CAAC,EAAEC,GAAAA,CAAID,OAAAA,GAAU,EAAA,CAAA,CAAI,CAAC,CAAC;AAC7H,YAAA;AACA,QAAA,KAAKvC,gBAAgByC,IAAI;AACrB,YAAA,OAAOnD,MAAMoD,UAAU,KAAKC,aAAarD,KAAAA,CAAMoD,UAAU,KAAK,IAAA,IAAQpD,KAAAA,CAAMoD,UAAU,CAAChB,MAAM,GAAG,CAAA,GAAIzC,MAAAA,CAAOmB,IAAI,CAACd,KAAAA,CAAMoD,UAAU,CAAA,GAAI,IAAA;AACxI,QAAA;YACI,OAAO,IAAA;AACf;AACJ;AAEA,SAASX,KAAAA,CAAMtD,GAAuB,EAAEC,GAAuB,EAAEkE,UAAkB,EAAEC,UAAkB,EAAEC,OAAkC,EAAA;IACvI,MAAMjB,GAAAA,GAAMiB,QAAQrE,GAAAA,IAAOmE,UAAAA,CAAAA;IAC3B,MAAMd,IAAAA,GAAOgB,QAAQpE,GAAAA,IAAOmE,UAAAA,CAAAA;AAC5B,IAAA,OAAOf,OAAOD,GAAAA,GAAM;AAACC,QAAAA,IAAAA;AAAMD,QAAAA;KAAI,GAAG;AAACA,QAAAA,GAAAA;AAAKC,QAAAA;AAAK,KAAA;AACjD;AAEA,SAAS5B,WAAWjB,MAAoB,EAAA;IACpC,MAAM8D,CAAAA,GAAI9D,OAAO+D,IAAI,EAAA;IACrB,MAAMC,CAAAA,GAAI,CAAEhE,OAAO+D,IAAI,EAAA,GAAK,UAAA,GAAc,UAAS,MAAO,CAAA;IAC1D,MAAME,CAAAA,GAAI,CAAEjE,OAAO+D,IAAI,EAAA,GAAK,UAAA,GAAc,UAAS,MAAO,CAAA;IAC1D,MAAMG,CAAAA,GAAIlE,OAAO+D,IAAI,EAAA;AACrB,IAAA,OAAO,CAAA,EAAGI,GAAAA,CAAIL,CAAAA,EAAG,CAAA,CAAA,CAAG,CAAC,EAAEK,GAAAA,CAAIH,CAAAA,KAAM,EAAA,EAAI,CAAA,CAAA,CAAG,CAAC,EAAEG,IAAIH,CAAAA,GAAI,MAAA,EAAQ,CAAA,CAAA,CAAG,CAAC,EAAEG,GAAAA,CAAIF,CAAAA,KAAM,EAAA,EAAI,CAAA,CAAA,CAAG,CAAC,EAAEE,GAAAA,CAAIF,CAAAA,GAAI,MAAA,EAAQ,CAAA,CAAA,CAAA,EAAKE,GAAAA,CAAID,GAAG,CAAA,CAAA,CAAA,CAAI;AACzH;AAEA,MAAME,gBAAAA,GAAmB,IAAIC,GAAAA,CAAoB;AAAC,IAAA;AAAC,QAAA,GAAA;AAAK,QAAA;AAAK,KAAA;AAAE,IAAA;AAAC,QAAA,GAAA;AAAK,QAAA;AAAI,KAAA;AAAE,IAAA;AAAC,QAAA,GAAA;AAAK,QAAA;AAAI,KAAA;AAAE,IAAA;AAAC,QAAA,GAAA;AAAK,QAAA;AAAI,KAAA;AAAE,IAAA;AAAC,QAAA,GAAA;AAAK,QAAA;AAAI,KAAA;AAAE,IAAA;AAAC,QAAA,GAAA;AAAK,QAAA;AAAI,KAAA;AAAE,IAAA;AAAC,QAAA,GAAA;AAAK,QAAA;AAAK,KAAA;AAAE,IAAA;AAAC,QAAA,GAAA;AAAK,QAAA;AAAI;AAAC,CAAA,CAAA;AAEnJ,SAAS1C,KAAK2C,IAAY,EAAA;AACtB,IAAA,IAAIC,MAAAA,GAAS,EAAA;AACb,IAAA,KAAK,MAAMvC,SAAAA,IAAasC,IAAAA,CAAKE,WAAW,EAAA,CAAI;AACxC,QAAA,MAAMC,MAAAA,GAASL,gBAAAA,CAAiBM,GAAG,CAAC1C,SAAAA,CAAAA,IAAcA,SAAAA;QAClD,KAAK,MAAM2C,QAAQF,MAAAA,CAAQ;YACvB,IAAKE,QAAQ,GAAA,IAAOA,IAAAA,IAAQ,OAASA,IAAAA,IAAQ,GAAA,IAAOA,IAAAA,IAAQ,GAAA,EAAMJ,MAAAA,IAAUI,IAAAA;AAChF,QAAA;AACJ,IAAA;IACA,OAAOJ,MAAAA;AACX;AAEA,SAAS7B,WAAW4B,IAAY,EAAA;IAC5B,MAAM7C,KAAAA,GAAQ6C,IAAAA,CAAKM,MAAM,CAAC,CAAA,CAAA;IAC1B,OAAOnD,KAAAA,IAAS,GAAA,IAAOA,KAAAA,IAAS,GAAA,GAAMA,KAAAA,CAAMoD,WAAW,EAAA,GAAKP,IAAAA,CAAKQ,KAAK,CAAC,CAAA,CAAA,GAAKR,IAAAA;AAChF;AAEA,SAASH,GAAAA,CAAIzD,KAAa,EAAEqE,MAAc,EAAA;IACtC,OAAQrE,CAAAA,KAAAA,KAAU,CAAA,EAAGsE,QAAQ,CAAC,EAAA,CAAA,CAAIC,QAAQ,CAACF,MAAAA,EAAQ,GAAA,CAAA;AACvD;AAEA,SAASxB,IAAI7C,KAAa,EAAA;AACtB,IAAA,OAAOA,QAAQ,EAAA,GAAK,CAAC,CAAC,EAAEA,KAAAA,CAAAA,CAAO,GAAGuB,MAAAA,CAAOvB,KAAAA,CAAAA;AAC7C;AAEA,yFACA,SAASyC,SAAAA,CAAU+B,IAAY,EAAA;AAC3B,IAAA,MAAMC,UAAUD,IAAAA,GAAO,MAAA;AACvB,IAAA,MAAME,GAAAA,GAAM7F,IAAAA,CAAKyD,KAAK,CAACmC,OAAAA,GAAU,MAAA,CAAA;IACjC,MAAME,QAAAA,GAAWF,UAAUC,GAAAA,GAAM,MAAA;IACjC,MAAME,SAAAA,GAAY/F,KAAKyD,KAAK,CAAC,CAACqC,QAAAA,GAAW9F,IAAAA,CAAKyD,KAAK,CAACqC,QAAAA,GAAW,QAAQ9F,IAAAA,CAAKyD,KAAK,CAACqC,QAAAA,GAAW,KAAA,CAAA,GAAS9F,KAAKyD,KAAK,CAACqC,QAAAA,GAAW,MAAA,CAAM,IAAK,GAAA,CAAA;AACvI,IAAA,MAAME,SAAAA,GAAYF,QAAAA,IAAY,GAAA,GAAMC,YAAY/F,IAAAA,CAAKyD,KAAK,CAACsC,SAAAA,GAAY,CAAA,CAAA,GAAK/F,IAAAA,CAAKyD,KAAK,CAACsC,YAAY,GAAA,CAAG,CAAA;IACtG,MAAME,UAAAA,GAAajG,KAAKyD,KAAK,CAAC,CAAC,CAAA,GAAIuC,SAAAA,GAAY,CAAA,IAAK,GAAA,CAAA;IACpD,MAAMlC,GAAAA,GAAMkC,SAAAA,GAAYhG,IAAAA,CAAKyD,KAAK,CAAC,CAAC,GAAA,GAAMwC,UAAAA,GAAa,CAAA,IAAK,CAAA,CAAA,GAAK,CAAA;AACjE,IAAA,MAAMC,KAAAA,GAAQD,UAAAA,GAAa,EAAA,GAAKA,UAAAA,GAAa,IAAIA,UAAAA,GAAa,CAAA;IAC9D,MAAME,IAAAA,GAAOJ,YAAYF,GAAAA,GAAM,GAAA,IAAOK,KAAAA,IAAS,CAAA,GAAI,IAAI,CAAA,CAAA;AACvD,IAAA,OAAO,CAAA,EAAGxD,MAAAA,CAAOyD,IAAAA,CAAAA,CAAMT,QAAQ,CAAC,CAAA,EAAG,GAAA,CAAA,CAAK,CAAC,EAAE1B,GAAAA,CAAIkC,KAAAA,CAAAA,CAAO,CAAC,EAAElC,IAAIF,GAAAA,CAAAA,CAAAA,CAAM;AACvE;;"}
@@ -0,0 +1,15 @@
1
+ export * from './SampleRandom';
2
+ export * from './sampleLocales';
3
+ export * from './inferSampleFieldKind';
4
+ export * from './generateSample';
5
+ export * from './SampleDataResolution';
6
+ export * from './findSampleDataSet';
7
+ export * from './resolveSampleData';
8
+ export * from './sampleDataRules';
9
+ export * from './validateSampleDataPack';
10
+ export * from './validateSampleDataSelection';
11
+ export * from './SampleDataPackSource';
12
+ export * from './validateSampleDataPackages';
13
+ export * from './describeSampleDataCatalog';
14
+ export * from './findSampleRowLiterals';
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../sampleData/index.ts"],"names":[],"mappings":"AAGA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC"}
@@ -0,0 +1,15 @@
1
+ export * from './SampleRandom';
2
+ export * from './sampleLocales';
3
+ export * from './inferSampleFieldKind';
4
+ export * from './generateSample';
5
+ export * from './SampleDataResolution';
6
+ export * from './findSampleDataSet';
7
+ export * from './resolveSampleData';
8
+ export * from './sampleDataRules';
9
+ export * from './validateSampleDataPack';
10
+ export * from './validateSampleDataSelection';
11
+ export * from './SampleDataPackSource';
12
+ export * from './validateSampleDataPackages';
13
+ export * from './describeSampleDataCatalog';
14
+ export * from './findSampleRowLiterals';
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../sampleData/index.ts"],"names":[],"mappings":"AAGA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { SampleFieldKind, SampleShapeField } from '@cratis/scene.model';
2
+ export declare function inferSampleFieldKind(field: SampleShapeField): SampleFieldKind;
3
+ //# sourceMappingURL=inferSampleFieldKind.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inferSampleFieldKind.d.ts","sourceRoot":"","sources":["../../../sampleData/inferSampleFieldKind.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AA2CxE,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,gBAAgB,GAAG,eAAe,CAiB7E"}
@@ -0,0 +1,174 @@
1
+ import { SampleFieldKind } from '@cratis/scene.model';
2
+
3
+ // Copyright (c) Cratis. All rights reserved.
4
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
5
+ const typeKinds = new Map([
6
+ [
7
+ 'guid',
8
+ SampleFieldKind.Id
9
+ ],
10
+ [
11
+ 'uuid',
12
+ SampleFieldKind.Id
13
+ ],
14
+ [
15
+ 'int',
16
+ SampleFieldKind.WholeNumber
17
+ ],
18
+ [
19
+ 'int16',
20
+ SampleFieldKind.WholeNumber
21
+ ],
22
+ [
23
+ 'int32',
24
+ SampleFieldKind.WholeNumber
25
+ ],
26
+ [
27
+ 'int64',
28
+ SampleFieldKind.WholeNumber
29
+ ],
30
+ [
31
+ 'short',
32
+ SampleFieldKind.WholeNumber
33
+ ],
34
+ [
35
+ 'long',
36
+ SampleFieldKind.WholeNumber
37
+ ],
38
+ [
39
+ 'integer',
40
+ SampleFieldKind.WholeNumber
41
+ ],
42
+ [
43
+ 'number',
44
+ SampleFieldKind.WholeNumber
45
+ ],
46
+ [
47
+ 'decimal',
48
+ SampleFieldKind.Amount
49
+ ],
50
+ [
51
+ 'double',
52
+ SampleFieldKind.Amount
53
+ ],
54
+ [
55
+ 'float',
56
+ SampleFieldKind.Amount
57
+ ],
58
+ [
59
+ 'single',
60
+ SampleFieldKind.Amount
61
+ ],
62
+ [
63
+ 'money',
64
+ SampleFieldKind.Amount
65
+ ],
66
+ [
67
+ 'currency',
68
+ SampleFieldKind.Amount
69
+ ],
70
+ [
71
+ 'bool',
72
+ SampleFieldKind.Boolean
73
+ ],
74
+ [
75
+ 'boolean',
76
+ SampleFieldKind.Boolean
77
+ ],
78
+ [
79
+ 'date',
80
+ SampleFieldKind.Date
81
+ ],
82
+ [
83
+ 'dateonly',
84
+ SampleFieldKind.Date
85
+ ],
86
+ [
87
+ 'datetime',
88
+ SampleFieldKind.DateTime
89
+ ],
90
+ [
91
+ 'datetimeoffset',
92
+ SampleFieldKind.DateTime
93
+ ],
94
+ [
95
+ 'timestamp',
96
+ SampleFieldKind.DateTime
97
+ ]
98
+ ]);
99
+ const nameKinds = [
100
+ [
101
+ [
102
+ 'email'
103
+ ],
104
+ SampleFieldKind.Email
105
+ ],
106
+ [
107
+ [
108
+ 'phone',
109
+ 'mobile'
110
+ ],
111
+ SampleFieldKind.Phone
112
+ ],
113
+ [
114
+ [
115
+ 'company',
116
+ 'organization',
117
+ 'organisation'
118
+ ],
119
+ SampleFieldKind.Company
120
+ ],
121
+ [
122
+ [
123
+ 'city',
124
+ 'town'
125
+ ],
126
+ SampleFieldKind.City
127
+ ],
128
+ [
129
+ [
130
+ 'product',
131
+ 'item',
132
+ 'title',
133
+ 'subject',
134
+ 'description'
135
+ ],
136
+ SampleFieldKind.Text
137
+ ],
138
+ [
139
+ [
140
+ 'name',
141
+ 'customer',
142
+ 'assignee',
143
+ 'owner',
144
+ 'author',
145
+ 'contact',
146
+ 'manager',
147
+ 'employee'
148
+ ],
149
+ SampleFieldKind.Name
150
+ ]
151
+ ];
152
+ /**
153
+ * The kind of value to generate for a field. An explicit `kind` wins; otherwise a field with `enumValues` is
154
+ * an enum, a recognised `type` decides, and failing that the field's name does (an `Id` suffix, `email`,
155
+ * `phone`, `company`, `city`, person-like names), with free text as the fallback. A trailing `?` on the type
156
+ * is ignored and type names compare case-insensitively.
157
+ */ function inferSampleFieldKind(field) {
158
+ if (field.kind !== undefined && field.kind !== null) return field.kind;
159
+ if (field.enumValues !== undefined && field.enumValues !== null && field.enumValues.length > 0) return SampleFieldKind.Enum;
160
+ let type = (field.type ?? '').trim().toLowerCase();
161
+ if (type.endsWith('?')) type = type.slice(0, -1);
162
+ const byType = typeKinds.get(type);
163
+ if (byType !== undefined) return byType;
164
+ const name = field.name ?? '';
165
+ const lower = name.toLowerCase();
166
+ if (lower === 'id' || name.length > 2 && name.endsWith('Id')) return SampleFieldKind.Id;
167
+ for (const [fragments, kind] of nameKinds){
168
+ if (fragments.some((fragment)=>lower.includes(fragment))) return kind;
169
+ }
170
+ return SampleFieldKind.Text;
171
+ }
172
+
173
+ export { inferSampleFieldKind };
174
+ //# sourceMappingURL=inferSampleFieldKind.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inferSampleFieldKind.js","sources":["../../../sampleData/inferSampleFieldKind.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { SampleFieldKind, SampleShapeField } from '@cratis/scene.model';\n\nconst typeKinds = new Map<string, SampleFieldKind>([\n ['guid', SampleFieldKind.Id],\n ['uuid', SampleFieldKind.Id],\n ['int', SampleFieldKind.WholeNumber],\n ['int16', SampleFieldKind.WholeNumber],\n ['int32', SampleFieldKind.WholeNumber],\n ['int64', SampleFieldKind.WholeNumber],\n ['short', SampleFieldKind.WholeNumber],\n ['long', SampleFieldKind.WholeNumber],\n ['integer', SampleFieldKind.WholeNumber],\n ['number', SampleFieldKind.WholeNumber],\n ['decimal', SampleFieldKind.Amount],\n ['double', SampleFieldKind.Amount],\n ['float', SampleFieldKind.Amount],\n ['single', SampleFieldKind.Amount],\n ['money', SampleFieldKind.Amount],\n ['currency', SampleFieldKind.Amount],\n ['bool', SampleFieldKind.Boolean],\n ['boolean', SampleFieldKind.Boolean],\n ['date', SampleFieldKind.Date],\n ['dateonly', SampleFieldKind.Date],\n ['datetime', SampleFieldKind.DateTime],\n ['datetimeoffset', SampleFieldKind.DateTime],\n ['timestamp', SampleFieldKind.DateTime],\n]);\n\nconst nameKinds: [string[], SampleFieldKind][] = [\n [['email'], SampleFieldKind.Email],\n [['phone', 'mobile'], SampleFieldKind.Phone],\n [['company', 'organization', 'organisation'], SampleFieldKind.Company],\n [['city', 'town'], SampleFieldKind.City],\n [['product', 'item', 'title', 'subject', 'description'], SampleFieldKind.Text],\n [['name', 'customer', 'assignee', 'owner', 'author', 'contact', 'manager', 'employee'], SampleFieldKind.Name],\n];\n\n/**\n * The kind of value to generate for a field. An explicit `kind` wins; otherwise a field with `enumValues` is\n * an enum, a recognised `type` decides, and failing that the field's name does (an `Id` suffix, `email`,\n * `phone`, `company`, `city`, person-like names), with free text as the fallback. A trailing `?` on the type\n * is ignored and type names compare case-insensitively.\n */\nexport function inferSampleFieldKind(field: SampleShapeField): SampleFieldKind {\n if (field.kind !== undefined && field.kind !== null) return field.kind as SampleFieldKind;\n if (field.enumValues !== undefined && field.enumValues !== null && field.enumValues.length > 0) return SampleFieldKind.Enum;\n\n let type = (field.type ?? '').trim().toLowerCase();\n if (type.endsWith('?')) type = type.slice(0, -1);\n const byType = typeKinds.get(type);\n if (byType !== undefined) return byType;\n\n const name = field.name ?? '';\n const lower = name.toLowerCase();\n if (lower === 'id' || (name.length > 2 && name.endsWith('Id'))) return SampleFieldKind.Id;\n for (const [fragments, kind] of nameKinds) {\n if (fragments.some(fragment => lower.includes(fragment))) return kind;\n }\n\n return SampleFieldKind.Text;\n}\n"],"names":["typeKinds","Map","SampleFieldKind","Id","WholeNumber","Amount","Boolean","Date","DateTime","nameKinds","Email","Phone","Company","City","Text","Name","inferSampleFieldKind","field","kind","undefined","enumValues","length","Enum","type","trim","toLowerCase","endsWith","slice","byType","get","name","lower","fragments","some","fragment","includes"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { SampleDataContext, SampleDataRequest, SampleDataResolution } from './SampleDataResolution';
2
+ export declare function resolveSampleData(request: SampleDataRequest, context: SampleDataContext): SampleDataResolution;
3
+ //# sourceMappingURL=resolveSampleData.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveSampleData.d.ts","sourceRoot":"","sources":["../../../sampleData/resolveSampleData.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,iBAAiB,EAAwB,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAmB1H,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,iBAAiB,GAAG,oBAAoB,CA2D9G"}
@@ -0,0 +1,105 @@
1
+ import { generateSample } from './generateSample.js';
2
+ import { defaultSampleLocale } from './sampleLocales.js';
3
+ import { findSampleDataSet } from './findSampleDataSet.js';
4
+
5
+ // Copyright (c) Cratis. All rights reserved.
6
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
7
+ /**
8
+ * Resolves the rows to show for a read model or shape at design or preview time, by the order of spec §11.2:
9
+ *
10
+ * 1. the pack bound to the target (`profile.sampleData.bindings`, a rare override);
11
+ * 2. the application's active pack: the UI profile's `sampleData.activePack`, chosen once for the whole
12
+ * application, or the session-only override (`context.sessionActivePack`) the preview strip sets;
13
+ * 3. the default pack of the blueprint the template came from (`blueprintDefaultPack`);
14
+ * 4. generated data typed by field kind ({@link generateSample}), when the request carries a shape.
15
+ *
16
+ * A pack supplies rows when it has a set for the target, by an explicit `shape → read model` mapping or else by
17
+ * name ({@link findSampleDataSet}). A rung that cannot supply rows falls through to the next; an unknown pack
18
+ * id, or a bound pack without the target's shape, is reported in `diagnostics` (an active or blueprint pack
19
+ * that merely lacks the shape is normal and not reported). The locale carried is the supplying pack's; for
20
+ * generated data it is the first existing bound, active or blueprint pack's, else `context.locale`.
21
+ *
22
+ * Outside design and preview (`context.isDesignOrPreview` not true) nothing resolves (spec SD6).
23
+ */ function resolveSampleData(request, context) {
24
+ const target = request.target ?? request.shape?.name ?? '';
25
+ const fallbackLocale = context.locale ?? defaultSampleLocale;
26
+ const diagnostics = [];
27
+ if (context.isDesignOrPreview !== true) {
28
+ return {
29
+ source: 'disabled',
30
+ locale: fallbackLocale,
31
+ rows: [],
32
+ diagnostics
33
+ };
34
+ }
35
+ const packs = context.packs ?? [];
36
+ const selection = context.profile?.sampleData;
37
+ const mappings = selection?.mappings ?? [];
38
+ const find = (id)=>id === undefined || id === null ? undefined : packs.find((pack)=>pack.id === id);
39
+ const missing = (id, role)=>{
40
+ diagnostics.push({
41
+ code: 'packNotFound',
42
+ message: `The ${role} sample data pack '${id}' is not available`
43
+ });
44
+ };
45
+ const bindingPackId = (selection?.bindings ?? []).find((binding)=>binding.target === target)?.pack;
46
+ const bindingPack = find(bindingPackId);
47
+ if (bindingPackId !== undefined && bindingPack === undefined) {
48
+ missing(bindingPackId, `bound`);
49
+ } else if (bindingPack !== undefined) {
50
+ const set = findSampleDataSet(bindingPack, target, mappings);
51
+ if (set !== undefined) return fromSet('binding', bindingPack, set.shape, set.rows, diagnostics);
52
+ diagnostics.push({
53
+ code: 'shapeNotInPack',
54
+ message: `The bound sample data pack '${bindingPack.id}' has no rows for '${target}'`
55
+ });
56
+ }
57
+ const sessionPackId = context.sessionActivePack;
58
+ const chosenPackId = sessionPackId !== undefined ? sessionPackId : selection?.activePack;
59
+ const activePackId = chosenPackId === '' ? undefined : chosenPackId;
60
+ const activePack = find(activePackId);
61
+ if (activePackId !== undefined && activePackId !== null && activePack === undefined) {
62
+ missing(activePackId, 'active');
63
+ } else if (activePack !== undefined) {
64
+ const set = findSampleDataSet(activePack, target, mappings);
65
+ if (set !== undefined) return fromSet('activePack', activePack, set.shape, set.rows, diagnostics);
66
+ }
67
+ const blueprintPackId = context.blueprintDefaultPack;
68
+ const blueprintPack = find(blueprintPackId);
69
+ if (blueprintPackId !== undefined && blueprintPackId !== null && blueprintPack === undefined) {
70
+ missing(blueprintPackId, 'blueprint default');
71
+ } else if (blueprintPack !== undefined) {
72
+ const set = findSampleDataSet(blueprintPack, target, mappings);
73
+ if (set !== undefined) return fromSet('blueprintDefault', blueprintPack, set.shape, set.rows, diagnostics);
74
+ }
75
+ const locale = bindingPack?.locale ?? activePack?.locale ?? blueprintPack?.locale ?? fallbackLocale;
76
+ if (request.shape === undefined) {
77
+ return {
78
+ source: 'none',
79
+ locale,
80
+ shape: target,
81
+ rows: [],
82
+ diagnostics
83
+ };
84
+ }
85
+ return {
86
+ source: 'generated',
87
+ locale,
88
+ shape: request.shape.name,
89
+ rows: generateSample(request.shape, context.seed, context.rowCount, locale),
90
+ diagnostics
91
+ };
92
+ }
93
+ function fromSet(source, pack, shape, rows, diagnostics) {
94
+ return {
95
+ source,
96
+ pack: pack.id,
97
+ locale: pack.locale,
98
+ shape,
99
+ rows: structuredClone(rows),
100
+ diagnostics
101
+ };
102
+ }
103
+
104
+ export { resolveSampleData };
105
+ //# sourceMappingURL=resolveSampleData.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveSampleData.js","sources":["../../../sampleData/resolveSampleData.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { SampleDataPack } from '@cratis/scene.model';\nimport { generateSample } from './generateSample';\nimport { defaultSampleLocale } from './sampleLocales';\nimport { findSampleDataSet } from './findSampleDataSet';\nimport { SampleDataContext, SampleDataDiagnostic, SampleDataRequest, SampleDataResolution } from './SampleDataResolution';\n\n/**\n * Resolves the rows to show for a read model or shape at design or preview time, by the order of spec §11.2:\n *\n * 1. the pack bound to the target (`profile.sampleData.bindings`, a rare override);\n * 2. the application's active pack: the UI profile's `sampleData.activePack`, chosen once for the whole\n * application, or the session-only override (`context.sessionActivePack`) the preview strip sets;\n * 3. the default pack of the blueprint the template came from (`blueprintDefaultPack`);\n * 4. generated data typed by field kind ({@link generateSample}), when the request carries a shape.\n *\n * A pack supplies rows when it has a set for the target, by an explicit `shape → read model` mapping or else by\n * name ({@link findSampleDataSet}). A rung that cannot supply rows falls through to the next; an unknown pack\n * id, or a bound pack without the target's shape, is reported in `diagnostics` (an active or blueprint pack\n * that merely lacks the shape is normal and not reported). The locale carried is the supplying pack's; for\n * generated data it is the first existing bound, active or blueprint pack's, else `context.locale`.\n *\n * Outside design and preview (`context.isDesignOrPreview` not true) nothing resolves (spec SD6).\n */\nexport function resolveSampleData(request: SampleDataRequest, context: SampleDataContext): SampleDataResolution {\n const target = request.target ?? request.shape?.name ?? '';\n const fallbackLocale = context.locale ?? defaultSampleLocale;\n const diagnostics: SampleDataDiagnostic[] = [];\n\n if (context.isDesignOrPreview !== true) {\n return { source: 'disabled', locale: fallbackLocale, rows: [], diagnostics };\n }\n\n const packs = context.packs ?? [];\n const selection = context.profile?.sampleData;\n const mappings = selection?.mappings ?? [];\n const find = (id: string | null | undefined): SampleDataPack | undefined => (id === undefined || id === null ? undefined : packs.find(pack => pack.id === id));\n const missing = (id: string, role: string): void => {\n diagnostics.push({ code: 'packNotFound', message: `The ${role} sample data pack '${id}' is not available` });\n };\n\n const bindingPackId = (selection?.bindings ?? []).find(binding => binding.target === target)?.pack;\n const bindingPack = find(bindingPackId);\n if (bindingPackId !== undefined && bindingPack === undefined) {\n missing(bindingPackId, `bound`);\n } else if (bindingPack !== undefined) {\n const set = findSampleDataSet(bindingPack, target, mappings);\n if (set !== undefined) return fromSet('binding', bindingPack, set.shape, set.rows, diagnostics);\n diagnostics.push({ code: 'shapeNotInPack', message: `The bound sample data pack '${bindingPack.id}' has no rows for '${target}'` });\n }\n\n const sessionPackId = context.sessionActivePack;\n const chosenPackId = sessionPackId !== undefined ? sessionPackId : selection?.activePack;\n const activePackId = chosenPackId === '' ? undefined : chosenPackId;\n const activePack = find(activePackId);\n if (activePackId !== undefined && activePackId !== null && activePack === undefined) {\n missing(activePackId, 'active');\n } else if (activePack !== undefined) {\n const set = findSampleDataSet(activePack, target, mappings);\n if (set !== undefined) return fromSet('activePack', activePack, set.shape, set.rows, diagnostics);\n }\n\n const blueprintPackId = context.blueprintDefaultPack;\n const blueprintPack = find(blueprintPackId);\n if (blueprintPackId !== undefined && blueprintPackId !== null && blueprintPack === undefined) {\n missing(blueprintPackId, 'blueprint default');\n } else if (blueprintPack !== undefined) {\n const set = findSampleDataSet(blueprintPack, target, mappings);\n if (set !== undefined) return fromSet('blueprintDefault', blueprintPack, set.shape, set.rows, diagnostics);\n }\n\n const locale = bindingPack?.locale ?? activePack?.locale ?? blueprintPack?.locale ?? fallbackLocale;\n if (request.shape === undefined) {\n return { source: 'none', locale, shape: target, rows: [], diagnostics };\n }\n\n return {\n source: 'generated',\n locale,\n shape: request.shape.name,\n rows: generateSample(request.shape, context.seed, context.rowCount, locale),\n diagnostics,\n };\n}\n\nfunction fromSet(\n source: 'binding' | 'activePack' | 'blueprintDefault',\n pack: SampleDataPack,\n shape: string,\n rows: Record<string, unknown>[],\n diagnostics: SampleDataDiagnostic[],\n): SampleDataResolution {\n return { source, pack: pack.id, locale: pack.locale, shape, rows: structuredClone(rows), diagnostics };\n}\n"],"names":["resolveSampleData","request","context","target","shape","name","fallbackLocale","locale","defaultSampleLocale","diagnostics","isDesignOrPreview","source","rows","packs","selection","profile","sampleData","mappings","find","id","undefined","pack","missing","role","push","code","message","bindingPackId","bindings","binding","bindingPack","set","findSampleDataSet","fromSet","sessionPackId","sessionActivePack","chosenPackId","activePack","activePackId","blueprintPackId","blueprintDefaultPack","blueprintPack","generateSample","seed","rowCount","structuredClone"],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export declare const sampleDataIdPattern: RegExp;
2
+ export declare const sampleDataLocalePattern: RegExp;
3
+ export declare const userSampleDataOwner = "user";
4
+ export declare const blueprintSampleDataOwnerPrefix = "blueprint:";
5
+ export declare function isValidSampleDataOwner(owner: string | undefined): boolean;
6
+ export declare function isValidSampleDataPath(path: string | undefined): boolean;
7
+ //# sourceMappingURL=sampleDataRules.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sampleDataRules.d.ts","sourceRoot":"","sources":["../../../sampleData/sampleDataRules.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,mBAAmB,QAAiC,CAAC;AAGlE,eAAO,MAAM,uBAAuB,QAAwC,CAAC;AAG7E,eAAO,MAAM,mBAAmB,SAAS,CAAC;AAG1C,eAAO,MAAM,8BAA8B,eAAe,CAAC;AAG3D,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAGzE;AAMD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAIvE"}
@@ -0,0 +1,19 @@
1
+ // Copyright (c) Cratis. All rights reserved.
2
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
+ /** A pack id: lower-case letters and digits in groups separated by `.`, `_` or `-` (`crm-nordic-smb`). */ const sampleDataIdPattern = /^[a-z0-9]+([._-][a-z0-9]+)*$/;
4
+ /** A BCP 47 style locale tag: a 2-3 letter language followed by alphanumeric subtags (`nb-NO`, `en-GB`, `zh-Hant-TW`). */ const sampleDataLocalePattern = /^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})*$/;
5
+ /** The owner of a pack the author created. */ const userSampleDataOwner = 'user';
6
+ /** The prefix of the owner of a pack a blueprint ships (`blueprint:crm`). */ const blueprintSampleDataOwnerPrefix = 'blueprint:';
7
+ /** Whether an owner is `user` or `blueprint:<id>` with a non-empty id. */ function isValidSampleDataOwner(owner) {
8
+ if (owner === undefined || owner === null) return false;
9
+ return owner === userSampleDataOwner || owner.startsWith(blueprintSampleDataOwnerPrefix) && owner.length > blueprintSampleDataOwnerPrefix.length && owner.trim() === owner;
10
+ }
11
+ /** The path separator, built from its code so the seam rule against route literals (I4) does not mistake it for a URL. */ const pathSeparator = String.fromCharCode(47);
12
+ /** Whether a package-relative pack path is `sampleData/<name>.json` with no `..`, `\\` or nested leading `/`. */ function isValidSampleDataPath(path) {
13
+ if (path === undefined || path === null) return false;
14
+ if (!path.startsWith('sampleData/') || !path.endsWith('.json') || path.length <= 'sampleData/.json'.length) return false;
15
+ return !path.includes('..') && !path.includes('\\') && !path.split(pathSeparator).includes('');
16
+ }
17
+
18
+ export { blueprintSampleDataOwnerPrefix, isValidSampleDataOwner, isValidSampleDataPath, sampleDataIdPattern, sampleDataLocalePattern, userSampleDataOwner };
19
+ //# sourceMappingURL=sampleDataRules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sampleDataRules.js","sources":["../../../sampleData/sampleDataRules.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\n/** A pack id: lower-case letters and digits in groups separated by `.`, `_` or `-` (`crm-nordic-smb`). */\nexport const sampleDataIdPattern = /^[a-z0-9]+([._-][a-z0-9]+)*$/;\n\n/** A BCP 47 style locale tag: a 2-3 letter language followed by alphanumeric subtags (`nb-NO`, `en-GB`, `zh-Hant-TW`). */\nexport const sampleDataLocalePattern = /^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})*$/;\n\n/** The owner of a pack the author created. */\nexport const userSampleDataOwner = 'user';\n\n/** The prefix of the owner of a pack a blueprint ships (`blueprint:crm`). */\nexport const blueprintSampleDataOwnerPrefix = 'blueprint:';\n\n/** Whether an owner is `user` or `blueprint:<id>` with a non-empty id. */\nexport function isValidSampleDataOwner(owner: string | undefined): boolean {\n if (owner === undefined || owner === null) return false;\n return owner === userSampleDataOwner || (owner.startsWith(blueprintSampleDataOwnerPrefix) && owner.length > blueprintSampleDataOwnerPrefix.length && owner.trim() === owner);\n}\n\n/** The path separator, built from its code so the seam rule against route literals (I4) does not mistake it for a URL. */\nconst pathSeparator = String.fromCharCode(47);\n\n/** Whether a package-relative pack path is `sampleData/<name>.json` with no `..`, `\\\\` or nested leading `/`. */\nexport function isValidSampleDataPath(path: string | undefined): boolean {\n if (path === undefined || path === null) return false;\n if (!path.startsWith('sampleData/') || !path.endsWith('.json') || path.length <= 'sampleData/.json'.length) return false;\n return !path.includes('..') && !path.includes('\\\\') && !path.split(pathSeparator).includes('');\n}\n"],"names":["sampleDataIdPattern","sampleDataLocalePattern","userSampleDataOwner","blueprintSampleDataOwnerPrefix","isValidSampleDataOwner","owner","undefined","startsWith","length","trim","pathSeparator","String","fromCharCode","isValidSampleDataPath","path","endsWith","includes","split"],"mappings":"AAAA;AACA;AAEA,2GACO,MAAMA,mBAAAA,GAAsB;AAEnC,2HACO,MAAMC,uBAAAA,GAA0B;AAEvC,+CACO,MAAMC,mBAAAA,GAAsB;AAEnC,8EACO,MAAMC,8BAAAA,GAAiC;AAE9C,2EACO,SAASC,sBAAAA,CAAuBC,KAAyB,EAAA;AAC5D,IAAA,IAAIA,KAAAA,KAAUC,SAAAA,IAAaD,KAAAA,KAAU,IAAA,EAAM,OAAO,KAAA;AAClD,IAAA,OAAOA,KAAAA,KAAUH,mBAAAA,IAAwBG,KAAAA,CAAME,UAAU,CAACJ,8BAAAA,CAAAA,IAAmCE,KAAAA,CAAMG,MAAM,GAAGL,8BAAAA,CAA+BK,MAAM,IAAIH,KAAAA,CAAMI,IAAI,EAAA,KAAOJ,KAAAA;AAC1K;AAEA,2HACA,MAAMK,aAAAA,GAAgBC,MAAAA,CAAOC,YAAY,CAAC,EAAA,CAAA;AAE1C,kHACO,SAASC,qBAAAA,CAAsBC,IAAwB,EAAA;AAC1D,IAAA,IAAIA,IAAAA,KAASR,SAAAA,IAAaQ,IAAAA,KAAS,IAAA,EAAM,OAAO,KAAA;AAChD,IAAA,IAAI,CAACA,IAAAA,CAAKP,UAAU,CAAC,aAAA,CAAA,IAAkB,CAACO,IAAAA,CAAKC,QAAQ,CAAC,OAAA,CAAA,IAAYD,KAAKN,MAAM,IAAI,kBAAA,CAAmBA,MAAM,EAAE,OAAO,KAAA;AACnH,IAAA,OAAO,CAACM,IAAAA,CAAKE,QAAQ,CAAC,IAAA,CAAA,IAAS,CAACF,IAAAA,CAAKE,QAAQ,CAAC,IAAA,CAAA,IAAS,CAACF,IAAAA,CAAKG,KAAK,CAACP,aAAAA,CAAAA,CAAeM,QAAQ,CAAC,EAAA,CAAA;AAC/F;;"}
@@ -0,0 +1,13 @@
1
+ export interface SampleLocale {
2
+ firstNames: string[];
3
+ lastNames: string[];
4
+ companies: string[];
5
+ cities: string[];
6
+ domains: string[];
7
+ phoneTemplate: string;
8
+ words: string[];
9
+ }
10
+ export declare const defaultSampleLocale = "en-GB";
11
+ export declare const sampleLocaleTags: string[];
12
+ export declare function sampleLocaleFor(tag: string | undefined): SampleLocale;
13
+ //# sourceMappingURL=sampleLocales.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sampleLocales.d.ts","sourceRoot":"","sources":["../../../sampleData/sampleLocales.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,YAAY;IACzB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAElB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,EAAE,CAAC;CACnB;AA8DD,eAAO,MAAM,mBAAmB,UAAU,CAAC;AAG3C,eAAO,MAAM,gBAAgB,EAAE,MAAM,EAAwB,CAAC;AAM9D,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,YAAY,CAMrE"}