@ooneex/seeds 1.7.0 → 1.8.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.
package/dist/index.d.ts CHANGED
@@ -1,14 +1,16 @@
1
1
  import { EContainerScope } from "@ooneex/container";
2
+ import { Environment } from "@ooneex/app-env";
2
3
  type SeedClassType = new (...args: any[]) => ISeed;
3
4
  interface ISeed {
4
5
  run: <T = unknown>(data?: unknown[]) => Promise<T> | T;
5
6
  isActive: () => Promise<boolean> | boolean;
6
7
  getDependencies: () => Promise<SeedClassType[]> | SeedClassType[];
8
+ getEnv: () => Promise<Environment[]> | Environment[];
7
9
  }
8
10
  declare const decorator: {
9
11
  seed: (scope?: EContainerScope) => (target: SeedClassType) => void;
10
12
  };
11
- declare const getSeeds: () => ISeed[];
13
+ declare const getSeeds: () => Promise<ISeed[]>;
12
14
  declare const run: () => Promise<void>;
13
15
  declare const seedCreate: (config: {
14
16
  name: string;
@@ -25,4 +27,4 @@ declare const seedTestCreate: (config: {
25
27
  testsDir: string;
26
28
  module?: string;
27
29
  }) => Promise<string>;
28
- export { seedTestCreate, seedCreate, run, getSeeds, decorator, SeedClassType, ISeed };
30
+ export { seedTestCreate, seedCreate, run, getSeeds, decorator, SeedClassType, ISeed, Environment };
package/dist/index.js CHANGED
@@ -16,11 +16,19 @@ var decorator = {
16
16
  };
17
17
  // src/getSeeds.ts
18
18
  import { container as container2 } from "@ooneex/container";
19
- var getSeeds = () => {
20
- const seedInstances = SEEDS_CONTAINER.map((SeedClass) => {
21
- return container2.get(SeedClass);
22
- });
23
- return seedInstances.filter((seed) => seed.isActive());
19
+ var getSeeds = async () => {
20
+ const currentEnv = Bun.env.APP_ENV;
21
+ const seeds = [];
22
+ for (const SeedClass of SEEDS_CONTAINER) {
23
+ const seed = container2.get(SeedClass);
24
+ if (!await seed.isActive())
25
+ continue;
26
+ const allowedEnvs = await seed.getEnv();
27
+ if (allowedEnvs.length > 0 && currentEnv && !allowedEnvs.includes(currentEnv))
28
+ continue;
29
+ seeds.push(seed);
30
+ }
31
+ return seeds;
24
32
  };
25
33
  // src/run.ts
26
34
  import { parseArgs } from "util";
@@ -46,7 +54,7 @@ var run = async () => {
46
54
  strict: false,
47
55
  allowPositionals: true
48
56
  });
49
- const seeds = getSeeds();
57
+ const seeds = await getSeeds();
50
58
  const logger = new TerminalLogger;
51
59
  if (seeds.length === 0) {
52
60
  logger.info(`No seeds found
@@ -77,15 +85,6 @@ var run = async () => {
77
85
  });
78
86
  for (const seed of seeds) {
79
87
  const seedName = seed.constructor.name;
80
- if (!seed.isActive()) {
81
- logger.warn(`Seed ${seedName} is inactive
82
- `, undefined, {
83
- showTimestamp: false,
84
- showArrow: false,
85
- useSymbol: true
86
- });
87
- continue;
88
- }
89
88
  try {
90
89
  await runSeed(seed);
91
90
  logger.success(`Seed ${seedName} completed
@@ -143,6 +142,16 @@ describe("{{NAME}}Seed", () => {
143
142
  expect(typeof {{NAME}}Seed.prototype.getDependencies).toBe("function");
144
143
  });
145
144
 
145
+ test("should have 'getEnv' method", () => {
146
+ expect({{NAME}}Seed.prototype.getEnv).toBeDefined();
147
+ expect(typeof {{NAME}}Seed.prototype.getEnv).toBe("function");
148
+ });
149
+
150
+ test("should return empty array from 'getEnv' by default", () => {
151
+ const seed = new {{NAME}}Seed();
152
+ expect(seed.getEnv()).toEqual([]);
153
+ });
154
+
146
155
  test("should have a data yml file", async () => {
147
156
  const dataFile = Bun.file(join(import.meta.dir, "../../src/seeds/{{DATA_FILE}}.yml"));
148
157
  expect(await dataFile.exists()).toBe(true);
@@ -161,7 +170,7 @@ describe("{{NAME}}Seed", () => {
161
170
  `;
162
171
 
163
172
  // src/seed.txt
164
- var seed_default = `import { decorator, type ISeed, type SeedClassType } from "@ooneex/seeds";
173
+ var seed_default = `import { decorator, Environment, type ISeed, type SeedClassType } from "@ooneex/seeds";
165
174
  import data from "./{{ dataFile }}.yml";
166
175
 
167
176
  @decorator.seed()
@@ -180,6 +189,10 @@ export class {{ name }} implements ISeed {
180
189
  public async getDependencies(): Promise<SeedClassType[]> {
181
190
  return [];
182
191
  }
192
+
193
+ public getEnv(): Environment[] {
194
+ return [];
195
+ }
183
196
  }
184
197
  `;
185
198
 
@@ -226,12 +239,15 @@ var seedTestCreate = async (config) => {
226
239
  await Bun.write(testPath, content);
227
240
  return testPath;
228
241
  };
242
+ // src/types.ts
243
+ import { Environment } from "@ooneex/app-env";
229
244
  export {
230
245
  seedTestCreate,
231
246
  seedCreate,
232
247
  run,
233
248
  getSeeds,
234
- decorator
249
+ decorator,
250
+ Environment
235
251
  };
236
252
 
237
- //# debugId=728D696F910CF29264756E2164756E21
253
+ //# debugId=DB624239BB3885A664756E2164756E21
package/dist/index.js.map CHANGED
@@ -1,15 +1,16 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["src/decorators.ts", "src/container.ts", "src/getSeeds.ts", "src/run.ts", "src/seedCreate.ts", "src/seedTestCreate.ts"],
3
+ "sources": ["src/decorators.ts", "src/container.ts", "src/getSeeds.ts", "src/run.ts", "src/seedCreate.ts", "src/seedTestCreate.ts", "src/types.ts"],
4
4
  "sourcesContent": [
5
5
  "import { container, EContainerScope } from \"@ooneex/container\";\nimport { SEEDS_CONTAINER } from \"./container\";\nimport type { SeedClassType } from \"./types\";\n\nexport const decorator = {\n seed: (scope: EContainerScope = EContainerScope.Singleton) => {\n return (target: SeedClassType): void => {\n container.add(target, scope);\n SEEDS_CONTAINER.push(target);\n };\n },\n};\n",
6
6
  "import type { SeedClassType } from \"./types\";\n\nexport const SEEDS_CONTAINER: SeedClassType[] = [];\n",
7
- "import { container } from \"@ooneex/container\";\nimport { SEEDS_CONTAINER } from \"./container\";\nimport type { ISeed } from \"./types\";\n\nexport const getSeeds = (): ISeed[] => {\n const seedInstances = SEEDS_CONTAINER.map((SeedClass) => {\n return container.get(SeedClass);\n });\n\n return seedInstances.filter((seed) => seed.isActive());\n};\n",
8
- "import { parseArgs } from \"node:util\";\nimport { container } from \"@ooneex/container\";\nimport type { IException } from \"@ooneex/exception\";\nimport { TerminalLogger } from \"@ooneex/logger\";\nimport { getSeeds } from \"./getSeeds\";\nimport type { ISeed } from \"./types\";\n\nconst runSeed = async (seed: ISeed): Promise<void> => {\n const data = [];\n\n const dependencies = await seed.getDependencies();\n\n for (const dependency of dependencies) {\n const dep = container.get(dependency);\n data.push(await runSeed(dep));\n }\n\n await seed.run(data);\n};\n\nexport const run = async (): Promise<void> => {\n const { values } = parseArgs({\n args: Bun.argv,\n options: {\n drop: {\n type: \"boolean\",\n },\n },\n strict: false,\n allowPositionals: true,\n });\n\n const seeds = getSeeds();\n const logger = new TerminalLogger();\n\n if (seeds.length === 0) {\n logger.info(\"No seeds found\\n\", undefined, {\n showTimestamp: false,\n showArrow: false,\n useSymbol: true,\n });\n return;\n }\n\n if (values.drop) {\n const database = container.getConstant<{ drop: () => Promise<void> }>(\"database\");\n if (database) {\n await database.drop();\n logger.info(\"Database dropped\\n\", undefined, {\n showTimestamp: false,\n showArrow: false,\n useSymbol: true,\n });\n }\n }\n\n logger.info(`Running ${seeds.length} seed(s)...\\n`, undefined, {\n showTimestamp: false,\n showArrow: false,\n useSymbol: true,\n });\n\n for (const seed of seeds) {\n const seedName = seed.constructor.name;\n\n if (!seed.isActive()) {\n logger.warn(`Seed ${seedName} is inactive\\n`, undefined, {\n showTimestamp: false,\n showArrow: false,\n useSymbol: true,\n });\n continue;\n }\n\n try {\n await runSeed(seed);\n logger.success(`Seed ${seedName} completed\\n`, undefined, {\n showTimestamp: false,\n showArrow: false,\n useSymbol: true,\n });\n } catch (error) {\n logger.error(`Seed ${seedName} failed\\n`, undefined, {\n showTimestamp: false,\n showArrow: false,\n useSymbol: true,\n });\n logger.error(error as IException);\n process.exit(1);\n }\n }\n\n try {\n const database = container.getConstant<{ close: () => Promise<void> }>(\"database\");\n if (database) {\n await database.close();\n }\n } catch {\n // No database constant registered — nothing to close\n }\n};\n",
7
+ "import { container } from \"@ooneex/container\";\nimport { SEEDS_CONTAINER } from \"./container\";\nimport type { Environment, ISeed } from \"./types\";\n\nexport const getSeeds = async (): Promise<ISeed[]> => {\n const currentEnv = Bun.env.APP_ENV as Environment | undefined;\n const seeds: ISeed[] = [];\n\n for (const SeedClass of SEEDS_CONTAINER) {\n const seed = container.get(SeedClass);\n if (!(await seed.isActive())) continue;\n\n const allowedEnvs = await seed.getEnv();\n if (allowedEnvs.length > 0 && currentEnv && !allowedEnvs.includes(currentEnv)) continue;\n\n seeds.push(seed);\n }\n\n return seeds;\n};\n",
8
+ "import { parseArgs } from \"node:util\";\nimport { container } from \"@ooneex/container\";\nimport type { IException } from \"@ooneex/exception\";\nimport { TerminalLogger } from \"@ooneex/logger\";\nimport { getSeeds } from \"./getSeeds\";\nimport type { ISeed } from \"./types\";\n\nconst runSeed = async (seed: ISeed): Promise<void> => {\n const data = [];\n\n const dependencies = await seed.getDependencies();\n\n for (const dependency of dependencies) {\n const dep = container.get(dependency);\n data.push(await runSeed(dep));\n }\n\n await seed.run(data);\n};\n\nexport const run = async (): Promise<void> => {\n const { values } = parseArgs({\n args: Bun.argv,\n options: {\n drop: {\n type: \"boolean\",\n },\n },\n strict: false,\n allowPositionals: true,\n });\n\n const seeds = await getSeeds();\n const logger = new TerminalLogger();\n\n if (seeds.length === 0) {\n logger.info(\"No seeds found\\n\", undefined, {\n showTimestamp: false,\n showArrow: false,\n useSymbol: true,\n });\n return;\n }\n\n if (values.drop) {\n const database = container.getConstant<{ drop: () => Promise<void> }>(\"database\");\n if (database) {\n await database.drop();\n logger.info(\"Database dropped\\n\", undefined, {\n showTimestamp: false,\n showArrow: false,\n useSymbol: true,\n });\n }\n }\n\n logger.info(`Running ${seeds.length} seed(s)...\\n`, undefined, {\n showTimestamp: false,\n showArrow: false,\n useSymbol: true,\n });\n\n for (const seed of seeds) {\n const seedName = seed.constructor.name;\n\n try {\n await runSeed(seed);\n logger.success(`Seed ${seedName} completed\\n`, undefined, {\n showTimestamp: false,\n showArrow: false,\n useSymbol: true,\n });\n } catch (error) {\n logger.error(`Seed ${seedName} failed\\n`, undefined, {\n showTimestamp: false,\n showArrow: false,\n useSymbol: true,\n });\n logger.error(error as IException);\n process.exit(1);\n }\n }\n\n try {\n const database = container.getConstant<{ close: () => Promise<void> }>(\"database\");\n if (database) {\n await database.close();\n }\n } catch {\n // No database constant registered — nothing to close\n }\n};\n",
9
9
  "import { join } from \"node:path\";\nimport { toKebabCase, toPascalCase } from \"@ooneex/utils\";\nimport { Glob } from \"bun\";\nimport testTemplate from \"./seed.test.txt\";\nimport template from \"./seed.txt\";\n\nexport const seedCreate = async (config: {\n name: string;\n seedsDir?: string;\n testsDir?: string;\n module?: string;\n}): Promise<{ seedPath: string; testPath: string; dataPath: string }> => {\n const name = toPascalCase(config.name).replace(/Seed$/, \"\");\n const seedName = `${name}Seed`;\n const dataFile = toKebabCase(seedName);\n const seedsDir = config.seedsDir || \"seeds\";\n const testsDir = config.testsDir || join(\"tests\", \"seeds\");\n\n const seedContent = template.replaceAll(\"{{ name }}\", seedName).replaceAll(\"{{ dataFile }}\", dataFile);\n await Bun.write(join(process.cwd(), seedsDir, `${seedName}.ts`), seedContent);\n\n await Bun.write(join(process.cwd(), seedsDir, `${dataFile}.yml`), \"# Seed data\\n\");\n\n const testContent = testTemplate\n .replace(/\\{\\{NAME\\}\\}/g, name)\n .replace(/\\{\\{DATA_FILE\\}\\}/g, dataFile)\n .replace(/\\{\\{MODULE\\}\\}/g, config.module ?? \"\");\n await Bun.write(join(process.cwd(), testsDir, `${seedName}.spec.ts`), testContent);\n\n const imports: string[] = [];\n const glob = new Glob(\"**/*Seed.ts\");\n for await (const file of glob.scan(join(process.cwd(), seedsDir))) {\n const seedClassName = file.replace(/\\.ts$/, \"\");\n imports.push(`export { ${seedClassName} } from './${seedClassName}';`);\n }\n\n await Bun.write(join(process.cwd(), seedsDir, \"seeds.ts\"), `${imports.sort().join(\"\\n\")}\\n`);\n\n return {\n seedPath: join(seedsDir, `${seedName}.ts`),\n testPath: join(testsDir, `${seedName}.spec.ts`),\n dataPath: join(seedsDir, `${dataFile}.yml`),\n };\n};\n",
10
- "import { join } from \"node:path\";\nimport { toKebabCase } from \"@ooneex/utils\";\nimport testTemplate from \"./seed.test.txt\";\n\nexport const seedTestCreate = async (config: {\n name: string;\n testsDir: string;\n module?: string;\n}): Promise<string> => {\n const { name, testsDir, module } = config;\n const testPath = join(process.cwd(), testsDir, `${name}.spec.ts`);\n\n const testFile = Bun.file(testPath);\n if (await testFile.exists()) return testPath;\n\n const baseName = name.replace(/Seed$/, \"\");\n const dataFile = toKebabCase(name);\n\n const content = testTemplate\n .replace(/\\{\\{NAME\\}\\}/g, baseName)\n .replace(/\\{\\{DATA_FILE\\}\\}/g, dataFile)\n .replace(/\\{\\{MODULE\\}\\}/g, module ?? \"\");\n await Bun.write(testPath, content);\n\n return testPath;\n};\n"
10
+ "import { join } from \"node:path\";\nimport { toKebabCase } from \"@ooneex/utils\";\nimport testTemplate from \"./seed.test.txt\";\n\nexport const seedTestCreate = async (config: {\n name: string;\n testsDir: string;\n module?: string;\n}): Promise<string> => {\n const { name, testsDir, module } = config;\n const testPath = join(process.cwd(), testsDir, `${name}.spec.ts`);\n\n const testFile = Bun.file(testPath);\n if (await testFile.exists()) return testPath;\n\n const baseName = name.replace(/Seed$/, \"\");\n const dataFile = toKebabCase(name);\n\n const content = testTemplate\n .replace(/\\{\\{NAME\\}\\}/g, baseName)\n .replace(/\\{\\{DATA_FILE\\}\\}/g, dataFile)\n .replace(/\\{\\{MODULE\\}\\}/g, module ?? \"\");\n await Bun.write(testPath, content);\n\n return testPath;\n};\n",
11
+ "import { Environment } from \"@ooneex/app-env\";\nexport { Environment };\n\n// biome-ignore lint/suspicious/noExplicitAny: trust me\nexport type SeedClassType = new (...args: any[]) => ISeed;\n\nexport interface ISeed {\n run: <T = unknown>(data?: unknown[]) => Promise<T> | T;\n isActive: () => Promise<boolean> | boolean;\n getDependencies: () => Promise<SeedClassType[]> | SeedClassType[];\n getEnv: () => Promise<Environment[]> | Environment[];\n}\n"
11
12
  ],
12
- "mappings": "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",
13
- "debugId": "728D696F910CF29264756E2164756E21",
13
+ "mappings": ";;AAAA;;;ACEO,IAAM,kBAAmC,CAAC;;;ADE1C,IAAM,YAAY;AAAA,EACvB,MAAM,CAAC,QAAyB,gBAAgB,cAAc;AAAA,IAC5D,OAAO,CAAC,WAAgC;AAAA,MACtC,UAAU,IAAI,QAAQ,KAAK;AAAA,MAC3B,gBAAgB,KAAK,MAAM;AAAA;AAAA;AAGjC;;AEXA,sBAAS;AAIF,IAAM,WAAW,YAA8B;AAAA,EACpD,MAAM,aAAa,IAAI,IAAI;AAAA,EAC3B,MAAM,QAAiB,CAAC;AAAA,EAExB,WAAW,aAAa,iBAAiB;AAAA,IACvC,MAAM,OAAO,WAAU,IAAI,SAAS;AAAA,IACpC,IAAI,CAAE,MAAM,KAAK,SAAS;AAAA,MAAI;AAAA,IAE9B,MAAM,cAAc,MAAM,KAAK,OAAO;AAAA,IACtC,IAAI,YAAY,SAAS,KAAK,cAAc,CAAC,YAAY,SAAS,UAAU;AAAA,MAAG;AAAA,IAE/E,MAAM,KAAK,IAAI;AAAA,EACjB;AAAA,EAEA,OAAO;AAAA;;AClBT;AACA,sBAAS;AAET;AAIA,IAAM,UAAU,OAAO,SAA+B;AAAA,EACpD,MAAM,OAAO,CAAC;AAAA,EAEd,MAAM,eAAe,MAAM,KAAK,gBAAgB;AAAA,EAEhD,WAAW,cAAc,cAAc;AAAA,IACrC,MAAM,MAAM,WAAU,IAAI,UAAU;AAAA,IACpC,KAAK,KAAK,MAAM,QAAQ,GAAG,CAAC;AAAA,EAC9B;AAAA,EAEA,MAAM,KAAK,IAAI,IAAI;AAAA;AAGd,IAAM,MAAM,YAA2B;AAAA,EAC5C,QAAQ,WAAW,UAAU;AAAA,IAC3B,MAAM,IAAI;AAAA,IACV,SAAS;AAAA,MACP,MAAM;AAAA,QACJ,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,QAAQ;AAAA,IACR,kBAAkB;AAAA,EACpB,CAAC;AAAA,EAED,MAAM,QAAQ,MAAM,SAAS;AAAA,EAC7B,MAAM,SAAS,IAAI;AAAA,EAEnB,IAAI,MAAM,WAAW,GAAG;AAAA,IACtB,OAAO,KAAK;AAAA,GAAoB,WAAW;AAAA,MACzC,eAAe;AAAA,MACf,WAAW;AAAA,MACX,WAAW;AAAA,IACb,CAAC;AAAA,IACD;AAAA,EACF;AAAA,EAEA,IAAI,OAAO,MAAM;AAAA,IACf,MAAM,WAAW,WAAU,YAA2C,UAAU;AAAA,IAChF,IAAI,UAAU;AAAA,MACZ,MAAM,SAAS,KAAK;AAAA,MACpB,OAAO,KAAK;AAAA,GAAsB,WAAW;AAAA,QAC3C,eAAe;AAAA,QACf,WAAW;AAAA,QACX,WAAW;AAAA,MACb,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEA,OAAO,KAAK,WAAW,MAAM;AAAA,GAAuB,WAAW;AAAA,IAC7D,eAAe;AAAA,IACf,WAAW;AAAA,IACX,WAAW;AAAA,EACb,CAAC;AAAA,EAED,WAAW,QAAQ,OAAO;AAAA,IACxB,MAAM,WAAW,KAAK,YAAY;AAAA,IAElC,IAAI;AAAA,MACF,MAAM,QAAQ,IAAI;AAAA,MAClB,OAAO,QAAQ,QAAQ;AAAA,GAAwB,WAAW;AAAA,QACxD,eAAe;AAAA,QACf,WAAW;AAAA,QACX,WAAW;AAAA,MACb,CAAC;AAAA,MACD,OAAO,OAAO;AAAA,MACd,OAAO,MAAM,QAAQ;AAAA,GAAqB,WAAW;AAAA,QACnD,eAAe;AAAA,QACf,WAAW;AAAA,QACX,WAAW;AAAA,MACb,CAAC;AAAA,MACD,OAAO,MAAM,KAAmB;AAAA,MAChC,QAAQ,KAAK,CAAC;AAAA;AAAA,EAElB;AAAA,EAEA,IAAI;AAAA,IACF,MAAM,WAAW,WAAU,YAA4C,UAAU;AAAA,IACjF,IAAI,UAAU;AAAA,MACZ,MAAM,SAAS,MAAM;AAAA,IACvB;AAAA,IACA,MAAM;AAAA;;ACxFV;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIO,IAAM,aAAa,OAAO,WAKwC;AAAA,EACvE,MAAM,OAAO,aAAa,OAAO,IAAI,EAAE,QAAQ,SAAS,EAAE;AAAA,EAC1D,MAAM,WAAW,GAAG;AAAA,EACpB,MAAM,WAAW,YAAY,QAAQ;AAAA,EACrC,MAAM,WAAW,OAAO,YAAY;AAAA,EACpC,MAAM,WAAW,OAAO,YAAY,KAAK,SAAS,OAAO;AAAA,EAEzD,MAAM,cAAc,aAAS,WAAW,cAAc,QAAQ,EAAE,WAAW,kBAAkB,QAAQ;AAAA,EACrG,MAAM,IAAI,MAAM,KAAK,QAAQ,IAAI,GAAG,UAAU,GAAG,aAAa,GAAG,WAAW;AAAA,EAE5E,MAAM,IAAI,MAAM,KAAK,QAAQ,IAAI,GAAG,UAAU,GAAG,cAAc,GAAG;AAAA,CAAe;AAAA,EAEjF,MAAM,cAAc,kBACjB,QAAQ,iBAAiB,IAAI,EAC7B,QAAQ,sBAAsB,QAAQ,EACtC,QAAQ,mBAAmB,OAAO,UAAU,EAAE;AAAA,EACjD,MAAM,IAAI,MAAM,KAAK,QAAQ,IAAI,GAAG,UAAU,GAAG,kBAAkB,GAAG,WAAW;AAAA,EAEjF,MAAM,UAAoB,CAAC;AAAA,EAC3B,MAAM,OAAO,IAAI,KAAK,aAAa;AAAA,EACnC,iBAAiB,QAAQ,KAAK,KAAK,KAAK,QAAQ,IAAI,GAAG,QAAQ,CAAC,GAAG;AAAA,IACjE,MAAM,gBAAgB,KAAK,QAAQ,SAAS,EAAE;AAAA,IAC9C,QAAQ,KAAK,YAAY,2BAA2B,iBAAiB;AAAA,EACvE;AAAA,EAEA,MAAM,IAAI,MAAM,KAAK,QAAQ,IAAI,GAAG,UAAU,UAAU,GAAG,GAAG,QAAQ,KAAK,EAAE,KAAK;AAAA,CAAI;AAAA,CAAK;AAAA,EAE3F,OAAO;AAAA,IACL,UAAU,KAAK,UAAU,GAAG,aAAa;AAAA,IACzC,UAAU,KAAK,UAAU,GAAG,kBAAkB;AAAA,IAC9C,UAAU,KAAK,UAAU,GAAG,cAAc;AAAA,EAC5C;AAAA;;AC1CF,iBAAS;AACT,wBAAS;AAGF,IAAM,iBAAiB,OAAO,WAId;AAAA,EACrB,QAAQ,MAAM,UAAU,WAAW;AAAA,EACnC,MAAM,WAAW,MAAK,QAAQ,IAAI,GAAG,UAAU,GAAG,cAAc;AAAA,EAEhE,MAAM,WAAW,IAAI,KAAK,QAAQ;AAAA,EAClC,IAAI,MAAM,SAAS,OAAO;AAAA,IAAG,OAAO;AAAA,EAEpC,MAAM,WAAW,KAAK,QAAQ,SAAS,EAAE;AAAA,EACzC,MAAM,WAAW,aAAY,IAAI;AAAA,EAEjC,MAAM,UAAU,kBACb,QAAQ,iBAAiB,QAAQ,EACjC,QAAQ,sBAAsB,QAAQ,EACtC,QAAQ,mBAAmB,UAAU,EAAE;AAAA,EAC1C,MAAM,IAAI,MAAM,UAAU,OAAO;AAAA,EAEjC,OAAO;AAAA;;ACxBT;",
14
+ "debugId": "DB624239BB3885A664756E2164756E21",
14
15
  "names": []
15
16
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ooneex/seeds",
3
3
  "description": "Database seeding framework for populating initial data, fixtures, and test datasets with execution logging and idempotent operations",
4
- "version": "1.7.0",
4
+ "version": "1.8.0",
5
5
  "type": "module",
6
6
  "files": [
7
7
  "dist",
@@ -30,10 +30,11 @@
30
30
  "dependencies": {
31
31
  "@ooneex/container": "^1.5.1",
32
32
  "@ooneex/logger": "^1.3.5",
33
- "@ooneex/utils": "^0.4.11"
33
+ "@ooneex/utils": "^0.4.12"
34
34
  },
35
35
  "devDependencies": {
36
- "@ooneex/exception": "^1.2.10"
36
+ "@ooneex/exception": "^1.2.10",
37
+ "@ooneex/app-env": "^1.9.0"
37
38
  },
38
39
  "keywords": [
39
40
  "bun",