@haustle/notion-orm 0.0.2 → 0.0.4
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/build/src/BuildCall.d.ts +32 -0
- package/build/src/BuildCall.d.ts.map +1 -0
- package/build/{NotionActions → src}/BuildCall.js +1 -0
- package/build/src/BuildCall.js.map +1 -0
- package/build/src/DatabaseActions.d.ts +17 -0
- package/build/src/DatabaseActions.d.ts.map +1 -0
- package/build/{NotionActions/NotionCollection.js → src/DatabaseActions.js} +11 -5
- package/build/src/DatabaseActions.js.map +1 -0
- package/build/src/GenerateTypes.d.ts +10 -0
- package/build/src/GenerateTypes.d.ts.map +1 -0
- package/build/{NotionActions → src}/GenerateTypes.js +56 -57
- package/build/src/GenerateTypes.js.map +1 -0
- package/build/src/NotionConfig.d.ts +9 -0
- package/build/src/NotionConfig.d.ts.map +1 -0
- package/build/{NotionActions → src}/NotionConfig.js +37 -40
- package/build/src/NotionConfig.js.map +1 -0
- package/build/src/cli.d.ts +3 -0
- package/build/src/cli.d.ts.map +1 -0
- package/build/{index.js → src/cli.js} +2 -2
- package/build/src/cli.js.map +1 -0
- package/build/src/queryTypes.d.ts +102 -0
- package/build/src/queryTypes.d.ts.map +1 -0
- package/build/{NotionActions → src}/queryTypes.js +1 -0
- package/build/src/queryTypes.js.map +1 -0
- package/package.json +7 -13
- package/src/NotionActions/BuildCall.ts +0 -85
- package/src/NotionActions/GenerateTypes.ts +0 -417
- package/src/NotionActions/NotionCollection.ts +0 -126
- package/src/NotionActions/NotionConfig.ts +0 -150
- package/src/NotionActions/queryTypes.ts +0 -141
- package/src/index.ts +0 -43
- package/tsconfig.json +0 -22
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { PropertyType } from "./GenerateTypes";
|
|
2
|
+
export declare function getCall(args: {
|
|
3
|
+
type: PropertyType;
|
|
4
|
+
value: string | number | boolean;
|
|
5
|
+
}): {
|
|
6
|
+
select: {
|
|
7
|
+
name: string;
|
|
8
|
+
};
|
|
9
|
+
} | {
|
|
10
|
+
multi_select: {
|
|
11
|
+
name: string;
|
|
12
|
+
}[];
|
|
13
|
+
} | {
|
|
14
|
+
number: number;
|
|
15
|
+
} | {
|
|
16
|
+
url: string;
|
|
17
|
+
} | {
|
|
18
|
+
checkbox: boolean;
|
|
19
|
+
} | {
|
|
20
|
+
title: {
|
|
21
|
+
text: {
|
|
22
|
+
content: string;
|
|
23
|
+
};
|
|
24
|
+
}[];
|
|
25
|
+
} | {
|
|
26
|
+
rich_text: {
|
|
27
|
+
text: {
|
|
28
|
+
content: string;
|
|
29
|
+
};
|
|
30
|
+
}[];
|
|
31
|
+
} | undefined;
|
|
32
|
+
//# sourceMappingURL=BuildCall.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BuildCall.d.ts","sourceRoot":"","sources":["../../src/BuildCall.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,wBAAgB,OAAO,CAAC,IAAI,EAAE;IAC7B,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;CACjC;;;;;;;;;;;;;;;;;;;;;;;;;;cAkBA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BuildCall.js","sourceRoot":"","sources":["../../src/BuildCall.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { PropertyType } from "./GenerateTypes";
|
|
2
|
+
import { FilterOptionNames, Query } from "./queryTypes";
|
|
3
|
+
export type propNameToColumnNameType = Record<string, {
|
|
4
|
+
columnName: string;
|
|
5
|
+
type: PropertyType;
|
|
6
|
+
}>;
|
|
7
|
+
export declare class DatabaseActions<DatabaseSchemaType extends Record<string, any>, ColumnNameToColumnType extends Record<keyof DatabaseSchemaType, FilterOptionNames>> {
|
|
8
|
+
private NotionClient;
|
|
9
|
+
private databaseId;
|
|
10
|
+
private propNameToColumnName;
|
|
11
|
+
private columnNames;
|
|
12
|
+
constructor(datbaseId: string, propNameToColumnName: propNameToColumnNameType);
|
|
13
|
+
add(pageObject: DatabaseSchemaType): Promise<void>;
|
|
14
|
+
query(query: Query<DatabaseSchemaType, ColumnNameToColumnType>): Promise<void>;
|
|
15
|
+
private recursivelyBuildFilter;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=DatabaseActions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DatabaseActions.d.ts","sourceRoot":"","sources":["../../src/DatabaseActions.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C,OAAO,EAIN,iBAAiB,EACjB,KAAK,EAGL,MAAM,cAAc,CAAC;AAEtB,MAAM,MAAM,wBAAwB,GAAG,MAAM,CAC5C,MAAM,EACN;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,YAAY,CAAA;CAAE,CAC1C,CAAC;AAQF,qBAAa,eAAe,CAC3B,kBAAkB,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC9C,sBAAsB,SAAS,MAAM,CACpC,MAAM,kBAAkB,EACxB,iBAAiB,CACjB;IAED,OAAO,CAAC,YAAY,CAEjB;IACH,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,oBAAoB,CAA2B;IACvD,OAAO,CAAC,WAAW,CAAW;gBAG7B,SAAS,EAAE,MAAM,EACjB,oBAAoB,EAAE,wBAAwB;IAQzC,GAAG,CAAC,UAAU,EAAE,kBAAkB;IAwBlC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,kBAAkB,EAAE,sBAAsB,CAAC;IAqBpE,OAAO,CAAC,sBAAsB;CAyC9B"}
|
|
@@ -8,15 +8,20 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
11
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.
|
|
15
|
+
exports.DatabaseActions = void 0;
|
|
13
16
|
const client_1 = require("@notionhq/client");
|
|
14
17
|
const BuildCall_1 = require("./BuildCall");
|
|
15
|
-
require("
|
|
16
|
-
|
|
18
|
+
const path_1 = __importDefault(require("path"));
|
|
19
|
+
// Import auth key from config file
|
|
20
|
+
const { auth } = require(path_1.default.join(process.cwd(), "notion.config"));
|
|
21
|
+
class DatabaseActions {
|
|
17
22
|
constructor(datbaseId, propNameToColumnName) {
|
|
18
23
|
this.NotionClient = new client_1.Client({
|
|
19
|
-
auth
|
|
24
|
+
auth,
|
|
20
25
|
});
|
|
21
26
|
this.databaseId = datbaseId;
|
|
22
27
|
this.propNameToColumnName = propNameToColumnName;
|
|
@@ -92,4 +97,5 @@ class CollectionActions {
|
|
|
92
97
|
}
|
|
93
98
|
}
|
|
94
99
|
}
|
|
95
|
-
exports.
|
|
100
|
+
exports.DatabaseActions = DatabaseActions;
|
|
101
|
+
//# sourceMappingURL=DatabaseActions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DatabaseActions.js","sourceRoot":"","sources":["../../src/DatabaseActions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { GetDatabaseResponse } from "@notionhq/client/build/src/api-endpoints";
|
|
2
|
+
declare const propertyArr: string[];
|
|
3
|
+
export type PropertyType = typeof propertyArr[number];
|
|
4
|
+
export declare function createTypescriptFileForDatabase(dbResponse: GetDatabaseResponse): Promise<{
|
|
5
|
+
databaseName: string;
|
|
6
|
+
databaseClassName: string;
|
|
7
|
+
databaseId: string;
|
|
8
|
+
}>;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=GenerateTypes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GenerateTypes.d.ts","sourceRoot":"","sources":["../../src/GenerateTypes.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,mBAAmB,EACnB,MAAM,0CAA0C,CAAC;AAOlD,QAAA,MAAM,WAAW,UAQhB,CAAC;AACF,MAAM,MAAM,YAAY,GAAG,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC;AAUtD,wBAAsB,+BAA+B,CACpD,UAAU,EAAE,mBAAmB;;;;GA+G/B"}
|
|
@@ -39,6 +39,7 @@ exports.createTypescriptFileForDatabase = void 0;
|
|
|
39
39
|
const ts = __importStar(require("typescript"));
|
|
40
40
|
const fs_1 = __importDefault(require("fs"));
|
|
41
41
|
const path_1 = __importDefault(require("path"));
|
|
42
|
+
const NotionConfig_1 = require("./NotionConfig");
|
|
42
43
|
// This can be grabbed from // api-endpoints.d.ts with some work
|
|
43
44
|
const propertyArr = [
|
|
44
45
|
"text",
|
|
@@ -71,7 +72,10 @@ function createTypescriptFileForDatabase(dbResponse) {
|
|
|
71
72
|
};
|
|
72
73
|
if (columnType === "title" || columnType === "rich_text") {
|
|
73
74
|
// add text column to collection type
|
|
74
|
-
databaseColumnTypeProps.push(createTextProperty(
|
|
75
|
+
databaseColumnTypeProps.push(createTextProperty({
|
|
76
|
+
name: camelizedColumnName,
|
|
77
|
+
isTitle: columnType === "title",
|
|
78
|
+
}));
|
|
75
79
|
}
|
|
76
80
|
else if (columnType === "number") {
|
|
77
81
|
// add number column to collection type
|
|
@@ -79,7 +83,7 @@ function createTypescriptFileForDatabase(dbResponse) {
|
|
|
79
83
|
}
|
|
80
84
|
else if (columnType === "url") {
|
|
81
85
|
// add url column to collection type
|
|
82
|
-
databaseColumnTypeProps.push(createTextProperty(camelizedColumnName, false));
|
|
86
|
+
databaseColumnTypeProps.push(createTextProperty({ name: camelizedColumnName, isTitle: false }));
|
|
83
87
|
}
|
|
84
88
|
else if (columnType === "date") {
|
|
85
89
|
// add Date column to collection type
|
|
@@ -88,38 +92,45 @@ function createTypescriptFileForDatabase(dbResponse) {
|
|
|
88
92
|
else if (columnType == "select" || columnType == "multi_select") {
|
|
89
93
|
// @ts-ignore
|
|
90
94
|
const options = value[columnType].options.map((x) => x.name);
|
|
91
|
-
databaseColumnTypeProps.push(createMultiOptionProp(
|
|
92
|
-
|
|
93
|
-
|
|
95
|
+
databaseColumnTypeProps.push(createMultiOptionProp({
|
|
96
|
+
name: camelizedColumnName,
|
|
97
|
+
options,
|
|
98
|
+
isArray: columnType === "multi_select", // Union or Union Array
|
|
99
|
+
}));
|
|
94
100
|
}
|
|
95
101
|
});
|
|
96
102
|
// Object type that represents the database schema
|
|
97
|
-
const
|
|
98
|
-
// Top level non-nested variable, functions, types
|
|
99
|
-
const
|
|
100
|
-
|
|
103
|
+
const DatabaseSchemaType = ts.factory.createTypeAliasDeclaration(undefined, ts.factory.createIdentifier("DatabaseSchemaType"), undefined, ts.factory.createTypeLiteralNode(databaseColumnTypeProps));
|
|
104
|
+
// Top level non-nested variable, functions, types for database files
|
|
105
|
+
const TsNodesForDatabaseFile = ts.factory.createNodeArray([
|
|
106
|
+
createDatabaseActionsClassImport(),
|
|
101
107
|
createDatabaseIdVariable(databaseId),
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
];
|
|
107
|
-
const
|
|
108
|
-
const sourceFile = ts.createSourceFile("placeholder.ts", "", ts.ScriptTarget.ESNext, true, ts.ScriptKind.TS);
|
|
108
|
+
DatabaseSchemaType,
|
|
109
|
+
createColumnNameToColumnProperties(propNameToColumnName),
|
|
110
|
+
createColumnNameToColumnType(),
|
|
111
|
+
createDatabaseClassExport({ databaseName: databaseClassName }),
|
|
112
|
+
]);
|
|
113
|
+
const sourceFile = ts.createSourceFile("", "", ts.ScriptTarget.ESNext, true, ts.ScriptKind.TS);
|
|
109
114
|
const printer = ts.createPrinter();
|
|
110
|
-
const
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
+
const typescriptCodeToString = printer.printList(ts.ListFormat.MultiLine, TsNodesForDatabaseFile, sourceFile);
|
|
116
|
+
const transpileToJavaScript = ts.transpile(typescriptCodeToString, {
|
|
117
|
+
module: ts.ModuleKind.None,
|
|
118
|
+
target: ts.ScriptTarget.ESNext,
|
|
119
|
+
});
|
|
120
|
+
// Create databases output folder
|
|
121
|
+
if (!fs_1.default.existsSync(NotionConfig_1.DATABASES_DIR)) {
|
|
122
|
+
fs_1.default.mkdirSync(NotionConfig_1.DATABASES_DIR);
|
|
115
123
|
}
|
|
116
|
-
|
|
124
|
+
// Create TypeScript and JavaScript files
|
|
125
|
+
fs_1.default.writeFileSync(path_1.default.resolve(NotionConfig_1.DATABASES_DIR, `${databaseClassName}.ts`), typescriptCodeToString);
|
|
126
|
+
fs_1.default.writeFileSync(path_1.default.resolve(NotionConfig_1.DATABASES_DIR, `${databaseClassName}.js`), transpileToJavaScript);
|
|
117
127
|
return { databaseName, databaseClassName, databaseId };
|
|
118
128
|
});
|
|
119
129
|
}
|
|
120
130
|
exports.createTypescriptFileForDatabase = createTypescriptFileForDatabase;
|
|
121
131
|
// generate text property
|
|
122
|
-
function createTextProperty(
|
|
132
|
+
function createTextProperty(args) {
|
|
133
|
+
const { name, isTitle } = args;
|
|
123
134
|
const text = ts.factory.createPropertySignature(undefined, ts.factory.createIdentifier(name), !isTitle ? ts.factory.createToken(ts.SyntaxKind.QuestionToken) : undefined, ts.factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword));
|
|
124
135
|
return text;
|
|
125
136
|
}
|
|
@@ -132,20 +143,12 @@ function createNumberProperty(name) {
|
|
|
132
143
|
return number;
|
|
133
144
|
}
|
|
134
145
|
/**
|
|
135
|
-
*
|
|
136
|
-
* @param name name of property
|
|
137
|
-
* @param options
|
|
138
|
-
* @param array
|
|
139
|
-
* @returns
|
|
140
|
-
*
|
|
141
146
|
* For selects and multi-select collection properties
|
|
142
|
-
*
|
|
143
147
|
* array = true for multi-select
|
|
144
|
-
*
|
|
145
|
-
* name = ("x" | "y" | "z")[]
|
|
146
148
|
*/
|
|
147
|
-
function createMultiOptionProp(
|
|
148
|
-
|
|
149
|
+
function createMultiOptionProp(args) {
|
|
150
|
+
const { isArray, name, options } = args;
|
|
151
|
+
return ts.factory.createPropertySignature(undefined, ts.factory.createIdentifier(name), ts.factory.createToken(ts.SyntaxKind.QuestionToken), isArray
|
|
149
152
|
? ts.factory.createArrayTypeNode(ts.factory.createParenthesizedType(ts.factory.createUnionTypeNode([
|
|
150
153
|
...options.map((option) => ts.factory.createLiteralTypeNode(ts.factory.createStringLiteral(option))),
|
|
151
154
|
createOtherStringProp(),
|
|
@@ -163,7 +166,7 @@ function createOtherStringProp() {
|
|
|
163
166
|
]);
|
|
164
167
|
}
|
|
165
168
|
function createDateProperty(name) {
|
|
166
|
-
return ts.factory.createPropertySignature(undefined, ts.factory.createIdentifier(
|
|
169
|
+
return ts.factory.createPropertySignature(undefined, ts.factory.createIdentifier(name), ts.factory.createToken(ts.SyntaxKind.QuestionToken), ts.factory.createTypeReferenceNode(ts.factory.createIdentifier("Date"), undefined));
|
|
167
170
|
}
|
|
168
171
|
// Generate database Id variable
|
|
169
172
|
// const databaseId = <database-id>
|
|
@@ -179,7 +182,7 @@ function createDatabaseIdVariable(databaseId) {
|
|
|
179
182
|
*
|
|
180
183
|
* Example
|
|
181
184
|
*
|
|
182
|
-
* const
|
|
185
|
+
* const columnNameToColumnProperties = {
|
|
183
186
|
*
|
|
184
187
|
* "bookRating": {
|
|
185
188
|
* columnName: "Book Rating",
|
|
@@ -191,12 +194,10 @@ function createDatabaseIdVariable(databaseId) {
|
|
|
191
194
|
* }
|
|
192
195
|
*
|
|
193
196
|
* }
|
|
194
|
-
* @param colMap
|
|
195
|
-
* @returns
|
|
196
197
|
*/
|
|
197
|
-
function
|
|
198
|
+
function createColumnNameToColumnProperties(colMap) {
|
|
198
199
|
return ts.factory.createVariableDeclarationList([
|
|
199
|
-
ts.factory.createVariableDeclaration(ts.factory.createIdentifier("
|
|
200
|
+
ts.factory.createVariableDeclaration(ts.factory.createIdentifier("columnNameToColumnProperties"), undefined, undefined, ts.factory.createAsExpression(ts.factory.createObjectLiteralExpression([
|
|
200
201
|
...Object.entries(colMap).map(([propName, value]) => ts.factory.createPropertyAssignment(ts.factory.createStringLiteral(propName), ts.factory.createObjectLiteralExpression([
|
|
201
202
|
ts.factory.createPropertyAssignment(ts.factory.createIdentifier("columnName"), ts.factory.createStringLiteral(value.columnName)),
|
|
202
203
|
ts.factory.createPropertyAssignment(ts.factory.createIdentifier("type"), ts.factory.createStringLiteral(value.type)),
|
|
@@ -204,33 +205,30 @@ function mapPropNameToColumnDetails(colMap) {
|
|
|
204
205
|
], true), ts.factory.createTypeReferenceNode(ts.factory.createIdentifier("const"), undefined))),
|
|
205
206
|
], ts.NodeFlags.Const);
|
|
206
207
|
}
|
|
207
|
-
function
|
|
208
|
-
return ts.factory.createTypeAliasDeclaration(undefined, ts.factory.createIdentifier("
|
|
208
|
+
function createColumnNameToColumnType() {
|
|
209
|
+
return ts.factory.createTypeAliasDeclaration(undefined, ts.factory.createIdentifier("ColumnNameToColumnType"), undefined, ts.factory.createMappedTypeNode(undefined, ts.factory.createTypeParameterDeclaration(undefined, ts.factory.createIdentifier("Property"), ts.factory.createTypeOperatorNode(ts.SyntaxKind.KeyOfKeyword, ts.factory.createTypeQueryNode(ts.factory.createIdentifier("columnNameToColumnProperties"), undefined)), undefined), undefined, undefined, ts.factory.createIndexedAccessTypeNode(ts.factory.createIndexedAccessTypeNode(ts.factory.createTypeQueryNode(ts.factory.createIdentifier("columnNameToColumnProperties"), undefined), ts.factory.createTypeReferenceNode(ts.factory.createIdentifier("Property"), undefined)), ts.factory.createLiteralTypeNode(ts.factory.createStringLiteral("type"))), undefined
|
|
209
210
|
/* unknown */
|
|
210
211
|
));
|
|
211
212
|
}
|
|
212
|
-
// Need to import the class
|
|
213
|
-
function
|
|
213
|
+
// Need to import the database class used to execute database actions (adding + querying)
|
|
214
|
+
function createDatabaseActionsClassImport() {
|
|
214
215
|
return ts.factory.createImportDeclaration(undefined, ts.factory.createImportClause(false, undefined, ts.factory.createNamedImports([
|
|
215
|
-
ts.factory.createImportSpecifier(false, undefined, ts.factory.createIdentifier("
|
|
216
|
-
])), ts.factory.createStringLiteral("../
|
|
216
|
+
ts.factory.createImportSpecifier(false, undefined, ts.factory.createIdentifier("DatabaseActions")),
|
|
217
|
+
])), ts.factory.createStringLiteral("../src/DatabaseActions"), undefined);
|
|
217
218
|
}
|
|
218
|
-
// We export the database with the class above.
|
|
219
|
-
// export
|
|
220
219
|
/**
|
|
221
|
-
*
|
|
222
|
-
*
|
|
223
|
-
*
|
|
224
|
-
* const <datbase-name> = new CollectionActions<CollectionType>(datbaseId, propMap)
|
|
220
|
+
* Create export statement for the database class
|
|
221
|
+
* export const <databaseName> = new DatabaseActions<DatabaseSchemaType>(datbaseId, columnNameToColumnProperties)
|
|
225
222
|
*/
|
|
226
|
-
function
|
|
223
|
+
function createDatabaseClassExport(args) {
|
|
224
|
+
const { databaseName } = args;
|
|
227
225
|
return ts.factory.createVariableStatement([ts.factory.createModifier(ts.SyntaxKind.ExportKeyword)], ts.factory.createVariableDeclarationList([
|
|
228
|
-
ts.factory.createVariableDeclaration(ts.factory.createIdentifier(databaseName), undefined, undefined, ts.factory.createNewExpression(ts.factory.createIdentifier("
|
|
229
|
-
ts.factory.createTypeReferenceNode(ts.factory.createIdentifier("
|
|
230
|
-
ts.factory.createTypeReferenceNode(ts.factory.createIdentifier("
|
|
226
|
+
ts.factory.createVariableDeclaration(ts.factory.createIdentifier(databaseName), undefined, undefined, ts.factory.createNewExpression(ts.factory.createIdentifier("DatabaseActions"), [
|
|
227
|
+
ts.factory.createTypeReferenceNode(ts.factory.createIdentifier("DatabaseSchemaType"), undefined),
|
|
228
|
+
ts.factory.createTypeReferenceNode(ts.factory.createIdentifier("ColumnNameToColumnType"), undefined),
|
|
231
229
|
], [
|
|
232
230
|
ts.factory.createIdentifier("databaseId"),
|
|
233
|
-
ts.factory.createIdentifier("
|
|
231
|
+
ts.factory.createIdentifier("columnNameToColumnProperties"),
|
|
234
232
|
])),
|
|
235
233
|
], ts.NodeFlags.Const));
|
|
236
234
|
}
|
|
@@ -242,3 +240,4 @@ function camelize(str) {
|
|
|
242
240
|
return index === 0 ? match.toLowerCase() : match.toUpperCase();
|
|
243
241
|
});
|
|
244
242
|
}
|
|
243
|
+
//# sourceMappingURL=GenerateTypes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GenerateTypes.js","sourceRoot":"","sources":["../../src/GenerateTypes.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,+CAAiC;AACjC,4CAAoB;AACpB,gDAAwB;AACxB,iDAA+C;AAE/C,gEAAgE;AAChE,MAAM,WAAW,GAAG;IACnB,MAAM;IACN,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,cAAc;IACd,UAAU;IACV,KAAK;CACL,CAAC;AAQF;;EAEE;AACF,SAAsB,+BAA+B,CACpD,UAA+B;;QAE/B,MAAM,EACL,EAAE,EAAE,UAAU,EACd,UAAU,EACV,KAAK,GACL,GAAG,UAAoC,CAAC;QACzC,MAAM,oBAAoB,GAA6B,EAAE,CAAC;QAC1D,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;QACzC,MAAM,iBAAiB,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;QAE9E,MAAM,uBAAuB,GAAqB,EAAE,CAAC;QAErD,0CAA0C;QAC1C,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YAC3C,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;YAErD,8DAA8D;YAC9D,MAAM,mBAAmB,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;YAEjD,qFAAqF;YACrF,oBAAoB,CAAC,mBAAmB,CAAC,GAAG;gBAC3C,UAAU;gBACV,IAAI,EAAE,UAAU;aAChB,CAAC;YAEF,IAAI,UAAU,KAAK,OAAO,IAAI,UAAU,KAAK,WAAW,EAAE;gBACzD,qCAAqC;gBACrC,uBAAuB,CAAC,IAAI,CAC3B,kBAAkB,CAAC;oBAClB,IAAI,EAAE,mBAAmB;oBACzB,OAAO,EAAE,UAAU,KAAK,OAAO;iBAC/B,CAAC,CACF,CAAC;aACF;iBAAM,IAAI,UAAU,KAAK,QAAQ,EAAE;gBACnC,uCAAuC;gBACvC,uBAAuB,CAAC,IAAI,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,CAAC,CAAC;aACxE;iBAAM,IAAI,UAAU,KAAK,KAAK,EAAE;gBAChC,oCAAoC;gBACpC,uBAAuB,CAAC,IAAI,CAC3B,kBAAkB,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CACjE,CAAC;aACF;iBAAM,IAAI,UAAU,KAAK,MAAM,EAAE;gBACjC,qCAAqC;gBACrC,uBAAuB,CAAC,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,CAAC,CAAC;aACtE;iBAAM,IAAI,UAAU,IAAI,QAAQ,IAAI,UAAU,IAAI,cAAc,EAAE;gBAClE,aAAa;gBACb,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBAC7D,uBAAuB,CAAC,IAAI,CAC3B,qBAAqB,CAAC;oBACrB,IAAI,EAAE,mBAAmB;oBACzB,OAAO;oBACP,OAAO,EAAE,UAAU,KAAK,cAAc,EAAE,uBAAuB;iBAC/D,CAAC,CACF,CAAC;aACF;QACF,CAAC,CAAC,CAAC;QAEH,kDAAkD;QAClD,MAAM,kBAAkB,GAAG,EAAE,CAAC,OAAO,CAAC,0BAA0B,CAC/D,SAAS,EACT,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,EACjD,SAAS,EACT,EAAE,CAAC,OAAO,CAAC,qBAAqB,CAAC,uBAAuB,CAAC,CACzD,CAAC;QAEF,qEAAqE;QACrE,MAAM,sBAAsB,GAAG,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC;YACzD,gCAAgC,EAAE;YAClC,wBAAwB,CAAC,UAAU,CAAC;YACpC,kBAAkB;YAClB,kCAAkC,CAAC,oBAAoB,CAAC;YACxD,4BAA4B,EAAE;YAC9B,yBAAyB,CAAC,EAAE,YAAY,EAAE,iBAAiB,EAAE,CAAC;SAC9D,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,EAAE,CAAC,gBAAgB,CACrC,EAAE,EACF,EAAE,EACF,EAAE,CAAC,YAAY,CAAC,MAAM,EACtB,IAAI,EACJ,EAAE,CAAC,UAAU,CAAC,EAAE,CAChB,CAAC;QACF,MAAM,OAAO,GAAG,EAAE,CAAC,aAAa,EAAE,CAAC;QAEnC,MAAM,sBAAsB,GAAG,OAAO,CAAC,SAAS,CAC/C,EAAE,CAAC,UAAU,CAAC,SAAS,EACvB,sBAAsB,EACtB,UAAU,CACV,CAAC;QACF,MAAM,qBAAqB,GAAG,EAAE,CAAC,SAAS,CAAC,sBAAsB,EAAE;YAClE,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI;YAC1B,MAAM,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM;SAC9B,CAAC,CAAC;QAEH,iCAAiC;QACjC,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,4BAAa,CAAC,EAAE;YAClC,YAAE,CAAC,SAAS,CAAC,4BAAa,CAAC,CAAC;SAC5B;QAED,yCAAyC;QACzC,YAAE,CAAC,aAAa,CACf,cAAI,CAAC,OAAO,CAAC,4BAAa,EAAE,GAAG,iBAAiB,KAAK,CAAC,EACtD,sBAAsB,CACtB,CAAC;QACF,YAAE,CAAC,aAAa,CACf,cAAI,CAAC,OAAO,CAAC,4BAAa,EAAE,GAAG,iBAAiB,KAAK,CAAC,EACtD,qBAAqB,CACrB,CAAC;QAEF,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAC;IACxD,CAAC;CAAA;AAhHD,0EAgHC;AAED,yBAAyB;AACzB,SAAS,kBAAkB,CAAC,IAAwC;IACnE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAC/B,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,uBAAuB,CAC9C,SAAS,EACT,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,EACjC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,EAC1E,EAAE,CAAC,OAAO,CAAC,qBAAqB,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAC7D,CAAC;IACF,OAAO,IAAI,CAAC;AACb,CAAC;AAED;;;GAGG;AACH,SAAS,oBAAoB,CAAC,IAAY;IACzC,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,uBAAuB,CAChD,SAAS,EACT,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,EACjC,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EACnD,EAAE,CAAC,OAAO,CAAC,qBAAqB,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAC7D,CAAC;IACF,OAAO,MAAM,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,SAAS,qBAAqB,CAAC,IAI9B;IACA,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACxC,OAAO,EAAE,CAAC,OAAO,CAAC,uBAAuB,CACxC,SAAS,EACT,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,EACjC,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EACnD,OAAO;QACN,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,mBAAmB,CAC9B,EAAE,CAAC,OAAO,CAAC,uBAAuB,CACjC,EAAE,CAAC,OAAO,CAAC,mBAAmB,CAAC;YAC9B,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CACzB,EAAE,CAAC,OAAO,CAAC,qBAAqB,CAC/B,EAAE,CAAC,OAAO,CAAC,mBAAmB,CAAC,MAAM,CAAC,CACtC,CACD;YACD,qBAAqB,EAAE;SACvB,CAAC,CACF,CACA;QACH,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,mBAAmB,CAAC;YAC/B,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CACzB,EAAE,CAAC,OAAO,CAAC,qBAAqB,CAC/B,EAAE,CAAC,OAAO,CAAC,mBAAmB,CAAC,MAAM,CAAC,CACtC,CACD;YACD,qBAAqB,EAAE;SACtB,CAAC,CACL,CAAC;AACH,CAAC;AAED,8CAA8C;AAC9C,SAAS,qBAAqB;IAC7B,OAAO,EAAE,CAAC,OAAO,CAAC,0BAA0B,CAAC;QAC5C,EAAE,CAAC,OAAO,CAAC,qBAAqB,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC;QAC7D,EAAE,CAAC,OAAO,CAAC,qBAAqB,CAAC,EAAE,CAAC;KACpC,CAAC,CAAC;AACJ,CAAC;AACD,SAAS,kBAAkB,CAAC,IAAY;IACvC,OAAO,EAAE,CAAC,OAAO,CAAC,uBAAuB,CACxC,SAAS,EACT,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,EACjC,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EACnD,EAAE,CAAC,OAAO,CAAC,uBAAuB,CACjC,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,EACnC,SAAS,CACT,CACD,CAAC;AACH,CAAC;AAED,gCAAgC;AAChC,mCAAmC;AACnC,SAAS,wBAAwB,CAAC,UAAkB;IACnD,OAAO,EAAE,CAAC,OAAO,CAAC,uBAAuB,CACxC,SAAS,EACT,EAAE,CAAC,OAAO,CAAC,6BAA6B,CACvC;QACC,EAAE,CAAC,OAAO,CAAC,yBAAyB,CACnC,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,YAAY,CAAC,EACzC,SAAS,EACT,SAAS,EACT,EAAE,CAAC,OAAO,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAC1C;KACD,EACD,EAAE,CAAC,SAAS,CAAC,KAAK,CAClB,CACD,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,SAAS,kCAAkC,CAAC,MAAgC;IAC3E,OAAO,EAAE,CAAC,OAAO,CAAC,6BAA6B,CAC9C;QACC,EAAE,CAAC,OAAO,CAAC,yBAAyB,CACnC,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,8BAA8B,CAAC,EAC3D,SAAS,EACT,SAAS,EACT,EAAE,CAAC,OAAO,CAAC,kBAAkB,CAC5B,EAAE,CAAC,OAAO,CAAC,6BAA6B,CACvC;YACC,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE,CACnD,EAAE,CAAC,OAAO,CAAC,wBAAwB,CAClC,EAAE,CAAC,OAAO,CAAC,mBAAmB,CAAC,QAAQ,CAAC,EACxC,EAAE,CAAC,OAAO,CAAC,6BAA6B,CACvC;gBACC,EAAE,CAAC,OAAO,CAAC,wBAAwB,CAClC,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,YAAY,CAAC,EACzC,EAAE,CAAC,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC,UAAU,CAAC,CAChD;gBACD,EAAE,CAAC,OAAO,CAAC,wBAAwB,CAClC,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,EACnC,EAAE,CAAC,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,CAC1C;aACD,EACD,IAAI,CACJ,CACD,CACD;SACD,EACD,IAAI,CACJ,EACD,EAAE,CAAC,OAAO,CAAC,uBAAuB,CACjC,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,EACpC,SAAS,CACT,CACD,CACD;KACD,EACD,EAAE,CAAC,SAAS,CAAC,KAAK,CAClB,CAAC;AACH,CAAC;AAED,SAAS,4BAA4B;IACpC,OAAO,EAAE,CAAC,OAAO,CAAC,0BAA0B,CAC3C,SAAS,EACT,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,wBAAwB,CAAC,EACrD,SAAS,EACT,EAAE,CAAC,OAAO,CAAC,oBAAoB,CAC9B,SAAS,EACT,EAAE,CAAC,OAAO,CAAC,8BAA8B,CACxC,SAAS,EACT,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,CAAC,EACvC,EAAE,CAAC,OAAO,CAAC,sBAAsB,CAChC,EAAE,CAAC,UAAU,CAAC,YAAY,EAC1B,EAAE,CAAC,OAAO,CAAC,mBAAmB,CAC7B,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,8BAA8B,CAAC,EAC3D,SAAS,CACT,CACD,EACD,SAAS,CACT,EACD,SAAS,EACT,SAAS,EACT,EAAE,CAAC,OAAO,CAAC,2BAA2B,CACrC,EAAE,CAAC,OAAO,CAAC,2BAA2B,CACrC,EAAE,CAAC,OAAO,CAAC,mBAAmB,CAC7B,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,8BAA8B,CAAC,EAC3D,SAAS,CACT,EACD,EAAE,CAAC,OAAO,CAAC,uBAAuB,CACjC,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,CAAC,EACvC,SAAS,CACT,CACD,EACD,EAAE,CAAC,OAAO,CAAC,qBAAqB,CAAC,EAAE,CAAC,OAAO,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CACxE,EACD,SAAS;IACT,aAAa;KACb,CACD,CAAC;AACH,CAAC;AAED,yFAAyF;AACzF,SAAS,gCAAgC;IACxC,OAAO,EAAE,CAAC,OAAO,CAAC,uBAAuB,CACxC,SAAS,EACT,EAAE,CAAC,OAAO,CAAC,kBAAkB,CAC5B,KAAK,EACL,SAAS,EACT,EAAE,CAAC,OAAO,CAAC,kBAAkB,CAAC;QAC7B,EAAE,CAAC,OAAO,CAAC,qBAAqB,CAC/B,KAAK,EACL,SAAS,EACT,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAC9C;KACD,CAAC,CACF,EACD,EAAE,CAAC,OAAO,CAAC,mBAAmB,CAAC,wBAAwB,CAAC,EACxD,SAAS,CACT,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,yBAAyB,CAAC,IAA8B;IAChE,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;IAC9B,OAAO,EAAE,CAAC,OAAO,CAAC,uBAAuB,CACxC,CAAC,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,EACxD,EAAE,CAAC,OAAO,CAAC,6BAA6B,CACvC;QACC,EAAE,CAAC,OAAO,CAAC,yBAAyB,CACnC,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,YAAY,CAAC,EACzC,SAAS,EACT,SAAS,EACT,EAAE,CAAC,OAAO,CAAC,mBAAmB,CAC7B,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,EAC9C;YACC,EAAE,CAAC,OAAO,CAAC,uBAAuB,CACjC,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,EACjD,SAAS,CACT;YACD,EAAE,CAAC,OAAO,CAAC,uBAAuB,CACjC,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,wBAAwB,CAAC,EACrD,SAAS,CACT;SACD,EACD;YACC,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,YAAY,CAAC;YACzC,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,8BAA8B,CAAC;SAC3D,CACD,CACD;KACD,EACD,EAAE,CAAC,SAAS,CAAC,KAAK,CAClB,CACD,CAAC;AACH,CAAC;AAED,6BAA6B;AAC7B,SAAS,QAAQ,CAAC,GAAW;IAC5B,OAAO,GAAG,CAAC,OAAO,CAAC,yBAAyB,EAAE,UAAU,KAAK,EAAE,KAAK;QACnE,IAAI,CAAC,KAAK,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC,CAAC,6CAA6C;QAC1E,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;IAChE,CAAC,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare const DATABASES_DIR: string;
|
|
2
|
+
export type NotionConfigType = {
|
|
3
|
+
auth: string;
|
|
4
|
+
databaseIds: string[];
|
|
5
|
+
};
|
|
6
|
+
export declare const createDatabaseTypes: (args: NotionConfigType) => Promise<{
|
|
7
|
+
databaseNames: string[];
|
|
8
|
+
}>;
|
|
9
|
+
//# sourceMappingURL=NotionConfig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NotionConfig.d.ts","sourceRoot":"","sources":["../../src/NotionConfig.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,aAAa,QAAmD,CAAC;AAE9E,MAAM,MAAM,gBAAgB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,EAAE,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,mBAAmB,SAAgB,gBAAgB;;EAyD/D,CAAC"}
|
|
@@ -35,15 +35,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
35
35
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
36
36
|
};
|
|
37
37
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
|
-
exports.createDatabaseTypes = void 0;
|
|
38
|
+
exports.createDatabaseTypes = exports.DATABASES_DIR = void 0;
|
|
39
39
|
const client_1 = require("@notionhq/client");
|
|
40
40
|
const GenerateTypes_1 = require("./GenerateTypes");
|
|
41
41
|
const ts = __importStar(require("typescript"));
|
|
42
42
|
const fs_1 = __importDefault(require("fs"));
|
|
43
43
|
const path_1 = __importDefault(require("path"));
|
|
44
|
-
|
|
45
|
-
const createDatabaseTypes = (
|
|
46
|
-
const { auth, databaseIds } =
|
|
44
|
+
exports.DATABASES_DIR = path_1.default.join(__dirname, "../../build", "databases");
|
|
45
|
+
const createDatabaseTypes = (args) => __awaiter(void 0, void 0, void 0, function* () {
|
|
46
|
+
const { auth, databaseIds } = args;
|
|
47
47
|
// Making sure the user is passing valid arguments
|
|
48
48
|
if (!auth) {
|
|
49
49
|
console.error("Please pass a valid Notion Integration Key");
|
|
@@ -58,61 +58,58 @@ const createDatabaseTypes = (notionInfo) => __awaiter(void 0, void 0, void 0, fu
|
|
|
58
58
|
auth: auth,
|
|
59
59
|
});
|
|
60
60
|
const databaseNames = [];
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
61
|
+
const databaseClassExportStatements = [];
|
|
62
|
+
// Remove the previous databases, so they can call get updated
|
|
63
|
+
fs_1.default.rmdir(exports.DATABASES_DIR, () => console.log("Deleting current database types..."));
|
|
64
64
|
for (const database_id of databaseIds) {
|
|
65
65
|
let dbOjbect;
|
|
66
|
-
// Try to get the database schema
|
|
67
66
|
try {
|
|
67
|
+
// Get the database schema
|
|
68
68
|
dbOjbect = yield NotionClient.databases.retrieve({
|
|
69
69
|
database_id,
|
|
70
70
|
});
|
|
71
|
+
// Create typescript file based on schema
|
|
72
|
+
const { databaseClassName, databaseId, databaseName } = yield (0, GenerateTypes_1.createTypescriptFileForDatabase)(dbOjbect);
|
|
73
|
+
databaseNames.push(databaseName);
|
|
74
|
+
databaseClassExportStatements.push(databaseExportStatement({
|
|
75
|
+
databaseClassName,
|
|
76
|
+
}));
|
|
71
77
|
}
|
|
72
78
|
catch (e) {
|
|
73
79
|
console.error(e);
|
|
74
80
|
return { databaseNames: [] };
|
|
75
81
|
}
|
|
76
|
-
const { databaseClassName, databaseId, databaseName } = yield (0, GenerateTypes_1.createTypescriptFileForDatabase)(dbOjbect);
|
|
77
|
-
databaseNames.push(databaseName);
|
|
78
|
-
databaseCamelizedNames.push(databaseClassName);
|
|
79
|
-
databaseClassImports.push(databaseImportStatement({
|
|
80
|
-
databaseClassName,
|
|
81
|
-
databaseId,
|
|
82
|
-
}));
|
|
83
82
|
}
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
createNotionFile(nodeArr);
|
|
83
|
+
// Create a file that exports all databases
|
|
84
|
+
createNotionFile({
|
|
85
|
+
databaseClassExportStatements,
|
|
86
|
+
});
|
|
89
87
|
return { databaseNames };
|
|
90
88
|
});
|
|
91
89
|
exports.createDatabaseTypes = createDatabaseTypes;
|
|
92
90
|
// Create the import statement for notion.ts file
|
|
93
|
-
function
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
ts.factory.createStringLiteral(`@notion-database/${dbClass.databaseId}`), undefined);
|
|
99
|
-
}
|
|
100
|
-
function mainNotionVariable(databaseNames) {
|
|
101
|
-
return ts.factory.createVariableStatement([ts.factory.createModifier(ts.SyntaxKind.ExportKeyword)], ts.factory.createVariableDeclarationList([
|
|
102
|
-
ts.factory.createVariableDeclaration(ts.factory.createIdentifier("notion"), undefined, undefined, ts.factory.createObjectLiteralExpression([
|
|
103
|
-
...databaseNames.map((name) => ts.factory.createShorthandPropertyAssignment(ts.factory.createIdentifier(name), undefined)),
|
|
104
|
-
], true)),
|
|
105
|
-
], ts.NodeFlags.Const));
|
|
91
|
+
function databaseExportStatement(args) {
|
|
92
|
+
const { databaseClassName } = args;
|
|
93
|
+
return ts.factory.createExportDeclaration(undefined, false, ts.factory.createNamedExports([
|
|
94
|
+
ts.factory.createExportSpecifier(false, undefined, ts.factory.createIdentifier(databaseClassName)),
|
|
95
|
+
]), ts.factory.createStringLiteral(`./${databaseClassName}`), undefined);
|
|
106
96
|
}
|
|
107
97
|
// Creates file that import all generated notion database Ids
|
|
108
|
-
function createNotionFile(
|
|
109
|
-
const
|
|
98
|
+
function createNotionFile(args) {
|
|
99
|
+
const { databaseClassExportStatements } = args;
|
|
100
|
+
const nodes = ts.factory.createNodeArray(databaseClassExportStatements);
|
|
110
101
|
const sourceFile = ts.createSourceFile("placeholder.ts", "", ts.ScriptTarget.ESNext, true, ts.ScriptKind.TS);
|
|
111
102
|
const printer = ts.createPrinter();
|
|
112
|
-
const
|
|
113
|
-
const
|
|
114
|
-
|
|
115
|
-
|
|
103
|
+
const typescriptCodeToString = printer.printList(ts.ListFormat.MultiLine, nodes, sourceFile);
|
|
104
|
+
const transpileToJavaScript = ts.transpile(typescriptCodeToString, {
|
|
105
|
+
module: ts.ModuleKind.CommonJS,
|
|
106
|
+
target: ts.ScriptTarget.ES2015,
|
|
107
|
+
});
|
|
108
|
+
if (!fs_1.default.existsSync(exports.DATABASES_DIR)) {
|
|
109
|
+
fs_1.default.mkdirSync(exports.DATABASES_DIR);
|
|
116
110
|
}
|
|
117
|
-
|
|
111
|
+
// Create TypeScript and JavaScript file
|
|
112
|
+
fs_1.default.writeFileSync(path_1.default.resolve(exports.DATABASES_DIR, "index.ts"), typescriptCodeToString);
|
|
113
|
+
fs_1.default.writeFileSync(path_1.default.resolve(exports.DATABASES_DIR, "index.js"), transpileToJavaScript);
|
|
118
114
|
}
|
|
115
|
+
//# sourceMappingURL=NotionConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NotionConfig.js","sourceRoot":"","sources":["../../src/NotionConfig.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":""}
|
|
@@ -14,9 +14,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
14
14
|
};
|
|
15
15
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
16
|
const fs_1 = __importDefault(require("fs"));
|
|
17
|
-
const NotionConfig_1 = require("./
|
|
17
|
+
const NotionConfig_1 = require("./NotionConfig");
|
|
18
18
|
const path_1 = __importDefault(require("path"));
|
|
19
|
-
require("dotenv").config();
|
|
20
19
|
function main() {
|
|
21
20
|
return __awaiter(this, void 0, void 0, function* () {
|
|
22
21
|
const args = process.argv.slice(2);
|
|
@@ -47,3 +46,4 @@ function main() {
|
|
|
47
46
|
});
|
|
48
47
|
}
|
|
49
48
|
main();
|
|
49
|
+
//# sourceMappingURL=cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAEA,4CAAoB;AACpB,iDAAqD;AACrD,gDAAwB;AAExB,SAAe,IAAI;;QAClB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAEnC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE;YAChD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;YAE9B,MAAM,iBAAiB,GAAG,YAAE,CAAC,UAAU,CACtC,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,CACtC,CAAC;YACF,MAAM,iBAAiB,GAAG,YAAE,CAAC,UAAU,CACtC,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,CACtC,CAAC;YAEF,OAAO,CAAC,GAAG,CAAC,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC;YACjD,IAAI,iBAAiB,IAAI,iBAAiB,EAAE;gBAC3C,kDAAkD;gBAElD,MAAM,MAAM,GAAG,OAAO,CAAC,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC;gBAE5D,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,IAAA,kCAAmB,EAAC,MAAM,CAAC,CAAC;gBAC5D,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC7B,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;iBAClC;qBAAM;oBACN,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;oBAC9D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;wBAC9C,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;qBACzC;iBACD;aACD;iBAAM;gBACN,OAAO,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;gBAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aAChB;SACD;IACF,CAAC;CAAA;AAED,IAAI,EAAE,CAAC"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Column types' for all query options
|
|
3
|
+
*/
|
|
4
|
+
export type FilterOptionNames = "text" | "title" | "number" | "checkbox" | "select" | "multi_select" | "url" | "date";
|
|
5
|
+
type TextPropertyFilters = {
|
|
6
|
+
equals: string;
|
|
7
|
+
does_not_equal: string;
|
|
8
|
+
contains: string;
|
|
9
|
+
does_not_contain: string;
|
|
10
|
+
starts_with: string;
|
|
11
|
+
ends_with: string;
|
|
12
|
+
is_empty: true;
|
|
13
|
+
is_not_empty: true;
|
|
14
|
+
};
|
|
15
|
+
type NumberPropertyFilters = {
|
|
16
|
+
equals: number;
|
|
17
|
+
does_not_equals: number;
|
|
18
|
+
greater_than: number;
|
|
19
|
+
less_than: number;
|
|
20
|
+
greater_than_or_equal_to: number;
|
|
21
|
+
less_than_or_equal_to: number;
|
|
22
|
+
is_empty: true;
|
|
23
|
+
is_not_empty: true;
|
|
24
|
+
};
|
|
25
|
+
type CheckBoxPropertyFilters = {
|
|
26
|
+
equals: boolean;
|
|
27
|
+
does_not_equal: boolean;
|
|
28
|
+
};
|
|
29
|
+
type SelectPropertyFilters<T> = {
|
|
30
|
+
equals: (T extends Array<any> ? T[number] : T) | (string & {});
|
|
31
|
+
does_not_equal: (T extends Array<any> ? T[number] : T) | (string & {});
|
|
32
|
+
is_empty: true;
|
|
33
|
+
is_not_empty: true;
|
|
34
|
+
};
|
|
35
|
+
type MultiSelectPropertyFilters<T> = {
|
|
36
|
+
contains: (T extends Array<any> ? T[number] : T) | (string & {});
|
|
37
|
+
does_not_contain: (T extends Array<any> ? T[number] : T) | (string & {});
|
|
38
|
+
is_empty: true;
|
|
39
|
+
is_not_empty: true;
|
|
40
|
+
};
|
|
41
|
+
type DatePropertyFilters = {
|
|
42
|
+
equals: string;
|
|
43
|
+
before: string;
|
|
44
|
+
after: string;
|
|
45
|
+
on_or_before: string;
|
|
46
|
+
is_empty: true;
|
|
47
|
+
is_not_empty: true;
|
|
48
|
+
on_or_after: string;
|
|
49
|
+
past_week: {};
|
|
50
|
+
past_month: {};
|
|
51
|
+
past_year: {};
|
|
52
|
+
this_week: {};
|
|
53
|
+
next_week: {};
|
|
54
|
+
next_month: {};
|
|
55
|
+
next_year: {};
|
|
56
|
+
};
|
|
57
|
+
export type FilterOptions<T = []> = {
|
|
58
|
+
text: TextPropertyFilters;
|
|
59
|
+
title: TextPropertyFilters;
|
|
60
|
+
number: NumberPropertyFilters;
|
|
61
|
+
checkbox: CheckBoxPropertyFilters;
|
|
62
|
+
select: SelectPropertyFilters<T>;
|
|
63
|
+
multi_select: MultiSelectPropertyFilters<T>;
|
|
64
|
+
url: string;
|
|
65
|
+
date: DatePropertyFilters;
|
|
66
|
+
};
|
|
67
|
+
type ColumnNameToNotionColumnType<T> = Record<keyof T, FilterOptionNames>;
|
|
68
|
+
export type SingleFilter<Y extends Record<string, any>, T extends ColumnNameToNotionColumnType<Y>> = {
|
|
69
|
+
[Property in keyof Y]?: Partial<FilterOptions<Y[Property]>[T[Property]]>;
|
|
70
|
+
};
|
|
71
|
+
export type CompoundFilters<Y extends Record<string, any>, T extends Record<keyof Y, FilterOptionNames>> = {
|
|
72
|
+
and: Array<SingleFilter<Y, T> | CompoundFilters<Y, T>>;
|
|
73
|
+
} | {
|
|
74
|
+
or: Array<SingleFilter<Y, T> | CompoundFilters<Y, T>>;
|
|
75
|
+
};
|
|
76
|
+
export type QueryFilter<Y extends Record<string, any>, T extends Record<keyof Y, FilterOptionNames>> = SingleFilter<Y, T> | CompoundFilters<Y, T>;
|
|
77
|
+
export type Query<Y extends Record<string, any>, T extends Record<keyof Y, FilterOptionNames>> = {
|
|
78
|
+
filter?: QueryFilter<Y, T>;
|
|
79
|
+
sort?: [];
|
|
80
|
+
};
|
|
81
|
+
export type apiFilterQuery = {
|
|
82
|
+
filter?: apiSingleFilter | apiAndFilter | apiOrFilter;
|
|
83
|
+
};
|
|
84
|
+
/**
|
|
85
|
+
* Transform the types above to build types to
|
|
86
|
+
* actually build schema for query request
|
|
87
|
+
*/
|
|
88
|
+
type apiColumnTypeToOptions = {
|
|
89
|
+
[prop in keyof FilterOptions]?: Partial<FilterOptions[prop]>;
|
|
90
|
+
};
|
|
91
|
+
export interface apiSingleFilter extends apiColumnTypeToOptions {
|
|
92
|
+
property: string;
|
|
93
|
+
}
|
|
94
|
+
export type apiFilterType = apiSingleFilter | apiAndFilter | apiOrFilter | undefined;
|
|
95
|
+
type apiAndFilter = {
|
|
96
|
+
and: Array<apiFilterType>;
|
|
97
|
+
};
|
|
98
|
+
type apiOrFilter = {
|
|
99
|
+
or: Array<apiFilterType>;
|
|
100
|
+
};
|
|
101
|
+
export {};
|
|
102
|
+
//# sourceMappingURL=queryTypes.d.ts.map
|