@helloao/cli 0.0.7 → 0.0.8-alpha

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.
@@ -0,0 +1,153 @@
1
+ import { InputTranslationMetadata } from '@helloao/tools/generation/index.js';
2
+ import { UploadApiFromDatabaseOptions, UploadApiOptions } from './uploads.js';
3
+ export interface GetTranslationsItem {
4
+ id: string;
5
+ language: string;
6
+ direction: 'ltr' | 'rtl';
7
+ year: number;
8
+ name_local: string;
9
+ name_english: string;
10
+ name_abbrev: string;
11
+ attribution: string;
12
+ attribution_url: string;
13
+ licenses: RuntimeLicense[];
14
+ }
15
+ export interface RuntimeLicense {
16
+ id: string | null;
17
+ name: string;
18
+ restrictions: MetaRestrictions;
19
+ url: string;
20
+ }
21
+ export interface MetaRestrictions {
22
+ limit_verses: number | null;
23
+ limit_book_ratio: number | null;
24
+ limit_content_ratio: number | null;
25
+ forbid_commercial: boolean;
26
+ forbid_derivatives: boolean | 'same-license';
27
+ forbid_attributionless: boolean;
28
+ forbid_other: boolean;
29
+ }
30
+ export interface InitDbOptions {
31
+ /**
32
+ * The path to the source database to copy the schema from.
33
+ */
34
+ source?: string;
35
+ /**
36
+ * The languages to copy from the source database. If not specified, then all languages will be copied.
37
+ */
38
+ language?: string[];
39
+ }
40
+ /**
41
+ * Initializes a new Bible API DB.
42
+ * @param dbPath The path to the database. If null or empty, then the "bible-api.db" will be used from the current working directory.
43
+ * @param options The options for the initialization.
44
+ */
45
+ export declare function initDb(dbPath: string | null, options: InitDbOptions): Promise<void>;
46
+ export interface ImportTranslationOptions {
47
+ /**
48
+ * Whether to forcibly import the translations, even if they have already been imported.
49
+ */
50
+ overwrite?: boolean;
51
+ }
52
+ /**
53
+ * Imports a translation from the given directory into the database in the current working directory.
54
+ * @param dir The directory that the translation is located in.
55
+ * @param dirs Any extra directories that should be imported.
56
+ * @param options The options for the import.
57
+ */
58
+ export declare function importTranslation(dir: string, dirs: string[], options: ImportTranslationOptions): Promise<void>;
59
+ /**
60
+ * Imports all the translations from the given directory into the database in the current working directory.
61
+ * @param dir The directory that the translations are located in.
62
+ * @param options The options.
63
+ */
64
+ export declare function importTranslations(dir: string, options: ImportTranslationOptions): Promise<void>;
65
+ export interface FetchTranslationsOptions {
66
+ /**
67
+ * Fetch all translations. If omitted, only undownloaded translations will be fetched.
68
+ */
69
+ all?: boolean;
70
+ }
71
+ /**
72
+ * Fetches the specified translations from fetch.bible and places them in the given directory.
73
+ * @param dir The directory that the translations should be placed in.
74
+ * @param translations The translations that should be downloaded. If not specified, then all translations will be downloaded.
75
+ * @param options The options.
76
+ */
77
+ export declare function fetchTranslations(dir: string, translations?: string[], options?: FetchTranslationsOptions): Promise<void>;
78
+ /**
79
+ * Fetches the specified audio translations and places them in the given directory.
80
+ * Translations should be in the format "translationId/audioId". e.g. "BSB/gilbert"
81
+ * @param dir The directory that the translations should be placed in.
82
+ * @param translations The translations that should be downloaded.
83
+ * @param options The options.
84
+ */
85
+ export declare function fetchAudio(dir: string, translations: string[], options?: FetchTranslationsOptions): Promise<void>;
86
+ /**
87
+ * Generates the translation files directly from the translations stored in the given input directory.
88
+ * @param input The input directory that the translations are stored in.
89
+ * @param dest The destination to upload the API files to.
90
+ * @param options The options for the generation.
91
+ */
92
+ export declare function generateTranslationsFiles(input: string, dest: string, options: UploadApiFromDatabaseOptions): Promise<void>;
93
+ /**
94
+ * Generates the translation files directly from the translation stored in the given input directory.
95
+ * @param input The input directory that the translation is stored in.
96
+ * @param dest The destination to upload the API files to.
97
+ * @param options The options for the generation.
98
+ */
99
+ export declare function generateTranslationFiles(input: string, dest: string, options: UploadApiOptions): Promise<void>;
100
+ /**
101
+ * The options for uploading the test translations.
102
+ */
103
+ export interface UploadTestTranslationOptions extends UploadApiOptions {
104
+ /**
105
+ * The s3 URL to upload the translations to.
106
+ * Defaults to "s3://ao-bible-api-public-uploads"
107
+ */
108
+ s3Url?: string;
109
+ }
110
+ export interface UploadTestTranslationResult {
111
+ /**
112
+ * The S3 URL where the translations were uploaded to.
113
+ */
114
+ uploadS3Url: string;
115
+ /**
116
+ * The HTTP URL that the version can be accessed at.
117
+ */
118
+ url: string;
119
+ /**
120
+ * The URL that the available translations can be accessed at.
121
+ */
122
+ availableTranslationsUrl: string;
123
+ /**
124
+ * The version that was uploaded.
125
+ * This is a SHA-256 hash of the input files.
126
+ */
127
+ version: string;
128
+ }
129
+ /**
130
+ * Generates the API files directly from the translations stored in the given input directory and
131
+ * uploads them to the HelloAO test s3 bucket.
132
+ *
133
+ * Requires access to the HelloAO test s3 bucket. Email hello@helloao.org for access.
134
+ *
135
+ * @param input The input directory that the translations are stored in.
136
+ * @param options The options to use for the upload.
137
+ */
138
+ export declare function uploadTestTranslations(input: string, options: UploadTestTranslationOptions): Promise<UploadTestTranslationResult>;
139
+ /**
140
+ * Generates the API files directly from the given translation and
141
+ * uploads them to the HelloAO test s3 bucket.
142
+ *
143
+ * Requires access to the HelloAO test s3 bucket. Email hello@helloao.org for access.
144
+ *
145
+ * @param input The input directory that the translations are stored in.
146
+ * @param options The options to use for the upload.
147
+ */
148
+ export declare function uploadTestTranslation(input: string, options: UploadTestTranslationOptions): Promise<UploadTestTranslationResult | undefined>;
149
+ /**
150
+ * Asks the user for the metadata for the translation.
151
+ */
152
+ export declare function askForMetadata(defaultId?: string): Promise<InputTranslationMetadata>;
153
+ //# sourceMappingURL=actions.d.ts.map
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1,93 @@
1
+ import { PrismaClient } from './prisma-gen/index.js';
2
+ import { Database } from 'better-sqlite3';
3
+ import { DatasetOutput, DatasetTranslation, DatasetTranslationBook } from '@helloao/tools/generation/dataset.js';
4
+ import { InputFile, TranslationBookChapter } from '@helloao/tools/generation/index.js';
5
+ import { GenerateApiOptions } from '@helloao/tools/generation/api.js';
6
+ import type { DOMParser } from 'linkedom';
7
+ import { Readable } from 'stream';
8
+ export declare function getMigrationsPath(): Promise<string | null>;
9
+ /**
10
+ * Imports the translations from the given directories into the database.
11
+ * @param db The database to import the translations into.
12
+ * @param dirs The directories to import the translations from.
13
+ * @param parser The DOM parser that should be used for USX files.
14
+ * @param overwrite Whether to force a reload of the translations.
15
+ */
16
+ export declare function importTranslations(db: Database, dirs: string[], parser: DOMParser, overwrite: boolean): Promise<void>;
17
+ /**
18
+ * Imports a batch of translations from the given directories into the database.
19
+ * @param db The database to import the translations into.
20
+ * @param dirs The directories that contain the translations.
21
+ * @param parser The DOM parser that should be used for USX files.
22
+ * @param overwrite Whether to force a reload of the translations.
23
+ */
24
+ export declare function importTranslationBatch(db: Database, dirs: string[], parser: DOMParser, overwrite: boolean): Promise<void>;
25
+ /**
26
+ * Parses and imports the given files into the database.
27
+ * @param db The database to import the files into.
28
+ * @param files The files that should be parsed.
29
+ * @param parser The DOM parser that should be used for USX files.
30
+ * @param overwrite Whether to force a reload of the translations.
31
+ */
32
+ export declare function importTranslationFileBatch(db: Database, files: InputFile[], parser: DOMParser, overwrite: boolean): Promise<void>;
33
+ /**
34
+ * Filters the given input files to only include those that have changed.
35
+ * @param db The database to check for changes.
36
+ * @param files The files to filter.
37
+ */
38
+ export declare function getChangedOrNewInputFiles(db: Database, files: InputFile[]): InputFile[];
39
+ export declare function insertFileMetadata(db: Database, files: InputFile[]): void;
40
+ export declare function insertTranslations(db: Database, translations: DatasetTranslation[]): void;
41
+ export declare function insertTranslationBooks(db: Database, translation: DatasetTranslation, translationBooks: DatasetTranslationBook[]): void;
42
+ export declare function insertTranslationContent(db: Database, translation: DatasetTranslation, book: DatasetTranslationBook, chapters: TranslationBookChapter[]): void;
43
+ export declare function getDbPathFromDir(dir: string): string;
44
+ export declare function getDbPath(p: string | null): string;
45
+ export declare function getPrismaDbFromDir(dir: string): PrismaClient<{
46
+ datasources: {
47
+ db: {
48
+ url: string;
49
+ };
50
+ };
51
+ }, never, import("prisma-gen/runtime/library.js").DefaultArgs>;
52
+ export declare function getDbFromDir(dir: string): Promise<Database>;
53
+ export declare function getDb(dbPath: string): Promise<Database>;
54
+ export interface SerializedFile {
55
+ path: string;
56
+ content: string | Readable;
57
+ /**
58
+ * Gets the base64-encoded SHA256 hash of the content of the file.
59
+ */
60
+ sha256?(): string;
61
+ }
62
+ /**
63
+ * Loads the datasets from the database in a series of batches.
64
+ * @param db The database.
65
+ * @param translationsPerBatch The number of translations to load per batch.
66
+ * @param translationsToLoad The list of translations to load. If not provided, all translations will be loaded.
67
+ */
68
+ export declare function loadDatasets(db: PrismaClient, translationsPerBatch?: number, translationsToLoad?: string[]): AsyncGenerator<DatasetOutput>;
69
+ export interface SerializeApiOptions extends GenerateApiOptions {
70
+ /**
71
+ * Whether the output should be pretty-printed.
72
+ */
73
+ pretty?: boolean;
74
+ }
75
+ /**
76
+ * Generates and serializes the API files for the datasets that are stored in the database.
77
+ * Yields each batch of serialized files.
78
+ * @param db The database that the dataset should be loaded from.
79
+ * @param options The options to use for serializing the files.
80
+ * @param apiOptions The options to use for generating the API files.
81
+ * @param translationsPerBatch The number of translations that should be loaded and written per batch.
82
+ * @param translations The list of translations that should be loaded. If not provided, all translations will be loaded.
83
+ */
84
+ export declare function serializeFilesFromDatabase(db: PrismaClient, options?: SerializeApiOptions, translationsPerBatch?: number, translations?: string[]): AsyncGenerator<SerializedFile[]>;
85
+ /**
86
+ * Generates and serializes the API files for the given datasets.
87
+ * Yields each batch of serialized files.
88
+ *
89
+ * @param datasets The datasets to serialize.
90
+ * @param options The options to use for generating and serializing the files.
91
+ */
92
+ export declare function serializeDatasets(datasets: AsyncIterable<DatasetOutput>, options?: SerializeApiOptions): AsyncGenerator<SerializedFile[]>;
93
+ //# sourceMappingURL=db.d.ts.map
@@ -0,0 +1,2 @@
1
+ export declare function downloadFile(url: string, path: string): Promise<void>;
2
+ //# sourceMappingURL=downloads.d.ts.map
@@ -0,0 +1,118 @@
1
+ import { InputFile, OutputFile } from '@helloao/tools/generation/common-types.js';
2
+ import { Readable } from 'stream';
3
+ /**
4
+ * Defines an interface that contains information about a serialized file.
5
+ */
6
+ export interface Uploader {
7
+ /**
8
+ * Gets the ideal batch size for the uploader.
9
+ * Null if the uploader does not need batching.
10
+ */
11
+ idealBatchSize: number | null;
12
+ /**
13
+ * Uploads the given file.
14
+ * @param file The file to upload.
15
+ * @param overwrite Whether the file should be overwritten if it already exists.
16
+ * @returns True if the file was uploaded. False if the file was skipped due to already existing.
17
+ */
18
+ upload(file: SerializedFile, overwrite: boolean): Promise<boolean>;
19
+ /**
20
+ * Disposes resources that the uploader uses.
21
+ */
22
+ dispose?(): Promise<void>;
23
+ }
24
+ /**
25
+ * Defines an interface for a file that has been serialized.
26
+ */
27
+ export interface SerializedFile {
28
+ path: string;
29
+ content: string | Readable;
30
+ /**
31
+ * Gets the base64-encoded SHA256 hash of the content of the file.
32
+ */
33
+ sha256?(): string;
34
+ }
35
+ /**
36
+ * The options for serializing API files.
37
+ */
38
+ export interface SerializeApiOptions {
39
+ /**
40
+ * Whether the output should be pretty-printed.
41
+ */
42
+ pretty?: boolean;
43
+ }
44
+ /**
45
+ * Serializes the given output files into serialized files using the given options.
46
+ *
47
+ * Each iteration of the given files will be processed as a batch, and any mergable files will automatically be merged together and serialized in the final batch.
48
+ *
49
+ * @param files The files that should be serialized.
50
+ * @param options The options for serialization.
51
+ */
52
+ export declare function serializeOutputFiles(files: AsyncIterable<OutputFile[]>, options: SerializeApiOptions): AsyncGenerator<SerializedFile[]>;
53
+ /**
54
+ * Serializes the given output file content into a serialized file.
55
+ * @param path The path that the file should be saved to.
56
+ * @param content The content of the file.
57
+ * @param options The options for serialization.
58
+ */
59
+ export declare function serializeFile(path: string, content: OutputFile['content'], options: SerializeApiOptions): Promise<SerializedFile | null>;
60
+ /**
61
+ * Loads the files for the given translations.
62
+ * @param dir The directory that the translations exist in.
63
+ */
64
+ export declare function loadTranslationsFiles(dirs: string[]): Promise<InputFile[]>;
65
+ /**
66
+ * Loads the files for the given translation.
67
+ * @param translation The directory that the translation exists in.
68
+ * @returns The list of files that were loaded, or null if the translation has no metadata.
69
+ */
70
+ export declare function loadTranslationFiles(translation: string): Promise<InputFile[] | null>;
71
+ export interface CollectionTranslationMetadata {
72
+ name: {
73
+ local: string;
74
+ abbrev: string;
75
+ english: string;
76
+ };
77
+ language: string;
78
+ year: number;
79
+ direction: 'ltr' | 'rtl';
80
+ copyright: {
81
+ licenses: any[];
82
+ attribution: string;
83
+ attribution_url: string;
84
+ };
85
+ id: string | null;
86
+ source: {
87
+ id: string;
88
+ };
89
+ }
90
+ /**
91
+ * Defines an uploader that is able to upload files to a directory.
92
+ */
93
+ export declare class FilesUploader implements Uploader {
94
+ private _dir;
95
+ constructor(dir: string);
96
+ get idealBatchSize(): number | null;
97
+ upload(file: SerializedFile, overwrite: boolean): Promise<boolean>;
98
+ }
99
+ /**
100
+ * Defines an uploader that is able to upload files into a zip file.
101
+ */
102
+ export declare class ZipUploader implements Uploader {
103
+ private _path;
104
+ private _initPromise;
105
+ private _fileHandle;
106
+ private _zip;
107
+ constructor(filePath: string);
108
+ private _init;
109
+ get idealBatchSize(): number | null;
110
+ upload(file: SerializedFile, _overwrite: boolean): Promise<boolean>;
111
+ dispose(): Promise<void>;
112
+ }
113
+ /**
114
+ * Calculates the SHa256 hash of the given input files.
115
+ * @param files The files to hash.
116
+ */
117
+ export declare function hashInputFiles(files: InputFile[]): string;
118
+ //# sourceMappingURL=files.d.ts.map
@@ -0,0 +1,8 @@
1
+ import * as db from './db.js';
2
+ import * as downloads from './downloads.js';
3
+ import * as uploads from './uploads.js';
4
+ import * as actions from './actions.js';
5
+ import * as files from './files.js';
6
+ import * as s3 from './s3.js';
7
+ export { db, downloads, uploads, actions, files, s3 };
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,44 @@
1
+ import { SerializedFile, Uploader } from './files.js';
2
+ import { AwsCredentialIdentity, Provider } from '@smithy/types';
3
+ export declare class S3Uploader implements Uploader {
4
+ private _client;
5
+ private _bucketName;
6
+ private _keyPrefix;
7
+ get idealBatchSize(): number;
8
+ constructor(bucketName: string, keyPrefix: string, profile: string | null | AwsCredentialIdentity | Provider<AwsCredentialIdentity>);
9
+ upload(file: SerializedFile, overwrite: boolean): Promise<boolean>;
10
+ }
11
+ /**
12
+ * Parses the given S3 URL into its bucket name and object key.
13
+ * @param url The URL to parse.
14
+ */
15
+ export declare function parseS3Url(url: string): {
16
+ bucketName: string;
17
+ objectKey: string;
18
+ } | undefined;
19
+ /**
20
+ * Gets the HTTP URL for the given S3 URL.
21
+ * @param s3Url The S3 URL to convert.
22
+ */
23
+ export declare function getHttpUrl(s3Url: string): string | undefined;
24
+ /**
25
+ * A provider that gets the credentials directly from the user input.
26
+ */
27
+ export declare const askForAccessKeyProvider: Provider<AwsCredentialIdentity>;
28
+ /**
29
+ * Defines a provider that tries to get the credentials from the given list of providers.
30
+ * @param providers The providers to try.
31
+ */
32
+ export declare function providerChain(...providers: Provider<AwsCredentialIdentity>[]): Provider<AwsCredentialIdentity>;
33
+ /**
34
+ * Gets the default provider for the given options.
35
+ *
36
+ * Defaults first to using the provided access key and secret access key, then to using the given profile, then finally to asking the user for the access key.
37
+ * @param options
38
+ */
39
+ export declare function defaultProviderForOptions(options: {
40
+ accessKeyId?: string;
41
+ secretAccessKey?: string;
42
+ profile?: string;
43
+ }): Provider<AwsCredentialIdentity> | AwsCredentialIdentity;
44
+ //# sourceMappingURL=s3.d.ts.map
@@ -0,0 +1,83 @@
1
+ import { SerializedFile } from './db.js';
2
+ import { Uploader } from './files.js';
3
+ import { DatasetOutput } from '@helloao/tools/generation/dataset.js';
4
+ import { PrismaClient } from './prisma-gen/index.js';
5
+ import { GenerateApiOptions } from '@helloao/tools/generation/api.js';
6
+ export interface UploadApiFromDatabaseOptions extends UploadApiOptions, GenerateApiOptions {
7
+ /**
8
+ * The number of files to upload in each batch.
9
+ */
10
+ batchSize: string | number;
11
+ }
12
+ export interface UploadApiOptions {
13
+ /**
14
+ * Whether to overwrite existing files.
15
+ */
16
+ overwrite?: boolean;
17
+ /**
18
+ * Whether to only overwrite common files.
19
+ * "Common files" are files that are similar between translations, like the books.json endpoint, or individual chapter endpoints.
20
+ */
21
+ overwriteCommonFiles?: boolean;
22
+ /**
23
+ * The file pattern regex that should be used to filter the files that are uploaded.
24
+ */
25
+ filePattern?: string;
26
+ /**
27
+ * The translations to generate API files for.
28
+ */
29
+ translations?: string[];
30
+ /**
31
+ * The AWS profile to use for uploading to S3.
32
+ */
33
+ profile?: string;
34
+ /**
35
+ * The AWS access key ID to use for uploading to S3.
36
+ */
37
+ accessKeyId?: string;
38
+ /**
39
+ * The AWS secret access key to use for uploading to S3.
40
+ */
41
+ secretAccessKey?: string;
42
+ /**
43
+ * Whether to generate API files that use the common name instead of book IDs.
44
+ */
45
+ useCommonName?: boolean;
46
+ /**
47
+ * Whether to generate audio files for the API.
48
+ */
49
+ generateAudioFiles?: boolean;
50
+ /**
51
+ * Whether to generate pretty-printed JSON files.
52
+ */
53
+ pretty?: boolean;
54
+ }
55
+ /**
56
+ * Loads and generates the API files from the database and uploads them to the specified destination.
57
+ * @param db The database that the datasets should be loaded from.
58
+ * @param dest The destination to upload the API files to. Supported destinations are S3, zip files, and local directories.
59
+ * @param options The options to use for the upload.
60
+ */
61
+ export declare function uploadApiFilesFromDatabase(db: PrismaClient, dest: string, options: UploadApiFromDatabaseOptions): Promise<void>;
62
+ /**
63
+ * Generates the API files from the given datasets and uploads them to the specified destination.
64
+ * @param dest The destination to upload the API files to. Supported destinations are S3, zip files, and local directories.
65
+ * @param options The options to use for the upload.
66
+ * @param datasets The datasets to generate the API files from.
67
+ */
68
+ export declare function serializeAndUploadDatasets(dest: string, datasets: AsyncIterable<DatasetOutput>, options?: UploadApiOptions & GenerateApiOptions): Promise<void>;
69
+ /**
70
+ * Uploads the given serialized files to the specified destination.
71
+ * @param dest The destination to upload the API files to. Supported destinations are S3, zip files, and local directories.
72
+ * @param options The options to use for the upload.
73
+ * @param datasets The datasets to generate the API files from.
74
+ */
75
+ export declare function uploadFiles(dest: string, options: UploadApiOptions, serializedFiles: AsyncIterable<SerializedFile[]>): Promise<void>;
76
+ /**
77
+ * Uploads the given serialized files using the given uploader.
78
+ * @param uploader The uploader to use.
79
+ * @param options The options to use for the upload.
80
+ * @param datasets The datasets to generate the API files from.
81
+ */
82
+ export declare function uploadFilesUsingUploader(uploader: Uploader, options: UploadApiOptions, serializedFiles: AsyncIterable<SerializedFile[]>): Promise<void>;
83
+ //# sourceMappingURL=uploads.d.ts.map
package/package.json CHANGED
@@ -1,16 +1,21 @@
1
1
  {
2
2
  "name": "@helloao/cli",
3
- "version": "0.0.7",
3
+ "version": "0.0.8-alpha",
4
4
  "description": "A CLI and related tools for managing HelloAO's Free Bible API",
5
- "module": "index.js",
6
- "types": "index.d.ts",
5
+ "type": "module",
6
+ "exports": {
7
+ ".": {
8
+ "types": "./dist/types/index.d.ts",
9
+ "require": "./dist/cjs/index.cjs"
10
+ }
11
+ },
7
12
  "bin": {
8
- "helloao": "./cli.js"
13
+ "helloao": "./dist/cjs/cli.cjs"
9
14
  },
10
15
  "author": "Kallyn Gowdy <kal@helloao.org>",
11
16
  "license": "MIT",
12
17
  "dependencies": {
13
- "@helloao/tools": "^0.0.5",
18
+ "@helloao/tools": "^0.0.6-alpha",
14
19
  "commander": "12.1.0",
15
20
  "@gracious.tech/fetch-client": "^0.7.0",
16
21
  "prisma": "^5.12.1",
@@ -209,7 +209,7 @@ const config = {
209
209
  "db"
210
210
  ],
211
211
  "activeProvider": "sqlite",
212
- "postinstall": false,
212
+ "postinstall": true,
213
213
  "inlineDatasources": {
214
214
  "db": {
215
215
  "url": {
@@ -210,7 +210,7 @@ const config = {
210
210
  "db"
211
211
  ],
212
212
  "activeProvider": "sqlite",
213
- "postinstall": false,
213
+ "postinstall": true,
214
214
  "inlineDatasources": {
215
215
  "db": {
216
216
  "url": {
@@ -229,8 +229,8 @@ const fs = require('fs')
229
229
  config.dirname = __dirname
230
230
  if (!fs.existsSync(path.join(__dirname, 'schema.prisma'))) {
231
231
  const alternativePaths = [
232
- "packages/helloao-cli/prisma-gen",
233
- "helloao-cli/prisma-gen",
232
+ "prisma-gen",
233
+ "",
234
234
  ]
235
235
 
236
236
  const alternativePath = alternativePaths.find((altPath) => {
@@ -259,7 +259,7 @@ Object.assign(exports, Prisma)
259
259
 
260
260
  // file annotations for bundling tools to include these files
261
261
  path.join(__dirname, "query_engine-windows.dll.node");
262
- path.join(process.cwd(), "packages/helloao-cli/prisma-gen/query_engine-windows.dll.node")
262
+ path.join(process.cwd(), "prisma-gen/query_engine-windows.dll.node")
263
263
  // file annotations for bundling tools to include these files
264
264
  path.join(__dirname, "schema.prisma");
265
- path.join(process.cwd(), "packages/helloao-cli/prisma-gen/schema.prisma")
265
+ path.join(process.cwd(), "prisma-gen/schema.prisma")