@breadstone-infrastructure/prisma-seeds 0.0.231

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 (252) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/LICENSE +21 -0
  3. package/README.md +284 -0
  4. package/ai/AISeedGenerator.d.ts +127 -0
  5. package/ai/AISeedGenerator.d.ts.map +1 -0
  6. package/ai/AISeedGenerator.js +438 -0
  7. package/ai/AISeedGenerator.js.map +1 -0
  8. package/ai/AISeedTypes.d.ts +138 -0
  9. package/ai/AISeedTypes.d.ts.map +1 -0
  10. package/ai/AISeedTypes.js +3 -0
  11. package/ai/AISeedTypes.js.map +1 -0
  12. package/ai/PrismaModelAnalyzer.d.ts +36 -0
  13. package/ai/PrismaModelAnalyzer.d.ts.map +1 -0
  14. package/ai/PrismaModelAnalyzer.js +110 -0
  15. package/ai/PrismaModelAnalyzer.js.map +1 -0
  16. package/ai/PrismaTypeSchemaGenerator.d.ts +38 -0
  17. package/ai/PrismaTypeSchemaGenerator.d.ts.map +1 -0
  18. package/ai/PrismaTypeSchemaGenerator.js +71 -0
  19. package/ai/PrismaTypeSchemaGenerator.js.map +1 -0
  20. package/ai/createAISeeder.d.ts +11 -0
  21. package/ai/createAISeeder.d.ts.map +1 -0
  22. package/ai/createAISeeder.js +72 -0
  23. package/ai/createAISeeder.js.map +1 -0
  24. package/ai/index.d.ts +6 -0
  25. package/ai/index.d.ts.map +1 -0
  26. package/ai/index.js +5 -0
  27. package/ai/index.js.map +1 -0
  28. package/assets/AssetManager.d.ts +213 -0
  29. package/assets/AssetManager.d.ts.map +1 -0
  30. package/assets/AssetManager.js +460 -0
  31. package/assets/AssetManager.js.map +1 -0
  32. package/assets/IImageTransformOptions.d.ts +42 -0
  33. package/assets/IImageTransformOptions.d.ts.map +1 -0
  34. package/assets/IImageTransformOptions.js +22 -0
  35. package/assets/IImageTransformOptions.js.map +1 -0
  36. package/assets/adapters/BlobAdapterFactory.d.ts +21 -0
  37. package/assets/adapters/BlobAdapterFactory.d.ts.map +1 -0
  38. package/assets/adapters/BlobAdapterFactory.js +3 -0
  39. package/assets/adapters/BlobAdapterFactory.js.map +1 -0
  40. package/assets/adapters/CloudflareR2BlobAdapter.d.ts +97 -0
  41. package/assets/adapters/CloudflareR2BlobAdapter.d.ts.map +1 -0
  42. package/assets/adapters/CloudflareR2BlobAdapter.js +265 -0
  43. package/assets/adapters/CloudflareR2BlobAdapter.js.map +1 -0
  44. package/assets/adapters/EmptyBlobAdapter.d.ts +42 -0
  45. package/assets/adapters/EmptyBlobAdapter.d.ts.map +1 -0
  46. package/assets/adapters/EmptyBlobAdapter.js +65 -0
  47. package/assets/adapters/EmptyBlobAdapter.js.map +1 -0
  48. package/assets/adapters/LocalFileAdapter.d.ts +34 -0
  49. package/assets/adapters/LocalFileAdapter.d.ts.map +1 -0
  50. package/assets/adapters/LocalFileAdapter.js +74 -0
  51. package/assets/adapters/LocalFileAdapter.js.map +1 -0
  52. package/assets/adapters/VercelBlobAdapter.d.ts +73 -0
  53. package/assets/adapters/VercelBlobAdapter.d.ts.map +1 -0
  54. package/assets/adapters/VercelBlobAdapter.js +168 -0
  55. package/assets/adapters/VercelBlobAdapter.js.map +1 -0
  56. package/assets/adapters/abstracts/BlobAdapterBase.d.ts +62 -0
  57. package/assets/adapters/abstracts/BlobAdapterBase.d.ts.map +1 -0
  58. package/assets/adapters/abstracts/BlobAdapterBase.js +58 -0
  59. package/assets/adapters/abstracts/BlobAdapterBase.js.map +1 -0
  60. package/assets/adapters/abstracts/HttpBlobAdapterBase.d.ts +43 -0
  61. package/assets/adapters/abstracts/HttpBlobAdapterBase.d.ts.map +1 -0
  62. package/assets/adapters/abstracts/HttpBlobAdapterBase.js +88 -0
  63. package/assets/adapters/abstracts/HttpBlobAdapterBase.js.map +1 -0
  64. package/assets/adapters/createBlobAdapter.d.ts +47 -0
  65. package/assets/adapters/createBlobAdapter.d.ts.map +1 -0
  66. package/assets/adapters/createBlobAdapter.js +63 -0
  67. package/assets/adapters/createBlobAdapter.js.map +1 -0
  68. package/assets/adapters/index.d.ts +11 -0
  69. package/assets/adapters/index.d.ts.map +1 -0
  70. package/assets/adapters/index.js +7 -0
  71. package/assets/adapters/index.js.map +1 -0
  72. package/assets/adapters/interfaces/IBlobAdapter.d.ts +41 -0
  73. package/assets/adapters/interfaces/IBlobAdapter.d.ts.map +1 -0
  74. package/assets/adapters/interfaces/IBlobAdapter.js +3 -0
  75. package/assets/adapters/interfaces/IBlobAdapter.js.map +1 -0
  76. package/assets/adapters/interfaces/IBlobAdapterConfig.d.ts +16 -0
  77. package/assets/adapters/interfaces/IBlobAdapterConfig.d.ts.map +1 -0
  78. package/assets/adapters/interfaces/IBlobAdapterConfig.js +2 -0
  79. package/assets/adapters/interfaces/IBlobAdapterConfig.js.map +1 -0
  80. package/assets/adapters/interfaces/IBlobUploadResult.d.ts +24 -0
  81. package/assets/adapters/interfaces/IBlobUploadResult.d.ts.map +1 -0
  82. package/assets/adapters/interfaces/IBlobUploadResult.js +2 -0
  83. package/assets/adapters/interfaces/IBlobUploadResult.js.map +1 -0
  84. package/base/BaseSeeder.d.ts +21 -0
  85. package/base/BaseSeeder.d.ts.map +1 -0
  86. package/base/BaseSeeder.js +45 -0
  87. package/base/BaseSeeder.js.map +1 -0
  88. package/base/functionalSeeder.d.ts +31 -0
  89. package/base/functionalSeeder.d.ts.map +1 -0
  90. package/base/functionalSeeder.js +33 -0
  91. package/base/functionalSeeder.js.map +1 -0
  92. package/cli/Cli.d.ts +2 -0
  93. package/cli/Cli.d.ts.map +1 -0
  94. package/cli/Cli.js +32 -0
  95. package/cli/Cli.js.map +1 -0
  96. package/cli/CliArgs.d.ts +2 -0
  97. package/cli/CliArgs.d.ts.map +1 -0
  98. package/cli/CliArgs.js +133 -0
  99. package/cli/CliArgs.js.map +1 -0
  100. package/cli/CliArgsConfig.d.ts +2 -0
  101. package/cli/CliArgsConfig.d.ts.map +1 -0
  102. package/cli/CliArgsConfig.js +15 -0
  103. package/cli/CliArgsConfig.js.map +1 -0
  104. package/cli/CliRun.d.ts +2 -0
  105. package/cli/CliRun.d.ts.map +1 -0
  106. package/cli/CliRun.js +34 -0
  107. package/cli/CliRun.js.map +1 -0
  108. package/cli/commands/SeedCommand.d.ts +2 -0
  109. package/cli/commands/SeedCommand.d.ts.map +1 -0
  110. package/cli/commands/SeedCommand.js +73 -0
  111. package/cli/commands/SeedCommand.js.map +1 -0
  112. package/cli/commands/SeedCommandArgsConfig.d.ts +2 -0
  113. package/cli/commands/SeedCommandArgsConfig.d.ts.map +1 -0
  114. package/cli/commands/SeedCommandArgsConfig.js +31 -0
  115. package/cli/commands/SeedCommandArgsConfig.js.map +1 -0
  116. package/cli/seed.d.ts +2 -0
  117. package/cli/seed.d.ts.map +1 -0
  118. package/cli/seed.js +42 -0
  119. package/cli/seed.js.map +1 -0
  120. package/config/IAssetConfig.d.ts +36 -0
  121. package/config/IAssetConfig.d.ts.map +1 -0
  122. package/config/IAssetConfig.js +3 -0
  123. package/config/IAssetConfig.js.map +1 -0
  124. package/config/IComposedSeedConfig.d.ts +32 -0
  125. package/config/IComposedSeedConfig.d.ts.map +1 -0
  126. package/config/IComposedSeedConfig.js +3 -0
  127. package/config/IComposedSeedConfig.js.map +1 -0
  128. package/config/ISeedConfig.d.ts +75 -0
  129. package/config/ISeedConfig.d.ts.map +1 -0
  130. package/config/ISeedConfig.js +3 -0
  131. package/config/ISeedConfig.js.map +1 -0
  132. package/config/ISeedContext.d.ts +92 -0
  133. package/config/ISeedContext.d.ts.map +1 -0
  134. package/config/ISeedContext.js +3 -0
  135. package/config/ISeedContext.js.map +1 -0
  136. package/config/ISeedDefinition.d.ts +38 -0
  137. package/config/ISeedDefinition.d.ts.map +1 -0
  138. package/config/ISeedDefinition.js +3 -0
  139. package/config/ISeedDefinition.js.map +1 -0
  140. package/config/ISeedFactory.d.ts +15 -0
  141. package/config/ISeedFactory.d.ts.map +1 -0
  142. package/config/ISeedFactory.js +3 -0
  143. package/config/ISeedFactory.js.map +1 -0
  144. package/config/ISeedOptions.d.ts +44 -0
  145. package/config/ISeedOptions.d.ts.map +1 -0
  146. package/config/ISeedOptions.js +2 -0
  147. package/config/ISeedOptions.js.map +1 -0
  148. package/config/ISeedResult.d.ts +44 -0
  149. package/config/ISeedResult.d.ts.map +1 -0
  150. package/config/ISeedResult.js +2 -0
  151. package/config/ISeedResult.js.map +1 -0
  152. package/config/ISeeder.d.ts +37 -0
  153. package/config/ISeeder.d.ts.map +1 -0
  154. package/config/ISeeder.js +3 -0
  155. package/config/ISeeder.js.map +1 -0
  156. package/config/createAdapter.d.ts +13 -0
  157. package/config/createAdapter.d.ts.map +1 -0
  158. package/config/createAdapter.js +16 -0
  159. package/config/createAdapter.js.map +1 -0
  160. package/config/createSeed.d.ts +6 -0
  161. package/config/createSeed.d.ts.map +1 -0
  162. package/config/createSeed.js +16 -0
  163. package/config/createSeed.js.map +1 -0
  164. package/config/defineConfig.d.ts +27 -0
  165. package/config/defineConfig.d.ts.map +1 -0
  166. package/config/defineConfig.js +35 -0
  167. package/config/defineConfig.js.map +1 -0
  168. package/discovery/SeedConfigDiscovery.d.ts +16 -0
  169. package/discovery/SeedConfigDiscovery.d.ts.map +1 -0
  170. package/discovery/SeedConfigDiscovery.js +137 -0
  171. package/discovery/SeedConfigDiscovery.js.map +1 -0
  172. package/index.d.ts +32 -0
  173. package/index.d.ts.map +1 -0
  174. package/index.js +32 -0
  175. package/index.js.map +1 -0
  176. package/json/JsonReferenceResolver.d.ts +23 -0
  177. package/json/JsonReferenceResolver.d.ts.map +1 -0
  178. package/json/JsonReferenceResolver.js +99 -0
  179. package/json/JsonReferenceResolver.js.map +1 -0
  180. package/json/JsonSchemaValidator.d.ts +23 -0
  181. package/json/JsonSchemaValidator.d.ts.map +1 -0
  182. package/json/JsonSchemaValidator.js +98 -0
  183. package/json/JsonSchemaValidator.js.map +1 -0
  184. package/json/JsonSeedLoader.d.ts +33 -0
  185. package/json/JsonSeedLoader.d.ts.map +1 -0
  186. package/json/JsonSeedLoader.js +176 -0
  187. package/json/JsonSeedLoader.js.map +1 -0
  188. package/json/JsonSeedTypes.d.ts +204 -0
  189. package/json/JsonSeedTypes.d.ts.map +1 -0
  190. package/json/JsonSeedTypes.js +3 -0
  191. package/json/JsonSeedTypes.js.map +1 -0
  192. package/json/createJsonSeeder.d.ts +13 -0
  193. package/json/createJsonSeeder.d.ts.map +1 -0
  194. package/json/createJsonSeeder.js +240 -0
  195. package/json/createJsonSeeder.js.map +1 -0
  196. package/json/index.d.ts +6 -0
  197. package/json/index.d.ts.map +1 -0
  198. package/json/index.js +7 -0
  199. package/json/index.js.map +1 -0
  200. package/logging/ISeedLogger.d.ts +55 -0
  201. package/logging/ISeedLogger.d.ts.map +1 -0
  202. package/logging/ISeedLogger.js +3 -0
  203. package/logging/ISeedLogger.js.map +1 -0
  204. package/logging/LogLevel.d.ts +30 -0
  205. package/logging/LogLevel.d.ts.map +1 -0
  206. package/logging/LogLevel.js +37 -0
  207. package/logging/LogLevel.js.map +1 -0
  208. package/logging/SeedLogger.d.ts +24 -0
  209. package/logging/SeedLogger.d.ts.map +1 -0
  210. package/logging/SeedLogger.js +94 -0
  211. package/logging/SeedLogger.js.map +1 -0
  212. package/orchestration/SeedOrchestrator.d.ts +30 -0
  213. package/orchestration/SeedOrchestrator.d.ts.map +1 -0
  214. package/orchestration/SeedOrchestrator.js +262 -0
  215. package/orchestration/SeedOrchestrator.js.map +1 -0
  216. package/package.json +27 -0
  217. package/resolvers/EntityResolver.d.ts +43 -0
  218. package/resolvers/EntityResolver.d.ts.map +1 -0
  219. package/resolvers/EntityResolver.js +95 -0
  220. package/resolvers/EntityResolver.js.map +1 -0
  221. package/utils/AssetReferenceResolver.d.ts +49 -0
  222. package/utils/AssetReferenceResolver.d.ts.map +1 -0
  223. package/utils/AssetReferenceResolver.js +62 -0
  224. package/utils/AssetReferenceResolver.js.map +1 -0
  225. package/utils/EntityLookupCache.d.ts +47 -0
  226. package/utils/EntityLookupCache.d.ts.map +1 -0
  227. package/utils/EntityLookupCache.js +64 -0
  228. package/utils/EntityLookupCache.js.map +1 -0
  229. package/utils/ISeedRandom.d.ts +70 -0
  230. package/utils/ISeedRandom.d.ts.map +1 -0
  231. package/utils/ISeedRandom.js +3 -0
  232. package/utils/ISeedRandom.js.map +1 -0
  233. package/utils/LocalizationToolkit.d.ts +125 -0
  234. package/utils/LocalizationToolkit.d.ts.map +1 -0
  235. package/utils/LocalizationToolkit.js +131 -0
  236. package/utils/LocalizationToolkit.js.map +1 -0
  237. package/utils/SeededRandom.d.ts +15 -0
  238. package/utils/SeededRandom.d.ts.map +1 -0
  239. package/utils/SeededRandom.js +56 -0
  240. package/utils/SeededRandom.js.map +1 -0
  241. package/utils/StringArrayToolkit.d.ts +25 -0
  242. package/utils/StringArrayToolkit.d.ts.map +1 -0
  243. package/utils/StringArrayToolkit.js +56 -0
  244. package/utils/StringArrayToolkit.js.map +1 -0
  245. package/utils/StringValueGuard.d.ts +24 -0
  246. package/utils/StringValueGuard.d.ts.map +1 -0
  247. package/utils/StringValueGuard.js +46 -0
  248. package/utils/StringValueGuard.js.map +1 -0
  249. package/utils/WarningCollector.d.ts +40 -0
  250. package/utils/WarningCollector.d.ts.map +1 -0
  251. package/utils/WarningCollector.js +83 -0
  252. package/utils/WarningCollector.js.map +1 -0
@@ -0,0 +1,33 @@
1
+ import type { ISeedLogger } from '../logging/ISeedLogger.js';
2
+ import type { IJsonSeedLoadOptions, IJsonValidationResult } from './JsonSeedTypes.js';
3
+ /**
4
+ * Loader for JSON seed data files.
5
+ *
6
+ * @public
7
+ */
8
+ export declare class JsonSeedLoader {
9
+ private readonly _fileSystem;
10
+ private readonly _logger;
11
+ private readonly _validator;
12
+ constructor(logger: ISeedLogger);
13
+ /**
14
+ * Load JSON files from the given sources (supports globs).
15
+ *
16
+ * @param sources File paths or glob patterns
17
+ * @param basePath Base path for resolving relative paths
18
+ * @returns Array of parsed JSON data
19
+ */
20
+ load(sources: string | readonly string[], basePath: string, options?: IJsonSeedLoadOptions): Promise<unknown[]>;
21
+ /**
22
+ * Load and validate JSON files against a schema.
23
+ *
24
+ * @param sources File paths or glob patterns
25
+ * @param schemaPath Path to JSON schema file
26
+ * @param basePath Base path for resolving relative paths
27
+ * @returns Validation result with data or errors
28
+ */
29
+ loadWithSchema(sources: string | readonly string[], schemaPath: string, basePath: string, options?: IJsonSeedLoadOptions): Promise<IJsonValidationResult>;
30
+ private _extractData;
31
+ private _extractByPath;
32
+ }
33
+ //# sourceMappingURL=JsonSeedLoader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JsonSeedLoader.d.ts","sourceRoot":"","sources":["../../src/json/JsonSeedLoader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,KAAK,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAKtF;;;;GAIG;AACH,qBAAa,cAAc;IAIvB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IACzC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAc;IACtC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAsB;gBAM9B,MAAM,EAAE,WAAW;IAUtC;;;;;;OAMG;IACU,IAAI,CACb,OAAO,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,EACnC,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,oBAAoB,GAC/B,OAAO,CAAC,OAAO,EAAE,CAAC;IAgCrB;;;;;;;OAOG;IACU,cAAc,CACvB,OAAO,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,EACnC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,oBAAoB,GAC/B,OAAO,CAAC,qBAAqB,CAAC;IA2DjC,OAAO,CAAC,YAAY;IAqDpB,OAAO,CAAC,cAAc;CAuBzB"}
@@ -0,0 +1,176 @@
1
+ // #region Imports
2
+ import { FileSystem, Path } from '@breadstone-infrastructure/utilities';
3
+ import { JsonSchemaValidator } from './JsonSchemaValidator.js';
4
+ // #endregion
5
+ /**
6
+ * Loader for JSON seed data files.
7
+ *
8
+ * @public
9
+ */
10
+ export class JsonSeedLoader {
11
+ // #region Fields
12
+ _fileSystem;
13
+ _logger;
14
+ _validator;
15
+ // #endregion
16
+ // #region Ctor
17
+ constructor(logger) {
18
+ this._fileSystem = new FileSystem();
19
+ this._logger = logger;
20
+ this._validator = new JsonSchemaValidator(logger);
21
+ }
22
+ // #endregion
23
+ // #region Methods
24
+ /**
25
+ * Load JSON files from the given sources (supports globs).
26
+ *
27
+ * @param sources File paths or glob patterns
28
+ * @param basePath Base path for resolving relative paths
29
+ * @returns Array of parsed JSON data
30
+ */
31
+ async load(sources, basePath, options) {
32
+ const sourceArray = Array.isArray(sources) ? sources : [sources];
33
+ const allData = [];
34
+ const normalizedOptions = {
35
+ wrapperKeys: options?.wrapperKeys?.length
36
+ ? options.wrapperKeys
37
+ : undefined
38
+ };
39
+ for (const source of sourceArray) {
40
+ const absoluteSource = Path.isAbsolute(source) ? source : Path.combine(basePath, source);
41
+ const files = Path.glob(absoluteSource);
42
+ for (const file of files) {
43
+ try {
44
+ const content = await this._fileSystem.fileReadAllText(file, 'utf-8');
45
+ const parsed = JSON.parse(content);
46
+ const extracted = this._extractData(parsed, normalizedOptions);
47
+ if (extracted.length > 0) {
48
+ allData.push(...extracted);
49
+ }
50
+ }
51
+ catch (error) {
52
+ this._logger.error(`Failed to load JSON from ${file}: ${error}`);
53
+ throw error;
54
+ }
55
+ }
56
+ }
57
+ return allData;
58
+ }
59
+ /**
60
+ * Load and validate JSON files against a schema.
61
+ *
62
+ * @param sources File paths or glob patterns
63
+ * @param schemaPath Path to JSON schema file
64
+ * @param basePath Base path for resolving relative paths
65
+ * @returns Validation result with data or errors
66
+ */
67
+ async loadWithSchema(sources, schemaPath, basePath, options) {
68
+ try {
69
+ if (!schemaPath) {
70
+ const data = await this.load(sources, basePath, options);
71
+ return {
72
+ isValid: true,
73
+ errors: [],
74
+ data
75
+ };
76
+ }
77
+ // Load raw JSON files without extraction first for validation
78
+ const sourceArray = Array.isArray(sources) ? sources : [sources];
79
+ const rawDocuments = [];
80
+ for (const source of sourceArray) {
81
+ const absoluteSource = Path.isAbsolute(source) ? source : Path.combine(basePath, source);
82
+ const files = Path.glob(absoluteSource);
83
+ for (const file of files) {
84
+ try {
85
+ const content = await this._fileSystem.fileReadAllText(file, 'utf-8');
86
+ const parsed = JSON.parse(content);
87
+ rawDocuments.push(parsed);
88
+ }
89
+ catch (error) {
90
+ this._logger.error(`Failed to load JSON from ${file}: ${error}`);
91
+ throw error;
92
+ }
93
+ }
94
+ }
95
+ // Validate raw documents against schema
96
+ const absoluteSchemaPath = Path.isAbsolute(schemaPath)
97
+ ? schemaPath
98
+ : Path.combine(basePath, schemaPath);
99
+ const validationResult = this._validator.validate(rawDocuments, absoluteSchemaPath);
100
+ if (!validationResult.isValid) {
101
+ return validationResult;
102
+ }
103
+ // Now extract the actual data items
104
+ const data = await this.load(sources, basePath, options);
105
+ return {
106
+ isValid: true,
107
+ errors: [],
108
+ data
109
+ };
110
+ }
111
+ catch (error) {
112
+ return {
113
+ isValid: false,
114
+ errors: [String(error)],
115
+ data: undefined
116
+ };
117
+ }
118
+ }
119
+ _extractData(data, options) {
120
+ if (Array.isArray(data)) {
121
+ return data;
122
+ }
123
+ if (!data || typeof data !== 'object') {
124
+ return data === undefined ? [] : [data];
125
+ }
126
+ const candidate = data;
127
+ const wrapperKeys = options.wrapperKeys;
128
+ if (wrapperKeys && wrapperKeys.length > 0) {
129
+ const extracted = [];
130
+ for (const wrapperKey of wrapperKeys) {
131
+ const value = this._extractByPath(candidate, wrapperKey);
132
+ if (Array.isArray(value)) {
133
+ extracted.push(...value);
134
+ }
135
+ else if (value !== undefined) {
136
+ extracted.push(value);
137
+ }
138
+ }
139
+ if (extracted.length > 0) {
140
+ return extracted;
141
+ }
142
+ this._logger.warn(`Wrapper key(s) ${wrapperKeys.join(', ')} not found in JSON payload. Falling back to default extraction.`);
143
+ }
144
+ if ('items' in candidate && Array.isArray(candidate['items'])) {
145
+ return candidate['items'];
146
+ }
147
+ if ('recipes' in candidate && Array.isArray(candidate['recipes'])) {
148
+ return candidate['recipes'];
149
+ }
150
+ if ('exercises' in candidate && Array.isArray(candidate['exercises'])) {
151
+ return candidate['exercises'];
152
+ }
153
+ if ('tips' in candidate && Array.isArray(candidate['tips'])) {
154
+ return candidate['tips'];
155
+ }
156
+ return [candidate];
157
+ }
158
+ _extractByPath(source, path) {
159
+ const segments = path.split('.').map((segment) => segment.trim())
160
+ .filter((segment) => segment.length > 0);
161
+ if (segments.length === 0) {
162
+ return undefined;
163
+ }
164
+ let current = source;
165
+ for (const segment of segments) {
166
+ if (current && typeof current === 'object' && segment in current) {
167
+ current = current[segment];
168
+ }
169
+ else {
170
+ return undefined;
171
+ }
172
+ }
173
+ return current;
174
+ }
175
+ }
176
+ //# sourceMappingURL=JsonSeedLoader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JsonSeedLoader.js","sourceRoot":"","sources":["../../src/json/JsonSeedLoader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,204 @@
1
+ import type { ISeedContext } from '../config/ISeedContext.js';
2
+ /**
3
+ * Configuration for a JSON-based seeder.
4
+ *
5
+ * @template TJson The shape of the JSON data
6
+ * @template TPrisma The Prisma create input type
7
+ * @public
8
+ */
9
+ export interface IJsonSeedConfig<TJson = unknown, TPrisma = unknown> {
10
+ /**
11
+ * Unique name for this JSON seeder.
12
+ *
13
+ * @readonly
14
+ */
15
+ readonly name: string;
16
+ /**
17
+ * Path(s) to JSON data files (supports glob patterns).
18
+ * Relative to the seed.config.mjs location.
19
+ *
20
+ * @readonly
21
+ */
22
+ readonly sources: string | readonly string[];
23
+ /**
24
+ * Optional key (or keys) selecting the array within the JSON payload that should
25
+ * be processed. Supports nested access via dot-notation.
26
+ *
27
+ * @readonly
28
+ */
29
+ readonly wrapperKey?: string | readonly string[];
30
+ /**
31
+ * Optional JSON Schema path for validation.
32
+ * If omitted, no schema validation is performed.
33
+ *
34
+ * @readonly
35
+ */
36
+ readonly schema?: string;
37
+ /**
38
+ * Prisma model name (e.g., 'recipe', 'exercise').
39
+ *
40
+ * @readonly
41
+ */
42
+ readonly model: string;
43
+ /**
44
+ * Mapper to transform JSON data to Prisma create input.
45
+ * If omitted, assumes JSON structure matches Prisma exactly.
46
+ *
47
+ * @readonly
48
+ */
49
+ readonly mapper?: IJsonSeedMapper<TJson, TPrisma>;
50
+ /**
51
+ * Optional reference resolver configuration.
52
+ *
53
+ * @readonly
54
+ */
55
+ readonly references?: IJsonReferenceConfig;
56
+ /**
57
+ * Upsert strategy configuration.
58
+ *
59
+ * @readonly
60
+ */
61
+ readonly upsert?: {
62
+ /**
63
+ * Field(s) to use for identifying existing records.
64
+ */
65
+ readonly uniqueFields: string | readonly string[];
66
+ /**
67
+ * Whether to update existing records (default: false).
68
+ */
69
+ readonly updateExisting?: boolean;
70
+ };
71
+ /**
72
+ * Batch processing configuration.
73
+ *
74
+ * @readonly
75
+ */
76
+ readonly batch?: {
77
+ /**
78
+ * Number of items to process in a single batch.
79
+ */
80
+ readonly size?: number;
81
+ /**
82
+ * Whether to use transactions for batches.
83
+ */
84
+ readonly useTransaction?: boolean;
85
+ };
86
+ /**
87
+ * Whether this seeder is enabled.
88
+ *
89
+ * @readonly
90
+ */
91
+ readonly enabled?: boolean;
92
+ }
93
+ /**
94
+ * Mapper interface for transforming JSON to Prisma input.
95
+ *
96
+ * @template TJson The JSON input type
97
+ * @template TPrisma The Prisma output type
98
+ * @public
99
+ */
100
+ export interface IJsonSeedMapper<TJson, TPrisma> {
101
+ /**
102
+ * Transform JSON data to Prisma create input.
103
+ *
104
+ * @param data The JSON data
105
+ * @param context The seed context
106
+ * @returns The Prisma create input
107
+ */
108
+ mapToCreate(_data: TJson, _context: ISeedContext): Promise<TPrisma> | TPrisma;
109
+ /**
110
+ * Optional: Transform for update operations.
111
+ *
112
+ * @param data The JSON data
113
+ * @param existing The existing record
114
+ * @param context The seed context
115
+ * @returns The Prisma update input
116
+ */
117
+ mapToUpdate?(_data: TJson, _existing: unknown, _context: ISeedContext): Promise<TPrisma> | TPrisma;
118
+ /**
119
+ * Optional: Pre-process JSON before mapping.
120
+ *
121
+ * @param data The JSON data
122
+ * @param context The seed context
123
+ * @returns The processed JSON data
124
+ */
125
+ preProcess?(_data: TJson, _context: ISeedContext): Promise<TJson> | TJson;
126
+ }
127
+ /**
128
+ * Options controlling how JSON seed files are loaded.
129
+ *
130
+ * @public
131
+ */
132
+ export interface IJsonSeedLoadOptions {
133
+ /**
134
+ * Specific keys that should be extracted from the JSON payload.
135
+ * Accepts a single key or a list of keys (dot-notation supported).
136
+ */
137
+ readonly wrapperKeys?: readonly string[];
138
+ }
139
+ /**
140
+ * Reference resolution configuration.
141
+ *
142
+ * @public
143
+ */
144
+ export interface IJsonReferenceConfig {
145
+ /**
146
+ * Prefix for reference syntax (default: '@ref:').
147
+ *
148
+ * @readonly
149
+ */
150
+ readonly prefix?: string;
151
+ /**
152
+ * Prefix for asset references (default: '@asset:').
153
+ *
154
+ * @readonly
155
+ */
156
+ readonly assetPrefix?: string;
157
+ /**
158
+ * Custom resolvers for specific reference types.
159
+ *
160
+ * @readonly
161
+ */
162
+ readonly resolvers?: Record<string, IJsonReferenceResolver>;
163
+ }
164
+ /**
165
+ * Resolver for a specific reference type.
166
+ *
167
+ * @public
168
+ */
169
+ export interface IJsonReferenceResolver {
170
+ /**
171
+ * Resolve a reference key to an actual value (usually an ID).
172
+ *
173
+ * @param key The reference key
174
+ * @param context The seed context
175
+ * @returns The resolved value
176
+ */
177
+ resolve(_key: string, _context: ISeedContext): Promise<string | number>;
178
+ }
179
+ /**
180
+ * Validation result from JSON schema validation.
181
+ *
182
+ * @public
183
+ */
184
+ export interface IJsonValidationResult {
185
+ /**
186
+ * Whether the validation was successful.
187
+ *
188
+ * @readonly
189
+ */
190
+ readonly isValid: boolean;
191
+ /**
192
+ * Validation errors if any.
193
+ *
194
+ * @readonly
195
+ */
196
+ readonly errors: readonly string[];
197
+ /**
198
+ * Validated data if successful.
199
+ *
200
+ * @readonly
201
+ */
202
+ readonly data?: unknown;
203
+ }
204
+ //# sourceMappingURL=JsonSeedTypes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JsonSeedTypes.d.ts","sourceRoot":"","sources":["../../src/json/JsonSeedTypes.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAI9D;;;;;;GAMG;AACH,MAAM,WAAW,eAAe,CAAC,KAAK,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO;IAI/D;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC;IAE7C;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC;IAEjD;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAEzB;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAElD;;;;OAIG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,oBAAoB,CAAC;IAE3C;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE;QAEd;;WAEG;QACH,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC;QAElD;;WAEG;QACH,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;KACrC,CAAC;IAEF;;;;OAIG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE;QAEb;;WAEG;QACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAEvB;;WAEG;QACH,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;KACrC,CAAC;IAEF;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAI9B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,eAAe,CAAC,KAAK,EAAE,OAAO;IAI3C;;;;;;OAMG;IACH,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;IAE9E;;;;;;;OAOG;IACH,WAAW,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;IAEnG;;;;;;OAMG;IACH,UAAU,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;CAI7E;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IAIjC;;;OAGG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAI5C;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IAIjC;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAEzB;;;;OAIG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAE9B;;;;OAIG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;CAI/D;AAED;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IAInC;;;;;;OAMG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;CAI3E;AAED;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IAIlC;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAE1B;;;;OAIG;IACH,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IAEnC;;;;OAIG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;CAI3B"}
@@ -0,0 +1,3 @@
1
+ // #region Imports
2
+ export {};
3
+ //# sourceMappingURL=JsonSeedTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JsonSeedTypes.js","sourceRoot":"","sources":["../../src/json/JsonSeedTypes.ts"],"names":[],"mappings":"AAAA,kBAAkB"}
@@ -0,0 +1,13 @@
1
+ import type { IJsonSeedConfig } from './JsonSeedTypes.js';
2
+ import type { ISeeder } from '../config/ISeeder.js';
3
+ /**
4
+ * Create a JSON-based seeder that loads data from JSON files.
5
+ *
6
+ * @public
7
+ * @template TJson The type of the JSON data
8
+ * @template TPrisma The type of the Prisma input
9
+ * @param config JSON seed configuration
10
+ * @returns A functional seeder that uses JSON files
11
+ */
12
+ export declare function createJsonSeeder<TJson = unknown, TPrisma = unknown>(config: IJsonSeedConfig<TJson, TPrisma>): ISeeder;
13
+ //# sourceMappingURL=createJsonSeeder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createJsonSeeder.d.ts","sourceRoot":"","sources":["../../src/json/createJsonSeeder.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAUpD;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO,EAC/D,MAAM,EAAE,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,GACxC,OAAO,CA0QT"}